From 393964c6cda5ec48ce5828553b44c7771f9c062e Mon Sep 17 00:00:00 2001 From: UnAfraid Date: Wed, 27 Sep 2017 18:15:32 +0300 Subject: [PATCH] Cleanup and update --- ESPlorer/.gitignore | 3 - ESPlorer/_micropython/gpio.py | 12 - ESPlorer/build/built-jar.properties | 4 - ESPlorer/jar/rsyntaxtextarea-2.5.8.jar | Bin 1056316 -> 0 bytes ESPlorer/nbproject/build-impl.xml | 1449 - ESPlorer/nbproject/genfiles.properties | 8 - ESPlorer/nbproject/private/private.properties | 9 - ESPlorer/nbproject/private/private.xml | 10 - ESPlorer/nbproject/project.properties | 99 - ESPlorer/src/ESPlorer/ESPlorer.java | 13942 --------- ESPlorer/src/ESPlorer/pyFiler.java | 89 - .../DefaultTokenMakerFactory.java | 78 - .../rsyntaxtextarea/DefaultTokenPainter.java | 272 - .../ui/rsyntaxtextarea/DocumentRange.java | 168 - .../fife/ui/rsyntaxtextarea/ErrorStrip.java | 849 - .../fife/ui/rsyntaxtextarea/FileLocation.java | 152 - .../ui/rsyntaxtextarea/RSyntaxDocument.java | 675 - .../ui/rsyntaxtextarea/RSyntaxTextArea.java | 3280 -- .../RSyntaxTextAreaEditorKit.java | 2106 -- .../RSyntaxTextAreaHighlighter.java | 290 - .../ui/rsyntaxtextarea/RSyntaxTextAreaUI.java | 260 - .../ui/rsyntaxtextarea/RSyntaxUtilities.java | 1514 - .../SquiggleUnderlineHighlightPainter.java | 120 - .../ui/rsyntaxtextarea/SyntaxConstants.java | 283 - .../fife/ui/rsyntaxtextarea/SyntaxScheme.java | 723 - .../fife/ui/rsyntaxtextarea/SyntaxView.java | 1010 - .../org/fife/ui/rsyntaxtextarea/Theme.java | 870 - .../org/fife/ui/rsyntaxtextarea/Token.java | 566 - .../fife/ui/rsyntaxtextarea/TokenPainter.java | 119 - .../fife/ui/rsyntaxtextarea/TokenUtils.java | 166 - .../ui/rsyntaxtextarea/WrappedSyntaxView.java | 1432 - .../focusabletip/FocusableTip.java | 373 - .../focusabletip/TipWindow.java | 348 - .../folding/FoldParserManager.java | 126 - .../folding/HtmlFoldParser.java | 408 - .../modes/ActionScriptTokenMaker.flex | 496 - .../modes/ActionScriptTokenMaker.java | 2070 -- .../modes/AssemblerX86TokenMaker.flex | 1032 - .../modes/AssemblerX86TokenMaker.java | 1865 -- .../modes/BBCodeTokenMaker.flex | 273 - .../modes/BBCodeTokenMaker.java | 729 - .../modes/CPlusPlusTokenMaker.flex | 675 - .../modes/CPlusPlusTokenMaker.java | 2326 -- .../rsyntaxtextarea/modes/CSSTokenMaker.flex | 484 - .../rsyntaxtextarea/modes/CSSTokenMaker.java | 1174 - .../modes/CSharpTokenMaker.flex | 514 - .../modes/CSharpTokenMaker.java | 1599 - .../ui/rsyntaxtextarea/modes/CTokenMaker.flex | 647 - .../ui/rsyntaxtextarea/modes/CTokenMaker.java | 2082 -- .../modes/ClojureTokenMaker.flex | 561 - .../modes/ClojureTokenMaker.java | 2304 -- .../ui/rsyntaxtextarea/modes/DTokenMaker.flex | 663 - .../ui/rsyntaxtextarea/modes/DTokenMaker.java | 1948 -- .../rsyntaxtextarea/modes/DartTokenMaker.flex | 660 - .../rsyntaxtextarea/modes/DartTokenMaker.java | 2175 -- .../modes/DelphiTokenMaker.flex | 559 - .../modes/DelphiTokenMaker.java | 1629 - .../modes/FortranTokenMaker.flex | 477 - .../modes/FortranTokenMaker.java | 1009 - .../modes/GroovyTokenMaker.flex | 930 - .../modes/GroovyTokenMaker.java | 5581 ---- .../rsyntaxtextarea/modes/HTMLTokenMaker.flex | 1250 - .../rsyntaxtextarea/modes/HTMLTokenMaker.java | 3049 -- .../modes/HtaccessTokenMaker.flex | 500 - .../modes/HtaccessTokenMaker.java | 1505 - .../rsyntaxtextarea/modes/JSPTokenMaker.flex | 1861 -- .../rsyntaxtextarea/modes/JSPTokenMaker.java | 7840 ----- .../modes/JavaScriptTokenMaker.flex | 890 - .../modes/JavaScriptTokenMaker.java | 2149 -- .../rsyntaxtextarea/modes/JavaTokenMaker.flex | 783 - .../rsyntaxtextarea/modes/JavaTokenMaker.java | 5250 ---- .../modes/JshintrcTokenMaker.java | 30 - .../rsyntaxtextarea/modes/JsonTokenMaker.flex | 316 - .../rsyntaxtextarea/modes/JsonTokenMaker.java | 785 - .../modes/LatexTokenMaker.flex | 270 - .../modes/LatexTokenMaker.java | 719 - .../rsyntaxtextarea/modes/LessTokenMaker.java | 43 - .../rsyntaxtextarea/modes/LispTokenMaker.flex | 429 - .../rsyntaxtextarea/modes/LispTokenMaker.java | 1306 - .../rsyntaxtextarea/modes/LuaTokenMaker.flex | 369 - .../rsyntaxtextarea/modes/LuaTokenMaker.java | 965 - .../modes/MakefileTokenMaker.flex | 333 - .../modes/MakefileTokenMaker.java | 862 - .../rsyntaxtextarea/modes/MxmlTokenMaker.flex | 813 - .../rsyntaxtextarea/modes/MxmlTokenMaker.java | 2725 -- .../rsyntaxtextarea/modes/NSISTokenMaker.flex | 742 - .../rsyntaxtextarea/modes/NSISTokenMaker.java | 2977 -- .../rsyntaxtextarea/modes/PHPTokenMaker.flex | 2434 -- .../rsyntaxtextarea/modes/PHPTokenMaker.java | 25633 ---------------- .../rsyntaxtextarea/modes/PerlTokenMaker.flex | 808 - .../rsyntaxtextarea/modes/PerlTokenMaker.java | 2106 -- .../modes/PlainTextTokenMaker.java | 647 - .../modes/PythonTokenMaker.flex | 438 - .../modes/PythonTokenMaker.java | 1087 - .../rsyntaxtextarea/modes/RubyTokenMaker.flex | 760 - .../rsyntaxtextarea/modes/RubyTokenMaker.java | 1681 - .../rsyntaxtextarea/modes/SASTokenMaker.flex | 672 - .../rsyntaxtextarea/modes/SASTokenMaker.java | 1487 - .../rsyntaxtextarea/modes/SQLTokenMaker.flex | 473 - .../rsyntaxtextarea/modes/SQLTokenMaker.java | 1137 - .../modes/ScalaTokenMaker.flex | 383 - .../modes/ScalaTokenMaker.java | 993 - .../rsyntaxtextarea/modes/TclTokenMaker.flex | 401 - .../rsyntaxtextarea/modes/TclTokenMaker.java | 1073 - .../modes/UnixShellTokenMaker.java | 1111 - .../modes/VisualBasicTokenMaker.flex | 460 - .../modes/VisualBasicTokenMaker.java | 1618 - .../rsyntaxtextarea/modes/XMLTokenMaker.flex | 487 - .../parser/DefaultParserNotice.java | 278 - .../rsyntaxtextarea/parser/TaskTagParser.java | 158 - .../src/org/fife/ui/rtextarea/CaretStyle.java | 38 - .../rtextarea/ChangeableHighlightPainter.java | 444 - .../src/org/fife/ui/rtextarea/Gutter.java | 1024 - .../org/fife/ui/rtextarea/IconRowHeader.java | 931 - ESPlorer/src/org/fife/ui/rtextarea/Macro.java | 428 - .../fife/ui/rtextarea/RTADefaultInputMap.java | 161 - .../ui/rtextarea/RTATextTransferHandler.java | 489 - .../src/org/fife/ui/rtextarea/RTextArea.java | 1713 -- .../org/fife/ui/rtextarea/RTextAreaBase.java | 1250 - .../fife/ui/rtextarea/RTextAreaEditorKit.java | 2743 -- .../org/fife/ui/rtextarea/RTextAreaUI.java | 612 - .../fife/ui/rtextarea/RTextScrollPane.java | 308 - .../org/fife/ui/rtextarea/SearchResult.java | 244 - .../src/org/fife/util/DynamicIntArray.java | 423 - Main.Log | 136 + build.gradle | 65 +- dist/ESPlorer.bat | 2 - dist/ESPlorer.sh | 2 - gradle/wrapper/gradle-wrapper.jar | Bin 52266 -> 52271 bytes gradle/wrapper/gradle-wrapper.properties | 4 +- launch4j/app.exe.manifest | 12 + launch4j/app.ico | Bin 0 -> 204862 bytes .../com/github/unafraid/ESPlorer/Main.java | 15378 +++++---- .../com/github/unafraid/ESPlorer/pyFiler.java | 88 + .../src => src/main}/resources/IoTmanager.png | Bin .../src => src/main}/resources/aliexpress.png | Bin .../main}/resources/micropython.png | Bin .../src => src/main}/resources/nodemcu.png | Bin .../src => src/main}/resources/paypal.png | Bin .../src => src/main}/resources/uploadLUA.png | Bin 140 files changed, 9494 insertions(+), 168362 deletions(-) delete mode 100644 ESPlorer/.gitignore delete mode 100644 ESPlorer/_micropython/gpio.py delete mode 100644 ESPlorer/build/built-jar.properties delete mode 100644 ESPlorer/jar/rsyntaxtextarea-2.5.8.jar delete mode 100644 ESPlorer/nbproject/build-impl.xml delete mode 100644 ESPlorer/nbproject/genfiles.properties delete mode 100644 ESPlorer/nbproject/private/private.properties delete mode 100644 ESPlorer/nbproject/private/private.xml delete mode 100644 ESPlorer/nbproject/project.properties delete mode 100644 ESPlorer/src/ESPlorer/ESPlorer.java delete mode 100644 ESPlorer/src/ESPlorer/pyFiler.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/DefaultTokenMakerFactory.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/DefaultTokenPainter.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/DocumentRange.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/ErrorStrip.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/FileLocation.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/RSyntaxDocument.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/RSyntaxTextArea.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/RSyntaxTextAreaEditorKit.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/RSyntaxTextAreaHighlighter.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/RSyntaxTextAreaUI.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/RSyntaxUtilities.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/SquiggleUnderlineHighlightPainter.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/SyntaxConstants.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/SyntaxScheme.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/SyntaxView.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/Theme.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/Token.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/TokenPainter.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/TokenUtils.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/WrappedSyntaxView.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/focusabletip/FocusableTip.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/focusabletip/TipWindow.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/folding/FoldParserManager.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/folding/HtmlFoldParser.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/ActionScriptTokenMaker.flex delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/ActionScriptTokenMaker.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/AssemblerX86TokenMaker.flex delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/AssemblerX86TokenMaker.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/BBCodeTokenMaker.flex delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/BBCodeTokenMaker.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/CPlusPlusTokenMaker.flex delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/CPlusPlusTokenMaker.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/CSSTokenMaker.flex delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/CSSTokenMaker.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/CSharpTokenMaker.flex delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/CSharpTokenMaker.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/CTokenMaker.flex delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/CTokenMaker.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/ClojureTokenMaker.flex delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/ClojureTokenMaker.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/DTokenMaker.flex delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/DTokenMaker.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/DartTokenMaker.flex delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/DartTokenMaker.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/DelphiTokenMaker.flex delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/DelphiTokenMaker.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/FortranTokenMaker.flex delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/FortranTokenMaker.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/GroovyTokenMaker.flex delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/GroovyTokenMaker.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/HTMLTokenMaker.flex delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/HTMLTokenMaker.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/HtaccessTokenMaker.flex delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/HtaccessTokenMaker.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/JSPTokenMaker.flex delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/JSPTokenMaker.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/JavaScriptTokenMaker.flex delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/JavaScriptTokenMaker.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/JavaTokenMaker.flex delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/JavaTokenMaker.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/JshintrcTokenMaker.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/JsonTokenMaker.flex delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/JsonTokenMaker.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/LatexTokenMaker.flex delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/LatexTokenMaker.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/LessTokenMaker.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/LispTokenMaker.flex delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/LispTokenMaker.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/LuaTokenMaker.flex delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/LuaTokenMaker.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/MakefileTokenMaker.flex delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/MakefileTokenMaker.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/MxmlTokenMaker.flex delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/MxmlTokenMaker.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/NSISTokenMaker.flex delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/NSISTokenMaker.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/PHPTokenMaker.flex delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/PHPTokenMaker.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/PerlTokenMaker.flex delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/PerlTokenMaker.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/PlainTextTokenMaker.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/PythonTokenMaker.flex delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/PythonTokenMaker.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/RubyTokenMaker.flex delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/RubyTokenMaker.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/SASTokenMaker.flex delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/SASTokenMaker.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/SQLTokenMaker.flex delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/SQLTokenMaker.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/ScalaTokenMaker.flex delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/ScalaTokenMaker.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/TclTokenMaker.flex delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/TclTokenMaker.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/UnixShellTokenMaker.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/VisualBasicTokenMaker.flex delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/VisualBasicTokenMaker.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/XMLTokenMaker.flex delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/parser/DefaultParserNotice.java delete mode 100644 ESPlorer/src/org/fife/ui/rsyntaxtextarea/parser/TaskTagParser.java delete mode 100644 ESPlorer/src/org/fife/ui/rtextarea/CaretStyle.java delete mode 100644 ESPlorer/src/org/fife/ui/rtextarea/ChangeableHighlightPainter.java delete mode 100644 ESPlorer/src/org/fife/ui/rtextarea/Gutter.java delete mode 100644 ESPlorer/src/org/fife/ui/rtextarea/IconRowHeader.java delete mode 100644 ESPlorer/src/org/fife/ui/rtextarea/Macro.java delete mode 100644 ESPlorer/src/org/fife/ui/rtextarea/RTADefaultInputMap.java delete mode 100644 ESPlorer/src/org/fife/ui/rtextarea/RTATextTransferHandler.java delete mode 100644 ESPlorer/src/org/fife/ui/rtextarea/RTextArea.java delete mode 100644 ESPlorer/src/org/fife/ui/rtextarea/RTextAreaBase.java delete mode 100644 ESPlorer/src/org/fife/ui/rtextarea/RTextAreaEditorKit.java delete mode 100644 ESPlorer/src/org/fife/ui/rtextarea/RTextAreaUI.java delete mode 100644 ESPlorer/src/org/fife/ui/rtextarea/RTextScrollPane.java delete mode 100644 ESPlorer/src/org/fife/ui/rtextarea/SearchResult.java delete mode 100644 ESPlorer/src/org/fife/util/DynamicIntArray.java create mode 100644 Main.Log delete mode 100644 dist/ESPlorer.bat delete mode 100755 dist/ESPlorer.sh create mode 100644 launch4j/app.exe.manifest create mode 100644 launch4j/app.ico create mode 100644 src/main/java/com/github/unafraid/ESPlorer/pyFiler.java rename {ESPlorer/src => src/main}/resources/IoTmanager.png (100%) rename {ESPlorer/src => src/main}/resources/aliexpress.png (100%) rename {ESPlorer/src => src/main}/resources/micropython.png (100%) rename {ESPlorer/src => src/main}/resources/nodemcu.png (100%) rename {ESPlorer/src => src/main}/resources/paypal.png (100%) rename {ESPlorer/src => src/main}/resources/uploadLUA.png (100%) diff --git a/ESPlorer/.gitignore b/ESPlorer/.gitignore deleted file mode 100644 index d7cf553..0000000 --- a/ESPlorer/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -ESPlorer.Log* -build/ -test/ diff --git a/ESPlorer/_micropython/gpio.py b/ESPlorer/_micropython/gpio.py deleted file mode 100644 index db6e53a..0000000 --- a/ESPlorer/_micropython/gpio.py +++ /dev/null @@ -1,12 +0,0 @@ -import pyb -import time -pin = pyb.Pin(2, pyb.Pin.OUT) -for i in range(4): - print('LED ON') - pin.value(0) - time.sleep(1) - print('LED OFF') - pin.value(1) - time.sleep(1) - print('iteration done.') -print("All done.") diff --git a/ESPlorer/build/built-jar.properties b/ESPlorer/build/built-jar.properties deleted file mode 100644 index 9b5c609..0000000 --- a/ESPlorer/build/built-jar.properties +++ /dev/null @@ -1,4 +0,0 @@ -#Sun, 01 May 2016 00:28:27 +0600 - - -C\:\\\!git\\ESPlorer\\ESPlorer= diff --git a/ESPlorer/jar/rsyntaxtextarea-2.5.8.jar b/ESPlorer/jar/rsyntaxtextarea-2.5.8.jar deleted file mode 100644 index 9f250edf0f891a5b1dde573c34e65be29f5f6005..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1056316 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­0ydb}tw28#d2O7sv~v!7Lubcy|A5G; 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

B90UX-6x|_uJ>?~Z+?uxk78>h7ZRs%8 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

bMNBSI4+sD7e`L8~^_RbSz5C!l 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

@OHN0I>KexWXg<%2Wquq>UhZ}*OIGf7TuVf5 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

~uLCi&~HJ-{3t64s7%{4RRMc{{=33ni-d8!?Ge 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 z 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

X7vfnqDzoY-ed{-jV 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

vox04gBWM?yJJ>q;hRAYqvsc5?Na*O94^(J=sK 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

-#eDIzhiP7Ub*(&@YIQBq#}+#gKbYh zIvN+f!;r47@(e1~u@Siz?JJ!oSIT^|K|c#xyZ&*DbtF6#p=hS@a7sP5{j3CI1WPN` zSaltKL`MmenPn;BvttNHy=N?M;$#Xu_*~m}*?e94y4W40D1%$b0Li>yU|^|LAET;5 zRt6T+D~2|nv$%pso}9>VkM=pNSXJ=p=eU(iXxy={C~Aa|z&?o5O^ZFCCXQ;!Ym733 z*4wFRUiS;|X7uQH>nDK+R>?JR$J;ETZiue|1dJs3z$XdwP-@NETWERVv?{}gJ?bsq7X9_Z=%*4lhe zjB2FnqRSC01;ZNLIZ!_Y8X9Od-y!y}+qgcBHo}pi!d-2>d zGF+$oSL87W{@P6#!{Ir^ylMorxiUM%2ylDYGP}$OSDKS8N!j_OjXD-n!2;mNRO)=v zjj|y!r}x!|HS(AZSUK;T#=**}0A2o2db{{r!WDq?$HoyCd*LK?sk_Vx&KRW#K)A+u z2uW{fx0sXmeYU@0YXyCJQhe8`9DR*#NM4B-{&m|m=J1vr{ijlp|H-)jr!}pJqoKZ? zv4EkIxvkBAR0^7w|5#x)L2A5oVX5DuSHWVjXkf^uR=Nq1GZ4{_4@gi=w<2{W-h^q) zWc{KRFu(1^+mS`2&RH!Q3MI5U)<4SP*nXX|PRkwM_WgCU%SEp5o!*iGgw=|((W?#S zywPaCJp>e@@Fq|42rI-D_DG9Yk$-?R=uBB!KBI7RB^Lc&KNGl2DQ@`bPKGNxG(B?L z9-;IWkUu|ixO%~W+jt#IgFGGlg4PQ*IBNQYhBo&m(T zsKwfiR?|#N{cb?u9v`peH$@c${o$y8gv+Z6pE%3p{=mwVGJ;UPzQ)|xu81_eK6zr% zSD8>SHHcB-!_S7;RB3kQJDI*2c&6#CX3=G4Q|`f-Gs2%$q3AEL%r7XF@-%=%B|qaM z>Dpxy>qO>AnPE%sz(bsZn_yB*cqx=L4VU5p%e zUpq)}V!F?~d)BO0w!ks7XosL{l|kI{aS$DZBK_{4C4!aH(*={T9&Qq)a`qH)wz?D) zXQunE;7BJG2;Bm>20^xEdQIm!yuP=8`G;Rtka67jiMh?6>XiR~tQ!8akCM_iFt$?B zw{kZASu^-|4E;~nFN-7(|5c)`p@CMG+=;IPFX>-Hm`AAR=eMAQFBq19-cSst)^NeP zPP3;w^Fpf=CMvfdI4dks5YG1(&p4~Gnr%m9-pOQYBFomKo9VLkI=2U~&CgO_DUSvi z<+vy;cs8aD8ArhhbQVPv-dcfpEMMH4H|z?Z7I939hek?}xw)eDJfmE5d@br6ed$ga zw&vVK2cEEeH@<$MZ*q72$C7vSyb%dl0+CYGn(Fv0g^O(dV?&aSfL>26giE+A94E*s zmx#R3C4`|;A%ukV-qL(`;>=ue1oc8>Gix44C`WS2VY!=R>B5;6#dUB5fl{%-u=b$I zh8>v2T)hv26tSHlyR{P*kZAOG=BGLc#z_ zl;kqV0#y+_+VZw2D$2KBIp_D?-*+MD2r&@=(1;)5!h(b5Sr7r`SKr^^ulByG84|S- zBB`^6clm_xntBe^Z;mrLqom1wm?y@Q67~B8hjauPc7sxfu$OBTkSR_iqzL0FT?!UtyX0h^f4&$(+ zafR}wmFAEZ<`tRen3`rBo#s#x9{@ie5M57EoYq35x$I6^aA!2F=DC>ZMd9FV3R58> z1mlr+*kyj@kdzbEJb=?+KiW?TmAoYVrmNMD=QgVfcTUIN?XNuooD;wPLukQ}4}2+9 zNj6=O?wn>w`JK-~@bND%rwIP+9`5Jm{6ix9Kdp`b!@A)=^#{d&dg^5s+3#^mXE<0w z75h`a3$|L+(ya7IX?_14*EMvVQ?%2M76rsYydHuo*PGc!|qYxVnbTwIW zoYHzeuD#~_gwmDHr1rG5mSVD6af*n~Z5(_#65Vdxc?#Udii?j1YlI?Hys%W+YLV z7`k)5Zq1ZAa+IR)GSdMli_Ut`>Ne0byVT2VDhB&h@J?K?;19vK5f=Q9>A z`k{GjkDoh{b2!;iab?!6!jTSAFnPqx4S$Ykv2})jy^s40wSvC6-B@qE4^|5bR|*IR z%5}CRe@cb^&`0M?_T4M#Y_XjWiYAb4G2p+cj;7Kz6K2!IkN8n*duI7Bp|w(CQ>YP|_)_*0MOveCM8G}D z;B@;wVz%+gW#%x*98ERSsEAgG&M1{y&P*4vt#sGISHRo`*+Ldl9nyri&@0_yK+FKD zoW3*js)3CADV&vHc{55CqB(-9;|5DrJhlAEc@P)~Rb00}rZ~~>9k%}}b=j*AIY0iK zY>WNh1loVf2lBS_^zdI@DMr#jG$1Vupjhzul5BGX%>MjhiYx;~ex&|SS0z^_NrTDR zF8ihg)_}Kv;dXu#OsSLUz$?7Rb>6>T-Mbz;`h0%fBK<{WwY00V7|Z}ed$ugw_YVyP z*Wz}#P3y(FrzVdng5ZSC44(_V<%bpKPN=6HFz;>Nv1d!{&)MtvmdOx2rF*wv$Luz+ z8ylcOlSMy5T0?4|f&S8w>BzJ<4ANi80cB|ms=uii10e6l$O(zu3S0QiPDW1r?M_vt?2+1mD?`~=>kb-M4ub|DRLh4D0t#f zYqF1NKf$8Z9si3e4(1YLvkSV~-AwUHimDfCi6DuTMr#hG6+88JO71g;%9nt$0Porzcq0_rm+YecoJdas9-B+P!r++ey8~Nb{bv7n9+V4BR)7zOkzrUWBw|{}& zc18)kSl?NiBAwsK-L^WE>B8yP~{p(d6+~N zTbwn20qUD>)p>#e%N$kRX?ZNAEzYA5Y5%w?|E4*&;8bLmU`o-T)gp;d_F=Y3rYzRS zbnB&uIZpV?Ur-+Jtq7POr91=Tas;i|qobZSJKnmGPUvpHA*mRtXtBD}atvKB?B6(9 zbgG@sL`5T?bqanl#v_Ne*wk@QR0`9mMe+1^653k=;AqV=g^8 zP2Q$M5uUipG?CpOHaDjgHC@|PYD!a*wA%l=%>o&c(=$cOnkd7Nx&jvNOr5NZw5R6i zZziCZ(Nse=gJk7OH(8~634^6wg7;e2&wf+m*#4CT$gfPuHlcAf2AFx51q1tmqUfDX zYw0>h^+o2*7Eds+vY{y!Wy(h$Be`)#fCKSLg{23E!1IF6-7>{0rCt#&g_%f0$e8_v zAP$gwdSq_?cuI3FLJu&EX8c|yz5Jpb$0U*!NNgow;&E&ioNVq$$dtOO9Ryrkw)waq zy0p9EfZ7`t>!pka3^8hWRj6PM*jB0YG$btKor=0$y+7GU9*Io%Dfy?^`1H#M zJc~-@OGvZ!nVTl*Y(E{kvQBSv*qq>Tbwu@Y>dQz6i4MxnQRKv_%o4S7R+mI)Gu!Mj zth&s)Q|3gms)rd!N5GfmTcLQV6;BaSB|QGjM(&7-D$|EdfD>!L{2xJI;5Q_!sLIKL zvV{Ag2_WrC?YOKoTcvR)jQ1t6=guVyxTsUfs^4sWZKrD#n{Cfa;hyaq$&+d&g_zCH zbF@8c=bd$5n~j`(#jbOIK}|1LhOVoX`#agX$1TS!Q>hQt<#DqZX>`P%h=$A5jj}iXe-R+^JCAqhZ;s zOi^Z)P&&T^sJCUKHmx{UojwI1G-iIYLZtI%tj*A#2uTauiCql&o%EHl`*pF0LD+-O z7l64AB1C}fF~Hae`5{6 z!=Si%T9yIlzp)BrZ(&yC%8{`NWUpdc_{jxk=1uM4z&+v)+9eHeq2}s9aRt_~WBG~m zN)fL7P<*oB#@*?+o_I$2X78ffDv4d}ti$ia!t^hY(SQ!hWMkeA?lqG+1R3diwmpg^p14)Phuv-{q>9C|EwMRXHITbhfu>__Wu5CM^zyTVkaiBl5D7( zh^|9uAXyLRPY4D<2ND!@Fo5XBc7b?l)ff1&1C(v-qiCw(QrYFkL9ad70dSHwdvjcyrlbfOU4J3Cxi>P$E;wC zedMeLzQ_Bc)a63!G5E=XAp9*2B=0p1c%jaL*>im9g4Lb*v%T?pF>jW-PK zrudgnCvs2WJRO*PaBb3FWyC`#fEP`eh8K^YEwFs3?b(edY1xqeLZO<3=UWVu=d# z>;-ZsN&Xg42B|^{lgzs^n2{%Z83~+1{N-KMP6!B)lajjxFj?C_HdlSu4m4SafLCEh$wjt$E>D2qn&UMZ%r3%e=t!Kk8z7Xh z?~^IBaL4W%P`t8tsGSUk3DqJ)l*bS*OKU<5tYOh_uR+0Wp^IBg2^lixfm>HpVV+`M zsEY8sIa|z6c44+@57(zM2u4(CW7C(O4FH`UKO>|ioUh;D-{SfD6+b@!!Gy?RGwCwV zw2U*rXgKsfo;=`nKTGkPZJ-)hF$N+t zud5=2TGrD!Z!9&05gg^!PMMBO*2GYg_mfDErk}cL7RBj7BL{k{GH2Ryo3ubu1G~@Wzl0!q&SqPj`y^ zD%iT=s#yaRubH^@0~Zv>Q2*iEvb_7lB0rCZeNfs8&FwHYkOP#EF2s00Y{nu@4``06 zegqDSk?g(zo;q3r4mK1a4+N+Y?GWtLPk>XVB3;l0zt4~jnm~Z|;Wz>eRwH2pi<+0;M$_pQ%sW9`AwjgMTd9Vu)q!6hw zb=GWUk6Z#)T$mA{kSwG(v$41`c7Sk-BgU66A0aC!bI0CqFETB75AzXdETLfOCpyG;8>>b0){eP1JJ8s5QVr^Fz z@w4?a>fh=4j)^r52L0pR$&c&^zcFl;hSbHBVP4tC>b+i53TeV8DZ!$98w<^M*Oxjh z=D^RInQblA+?mX~)>xFoy}5gHn!_D!pIIsi6h;M^q%^S{qwTKywUElz1z&=I1##-snCi1iCApn{ItkCy{CSbnY=&k!jY-# zNv6YEv^^8uO{)Gu%p2C$Okni$e`IXy0 zXDGyR(41W58YVC?(QjB>cflqeQ#ZjiU>e_CWjS(fuxgufw)l{j%8t;)TqV%zp}o=5 zt$8p`UXY>eU9a_L6|;Jet%ri8>huF~Im4mkk+(BtcWaU@`-aW34^LOO&s6(M)e{GG zaK-0y?|$k;fXwFob+VMs(y>1YsfCbes?0ijIb|+W`Fl0CUYenWtwqcM%U+#)6^9`3 zxb*O@pYB*n&7;S9`l-Jz#^aYF#phsoM(nD2_Z-gwg6WFq8BGs&>TA{F+nD36Swc&8 z723Z1u(VK%@tj+5vj;YIX`IF8xoTvj;t+QWw`ZX4r+FfL9R>D$AWF`Zr!?!l}{ zQKF9~E_S0c5AR-{IiMVHm(niW*Uz01Zdh%EkZ)`gD}Lzsry9~9KAsi6+msO(VYBktlt?BCwEcn01jM1i-hf`?Mf! z$1PFp?}KdkO8~k6^*IlM=;SYi(=M^i@SmWZy))i4Hxy|fmV`FE+QTz~sQpW)mClnY z;&$x&=t1Twpe-xVMyKGZg=&xk-asff7|2oAAa0#dLI=L6<$ah1{D{qiSNd$yH{pkD zu~4)G#J2c|>nlqiSgwrB+B~1eChDCKj)iwB?jAp$4i8epHPi-RqQaLmUF#gqSkr}e zu^!}G&pe9YmICCpcc+BDt*?lVJ`g8p=2n%hq`pa-WHy=t$Exu3db(g*-Pg~FQq8+& z&nO%BtXp5Omfg}iple|)LwBme;x(4nxjD{c2BIw)sc!8Vu?yFPdDf0g?E%_@tLYun z_Ck-GBh~8FvV_w#&GI7v6z!96+GnpfT+CNq&ZAHD*_AZ$tY|kj2H@+%jT=NU*RA2z zcOImio$W!A;SsPA`N<#SN@nc0)V^M1n{!V{<4@>uoYYK3Hxb`RLDZYEqZBH3=1`l@ zr-@zq`_fF`P&7LuzYg3>$~lzpD{e)nlFGJ{wvrPmD%DiEe7}M^!r;z`G*{~2 ztw?$c3Ghy;4P^yI!H6rkUbDxzoIYHX`6<3Dj-aj@b5-C`fQc{*I=hiJEw z8>jl^UU8nmNe}S611)O8?)IP70oVyu*OFQ0G`>L^ZyXvj z@xbWV7AN;{aYD{=_+JS_nr)-0cLp4ubYyA#=^7on1>wAsabGYW-#E{1VVHL^+c37r zBr2z*G@R!g;oQ2tISXe!+vd2hZw_OhTD@S&a{0Z-8`(MdVJe!Cwz)#ID(|ghw(}*njqSRJ?YwgjKY=Rlg)RnT89|hzEzv7tJy>Sq<*SIQ)hHy-4PQ`@ zm6904dQw#CvvsQhCNKI9pH%j&ukO{}MHHfRRYQnQdi-O5EXzZ+eC!SS zYTfp+Wg%GF(m=D1%JaY1@0n$z^IR8l2t>(xNPGHofNuV!*UJyfM4JB@Ah`XAasSOn zd`IK_UEt{Npe1Gq=X5|b0F>!Bdv3CI=TD^nEx9qYYgf%s_z zjqDo{xL>(mKyv#TO=W+EPC1eov27!t;ury(4L(6a@%lfc@HkBp=lhap>!yP(S)wY*r? z-1DeTM~Hr_UoODrK1=YwMg~aiYNVH}%3`m4zT05;KN;N-YP~BU!&q}eUYmiF2h`5J5 z#CNA+cWbgnE=n;qiQXuUFmiLKg$HpS@ygSMrG$BG+qVm18k(k>DFJ1Sb!a8o$ zVZFApCITvo&|Q^@<;Uv3`68>#M&qKO(GwfW3}R#{+avTd9vN>a+rvRoHuP7zNAwGRJpWQ&$7kQe1X_YESg=thG<*b*U zZ&>0sad1fYDd!G3ZFlltnTHIYI@K0A?L_l7dLPv+atm`I`NW{EUPO2k(*XxE;-bK6 zgN7&!GlVW3!7|$z!j}QsO64b!5R|}Ux;7+j!b6|yCi3#@eIOvd#OiYvJ`2O;PuUWH z?18g@P|5qfUKI~+L2L(m{0EbnwI}52m0$RmubKa-2ff9909^k-+UEfU9|vi|d7P$s z74B#($SXwD%d0Jfa)Ec$LqxS1Oi~-G4|wnrga&1G3@2wZ1g9A#Cx7@~#fIq_|6}13 z5cBsrs#F_(Q0>@VMDyvcT6qnEF$sKei%^OTNK*FWN*rm+TznQw3LU4&hL+eeOqiR( z-h(-vn5Tcae^<1%+oAq>DhoeUum5KM{r`F@HYVn#&JO>$fd4n5!+(s|q80v$bGTw% zvQ|nLLV$M`)X&6s?!FN*1S}i~Zb-MLX7Iw-c5T&G(421$`|kbTHDzHKLih30{rElP zSh_BjBsRx;?0&^#%W>@U{rZT^j{v8b*6)Q#u_1=28FyC_psBEt5|?cEyRYDfX-x%P zsqq;NezBGFsB!;MvxIPyc*Yls;L}&9_hZW^Mf0_YJ%B* z{vd-c??8KF-9}*4D>-P#nT7Gj;5#wV22~X3Z^o&m+qlAo^U%>0kP*-k0dQ3=Yb!E9 zv824x&({C?@St=$b^WVxHTMyFwQ^p+Wq^H%O~yRFkY470(TyrTGCtR77ssozuwoJ z)tg~{oxV-cQqgQ($U4E?tV>{=LN#<_)M37Wc{o?%?)KzVbK51=``spKdfF>92V`=p z-p(=__t#h|UOMs3pPWJO8*1gWb%9KncZ}{0qh9Ti$Dk7kgN%bA1#9PLTCC-44SljFmxVl|NcpV)PDVGeYWQo$Cm^FLM}R2?Y?j%?PXL z1bY2Yn23EeeE>!Uz`uAs!?Ny}5ombwU64PR*{k3o41`vIP)D z6PIROCE}1koBx*Ma*9@{m1%s!s?$0u!oVP`R*r;#*8sfaHc}i(J1QJh=p|tLVVnL7 zh;*-=X}p6Qa{a~lioqsVW(DJ<~>Hy)#=^(HA>y8f1wj_Q^iqqqc@Aw4y2 zGmWA6y_LG%qF})OIRQ`M>D&bz#T%4-VnM^O$MsjKZD4=w+2P5otMryd+asQS{TWc| zak~WfO=lPd=_M@b`>ZrVuH_rpm7J*55dr*7K6QLFMxFe!r%cXviB{;G#oT;}dS(3Jpc66%kL0l4#&oO{J&U}Bt@^HXT+SYdYFgM0J6_poaO zn@|kSBTcZ7kSK5s%qOV!D|=&oxvmJ=kVi+S7dL6OyEGn~7Z|T(0O-;)yt$6!()nvt zI_I$8WJ2fM)EEl{ohMP~N~n}y5nxVhA|lM({%Ij7Y7}M5MqM=mU?^SAxYBd<0a2hp z>M$Hx@%k3*k@6wNa2O0Q?z^T^fgqYf0_fTOWzfF^p(st|``JmEljtk-c~~u1f+wN9 zzu)KNb@8}_p)c>Tm@yKeEpd6Ynx4+CuqLe|&E8TtY0yy*py{-6Hlt}At5?=`wQV{K z#Gk;HS&SjtqOLWl&$AG;+ziYCs0mw+c$utvwnelh^)3wy3WB9$2Bvs3crqqC2wBRF z`GxD+cG6PV4o-;*&41(No6Ahh^Hrt+oHRNC@ZCEY-Xe;eUEYI$TLC4@Yt9{CGD@khBNjjkz)XN^5x6A zEj-l+SYxQ%_(v-BNvWrI3Je`(@mCenc_wu~P$MEdXOTl_X?bdB$Rf4|vdffW+I|9X z`{2Md4%k-}n1(t1oz4q4lb(6F)s+r2*qvR3hF{qZDoePCeRS$= z1B%{^t{-9)RK2mrPwW&F%ySxt(Uy?1pd{KTp5VWP9qu!x4jYv(hQ5R>$tcLTTtQ15 zQ(Hml&Z{d!gwYi#s({aEzcF)_L z(${Md9*f%zi1=Q0vs7Gnrp^`ts?OCRCh)PP-6hSQZ`;ik2;UmepqxeT+vr2o`D@_= zo7ooWa-~m3XMmQ=PnRp0kQ%p_$Ud;mpV1RN|H19_1sn09o%90IHMrd`^2JMg8<}>5 zx5M}iuX__qKh7tb?i+yh!Dw@5zOk3P$NCN3b6b1E^}S|0iOfPK!e_2I6F`4?U0R1? zUtl8-1f?Ri5~Achil}6}>KjO00pbJ0_&pTMj(ei)O`)tSv6zbZ65$upT)MaW z>yJ5nAcpN9*ryu-Z8S5bdZ86*!)Y%IxTm-M?&;PGlt2BT5yl(@wFIM}9h6wb^clB| ztg|TYAqQdP-~WP54@iK3O87yhM-cxc=>K_g{$~nK{(<2rEvA3__D^h#9)Kd^5+wRT zAkq`}{sNTXXAZ*e1*V4>zz1hb&m0XNmC8yd_KVdhSE;u4R)(Ppn0`@-gI4ZPenzNT zUsJJM-gL37ylUZX(d@ilT>I?yw6!5k4AS%I$#T5@(OrGz)4yWE;CHdpG z&K$X#zZ$Shz5Bw0v6Z?DGYsMHJZo21p&EIL)r?D2 zL=t6Yl#L*B!Vth$6Z+U9?8uBtELFQ+{b=S%wf9GqSV?}7)Q<`$jgzPV$)O64hg{Xd z<3TJyPH(Gn#sdkZ<3efScjtbG`^Ylc;3GVNFYr}RH=F!yStutByexM;-NeXrP2`Xu z%B5(h&aAc40B}V65@m(E6f-0=kf|m%y=^87k%2_LQI{u<262&PwZ8WsgfsAa-@fjC zw}vLW+7`O*#W1XD!K@a9uF9yec(qBXRO%H8JJsKTUW_8b+bf%^6~h_KNG=xIP0~=d ziv}TH>zP-=p}l81^tep3Vx0(QF%WeW@b~n!Mh4-*@lrHxom@Het`MflS)#juG98Y_ z+D+A&=?Xzj7<=RNCFL61U$0`VT`Rt+>fP@iNmg# z1)K4CxK`K>B^i2R0l_fSKJ?K5KV$`|e3%Qb(->j33F6=Nr+%mPdkkLFXbsg=XXwlN z3V(F$AJ_)NRHGlXniVH>aah-$POygtJkl1*o$ITIz)w7?B?)N}<_W27ZtMO8Xb3X7 zu0N`YB>sUnHMUbN2&DG}ZXpPJ)F4J@4R#=T5;I~4&n%d|!4BUDY4I{^&tyVt*FHz##gACp9mY@-=MYS}Jig)~9SQ zY}jlM5X+ZTuIO*3wE0WJh%Hx-R(0HUTM-!X*`_gQ*%n-PGH&9Ivb;+Lxmej0&syH3 z9x{FdlZ@&1SKuR9BAUHOArV^BXoV8{^Oq~dLe<4#7_4H6eYJKPU2Go5q8{5#KMDiOa56CJS2HSXll5~q`FvCq;*o*bAmDV-aBWI7kvo)&ZD*`0y%W2OXIhmzvajS$ zWjZ8_J5RY9I(`pk?@W81@+Q9x2*8c;JWagYD-;VkyaI4m%^_gm7WHp1XUXTtpAtM7 zd#K6r3TB4TERRQLsx=*tXG(f>GdsfAmOqf6Lj)F74VUTW4=Z~FR#)#&HU2eO{H87DhRh=P7N!0 zY+g*g+R&JvQPR{_Zf&e_F`S$lDoN?U$-@hB2UBqYR0^}`VD66mSWY}Mp7_4S}OZe23}URbcET`yc`tx@!B zPkYiZ?px1~ZodqdRN6G-l8O@j%fhCHk#2!99^F^<0i>) z;QZk!$ozw4GdyTu_B8X=I)yiDDVm2u8n0Y?Gl~IjrC4x}hNS#yZJ{F*=8prlR#e%6 z6cW%o(7w&p3{lCxL#P%fX!6=@Ohdkk5{EOhb4#&F^QK1?4<=Kx7Q4i6isZj{97H;{ zz#K%eGc=kK?9Dl*7;}!9G>~Ay)dL7xj9pzMRW&RiCPs9b+1Pg*CxULkwW=4Iu9KYzkL?J{Jm(Is%Lp+D5PtXsl*+ z3!5(?(q-ZL4&pJBJZAO7Kt8LE$JtmGGWqge)}rm&dcEjZ3Px-ZdefFHturLgpNlE9 zvvAYc=k>1R)SQ_{$E(YOr}t08dFQK=tW6vzt^3pt4NlyOwZn$Fn-tPlL<#F!Tt4us zf;|1TO}n!k6r}ZfvPsuVpFG3gvl5uoK=yg6xHYItE|CUR9T%fpT8BwoW$~aggbJ#K zB4KzABr1yS)0{hoKpo*l(0&E4Yuf<0J6AGab8q9rF*qK9p-t1e>!dODwF;QrXkzG@l()9F*+cN@7?|aFoH!I2~8c&wkt%$SP4Fzf#;`+m^DG1XpUP0 zHYNeAHz=NO6~8{9^QSbTta$I>m7^-Z#=-t8rG5y5kMG#sVEGHAA%n$lb>cz2A3J+81$o=Pk&;Pm$(-60K$0_-g3c%- zGJUH~CxtzWrg!rN_FmwwqWN{z_@1fqLKzuXcu5?&St{ER(6onoVv?qiI3kqdxIyV} z;Dst&Jqqsb_3!jMLy83xjs=rl-UkMh)~-iu3rVT7y?XHpPmthguCzZ#Uyg8y~gUF+7!D6EjOr}joA^L)t;tNSy);Bc|_?ZlsV znT9$(1M<#b*AWpB!%B|<4T4zSVD)_4P(BOl)kY&+or>B_#%gcF=LU|$w--p zGw9T*rBvth4C+2s@aD zVVN)0Jzhv?b}?eDBT_V%z9guvYn}1> zV^UF7orjjrIVKHy1S8+=BWk9DF>EI(6QC(&1YzId$9APjLmtJ!Rid{9xyJ6ZC96BIi&&1-DL+Q zhEZ6Gqq`fE=p*KvWFMV2CY5Bmt!DFvyk8A!_9jn?!guFLeeBAIQ*`TSg5%9O%a~7K zunr1k)yK3pq0tRdu;2%=wokCfEj8bj$F`40!ivQ9k=f~N@$4B}K^}U>Mylll?+Fsa z;7^kNS4+%`` z7i86#%E7szPbdl0QsKxmT)9Vz5dsN)Wzpmxb(^Uf9k>h~2%e`Z*m>(W+?z4Po4o=qWMHeC=tZ74R2^tN z`R^Qgu)9zmaT^ct#xwoQ>A1zGQqHiCj%GYEm8TeMGShQ1oTAHfP)WJ*;s1hi`wJ!oXWArK>i*Hk1fUgRb z=xn;}^N9_aew%=9C~9(GET`u7O&FRnDcZ*=)_(!6y>xbKA>Q`YBifr|kUj6>R}UB+ z*}*%WIwQ}+G35FT+;#Q-oH3=$%hqLV4Pbgeou8U!f%?W&KfrdJpk;mem|IwtlLRAm z@VJ~z4Vy3px66e{N=HlY>68vhnb`1tTb8b`>$j%(145kkZ>Xa}=WRs%F!q^@msH>2 zdEda*9~esJuQ@8cG8A-yV2J=4VN$X0*kH?>St%B6#32*RWGx3ynT+Og73eEqMNxb$ z4Y8f*Yg!mQitmEv?AlibXni4RYXir}+t>RZGv>Ei*V^vJWdwFr1+{-P>)+{`tm>m; z(rN9BEI2mH&@Wm{@t0%$(5k-xR0Saac!lb8&(DAVHMiw66$-oMZ2M!K%DVJPU(=*< zMa)SY-jNP)D1vTtGj$bxc;V+sxrzPK;ESzqd8U;iY~;6Uf(*ux9@`jMmF*+Nn#ix- z65B(JQf9V`k0k*z9zUp1<#(nLioHydcCHbNs7gbrg=H6R$;8@0D-?O|VCBl9A8JX( ztjZ)5K^Sidtkwe~dUh1bIN8ylh;D}CbHO#e zpSXZAf)9oJrsJ_7eb`-IB@}IqQsrZSxlwF%r8GX&9;_8MdUwMS36O@ zkTJp^`H@4u@c!#2Y=^Qx=ETp)NA*X2|8KV4|2gvcht4i;V`Ofq{{u54{Kv;rbbTp|2y+0lHaxoA0)yQLB-q821?@eU5 z(mq(vc`W0U4OQ5ako0`^s_9dDdUpCBJiZWQ-L|Ax|Y2szOC*!(e=Bbve|l`eXIUkwYzUsclGCURi8TD zKenZV)n~rM)R{^Ob4iAJuXvU~gxi%dI=EK7@h9I@;WmjhZ}Prh z7c%S`t&l5QYt$Z48b zIWoTzDwPiQu8Mn^Nb<(F3P;d*Syi0dHC}p%dnz#{gyev8DwYwh4c6`~Ijj%nn#t*e z1P6I-x-bA%$q(*6@lim_T&k9wf0a=K$k`Z*!krINuj~R}R#ZMa9U^1sDA!$!C!=LE zP-Qb}uAPy6o@4Q`IrRBgNr)gRE;gm`XXZmb3Fln5?u1{peV*mbuUF9pF+D^nb;xKA zfHj|EjjF&D?$J7{R)w#l7w%`r#=84hg88E|)ee?_oNJH&w5&D3BVm$|Y%LE@5Omrf zat?uj0ThEFspLkMgOyxbo)ba{- zzt6>FX$FA`UbI$exO|C?k)vYgOb>6;o%IFg5^kTpCF?B6OGfdGy@jp?@(R5w=d3L* zsH06-L{$a>h6md>L70^xsSSZb9YV-(guiW>+3 z=2ZgR^y=L8iV>O15K^$}T2NxE6lzRkTeyle)k|%;WLcz7jy&(-U;j5&iiOtd@qY#% ziGQ`aw|Or}no_b$lasw&Ea!fZ5|b_5ck@;2nxPz%qqWD2TEr_p|R|D`4k}{OjZ8 zmg$G76YfHI21f2!X)ui*`Zxu|qL;W*2Hsg_(p?p(pb4zO@ORwwZ@9JKU@imA+iVxc93K#)P{dOn`id@-D4UVqz`a3J(1Rca354ITF1#Z@iC_Ehg zTJCaoaY!t8QO|M;a#42erBb#I(m^yRq7epr z)fgLHg;YnE;V8;5KaE62o2Uji!V*zjZhK&Vs_!~*P9cFy{ z?qFY)u(dn)%pOMy3r$=6yzU4Fyhj6oU z64SgQ)i)C&>iq1XV)B1&p%ou0%~>2WtGsviQVg}R_j*2)w1IAJixs#9f}39b*%zc< zhv(lFlAQ;2aIHLSudlE)Iy^J>zD9Pb+x2kl0+LWY@W6j>c`i9L7i78gS8Lrr2G^UF zP${AHK6SBc7fW%yW?N9N518?zR|vC2!fpPf%^zp3*~O3l)>D|?;7f5~iy-Ad4Sfqf zKs3G?Y@w@@!9{Pl;OYcl+xMQia-2h(GO&N{uzGG?&(_y;t^ygO@N-KhYCrfWfSwAS zQ0LtM6A+I6%5biaWB`srUk~@76XTdPrquRzNx+AWGLA!|Jx9;L;?{`Tiq=N0u4;?Rs2@ zd#Hb8`cWU7b|?q_Mkt!^m!l3cZ{k;YAQ0^leSzx?!DkM=NbWtjPu~r~UpyC8M!Z6t zPhEqFR7o5oT;%ZNwuuS)55HRj)53V)5b0e~%<-nn9Yc1r62Riu<{Db<>)4$q!nV}!^#}D0a zwFk}rk=pr>)BnFci8{VUs!vaXCmhzm$MQ!E^0HshA~|j7^AOY!VFHD#py{A==fw67 z8$wbx$s#CuUCgA{~QjqxN#8_Vq5zj4c5yS1W*32wC=P_rK21%y%psFu_@9_~H z4J6*|f-f*#eK zKHWTpK4an%HH&?tV^sL5N6jOBvSD*9gU5=weaa*(ZUf&9rapC)wzFYu=?3PUL8-@HOqw)qBtnNaJkBTEHhdaxoHp19g6)&+%+ihPmtDJQ=isP zWT3`lC?}N2mR$a^Q)zb>-F%t)3q%#!0z*+|z2U^WP@9eeNR5sbX!;OiN^4l(EW%cj zli|c%YC*9U7GgNrFS=8BsF1$xietq|m5PujP028a)=Q9|h8H(aVIMe7$_9P~E&Z7$aQi`K=F~&Q7V;0ggBE|FzJmPp2LQIO#8GZ z-fCgN4;Pu*8<(#)rKZp$L5VbW9$6lEVmfO#EVd?Dk3}-Iy^8cXY~^cr=>RMui8ZUR z-akx!VdK{p^{ZZ_Ma{!`x<{=%S$MS%aw&vC3!rpBsQ$5jv(_)FUtGF5Up9#o4OK3( z4v!U@g1WtrTrLwQ%?=dbrIljlA*d5*P=*snDDRB0=G&!cxj?B>YR0508})Fur#TBSSWuUso!?m7)s9W?lRbx{vRFnl#?q8^bHOT9i)ywES#-1BAB z1U2^{!g)>nots!4tZ5YM4Dpw|uH43IHLrt#Of*NH(i1fK#9^?rEzlZa6?6N$#@1eE zV#m(QxFuwgA9`b`PiWrJOZU40jPYF91kUDZZ&qNHx}3G>B*u-3t>gEvg@@4*RuN$) z68mN+HK;ETix@NVt$_|hYLI3vIJcLPVt1ob-H?c*r+1^yuG_I~Cn-w{x9mPlalc;v zpxFuqgEbbkVGH;YAJBk)Oqr5lDHw6lO;O6zrC{NZicFeK+f%p%5^YYX59U{@mxHER z$U~L_Qn0DC$xWNWD~$51Jb#oRAr6gq(2yE-uHjlc)NY5N#h+Z8nh-5BCd7dqtb5%! zComW>Hxfg}k;*LC6(ki|KRXkhy}59I?gIw=BJe&y4$TkPCBlRhTmy}{FyY98j=)u? z+{A`*utpvugH0f*q(?QW}iy(AfVQWV?n;H#s)VX^px ze3C}3spV6oyq@iO_<@b&`sCr2wMy}l6o6vEESqfy7VCpH9w`p(=b~zd1$5mS*)V&m zPTD^l8Z%aiwK6jEOM1dObdV9?GKveY$;THO9adyb-~+teYR$(*}lLx8HfBISw!f zraQLWov8IiU2DEQ_%%>gxvW%^*iFwdKy<&HAfBTL1V6wFrPN`^Lqa3*zU)=QU@7};j6FE5g4D*LB|vn#A1k_)KSFiPtYC>q1T8HvNWP& zNwokquD{ISh{J6GB-nU;6H{=)nEH%?k245E)(J)fjNz&&#SjN>Z~5p7!F9Mi@t675%# zq4JyJhb7*Z_>tyYJ;%SCsro3ie|ZHhcNet%gN{`n=}P`N`E7T+wEfdxN^e~Kfcw86 zgfgSc81``G?!|LfZ2L+_NUsI7{=caAk(dwAS`cndpj)DJoUAG!2o|(PR&ZEtnpa`S%eUplfRD#I@F#^4oD~Mz5R!=7jV7mCuUj zThtEBb#UOo7tjH;qi%#vja#(hkkOQUFdp<+;%xHKa(kFpgms92o`rI)%DF~^tn_7` z5J-#%>tBx7kK3H!;s?g4jnZ^1v{zUjv9i(a&E-Y7=PqG>$A_H-Hzfhq)pAt*(=}B> z@rF@K;HyDJEmIC&iz!G743tfH$#)fG{HI@|+NlmT|qfJ*n#*y@cBNh6Oi?jef3Wh^HXWr}$g3*Bo2ybO+z6wx%G}p> zmnD}BN+m}jE3Zo$OQGbrQ=rIsilZ#Sf!+p;?!9;2W7w5vqW?zi8D?sA9K~XWhAbY| zxHHGaMBOz$pR(CQ{`RO@QbudTDy4Kk%pse@NH-(&sWP~PQ!0wi5yIi=N+FwzaumK< zIg%=gW3Ae>|$7RnwstIi|56FvGx z&*t1PTq&PKlJ^@m>j-~RFKg>IIR2JWe$LdEJgz!V;yea7iG0#OE{JL?+9PnJeeKu8 z0)l;F_3zV@-x==L$Z>5X)fifu!N;qr0lgOp?_E_C_>TfwY`|y<4P3+W?54r3OVl9w z1v;WOYYzl(Bfhk;8Znk}rlzmg^1v%c46lo!;f63%K**tSheMTO}^l znfJ`S*;vmty@9jVfD$7u_Kv&)KDUO;o|Ad&pBO?u%}i!YO0c z_gLWeDNNY6e@i`Rr2$6Ew3Y1w>tGHj%lEcze4_`7%38+|Z#YB>bnfmxWt<$Uu@u&I zWQsC|R*}4ADE4Ha=HBF+)#4`K6*{FVfnS;YVjAooJZy&4I{c6PdHEYBFGvx~K!Q8_ zqNpWB-AL*TbeaQZ)zXiZ{!`8;rY`x&>hsSFc0KK ztjAua{oFG1Q7<}=V^hUJ&W&$Sx8|=~X1$TyX*b@a3`rM4^8zILmVzM#(9+5yD5UIx z-FXWE8?NsuKO}YQl3S>aYfYCnVLt3H4S+=f>78ls zb(}TyQm$q_v=0t#D*bX@n8z1R)AShF;?LvKxa_lTH>M8dUuVAa>7eIuX9Dj6ZX=IiT{}x6tqzh_a6ApA=moWo z0g9Hw>_6m|S={Thg3;?LC~ASK+8* zZ@kS;Zeq@m>Qx2kyB8(a4}LKxjMfjj(H|s;U*_`8@CO*vFn43rZmM)4>jv?i*7(A5 zKSbn)f`w;7e$}0Z2n<1H$$39T<_Cv`XfbH_#=QMqH2f%v4ZvCdn{>^sIdDKI!4|nr zSR^U`^npXwIpFcQgzcs0=_&ii_`bzb*iZ^N4HaD@;|Z~gb2>+#!ddBXW?R%IZU(_T zZm-uN29C#R@*Ub=f}`34$bO%9+&T^5+41M(Hs|2q>7BI|l>1imSQ3`P*|_MfG5&40 zilV~{W!jX7s{;QsZiDYIj*`9afltarMk}+0=&6u4>Jn+8ZQW`&Co#FZ`mn(4sj!#J z^`~Y#ea2S+*Xd-$+98H8p0zM`-Hc130{s9_s}};T2cfJtq}kIrIB=eg2l4a;BoLHS zK*;BVYUoZhbiLn-<}-(}#`X*BgaXw@P zl8|T_YzI`~ri83Z+PJNh7oUAgxX3W)dbiN>w-c35ZvM}ZN+_x(RTD3-s~#1(<1Ohb zfZMO*!JHF7e$awQ$d=g&>YE_Z;l7H?gO`53D+0arJ4N9axz%cAVgTaxA+uL>K1by? ztQ=~Q>@Anx;hG}WxHX6X+=1E&x7^be;k2*~cAB$<3=j-0z@{sHn| z8S({8xMiun*+X$yfbbkH76an|$uJ$ASW!ZXc>w^lIh~6EO@nz@bT7ytgDT@k)M6P! zvReEud;wQ$+r)HxF{!K&qEb#)$WMJ7fcjZcr|k7bn{IE4%i-R?SAhh(T|?j8Wq2iD zP$&+>dGqc{6^@_!*4LRQ0pzr6Hq7l%k95h9z3Fo30T~q3NjFW89fuWn$ojK~?T{

B7hzd6WdEq|o%+dIVlnAK34= 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 nD*vK_76 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Must set platform.home - Must set platform.bootcp - Must set platform.java - Must set platform.javac - - The J2SE Platform is not correctly set up. - Your active platform is: ${platform.active}, but the corresponding property "platforms.${platform.active}.home" is not found in the project's properties files. - Either open the project in the IDE and setup the Platform with the same name or add it manually. - For example like this: - ant -Duser.properties.file=<path_to_property_file> jar (where you put the property "platforms.${platform.active}.home" in a .properties file) - or ant -Dplatforms.${platform.active}.home=<path_to_JDK_home> jar (where no properties file is used) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Must set src.dir - Must set test.src.dir - Must set build.dir - Must set dist.dir - Must set build.classes.dir - Must set dist.javadoc.dir - Must set build.test.classes.dir - Must set build.test.results.dir - Must set build.classes.excludes - Must set dist.jar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Must set javac.includes - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - No tests executed. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Must set JVM to use for profiling in profiler.info.jvm - Must set profiler agent JVM arguments in profiler.info.jvmargs.agent - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Must select some files in the IDE or set javac.includes - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - To run this application from the command line without Ant, try: - - ${platform.java} -jar "${dist.jar.resolved}" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Must select one file in the IDE or set run.class - - - - Must select one file in the IDE or set run.class - - - - - - - - - - - - - - - - - - - - - - - Must select one file in the IDE or set debug.class - - - - - Must select one file in the IDE or set debug.class - - - - - Must set fix.includes - - - - - - - - - - This target only works when run from inside the NetBeans IDE. - - - - - - - - - Must select one file in the IDE or set profile.class - This target only works when run from inside the NetBeans IDE. - - - - - - - - - This target only works when run from inside the NetBeans IDE. - - - - - - - - - - - - - This target only works when run from inside the NetBeans IDE. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Must select one file in the IDE or set run.class - - - - - - Must select some files in the IDE or set test.includes - - - - - Must select one file in the IDE or set run.class - - - - - Must select one file in the IDE or set applet.url - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Must select some files in the IDE or set javac.includes - - - - - - - - - - - - - - - - - - - - Some tests failed; see details above. - - - - - - - - - Must select some files in the IDE or set test.includes - - - - Some tests failed; see details above. - - - - Must select some files in the IDE or set test.class - Must select some method in the IDE or set test.method - - - - Some tests failed; see details above. - - - - - Must select one file in the IDE or set test.class - - - - Must select one file in the IDE or set test.class - Must select some method in the IDE or set test.method - - - - - - - - - - - - - - Must select one file in the IDE or set applet.url - - - - - - - - - Must select one file in the IDE or set applet.url - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ESPlorer/nbproject/genfiles.properties b/ESPlorer/nbproject/genfiles.properties deleted file mode 100644 index 8e257ab..0000000 --- a/ESPlorer/nbproject/genfiles.properties +++ /dev/null @@ -1,8 +0,0 @@ -build.xml.data.CRC32=3b99742e -build.xml.script.CRC32=fb069117 -build.xml.stylesheet.CRC32=8064a381@1.75.2.48 -# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. -# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. -nbproject/build-impl.xml.data.CRC32=3b99742e -nbproject/build-impl.xml.script.CRC32=e2f0e77d -nbproject/build-impl.xml.stylesheet.CRC32=05530350@1.79.1.48 diff --git a/ESPlorer/nbproject/private/private.properties b/ESPlorer/nbproject/private/private.properties deleted file mode 100644 index be3a020..0000000 --- a/ESPlorer/nbproject/private/private.properties +++ /dev/null @@ -1,9 +0,0 @@ -compile.on.save=true -do.depend=true -do.jar=true -file.reference.rsyntaxtextarea-2.5.6.jar=C:\\!git\\ESPlorer\\ESPlorer\\jar\\rsyntaxtextarea-2.5.6.jar -file.reference.rsyntaxtextarea-2.5.8.jar=C:\\!git\\ESPlorer\\ESPlorer\\jar\\rsyntaxtextarea-2.5.8.jar -javac.debug=true -javadoc.preview=true -user.properties.file=C:\\Users\\Victor\\AppData\\Roaming\\NetBeans\\8.1\\build.properties -work.dir=C:\\0prog\\Java\\ESPlorer\\run diff --git a/ESPlorer/nbproject/private/private.xml b/ESPlorer/nbproject/private/private.xml deleted file mode 100644 index 692bc44..0000000 --- a/ESPlorer/nbproject/private/private.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - file:/C:/!git/ESPlorer/ESPlorer/src/ESPlorer/pyFiler.java - file:/C:/!git/ESPlorer/ESPlorer/src/ESPlorer/ESPlorer.java - - - diff --git a/ESPlorer/nbproject/project.properties b/ESPlorer/nbproject/project.properties deleted file mode 100644 index 54ba45e..0000000 --- a/ESPlorer/nbproject/project.properties +++ /dev/null @@ -1,99 +0,0 @@ -annotation.processing.enabled=true -annotation.processing.enabled.in.editor=false -annotation.processing.processors.list= -annotation.processing.run.all.processors=true -annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output -application.desc=ESPlorer - Integrated Development Environment (IDE) for ESP8266 developers. -application.homepage=http://esp8266.ru -application.splash= -application.title=ESPlorer -application.vendor=4refr0nt -auxiliary.org-netbeans-spi-editor-hints-projects.perProjectHintSettingsFile=nbproject/cfg_hints.xml -build.classes.dir=${build.dir}/classes -build.classes.excludes=**/*.java,**/*.form -# This directory is removed when the project is cleaned: -build.dir=build -build.generated.dir=${build.dir}/generated -build.generated.sources.dir=${build.dir}/generated-sources -# Only compile against the classpath explicitly listed here: -build.sysclasspath=ignore -build.test.classes.dir=${build.dir}/test/classes -build.test.results.dir=${build.dir}/test/results -# Uncomment to specify the preferred debugger connection transport: -#debug.transport=dt_socket -debug.classpath=\ - ${run.classpath} -debug.test.classpath=\ - ${run.test.classpath} -# \u0424\u0430\u0439\u043b\u044b \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 build.classes.dir, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u0437 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u0430\u0440\u0445\u0438\u0432\u0430 jar -dist.archive.excludes= -# This directory is removed when the project is cleaned: -dist.dir=dist -dist.jar=${dist.dir}/ESPlorer.jar -dist.javadoc.dir=${dist.dir}/javadoc -endorsed.classpath= -excludes= -file.reference.rsyntaxtextarea-2.5.8.jar=..\\jar\\rsyntaxtextarea-2.5.8.jar -includes=** -jar.archive.disabled=${jnlp.enabled} -jar.compress=true -jar.index=${jnlp.enabled} -javac.classpath=\ - ${libs.jSSC.classpath}:\ - ${libs.absolutelayout.classpath}:\ - ${libs.beans-binding.classpath}:\ - ${file.reference.rsyntaxtextarea-2.5.8.jar} -# Space-separated list of extra javac options -javac.compilerargs= -javac.deprecation=false -javac.processorpath=\ - ${javac.classpath} -javac.source=1.7 -javac.target=1.7 -javac.test.classpath=\ - ${javac.classpath}:\ - ${build.classes.dir} -javac.test.processorpath=\ - ${javac.test.classpath} -javadoc.additionalparam= -javadoc.author=false -javadoc.encoding=${source.encoding} -javadoc.noindex=false -javadoc.nonavbar=false -javadoc.notree=false -javadoc.private=false -javadoc.splitindex=true -javadoc.use=true -javadoc.version=false -javadoc.windowtitle= -jnlp.codebase.type=no.codebase -jnlp.descriptor=application -jnlp.enabled=false -jnlp.mixed.code=default -jnlp.offline-allowed=false -jnlp.signed=false -jnlp.signing= -jnlp.signing.alias= -jnlp.signing.keystore= -main.class=ESPlorer.ESPlorer -# \u041d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0430 Codebase \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f RIA -manifest.custom.codebase= -# \u041d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0430 Permissions \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e (\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f: sandbox, all-permissions) -manifest.custom.permissions= -manifest.file=manifest.mf -meta.inf.dir=${src.dir}/META-INF -mkdist.disabled=false -platform.active=JDK1.7 -run.classpath=\ - ${javac.classpath}:\ - ${build.classes.dir} -# Space-separated list of JVM arguments used when running the project. -# You may also define separate properties like run-sys-prop.name=value instead of -Dname=value. -# To set system properties for unit tests define test-sys-prop.name=value: -run.jvmargs= -run.test.classpath=\ - ${javac.test.classpath}:\ - ${build.test.classes.dir} -source.encoding=UTF-8 -src.dir=src -test.src.dir=test diff --git a/ESPlorer/src/ESPlorer/ESPlorer.java b/ESPlorer/src/ESPlorer/ESPlorer.java deleted file mode 100644 index 9aeac7b..0000000 --- a/ESPlorer/src/ESPlorer/ESPlorer.java +++ /dev/null @@ -1,13942 +0,0 @@ -/** - * - * @author 4refr0nt - */ -package ESPlorer; - -import java.awt.Color; -import java.awt.Component; -import java.awt.event.MouseEvent; -import java.awt.Toolkit; - -import java.awt.*; -import java.awt.event.*; -import java.io.*; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; - -import java.util.logging.*; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.prefs.*; - -import java.net.*; - -import javax.swing.*; -import javax.swing.filechooser.*; -import javax.swing.Timer; -import javax.swing.text.BadLocationException; -import javax.swing.text.Document; - -import org.fife.ui.rsyntaxtextarea.*; -import org.fife.ui.autocomplete.*; - -import jssc.SerialPort; -import jssc.SerialPortEvent; -import jssc.SerialPortEventListener; -import jssc.SerialPortException; -import jssc.SerialPortList; - -public class ESPlorer extends javax.swing.JFrame { - - public static SerialPort serialPort; - public static ArrayList sendBuf; - public static boolean pasteMode = true; // for MicroPython only - - public static boolean pOpen = false; - public static boolean sOpen = false; - public static boolean portJustOpen = false; - public static final String version = "v0.2.0-rc5"; - public static ArrayList LAF; - public static ArrayList LAFclass; - public static Preferences prefs; - private static int FirmwareType; - - private static pyFiler pyFiler = new pyFiler(); - - /** - * Creates new form MainWindows - */ - public ESPlorer() { - try { - FileHandler fh = new FileHandler("ESPlorer.Log"); - LOGGER.addHandler(fh); - } catch (SecurityException e) { - LOGGER.log(Level.SEVERE, "Internal error 105: Can't create log file. Permission denied.", e); -// LOGGER.log(Level.SEVERE,e.getStackTrace().toString(), e); -// e.printStackTrace(); - } catch (IOException e) { - LOGGER.log(Level.SEVERE, "Internal error 106: Can't create log file. I/O error.", e); -// LOGGER.log(Level.SEVERE,e.getStackTrace().toString(), e); -// e.printStackTrace(); - } - initComponents(); - FinalInit(); - - } - - /** - * This method is called from within the constructor to initialize the form. - * WARNING: Do NOT modify this code. The content of this method is always - * regenerated by the Form Editor. - */ - @SuppressWarnings("unchecked") - // //GEN-BEGIN:initComponents - private void initComponents() { - bindingGroup = new org.jdesktop.beansbinding.BindingGroup(); - - ContextMenuTerminal = new javax.swing.JPopupMenu(); - MenuItemTerminalClear = new javax.swing.JMenuItem(); - MenuItemTerminalCopy = new javax.swing.JMenuItem(); - TerminalSeparator1 = new javax.swing.JPopupMenu.Separator(); - MenuItemTerminalFontInc = new javax.swing.JMenuItem(); - MenuItemTerminalFontDec = new javax.swing.JMenuItem(); - TerminalSeparator2 = new javax.swing.JPopupMenu.Separator(); - MenuItemTerminalReset = new javax.swing.JMenuItem(); - MenuItemTerminalFormat = new javax.swing.JMenuItem(); - ContextMenuEditor = new javax.swing.JPopupMenu(); - MenuItemEditorUndo = new javax.swing.JMenuItem(); - MenuItemEditorRedo = new javax.swing.JMenuItem(); - EditorSeparator1 = new javax.swing.JPopupMenu.Separator(); - MenuItemEditorSendSelected = new javax.swing.JMenuItem(); - MenuItemEditorSendLine = new javax.swing.JMenuItem(); - EditorSeparator = new javax.swing.JPopupMenu.Separator(); - MenuItemEditorCut = new javax.swing.JMenuItem(); - MenuItemEditorCopy = new javax.swing.JMenuItem(); - MenuItemEditorPaste = new javax.swing.JMenuItem(); - EditorSeparator2 = new javax.swing.JPopupMenu.Separator(); - MenuItemEditorFontInc = new javax.swing.JMenuItem(); - MenuItemEditorFontDec = new javax.swing.JMenuItem(); - ContextMenuLog = new javax.swing.JPopupMenu(); - MenuItemLogClear = new javax.swing.JMenuItem(); - MenuItemLogClose = new javax.swing.JMenuItem(); - LogSeparator = new javax.swing.JPopupMenu.Separator(); - MenuItemLogFontInc = new javax.swing.JMenuItem(); - MenuItemLogFontDec = new javax.swing.JMenuItem(); - MUXGroup = new javax.swing.ButtonGroup(); - Firmware = new javax.swing.ButtonGroup(); - About = new javax.swing.JDialog(); - AppName = new javax.swing.JLabel(); - Version = new javax.swing.JLabel(); - Donate = new javax.swing.JButton(); - Author = new javax.swing.JLabel(); - HomePage = new javax.swing.JButton(); - Author1 = new javax.swing.JLabel(); - ContextMenuESPFileLUA = new javax.swing.JPopupMenu(); - MenuItemESPFileDo = new javax.swing.JMenuItem(); - TerminalSeparator3 = new javax.swing.JPopupMenu.Separator(); - MenuItemESPFileDelete = new javax.swing.JMenuItem(); - buttonGroupLF = new javax.swing.ButtonGroup(); - ContextMenuFileManager = new javax.swing.JPopupMenu(); - ShowFileManager = new javax.swing.JCheckBoxMenuItem(); - HorizontSplit = new javax.swing.JSplitPane(); - LeftBasePane = new javax.swing.JLayeredPane(); - LeftTab = new javax.swing.JTabbedPane(); - NodeMCU = new javax.swing.JPanel(); - TextTab = new javax.swing.JTabbedPane(); - SriptsTab = new javax.swing.JLayeredPane(); - FilesToolBar = new javax.swing.JToolBar(); - ButtonFileNew = new javax.swing.JButton(); - ButtonFileOpen = new javax.swing.JButton(); - ButtonFileReload = new javax.swing.JButton(); - ButtonFileSave = new javax.swing.JButton(); - ButtonFileSaveAll = new javax.swing.JButton(); - ButtonFileClose = new javax.swing.JButton(); - jSeparator1 = new javax.swing.JToolBar.Separator(); - ButtonUndo = new javax.swing.JButton(); - ButtonRedo = new javax.swing.JButton(); - jSeparator8 = new javax.swing.JToolBar.Separator(); - ButtonCut = new javax.swing.JButton(); - ButtonCopy = new javax.swing.JButton(); - ButtonPaste = new javax.swing.JButton(); - jSeparator6 = new javax.swing.JToolBar.Separator(); - ButtonSendSelected = new javax.swing.JButton(); - ButtonSendLine = new javax.swing.JButton(); - FilesTabbedPane = new javax.swing.JTabbedPane(); - FileLayeredPane = new javax.swing.JLayeredPane(); - TextScroll = new org.fife.ui.rtextarea.RTextScrollPane(); - TextEditor = new org.fife.ui.rsyntaxtextarea.RSyntaxTextArea(); - LeftExtraButtons = new javax.swing.JLayeredPane(); - FileDo1 = new javax.swing.JButton(); - FileCompile = new javax.swing.JButton(); - FileSaveCompileDoLC = new javax.swing.JButton(); - FileUploadBin = new javax.swing.JButton(); - FileCompileDoLC = new javax.swing.JButton(); - FileCompileDoLC2 = new javax.swing.JButton(); - FileCompileDoLC3 = new javax.swing.JButton(); - FileCompile1 = new javax.swing.JButton(); - Busy = new javax.swing.JLabel(); - FilePathLabel = new javax.swing.JLabel(); - ProgressBar = new javax.swing.JProgressBar(); - LeftMainButtons = new javax.swing.JLayeredPane(); - FileSaveESP = new javax.swing.JToggleButton(); - FileSendESP = new javax.swing.JToggleButton(); - FileDo = new javax.swing.JButton(); - FilesUpload = new javax.swing.JButton(); - NodeMCUCommands = new javax.swing.JLayeredPane(); - CommandsMicroPython = new javax.swing.JLayeredPane(); - CommandsNodeMCU = new javax.swing.JLayeredPane(); - cmdNodeRestart = new javax.swing.JButton(); - cmdTimerStop = new javax.swing.JButton(); - cmdNodeChipID = new javax.swing.JButton(); - TimerNumber = new javax.swing.JComboBox(); - cmdNodeHeap = new javax.swing.JButton(); - cmdListFiles = new javax.swing.JButton(); - cmdNodeSleep = new javax.swing.JButton(); - MicroPythonCommandsTab = new javax.swing.JTabbedPane(); - MicroPythonCommandsWiFi = new javax.swing.JLayeredPane(); - MicroPythonSSID = new javax.swing.JTextField(); - cmdMicroPythonStaConnect = new javax.swing.JButton(); - MicroPythonPASS = new javax.swing.JTextField(); - MicroPythonRemoteHost = new javax.swing.JTextField(); - MicroPythonRemotePort = new javax.swing.JTextField(); - cmdMicroPythonSendToHost = new javax.swing.JButton(); - MicroPythonRemoteData = new javax.swing.JTextField(); - cmdMicroPythonScan = new javax.swing.JButton(); - MicroPythonCommandsGPIO = new javax.swing.JLayeredPane(); - MicroPythonGPIO0_1 = new javax.swing.JButton(); - MicroPythonGPIO0_0 = new javax.swing.JButton(); - MicroPythonGPIO2_1 = new javax.swing.JButton(); - MicroPythonGPIO2_0 = new javax.swing.JButton(); - MicroPythonGPIO4_1 = new javax.swing.JButton(); - MicroPythonGPIO4_0 = new javax.swing.JButton(); - MicroPythonGPIO5_0 = new javax.swing.JButton(); - MicroPythonGPIO5_1 = new javax.swing.JButton(); - MicroPythonGPIO9_0 = new javax.swing.JButton(); - MicroPythonGPIO9_1 = new javax.swing.JButton(); - MicroPythonGPIO10_0 = new javax.swing.JButton(); - MicroPythonGPIO10_1 = new javax.swing.JButton(); - MicroPythonGPIO12_0 = new javax.swing.JButton(); - MicroPythonGPIO12_1 = new javax.swing.JButton(); - MicroPythonGPIO13_0 = new javax.swing.JButton(); - MicroPythonGPIO13_1 = new javax.swing.JButton(); - MicroPythonGPIO14_1 = new javax.swing.JButton(); - MicroPythonGPIO15_1 = new javax.swing.JButton(); - MicroPythonGPIO16_1 = new javax.swing.JButton(); - MicroPythonGPIO14_0 = new javax.swing.JButton(); - MicroPythonGPIO15_0 = new javax.swing.JButton(); - MicroPythonGPIO16_0 = new javax.swing.JButton(); - MicroPythonGPIO0 = new javax.swing.JButton(); - MicroPythonGPIO2 = new javax.swing.JButton(); - MicroPythonGPIO4 = new javax.swing.JButton(); - MicroPythonGPIO5 = new javax.swing.JButton(); - MicroPythonGPIO9 = new javax.swing.JButton(); - MicroPythonGPIO10 = new javax.swing.JButton(); - MicroPythonGPIO12 = new javax.swing.JButton(); - MicroPythonGPIO13 = new javax.swing.JButton(); - MicroPythonGPIO14 = new javax.swing.JButton(); - MicroPythonGPIO15 = new javax.swing.JButton(); - MicroPythonGPIO16 = new javax.swing.JButton(); - NodeMCUSnippets = new javax.swing.JLayeredPane(); - LeftSnippetsPane = new javax.swing.JLayeredPane(); - SnippetEdit0 = new javax.swing.JButton(); - SnippetEdit1 = new javax.swing.JButton(); - SnippetEdit2 = new javax.swing.JButton(); - SnippetEdit3 = new javax.swing.JButton(); - SnippetEdit4 = new javax.swing.JButton(); - SnippetEdit5 = new javax.swing.JButton(); - SnippetEdit6 = new javax.swing.JButton(); - SnippetEdit7 = new javax.swing.JButton(); - SnippetEdit8 = new javax.swing.JButton(); - SnippetEdit9 = new javax.swing.JButton(); - SnippetEdit10 = new javax.swing.JButton(); - SnippetEdit11 = new javax.swing.JButton(); - SnippetEdit12 = new javax.swing.JButton(); - SnippetEdit13 = new javax.swing.JButton(); - SnippetEdit14 = new javax.swing.JButton(); - SnippetEdit15 = new javax.swing.JButton(); - SnippetTopPane = new javax.swing.JLayeredPane(); - SnippetName = new javax.swing.JTextField(); - SnippetSave = new javax.swing.JButton(); - SnippetRun = new javax.swing.JButton(); - SnippetsBusy = new javax.swing.JLabel(); - SnippetCancelEdit = new javax.swing.JButton(); - Condensed = new javax.swing.JCheckBox(); - SnippetScrollPane = new org.fife.ui.rtextarea.RTextScrollPane(); - SnippetText = new org.fife.ui.rsyntaxtextarea.RSyntaxTextArea(); - NodeMCUSettings = new javax.swing.JLayeredPane(); - OptionsFirmware = new javax.swing.JLayeredPane(); - OptionNodeMCU = new javax.swing.JRadioButton(); - OptionMicroPython = new javax.swing.JRadioButton(); - OptionsOther = new javax.swing.JLayeredPane(); - FileAutoSaveDisk = new javax.swing.JCheckBox(); - FileAutoSaveESP = new javax.swing.JCheckBox(); - FileAutoRun = new javax.swing.JCheckBox(); - EditorThemeLabel = new javax.swing.JLabel(); - EditorTheme = new javax.swing.JComboBox(); - UseExternalEditor = new javax.swing.JCheckBox(); - OptionsFileSendMode = new javax.swing.JLayeredPane(); - DelayLabel = new javax.swing.JLabel(); - Delay = new javax.swing.JSlider(); - AnswerDelayLabel = new javax.swing.JLabel(); - AnswerDelay = new javax.swing.JSlider(); - DumbMode = new javax.swing.JCheckBox(); - LineDelayLabel = new javax.swing.JLabel(); - LineDelay = new javax.swing.JSlider(); - TurboMode = new javax.swing.JCheckBox(); - jLayeredPane2 = new javax.swing.JLayeredPane(); - jLabel1 = new javax.swing.JLabel(); - jLabel7 = new javax.swing.JLabel(); - TerminalMaxSize = new javax.swing.JTextField(); - LogMaxSize = new javax.swing.JTextField(); - jLabel8 = new javax.swing.JLabel(); - jLabel9 = new javax.swing.JLabel(); - jLayeredPane3 = new javax.swing.JLayeredPane(); - CustomPortName = new javax.swing.JTextField(); - UseCustomPortName = new javax.swing.JCheckBox(); - jLabel10 = new javax.swing.JLabel(); - AutodetectFirmware = new javax.swing.JCheckBox(); - CommandEcho = new javax.swing.JCheckBox(); - ATvXX = new javax.swing.JLayeredPane(); - BasicATcommandsPane = new javax.swing.JLayeredPane(); - cmdAT = new javax.swing.JButton(); - AT_Restart = new javax.swing.JButton(); - AT_GMR = new javax.swing.JButton(); - GSLP = new javax.swing.JButton(); - ATE0 = new javax.swing.JButton(); - ATE1 = new javax.swing.JButton(); - UPDATE = new javax.swing.JButton(); - TabAT = new javax.swing.JTabbedPane(); - AT_Station = new javax.swing.JPanel(); - TopWiFiStaFiller = new javax.swing.Box.Filler(new java.awt.Dimension(457, 150), new java.awt.Dimension(457, 150), new java.awt.Dimension(457, 150)); - WiFiStationPane = new javax.swing.JLayeredPane(); - cmdGetCWJAP = new javax.swing.JButton(); - cmdSetCWJAP = new javax.swing.JButton(); - SSID = new javax.swing.JTextField(); - PASS = new javax.swing.JTextField(); - cmdSetCWQAP = new javax.swing.JButton(); - cmdGetCIPSTAMAC = new javax.swing.JButton(); - cmdSetCIPSTAMAC = new javax.swing.JButton(); - MAC = new javax.swing.JFormattedTextField(); - cmdGetCIPSTA = new javax.swing.JButton(); - cmdSetCIPSTA = new javax.swing.JButton(); - StationIP = new javax.swing.JTextField(); - AT_SoftAP = new javax.swing.JLayeredPane(); - WiFisoftAPPane = new javax.swing.JLayeredPane(); - cmdSetCWSAP = new javax.swing.JButton(); - cmdGetCWSAP = new javax.swing.JButton(); - cmdGetCIPAPMAC = new javax.swing.JButton(); - cmdGetCWLIF = new javax.swing.JButton(); - SSIDsoftAP = new javax.swing.JTextField(); - PASSsoftAP = new javax.swing.JTextField(); - cmdGetCIPAP = new javax.swing.JButton(); - cmdSetCIPAPMAC = new javax.swing.JButton(); - MAC1 = new javax.swing.JFormattedTextField(); - encryption = new javax.swing.JComboBox(); - channel = new javax.swing.JComboBox(); - softAPIP = new javax.swing.JTextField(); - cmdSetCIPAP = new javax.swing.JButton(); - TopWiFiAPFiller = new javax.swing.Box.Filler(new java.awt.Dimension(457, 150), new java.awt.Dimension(457, 150), new java.awt.Dimension(457, 150)); - AT_Client = new javax.swing.JPanel(); - TopWiFiStaFiller1 = new javax.swing.Box.Filler(new java.awt.Dimension(457, 150), new java.awt.Dimension(457, 150), new java.awt.Dimension(457, 150)); - TCPclientBottomPane = new javax.swing.JLayeredPane(); - common = new javax.swing.JPanel(); - conn_id = new javax.swing.JComboBox(); - single = new javax.swing.JRadioButton(); - multi = new javax.swing.JRadioButton(); - jLabel4 = new javax.swing.JLabel(); - cmdGetCIPSTART = new javax.swing.JButton(); - UDP = new javax.swing.JLayeredPane(); - udp_local_port = new javax.swing.JTextField(); - jLabel2 = new javax.swing.JLabel(); - udp_mode = new javax.swing.JTextField(); - jLabel3 = new javax.swing.JLabel(); - remote_address = new javax.swing.JTextField(); - remote_port = new javax.swing.JTextField(); - protocol = new javax.swing.JComboBox(); - cmdSetCIPSTART = new javax.swing.JButton(); - jScrollData = new javax.swing.JScrollPane(); - data = new javax.swing.JTextArea(); - cmdCIPSEND = new javax.swing.JButton(); - cmdCIPSENDinteractive = new javax.swing.JButton(); - cmdSetCIPCLOSE = new javax.swing.JButton(); - AT_Server = new javax.swing.JPanel(); - TCPServerTopFiller = new javax.swing.Box.Filler(new java.awt.Dimension(457, 150), new java.awt.Dimension(457, 150), new java.awt.Dimension(457, 150)); - TCPServerBottomPane = new javax.swing.JLayeredPane(); - cmdGetCIPMODE = new javax.swing.JButton(); - cmdSetCIPMODE0 = new javax.swing.JButton(); - cmdSetCIPMODE1 = new javax.swing.JButton(); - cmdSetCIPSERVER = new javax.swing.JButton(); - ServerMode = new javax.swing.JComboBox(); - jLabel5 = new javax.swing.JLabel(); - ServerPort = new javax.swing.JTextField(); - cmdGetCIPSTO = new javax.swing.JButton(); - cmdSetCIPSTO = new javax.swing.JButton(); - ServerTimeout = new javax.swing.JTextField(); - jLabel6 = new javax.swing.JLabel(); - TCP_common = new javax.swing.JLayeredPane(); - cmdGetCIPSTATUS = new javax.swing.JButton(); - cmdGetCIPMUX = new javax.swing.JButton(); - cmdSetCIPMUX1 = new javax.swing.JButton(); - cmdSetCIPMUX0 = new javax.swing.JButton(); - cmdGetCIFSR = new javax.swing.JButton(); - WiFi_common = new javax.swing.JLayeredPane(); - cmdGetHelpCWMODE = new javax.swing.JButton(); - cmdSetCWMODE1 = new javax.swing.JButton(); - cmdGetCWMODE = new javax.swing.JButton(); - cmdSetCWMODE2 = new javax.swing.JButton(); - cmdSetCWLAP = new javax.swing.JButton(); - cmdSetCWMODE3 = new javax.swing.JButton(); - DHCP = new javax.swing.JComboBox(); - DHCPmode = new javax.swing.JComboBox(); - cmdSetCWDHCP = new javax.swing.JButton(); - RN2483 = new javax.swing.JLayeredPane(); - RN2483jTab = new javax.swing.JTabbedPane(); - MacPane = new javax.swing.JScrollPane(); - LoRaMAC = new javax.swing.JLayeredPane(); - MacCommon = new javax.swing.JLayeredPane(); - cmdMacSetAdrOn = new javax.swing.JButton(); - cmdMacSetDR = new javax.swing.JButton(); - cmdMacSetPwrIdx = new javax.swing.JButton(); - cmdMacGetStatus = new javax.swing.JButton(); - cmdMacSetAdrOff = new javax.swing.JButton(); - cmdMacGetAdr = new javax.swing.JButton(); - MacDR = new javax.swing.JTextField(); - MacPower = new javax.swing.JTextField(); - cmdMacGetDR = new javax.swing.JButton(); - cmdMacGetPwrIdx = new javax.swing.JButton(); - SendUnconfirmed = new javax.swing.JLayeredPane(); - cmdMacTX = new javax.swing.JButton(); - MacTxPort = new javax.swing.JTextField(); - MacTxData = new javax.swing.JTextField(); - TxConfirmed = new javax.swing.JComboBox<>(); - jLabel13 = new javax.swing.JLabel(); - RadioPane = new javax.swing.JLayeredPane(); - MacSF = new javax.swing.JComboBox<>(); - jLabel11 = new javax.swing.JLabel(); - RadioRxBandWidth = new javax.swing.JTextField(); - RadioFreq = new javax.swing.JTextField(); - cmdRadiosetRxBw = new javax.swing.JButton(); - cmdRadioSetFreq = new javax.swing.JButton(); - cmdRadioGetSF = new javax.swing.JButton(); - cmdRadioGetBw = new javax.swing.JButton(); - cmdRadioGetRxBw = new javax.swing.JButton(); - cmdRadioGetFreq = new javax.swing.JButton(); - MacBandWidth = new javax.swing.JComboBox<>(); - jLabel12 = new javax.swing.JLabel(); - jLayeredPane1 = new javax.swing.JLayeredPane(); - cmdSysReset = new javax.swing.JButton(); - cmdSysFactoryReset = new javax.swing.JButton(); - cmdSysGetVer = new javax.swing.JButton(); - cmdSysGetHwEui = new javax.swing.JButton(); - ActivationScrollPane = new javax.swing.JScrollPane(); - ActivationPane = new javax.swing.JLayeredPane(); - ABPPane = new javax.swing.JLayeredPane(); - cmdMacSetDevAddr = new javax.swing.JButton(); - cmdMacSetNwkSKey = new javax.swing.JButton(); - cmdMacSetAppSKey = new javax.swing.JButton(); - cmdMacjoinABP = new javax.swing.JButton(); - cmdMacGetDevAddr = new javax.swing.JButton(); - DevAddr = new javax.swing.JTextField(); - NwkSKey = new javax.swing.JTextField(); - AppSKey = new javax.swing.JTextField(); - cmdMacSave = new javax.swing.JButton(); - OTAAPane = new javax.swing.JLayeredPane(); - cmdMacSetDevEui = new javax.swing.JButton(); - cmdMacSetAppEui = new javax.swing.JButton(); - cmdMacSetAppKey = new javax.swing.JButton(); - cmdMacJoinOTAA = new javax.swing.JButton(); - cmdMacGetDevEui = new javax.swing.JButton(); - cmdMacGetAppEui = new javax.swing.JButton(); - DevEUI = new javax.swing.JTextField(); - AppEUI = new javax.swing.JTextField(); - AppKey = new javax.swing.JTextField(); - RightBasePane = new javax.swing.JLayeredPane(); - LEDPanel = new javax.swing.JLayeredPane(); - PortOpenLabel = new javax.swing.JLabel(); - PortCTS = new javax.swing.JLabel(); - PortDTR = new javax.swing.JToggleButton(); - PortRTS = new javax.swing.JToggleButton(); - Open = new javax.swing.JToggleButton(); - Speed = new javax.swing.JComboBox(); - ReScan = new javax.swing.JButton(); - AutoScroll = new javax.swing.JCheckBox(); - Port = new javax.swing.JComboBox(); - EOL = new javax.swing.JCheckBox(); - CR = new javax.swing.JCheckBox(); - LF = new javax.swing.JCheckBox(); - DonateSmall = new javax.swing.JButton(); - TerminalOnlyCheckBox = new javax.swing.JCheckBox(); - EditorOnlyCheckBox = new javax.swing.JCheckBox(); - RightBottomPane = new javax.swing.JLayeredPane(); - Command = new javax.swing.JComboBox(); - RightBigPane = new javax.swing.JLayeredPane(); - RightFilesSplitPane = new javax.swing.JSplitPane(); - TerminalLogPane = new javax.swing.JLayeredPane(); - RightSplitPane = new javax.swing.JSplitPane(); - TerminalPane = new org.fife.ui.rtextarea.RTextScrollPane(); - Terminal = new org.fife.ui.rsyntaxtextarea.RSyntaxTextArea(); - ScrollLog = new javax.swing.JScrollPane(); - Log = new javax.swing.JTextArea(); - FileManagerScrollPane = new javax.swing.JScrollPane(); - FileManagersLayer = new javax.swing.JLayeredPane(); - NodeFileManagerPane = new javax.swing.JLayeredPane(); - FileFormat = new javax.swing.JButton(); - FileSystemInfo = new javax.swing.JButton(); - FileListReload = new javax.swing.JButton(); - FileAsButton1 = new javax.swing.JButton(); - FileRenamePanel = new javax.swing.JLayeredPane(); - FileRenameLabel = new javax.swing.JLabel(); - FileRename = new javax.swing.JTextField(); - PyFileManagerPane = new javax.swing.JLayeredPane(); - PyListDir = new javax.swing.JButton(); - PyFileAsButton1 = new javax.swing.JButton(); - RightSnippetsPane = new javax.swing.JLayeredPane(); - ButtonSnippet0 = new javax.swing.JButton(); - ButtonSnippet1 = new javax.swing.JButton(); - ButtonSnippet2 = new javax.swing.JButton(); - ButtonSnippet3 = new javax.swing.JButton(); - ButtonSnippet4 = new javax.swing.JButton(); - ButtonSnippet5 = new javax.swing.JButton(); - ButtonSnippet6 = new javax.swing.JButton(); - ButtonSnippet7 = new javax.swing.JButton(); - ButtonSnippet8 = new javax.swing.JButton(); - ButtonSnippet9 = new javax.swing.JButton(); - ButtonSnippet10 = new javax.swing.JButton(); - ButtonSnippet11 = new javax.swing.JButton(); - ButtonSnippet12 = new javax.swing.JButton(); - ButtonSnippet13 = new javax.swing.JButton(); - ButtonSnippet14 = new javax.swing.JButton(); - ButtonSnippet15 = new javax.swing.JButton(); - RightExtraButtons = new javax.swing.JLayeredPane(); - NodeHeap = new javax.swing.JButton(); - NodeInfo = new javax.swing.JButton(); - NodeChipID = new javax.swing.JButton(); - NodeFlashID = new javax.swing.JButton(); - NodeReset = new javax.swing.JButton(); - SendCommand = new javax.swing.JButton(); - MainMenuBar = new javax.swing.JMenuBar(); - MenuFile = new javax.swing.JMenu(); - MenuItemFileNew = new javax.swing.JMenuItem(); - MenuItemFileOpen = new javax.swing.JMenuItem(); - MenuItemFileReload = new javax.swing.JMenuItem(); - MenuItemFileSave = new javax.swing.JMenuItem(); - MenuItemFileSaveAs = new javax.swing.JMenuItem(); - MenuItemFileSaveAll = new javax.swing.JMenuItem(); - MenuItemFileClose = new javax.swing.JMenuItem(); - jSeparatorFileMenu = new javax.swing.JPopupMenu.Separator(); - MenuItemFileSaveESP = new javax.swing.JMenuItem(); - jMenuItem4 = new javax.swing.JMenuItem(); - MenuItemFileSendESP = new javax.swing.JMenuItem(); - jMenuItem7 = new javax.swing.JMenuItem(); - jSeparator4 = new javax.swing.JPopupMenu.Separator(); - MenuItemFileDo = new javax.swing.JMenuItem(); - jSeparator3 = new javax.swing.JPopupMenu.Separator(); - MenuItemFileRemoveESP = new javax.swing.JMenuItem(); - jSeparator2 = new javax.swing.JPopupMenu.Separator(); - MenuItemFileExit = new javax.swing.JMenuItem(); - MenuEdit = new javax.swing.JMenu(); - MenuItemEditUndo = new javax.swing.JMenuItem(); - MenuItemEditRedo = new javax.swing.JMenuItem(); - jSeparator7 = new javax.swing.JPopupMenu.Separator(); - MenuItemEditCut = new javax.swing.JMenuItem(); - MenuItemEditCopy = new javax.swing.JMenuItem(); - MenuItemEditPaste = new javax.swing.JMenuItem(); - jSeparator5 = new javax.swing.JPopupMenu.Separator(); - MenuItemEditSendSelected = new javax.swing.JMenuItem(); - MenuItemEditSendLine = new javax.swing.JMenuItem(); - MenuESP = new javax.swing.JMenu(); - MenuItemESPReset = new javax.swing.JMenuItem(); - MenuItemESPFormat = new javax.swing.JMenuItem(); - MenuView = new javax.swing.JMenu(); - AlwaysOnTop = new javax.swing.JCheckBoxMenuItem(); - MenuItemViewLog = new javax.swing.JCheckBoxMenuItem(); - MenuItemViewClearLog = new javax.swing.JMenuItem(); - MenuItemViewClearTerminal = new javax.swing.JMenuItem(); - jSeparator9 = new javax.swing.JPopupMenu.Separator(); - MenuItemViewTerminalOnly = new javax.swing.JCheckBoxMenuItem(); - MenuItemViewEditorOnly = new javax.swing.JCheckBoxMenuItem(); - jSeparator18 = new javax.swing.JPopupMenu.Separator(); - MenuItemViewToolbar = new javax.swing.JCheckBoxMenuItem(); - MenuItemViewLeftExtra = new javax.swing.JCheckBoxMenuItem(); - MenuItemViewSnippets = new javax.swing.JCheckBoxMenuItem(); - MenuItemViewFileManager = new javax.swing.JCheckBoxMenuItem(); - MenuItemViewRightExtra = new javax.swing.JCheckBoxMenuItem(); - MenuItemViewDonate = new javax.swing.JCheckBoxMenuItem(); - jSeparator13 = new javax.swing.JPopupMenu.Separator(); - MenuItemViewTermFontInc = new javax.swing.JMenuItem(); - MenuItemViewTermFontDec = new javax.swing.JMenuItem(); - jSeparator10 = new javax.swing.JPopupMenu.Separator(); - MenuItemViewEditorFontInc = new javax.swing.JMenuItem(); - MenuItemViewEditorFontDec = new javax.swing.JMenuItem(); - jSeparator11 = new javax.swing.JPopupMenu.Separator(); - MenuItemViewLogFontInc = new javax.swing.JMenuItem(); - MenuItemViewLogFontDec = new javax.swing.JMenuItem(); - jSeparator12 = new javax.swing.JPopupMenu.Separator(); - MenuItemViewFontDefault = new javax.swing.JMenuItem(); - jSeparator17 = new javax.swing.JPopupMenu.Separator(); - MenuItemViewLF1 = new javax.swing.JRadioButtonMenuItem(); - MenuLinks = new javax.swing.JMenu(); - MenuItemLinksMicroPythonDoc = new javax.swing.JMenuItem(); - MenuItemLinksNodeMCUdoc = new javax.swing.JMenuItem(); - jSeparator15 = new javax.swing.JPopupMenu.Separator(); - MenuItemLinksBuyDevBoard = new javax.swing.JMenuItem(); - MenuItemLinksBuyESP8266 = new javax.swing.JMenuItem(); - MenuItemLinksBuyESD12 = new javax.swing.JMenuItem(); - MenuItemLinksBuyOther = new javax.swing.JMenuItem(); - jSeparator16 = new javax.swing.JPopupMenu.Separator(); - MenuItemLinksIoTmanager = new javax.swing.JMenuItem(); - jSeparator19 = new javax.swing.JPopupMenu.Separator(); - MenuItemLinksESPlorerForumEn = new javax.swing.JMenuItem(); - MenuItemLinksESPlorerForumRu = new javax.swing.JMenuItem(); - MenuItemLinksESPlorerLatest = new javax.swing.JMenuItem(); - MenuItemLinksESPlorerSource = new javax.swing.JMenuItem(); - MenuItemLinksESPlorerHome = new javax.swing.JMenuItem(); - jSeparator20 = new javax.swing.JPopupMenu.Separator(); - MenuItemLinksDonate = new javax.swing.JMenuItem(); - MenuHelp = new javax.swing.JMenu(); - MenuItemHelpAbout = new javax.swing.JMenuItem(); - - ContextMenuTerminal.addPopupMenuListener(new javax.swing.event.PopupMenuListener() { - public void popupMenuCanceled(javax.swing.event.PopupMenuEvent evt) { - } - public void popupMenuWillBecomeInvisible(javax.swing.event.PopupMenuEvent evt) { - } - public void popupMenuWillBecomeVisible(javax.swing.event.PopupMenuEvent evt) { - ContextMenuTerminalPopupMenuWillBecomeVisible(evt); - } - }); - - MenuItemTerminalClear.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F2, java.awt.event.InputEvent.CTRL_MASK)); - MenuItemTerminalClear.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/terminal_clear.png"))); // NOI18N - MenuItemTerminalClear.setText("Clear"); - MenuItemTerminalClear.setToolTipText(""); - MenuItemTerminalClear.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemTerminalClearActionPerformed(evt); - } - }); - ContextMenuTerminal.add(MenuItemTerminalClear); - - MenuItemTerminalCopy.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C, java.awt.event.InputEvent.CTRL_MASK)); - MenuItemTerminalCopy.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/copy.png"))); // NOI18N - MenuItemTerminalCopy.setText("Copy"); - MenuItemTerminalCopy.setToolTipText("Copy selected text to system clipboard"); - MenuItemTerminalCopy.setEnabled(false); - MenuItemTerminalCopy.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemTerminalCopyActionPerformed(evt); - } - }); - ContextMenuTerminal.add(MenuItemTerminalCopy); - ContextMenuTerminal.add(TerminalSeparator1); - - MenuItemTerminalFontInc.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_ADD, java.awt.event.InputEvent.CTRL_MASK)); - MenuItemTerminalFontInc.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/zoom in.png"))); // NOI18N - MenuItemTerminalFontInc.setText("Inc font size"); - MenuItemTerminalFontInc.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemTerminalFontIncActionPerformed(evt); - } - }); - ContextMenuTerminal.add(MenuItemTerminalFontInc); - - MenuItemTerminalFontDec.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_SUBTRACT, java.awt.event.InputEvent.CTRL_MASK)); - MenuItemTerminalFontDec.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/zoom out.png"))); // NOI18N - MenuItemTerminalFontDec.setText("Dec font size"); - MenuItemTerminalFontDec.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemTerminalFontDecActionPerformed(evt); - } - }); - ContextMenuTerminal.add(MenuItemTerminalFontDec); - ContextMenuTerminal.add(TerminalSeparator2); - - MenuItemTerminalReset.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/reset.png"))); // NOI18N - MenuItemTerminalReset.setText("Restart ESP module"); - MenuItemTerminalReset.setToolTipText("Send RESET command (firmware depended)"); - MenuItemTerminalReset.setEnabled(false); - MenuItemTerminalReset.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemTerminalResetActionPerformed(evt); - } - }); - ContextMenuTerminal.add(MenuItemTerminalReset); - - MenuItemTerminalFormat.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/file manager (delete).png"))); // NOI18N - MenuItemTerminalFormat.setText("Format ESP"); - MenuItemTerminalFormat.setToolTipText("Remove All files from ESP flash memory"); - MenuItemTerminalFormat.setEnabled(false); - MenuItemTerminalFormat.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemTerminalFormatActionPerformed(evt); - } - }); - ContextMenuTerminal.add(MenuItemTerminalFormat); - - MenuItemEditorUndo.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_Z, java.awt.event.InputEvent.CTRL_MASK)); - MenuItemEditorUndo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/undo1.png"))); // NOI18N - MenuItemEditorUndo.setText("Undo"); - MenuItemEditorUndo.setToolTipText(""); - MenuItemEditorUndo.setEnabled(false); - MenuItemEditorUndo.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemEditorUndoActionPerformed(evt); - } - }); - ContextMenuEditor.add(MenuItemEditorUndo); - - MenuItemEditorRedo.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F4, 0)); - MenuItemEditorRedo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/redo1.png"))); // NOI18N - MenuItemEditorRedo.setText("Redo"); - MenuItemEditorRedo.setToolTipText(""); - MenuItemEditorRedo.setEnabled(false); - MenuItemEditorRedo.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemEditorRedoActionPerformed(evt); - } - }); - ContextMenuEditor.add(MenuItemEditorRedo); - ContextMenuEditor.add(EditorSeparator1); - - MenuItemEditorSendSelected.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_B, java.awt.event.InputEvent.ALT_MASK)); - MenuItemEditorSendSelected.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/send_selected.png"))); // NOI18N - MenuItemEditorSendSelected.setText("Send selected to ESP"); - MenuItemEditorSendSelected.setToolTipText("Send selected fragment to ESP"); - MenuItemEditorSendSelected.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemEditorSendSelectedActionPerformed(evt); - } - }); - ContextMenuEditor.add(MenuItemEditorSendSelected); - - MenuItemEditorSendLine.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_L, java.awt.event.InputEvent.ALT_MASK)); - MenuItemEditorSendLine.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/run_line.png"))); // NOI18N - MenuItemEditorSendLine.setText("Send current line to ESP"); - MenuItemEditorSendLine.setToolTipText("Send current line to ESP"); - MenuItemEditorSendLine.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemEditorSendLineActionPerformed(evt); - } - }); - ContextMenuEditor.add(MenuItemEditorSendLine); - ContextMenuEditor.add(EditorSeparator); - - MenuItemEditorCut.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_X, java.awt.event.InputEvent.CTRL_MASK)); - MenuItemEditorCut.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/cut.png"))); // NOI18N - MenuItemEditorCut.setText("Cut"); - MenuItemEditorCut.setEnabled(false); - MenuItemEditorCut.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemEditorCutActionPerformed(evt); - } - }); - ContextMenuEditor.add(MenuItemEditorCut); - - MenuItemEditorCopy.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C, java.awt.event.InputEvent.CTRL_MASK)); - MenuItemEditorCopy.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/copy.png"))); // NOI18N - MenuItemEditorCopy.setText("Copy"); - MenuItemEditorCopy.setEnabled(false); - MenuItemEditorCopy.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemEditorCopyActionPerformed(evt); - } - }); - ContextMenuEditor.add(MenuItemEditorCopy); - - MenuItemEditorPaste.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_V, java.awt.event.InputEvent.CTRL_MASK)); - MenuItemEditorPaste.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/paste.png"))); // NOI18N - MenuItemEditorPaste.setText("Paste"); - MenuItemEditorPaste.setEnabled(false); - MenuItemEditorPaste.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemEditorPasteActionPerformed(evt); - } - }); - ContextMenuEditor.add(MenuItemEditorPaste); - ContextMenuEditor.add(EditorSeparator2); - - MenuItemEditorFontInc.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_ADD, java.awt.event.InputEvent.ALT_MASK)); - MenuItemEditorFontInc.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/zoom in.png"))); // NOI18N - MenuItemEditorFontInc.setText("Inc font size"); - MenuItemEditorFontInc.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemEditorFontIncActionPerformed(evt); - } - }); - ContextMenuEditor.add(MenuItemEditorFontInc); - - MenuItemEditorFontDec.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_SUBTRACT, java.awt.event.InputEvent.ALT_MASK)); - MenuItemEditorFontDec.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/zoom out.png"))); // NOI18N - MenuItemEditorFontDec.setText("Dec font size"); - MenuItemEditorFontDec.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemEditorFontDecActionPerformed(evt); - } - }); - ContextMenuEditor.add(MenuItemEditorFontDec); - - MenuItemLogClear.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F1, java.awt.event.InputEvent.CTRL_MASK)); - MenuItemLogClear.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/backup_delete.png"))); // NOI18N - MenuItemLogClear.setText("Clear log"); - MenuItemLogClear.setToolTipText(""); - MenuItemLogClear.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemLogClearActionPerformed(evt); - } - }); - ContextMenuLog.add(MenuItemLogClear); - - MenuItemLogClose.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_L, java.awt.event.InputEvent.CTRL_MASK)); - MenuItemLogClose.setText("Hide Log"); - MenuItemLogClose.setToolTipText(""); - MenuItemLogClose.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemLogCloseActionPerformed(evt); - } - }); - ContextMenuLog.add(MenuItemLogClose); - ContextMenuLog.add(LogSeparator); - - MenuItemLogFontInc.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_ADD, java.awt.event.InputEvent.ALT_MASK | java.awt.event.InputEvent.CTRL_MASK)); - MenuItemLogFontInc.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/zoom in.png"))); // NOI18N - MenuItemLogFontInc.setText("Inc font size"); - MenuItemLogFontInc.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemLogFontIncActionPerformed(evt); - } - }); - ContextMenuLog.add(MenuItemLogFontInc); - - MenuItemLogFontDec.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_SUBTRACT, java.awt.event.InputEvent.ALT_MASK | java.awt.event.InputEvent.CTRL_MASK)); - MenuItemLogFontDec.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/zoom out.png"))); // NOI18N - MenuItemLogFontDec.setText("Dec font size"); - MenuItemLogFontDec.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemLogFontDecActionPerformed(evt); - } - }); - ContextMenuLog.add(MenuItemLogFontDec); - - About.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); - About.setTitle("About"); - About.setIconImage(null); - About.setMinimumSize(new java.awt.Dimension(406, 250)); - About.setModalityType(java.awt.Dialog.ModalityType.DOCUMENT_MODAL); - About.setResizable(false); - About.addWindowFocusListener(new java.awt.event.WindowFocusListener() { - public void windowGainedFocus(java.awt.event.WindowEvent evt) { - } - public void windowLostFocus(java.awt.event.WindowEvent evt) { - AboutWindowLostFocus(evt); - } - }); - About.addFocusListener(new java.awt.event.FocusAdapter() { - public void focusLost(java.awt.event.FocusEvent evt) { - AboutFocusLost(evt); - } - }); - - AppName.setFont(new java.awt.Font("Tahoma", 1, 24)); // NOI18N - AppName.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - AppName.setText("ESPlorer"); - AppName.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); - - Version.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N - Version.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - Version.setText(version); - Version.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); - - Donate.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/donate.gif"))); // NOI18N - Donate.setToolTipText("If you'd like to make a one-time donation to ESPlorer author, you can use PayPal to make it fast and easy."); - Donate.setMaximumSize(new java.awt.Dimension(200, 55)); - Donate.setMinimumSize(new java.awt.Dimension(200, 55)); - Donate.setPreferredSize(new java.awt.Dimension(200, 55)); - Donate.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - DonateActionPerformed(evt); - } - }); - - Author.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - Author.setText("by Victor Brutskiy (4refr0nt)"); - Author.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); - - HomePage.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/wifi.png"))); // NOI18N - HomePage.setText("Visit HomePage"); - HomePage.setToolTipText(""); - HomePage.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT); - HomePage.setMaximumSize(new java.awt.Dimension(200, 55)); - HomePage.setMinimumSize(new java.awt.Dimension(200, 55)); - HomePage.setPreferredSize(new java.awt.Dimension(200, 55)); - HomePage.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - HomePageActionPerformed(evt); - } - }); - - Author1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - Author1.setText("4refr0nt@gmail.com"); - Author1.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); - - javax.swing.GroupLayout AboutLayout = new javax.swing.GroupLayout(About.getContentPane()); - About.getContentPane().setLayout(AboutLayout); - AboutLayout.setHorizontalGroup( - AboutLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(Author, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(AppName, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(Version, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(AboutLayout.createSequentialGroup() - .addComponent(Donate, javax.swing.GroupLayout.DEFAULT_SIZE, 210, Short.MAX_VALUE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(HomePage, javax.swing.GroupLayout.PREFERRED_SIZE, 212, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addComponent(Author1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - ); - AboutLayout.setVerticalGroup( - AboutLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(AboutLayout.createSequentialGroup() - .addContainerGap(44, Short.MAX_VALUE) - .addComponent(AppName, javax.swing.GroupLayout.PREFERRED_SIZE, 42, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(18, 18, 18) - .addComponent(Version) - .addGap(18, 18, 18) - .addComponent(Author) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(Author1) - .addGap(24, 24, 24) - .addGroup(AboutLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(Donate, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(HomePage, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) - ); - - ContextMenuESPFileLUA.addPopupMenuListener(new javax.swing.event.PopupMenuListener() { - public void popupMenuCanceled(javax.swing.event.PopupMenuEvent evt) { - } - public void popupMenuWillBecomeInvisible(javax.swing.event.PopupMenuEvent evt) { - } - public void popupMenuWillBecomeVisible(javax.swing.event.PopupMenuEvent evt) { - ContextMenuESPFileLUAPopupMenuWillBecomeVisible(evt); - } - }); - - MenuItemESPFileDo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/play.png"))); // NOI18N - MenuItemESPFileDo.setText("Do file"); - MenuItemESPFileDo.setToolTipText(""); - MenuItemESPFileDo.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemESPFileDoActionPerformed(evt); - } - }); - ContextMenuESPFileLUA.add(MenuItemESPFileDo); - ContextMenuESPFileLUA.add(TerminalSeparator3); - - MenuItemESPFileDelete.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/file_remove.png"))); // NOI18N - MenuItemESPFileDelete.setText("Delete file"); - MenuItemESPFileDelete.setToolTipText(""); - MenuItemESPFileDelete.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemESPFileDeleteActionPerformed(evt); - } - }); - ContextMenuESPFileLUA.add(MenuItemESPFileDelete); - - ShowFileManager.setSelected(true); - ShowFileManager.setText("Show/Hide FileManager panel"); - ShowFileManager.setToolTipText("Look at View for enabling"); - ShowFileManager.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - ShowFileManagerItemStateChanged(evt); - } - }); - ContextMenuFileManager.add(ShowFileManager); - - setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE); - setTitle("ESPlorer"); - setAutoRequestFocus(false); - setBounds(new java.awt.Rectangle(0, 0, 0, 0)); - setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR)); - setFocusCycleRoot(false); - setLocationByPlatform(true); - setMinimumSize(new java.awt.Dimension(100, 100)); - setName("ESPlorer"); // NOI18N - setPreferredSize(new java.awt.Dimension(1024, 768)); - addFocusListener(new java.awt.event.FocusAdapter() { - public void focusGained(java.awt.event.FocusEvent evt) { - formFocusGained(evt); - } - }); - addComponentListener(new java.awt.event.ComponentAdapter() { - public void componentResized(java.awt.event.ComponentEvent evt) { - formComponentResized(evt); - } - }); - addWindowFocusListener(new java.awt.event.WindowFocusListener() { - public void windowGainedFocus(java.awt.event.WindowEvent evt) { - formWindowGainedFocus(evt); - } - public void windowLostFocus(java.awt.event.WindowEvent evt) { - } - }); - addPropertyChangeListener(new java.beans.PropertyChangeListener() { - public void propertyChange(java.beans.PropertyChangeEvent evt) { - formPropertyChange(evt); - } - }); - addWindowListener(new java.awt.event.WindowAdapter() { - public void windowClosed(java.awt.event.WindowEvent evt) { - formWindowClosed(evt); - } - public void windowClosing(java.awt.event.WindowEvent evt) { - formWindowClosing(evt); - } - public void windowOpened(java.awt.event.WindowEvent evt) { - formWindowOpened(evt); - } - }); - - HorizontSplit.setDividerLocation(550); - HorizontSplit.setMinimumSize(new java.awt.Dimension(100, 100)); - HorizontSplit.setPreferredSize(new java.awt.Dimension(768, 567)); - - LeftBasePane.setOpaque(true); - - LeftTab.setTabLayoutPolicy(javax.swing.JTabbedPane.SCROLL_TAB_LAYOUT); - LeftTab.setToolTipText(""); - LeftTab.setAlignmentX(0.0F); - LeftTab.setAlignmentY(0.0F); - LeftTab.setAutoscrolls(true); - LeftTab.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR)); - LeftTab.setMinimumSize(new java.awt.Dimension(100, 100)); - LeftTab.setOpaque(true); - LeftTab.addChangeListener(new javax.swing.event.ChangeListener() { - public void stateChanged(javax.swing.event.ChangeEvent evt) { - LeftTabStateChanged(evt); - } - }); - - NodeMCU.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED)); - NodeMCU.setMinimumSize(new java.awt.Dimension(100, 100)); - NodeMCU.setPreferredSize(new java.awt.Dimension(461, 537)); - NodeMCU.addFocusListener(new java.awt.event.FocusAdapter() { - public void focusGained(java.awt.event.FocusEvent evt) { - NodeMCUFocusGained(evt); - } - }); - NodeMCU.addComponentListener(new java.awt.event.ComponentAdapter() { - public void componentShown(java.awt.event.ComponentEvent evt) { - NodeMCUComponentShown(evt); - } - }); - - TextTab.setBorder(javax.swing.BorderFactory.createEtchedBorder()); - TextTab.setComponentPopupMenu(ContextMenuEditor); - TextTab.setMinimumSize(new java.awt.Dimension(462, 365)); - TextTab.setOpaque(true); - TextTab.setPreferredSize(new java.awt.Dimension(462, 365)); - TextTab.addChangeListener(new javax.swing.event.ChangeListener() { - public void stateChanged(javax.swing.event.ChangeEvent evt) { - TextTabStateChanged(evt); - } - }); - - SriptsTab.setToolTipText(""); - SriptsTab.setMinimumSize(new java.awt.Dimension(460, 350)); - SriptsTab.setOpaque(true); - - FilesToolBar.setFloatable(false); - FilesToolBar.setRollover(true); - FilesToolBar.setAlignmentY(0.5F); - FilesToolBar.setMaximumSize(new java.awt.Dimension(1000, 40)); - FilesToolBar.setMinimumSize(new java.awt.Dimension(321, 40)); - FilesToolBar.setPreferredSize(new java.awt.Dimension(321, 40)); - - ButtonFileNew.setAction(MenuItemFileNew.getAction()); - ButtonFileNew.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonFileNew.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/document.png"))); // NOI18N - ButtonFileNew.setToolTipText("New file"); - ButtonFileNew.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); - ButtonFileNew.setMaximumSize(new java.awt.Dimension(40, 40)); - ButtonFileNew.setMinimumSize(new java.awt.Dimension(40, 40)); - ButtonFileNew.setPreferredSize(new java.awt.Dimension(40, 40)); - ButtonFileNew.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); - - org.jdesktop.beansbinding.Binding binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, MenuItemFileNew, org.jdesktop.beansbinding.ELProperty.create("${enabled}"), ButtonFileNew, org.jdesktop.beansbinding.BeanProperty.create("enabled")); - bindingGroup.addBinding(binding); - - ButtonFileNew.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonFileNewActionPerformed(evt); - } - }); - FilesToolBar.add(ButtonFileNew); - - ButtonFileOpen.setAction(MenuItemFileOpen.getAction()); - ButtonFileOpen.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonFileOpen.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/folder open.png"))); // NOI18N - ButtonFileOpen.setText("Open"); - ButtonFileOpen.setToolTipText("Open file from disk"); - ButtonFileOpen.setHideActionText(true); - ButtonFileOpen.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); - ButtonFileOpen.setMaximumSize(new java.awt.Dimension(40, 40)); - ButtonFileOpen.setMinimumSize(new java.awt.Dimension(40, 40)); - ButtonFileOpen.setPreferredSize(new java.awt.Dimension(40, 40)); - ButtonFileOpen.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); - ButtonFileOpen.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonFileOpenActionPerformed(evt); - } - }); - FilesToolBar.add(ButtonFileOpen); - - ButtonFileReload.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonFileReload.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/refresh.png"))); // NOI18N - ButtonFileReload.setText("Reload"); - ButtonFileReload.setToolTipText("Reload file from disk (for use with external editor)"); - ButtonFileReload.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); - ButtonFileReload.setMaximumSize(new java.awt.Dimension(40, 40)); - ButtonFileReload.setMinimumSize(new java.awt.Dimension(40, 40)); - ButtonFileReload.setPreferredSize(new java.awt.Dimension(40, 40)); - ButtonFileReload.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); - - binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, MenuItemFileReload, org.jdesktop.beansbinding.ELProperty.create("${enabled}"), ButtonFileReload, org.jdesktop.beansbinding.BeanProperty.create("enabled")); - bindingGroup.addBinding(binding); - - ButtonFileReload.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonFileReloadActionPerformed(evt); - } - }); - FilesToolBar.add(ButtonFileReload); - - ButtonFileSave.setAction(MenuItemFileSave.getAction()); - ButtonFileSave.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonFileSave.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/save.png"))); // NOI18N - ButtonFileSave.setText("Save"); - ButtonFileSave.setToolTipText("Save file to disk"); - ButtonFileSave.setHideActionText(true); - ButtonFileSave.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); - ButtonFileSave.setMaximumSize(new java.awt.Dimension(40, 40)); - ButtonFileSave.setMinimumSize(new java.awt.Dimension(40, 40)); - ButtonFileSave.setPreferredSize(new java.awt.Dimension(40, 40)); - ButtonFileSave.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); - ButtonFileSave.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonFileSaveActionPerformed(evt); - } - }); - FilesToolBar.add(ButtonFileSave); - - ButtonFileSaveAll.setAction(MenuItemFileSave.getAction()); - ButtonFileSaveAll.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonFileSaveAll.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/save_all.png"))); // NOI18N - ButtonFileSaveAll.setText("SaveAll"); - ButtonFileSaveAll.setToolTipText("Save all open files to disk"); - ButtonFileSaveAll.setEnabled(false); - ButtonFileSaveAll.setFocusable(false); - ButtonFileSaveAll.setHideActionText(true); - ButtonFileSaveAll.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); - ButtonFileSaveAll.setMaximumSize(new java.awt.Dimension(40, 40)); - ButtonFileSaveAll.setMinimumSize(new java.awt.Dimension(40, 40)); - ButtonFileSaveAll.setPreferredSize(new java.awt.Dimension(40, 40)); - ButtonFileSaveAll.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); - ButtonFileSaveAll.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonFileSaveAllActionPerformed(evt); - } - }); - FilesToolBar.add(ButtonFileSaveAll); - - ButtonFileClose.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonFileClose.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/folder closed.png"))); // NOI18N - ButtonFileClose.setText("Close"); - ButtonFileClose.setToolTipText("Close file"); - ButtonFileClose.setHideActionText(true); - ButtonFileClose.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); - ButtonFileClose.setMaximumSize(new java.awt.Dimension(40, 40)); - ButtonFileClose.setMinimumSize(new java.awt.Dimension(40, 40)); - ButtonFileClose.setPreferredSize(new java.awt.Dimension(40, 40)); - ButtonFileClose.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); - - binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, MenuItemFileClose, org.jdesktop.beansbinding.ELProperty.create("${enabled}"), ButtonFileClose, org.jdesktop.beansbinding.BeanProperty.create("enabled")); - bindingGroup.addBinding(binding); - - ButtonFileClose.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonFileCloseActionPerformed(evt); - } - }); - FilesToolBar.add(ButtonFileClose); - FilesToolBar.add(jSeparator1); - - ButtonUndo.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonUndo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/undo1.png"))); // NOI18N - ButtonUndo.setText("Undo"); - ButtonUndo.setToolTipText("Undo last action"); - ButtonUndo.setEnabled(false); - ButtonUndo.setFocusable(false); - ButtonUndo.setHideActionText(true); - ButtonUndo.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); - ButtonUndo.setMaximumSize(new java.awt.Dimension(40, 40)); - ButtonUndo.setMinimumSize(new java.awt.Dimension(40, 40)); - ButtonUndo.setPreferredSize(new java.awt.Dimension(40, 40)); - ButtonUndo.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); - ButtonUndo.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonUndoActionPerformed(evt); - } - }); - FilesToolBar.add(ButtonUndo); - - ButtonRedo.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonRedo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/redo1.png"))); // NOI18N - ButtonRedo.setText("Redo"); - ButtonRedo.setToolTipText("Redo last action"); - ButtonRedo.setEnabled(false); - ButtonRedo.setFocusable(false); - ButtonRedo.setHideActionText(true); - ButtonRedo.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); - ButtonRedo.setMaximumSize(new java.awt.Dimension(40, 40)); - ButtonRedo.setMinimumSize(new java.awt.Dimension(40, 40)); - ButtonRedo.setPreferredSize(new java.awt.Dimension(40, 40)); - ButtonRedo.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); - ButtonRedo.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonRedoActionPerformed(evt); - } - }); - FilesToolBar.add(ButtonRedo); - FilesToolBar.add(jSeparator8); - - ButtonCut.setAction(MenuItemEditCut.getAction()); - ButtonCut.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonCut.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/cut.png"))); // NOI18N - ButtonCut.setText("Cut"); - ButtonCut.setToolTipText("Cut"); - ButtonCut.setEnabled(false); - ButtonCut.setHideActionText(true); - ButtonCut.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); - ButtonCut.setMaximumSize(new java.awt.Dimension(40, 40)); - ButtonCut.setMinimumSize(new java.awt.Dimension(40, 40)); - ButtonCut.setPreferredSize(new java.awt.Dimension(40, 40)); - ButtonCut.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); - ButtonCut.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonCutActionPerformed(evt); - } - }); - FilesToolBar.add(ButtonCut); - - ButtonCopy.setAction(MenuItemEditCopy.getAction()); - ButtonCopy.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonCopy.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/copy.png"))); // NOI18N - ButtonCopy.setText("Copy"); - ButtonCopy.setToolTipText("Copy"); - ButtonCopy.setEnabled(false); - ButtonCopy.setHideActionText(true); - ButtonCopy.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); - ButtonCopy.setMargin(new java.awt.Insets(2, 2, 2, 2)); - ButtonCopy.setMaximumSize(new java.awt.Dimension(40, 40)); - ButtonCopy.setMinimumSize(new java.awt.Dimension(40, 40)); - ButtonCopy.setPreferredSize(new java.awt.Dimension(40, 40)); - ButtonCopy.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); - ButtonCopy.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonCopyActionPerformed(evt); - } - }); - FilesToolBar.add(ButtonCopy); - - ButtonPaste.setAction(MenuItemEditPaste.getAction()); - ButtonPaste.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonPaste.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/paste.png"))); // NOI18N - ButtonPaste.setText("Paste"); - ButtonPaste.setToolTipText("Paste"); - ButtonPaste.setEnabled(false); - ButtonPaste.setHideActionText(true); - ButtonPaste.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); - ButtonPaste.setMaximumSize(new java.awt.Dimension(40, 40)); - ButtonPaste.setMinimumSize(new java.awt.Dimension(40, 40)); - ButtonPaste.setPreferredSize(new java.awt.Dimension(40, 40)); - ButtonPaste.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); - ButtonPaste.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonPasteActionPerformed(evt); - } - }); - FilesToolBar.add(ButtonPaste); - FilesToolBar.add(jSeparator6); - - ButtonSendSelected.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonSendSelected.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/send_selected.png"))); // NOI18N - ButtonSendSelected.setToolTipText("Send selected block to ESP"); - ButtonSendSelected.setHideActionText(true); - ButtonSendSelected.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); - ButtonSendSelected.setLabel("Block"); - ButtonSendSelected.setMaximumSize(new java.awt.Dimension(40, 40)); - ButtonSendSelected.setMinimumSize(new java.awt.Dimension(40, 40)); - ButtonSendSelected.setPreferredSize(new java.awt.Dimension(40, 40)); - ButtonSendSelected.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); - - binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, MenuItemEditorSendSelected, org.jdesktop.beansbinding.ELProperty.create("${enabled}"), ButtonSendSelected, org.jdesktop.beansbinding.BeanProperty.create("enabled")); - bindingGroup.addBinding(binding); - - ButtonSendSelected.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonSendSelectedActionPerformed(evt); - } - }); - FilesToolBar.add(ButtonSendSelected); - - ButtonSendLine.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonSendLine.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/run_line.png"))); // NOI18N - ButtonSendLine.setText("Line"); - ButtonSendLine.setToolTipText("Send current line to ESP"); - ButtonSendLine.setFocusable(false); - ButtonSendLine.setHideActionText(true); - ButtonSendLine.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); - ButtonSendLine.setMaximumSize(new java.awt.Dimension(40, 40)); - ButtonSendLine.setMinimumSize(new java.awt.Dimension(40, 40)); - ButtonSendLine.setPreferredSize(new java.awt.Dimension(40, 40)); - ButtonSendLine.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); - ButtonSendLine.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonSendLineActionPerformed(evt); - } - }); - FilesToolBar.add(ButtonSendLine); - - FilesTabbedPane.setOpaque(true); - FilesTabbedPane.addChangeListener(new javax.swing.event.ChangeListener() { - public void stateChanged(javax.swing.event.ChangeEvent evt) { - FilesTabbedPaneStateChanged(evt); - } - }); - - FileLayeredPane.addFocusListener(new java.awt.event.FocusAdapter() { - public void focusGained(java.awt.event.FocusEvent evt) { - FileLayeredPaneFocusGained(evt); - } - }); - - TextScroll.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED); - TextScroll.setViewportBorder(javax.swing.BorderFactory.createEtchedBorder()); - TextScroll.setFoldIndicatorEnabled(true); - TextScroll.setLineNumbersEnabled(true); - TextScroll.setViewportView(TextEditor); - - TextEditor.setColumns(20); - TextEditor.setRows(5); - TextEditor.setTabSize(4); - TextEditor.setCodeFoldingEnabled(true); - TextEditor.setDragEnabled(false); - TextEditor.setFadeCurrentLineHighlight(true); - TextEditor.setPaintMarkOccurrencesBorder(true); - TextEditor.setPaintMatchedBracketPair(true); - TextEditor.setPopupMenu(ContextMenuEditor); - TextEditor.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_LUA); - TextEditor.addCaretListener(new javax.swing.event.CaretListener() { - public void caretUpdate(javax.swing.event.CaretEvent evt) { - TextEditorCaretUpdate(evt); - } - }); - TextEditor.addFocusListener(new java.awt.event.FocusAdapter() { - public void focusGained(java.awt.event.FocusEvent evt) { - TextEditorFocusGained(evt); - } - }); - TextEditor.addActiveLineRangeListener(new org.fife.ui.rsyntaxtextarea.ActiveLineRangeListener() { - public void activeLineRangeChanged(org.fife.ui.rsyntaxtextarea.ActiveLineRangeEvent evt) { - TextEditorActiveLineRangeChanged(evt); - } - }); - TextEditor.addInputMethodListener(new java.awt.event.InputMethodListener() { - public void caretPositionChanged(java.awt.event.InputMethodEvent evt) { - TextEditorCaretPositionChanged(evt); - } - public void inputMethodTextChanged(java.awt.event.InputMethodEvent evt) { - TextEditorInputMethodTextChanged(evt); - } - }); - TextEditor.addKeyListener(new java.awt.event.KeyAdapter() { - public void keyTyped(java.awt.event.KeyEvent evt) { - TextEditorKeyTyped(evt); - } - }); - TextScroll.setViewportView(TextEditor); - - FileLayeredPane.setLayer(TextScroll, javax.swing.JLayeredPane.DEFAULT_LAYER); - - javax.swing.GroupLayout FileLayeredPaneLayout = new javax.swing.GroupLayout(FileLayeredPane); - FileLayeredPane.setLayout(FileLayeredPaneLayout); - FileLayeredPaneLayout.setHorizontalGroup( - FileLayeredPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(TextScroll, javax.swing.GroupLayout.DEFAULT_SIZE, 526, Short.MAX_VALUE) - ); - FileLayeredPaneLayout.setVerticalGroup( - FileLayeredPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(TextScroll, javax.swing.GroupLayout.DEFAULT_SIZE, 432, Short.MAX_VALUE) - ); - - FilesTabbedPane.addTab("NewFile", FileLayeredPane); - - LeftExtraButtons.setEnabled(false); - LeftExtraButtons.setOpaque(true); - LeftExtraButtons.setPreferredSize(new java.awt.Dimension(431, 66)); - LeftExtraButtons.setLayout(new java.awt.FlowLayout()); - - FileDo1.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - FileDo1.setText("Save&Run"); - FileDo1.setToolTipText("Do lua script"); - FileDo1.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); - FileDo1.setIconTextGap(8); - FileDo1.setMargin(new java.awt.Insets(2, 2, 2, 2)); - FileDo1.setMaximumSize(new java.awt.Dimension(127, 30)); - FileDo1.setMinimumSize(new java.awt.Dimension(127, 30)); - FileDo1.setPreferredSize(new java.awt.Dimension(127, 30)); - FileDo1.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - FileDo1ActionPerformed(evt); - } - }); - LeftExtraButtons.add(FileDo1); - - FileCompile.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - FileCompile.setText("Save&Compile"); - FileCompile.setToolTipText("Recompile lua script and do lua bytecode lc file"); - FileCompile.setIconTextGap(2); - FileCompile.setMargin(new java.awt.Insets(2, 2, 2, 2)); - FileCompile.setMaximumSize(new java.awt.Dimension(127, 30)); - FileCompile.setMinimumSize(new java.awt.Dimension(127, 30)); - FileCompile.setPreferredSize(new java.awt.Dimension(127, 30)); - FileCompile.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - FileCompileActionPerformed(evt); - } - }); - LeftExtraButtons.add(FileCompile); - - FileSaveCompileDoLC.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - FileSaveCompileDoLC.setText("Save&Compile&RunLC"); - FileSaveCompileDoLC.setIconTextGap(0); - FileSaveCompileDoLC.setMargin(new java.awt.Insets(2, 0, 2, 0)); - FileSaveCompileDoLC.setMaximumSize(new java.awt.Dimension(127, 30)); - FileSaveCompileDoLC.setMinimumSize(new java.awt.Dimension(127, 30)); - FileSaveCompileDoLC.setPreferredSize(new java.awt.Dimension(127, 30)); - FileSaveCompileDoLC.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - FileSaveCompileDoLCActionPerformed(evt); - } - }); - LeftExtraButtons.add(FileSaveCompileDoLC); - - FileUploadBin.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - FileUploadBin.setText("Save As init"); - FileUploadBin.setToolTipText("Save to ESP as init.lua"); - FileUploadBin.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); - FileUploadBin.setIconTextGap(0); - FileUploadBin.setMargin(new java.awt.Insets(2, 0, 2, 0)); - FileUploadBin.setMaximumSize(new java.awt.Dimension(127, 30)); - FileUploadBin.setMinimumSize(new java.awt.Dimension(127, 30)); - FileUploadBin.setPreferredSize(new java.awt.Dimension(127, 30)); - FileUploadBin.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - FileUploadBinActionPerformed(evt); - } - }); - LeftExtraButtons.add(FileUploadBin); - - FileCompileDoLC.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - FileCompileDoLC.setText("Save&Compile All"); - FileCompileDoLC.setActionCommand("Save&CompileAll"); - FileCompileDoLC.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); - FileCompileDoLC.setIconTextGap(0); - FileCompileDoLC.setMargin(new java.awt.Insets(2, 0, 2, 0)); - FileCompileDoLC.setMaximumSize(new java.awt.Dimension(127, 30)); - FileCompileDoLC.setMinimumSize(new java.awt.Dimension(127, 30)); - FileCompileDoLC.setPreferredSize(new java.awt.Dimension(127, 30)); - FileCompileDoLC.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - FileCompileDoLCActionPerformed(evt); - } - }); - LeftExtraButtons.add(FileCompileDoLC); - - FileCompileDoLC2.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - FileCompileDoLC2.setText("View on ESP"); - FileCompileDoLC2.setMargin(new java.awt.Insets(2, 2, 2, 2)); - FileCompileDoLC2.setMaximumSize(new java.awt.Dimension(127, 30)); - FileCompileDoLC2.setMinimumSize(new java.awt.Dimension(127, 30)); - FileCompileDoLC2.setPreferredSize(new java.awt.Dimension(127, 30)); - FileCompileDoLC2.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - FileCompileDoLC2ActionPerformed(evt); - } - }); - LeftExtraButtons.add(FileCompileDoLC2); - - FileCompileDoLC3.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - FileCompileDoLC3.setText("View on ESP"); - FileCompileDoLC3.setMargin(new java.awt.Insets(2, 2, 2, 2)); - FileCompileDoLC3.setMaximumSize(new java.awt.Dimension(127, 30)); - FileCompileDoLC3.setMinimumSize(new java.awt.Dimension(127, 30)); - FileCompileDoLC3.setPreferredSize(new java.awt.Dimension(127, 30)); - FileCompileDoLC3.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - FileCompileDoLC3ActionPerformed(evt); - } - }); - LeftExtraButtons.add(FileCompileDoLC3); - - FileCompile1.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - FileCompile1.setText("Save&Compile"); - FileCompile1.setToolTipText("Recompile lua script and do lua bytecode lc file"); - FileCompile1.setIconTextGap(2); - FileCompile1.setMargin(new java.awt.Insets(2, 2, 2, 2)); - FileCompile1.setMaximumSize(new java.awt.Dimension(127, 30)); - FileCompile1.setMinimumSize(new java.awt.Dimension(127, 30)); - FileCompile1.setPreferredSize(new java.awt.Dimension(127, 30)); - FileCompile1.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - FileCompile1ActionPerformed(evt); - } - }); - LeftExtraButtons.add(FileCompile1); - - Busy.setBackground(new java.awt.Color(0, 153, 0)); - Busy.setForeground(new java.awt.Color(255, 255, 255)); - Busy.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - Busy.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/led_grey.png"))); // NOI18N - Busy.setText("IDLE"); - Busy.setOpaque(true); - - FilePathLabel.setText("jLabel1"); - - ProgressBar.setToolTipText(""); - ProgressBar.setOpaque(true); - ProgressBar.setStringPainted(true); - - LeftMainButtons.setOpaque(true); - LeftMainButtons.setLayout(new java.awt.FlowLayout()); - - FileSaveESP.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/move.png"))); // NOI18N - FileSaveESP.setText("Save to ESP"); - FileSaveESP.setToolTipText("Send file to ESP and save into flash memory"); - FileSaveESP.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - FileSaveESP.setIconTextGap(8); - FileSaveESP.setMargin(new java.awt.Insets(2, 2, 2, 2)); - FileSaveESP.setMaximumSize(new java.awt.Dimension(127, 30)); - FileSaveESP.setMinimumSize(new java.awt.Dimension(127, 30)); - FileSaveESP.setPreferredSize(new java.awt.Dimension(127, 30)); - FileSaveESP.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - FileSaveESPActionPerformed(evt); - } - }); - LeftMainButtons.add(FileSaveESP); - - FileSendESP.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/script_send.png"))); // NOI18N - FileSendESP.setText("Send to ESP"); - FileSendESP.setToolTipText("Send file to ESP and run \"line by line\""); - FileSendESP.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - FileSendESP.setIconTextGap(8); - FileSendESP.setMargin(new java.awt.Insets(2, 2, 2, 2)); - FileSendESP.setMaximumSize(new java.awt.Dimension(127, 30)); - FileSendESP.setMinimumSize(new java.awt.Dimension(127, 30)); - FileSendESP.setPreferredSize(new java.awt.Dimension(127, 30)); - FileSendESP.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - FileSendESPActionPerformed(evt); - } - }); - LeftMainButtons.add(FileSendESP); - - FileDo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/play.png"))); // NOI18N - FileDo.setText("Run"); - FileDo.setToolTipText("Execute lua script via \"dofile\" command"); - FileDo.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - FileDo.setIconTextGap(8); - FileDo.setMargin(new java.awt.Insets(2, 2, 2, 2)); - FileDo.setMaximumSize(new java.awt.Dimension(127, 30)); - FileDo.setMinimumSize(new java.awt.Dimension(127, 30)); - FileDo.setPreferredSize(new java.awt.Dimension(127, 30)); - FileDo.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - FileDoActionPerformed(evt); - } - }); - LeftMainButtons.add(FileDo); - - FilesUpload.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/uploadLUA.png"))); // NOI18N - FilesUpload.setText("Upload ..."); - FilesUpload.setToolTipText("Upload file from disk to ESP flash memory"); - FilesUpload.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - FilesUpload.setIconTextGap(8); - FilesUpload.setMargin(new java.awt.Insets(2, 2, 2, 2)); - FilesUpload.setMaximumSize(new java.awt.Dimension(127, 30)); - FilesUpload.setMinimumSize(new java.awt.Dimension(127, 30)); - FilesUpload.setPreferredSize(new java.awt.Dimension(127, 30)); - FilesUpload.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - FilesUploadActionPerformed(evt); - } - }); - LeftMainButtons.add(FilesUpload); - - SriptsTab.setLayer(FilesToolBar, javax.swing.JLayeredPane.PALETTE_LAYER); - SriptsTab.setLayer(FilesTabbedPane, javax.swing.JLayeredPane.DEFAULT_LAYER); - SriptsTab.setLayer(LeftExtraButtons, javax.swing.JLayeredPane.DEFAULT_LAYER); - SriptsTab.setLayer(Busy, javax.swing.JLayeredPane.DEFAULT_LAYER); - SriptsTab.setLayer(FilePathLabel, javax.swing.JLayeredPane.DEFAULT_LAYER); - SriptsTab.setLayer(ProgressBar, javax.swing.JLayeredPane.DEFAULT_LAYER); - SriptsTab.setLayer(LeftMainButtons, javax.swing.JLayeredPane.DEFAULT_LAYER); - - javax.swing.GroupLayout SriptsTabLayout = new javax.swing.GroupLayout(SriptsTab); - SriptsTab.setLayout(SriptsTabLayout); - SriptsTabLayout.setHorizontalGroup( - SriptsTabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(FilesTabbedPane, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) - .addComponent(FilesToolBar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(SriptsTabLayout.createSequentialGroup() - .addGroup(SriptsTabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) - .addComponent(ProgressBar, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(javax.swing.GroupLayout.Alignment.LEADING, SriptsTabLayout.createSequentialGroup() - .addGap(6, 6, 6) - .addComponent(Busy, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(FilePathLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addComponent(LeftExtraButtons, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 531, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(LeftMainButtons, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 531, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGap(0, 0, Short.MAX_VALUE)) - ); - SriptsTabLayout.setVerticalGroup( - SriptsTabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(SriptsTabLayout.createSequentialGroup() - .addComponent(FilesToolBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(FilesTabbedPane) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(ProgressBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(SriptsTabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(Busy) - .addComponent(FilePathLabel)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(LeftExtraButtons, javax.swing.GroupLayout.PREFERRED_SIZE, 75, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(LeftMainButtons, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - ); - - TextTab.addTab("Scripts", SriptsTab); - SriptsTab.getAccessibleContext().setAccessibleName("Files"); - - NodeMCUCommands.setOpaque(true); - - CommandsMicroPython.setBorder(javax.swing.BorderFactory.createTitledBorder("MicroPython Commands")); - - javax.swing.GroupLayout CommandsMicroPythonLayout = new javax.swing.GroupLayout(CommandsMicroPython); - CommandsMicroPython.setLayout(CommandsMicroPythonLayout); - CommandsMicroPythonLayout.setHorizontalGroup( - CommandsMicroPythonLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGap(0, 0, Short.MAX_VALUE) - ); - CommandsMicroPythonLayout.setVerticalGroup( - CommandsMicroPythonLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGap(0, 695, Short.MAX_VALUE) - ); - - CommandsNodeMCU.setBorder(javax.swing.BorderFactory.createTitledBorder("NodeMCU Commands")); - - cmdNodeRestart.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdNodeRestart.setText("Restart ESP"); - cmdNodeRestart.setToolTipText(""); - cmdNodeRestart.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdNodeRestart.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdNodeRestart.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdNodeRestart.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdNodeRestart.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdNodeRestartActionPerformed(evt); - } - }); - - cmdTimerStop.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdTimerStop.setText("tmr.stop"); - cmdTimerStop.setToolTipText(""); - cmdTimerStop.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdTimerStop.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdTimerStop.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdTimerStop.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdTimerStop.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdTimerStopActionPerformed(evt); - } - }); - - cmdNodeChipID.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdNodeChipID.setText("Chip ID"); - cmdNodeChipID.setToolTipText(""); - cmdNodeChipID.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdNodeChipID.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdNodeChipID.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdNodeChipID.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdNodeChipID.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdNodeChipIDActionPerformed(evt); - } - }); - - TimerNumber.setMaximumRowCount(7); - TimerNumber.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "0", "1", "2", "3", "4", "5", "6" })); - TimerNumber.setToolTipText("Timer number (0-6)"); - - cmdNodeHeap.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdNodeHeap.setText("Heap"); - cmdNodeHeap.setToolTipText(""); - cmdNodeHeap.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdNodeHeap.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdNodeHeap.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdNodeHeap.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdNodeHeap.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdNodeHeapActionPerformed(evt); - } - }); - - cmdListFiles.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdListFiles.setText("List files"); - cmdListFiles.setToolTipText(""); - cmdListFiles.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdListFiles.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdListFiles.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdListFiles.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdListFiles.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdListFilesActionPerformed(evt); - } - }); - - cmdNodeSleep.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdNodeSleep.setText("Sleep 10000"); - cmdNodeSleep.setToolTipText(""); - cmdNodeSleep.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdNodeSleep.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdNodeSleep.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdNodeSleep.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdNodeSleep.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdNodeSleepActionPerformed(evt); - } - }); - - CommandsNodeMCU.setLayer(cmdNodeRestart, javax.swing.JLayeredPane.DEFAULT_LAYER); - CommandsNodeMCU.setLayer(cmdTimerStop, javax.swing.JLayeredPane.DEFAULT_LAYER); - CommandsNodeMCU.setLayer(cmdNodeChipID, javax.swing.JLayeredPane.DEFAULT_LAYER); - CommandsNodeMCU.setLayer(TimerNumber, javax.swing.JLayeredPane.DEFAULT_LAYER); - CommandsNodeMCU.setLayer(cmdNodeHeap, javax.swing.JLayeredPane.DEFAULT_LAYER); - CommandsNodeMCU.setLayer(cmdListFiles, javax.swing.JLayeredPane.DEFAULT_LAYER); - CommandsNodeMCU.setLayer(cmdNodeSleep, javax.swing.JLayeredPane.DEFAULT_LAYER); - - javax.swing.GroupLayout CommandsNodeMCULayout = new javax.swing.GroupLayout(CommandsNodeMCU); - CommandsNodeMCU.setLayout(CommandsNodeMCULayout); - CommandsNodeMCULayout.setHorizontalGroup( - CommandsNodeMCULayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(CommandsNodeMCULayout.createSequentialGroup() - .addGroup(CommandsNodeMCULayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(CommandsNodeMCULayout.createSequentialGroup() - .addComponent(cmdNodeRestart, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(cmdNodeChipID, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(CommandsNodeMCULayout.createSequentialGroup() - .addComponent(cmdTimerStop, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(TimerNumber, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE))) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(CommandsNodeMCULayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(CommandsNodeMCULayout.createSequentialGroup() - .addComponent(cmdNodeHeap, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(cmdNodeSleep, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addComponent(cmdListFiles, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGap(0, 0, Short.MAX_VALUE)) - ); - CommandsNodeMCULayout.setVerticalGroup( - CommandsNodeMCULayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(CommandsNodeMCULayout.createSequentialGroup() - .addContainerGap() - .addGroup(CommandsNodeMCULayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(cmdNodeChipID, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdNodeRestart, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdNodeHeap, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdNodeSleep, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(CommandsNodeMCULayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(cmdListFiles, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdTimerStop, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(TimerNumber, javax.swing.GroupLayout.DEFAULT_SIZE, 30, Short.MAX_VALUE)) - .addContainerGap()) - ); - - MicroPythonCommandsWiFi.setOpaque(true); - - MicroPythonSSID.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - MicroPythonSSID.setText("SSID"); - MicroPythonSSID.setToolTipText("Enter WiFi SSID"); - MicroPythonSSID.setMaximumSize(new java.awt.Dimension(100, 23)); - MicroPythonSSID.setMinimumSize(new java.awt.Dimension(100, 23)); - MicroPythonSSID.setPreferredSize(new java.awt.Dimension(100, 23)); - MicroPythonSSID.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MicroPythonSSIDActionPerformed(evt); - } - }); - MicroPythonSSID.addFocusListener(new java.awt.event.FocusAdapter() { - public void focusGained(java.awt.event.FocusEvent evt) { - MicroPythonSSIDFocusGained(evt); - } - }); - - cmdMicroPythonStaConnect.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/connect3.png"))); // NOI18N - cmdMicroPythonStaConnect.setText("Connect to AP"); - cmdMicroPythonStaConnect.setToolTipText("Connect to WiFi Access Point"); - cmdMicroPythonStaConnect.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdMicroPythonStaConnect.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdMicroPythonStaConnect.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdMicroPythonStaConnect.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdMicroPythonStaConnect.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdMicroPythonStaConnectActionPerformed(evt); - } - }); - - MicroPythonPASS.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - MicroPythonPASS.setText("password"); - MicroPythonPASS.setToolTipText("Enter WiFi password"); - MicroPythonPASS.setMaximumSize(new java.awt.Dimension(104, 23)); - MicroPythonPASS.setMinimumSize(new java.awt.Dimension(104, 23)); - MicroPythonPASS.setPreferredSize(new java.awt.Dimension(104, 23)); - MicroPythonPASS.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MicroPythonPASSActionPerformed(evt); - } - }); - MicroPythonPASS.addFocusListener(new java.awt.event.FocusAdapter() { - public void focusGained(java.awt.event.FocusEvent evt) { - MicroPythonPASSFocusGained(evt); - } - }); - - MicroPythonRemoteHost.setText("micropython.org"); - MicroPythonRemoteHost.setToolTipText("Remote host name"); - - MicroPythonRemotePort.setText("80"); - MicroPythonRemotePort.setToolTipText("Remote port"); - - cmdMicroPythonSendToHost.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/connect3.png"))); // NOI18N - cmdMicroPythonSendToHost.setText("Connect and send"); - cmdMicroPythonSendToHost.setToolTipText("Start a connection as client"); - cmdMicroPythonSendToHost.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdMicroPythonSendToHostActionPerformed(evt); - } - }); - - MicroPythonRemoteData.setText("GET / HTTP/1.1\\r\\nHost: micropython.org\\r\\n\\r\\n"); - MicroPythonRemoteData.setToolTipText("Data to send"); - - cmdMicroPythonScan.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/search again.png"))); // NOI18N - cmdMicroPythonScan.setText("Scan network"); - cmdMicroPythonScan.setToolTipText("Lists all available WiFi Access Points"); - cmdMicroPythonScan.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdMicroPythonScan.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdMicroPythonScan.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdMicroPythonScan.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdMicroPythonScan.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdMicroPythonScanActionPerformed(evt); - } - }); - - MicroPythonCommandsWiFi.setLayer(MicroPythonSSID, javax.swing.JLayeredPane.DEFAULT_LAYER); - MicroPythonCommandsWiFi.setLayer(cmdMicroPythonStaConnect, javax.swing.JLayeredPane.DEFAULT_LAYER); - MicroPythonCommandsWiFi.setLayer(MicroPythonPASS, javax.swing.JLayeredPane.DEFAULT_LAYER); - MicroPythonCommandsWiFi.setLayer(MicroPythonRemoteHost, javax.swing.JLayeredPane.DEFAULT_LAYER); - MicroPythonCommandsWiFi.setLayer(MicroPythonRemotePort, javax.swing.JLayeredPane.DEFAULT_LAYER); - MicroPythonCommandsWiFi.setLayer(cmdMicroPythonSendToHost, javax.swing.JLayeredPane.DEFAULT_LAYER); - MicroPythonCommandsWiFi.setLayer(MicroPythonRemoteData, javax.swing.JLayeredPane.DEFAULT_LAYER); - MicroPythonCommandsWiFi.setLayer(cmdMicroPythonScan, javax.swing.JLayeredPane.DEFAULT_LAYER); - - javax.swing.GroupLayout MicroPythonCommandsWiFiLayout = new javax.swing.GroupLayout(MicroPythonCommandsWiFi); - MicroPythonCommandsWiFi.setLayout(MicroPythonCommandsWiFiLayout); - MicroPythonCommandsWiFiLayout.setHorizontalGroup( - MicroPythonCommandsWiFiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(MicroPythonCommandsWiFiLayout.createSequentialGroup() - .addContainerGap() - .addGroup(MicroPythonCommandsWiFiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(cmdMicroPythonStaConnect, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, MicroPythonCommandsWiFiLayout.createSequentialGroup() - .addComponent(MicroPythonSSID, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(MicroPythonPASS, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(MicroPythonCommandsWiFiLayout.createSequentialGroup() - .addComponent(MicroPythonRemoteHost, javax.swing.GroupLayout.PREFERRED_SIZE, 150, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(MicroPythonRemotePort)) - .addComponent(cmdMicroPythonSendToHost, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(MicroPythonRemoteData, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cmdMicroPythonScan, javax.swing.GroupLayout.PREFERRED_SIZE, 206, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(95, Short.MAX_VALUE)) - ); - MicroPythonCommandsWiFiLayout.setVerticalGroup( - MicroPythonCommandsWiFiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(MicroPythonCommandsWiFiLayout.createSequentialGroup() - .addContainerGap() - .addGroup(MicroPythonCommandsWiFiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(MicroPythonSSID, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(MicroPythonPASS, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdMicroPythonScan, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cmdMicroPythonStaConnect, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(MicroPythonCommandsWiFiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(MicroPythonRemoteHost, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(MicroPythonRemotePort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(MicroPythonRemoteData, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cmdMicroPythonSendToHost) - .addContainerGap(374, Short.MAX_VALUE)) - ); - - MicroPythonCommandsTab.addTab(" WiFi ", MicroPythonCommandsWiFi); - - MicroPythonCommandsGPIO.setOpaque(true); - - MicroPythonGPIO0_1.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - MicroPythonGPIO0_1.setText("GPIO0 -> 1"); - MicroPythonGPIO0_1.setToolTipText(""); - MicroPythonGPIO0_1.setMaximumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO0_1.setMinimumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO0_1.setPreferredSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO0_1.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MicroPythonGPIO0_1ActionPerformed(evt); - } - }); - - MicroPythonGPIO0_0.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - MicroPythonGPIO0_0.setText("GPIO0 -> 0"); - MicroPythonGPIO0_0.setToolTipText(""); - MicroPythonGPIO0_0.setMaximumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO0_0.setMinimumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO0_0.setPreferredSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO0_0.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MicroPythonGPIO0_0ActionPerformed(evt); - } - }); - - MicroPythonGPIO2_1.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - MicroPythonGPIO2_1.setText("GPIO2 -> 1"); - MicroPythonGPIO2_1.setToolTipText(""); - MicroPythonGPIO2_1.setMaximumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO2_1.setMinimumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO2_1.setPreferredSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO2_1.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MicroPythonGPIO2_1ActionPerformed(evt); - } - }); - - MicroPythonGPIO2_0.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - MicroPythonGPIO2_0.setText("GPIO2 -> 0"); - MicroPythonGPIO2_0.setToolTipText(""); - MicroPythonGPIO2_0.setMaximumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO2_0.setMinimumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO2_0.setPreferredSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO2_0.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MicroPythonGPIO2_0ActionPerformed(evt); - } - }); - - MicroPythonGPIO4_1.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - MicroPythonGPIO4_1.setText("GPIO4 -> 1"); - MicroPythonGPIO4_1.setToolTipText(""); - MicroPythonGPIO4_1.setMaximumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO4_1.setMinimumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO4_1.setPreferredSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO4_1.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MicroPythonGPIO4_1ActionPerformed(evt); - } - }); - - MicroPythonGPIO4_0.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - MicroPythonGPIO4_0.setText("GPIO4 -> 0"); - MicroPythonGPIO4_0.setToolTipText(""); - MicroPythonGPIO4_0.setMaximumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO4_0.setMinimumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO4_0.setPreferredSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO4_0.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MicroPythonGPIO4_0ActionPerformed(evt); - } - }); - - MicroPythonGPIO5_0.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - MicroPythonGPIO5_0.setText("GPIO5 -> 0"); - MicroPythonGPIO5_0.setToolTipText(""); - MicroPythonGPIO5_0.setMaximumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO5_0.setMinimumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO5_0.setPreferredSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO5_0.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MicroPythonGPIO5_0ActionPerformed(evt); - } - }); - - MicroPythonGPIO5_1.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - MicroPythonGPIO5_1.setText("GPIO5 -> 1"); - MicroPythonGPIO5_1.setToolTipText(""); - MicroPythonGPIO5_1.setMaximumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO5_1.setMinimumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO5_1.setPreferredSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO5_1.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MicroPythonGPIO5_1ActionPerformed(evt); - } - }); - - MicroPythonGPIO9_0.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - MicroPythonGPIO9_0.setText("GPIO9 -> 0"); - MicroPythonGPIO9_0.setToolTipText(""); - MicroPythonGPIO9_0.setMaximumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO9_0.setMinimumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO9_0.setPreferredSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO9_0.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MicroPythonGPIO9_0ActionPerformed(evt); - } - }); - - MicroPythonGPIO9_1.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - MicroPythonGPIO9_1.setText("GPIO9 -> 1"); - MicroPythonGPIO9_1.setToolTipText(""); - MicroPythonGPIO9_1.setMaximumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO9_1.setMinimumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO9_1.setPreferredSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO9_1.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MicroPythonGPIO9_1ActionPerformed(evt); - } - }); - - MicroPythonGPIO10_0.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - MicroPythonGPIO10_0.setText("GPIO10 -> 0"); - MicroPythonGPIO10_0.setToolTipText(""); - MicroPythonGPIO10_0.setMaximumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO10_0.setMinimumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO10_0.setPreferredSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO10_0.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MicroPythonGPIO10_0ActionPerformed(evt); - } - }); - - MicroPythonGPIO10_1.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - MicroPythonGPIO10_1.setText("GPIO10 -> 1"); - MicroPythonGPIO10_1.setToolTipText(""); - MicroPythonGPIO10_1.setMaximumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO10_1.setMinimumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO10_1.setPreferredSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO10_1.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MicroPythonGPIO10_1ActionPerformed(evt); - } - }); - - MicroPythonGPIO12_0.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - MicroPythonGPIO12_0.setText("GPIO12 -> 0"); - MicroPythonGPIO12_0.setToolTipText(""); - MicroPythonGPIO12_0.setMaximumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO12_0.setMinimumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO12_0.setPreferredSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO12_0.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MicroPythonGPIO12_0ActionPerformed(evt); - } - }); - - MicroPythonGPIO12_1.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - MicroPythonGPIO12_1.setText("GPIO12 -> 1"); - MicroPythonGPIO12_1.setToolTipText(""); - MicroPythonGPIO12_1.setMaximumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO12_1.setMinimumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO12_1.setPreferredSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO12_1.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MicroPythonGPIO12_1ActionPerformed(evt); - } - }); - - MicroPythonGPIO13_0.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - MicroPythonGPIO13_0.setText("GPIO13 -> 0"); - MicroPythonGPIO13_0.setToolTipText(""); - MicroPythonGPIO13_0.setMaximumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO13_0.setMinimumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO13_0.setPreferredSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO13_0.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MicroPythonGPIO13_0ActionPerformed(evt); - } - }); - - MicroPythonGPIO13_1.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - MicroPythonGPIO13_1.setText("GPIO13 -> 1"); - MicroPythonGPIO13_1.setToolTipText(""); - MicroPythonGPIO13_1.setMaximumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO13_1.setMinimumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO13_1.setPreferredSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO13_1.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MicroPythonGPIO13_1ActionPerformed(evt); - } - }); - - MicroPythonGPIO14_1.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - MicroPythonGPIO14_1.setText("GPIO14 -> 1"); - MicroPythonGPIO14_1.setToolTipText(""); - MicroPythonGPIO14_1.setMaximumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO14_1.setMinimumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO14_1.setPreferredSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO14_1.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MicroPythonGPIO14_1ActionPerformed(evt); - } - }); - - MicroPythonGPIO15_1.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - MicroPythonGPIO15_1.setText("GPIO15 -> 1"); - MicroPythonGPIO15_1.setToolTipText(""); - MicroPythonGPIO15_1.setMaximumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO15_1.setMinimumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO15_1.setPreferredSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO15_1.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MicroPythonGPIO15_1ActionPerformed(evt); - } - }); - - MicroPythonGPIO16_1.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - MicroPythonGPIO16_1.setText("GPIO16 -> 1"); - MicroPythonGPIO16_1.setToolTipText(""); - MicroPythonGPIO16_1.setMaximumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO16_1.setMinimumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO16_1.setPreferredSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO16_1.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MicroPythonGPIO16_1ActionPerformed(evt); - } - }); - - MicroPythonGPIO14_0.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - MicroPythonGPIO14_0.setText("GPIO14 -> 0"); - MicroPythonGPIO14_0.setToolTipText(""); - MicroPythonGPIO14_0.setMaximumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO14_0.setMinimumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO14_0.setPreferredSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO14_0.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MicroPythonGPIO14_0ActionPerformed(evt); - } - }); - - MicroPythonGPIO15_0.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - MicroPythonGPIO15_0.setText("GPIO15 -> 0"); - MicroPythonGPIO15_0.setToolTipText(""); - MicroPythonGPIO15_0.setMaximumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO15_0.setMinimumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO15_0.setPreferredSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO15_0.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MicroPythonGPIO15_0ActionPerformed(evt); - } - }); - - MicroPythonGPIO16_0.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - MicroPythonGPIO16_0.setText("GPIO16 -> 0"); - MicroPythonGPIO16_0.setToolTipText(""); - MicroPythonGPIO16_0.setMaximumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO16_0.setMinimumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO16_0.setPreferredSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO16_0.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MicroPythonGPIO16_0ActionPerformed(evt); - } - }); - - MicroPythonGPIO0.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - MicroPythonGPIO0.setText("GPIO0 ?"); - MicroPythonGPIO0.setToolTipText(""); - MicroPythonGPIO0.setMaximumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO0.setMinimumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO0.setPreferredSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO0.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MicroPythonGPIO0ActionPerformed(evt); - } - }); - - MicroPythonGPIO2.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - MicroPythonGPIO2.setText("GPIO2 ?"); - MicroPythonGPIO2.setToolTipText(""); - MicroPythonGPIO2.setMaximumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO2.setMinimumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO2.setPreferredSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO2.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MicroPythonGPIO2ActionPerformed(evt); - } - }); - - MicroPythonGPIO4.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - MicroPythonGPIO4.setText("GPIO4 ?"); - MicroPythonGPIO4.setToolTipText(""); - MicroPythonGPIO4.setMaximumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO4.setMinimumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO4.setPreferredSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO4.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MicroPythonGPIO4ActionPerformed(evt); - } - }); - - MicroPythonGPIO5.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - MicroPythonGPIO5.setText("GPIO5 ?"); - MicroPythonGPIO5.setToolTipText(""); - MicroPythonGPIO5.setMaximumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO5.setMinimumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO5.setPreferredSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO5.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MicroPythonGPIO5ActionPerformed(evt); - } - }); - - MicroPythonGPIO9.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - MicroPythonGPIO9.setText("GPIO9 ?"); - MicroPythonGPIO9.setToolTipText(""); - MicroPythonGPIO9.setMaximumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO9.setMinimumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO9.setPreferredSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO9.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MicroPythonGPIO9ActionPerformed(evt); - } - }); - - MicroPythonGPIO10.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - MicroPythonGPIO10.setText("GPIO10 ?"); - MicroPythonGPIO10.setToolTipText(""); - MicroPythonGPIO10.setMaximumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO10.setMinimumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO10.setPreferredSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO10.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MicroPythonGPIO10ActionPerformed(evt); - } - }); - - MicroPythonGPIO12.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - MicroPythonGPIO12.setText("GPIO12 ?"); - MicroPythonGPIO12.setToolTipText(""); - MicroPythonGPIO12.setMaximumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO12.setMinimumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO12.setPreferredSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO12.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MicroPythonGPIO12ActionPerformed(evt); - } - }); - - MicroPythonGPIO13.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - MicroPythonGPIO13.setText("GPIO13 ?"); - MicroPythonGPIO13.setToolTipText(""); - MicroPythonGPIO13.setMaximumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO13.setMinimumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO13.setPreferredSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO13.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MicroPythonGPIO13ActionPerformed(evt); - } - }); - - MicroPythonGPIO14.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - MicroPythonGPIO14.setText("GPIO14 ?"); - MicroPythonGPIO14.setToolTipText(""); - MicroPythonGPIO14.setMaximumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO14.setMinimumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO14.setPreferredSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO14.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MicroPythonGPIO14ActionPerformed(evt); - } - }); - - MicroPythonGPIO15.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - MicroPythonGPIO15.setText("GPIO15 ?"); - MicroPythonGPIO15.setToolTipText(""); - MicroPythonGPIO15.setMaximumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO15.setMinimumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO15.setPreferredSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO15.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MicroPythonGPIO15ActionPerformed(evt); - } - }); - - MicroPythonGPIO16.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - MicroPythonGPIO16.setText("GPIO16 ?"); - MicroPythonGPIO16.setToolTipText(""); - MicroPythonGPIO16.setMaximumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO16.setMinimumSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO16.setPreferredSize(new java.awt.Dimension(90, 30)); - MicroPythonGPIO16.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MicroPythonGPIO16ActionPerformed(evt); - } - }); - - MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO0_1, javax.swing.JLayeredPane.DEFAULT_LAYER); - MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO0_0, javax.swing.JLayeredPane.DEFAULT_LAYER); - MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO2_1, javax.swing.JLayeredPane.DEFAULT_LAYER); - MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO2_0, javax.swing.JLayeredPane.DEFAULT_LAYER); - MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO4_1, javax.swing.JLayeredPane.DEFAULT_LAYER); - MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO4_0, javax.swing.JLayeredPane.DEFAULT_LAYER); - MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO5_0, javax.swing.JLayeredPane.DEFAULT_LAYER); - MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO5_1, javax.swing.JLayeredPane.DEFAULT_LAYER); - MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO9_0, javax.swing.JLayeredPane.DEFAULT_LAYER); - MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO9_1, javax.swing.JLayeredPane.DEFAULT_LAYER); - MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO10_0, javax.swing.JLayeredPane.DEFAULT_LAYER); - MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO10_1, javax.swing.JLayeredPane.DEFAULT_LAYER); - MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO12_0, javax.swing.JLayeredPane.DEFAULT_LAYER); - MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO12_1, javax.swing.JLayeredPane.DEFAULT_LAYER); - MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO13_0, javax.swing.JLayeredPane.DEFAULT_LAYER); - MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO13_1, javax.swing.JLayeredPane.DEFAULT_LAYER); - MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO14_1, javax.swing.JLayeredPane.DEFAULT_LAYER); - MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO15_1, javax.swing.JLayeredPane.DEFAULT_LAYER); - MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO16_1, javax.swing.JLayeredPane.DEFAULT_LAYER); - MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO14_0, javax.swing.JLayeredPane.DEFAULT_LAYER); - MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO15_0, javax.swing.JLayeredPane.DEFAULT_LAYER); - MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO16_0, javax.swing.JLayeredPane.DEFAULT_LAYER); - MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO0, javax.swing.JLayeredPane.DEFAULT_LAYER); - MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO2, javax.swing.JLayeredPane.DEFAULT_LAYER); - MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO4, javax.swing.JLayeredPane.DEFAULT_LAYER); - MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO5, javax.swing.JLayeredPane.DEFAULT_LAYER); - MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO9, javax.swing.JLayeredPane.DEFAULT_LAYER); - MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO10, javax.swing.JLayeredPane.DEFAULT_LAYER); - MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO12, javax.swing.JLayeredPane.DEFAULT_LAYER); - MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO13, javax.swing.JLayeredPane.DEFAULT_LAYER); - MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO14, javax.swing.JLayeredPane.DEFAULT_LAYER); - MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO15, javax.swing.JLayeredPane.DEFAULT_LAYER); - MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO16, javax.swing.JLayeredPane.DEFAULT_LAYER); - - javax.swing.GroupLayout MicroPythonCommandsGPIOLayout = new javax.swing.GroupLayout(MicroPythonCommandsGPIO); - MicroPythonCommandsGPIO.setLayout(MicroPythonCommandsGPIOLayout); - MicroPythonCommandsGPIOLayout.setHorizontalGroup( - MicroPythonCommandsGPIOLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(MicroPythonCommandsGPIOLayout.createSequentialGroup() - .addComponent(MicroPythonGPIO0_1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(MicroPythonGPIO0_0, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(MicroPythonGPIO0, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(MicroPythonCommandsGPIOLayout.createSequentialGroup() - .addComponent(MicroPythonGPIO2_1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(MicroPythonGPIO2_0, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(MicroPythonGPIO2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(MicroPythonCommandsGPIOLayout.createSequentialGroup() - .addComponent(MicroPythonGPIO4_1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(MicroPythonGPIO4_0, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(MicroPythonGPIO4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(MicroPythonCommandsGPIOLayout.createSequentialGroup() - .addComponent(MicroPythonGPIO5_1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(MicroPythonGPIO5_0, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(MicroPythonGPIO5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(MicroPythonCommandsGPIOLayout.createSequentialGroup() - .addComponent(MicroPythonGPIO9_1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(MicroPythonGPIO9_0, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(MicroPythonGPIO9, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(MicroPythonCommandsGPIOLayout.createSequentialGroup() - .addComponent(MicroPythonGPIO10_1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(MicroPythonGPIO10_0, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(MicroPythonGPIO10, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(MicroPythonCommandsGPIOLayout.createSequentialGroup() - .addComponent(MicroPythonGPIO12_1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(MicroPythonGPIO12_0, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(MicroPythonGPIO12, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(MicroPythonCommandsGPIOLayout.createSequentialGroup() - .addComponent(MicroPythonGPIO13_1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(MicroPythonGPIO13_0, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(MicroPythonGPIO13, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addComponent(MicroPythonGPIO14_1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(MicroPythonGPIO15_1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(MicroPythonGPIO16_1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGroup(MicroPythonCommandsGPIOLayout.createSequentialGroup() - .addGap(96, 96, 96) - .addGroup(MicroPythonCommandsGPIOLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(MicroPythonCommandsGPIOLayout.createSequentialGroup() - .addComponent(MicroPythonGPIO16_0, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(MicroPythonGPIO16, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(MicroPythonCommandsGPIOLayout.createSequentialGroup() - .addComponent(MicroPythonGPIO14_0, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(MicroPythonGPIO14, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(MicroPythonCommandsGPIOLayout.createSequentialGroup() - .addComponent(MicroPythonGPIO15_0, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(MicroPythonGPIO15, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))) - ); - MicroPythonCommandsGPIOLayout.setVerticalGroup( - MicroPythonCommandsGPIOLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(MicroPythonCommandsGPIOLayout.createSequentialGroup() - .addGroup(MicroPythonCommandsGPIOLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(MicroPythonGPIO0_1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(MicroPythonGPIO0_0, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(MicroPythonGPIO0, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(MicroPythonCommandsGPIOLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(MicroPythonGPIO2_1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(MicroPythonGPIO2_0, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(MicroPythonGPIO2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(MicroPythonCommandsGPIOLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(MicroPythonGPIO4_1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(MicroPythonGPIO4_0, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(MicroPythonGPIO4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(MicroPythonCommandsGPIOLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(MicroPythonGPIO5_1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(MicroPythonGPIO5_0, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(MicroPythonGPIO5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(MicroPythonCommandsGPIOLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(MicroPythonGPIO9_1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(MicroPythonGPIO9_0, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(MicroPythonGPIO9, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(MicroPythonCommandsGPIOLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(MicroPythonGPIO10_1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(MicroPythonGPIO10_0, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(MicroPythonGPIO10, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(MicroPythonCommandsGPIOLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(MicroPythonGPIO12_1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(MicroPythonGPIO12_0, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(MicroPythonGPIO12, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(MicroPythonCommandsGPIOLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(MicroPythonCommandsGPIOLayout.createSequentialGroup() - .addComponent(MicroPythonGPIO13_1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(MicroPythonGPIO14_1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(MicroPythonGPIO15_1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(MicroPythonGPIO16_1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(MicroPythonCommandsGPIOLayout.createSequentialGroup() - .addComponent(MicroPythonGPIO13_0, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(MicroPythonCommandsGPIOLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(MicroPythonGPIO14_0, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(MicroPythonGPIO14, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(MicroPythonCommandsGPIOLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(MicroPythonGPIO15_0, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(MicroPythonGPIO15, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(MicroPythonCommandsGPIOLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(MicroPythonGPIO16_0, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(MicroPythonGPIO16, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) - .addComponent(MicroPythonGPIO13, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) - ); - - MicroPythonCommandsTab.addTab(" GPIO ", MicroPythonCommandsGPIO); - - NodeMCUCommands.setLayer(CommandsMicroPython, javax.swing.JLayeredPane.DEFAULT_LAYER); - NodeMCUCommands.setLayer(CommandsNodeMCU, javax.swing.JLayeredPane.DEFAULT_LAYER); - NodeMCUCommands.setLayer(MicroPythonCommandsTab, javax.swing.JLayeredPane.DEFAULT_LAYER); - - javax.swing.GroupLayout NodeMCUCommandsLayout = new javax.swing.GroupLayout(NodeMCUCommands); - NodeMCUCommands.setLayout(NodeMCUCommandsLayout); - NodeMCUCommandsLayout.setHorizontalGroup( - NodeMCUCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(CommandsNodeMCU) - .addGroup(NodeMCUCommandsLayout.createSequentialGroup() - .addComponent(MicroPythonCommandsTab, javax.swing.GroupLayout.PREFERRED_SIZE, 528, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(CommandsMicroPython) - .addGap(535, 535, 535)) - ); - NodeMCUCommandsLayout.setVerticalGroup( - NodeMCUCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(NodeMCUCommandsLayout.createSequentialGroup() - .addContainerGap() - .addComponent(CommandsNodeMCU, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGroup(NodeMCUCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(NodeMCUCommandsLayout.createSequentialGroup() - .addGap(60, 60, 60) - .addComponent(CommandsMicroPython, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(NodeMCUCommandsLayout.createSequentialGroup() - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(MicroPythonCommandsTab, javax.swing.GroupLayout.PREFERRED_SIZE, 548, javax.swing.GroupLayout.PREFERRED_SIZE))) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - - TextTab.addTab("Commands", NodeMCUCommands); - - NodeMCUSnippets.setOpaque(true); - - LeftSnippetsPane.setOpaque(true); - - SnippetEdit0.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SnippetEdit0.setText("Edit Snippet0"); - SnippetEdit0.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - SnippetEdit0ActionPerformed(evt); - } - }); - - SnippetEdit1.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SnippetEdit1.setText("Edit Snippet1"); - SnippetEdit1.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - SnippetEdit1ActionPerformed(evt); - } - }); - - SnippetEdit2.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SnippetEdit2.setText("Edit Snippet2"); - SnippetEdit2.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - SnippetEdit2ActionPerformed(evt); - } - }); - - SnippetEdit3.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SnippetEdit3.setText("Edit Snippet3"); - SnippetEdit3.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - SnippetEdit3ActionPerformed(evt); - } - }); - - SnippetEdit4.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SnippetEdit4.setText("Edit Snippet4"); - SnippetEdit4.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - SnippetEdit4ActionPerformed(evt); - } - }); - - SnippetEdit5.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SnippetEdit5.setText("Edit Snippet5"); - SnippetEdit5.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - SnippetEdit5ActionPerformed(evt); - } - }); - - SnippetEdit6.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SnippetEdit6.setText("Edit Snippet6"); - SnippetEdit6.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - SnippetEdit6ActionPerformed(evt); - } - }); - - SnippetEdit7.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SnippetEdit7.setText("Edit Snippet7"); - SnippetEdit7.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - SnippetEdit7ActionPerformed(evt); - } - }); - - SnippetEdit8.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SnippetEdit8.setText("Edit Snippet8"); - SnippetEdit8.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - SnippetEdit8ActionPerformed(evt); - } - }); - - SnippetEdit9.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SnippetEdit9.setText("Edit Snippet9"); - SnippetEdit9.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - SnippetEdit9ActionPerformed(evt); - } - }); - - SnippetEdit10.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SnippetEdit10.setText("Edit Snippet10"); - SnippetEdit10.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - SnippetEdit10ActionPerformed(evt); - } - }); - - SnippetEdit11.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SnippetEdit11.setText("Edit Snippet11"); - SnippetEdit11.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - SnippetEdit11ActionPerformed(evt); - } - }); - - SnippetEdit12.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SnippetEdit12.setText("Edit Snippet12"); - SnippetEdit12.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - SnippetEdit12ActionPerformed(evt); - } - }); - - SnippetEdit13.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SnippetEdit13.setText("Edit Snippet13"); - SnippetEdit13.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - SnippetEdit13ActionPerformed(evt); - } - }); - - SnippetEdit14.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SnippetEdit14.setText("Edit Snippet14"); - SnippetEdit14.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - SnippetEdit14ActionPerformed(evt); - } - }); - - SnippetEdit15.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SnippetEdit15.setText("Edit Snippet15"); - SnippetEdit15.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - SnippetEdit15ActionPerformed(evt); - } - }); - - LeftSnippetsPane.setLayer(SnippetEdit0, javax.swing.JLayeredPane.DEFAULT_LAYER); - LeftSnippetsPane.setLayer(SnippetEdit1, javax.swing.JLayeredPane.DEFAULT_LAYER); - LeftSnippetsPane.setLayer(SnippetEdit2, javax.swing.JLayeredPane.DEFAULT_LAYER); - LeftSnippetsPane.setLayer(SnippetEdit3, javax.swing.JLayeredPane.DEFAULT_LAYER); - LeftSnippetsPane.setLayer(SnippetEdit4, javax.swing.JLayeredPane.DEFAULT_LAYER); - LeftSnippetsPane.setLayer(SnippetEdit5, javax.swing.JLayeredPane.DEFAULT_LAYER); - LeftSnippetsPane.setLayer(SnippetEdit6, javax.swing.JLayeredPane.DEFAULT_LAYER); - LeftSnippetsPane.setLayer(SnippetEdit7, javax.swing.JLayeredPane.DEFAULT_LAYER); - LeftSnippetsPane.setLayer(SnippetEdit8, javax.swing.JLayeredPane.DEFAULT_LAYER); - LeftSnippetsPane.setLayer(SnippetEdit9, javax.swing.JLayeredPane.DEFAULT_LAYER); - LeftSnippetsPane.setLayer(SnippetEdit10, javax.swing.JLayeredPane.DEFAULT_LAYER); - LeftSnippetsPane.setLayer(SnippetEdit11, javax.swing.JLayeredPane.DEFAULT_LAYER); - LeftSnippetsPane.setLayer(SnippetEdit12, javax.swing.JLayeredPane.DEFAULT_LAYER); - LeftSnippetsPane.setLayer(SnippetEdit13, javax.swing.JLayeredPane.DEFAULT_LAYER); - LeftSnippetsPane.setLayer(SnippetEdit14, javax.swing.JLayeredPane.DEFAULT_LAYER); - LeftSnippetsPane.setLayer(SnippetEdit15, javax.swing.JLayeredPane.DEFAULT_LAYER); - - javax.swing.GroupLayout LeftSnippetsPaneLayout = new javax.swing.GroupLayout(LeftSnippetsPane); - LeftSnippetsPane.setLayout(LeftSnippetsPaneLayout); - LeftSnippetsPaneLayout.setHorizontalGroup( - LeftSnippetsPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(SnippetEdit0, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(SnippetEdit1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(SnippetEdit2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(SnippetEdit3, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(SnippetEdit4, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(SnippetEdit5, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(SnippetEdit6, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(SnippetEdit7, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(SnippetEdit8, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(SnippetEdit9, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(SnippetEdit10, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 129, Short.MAX_VALUE) - .addComponent(SnippetEdit11, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(SnippetEdit12, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(SnippetEdit13, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(SnippetEdit14, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(SnippetEdit15, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - ); - LeftSnippetsPaneLayout.setVerticalGroup( - LeftSnippetsPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(LeftSnippetsPaneLayout.createSequentialGroup() - .addComponent(SnippetEdit0, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(SnippetEdit1, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(SnippetEdit2, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(SnippetEdit3, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(SnippetEdit4, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(SnippetEdit5, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(SnippetEdit6, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(SnippetEdit7, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(SnippetEdit8, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(SnippetEdit9, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(SnippetEdit10, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(SnippetEdit11, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(SnippetEdit12, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(SnippetEdit13, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(SnippetEdit14, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(SnippetEdit15, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(252, Short.MAX_VALUE)) - ); - - SnippetTopPane.setOpaque(true); - - SnippetName.setEnabled(false); - - SnippetSave.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SnippetSave.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/save.png"))); // NOI18N - SnippetSave.setText("Save"); - SnippetSave.setToolTipText("Save snippet to disk"); - SnippetSave.setEnabled(false); - SnippetSave.setMargin(new java.awt.Insets(2, 2, 2, 2)); - SnippetSave.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - SnippetSaveActionPerformed(evt); - } - }); - - SnippetRun.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SnippetRun.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/server1_start.png"))); // NOI18N - SnippetRun.setText("Run"); - SnippetRun.setToolTipText("Run snippet"); - SnippetRun.setEnabled(false); - SnippetRun.setMargin(new java.awt.Insets(2, 2, 2, 2)); - SnippetRun.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - SnippetRunActionPerformed(evt); - } - }); - - SnippetsBusy.setBackground(new java.awt.Color(0, 153, 0)); - SnippetsBusy.setForeground(new java.awt.Color(255, 255, 255)); - SnippetsBusy.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - SnippetsBusy.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/led_grey.png"))); // NOI18N - SnippetsBusy.setText("IDLE"); - SnippetsBusy.setOpaque(true); - - SnippetCancelEdit.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SnippetCancelEdit.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/abort.png"))); // NOI18N - SnippetCancelEdit.setText("Cancel"); - SnippetCancelEdit.setToolTipText("Cancel edit and clear editor window"); - SnippetCancelEdit.setEnabled(false); - SnippetCancelEdit.setMargin(new java.awt.Insets(2, 2, 2, 2)); - SnippetCancelEdit.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - SnippetCancelEditActionPerformed(evt); - } - }); - - Condensed.setText("Condensed executing"); - Condensed.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - CondensedItemStateChanged(evt); - } - }); - - SnippetTopPane.setLayer(SnippetName, javax.swing.JLayeredPane.DEFAULT_LAYER); - SnippetTopPane.setLayer(SnippetSave, javax.swing.JLayeredPane.DEFAULT_LAYER); - SnippetTopPane.setLayer(SnippetRun, javax.swing.JLayeredPane.DEFAULT_LAYER); - SnippetTopPane.setLayer(SnippetsBusy, javax.swing.JLayeredPane.DEFAULT_LAYER); - SnippetTopPane.setLayer(SnippetCancelEdit, javax.swing.JLayeredPane.DEFAULT_LAYER); - SnippetTopPane.setLayer(Condensed, javax.swing.JLayeredPane.DEFAULT_LAYER); - - javax.swing.GroupLayout SnippetTopPaneLayout = new javax.swing.GroupLayout(SnippetTopPane); - SnippetTopPane.setLayout(SnippetTopPaneLayout); - SnippetTopPaneLayout.setHorizontalGroup( - SnippetTopPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(SnippetTopPaneLayout.createSequentialGroup() - .addGroup(SnippetTopPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addGroup(SnippetTopPaneLayout.createSequentialGroup() - .addComponent(SnippetSave) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(SnippetCancelEdit)) - .addComponent(SnippetName)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(SnippetTopPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(SnippetsBusy, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGroup(SnippetTopPaneLayout.createSequentialGroup() - .addComponent(SnippetRun, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(Condensed))) - .addContainerGap(69, Short.MAX_VALUE)) - ); - SnippetTopPaneLayout.setVerticalGroup( - SnippetTopPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(SnippetTopPaneLayout.createSequentialGroup() - .addGroup(SnippetTopPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(SnippetName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(SnippetsBusy)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(SnippetTopPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(SnippetSave) - .addComponent(SnippetRun) - .addComponent(SnippetCancelEdit) - .addComponent(Condensed))) - ); - - SnippetScrollPane.setBorder(javax.swing.BorderFactory.createEtchedBorder()); - SnippetScrollPane.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED); - SnippetScrollPane.setEnabled(false); - SnippetScrollPane.setLineNumbersEnabled(true); - - SnippetText.setEditable(false); - SnippetText.setColumns(20); - SnippetText.setRows(5); - SnippetText.setEnabled(false); - SnippetScrollPane.setViewportView(SnippetText); - - NodeMCUSnippets.setLayer(LeftSnippetsPane, javax.swing.JLayeredPane.DEFAULT_LAYER); - NodeMCUSnippets.setLayer(SnippetTopPane, javax.swing.JLayeredPane.DEFAULT_LAYER); - NodeMCUSnippets.setLayer(SnippetScrollPane, javax.swing.JLayeredPane.DEFAULT_LAYER); - - javax.swing.GroupLayout NodeMCUSnippetsLayout = new javax.swing.GroupLayout(NodeMCUSnippets); - NodeMCUSnippets.setLayout(NodeMCUSnippetsLayout); - NodeMCUSnippetsLayout.setHorizontalGroup( - NodeMCUSnippetsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(NodeMCUSnippetsLayout.createSequentialGroup() - .addComponent(LeftSnippetsPane, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(NodeMCUSnippetsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(SnippetTopPane) - .addComponent(SnippetScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) - ); - NodeMCUSnippetsLayout.setVerticalGroup( - NodeMCUSnippetsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(NodeMCUSnippetsLayout.createSequentialGroup() - .addComponent(SnippetTopPane, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(SnippetScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addComponent(LeftSnippetsPane) - ); - - TextTab.addTab("Snippets", NodeMCUSnippets); - - NodeMCUSettings.setAutoscrolls(true); - NodeMCUSettings.setOpaque(true); - - OptionsFirmware.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Select firmware", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 10))); // NOI18N - OptionsFirmware.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - - Firmware.add(OptionNodeMCU); - OptionNodeMCU.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - OptionNodeMCU.setSelected(true); - OptionNodeMCU.setText("NodeMCU"); - OptionNodeMCU.setToolTipText(""); - OptionNodeMCU.addChangeListener(new javax.swing.event.ChangeListener() { - public void stateChanged(javax.swing.event.ChangeEvent evt) { - OptionNodeMCUStateChanged(evt); - } - }); - OptionNodeMCU.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - OptionNodeMCUItemStateChanged(evt); - } - }); - - Firmware.add(OptionMicroPython); - OptionMicroPython.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - OptionMicroPython.setText("MicroPython"); - OptionMicroPython.addChangeListener(new javax.swing.event.ChangeListener() { - public void stateChanged(javax.swing.event.ChangeEvent evt) { - OptionMicroPythonStateChanged(evt); - } - }); - OptionMicroPython.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - OptionMicroPythonItemStateChanged(evt); - } - }); - - OptionsFirmware.setLayer(OptionNodeMCU, javax.swing.JLayeredPane.DEFAULT_LAYER); - OptionsFirmware.setLayer(OptionMicroPython, javax.swing.JLayeredPane.DEFAULT_LAYER); - - javax.swing.GroupLayout OptionsFirmwareLayout = new javax.swing.GroupLayout(OptionsFirmware); - OptionsFirmware.setLayout(OptionsFirmwareLayout); - OptionsFirmwareLayout.setHorizontalGroup( - OptionsFirmwareLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(OptionNodeMCU, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(OptionMicroPython, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - ); - OptionsFirmwareLayout.setVerticalGroup( - OptionsFirmwareLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(OptionsFirmwareLayout.createSequentialGroup() - .addComponent(OptionNodeMCU) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(OptionMicroPython) - .addContainerGap()) - ); - - OptionsOther.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Other", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 10))); // NOI18N - - FileAutoSaveDisk.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - FileAutoSaveDisk.setSelected(true); - FileAutoSaveDisk.setText("AutoSave file to disk before save to ESP"); - FileAutoSaveDisk.setToolTipText(""); - FileAutoSaveDisk.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - FileAutoSaveDisk.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT); - FileAutoSaveDisk.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - FileAutoSaveDiskItemStateChanged(evt); - } - }); - - FileAutoSaveESP.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - FileAutoSaveESP.setSelected(true); - FileAutoSaveESP.setText("AutoSave file to ESP after save to disk"); - FileAutoSaveESP.setToolTipText(""); - FileAutoSaveESP.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - FileAutoSaveESP.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT); - FileAutoSaveESP.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - FileAutoSaveESPItemStateChanged(evt); - } - }); - - FileAutoRun.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - FileAutoRun.setText("AutoRun file after save to ESP"); - FileAutoRun.setToolTipText(""); - FileAutoRun.setEnabled(false); - FileAutoRun.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - FileAutoRun.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT); - FileAutoRun.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - FileAutoRunItemStateChanged(evt); - } - }); - - EditorThemeLabel.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - EditorThemeLabel.setText("Editor color theme"); - - EditorTheme.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - EditorTheme.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Default", "Dark", "Eclipse", "IDEA", "Visual Studio", "Default-alt" })); - EditorTheme.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - EditorThemeActionPerformed(evt); - } - }); - - UseExternalEditor.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - UseExternalEditor.setText("Use external editor"); - UseExternalEditor.setToolTipText("Use external editor. All files will be open in ReadOnly mode"); - UseExternalEditor.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - UseExternalEditor.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT); - UseExternalEditor.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - UseExternalEditorItemStateChanged(evt); - } - }); - - OptionsOther.setLayer(FileAutoSaveDisk, javax.swing.JLayeredPane.DEFAULT_LAYER); - OptionsOther.setLayer(FileAutoSaveESP, javax.swing.JLayeredPane.DEFAULT_LAYER); - OptionsOther.setLayer(FileAutoRun, javax.swing.JLayeredPane.DEFAULT_LAYER); - OptionsOther.setLayer(EditorThemeLabel, javax.swing.JLayeredPane.DEFAULT_LAYER); - OptionsOther.setLayer(EditorTheme, javax.swing.JLayeredPane.DEFAULT_LAYER); - OptionsOther.setLayer(UseExternalEditor, javax.swing.JLayeredPane.DEFAULT_LAYER); - - javax.swing.GroupLayout OptionsOtherLayout = new javax.swing.GroupLayout(OptionsOther); - OptionsOther.setLayout(OptionsOtherLayout); - OptionsOtherLayout.setHorizontalGroup( - OptionsOtherLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(FileAutoSaveDisk, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(FileAutoSaveESP, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(OptionsOtherLayout.createSequentialGroup() - .addComponent(EditorThemeLabel) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(EditorTheme, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addContainerGap()) - .addComponent(UseExternalEditor, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(FileAutoRun, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - ); - OptionsOtherLayout.setVerticalGroup( - OptionsOtherLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(OptionsOtherLayout.createSequentialGroup() - .addComponent(FileAutoSaveDisk, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(1, 1, 1) - .addComponent(FileAutoSaveESP, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(UseExternalEditor) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(OptionsOtherLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(EditorThemeLabel) - .addComponent(EditorTheme, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(FileAutoRun) - .addContainerGap(39, Short.MAX_VALUE)) - ); - - OptionsFileSendMode.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Send", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 10))); // NOI18N - OptionsFileSendMode.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - - DelayLabel.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - DelayLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - DelayLabel.setText("Delay after answer = 0 ms"); - DelayLabel.setToolTipText("It's not \"line delay\", as you known. It's delay between answer from ESP and send new data"); - - Delay.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - Delay.setMajorTickSpacing(500); - Delay.setMaximum(1000); - Delay.setMinorTickSpacing(100); - Delay.setPaintLabels(true); - Delay.setPaintTicks(true); - Delay.setSnapToTicks(true); - Delay.setToolTipText("Delay between answer from ESP and send new data"); - Delay.setValue(0); - Delay.setAlignmentY(1.0F); - Delay.addChangeListener(new javax.swing.event.ChangeListener() { - public void stateChanged(javax.swing.event.ChangeEvent evt) { - DelayStateChanged(evt); - } - }); - - AnswerDelayLabel.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - AnswerDelayLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - AnswerDelayLabel.setText("Answer timeout = 3 s"); - AnswerDelayLabel.setToolTipText("How many time we waiting answer from ESP8266"); - - AnswerDelay.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - AnswerDelay.setMajorTickSpacing(5); - AnswerDelay.setMaximum(10); - AnswerDelay.setMinorTickSpacing(1); - AnswerDelay.setPaintLabels(true); - AnswerDelay.setPaintTicks(true); - AnswerDelay.setSnapToTicks(true); - AnswerDelay.setToolTipText("Maximum time for waiting firmware answer"); - AnswerDelay.setValue(3); - AnswerDelay.addChangeListener(new javax.swing.event.ChangeListener() { - public void stateChanged(javax.swing.event.ChangeEvent evt) { - AnswerDelayStateChanged(evt); - } - }); - - DumbMode.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - DumbMode.setText("\"Dumb Mode\", never check answers"); - DumbMode.setToolTipText(""); - DumbMode.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - DumbModeItemStateChanged(evt); - } - }); - - LineDelayLabel.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - LineDelayLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - LineDelayLabel.setText("Line delay for \"Dumb Mode\" = 200 ms"); - LineDelayLabel.setToolTipText("It's usual \"line delay\", as you known."); - - binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, DumbMode, org.jdesktop.beansbinding.ELProperty.create("${selected}"), LineDelayLabel, org.jdesktop.beansbinding.BeanProperty.create("enabled")); - bindingGroup.addBinding(binding); - - LineDelay.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - LineDelay.setMajorTickSpacing(500); - LineDelay.setMaximum(1000); - LineDelay.setMinorTickSpacing(100); - LineDelay.setPaintLabels(true); - LineDelay.setPaintTicks(true); - LineDelay.setSnapToTicks(true); - LineDelay.setToolTipText("Fixed delay between lines"); - LineDelay.setValue(200); - LineDelay.setAlignmentY(1.0F); - - binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, DumbMode, org.jdesktop.beansbinding.ELProperty.create("${selected}"), LineDelay, org.jdesktop.beansbinding.BeanProperty.create("enabled")); - bindingGroup.addBinding(binding); - - LineDelay.addChangeListener(new javax.swing.event.ChangeListener() { - public void stateChanged(javax.swing.event.ChangeEvent evt) { - LineDelayStateChanged(evt); - } - }); - - TurboMode.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - TurboMode.setText("\"Turbo Mode\""); - TurboMode.setToolTipText(""); - TurboMode.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - TurboModeItemStateChanged(evt); - } - }); - TurboMode.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - TurboModeActionPerformed(evt); - } - }); - - OptionsFileSendMode.setLayer(DelayLabel, javax.swing.JLayeredPane.DEFAULT_LAYER); - OptionsFileSendMode.setLayer(Delay, javax.swing.JLayeredPane.DEFAULT_LAYER); - OptionsFileSendMode.setLayer(AnswerDelayLabel, javax.swing.JLayeredPane.DEFAULT_LAYER); - OptionsFileSendMode.setLayer(AnswerDelay, javax.swing.JLayeredPane.DEFAULT_LAYER); - OptionsFileSendMode.setLayer(DumbMode, javax.swing.JLayeredPane.DEFAULT_LAYER); - OptionsFileSendMode.setLayer(LineDelayLabel, javax.swing.JLayeredPane.DEFAULT_LAYER); - OptionsFileSendMode.setLayer(LineDelay, javax.swing.JLayeredPane.DEFAULT_LAYER); - OptionsFileSendMode.setLayer(TurboMode, javax.swing.JLayeredPane.DEFAULT_LAYER); - - javax.swing.GroupLayout OptionsFileSendModeLayout = new javax.swing.GroupLayout(OptionsFileSendMode); - OptionsFileSendMode.setLayout(OptionsFileSendModeLayout); - OptionsFileSendModeLayout.setHorizontalGroup( - OptionsFileSendModeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(OptionsFileSendModeLayout.createSequentialGroup() - .addGroup(OptionsFileSendModeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(OptionsFileSendModeLayout.createSequentialGroup() - .addGroup(OptionsFileSendModeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(TurboMode, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(DelayLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 199, Short.MAX_VALUE)) - .addGap(0, 0, Short.MAX_VALUE)) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, OptionsFileSendModeLayout.createSequentialGroup() - .addGap(0, 0, Short.MAX_VALUE) - .addGroup(OptionsFileSendModeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(DumbMode, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(Delay, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(AnswerDelayLabel, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(AnswerDelay, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(LineDelayLabel, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE))) - .addComponent(LineDelay, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addContainerGap()) - ); - OptionsFileSendModeLayout.setVerticalGroup( - OptionsFileSendModeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(OptionsFileSendModeLayout.createSequentialGroup() - .addComponent(TurboMode) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(DelayLabel) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(Delay, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(AnswerDelayLabel) - .addGap(1, 1, 1) - .addComponent(AnswerDelay, javax.swing.GroupLayout.PREFERRED_SIZE, 36, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(DumbMode) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(LineDelayLabel) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(LineDelay, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - - jLayeredPane2.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Data scrollback", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 10))); // NOI18N - - jLabel1.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - jLabel1.setText("Terminal"); - jLabel1.setPreferredSize(new java.awt.Dimension(40, 20)); - - jLabel7.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - jLabel7.setText("Log"); - jLabel7.setPreferredSize(new java.awt.Dimension(17, 23)); - - TerminalMaxSize.setHorizontalAlignment(javax.swing.JTextField.RIGHT); - TerminalMaxSize.setText("100"); - TerminalMaxSize.setToolTipText(""); - TerminalMaxSize.addFocusListener(new java.awt.event.FocusAdapter() { - public void focusLost(java.awt.event.FocusEvent evt) { - TerminalMaxSizeFocusLost(evt); - } - }); - - LogMaxSize.setHorizontalAlignment(javax.swing.JTextField.RIGHT); - LogMaxSize.setText("10"); - LogMaxSize.setToolTipText(""); - LogMaxSize.addFocusListener(new java.awt.event.FocusAdapter() { - public void focusLost(java.awt.event.FocusEvent evt) { - LogMaxSizeFocusLost(evt); - } - }); - LogMaxSize.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - LogMaxSizeActionPerformed(evt); - } - }); - - jLabel8.setText("kb"); - - jLabel9.setText("kb"); - - jLayeredPane2.setLayer(jLabel1, javax.swing.JLayeredPane.DEFAULT_LAYER); - jLayeredPane2.setLayer(jLabel7, javax.swing.JLayeredPane.DEFAULT_LAYER); - jLayeredPane2.setLayer(TerminalMaxSize, javax.swing.JLayeredPane.DEFAULT_LAYER); - jLayeredPane2.setLayer(LogMaxSize, javax.swing.JLayeredPane.DEFAULT_LAYER); - jLayeredPane2.setLayer(jLabel8, javax.swing.JLayeredPane.DEFAULT_LAYER); - jLayeredPane2.setLayer(jLabel9, javax.swing.JLayeredPane.DEFAULT_LAYER); - - javax.swing.GroupLayout jLayeredPane2Layout = new javax.swing.GroupLayout(jLayeredPane2); - jLayeredPane2.setLayout(jLayeredPane2Layout); - jLayeredPane2Layout.setHorizontalGroup( - jLayeredPane2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jLayeredPane2Layout.createSequentialGroup() - .addGroup(jLayeredPane2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) - .addComponent(jLabel7, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(jLabel1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(jLayeredPane2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(TerminalMaxSize, javax.swing.GroupLayout.DEFAULT_SIZE, 59, Short.MAX_VALUE) - .addComponent(LogMaxSize)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jLayeredPane2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jLabel8) - .addComponent(jLabel9)) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - jLayeredPane2Layout.setVerticalGroup( - jLayeredPane2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jLayeredPane2Layout.createSequentialGroup() - .addGroup(jLayeredPane2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 15, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(TerminalMaxSize, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel8)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jLayeredPane2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(LogMaxSize, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel7, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel9))) - ); - - jLayeredPane3.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "SerialPort", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 10))); // NOI18N - - CustomPortName.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - CustomPortName.setHorizontalAlignment(javax.swing.JTextField.LEFT); - CustomPortName.setText("/dev/AnySerialDevice"); - CustomPortName.setToolTipText(""); - CustomPortName.setEnabled(false); - CustomPortName.setMinimumSize(new java.awt.Dimension(50, 19)); - CustomPortName.addFocusListener(new java.awt.event.FocusAdapter() { - public void focusLost(java.awt.event.FocusEvent evt) { - CustomPortNameFocusLost(evt); - } - }); - - UseCustomPortName.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - UseCustomPortName.setText("Use custom serial port name"); - UseCustomPortName.setToolTipText("Use custom serial port name (AutoScan will be disabled)"); - UseCustomPortName.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - UseCustomPortNameActionPerformed(evt); - } - }); - - jLabel10.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - jLabel10.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - jLabel10.setText("(AutoScan will be disabled)"); - jLabel10.setPreferredSize(new java.awt.Dimension(17, 23)); - - AutodetectFirmware.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - AutodetectFirmware.setText("Autodetect firmware"); - AutodetectFirmware.setToolTipText("Use custom serial port name (AutoScan will be disabled)"); - AutodetectFirmware.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - AutodetectFirmwareItemStateChanged(evt); - } - }); - - CommandEcho.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - CommandEcho.setSelected(true); - CommandEcho.setText("Command Echo"); - CommandEcho.setToolTipText("Use custom serial port name (AutoScan will be disabled)"); - CommandEcho.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - CommandEchoItemStateChanged(evt); - } - }); - - jLayeredPane3.setLayer(CustomPortName, javax.swing.JLayeredPane.DEFAULT_LAYER); - jLayeredPane3.setLayer(UseCustomPortName, javax.swing.JLayeredPane.DEFAULT_LAYER); - jLayeredPane3.setLayer(jLabel10, javax.swing.JLayeredPane.DEFAULT_LAYER); - jLayeredPane3.setLayer(AutodetectFirmware, javax.swing.JLayeredPane.DEFAULT_LAYER); - jLayeredPane3.setLayer(CommandEcho, javax.swing.JLayeredPane.DEFAULT_LAYER); - - javax.swing.GroupLayout jLayeredPane3Layout = new javax.swing.GroupLayout(jLayeredPane3); - jLayeredPane3.setLayout(jLayeredPane3Layout); - jLayeredPane3Layout.setHorizontalGroup( - jLayeredPane3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(UseCustomPortName, javax.swing.GroupLayout.DEFAULT_SIZE, 161, Short.MAX_VALUE) - .addComponent(jLabel10, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(CustomPortName, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(AutodetectFirmware, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(CommandEcho, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - ); - jLayeredPane3Layout.setVerticalGroup( - jLayeredPane3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jLayeredPane3Layout.createSequentialGroup() - .addComponent(UseCustomPortName) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jLabel10, javax.swing.GroupLayout.PREFERRED_SIZE, 15, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(CustomPortName, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(AutodetectFirmware) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(CommandEcho) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - - NodeMCUSettings.setLayer(OptionsFirmware, javax.swing.JLayeredPane.DEFAULT_LAYER); - NodeMCUSettings.setLayer(OptionsOther, javax.swing.JLayeredPane.DEFAULT_LAYER); - NodeMCUSettings.setLayer(OptionsFileSendMode, javax.swing.JLayeredPane.DEFAULT_LAYER); - NodeMCUSettings.setLayer(jLayeredPane2, javax.swing.JLayeredPane.DEFAULT_LAYER); - NodeMCUSettings.setLayer(jLayeredPane3, javax.swing.JLayeredPane.DEFAULT_LAYER); - - javax.swing.GroupLayout NodeMCUSettingsLayout = new javax.swing.GroupLayout(NodeMCUSettings); - NodeMCUSettings.setLayout(NodeMCUSettingsLayout); - NodeMCUSettingsLayout.setHorizontalGroup( - NodeMCUSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(NodeMCUSettingsLayout.createSequentialGroup() - .addGroup(NodeMCUSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(OptionsOther) - .addComponent(OptionsFirmware) - .addComponent(OptionsFileSendMode, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(NodeMCUSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(jLayeredPane2) - .addComponent(jLayeredPane3)) - .addContainerGap(135, Short.MAX_VALUE)) - ); - NodeMCUSettingsLayout.setVerticalGroup( - NodeMCUSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(NodeMCUSettingsLayout.createSequentialGroup() - .addGroup(NodeMCUSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(NodeMCUSettingsLayout.createSequentialGroup() - .addComponent(OptionsFirmware, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(OptionsOther, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(NodeMCUSettingsLayout.createSequentialGroup() - .addComponent(jLayeredPane3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jLayeredPane2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) - .addGap(45, 45, 45) - .addComponent(OptionsFileSendMode, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(0, 134, Short.MAX_VALUE)) - ); - - TextTab.addTab("Settings", new javax.swing.ImageIcon(getClass().getResource("/resources/settings2.png")), NodeMCUSettings, "Settings for file sending"); // NOI18N - - javax.swing.GroupLayout NodeMCULayout = new javax.swing.GroupLayout(NodeMCU); - NodeMCU.setLayout(NodeMCULayout); - NodeMCULayout.setHorizontalGroup( - NodeMCULayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(TextTab, javax.swing.GroupLayout.DEFAULT_SIZE, 540, Short.MAX_VALUE) - ); - NodeMCULayout.setVerticalGroup( - NodeMCULayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(TextTab, javax.swing.GroupLayout.DEFAULT_SIZE, 712, Short.MAX_VALUE) - ); - - TextTab.getAccessibleContext().setAccessibleName("NewFile"); - - LeftTab.addTab(" NodeMCU & MicroPython ", NodeMCU); - - ATvXX.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout()); - - BasicATcommandsPane.setBorder(javax.swing.BorderFactory.createTitledBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.LOWERED), "Basic AT commands", javax.swing.border.TitledBorder.CENTER, javax.swing.border.TitledBorder.DEFAULT_POSITION)); - BasicATcommandsPane.setToolTipText("Basic AT commnads"); - BasicATcommandsPane.setMaximumSize(new java.awt.Dimension(445, 50)); - BasicATcommandsPane.setMinimumSize(new java.awt.Dimension(445, 50)); - BasicATcommandsPane.setOpaque(true); - BasicATcommandsPane.setLayout(new java.awt.FlowLayout()); - - cmdAT.setText("AT"); - cmdAT.setToolTipText("Super simple command \"AT\""); - cmdAT.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdATActionPerformed(evt); - } - }); - BasicATcommandsPane.add(cmdAT); - - AT_Restart.setText("RST"); - AT_Restart.setToolTipText("Restart"); - AT_Restart.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - AT_RestartActionPerformed(evt); - } - }); - BasicATcommandsPane.add(AT_Restart); - - AT_GMR.setText("GMR"); - AT_GMR.setToolTipText("Get version info"); - AT_GMR.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - AT_GMRActionPerformed(evt); - } - }); - BasicATcommandsPane.add(AT_GMR); - - GSLP.setText("GSLP"); - GSLP.setToolTipText("Enter deep-sleep mode on 5sec"); - GSLP.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - GSLPActionPerformed(evt); - } - }); - BasicATcommandsPane.add(GSLP); - - ATE0.setText("ATE0"); - ATE0.setToolTipText("Echo OFF"); - ATE0.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - ATE0ActionPerformed(evt); - } - }); - BasicATcommandsPane.add(ATE0); - - ATE1.setText("ATE1"); - ATE1.setToolTipText("Echo ON"); - ATE1.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - ATE1ActionPerformed(evt); - } - }); - BasicATcommandsPane.add(ATE1); - - UPDATE.setText("UPD"); - UPDATE.setToolTipText("Send command \"AT+UPDATE\" for firmware Cloud update "); - UPDATE.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - UPDATEActionPerformed(evt); - } - }); - BasicATcommandsPane.add(UPDATE); - - ATvXX.add(BasicATcommandsPane, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 545, 70)); - - TabAT.setTabLayoutPolicy(javax.swing.JTabbedPane.SCROLL_TAB_LAYOUT); - TabAT.setToolTipText("ESP8266 AT commands v0.20"); - TabAT.setAlignmentX(0.0F); - TabAT.setAlignmentY(0.0F); - TabAT.setFocusable(false); - TabAT.setOpaque(true); - - binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, AT_Station, org.jdesktop.beansbinding.ELProperty.create("${border}"), TabAT, org.jdesktop.beansbinding.BeanProperty.create("border")); - bindingGroup.addBinding(binding); - - AT_Station.setToolTipText("WiFi commands"); - AT_Station.setAlignmentX(0.0F); - AT_Station.setAlignmentY(0.0F); - AT_Station.setAutoscrolls(true); - AT_Station.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - AT_Station.setInheritsPopupMenu(true); - AT_Station.setMinimumSize(new java.awt.Dimension(0, 130)); - AT_Station.setName(""); // NOI18N - AT_Station.setOpaque(false); - AT_Station.setPreferredSize(new java.awt.Dimension(457, 291)); - AT_Station.addFocusListener(new java.awt.event.FocusAdapter() { - public void focusGained(java.awt.event.FocusEvent evt) { - AT_StationFocusGained(evt); - } - }); - AT_Station.addComponentListener(new java.awt.event.ComponentAdapter() { - public void componentShown(java.awt.event.ComponentEvent evt) { - AT_StationComponentShown(evt); - } - }); - - TopWiFiStaFiller.setOpaque(true); - - WiFiStationPane.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "WiFi Station")); - WiFiStationPane.setAlignmentX(0.0F); - WiFiStationPane.setAlignmentY(0.0F); - WiFiStationPane.setMaximumSize(new java.awt.Dimension(463, 291)); - WiFiStationPane.setMinimumSize(new java.awt.Dimension(463, 291)); - WiFiStationPane.setName(""); // NOI18N - WiFiStationPane.setOpaque(true); - - cmdGetCWJAP.setFont(cmdGetCWJAP.getFont().deriveFont((float)12)); - cmdGetCWJAP.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/information.png"))); // NOI18N - cmdGetCWJAP.setText("CWJAP? - Connection info"); - cmdGetCWJAP.setToolTipText("Query AP’s info which is connect by ESP8266"); - cmdGetCWJAP.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdGetCWJAP.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdGetCWJAP.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdGetCWJAP.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdGetCWJAP.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdGetCWJAPActionPerformed(evt); - } - }); - - cmdSetCWJAP.setFont(cmdSetCWJAP.getFont().deriveFont((float)12)); - cmdSetCWJAP.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/connect3.png"))); // NOI18N - cmdSetCWJAP.setText("CWJAP Connect to AP"); - cmdSetCWJAP.setToolTipText("Connect to WiFi Access Point"); - cmdSetCWJAP.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdSetCWJAP.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdSetCWJAP.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdSetCWJAP.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdSetCWJAP.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSetCWJAPActionPerformed(evt); - } - }); - - SSID.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SSID.setText("SSID"); - SSID.setToolTipText("Enter WiFi SSID"); - SSID.setMaximumSize(new java.awt.Dimension(100, 23)); - SSID.setMinimumSize(new java.awt.Dimension(100, 23)); - SSID.setPreferredSize(new java.awt.Dimension(100, 23)); - SSID.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - SSIDActionPerformed(evt); - } - }); - SSID.addFocusListener(new java.awt.event.FocusAdapter() { - public void focusGained(java.awt.event.FocusEvent evt) { - SSIDFocusGained(evt); - } - }); - - PASS.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - PASS.setText("password"); - PASS.setToolTipText("Enter WiFi password"); - PASS.setMaximumSize(new java.awt.Dimension(104, 23)); - PASS.setMinimumSize(new java.awt.Dimension(104, 23)); - PASS.setPreferredSize(new java.awt.Dimension(104, 23)); - PASS.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - PASSActionPerformed(evt); - } - }); - PASS.addFocusListener(new java.awt.event.FocusAdapter() { - public void focusGained(java.awt.event.FocusEvent evt) { - PASSFocusGained(evt); - } - }); - - cmdSetCWQAP.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdSetCWQAP.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/disconnect3.png"))); // NOI18N - cmdSetCWQAP.setText("CWQAP - Disconnect from AP"); - cmdSetCWQAP.setToolTipText("Disconnect from WiFi Access Point"); - cmdSetCWQAP.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdSetCWQAP.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdSetCWQAP.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdSetCWQAP.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdSetCWQAP.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSetCWQAPActionPerformed(evt); - } - }); - - cmdGetCIPSTAMAC.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdGetCIPSTAMAC.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/get.png"))); // NOI18N - cmdGetCIPSTAMAC.setText("CIPSTAMAC? Get MAC"); - cmdGetCIPSTAMAC.setToolTipText("Get Station MAC address"); - cmdGetCIPSTAMAC.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdGetCIPSTAMAC.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdGetCIPSTAMAC.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdGetCIPSTAMAC.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdGetCIPSTAMAC.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdGetCIPSTAMACActionPerformed(evt); - } - }); - - cmdSetCIPSTAMAC.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdSetCIPSTAMAC.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/set.png"))); // NOI18N - cmdSetCIPSTAMAC.setText("CIPSTAMAC= Set MAC Station"); - cmdSetCIPSTAMAC.setToolTipText("Set Station MAC address"); - cmdSetCIPSTAMAC.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdSetCIPSTAMAC.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdSetCIPSTAMAC.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdSetCIPSTAMAC.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdSetCIPSTAMAC.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSetCIPSTAMACActionPerformed(evt); - } - }); - - try { - MAC.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.MaskFormatter("AA:AA:AA:AA:AA:AA"))); - } catch (java.text.ParseException ex) { - ex.printStackTrace(); - } - MAC.setText("FF:FF:FF:FF:FF:FF"); - MAC.setToolTipText("Station MAC address"); - MAC.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - MAC.setMaximumSize(new java.awt.Dimension(210, 23)); - MAC.setMinimumSize(new java.awt.Dimension(210, 23)); - MAC.setPreferredSize(new java.awt.Dimension(210, 23)); - - cmdGetCIPSTA.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdGetCIPSTA.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/get.png"))); // NOI18N - cmdGetCIPSTA.setText("CIPSTA? Get Station IP"); - cmdGetCIPSTA.setToolTipText("Get Station IP address"); - cmdGetCIPSTA.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdGetCIPSTA.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdGetCIPSTA.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdGetCIPSTA.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdGetCIPSTA.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdGetCIPSTAActionPerformed(evt); - } - }); - - cmdSetCIPSTA.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdSetCIPSTA.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/set.png"))); // NOI18N - cmdSetCIPSTA.setText("CIPSTA= Set Station IP"); - cmdSetCIPSTA.setToolTipText("Set Station IP address"); - cmdSetCIPSTA.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdSetCIPSTA.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdSetCIPSTA.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdSetCIPSTA.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdSetCIPSTA.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSetCIPSTAActionPerformed(evt); - } - }); - - StationIP.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - StationIP.setText("192.168.1.50"); - StationIP.setMaximumSize(new java.awt.Dimension(210, 23)); - StationIP.setMinimumSize(new java.awt.Dimension(210, 23)); - StationIP.setPreferredSize(new java.awt.Dimension(210, 23)); - - WiFiStationPane.setLayer(cmdGetCWJAP, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFiStationPane.setLayer(cmdSetCWJAP, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFiStationPane.setLayer(SSID, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFiStationPane.setLayer(PASS, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFiStationPane.setLayer(cmdSetCWQAP, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFiStationPane.setLayer(cmdGetCIPSTAMAC, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFiStationPane.setLayer(cmdSetCIPSTAMAC, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFiStationPane.setLayer(MAC, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFiStationPane.setLayer(cmdGetCIPSTA, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFiStationPane.setLayer(cmdSetCIPSTA, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFiStationPane.setLayer(StationIP, javax.swing.JLayeredPane.DEFAULT_LAYER); - - javax.swing.GroupLayout WiFiStationPaneLayout = new javax.swing.GroupLayout(WiFiStationPane); - WiFiStationPane.setLayout(WiFiStationPaneLayout); - WiFiStationPaneLayout.setHorizontalGroup( - WiFiStationPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(WiFiStationPaneLayout.createSequentialGroup() - .addContainerGap() - .addGroup(WiFiStationPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(MAC, javax.swing.GroupLayout.PREFERRED_SIZE, 210, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdSetCIPSTAMAC, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGroup(WiFiStationPaneLayout.createSequentialGroup() - .addGroup(WiFiStationPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(cmdGetCWJAP, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdSetCWQAP, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGroup(WiFiStationPaneLayout.createSequentialGroup() - .addGap(1, 1, 1) - .addComponent(cmdGetCIPSTAMAC, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(WiFiStationPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addGroup(WiFiStationPaneLayout.createSequentialGroup() - .addComponent(SSID, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(PASS, javax.swing.GroupLayout.PREFERRED_SIZE, 1, Short.MAX_VALUE)) - .addComponent(cmdSetCWJAP, javax.swing.GroupLayout.PREFERRED_SIZE, 201, javax.swing.GroupLayout.PREFERRED_SIZE))) - .addComponent(cmdGetCIPSTA, javax.swing.GroupLayout.PREFERRED_SIZE, 210, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(StationIP, javax.swing.GroupLayout.PREFERRED_SIZE, 210, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdSetCIPSTA, javax.swing.GroupLayout.PREFERRED_SIZE, 210, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - WiFiStationPaneLayout.setVerticalGroup( - WiFiStationPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(WiFiStationPaneLayout.createSequentialGroup() - .addContainerGap() - .addGroup(WiFiStationPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(cmdGetCWJAP, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(SSID, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(PASS, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(WiFiStationPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(cmdSetCWQAP, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdSetCWJAP, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cmdGetCIPSTAMAC, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(MAC, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cmdSetCIPSTAMAC, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cmdGetCIPSTA, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(StationIP, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cmdSetCIPSTA, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(201, Short.MAX_VALUE)) - ); - - WiFiStationPaneLayout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {cmdGetCIPSTA, cmdGetCWJAP, cmdSetCIPSTA, cmdSetCWQAP}); - - WiFiStationPaneLayout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {MAC, StationIP, cmdGetCIPSTAMAC, cmdSetCIPSTAMAC, cmdSetCWJAP}); - - javax.swing.GroupLayout AT_StationLayout = new javax.swing.GroupLayout(AT_Station); - AT_Station.setLayout(AT_StationLayout); - AT_StationLayout.setHorizontalGroup( - AT_StationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(TopWiFiStaFiller, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(WiFiStationPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - ); - AT_StationLayout.setVerticalGroup( - AT_StationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, AT_StationLayout.createSequentialGroup() - .addComponent(TopWiFiStaFiller, javax.swing.GroupLayout.PREFERRED_SIZE, 150, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(WiFiStationPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - - TabAT.addTab("WiFi Station", null, AT_Station, "WiFi AT commands"); - AT_Station.getAccessibleContext().setAccessibleName(""); - AT_Station.getAccessibleContext().setAccessibleDescription("WiFi AT commands"); - - AT_SoftAP.addFocusListener(new java.awt.event.FocusAdapter() { - public void focusGained(java.awt.event.FocusEvent evt) { - AT_SoftAPFocusGained(evt); - } - }); - AT_SoftAP.addComponentListener(new java.awt.event.ComponentAdapter() { - public void componentShown(java.awt.event.ComponentEvent evt) { - AT_SoftAPComponentShown(evt); - } - }); - - WiFisoftAPPane.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "WiFi softAP")); - WiFisoftAPPane.setAlignmentX(0.0F); - WiFisoftAPPane.setAlignmentY(0.0F); - WiFisoftAPPane.setMaximumSize(new java.awt.Dimension(463, 291)); - WiFisoftAPPane.setMinimumSize(new java.awt.Dimension(463, 291)); - WiFisoftAPPane.setOpaque(true); - - cmdSetCWSAP.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdSetCWSAP.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/server1_start.png"))); // NOI18N - cmdSetCWSAP.setText("CWSAP= Set softAP config"); - cmdSetCWSAP.setToolTipText("Set configuraton of softAP mode"); - cmdSetCWSAP.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdSetCWSAP.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdSetCWSAP.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdSetCWSAP.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdSetCWSAP.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSetCWSAPActionPerformed(evt); - } - }); - - cmdGetCWSAP.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdGetCWSAP.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/information.png"))); // NOI18N - cmdGetCWSAP.setText("AT+CWSAP? Get softAP config"); - cmdGetCWSAP.setToolTipText("Get configuraton of softAP mode"); - cmdGetCWSAP.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdGetCWSAP.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdGetCWSAP.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdGetCWSAP.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdGetCWSAP.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdGetCWSAPActionPerformed(evt); - } - }); - - cmdGetCIPAPMAC.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdGetCIPAPMAC.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/get.png"))); // NOI18N - cmdGetCIPAPMAC.setText("CIPAPMAC Get softAP MAC"); - cmdGetCIPAPMAC.setToolTipText("Get MAC address of ESP8266 softAP"); - cmdGetCIPAPMAC.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdGetCIPAPMAC.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdGetCIPAPMAC.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdGetCIPAPMAC.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdGetCIPAPMAC.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdGetCIPAPMACActionPerformed(evt); - } - }); - - cmdGetCWLIF.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdGetCWLIF.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/get.png"))); // NOI18N - cmdGetCWLIF.setText("CWLIF Get connected clients IP"); - cmdGetCWLIF.setToolTipText("Get IP adresses softAP clients"); - cmdGetCWLIF.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdGetCWLIF.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdGetCWLIF.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdGetCWLIF.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdGetCWLIF.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdGetCWLIFActionPerformed(evt); - } - }); - - SSIDsoftAP.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SSIDsoftAP.setText("SSID"); - SSIDsoftAP.setToolTipText("Enter WiFi SSID"); - SSIDsoftAP.setMaximumSize(new java.awt.Dimension(100, 23)); - SSIDsoftAP.setMinimumSize(new java.awt.Dimension(100, 23)); - SSIDsoftAP.setPreferredSize(new java.awt.Dimension(100, 23)); - SSIDsoftAP.addFocusListener(new java.awt.event.FocusAdapter() { - public void focusGained(java.awt.event.FocusEvent evt) { - SSIDsoftAPFocusGained(evt); - } - }); - SSIDsoftAP.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - SSIDsoftAPActionPerformed(evt); - } - }); - - PASSsoftAP.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - PASSsoftAP.setText("password"); - PASSsoftAP.setToolTipText("Enter WiFi password"); - PASSsoftAP.setMaximumSize(new java.awt.Dimension(104, 23)); - PASSsoftAP.setMinimumSize(new java.awt.Dimension(104, 23)); - PASSsoftAP.setPreferredSize(new java.awt.Dimension(104, 23)); - PASSsoftAP.addFocusListener(new java.awt.event.FocusAdapter() { - public void focusGained(java.awt.event.FocusEvent evt) { - PASSsoftAPFocusGained(evt); - } - }); - PASSsoftAP.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - PASSsoftAPActionPerformed(evt); - } - }); - - cmdGetCIPAP.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdGetCIPAP.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/get.png"))); // NOI18N - cmdGetCIPAP.setText("CIPAP Get softAP IP"); - cmdGetCIPAP.setToolTipText("Get IP address of ESP8266 softAP"); - cmdGetCIPAP.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdGetCIPAP.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdGetCIPAP.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdGetCIPAP.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdGetCIPAP.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdGetCIPAPActionPerformed(evt); - } - }); - - cmdSetCIPAPMAC.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdSetCIPAPMAC.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/set.png"))); // NOI18N - cmdSetCIPAPMAC.setToolTipText("Set softAP MAC address"); - cmdSetCIPAPMAC.setLabel("CIPAPMAC= Set MAC softAP"); - cmdSetCIPAPMAC.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdSetCIPAPMAC.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdSetCIPAPMAC.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdSetCIPAPMAC.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdSetCIPAPMAC.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSetCIPAPMACActionPerformed(evt); - } - }); - - try { - MAC1.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.MaskFormatter("AA:AA:AA:AA:AA:AA"))); - } catch (java.text.ParseException ex) { - ex.printStackTrace(); - } - MAC1.setText("FF:FF:FF:FF:FF:FF"); - MAC1.setToolTipText("Station MAC address"); - MAC1.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - MAC1.setMaximumSize(new java.awt.Dimension(2108, 23)); - MAC1.setMinimumSize(new java.awt.Dimension(2108, 23)); - MAC1.setPreferredSize(new java.awt.Dimension(2108, 23)); - - encryption.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - encryption.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "0 - Open", "1 - WPA_PSK", "2 - WPA2_PSK", "3 - WPA_WPA2_PSK" })); - encryption.setSelectedIndex(2); - encryption.setToolTipText("Set encryption type softAP"); - encryption.setMaximumSize(new java.awt.Dimension(104, 23)); - encryption.setMinimumSize(new java.awt.Dimension(104, 23)); - encryption.setPreferredSize(new java.awt.Dimension(104, 23)); - - channel.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - channel.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "channel 1", "channel 2", "channel 3", "channel 4", "channel 5", "channel 6", "channel 7", "channel 8", "channel 9", "channel 10", "channel 11", "channel 12", "channel 13" })); - channel.setToolTipText("Set channell ID softAP"); - channel.setAlignmentX(0.0F); - channel.setMaximumSize(new java.awt.Dimension(100, 23)); - channel.setMinimumSize(new java.awt.Dimension(100, 23)); - channel.setPreferredSize(new java.awt.Dimension(100, 23)); - - softAPIP.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - softAPIP.setText("192.168.4.1"); - softAPIP.setToolTipText(""); - softAPIP.setMaximumSize(new java.awt.Dimension(210, 23)); - softAPIP.setMinimumSize(new java.awt.Dimension(210, 23)); - softAPIP.setPreferredSize(new java.awt.Dimension(210, 23)); - - cmdSetCIPAP.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdSetCIPAP.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/set.png"))); // NOI18N - cmdSetCIPAP.setToolTipText("Set softAP IP address"); - cmdSetCIPAP.setLabel("CIPAP= Set softAP IP"); - cmdSetCIPAP.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdSetCIPAP.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdSetCIPAP.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdSetCIPAP.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdSetCIPAP.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSetCIPAPActionPerformed(evt); - } - }); - - WiFisoftAPPane.setLayer(cmdSetCWSAP, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFisoftAPPane.setLayer(cmdGetCWSAP, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFisoftAPPane.setLayer(cmdGetCIPAPMAC, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFisoftAPPane.setLayer(cmdGetCWLIF, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFisoftAPPane.setLayer(SSIDsoftAP, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFisoftAPPane.setLayer(PASSsoftAP, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFisoftAPPane.setLayer(cmdGetCIPAP, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFisoftAPPane.setLayer(cmdSetCIPAPMAC, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFisoftAPPane.setLayer(MAC1, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFisoftAPPane.setLayer(encryption, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFisoftAPPane.setLayer(channel, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFisoftAPPane.setLayer(softAPIP, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFisoftAPPane.setLayer(cmdSetCIPAP, javax.swing.JLayeredPane.DEFAULT_LAYER); - - javax.swing.GroupLayout WiFisoftAPPaneLayout = new javax.swing.GroupLayout(WiFisoftAPPane); - WiFisoftAPPane.setLayout(WiFisoftAPPaneLayout); - WiFisoftAPPaneLayout.setHorizontalGroup( - WiFisoftAPPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(WiFisoftAPPaneLayout.createSequentialGroup() - .addContainerGap() - .addGroup(WiFisoftAPPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(WiFisoftAPPaneLayout.createSequentialGroup() - .addGroup(WiFisoftAPPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(MAC1, javax.swing.GroupLayout.PREFERRED_SIZE, 210, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdSetCIPAPMAC, javax.swing.GroupLayout.PREFERRED_SIZE, 210, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdGetCIPAP, javax.swing.GroupLayout.PREFERRED_SIZE, 210, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdSetCIPAP, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGap(0, 0, Short.MAX_VALUE)) - .addGroup(WiFisoftAPPaneLayout.createSequentialGroup() - .addGroup(WiFisoftAPPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) - .addGroup(WiFisoftAPPaneLayout.createSequentialGroup() - .addComponent(cmdGetCIPAPMAC, javax.swing.GroupLayout.PREFERRED_SIZE, 210, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(cmdSetCWSAP, javax.swing.GroupLayout.PREFERRED_SIZE, 1, Short.MAX_VALUE)) - .addGroup(WiFisoftAPPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(WiFisoftAPPaneLayout.createSequentialGroup() - .addGroup(WiFisoftAPPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(cmdGetCWSAP, javax.swing.GroupLayout.PREFERRED_SIZE, 210, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdGetCWLIF, javax.swing.GroupLayout.PREFERRED_SIZE, 210, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(WiFisoftAPPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(SSIDsoftAP, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(channel, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(WiFisoftAPPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(PASSsoftAP, javax.swing.GroupLayout.PREFERRED_SIZE, 95, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(encryption, 0, 1, Short.MAX_VALUE))) - .addComponent(softAPIP, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) - ); - WiFisoftAPPaneLayout.setVerticalGroup( - WiFisoftAPPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(WiFisoftAPPaneLayout.createSequentialGroup() - .addContainerGap() - .addGroup(WiFisoftAPPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(SSIDsoftAP, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(PASSsoftAP, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdGetCWSAP, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(WiFisoftAPPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(WiFisoftAPPaneLayout.createSequentialGroup() - .addGap(4, 4, 4) - .addGroup(WiFisoftAPPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(channel, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(encryption, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE))) - .addGroup(WiFisoftAPPaneLayout.createSequentialGroup() - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cmdGetCWLIF, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE))) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(WiFisoftAPPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(cmdGetCIPAPMAC, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdSetCWSAP, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(MAC1, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cmdSetCIPAPMAC, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cmdGetCIPAP, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(softAPIP, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cmdSetCIPAP, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(246, Short.MAX_VALUE)) - ); - - TopWiFiAPFiller.setOpaque(true); - - AT_SoftAP.setLayer(WiFisoftAPPane, javax.swing.JLayeredPane.DEFAULT_LAYER); - AT_SoftAP.setLayer(TopWiFiAPFiller, javax.swing.JLayeredPane.DEFAULT_LAYER); - - javax.swing.GroupLayout AT_SoftAPLayout = new javax.swing.GroupLayout(AT_SoftAP); - AT_SoftAP.setLayout(AT_SoftAPLayout); - AT_SoftAPLayout.setHorizontalGroup( - AT_SoftAPLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(WiFisoftAPPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(TopWiFiAPFiller, javax.swing.GroupLayout.DEFAULT_SIZE, 535, Short.MAX_VALUE) - ); - AT_SoftAPLayout.setVerticalGroup( - AT_SoftAPLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, AT_SoftAPLayout.createSequentialGroup() - .addComponent(TopWiFiAPFiller, javax.swing.GroupLayout.PREFERRED_SIZE, 150, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(WiFisoftAPPane, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - ); - - TabAT.addTab("WiFi softAP", AT_SoftAP); - - AT_Client.setToolTipText("TCP/IP related commands"); - AT_Client.setAlignmentX(0.0F); - AT_Client.setAlignmentY(0.0F); - AT_Client.setOpaque(false); - AT_Client.addFocusListener(new java.awt.event.FocusAdapter() { - public void focusGained(java.awt.event.FocusEvent evt) { - AT_ClientFocusGained(evt); - } - }); - AT_Client.addComponentListener(new java.awt.event.ComponentAdapter() { - public void componentShown(java.awt.event.ComponentEvent evt) { - AT_ClientComponentShown(evt); - } - }); - - TopWiFiStaFiller1.setOpaque(true); - - common.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "Common parameters for commands", javax.swing.border.TitledBorder.CENTER, javax.swing.border.TitledBorder.DEFAULT_POSITION)); - common.setMaximumSize(new java.awt.Dimension(445, 54)); - common.setMinimumSize(new java.awt.Dimension(445, 54)); - common.setPreferredSize(new java.awt.Dimension(445, 54)); - - conn_id.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "0", "1", "2", "3", "4" })); - conn_id.setToolTipText("Connection ID"); - - MUXGroup.add(single); - single.setText("CIPMUX=0 - Single"); - single.setToolTipText("Single connection"); - single.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - singleItemStateChanged(evt); - } - }); - - MUXGroup.add(multi); - multi.setSelected(true); - multi.setText("CIPMUX=1 - Multiple"); - multi.setToolTipText("Multiple connection"); - multi.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - multiItemStateChanged(evt); - } - }); - multi.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - multiActionPerformed(evt); - } - }); - - jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); - jLabel4.setText("Connection ID"); - - javax.swing.GroupLayout commonLayout = new javax.swing.GroupLayout(common); - common.setLayout(commonLayout); - commonLayout.setHorizontalGroup( - commonLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(commonLayout.createSequentialGroup() - .addGap(2, 2, 2) - .addComponent(jLabel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(conn_id, javax.swing.GroupLayout.PREFERRED_SIZE, 67, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(multi) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(single, javax.swing.GroupLayout.PREFERRED_SIZE, 151, javax.swing.GroupLayout.PREFERRED_SIZE)) - ); - commonLayout.setVerticalGroup( - commonLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(commonLayout.createSequentialGroup() - .addGroup(commonLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(conn_id, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(multi) - .addComponent(single) - .addComponent(jLabel4)) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - - cmdGetCIPSTART.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/information.png"))); // NOI18N - cmdGetCIPSTART.setText("CIPSTART=? - Connection info"); - cmdGetCIPSTART.setToolTipText("Get the information of param"); - cmdGetCIPSTART.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdGetCIPSTARTActionPerformed(evt); - } - }); - - UDP.setBorder(javax.swing.BorderFactory.createTitledBorder("UDP only")); - UDP.addPropertyChangeListener(new java.beans.PropertyChangeListener() { - public void propertyChange(java.beans.PropertyChangeEvent evt) { - UDPPropertyChange(evt); - } - }); - - udp_local_port.setToolTipText("Local UDP port"); - udp_local_port.setEnabled(false); - - jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - jLabel2.setText("Local port"); - - udp_mode.setToolTipText("Local UDP port"); - udp_mode.setEnabled(false); - - jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - jLabel3.setText("mode"); - - UDP.setLayer(udp_local_port, javax.swing.JLayeredPane.DEFAULT_LAYER); - UDP.setLayer(jLabel2, javax.swing.JLayeredPane.DEFAULT_LAYER); - UDP.setLayer(udp_mode, javax.swing.JLayeredPane.DEFAULT_LAYER); - UDP.setLayer(jLabel3, javax.swing.JLayeredPane.DEFAULT_LAYER); - - javax.swing.GroupLayout UDPLayout = new javax.swing.GroupLayout(UDP); - UDP.setLayout(UDPLayout); - UDPLayout.setHorizontalGroup( - UDPLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(UDPLayout.createSequentialGroup() - .addGroup(UDPLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(udp_local_port)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(UDPLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(udp_mode) - .addComponent(jLabel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addGap(6, 6, 6)) - ); - UDPLayout.setVerticalGroup( - UDPLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(UDPLayout.createSequentialGroup() - .addGroup(UDPLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel2) - .addComponent(jLabel3)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(UDPLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(udp_local_port, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(udp_mode, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addContainerGap()) - ); - - remote_address.setText("192.168.1.1"); - remote_address.setToolTipText("Remote IP address"); - - remote_port.setText("80"); - remote_port.setToolTipText("Remote port"); - - protocol.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "TCP", "UDP" })); - protocol.setToolTipText("Connection type: TCP or UDP"); - protocol.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - protocolItemStateChanged(evt); - } - }); - - cmdSetCIPSTART.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/connect3.png"))); // NOI18N - cmdSetCIPSTART.setText("AT+CIPSTART= - Start connection"); - cmdSetCIPSTART.setToolTipText("Start a connection as client"); - cmdSetCIPSTART.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSetCIPSTARTActionPerformed(evt); - } - }); - - data.setColumns(15); - data.setRows(5); - data.setTabSize(4); - data.setText("GET / HTTP/1.0\nHost: 192.168.1.1\nConnection: keep-alive\nAccept: */*\n\n"); - data.setToolTipText("Data to send to remote client"); - data.setCaretPosition(1); - jScrollData.setViewportView(data); - - cmdCIPSEND.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/level up.png"))); // NOI18N - cmdCIPSEND.setText("AT+CIPSEND= - Send data"); - cmdCIPSEND.setToolTipText("Send data to remote client"); - cmdCIPSEND.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdCIPSENDActionPerformed(evt); - } - }); - - cmdCIPSENDinteractive.setText("AT+CIPSEND - Interactive "); - cmdCIPSENDinteractive.setToolTipText("Send data to remote client in interactive mode. After all data sent, type \"+++\""); - cmdCIPSENDinteractive.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdCIPSENDinteractiveActionPerformed(evt); - } - }); - - cmdSetCIPCLOSE.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/disconnect3.png"))); // NOI18N - cmdSetCIPCLOSE.setText("AT+CIPCLOSE - Close connection"); - cmdSetCIPCLOSE.setToolTipText("Close current connection in Single mode and close connection in Multiple mode"); - cmdSetCIPCLOSE.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSetCIPCLOSEActionPerformed(evt); - } - }); - - TCPclientBottomPane.setLayer(common, javax.swing.JLayeredPane.DEFAULT_LAYER); - TCPclientBottomPane.setLayer(cmdGetCIPSTART, javax.swing.JLayeredPane.DEFAULT_LAYER); - TCPclientBottomPane.setLayer(UDP, javax.swing.JLayeredPane.DEFAULT_LAYER); - TCPclientBottomPane.setLayer(remote_address, javax.swing.JLayeredPane.DEFAULT_LAYER); - TCPclientBottomPane.setLayer(remote_port, javax.swing.JLayeredPane.DEFAULT_LAYER); - TCPclientBottomPane.setLayer(protocol, javax.swing.JLayeredPane.DEFAULT_LAYER); - TCPclientBottomPane.setLayer(cmdSetCIPSTART, javax.swing.JLayeredPane.DEFAULT_LAYER); - TCPclientBottomPane.setLayer(jScrollData, javax.swing.JLayeredPane.DEFAULT_LAYER); - TCPclientBottomPane.setLayer(cmdCIPSEND, javax.swing.JLayeredPane.DEFAULT_LAYER); - TCPclientBottomPane.setLayer(cmdCIPSENDinteractive, javax.swing.JLayeredPane.DEFAULT_LAYER); - TCPclientBottomPane.setLayer(cmdSetCIPCLOSE, javax.swing.JLayeredPane.DEFAULT_LAYER); - - javax.swing.GroupLayout TCPclientBottomPaneLayout = new javax.swing.GroupLayout(TCPclientBottomPane); - TCPclientBottomPane.setLayout(TCPclientBottomPaneLayout); - TCPclientBottomPaneLayout.setHorizontalGroup( - TCPclientBottomPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(common, javax.swing.GroupLayout.DEFAULT_SIZE, 535, Short.MAX_VALUE) - .addGroup(TCPclientBottomPaneLayout.createSequentialGroup() - .addComponent(UDP, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(TCPclientBottomPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(TCPclientBottomPaneLayout.createSequentialGroup() - .addComponent(remote_address, javax.swing.GroupLayout.PREFERRED_SIZE, 97, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(remote_port, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(protocol, javax.swing.GroupLayout.PREFERRED_SIZE, 68, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addComponent(cmdSetCIPSTART)) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addGroup(TCPclientBottomPaneLayout.createSequentialGroup() - .addComponent(jScrollData) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(TCPclientBottomPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(TCPclientBottomPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(cmdCIPSEND, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(cmdCIPSENDinteractive, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(cmdSetCIPCLOSE, javax.swing.GroupLayout.DEFAULT_SIZE, 230, Short.MAX_VALUE)) - .addComponent(cmdGetCIPSTART, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 230, javax.swing.GroupLayout.PREFERRED_SIZE))) - ); - TCPclientBottomPaneLayout.setVerticalGroup( - TCPclientBottomPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, TCPclientBottomPaneLayout.createSequentialGroup() - .addComponent(common, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGroup(TCPclientBottomPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(TCPclientBottomPaneLayout.createSequentialGroup() - .addGap(18, 18, 18) - .addGroup(TCPclientBottomPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(remote_address, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(remote_port, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(protocol, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cmdSetCIPSTART)) - .addGroup(TCPclientBottomPaneLayout.createSequentialGroup() - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(UDP, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(TCPclientBottomPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(TCPclientBottomPaneLayout.createSequentialGroup() - .addComponent(cmdGetCIPSTART) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cmdCIPSEND) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cmdCIPSENDinteractive) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cmdSetCIPCLOSE) - .addContainerGap(295, Short.MAX_VALUE)) - .addComponent(jScrollData))) - ); - - javax.swing.GroupLayout AT_ClientLayout = new javax.swing.GroupLayout(AT_Client); - AT_Client.setLayout(AT_ClientLayout); - AT_ClientLayout.setHorizontalGroup( - AT_ClientLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(TCPclientBottomPane) - .addComponent(TopWiFiStaFiller1, javax.swing.GroupLayout.DEFAULT_SIZE, 535, Short.MAX_VALUE) - ); - AT_ClientLayout.setVerticalGroup( - AT_ClientLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(AT_ClientLayout.createSequentialGroup() - .addComponent(TopWiFiStaFiller1, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(TCPclientBottomPane)) - ); - - TabAT.addTab("TCP/IP client", AT_Client); - AT_Client.getAccessibleContext().setAccessibleName("AT_IP"); - AT_Client.getAccessibleContext().setAccessibleDescription(""); - - AT_Server.setOpaque(false); - AT_Server.addFocusListener(new java.awt.event.FocusAdapter() { - public void focusGained(java.awt.event.FocusEvent evt) { - AT_ServerFocusGained(evt); - } - }); - AT_Server.addComponentListener(new java.awt.event.ComponentAdapter() { - public void componentShown(java.awt.event.ComponentEvent evt) { - AT_ServerComponentShown(evt); - } - }); - - TCPServerTopFiller.setOpaque(true); - - TCPServerBottomPane.setBorder(javax.swing.BorderFactory.createEtchedBorder()); - TCPServerBottomPane.setMaximumSize(new java.awt.Dimension(463, 377)); - TCPServerBottomPane.setMinimumSize(new java.awt.Dimension(463, 377)); - TCPServerBottomPane.setOpaque(true); - - cmdGetCIPMODE.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdGetCIPMODE.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/information.png"))); // NOI18N - cmdGetCIPMODE.setText("CIPMODE? 0 - normal"); - cmdGetCIPMODE.setToolTipText("Get current transfer mode (0- normal, 1 -unvarnished)"); - cmdGetCIPMODE.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdGetCIPMODE.setMaximumSize(new java.awt.Dimension(120, 23)); - cmdGetCIPMODE.setMinimumSize(new java.awt.Dimension(120, 23)); - cmdGetCIPMODE.setPreferredSize(new java.awt.Dimension(120, 23)); - cmdGetCIPMODE.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdGetCIPMODEActionPerformed(evt); - } - }); - - cmdSetCIPMODE0.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdSetCIPMODE0.setText("CIPMODE=0"); - cmdSetCIPMODE0.setToolTipText("Set current transfer mode to 0 (normal mode)"); - cmdSetCIPMODE0.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdSetCIPMODE0.setMaximumSize(new java.awt.Dimension(120, 23)); - cmdSetCIPMODE0.setMinimumSize(new java.awt.Dimension(120, 23)); - cmdSetCIPMODE0.setPreferredSize(new java.awt.Dimension(120, 23)); - cmdSetCIPMODE0.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSetCIPMODE0ActionPerformed(evt); - } - }); - - cmdSetCIPMODE1.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdSetCIPMODE1.setText("CIPMODE=1"); - cmdSetCIPMODE1.setToolTipText("Set current transfer mode to 1 (unvarnished mode)"); - cmdSetCIPMODE1.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdSetCIPMODE1.setMaximumSize(new java.awt.Dimension(120, 23)); - cmdSetCIPMODE1.setMinimumSize(new java.awt.Dimension(120, 23)); - cmdSetCIPMODE1.setPreferredSize(new java.awt.Dimension(120, 23)); - cmdSetCIPMODE1.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSetCIPMODE1ActionPerformed(evt); - } - }); - - cmdSetCIPSERVER.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdSetCIPSERVER.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/web_server_start.png"))); // NOI18N - cmdSetCIPSERVER.setText("CIPSERVER Start/Stop"); - cmdSetCIPSERVER.setToolTipText("Set TCP server (Start and down)"); - cmdSetCIPSERVER.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdSetCIPSERVER.setMaximumSize(new java.awt.Dimension(120, 23)); - cmdSetCIPSERVER.setMinimumSize(new java.awt.Dimension(120, 23)); - cmdSetCIPSERVER.setPreferredSize(new java.awt.Dimension(120, 23)); - cmdSetCIPSERVER.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSetCIPSERVERActionPerformed(evt); - } - }); - - ServerMode.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - ServerMode.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "0 - Delete Server", "1 - Create Server" })); - ServerMode.setSelectedIndex(1); - ServerMode.setToolTipText("Select MODE for CIPSERVER command"); - ServerMode.setAlignmentX(0.0F); - ServerMode.setMaximumSize(new java.awt.Dimension(120, 23)); - ServerMode.setMinimumSize(new java.awt.Dimension(120, 23)); - ServerMode.setPreferredSize(new java.awt.Dimension(120, 23)); - ServerMode.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - ServerModeActionPerformed(evt); - } - }); - - jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); - jLabel5.setText("port"); - - ServerPort.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ServerPort.setText("80"); - ServerPort.setMaximumSize(new java.awt.Dimension(100, 23)); - ServerPort.setMinimumSize(new java.awt.Dimension(100, 23)); - ServerPort.setPreferredSize(new java.awt.Dimension(100, 23)); - - cmdGetCIPSTO.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdGetCIPSTO.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/get.png"))); // NOI18N - cmdGetCIPSTO.setText("CIPSTO?"); - cmdGetCIPSTO.setToolTipText("Get current server timeout"); - cmdGetCIPSTO.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdGetCIPSTO.setMaximumSize(new java.awt.Dimension(120, 23)); - cmdGetCIPSTO.setMinimumSize(new java.awt.Dimension(120, 23)); - cmdGetCIPSTO.setPreferredSize(new java.awt.Dimension(120, 23)); - cmdGetCIPSTO.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdGetCIPSTOActionPerformed(evt); - } - }); - - cmdSetCIPSTO.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdSetCIPSTO.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/set.png"))); // NOI18N - cmdSetCIPSTO.setText("CIPSTO="); - cmdSetCIPSTO.setToolTipText("Set current server timeout"); - cmdSetCIPSTO.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdSetCIPSTO.setMaximumSize(new java.awt.Dimension(120, 23)); - cmdSetCIPSTO.setMinimumSize(new java.awt.Dimension(120, 23)); - cmdSetCIPSTO.setPreferredSize(new java.awt.Dimension(120, 23)); - cmdSetCIPSTO.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSetCIPSTOActionPerformed(evt); - } - }); - - ServerTimeout.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ServerTimeout.setText("60"); - ServerTimeout.setToolTipText("Set server timeout "); - ServerTimeout.setMaximumSize(new java.awt.Dimension(120, 23)); - ServerTimeout.setMinimumSize(new java.awt.Dimension(120, 23)); - ServerTimeout.setPreferredSize(new java.awt.Dimension(120, 23)); - - jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); - jLabel6.setText("Server timeout"); - - TCPServerBottomPane.setLayer(cmdGetCIPMODE, javax.swing.JLayeredPane.DEFAULT_LAYER); - TCPServerBottomPane.setLayer(cmdSetCIPMODE0, javax.swing.JLayeredPane.DEFAULT_LAYER); - TCPServerBottomPane.setLayer(cmdSetCIPMODE1, javax.swing.JLayeredPane.DEFAULT_LAYER); - TCPServerBottomPane.setLayer(cmdSetCIPSERVER, javax.swing.JLayeredPane.DEFAULT_LAYER); - TCPServerBottomPane.setLayer(ServerMode, javax.swing.JLayeredPane.DEFAULT_LAYER); - TCPServerBottomPane.setLayer(jLabel5, javax.swing.JLayeredPane.DEFAULT_LAYER); - TCPServerBottomPane.setLayer(ServerPort, javax.swing.JLayeredPane.DEFAULT_LAYER); - TCPServerBottomPane.setLayer(cmdGetCIPSTO, javax.swing.JLayeredPane.DEFAULT_LAYER); - TCPServerBottomPane.setLayer(cmdSetCIPSTO, javax.swing.JLayeredPane.DEFAULT_LAYER); - TCPServerBottomPane.setLayer(ServerTimeout, javax.swing.JLayeredPane.DEFAULT_LAYER); - TCPServerBottomPane.setLayer(jLabel6, javax.swing.JLayeredPane.DEFAULT_LAYER); - - javax.swing.GroupLayout TCPServerBottomPaneLayout = new javax.swing.GroupLayout(TCPServerBottomPane); - TCPServerBottomPane.setLayout(TCPServerBottomPaneLayout); - TCPServerBottomPaneLayout.setHorizontalGroup( - TCPServerBottomPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(TCPServerBottomPaneLayout.createSequentialGroup() - .addGroup(TCPServerBottomPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(cmdSetCIPSERVER, javax.swing.GroupLayout.PREFERRED_SIZE, 210, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGroup(TCPServerBottomPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(TCPServerBottomPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(ServerMode, javax.swing.GroupLayout.PREFERRED_SIZE, 210, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdSetCIPSTO, javax.swing.GroupLayout.PREFERRED_SIZE, 210, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGroup(TCPServerBottomPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(TCPServerBottomPaneLayout.createSequentialGroup() - .addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 102, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(ServerTimeout, javax.swing.GroupLayout.PREFERRED_SIZE, 98, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(TCPServerBottomPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(cmdSetCIPMODE1, javax.swing.GroupLayout.PREFERRED_SIZE, 210, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdGetCIPSTO, javax.swing.GroupLayout.PREFERRED_SIZE, 210, javax.swing.GroupLayout.PREFERRED_SIZE))) - .addComponent(cmdGetCIPMODE, javax.swing.GroupLayout.PREFERRED_SIZE, 210, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdSetCIPMODE0, javax.swing.GroupLayout.PREFERRED_SIZE, 210, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(TCPServerBottomPaneLayout.createSequentialGroup() - .addContainerGap() - .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 96, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(ServerPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - TCPServerBottomPaneLayout.setVerticalGroup( - TCPServerBottomPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(TCPServerBottomPaneLayout.createSequentialGroup() - .addComponent(cmdGetCIPMODE, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(cmdSetCIPMODE0, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(cmdSetCIPMODE1, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(cmdGetCIPSTO, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(TCPServerBottomPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(ServerTimeout, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel6)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(cmdSetCIPSTO, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(ServerMode, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(TCPServerBottomPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel5) - .addComponent(ServerPort, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cmdSetCIPSERVER, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(0, 304, Short.MAX_VALUE)) - ); - - javax.swing.GroupLayout AT_ServerLayout = new javax.swing.GroupLayout(AT_Server); - AT_Server.setLayout(AT_ServerLayout); - AT_ServerLayout.setHorizontalGroup( - AT_ServerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(TCPServerBottomPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(TCPServerTopFiller, javax.swing.GroupLayout.DEFAULT_SIZE, 535, Short.MAX_VALUE) - ); - AT_ServerLayout.setVerticalGroup( - AT_ServerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, AT_ServerLayout.createSequentialGroup() - .addComponent(TCPServerTopFiller, javax.swing.GroupLayout.PREFERRED_SIZE, 69, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(TCPServerBottomPane, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - ); - - TabAT.addTab("TCP/IP Server", AT_Server); - - ATvXX.add(TabAT, new org.netbeans.lib.awtextra.AbsoluteConstraints(2, 70, 540, 645)); - - TCP_common.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "Common TCP commands")); - TCP_common.setAlignmentX(0.0F); - TCP_common.setAlignmentY(0.0F); - TCP_common.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR)); - TCP_common.setMaximumSize(new java.awt.Dimension(445, 45)); - TCP_common.setMinimumSize(new java.awt.Dimension(445, 45)); - TCP_common.setOpaque(true); - TCP_common.setLayout(new java.awt.FlowLayout()); - - cmdGetCIPSTATUS.setText("CIPSTATUS"); - cmdGetCIPSTATUS.setToolTipText("Get information about connection ( 2 - got IP, 3 - Connected, 4 - Disconnected )"); - cmdGetCIPSTATUS.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdGetCIPSTATUSActionPerformed(evt); - } - }); - TCP_common.add(cmdGetCIPSTATUS); - - cmdGetCIPMUX.setText("CIPMUX?"); - cmdGetCIPMUX.setToolTipText("Get information about current mode: Single or Multiple connection allowed"); - cmdGetCIPMUX.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdGetCIPMUXActionPerformed(evt); - } - }); - TCP_common.add(cmdGetCIPMUX); - - cmdSetCIPMUX1.setText("CIPMUX=1"); - cmdSetCIPMUX1.setToolTipText("Set mode for Multiple connections allowed"); - cmdSetCIPMUX1.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSetCIPMUX1ActionPerformed(evt); - } - }); - TCP_common.add(cmdSetCIPMUX1); - - cmdSetCIPMUX0.setText("CIPMUX=0"); - cmdSetCIPMUX0.setToolTipText("Set mode for Single only connection allowed"); - cmdSetCIPMUX0.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSetCIPMUX0ActionPerformed(evt); - } - }); - TCP_common.add(cmdSetCIPMUX0); - - cmdGetCIFSR.setText("CIFSR"); - cmdGetCIFSR.setToolTipText("Get local IP address (softAP or Station)"); - cmdGetCIFSR.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdGetCIFSRActionPerformed(evt); - } - }); - TCP_common.add(cmdGetCIFSR); - - ATvXX.setLayer(TCP_common, javax.swing.JLayeredPane.PALETTE_LAYER); - ATvXX.add(TCP_common, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 100, 540, 60)); - - WiFi_common.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "Common WiFi commands")); - WiFi_common.setAlignmentX(0.0F); - WiFi_common.setAlignmentY(0.0F); - WiFi_common.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR)); - WiFi_common.setName(""); // NOI18N - WiFi_common.setOpaque(true); - WiFi_common.setPreferredSize(new java.awt.Dimension(445, 110)); - WiFi_common.setLayout(new java.awt.FlowLayout()); - - cmdGetHelpCWMODE.setText("CWMODE=? - Get available modes"); - cmdGetHelpCWMODE.setToolTipText("Get value scope of WiFi mode (CommandWifiMODE)"); - cmdGetHelpCWMODE.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdGetHelpCWMODE.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdGetHelpCWMODE.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdGetHelpCWMODE.setPreferredSize(new java.awt.Dimension(210, 23)); - - binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, cmdGetHelpCWMODE, org.jdesktop.beansbinding.ELProperty.create("${font}"), cmdGetHelpCWMODE, org.jdesktop.beansbinding.BeanProperty.create("font")); - bindingGroup.addBinding(binding); - - cmdGetHelpCWMODE.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdGetHelpCWMODEActionPerformed(evt); - } - }); - WiFi_common.add(cmdGetHelpCWMODE); - - cmdSetCWMODE1.setText("CWMODE=1 Station"); - cmdSetCWMODE1.setToolTipText("Set ESP8266 WiFi mode 1 - Station"); - cmdSetCWMODE1.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdSetCWMODE1.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdSetCWMODE1.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdSetCWMODE1.setPreferredSize(new java.awt.Dimension(210, 23)); - - binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, cmdGetHelpCWMODE, org.jdesktop.beansbinding.ELProperty.create("${font}"), cmdSetCWMODE1, org.jdesktop.beansbinding.BeanProperty.create("font")); - bindingGroup.addBinding(binding); - - cmdSetCWMODE1.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSetCWMODE1ActionPerformed(evt); - } - }); - WiFi_common.add(cmdSetCWMODE1); - - cmdGetCWMODE.setText("CWMODE? - Get current mode"); - cmdGetCWMODE.setToolTipText("Query ESP8266’s current WiFi mode. (CommandWifiMODE)"); - cmdGetCWMODE.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdGetCWMODE.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdGetCWMODE.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdGetCWMODE.setPreferredSize(new java.awt.Dimension(210, 23)); - - binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, cmdGetHelpCWMODE, org.jdesktop.beansbinding.ELProperty.create("${font}"), cmdGetCWMODE, org.jdesktop.beansbinding.BeanProperty.create("font")); - bindingGroup.addBinding(binding); - - cmdGetCWMODE.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdGetCWMODEActionPerformed(evt); - } - }); - WiFi_common.add(cmdGetCWMODE); - - cmdSetCWMODE2.setText("CWMODE=2 softAP"); - cmdSetCWMODE2.setToolTipText("Set ESP8266 WiFi mode 2 - Soft Access Point mode"); - cmdSetCWMODE2.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdSetCWMODE2.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdSetCWMODE2.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdSetCWMODE2.setPreferredSize(new java.awt.Dimension(210, 23)); - - binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, cmdGetHelpCWMODE, org.jdesktop.beansbinding.ELProperty.create("${font}"), cmdSetCWMODE2, org.jdesktop.beansbinding.BeanProperty.create("font")); - bindingGroup.addBinding(binding); - - cmdSetCWMODE2.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSetCWMODE2ActionPerformed(evt); - } - }); - WiFi_common.add(cmdSetCWMODE2); - - cmdSetCWLAP.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/search again.png"))); // NOI18N - cmdSetCWLAP.setText("CWLAP - Get AP list"); - cmdSetCWLAP.setToolTipText("Lists all available WiFi Access Points"); - cmdSetCWLAP.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdSetCWLAP.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdSetCWLAP.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdSetCWLAP.setPreferredSize(new java.awt.Dimension(210, 23)); - - binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, cmdGetHelpCWMODE, org.jdesktop.beansbinding.ELProperty.create("${font}"), cmdSetCWLAP, org.jdesktop.beansbinding.BeanProperty.create("font")); - bindingGroup.addBinding(binding); - - cmdSetCWLAP.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSetCWLAPActionPerformed(evt); - } - }); - WiFi_common.add(cmdSetCWLAP); - - cmdSetCWMODE3.setText("CWMODE=3 softAP + Station"); - cmdSetCWMODE3.setToolTipText("Set ESP8266 WiFi mode 3 - Soft Access Point mode + Station"); - cmdSetCWMODE3.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdSetCWMODE3.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdSetCWMODE3.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdSetCWMODE3.setPreferredSize(new java.awt.Dimension(210, 23)); - - binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, cmdGetHelpCWMODE, org.jdesktop.beansbinding.ELProperty.create("${font}"), cmdSetCWMODE3, org.jdesktop.beansbinding.BeanProperty.create("font")); - bindingGroup.addBinding(binding); - - cmdSetCWMODE3.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSetCWMODE3ActionPerformed(evt); - } - }); - WiFi_common.add(cmdSetCWMODE3); - - DHCP.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "0 - Enable DHCP", "1 - Disable DHCP" })); - DHCP.setMaximumSize(new java.awt.Dimension(114, 23)); - DHCP.setMinimumSize(new java.awt.Dimension(114, 23)); - DHCP.setPreferredSize(new java.awt.Dimension(114, 23)); - WiFi_common.add(DHCP); - - DHCPmode.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "0 - Set softAP", "1 - Set Station", "2 - Set both AP&Sta" })); - DHCPmode.setSelectedIndex(1); - DHCPmode.setMaximumSize(new java.awt.Dimension(90, 23)); - DHCPmode.setMinimumSize(new java.awt.Dimension(90, 23)); - DHCPmode.setPreferredSize(new java.awt.Dimension(90, 23)); - WiFi_common.add(DHCPmode); - - cmdSetCWDHCP.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdSetCWDHCP.setText("AT+CWDHCP DHCP control"); - cmdSetCWDHCP.setToolTipText("Enable/Disable DHCP"); - cmdSetCWDHCP.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdSetCWDHCP.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdSetCWDHCP.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdSetCWDHCP.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdSetCWDHCP.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSetCWDHCPActionPerformed(evt); - } - }); - WiFi_common.add(cmdSetCWDHCP); - - ATvXX.setLayer(WiFi_common, javax.swing.JLayeredPane.PALETTE_LAYER); - ATvXX.add(WiFi_common, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 100, 540, 140)); - - LeftTab.addTab(" AT-based ", ATvXX); - - RN2483.setOpaque(true); - - MacPane.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); - - LoRaMAC.setOpaque(true); - LoRaMAC.setPreferredSize(new java.awt.Dimension(729, 600)); - - MacCommon.setBorder(javax.swing.BorderFactory.createTitledBorder("Parameters")); - - cmdMacSetAdrOn.setText("mac set adr on"); - cmdMacSetAdrOn.setToolTipText("sys reset"); - cmdMacSetAdrOn.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdMacSetAdrOn.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdMacSetAdrOn.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdMacSetAdrOn.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdMacSetAdrOn.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdMacSetAdrOnActionPerformed(evt); - } - }); - - cmdMacSetDR.setText("mac set dr (Data Rate)"); - cmdMacSetDR.setToolTipText("sys reset"); - cmdMacSetDR.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdMacSetDR.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdMacSetDR.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdMacSetDR.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdMacSetDR.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdMacSetDRActionPerformed(evt); - } - }); - - cmdMacSetPwrIdx.setText("mac set pwridx (Power)"); - cmdMacSetPwrIdx.setToolTipText("sys reset"); - cmdMacSetPwrIdx.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdMacSetPwrIdx.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdMacSetPwrIdx.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdMacSetPwrIdx.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdMacSetPwrIdx.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdMacSetPwrIdxActionPerformed(evt); - } - }); - - cmdMacGetStatus.setText("mac get status"); - cmdMacGetStatus.setToolTipText("sys reset"); - cmdMacGetStatus.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdMacGetStatus.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdMacGetStatus.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdMacGetStatus.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdMacGetStatus.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdMacGetStatusActionPerformed(evt); - } - }); - - cmdMacSetAdrOff.setText("mac set adr off"); - cmdMacSetAdrOff.setToolTipText("sys reset"); - cmdMacSetAdrOff.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdMacSetAdrOff.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdMacSetAdrOff.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdMacSetAdrOff.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdMacSetAdrOff.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdMacSetAdrOffActionPerformed(evt); - } - }); - - cmdMacGetAdr.setText("mac get adr"); - cmdMacGetAdr.setToolTipText("sys reset"); - cmdMacGetAdr.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdMacGetAdr.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdMacGetAdr.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdMacGetAdr.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdMacGetAdr.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdMacGetAdrActionPerformed(evt); - } - }); - - MacDR.setText("5"); - MacDR.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MacDRActionPerformed(evt); - } - }); - - MacPower.setText("1"); - MacPower.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MacPowerActionPerformed(evt); - } - }); - - cmdMacGetDR.setText("mac get dr"); - cmdMacGetDR.setToolTipText("sys reset"); - cmdMacGetDR.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdMacGetDR.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdMacGetDR.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdMacGetDR.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdMacGetDR.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdMacGetDRActionPerformed(evt); - } - }); - - cmdMacGetPwrIdx.setText("mac get pwridx"); - cmdMacGetPwrIdx.setToolTipText("sys reset"); - cmdMacGetPwrIdx.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdMacGetPwrIdx.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdMacGetPwrIdx.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdMacGetPwrIdx.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdMacGetPwrIdx.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdMacGetPwrIdxActionPerformed(evt); - } - }); - - MacCommon.setLayer(cmdMacSetAdrOn, javax.swing.JLayeredPane.DEFAULT_LAYER); - MacCommon.setLayer(cmdMacSetDR, javax.swing.JLayeredPane.DEFAULT_LAYER); - MacCommon.setLayer(cmdMacSetPwrIdx, javax.swing.JLayeredPane.DEFAULT_LAYER); - MacCommon.setLayer(cmdMacGetStatus, javax.swing.JLayeredPane.DEFAULT_LAYER); - MacCommon.setLayer(cmdMacSetAdrOff, javax.swing.JLayeredPane.DEFAULT_LAYER); - MacCommon.setLayer(cmdMacGetAdr, javax.swing.JLayeredPane.DEFAULT_LAYER); - MacCommon.setLayer(MacDR, javax.swing.JLayeredPane.DEFAULT_LAYER); - MacCommon.setLayer(MacPower, javax.swing.JLayeredPane.DEFAULT_LAYER); - MacCommon.setLayer(cmdMacGetDR, javax.swing.JLayeredPane.DEFAULT_LAYER); - MacCommon.setLayer(cmdMacGetPwrIdx, javax.swing.JLayeredPane.DEFAULT_LAYER); - - javax.swing.GroupLayout MacCommonLayout = new javax.swing.GroupLayout(MacCommon); - MacCommon.setLayout(MacCommonLayout); - MacCommonLayout.setHorizontalGroup( - MacCommonLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(MacCommonLayout.createSequentialGroup() - .addGroup(MacCommonLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) - .addComponent(cmdMacGetStatus, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 180, Short.MAX_VALUE) - .addComponent(cmdMacSetPwrIdx, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 1, Short.MAX_VALUE) - .addComponent(cmdMacSetDR, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 1, Short.MAX_VALUE) - .addComponent(cmdMacSetAdrOn, javax.swing.GroupLayout.PREFERRED_SIZE, 1, Short.MAX_VALUE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(MacCommonLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(cmdMacSetAdrOff, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(MacDR) - .addComponent(MacPower)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(MacCommonLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(MacCommonLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(cmdMacGetDR, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdMacGetAdr, javax.swing.GroupLayout.PREFERRED_SIZE, 1, Short.MAX_VALUE)) - .addComponent(cmdMacGetPwrIdx, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - MacCommonLayout.setVerticalGroup( - MacCommonLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(MacCommonLayout.createSequentialGroup() - .addGroup(MacCommonLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(cmdMacSetAdrOn, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdMacSetAdrOff, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdMacGetAdr, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(MacCommonLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(cmdMacSetDR, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(MacDR, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdMacGetDR, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(MacCommonLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(cmdMacSetPwrIdx, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(MacPower, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdMacGetPwrIdx, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cmdMacGetStatus, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - ); - - SendUnconfirmed.setBorder(javax.swing.BorderFactory.createTitledBorder("Send Data")); - - cmdMacTX.setText("Transmit data"); - cmdMacTX.setToolTipText("sys reset"); - cmdMacTX.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdMacTX.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdMacTX.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdMacTX.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdMacTX.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdMacTXActionPerformed(evt); - } - }); - - MacTxPort.setText("16"); - - MacTxData.setText("48454c4c4f"); - - TxConfirmed.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "uncnf", "cnf", " " })); - TxConfirmed.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - TxConfirmedItemStateChanged(evt); - } - }); - TxConfirmed.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - TxConfirmedActionPerformed(evt); - } - }); - - jLabel13.setText("default: HELLO"); - - SendUnconfirmed.setLayer(cmdMacTX, javax.swing.JLayeredPane.DEFAULT_LAYER); - SendUnconfirmed.setLayer(MacTxPort, javax.swing.JLayeredPane.DEFAULT_LAYER); - SendUnconfirmed.setLayer(MacTxData, javax.swing.JLayeredPane.DEFAULT_LAYER); - SendUnconfirmed.setLayer(TxConfirmed, javax.swing.JLayeredPane.DEFAULT_LAYER); - SendUnconfirmed.setLayer(jLabel13, javax.swing.JLayeredPane.DEFAULT_LAYER); - - javax.swing.GroupLayout SendUnconfirmedLayout = new javax.swing.GroupLayout(SendUnconfirmed); - SendUnconfirmed.setLayout(SendUnconfirmedLayout); - SendUnconfirmedLayout.setHorizontalGroup( - SendUnconfirmedLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(SendUnconfirmedLayout.createSequentialGroup() - .addComponent(cmdMacTX, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(TxConfirmed, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(MacTxPort, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(SendUnconfirmedLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jLabel13, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(MacTxData)) - .addContainerGap()) - ); - SendUnconfirmedLayout.setVerticalGroup( - SendUnconfirmedLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(SendUnconfirmedLayout.createSequentialGroup() - .addComponent(jLabel13) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(SendUnconfirmedLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(MacTxData, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(MacTxPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) - .addGroup(SendUnconfirmedLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(cmdMacTX, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(TxConfirmed, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)) - ); - - RadioPane.setBorder(javax.swing.BorderFactory.createTitledBorder("Radio")); - - MacSF.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "sf7", "sf8", "sf9", "sf10", "sf11", "sf12", " " })); - MacSF.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - MacSFItemStateChanged(evt); - } - }); - MacSF.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MacSFActionPerformed(evt); - } - }); - - jLabel11.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - jLabel11.setText("Spread Factor"); - - RadioRxBandWidth.setText("25"); - - RadioFreq.setText("868100000"); - - cmdRadiosetRxBw.setText(" set rx band widh"); - cmdRadiosetRxBw.setToolTipText("sys reset"); - cmdRadiosetRxBw.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdRadiosetRxBw.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdRadiosetRxBw.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdRadiosetRxBw.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdRadiosetRxBw.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdRadiosetRxBwActionPerformed(evt); - } - }); - - cmdRadioSetFreq.setText("radio set freq"); - cmdRadioSetFreq.setToolTipText("sys reset"); - cmdRadioSetFreq.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdRadioSetFreq.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdRadioSetFreq.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdRadioSetFreq.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdRadioSetFreq.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdRadioSetFreqActionPerformed(evt); - } - }); - - cmdRadioGetSF.setText("radio get sf"); - cmdRadioGetSF.setToolTipText("sys reset"); - cmdRadioGetSF.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdRadioGetSF.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdRadioGetSF.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdRadioGetSF.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdRadioGetSF.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdRadioGetSFActionPerformed(evt); - } - }); - - cmdRadioGetBw.setText("radio get bw"); - cmdRadioGetBw.setToolTipText("sys reset"); - cmdRadioGetBw.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdRadioGetBw.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdRadioGetBw.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdRadioGetBw.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdRadioGetBw.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdRadioGetBwActionPerformed(evt); - } - }); - - cmdRadioGetRxBw.setText("radio get rxbw"); - cmdRadioGetRxBw.setToolTipText("sys reset"); - cmdRadioGetRxBw.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdRadioGetRxBw.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdRadioGetRxBw.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdRadioGetRxBw.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdRadioGetRxBw.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdRadioGetRxBwActionPerformed(evt); - } - }); - - cmdRadioGetFreq.setText("radio get freq"); - cmdRadioGetFreq.setToolTipText("sys reset"); - cmdRadioGetFreq.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdRadioGetFreq.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdRadioGetFreq.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdRadioGetFreq.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdRadioGetFreq.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdRadioGetFreqActionPerformed(evt); - } - }); - - MacBandWidth.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "125", "250", "500", " " })); - MacBandWidth.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - MacBandWidthItemStateChanged(evt); - } - }); - MacBandWidth.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MacBandWidthActionPerformed(evt); - } - }); - - jLabel12.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - jLabel12.setText("Band Width"); - - RadioPane.setLayer(MacSF, javax.swing.JLayeredPane.DEFAULT_LAYER); - RadioPane.setLayer(jLabel11, javax.swing.JLayeredPane.DEFAULT_LAYER); - RadioPane.setLayer(RadioRxBandWidth, javax.swing.JLayeredPane.DEFAULT_LAYER); - RadioPane.setLayer(RadioFreq, javax.swing.JLayeredPane.DEFAULT_LAYER); - RadioPane.setLayer(cmdRadiosetRxBw, javax.swing.JLayeredPane.DEFAULT_LAYER); - RadioPane.setLayer(cmdRadioSetFreq, javax.swing.JLayeredPane.DEFAULT_LAYER); - RadioPane.setLayer(cmdRadioGetSF, javax.swing.JLayeredPane.DEFAULT_LAYER); - RadioPane.setLayer(cmdRadioGetBw, javax.swing.JLayeredPane.DEFAULT_LAYER); - RadioPane.setLayer(cmdRadioGetRxBw, javax.swing.JLayeredPane.DEFAULT_LAYER); - RadioPane.setLayer(cmdRadioGetFreq, javax.swing.JLayeredPane.DEFAULT_LAYER); - RadioPane.setLayer(MacBandWidth, javax.swing.JLayeredPane.DEFAULT_LAYER); - RadioPane.setLayer(jLabel12, javax.swing.JLayeredPane.DEFAULT_LAYER); - - javax.swing.GroupLayout RadioPaneLayout = new javax.swing.GroupLayout(RadioPane); - RadioPane.setLayout(RadioPaneLayout); - RadioPaneLayout.setHorizontalGroup( - RadioPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(RadioPaneLayout.createSequentialGroup() - .addGroup(RadioPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(RadioPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) - .addComponent(jLabel11, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(cmdRadiosetRxBw, javax.swing.GroupLayout.PREFERRED_SIZE, 180, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdRadioSetFreq, javax.swing.GroupLayout.PREFERRED_SIZE, 180, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addComponent(jLabel12, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(RadioPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(MacSF, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(RadioRxBandWidth) - .addComponent(RadioFreq, javax.swing.GroupLayout.DEFAULT_SIZE, 100, Short.MAX_VALUE) - .addComponent(MacBandWidth, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(RadioPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(cmdRadioGetSF, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) - .addComponent(cmdRadioGetBw, javax.swing.GroupLayout.PREFERRED_SIZE, 1, Short.MAX_VALUE) - .addComponent(cmdRadioGetRxBw, javax.swing.GroupLayout.PREFERRED_SIZE, 1, Short.MAX_VALUE) - .addComponent(cmdRadioGetFreq, javax.swing.GroupLayout.PREFERRED_SIZE, 1, Short.MAX_VALUE)) - .addGap(92, 92, 92)) - ); - RadioPaneLayout.setVerticalGroup( - RadioPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(RadioPaneLayout.createSequentialGroup() - .addGroup(RadioPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(RadioPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel11) - .addComponent(MacSF, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addComponent(cmdRadioGetSF, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(RadioPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(cmdRadioGetBw, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(MacBandWidth, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel12)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(RadioPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(cmdRadiosetRxBw, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(RadioRxBandWidth, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdRadioGetRxBw, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(RadioPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(cmdRadioSetFreq, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(RadioFreq, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdRadioGetFreq, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) - ); - - jLayeredPane1.setBorder(javax.swing.BorderFactory.createTitledBorder("System")); - - cmdSysReset.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdSysReset.setText("sys reset"); - cmdSysReset.setToolTipText("sys reset"); - cmdSysReset.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdSysReset.setMaximumSize(new java.awt.Dimension(210, 30)); - cmdSysReset.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdSysReset.setPreferredSize(new java.awt.Dimension(210, 40)); - cmdSysReset.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSysResetActionPerformed(evt); - } - }); - - cmdSysFactoryReset.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdSysFactoryReset.setText("sys factoryRESET"); - cmdSysFactoryReset.setToolTipText(""); - cmdSysFactoryReset.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdSysFactoryReset.setMaximumSize(new java.awt.Dimension(210, 30)); - cmdSysFactoryReset.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdSysFactoryReset.setPreferredSize(new java.awt.Dimension(210, 40)); - cmdSysFactoryReset.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSysFactoryResetActionPerformed(evt); - } - }); - - cmdSysGetVer.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdSysGetVer.setText("sys get ver"); - cmdSysGetVer.setToolTipText(""); - cmdSysGetVer.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdSysGetVer.setMaximumSize(new java.awt.Dimension(210, 30)); - cmdSysGetVer.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdSysGetVer.setPreferredSize(new java.awt.Dimension(210, 40)); - cmdSysGetVer.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSysGetVerActionPerformed(evt); - } - }); - - cmdSysGetHwEui.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdSysGetHwEui.setText("sys get hweui"); - cmdSysGetHwEui.setToolTipText(""); - cmdSysGetHwEui.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdSysGetHwEui.setMaximumSize(new java.awt.Dimension(210, 30)); - cmdSysGetHwEui.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdSysGetHwEui.setPreferredSize(new java.awt.Dimension(210, 40)); - cmdSysGetHwEui.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSysGetHwEuiActionPerformed(evt); - } - }); - - jLayeredPane1.setLayer(cmdSysReset, javax.swing.JLayeredPane.DEFAULT_LAYER); - jLayeredPane1.setLayer(cmdSysFactoryReset, javax.swing.JLayeredPane.DEFAULT_LAYER); - jLayeredPane1.setLayer(cmdSysGetVer, javax.swing.JLayeredPane.DEFAULT_LAYER); - jLayeredPane1.setLayer(cmdSysGetHwEui, javax.swing.JLayeredPane.DEFAULT_LAYER); - - javax.swing.GroupLayout jLayeredPane1Layout = new javax.swing.GroupLayout(jLayeredPane1); - jLayeredPane1.setLayout(jLayeredPane1Layout); - jLayeredPane1Layout.setHorizontalGroup( - jLayeredPane1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jLayeredPane1Layout.createSequentialGroup() - .addComponent(cmdSysReset, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cmdSysFactoryReset, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cmdSysGetVer, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cmdSysGetHwEui, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(20, Short.MAX_VALUE)) - ); - jLayeredPane1Layout.setVerticalGroup( - jLayeredPane1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jLayeredPane1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(cmdSysReset, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdSysGetVer, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdSysFactoryReset, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdSysGetHwEui, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - ); - - LoRaMAC.setLayer(MacCommon, javax.swing.JLayeredPane.DEFAULT_LAYER); - LoRaMAC.setLayer(SendUnconfirmed, javax.swing.JLayeredPane.DEFAULT_LAYER); - LoRaMAC.setLayer(RadioPane, javax.swing.JLayeredPane.DEFAULT_LAYER); - LoRaMAC.setLayer(jLayeredPane1, javax.swing.JLayeredPane.DEFAULT_LAYER); - - javax.swing.GroupLayout LoRaMACLayout = new javax.swing.GroupLayout(LoRaMAC); - LoRaMAC.setLayout(LoRaMACLayout); - LoRaMACLayout.setHorizontalGroup( - LoRaMACLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(LoRaMACLayout.createSequentialGroup() - .addGroup(LoRaMACLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(MacCommon) - .addComponent(RadioPane) - .addComponent(SendUnconfirmed) - .addComponent(jLayeredPane1)) - .addGap(199, 199, 199)) - ); - LoRaMACLayout.setVerticalGroup( - LoRaMACLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(LoRaMACLayout.createSequentialGroup() - .addComponent(MacCommon, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(RadioPane, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(SendUnconfirmed, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jLayeredPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(0, 276, Short.MAX_VALUE)) - ); - - MacPane.setViewportView(LoRaMAC); - - RN2483jTab.addTab(" MAC & Radio", MacPane); - - ActivationPane.setPreferredSize(new java.awt.Dimension(537, 600)); - - ABPPane.setBorder(javax.swing.BorderFactory.createTitledBorder("Activation By Personalization")); - - cmdMacSetDevAddr.setText("mac set devaddr"); - cmdMacSetDevAddr.setToolTipText("sys reset"); - cmdMacSetDevAddr.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdMacSetDevAddr.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdMacSetDevAddr.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdMacSetDevAddr.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdMacSetDevAddr.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdMacSetDevAddrActionPerformed(evt); - } - }); - - cmdMacSetNwkSKey.setText("mac set nwkskey"); - cmdMacSetNwkSKey.setToolTipText("sys reset"); - cmdMacSetNwkSKey.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdMacSetNwkSKey.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdMacSetNwkSKey.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdMacSetNwkSKey.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdMacSetNwkSKey.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdMacSetNwkSKeyActionPerformed(evt); - } - }); - - cmdMacSetAppSKey.setText("mac set appskey"); - cmdMacSetAppSKey.setToolTipText("sys reset"); - cmdMacSetAppSKey.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdMacSetAppSKey.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdMacSetAppSKey.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdMacSetAppSKey.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdMacSetAppSKey.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdMacSetAppSKeyActionPerformed(evt); - } - }); - - cmdMacjoinABP.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N - cmdMacjoinABP.setText("Join ABP"); - cmdMacjoinABP.setToolTipText("sys reset"); - cmdMacjoinABP.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdMacjoinABP.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdMacjoinABP.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdMacjoinABP.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdMacjoinABP.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdMacjoinABPActionPerformed(evt); - } - }); - - cmdMacGetDevAddr.setText("mac get devaddr"); - cmdMacGetDevAddr.setToolTipText("sys reset"); - cmdMacGetDevAddr.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdMacGetDevAddr.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdMacGetDevAddr.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdMacGetDevAddr.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdMacGetDevAddr.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdMacGetDevAddrActionPerformed(evt); - } - }); - - DevAddr.setText("00000000"); - DevAddr.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - DevAddrActionPerformed(evt); - } - }); - - NwkSKey.setText("2B7E151628AED2A6ABF7158809CF4F3C"); - NwkSKey.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - NwkSKeyActionPerformed(evt); - } - }); - - AppSKey.setText("2B7E151628AED2A6ABF7158809CF4F3C"); - AppSKey.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - AppSKeyActionPerformed(evt); - } - }); - - ABPPane.setLayer(cmdMacSetDevAddr, javax.swing.JLayeredPane.DEFAULT_LAYER); - ABPPane.setLayer(cmdMacSetNwkSKey, javax.swing.JLayeredPane.DEFAULT_LAYER); - ABPPane.setLayer(cmdMacSetAppSKey, javax.swing.JLayeredPane.DEFAULT_LAYER); - ABPPane.setLayer(cmdMacjoinABP, javax.swing.JLayeredPane.DEFAULT_LAYER); - ABPPane.setLayer(cmdMacGetDevAddr, javax.swing.JLayeredPane.DEFAULT_LAYER); - ABPPane.setLayer(DevAddr, javax.swing.JLayeredPane.DEFAULT_LAYER); - ABPPane.setLayer(NwkSKey, javax.swing.JLayeredPane.DEFAULT_LAYER); - ABPPane.setLayer(AppSKey, javax.swing.JLayeredPane.DEFAULT_LAYER); - - javax.swing.GroupLayout ABPPaneLayout = new javax.swing.GroupLayout(ABPPane); - ABPPane.setLayout(ABPPaneLayout); - ABPPaneLayout.setHorizontalGroup( - ABPPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(ABPPaneLayout.createSequentialGroup() - .addGroup(ABPPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) - .addComponent(cmdMacSetAppSKey, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 1, Short.MAX_VALUE) - .addComponent(cmdMacSetNwkSKey, javax.swing.GroupLayout.PREFERRED_SIZE, 1, Short.MAX_VALUE) - .addComponent(cmdMacSetDevAddr, javax.swing.GroupLayout.PREFERRED_SIZE, 180, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdMacjoinABP, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(ABPPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(NwkSKey) - .addComponent(DevAddr) - .addComponent(AppSKey)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cmdMacGetDevAddr, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(0, 10, Short.MAX_VALUE)) - ); - ABPPaneLayout.setVerticalGroup( - ABPPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, ABPPaneLayout.createSequentialGroup() - .addGroup(ABPPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(cmdMacSetDevAddr, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(DevAddr, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdMacGetDevAddr, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(ABPPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(cmdMacSetNwkSKey, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(NwkSKey, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(ABPPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(cmdMacSetAppSKey, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(AppSKey, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(cmdMacjoinABP, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap()) - ); - - cmdMacSave.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N - cmdMacSave.setText("Save"); - cmdMacSave.setToolTipText("sys reset"); - cmdMacSave.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdMacSave.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdMacSave.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdMacSave.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdMacSave.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdMacSaveActionPerformed(evt); - } - }); - - OTAAPane.setBorder(javax.swing.BorderFactory.createTitledBorder("Over The Air Activation")); - - cmdMacSetDevEui.setText("mac set deveui"); - cmdMacSetDevEui.setToolTipText("sys reset"); - cmdMacSetDevEui.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdMacSetDevEui.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdMacSetDevEui.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdMacSetDevEui.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdMacSetDevEui.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdMacSetDevEuiActionPerformed(evt); - } - }); - - cmdMacSetAppEui.setText("mac set appeui"); - cmdMacSetAppEui.setToolTipText("sys reset"); - cmdMacSetAppEui.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdMacSetAppEui.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdMacSetAppEui.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdMacSetAppEui.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdMacSetAppEui.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdMacSetAppEuiActionPerformed(evt); - } - }); - - cmdMacSetAppKey.setText("mac set appkey"); - cmdMacSetAppKey.setToolTipText("sys reset"); - cmdMacSetAppKey.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdMacSetAppKey.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdMacSetAppKey.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdMacSetAppKey.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdMacSetAppKey.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdMacSetAppKeyActionPerformed(evt); - } - }); - - cmdMacJoinOTAA.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N - cmdMacJoinOTAA.setText("Join OTAA"); - cmdMacJoinOTAA.setToolTipText("sys reset"); - cmdMacJoinOTAA.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdMacJoinOTAA.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdMacJoinOTAA.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdMacJoinOTAA.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdMacJoinOTAA.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdMacJoinOTAAActionPerformed(evt); - } - }); - - cmdMacGetDevEui.setText("mac get deveui"); - cmdMacGetDevEui.setToolTipText("sys reset"); - cmdMacGetDevEui.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdMacGetDevEui.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdMacGetDevEui.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdMacGetDevEui.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdMacGetDevEui.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdMacGetDevEuiActionPerformed(evt); - } - }); - - cmdMacGetAppEui.setText("mac get appeui"); - cmdMacGetAppEui.setToolTipText("sys reset"); - cmdMacGetAppEui.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdMacGetAppEui.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdMacGetAppEui.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdMacGetAppEui.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdMacGetAppEui.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdMacGetAppEuiActionPerformed(evt); - } - }); - - DevEUI.setText("Enter Device EUI"); - DevEUI.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - DevEUIActionPerformed(evt); - } - }); - - AppEUI.setText("Enter App EUI"); - AppEUI.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - AppEUIActionPerformed(evt); - } - }); - - AppKey.setText("Enter App Key"); - AppKey.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - AppKeyActionPerformed(evt); - } - }); - - OTAAPane.setLayer(cmdMacSetDevEui, javax.swing.JLayeredPane.DEFAULT_LAYER); - OTAAPane.setLayer(cmdMacSetAppEui, javax.swing.JLayeredPane.DEFAULT_LAYER); - OTAAPane.setLayer(cmdMacSetAppKey, javax.swing.JLayeredPane.DEFAULT_LAYER); - OTAAPane.setLayer(cmdMacJoinOTAA, javax.swing.JLayeredPane.DEFAULT_LAYER); - OTAAPane.setLayer(cmdMacGetDevEui, javax.swing.JLayeredPane.DEFAULT_LAYER); - OTAAPane.setLayer(cmdMacGetAppEui, javax.swing.JLayeredPane.DEFAULT_LAYER); - OTAAPane.setLayer(DevEUI, javax.swing.JLayeredPane.DEFAULT_LAYER); - OTAAPane.setLayer(AppEUI, javax.swing.JLayeredPane.DEFAULT_LAYER); - OTAAPane.setLayer(AppKey, javax.swing.JLayeredPane.DEFAULT_LAYER); - - javax.swing.GroupLayout OTAAPaneLayout = new javax.swing.GroupLayout(OTAAPane); - OTAAPane.setLayout(OTAAPaneLayout); - OTAAPaneLayout.setHorizontalGroup( - OTAAPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(OTAAPaneLayout.createSequentialGroup() - .addGroup(OTAAPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(cmdMacSetDevEui, javax.swing.GroupLayout.PREFERRED_SIZE, 180, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdMacSetAppEui, javax.swing.GroupLayout.PREFERRED_SIZE, 1, Short.MAX_VALUE) - .addComponent(cmdMacSetAppKey, javax.swing.GroupLayout.PREFERRED_SIZE, 1, Short.MAX_VALUE) - .addComponent(cmdMacJoinOTAA, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(OTAAPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) - .addComponent(AppEUI) - .addComponent(DevEUI, javax.swing.GroupLayout.DEFAULT_SIZE, 204, Short.MAX_VALUE) - .addComponent(AppKey)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(OTAAPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(cmdMacGetDevEui, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdMacGetAppEui, javax.swing.GroupLayout.PREFERRED_SIZE, 1, Short.MAX_VALUE)) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - OTAAPaneLayout.setVerticalGroup( - OTAAPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, OTAAPaneLayout.createSequentialGroup() - .addGroup(OTAAPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(cmdMacSetDevEui, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(DevEUI, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdMacGetDevEui, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(OTAAPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(cmdMacSetAppEui, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(AppEUI, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdMacGetAppEui, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(OTAAPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(cmdMacSetAppKey, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(AppKey, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cmdMacJoinOTAA, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap()) - ); - - ActivationPane.setLayer(ABPPane, javax.swing.JLayeredPane.DEFAULT_LAYER); - ActivationPane.setLayer(cmdMacSave, javax.swing.JLayeredPane.DEFAULT_LAYER); - ActivationPane.setLayer(OTAAPane, javax.swing.JLayeredPane.DEFAULT_LAYER); - - javax.swing.GroupLayout ActivationPaneLayout = new javax.swing.GroupLayout(ActivationPane); - ActivationPane.setLayout(ActivationPaneLayout); - ActivationPaneLayout.setHorizontalGroup( - ActivationPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(ActivationPaneLayout.createSequentialGroup() - .addGroup(ActivationPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(OTAAPane, javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(ABPPane, javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(cmdMacSave, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addGap(19, 19, 19)) - ); - ActivationPaneLayout.setVerticalGroup( - ActivationPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(ActivationPaneLayout.createSequentialGroup() - .addComponent(ABPPane, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(1, 1, 1) - .addComponent(cmdMacSave, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(OTAAPane, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(0, 317, Short.MAX_VALUE)) - ); - - ActivationScrollPane.setViewportView(ActivationPane); - - RN2483jTab.addTab(" Activation ", ActivationScrollPane); - - RN2483.setLayer(RN2483jTab, javax.swing.JLayeredPane.DEFAULT_LAYER); - - javax.swing.GroupLayout RN2483Layout = new javax.swing.GroupLayout(RN2483); - RN2483.setLayout(RN2483Layout); - RN2483Layout.setHorizontalGroup( - RN2483Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(RN2483jTab, javax.swing.GroupLayout.DEFAULT_SIZE, 544, Short.MAX_VALUE) - ); - RN2483Layout.setVerticalGroup( - RN2483Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(RN2483jTab, javax.swing.GroupLayout.DEFAULT_SIZE, 716, Short.MAX_VALUE) - ); - - LeftTab.addTab(" RN2483 ", RN2483); - - LeftBasePane.setLayer(LeftTab, javax.swing.JLayeredPane.DEFAULT_LAYER); - - javax.swing.GroupLayout LeftBasePaneLayout = new javax.swing.GroupLayout(LeftBasePane); - LeftBasePane.setLayout(LeftBasePaneLayout); - LeftBasePaneLayout.setHorizontalGroup( - LeftBasePaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(LeftTab, javax.swing.GroupLayout.DEFAULT_SIZE, 542, Short.MAX_VALUE) - ); - LeftBasePaneLayout.setVerticalGroup( - LeftBasePaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(LeftTab, javax.swing.GroupLayout.DEFAULT_SIZE, 744, Short.MAX_VALUE) - ); - - LeftTab.getAccessibleContext().setAccessibleName("LeftTab"); - - HorizontSplit.setLeftComponent(LeftBasePane); - - RightBasePane.setOpaque(true); - - LEDPanel.setMaximumSize(new java.awt.Dimension(392, 25)); - LEDPanel.setMinimumSize(new java.awt.Dimension(392, 25)); - LEDPanel.setOpaque(true); - - PortOpenLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - PortOpenLabel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/led_grey.png"))); // NOI18N - PortOpenLabel.setText("Open"); - PortOpenLabel.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); - PortOpenLabel.setMaximumSize(new java.awt.Dimension(50, 25)); - PortOpenLabel.setMinimumSize(new java.awt.Dimension(50, 25)); - PortOpenLabel.setPreferredSize(new java.awt.Dimension(50, 25)); - PortOpenLabel.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); - - PortCTS.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - PortCTS.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/led_grey.png"))); // NOI18N - PortCTS.setText("CTS"); - PortCTS.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); - PortCTS.setMaximumSize(new java.awt.Dimension(50, 25)); - PortCTS.setMinimumSize(new java.awt.Dimension(50, 25)); - PortCTS.setPreferredSize(new java.awt.Dimension(50, 25)); - PortCTS.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); - - PortDTR.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/led_grey.png"))); // NOI18N - PortDTR.setText("DTR"); - PortDTR.setToolTipText(""); - PortDTR.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); - PortDTR.setVerticalAlignment(javax.swing.SwingConstants.TOP); - PortDTR.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); - PortDTR.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - PortDTRActionPerformed(evt); - } - }); - - PortRTS.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/led_grey.png"))); // NOI18N - PortRTS.setText("RTS"); - PortRTS.setToolTipText(""); - PortRTS.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); - PortRTS.setVerticalAlignment(javax.swing.SwingConstants.TOP); - PortRTS.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); - PortRTS.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - PortRTSActionPerformed(evt); - } - }); - - Open.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - Open.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/connect1.png"))); // NOI18N - Open.setText("Open"); - Open.setToolTipText("Open/Close selected serial port"); - Open.setIconTextGap(2); - Open.setMargin(new java.awt.Insets(1, 1, 1, 1)); - Open.setMaximumSize(new java.awt.Dimension(100, 25)); - Open.setMinimumSize(new java.awt.Dimension(85, 25)); - Open.setPreferredSize(new java.awt.Dimension(80, 25)); - Open.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - OpenActionPerformed(evt); - } - }); - - Speed.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - Speed.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "1200", "2400", "4800", "9600", "19200", "38400", "57600", "74880", "115200", "230400", "460800", "921600" })); - Speed.setToolTipText("Select baud rate"); - Speed.setMaximumSize(new java.awt.Dimension(80, 25)); - Speed.setMinimumSize(new java.awt.Dimension(80, 25)); - Speed.setPreferredSize(new java.awt.Dimension(80, 25)); - Speed.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - SpeedItemStateChanged(evt); - } - }); - Speed.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - SpeedActionPerformed(evt); - } - }); - Speed.addFocusListener(new java.awt.event.FocusAdapter() { - public void focusLost(java.awt.event.FocusEvent evt) { - SpeedFocusLost(evt); - } - }); - - ReScan.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/refresh3.png"))); // NOI18N - ReScan.setToolTipText("Scan system for available serial port"); - ReScan.setMaximumSize(new java.awt.Dimension(25, 25)); - ReScan.setMinimumSize(new java.awt.Dimension(25, 25)); - ReScan.setPreferredSize(new java.awt.Dimension(25, 25)); - ReScan.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - ReScanActionPerformed(evt); - } - }); - - AutoScroll.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N - AutoScroll.setSelected(true); - AutoScroll.setText("AutoScroll"); - AutoScroll.setToolTipText("Terminal AutoScroll Enable/Disable"); - AutoScroll.setMinimumSize(new java.awt.Dimension(70, 25)); - AutoScroll.setPreferredSize(new java.awt.Dimension(60, 25)); - AutoScroll.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - AutoScrollActionPerformed(evt); - } - }); - - Port.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - Port.setMaximumRowCount(20); - Port.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "COM1", "COM3" })); - Port.setToolTipText("Serial port chooser"); - Port.setMaximumSize(new java.awt.Dimension(150, 25)); - Port.setMinimumSize(new java.awt.Dimension(150, 25)); - Port.setPreferredSize(new java.awt.Dimension(150, 25)); - Port.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - PortItemStateChanged(evt); - } - }); - Port.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - PortActionPerformed(evt); - } - }); - - EOL.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N - EOL.setText("EOL"); - EOL.setToolTipText("EOL visible Enable/Disable"); - EOL.setMinimumSize(new java.awt.Dimension(70, 25)); - EOL.setPreferredSize(new java.awt.Dimension(60, 25)); - EOL.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - EOLItemStateChanged(evt); - } - }); - - CR.setFont(CR.getFont().deriveFont(CR.getFont().getSize()-4f)); - CR.setSelected(true); - CR.setText("CR"); - CR.setToolTipText("Add CR at end of line"); - CR.setAlignmentY(0.0F); - CR.setEnabled(false); - CR.setIconTextGap(0); - CR.setMargin(new java.awt.Insets(0, 0, 0, 0)); - CR.setName(""); // NOI18N - CR.setNextFocusableComponent(Command); - - LF.setFont(LF.getFont().deriveFont(LF.getFont().getSize()-4f)); - LF.setSelected(true); - LF.setText("LF"); - LF.setToolTipText("Add LF at end of line"); - LF.setAlignmentY(0.0F); - LF.setEnabled(false); - LF.setIconTextGap(0); - LF.setMargin(new java.awt.Insets(0, 0, 0, 0)); - - DonateSmall.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/donate-small.gif"))); // NOI18N - DonateSmall.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); - DonateSmall.setMargin(new java.awt.Insets(2, 2, 2, 2)); - DonateSmall.setMaximumSize(new java.awt.Dimension(100, 35)); - DonateSmall.setMinimumSize(new java.awt.Dimension(100, 35)); - DonateSmall.setPreferredSize(new java.awt.Dimension(100, 35)); - DonateSmall.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - DonateSmallActionPerformed(evt); - } - }); - - TerminalOnlyCheckBox.setFont(TerminalOnlyCheckBox.getFont().deriveFont(TerminalOnlyCheckBox.getFont().getSize()-4f)); - TerminalOnlyCheckBox.setText(" Hide Editor"); - TerminalOnlyCheckBox.setToolTipText("Add LF at end of line"); - TerminalOnlyCheckBox.setAlignmentY(0.0F); - TerminalOnlyCheckBox.setIconTextGap(0); - TerminalOnlyCheckBox.setMargin(new java.awt.Insets(0, 0, 0, 0)); - TerminalOnlyCheckBox.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - TerminalOnlyCheckBoxItemStateChanged(evt); - } - }); - - EditorOnlyCheckBox.setFont(EditorOnlyCheckBox.getFont().deriveFont(EditorOnlyCheckBox.getFont().getSize()-4f)); - EditorOnlyCheckBox.setText(" Hide Terminal"); - EditorOnlyCheckBox.setToolTipText("Add LF at end of line"); - EditorOnlyCheckBox.setAlignmentY(0.0F); - EditorOnlyCheckBox.setIconTextGap(0); - EditorOnlyCheckBox.setMargin(new java.awt.Insets(0, 0, 0, 0)); - EditorOnlyCheckBox.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - EditorOnlyCheckBoxItemStateChanged(evt); - } - }); - - LEDPanel.setLayer(PortOpenLabel, javax.swing.JLayeredPane.DEFAULT_LAYER); - LEDPanel.setLayer(PortCTS, javax.swing.JLayeredPane.DEFAULT_LAYER); - LEDPanel.setLayer(PortDTR, javax.swing.JLayeredPane.DEFAULT_LAYER); - LEDPanel.setLayer(PortRTS, javax.swing.JLayeredPane.DEFAULT_LAYER); - LEDPanel.setLayer(Open, javax.swing.JLayeredPane.DEFAULT_LAYER); - LEDPanel.setLayer(Speed, javax.swing.JLayeredPane.DEFAULT_LAYER); - LEDPanel.setLayer(ReScan, javax.swing.JLayeredPane.DEFAULT_LAYER); - LEDPanel.setLayer(AutoScroll, javax.swing.JLayeredPane.DEFAULT_LAYER); - LEDPanel.setLayer(Port, javax.swing.JLayeredPane.DEFAULT_LAYER); - LEDPanel.setLayer(EOL, javax.swing.JLayeredPane.DEFAULT_LAYER); - LEDPanel.setLayer(CR, javax.swing.JLayeredPane.DEFAULT_LAYER); - LEDPanel.setLayer(LF, javax.swing.JLayeredPane.DEFAULT_LAYER); - LEDPanel.setLayer(DonateSmall, javax.swing.JLayeredPane.DEFAULT_LAYER); - LEDPanel.setLayer(TerminalOnlyCheckBox, javax.swing.JLayeredPane.DEFAULT_LAYER); - LEDPanel.setLayer(EditorOnlyCheckBox, javax.swing.JLayeredPane.DEFAULT_LAYER); - - javax.swing.GroupLayout LEDPanelLayout = new javax.swing.GroupLayout(LEDPanel); - LEDPanel.setLayout(LEDPanelLayout); - LEDPanelLayout.setHorizontalGroup( - LEDPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(LEDPanelLayout.createSequentialGroup() - .addGroup(LEDPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(LEDPanelLayout.createSequentialGroup() - .addGroup(LEDPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addGroup(LEDPanelLayout.createSequentialGroup() - .addComponent(PortDTR) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(PortRTS)) - .addGroup(LEDPanelLayout.createSequentialGroup() - .addComponent(PortOpenLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(PortCTS, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(Open, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(LEDPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(LEDPanelLayout.createSequentialGroup() - .addComponent(ReScan, javax.swing.GroupLayout.PREFERRED_SIZE, 37, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(LEDPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(EOL, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(AutoScroll, javax.swing.GroupLayout.DEFAULT_SIZE, 70, Short.MAX_VALUE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(LEDPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(LEDPanelLayout.createSequentialGroup() - .addComponent(LF) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(EditorOnlyCheckBox, javax.swing.GroupLayout.DEFAULT_SIZE, 70, Short.MAX_VALUE)) - .addGroup(LEDPanelLayout.createSequentialGroup() - .addComponent(CR) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(TerminalOnlyCheckBox, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) - .addGroup(LEDPanelLayout.createSequentialGroup() - .addComponent(Speed, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(DonateSmall, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) - .addComponent(Port, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addContainerGap()) - ); - LEDPanelLayout.setVerticalGroup( - LEDPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(LEDPanelLayout.createSequentialGroup() - .addComponent(Port, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(LEDPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, LEDPanelLayout.createSequentialGroup() - .addGroup(LEDPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(ReScan, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(LEDPanelLayout.createSequentialGroup() - .addGroup(LEDPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(AutoScroll, javax.swing.GroupLayout.PREFERRED_SIZE, 19, Short.MAX_VALUE) - .addComponent(CR) - .addComponent(TerminalOnlyCheckBox)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(LEDPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(EOL, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(LF) - .addComponent(EditorOnlyCheckBox)))) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(LEDPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(Speed, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(DonateSmall, javax.swing.GroupLayout.DEFAULT_SIZE, 45, Short.MAX_VALUE))) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, LEDPanelLayout.createSequentialGroup() - .addGroup(LEDPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(PortOpenLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(PortCTS, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(LEDPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(PortDTR) - .addComponent(PortRTS))) - .addComponent(Open, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) - ); - - Port.getAccessibleContext().setAccessibleName(""); - - RightBottomPane.setAlignmentX(0.0F); - RightBottomPane.setAlignmentY(0.0F); - RightBottomPane.setOpaque(true); - - Command.setEditable(true); - Command.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - Command.setMaximumRowCount(20); - Command.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "AT", "AT+GMR", "AT+RST", "" })); - Command.setToolTipText("Command to send"); - Command.setAlignmentX(0.0F); - Command.setAlignmentY(0.0F); - Command.setAutoscrolls(true); - Command.setEnabled(false); - Command.setName("Command"); // NOI18N - Command.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - CommandItemStateChanged(evt); - } - }); - Command.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - CommandActionPerformed(evt); - } - }); - Command.addKeyListener(new java.awt.event.KeyAdapter() { - public void keyPressed(java.awt.event.KeyEvent evt) { - CommandKeyPressed(evt); - } - public void keyReleased(java.awt.event.KeyEvent evt) { - CommandKeyReleased(evt); - } - public void keyTyped(java.awt.event.KeyEvent evt) { - CommandKeyTyped(evt); - } - }); - - RightBottomPane.setLayer(Command, javax.swing.JLayeredPane.DEFAULT_LAYER); - - javax.swing.GroupLayout RightBottomPaneLayout = new javax.swing.GroupLayout(RightBottomPane); - RightBottomPane.setLayout(RightBottomPaneLayout); - RightBottomPaneLayout.setHorizontalGroup( - RightBottomPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(Command, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - ); - RightBottomPaneLayout.setVerticalGroup( - RightBottomPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(Command, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 36, javax.swing.GroupLayout.PREFERRED_SIZE) - ); - - Command.getAccessibleContext().setAccessibleName("Command"); - - RightBigPane.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED)); - RightBigPane.setOpaque(true); - RightBigPane.addPropertyChangeListener(new java.beans.PropertyChangeListener() { - public void propertyChange(java.beans.PropertyChangeEvent evt) { - RightBigPanePropertyChange(evt); - } - }); - - RightFilesSplitPane.setDividerLocation(300); - RightFilesSplitPane.setAutoscrolls(true); - RightFilesSplitPane.addPropertyChangeListener(new java.beans.PropertyChangeListener() { - public void propertyChange(java.beans.PropertyChangeEvent evt) { - RightFilesSplitPanePropertyChange(evt); - } - }); - - RightSplitPane.setBorder(null); - RightSplitPane.setDividerLocation(320); - RightSplitPane.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT); - RightSplitPane.setToolTipText(""); - RightSplitPane.setName(""); // NOI18N - RightSplitPane.addPropertyChangeListener(new java.beans.PropertyChangeListener() { - public void propertyChange(java.beans.PropertyChangeEvent evt) { - RightSplitPanePropertyChange(evt); - } - }); - - TerminalPane.setToolTipText("Terminal window"); - TerminalPane.setMaximumSize(new java.awt.Dimension(100, 100)); - TerminalPane.setMinimumSize(new java.awt.Dimension(100, 100)); - TerminalPane.setName(""); // NOI18N - TerminalPane.setPreferredSize(new java.awt.Dimension(100, 100)); - TerminalPane.setViewportView(Terminal); - - Terminal.setEditable(false); - Terminal.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED)); - Terminal.setColumns(20); - Terminal.setRows(50); - Terminal.setTabSize(4); - Terminal.setToolTipText(""); - Terminal.setWrapStyleWord(false); - Terminal.setBracketMatchingEnabled(false); - Terminal.setCloseCurlyBraces(false); - Terminal.setCloseMarkupTags(false); - Terminal.setDragEnabled(false); - Terminal.setFadeCurrentLineHighlight(true); - Terminal.setHighlightSecondaryLanguages(false); - Terminal.setMaximumSize(new java.awt.Dimension(100, 100)); - Terminal.setMinimumSize(new java.awt.Dimension(100, 100)); - Terminal.setName(""); // NOI18N - Terminal.setPopupMenu(ContextMenuTerminal); - Terminal.setSyntaxEditingStyle("text/LUA"); - Terminal.addPropertyChangeListener(new java.beans.PropertyChangeListener() { - public void propertyChange(java.beans.PropertyChangeEvent evt) { - TerminalPropertyChange(evt); - } - }); - TerminalPane.setViewportView(Terminal); - Terminal.getAccessibleContext().setAccessibleParent(TerminalPane); - - RightSplitPane.setTopComponent(TerminalPane); - - ScrollLog.setBorder(TerminalPane.getBorder()); - ScrollLog.setToolTipText("Log"); - ScrollLog.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); - ScrollLog.setAlignmentX(0.0F); - ScrollLog.setAlignmentY(0.0F); - - Log.setEditable(false); - Log.setBackground(new java.awt.Color(51, 51, 51)); - Log.setColumns(20); - Log.setFont(Log.getFont().deriveFont(Log.getFont().getSize()-1f)); - Log.setForeground(new java.awt.Color(0, 204, 0)); - Log.setLineWrap(true); - Log.setRows(3); - Log.setTabSize(4); - Log.setText("Logging enable"); - Log.setToolTipText("Log"); - Log.setWrapStyleWord(true); - Log.setAlignmentX(0.0F); - Log.setAlignmentY(0.0F); - Log.setBorder(Terminal.getBorder()); - Log.setComponentPopupMenu(ContextMenuLog); - Log.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); - Log.setMargin(new java.awt.Insets(0, 0, 0, 0)); - Log.setName("Log"); // NOI18N - Log.setNextFocusableComponent(SendCommand); - Log.setSelectionColor(new java.awt.Color(204, 0, 0)); - Log.setSelectionEnd(0); - Log.addCaretListener(new javax.swing.event.CaretListener() { - public void caretUpdate(javax.swing.event.CaretEvent evt) { - LogCaretUpdate(evt); - } - }); - ScrollLog.setViewportView(Log); - Log.getAccessibleContext().setAccessibleName("Log"); - - RightSplitPane.setBottomComponent(ScrollLog); - - TerminalLogPane.setLayer(RightSplitPane, javax.swing.JLayeredPane.DEFAULT_LAYER); - - javax.swing.GroupLayout TerminalLogPaneLayout = new javax.swing.GroupLayout(TerminalLogPane); - TerminalLogPane.setLayout(TerminalLogPaneLayout); - TerminalLogPaneLayout.setHorizontalGroup( - TerminalLogPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGap(0, 293, Short.MAX_VALUE) - .addGroup(TerminalLogPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(RightSplitPane, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 293, Short.MAX_VALUE)) - ); - TerminalLogPaneLayout.setVerticalGroup( - TerminalLogPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGap(0, 421, Short.MAX_VALUE) - .addGroup(TerminalLogPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(RightSplitPane, javax.swing.GroupLayout.DEFAULT_SIZE, 421, Short.MAX_VALUE)) - ); - - RightFilesSplitPane.setLeftComponent(TerminalLogPane); - - FileManagerScrollPane.setBorder(null); - FileManagerScrollPane.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); - - FileManagersLayer.setMaximumSize(new java.awt.Dimension(145, 145)); - - NodeFileManagerPane.setComponentPopupMenu(ContextMenuFileManager); - NodeFileManagerPane.setMaximumSize(new java.awt.Dimension(145, 145)); - NodeFileManagerPane.setName(""); // NOI18N - NodeFileManagerPane.setPreferredSize(new java.awt.Dimension(145, 145)); - java.awt.FlowLayout flowLayout1 = new java.awt.FlowLayout(java.awt.FlowLayout.LEADING, 2, 2); - flowLayout1.setAlignOnBaseline(true); - NodeFileManagerPane.setLayout(flowLayout1); - - FileFormat.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/file manager (delete).png"))); // NOI18N - FileFormat.setText("Format"); - FileFormat.setToolTipText("Format (erase) NodeMCU file system. All files will be removed!"); - FileFormat.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - FileFormat.setMargin(new java.awt.Insets(2, 4, 2, 4)); - FileFormat.setMaximumSize(new java.awt.Dimension(130, 25)); - FileFormat.setMinimumSize(new java.awt.Dimension(130, 25)); - FileFormat.setPreferredSize(new java.awt.Dimension(130, 25)); - FileFormat.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - FileFormatActionPerformed(evt); - } - }); - NodeFileManagerPane.add(FileFormat); - - FileSystemInfo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/file manager.png"))); // NOI18N - FileSystemInfo.setText("FS Info"); - FileSystemInfo.setToolTipText("Execute command file.fsinfo() and show total, used and remainig space on the ESP filesystem"); - FileSystemInfo.setAlignmentX(0.5F); - FileSystemInfo.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - FileSystemInfo.setMargin(new java.awt.Insets(2, 2, 2, 2)); - FileSystemInfo.setMaximumSize(new java.awt.Dimension(130, 25)); - FileSystemInfo.setPreferredSize(new java.awt.Dimension(130, 25)); - FileSystemInfo.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - FileSystemInfoActionPerformed(evt); - } - }); - NodeFileManagerPane.add(FileSystemInfo); - - FileListReload.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - FileListReload.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/refresh3.png"))); // NOI18N - FileListReload.setText("Reload"); - FileListReload.setAlignmentX(0.5F); - FileListReload.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - FileListReload.setMargin(new java.awt.Insets(2, 2, 2, 2)); - FileListReload.setMaximumSize(new java.awt.Dimension(130, 25)); - FileListReload.setPreferredSize(new java.awt.Dimension(130, 25)); - FileListReload.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - FileListReloadActionPerformed(evt); - } - }); - NodeFileManagerPane.add(FileListReload); - - FileAsButton1.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - FileAsButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/file.png"))); // NOI18N - FileAsButton1.setText("File 1"); - FileAsButton1.setToolTipText("Left click"); - FileAsButton1.setAlignmentX(0.5F); - FileAsButton1.setComponentPopupMenu(ContextMenuESPFileLUA); - FileAsButton1.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - FileAsButton1.setMargin(new java.awt.Insets(2, 2, 2, 2)); - FileAsButton1.setMaximumSize(new java.awt.Dimension(130, 25)); - FileAsButton1.setPreferredSize(new java.awt.Dimension(130, 25)); - FileAsButton1.addMouseListener(new java.awt.event.MouseAdapter() { - public void mouseClicked(java.awt.event.MouseEvent evt) { - FileAsButton1MouseClicked(evt); - } - }); - FileAsButton1.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - FileAsButton1ActionPerformed(evt); - } - }); - NodeFileManagerPane.add(FileAsButton1); - - FileRenamePanel.setMaximumSize(new java.awt.Dimension(130, 45)); - FileRenamePanel.setMinimumSize(new java.awt.Dimension(130, 45)); - - FileRenameLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - FileRenameLabel.setText("Old file name"); - FileRenameLabel.setToolTipText("Input new file name and hit Enter to completed or press Reload for cancel"); - FileRenameLabel.setMaximumSize(new java.awt.Dimension(130, 14)); - FileRenameLabel.setMinimumSize(new java.awt.Dimension(130, 14)); - FileRenameLabel.setPreferredSize(new java.awt.Dimension(130, 14)); - - FileRename.setText("NewFileName"); - FileRename.setToolTipText("Input new file name and hit Enter to completed or press Reload for cancel"); - FileRename.setMaximumSize(new java.awt.Dimension(130, 25)); - FileRename.setMinimumSize(new java.awt.Dimension(130, 25)); - FileRename.setPreferredSize(new java.awt.Dimension(130, 25)); - FileRename.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - FileRenameActionPerformed(evt); - } - }); - - FileRenamePanel.setLayer(FileRenameLabel, javax.swing.JLayeredPane.DEFAULT_LAYER); - FileRenamePanel.setLayer(FileRename, javax.swing.JLayeredPane.DEFAULT_LAYER); - - javax.swing.GroupLayout FileRenamePanelLayout = new javax.swing.GroupLayout(FileRenamePanel); - FileRenamePanel.setLayout(FileRenamePanelLayout); - FileRenamePanelLayout.setHorizontalGroup( - FileRenamePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(FileRenamePanelLayout.createSequentialGroup() - .addGroup(FileRenamePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(FileRename, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(FileRenameLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addGap(0, 0, Short.MAX_VALUE)) - ); - FileRenamePanelLayout.setVerticalGroup( - FileRenamePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(FileRenamePanelLayout.createSequentialGroup() - .addComponent(FileRenameLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(FileRename, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(0, 0, Short.MAX_VALUE)) - ); - - NodeFileManagerPane.add(FileRenamePanel); - - PyFileManagerPane.setMaximumSize(new java.awt.Dimension(500, 155)); - PyFileManagerPane.setMinimumSize(new java.awt.Dimension(55, 55)); - PyFileManagerPane.setPreferredSize(new java.awt.Dimension(155, 155)); - PyFileManagerPane.setLayout(new java.awt.FlowLayout()); - - PyListDir.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/refresh3.png"))); // NOI18N - PyListDir.setText("ListDir /"); - PyListDir.setToolTipText("Execute command listdir() and show files"); - PyListDir.setAlignmentX(0.5F); - PyListDir.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - PyListDir.setMargin(new java.awt.Insets(2, 2, 2, 2)); - PyListDir.setMaximumSize(new java.awt.Dimension(130, 25)); - PyListDir.setPreferredSize(new java.awt.Dimension(130, 25)); - PyListDir.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - PyListDirActionPerformed(evt); - } - }); - PyFileManagerPane.add(PyListDir); - - PyFileAsButton1.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - PyFileAsButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/file.png"))); // NOI18N - PyFileAsButton1.setText("File 1"); - PyFileAsButton1.setToolTipText("Left click"); - PyFileAsButton1.setAlignmentX(0.5F); - PyFileAsButton1.setComponentPopupMenu(ContextMenuESPFileLUA); - PyFileAsButton1.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - PyFileAsButton1.setMargin(new java.awt.Insets(2, 2, 2, 2)); - PyFileAsButton1.setMaximumSize(new java.awt.Dimension(130, 25)); - PyFileAsButton1.setPreferredSize(new java.awt.Dimension(130, 25)); - PyFileAsButton1.addMouseListener(new java.awt.event.MouseAdapter() { - public void mouseClicked(java.awt.event.MouseEvent evt) { - PyFileAsButton1MouseClicked(evt); - } - }); - PyFileAsButton1.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - PyFileAsButton1ActionPerformed(evt); - } - }); - PyFileManagerPane.add(PyFileAsButton1); - - FileManagersLayer.setLayer(NodeFileManagerPane, javax.swing.JLayeredPane.DEFAULT_LAYER); - FileManagersLayer.setLayer(PyFileManagerPane, javax.swing.JLayeredPane.DEFAULT_LAYER); - - javax.swing.GroupLayout FileManagersLayerLayout = new javax.swing.GroupLayout(FileManagersLayer); - FileManagersLayer.setLayout(FileManagersLayerLayout); - FileManagersLayerLayout.setHorizontalGroup( - FileManagersLayerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(FileManagersLayerLayout.createSequentialGroup() - .addGroup(FileManagersLayerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(PyFileManagerPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(NodeFileManagerPane, javax.swing.GroupLayout.PREFERRED_SIZE, 155, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGap(0, 433, Short.MAX_VALUE)) - ); - FileManagersLayerLayout.setVerticalGroup( - FileManagersLayerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(FileManagersLayerLayout.createSequentialGroup() - .addComponent(NodeFileManagerPane, javax.swing.GroupLayout.DEFAULT_SIZE, 248, Short.MAX_VALUE) - .addGap(6, 6, 6) - .addComponent(PyFileManagerPane, javax.swing.GroupLayout.DEFAULT_SIZE, 167, Short.MAX_VALUE)) - ); - - FileManagerScrollPane.setViewportView(FileManagersLayer); - - RightFilesSplitPane.setRightComponent(FileManagerScrollPane); - - RightSnippetsPane.setLayout(new java.awt.FlowLayout()); - - ButtonSnippet0.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonSnippet0.setMnemonic(KeyEvent.VK_BACK_QUOTE); - ButtonSnippet0.setText("Snippet0"); - ButtonSnippet0.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonSnippet0ActionPerformed(evt); - } - }); - RightSnippetsPane.add(ButtonSnippet0); - - ButtonSnippet1.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonSnippet1.setMnemonic(KeyEvent.VK_1); - ButtonSnippet1.setText("Snippet1"); - ButtonSnippet1.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonSnippet1ActionPerformed(evt); - } - }); - RightSnippetsPane.add(ButtonSnippet1); - - ButtonSnippet2.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonSnippet2.setMnemonic(KeyEvent.VK_2); - ButtonSnippet2.setText("Snippet2"); - ButtonSnippet2.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonSnippet2ActionPerformed(evt); - } - }); - RightSnippetsPane.add(ButtonSnippet2); - - ButtonSnippet3.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonSnippet3.setMnemonic(KeyEvent.VK_3); - ButtonSnippet3.setText("Snippet3"); - ButtonSnippet3.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonSnippet3ActionPerformed(evt); - } - }); - RightSnippetsPane.add(ButtonSnippet3); - - ButtonSnippet4.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonSnippet4.setMnemonic(KeyEvent.VK_4); - ButtonSnippet4.setText("Snippet4"); - ButtonSnippet4.setToolTipText(""); - ButtonSnippet4.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonSnippet4ActionPerformed(evt); - } - }); - RightSnippetsPane.add(ButtonSnippet4); - - ButtonSnippet5.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonSnippet5.setMnemonic(KeyEvent.VK_5); - ButtonSnippet5.setText("Snippet5"); - ButtonSnippet5.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonSnippet5ActionPerformed(evt); - } - }); - RightSnippetsPane.add(ButtonSnippet5); - - ButtonSnippet6.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonSnippet6.setMnemonic(KeyEvent.VK_6); - ButtonSnippet6.setText("Snippet6"); - ButtonSnippet6.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonSnippet6ActionPerformed(evt); - } - }); - RightSnippetsPane.add(ButtonSnippet6); - - ButtonSnippet7.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonSnippet7.setMnemonic(KeyEvent.VK_7); - ButtonSnippet7.setText("Snippet7"); - ButtonSnippet7.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonSnippet7ActionPerformed(evt); - } - }); - RightSnippetsPane.add(ButtonSnippet7); - - ButtonSnippet8.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonSnippet8.setMnemonic(KeyEvent.VK_8); - ButtonSnippet8.setText("Snippet8"); - ButtonSnippet8.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonSnippet8ActionPerformed(evt); - } - }); - RightSnippetsPane.add(ButtonSnippet8); - - ButtonSnippet9.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonSnippet9.setMnemonic(KeyEvent.VK_9); - ButtonSnippet9.setText("Snippet9"); - ButtonSnippet9.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonSnippet9ActionPerformed(evt); - } - }); - RightSnippetsPane.add(ButtonSnippet9); - - ButtonSnippet10.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonSnippet10.setMnemonic(KeyEvent.VK_0); - ButtonSnippet10.setText("Snippet10"); - ButtonSnippet10.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonSnippet10ActionPerformed(evt); - } - }); - RightSnippetsPane.add(ButtonSnippet10); - - ButtonSnippet11.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonSnippet11.setMnemonic(KeyEvent.VK_MINUS); - ButtonSnippet11.setText("Snippet11"); - ButtonSnippet11.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonSnippet11ActionPerformed(evt); - } - }); - RightSnippetsPane.add(ButtonSnippet11); - - ButtonSnippet12.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonSnippet12.setMnemonic(KeyEvent.VK_EQUALS); - ButtonSnippet12.setText("Snippet12"); - ButtonSnippet12.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonSnippet12ActionPerformed(evt); - } - }); - RightSnippetsPane.add(ButtonSnippet12); - - ButtonSnippet13.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonSnippet13.setMnemonic(KeyEvent.VK_BACK_SLASH); - ButtonSnippet13.setText("Snippet13"); - ButtonSnippet13.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonSnippet13ActionPerformed(evt); - } - }); - RightSnippetsPane.add(ButtonSnippet13); - - ButtonSnippet14.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonSnippet14.setMnemonic(KeyEvent.VK_BACK_SPACE); - ButtonSnippet14.setText("Snippet14"); - ButtonSnippet14.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonSnippet14ActionPerformed(evt); - } - }); - RightSnippetsPane.add(ButtonSnippet14); - - ButtonSnippet15.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonSnippet15.setText("Snippet15"); - ButtonSnippet15.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonSnippet15ActionPerformed(evt); - } - }); - RightSnippetsPane.add(ButtonSnippet15); - - RightBigPane.setLayer(RightFilesSplitPane, javax.swing.JLayeredPane.DEFAULT_LAYER); - RightBigPane.setLayer(RightSnippetsPane, javax.swing.JLayeredPane.DEFAULT_LAYER); - - javax.swing.GroupLayout RightBigPaneLayout = new javax.swing.GroupLayout(RightBigPane); - RightBigPane.setLayout(RightBigPaneLayout); - RightBigPaneLayout.setHorizontalGroup( - RightBigPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(RightFilesSplitPane, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) - .addComponent(RightSnippetsPane, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) - ); - RightBigPaneLayout.setVerticalGroup( - RightBigPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(RightBigPaneLayout.createSequentialGroup() - .addComponent(RightFilesSplitPane) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(RightSnippetsPane, javax.swing.GroupLayout.PREFERRED_SIZE, 96, javax.swing.GroupLayout.PREFERRED_SIZE)) - ); - - RightExtraButtons.setOpaque(true); - RightExtraButtons.setLayout(new java.awt.FlowLayout()); - - NodeHeap.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - NodeHeap.setText("Heap"); - NodeHeap.setToolTipText("Return the remain HEAP size in bytes"); - NodeHeap.setMaximumSize(new java.awt.Dimension(87, 30)); - NodeHeap.setMinimumSize(new java.awt.Dimension(87, 30)); - NodeHeap.setPreferredSize(new java.awt.Dimension(87, 30)); - NodeHeap.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - NodeHeapActionPerformed(evt); - } - }); - RightExtraButtons.add(NodeHeap); - - NodeInfo.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - NodeInfo.setText("Chip Info"); - NodeInfo.setToolTipText("Return NodeMCU version, chipid, flashid, flash size, flash mode, flash speed"); - NodeInfo.setMaximumSize(new java.awt.Dimension(87, 30)); - NodeInfo.setMinimumSize(new java.awt.Dimension(87, 30)); - NodeInfo.setPreferredSize(new java.awt.Dimension(87, 30)); - NodeInfo.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - NodeInfoActionPerformed(evt); - } - }); - RightExtraButtons.add(NodeInfo); - - NodeChipID.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - NodeChipID.setText("Chip ID"); - NodeChipID.setToolTipText("Return chip ID"); - NodeChipID.setMargin(new java.awt.Insets(2, 2, 2, 2)); - NodeChipID.setMaximumSize(new java.awt.Dimension(87, 30)); - NodeChipID.setMinimumSize(new java.awt.Dimension(87, 30)); - NodeChipID.setPreferredSize(new java.awt.Dimension(87, 30)); - NodeChipID.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - NodeChipIDActionPerformed(evt); - } - }); - RightExtraButtons.add(NodeChipID); - - NodeFlashID.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - NodeFlashID.setText("Flash ID"); - NodeFlashID.setToolTipText("Return flash ID"); - NodeFlashID.setMargin(new java.awt.Insets(2, 2, 2, 2)); - NodeFlashID.setMaximumSize(new java.awt.Dimension(87, 30)); - NodeFlashID.setMinimumSize(new java.awt.Dimension(87, 30)); - NodeFlashID.setPreferredSize(new java.awt.Dimension(87, 30)); - NodeFlashID.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - NodeFlashIDActionPerformed(evt); - } - }); - RightExtraButtons.add(NodeFlashID); - - NodeReset.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - NodeReset.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/reset.png"))); // NOI18N - NodeReset.setText("Reset"); - NodeReset.setToolTipText("Soft reset by command node.reset()"); - NodeReset.setMargin(new java.awt.Insets(2, 4, 2, 4)); - NodeReset.setMaximumSize(new java.awt.Dimension(87, 30)); - NodeReset.setMinimumSize(new java.awt.Dimension(87, 30)); - NodeReset.setPreferredSize(new java.awt.Dimension(87, 30)); - NodeReset.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - NodeResetActionPerformed(evt); - } - }); - RightExtraButtons.add(NodeReset); - - SendCommand.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SendCommand.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/left.png"))); // NOI18N - SendCommand.setToolTipText(""); - SendCommand.setAlignmentY(0.0F); - SendCommand.setEnabled(false); - SendCommand.setLabel("Send"); - SendCommand.setMargin(new java.awt.Insets(0, 0, 0, 0)); - SendCommand.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - SendCommandActionPerformed(evt); - } - }); - - RightBasePane.setLayer(LEDPanel, javax.swing.JLayeredPane.DEFAULT_LAYER); - RightBasePane.setLayer(RightBottomPane, javax.swing.JLayeredPane.DEFAULT_LAYER); - RightBasePane.setLayer(RightBigPane, javax.swing.JLayeredPane.DEFAULT_LAYER); - RightBasePane.setLayer(RightExtraButtons, javax.swing.JLayeredPane.DEFAULT_LAYER); - RightBasePane.setLayer(SendCommand, javax.swing.JLayeredPane.DEFAULT_LAYER); - - javax.swing.GroupLayout RightBasePaneLayout = new javax.swing.GroupLayout(RightBasePane); - RightBasePane.setLayout(RightBasePaneLayout); - RightBasePaneLayout.setHorizontalGroup( - RightBasePaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(RightBasePaneLayout.createSequentialGroup() - .addGroup(RightBasePaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(RightBigPane) - .addGroup(RightBasePaneLayout.createSequentialGroup() - .addComponent(RightBottomPane) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(SendCommand, javax.swing.GroupLayout.PREFERRED_SIZE, 76, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(RightBasePaneLayout.createSequentialGroup() - .addGroup(RightBasePaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(RightExtraButtons, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(LEDPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGap(0, 0, Short.MAX_VALUE))) - .addContainerGap()) - ); - RightBasePaneLayout.setVerticalGroup( - RightBasePaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(RightBasePaneLayout.createSequentialGroup() - .addGap(1, 1, 1) - .addComponent(LEDPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(RightBigPane) - .addGap(5, 5, 5) - .addComponent(RightExtraButtons, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(RightBasePaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(RightBottomPane, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(SendCommand, javax.swing.GroupLayout.PREFERRED_SIZE, 36, javax.swing.GroupLayout.PREFERRED_SIZE))) - ); - - SendCommand.getAccessibleContext().setAccessibleName(""); - - HorizontSplit.setRightComponent(RightBasePane); - - MainMenuBar.setAlignmentX(0.0F); - MainMenuBar.setName("MainMenu"); // NOI18N - MainMenuBar.setPreferredSize(new java.awt.Dimension(300, 22)); - - MenuFile.setText("File"); - MenuFile.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuFileActionPerformed(evt); - } - }); - - MenuItemFileNew.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_N, java.awt.event.InputEvent.CTRL_MASK)); - MenuItemFileNew.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/document.png"))); // NOI18N - MenuItemFileNew.setText("New"); - MenuItemFileNew.setToolTipText("File New"); - MenuItemFileNew.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemFileNewActionPerformed(evt); - } - }); - MenuFile.add(MenuItemFileNew); - - MenuItemFileOpen.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_O, java.awt.event.InputEvent.CTRL_MASK)); - MenuItemFileOpen.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/folder open.png"))); // NOI18N - MenuItemFileOpen.setText("Open from disk"); - MenuItemFileOpen.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemFileOpenActionPerformed(evt); - } - }); - MenuFile.add(MenuItemFileOpen); - - MenuItemFileReload.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_R, java.awt.event.InputEvent.CTRL_MASK)); - MenuItemFileReload.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/refresh.png"))); // NOI18N - MenuItemFileReload.setText("Reload from disk"); - MenuItemFileReload.setToolTipText("Reload file from disk, if you use external editor"); - MenuItemFileReload.setEnabled(false); - MenuItemFileReload.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemFileReloadActionPerformed(evt); - } - }); - MenuFile.add(MenuItemFileReload); - - MenuItemFileSave.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.CTRL_MASK)); - MenuItemFileSave.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/save.png"))); // NOI18N - MenuItemFileSave.setText("Save to disk"); - MenuItemFileSave.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemFileSaveActionPerformed(evt); - } - }); - MenuFile.add(MenuItemFileSave); - - MenuItemFileSaveAs.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/save.png"))); // NOI18N - MenuItemFileSaveAs.setText("Save As.. to disk"); - MenuItemFileSaveAs.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemFileSaveAsActionPerformed(evt); - } - }); - MenuFile.add(MenuItemFileSaveAs); - - MenuItemFileSaveAll.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_A, java.awt.event.InputEvent.CTRL_MASK)); - MenuItemFileSaveAll.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/save_all.png"))); // NOI18N - MenuItemFileSaveAll.setText("Save All to disk"); - MenuItemFileSaveAll.setEnabled(false); - MenuFile.add(MenuItemFileSaveAll); - - MenuItemFileClose.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F4, java.awt.event.InputEvent.CTRL_MASK)); - MenuItemFileClose.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/folder closed.png"))); // NOI18N - MenuItemFileClose.setText("Close"); - MenuItemFileClose.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemFileCloseActionPerformed(evt); - } - }); - MenuFile.add(MenuItemFileClose); - MenuFile.add(jSeparatorFileMenu); - - MenuItemFileSaveESP.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.ALT_MASK)); - MenuItemFileSaveESP.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/move.png"))); // NOI18N - MenuItemFileSaveESP.setText("Save to ESP"); - - binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, FileSaveESP, org.jdesktop.beansbinding.ELProperty.create("${enabled}"), MenuItemFileSaveESP, org.jdesktop.beansbinding.BeanProperty.create("enabled")); - bindingGroup.addBinding(binding); - - MenuItemFileSaveESP.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemFileSaveESPActionPerformed(evt); - } - }); - MenuFile.add(MenuItemFileSaveESP); - - jMenuItem4.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_A, java.awt.event.InputEvent.ALT_MASK)); - jMenuItem4.setText("Save All to ESP"); - jMenuItem4.setEnabled(false); - MenuFile.add(jMenuItem4); - - MenuItemFileSendESP.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_E, java.awt.event.InputEvent.ALT_MASK)); - MenuItemFileSendESP.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/script_send.png"))); // NOI18N - MenuItemFileSendESP.setText("Send to ESP"); - MenuItemFileSendESP.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemFileSendESPActionPerformed(evt); - } - }); - MenuFile.add(MenuItemFileSendESP); - - jMenuItem7.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_U, java.awt.event.InputEvent.ALT_MASK)); - jMenuItem7.setText("Upload file to ESP"); - jMenuItem7.setEnabled(false); - MenuFile.add(jMenuItem7); - MenuFile.add(jSeparator4); - - MenuItemFileDo.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_D, java.awt.event.InputEvent.ALT_MASK)); - MenuItemFileDo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/play.png"))); // NOI18N - MenuItemFileDo.setText("DoFile on ESP"); - MenuItemFileDo.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemFileDoActionPerformed(evt); - } - }); - MenuFile.add(MenuItemFileDo); - MenuFile.add(jSeparator3); - - MenuItemFileRemoveESP.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_R, java.awt.event.InputEvent.ALT_MASK)); - MenuItemFileRemoveESP.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/trash.png"))); // NOI18N - MenuItemFileRemoveESP.setText("Remove from ESP"); - MenuItemFileRemoveESP.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemFileRemoveESPActionPerformed(evt); - } - }); - MenuFile.add(MenuItemFileRemoveESP); - MenuFile.add(jSeparator2); - - MenuItemFileExit.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F4, java.awt.event.InputEvent.ALT_MASK)); - MenuItemFileExit.setLabel("Exit"); - MenuItemFileExit.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemFileExitActionPerformed(evt); - } - }); - MenuFile.add(MenuItemFileExit); - - MainMenuBar.add(MenuFile); - - MenuEdit.setText("Edit"); - - MenuItemEditUndo.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_Z, java.awt.event.InputEvent.CTRL_MASK)); - MenuItemEditUndo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/undo1.png"))); // NOI18N - MenuItemEditUndo.setText("Undo"); - MenuItemEditUndo.setEnabled(false); - MenuItemEditUndo.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemEditUndoActionPerformed(evt); - } - }); - MenuEdit.add(MenuItemEditUndo); - - MenuItemEditRedo.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F4, 0)); - MenuItemEditRedo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/redo1.png"))); // NOI18N - MenuItemEditRedo.setText("Redo"); - MenuItemEditRedo.setEnabled(false); - MenuItemEditRedo.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemEditRedoActionPerformed(evt); - } - }); - MenuEdit.add(MenuItemEditRedo); - MenuEdit.add(jSeparator7); - - MenuItemEditCut.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_X, java.awt.event.InputEvent.CTRL_MASK)); - MenuItemEditCut.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/cut.png"))); // NOI18N - MenuItemEditCut.setText("Cut"); - MenuItemEditCut.setEnabled(false); - MenuItemEditCut.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemEditCutActionPerformed(evt); - } - }); - MenuEdit.add(MenuItemEditCut); - - MenuItemEditCopy.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C, java.awt.event.InputEvent.CTRL_MASK)); - MenuItemEditCopy.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/copy.png"))); // NOI18N - MenuItemEditCopy.setText("Copy"); - MenuItemEditCopy.setEnabled(false); - MenuItemEditCopy.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemEditCopyActionPerformed(evt); - } - }); - MenuEdit.add(MenuItemEditCopy); - - MenuItemEditPaste.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_V, java.awt.event.InputEvent.CTRL_MASK)); - MenuItemEditPaste.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/paste.png"))); // NOI18N - MenuItemEditPaste.setText("Paste"); - MenuItemEditPaste.setToolTipText(""); - MenuItemEditPaste.setEnabled(false); - MenuItemEditPaste.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemEditPasteActionPerformed(evt); - } - }); - MenuEdit.add(MenuItemEditPaste); - MenuEdit.add(jSeparator5); - - MenuItemEditSendSelected.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_B, java.awt.event.InputEvent.ALT_MASK)); - MenuItemEditSendSelected.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/send_selected.png"))); // NOI18N - MenuItemEditSendSelected.setText("Send selected Block to ESP"); - MenuItemEditSendSelected.setToolTipText("Send selected block to ESP"); - - binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, MenuItemEditorSendSelected, org.jdesktop.beansbinding.ELProperty.create("${enabled}"), MenuItemEditSendSelected, org.jdesktop.beansbinding.BeanProperty.create("enabled")); - bindingGroup.addBinding(binding); - - MenuItemEditSendSelected.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemEditSendSelectedActionPerformed(evt); - } - }); - MenuEdit.add(MenuItemEditSendSelected); - - MenuItemEditSendLine.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_L, java.awt.event.InputEvent.ALT_MASK)); - MenuItemEditSendLine.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/run_line.png"))); // NOI18N - MenuItemEditSendLine.setText("Send current Line to ESP"); - MenuItemEditSendLine.setToolTipText("Send current line from code editor window to ESP"); - MenuItemEditSendLine.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemEditSendLineActionPerformed(evt); - } - }); - MenuEdit.add(MenuItemEditSendLine); - - MainMenuBar.add(MenuEdit); - - MenuESP.setText("ESP"); - MenuESP.setToolTipText(""); - - MenuItemESPReset.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/reset.png"))); // NOI18N - MenuItemESPReset.setText("Restart ESP module"); - MenuItemESPReset.setToolTipText("Send RESET command (firmware depended)"); - MenuItemESPReset.setEnabled(false); - MenuItemESPReset.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemESPResetActionPerformed(evt); - } - }); - MenuESP.add(MenuItemESPReset); - - MenuItemESPFormat.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/file manager (delete).png"))); // NOI18N - MenuItemESPFormat.setText("Format ESP"); - MenuItemESPFormat.setToolTipText("Remove All files from ESP flash memory"); - MenuItemESPFormat.setEnabled(false); - MenuItemESPFormat.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemESPFormatActionPerformed(evt); - } - }); - MenuESP.add(MenuItemESPFormat); - - MainMenuBar.add(MenuESP); - - MenuView.setText("View"); - buttonGroupLF.add(MenuView); - MenuView.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuViewActionPerformed(evt); - } - }); - - AlwaysOnTop.setText("Always On Top"); - AlwaysOnTop.setToolTipText(""); - AlwaysOnTop.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/AlwaysOnTop.png"))); // NOI18N - AlwaysOnTop.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - AlwaysOnTopItemStateChanged(evt); - } - }); - AlwaysOnTop.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - AlwaysOnTopActionPerformed(evt); - } - }); - MenuView.add(AlwaysOnTop); - - MenuItemViewLog.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_L, java.awt.event.InputEvent.CTRL_MASK)); - MenuItemViewLog.setSelected(true); - MenuItemViewLog.setText("Show Log"); - MenuItemViewLog.setToolTipText("Enable/disable log window"); - MenuItemViewLog.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/backup.png"))); // NOI18N - MenuItemViewLog.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - MenuItemViewLogItemStateChanged(evt); - } - }); - MenuItemViewLog.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewLogActionPerformed(evt); - } - }); - MenuView.add(MenuItemViewLog); - - MenuItemViewClearLog.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F1, java.awt.event.InputEvent.CTRL_MASK)); - MenuItemViewClearLog.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/backup_delete.png"))); // NOI18N - MenuItemViewClearLog.setText("Clear log"); - MenuItemViewClearLog.setToolTipText("Clear log window"); - MenuItemViewClearLog.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewClearLogActionPerformed(evt); - } - }); - MenuView.add(MenuItemViewClearLog); - - MenuItemViewClearTerminal.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F2, java.awt.event.InputEvent.CTRL_MASK)); - MenuItemViewClearTerminal.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/terminal_clear.png"))); // NOI18N - MenuItemViewClearTerminal.setText("Clear terminal"); - MenuItemViewClearTerminal.setToolTipText("Clear terminal window"); - MenuItemViewClearTerminal.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewClearTerminalActionPerformed(evt); - } - }); - MenuView.add(MenuItemViewClearTerminal); - MenuView.add(jSeparator9); - - MenuItemViewTerminalOnly.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F1, java.awt.event.InputEvent.ALT_MASK)); - MenuItemViewTerminalOnly.setText("Show Terminal only (Left panel show/hide)"); - MenuItemViewTerminalOnly.setToolTipText("Enable/disable left panel"); - MenuItemViewTerminalOnly.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - MenuItemViewTerminalOnlyItemStateChanged(evt); - } - }); - MenuItemViewTerminalOnly.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewTerminalOnlyActionPerformed(evt); - } - }); - MenuView.add(MenuItemViewTerminalOnly); - - MenuItemViewEditorOnly.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F2, java.awt.event.InputEvent.ALT_MASK)); - MenuItemViewEditorOnly.setText("Show Editor only (Right panel show/hide)"); - MenuItemViewEditorOnly.setToolTipText("Enable/disable left panel"); - MenuItemViewEditorOnly.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - MenuItemViewEditorOnlyItemStateChanged(evt); - } - }); - MenuItemViewEditorOnly.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewEditorOnlyActionPerformed(evt); - } - }); - MenuView.add(MenuItemViewEditorOnly); - MenuView.add(jSeparator18); - - MenuItemViewToolbar.setSelected(true); - MenuItemViewToolbar.setText("Show toolbar at top left"); - MenuItemViewToolbar.setToolTipText("Enable/disable files toolbar at top left"); - MenuItemViewToolbar.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - MenuItemViewToolbarItemStateChanged(evt); - } - }); - MenuItemViewToolbar.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewToolbarActionPerformed(evt); - } - }); - MenuView.add(MenuItemViewToolbar); - - MenuItemViewLeftExtra.setText("Show Extra buttons at lleft"); - MenuItemViewLeftExtra.setToolTipText("Enable/disable Extra buttons panel at left"); - MenuItemViewLeftExtra.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - MenuItemViewLeftExtraItemStateChanged(evt); - } - }); - MenuItemViewLeftExtra.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewLeftExtraActionPerformed(evt); - } - }); - MenuView.add(MenuItemViewLeftExtra); - - MenuItemViewSnippets.setSelected(true); - MenuItemViewSnippets.setText("Show Snippets panel at right"); - MenuItemViewSnippets.setToolTipText("Enable/disable Snippets panel"); - MenuItemViewSnippets.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - MenuItemViewSnippetsItemStateChanged(evt); - } - }); - MenuItemViewSnippets.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewSnippetsActionPerformed(evt); - } - }); - MenuView.add(MenuItemViewSnippets); - - MenuItemViewFileManager.setSelected(true); - MenuItemViewFileManager.setText("Show FileManager panel at right"); - MenuItemViewFileManager.setToolTipText("Enable/disable FileManager panel at right"); - MenuItemViewFileManager.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - MenuItemViewFileManagerItemStateChanged(evt); - } - }); - MenuItemViewFileManager.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewFileManagerActionPerformed(evt); - } - }); - MenuView.add(MenuItemViewFileManager); - - MenuItemViewRightExtra.setSelected(true); - MenuItemViewRightExtra.setText("Show Extra buttons at bottom right"); - MenuItemViewRightExtra.setToolTipText("Enable/disable Extra buttons panel at bottom right"); - MenuItemViewRightExtra.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - MenuItemViewRightExtraItemStateChanged(evt); - } - }); - MenuItemViewRightExtra.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewRightExtraActionPerformed(evt); - } - }); - MenuView.add(MenuItemViewRightExtra); - - MenuItemViewDonate.setSelected(true); - MenuItemViewDonate.setText("I'm already make donation,
please hide dontation button at bottom right!"); - MenuItemViewDonate.setToolTipText("Enable/disable Extra buttons panel at bottom right"); - MenuItemViewDonate.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - MenuItemViewDonateItemStateChanged(evt); - } - }); - MenuItemViewDonate.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewDonateActionPerformed(evt); - } - }); - MenuView.add(MenuItemViewDonate); - MenuView.add(jSeparator13); - - MenuItemViewTermFontInc.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_ADD, java.awt.event.InputEvent.CTRL_MASK)); - MenuItemViewTermFontInc.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/zoom in.png"))); // NOI18N - MenuItemViewTermFontInc.setText("Terminal font size inc"); - MenuItemViewTermFontInc.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewTermFontIncActionPerformed(evt); - } - }); - MenuView.add(MenuItemViewTermFontInc); - - MenuItemViewTermFontDec.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_SUBTRACT, java.awt.event.InputEvent.CTRL_MASK)); - MenuItemViewTermFontDec.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/zoom out.png"))); // NOI18N - MenuItemViewTermFontDec.setText("Terminal font size dec"); - MenuItemViewTermFontDec.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewTermFontDecActionPerformed(evt); - } - }); - MenuView.add(MenuItemViewTermFontDec); - MenuView.add(jSeparator10); - - MenuItemViewEditorFontInc.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_ADD, java.awt.event.InputEvent.ALT_MASK)); - MenuItemViewEditorFontInc.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/zoom in.png"))); // NOI18N - MenuItemViewEditorFontInc.setText("Editor font size inc"); - MenuItemViewEditorFontInc.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewEditorFontIncActionPerformed(evt); - } - }); - MenuView.add(MenuItemViewEditorFontInc); - - MenuItemViewEditorFontDec.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_SUBTRACT, java.awt.event.InputEvent.ALT_MASK)); - MenuItemViewEditorFontDec.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/zoom out.png"))); // NOI18N - MenuItemViewEditorFontDec.setText("Editor font size dec"); - MenuItemViewEditorFontDec.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewEditorFontDecActionPerformed(evt); - } - }); - MenuView.add(MenuItemViewEditorFontDec); - MenuView.add(jSeparator11); - - MenuItemViewLogFontInc.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_ADD, java.awt.event.InputEvent.ALT_MASK | java.awt.event.InputEvent.CTRL_MASK)); - MenuItemViewLogFontInc.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/zoom in.png"))); // NOI18N - MenuItemViewLogFontInc.setText("Log font size inc"); - MenuItemViewLogFontInc.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewLogFontIncActionPerformed(evt); - } - }); - MenuView.add(MenuItemViewLogFontInc); - - MenuItemViewLogFontDec.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_SUBTRACT, java.awt.event.InputEvent.ALT_MASK | java.awt.event.InputEvent.CTRL_MASK)); - MenuItemViewLogFontDec.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/zoom out.png"))); // NOI18N - MenuItemViewLogFontDec.setText("Log font size dec"); - MenuItemViewLogFontDec.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewLogFontDecActionPerformed(evt); - } - }); - MenuView.add(MenuItemViewLogFontDec); - MenuView.add(jSeparator12); - - MenuItemViewFontDefault.setText("Reset all font size to default"); - MenuItemViewFontDefault.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewFontDefaultActionPerformed(evt); - } - }); - MenuView.add(MenuItemViewFontDefault); - MenuView.add(jSeparator17); - - buttonGroupLF.add(MenuItemViewLF1); - MenuItemViewLF1.setText("Nimbus"); - MenuItemViewLF1.setToolTipText(""); - MenuItemViewLF1.setActionCommand("0"); - MenuItemViewLF1.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewLF1ActionPerformed(evt); - } - }); - MenuView.add(MenuItemViewLF1); - - MainMenuBar.add(MenuView); - - MenuLinks.setText("Links"); - MenuLinks.setToolTipText(""); - MenuLinks.setMaximumSize(new java.awt.Dimension(31, 100)); - - MenuItemLinksMicroPythonDoc.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/micropython.png"))); // NOI18N - MenuItemLinksMicroPythonDoc.setText("MicroPython Documentation English"); - MenuItemLinksMicroPythonDoc.setToolTipText("Open doc NodeMCU API Chinese in browser"); - MenuItemLinksMicroPythonDoc.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemLinksMicroPythonDocActionPerformed(evt); - } - }); - MenuLinks.add(MenuItemLinksMicroPythonDoc); - - MenuItemLinksNodeMCUdoc.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/nodemcu.png"))); // NOI18N - MenuItemLinksNodeMCUdoc.setText("NodeMCU Documentation English"); - MenuItemLinksNodeMCUdoc.setToolTipText("Open doc NodeMCU API English in browser"); - MenuItemLinksNodeMCUdoc.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemLinksNodeMCUdocActionPerformed(evt); - } - }); - MenuLinks.add(MenuItemLinksNodeMCUdoc); - MenuLinks.add(jSeparator15); - - MenuItemLinksBuyDevBoard.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/aliexpress.png"))); // NOI18N - MenuItemLinksBuyDevBoard.setText("Buy NodeMCU v3 (LoLin brand, USB)"); - MenuItemLinksBuyDevBoard.setToolTipText("Buy NodeMCU development boards on Aliexpress"); - MenuItemLinksBuyDevBoard.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemLinksBuyDevBoardActionPerformed(evt); - } - }); - MenuLinks.add(MenuItemLinksBuyDevBoard); - - MenuItemLinksBuyESP8266.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/aliexpress.png"))); // NOI18N - MenuItemLinksBuyESP8266.setText("Buy Witty (RGB LED, 3 buttons, USB)"); - MenuItemLinksBuyESP8266.setToolTipText("Buy ESP8266 ESP-01 ESP-02 ... ESP-12 modules on Aliexpress"); - MenuItemLinksBuyESP8266.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemLinksBuyESP8266ActionPerformed(evt); - } - }); - MenuLinks.add(MenuItemLinksBuyESP8266); - - MenuItemLinksBuyESD12.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/aliexpress.png"))); // NOI18N - MenuItemLinksBuyESD12.setText("Buy WeMos mini (many shields, USB)"); - MenuItemLinksBuyESD12.setToolTipText("Buy ESP8266 ESD-12 4M flash board"); - MenuItemLinksBuyESD12.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemLinksBuyESD12ActionPerformed(evt); - } - }); - MenuLinks.add(MenuItemLinksBuyESD12); - - MenuItemLinksBuyOther.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/aliexpress.png"))); // NOI18N - MenuItemLinksBuyOther.setText("Buy most popular DIY parts"); - MenuItemLinksBuyOther.setToolTipText("Buy any electronics and other on Aliexpress"); - MenuItemLinksBuyOther.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemLinksBuyOtherActionPerformed(evt); - } - }); - MenuLinks.add(MenuItemLinksBuyOther); - MenuLinks.add(jSeparator16); - - MenuItemLinksIoTmanager.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/IoTmanager.png"))); // NOI18N - MenuItemLinksIoTmanager.setText("IoT Manager - free Android app
for any DIY devices. Ads free.
From 4refr0nt, ESPlorer developer"); - MenuItemLinksIoTmanager.setToolTipText("You can make donation for ESPlorer developer"); - MenuItemLinksIoTmanager.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemLinksIoTmanagerActionPerformed(evt); - } - }); - MenuLinks.add(MenuItemLinksIoTmanager); - MenuLinks.add(jSeparator19); - - MenuItemLinksESPlorerForumEn.setText("ESPlorer discuss, bugs report - esp8266.com English"); - MenuItemLinksESPlorerForumEn.setToolTipText("Link to ESP8266.COM forum, ESPlorer topic, English"); - MenuItemLinksESPlorerForumEn.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemLinksESPlorerForumEnActionPerformed(evt); - } - }); - MenuLinks.add(MenuItemLinksESPlorerForumEn); - - MenuItemLinksESPlorerForumRu.setText("ESPlorer discuss, bugs report Russian"); - MenuItemLinksESPlorerForumRu.setToolTipText("Link to ESP8266.RU forum, ESPlorer topic, Russian"); - MenuItemLinksESPlorerForumRu.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemLinksESPlorerForumRuActionPerformed(evt); - } - }); - MenuLinks.add(MenuItemLinksESPlorerForumRu); - - MenuItemLinksESPlorerLatest.setText("ESPlorer download latest stable"); - MenuItemLinksESPlorerLatest.setToolTipText("Link to ESP8266.RU, download ESPlorer latest"); - MenuItemLinksESPlorerLatest.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemLinksESPlorerLatestActionPerformed(evt); - } - }); - MenuLinks.add(MenuItemLinksESPlorerLatest); - - MenuItemLinksESPlorerSource.setText("ESPlorer download source code from github"); - MenuItemLinksESPlorerSource.setToolTipText("Link to GITHUB for download ESPlorer source code"); - MenuItemLinksESPlorerSource.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemLinksESPlorerSourceActionPerformed(evt); - } - }); - MenuLinks.add(MenuItemLinksESPlorerSource); - - MenuItemLinksESPlorerHome.setText("ESPlorer home page on esp8266.ru"); - MenuItemLinksESPlorerHome.setToolTipText("Link to ESP8266.RU, ESPlorer HomePage"); - MenuItemLinksESPlorerHome.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemLinksESPlorerHomeActionPerformed(evt); - } - }); - MenuLinks.add(MenuItemLinksESPlorerHome); - MenuLinks.add(jSeparator20); - - MenuItemLinksDonate.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/paypal.png"))); // NOI18N - MenuItemLinksDonate.setText("Make donation for ESPlorer developer"); - MenuItemLinksDonate.setToolTipText("You can make donation for ESPlorer developer"); - MenuItemLinksDonate.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemLinksDonateActionPerformed(evt); - } - }); - MenuLinks.add(MenuItemLinksDonate); - - MainMenuBar.add(MenuLinks); - - MenuHelp.setText("?"); - - MenuItemHelpAbout.setText("About"); - MenuItemHelpAbout.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemHelpAboutActionPerformed(evt); - } - }); - MenuHelp.add(MenuItemHelpAbout); - - MainMenuBar.add(MenuHelp); - - setJMenuBar(MainMenuBar); - - javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); - getContentPane().setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(HorizontSplit, javax.swing.GroupLayout.DEFAULT_SIZE, 1024, Short.MAX_VALUE) - ); - layout.setVerticalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(HorizontSplit, javax.swing.GroupLayout.DEFAULT_SIZE, 746, Short.MAX_VALUE) - ); - - getAccessibleContext().setAccessibleDescription(""); - - bindingGroup.bind(); - - pack(); - }//
//GEN-END:initComponents - - private void PortActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_PortActionPerformed - // TODO add your handling code here: - }//GEN-LAST:event_PortActionPerformed - - private void MenuItemFileExitActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemFileExitActionPerformed - AppClose(); - }//GEN-LAST:event_MenuItemFileExitActionPerformed - - private void SpeedFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_SpeedFocusLost - nSpeed = Integer.parseInt((String) Speed.getSelectedItem()); - }//GEN-LAST:event_SpeedFocusLost - - private void SpeedActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_SpeedActionPerformed - if (portJustOpen) { - log("ERROR: Communication with MCU not established."); - return; - } - nSpeed = Integer.parseInt((String) Speed.getSelectedItem()); - if (pOpen) { // reconnect - if (OptionNodeMCU.isSelected() || FirmwareType == FIRMWARE_NODEMCU) { - log("Try to reconnect with baud " + Integer.toString(nSpeed) + "..."); - btnSend("print(uart.setup(0, " + nSpeed + ", 8, 0, 1, 1 ))"); - try { - Thread.sleep(200L); - } catch (Exception e) { - } - } else { - return; - } - if (SetSerialPortParams()) { - log("Reconnect: Success."); - CheckComm(); - } - } - UpdateLED(); - }//GEN-LAST:event_SpeedActionPerformed - - private void OpenActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_OpenActionPerformed - if (Open.isSelected()) { - if (pOpen) { - return; - } - try { - String port; - if (UseCustomPortName.isSelected()) { - port = CustomPortName.getText().trim(); - } else { - port = Port.getSelectedItem().toString().trim(); - } - prefs.put(SERIAL_PORT, port); - log("Serial port " + port + " save as default."); - int speed = Speed.getSelectedIndex(); - prefs.putInt(SERIAL_BAUD, speed); - log("Baud rate " + Speed.getSelectedItem().toString().trim() + " save as default."); - } catch (Exception e) { - } - pOpen = portOpen(); - Open.setSelected(pOpen); - } else { - portClose(); - } - UpdateButtons(); - }//GEN-LAST:event_OpenActionPerformed - private void UpdateButtons() { - pOpen = Open.isSelected(); - if (pOpen && !portJustOpen) { - UpdateLED(); - Port.setEnabled(false); - //Speed.setEnabled(false); - ReScan.setEnabled(false); - SendCommand.setEnabled(true); - Command.setEnabled(true); - CR.setEnabled(true); - LF.setEnabled(true); - // left panel - FileSaveESP.setEnabled(true); - MenuItemFileSaveESP.setEnabled(true); - FileSendESP.setEnabled(true); - MenuItemFileSendESP.setEnabled(true); - MenuItemFileRemoveESP.setEnabled(true); - FileDo.setEnabled(true); - MenuItemFileDo.setEnabled(true); - MenuItemEditorSendLine.setEnabled(true); - MenuItemEditSendLine.setEnabled(true); - ButtonSendLine.setEnabled(true); - NodeReset.setEnabled(true); - MenuItemTerminalReset.setEnabled(true); - MenuItemTerminalFormat.setEnabled(true); - MenuItemESPReset.setEnabled(true); - MenuItemESPFormat.setEnabled(true); - SnippetRun.setEnabled(true); - ButtonSendLine.setEnabled(true); - ButtonSnippet0.setEnabled(true); - ButtonSnippet1.setEnabled(true); - ButtonSnippet2.setEnabled(true); - ButtonSnippet3.setEnabled(true); - ButtonSnippet4.setEnabled(true); - ButtonSnippet5.setEnabled(true); - ButtonSnippet6.setEnabled(true); - ButtonSnippet7.setEnabled(true); - ButtonSnippet8.setEnabled(true); - ButtonSnippet9.setEnabled(true); - ButtonSnippet10.setEnabled(true); - ButtonSnippet11.setEnabled(true); - ButtonSnippet12.setEnabled(true); - ButtonSnippet13.setEnabled(true); - ButtonSnippet14.setEnabled(true); - ButtonSnippet15.setEnabled(true); - - } else { - UpdateLED(); - Port.setEnabled(true); - //Speed.setEnabled(true); - ReScan.setEnabled(true); - SendCommand.setEnabled(false); - Command.setEnabled(false); - CR.setEnabled(false); - LF.setEnabled(false); - // left panel - FileSaveESP.setEnabled(false); - FileSaveESP.setSelected(false); - MenuItemFileSaveESP.setEnabled(false); - FileSendESP.setEnabled(false); - FileSendESP.setSelected(false); - MenuItemFileSendESP.setEnabled(false); - MenuItemFileRemoveESP.setEnabled(false); - FileDo.setEnabled(false); - MenuItemFileDo.setEnabled(false); - MenuItemEditorSendLine.setEnabled(false); - MenuItemEditSendLine.setEnabled(false); - ButtonSendLine.setEnabled(false); - NodeReset.setEnabled(false); - MenuItemTerminalReset.setEnabled(false); - MenuItemTerminalFormat.setEnabled(false); - MenuItemESPReset.setEnabled(false); - MenuItemESPFormat.setEnabled(false); - SnippetRun.setEnabled(false); - ButtonSnippet0.setEnabled(false); - ButtonSnippet1.setEnabled(false); - ButtonSnippet2.setEnabled(false); - ButtonSnippet3.setEnabled(false); - ButtonSnippet4.setEnabled(false); - ButtonSnippet5.setEnabled(false); - ButtonSnippet6.setEnabled(false); - ButtonSnippet7.setEnabled(false); - ButtonSnippet8.setEnabled(false); - ButtonSnippet9.setEnabled(false); - ButtonSnippet10.setEnabled(false); - ButtonSnippet11.setEnabled(false); - ButtonSnippet12.setEnabled(false); - ButtonSnippet13.setEnabled(false); - ButtonSnippet14.setEnabled(false); - ButtonSnippet15.setEnabled(false); - } - - DisablingNotImplemented(); - - } - private void formWindowOpened(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowOpened - PortFinder(); - this.setTitle("ESPlorer " + version + " by 4refr0nt"); - ProgressBar.setVisible(false); - CommandsSetNodeMCU(); - isToolbarShow(); - isLeftExtraShow(); - isRightExtraShow(); - isRightSnippetsShow(); - SetWindowSize(); - isFileManagerShow(); - isLogShow(); - }//GEN-LAST:event_formWindowOpened - private void SetWindowSize() { - int x, y, h, w; - x = prefs.getInt(WIN_X, 0); - y = prefs.getInt(WIN_Y, 0); - h = prefs.getInt(WIN_H, 768); - w = prefs.getInt(WIN_W, 1024); - this.setBounds(x, y, w, h); - } - - private void isToolbarShow() { - FilesToolBar.setVisible(MenuItemViewToolbar.isSelected()); - } - - private void isLeftExtraShow() { - LeftExtraButtons.setVisible(MenuItemViewLeftExtra.isSelected()); - } - - private void isRightExtraShow() { - RightExtraButtons.setVisible(MenuItemViewRightExtra.isSelected()); - } - - private void isRightSnippetsShow() { - RightSnippetsPane.setVisible(MenuItemViewSnippets.isSelected()); - } - - private void isFileManagerShow() { - int div; - final int w = 160; - if (MenuItemViewFileManager.isSelected()) { - FileManagerScrollPane.setEnabled(true); - FileManagerScrollPane.setVisible(true); - //div = prefs.getInt( FM_DIV, RightFilesSplitPane.getWidth()-w ); - //if ( div > RightFilesSplitPane.getWidth()-w ) { - div = RightFilesSplitPane.getWidth() - w; - //} - RightFilesSplitPane.setDividerLocation(div); - } else { - FileManagerScrollPane.setEnabled(false); - FileManagerScrollPane.setVisible(false); - RightFilesSplitPane.setDividerLocation(RightFilesSplitPane.getWidth() - RightFilesSplitPane.getDividerSize()); - } - } - - private void isLogShow() { - if (MenuItemViewLog.isSelected()) { - ScrollLog.setVisible(true); - ScrollLog.setEnabled(true); - RightSplitPane.setDividerLocation(prefs.getInt(LOG_DIV, RightSplitPane.getHeight() - 200)); - } else { - ScrollLog.setVisible(false); - ScrollLog.setEnabled(false); - RightSplitPane.setDividerLocation(RightSplitPane.getHeight() - RightSplitPane.getDividerSize()); - } - } - private void ReScanActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ReScanActionPerformed - PortFinder(); - }//GEN-LAST:event_ReScanActionPerformed - - private void CommandKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_CommandKeyTyped - - }//GEN-LAST:event_CommandKeyTyped - - private void SendCommandActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_SendCommandActionPerformed - if (CommandEcho.isSelected()) { - if (Terminal.getCaretOffsetFromLineStart() > 0) { - TerminalAdd("\r\n"); - } - TerminalAdd(Command.getSelectedItem().toString()); - TerminalAdd("\r\n"); - } - SendCommand(); - }//GEN-LAST:event_SendCommandActionPerformed - - private void CommandActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_CommandActionPerformed - //log("CommandActionPerformed " + evt.getActionCommand()); - if ("comboBoxEdited".equals(evt.getActionCommand())) { // Hit Enter - SendCommand.doClick(); - } - }//GEN-LAST:event_CommandActionPerformed - - private void CommandKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_CommandKeyPressed - - }//GEN-LAST:event_CommandKeyPressed - - private void CommandKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_CommandKeyReleased - - }//GEN-LAST:event_CommandKeyReleased - - private void ContextMenuTerminalPopupMenuWillBecomeVisible(javax.swing.event.PopupMenuEvent evt) {//GEN-FIRST:event_ContextMenuTerminalPopupMenuWillBecomeVisible - try { - MenuItemTerminalCopy.setEnabled(Terminal.getSelectedText().length() > 0); - } catch (Exception e) { - MenuItemTerminalCopy.setEnabled(false); - } - int size = Terminal.getFont().getSize(); - String inc, dec; - if (size < TERMINAL_FONT_SIZE_MAX) { - inc = "Change font size from " + Integer.toString(size) + " to " + Integer.toString(size + 1); - } else { - inc = "Set font size to " + Float.toString(TERMINAL_FONT_SIZE_MIN); - } - MenuItemTerminalFontInc.setText(inc); - if (size > TERMINAL_FONT_SIZE_MIN) { - dec = "Change font size from " + Integer.toString(size) + " to " + Integer.toString(size - 1); - } else { - dec = "Set font size to " + Float.toString(TERMINAL_FONT_SIZE_MAX); - } - MenuItemTerminalFontDec.setText(dec); - }//GEN-LAST:event_ContextMenuTerminalPopupMenuWillBecomeVisible - - private void MenuItemTerminalCopyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemTerminalCopyActionPerformed - Terminal.copy(); - }//GEN-LAST:event_MenuItemTerminalCopyActionPerformed - - private void MenuItemTerminalClearActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemTerminalClearActionPerformed - Terminal.setText(""); - }//GEN-LAST:event_MenuItemTerminalClearActionPerformed - - private void MenuItemViewLogActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemViewLogActionPerformed - isLogShow(); - prefs.putBoolean(SHOW_LOG, MenuItemViewLog.isSelected()); - }//GEN-LAST:event_MenuItemViewLogActionPerformed - - private void MenuItemFileSaveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemFileSaveActionPerformed - SaveFile(); - if (FileAutoSaveESP.isSelected() && !FileSaveESP.isSelected()) { - FileSaveESP.doClick(); - } - }//GEN-LAST:event_MenuItemFileSaveActionPerformed - boolean isFileNew() { - try { - if (FilesTabbedPane.getTitleAt(iTab).equals(NewFile)) { - return true; - } - } catch (Exception e) { - return true; - } - return false; - } - - boolean SaveFile() { - boolean success = false; - if (isFileNew()) { // we saving new file - log("Saving new file..."); - FileCount++; - String fileExt; - if (OptionNodeMCU.isSelected()) { - fileExt = ".lua"; - } else { // MicroPython - fileExt = ".py"; - } - iFile.set(iTab, new File("script" + Integer.toString(FileCount) + fileExt)); - chooser.rescanCurrentDirectory(); - chooser.setSelectedFile(iFile.get(iTab)); - int returnVal = chooser.showSaveDialog(null); - if (returnVal != JFileChooser.APPROVE_OPTION) { - log("Saving abort by user."); - UpdateEditorButtons(); - return false; - } - SavePath(); - iFile.set(iTab, chooser.getSelectedFile()); - if (iFile.get(iTab).exists()) { - log("File " + iFile.get(iTab).getName() + " already exist, waiting user choice"); - int shouldWrite = Dialog("File " + iFile.get(iTab).getName() + " already exist. Overwrite?", JOptionPane.YES_NO_OPTION); - if (shouldWrite != JOptionPane.YES_OPTION) { - UpdateEditorButtons(); - log("Saving canceled by user, because file " + FileName + " already exist"); - return false; - } else { - log("File " + FileName + " will be overwriten by user choice"); - } - } - } else { // we saving file, when open - log("We save known file " + iFile.get(iTab).getName()); - } - try { - log("Try to saving file " + iFile.get(iTab).getName() + " ..."); - fos = new FileOutputStream(iFile.get(iTab)); - osw = new OutputStreamWriter(fos, "UTF-8"); - bw = new BufferedWriter(osw); - bw.write(TextEditor1.get(iTab).getText()); - bw.flush(); - osw.flush(); - fos.flush(); - FileName = iFile.get(iTab).getName(); - log("Save file " + FileName + ": Success."); - FilesTabbedPane.setTitleAt(iTab, FileName); - UpdateEditorButtons(); - success = true; - } catch (IOException ex) { - log("Save file " + iFile.get(iTab).getName() + ": FAIL."); - log(ex.toString()); -// log(ex.getStackTrace().toString()); - JOptionPane.showMessageDialog(null, "Error, file not saved!"); - } - try { - if (bw != null) { - bw.close(); - } - if (osw != null) { - osw.close(); - } - if (fos != null) { - fos.close(); - } - } catch (IOException ex) { - log(ex.toString()); -// log(ex.getStackTrace().toString()); - } - TextEditor1.get(iTab).discardAllEdits(); - FileChanged.set(iTab, false); - UpdateEditorButtons(); - return success; - } - private void MenuItemFileNewActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemFileNewActionPerformed - FileNew(""); - }//GEN-LAST:event_MenuItemFileNewActionPerformed - private void FileNew(String s) { - if (UseExternalEditor.isSelected()) { - return; - } - AddTab(s); - if (s.isEmpty()) { - log("New empty file ready."); - } else { - log("New file ready, content load: Success."); - } - } - private void MenuItemEditCutActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemEditCutActionPerformed - if (UseExternalEditor.isSelected()) { - return; - } - TextEditor1.get(iTab).cut(); - FileChanged.set(iTab, true); - }//GEN-LAST:event_MenuItemEditCutActionPerformed - - private void MenuItemEditCopyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemEditCopyActionPerformed - TextEditor1.get(iTab).copy(); - }//GEN-LAST:event_MenuItemEditCopyActionPerformed - - private void MenuItemEditPasteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemEditPasteActionPerformed - if (UseExternalEditor.isSelected()) { - return; - } - TextEditor1.get(iTab).paste(); - FileChanged.set(iTab, true); - }//GEN-LAST:event_MenuItemEditPasteActionPerformed -// File open - private void MenuItemFileOpenActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemFileOpenActionPerformed - OpenFile(); - }//GEN-LAST:event_MenuItemFileOpenActionPerformed - private void SavePath() { - workDir = chooser.getCurrentDirectory().toString(); - prefs.put(PATH, workDir); - } - - private void OpenFile() { - chooser.rescanCurrentDirectory(); - int success = chooser.showOpenDialog(LeftBasePane); - if (success == JFileChooser.APPROVE_OPTION) { - SavePath(); - int isOpen = -1; - for (int i = 0; i < iFile.size(); i++) { - if (chooser.getSelectedFile().getPath().equals(iFile.get(i).getPath())) { - iTab = i; - isOpen = i; - break; - } - } - if (isOpen >= 0) { - FilesTabbedPane.setSelectedIndex(iTab); - UpdateEditorButtons(); - FileName = chooser.getSelectedFile().getName(); - log("File " + FileName + " already open, select tab to file " + FileName); - JOptionPane.showMessageDialog(null, "File " + FileName + " already open. You can use 'Reload' only."); - return; - } - if (!isFileNew() || isChanged()) { - AddTab(""); - } - log("Try to open file " + chooser.getSelectedFile().getName()); - try { - iFile.set(iTab, chooser.getSelectedFile()); - FileName = iFile.get(iTab).getName(); - log("File name: " + iFile.get(iTab).getPath()); - if (iFile.get(iTab).length() > 1024 * 1024) { // 1M - JOptionPane.showMessageDialog(null, "File " + FileName + " too large."); - log("File too large. Size: " + Long.toString(iFile.get(iTab).length() / 1024 / 1024) + " Mb, file: " + iFile.get(iTab).getPath()); - UpdateEditorButtons(); - return; - } - FilesTabbedPane.setTitleAt(iTab, iFile.get(iTab).getName()); - } catch (Exception ex) { - JOptionPane.showMessageDialog(null, "Error, file is not open!"); - log(ex.toString()); - log("Open: FAIL."); -// log(ex.getStackTrace().toString()); - } - if (LoadFile()) { - log("Open \"" + FileName + "\": Success."); - } - } - UpdateEditorButtons(); - } - - private boolean LoadFile() { - boolean success = false; - if (isFileNew()) { - UpdateEditorButtons(); - log("Internal error 101: FileTab is NewFile."); - return false; - } - FileName = ""; - try { - FileName = iFile.get(iTab).getName(); - log("Try to load file " + FileName); - } catch (Exception e) { - log("Internal error 102: no current file descriptor."); - return false; - } - try { - fis = new FileInputStream(iFile.get(iTab)); - isr = new InputStreamReader(fis, "UTF-8"); - br = new BufferedReader(isr); - StringBuilder sb = new StringBuilder(); - String line; - while ((line = br.readLine()) != null) { - sb.append(line).append('\n'); - } - TextEditor1.get(iTab).setText(sb.toString()); - success = true; - } catch (Exception ex) { - log(ex.toString()); -// log(ex.getStackTrace().toString()); - log("Loading " + FileName + ": FAIL."); - UpdateEditorButtons(); - JOptionPane.showMessageDialog(null, "Error, file not load!"); - return false; - } - try { - if (br != null) { - br.close(); - } - if (isr != null) { - isr.close(); - } - if (fis != null) { - fis.close(); - } - } catch (Exception ex) { - log(ex.toString()); -// log(ex.getStackTrace().toString()); - log("Internal error 103: can't close stream."); - } - if (success) { - TextEditor1.get(iTab).setCaretPosition(0); - FileChanged.set(iTab, false); - TextEditor1.get(iTab).discardAllEdits(); - UpdateEditorButtons(); - FileLabelUpdate(); - if (UseExternalEditor.isSelected()) { - TextEditor1.get(iTab).setEditable(false); - } - log("Loading " + FileName + ": Success."); - } - return success; - } - - private boolean PrefsFlush() { - boolean success = false; - try { - prefs.flush(); - success = true; - } catch (Exception e) { - log("ERROR: Can't save some setting."); - log(e.toString()); - } - return success; - } - private void MenuItemEditorCutActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemEditorCutActionPerformed - MenuItemEditCut.doClick(); - }//GEN-LAST:event_MenuItemEditorCutActionPerformed - - private void MenuItemEditorCopyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemEditorCopyActionPerformed - MenuItemEditCopy.doClick(); - }//GEN-LAST:event_MenuItemEditorCopyActionPerformed - - private void MenuItemEditorPasteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemEditorPasteActionPerformed - MenuItemEditPaste.doClick(); - }//GEN-LAST:event_MenuItemEditorPasteActionPerformed - - private void MenuItemLogClearActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemLogClearActionPerformed - Log.setText(""); - }//GEN-LAST:event_MenuItemLogClearActionPerformed - private void CheckSelected() { - if (TextEditor1.get(iTab).getSelectedText() == null) { - MenuItemEditorCut.setEnabled(false); - MenuItemEditCut.setEnabled(false); - MenuItemEditorCopy.setEnabled(false); - MenuItemEditCopy.setEnabled(false); - ButtonCut.setEnabled(false); - ButtonCopy.setEnabled(false); - MenuItemEditSendSelected.setEnabled(false); - MenuItemEditorSendSelected.setEnabled(false); - ButtonSendSelected.setEnabled(false); - } else { - MenuItemEditorCut.setEnabled(true); - MenuItemEditCut.setEnabled(true); - MenuItemEditorCopy.setEnabled(true); - MenuItemEditCopy.setEnabled(true); - ButtonCut.setEnabled(true); - ButtonCopy.setEnabled(true); - MenuItemEditSendSelected.setEnabled(pOpen); - MenuItemEditorSendSelected.setEnabled(pOpen); - ButtonSendSelected.setEnabled(pOpen); - } - try { - if (Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null) == null) { // clipboard empty - MenuItemEditorPaste.setEnabled(false); - MenuItemEditPaste.setEnabled(false); - ButtonPaste.setEnabled(false); - } else { - MenuItemEditorPaste.setEnabled(true); - MenuItemEditPaste.setEnabled(true); - ButtonPaste.setEnabled(true); - } - } catch (Exception e) { - } - } - - private void UpdateEditorButtons() { - iTab = FilesTabbedPane.getSelectedIndex(); - // isChanged - if (isChanged() && !UseExternalEditor.isSelected()) { - if (isFileNew()) { - MenuItemFileSave.setEnabled(true); - ButtonFileSave.setEnabled(true); - MenuItemFileReload.setEnabled(false); - ButtonFileReload.setEnabled(false); - } else { - MenuItemFileSave.setEnabled(true); - ButtonFileSave.setEnabled(true); - MenuItemFileReload.setEnabled(true); - ButtonFileReload.setEnabled(true); - } - } else if (isFileNew()) { - MenuItemFileSave.setEnabled(true); - ButtonFileSave.setEnabled(true); - MenuItemFileReload.setEnabled(false); - ButtonFileReload.setEnabled(false); - } else { - MenuItemFileSave.setEnabled(false); - ButtonFileSave.setEnabled(false); - MenuItemFileReload.setEnabled(true); - ButtonFileReload.setEnabled(true); - } - if (isFileNew() && (FilesTabbedPane.getTabCount() == 1)) { - MenuItemFileClose.setEnabled(false); - ButtonFileClose.setEnabled(false); - } else { - MenuItemFileClose.setEnabled(true); - ButtonFileClose.setEnabled(true); - } - // CanUndo - try { - if (TextEditor1.isEmpty()) { - return; - } - } catch (Exception e) { - return; - } - if (TextEditor1.get(iTab).canUndo()) { - MenuItemEditUndo.setEnabled(true); - MenuItemEditorUndo.setEnabled(true); - ButtonUndo.setEnabled(true); - } else { - MenuItemEditUndo.setEnabled(false); - MenuItemEditorUndo.setEnabled(false); - ButtonUndo.setEnabled(false); - } - // CanRedo - if (TextEditor1.get(iTab).canRedo()) { - MenuItemEditRedo.setEnabled(true); - MenuItemEditorRedo.setEnabled(true); - ButtonRedo.setEnabled(true); - } else { - MenuItemEditRedo.setEnabled(false); - MenuItemEditorRedo.setEnabled(false); - ButtonRedo.setEnabled(false); - } - CheckSelected(); - if (UseExternalEditor.isSelected()) { - MenuItemFileReload.setEnabled(true); - ButtonFileReload.setEnabled(true); - - MenuItemFileSave.setEnabled(false); - ButtonFileSave.setEnabled(false); - MenuItemEditUndo.setEnabled(false); - MenuItemEditorUndo.setEnabled(false); - ButtonUndo.setEnabled(false); - MenuItemEditRedo.setEnabled(false); - MenuItemEditorRedo.setEnabled(false); - ButtonRedo.setEnabled(false); - MenuItemEditorCut.setEnabled(false); - MenuItemEditCut.setEnabled(false); - ButtonCut.setEnabled(false); - MenuItemEditorPaste.setEnabled(false); - MenuItemEditPaste.setEnabled(false); - ButtonPaste.setEnabled(false); - MenuItemFileNew.setEnabled(false); - ButtonFileNew.setEnabled(false); - MenuItemFileSaveAs.setEnabled(false); - } else { - MenuItemFileNew.setEnabled(true); - ButtonFileNew.setEnabled(true); - MenuItemFileSaveAs.setEnabled(true); - } - } - private void formFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_formFocusGained - UpdateEditorButtons(); - UpdateButtons(); - }//GEN-LAST:event_formFocusGained - - private void MenuItemFileReloadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemFileReloadActionPerformed - ReloadFile(); - }//GEN-LAST:event_MenuItemFileReloadActionPerformed - - private void MenuItemFileCloseActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemFileCloseActionPerformed - CloseFile(); - }//GEN-LAST:event_MenuItemFileCloseActionPerformed - - private void MenuItemViewClearTerminalActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemViewClearTerminalActionPerformed - MenuItemTerminalClear.doClick(); - }//GEN-LAST:event_MenuItemViewClearTerminalActionPerformed - - private void MenuItemViewClearLogActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemViewClearLogActionPerformed - MenuItemLogClear.doClick(); - }//GEN-LAST:event_MenuItemViewClearLogActionPerformed - - private void AlwaysOnTopItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_AlwaysOnTopItemStateChanged - this.setAlwaysOnTop(AlwaysOnTop.isSelected()); - }//GEN-LAST:event_AlwaysOnTopItemStateChanged - - private void MenuItemEditUndoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemEditUndoActionPerformed - if (TextEditor1.get(iTab).canUndo()) { - TextEditor1.get(iTab).undoLastAction(); - } - }//GEN-LAST:event_MenuItemEditUndoActionPerformed - - private void MenuItemEditRedoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemEditRedoActionPerformed - if (TextEditor1.get(iTab).canRedo()) { - TextEditor1.get(iTab).redoLastAction(); - } - }//GEN-LAST:event_MenuItemEditRedoActionPerformed - - private void MenuItemEditorRedoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemEditorRedoActionPerformed - MenuItemEditRedo.doClick(); - }//GEN-LAST:event_MenuItemEditorRedoActionPerformed - - private void MenuItemEditorUndoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemEditorUndoActionPerformed - MenuItemEditUndo.doClick(); - }//GEN-LAST:event_MenuItemEditorUndoActionPerformed - private void NodeListFiles() { - if (portJustOpen) { - log("ERROR: Communication with MCU not yet established."); - return; - } - //String cmd = "print(\"~~~File \"..\"list START~~~\") for k,v in pairs(file.list()) do l = string.format(\"%-15s\",k) print(l..\" - \"..v..\" bytes\") end l=nil k=nil v=nil print(\"~~~File \"..\"list END~~~\")"; - String cmd = "_dir=function()\n" - + " local k,v,l\n" - + " print(\"~~~File \"..\"list START~~~\")\n" - + " for k,v in pairs(file.list()) do \n" - + " l = string.format(\"%-15s\",k) \n" - + " print(l..\" : \"..v..\" bytes\") \n" - + " end \n" - + " print(\"~~~File \"..\"list END~~~\")\n" - + "end\n" - + "_dir()\n" - + "_dir=nil"; - try { - serialPort.removeEventListener(); - } catch (Exception e) { - log(e.toString()); - } - try { - serialPort.addEventListener(new PortNodeFilesReader(), portMask); - log("FileManager: Add EventListener: Success."); - } catch (SerialPortException e) { - log("FileManager: Add EventListener Error. Canceled."); - return; - } - ClearNodeFileManager(); - rx_data = ""; - rcvBuf = ""; - sendBuf = cmdPrep(cmd); - log("FileManager: Starting..."); - SendLock(); - int delay = 10; - j0(); - taskPerformer = new ActionListener() { - public void actionPerformed(ActionEvent evt) { - if (j < sendBuf.size()) { - LocalEcho = false; - send(addCR(sendBuf.get(j)), false); - sendPending = false; - } - } - }; - timer = new Timer(delay, taskPerformer); - timer.setRepeats(false); - timer.setInitialDelay(delay); - WatchDog(); - timer.start(); - } - - private void ClearNodeFileManager() { - if (!MenuItemViewFileManager.isSelected()) { - return; - } - NodeFileManagerPane.removeAll(); - NodeFileManagerPane.add(FileFormat); - NodeFileManagerPane.add(FileSystemInfo); - NodeFileManagerPane.add(FileListReload); - NodeFileManagerPane.add(FileRenamePanel); - FileRenamePanel.setVisible(false); - FileRenamePanel.setEnabled(false); - NodeFileManagerPane.repaint(); - FileAsButton = new ArrayList(); - } - - private class PortNodeFilesReader implements SerialPortEventListener { - - public void serialEvent(SerialPortEvent event) { - String data; - if (event.isRXCHAR() && event.getEventValue() > 0) { - try { - data = serialPort.readString(event.getEventValue()); - rcvBuf = rcvBuf + data; - rx_data = rx_data + data; - } catch (Exception e) { - data = ""; - log(e.toString()); - } - if (rcvBuf.contains("> ")) { - try { - timeout.restart(); - } catch (Exception e) { - log(e.toString()); - } - rcvBuf = ""; - if (j < sendBuf.size() - 1) { - if (timer.isRunning() || sendPending) { - // - } else { - inc_j(); - sendPending = true; - timer.start(); - } - } else { // send done - try { - timer.stop(); - } catch (Exception e) { - } - } - } - try { - if (rx_data.contains("~~~File list END~~~")) { - try { - timeout.stop(); - } catch (Exception e) { - log(e.toString()); - } - ProgressBar.setValue(100); - log("FileManager: File list found! Do parsing..."); - try { - // parsing answer - int start = rx_data.indexOf("~~~File list START~~~"); - rx_data = rx_data.substring(start + 23, rx_data.indexOf("~~~File list END~~~")); - //log(rx_data.replaceAll("\r?\n", "\r\n")); - s = rx_data.split("\r?\n"); - Arrays.sort(s); -// TerminalAdd("\r\n" + rx_data + "\r\n> "); - int usedSpace = 0; - TerminalAdd("\r\n----------------------------"); - for (String subs : s) { - TerminalAdd("\r\n" + subs); - String[] parts = subs.split(":"); - if (parts[0].trim().length() > 0) { - int size = Integer.parseInt(parts[1].trim().split(" ")[0]); - AddNodeFileButton(parts[0].trim(), size); - usedSpace += size; - log("FileManager found file " + parts[0].trim()); - } - } - if (FileAsButton.size() == 0) { - TerminalAdd("No files found."); - TerminalAdd("\r\n----------------------------\r\n> "); - } else { - TerminalAdd("\r\n----------------------------"); - TerminalAdd("\r\nTotal file(s) : " + Integer.toString(s.length)); - TerminalAdd("\r\nTotal size : " + Integer.toString(usedSpace) + " bytes\r\n"); - } - NodeFileManagerPane.invalidate(); - NodeFileManagerPane.doLayout(); - NodeFileManagerPane.repaint(); - NodeFileManagerPane.requestFocusInWindow(); - log("FileManager: File list parsing done, found " + FileAsButton.size() + " file(s)."); - } catch (Exception e) { - log(e.toString()); - } - try { - serialPort.removeEventListener(); - } catch (Exception e) { - } - serialPort.addEventListener(new PortReader(), portMask); - SendUnLock(); - NodeFileSystemInfo(); - } - } catch (SerialPortException ex) { - log(ex.toString()); - } - } else if (event.isCTS()) { - UpdateLedCTS(); - } else if (event.isERR()) { - log("FileManager: Unknown serial port error received."); - } - } - } - - private void FileDownload(String param) { - if (portJustOpen) { - log("Downloader: Communication with MCU not yet established."); - return; - } - // param init.luaSize:123 - DownloadedFileName = param.split("Size:")[0]; - int size = Integer.parseInt(param.split("Size:")[1]); - packets = size / 1024; - if (size % 1024 > 0) { - packets++; - } - sendBuf = new ArrayList(); - rcvPackets = new ArrayList(); - PacketsData = new ArrayList(); - PacketsSize = new ArrayList(); - PacketsNum = new ArrayList(); - rcvFile = ""; - PacketsByte = new byte[0]; - rx_byte = new byte[0]; - PacketsCRC = new ArrayList(); - String cmd = "_dl=function() " - + " file.open(\"" + DownloadedFileName + "\", \"r\")\n" - + " local buf " - + " local i=0 " - + " local checksum\n" - + " repeat " - + " buf = file.read(1024) " - + " if buf ~= nil then " - + " i = i + 1 " - + " checksum = 0 " - + " for j=1, string.len(buf) do\n" - + " checksum = checksum + (buf:byte(j)*20)%19 " - + " end " - + " buf='~~~'..'DATA-START~~~'..buf..'~~~'..'DATA-LENGTH~~~'..string.len(buf)..'~~~'..'DATA-N~~~'..i..'~~~'..'DATA-CRC~~~'..checksum..'~~~'..'DATA-END~~~'\n" - + " uart.write(0,buf) " - + " end " - + " tmr.wdclr() " - + " until(buf == nil) " - + " file.close()\n" - + " buf='~~~'..'DATA-TOTAL-START~~~'..i..'~~~'..'DATA-TOTAL-END~~~'\n" - + " uart.write(0,buf) " - + "end " - + "_dl() " - + "_dl=nil\n"; - s = cmd.split("\r?\n"); - for (String subs : s) { - sendBuf.add(subs); - } - log("Downloader: Starting..."); - startTime = System.currentTimeMillis(); - SendLock(); - rx_data = ""; - rcvBuf = ""; - rx_byte = new byte[0]; - try { - serialPort.removeEventListener(); - } catch (Exception e) { - log(e.toString()); - } - try { - serialPort.addEventListener(new PortFileDownloader(), portMask); - log("Downloader: Add EventListener: Success."); - } catch (SerialPortException e) { - log("Downloader: Add EventListener Error. Canceled."); - return; - } - int delay = 10; - j0(); - taskPerformer = new ActionListener() { - public void actionPerformed(ActionEvent evt) { - if (j < sendBuf.size()) { - send(addCR(sendBuf.get(j)), false); - sendPending = false; - } - } - }; - timer = new Timer(delay, taskPerformer); - timer.setRepeats(false); - log("Downloader: Start"); - TerminalAdd("\r\nDownload file \"" + DownloadedFileName + "\"..."); - timer.setInitialDelay(delay); - WatchDog(); - timer.start(); - return; - } - - private void FileDownloadFinisher(boolean success) { - try { - serialPort.removeEventListener(); - } catch (Exception e) { - log(e.toString()); - } - try { - serialPort.addEventListener(new PortReader(), portMask); - } catch (SerialPortException e) { - log("Downloader: Can't Add OldEventListener."); - } - //SendUnLock(); - StopSend(); - if (success) { - TerminalAdd("Success.\r\n"); - if (DownloadCommand.startsWith("EDIT")) { - FileNew(rcvFile); - } else if (DownloadCommand.startsWith("DOWNLOAD")) { - SaveDownloadedFile(); - } else { - // nothing, reserved - } - } else { - TerminalAdd("FAIL.\r\n"); - } - } - - private byte[] concatArray(byte[] a, byte[] b) { - if (a == null) { - return b; - } - if (b == null) { - return a; - } - byte[] r = new byte[a.length + b.length]; - System.arraycopy(a, 0, r, 0, a.length); - System.arraycopy(b, 0, r, a.length, b.length); - return r; - } - - private class PortFileDownloader implements SerialPortEventListener { - - public void serialEvent(SerialPortEvent event) { - String data; - byte[] b; - if (event.isRXCHAR() && event.getEventValue() > 0) { - try { - b = serialPort.readBytes(); - rx_byte = concatArray(rx_byte, b); - data = new String(b); - rcvBuf = rcvBuf + data; - rx_data = rx_data + data; - //TerminalAdd(data); - } catch (SerialPortException e) { - data = ""; - log(e.toString()); - } - if (rcvBuf.contains("> ")) { - try { - timeout.restart(); - } catch (Exception e) { - log(e.toString()); - } - rcvBuf = ""; - if (j < sendBuf.size() - 1) { - if (timer.isRunning() || sendPending) { - // - } else { - inc_j(); - sendPending = true; - timer.start(); - } - } else { // send done - try { - timer.stop(); - } catch (Exception e) { - } - } - } - /* - String l = data.replace("\r", ""); - l = l.replace("\n", ""); - l = l.replace("`", ""); - log("recv:" + l); - */ - if ((rx_data.lastIndexOf("~~~DATA-END") >= 0) && (rx_data.lastIndexOf("~~~DATA-START") >= 0)) { - // we got full packet - rcvPackets.add(rx_data.split("~~~DATA-END")[0]); // store RAW data - rx_data = rx_data.substring(rx_data.indexOf("~~~DATA-END") + 11); // and remove it from buf - if (packets > 0) { // exclude div by zero - ProgressBar.setValue(rcvPackets.size() * 100 / packets); - } - // ~~~DATA-START~~~buf~~~DATA-LENGTH~~~string.len(buf)~~~DATA-N~~~i~~~DATA-CRC~~~CheckSum~~~DATA-END - //0 1 2 3 4 5 - // split packet & check crc - int i = rcvPackets.size() - 1; - String[] part = rcvPackets.get(i).split("~~~DATA-CRC~~~"); - PacketsCRC.add(Integer.parseInt(part[1])); - String left = part[0]; - part = left.split("~~~DATA-N~~~"); - PacketsNum.add(Integer.parseInt(part[1])); - left = part[0]; - part = left.split("~~~DATA-LENGTH~~~"); - PacketsSize.add(Integer.parseInt(part[1])); - left = part[0]; - part = left.split("~~~DATA-START~~~"); - PacketsData.add(part[1]); - int startData = FindPacketID(i + 1); - byte[] x; - if ((startData > 0) && (rx_byte.length >= (startData + PacketsSize.get(i)))) { - x = copyPartArray(rx_byte, startData, PacketsSize.get(i)); - //log("Downloader: data from packet #" + Integer.toString(i+1) + " found in raw data"); - } else { - x = new byte[0]; - //log("Downloader: data packet #" + Integer.toString(i+1) + " not found in raw data."); - //log("raw date length " + rx_byte.length + - // "\r\nstartData " + Integer.toString(startData) ); - } - //rx_byte = new byte[0]; - if (PacketsCRC.get(i) == CRC(x)) { - try { - timeout.restart(); - } catch (Exception e) { - log(e.toString()); - } - rcvFile = rcvFile + PacketsData.get(i); - PacketsByte = concatArray(PacketsByte, x); - log("Downloader: Receive packet: " + Integer.toString(PacketsNum.get(i)) + "/" + Integer.toString(packets) - + ", size:" + Integer.toString(PacketsSize.get(i)) - + ", CRC check: Success"); - } else { - try { - timeout.stop(); - } catch (Exception e) { - log(e.toString()); - } - log("Downloader: Receive packets: " + Integer.toString(PacketsNum.get(i)) + "/" + Integer.toString(packets) - + ", size expected:" + Integer.toString(PacketsSize.get(i)) - + ", size received:" + Integer.toString(PacketsByte.length) - + "\r\n, CRC expected :" + Integer.toString(PacketsCRC.get(i)) - + " CRC received :" + Integer.toString(CRC(x))); - log("Downloader: FAIL."); - PacketsCRC.clear(); - PacketsNum.clear(); - PacketsSize.clear(); - PacketsData.clear(); - rcvPackets.clear(); - rcvFile = ""; - PacketsByte = new byte[0]; - FileDownloadFinisher(false); - } - } else if ((rx_data.lastIndexOf("~~~DATA-TOTAL-END~~~") >= 0) && (PacketsNum.size() == packets)) { - try { - timeout.stop(); - } catch (Exception e) { - log(e.toString()); - } - ProgressBar.setValue(100); - log("Downloader: Receive final sequense. File download: Success"); - //log(rx_data); - FileDownloadFinisher(true); - } else { - //log("rxbyte - " + Integer.toString( rx_byte.length )); - } - } else if (event.isCTS()) { - UpdateLedCTS(); - } else if (event.isERR()) { - log("Downloader: Unknown serial port error received."); - FileDownloadFinisher(false); - } - } - } - - private byte[] copyPartArray(byte[] a, int start, int len) { - if (a == null) { - return null; - } - if (start > a.length) { - return null; - } - byte[] r = new byte[len]; - try { - System.arraycopy(a, start, r, 0, len); - } catch (Exception e) { - log(e.toString()); - log("copyPartArray exception"); - log("size a=" + Integer.toString(a.length)); - log("start =" + Integer.toString(start)); - log("len =" + Integer.toString(len)); - } - return r; - } - - private int FindPacketID(int nPacket) { - int i, j, n, ret = -1; - boolean success; - String s = "~~~DATA-START~~~"; - i = 0; - n = 0; - while (i < rx_byte.length - s.length()) { - success = true; - for (j = 0; j < s.length(); j++) { - if (!(rx_byte[i + j] == s.charAt(j))) { - success = false; - break; - } - } - if (success) { - n++; - //log("Downloader: n =" + Integer.toString(n)); - //log("Downloader: nPacket =" + Integer.toString(nPacket)); - } - if (success && (n == nPacket)) { - ret = i + s.length(); - break; - } else { - } - i++; - } - //log("Downloader: FindPacketID=" + Integer.toString(ret)); - return ret; - } - - private int CRC(byte[] s) { - int cs = 0; - int x; - try { - for (int i = 0; i < s.length; i++) { - x = s[i] & 0xFF; - //log( Integer.toHexString(x) ); - cs = cs + (x * 20) % 19; - } - //log("\r\nCRC size= " + Integer.toString(s.length)+ ", CRC="+Integer.toString(cs)); - } catch (Exception e) { - log(e.toString()); - log(e.getStackTrace().toString()); - log("size=" + Integer.toString(s.length)); - } - return cs; - } - - private void HexDump(String FileName) { - String cmd = "_dump=function()\n" - + " local buf\n" - + " local j=0\n" - + " if file.open(\"" + FileName + "\", \"r\") then\n" - + " print('--HexDump start')\n" - + " repeat\n" - + " buf=file.read(1024)\n" - + " if buf~=nil then\n" - + " local n \n" - + " if #buf==1024 then\n" - + " n=(#buf/16)*16\n" - + " else\n" - + " n=(#buf/16+1)*16\n" - + " end\n" - + " for i=1,n do\n" - + " j=j+1\n" - + " if (i-1)%16==0 then\n" - + " uart.write(0,string.format('%08X ',j-1)) \n" - + " end\n" - + " uart.write(0,i>#buf and' 'or string.format('%02X ',buf:byte(i)))\n" - + " if i%8==0 then uart.write(0,' ')end\n" - + " if i%16==0 then uart.write(0,buf:sub(i-16+1, i):gsub('%c','.'),'\\n')end\n" - + " if i%128==0 then tmr.wdclr()end\n" - + " end\n" - + " end\n" - + " until(buf==nil)\n" - + " file.close()\n" - + " print(\"\\r--HexDump done.\")\n" - + " else\n" - + " print(\"\\r--HexDump error: can't open file\")\n" - + " end\n" - + "end\n" - + "_dump()\n" - + "_dump=nil\n"; - LocalEcho = false; - SendToESP(cmdPrep(cmd)); - } - - private ArrayList cmdPrep(String cmd) { - String[] str = cmd.split("\n"); - ArrayList s256 = new ArrayList(); - int i = 0; - s256.add(""); - for (String subs : str) { - if ((s256.get(i).length() + subs.trim().length()) <= 250) { - s256.set(i, s256.get(i) + " " + subs.trim()); - } else { - s256.set(i, s256.get(i) + "\r"); - s256.add(subs); - i++; - } - } - return s256; - } - - private void UpdateLedCTS() { - try { - if (serialPort.isCTS()) { - PortCTS.setIcon(LED_GREEN); - } else { - PortCTS.setIcon(LED_GREY); - } - } catch (Exception e) { - log(e.toString()); - } - } - - private void TerminalAdd(String s) { - Document doc = Terminal.getDocument(); - if (doc.getLength() > TerminalMax) { - try { - doc.remove(0, 1024); - } catch (Exception e) { - } - } - try { - doc.insertString(doc.getLength(), s, null); - } catch (Exception e) { - log(e.toString()); - } - if (AutoScroll.isSelected()) { - try { - Terminal.setCaretPosition(doc.getLength()); - } catch (Exception e) { - log(e.toString()); - } - } - } - private void MenuItemEditorSendSelectedActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemEditorSendSelectedActionPerformed - MenuItemEditSendSelected.doClick(); - }//GEN-LAST:event_MenuItemEditorSendSelectedActionPerformed - - private void MenuItemEditSendSelectedActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemEditSendSelectedActionPerformed - int l = 0; - if ((LeftTab.getSelectedIndex() == 0) && (TextTab.getSelectedIndex() == 0)) { // NodeMCU and Scripts - try { - l = TextEditor1.get(iTab).getSelectedText().length(); - } catch (Exception e) { - log("Can't send: nothing selected."); - return; - } - if (l > 0) { - SendToESP(TextEditor1.get(iTab).getSelectedText()); - } - } else if ((LeftTab.getSelectedIndex() == 0) && (TextTab.getSelectedIndex() == 0)) { // NodeMCU and Snippets - try { - l = SnippetText.getSelectedText().length(); - } catch (Exception e) { - log("Can't send: nothing selected."); - return; - } - if (l > 0) { - SendToESP(SnippetText.getSelectedText()); - } - } - }//GEN-LAST:event_MenuItemEditSendSelectedActionPerformed - - private void MenuItemFileRemoveESPActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemFileRemoveESPActionPerformed - String ft = iFile.get(iTab).getName(); - if (ft.length() == 0) { - log("FileRemoveESP: FAIL. Can't remove file from ESP without name."); - JOptionPane.showMessageDialog(null, "Can't remove file from ESP without name."); - } - FileRemoveESP(ft); - }//GEN-LAST:event_MenuItemFileRemoveESPActionPerformed - private void FileRemoveESP(String FileName) { - btnSend("file.remove(\"" + FileName + "\")"); - try { - Thread.sleep(200L); - } catch (Exception e) { - } - FileListReload.doClick(); - } - private void MenuItemFileSaveESPActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemFileSaveESPActionPerformed - if (!FileSaveESP.isSelected()) { - FileSaveESP.doClick(); - } - }//GEN-LAST:event_MenuItemFileSaveESPActionPerformed - - private void NodeResetActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_NodeResetActionPerformed - cmdNodeRestart.doClick(); - }//GEN-LAST:event_NodeResetActionPerformed - - private void MenuItemLogCloseActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemLogCloseActionPerformed - MenuItemViewLog.doClick(); - }//GEN-LAST:event_MenuItemLogCloseActionPerformed - - private void MenuItemTerminalResetActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemTerminalResetActionPerformed - MenuItemESPReset.doClick(); - }//GEN-LAST:event_MenuItemTerminalResetActionPerformed - - private void DonateActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_DonateActionPerformed - goLink(donate_uri); - }//GEN-LAST:event_DonateActionPerformed - - private void MenuItemHelpAboutActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemHelpAboutActionPerformed - About.setLocationRelativeTo(null); - About.setVisible(true); - }//GEN-LAST:event_MenuItemHelpAboutActionPerformed - - private void AboutFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_AboutFocusLost - About.dispose(); - }//GEN-LAST:event_AboutFocusLost - - private void HomePageActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_HomePageActionPerformed - goLink(homepage_uri); - }//GEN-LAST:event_HomePageActionPerformed - - private void CommandItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_CommandItemStateChanged - - }//GEN-LAST:event_CommandItemStateChanged - - private void PortItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_PortItemStateChanged - - }//GEN-LAST:event_PortItemStateChanged - private void LoadSnippets() { - String suffix; - if (OptionNodeMCU.isSelected()) { - suffix = ""; - SnippetText.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_LUA); - } else { - suffix = "_mpy"; - SnippetText.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_PYTHON); - } - log("Snippets: loading..."); - for (int i = 0; i <= 15; i++) { - String n = Integer.toString(i).trim(); - if (prefs.get("Snippet" + n + suffix + "name", null) == null) { - prefs.put("Snippet" + n + suffix + "name", "Snippet" + n); - prefs.put("Snippet" + n + suffix, ""); - PrefsFlush(); - } - if (i == 0) { - ButtonSnippet0.setText(prefs.get("Snippet" + n + suffix + "name", "Snippet" + n)); - } else if (i == 1) { - ButtonSnippet1.setText(prefs.get("Snippet" + n + suffix + "name", "Snippet" + n)); - } else if (i == 2) { - ButtonSnippet2.setText(prefs.get("Snippet" + n + suffix + "name", "Snippet" + n)); - } else if (i == 3) { - ButtonSnippet3.setText(prefs.get("Snippet" + n + suffix + "name", "Snippet" + n)); - } else if (i == 4) { - ButtonSnippet4.setText(prefs.get("Snippet" + n + suffix + "name", "Snippet" + n)); - } else if (i == 5) { - ButtonSnippet5.setText(prefs.get("Snippet" + n + suffix + "name", "Snippet" + n)); - } else if (i == 6) { - ButtonSnippet6.setText(prefs.get("Snippet" + n + suffix + "name", "Snippet" + n)); - } else if (i == 7) { - ButtonSnippet7.setText(prefs.get("Snippet" + n + suffix + "name", "Snippet" + n)); - } else if (i == 8) { - ButtonSnippet8.setText(prefs.get("Snippet" + n + suffix + "name", "Snippet" + n)); - } else if (i == 9) { - ButtonSnippet9.setText(prefs.get("Snippet" + n + suffix + "name", "Snippet" + n)); - } else if (i == 10) { - ButtonSnippet10.setText(prefs.get("Snippet" + n + suffix + "name", "Snippet" + n)); - } else if (i == 11) { - ButtonSnippet11.setText(prefs.get("Snippet" + n + suffix + "name", "Snippet" + n)); - } else if (i == 12) { - ButtonSnippet12.setText(prefs.get("Snippet" + n + suffix + "name", "Snippet" + n)); - } else if (i == 13) { - ButtonSnippet13.setText(prefs.get("Snippet" + n + suffix + "name", "Snippet" + n)); - } else if (i == 14) { - ButtonSnippet14.setText(prefs.get("Snippet" + n + suffix + "name", "Snippet" + n)); - } else { - ButtonSnippet15.setText(prefs.get("Snippet" + n + suffix + "name", "Snippet" + n)); - } - Snippets[i] = prefs.get("Snippet" + n + suffix, ""); - if (i == 0 && OptionMicroPython.isSelected()) { - if (Snippets[i].isEmpty()) { - ButtonSnippet0.setText("GPIO2 1"); - prefs.put("Snippet" + i + suffix + "name", "GPIO2 1"); - Snippets[i] = "import pyb\r\n" - + "pin = pyb.Pin(2, pyb.Pin.OUT)\r\n" - + "pin.value(1)"; - } - } - if (i == 1 && OptionMicroPython.isSelected()) { - if (Snippets[i].isEmpty()) { - ButtonSnippet1.setText("GPIO2 0"); - prefs.put("Snippet" + i + suffix + "name", "GPIO2 0"); - Snippets[i] = "import pyb\r\n" - + "pin = pyb.Pin(2, pyb.Pin.OUT)\r\n" - + "pin.value(0)"; - } - } - } - SetSnippetEditButtonsTooltip(); - log("Snippets load: Success."); - } - - private void SnippetEdit(int n) { - if (SnippetText.canUndo() || SnippetText.canRedo()) { - this.setAlwaysOnTop(false); - int returnVal = JOptionPane.showConfirmDialog(null, "Discard any changes and load Snippet" + Integer.toString(n), "Attention", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE); - this.setAlwaysOnTop(AlwaysOnTop.isSelected()); - if (returnVal != JOptionPane.YES_OPTION) { - return; - } - } - SnippetText.setEnabled(true); - iSnippets = n; - SnippetName.setEnabled(true); - SnippetSave.setEnabled(true); - SnippetRun.setEnabled(true); - SnippetCancelEdit.setEnabled(true); - SnippetText.setEnabled(true); - SnippetScrollPane.setEnabled(true); - SnippetText.setEditable(true); - SnippetText.setText(Snippets[iSnippets]); - //SnippetText.setBackground(themeTextBackground); - SnippetText.discardAllEdits(); - String suffix; - if (OptionNodeMCU.isSelected()) { - suffix = ""; - } else { - suffix = "_mpy"; - } - String snippetName = prefs.get("Snippet" + n + suffix + "name", "Snippet" + n); - log("Snippet name set to:" + snippetName); - SnippetName.setText(snippetName); - } - private void ButtonSnippet0ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ButtonSnippet0ActionPerformed - DoSnippet(0); - }//GEN-LAST:event_ButtonSnippet0ActionPerformed - - private void ButtonSnippet1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ButtonSnippet1ActionPerformed - DoSnippet(1); - }//GEN-LAST:event_ButtonSnippet1ActionPerformed - - private void ButtonSnippet2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ButtonSnippet2ActionPerformed - DoSnippet(2); - }//GEN-LAST:event_ButtonSnippet2ActionPerformed - - private void ButtonSnippet3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ButtonSnippet3ActionPerformed - DoSnippet(3); - }//GEN-LAST:event_ButtonSnippet3ActionPerformed - - private void ButtonSnippet4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ButtonSnippet4ActionPerformed - DoSnippet(4); - }//GEN-LAST:event_ButtonSnippet4ActionPerformed - - private void ButtonSnippet5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ButtonSnippet5ActionPerformed - DoSnippet(5); - }//GEN-LAST:event_ButtonSnippet5ActionPerformed - - private void ButtonSnippet6ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ButtonSnippet6ActionPerformed - DoSnippet(6); - }//GEN-LAST:event_ButtonSnippet6ActionPerformed - - private void ButtonSnippet7ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ButtonSnippet7ActionPerformed - DoSnippet(7); - }//GEN-LAST:event_ButtonSnippet7ActionPerformed - - private void ButtonSnippet8ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ButtonSnippet8ActionPerformed - DoSnippet(8); - }//GEN-LAST:event_ButtonSnippet8ActionPerformed - - private void ButtonSnippet9ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ButtonSnippet9ActionPerformed - DoSnippet(9); - }//GEN-LAST:event_ButtonSnippet9ActionPerformed - - private void ButtonSnippet10ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ButtonSnippet10ActionPerformed - DoSnippet(10); - }//GEN-LAST:event_ButtonSnippet10ActionPerformed - - private void ButtonSnippet11ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ButtonSnippet11ActionPerformed - DoSnippet(11); - }//GEN-LAST:event_ButtonSnippet11ActionPerformed - - private void ButtonSnippet12ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ButtonSnippet12ActionPerformed - DoSnippet(12); - }//GEN-LAST:event_ButtonSnippet12ActionPerformed - - private void ButtonSnippet13ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ButtonSnippet13ActionPerformed - DoSnippet(13); - }//GEN-LAST:event_ButtonSnippet13ActionPerformed - - private void ButtonSnippet14ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ButtonSnippet14ActionPerformed - DoSnippet(14); - }//GEN-LAST:event_ButtonSnippet14ActionPerformed - - private void ButtonSnippet15ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ButtonSnippet15ActionPerformed - DoSnippet(15); - }//GEN-LAST:event_ButtonSnippet15ActionPerformed - - private void MenuItemEditSendLineActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemEditSendLineActionPerformed - int nLine; - if ((LeftTab.getSelectedIndex() == 0) && (TextTab.getSelectedIndex() == 0)) { // NodeMCU and Scripts - nLine = TextEditor1.get(iTab).getCaretLineNumber(); - String cmd = TextEditor1.get(iTab).getText().split("\r?\n")[nLine]; - btnSend(cmd); - } else if ((LeftTab.getSelectedIndex() == 0) && (TextTab.getSelectedIndex() == 2)) { // NodeMCU and Snippets - nLine = SnippetText.getCaretLineNumber(); - String cmd = SnippetText.getText().split("\r?\n")[nLine]; - btnSend(cmd); - } - }//GEN-LAST:event_MenuItemEditSendLineActionPerformed - - private void MenuItemFileSendESPActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemFileSendESPActionPerformed - FileSendESP.doClick(); - }//GEN-LAST:event_MenuItemFileSendESPActionPerformed - - private void MenuItemEditorSendLineActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemEditorSendLineActionPerformed - MenuItemEditSendLine.doClick(); - }//GEN-LAST:event_MenuItemEditorSendLineActionPerformed - - private void MenuFileActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuFileActionPerformed - - }//GEN-LAST:event_MenuFileActionPerformed - - private void MenuItemFileDoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemFileDoActionPerformed - FileDo.doClick(); - }//GEN-LAST:event_MenuItemFileDoActionPerformed - - private void MenuItemTerminalFontDecActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemTerminalFontDecActionPerformed - MenuItemViewTermFontDec.doClick(); - }//GEN-LAST:event_MenuItemTerminalFontDecActionPerformed - - private void MenuItemTerminalFontIncActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemTerminalFontIncActionPerformed - MenuItemViewTermFontInc.doClick(); - }//GEN-LAST:event_MenuItemTerminalFontIncActionPerformed - - private void MenuItemViewTermFontIncActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemViewTermFontIncActionPerformed - int size = Terminal.getFont().getSize(); - if (size < TERMINAL_FONT_SIZE_MAX) { - Terminal.setFont(Terminal.getFont().deriveFont(Terminal.getFont().getSize() + 1f)); - } else { - Terminal.setFont(Terminal.getFont().deriveFont(TERMINAL_FONT_SIZE_MAX)); - } - prefs.putFloat(TERMINAL_FONT_SIZE, Terminal.getFont().getSize()); - PrefsFlush(); - }//GEN-LAST:event_MenuItemViewTermFontIncActionPerformed - - private void MenuItemViewTermFontDecActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemViewTermFontDecActionPerformed - int size = Terminal.getFont().getSize(); - if (size > TERMINAL_FONT_SIZE_MIN) { - Terminal.setFont(Terminal.getFont().deriveFont(Terminal.getFont().getSize() - 1f)); - } else { - Terminal.setFont(Terminal.getFont().deriveFont(TERMINAL_FONT_SIZE_MIN)); - } - prefs.putFloat(TERMINAL_FONT_SIZE, Terminal.getFont().getSize()); - PrefsFlush(); - }//GEN-LAST:event_MenuItemViewTermFontDecActionPerformed - - private void MenuItemViewEditorFontIncActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemViewEditorFontIncActionPerformed - int size = TextEditor1.get(iTab).getFont().getSize(); - if (size < EDITOR_FONT_SIZE_MAX) { - TextEditor1.get(iTab).setFont(TextEditor1.get(iTab).getFont().deriveFont(TextEditor1.get(iTab).getFont().getSize() + 1f)); - } else { - TextEditor1.get(iTab).setFont(TextEditor1.get(iTab).getFont().deriveFont(EDITOR_FONT_SIZE_MAX)); - } - prefs.putFloat(EDITOR_FONT_SIZE, TextEditor1.get(iTab).getFont().getSize()); - PrefsFlush(); - SetTheme(prefs.getInt(COLOR_THEME, 0), true); // for all - }//GEN-LAST:event_MenuItemViewEditorFontIncActionPerformed - - private void MenuItemViewEditorFontDecActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemViewEditorFontDecActionPerformed - int size = TextEditor1.get(iTab).getFont().getSize(); - if (size > EDITOR_FONT_SIZE_MIN) { - TextEditor1.get(iTab).setFont(TextEditor1.get(iTab).getFont().deriveFont(TextEditor1.get(iTab).getFont().getSize() - 1f)); - } else { - TextEditor1.get(iTab).setFont(TextEditor1.get(iTab).getFont().deriveFont(EDITOR_FONT_SIZE_MIN)); - } - prefs.putFloat(EDITOR_FONT_SIZE, TextEditor1.get(iTab).getFont().getSize()); - PrefsFlush(); - SetTheme(prefs.getInt(COLOR_THEME, 0), true); // for all - }//GEN-LAST:event_MenuItemViewEditorFontDecActionPerformed - - private void MenuItemViewFontDefaultActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemViewFontDefaultActionPerformed - prefs.putFloat(TERMINAL_FONT_SIZE, TERMINAL_FONT_SIZE_DEFAULT); - prefs.putFloat(EDITOR_FONT_SIZE, EDITOR_FONT_SIZE_DEFAULT); - prefs.putFloat(LOG_FONT_SIZE, LOG_FONT_SIZE_DEFAULT); - PrefsFlush(); - SetTheme(prefs.getInt(COLOR_THEME, 0), true); // for all - Terminal.setFont(Terminal.getFont().deriveFont(TERMINAL_FONT_SIZE_DEFAULT)); - Log.setFont(Log.getFont().deriveFont(LOG_FONT_SIZE_DEFAULT)); - }//GEN-LAST:event_MenuItemViewFontDefaultActionPerformed - - private void MenuItemEditorFontIncActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemEditorFontIncActionPerformed - MenuItemViewEditorFontInc.doClick(); - }//GEN-LAST:event_MenuItemEditorFontIncActionPerformed - - private void MenuItemEditorFontDecActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemEditorFontDecActionPerformed - MenuItemViewEditorFontDec.doClick(); - }//GEN-LAST:event_MenuItemEditorFontDecActionPerformed - - private void MenuItemViewLogFontIncActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemViewLogFontIncActionPerformed - int size = Log.getFont().getSize(); - if (size < LOG_FONT_SIZE_MAX) { - Log.setFont(Log.getFont().deriveFont(Log.getFont().getSize() + 1f)); - } else { - Log.setFont(Log.getFont().deriveFont(LOG_FONT_SIZE_MAX)); - } - prefs.putFloat(LOG_FONT_SIZE, Log.getFont().getSize()); - PrefsFlush(); - }//GEN-LAST:event_MenuItemViewLogFontIncActionPerformed - - private void MenuItemViewLogFontDecActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemViewLogFontDecActionPerformed - int size = Log.getFont().getSize(); - if (size > LOG_FONT_SIZE_MIN) { - Log.setFont(Log.getFont().deriveFont(Log.getFont().getSize() - 1f)); - } else { - Log.setFont(Log.getFont().deriveFont(LOG_FONT_SIZE_MIN)); - } - prefs.putFloat(LOG_FONT_SIZE, Log.getFont().getSize()); - PrefsFlush(); - }//GEN-LAST:event_MenuItemViewLogFontDecActionPerformed - - private void MenuItemLogFontIncActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemLogFontIncActionPerformed - MenuItemViewLogFontInc.doClick(); - }//GEN-LAST:event_MenuItemLogFontIncActionPerformed - - private void MenuItemLogFontDecActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemLogFontDecActionPerformed - MenuItemViewLogFontDec.doClick(); - }//GEN-LAST:event_MenuItemLogFontDecActionPerformed - - private void SpeedItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_SpeedItemStateChanged - nSpeed = Integer.parseInt((String) Speed.getSelectedItem()); - - }//GEN-LAST:event_SpeedItemStateChanged - - private void LogCaretUpdate(javax.swing.event.CaretEvent evt) {//GEN-FIRST:event_LogCaretUpdate - }//GEN-LAST:event_LogCaretUpdate - - private void MenuItemESPResetActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemESPResetActionPerformed - if (LeftTab.getSelectedIndex() == 0) { // NodeMCU TAB - cmdNodeRestart.doClick(); - } else if (LeftTab.getSelectedIndex() == 1) { // AT TAB - AT_Restart.doClick(); - } - }//GEN-LAST:event_MenuItemESPResetActionPerformed - - private void MenuItemESPFormatActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemESPFormatActionPerformed - if (LeftTab.getSelectedIndex() == 0) { // NodeMCU TAB - int isFormat = Dialog("Format ESP flash data area and remove ALL files. Are you sure?", JOptionPane.YES_NO_OPTION); - if (isFormat == JOptionPane.YES_OPTION) { - btnSend("file.format()"); - } - } - }//GEN-LAST:event_MenuItemESPFormatActionPerformed - - private void MenuItemTerminalFormatActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemTerminalFormatActionPerformed - MenuItemESPFormat.doClick(); - }//GEN-LAST:event_MenuItemTerminalFormatActionPerformed - - private void MenuItemLinksNodeMCUdocActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemLinksNodeMCUdocActionPerformed - goLink(api_en_uri); - }//GEN-LAST:event_MenuItemLinksNodeMCUdocActionPerformed - - private void MenuItemLinksMicroPythonDocActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemLinksMicroPythonDocActionPerformed - goLink(micropython_doc); - }//GEN-LAST:event_MenuItemLinksMicroPythonDocActionPerformed - - private void MenuItemESPFileDoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemESPFileDoActionPerformed - - }//GEN-LAST:event_MenuItemESPFileDoActionPerformed - - private void MenuItemESPFileDeleteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemESPFileDeleteActionPerformed - // TODO add your handling code here: - }//GEN-LAST:event_MenuItemESPFileDeleteActionPerformed - - private void ContextMenuESPFileLUAPopupMenuWillBecomeVisible(javax.swing.event.PopupMenuEvent evt) {//GEN-FIRST:event_ContextMenuESPFileLUAPopupMenuWillBecomeVisible - - }//GEN-LAST:event_ContextMenuESPFileLUAPopupMenuWillBecomeVisible - - private void TerminalPropertyChange(java.beans.PropertyChangeEvent evt) {//GEN-FIRST:event_TerminalPropertyChange - - }//GEN-LAST:event_TerminalPropertyChange - - private void RightFilesSplitPanePropertyChange(java.beans.PropertyChangeEvent evt) {//GEN-FIRST:event_RightFilesSplitPanePropertyChange - if ("dividerLocation".equals(evt.getPropertyName()) && MenuItemViewFileManager.isSelected()) { - prefs.putInt(FM_DIV, RightFilesSplitPane.getDividerLocation()); - } - }//GEN-LAST:event_RightFilesSplitPanePropertyChange - - private void RightBigPanePropertyChange(java.beans.PropertyChangeEvent evt) {//GEN-FIRST:event_RightBigPanePropertyChange - - }//GEN-LAST:event_RightBigPanePropertyChange - - private void formPropertyChange(java.beans.PropertyChangeEvent evt) {//GEN-FIRST:event_formPropertyChange - //log(evt.getPropertyName()); - }//GEN-LAST:event_formPropertyChange - - private void formComponentResized(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_formComponentResized - isFileManagerShow(); - }//GEN-LAST:event_formComponentResized - - private void FileListReloadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_FileListReloadActionPerformed - NodeListFiles(); - }//GEN-LAST:event_FileListReloadActionPerformed - - private void FileAsButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_FileAsButton1ActionPerformed - String fn = evt.getActionCommand(); - if (fn.endsWith(".lua") || fn.endsWith(".lc")) { - String cmd = "dofile(\"" + fn + "\")"; - btnSend(cmd); - } else if (fn.endsWith(".bin") || fn.endsWith(".dat")) { - HexDump(fn); - } else { - ViewFile(fn); - } - }//GEN-LAST:event_FileAsButton1ActionPerformed - - private void FileAsButton1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_FileAsButton1MouseClicked - - }//GEN-LAST:event_FileAsButton1MouseClicked - - private void NodeInfoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_NodeInfoActionPerformed - btnSend("=node.info()"); - }//GEN-LAST:event_NodeInfoActionPerformed - - private void NodeChipIDActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_NodeChipIDActionPerformed - btnSend("=node.chipid()"); - }//GEN-LAST:event_NodeChipIDActionPerformed - - private void NodeFlashIDActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_NodeFlashIDActionPerformed - btnSend("=node.flashid()"); - }//GEN-LAST:event_NodeFlashIDActionPerformed - - private void NodeHeapActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_NodeHeapActionPerformed - btnSend("=node.heap()"); - }//GEN-LAST:event_NodeHeapActionPerformed - - private void FileFormatActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_FileFormatActionPerformed - MenuItemESPFormat.doClick(); - }//GEN-LAST:event_FileFormatActionPerformed - - private void MenuItemViewSnippetsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemViewSnippetsActionPerformed - prefs.putBoolean(SHOW_SNIP_RIGHT, MenuItemViewSnippets.isSelected()); - isRightSnippetsShow(); - }//GEN-LAST:event_MenuItemViewSnippetsActionPerformed - - private void MenuItemViewFileManagerActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemViewFileManagerActionPerformed - prefs.putBoolean(SHOW_FM_RIGHT, MenuItemViewFileManager.isSelected()); - isFileManagerShow(); - }//GEN-LAST:event_MenuItemViewFileManagerActionPerformed - - private void MenuItemViewRightExtraActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemViewRightExtraActionPerformed - RightExtraButtons.setVisible(MenuItemViewRightExtra.isSelected()); - prefs.putBoolean(SHOW_EXTRA_RIGHT, MenuItemViewRightExtra.isSelected()); - }//GEN-LAST:event_MenuItemViewRightExtraActionPerformed - - private void MenuItemFileSaveAsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemFileSaveAsActionPerformed - // TODO add your handling code here: - }//GEN-LAST:event_MenuItemFileSaveAsActionPerformed - - private void MenuItemViewToolbarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemViewToolbarActionPerformed - prefs.putBoolean(SHOW_TOOLBAR, MenuItemViewToolbar.isSelected()); - isToolbarShow(); - }//GEN-LAST:event_MenuItemViewToolbarActionPerformed - - private void MenuItemViewLeftExtraActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemViewLeftExtraActionPerformed - prefs.putBoolean(SHOW_EXTRA_LEFT, MenuItemViewLeftExtra.isSelected()); - isLeftExtraShow(); - }//GEN-LAST:event_MenuItemViewLeftExtraActionPerformed - - private void MenuViewActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuViewActionPerformed - - }//GEN-LAST:event_MenuViewActionPerformed - - private void RightSplitPanePropertyChange(java.beans.PropertyChangeEvent evt) {//GEN-FIRST:event_RightSplitPanePropertyChange - if ("dividerLocation".equals(evt.getPropertyName()) && MenuItemViewLog.isSelected()) { - prefs.putInt(LOG_DIV, RightSplitPane.getDividerLocation()); - } - }//GEN-LAST:event_RightSplitPanePropertyChange - - private void AutoScrollActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_AutoScrollActionPerformed - prefs.putBoolean(AUTO_SCROLL, AutoScroll.isSelected()); - }//GEN-LAST:event_AutoScrollActionPerformed - - private void PortDTRActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_PortDTRActionPerformed - prefs.putBoolean(PORT_DTR, PortDTR.isSelected()); - try { - serialPort.setDTR(PortDTR.isSelected()); - if (PortDTR.isSelected()) { - log("DTR set to ON"); - } else { - log("DTR set to OFF"); - } - } catch (Exception e) { - PortDTR.setSelected(false); - log(e.toString()); - log("Can't change DTR state"); - } - UpdateLED(); - }//GEN-LAST:event_PortDTRActionPerformed - - private void PortRTSActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_PortRTSActionPerformed - prefs.putBoolean(PORT_RTS, PortRTS.isSelected()); - try { - serialPort.setRTS(PortRTS.isSelected()); - if (PortRTS.isSelected()) { - log("RTS set to ON"); - } else { - log("RTS set to OFF"); - } - } catch (Exception e) { - PortRTS.setSelected(false); - log(e.toString()); - log("Can't change RTS state"); - } - UpdateLED(); - }//GEN-LAST:event_PortRTSActionPerformed - - private void MenuItemViewToolbarItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_MenuItemViewToolbarItemStateChanged - prefs.putBoolean(SHOW_TOOLBAR, MenuItemViewToolbar.isSelected()); - isToolbarShow(); - }//GEN-LAST:event_MenuItemViewToolbarItemStateChanged - - private void MenuItemViewLeftExtraItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_MenuItemViewLeftExtraItemStateChanged - prefs.putBoolean(SHOW_EXTRA_LEFT, MenuItemViewLeftExtra.isSelected()); - isLeftExtraShow(); - }//GEN-LAST:event_MenuItemViewLeftExtraItemStateChanged - - private void MenuItemViewSnippetsItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_MenuItemViewSnippetsItemStateChanged - prefs.putBoolean(SHOW_SNIP_RIGHT, MenuItemViewSnippets.isSelected()); - isRightSnippetsShow(); - }//GEN-LAST:event_MenuItemViewSnippetsItemStateChanged - - private void MenuItemViewFileManagerItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_MenuItemViewFileManagerItemStateChanged - prefs.putBoolean(SHOW_FM_RIGHT, MenuItemViewFileManager.isSelected()); - ShowFileManager.setSelected(MenuItemViewFileManager.isSelected()); - isFileManagerShow(); - }//GEN-LAST:event_MenuItemViewFileManagerItemStateChanged - - private void MenuItemViewRightExtraItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_MenuItemViewRightExtraItemStateChanged - RightExtraButtons.setVisible(MenuItemViewRightExtra.isSelected()); - prefs.putBoolean(SHOW_EXTRA_RIGHT, MenuItemViewRightExtra.isSelected()); - }//GEN-LAST:event_MenuItemViewRightExtraItemStateChanged - - private void MenuItemViewLogItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_MenuItemViewLogItemStateChanged - isLogShow(); - prefs.putBoolean(SHOW_LOG, MenuItemViewLog.isSelected()); - }//GEN-LAST:event_MenuItemViewLogItemStateChanged - - private void FileSystemInfoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_FileSystemInfoActionPerformed - NodeFileSystemInfo(); - }//GEN-LAST:event_FileSystemInfoActionPerformed - - private void FileRenameActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_FileRenameActionPerformed - btnSend("file.rename(\"" + FileRenameLabel.getText() + "\",\"" + FileRename.getText().trim() + "\")"); - try { - Thread.sleep(200L); - } catch (Exception e) { - } - FileListReload.doClick(); - }//GEN-LAST:event_FileRenameActionPerformed - - private void MenuItemViewDonateItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_MenuItemViewDonateItemStateChanged - DonateSmall.setVisible(!MenuItemViewDonate.isSelected()); - prefs.putBoolean(SHOW_DONATE, MenuItemViewDonate.isSelected()); - }//GEN-LAST:event_MenuItemViewDonateItemStateChanged - - private void MenuItemViewDonateActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemViewDonateActionPerformed - // nothing - }//GEN-LAST:event_MenuItemViewDonateActionPerformed - - private void DonateSmallActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_DonateSmallActionPerformed - goLink(donate_uri); - }//GEN-LAST:event_DonateSmallActionPerformed - - private void MenuItemLinksBuyDevBoardActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemLinksBuyDevBoardActionPerformed - goLink(buy_nodeMCU); - }//GEN-LAST:event_MenuItemLinksBuyDevBoardActionPerformed - - private void MenuItemLinksBuyESP8266ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemLinksBuyESP8266ActionPerformed - goLink(buy_esp8266); - }//GEN-LAST:event_MenuItemLinksBuyESP8266ActionPerformed - - private void MenuItemLinksBuyESD12ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemLinksBuyESD12ActionPerformed - goLink(buy_esd12); - }//GEN-LAST:event_MenuItemLinksBuyESD12ActionPerformed - - private void MenuItemLinksESPlorerForumEnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemLinksESPlorerForumEnActionPerformed - goLink(esp8266com_uri); - }//GEN-LAST:event_MenuItemLinksESPlorerForumEnActionPerformed - - private void MenuItemLinksESPlorerForumRuActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemLinksESPlorerForumRuActionPerformed - goLink(esp8266ru_uri); - }//GEN-LAST:event_MenuItemLinksESPlorerForumRuActionPerformed - - private void MenuItemLinksESPlorerLatestActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemLinksESPlorerLatestActionPerformed - goLink(esplorer_latest); - }//GEN-LAST:event_MenuItemLinksESPlorerLatestActionPerformed - - private void MenuItemLinksESPlorerSourceActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemLinksESPlorerSourceActionPerformed - goLink(esplorer_source); - }//GEN-LAST:event_MenuItemLinksESPlorerSourceActionPerformed - - private void MenuItemLinksESPlorerHomeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemLinksESPlorerHomeActionPerformed - goLink(homepage_uri); - }//GEN-LAST:event_MenuItemLinksESPlorerHomeActionPerformed - - private void MenuItemLinksDonateActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemLinksDonateActionPerformed - goLink(donate_uri); - }//GEN-LAST:event_MenuItemLinksDonateActionPerformed - - private void MenuItemLinksBuyOtherActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemLinksBuyOtherActionPerformed - goLink(buy_other); - }//GEN-LAST:event_MenuItemLinksBuyOtherActionPerformed - - private void formWindowGainedFocus(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowGainedFocus - - }//GEN-LAST:event_formWindowGainedFocus - - private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing - AppClose(); - }//GEN-LAST:event_formWindowClosing - private void AppClose() { - Rectangle r = this.getBounds(); - prefs.putInt(WIN_X, r.x); - prefs.putInt(WIN_Y, r.y); - prefs.putInt(WIN_H, r.height); - prefs.putInt(WIN_W, r.width); - //log("w="+Integer.toString(prefs.getInt(WIN_W, 0))); - while (FilesTabbedPane.getTabCount() > 0) { - if (CloseFile() == JOptionPane.CANCEL_OPTION) { - return; - } - if ((FilesTabbedPane.getTabCount() == 1) && isFileNew()) { - break; - } - } - this.setVisible(false); - System.exit(0); - } - private void formWindowClosed(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosed - // TODO add your handling code here: - }//GEN-LAST:event_formWindowClosed - - private void EOLItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_EOLItemStateChanged - Terminal.setEOLMarkersVisible(EOL.isSelected()); - }//GEN-LAST:event_EOLItemStateChanged - - private void MenuItemViewLF1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemViewLF1ActionPerformed - String lclass = LAFclass.get(Integer.parseInt(evt.getActionCommand())); - prefs.put("LAF", lclass); - log("Set New LookAndFeel to:" + lclass); - int isExit = Dialog("New LookAndFeel skin will be appled after program restart. Exit now?", JOptionPane.YES_NO_OPTION); - if (isExit == JOptionPane.YES_OPTION) { - AppClose(); - } - }//GEN-LAST:event_MenuItemViewLF1ActionPerformed - - private void MenuItemViewTerminalOnlyItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_MenuItemViewTerminalOnlyItemStateChanged - if (MenuItemViewTerminalOnly.isSelected()) { - MenuItemViewEditorOnly.setSelected(false); - TerminalOnlyCheckBox.setSelected(true); - EditorOnlyCheckBox.setSelected(false); - HorizontSplit.setDividerLocation(0); - } else { - TerminalOnlyCheckBox.setSelected(false); - HorizontSplit.setDividerLocation(550); - } - }//GEN-LAST:event_MenuItemViewTerminalOnlyItemStateChanged - - private void MenuItemViewTerminalOnlyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemViewTerminalOnlyActionPerformed - // TODO add your handling code here: - }//GEN-LAST:event_MenuItemViewTerminalOnlyActionPerformed - - private void TerminalOnlyCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_TerminalOnlyCheckBoxItemStateChanged - MenuItemViewTerminalOnly.setSelected(TerminalOnlyCheckBox.isSelected()); - }//GEN-LAST:event_TerminalOnlyCheckBoxItemStateChanged - - private void ShowFileManagerItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_ShowFileManagerItemStateChanged - MenuItemViewFileManager.setSelected(ShowFileManager.isSelected()); - }//GEN-LAST:event_ShowFileManagerItemStateChanged - - private void AboutWindowLostFocus(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_AboutWindowLostFocus - About.dispose(); - }//GEN-LAST:event_AboutWindowLostFocus - - private void LeftTabStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_LeftTabStateChanged - if (LeftTab.getSelectedIndex() == 0) { // NodeMCU & Python - if (FirmwareType == FIRMWARE_MPYTHON || OptionMicroPython.isSelected()) { - CommandsSetMicroPython(); - } else { - CommandsSetNodeMCU(); - } - } else if (LeftTab.getSelectedIndex() == 1) { // AT - FirmwareType = FIRMWARE_AT; - CommandsSetAT(); - } else if (LeftTab.getSelectedIndex() == 2) { // RN2483 - if (pOpen && nSpeed != 57600) { - TerminalAdd("\r\nWarning! RN2483 default baud rate is 57600.\r\n"); - } - } - }//GEN-LAST:event_LeftTabStateChanged - - private void cmdSetCWDHCPActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdSetCWDHCPActionPerformed - btnSend("AT+CWDHCP=" + Integer.toString(DHCPmode.getSelectedIndex()) + "," + Integer.toString(DHCP.getSelectedIndex())); - }//GEN-LAST:event_cmdSetCWDHCPActionPerformed - - private void cmdSetCWMODE3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdSetCWMODE3ActionPerformed - btnSend("AT+CWMODE=3"); - }//GEN-LAST:event_cmdSetCWMODE3ActionPerformed - - private void cmdSetCWLAPActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdSetCWLAPActionPerformed - btnSend("AT+CWLAP"); - }//GEN-LAST:event_cmdSetCWLAPActionPerformed - - private void cmdSetCWMODE2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdSetCWMODE2ActionPerformed - btnSend("AT+CWMODE=2"); - }//GEN-LAST:event_cmdSetCWMODE2ActionPerformed - - private void cmdGetCWMODEActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdGetCWMODEActionPerformed - btnSend("AT+CWMODE?"); - }//GEN-LAST:event_cmdGetCWMODEActionPerformed - - private void cmdSetCWMODE1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdSetCWMODE1ActionPerformed - btnSend("AT+CWMODE=1"); - }//GEN-LAST:event_cmdSetCWMODE1ActionPerformed - - private void cmdGetHelpCWMODEActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdGetHelpCWMODEActionPerformed - btnSend("AT+CWMODE=?"); - }//GEN-LAST:event_cmdGetHelpCWMODEActionPerformed - - private void cmdGetCIFSRActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdGetCIFSRActionPerformed - btnSend("AT+CIFSR"); - }//GEN-LAST:event_cmdGetCIFSRActionPerformed - - private void cmdSetCIPMUX0ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdSetCIPMUX0ActionPerformed - btnSend("AT+CIPMUX=0"); - }//GEN-LAST:event_cmdSetCIPMUX0ActionPerformed - - private void cmdSetCIPMUX1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdSetCIPMUX1ActionPerformed - btnSend("AT+CIPMUX=1"); - }//GEN-LAST:event_cmdSetCIPMUX1ActionPerformed - - private void cmdGetCIPMUXActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdGetCIPMUXActionPerformed - btnSend("AT+CIPMUX?"); - }//GEN-LAST:event_cmdGetCIPMUXActionPerformed - - private void cmdGetCIPSTATUSActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdGetCIPSTATUSActionPerformed - btnSend("AT+CIPSTATUS"); - }//GEN-LAST:event_cmdGetCIPSTATUSActionPerformed - - private void AT_ServerComponentShown(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_AT_ServerComponentShown - WiFi_common.setVisible(false); - TCP_common.setVisible(true); - }//GEN-LAST:event_AT_ServerComponentShown - - private void AT_ServerFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_AT_ServerFocusGained - - }//GEN-LAST:event_AT_ServerFocusGained - - private void cmdSetCIPSTOActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdSetCIPSTOActionPerformed - btnSend("AT+CIPSTO=" + ServerTimeout.getText().trim()); - }//GEN-LAST:event_cmdSetCIPSTOActionPerformed - - private void cmdGetCIPSTOActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdGetCIPSTOActionPerformed - btnSend("AT+CIPSTO?"); - }//GEN-LAST:event_cmdGetCIPSTOActionPerformed - - private void ServerModeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ServerModeActionPerformed - if (ServerMode.getSelectedIndex() == 1) { // create - ServerPort.setEnabled(true); - } else { - ServerPort.setEnabled(false); - } - }//GEN-LAST:event_ServerModeActionPerformed - - private void cmdSetCIPSERVERActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdSetCIPSERVERActionPerformed - String cmd = "AT+CIPSERVER="; - cmd += Integer.toString(ServerMode.getSelectedIndex()).trim(); - if (ServerMode.getSelectedIndex() == 1) { - cmd += "," + ServerPort.getText().trim(); - } - btnSend(cmd); - }//GEN-LAST:event_cmdSetCIPSERVERActionPerformed - - private void cmdSetCIPMODE1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdSetCIPMODE1ActionPerformed - btnSend("AT+CIPMODE=1"); - }//GEN-LAST:event_cmdSetCIPMODE1ActionPerformed - - private void cmdSetCIPMODE0ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdSetCIPMODE0ActionPerformed - btnSend("AT+CIPMODE=0"); - }//GEN-LAST:event_cmdSetCIPMODE0ActionPerformed - - private void cmdGetCIPMODEActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdGetCIPMODEActionPerformed - btnSend("AT+CIPMODE?"); - }//GEN-LAST:event_cmdGetCIPMODEActionPerformed - - private void AT_ClientComponentShown(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_AT_ClientComponentShown - WiFi_common.setVisible(false); - TCP_common.setVisible(true); - }//GEN-LAST:event_AT_ClientComponentShown - - private void AT_ClientFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_AT_ClientFocusGained - - }//GEN-LAST:event_AT_ClientFocusGained - - private void cmdSetCIPCLOSEActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdSetCIPCLOSEActionPerformed - String cmd = "AT+CIPCLOSE"; - if (multi.isSelected()) { - cmd += "=" + conn_id.getSelectedItem().toString(); - } - btnSend(cmd); - }//GEN-LAST:event_cmdSetCIPCLOSEActionPerformed - - private void cmdCIPSENDinteractiveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdCIPSENDinteractiveActionPerformed - btnSend("AT+CIPSEND"); - }//GEN-LAST:event_cmdCIPSENDinteractiveActionPerformed - - private void cmdCIPSENDActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdCIPSENDActionPerformed - String cmd = "AT+CIPSEND="; - String len = Integer.toString(data.getText().length()); - if (multi.isSelected()) { - cmd += conn_id.getSelectedItem().toString() + ","; - } - cmd += len; - btnSend(cmd); - btnSend(data.getText()); - }//GEN-LAST:event_cmdCIPSENDActionPerformed - - private void cmdSetCIPSTARTActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdSetCIPSTARTActionPerformed - String cmd = "AT+CIPSTART="; - if (multi.isSelected()) { - cmd += conn_id.getSelectedItem().toString() + ","; - btnSend("AT+CIPMUX=1"); - } else { - btnSend("AT+CIPMUX=0"); - } - if (protocol.getSelectedIndex() == 0) { // TCP - cmd += "\"TCP\",\""; - } else { - cmd += "\"UDP\",\""; - } - cmd += remote_address.getText().trim() + "\"," + remote_port.getText().trim(); - if ((udp_local_port.getText().trim() != "") && (protocol.getSelectedIndex() == 1)) { - cmd += "," + udp_local_port.getText().trim() + "," + udp_mode.getText().trim(); - } - btnSend(cmd); - }//GEN-LAST:event_cmdSetCIPSTARTActionPerformed - - private void protocolItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_protocolItemStateChanged - if (protocol.getSelectedIndex() == 0) { // TCP - udp_local_port.setEnabled(false); - udp_mode.setEnabled(false); - } else { - udp_local_port.setEnabled(true); - udp_mode.setEnabled(true); - } - - }//GEN-LAST:event_protocolItemStateChanged - - private void UDPPropertyChange(java.beans.PropertyChangeEvent evt) {//GEN-FIRST:event_UDPPropertyChange - - }//GEN-LAST:event_UDPPropertyChange - - private void cmdGetCIPSTARTActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdGetCIPSTARTActionPerformed - btnSend("AT+CIPSTART=?"); - }//GEN-LAST:event_cmdGetCIPSTARTActionPerformed - - private void multiActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_multiActionPerformed - // TODO add your handling code here: - }//GEN-LAST:event_multiActionPerformed - - private void multiItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_multiItemStateChanged - - }//GEN-LAST:event_multiItemStateChanged - - private void singleItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_singleItemStateChanged - - }//GEN-LAST:event_singleItemStateChanged - - private void AT_SoftAPComponentShown(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_AT_SoftAPComponentShown - WiFi_common.setVisible(true); - TCP_common.setVisible(false); - }//GEN-LAST:event_AT_SoftAPComponentShown - - private void AT_SoftAPFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_AT_SoftAPFocusGained - - }//GEN-LAST:event_AT_SoftAPFocusGained - - private void cmdSetCIPAPActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdSetCIPAPActionPerformed - btnSend("AT+CIPAP=\"" + softAPIP.getText() + "\""); - }//GEN-LAST:event_cmdSetCIPAPActionPerformed - - private void cmdSetCIPAPMACActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdSetCIPAPMACActionPerformed - btnSend("AT+CIPAPMAC=\"" + MAC.getText() + "\""); - }//GEN-LAST:event_cmdSetCIPAPMACActionPerformed - - private void cmdGetCIPAPActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdGetCIPAPActionPerformed - btnSend("AT+CIPAP?"); - }//GEN-LAST:event_cmdGetCIPAPActionPerformed - - private void PASSsoftAPActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_PASSsoftAPActionPerformed - // TODO add your handling code here: - }//GEN-LAST:event_PASSsoftAPActionPerformed - - private void PASSsoftAPFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_PASSsoftAPFocusGained - // TODO add your handling code here: - }//GEN-LAST:event_PASSsoftAPFocusGained - - private void SSIDsoftAPActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_SSIDsoftAPActionPerformed - // TODO add your handling code here: - }//GEN-LAST:event_SSIDsoftAPActionPerformed - - private void SSIDsoftAPFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_SSIDsoftAPFocusGained - // TODO add your handling code here: - }//GEN-LAST:event_SSIDsoftAPFocusGained - - private void cmdGetCWLIFActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdGetCWLIFActionPerformed - btnSend("AT+CWLIF"); - }//GEN-LAST:event_cmdGetCWLIFActionPerformed - - private void cmdGetCIPAPMACActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdGetCIPAPMACActionPerformed - btnSend("AT+CIPAPMAC?"); - }//GEN-LAST:event_cmdGetCIPAPMACActionPerformed - - private void cmdGetCWSAPActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdGetCWSAPActionPerformed - btnSend("AT+CWSAP?"); - }//GEN-LAST:event_cmdGetCWSAPActionPerformed - - private void cmdSetCWSAPActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdSetCWSAPActionPerformed - int ch = channel.getSelectedIndex() + 1; - btnSend("AT+CWSAP=\"" + SSIDsoftAP.getText() + "\",\"" + PASSsoftAP.getText() + "\"," + Integer.toString(ch) + "," + encryption.getSelectedIndex()); - }//GEN-LAST:event_cmdSetCWSAPActionPerformed - - private void AT_StationComponentShown(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_AT_StationComponentShown - WiFi_common.setVisible(true); - TCP_common.setVisible(false); - }//GEN-LAST:event_AT_StationComponentShown - - private void AT_StationFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_AT_StationFocusGained - - }//GEN-LAST:event_AT_StationFocusGained - - private void cmdSetCIPSTAActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdSetCIPSTAActionPerformed - btnSend("AT+CIPSTA=\"" + StationIP.getText() + "\""); - }//GEN-LAST:event_cmdSetCIPSTAActionPerformed - - private void cmdGetCIPSTAActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdGetCIPSTAActionPerformed - btnSend("AT+CIPSTA?"); - }//GEN-LAST:event_cmdGetCIPSTAActionPerformed - - private void cmdSetCIPSTAMACActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdSetCIPSTAMACActionPerformed - btnSend("AT+CIPSTAMAC=\"" + MAC.getText() + "\""); - }//GEN-LAST:event_cmdSetCIPSTAMACActionPerformed - - private void cmdGetCIPSTAMACActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdGetCIPSTAMACActionPerformed - btnSend("AT+CIPSTAMAC?"); - }//GEN-LAST:event_cmdGetCIPSTAMACActionPerformed - - private void cmdSetCWQAPActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdSetCWQAPActionPerformed - btnSend("AT+CWQAP"); - }//GEN-LAST:event_cmdSetCWQAPActionPerformed - - private void PASSActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_PASSActionPerformed - // TODO add your handling code here: - }//GEN-LAST:event_PASSActionPerformed - - private void PASSFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_PASSFocusGained - if (PASS.getText().trim() == "password") { - PASS.setText(""); - } - }//GEN-LAST:event_PASSFocusGained - - private void SSIDActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_SSIDActionPerformed - // TODO add your handling code here: - }//GEN-LAST:event_SSIDActionPerformed - - private void SSIDFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_SSIDFocusGained - if (SSID.getText().trim() == "SSID") { - SSID.setText(""); - } - }//GEN-LAST:event_SSIDFocusGained - - private void cmdSetCWJAPActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdSetCWJAPActionPerformed - btnSend("AT+CWJAP=\"" + SSID.getText() + "\",\"" + PASS.getText() + "\""); - }//GEN-LAST:event_cmdSetCWJAPActionPerformed - - private void cmdGetCWJAPActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdGetCWJAPActionPerformed - btnSend("AT+CWJAP?"); - }//GEN-LAST:event_cmdGetCWJAPActionPerformed - - private void UPDATEActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_UPDATEActionPerformed - btnSend("AT+CIUPDATE"); - }//GEN-LAST:event_UPDATEActionPerformed - - private void ATE1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ATE1ActionPerformed - btnSend("ATE1"); - }//GEN-LAST:event_ATE1ActionPerformed - - private void ATE0ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ATE0ActionPerformed - btnSend("ATE0"); - }//GEN-LAST:event_ATE0ActionPerformed - - private void GSLPActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_GSLPActionPerformed - btnSend("AT+GSLP=5000"); - }//GEN-LAST:event_GSLPActionPerformed - - private void AT_GMRActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_AT_GMRActionPerformed - btnSend("AT+GMR"); - }//GEN-LAST:event_AT_GMRActionPerformed - - private void AT_RestartActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_AT_RestartActionPerformed - btnSend("AT+RST"); - }//GEN-LAST:event_AT_RestartActionPerformed - - private void cmdATActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdATActionPerformed - btnSend("AT"); - }//GEN-LAST:event_cmdATActionPerformed - - private void NodeMCUComponentShown(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_NodeMCUComponentShown - UpdateEditorButtons(); - UpdateButtons(); - }//GEN-LAST:event_NodeMCUComponentShown - - private void NodeMCUFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_NodeMCUFocusGained - - }//GEN-LAST:event_NodeMCUFocusGained - - private void TextTabStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_TextTabStateChanged - if (TextTab.getSelectedIndex() == 2) { // snippets - } else if (TextTab.getSelectedIndex() == 3) { // Settings - } else if (TextTab.getSelectedIndex() == 1) { // Commands - } else if (TextTab.getSelectedIndex() == 0) { // Scripts - } - }//GEN-LAST:event_TextTabStateChanged - - private void AutodetectFirmwareItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_AutodetectFirmwareItemStateChanged - prefs.putBoolean(AUTODETECT, AutodetectFirmware.isSelected()); - }//GEN-LAST:event_AutodetectFirmwareItemStateChanged - - private void UseCustomPortNameActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_UseCustomPortNameActionPerformed - Port.setEnabled(!UseCustomPortName.isSelected()); - Port.setVisible(!UseCustomPortName.isSelected()); - CustomPortName.setEnabled(UseCustomPortName.isSelected()); - prefs.putBoolean(USE_CUSTOM_PORT, UseCustomPortName.isSelected()); - }//GEN-LAST:event_UseCustomPortNameActionPerformed - - private void CustomPortNameFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_CustomPortNameFocusLost - prefs.put(CUSTOM_PORT_NAME, CustomPortName.getText()); - }//GEN-LAST:event_CustomPortNameFocusLost - - private void LogMaxSizeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_LogMaxSizeActionPerformed - - }//GEN-LAST:event_LogMaxSizeActionPerformed - - private void LogMaxSizeFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_LogMaxSizeFocusLost - try { - LogMax = Integer.parseInt(LogMaxSize.getText()) * 1024; - } catch (Exception e) { - LogMax = 1024 * 10; - } - if (LogMax < 2048) { - LogMax = 2048; - } else if (LogMax > 32 * 1024) { - LogMax = 32 * 1024; - } - prefs.putInt(LOG_MAX_SIZE, LogMax); - log("Log max size set to " + Integer.toString(LogMax / 1024) + " KB", DEBUG); - }//GEN-LAST:event_LogMaxSizeFocusLost - - private void TerminalMaxSizeFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_TerminalMaxSizeFocusLost - try { - TerminalMax = Integer.parseInt(TerminalMaxSize.getText()) * 1024; - } catch (Exception e) { - TerminalMax = 1024 * 100; - } - if (TerminalMax < 2048) { - TerminalMax = 2048; - } else if (TerminalMax > 1024 * 1024) { - TerminalMax = 1024 * 1024; - } - prefs.putInt(TERMINAL_MAX_SIZE, TerminalMax); - log("Terminal max size set to " + Integer.toString(TerminalMax / 1024) + " KB", DEBUG); - }//GEN-LAST:event_TerminalMaxSizeFocusLost - - private void TurboModeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_TurboModeActionPerformed - if (TurboMode.isSelected()) { - DumbMode.setEnabled(false); - DumbMode.setSelected(false); - } else { - DumbMode.setEnabled(true); - } - prefs.putBoolean(TURBO_MODE, TurboMode.isSelected()); - PrefsFlush(); - }//GEN-LAST:event_TurboModeActionPerformed - - private void TurboModeItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_TurboModeItemStateChanged - - }//GEN-LAST:event_TurboModeItemStateChanged - - private void LineDelayStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_LineDelayStateChanged - LineDelayLabel.setText("Line delay for \"Dumb Mode\" = " + Integer.toString(LineDelay.getValue()) + " ms"); - prefs.putInt(LINE_DELAY, LineDelay.getValue()); - PrefsFlush(); - }//GEN-LAST:event_LineDelayStateChanged - - private void DumbModeItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_DumbModeItemStateChanged - if (DumbMode.isSelected()) { - DelayLabel.setEnabled(false); - Delay.setEnabled(false); - AnswerDelayLabel.setEnabled(false); - AnswerDelay.setEnabled(false); - LineDelayLabel.setEnabled(true); - LineDelay.setEnabled(true); - TurboMode.setSelected(false); - TurboMode.setEnabled(false); - } else { - DelayLabel.setEnabled(true); - Delay.setEnabled(true); - AnswerDelayLabel.setEnabled(true); - AnswerDelay.setEnabled(true); - LineDelayLabel.setEnabled(false); - LineDelay.setEnabled(false); - TurboMode.setEnabled(true); - } - prefs.putBoolean(DUMB_MODE, DumbMode.isSelected()); - PrefsFlush(); - }//GEN-LAST:event_DumbModeItemStateChanged - - private void AnswerDelayStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_AnswerDelayStateChanged - AnswerDelayLabel.setText("Answer timout = " + Integer.toString(AnswerDelay.getValue()) + " s"); - prefs.putInt(TIMEOUT, AnswerDelay.getValue()); - PrefsFlush(); - }//GEN-LAST:event_AnswerDelayStateChanged - - private void DelayStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_DelayStateChanged - DelayLabel.setText("Delay after answer = " + Integer.toString(Delay.getValue()) + " ms"); - prefs.putInt(DELAY, Delay.getValue()); - PrefsFlush(); - }//GEN-LAST:event_DelayStateChanged - - private void UseExternalEditorItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_UseExternalEditorItemStateChanged - prefs.putBoolean(USE_EXT_EDITOR, UseExternalEditor.isSelected()); - UpdateButtons(); - }//GEN-LAST:event_UseExternalEditorItemStateChanged - - private void EditorThemeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_EditorThemeActionPerformed - int n = EditorTheme.getSelectedIndex(); - prefs.putInt(COLOR_THEME, n); - PrefsFlush(); - SetTheme(n, true); // for all - }//GEN-LAST:event_EditorThemeActionPerformed - - private void FileAutoRunItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_FileAutoRunItemStateChanged - prefs.putBoolean(FILE_AUTO_RUN, FileAutoRun.isSelected()); - PrefsFlush(); - }//GEN-LAST:event_FileAutoRunItemStateChanged - - private void FileAutoSaveESPItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_FileAutoSaveESPItemStateChanged - prefs.putBoolean(FILE_AUTO_SAVE_ESP, FileAutoSaveESP.isSelected()); - PrefsFlush(); - }//GEN-LAST:event_FileAutoSaveESPItemStateChanged - - private void FileAutoSaveDiskItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_FileAutoSaveDiskItemStateChanged - prefs.putBoolean(FILE_AUTO_SAVE_DISK, FileAutoSaveDisk.isSelected()); - PrefsFlush(); - }//GEN-LAST:event_FileAutoSaveDiskItemStateChanged - - private void OptionMicroPythonItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_OptionMicroPythonItemStateChanged - if (OptionMicroPython.isSelected()) { - SetFirmwareType(FIRMWARE_MPYTHON); - } - }//GEN-LAST:event_OptionMicroPythonItemStateChanged - - private void OptionNodeMCUItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_OptionNodeMCUItemStateChanged - if (OptionNodeMCU.isSelected()) { - SetFirmwareType(FIRMWARE_NODEMCU); - } - }//GEN-LAST:event_OptionNodeMCUItemStateChanged - - private void CondensedItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_CondensedItemStateChanged - prefs.putBoolean(CONDENSED, Condensed.isSelected()); - }//GEN-LAST:event_CondensedItemStateChanged - - private void SnippetCancelEditActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_SnippetCancelEditActionPerformed - if (SnippetText.canUndo() || SnippetText.canRedo()) { - this.setAlwaysOnTop(false); - int returnVal = JOptionPane.showConfirmDialog(null, "Discard any changes and CANCEL edit this snippet without saving?", "Attention", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE); - this.setAlwaysOnTop(AlwaysOnTop.isSelected()); - if (returnVal != JOptionPane.YES_OPTION) { - return; - } - } - SnippetText.setEnabled(false); - SnippetName.setEnabled(false); - SnippetSave.setEnabled(false); - SnippetRun.setEnabled(false); - SnippetCancelEdit.setEnabled(false); - SnippetText.setEnabled(false); - SnippetScrollPane.setEnabled(false); - SnippetText.setEditable(false); - SnippetText.setText(""); - SnippetText.discardAllEdits(); - SnippetName.setText(""); - //SnippetText.setBackground(SnippetTopPane.getBackground()); - }//GEN-LAST:event_SnippetCancelEditActionPerformed - - private void SnippetRunActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_SnippetRunActionPerformed - SendToESP(SnippetText.getText()); - }//GEN-LAST:event_SnippetRunActionPerformed - - private void SnippetSaveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_SnippetSaveActionPerformed - SnippetName.setEnabled(false); - SnippetSave.setEnabled(false); - SnippetRun.setEnabled(true); - SnippetCancelEdit.setEnabled(true); - SnippetText.setEnabled(false); - SnippetScrollPane.setEnabled(false); - SnippetText.setEditable(false); - //SnippetText.setBackground(SnippetTopPane.getBackground()); - SnippetText.setEnabled(false); - if (iSnippets == 0) { - ButtonSnippet0.setText(SnippetName.getText()); - } else if (iSnippets == 1) { - ButtonSnippet1.setText(SnippetName.getText()); - } else if (iSnippets == 2) { - ButtonSnippet2.setText(SnippetName.getText()); - } else if (iSnippets == 3) { - ButtonSnippet3.setText(SnippetName.getText()); - } else if (iSnippets == 4) { - ButtonSnippet4.setText(SnippetName.getText()); - } else if (iSnippets == 5) { - ButtonSnippet5.setText(SnippetName.getText()); - } else if (iSnippets == 6) { - ButtonSnippet6.setText(SnippetName.getText()); - } else if (iSnippets == 7) { - ButtonSnippet7.setText(SnippetName.getText()); - } else if (iSnippets == 8) { - ButtonSnippet8.setText(SnippetName.getText()); - } else if (iSnippets == 9) { - ButtonSnippet9.setText(SnippetName.getText()); - } else if (iSnippets == 10) { - ButtonSnippet10.setText(SnippetName.getText()); - } else if (iSnippets == 11) { - ButtonSnippet11.setText(SnippetName.getText()); - } else if (iSnippets == 12) { - ButtonSnippet12.setText(SnippetName.getText()); - } else if (iSnippets == 13) { - ButtonSnippet13.setText(SnippetName.getText()); - } else if (iSnippets == 14) { - ButtonSnippet14.setText(SnippetName.getText()); - } else { - ButtonSnippet15.setText(SnippetName.getText()); - iSnippets = 15; - } - SetSnippetEditButtonsTooltip(); - Snippets[iSnippets] = SnippetText.getText(); - String suffix; - if (OptionNodeMCU.isSelected()) { - suffix = ""; - } else { - suffix = "_mpy"; - } - prefs.put("Snippet" + Integer.toString(iSnippets) + suffix + "name", SnippetName.getText()); - prefs.put("Snippet" + Integer.toString(iSnippets) + suffix, Snippets[iSnippets]); - if (PrefsFlush()) { - log("Snippet" + Integer.toString(iSnippets) + " saved: Success."); - } - SnippetText.discardAllEdits(); - }//GEN-LAST:event_SnippetSaveActionPerformed - - private void SnippetEdit15ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_SnippetEdit15ActionPerformed - SnippetEdit(15); - }//GEN-LAST:event_SnippetEdit15ActionPerformed - - private void SnippetEdit14ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_SnippetEdit14ActionPerformed - SnippetEdit(14); - }//GEN-LAST:event_SnippetEdit14ActionPerformed - - private void SnippetEdit13ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_SnippetEdit13ActionPerformed - SnippetEdit(13); - }//GEN-LAST:event_SnippetEdit13ActionPerformed - - private void SnippetEdit12ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_SnippetEdit12ActionPerformed - SnippetEdit(12); - }//GEN-LAST:event_SnippetEdit12ActionPerformed - - private void SnippetEdit11ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_SnippetEdit11ActionPerformed - SnippetEdit(11); - }//GEN-LAST:event_SnippetEdit11ActionPerformed - - private void SnippetEdit10ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_SnippetEdit10ActionPerformed - SnippetEdit(10); - }//GEN-LAST:event_SnippetEdit10ActionPerformed - - private void SnippetEdit9ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_SnippetEdit9ActionPerformed - SnippetEdit(9); - }//GEN-LAST:event_SnippetEdit9ActionPerformed - - private void SnippetEdit8ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_SnippetEdit8ActionPerformed - SnippetEdit(8); - }//GEN-LAST:event_SnippetEdit8ActionPerformed - - private void SnippetEdit7ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_SnippetEdit7ActionPerformed - SnippetEdit(7); - }//GEN-LAST:event_SnippetEdit7ActionPerformed - - private void SnippetEdit6ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_SnippetEdit6ActionPerformed - SnippetEdit(6); - }//GEN-LAST:event_SnippetEdit6ActionPerformed - - private void SnippetEdit5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_SnippetEdit5ActionPerformed - SnippetEdit(5); - }//GEN-LAST:event_SnippetEdit5ActionPerformed - - private void SnippetEdit4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_SnippetEdit4ActionPerformed - SnippetEdit(4); - }//GEN-LAST:event_SnippetEdit4ActionPerformed - - private void SnippetEdit3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_SnippetEdit3ActionPerformed - SnippetEdit(3); - }//GEN-LAST:event_SnippetEdit3ActionPerformed - - private void SnippetEdit2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_SnippetEdit2ActionPerformed - SnippetEdit(2); - }//GEN-LAST:event_SnippetEdit2ActionPerformed - - private void SnippetEdit1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_SnippetEdit1ActionPerformed - SnippetEdit(1); - }//GEN-LAST:event_SnippetEdit1ActionPerformed - - private void SnippetEdit0ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_SnippetEdit0ActionPerformed - SnippetEdit(0); - }//GEN-LAST:event_SnippetEdit0ActionPerformed - - private void cmdTimerStopActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdTimerStopActionPerformed - String cmd = "tmr.stop(" + Integer.toString(TimerNumber.getSelectedIndex()) + ")"; - btnSend(cmd); - }//GEN-LAST:event_cmdTimerStopActionPerformed - - private void cmdListFilesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdListFilesActionPerformed - NodeListFiles(); - }//GEN-LAST:event_cmdListFilesActionPerformed - - private void cmdNodeSleepActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdNodeSleepActionPerformed - int returnVal = Dialog("This function can only be used in the condition that esp8266 PIN32(RST) and PIN8(XPD_DCDC) are connected together.", JOptionPane.YES_NO_OPTION); - if (returnVal == JOptionPane.YES_OPTION) { - btnSend("node.dsleep(10000)"); - } - }//GEN-LAST:event_cmdNodeSleepActionPerformed - - private void cmdNodeHeapActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdNodeHeapActionPerformed - btnSend("print(node.heap())"); - }//GEN-LAST:event_cmdNodeHeapActionPerformed - - private void cmdNodeChipIDActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdNodeChipIDActionPerformed - btnSend("print(node.chipid())"); - }//GEN-LAST:event_cmdNodeChipIDActionPerformed - - private void cmdNodeRestartActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdNodeRestartActionPerformed - if (!OptionNodeMCU.isSelected()) { - return; - } - if (portJustOpen) { - log("ERROR: Communication with MCU not established."); - return; - } - TerminalAdd("Soft restart by user command\r\n"); - btnSend("node.restart()"); - if (pOpen) { // reconnect - int speed = prefs.getInt(SERIAL_BAUD, 3); - final int old_speed = Speed.getSelectedIndex(); - //if (speed == old_speed) { // reconnect not needed - //return; - //} - try { - nSpeed = Integer.parseInt(Speed.getItemAt(speed).toString()); - //Integer.parseInt((String)Speed.getSelectedItem()); - } catch (Exception e) { - return; - } - log("Try to reconnect with saved baud " + Integer.toString(nSpeed) + "..."); - try { - if (SetSerialPortParams()) { - log("Reconnect: Success. Now we waiting for ESP reboot..."); - // Now, we can ready to reconnect on old_speed - taskSleep = new ActionListener() { - public void actionPerformed(ActionEvent evt) { - if (nSpeed == 9600) { - CheckComm(); - } else { - Speed.setSelectedIndex(old_speed); - } - } - }; - sleep = new Timer(2000, taskSleep); - sleep.setRepeats(false); - sleep.setInitialDelay(2000); - sleep.start(); - } - } catch (Exception e) { - log(e.toString()); - } - } - }//GEN-LAST:event_cmdNodeRestartActionPerformed - - private void FilesUploadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_FilesUploadActionPerformed - //log(evt.paramString()); - UploadFiles(); - }//GEN-LAST:event_FilesUploadActionPerformed - - private void FileDoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_FileDoActionPerformed - String cmd = "dofile('" + iFile.get(iTab).getName() + "')"; - btnSend(cmd); - }//GEN-LAST:event_FileDoActionPerformed - - private void FileSendESPActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_FileSendESPActionPerformed - if (FileSendESP.isSelected()) { - if (TextEditor1.get(iTab).getText().length() == 0) { - JOptionPane.showMessageDialog(null, "File empty."); - FileSendESP.setSelected(false); - return; - } - SendToESP(TextEditor1.get(iTab).getText()); - } else { - StopSend(); - } - }//GEN-LAST:event_FileSendESPActionPerformed - - private void FileSaveESPActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_FileSaveESPActionPerformed - if (!FileSaveESP.isSelected()) { - StopSend(); - return; - } - if (TextEditor1.get(iTab).getText().length() == 0) { - FileSaveESP.setSelected(false); - JOptionPane.showMessageDialog(null, "File empty."); - return; - } - String fName = iFile.get(iTab).getName(); - if (fName.length() == 0) { - FileSaveESP.setSelected(false); - String msg = " Can't save file to ESP without name."; - log("FileSaveESP: FAIL. " + msg); - JOptionPane.showMessageDialog(null, msg); - return; - } - if (FileAutoSaveDisk.isSelected()) { - if (!SaveFile()) { // first save file - FileSaveESP.setSelected(false); - return; - } - } - if (!pOpen || portJustOpen) { - log("FileSaveESP: Serial port not open. Operation canceled."); - FileSaveESP.setSelected(false); - return; - } - if (OptionMicroPython.isSelected()) { - pySaveFileESP(fName); - } else { - nodeSaveFileESP(fName); - } - }//GEN-LAST:event_FileSaveESPActionPerformed - - private void FileCompile1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_FileCompile1ActionPerformed - // TODO add your handling code here: - }//GEN-LAST:event_FileCompile1ActionPerformed - - private void FileCompileDoLC3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_FileCompileDoLC3ActionPerformed - // TODO add your handling code here: - }//GEN-LAST:event_FileCompileDoLC3ActionPerformed - - private void FileCompileDoLC2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_FileCompileDoLC2ActionPerformed - // TODO add your handling code here: - }//GEN-LAST:event_FileCompileDoLC2ActionPerformed - - private void FileCompileDoLCActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_FileCompileDoLCActionPerformed - String fn = iFile.get(iTab).getName(); - String[] part = fn.split("."); - String cmd = "node.compile('" + fn + "')\r\ndofile(\"" + part[0] + ".lc" + "\")"; - btnSend(cmd); - }//GEN-LAST:event_FileCompileDoLCActionPerformed - - private void FileUploadBinActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_FileUploadBinActionPerformed - // TODO add your handling code here: - }//GEN-LAST:event_FileUploadBinActionPerformed - - private void FileSaveCompileDoLCActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_FileSaveCompileDoLCActionPerformed - // TODO add your handling code here: - }//GEN-LAST:event_FileSaveCompileDoLCActionPerformed - - private void FileCompileActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_FileCompileActionPerformed - String cmd = "node.compile('" + iFile.get(iTab).getName() + "')"; - btnSend(cmd); - try { - Thread.sleep(500L); - } catch (Exception e) { - } - LocalEcho = false; - FileListReload.doClick(); - }//GEN-LAST:event_FileCompileActionPerformed - - private void FileDo1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_FileDo1ActionPerformed - // TODO add your handling code here: - }//GEN-LAST:event_FileDo1ActionPerformed - - private void FilesTabbedPaneStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_FilesTabbedPaneStateChanged - FileLabelUpdate(); - // if (iTab > 0) FilesTabbedPane.setTitleAt(iTab, Integer.toString(iTab)); - }//GEN-LAST:event_FilesTabbedPaneStateChanged - - private void FileLayeredPaneFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_FileLayeredPaneFocusGained - - }//GEN-LAST:event_FileLayeredPaneFocusGained - - private void TextEditorKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_TextEditorKeyTyped - if (UseExternalEditor.isSelected()) { - return; - } - if (!isChanged()) { - FileChanged.set(iTab, true); - UpdateEditorButtons(); - } - }//GEN-LAST:event_TextEditorKeyTyped - - private void TextEditorInputMethodTextChanged(java.awt.event.InputMethodEvent evt) {//GEN-FIRST:event_TextEditorInputMethodTextChanged - - }//GEN-LAST:event_TextEditorInputMethodTextChanged - - private void TextEditorCaretPositionChanged(java.awt.event.InputMethodEvent evt) {//GEN-FIRST:event_TextEditorCaretPositionChanged - UpdateEditorButtons(); - }//GEN-LAST:event_TextEditorCaretPositionChanged - - private void TextEditorActiveLineRangeChanged(org.fife.ui.rsyntaxtextarea.ActiveLineRangeEvent evt) {//GEN-FIRST:event_TextEditorActiveLineRangeChanged - UpdateEditorButtons(); - }//GEN-LAST:event_TextEditorActiveLineRangeChanged - - private void TextEditorFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_TextEditorFocusGained - - }//GEN-LAST:event_TextEditorFocusGained - - private void TextEditorCaretUpdate(javax.swing.event.CaretEvent evt) {//GEN-FIRST:event_TextEditorCaretUpdate - UpdateEditorButtons(); - }//GEN-LAST:event_TextEditorCaretUpdate - - private void ButtonSendLineActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ButtonSendLineActionPerformed - MenuItemEditSendLine.doClick(); - }//GEN-LAST:event_ButtonSendLineActionPerformed - - private void ButtonSendSelectedActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ButtonSendSelectedActionPerformed - MenuItemEditSendSelected.doClick(); - }//GEN-LAST:event_ButtonSendSelectedActionPerformed - - private void ButtonPasteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ButtonPasteActionPerformed - MenuItemEditPaste.doClick(); - }//GEN-LAST:event_ButtonPasteActionPerformed - - private void ButtonCopyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ButtonCopyActionPerformed - MenuItemEditCopy.doClick(); - }//GEN-LAST:event_ButtonCopyActionPerformed - - private void ButtonCutActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ButtonCutActionPerformed - MenuItemEditCut.doClick(); - }//GEN-LAST:event_ButtonCutActionPerformed - - private void ButtonRedoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ButtonRedoActionPerformed - MenuItemEditRedo.doClick(); - }//GEN-LAST:event_ButtonRedoActionPerformed - - private void ButtonUndoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ButtonUndoActionPerformed - MenuItemEditUndo.doClick(); - }//GEN-LAST:event_ButtonUndoActionPerformed - - private void ButtonFileCloseActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ButtonFileCloseActionPerformed - MenuItemFileClose.doClick(); - }//GEN-LAST:event_ButtonFileCloseActionPerformed - - private void ButtonFileSaveAllActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ButtonFileSaveAllActionPerformed - MenuItemFileSaveAll.doClick(); - }//GEN-LAST:event_ButtonFileSaveAllActionPerformed - - private void ButtonFileSaveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ButtonFileSaveActionPerformed - MenuItemFileSave.doClick(); - }//GEN-LAST:event_ButtonFileSaveActionPerformed - - private void ButtonFileReloadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ButtonFileReloadActionPerformed - MenuItemFileReload.doClick(); - }//GEN-LAST:event_ButtonFileReloadActionPerformed - - private void ButtonFileOpenActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ButtonFileOpenActionPerformed - MenuItemFileOpen.doClick(); - }//GEN-LAST:event_ButtonFileOpenActionPerformed - - private void ButtonFileNewActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ButtonFileNewActionPerformed - MenuItemFileNew.doClick(); - }//GEN-LAST:event_ButtonFileNewActionPerformed - - private void OptionNodeMCUStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_OptionNodeMCUStateChanged - if (OptionNodeMCU.isSelected()) { - SetFirmwareType(FIRMWARE_NODEMCU); - } - }//GEN-LAST:event_OptionNodeMCUStateChanged - - private void OptionMicroPythonStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_OptionMicroPythonStateChanged - if (OptionMicroPython.isSelected()) { - SetFirmwareType(FIRMWARE_MPYTHON); - } - }//GEN-LAST:event_OptionMicroPythonStateChanged - - private void MicroPythonGPIO0_1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MicroPythonGPIO0_1ActionPerformed - cmdButtonGPIO(0, 1); - }//GEN-LAST:event_MicroPythonGPIO0_1ActionPerformed - - private void MicroPythonGPIO0_0ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MicroPythonGPIO0_0ActionPerformed - cmdButtonGPIO(0, 0); - }//GEN-LAST:event_MicroPythonGPIO0_0ActionPerformed - - private void MicroPythonGPIO2_1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MicroPythonGPIO2_1ActionPerformed - cmdButtonGPIO(2, 1); - }//GEN-LAST:event_MicroPythonGPIO2_1ActionPerformed - - private void MicroPythonGPIO2_0ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MicroPythonGPIO2_0ActionPerformed - cmdButtonGPIO(2, 0); - }//GEN-LAST:event_MicroPythonGPIO2_0ActionPerformed - - private void MicroPythonGPIO4_1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MicroPythonGPIO4_1ActionPerformed - cmdButtonGPIO(4, 1); - }//GEN-LAST:event_MicroPythonGPIO4_1ActionPerformed - - private void MicroPythonGPIO4_0ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MicroPythonGPIO4_0ActionPerformed - cmdButtonGPIO(4, 0); - }//GEN-LAST:event_MicroPythonGPIO4_0ActionPerformed - - private void MicroPythonGPIO5_0ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MicroPythonGPIO5_0ActionPerformed - cmdButtonGPIO(5, 0); - }//GEN-LAST:event_MicroPythonGPIO5_0ActionPerformed - - private void MicroPythonGPIO5_1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MicroPythonGPIO5_1ActionPerformed - cmdButtonGPIO(5, 1); - }//GEN-LAST:event_MicroPythonGPIO5_1ActionPerformed - - private void MicroPythonGPIO9_0ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MicroPythonGPIO9_0ActionPerformed - cmdButtonGPIO(9, 0); - }//GEN-LAST:event_MicroPythonGPIO9_0ActionPerformed - - private void MicroPythonGPIO9_1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MicroPythonGPIO9_1ActionPerformed - cmdButtonGPIO(9, 1); - }//GEN-LAST:event_MicroPythonGPIO9_1ActionPerformed - - private void MicroPythonGPIO10_0ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MicroPythonGPIO10_0ActionPerformed - cmdButtonGPIO(10, 0); - }//GEN-LAST:event_MicroPythonGPIO10_0ActionPerformed - - private void MicroPythonGPIO10_1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MicroPythonGPIO10_1ActionPerformed - cmdButtonGPIO(10, 1); - }//GEN-LAST:event_MicroPythonGPIO10_1ActionPerformed - - private void MicroPythonGPIO12_0ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MicroPythonGPIO12_0ActionPerformed - cmdButtonGPIO(12, 0); - }//GEN-LAST:event_MicroPythonGPIO12_0ActionPerformed - - private void MicroPythonGPIO12_1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MicroPythonGPIO12_1ActionPerformed - cmdButtonGPIO(12, 1); - }//GEN-LAST:event_MicroPythonGPIO12_1ActionPerformed - - private void MicroPythonGPIO13_0ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MicroPythonGPIO13_0ActionPerformed - cmdButtonGPIO(13, 0); - }//GEN-LAST:event_MicroPythonGPIO13_0ActionPerformed - - private void MicroPythonGPIO13_1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MicroPythonGPIO13_1ActionPerformed - cmdButtonGPIO(13, 1); - }//GEN-LAST:event_MicroPythonGPIO13_1ActionPerformed - - private void MicroPythonGPIO14_1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MicroPythonGPIO14_1ActionPerformed - cmdButtonGPIO(14, 1); - }//GEN-LAST:event_MicroPythonGPIO14_1ActionPerformed - - private void MicroPythonGPIO15_1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MicroPythonGPIO15_1ActionPerformed - cmdButtonGPIO(15, 1); - }//GEN-LAST:event_MicroPythonGPIO15_1ActionPerformed - - private void MicroPythonGPIO16_1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MicroPythonGPIO16_1ActionPerformed - cmdButtonGPIO(16, 1); - }//GEN-LAST:event_MicroPythonGPIO16_1ActionPerformed - - private void MicroPythonGPIO14_0ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MicroPythonGPIO14_0ActionPerformed - cmdButtonGPIO(14, 0); - }//GEN-LAST:event_MicroPythonGPIO14_0ActionPerformed - - private void MicroPythonGPIO15_0ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MicroPythonGPIO15_0ActionPerformed - cmdButtonGPIO(15, 0); - }//GEN-LAST:event_MicroPythonGPIO15_0ActionPerformed - - private void MicroPythonGPIO16_0ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MicroPythonGPIO16_0ActionPerformed - cmdButtonGPIO(16, 0); - }//GEN-LAST:event_MicroPythonGPIO16_0ActionPerformed - - private void MicroPythonGPIO0ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MicroPythonGPIO0ActionPerformed - cmdButtonGetGPIO(0); - }//GEN-LAST:event_MicroPythonGPIO0ActionPerformed - - private void MicroPythonGPIO2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MicroPythonGPIO2ActionPerformed - cmdButtonGetGPIO(2); - }//GEN-LAST:event_MicroPythonGPIO2ActionPerformed - - private void MicroPythonGPIO4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MicroPythonGPIO4ActionPerformed - cmdButtonGetGPIO(4); - }//GEN-LAST:event_MicroPythonGPIO4ActionPerformed - - private void MicroPythonGPIO5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MicroPythonGPIO5ActionPerformed - cmdButtonGetGPIO(5); - }//GEN-LAST:event_MicroPythonGPIO5ActionPerformed - - private void MicroPythonGPIO9ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MicroPythonGPIO9ActionPerformed - cmdButtonGetGPIO(9); - }//GEN-LAST:event_MicroPythonGPIO9ActionPerformed - - private void MicroPythonGPIO10ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MicroPythonGPIO10ActionPerformed - cmdButtonGetGPIO(10); - }//GEN-LAST:event_MicroPythonGPIO10ActionPerformed - - private void MicroPythonGPIO12ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MicroPythonGPIO12ActionPerformed - cmdButtonGetGPIO(12); - }//GEN-LAST:event_MicroPythonGPIO12ActionPerformed - - private void MicroPythonGPIO13ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MicroPythonGPIO13ActionPerformed - cmdButtonGetGPIO(13); - }//GEN-LAST:event_MicroPythonGPIO13ActionPerformed - - private void MicroPythonGPIO14ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MicroPythonGPIO14ActionPerformed - cmdButtonGetGPIO(14); - }//GEN-LAST:event_MicroPythonGPIO14ActionPerformed - - private void MicroPythonGPIO15ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MicroPythonGPIO15ActionPerformed - cmdButtonGetGPIO(15); - }//GEN-LAST:event_MicroPythonGPIO15ActionPerformed - - private void MicroPythonGPIO16ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MicroPythonGPIO16ActionPerformed - cmdButtonGetGPIO(16); - }//GEN-LAST:event_MicroPythonGPIO16ActionPerformed - - private void MicroPythonSSIDFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_MicroPythonSSIDFocusGained - if (MicroPythonSSID.getText().trim() == "SSID") { - MicroPythonSSID.setText(""); - } - }//GEN-LAST:event_MicroPythonSSIDFocusGained - - private void MicroPythonSSIDActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MicroPythonSSIDActionPerformed - // TODO add your handling code here: - }//GEN-LAST:event_MicroPythonSSIDActionPerformed - - private void cmdMicroPythonStaConnectActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdMicroPythonStaConnectActionPerformed - btnSend("import network;nic=network.WLAN(network.STA_IF);nic.active(True);nic.connect('" + MicroPythonSSID.getText() + "','" + MicroPythonPASS.getText() + "')"); - }//GEN-LAST:event_cmdMicroPythonStaConnectActionPerformed - - private void MicroPythonPASSActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MicroPythonPASSActionPerformed - // TODO add your handling code here: - }//GEN-LAST:event_MicroPythonPASSActionPerformed - - private void MicroPythonPASSFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_MicroPythonPASSFocusGained - if (MicroPythonPASS.getText().trim() == "password") { - MicroPythonPASS.setText(""); - } - }//GEN-LAST:event_MicroPythonPASSFocusGained - - private void cmdMicroPythonSendToHostActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdMicroPythonSendToHostActionPerformed - btnSend("import socket;" - + "addr=socket.getaddrinfo('" + MicroPythonRemoteHost.getText() + "'," + Integer.parseInt(MicroPythonRemotePort.getText()) + ")[0][-1]\r\n" - + "s = socket.socket();s.connect(addr);s.send(b'" + MicroPythonRemoteData.getText() + "');data = s.recv(1000);s.close()"); - }//GEN-LAST:event_cmdMicroPythonSendToHostActionPerformed - - private void cmdMicroPythonScanActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdMicroPythonScanActionPerformed - btnSend("import network;nic = network.WLAN(network.STA_IF);nic.scan()"); - }//GEN-LAST:event_cmdMicroPythonScanActionPerformed - - private void EditorOnlyCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_EditorOnlyCheckBoxItemStateChanged - MenuItemViewEditorOnly.setSelected(EditorOnlyCheckBox.isSelected()); - }//GEN-LAST:event_EditorOnlyCheckBoxItemStateChanged - - private void MenuItemViewEditorOnlyItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_MenuItemViewEditorOnlyItemStateChanged - if (MenuItemViewEditorOnly.isSelected()) { - TerminalOnlyCheckBox.setSelected(false); - MenuItemViewTerminalOnly.setSelected(false); - EditorOnlyCheckBox.setSelected(true); - HorizontSplit.setDividerLocation(HorizontSplit.getWidth()); - } else { - EditorOnlyCheckBox.setSelected(false); - HorizontSplit.setDividerLocation(550); - } - }//GEN-LAST:event_MenuItemViewEditorOnlyItemStateChanged - - private void MenuItemViewEditorOnlyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemViewEditorOnlyActionPerformed - // TODO add your handling code here: - }//GEN-LAST:event_MenuItemViewEditorOnlyActionPerformed - - private void MenuItemLinksIoTmanagerActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MenuItemLinksIoTmanagerActionPerformed - goLink(iot_manager); - }//GEN-LAST:event_MenuItemLinksIoTmanagerActionPerformed - - private void AlwaysOnTopActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_AlwaysOnTopActionPerformed - // TODO add your handling code here: - }//GEN-LAST:event_AlwaysOnTopActionPerformed - - private void PyListDirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_PyListDirActionPerformed - PyListFiles(); - }//GEN-LAST:event_PyListDirActionPerformed - - private void PyFileAsButton1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_PyFileAsButton1MouseClicked - // TODO add your handling code here: - }//GEN-LAST:event_PyFileAsButton1MouseClicked - - private void PyFileAsButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_PyFileAsButton1ActionPerformed - String fn = evt.getActionCommand(); - if (fn.endsWith(".py") || fn.endsWith(".pyc")) { - String cmd = "dofile(\"" + fn + "\")"; - btnSend(cmd); - } else if (fn.endsWith(".bin") || fn.endsWith(".dat")) { - //HexDump(fn); - } else { - //ViewFile(fn); - } - }//GEN-LAST:event_PyFileAsButton1ActionPerformed - - private void CommandEchoItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_CommandEchoItemStateChanged - prefs.putBoolean(COMMAND_ECHO, CommandEcho.isSelected()); - }//GEN-LAST:event_CommandEchoItemStateChanged - - private void cmdSysResetActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdSysResetActionPerformed - btnSendEcho("sys reset"); - }//GEN-LAST:event_cmdSysResetActionPerformed - private void cmdSysFactoryResetActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdSysFactoryResetActionPerformed - btnSendEcho("sys factoryRESET"); - }//GEN-LAST:event_cmdSysFactoryResetActionPerformed - - private void cmdSysGetVerActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdSysGetVerActionPerformed - btnSendEcho("sys get ver"); - }//GEN-LAST:event_cmdSysGetVerActionPerformed - - private void cmdSysGetHwEuiActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdSysGetHwEuiActionPerformed - btnSendEcho("sys get hweui"); - }//GEN-LAST:event_cmdSysGetHwEuiActionPerformed - - private void cmdMacTXActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdMacTXActionPerformed - btnSendEcho("mac tx " + TxConfirmed.getSelectedItem() + " " + MacTxPort.getText().trim() + " " + MacTxData.getText().trim()); - }//GEN-LAST:event_cmdMacTXActionPerformed - - private void cmdMacjoinABPActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdMacjoinABPActionPerformed - btnSendEcho("mac join abp"); - }//GEN-LAST:event_cmdMacjoinABPActionPerformed - - private void cmdMacJoinOTAAActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdMacJoinOTAAActionPerformed - btnSendEcho("mac join otaa"); - }//GEN-LAST:event_cmdMacJoinOTAAActionPerformed - - private void cmdMacSaveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdMacSaveActionPerformed - btnSendEcho("mac save"); - }//GEN-LAST:event_cmdMacSaveActionPerformed - - private void cmdMacSetDevAddrActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdMacSetDevAddrActionPerformed - btnSendEcho("mac set devaddr " + DevAddr.getText().trim()); - }//GEN-LAST:event_cmdMacSetDevAddrActionPerformed - - private void cmdMacSetDevEuiActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdMacSetDevEuiActionPerformed - btnSendEcho("mac set deveui " + DevEUI.getText().trim()); - }//GEN-LAST:event_cmdMacSetDevEuiActionPerformed - - private void cmdMacSetAppEuiActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdMacSetAppEuiActionPerformed - btnSendEcho("mac set appeui " + AppEUI.getText().trim()); - }//GEN-LAST:event_cmdMacSetAppEuiActionPerformed - - private void cmdMacSetNwkSKeyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdMacSetNwkSKeyActionPerformed - btnSendEcho("mac set nwkskey " + NwkSKey.getText().trim()); - }//GEN-LAST:event_cmdMacSetNwkSKeyActionPerformed - - private void cmdMacSetAppSKeyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdMacSetAppSKeyActionPerformed - btnSendEcho("mac set appskey " + AppSKey.getText().trim()); - }//GEN-LAST:event_cmdMacSetAppSKeyActionPerformed - - private void cmdMacSetAppKeyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdMacSetAppKeyActionPerformed - btnSendEcho("mac set appkey " + AppKey.getText().trim()); - }//GEN-LAST:event_cmdMacSetAppKeyActionPerformed - - private void cmdMacSetPwrIdxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdMacSetPwrIdxActionPerformed - btnSendEcho("mac set pwridx " + MacPower.getText().trim()); - }//GEN-LAST:event_cmdMacSetPwrIdxActionPerformed - - private void cmdMacSetDRActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdMacSetDRActionPerformed - btnSendEcho("mac set dr " + MacDR.getText().trim()); - }//GEN-LAST:event_cmdMacSetDRActionPerformed - - private void cmdMacSetAdrOnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdMacSetAdrOnActionPerformed - btnSendEcho("mac set adr on"); - }//GEN-LAST:event_cmdMacSetAdrOnActionPerformed - - private void cmdMacSetAdrOffActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdMacSetAdrOffActionPerformed - btnSendEcho("mac set adr off"); - }//GEN-LAST:event_cmdMacSetAdrOffActionPerformed - - private void cmdMacGetDevAddrActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdMacGetDevAddrActionPerformed - btnSendEcho("mac get devaddr"); - }//GEN-LAST:event_cmdMacGetDevAddrActionPerformed - - private void cmdMacGetDevEuiActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdMacGetDevEuiActionPerformed - btnSendEcho("mac get deveui"); - }//GEN-LAST:event_cmdMacGetDevEuiActionPerformed - - private void cmdMacGetAppEuiActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdMacGetAppEuiActionPerformed - btnSendEcho("mac get appeui"); - }//GEN-LAST:event_cmdMacGetAppEuiActionPerformed - - private void cmdMacGetDRActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdMacGetDRActionPerformed - btnSendEcho("mac get dr"); - }//GEN-LAST:event_cmdMacGetDRActionPerformed - - private void cmdMacGetAdrActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdMacGetAdrActionPerformed - btnSendEcho("mac get adr"); - }//GEN-LAST:event_cmdMacGetAdrActionPerformed - - private void cmdMacGetStatusActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdMacGetStatusActionPerformed - btnSendEcho("mac get status"); - }//GEN-LAST:event_cmdMacGetStatusActionPerformed - - private void DevAddrActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_DevAddrActionPerformed - cmdMacSetDevAddr.doClick(); - }//GEN-LAST:event_DevAddrActionPerformed - - private void NwkSKeyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_NwkSKeyActionPerformed - cmdMacSetNwkSKey.doClick(); - }//GEN-LAST:event_NwkSKeyActionPerformed - - private void AppSKeyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_AppSKeyActionPerformed - cmdMacSetAppSKey.doClick(); - }//GEN-LAST:event_AppSKeyActionPerformed - - private void DevEUIActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_DevEUIActionPerformed - cmdMacSetDevEui.doClick(); - }//GEN-LAST:event_DevEUIActionPerformed - - private void AppEUIActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_AppEUIActionPerformed - cmdMacSetAppEui.doClick(); - }//GEN-LAST:event_AppEUIActionPerformed - - private void AppKeyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_AppKeyActionPerformed - cmdMacSetAppKey.doClick(); - }//GEN-LAST:event_AppKeyActionPerformed - - private void MacDRActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MacDRActionPerformed - cmdMacSetDR.doClick(); - }//GEN-LAST:event_MacDRActionPerformed - - private void MacPowerActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MacPowerActionPerformed - cmdMacSetPwrIdx.doClick(); - }//GEN-LAST:event_MacPowerActionPerformed - - private void cmdMacGetPwrIdxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdMacGetPwrIdxActionPerformed - btnSendEcho("mac get pwridx"); - }//GEN-LAST:event_cmdMacGetPwrIdxActionPerformed - - private void MacSFItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_MacSFItemStateChanged - - }//GEN-LAST:event_MacSFItemStateChanged - - private void cmdRadiosetRxBwActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdRadiosetRxBwActionPerformed - btnSendEcho("radio set rxbw " + RadioRxBandWidth.getText().trim()); - }//GEN-LAST:event_cmdRadiosetRxBwActionPerformed - - private void cmdRadioSetFreqActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdRadioSetFreqActionPerformed - btnSendEcho("radio set freq " + RadioFreq.getText().trim()); - }//GEN-LAST:event_cmdRadioSetFreqActionPerformed - - private void cmdRadioGetSFActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdRadioGetSFActionPerformed - btnSendEcho("radio get sf"); - }//GEN-LAST:event_cmdRadioGetSFActionPerformed - - private void cmdRadioGetBwActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdRadioGetBwActionPerformed - btnSendEcho("radio get bw"); - }//GEN-LAST:event_cmdRadioGetBwActionPerformed - - private void cmdRadioGetRxBwActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdRadioGetRxBwActionPerformed - btnSendEcho("radio get rxbw"); - }//GEN-LAST:event_cmdRadioGetRxBwActionPerformed - - private void cmdRadioGetFreqActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdRadioGetFreqActionPerformed - btnSendEcho("radio get freq"); - }//GEN-LAST:event_cmdRadioGetFreqActionPerformed - - private void MacSFActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MacSFActionPerformed - if ("comboBoxChanged".equals(evt.getActionCommand())) { - btnSendEcho("radio set sf " + MacSF.getSelectedItem()); - } - }//GEN-LAST:event_MacSFActionPerformed - - private void MacBandWidthItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_MacBandWidthItemStateChanged - - }//GEN-LAST:event_MacBandWidthItemStateChanged - - private void MacBandWidthActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MacBandWidthActionPerformed - if ("comboBoxChanged".equals(evt.getActionCommand())) { - btnSendEcho("radio set bw " + MacBandWidth.getSelectedItem()); - } - }//GEN-LAST:event_MacBandWidthActionPerformed - - private void TxConfirmedItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_TxConfirmedItemStateChanged - - }//GEN-LAST:event_TxConfirmedItemStateChanged - - private void TxConfirmedActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_TxConfirmedActionPerformed - - }//GEN-LAST:event_TxConfirmedActionPerformed - private void NodeFileSystemInfo() { - String cmd = "r,u,t=file.fsinfo() print(\"Total : \"..t..\" bytes\\r\\nUsed : \"..u..\" bytes\\r\\nRemain: \"..r..\" bytes\\r\\n\") r=nil u=nil t=nil"; - LocalEcho = false; - send(addCRLF(cmd), true); - } - - private void goLink(URI link) { - try { - Desktop.getDesktop().browse(link); - - } catch (IOException ex) { - Logger.getLogger(ESPlorer.class - .getName()).log(Level.SEVERE, null, ex); - } - } - - private void DoSnippet(int n) { - if (Condensed.isSelected()) { - SendToESP(cmdPrep(Snippets[n])); - } else { - SendToESP(Snippets[n]); - } - } - - private void CommandsSetNodeMCU() { - Command.removeAllItems(); - Command.addItem(new String("=node.heap()")); - Command.addItem(new String("=node.chipid()")); - Command.addItem(new String("file.close()")); - Command.addItem(new String("file.remove(\"\")")); - Command.addItem(new String("dofile(\"\")")); - Command.addItem(new String("wifi.setmode(wifi.STATION)")); - Command.addItem(new String("wifi.setmode(wifi.SOFTAP)")); - Command.addItem(new String("wifi.setmode(wifi.STATIONAP)")); - Command.addItem(new String("=wifi.getmode()")); - Command.addItem(new String("wifi.sta.config(\"myssid\",\"mypassword\")")); - Command.addItem(new String("=wifi.sta.getip()")); - Command.addItem(new String("=wifi.ap.getip()")); - Command.addItem(new String("=wifi.sta.getmac()")); - Command.addItem(new String("=wifi.ap.getmac()")); - Command.addItem(new String("=wifi.sta.status()")); - Command.addItem(new String("=tmr.now()")); - } - - private void CommandsSetMicroPython() { - Command.removeAllItems(); - Command.addItem(new String("import sys; print(sys.version_info)")); - } - - private void CommandsSetAT() { - Command.removeAllItems(); - Command.addItem(new String("AT")); - Command.addItem(new String("AT+GMR")); - Command.addItem(new String("AT+RST")); - } - - /** - * @param args the command line arguments - */ - public static void main(String args[]) { - - /* Set the Nimbus look and feel */ -// - /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. - * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html - */ - //private javax.swing.JRadioButtonMenuItem MenuItemViewLF2; - LAF = new ArrayList(); - LAFclass = new ArrayList(); - String laf; - prefs = Preferences.userRoot().node(nodeRoot); - laf = prefs.get("LAF", "javax.swing.plaf.nimbus.NimbusLookAndFeel"); - LAF.add("Nimbus"); - LAFclass.add("javax.swing.plaf.nimbus.NimbusLookAndFeel"); - try { - for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { - if (laf.equals(info.getClassName())) { - javax.swing.UIManager.setLookAndFeel(info.getClassName()); - java.util.logging.Logger.getLogger(ESPlorer.class - .getName()).log(java.util.logging.Level.INFO, "DEFAULT: L&F " + info.getName() + " class:" + info.getClassName()); - - } else { - java.util.logging.Logger.getLogger(ESPlorer.class - .getName()).log(java.util.logging.Level.INFO, "Installed: L&F " + info.getName() + " class:" + info.getClassName()); - } - if (!"Nimbus".equals(info.getName())) { - LAF.add(info.getName()); - LAFclass.add(info.getClassName()); - - } - } - } catch (ClassNotFoundException ex) { - java.util.logging.Logger.getLogger(ESPlorer.class - .getName()).log(java.util.logging.Level.INFO, null, ex); - - } catch (InstantiationException ex) { - java.util.logging.Logger.getLogger(ESPlorer.class - .getName()).log(java.util.logging.Level.INFO, null, ex); - - } catch (IllegalAccessException ex) { - java.util.logging.Logger.getLogger(ESPlorer.class - .getName()).log(java.util.logging.Level.INFO, null, ex); - - } catch (javax.swing.UnsupportedLookAndFeelException ex) { - java.util.logging.Logger.getLogger(ESPlorer.class - .getName()).log(java.util.logging.Level.INFO, null, ex); - } - // - try { - /* Create and display the form */ - java.awt.EventQueue.invokeLater(new Runnable() { - @Override - public void run() { - new ESPlorer().setVisible(true); - } - }); - - } catch (Exception ex) { - java.util.logging.Logger.getLogger(ESPlorer.class - .getName()).log(java.util.logging.Level.INFO, null, ex); - } - } - - private javax.swing.JRadioButtonMenuItem MenuItemViewLF2; - private javax.swing.JRadioButtonMenuItem MenuItemViewLF3; - private javax.swing.JRadioButtonMenuItem MenuItemViewLF4; - private javax.swing.JRadioButtonMenuItem MenuItemViewLF5; - private javax.swing.JRadioButtonMenuItem MenuItemViewLF6; - private javax.swing.JRadioButtonMenuItem MenuItemViewLF7; - private javax.swing.JRadioButtonMenuItem MenuItemViewLF8; - private javax.swing.JRadioButtonMenuItem MenuItemViewLF9; - - // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.JLayeredPane ABPPane; - private javax.swing.JButton ATE0; - private javax.swing.JButton ATE1; - private javax.swing.JPanel AT_Client; - private javax.swing.JButton AT_GMR; - private javax.swing.JButton AT_Restart; - private javax.swing.JPanel AT_Server; - private javax.swing.JLayeredPane AT_SoftAP; - private javax.swing.JPanel AT_Station; - private javax.swing.JLayeredPane ATvXX; - private javax.swing.JDialog About; - private javax.swing.JLayeredPane ActivationPane; - private javax.swing.JScrollPane ActivationScrollPane; - private javax.swing.JCheckBoxMenuItem AlwaysOnTop; - private javax.swing.JSlider AnswerDelay; - private javax.swing.JLabel AnswerDelayLabel; - private javax.swing.JTextField AppEUI; - private javax.swing.JTextField AppKey; - private javax.swing.JLabel AppName; - private javax.swing.JTextField AppSKey; - private javax.swing.JLabel Author; - private javax.swing.JLabel Author1; - private javax.swing.JCheckBox AutoScroll; - private javax.swing.JCheckBox AutodetectFirmware; - private javax.swing.JLayeredPane BasicATcommandsPane; - private javax.swing.JLabel Busy; - private javax.swing.JButton ButtonCopy; - private javax.swing.JButton ButtonCut; - private javax.swing.JButton ButtonFileClose; - private javax.swing.JButton ButtonFileNew; - private javax.swing.JButton ButtonFileOpen; - private javax.swing.JButton ButtonFileReload; - private javax.swing.JButton ButtonFileSave; - private javax.swing.JButton ButtonFileSaveAll; - private javax.swing.JButton ButtonPaste; - private javax.swing.JButton ButtonRedo; - private javax.swing.JButton ButtonSendLine; - private javax.swing.JButton ButtonSendSelected; - private javax.swing.JButton ButtonSnippet0; - private javax.swing.JButton ButtonSnippet1; - private javax.swing.JButton ButtonSnippet10; - private javax.swing.JButton ButtonSnippet11; - private javax.swing.JButton ButtonSnippet12; - private javax.swing.JButton ButtonSnippet13; - private javax.swing.JButton ButtonSnippet14; - private javax.swing.JButton ButtonSnippet15; - private javax.swing.JButton ButtonSnippet2; - private javax.swing.JButton ButtonSnippet3; - private javax.swing.JButton ButtonSnippet4; - private javax.swing.JButton ButtonSnippet5; - private javax.swing.JButton ButtonSnippet6; - private javax.swing.JButton ButtonSnippet7; - private javax.swing.JButton ButtonSnippet8; - private javax.swing.JButton ButtonSnippet9; - private javax.swing.JButton ButtonUndo; - private javax.swing.JCheckBox CR; - private javax.swing.JComboBox Command; - private javax.swing.JCheckBox CommandEcho; - private javax.swing.JLayeredPane CommandsMicroPython; - private javax.swing.JLayeredPane CommandsNodeMCU; - private javax.swing.JCheckBox Condensed; - private javax.swing.JPopupMenu ContextMenuESPFileLUA; - private javax.swing.JPopupMenu ContextMenuEditor; - private javax.swing.JPopupMenu ContextMenuFileManager; - private javax.swing.JPopupMenu ContextMenuLog; - private javax.swing.JPopupMenu ContextMenuTerminal; - private javax.swing.JTextField CustomPortName; - private javax.swing.JComboBox DHCP; - private javax.swing.JComboBox DHCPmode; - private javax.swing.JSlider Delay; - private javax.swing.JLabel DelayLabel; - private javax.swing.JTextField DevAddr; - private javax.swing.JTextField DevEUI; - private javax.swing.JButton Donate; - private javax.swing.JButton DonateSmall; - private javax.swing.JCheckBox DumbMode; - private javax.swing.JCheckBox EOL; - private javax.swing.JCheckBox EditorOnlyCheckBox; - private javax.swing.JPopupMenu.Separator EditorSeparator; - private javax.swing.JPopupMenu.Separator EditorSeparator1; - private javax.swing.JPopupMenu.Separator EditorSeparator2; - private javax.swing.JComboBox EditorTheme; - private javax.swing.JLabel EditorThemeLabel; - private javax.swing.JButton FileAsButton1; - private javax.swing.JCheckBox FileAutoRun; - private javax.swing.JCheckBox FileAutoSaveDisk; - private javax.swing.JCheckBox FileAutoSaveESP; - private javax.swing.JButton FileCompile; - private javax.swing.JButton FileCompile1; - private javax.swing.JButton FileCompileDoLC; - private javax.swing.JButton FileCompileDoLC2; - private javax.swing.JButton FileCompileDoLC3; - private javax.swing.JButton FileDo; - private javax.swing.JButton FileDo1; - private javax.swing.JButton FileFormat; - private javax.swing.JLayeredPane FileLayeredPane; - private javax.swing.JButton FileListReload; - private javax.swing.JScrollPane FileManagerScrollPane; - private javax.swing.JLayeredPane FileManagersLayer; - private javax.swing.JLabel FilePathLabel; - private javax.swing.JTextField FileRename; - private javax.swing.JLabel FileRenameLabel; - private javax.swing.JLayeredPane FileRenamePanel; - private javax.swing.JButton FileSaveCompileDoLC; - private javax.swing.JToggleButton FileSaveESP; - private javax.swing.JToggleButton FileSendESP; - private javax.swing.JButton FileSystemInfo; - private javax.swing.JButton FileUploadBin; - private javax.swing.JTabbedPane FilesTabbedPane; - private javax.swing.JToolBar FilesToolBar; - private javax.swing.JButton FilesUpload; - private javax.swing.ButtonGroup Firmware; - private javax.swing.JButton GSLP; - private javax.swing.JButton HomePage; - private javax.swing.JSplitPane HorizontSplit; - private javax.swing.JLayeredPane LEDPanel; - private javax.swing.JCheckBox LF; - private javax.swing.JLayeredPane LeftBasePane; - private javax.swing.JLayeredPane LeftExtraButtons; - private javax.swing.JLayeredPane LeftMainButtons; - private javax.swing.JLayeredPane LeftSnippetsPane; - private javax.swing.JTabbedPane LeftTab; - private javax.swing.JSlider LineDelay; - private javax.swing.JLabel LineDelayLabel; - private javax.swing.JLayeredPane LoRaMAC; - private javax.swing.JTextArea Log; - private javax.swing.JTextField LogMaxSize; - private javax.swing.JPopupMenu.Separator LogSeparator; - private javax.swing.JFormattedTextField MAC; - private javax.swing.JFormattedTextField MAC1; - private javax.swing.ButtonGroup MUXGroup; - private javax.swing.JComboBox MacBandWidth; - private javax.swing.JLayeredPane MacCommon; - private javax.swing.JTextField MacDR; - private javax.swing.JScrollPane MacPane; - private javax.swing.JTextField MacPower; - private javax.swing.JComboBox MacSF; - private javax.swing.JTextField MacTxData; - private javax.swing.JTextField MacTxPort; - private javax.swing.JMenuBar MainMenuBar; - private javax.swing.JMenu MenuESP; - private javax.swing.JMenu MenuEdit; - private javax.swing.JMenu MenuFile; - private javax.swing.JMenu MenuHelp; - private javax.swing.JMenuItem MenuItemESPFileDelete; - private javax.swing.JMenuItem MenuItemESPFileDo; - private javax.swing.JMenuItem MenuItemESPFormat; - private javax.swing.JMenuItem MenuItemESPReset; - private javax.swing.JMenuItem MenuItemEditCopy; - private javax.swing.JMenuItem MenuItemEditCut; - private javax.swing.JMenuItem MenuItemEditPaste; - private javax.swing.JMenuItem MenuItemEditRedo; - private javax.swing.JMenuItem MenuItemEditSendLine; - private javax.swing.JMenuItem MenuItemEditSendSelected; - private javax.swing.JMenuItem MenuItemEditUndo; - private javax.swing.JMenuItem MenuItemEditorCopy; - private javax.swing.JMenuItem MenuItemEditorCut; - private javax.swing.JMenuItem MenuItemEditorFontDec; - private javax.swing.JMenuItem MenuItemEditorFontInc; - private javax.swing.JMenuItem MenuItemEditorPaste; - private javax.swing.JMenuItem MenuItemEditorRedo; - private javax.swing.JMenuItem MenuItemEditorSendLine; - private javax.swing.JMenuItem MenuItemEditorSendSelected; - private javax.swing.JMenuItem MenuItemEditorUndo; - private javax.swing.JMenuItem MenuItemFileClose; - private javax.swing.JMenuItem MenuItemFileDo; - private javax.swing.JMenuItem MenuItemFileExit; - private javax.swing.JMenuItem MenuItemFileNew; - private javax.swing.JMenuItem MenuItemFileOpen; - private javax.swing.JMenuItem MenuItemFileReload; - private javax.swing.JMenuItem MenuItemFileRemoveESP; - private javax.swing.JMenuItem MenuItemFileSave; - private javax.swing.JMenuItem MenuItemFileSaveAll; - private javax.swing.JMenuItem MenuItemFileSaveAs; - private javax.swing.JMenuItem MenuItemFileSaveESP; - private javax.swing.JMenuItem MenuItemFileSendESP; - private javax.swing.JMenuItem MenuItemHelpAbout; - private javax.swing.JMenuItem MenuItemLinksBuyDevBoard; - private javax.swing.JMenuItem MenuItemLinksBuyESD12; - private javax.swing.JMenuItem MenuItemLinksBuyESP8266; - private javax.swing.JMenuItem MenuItemLinksBuyOther; - private javax.swing.JMenuItem MenuItemLinksDonate; - private javax.swing.JMenuItem MenuItemLinksESPlorerForumEn; - private javax.swing.JMenuItem MenuItemLinksESPlorerForumRu; - private javax.swing.JMenuItem MenuItemLinksESPlorerHome; - private javax.swing.JMenuItem MenuItemLinksESPlorerLatest; - private javax.swing.JMenuItem MenuItemLinksESPlorerSource; - private javax.swing.JMenuItem MenuItemLinksIoTmanager; - private javax.swing.JMenuItem MenuItemLinksMicroPythonDoc; - private javax.swing.JMenuItem MenuItemLinksNodeMCUdoc; - private javax.swing.JMenuItem MenuItemLogClear; - private javax.swing.JMenuItem MenuItemLogClose; - private javax.swing.JMenuItem MenuItemLogFontDec; - private javax.swing.JMenuItem MenuItemLogFontInc; - private javax.swing.JMenuItem MenuItemTerminalClear; - private javax.swing.JMenuItem MenuItemTerminalCopy; - private javax.swing.JMenuItem MenuItemTerminalFontDec; - private javax.swing.JMenuItem MenuItemTerminalFontInc; - private javax.swing.JMenuItem MenuItemTerminalFormat; - private javax.swing.JMenuItem MenuItemTerminalReset; - private javax.swing.JMenuItem MenuItemViewClearLog; - private javax.swing.JMenuItem MenuItemViewClearTerminal; - private javax.swing.JCheckBoxMenuItem MenuItemViewDonate; - private javax.swing.JMenuItem MenuItemViewEditorFontDec; - private javax.swing.JMenuItem MenuItemViewEditorFontInc; - private javax.swing.JCheckBoxMenuItem MenuItemViewEditorOnly; - private javax.swing.JCheckBoxMenuItem MenuItemViewFileManager; - private javax.swing.JMenuItem MenuItemViewFontDefault; - private javax.swing.JRadioButtonMenuItem MenuItemViewLF1; - private javax.swing.JCheckBoxMenuItem MenuItemViewLeftExtra; - private javax.swing.JCheckBoxMenuItem MenuItemViewLog; - private javax.swing.JMenuItem MenuItemViewLogFontDec; - private javax.swing.JMenuItem MenuItemViewLogFontInc; - private javax.swing.JCheckBoxMenuItem MenuItemViewRightExtra; - private javax.swing.JCheckBoxMenuItem MenuItemViewSnippets; - private javax.swing.JMenuItem MenuItemViewTermFontDec; - private javax.swing.JMenuItem MenuItemViewTermFontInc; - private javax.swing.JCheckBoxMenuItem MenuItemViewTerminalOnly; - private javax.swing.JCheckBoxMenuItem MenuItemViewToolbar; - private javax.swing.JMenu MenuLinks; - private javax.swing.JMenu MenuView; - private javax.swing.JLayeredPane MicroPythonCommandsGPIO; - private javax.swing.JTabbedPane MicroPythonCommandsTab; - private javax.swing.JLayeredPane MicroPythonCommandsWiFi; - private javax.swing.JButton MicroPythonGPIO0; - private javax.swing.JButton MicroPythonGPIO0_0; - private javax.swing.JButton MicroPythonGPIO0_1; - private javax.swing.JButton MicroPythonGPIO10; - private javax.swing.JButton MicroPythonGPIO10_0; - private javax.swing.JButton MicroPythonGPIO10_1; - private javax.swing.JButton MicroPythonGPIO12; - private javax.swing.JButton MicroPythonGPIO12_0; - private javax.swing.JButton MicroPythonGPIO12_1; - private javax.swing.JButton MicroPythonGPIO13; - private javax.swing.JButton MicroPythonGPIO13_0; - private javax.swing.JButton MicroPythonGPIO13_1; - private javax.swing.JButton MicroPythonGPIO14; - private javax.swing.JButton MicroPythonGPIO14_0; - private javax.swing.JButton MicroPythonGPIO14_1; - private javax.swing.JButton MicroPythonGPIO15; - private javax.swing.JButton MicroPythonGPIO15_0; - private javax.swing.JButton MicroPythonGPIO15_1; - private javax.swing.JButton MicroPythonGPIO16; - private javax.swing.JButton MicroPythonGPIO16_0; - private javax.swing.JButton MicroPythonGPIO16_1; - private javax.swing.JButton MicroPythonGPIO2; - private javax.swing.JButton MicroPythonGPIO2_0; - private javax.swing.JButton MicroPythonGPIO2_1; - private javax.swing.JButton MicroPythonGPIO4; - private javax.swing.JButton MicroPythonGPIO4_0; - private javax.swing.JButton MicroPythonGPIO4_1; - private javax.swing.JButton MicroPythonGPIO5; - private javax.swing.JButton MicroPythonGPIO5_0; - private javax.swing.JButton MicroPythonGPIO5_1; - private javax.swing.JButton MicroPythonGPIO9; - private javax.swing.JButton MicroPythonGPIO9_0; - private javax.swing.JButton MicroPythonGPIO9_1; - private javax.swing.JTextField MicroPythonPASS; - private javax.swing.JTextField MicroPythonRemoteData; - private javax.swing.JTextField MicroPythonRemoteHost; - private javax.swing.JTextField MicroPythonRemotePort; - private javax.swing.JTextField MicroPythonSSID; - private javax.swing.JButton NodeChipID; - private javax.swing.JLayeredPane NodeFileManagerPane; - private javax.swing.JButton NodeFlashID; - private javax.swing.JButton NodeHeap; - private javax.swing.JButton NodeInfo; - private javax.swing.JPanel NodeMCU; - private javax.swing.JLayeredPane NodeMCUCommands; - private javax.swing.JLayeredPane NodeMCUSettings; - private javax.swing.JLayeredPane NodeMCUSnippets; - private javax.swing.JButton NodeReset; - private javax.swing.JTextField NwkSKey; - private javax.swing.JLayeredPane OTAAPane; - private javax.swing.JToggleButton Open; - private javax.swing.JRadioButton OptionMicroPython; - private javax.swing.JRadioButton OptionNodeMCU; - private javax.swing.JLayeredPane OptionsFileSendMode; - private javax.swing.JLayeredPane OptionsFirmware; - private javax.swing.JLayeredPane OptionsOther; - private javax.swing.JTextField PASS; - private javax.swing.JTextField PASSsoftAP; - private javax.swing.JComboBox Port; - private javax.swing.JLabel PortCTS; - private javax.swing.JToggleButton PortDTR; - private javax.swing.JLabel PortOpenLabel; - private javax.swing.JToggleButton PortRTS; - private javax.swing.JProgressBar ProgressBar; - private javax.swing.JButton PyFileAsButton1; - private javax.swing.JLayeredPane PyFileManagerPane; - private javax.swing.JButton PyListDir; - private javax.swing.JLayeredPane RN2483; - private javax.swing.JTabbedPane RN2483jTab; - private javax.swing.JTextField RadioFreq; - private javax.swing.JLayeredPane RadioPane; - private javax.swing.JTextField RadioRxBandWidth; - private javax.swing.JButton ReScan; - private javax.swing.JLayeredPane RightBasePane; - private javax.swing.JLayeredPane RightBigPane; - private javax.swing.JLayeredPane RightBottomPane; - private javax.swing.JLayeredPane RightExtraButtons; - private javax.swing.JSplitPane RightFilesSplitPane; - private javax.swing.JLayeredPane RightSnippetsPane; - private javax.swing.JSplitPane RightSplitPane; - private javax.swing.JTextField SSID; - private javax.swing.JTextField SSIDsoftAP; - private javax.swing.JScrollPane ScrollLog; - private javax.swing.JButton SendCommand; - private javax.swing.JLayeredPane SendUnconfirmed; - private javax.swing.JComboBox ServerMode; - private javax.swing.JTextField ServerPort; - private javax.swing.JTextField ServerTimeout; - private javax.swing.JCheckBoxMenuItem ShowFileManager; - private javax.swing.JButton SnippetCancelEdit; - private javax.swing.JButton SnippetEdit0; - private javax.swing.JButton SnippetEdit1; - private javax.swing.JButton SnippetEdit10; - private javax.swing.JButton SnippetEdit11; - private javax.swing.JButton SnippetEdit12; - private javax.swing.JButton SnippetEdit13; - private javax.swing.JButton SnippetEdit14; - private javax.swing.JButton SnippetEdit15; - private javax.swing.JButton SnippetEdit2; - private javax.swing.JButton SnippetEdit3; - private javax.swing.JButton SnippetEdit4; - private javax.swing.JButton SnippetEdit5; - private javax.swing.JButton SnippetEdit6; - private javax.swing.JButton SnippetEdit7; - private javax.swing.JButton SnippetEdit8; - private javax.swing.JButton SnippetEdit9; - private javax.swing.JTextField SnippetName; - private javax.swing.JButton SnippetRun; - private javax.swing.JButton SnippetSave; - private org.fife.ui.rtextarea.RTextScrollPane SnippetScrollPane; - private org.fife.ui.rsyntaxtextarea.RSyntaxTextArea SnippetText; - private javax.swing.JLayeredPane SnippetTopPane; - private javax.swing.JLabel SnippetsBusy; - private javax.swing.JComboBox Speed; - private javax.swing.JLayeredPane SriptsTab; - private javax.swing.JTextField StationIP; - private javax.swing.JLayeredPane TCPServerBottomPane; - private javax.swing.Box.Filler TCPServerTopFiller; - private javax.swing.JLayeredPane TCP_common; - private javax.swing.JLayeredPane TCPclientBottomPane; - private javax.swing.JTabbedPane TabAT; - public static org.fife.ui.rsyntaxtextarea.RSyntaxTextArea Terminal; - private javax.swing.JLayeredPane TerminalLogPane; - private javax.swing.JTextField TerminalMaxSize; - private javax.swing.JCheckBox TerminalOnlyCheckBox; - private org.fife.ui.rtextarea.RTextScrollPane TerminalPane; - private javax.swing.JPopupMenu.Separator TerminalSeparator1; - private javax.swing.JPopupMenu.Separator TerminalSeparator2; - private javax.swing.JPopupMenu.Separator TerminalSeparator3; - private org.fife.ui.rsyntaxtextarea.RSyntaxTextArea TextEditor; - private org.fife.ui.rtextarea.RTextScrollPane TextScroll; - private javax.swing.JTabbedPane TextTab; - private javax.swing.JComboBox TimerNumber; - private javax.swing.Box.Filler TopWiFiAPFiller; - private javax.swing.Box.Filler TopWiFiStaFiller; - private javax.swing.Box.Filler TopWiFiStaFiller1; - private javax.swing.JCheckBox TurboMode; - private javax.swing.JComboBox TxConfirmed; - private javax.swing.JLayeredPane UDP; - private javax.swing.JButton UPDATE; - private javax.swing.JCheckBox UseCustomPortName; - private javax.swing.JCheckBox UseExternalEditor; - private javax.swing.JLabel Version; - private javax.swing.JLayeredPane WiFiStationPane; - private javax.swing.JLayeredPane WiFi_common; - private javax.swing.JLayeredPane WiFisoftAPPane; - private javax.swing.ButtonGroup buttonGroupLF; - private javax.swing.JComboBox channel; - private javax.swing.JButton cmdAT; - private javax.swing.JButton cmdCIPSEND; - private javax.swing.JButton cmdCIPSENDinteractive; - private javax.swing.JButton cmdGetCIFSR; - private javax.swing.JButton cmdGetCIPAP; - private javax.swing.JButton cmdGetCIPAPMAC; - private javax.swing.JButton cmdGetCIPMODE; - private javax.swing.JButton cmdGetCIPMUX; - private javax.swing.JButton cmdGetCIPSTA; - private javax.swing.JButton cmdGetCIPSTAMAC; - private javax.swing.JButton cmdGetCIPSTART; - private javax.swing.JButton cmdGetCIPSTATUS; - private javax.swing.JButton cmdGetCIPSTO; - private javax.swing.JButton cmdGetCWJAP; - private javax.swing.JButton cmdGetCWLIF; - private javax.swing.JButton cmdGetCWMODE; - private javax.swing.JButton cmdGetCWSAP; - private javax.swing.JButton cmdGetHelpCWMODE; - private javax.swing.JButton cmdListFiles; - private javax.swing.JButton cmdMacGetAdr; - private javax.swing.JButton cmdMacGetAppEui; - private javax.swing.JButton cmdMacGetDR; - private javax.swing.JButton cmdMacGetDevAddr; - private javax.swing.JButton cmdMacGetDevEui; - private javax.swing.JButton cmdMacGetPwrIdx; - private javax.swing.JButton cmdMacGetStatus; - private javax.swing.JButton cmdMacJoinOTAA; - private javax.swing.JButton cmdMacSave; - private javax.swing.JButton cmdMacSetAdrOff; - private javax.swing.JButton cmdMacSetAdrOn; - private javax.swing.JButton cmdMacSetAppEui; - private javax.swing.JButton cmdMacSetAppKey; - private javax.swing.JButton cmdMacSetAppSKey; - private javax.swing.JButton cmdMacSetDR; - private javax.swing.JButton cmdMacSetDevAddr; - private javax.swing.JButton cmdMacSetDevEui; - private javax.swing.JButton cmdMacSetNwkSKey; - private javax.swing.JButton cmdMacSetPwrIdx; - private javax.swing.JButton cmdMacTX; - private javax.swing.JButton cmdMacjoinABP; - private javax.swing.JButton cmdMicroPythonScan; - private javax.swing.JButton cmdMicroPythonSendToHost; - private javax.swing.JButton cmdMicroPythonStaConnect; - private javax.swing.JButton cmdNodeChipID; - private javax.swing.JButton cmdNodeHeap; - private javax.swing.JButton cmdNodeRestart; - private javax.swing.JButton cmdNodeSleep; - private javax.swing.JButton cmdRadioGetBw; - private javax.swing.JButton cmdRadioGetFreq; - private javax.swing.JButton cmdRadioGetRxBw; - private javax.swing.JButton cmdRadioGetSF; - private javax.swing.JButton cmdRadioSetFreq; - private javax.swing.JButton cmdRadiosetRxBw; - private javax.swing.JButton cmdSetCIPAP; - private javax.swing.JButton cmdSetCIPAPMAC; - private javax.swing.JButton cmdSetCIPCLOSE; - private javax.swing.JButton cmdSetCIPMODE0; - private javax.swing.JButton cmdSetCIPMODE1; - private javax.swing.JButton cmdSetCIPMUX0; - private javax.swing.JButton cmdSetCIPMUX1; - private javax.swing.JButton cmdSetCIPSERVER; - private javax.swing.JButton cmdSetCIPSTA; - private javax.swing.JButton cmdSetCIPSTAMAC; - private javax.swing.JButton cmdSetCIPSTART; - private javax.swing.JButton cmdSetCIPSTO; - private javax.swing.JButton cmdSetCWDHCP; - private javax.swing.JButton cmdSetCWJAP; - private javax.swing.JButton cmdSetCWLAP; - private javax.swing.JButton cmdSetCWMODE1; - private javax.swing.JButton cmdSetCWMODE2; - private javax.swing.JButton cmdSetCWMODE3; - private javax.swing.JButton cmdSetCWQAP; - private javax.swing.JButton cmdSetCWSAP; - private javax.swing.JButton cmdSysFactoryReset; - private javax.swing.JButton cmdSysGetHwEui; - private javax.swing.JButton cmdSysGetVer; - private javax.swing.JButton cmdSysReset; - private javax.swing.JButton cmdTimerStop; - private javax.swing.JPanel common; - private javax.swing.JComboBox conn_id; - private javax.swing.JTextArea data; - private javax.swing.JComboBox encryption; - private javax.swing.JLabel jLabel1; - private javax.swing.JLabel jLabel10; - private javax.swing.JLabel jLabel11; - private javax.swing.JLabel jLabel12; - private javax.swing.JLabel jLabel13; - private javax.swing.JLabel jLabel2; - private javax.swing.JLabel jLabel3; - private javax.swing.JLabel jLabel4; - private javax.swing.JLabel jLabel5; - private javax.swing.JLabel jLabel6; - private javax.swing.JLabel jLabel7; - private javax.swing.JLabel jLabel8; - private javax.swing.JLabel jLabel9; - private javax.swing.JLayeredPane jLayeredPane1; - private javax.swing.JLayeredPane jLayeredPane2; - private javax.swing.JLayeredPane jLayeredPane3; - private javax.swing.JMenuItem jMenuItem4; - private javax.swing.JMenuItem jMenuItem7; - private javax.swing.JScrollPane jScrollData; - private javax.swing.JToolBar.Separator jSeparator1; - private javax.swing.JPopupMenu.Separator jSeparator10; - private javax.swing.JPopupMenu.Separator jSeparator11; - private javax.swing.JPopupMenu.Separator jSeparator12; - private javax.swing.JPopupMenu.Separator jSeparator13; - private javax.swing.JPopupMenu.Separator jSeparator15; - private javax.swing.JPopupMenu.Separator jSeparator16; - private javax.swing.JPopupMenu.Separator jSeparator17; - private javax.swing.JPopupMenu.Separator jSeparator18; - private javax.swing.JPopupMenu.Separator jSeparator19; - private javax.swing.JPopupMenu.Separator jSeparator2; - private javax.swing.JPopupMenu.Separator jSeparator20; - private javax.swing.JPopupMenu.Separator jSeparator3; - private javax.swing.JPopupMenu.Separator jSeparator4; - private javax.swing.JPopupMenu.Separator jSeparator5; - private javax.swing.JToolBar.Separator jSeparator6; - private javax.swing.JPopupMenu.Separator jSeparator7; - private javax.swing.JToolBar.Separator jSeparator8; - private javax.swing.JPopupMenu.Separator jSeparator9; - private javax.swing.JPopupMenu.Separator jSeparatorFileMenu; - private javax.swing.JRadioButton multi; - private javax.swing.JComboBox protocol; - private javax.swing.JTextField remote_address; - private javax.swing.JTextField remote_port; - private javax.swing.JRadioButton single; - private javax.swing.JTextField softAPIP; - private javax.swing.JTextField udp_local_port; - private javax.swing.JTextField udp_mode; - private org.jdesktop.beansbinding.BindingGroup bindingGroup; - // End of variables declaration//GEN-END:variables - - // Variables - private static final boolean DEBUG = false; // true; //false; - /* Files tab start */ - private ArrayList FileLayeredPane1; - private ArrayList TextEditor1; - private ArrayList TextScroll1; - private ArrayList FileLayeredPaneLayout1; - private ArrayList provider; - private ArrayList ac; - private ArrayList iFile; // for files in tab - private ArrayList mFile; // for multifile op - private ArrayList FileChanged; - private ArrayList FileAsButton; - private ArrayList PyFileAsButton; - private ArrayList FilePopupMenu; - private ArrayList FilePopupMenuItem; - private int iTab = 0; // tab index - private int mFileIndex = -1; // multifile index - private String UploadFileName = ""; - /* Files tab end */ - public int nSpeed = 9600; - public static final Logger LOGGER = Logger.getLogger(ESPlorer.class - .getName()); - // String s = new String(); - int save; // editor var - String FileName = "script"; // without ext - String DownloadedFileName = ""; - String NewFile = "New"; - int FileCount = 0; - String workDir = ""; - JFileChooser chooser; - static final String[] EXTENSION_LUA = new String[]{"lua", "lc"}; - static final String[] EXTENSION_PY = new String[]{"py", "pyc"}; - static final String[] EXTENSION_ALL = new String[]{"*"}; - static final FileNameExtensionFilter FILTER_LUA = new FileNameExtensionFilter("LUA files (*.lua, *.lc)", EXTENSION_LUA); - static final FileNameExtensionFilter FILTER_PYTHON = new FileNameExtensionFilter("Python files (*.py, *.pyc)", EXTENSION_PY); - static final FileNameExtensionFilter FILTER_ALL = new FileNameExtensionFilter("All files (*.*)", EXTENSION_ALL); - FileInputStream fis = null; - FileOutputStream fos = null; - InputStreamReader isr = null; - OutputStreamWriter osw = null; - BufferedReader br = null; - BufferedWriter bw = null; - public static int j = 0; - public static int pyLevel = 0; - public static boolean sendPending = false; - public static String s[]; - public ActionListener taskPerformer; - public ActionListener watchDog; - public ActionListener checker; - public ActionListener taskSleep; - public Timer timer; - public Timer timeout; - public Timer sleep; - public Timer openTimeout; - public Color color; - public Color themeTextBackground; - public static String rcvBuf = ""; - public static String rx_data = ""; - public static String tx_data = ""; - public static byte[] rx_byte; - public static byte[] tx_byte; - // downloader - public int packets = 0; - public String rcvFile = ""; - public ArrayList rcvPackets; - public ArrayList sendPackets; - public ArrayList sendPacketsCRC; - public ArrayList PacketsData; - public ArrayList PacketsSize; - public ArrayList PacketsCRC; - public ArrayList PacketsNum; - public byte[] PacketsByte; - public final int SendPacketSize = 250; - public static String DownloadCommand; - // downloader end - public static int req = 0; - public static boolean busyIcon = false; - public URI donate_uri; - public URI homepage_uri; - public URI micropython_doc; - public URI api_en_uri; - public URI iot_manager; - public URI changelog_uri; - public URI nodemcu_download_latest_uri; - public URI nodemcu_download_dev_uri; - public URI flasher_uri; - public URI buy_nodeMCU; - public URI buy_esp8266; - public URI buy_esd12; - public URI buy_other; - public URI esp8266com_uri; - public URI esp8266ru_uri; - public URI esplorer_home; - public URI esplorer_latest; - public URI esplorer_source; - private static int LogMax = 10 * 1024; - private static int TerminalMax = 100 * 1024; - private long startTime = System.currentTimeMillis(); - private static final float TERMINAL_FONT_SIZE_DEFAULT = 16f; - private static final float TERMINAL_FONT_SIZE_MAX = 40f; - private static final float TERMINAL_FONT_SIZE_MIN = 5f; - private static final float EDITOR_FONT_SIZE_DEFAULT = 13f; - private static final float EDITOR_FONT_SIZE_MAX = 40f; - private static final float EDITOR_FONT_SIZE_MIN = 8f; - private static final float LOG_FONT_SIZE_DEFAULT = 10f; - private static final float LOG_FONT_SIZE_MAX = 40f; - private static final float LOG_FONT_SIZE_MIN = 5f; - /* Prefs */ - private static final String nodeRoot = "/com/esp8266.ru/ESPlorer/config"; - private static final String SERIAL_PORT = "serial_port"; - private static final String SERIAL_BAUD = "serial_baud"; - private static final String PATH = "path"; - private static final String FIRMWARE = "firmware"; - private static final String FILE_AUTO_SAVE_DISK = "file_auto_save_disk"; - private static final String FILE_AUTO_SAVE_ESP = "file_auto_save_esp"; - private static final String FILE_AUTO_RUN = "file_auto_run"; - private static final String COLOR_THEME = "color_theme"; - private static final String DELAY = "delay"; - private static final String TIMEOUT = "timeout"; - private static final String DUMB_MODE = "dumb_mode"; - private static final String TURBO_MODE = "turbo_mode"; - private static final String LINE_DELAY = "line_delay"; - private static final String TERMINAL_FONT_SIZE = "terminal_font_size"; - private static final String EDITOR_FONT_SIZE = "editor_font_size"; - private static final String LOG_FONT_SIZE = "log_font_size"; - private static final String LOG_MAX_SIZE = "log_max_size"; - private static final String TERMINAL_MAX_SIZE = "terminal_max_size"; - - // v0.2 - private static final String AUTO_SCROLL = "auto_scroll"; - private static final String SHOW_LOG = "show_log"; - private static final String SHOW_TOOLBAR = "show_toolbar"; - private static final String SHOW_EXTRA_LEFT = "show_extra_left"; - private static final String SHOW_EXTRA_RIGHT = "show_extra_right"; - private static final String SHOW_SNIP_RIGHT = "show_snip_right"; - private static final String SHOW_FM_RIGHT = "show_fm_right"; - private static final String USE_CUSTOM_PORT = "use_custom_port"; - private static final String CUSTOM_PORT_NAME = "custom_port_name"; - private static final String LOG_DIV = "log_div"; - private static final String FM_DIV = "fm_div"; - private static final String PORT_RTS = "port_rts"; - private static final String PORT_DTR = "port_dtr"; - private static final String USE_EXT_EDITOR = "use_ext_editor"; - private static final String SHOW_DONATE = "show_donate"; - private static final String SHOW_EOL = "show_eol"; - private static final String WIN_X = "win_x"; - private static final String WIN_Y = "win_y"; - private static final String WIN_H = "win_h"; - private static final String WIN_W = "win_w"; - private static final String CONDENSED = "condensed"; - private static final String AUTODETECT = "autodetect_firmware"; - private static final String COMMAND_ECHO = "command_echo"; - /* Prefs end */ - - /* Snippets */ - private static String[] Snippets = new String[16]; - private static int iSnippets = 0; - - private static final int portMask = SerialPort.MASK_RXCHAR + SerialPort.MASK_CTS; - private static javax.swing.ImageIcon LED_GREY; - private static javax.swing.ImageIcon LED_GREEN; - private static javax.swing.ImageIcon LED_RED; - private static javax.swing.ImageIcon LED_BLUE; - - private static final int FIRMWARE_NODEMCU = 0; - private static final int FIRMWARE_MPYTHON = 1; - private static final int FIRMWARE_AT = 2; - - private static boolean LocalEcho = true; - - public void inc_j() { - ++j; - } - - public void j0() { - j = 0; - } - - public void inc_pyLevel() { - ++pyLevel; - } - - public void dec_pyLevel() { - --pyLevel; - } - - public void set_pyLevel(int newValue) { - pyLevel = newValue; - } - - public void pyLevel0() { - pyLevel = 0; - } - - public void PortFinder() { - int i; - Port.removeAllItems(); - if (UseCustomPortName.isSelected()) { - Port.addItem(makeObj(CustomPortName.getText().trim())); - Port.setSelectedIndex(Port.getItemCount() - 1); - Port.setEnabled(false); - Speed.setSelectedIndex(prefs.getInt(SERIAL_BAUD, 3)); - log("Using custom port name " + CustomPortName.getText()); - return; - } - log("Scan system..."); - String[] portNames = SerialPortList.getPortNames(); - // System.out.println(portNames[i]); - if (portNames.length < 1) { - log("Could not find any serial port. Please, connect device and ReScan"); - } else { - if (prefs.get(SERIAL_PORT, null) == null) { - prefs.put(SERIAL_PORT, portNames[0]); - } - String lastPort = prefs.get(SERIAL_PORT, null); - int port = 0; - for (i = 0; i < portNames.length; i++) { - Port.addItem(makeObj(portNames[i])); - if (portNames[i].equals(lastPort)) { - port = i; - log("found last saved serial port " + portNames[i]); - } else { - log("found " + portNames[i]); - } - } - Port.setSelectedIndex(port); - Speed.setSelectedIndex(prefs.getInt(SERIAL_BAUD, 3)); - } - log("Scan done."); - } - - private Object makeObj(final String item) { - return new Object() { - public String toString() { - return item; - } - }; - } - - public void log(String l) { - String log = Log.getText(); - Document doc = Log.getDocument(); - LOGGER.info(l); - if (log.length() > LogMax) { - try { - doc.remove(0, 1024); - } catch (Exception e) { - } - } - try { - doc.insertString(doc.getLength(), "\r\n" + l, null); - } catch (Exception e) { - } - Log.setCaretPosition(Log.getText().length()); - } - - public void log(String l, boolean d) { - if (d) { - log(l); - } - } - - public String GetSerialPortName() { - String portName; - if (UseCustomPortName.isSelected()) { - portName = CustomPortName.getText().trim(); - } else { - portName = Port.getSelectedItem().toString(); - } - return portName; - } - - public boolean SetSerialPortParams() { - boolean success = false; - String portName = GetSerialPortName(); - try { - success = serialPort.setParams(nSpeed, - SerialPort.DATABITS_8, - SerialPort.STOPBITS_1, - SerialPort.PARITY_NONE, - PortRTS.isSelected(), - PortDTR.isSelected()); - } catch (Exception e) { - log(e.toString()); - } - if (!success) { - log("ERROR setting port " + portName + " parameters."); - } - UpdateLED(); - return success; - } - - public boolean portOpen() { - boolean success = false; - String portName = GetSerialPortName(); - nSpeed = Integer.parseInt((String) Speed.getSelectedItem()); - if (pOpen) { - try { - serialPort.closePort(); - } catch (Exception e) { - } - } else { - log("Try to open port " + portName + ", baud " + Integer.toString(nSpeed) + ", 8N1"); - } - serialPort = new SerialPort(portName); - pOpen = false; - try { - success = serialPort.openPort(); - if (!success) { - log("ERROR opening serial port " + portName); - return success; - } - SetSerialPortParams(); - serialPort.addEventListener(new PortReader(), portMask); - } catch (SerialPortException ex) { - log(ex.toString()); - success = false; - } - pOpen = success; - if (pOpen) { - log("Open port " + portName + " - Success."); - TerminalAdd("\r\nPORT OPEN " + Speed.getSelectedItem() + "\r\n"); - CheckComm(); - } - return pOpen; - - } - - public void CheckComm() { - if (!AutodetectFirmware.isSelected()) { - portJustOpen = false; - return; - } - portJustOpen = true; - TerminalAdd("\r\nCommunication with MCU.."); - checker = new ActionListener() { - public void actionPerformed(ActionEvent evt) { - if (portJustOpen) { - btnSend(""); // only CR+LF - TerminalAdd("."); - if (Terminal.getCaretOffsetFromLineStart() >= 10) { - TerminalAdd("\r\n"); - } - } else { - try { - openTimeout.stop(); - } catch (Exception e) { - log(e.toString()); - } - } - } - }; - openTimeout = new Timer(3000, checker); - openTimeout.setRepeats(false); - openTimeout.setInitialDelay(3000); - openTimeout.start(); - } - - public void portClose() { - boolean success = false; - if (portJustOpen) { - try { - openTimeout.stop(); - } catch (Exception e) { - log(e.toString()); - } - } - try { - success = serialPort.closePort(); - } catch (SerialPortException ex) { - log(ex.toString()); - } - if (success) { - TerminalAdd("\r\nPORT CLOSED\r\n"); - log("Close port " + Port.getSelectedItem().toString() + " - Success."); - } else { - log("Close port " + Port.getSelectedItem().toString() + " - unknown error."); - - } - pOpen = false; - if (Open.isSelected()) { - Open.setSelected(false); - } - UpdateLED(); - ClearNodeFileManager(); - } - - public void SendCommand() { - if (SendCommand.isEnabled() == false || pOpen == false || portJustOpen) { - log("Port not open, operation FAILED."); - return; - } - String cmd; - try { - cmd = Command.getSelectedItem().toString(); - } catch (Exception e) { - cmd = ""; - } - - //Autoclean History --ADDED by Mike, DL2ZAP -- - //if (Autoclean.isSelected()) { // ToDo: create Checkbox "Autoclean & uncomment this line - if (true) { // ToDo: After creating Checkbox delete this line - int eintraege = Command.getItemCount(); - //System.out.println("Start cleaning"); - for (int lv1 = 0; lv1 < eintraege; lv1++) { - //System.out.print("Eintrag:" + lv1 +" : "+Command.getItemAt(lv1)); - if (Command.getItemAt(lv1) == cmd) { - // System.out.println(" Doppelt, entfernt!"); - Command.removeItemAt(lv1); - lv1--; // re-read this Entry because List has moved up the Follower - } else { - // System.out.println(" OK."); - } - } - } - - // System.out.println("Adding Command:" + cmd ); - int eintraege = Command.getItemCount(); - - Command.setSelectedIndex(Command.getItemCount() - 1); // Place Index on last Entry - Command.addItem(cmd); // Add to History after last Position - Command.setSelectedIndex(Command.getItemCount() - 1); // Place Index on new last Entry - // End of Autoclean-Procedure - - //Command.addItem(cmd); // Add to History - if (CR.isSelected()) { - cmd += (char) 13; - } - if (LF.isSelected()) { - cmd += (char) 10; - } - send(cmd, true); - // History trim - if (Command.getItemCount() > 20) { - Command.removeItemAt(0); - } - //Command.setSelectedIndex(Command.getItemCount()-1); - } - - public String addCRLF(String s) { - String r = s; - r += (char) 13; - if (OptionNodeMCU.isSelected()) { - r += (char) 10; - } - return r; - } - - public String addCR(String s) { - String r = s; - r += (char) 13; - return r; - } - - public void btnSend(String s) { - send(addCRLF(s), true); - } - - public void btnSendEcho(String s) { - if (Terminal.getCaretOffsetFromLineStart() > 0) { - TerminalAdd("\r\n"); - } - TerminalAdd(s); - TerminalAdd("\r\n"); - btnSend(s); - } - - private void FinalInit() { - final Image im = Toolkit.getDefaultToolkit().getImage(getClass().getResource("/resources/ESP8266-64x64.png")); - setIconImage(im); - - setLocationRelativeTo(null); // window centered - - if (LAFclass.get(0).equals(prefs.get("LAF", ""))) { // First for Nimbus - MenuItemViewLF1.setSelected(true); - } - int x = 1; - if (LAF.size() >= x + 1) { - MenuItemViewLF2 = new javax.swing.JRadioButtonMenuItem(); - buttonGroupLF.add(MenuItemViewLF2); - MenuItemViewLF2.setText(LAF.get(x)); - if (LAFclass.get(x).equals(prefs.get("LAF", ""))) { - MenuItemViewLF2.setSelected(true); - } - MenuItemViewLF2.setActionCommand(Integer.toString(x)); - MenuItemViewLF2.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewLF1ActionPerformed(evt); - } - }); - MenuView.add(MenuItemViewLF2); - } - x++; - if (LAF.size() >= x + 1) { - MenuItemViewLF3 = new javax.swing.JRadioButtonMenuItem(); - buttonGroupLF.add(MenuItemViewLF3); - MenuItemViewLF3.setText(LAF.get(x)); - if (LAFclass.get(x).equals(prefs.get("LAF", ""))) { - MenuItemViewLF3.setSelected(true); - } - MenuItemViewLF3.setActionCommand(Integer.toString(x)); - MenuItemViewLF3.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewLF1ActionPerformed(evt); - } - }); - MenuView.add(MenuItemViewLF3); - } - x++; - if (LAF.size() >= x + 1) { - MenuItemViewLF4 = new javax.swing.JRadioButtonMenuItem(); - buttonGroupLF.add(MenuItemViewLF4); - MenuItemViewLF4.setText(LAF.get(x)); - if (LAFclass.get(x).equals(prefs.get("LAF", ""))) { - MenuItemViewLF4.setSelected(true); - } - MenuItemViewLF4.setActionCommand(Integer.toString(x)); - MenuItemViewLF4.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewLF1ActionPerformed(evt); - } - }); - MenuView.add(MenuItemViewLF4); - } - x++; - if (LAF.size() >= x + 1) { - MenuItemViewLF5 = new javax.swing.JRadioButtonMenuItem(); - buttonGroupLF.add(MenuItemViewLF5); - MenuItemViewLF5.setText(LAF.get(x)); - if (LAFclass.get(x).equals(prefs.get("LAF", ""))) { - MenuItemViewLF5.setSelected(true); - } - MenuItemViewLF5.setActionCommand(Integer.toString(x)); - MenuItemViewLF5.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewLF1ActionPerformed(evt); - } - }); - MenuView.add(MenuItemViewLF5); - } - x++; - if (LAF.size() >= x + 1) { - MenuItemViewLF6 = new javax.swing.JRadioButtonMenuItem(); - buttonGroupLF.add(MenuItemViewLF6); - MenuItemViewLF6.setText(LAF.get(x)); - if (LAFclass.get(x).equals(prefs.get("LAF", ""))) { - MenuItemViewLF6.setSelected(true); - } - MenuItemViewLF6.setActionCommand(Integer.toString(x)); - MenuItemViewLF6.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewLF1ActionPerformed(evt); - } - }); - MenuView.add(MenuItemViewLF6); - } - x++; - if (LAF.size() >= x + 1) { - MenuItemViewLF7 = new javax.swing.JRadioButtonMenuItem(); - buttonGroupLF.add(MenuItemViewLF7); - MenuItemViewLF7.setText(LAF.get(x)); - if (LAFclass.get(x).equals(prefs.get("LAF", ""))) { - MenuItemViewLF7.setSelected(true); - } - MenuItemViewLF7.setActionCommand(Integer.toString(x)); - MenuItemViewLF7.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewLF1ActionPerformed(evt); - } - }); - MenuView.add(MenuItemViewLF7); - } - x++; - if (LAF.size() >= x + 1) { - MenuItemViewLF8 = new javax.swing.JRadioButtonMenuItem(); - buttonGroupLF.add(MenuItemViewLF8); - MenuItemViewLF8.setText(LAF.get(x)); - if (LAFclass.get(x).equals(prefs.get("LAF", ""))) { - MenuItemViewLF8.setSelected(true); - } - MenuItemViewLF8.setActionCommand(Integer.toString(x)); - MenuItemViewLF8.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewLF1ActionPerformed(evt); - } - }); - MenuView.add(MenuItemViewLF8); - } - x++; - if (LAF.size() >= x + 1) { - MenuItemViewLF9 = new javax.swing.JRadioButtonMenuItem(); - buttonGroupLF.add(MenuItemViewLF9); - MenuItemViewLF9.setText(LAF.get(x)); - if (LAFclass.get(x).equals(prefs.get("LAF", ""))) { - MenuItemViewLF9.setSelected(true); - } - MenuItemViewLF9.setActionCommand(Integer.toString(x)); - MenuItemViewLF9.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewLF1ActionPerformed(evt); - } - }); - MenuView.add(MenuItemViewLF9); - } - - LED_GREY = new javax.swing.ImageIcon(getClass().getResource("/resources/led_grey.png")); - LED_GREEN = new javax.swing.ImageIcon(getClass().getResource("/resources/led_green.png")); - LED_RED = new javax.swing.ImageIcon(getClass().getResource("/resources/led_red.png")); - LED_BLUE = new javax.swing.ImageIcon(getClass().getResource("/resources/led_blue.png")); - - SnippetScrollPane.setLineNumbersEnabled(true); - SnippetText.setFadeCurrentLineHighlight(true); - SnippetText.setPaintMarkOccurrencesBorder(true); - SnippetText.setPaintMatchedBracketPair(true); - SnippetText.setAntiAliasingEnabled(true); - SnippetText.setTabsEmulated(true); - - FileLayeredPane1 = new ArrayList(); - TextScroll1 = new ArrayList(); - TextEditor1 = new ArrayList(); - FileLayeredPaneLayout1 = new ArrayList(); - provider = new ArrayList(); - ac = new ArrayList(); - iFile = new ArrayList(); - FileChanged = new ArrayList(); - - FileAsButton = new ArrayList(); - PyFileAsButton = new ArrayList(); - - FilePopupMenu = new ArrayList(); - FilePopupMenuItem = new ArrayList(); - - FilesTabbedPane.removeAll(); - - LoadPrefs(); - LoadSnippets(); - - if (OptionNodeMCU.isSelected()) { - Terminal.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_LUA); - } else { - Terminal.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_PYTHON); - } - - AddTab(""); // iTab = 0 - - try { - donate_uri = new URI("https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=4refr0nt%40gmail%2ecom&lc=US&item_name=ESPlorer¤cy_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted"); - homepage_uri = new URI("http://esp8266.ru/esplorer/"); - micropython_doc = new URI("http://docs.micropython.org/en/latest/esp8266/"); - api_en_uri = new URI("http://nodemcu.readthedocs.org/"); - iot_manager = new URI("https://play.google.com/store/apps/details?id=ru.esp8266.iotmanager"); - changelog_uri = new URI("https://github.com/nodemcu/nodemcu-firmware/wiki"); - nodemcu_download_latest_uri = new URI("https://github.com/nodemcu/nodemcu-firmware/blob/master/pre_build/latest/nodemcu_latest.bin?raw=true"); - nodemcu_download_dev_uri = new URI("https://github.com/nodemcu/nodemcu-firmware/releases"); - flasher_uri = new URI("https://github.com/nodemcu/nodemcu-flasher"); - // adv links start - // Please, do not modify - buy_nodeMCU = new URI("http://goo.gl/GRiJpq"); - buy_esp8266 = new URI("http://goo.gl/4kdUSO"); - buy_esd12 = new URI("http://goo.gl/GexlwM"); - buy_other = new URI("http://goo.gl/J2GCSx"); - // adv links end - esp8266com_uri = new URI("http://www.esp8266.com/viewtopic.php?f=22&t=882"); - esp8266ru_uri = new URI("http://esp8266.ru/forum/threads/esplorer.34/"); - esplorer_latest = new URI("http://esp8266.ru/esplorer/#download"); - esplorer_source = new URI("https://github.com/4refr0nt/ESPlorer"); - - } catch (Exception e) { - log(e.toString()); - } - FileAsButton1.setVisible(false); - FileRenamePanel.setVisible(false); - PyFileAsButton1.setVisible(false); - } - - private void LoadPrefs() { - // Settings - Firmware - workDir = prefs.get(PATH, ""); - chooser = new JFileChooser(workDir); - chooser.setFileSelectionMode(JFileChooser.FILES_ONLY); - chooser.setMultiSelectionEnabled(false); - chooser.setCurrentDirectory(new File(workDir)); - - String SavedFirmware = prefs.get(FIRMWARE, "NodeMCU"); - log("Load saved settings: Firmware:" + SavedFirmware); - if (SavedFirmware.equals("NodeMCU")) { - SetFirmwareType(FIRMWARE_NODEMCU); - } else if (SavedFirmware.equals("MicroPython")) { - SetFirmwareType(FIRMWARE_MPYTHON); - } else { - SetFirmwareType(FIRMWARE_AT); - } - FileAutoSaveDisk.setSelected(prefs.getBoolean(FILE_AUTO_SAVE_DISK, true)); - FileAutoSaveESP.setSelected(prefs.getBoolean(FILE_AUTO_SAVE_ESP, true)); - FileAutoRun.setSelected(prefs.getBoolean(FILE_AUTO_RUN, true)); - EditorTheme.setSelectedIndex(prefs.getInt(COLOR_THEME, 1)); - Delay.setValue(prefs.getInt(DELAY, 0)); - AnswerDelay.setValue(prefs.getInt(TIMEOUT, 3)); - DumbMode.setSelected(prefs.getBoolean(DUMB_MODE, false)); - TurboMode.setSelected(prefs.getBoolean(TURBO_MODE, false)); - LineDelay.setValue(prefs.getInt(LINE_DELAY, 200)); - // Font size - Terminal.setFont(Terminal.getFont().deriveFont(prefs.getFloat(TERMINAL_FONT_SIZE, TERMINAL_FONT_SIZE_DEFAULT))); - SnippetText.setFont(SnippetText.getFont().deriveFont(prefs.getFloat(EDITOR_FONT_SIZE, EDITOR_FONT_SIZE_DEFAULT))); - Log.setFont(Log.getFont().deriveFont(prefs.getFloat(LOG_FONT_SIZE, LOG_FONT_SIZE_DEFAULT))); - LogMax = prefs.getInt(LOG_MAX_SIZE, LogMax); - LogMaxSize.setText(Integer.toString(LogMax / 1024)); - TerminalMax = prefs.getInt(TERMINAL_MAX_SIZE, TerminalMax); - TerminalMaxSize.setText(Integer.toString(TerminalMax / 1024)); - AutoScroll.setSelected(prefs.getBoolean(AUTO_SCROLL, true)); - MenuItemViewLog.setSelected(prefs.getBoolean(SHOW_LOG, false)); - MenuItemViewToolbar.setSelected(prefs.getBoolean(SHOW_TOOLBAR, true)); - MenuItemViewLeftExtra.setSelected(prefs.getBoolean(SHOW_EXTRA_LEFT, true)); - MenuItemViewRightExtra.setSelected(prefs.getBoolean(SHOW_EXTRA_RIGHT, true)); - MenuItemViewSnippets.setSelected(prefs.getBoolean(SHOW_SNIP_RIGHT, true)); - MenuItemViewFileManager.setSelected(prefs.getBoolean(SHOW_FM_RIGHT, true)); - MenuItemViewDonate.setSelected(prefs.getBoolean(SHOW_DONATE, false)); - DonateSmall.setVisible(!MenuItemViewDonate.isSelected()); - UseCustomPortName.setSelected(prefs.getBoolean(USE_CUSTOM_PORT, false)); - CustomPortName.setText(prefs.get(CUSTOM_PORT_NAME, "/dev/AnySerialDevice")); - PortDTR.setSelected(prefs.getBoolean(PORT_DTR, false)); - PortRTS.setSelected(prefs.getBoolean(PORT_RTS, false)); - UseExternalEditor.setSelected(prefs.getBoolean(USE_EXT_EDITOR, false)); - EOL.setSelected(prefs.getBoolean(SHOW_EOL, false)); - Condensed.setSelected(prefs.getBoolean(CONDENSED, false)); - AutodetectFirmware.setSelected(prefs.getBoolean(AUTODETECT, true)); - CommandEcho.setSelected(prefs.getBoolean(COMMAND_ECHO, true)); - log("Load saved settings: DONE."); - } - - private void AddNodeFileButton(String FileName, int size) { - FileAsButton.add(new javax.swing.JButton()); - int i = FileAsButton.size() - 1; - FileAsButton.get(i).setText(FileName); - //FileAsButton.get(i).setFont(new java.awt.Font("Tahoma", 0, 12)); - FileAsButton.get(i).setAlignmentX(0.5F); - FileAsButton.get(i).setMargin(new java.awt.Insets(2, 2, 2, 2)); - FileAsButton.get(i).setMaximumSize(new java.awt.Dimension(130, 25)); - FileAsButton.get(i).setPreferredSize(new java.awt.Dimension(130, 25)); - FileAsButton.get(i).setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - //FileAsButton.get(i).setHorizontalTextPosition(javax.swing.SwingConstants.LEFT); - FileAsButton.get(i).addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - FileAsButton1ActionPerformed(evt); - } - }); - // PopUp menu - FilePopupMenu.add(new javax.swing.JPopupMenu()); - int x = FilePopupMenu.size() - 1; - int y; - // PopUp menu items - if (FileName.endsWith(".lua")) { - FileAsButton.get(i).setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/lua.png"))); - FileAsButton.get(i).setToolTipText(FileAsButton.get(i).getActionCommand() + ", LeftClick - Run, RightClick - Other actions"); - AddMenuItemRun(x, FileName); - AddMenuItemCompile(x, FileName); - AddMenuItemSeparator(x); - AddMenuItemView(x, FileName); - AddMenuItemDump(x, FileName); - AddMenuItemEdit(x, FileName, size); - AddMenuItemDownload(x, FileName, size); - AddMenuItemRename(x, FileName); - AddMenuItemSeparator(x); - AddMenuItemRemove(x, FileName); - } else if (FileName.endsWith(".lc")) { - FileAsButton.get(i).setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/lc.png"))); - FileAsButton.get(i).setToolTipText(FileAsButton.get(i).getActionCommand() + ", LeftClick - Run, RightClick - Other actions"); - AddMenuItemRun(x, FileName); - AddMenuItemSeparator(x); - AddMenuItemDump(x, FileName); - AddMenuItemDownload(x, FileName, size); - AddMenuItemRename(x, FileName); - AddMenuItemSeparator(x); - AddMenuItemRemove(x, FileName); - } else { - FileAsButton.get(i).setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/file.png"))); - FileAsButton.get(i).setToolTipText(FileAsButton.get(i).getActionCommand() + ", LeftClick - View, RightClick - Other actions"); - AddMenuItemView(x, FileName); - AddMenuItemDump(x, FileName); - AddMenuItemEdit(x, FileName, size); - AddMenuItemDownload(x, FileName, size); - AddMenuItemRename(x, FileName); - AddMenuItemSeparator(x); - AddMenuItemRemove(x, FileName); - } - - FileAsButton.get(i).setComponentPopupMenu(FilePopupMenu.get(x)); - NodeFileManagerPane.add(FileAsButton.get(i)); - } - - private void AddMenuItemSeparator(int x) { - FilePopupMenu.get(x).add(new javax.swing.JPopupMenu.Separator()); - } - - private void AddMenuItemEdit(int x, String FileName, int size) { - int y; - FilePopupMenuItem.add(new javax.swing.JMenuItem()); - y = FilePopupMenuItem.size() - 1; - FilePopupMenuItem.get(y).setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/edit.png"))); - FilePopupMenuItem.get(y).setText("Edit " + FileName); - FilePopupMenuItem.get(y).setToolTipText("Download file from ESP and open in new editor window"); - FilePopupMenuItem.get(y).setActionCommand(FileName + "Size:" + Integer.toString(size)); - FilePopupMenuItem.get(y).addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - DownloadCommand = "EDIT"; - FileDownload(evt.getActionCommand()); - } - }); - FilePopupMenu.get(x).add(FilePopupMenuItem.get(y)); - } - - private void AddMenuItemDownload(int x, String FileName, int size) { - int y; - FilePopupMenuItem.add(new javax.swing.JMenuItem()); - y = FilePopupMenuItem.size() - 1; - FilePopupMenuItem.get(y).setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/download.png"))); - FilePopupMenuItem.get(y).setText("Download " + FileName); - FilePopupMenuItem.get(y).setToolTipText("Download file from ESP and save to disk"); - FilePopupMenuItem.get(y).setActionCommand(FileName + "Size:" + Integer.toString(size)); - FilePopupMenuItem.get(y).addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - DownloadCommand = "DOWNLOAD"; - FileDownload(evt.getActionCommand()); - } - }); - FilePopupMenu.get(x).add(FilePopupMenuItem.get(y)); - } - - private void AddMenuItemRun(int x, String FileName) { - int y; - FilePopupMenuItem.add(new javax.swing.JMenuItem()); - y = FilePopupMenuItem.size() - 1; - FilePopupMenuItem.get(y).setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/play.png"))); - FilePopupMenuItem.get(y).setText("Run " + FileName); - FilePopupMenuItem.get(y).setToolTipText("Execute command dofile(\"" + FileName + "\") for run this file"); - FilePopupMenuItem.get(y).setActionCommand(FileName); - FilePopupMenuItem.get(y).addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - btnSend("dofile(\"" + evt.getActionCommand() + "\")"); - } - }); - FilePopupMenu.get(x).add(FilePopupMenuItem.get(y)); - } - - private void AddMenuItemCompile(int x, String FileName) { - int y; - FilePopupMenuItem.add(new javax.swing.JMenuItem()); - y = FilePopupMenuItem.size() - 1; - FilePopupMenuItem.get(y).setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/wizard.png"))); - FilePopupMenuItem.get(y).setText("Compile " + FileName + " to .lc"); - FilePopupMenuItem.get(y).setToolTipText("Execute command node.compile(\"" + FileName + "\")"); - FilePopupMenuItem.get(y).setActionCommand(FileName); - FilePopupMenuItem.get(y).addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - btnSend("node.compile(\"" + evt.getActionCommand() + "\")"); - try { - Thread.sleep(500L); - } catch (Exception e) { - } - FileListReload.doClick(); - } - }); - FilePopupMenu.get(x).add(FilePopupMenuItem.get(y)); - } - - private void AddMenuItemRename(int x, String FileName) { - int y; - FilePopupMenuItem.add(new javax.swing.JMenuItem()); - y = FilePopupMenuItem.size() - 1; - FilePopupMenuItem.get(y).setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/rename.png"))); - FilePopupMenuItem.get(y).setText("Rename " + FileName); - FilePopupMenuItem.get(y).setToolTipText("Execute command file.rename(\"" + FileName + "\",\"NewName\")"); - FilePopupMenuItem.get(y).setActionCommand(FileName); - FilePopupMenuItem.get(y).addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - FileRename.setText(evt.getActionCommand()); - FileRenameLabel.setText(evt.getActionCommand()); - FileRenamePanel.setEnabled(true); - FileRenamePanel.setVisible(true); - FileRename.grabFocus(); - } - }); - FilePopupMenu.get(x).add(FilePopupMenuItem.get(y)); - } - - private void AddMenuItemRemove(int x, String FileName) { - int y; - FilePopupMenuItem.add(new javax.swing.JMenuItem()); - y = FilePopupMenuItem.size() - 1; - FilePopupMenuItem.get(y).setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/trash.png"))); - FilePopupMenuItem.get(y).setText("Remove " + FileName); - FilePopupMenuItem.get(y).setToolTipText("Execute command file.remove(\"" + FileName + "\") and delete file from NodeMCU filesystem"); - FilePopupMenuItem.get(y).setActionCommand(FileName); - FilePopupMenuItem.get(y).addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - FileRemoveESP(evt.getActionCommand()); - // FileListReload not needed - } - }); - FilePopupMenu.get(x).add(FilePopupMenuItem.get(y)); - } - - private void AddMenuItemView(int x, String FileName) { - int y; - FilePopupMenuItem.add(new javax.swing.JMenuItem()); - y = FilePopupMenuItem.size() - 1; - FilePopupMenuItem.get(y).setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/view.png"))); - FilePopupMenuItem.get(y).setText("View " + FileName); - FilePopupMenuItem.get(y).setToolTipText("View content of file " + FileName + " on Terminal"); - FilePopupMenuItem.get(y).setActionCommand(FileName); - FilePopupMenuItem.get(y).addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - ViewFile(evt.getActionCommand()); - } - }); - FilePopupMenu.get(x).add(FilePopupMenuItem.get(y)); - } - - private void AddMenuItemDump(int x, String FileName) { - int y; - FilePopupMenuItem.add(new javax.swing.JMenuItem()); - y = FilePopupMenuItem.size() - 1; - FilePopupMenuItem.get(y).setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/dump.png"))); - FilePopupMenuItem.get(y).setText("HexDump " + FileName); - FilePopupMenuItem.get(y).setToolTipText("View HexDump " + FileName + "in Terminal"); - FilePopupMenuItem.get(y).setActionCommand(FileName); - FilePopupMenuItem.get(y).addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - HexDump(evt.getActionCommand()); - } - }); - FilePopupMenu.get(x).add(FilePopupMenuItem.get(y)); - } - - private void AddTab(String s) { - int i = FilesTabbedPane.getTabCount(); - - FileLayeredPane1.add(new javax.swing.JLayeredPane()); - TextScroll1.add(new org.fife.ui.rtextarea.RTextScrollPane()); - TextEditor1.add(new org.fife.ui.rsyntaxtextarea.RSyntaxTextArea()); - iFile.add(new File("")); - FileChanged.add(false); - provider.add(createCompletionProvider()); - ac.add(new AutoCompletion(provider.get(i))); - ac.get(i).install(TextEditor1.get(i)); - - FileLayeredPaneLayout1.add(new javax.swing.GroupLayout(FileLayeredPane1.get(i))); - - if (OptionNodeMCU.isSelected()) { - TextEditor1.get(i).setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_LUA); - } else { - TextEditor1.get(i).setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_PYTHON); - } - TextEditor1.get(i).setColumns(20); - TextEditor1.get(i).setRows(5); - TextEditor1.get(i).setDragEnabled(false); - TextEditor1.get(i).setFadeCurrentLineHighlight(true); - TextEditor1.get(i).setPaintMarkOccurrencesBorder(true); - TextEditor1.get(i).setPaintMatchedBracketPair(true); - TextEditor1.get(i).setPopupMenu(ContextMenuEditor); - TextEditor1.get(i).setCodeFoldingEnabled(false); - TextEditor1.get(i).setAntiAliasingEnabled(true); - TextEditor1.get(i).setTabsEmulated(true); - TextEditor1.get(i).setBracketMatchingEnabled(true); - TextEditor1.get(i).setTabSize(4); - TextEditor1.get(i).addCaretListener(new javax.swing.event.CaretListener() { - public void caretUpdate(javax.swing.event.CaretEvent evt) { - TextEditorCaretUpdate(evt); - } - }); - TextEditor1.get(i).addActiveLineRangeListener(new org.fife.ui.rsyntaxtextarea.ActiveLineRangeListener() { - public void activeLineRangeChanged(org.fife.ui.rsyntaxtextarea.ActiveLineRangeEvent evt) { - TextEditorActiveLineRangeChanged(evt); - } - }); - TextEditor1.get(i).addInputMethodListener(new java.awt.event.InputMethodListener() { - public void caretPositionChanged(java.awt.event.InputMethodEvent evt) { - TextEditorCaretPositionChanged(evt); - } - - public void inputMethodTextChanged(java.awt.event.InputMethodEvent evt) { - TextEditorInputMethodTextChanged(evt); - } - }); - TextEditor1.get(i).addKeyListener(new java.awt.event.KeyAdapter() { - public void keyTyped(java.awt.event.KeyEvent evt) { - TextEditorKeyTyped(evt); - } - }); - TextEditor1.get(i).addFocusListener(new java.awt.event.FocusAdapter() { - public void focusGained(java.awt.event.FocusEvent evt) { - int i; - for (i = 0; i < TextEditor1.size(); i++) { - TextEditor1.get(i).setEditable(!UseExternalEditor.isSelected()); - } - } - }); - TextScroll1.get(i).setViewportView(TextEditor1.get(i)); - TextScroll1.get(i).setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED); - TextScroll1.get(i).setIconRowHeaderEnabled(false); - TextScroll1.get(i).setLineNumbersEnabled(true); - TextScroll1.get(i).setFoldIndicatorEnabled(true); - - FileLayeredPane1.get(i).setLayout(FileLayeredPaneLayout1.get(i)); - FileLayeredPaneLayout1.get(i).setHorizontalGroup( - FileLayeredPaneLayout1.get(i).createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(TextScroll1.get(i), javax.swing.GroupLayout.DEFAULT_SIZE, 452, Short.MAX_VALUE) - ); - FileLayeredPaneLayout1.get(i).setVerticalGroup( - FileLayeredPaneLayout1.get(i).createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(TextScroll1.get(i), javax.swing.GroupLayout.DEFAULT_SIZE, 281, Short.MAX_VALUE) - ); - FileLayeredPane1.get(i).setLayer(TextScroll1.get(i), javax.swing.JLayeredPane.DEFAULT_LAYER); - - FilesTabbedPane.addTab(NewFile, FileLayeredPane1.get(i)); - - FilesTabbedPane.setSelectedIndex(i); - iTab = i; - SetTheme(EditorTheme.getSelectedIndex(), false); - FileLabelUpdate(); - if (UseExternalEditor.isSelected()) { - TextEditor1.get(i).setEditable(false); - } - TextEditor1.get(i).setText(s); - } - - private void SetTheme(int t, boolean all) { - String res; - if (t == 1) { - res = "/org/fife/ui/rsyntaxtextarea/themes/dark.xml"; - } else if (t == 2) { - res = "/org/fife/ui/rsyntaxtextarea/themes/eclipse.xml"; - } else if (t == 3) { - res = "/org/fife/ui/rsyntaxtextarea/themes/idea.xml"; - } else if (t == 4) { - res = "/org/fife/ui/rsyntaxtextarea/themes/vs.xml"; - } else if (t == 5) { - res = "/org/fife/ui/rsyntaxtextarea/themes/default-alt.xml"; - } else { - res = "/org/fife/ui/rsyntaxtextarea/themes/default.xml"; - } - try { - Theme theme = Theme.load(getClass().getResourceAsStream(res)); - if (all) { - for (int i = 0; i < FilesTabbedPane.getTabCount(); i++) { - theme.apply(TextEditor1.get(i)); - TextEditor1.get(i).setFont(TextEditor1.get(i).getFont().deriveFont(prefs.getFloat(EDITOR_FONT_SIZE, EDITOR_FONT_SIZE_DEFAULT))); - } - theme.apply(SnippetText); - SnippetText.setFont(SnippetText.getFont().deriveFont(prefs.getFloat(EDITOR_FONT_SIZE, EDITOR_FONT_SIZE_DEFAULT))); - theme.apply(Terminal); - Terminal.setFont(Terminal.getFont().deriveFont(prefs.getFloat(TERMINAL_FONT_SIZE, TERMINAL_FONT_SIZE_DEFAULT))); - themeTextBackground = SnippetText.getBackground(); - //SnippetText.setBackground(SnippetTopPane.getBackground()); - log("Set new color theme: Success."); - } else { - theme.apply(TextEditor1.get(iTab)); - TextEditor1.get(iTab).setFont(TextEditor1.get(iTab).getFont().deriveFont(prefs.getFloat(EDITOR_FONT_SIZE, EDITOR_FONT_SIZE_DEFAULT))); - } - } catch (IOException e) { - log(e.toString()); - log("Set new color theme: FAIL."); - } - } - - private void RemoveTab() { - if (FilesTabbedPane.getTabCount() <= 1) { - iTab = 0; - TextEditor1.get(iTab).setText(""); - TextEditor1.get(iTab).discardAllEdits(); - FilesTabbedPane.setTitleAt(iTab, NewFile); - iFile.set(iTab, new File("")); - FileLabelUpdate(); - FileChanged.set(iTab, false); - UpdateEditorButtons(); - log("FileTab cleared: Success."); - } else { - iFile.remove(iTab); - FileChanged.remove(iTab); - ac.remove(iTab); - provider.remove(iTab); - TextEditor1.remove(iTab); - TextScroll1.remove(iTab); - FileLayeredPaneLayout1.remove(iTab); - FileLayeredPane1.remove(iTab); - FilesTabbedPane.removeTabAt(iTab); - FilesTabbedPane.setSelectedIndex(iTab); - FileLabelUpdate(); - log("FileTab removed: Success."); - } - } - - private boolean isChanged() { - if (UseExternalEditor.isSelected()) { - return false; - } - try { - if (FileChanged.get(iTab)) { - return true; - } - } catch (Exception e) { - return false; - } - if (TextEditor1.get(iTab).canUndo()) { - return true; - } - if (TextEditor1.get(iTab).canRedo()) { - return true; - } - return false; - } - - private int Dialog(String msg, int btn) { - this.setAlwaysOnTop(false); - Toolkit.getDefaultToolkit().beep(); - int returnVal = JOptionPane.showConfirmDialog(null, msg, "Attention", btn, JOptionPane.WARNING_MESSAGE); - this.setAlwaysOnTop(AlwaysOnTop.isSelected()); - return returnVal; - } - - private CompletionProvider createCompletionProvider() { - - DefaultCompletionProvider provider = new DefaultCompletionProvider(); - if (OptionNodeMCU.isSelected()) { - - provider.addCompletion(new BasicCompletion(provider, "function end")); - provider.addCompletion(new BasicCompletion(provider, "function")); - provider.addCompletion(new BasicCompletion(provider, "function return end")); - provider.addCompletion(new BasicCompletion(provider, "end")); - provider.addCompletion(new BasicCompletion(provider, "do")); - provider.addCompletion(new BasicCompletion(provider, "print(\"\")")); - provider.addCompletion(new BasicCompletion(provider, "if")); - provider.addCompletion(new BasicCompletion(provider, "else")); - provider.addCompletion(new BasicCompletion(provider, "elseif")); - provider.addCompletion(new BasicCompletion(provider, "if else end")); - provider.addCompletion(new BasicCompletion(provider, "while")); - provider.addCompletion(new BasicCompletion(provider, "while do end")); - provider.addCompletion(new BasicCompletion(provider, "do end")); - provider.addCompletion(new BasicCompletion(provider, "for")); - provider.addCompletion(new BasicCompletion(provider, "for do end")); - provider.addCompletion(new BasicCompletion(provider, "repeat")); - provider.addCompletion(new BasicCompletion(provider, "until")); - provider.addCompletion(new BasicCompletion(provider, "repeat until")); - provider.addCompletion(new BasicCompletion(provider, "for")); - provider.addCompletion(new BasicCompletion(provider, "for key, value in pairs() do\r\nend")); - provider.addCompletion(new BasicCompletion(provider, "for do end")); - provider.addCompletion(new BasicCompletion(provider, "wifi.setmode(wifi.STATION)")); - provider.addCompletion(new BasicCompletion(provider, "wifi.getmode()")); - provider.addCompletion(new BasicCompletion(provider, "wifi.startsmart()")); - provider.addCompletion(new BasicCompletion(provider, "wifi.stopsmart()")); - provider.addCompletion(new BasicCompletion(provider, "wifi.sta.config(\"SSID\",\"password\")")); - provider.addCompletion(new BasicCompletion(provider, "wifi.sta.connect()")); - provider.addCompletion(new BasicCompletion(provider, "wifi.sta.disconnect()")); - provider.addCompletion(new BasicCompletion(provider, "wifi.sta.autoconnect()")); - provider.addCompletion(new BasicCompletion(provider, "wifi.sta.getip()")); - provider.addCompletion(new BasicCompletion(provider, "wifi.sta.getmac()")); - provider.addCompletion(new BasicCompletion(provider, "wifi.sta.getap()")); - provider.addCompletion(new BasicCompletion(provider, "wifi.sta.status()")); - provider.addCompletion(new BasicCompletion(provider, "wifi.ap.config()")); - provider.addCompletion(new BasicCompletion(provider, "wifi.ap.getip()")); - provider.addCompletion(new BasicCompletion(provider, "wifi.ap.getmac()")); - provider.addCompletion(new BasicCompletion(provider, "gpio.mode(pin,gpio.OUTPUT)")); - provider.addCompletion(new BasicCompletion(provider, "gpio.write(pin,gpio.HIGH)")); - provider.addCompletion(new BasicCompletion(provider, "gpio.write(pin,gpio.LOW)")); - provider.addCompletion(new BasicCompletion(provider, "gpio.read(pin)")); - provider.addCompletion(new BasicCompletion(provider, "gpio.trig(0, \"act\",func)")); - provider.addCompletion(new BasicCompletion(provider, "conn=net.createConnection(net.TCP, 0)")); - provider.addCompletion(new BasicCompletion(provider, "net.createConnection(net.TCP, 0)")); - provider.addCompletion(new BasicCompletion(provider, "on(\"receive\", function(conn, payload) print(payload) end )")); - provider.addCompletion(new BasicCompletion(provider, "connect(80,\"0.0.0.0\")")); - provider.addCompletion(new BasicCompletion(provider, "send(\"GET / HTTP/1.1\\r\\nHost: www.baidu.com\\r\\nConnection: keep-alive\\r\\nAccept: */*\\r\\n\\r\\n\")")); - provider.addCompletion(new BasicCompletion(provider, "srv=net.createServer(net.TCP)")); - provider.addCompletion(new BasicCompletion(provider, "srv:listen(80,function(conn) \nconn:on(\"receive\",function(conn,payload) \nprint(payload) \nconn:send(\"

Hello, NodeMcu.

\")\nend) \nconn:on(\"sent\",function(conn) conn:close() end)\nend)")); - provider.addCompletion(new BasicCompletion(provider, "net.createServer(net.TCP, timeout)")); - provider.addCompletion(new BasicCompletion(provider, "net.server.listen(port,[ip],function(net.socket))")); - provider.addCompletion(new BasicCompletion(provider, "dns(domain, function(net.socket, ip))")); - provider.addCompletion(new BasicCompletion(provider, "pwm.setduty(0,0)")); - provider.addCompletion(new BasicCompletion(provider, "pwm.getduty(0)")); - provider.addCompletion(new BasicCompletion(provider, "pwm.setup(0,0,0)")); - provider.addCompletion(new BasicCompletion(provider, "pwm.start(0)")); - provider.addCompletion(new BasicCompletion(provider, "pwm.close(0)")); - provider.addCompletion(new BasicCompletion(provider, "pwm.setclock(0, 100)")); - provider.addCompletion(new BasicCompletion(provider, "pwm.getclock(0)")); - provider.addCompletion(new BasicCompletion(provider, "pwm.close(0)")); - provider.addCompletion(new BasicCompletion(provider, "file.open(\"\",\"r\")")); - provider.addCompletion(new BasicCompletion(provider, "file.writeline()")); - provider.addCompletion(new BasicCompletion(provider, "file.readline()")); - provider.addCompletion(new BasicCompletion(provider, "file.write()")); - provider.addCompletion(new BasicCompletion(provider, "file.close()")); - provider.addCompletion(new BasicCompletion(provider, "file.remove()")); - provider.addCompletion(new BasicCompletion(provider, "file.flush()")); - provider.addCompletion(new BasicCompletion(provider, "file.seek()")); - provider.addCompletion(new BasicCompletion(provider, "file.list()")); - provider.addCompletion(new BasicCompletion(provider, "node.restart()")); - provider.addCompletion(new BasicCompletion(provider, "node.dsleep()")); - provider.addCompletion(new BasicCompletion(provider, "node.chipid()")); - provider.addCompletion(new BasicCompletion(provider, "node.heap()")); - provider.addCompletion(new BasicCompletion(provider, "node.key(type, function())")); - provider.addCompletion(new BasicCompletion(provider, "node.led()")); - provider.addCompletion(new BasicCompletion(provider, "node.input()")); - provider.addCompletion(new BasicCompletion(provider, "node.output()")); - provider.addCompletion(new BasicCompletion(provider, "tmr.alarm(0,1000,1,function()\nend)")); - provider.addCompletion(new BasicCompletion(provider, "tmr.delay()")); - provider.addCompletion(new BasicCompletion(provider, "tmr.now()")); - provider.addCompletion(new BasicCompletion(provider, "tmr.stop(id)")); - provider.addCompletion(new BasicCompletion(provider, "tmr.wdclr()")); - provider.addCompletion(new BasicCompletion(provider, "dofile(\"\")")); - } else { // MicroPython - provider.addCompletion(new BasicCompletion(provider, "import ")); - provider.addCompletion(new BasicCompletion(provider, "import network")); - provider.addCompletion(new BasicCompletion(provider, "import time")); - provider.addCompletion(new BasicCompletion(provider, "import Timer")); - provider.addCompletion(new BasicCompletion(provider, "from machine import Pin")); - provider.addCompletion(new BasicCompletion(provider, "from machine import Pin, PWM")); - provider.addCompletion(new BasicCompletion(provider, "from machine import ADC")); - provider.addCompletion(new BasicCompletion(provider, "from machine import Pin, SPI")); - provider.addCompletion(new BasicCompletion(provider, "from machine import Pin, I2C")); - provider.addCompletion(new BasicCompletion(provider, "import onewire")); - provider.addCompletion(new BasicCompletion(provider, "from neopixel import NeoPixel")); - provider.addCompletion(new BasicCompletion(provider, "import neopixel")); - provider.addCompletion(new BasicCompletion(provider, "import esp")); - provider.addCompletion(new BasicCompletion(provider, "")); - provider.addCompletion(new BasicCompletion(provider, "")); - provider.addCompletion(new BasicCompletion(provider, "")); - provider.addCompletion(new BasicCompletion(provider, "")); - provider.addCompletion(new BasicCompletion(provider, "json")); - provider.addCompletion(new BasicCompletion(provider, "ubinascii.hexlify(data[, sep])")); - provider.addCompletion(new BasicCompletion(provider, "ubinascii.unhexlify(data)")); - provider.addCompletion(new BasicCompletion(provider, "ubinascii.a2b_base64(data)")); - provider.addCompletion(new BasicCompletion(provider, "ubinascii.b2a_base64(data)")); - provider.addCompletion(new BasicCompletion(provider, "machine.freq(160000000)")); - provider.addCompletion(new BasicCompletion(provider, "esp.osdebug(None)")); - provider.addCompletion(new BasicCompletion(provider, "esp.osdebug(0)")); - provider.addCompletion(new BasicCompletion(provider, "wlan = network.WLAN(network.STA_IF)")); - provider.addCompletion(new BasicCompletion(provider, "wlan.active(True)")); - provider.addCompletion(new BasicCompletion(provider, "wlan.scan()")); - provider.addCompletion(new BasicCompletion(provider, "wlan.isconnected()")); - provider.addCompletion(new BasicCompletion(provider, "wlan.connect('essid', 'password')")); - provider.addCompletion(new BasicCompletion(provider, "wlan.ifconfig()")); - provider.addCompletion(new BasicCompletion(provider, "ap = network.WLAN(network.AP_IF)")); - provider.addCompletion(new BasicCompletion(provider, "ap.active(True)")); - provider.addCompletion(new BasicCompletion(provider, "ap.config(essid='ESP-AP')")); - provider.addCompletion(new BasicCompletion(provider, "time.sleep(1)")); - provider.addCompletion(new BasicCompletion(provider, "time.sleep_ms(500)")); - provider.addCompletion(new BasicCompletion(provider, "time.sleep_us(10)")); - provider.addCompletion(new BasicCompletion(provider, "time.ticks_diff(start, time.ticks_ms())")); - provider.addCompletion(new BasicCompletion(provider, "tim = Timer(-1)")); - provider.addCompletion(new BasicCompletion(provider, "tim.init(period=5000, mode=Timer.ONE_SHOT, callback=lambda t:print(1))")); - provider.addCompletion(new BasicCompletion(provider, "tim.init(period=2000, mode=Timer.PERIODIC, callback=lambda t:print(2))")); - provider.addCompletion(new BasicCompletion(provider, "Pin(0, Pin.OUT)")); - provider.addCompletion(new BasicCompletion(provider, ".high()")); - provider.addCompletion(new BasicCompletion(provider, ".low()")); - provider.addCompletion(new BasicCompletion(provider, ".value(1)")); - provider.addCompletion(new BasicCompletion(provider, "Pin(2, Pin.IN)")); - provider.addCompletion(new BasicCompletion(provider, "Pin(4, Pin.IN, Pin.PULL_UP)")); - provider.addCompletion(new BasicCompletion(provider, "Pin(5, Pin.OUT, value=1)")); - provider.addCompletion(new BasicCompletion(provider, "PWM(Pin(0))")); - provider.addCompletion(new BasicCompletion(provider, ".freq()")); - provider.addCompletion(new BasicCompletion(provider, ".freq(1000)")); - provider.addCompletion(new BasicCompletion(provider, ".duty()")); - provider.addCompletion(new BasicCompletion(provider, ".duty(200)")); - provider.addCompletion(new BasicCompletion(provider, ".deinit()")); - provider.addCompletion(new BasicCompletion(provider, "PWM(Pin(2), freq=500, duty=512)")); - provider.addCompletion(new BasicCompletion(provider, "ADC(0)")); - provider.addCompletion(new BasicCompletion(provider, ".read()")); - provider.addCompletion(new BasicCompletion(provider, "SPI(baudrate=100000, polarity=1, phase=0, sck=Pin(0), mosi=Pin(2), miso=Pin(4))")); - provider.addCompletion(new BasicCompletion(provider, ".init(baudrate=200000)")); - provider.addCompletion(new BasicCompletion(provider, ".readinto(buf)")); - provider.addCompletion(new BasicCompletion(provider, ".write_readinto(b'1234', buf)")); - provider.addCompletion(new BasicCompletion(provider, ".write_readinto(buf, buf)")); - provider.addCompletion(new BasicCompletion(provider, "I2C(scl=Pin(5), sda=Pin(4), freq=100000)")); - provider.addCompletion(new BasicCompletion(provider, "machine.RTC()")); - provider.addCompletion(new BasicCompletion(provider, ".irq(trigger=rtc.ALARM0, wake=machine.DEEPSLEEP)")); - provider.addCompletion(new BasicCompletion(provider, "machine.reset_cause()")); - provider.addCompletion(new BasicCompletion(provider, "machine.DEEPSLEEP_RESET")); - provider.addCompletion(new BasicCompletion(provider, "rtc.alarm(rtc.ALARM0, 10000)")); - provider.addCompletion(new BasicCompletion(provider, ".scan()")); - provider.addCompletion(new BasicCompletion(provider, ".reset()")); - provider.addCompletion(new BasicCompletion(provider, "onewire.DS18B20(ow)")); - provider.addCompletion(new BasicCompletion(provider, ".start_measure()")); - provider.addCompletion(new BasicCompletion(provider, ".get_temp(rom)")); - provider.addCompletion(new BasicCompletion(provider, "NeoPixel(pin, 8)")); - provider.addCompletion(new BasicCompletion(provider, "")); - provider.addCompletion(new BasicCompletion(provider, "")); - provider.addCompletion(new BasicCompletion(provider, "")); - provider.addCompletion(new BasicCompletion(provider, "")); - } - /* - provider.addCompletion(new ShorthandCompletion(provider, "sysout", - "System.out.println(", "System.out.println(")); - provider.addCompletion(new ShorthandCompletion(provider, "syserr", - "System.err.println(", "System.err.println(")); - */ - return provider; - - } - - private void FileLabelUpdate() { - iTab = FilesTabbedPane.getSelectedIndex(); - if (isFileNew()) { - FilePathLabel.setText(""); - } else { - try { - if (UseExternalEditor.isSelected()) { - FilePathLabel.setText("ReadOnly " + iFile.get(FilesTabbedPane.getSelectedIndex()).getPath()); - } else { - FilePathLabel.setText(iFile.get(FilesTabbedPane.getSelectedIndex()).getPath()); - } - } catch (Exception e) { - FilePathLabel.setText(""); - } - } - UpdateEditorButtons(); - } - - private int CloseFile() { - if (UseExternalEditor.isSelected()) { - return JOptionPane.YES_OPTION; - } - if (isChanged()) { - log("File changed. Ask before closing."); - int returnVal = Dialog("Save file \"" + FilesTabbedPane.getTitleAt(iTab) + "\" before closing?", JOptionPane.YES_NO_CANCEL_OPTION); - if (returnVal == JOptionPane.YES_OPTION) { - if (!SaveFile()) { - log("File close: FAIL (file not saved, closing aborted)"); - return JOptionPane.CANCEL_OPTION; - } - } else if (returnVal == JOptionPane.CANCEL_OPTION) { - log("User select: Continue editing."); - return JOptionPane.CANCEL_OPTION; - } else { - log("User select: Close anyway."); - } - } - RemoveTab(); - log("File close: Success."); - return JOptionPane.YES_OPTION; - } - - private void ReloadFile() { - if (isFileNew()) { - return; - } - if (isChanged() && !UseExternalEditor.isSelected()) { - log("File reload: File changed. Ask before reloading."); - int returnVal = Dialog("Discard any changes and reload file from disk?", JOptionPane.YES_NO_OPTION); - if (returnVal != JOptionPane.OK_OPTION) { - log("File reload: FAIL (file not saved, reload cancelled by user choice)"); - return; - } else { - log("File reload: Reload anyway by user choice."); - } - } - if (LoadFile()) { - log("File reload: Success."); - - } - } - - private class PortReader implements SerialPortEventListener { - - public void serialEvent(SerialPortEvent event) { - if (event.isRXCHAR() && event.getEventValue() > 0) { - try { - String data = serialPort.readString(event.getEventValue()); - if (portJustOpen) { - TerminalAdd("Got answer! Communication with MCU established.\r\nAutoDetect firmware...\r\n"); - portJustOpen = false; - try { - openTimeout.stop(); - } catch (Exception e) { - log(e.toString()); - } - UpdateButtons(); - if (data.contains("\r\n>>>")) { - TerminalAdd("\r\nMicroPython firmware detected, try get version...\r\n\r\n"); - btnSend("import sys; print(\"MicroPython ver:\",sys.version_info)"); - LeftTab.setSelectedIndex(0); - SetFirmwareType(FIRMWARE_MPYTHON); - } else if (data.contains("\r\n>")) { - TerminalAdd("\r\nNodeMCU firmware detected.\r\n"); - btnSend("=node.heap()"); - LeftTab.setSelectedIndex(0); - SetFirmwareType(FIRMWARE_NODEMCU); - } else if (data.contains("\r\nERR")) { - TerminalAdd("\r\nAT-based firmware detected.\r\n"); - btnSend("AT+GMR"); - LeftTab.setSelectedIndex(1); - RightExtraButtons.setVisible(false); - RightSnippetsPane.setVisible(false); - NodeFileManagerPane.setVisible(false); - FirmwareType = FIRMWARE_AT; - } else { - TerminalAdd("\r\nCan't autodetect firmware, because proper answer not received (may be unknown firmware). \r\nPlease, reset module or continue.\r\n"); - } - } else if (LocalEcho) { - TerminalAdd(data); - } else if (data.contains("\r")) { - LocalEcho = true; - TerminalAdd(data.substring(data.indexOf("\r"))); - } - } catch (SerialPortException ex) { - log(ex.toString()); - } - } else if (event.isCTS()) { - UpdateLedCTS(); - } else if (event.isERR()) { - log("FileManager: Unknown serial port error received."); - } - } - } - - private class PortExtraReader implements SerialPortEventListener { - - public void serialEvent(SerialPortEvent event) { - if (event.isRXCHAR() && event.getEventValue() > 0) { - String data = ""; - try { - data = serialPort.readString(event.getEventValue()); - } catch (SerialPortException ex) { - log(ex.toString()); - } - data = data.replace(">> ", ""); - data = data.replace(">>", ""); - data = data.replace("\r\n> ", ""); - data = data.replace("\r\n\r\n", "\r\n"); - - rcvBuf = rcvBuf + data; - log("recv:" + data.replace("\r\n", "")); - TerminalAdd(data); - if (rcvBuf.contains(sendBuf.get(j).trim())) { - // first, reset watchdog timer - try { - timeout.stop(); - } catch (Exception e) { - } - /* - if (rcvBuf.contains("stdin:")) { - String msg[] = {"Interpreter error detected!", rcvBuf, "Click OK to continue."}; - JOptionPane.showMessageDialog(null, msg); - } - */ - rcvBuf = ""; - if (j < sendBuf.size() - 1) { - if (timer.isRunning() || sendPending) { - // waiting - } else { - inc_j(); - sendPending = true; - int div = sendBuf.size() - 1; - if (div == 0) { - div = 1; - } - ProgressBar.setValue((j * 100) / div); - timer.start(); - } - } else { // send done - StopSend(); - } - } - if (rcvBuf.contains("powered by Lua 5.")) { - StopSend(); - String msg[] = {"ESP module reboot detected!", "Event: internal NodeMCU exception or power fail.", "Please, try again."}; - JOptionPane.showMessageDialog(null, msg); - } - if (rcvBuf.contains("Type \"help()")) { - StopSend(); - String msg[] = {"ESP module reboot detected!", "Event: internal MicroPython exception or power fail.", "Please, try again."}; - JOptionPane.showMessageDialog(null, msg); - } - } else if (event.isCTS()) { - UpdateLedCTS(); - } else if (event.isERR()) { - log("FileManager: Unknown serial port error received."); - } - } - } - - private class PortTurboReader implements SerialPortEventListener { - - public void serialEvent(SerialPortEvent event) { - if (event.isRXCHAR() && event.getEventValue() > 0) { - String data = ""; - try { - data = serialPort.readString(event.getEventValue()); - } catch (SerialPortException ex) { - log(ex.toString()); - } - rcvBuf = rcvBuf + data; - String l = data.replace("\r", ""); - l = l.replace("\n", ""); - l = l.replace("`", ""); - log("recv:" + l); - TerminalAdd(data); - if (rcvBuf.contains("> ")) { - try { - timeout.stop(); // first, reset watchdog timer - } catch (Exception e) { - } - rcvBuf = ""; - if (j < sendBuf.size() - 1) { - if (timer.isRunning() || sendPending) { - // waiting - } else { - inc_j(); - sendPending = true; - int div = sendBuf.size() - 1; - if (div == 0) { - div = 1; - } - ProgressBar.setValue((j * 100) / div); - timer.start(); - } - } else { // send done - StopSend(); - } - } - } else if (event.isCTS()) { - UpdateLedCTS(); - } else if (event.isERR()) { - log("FileManager: Unknown serial port error received."); - } - } - } - - private void StopSend() { - try { - serialPort.removeEventListener(); - } catch (Exception e) { - } - try { - timer.stop(); - } catch (Exception e) { - } - try { - timeout.stop(); - } catch (Exception e) { - } - try { - serialPort.addEventListener(new PortReader(), portMask); - } catch (SerialPortException e) { - } - SendUnLock(); - long duration = System.currentTimeMillis() - startTime; - log("Operation done. Duration = " + Long.toString(duration) + " ms"); - } - - private boolean SendToESP(String str) { - boolean success = false; - if (!pOpen || portJustOpen) { - log("SendESP: Serial port not open. Canceled."); - return success; - } - sendBuf = new ArrayList(); - s = str.split("\r?\n"); - sendBuf.addAll(Arrays.asList(s)); - success = SendTimerStart(); - log("SendToESP: Starting..."); - return success; - } - - private boolean SendToESP(ArrayList buf) { - boolean success = false; - if (!pOpen || portJustOpen) { - log("SendESP: Serial port not open. Cancel."); - return success; - } - sendBuf = new ArrayList(); - sendBuf.addAll(buf); - if (OptionMicroPython.isSelected()) { - sendBuf.add(""); - sendBuf.add(""); - sendBuf.add(""); - } - success = SendTimerStart(); - log("SendToESP: Starting..."); - return success; - } - - private void WatchDog() { - if (DumbMode.isSelected()) { - return; - } - watchDog = new ActionListener() { - public void actionPerformed(ActionEvent evt) { - StopSend(); - Toolkit.getDefaultToolkit().beep(); - TerminalAdd("Waiting answer from ESP - Timeout reached. Command aborted."); - log("Waiting answer from ESP - Timeout reached. Command aborted."); - } - }; - int delay = AnswerDelay.getValue() * 1000; - if (delay == 0) { - delay = 300; - } - timeout = new Timer(delay, watchDog); - timeout.setRepeats(false); - timeout.setInitialDelay(delay); - timeout.start(); - } - - private boolean nodeSaveFileESP(String ft) { - boolean success = false; - log("FileSaveESP: Try to save file to ESP..."); - sendBuf = new ArrayList(); - if (TurboMode.isSelected()) { - return nodeSaveFileESPTurbo(ft); - } - sendBuf.add("file.remove(\"" + ft + "\");"); - sendBuf.add("file.open(\"" + ft + "\",\"w+\");"); - sendBuf.add("w = file.writeline;\r\n"); - s = TextEditor1.get(iTab).getText().split("\r?\n"); - for (String subs : s) { - sendBuf.add("w([==[" + subs + "]==]);"); - } - sendBuf.add("file.flush();file.close();"); - if (FileAutoRun.isSelected()) { - sendBuf.add("dofile(\"" + ft + "\");"); - } - // data ready - success = SendTimerStart(); - log("FileSaveESP: Starting..."); - return success; - } - - private boolean nodeSaveFileESPTurbo(String ft) { - boolean success = false; - log("FileSaveESP-Turbo: Try to save file to ESP in Turbo Mode..."); - sendBuf.add("local FILE=\"" + ft + "\" file.remove(FILE) file.open(FILE,\"w+\") uart.setup(0," + Integer.toString(nSpeed) + ",8,0,1,0)"); - sendBuf.add("ESP_Receiver=function(rcvBuf) if string.match(rcvBuf,\"^ESP_cmd_close\")==nil then file.write(string.gsub(rcvBuf, \'\\r\', \'\')) uart.write(0, \"> \") else uart.on(\"data\") "); - sendBuf.add("file.flush() file.close() FILE=nil rcvBuf=nil ESP_Receiver=nil uart.setup(0," + Integer.toString(nSpeed) + ",8,0,1,1) str=\"\\r\\n--Done--\\r\\n> \" print(str) str=nil collectgarbage() end end uart.on(\"data\",'\\r',ESP_Receiver,0)"); - int pos1 = 0; - int pos2 = 0; - int size = 254; - int l = TextEditor1.get(iTab).getText().length(); - String fragment; - while (pos1 <= l) { - pos2 = pos1 + size; - if (pos2 > l) { - pos2 = l; - } - fragment = new String(TextEditor1.get(iTab).getText().substring(pos1, pos2)); - sendBuf.add(fragment); - pos1 += size; - } - sendBuf.add("ESP_cmd_close"); - sendBuf.add("\r\n"); - if (FileAutoRun.isSelected()) { - sendBuf.add("dofile(\"" + ft + "\")"); - } - success = SendTurboTimerStart(); - log("FileSaveESP-Turbo: Starting..."); - return success; - } - - public boolean SendTurboTimerStart() { - startTime = System.currentTimeMillis(); - SendLock(); - rcvBuf = ""; - try { - serialPort.removeEventListener(); - } catch (Exception e) { - } - try { - serialPort.addEventListener(new PortTurboReader(), portMask); - } catch (SerialPortException e) { - log("DataTurboSender: Add EventListener Error. Canceled."); - return false; - } - int delay = 0; - j0(); - delay = Delay.getValue(); - if (delay == 0) { - delay = 10; - } - taskPerformer = new ActionListener() { - public void actionPerformed(ActionEvent evt) { - if (j < sendBuf.size()) { - send(addCR(sendBuf.get(j)), false); - sendPending = false; - } - } - }; - timer = new Timer(delay, taskPerformer); - timer.setRepeats(false); - log("DataTurboSender: start \"Smart Mode\""); - timer.setInitialDelay(delay); - WatchDog(); - timer.start(); - return true; - } - - private String addBS(String s) { - String bs = "" + (char) java.awt.event.KeyEvent.VK_BACK_SPACE + s; - log("bs = '" + bs + "'"); - return bs; - } - - public boolean pasteMode() { - return pasteMode; - } - - public boolean pasteMode(boolean newMode) { - pasteMode = newMode; - return pasteMode; - } - - public boolean SendTimerStart() { - startTime = System.currentTimeMillis(); - SendLock(); - rcvBuf = ""; - try { - serialPort.removeEventListener(); - } catch (Exception e) { - } - try { - if (DumbMode.isSelected()) { - serialPort.addEventListener(new PortReader(), portMask); - } else { - serialPort.addEventListener(new PortExtraReader(), portMask); - } - } catch (SerialPortException e) { - log("DataSender: Add EventListener Error. Canceled."); - return false; - } - int delay = 0; - j0(); - if (DumbMode.isSelected()) { // DumbMode - delay = LineDelay.getValue(); - if (OptionNodeMCU.isSelected()) { - taskPerformer = new ActionListener() { - public void actionPerformed(ActionEvent evt) { - if (j < sendBuf.size()) { - send(addCRLF(sendBuf.get(j).trim()), false); - inc_j(); - int div = sendBuf.size() - 1; - if (div == 0) { - div = 1; // for non-zero divide - } - ProgressBar.setValue((j * 100) / div); - if (j > sendBuf.size() - 1) { - timer.stop(); - StopSend(); - } - } - } - }; - } else { // MicroPython - taskPerformer = new ActionListener() { - public void actionPerformed(ActionEvent evt) { - if (j < sendBuf.size()) { - if ((j == 0) && pasteMode()) { - sendStart(); - } - send(addCRLF(sendBuf.get(j)), false); - inc_j(); - if ((j == sendBuf.size()) && pasteMode()) { - sendEnd(); - } - int div = sendBuf.size() - 1; - if (div == 0) { - div = 1; // for non-zero divide - } - ProgressBar.setValue((j * 100) / div); - if (j > sendBuf.size() - 1) { - timer.stop(); - pasteMode(true); - StopSend(); - } - } - } - }; - } - timer = new Timer(delay, taskPerformer); - timer.setRepeats(true); - timer.setInitialDelay(delay); - timer.start(); - log("DataSender: start \"Dumb Mode\""); - } else { // SmartMode - delay = Delay.getValue(); - if (delay == 0) { - delay = 10; - } - taskPerformer = new ActionListener() { - public void actionPerformed(ActionEvent evt) { - if (j < sendBuf.size()) { - log(Integer.toString(j)); - send(addCRLF(sendBuf.get(j).trim()), false); - sendPending = false; - } - } - }; - timer = new Timer(delay, taskPerformer); - timer.setRepeats(false); - timer.setInitialDelay(delay); - timer.start(); - log("DataSender: start \"Smart Mode\""); - WatchDog(); - } - return true; - } - - public void send(String s, boolean simple) { - if (!pOpen) { - log("DataSender: Serial port not open, operation FAILED."); - return; - } - if (busyIcon) { - Busy.setIcon(LED_BLUE); - SnippetsBusy.setIcon(LED_BLUE); - } else { - Busy.setIcon(LED_RED); - SnippetsBusy.setIcon(LED_RED); - } - busyIcon = !busyIcon; - try { - log("sending:" + s.replace("\r\n", "")); - serialPort.writeString(s); - } catch (SerialPortException ex) { - log("send FAIL:" + s.replace("\r\n", "")); - } - if (!DumbMode.isSelected() && !simple) { - try { - timeout.restart(); - } catch (Exception e) { - } - } - if (simple) { - Busy.setIcon(LED_GREY); - SnippetsBusy.setIcon(LED_GREY); - } - } - - public void sendBin(byte data) { - if (!pOpen) { - log("DataSender: Serial port not open, operation FAILED."); - return; - } - try { - serialPort.writeByte(data); - } catch (SerialPortException ex) { - log("send FAIL:" + (char) data); - } - } - - public void sendStart() { - byte data = 0x05; - sendBin(data); - } - - public void sendEnd() { - byte data = 0x04; - sendBin(data); - } - - public void Busy() { - Busy.setText("BUSY"); - Busy.setBackground(new java.awt.Color(153, 0, 0)); // RED - SnippetsBusy.setText("BUSY"); - SnippetsBusy.setBackground(new java.awt.Color(153, 0, 0)); // RED - ProgressBar.setValue(0); - ProgressBar.setVisible(true); - FileSendESP.setEnabled(false); - MenuItemFileSendESP.setEnabled(false); - MenuItemFileRemoveESP.setEnabled(false); - NodeReset.setEnabled(false); - FileDo.setEnabled(false); - MenuItemFileDo.setEnabled(false); - MenuItemEditSendSelected.setEnabled(false); - MenuItemEditorSendSelected.setEnabled(false); - ButtonSendSelected.setEnabled(false); - MenuItemEditSendLine.setEnabled(false); - MenuItemEditorSendLine.setEnabled(false); - ButtonSendLine.setEnabled(false); - SnippetRun.setEnabled(false); - ButtonSnippet0.setEnabled(false); - ButtonSnippet1.setEnabled(false); - ButtonSnippet2.setEnabled(false); - ButtonSnippet3.setEnabled(false); - ButtonSnippet4.setEnabled(false); - ButtonSnippet5.setEnabled(false); - ButtonSnippet6.setEnabled(false); - ButtonSnippet7.setEnabled(false); - ButtonSnippet8.setEnabled(false); - ButtonSnippet9.setEnabled(false); - ButtonSnippet10.setEnabled(false); - ButtonSnippet11.setEnabled(false); - ButtonSnippet12.setEnabled(false); - ButtonSnippet13.setEnabled(false); - ButtonSnippet14.setEnabled(false); - ButtonSnippet15.setEnabled(false); - } - - public void SendLock() { - Busy(); - FileSaveESP.setText("Cancel"); - FileSaveESP.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/abort.png"))); - FileSaveESP.setSelected(true); - } - - public void Idle() { - Busy.setText("IDLE"); - Busy.setBackground(new java.awt.Color(0, 153, 0)); // GREEN - Busy.setIcon(LED_GREY); - SnippetsBusy.setText("IDLE"); - SnippetsBusy.setBackground(new java.awt.Color(0, 153, 0)); // GREEN - SnippetsBusy.setIcon(LED_GREY); - ProgressBar.setVisible(false); - FileSendESP.setSelected(true); - UpdateButtons(); - UpdateEditorButtons(); - } - - public void UpdateLED() { - pOpen = Open.isSelected(); - if (!pOpen) { - PortDTR.setIcon(LED_GREY); - PortRTS.setIcon(LED_GREY); - PortCTS.setIcon(LED_GREY); - Open.setText("Open"); - Open.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/connect1.png"))); - PortOpenLabel.setIcon(LED_GREY); - return; - } - Open.setText("Close"); - Open.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/disconnect1.png"))); - PortOpenLabel.setIcon(LED_GREEN); - UpdateLedCTS(); - if (PortDTR.isSelected()) { - PortDTR.setIcon(LED_GREEN); - } else { - PortDTR.setIcon(LED_GREY); - } - if (PortRTS.isSelected()) { - PortRTS.setIcon(LED_GREEN); - } else { - PortRTS.setIcon(LED_GREY); - } - if (portJustOpen) { - PortOpenLabel.setIcon(LED_RED); - } - } - - public void SendUnLock() { - Idle(); - FileSaveESP.setText("Save to ESP"); - FileSaveESP.setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/move.png"))); - FileSaveESP.setSelected(false); - FileSendESP.setSelected(false); - - DisablingNotImplemented(); - - } - - public void SetSnippetEditButtonsTooltip() { - // should be called after loading, setting or editing any of the Snippet-Names - // eg after SnippetSaveActionPerformed() and LoadSnippets () - // Mike, DL2ZAP 2015-01-04 - SnippetEdit0.setToolTipText(ButtonSnippet0.getText()); - SnippetEdit1.setToolTipText(ButtonSnippet1.getText()); - SnippetEdit2.setToolTipText(ButtonSnippet2.getText()); - SnippetEdit3.setToolTipText(ButtonSnippet3.getText()); - SnippetEdit4.setToolTipText(ButtonSnippet4.getText()); - SnippetEdit5.setToolTipText(ButtonSnippet5.getText()); - SnippetEdit6.setToolTipText(ButtonSnippet6.getText()); - SnippetEdit7.setToolTipText(ButtonSnippet7.getText()); - SnippetEdit8.setToolTipText(ButtonSnippet8.getText()); - SnippetEdit9.setToolTipText(ButtonSnippet9.getText()); - SnippetEdit10.setToolTipText(ButtonSnippet10.getText()); - SnippetEdit11.setToolTipText(ButtonSnippet11.getText()); - SnippetEdit13.setToolTipText(ButtonSnippet13.getText()); - SnippetEdit13.setToolTipText(ButtonSnippet13.getText()); - SnippetEdit14.setToolTipText(ButtonSnippet14.getText()); - SnippetEdit15.setToolTipText(ButtonSnippet15.getText()); - } - - boolean SaveDownloadedFile() { - boolean success = false; - log("Saving downloaded file..."); - chooser.rescanCurrentDirectory(); - File f = new File(DownloadedFileName); - javax.swing.filechooser.FileFilter flt = chooser.getFileFilter(); - chooser.resetChoosableFileFilters(); - chooser.setSelectedFile(f); - chooser.setDialogTitle("Save downloaded from ESP file \"" + DownloadedFileName + "\" As..."); - int returnVal = chooser.showSaveDialog(null); - if (returnVal != JFileChooser.APPROVE_OPTION) { - log("Saving abort by user."); - return success; - } - f = chooser.getSelectedFile(); - chooser.setFileFilter(flt); - DownloadedFileName = f.getName(); - SavePath(); - if (f.exists()) { - log("File " + DownloadedFileName + " already exist, waiting user choice"); - int shouldWrite = Dialog("File " + DownloadedFileName + " already exist. Overwrite?", JOptionPane.YES_NO_OPTION); - if (shouldWrite != JOptionPane.YES_OPTION) { - log("Saving canceled by user, because file " + DownloadedFileName + " already exist"); - return success; - } else { - log("File " + DownloadedFileName + " will be overwriten by user choice"); - } - } else { // we saving file, when open - log("We saving new file " + DownloadedFileName); - } - try { - log("Try to saving file " + DownloadedFileName + " ..."); - fos = new FileOutputStream(f); - fos.write(PacketsByte); - fos.flush(); - log("Save file " + DownloadedFileName + ": Success, size:" + Long.toString(f.length())); - success = true; - } catch (Exception e) { - log("Save file " + DownloadedFileName + ": FAIL."); - log(e.toString()); - JOptionPane.showMessageDialog(null, "Error, file " + DownloadedFileName + " not saved!"); - } - try { - if (fos != null) { - fos.close(); - } - } catch (IOException e) { - log(e.toString()); - } - return success; - } - - private void UploadFiles() { - if (!pOpen) { - log("Uploader: Serial port not open, operation FAILED."); - return; - } - if (portJustOpen) { - log("Uploader: Communication with MCU not yet established."); - return; - } - chooser.rescanCurrentDirectory(); - javax.swing.filechooser.FileFilter flt = chooser.getFileFilter(); - chooser.resetChoosableFileFilters(); - chooser.setDialogTitle("Select file to upload to ESP"); - chooser.setMultiSelectionEnabled(true); - int returnVal = chooser.showOpenDialog(LeftBasePane); - mFile = new ArrayList(); - log("Uploader: chooser selected file:" + chooser.getSelectedFiles().length); - if (mFile.addAll(Arrays.asList(chooser.getSelectedFiles()))) { -// if ( mFile.add(chooser.getSelectedFile()) ) { - mFileIndex = 0; - } else { - mFileIndex = -1; - log("Uploader: no file selected"); - return; - } - chooser.setFileFilter(flt); -// chooser.setMultiSelectionEnabled(false); - if (!(returnVal == JFileChooser.APPROVE_OPTION)) { - log("Uploader: canceled by user"); - return; - } - SavePath(); - UploadFilesStart(); - } - - private void UploadFilesStart() { - UploadFileName = mFile.get(mFileIndex).getName(); - sendBuf = new ArrayList(); - PacketsData = new ArrayList(); - PacketsCRC = new ArrayList(); - PacketsSize = new ArrayList(); - PacketsNum = new ArrayList(); - sendPacketsCRC = new ArrayList(); - rcvBuf = ""; - PacketsByte = new byte[0]; - rx_byte = new byte[0]; - tx_byte = new byte[0]; - - if (!LoadBinaryFile(mFile.get(mFileIndex))) { - log("Uploader: loaded fail!"); - return; - } - int lastPacketSize = SplitDataToPackets(); - if (lastPacketSize < 0) { - log("Uploader: SplitDataToPackets fail!"); - return; - } - log("sendPackets=" + Integer.toString(sendPackets.size())); - String cmd = "_up=function(n,l,ll)\n" - + " local cs = 0\n" - + " local i = 0\n" - + " print(\">\"..\" \")\n" - + " uart.on(\"data\", l, function(b) \n" - + " i = i + 1\n" - + " file.open(\"" + UploadFileName + "\",'a+')\n" - + " file.write(b)\n" - + " file.close()\n" - + " cs=0\n" - + " for j=1, l do\n" - + " cs = cs + (b:byte(j)*20)%19\n" - + " end\n" - + " uart.write(0,\"~~~CRC-\"..\"START~~~\"..cs..\"~~~CRC-\"..\"END~~~\")\n" - + " if i == n then\n" - + " uart.on(\"data\")\n" - + " end\n" - + " if i == n-1 and ll>0 then\n" - + " _up(1,ll,ll)\n" - + " end\n" - + " end,0)\n" - + "end\n" - + "file.remove(\"" + UploadFileName + "\")\n"; - sendBuf = cmdPrep(cmd); - int startPackets; - if (packets == 1) { // small file - startPackets = lastPacketSize; - } else { - startPackets = SendPacketSize; - } - sendBuf.add("_up(" + Integer.toString(packets) + "," + Integer.toString(startPackets) + "," + Integer.toString(lastPacketSize) + ")"); - log("Uploader: Starting..."); - startTime = System.currentTimeMillis(); - SendLock(); - rx_data = ""; - rcvBuf = ""; - try { - serialPort.removeEventListener(); - } catch (Exception e) { - log(e.toString()); - } - try { - serialPort.addEventListener(new PortFilesUploader(), portMask); - log("Uploader: Add EventListener: Success."); - } catch (SerialPortException e) { - log("Uploader: Add EventListener Error. Canceled."); - SendUnLock(); - return; - } - int delay = 10; - j0(); - taskPerformer = new ActionListener() { - public void actionPerformed(ActionEvent evt) { - //log("send j="+Integer.toString(j)); - if (j < sendBuf.size()) { - send(addCR(sendBuf.get(j)), false); - sendPending = false; - } else if ((j - sendBuf.size()) < sendPackets.size()) { - sendBytes(sendPackets.get(j - sendBuf.size())); - sendPending = false; - } else { - log("Sorry, bug found: j overflow"); - } - } - }; - timer = new Timer(delay, taskPerformer); - timer.setRepeats(false); - log("Uploader: Start"); - TerminalAdd("Uploading to ESP file " + UploadFileName + "..."); - timer.setInitialDelay(delay); - WatchDog(); - timer.start(); - } - - private boolean LoadBinaryFile(File f) { - boolean success = false; - try { - log("BinaryFileLoader: Try to load file " + f.getName() + " ..."); - fis = new FileInputStream(f); - DataInputStream dis = new DataInputStream(fis); - tx_byte = new byte[dis.available()]; - int size = dis.read(tx_byte); - dis.close(); - fis.close(); - if (size == f.length()) { - log("BinaryFileLoader: Load file " + f.getName() + ": Success, size:" + Long.toString(f.length())); - success = true; - } else { - log("BinaryFileLoader: Load file " + f.getName() + ": Fail, file size:" + Long.toString(f.length()) + ", read:" + Integer.toString(size)); - } - } catch (IOException e) { - log("BinaryFileLoader: Load file " + f.getName() + ": FAIL."); - log(e.toString()); - JOptionPane.showMessageDialog(null, "BinaryFileLoader: Error, file " + f.getName() + " can't be read!"); - } - return success; - } - - private int SplitDataToPackets() { - sendPackets = new ArrayList(); - packets = tx_byte.length / SendPacketSize; - log("1. packets = " + Integer.toString(packets)); - if ((tx_byte.length % SendPacketSize) > 0) { - packets++; - } - log("2. packets = " + Integer.toString(packets)); - if (tx_byte.length < SendPacketSize) { - packets = 1; - } - int remain = tx_byte.length; - int lastPacketSize = -1; - byte[] b; - int pos = 0; - for (int i = 0; i < packets; i++) { - log("3. packet = " + Integer.toString(i)); - if (remain > SendPacketSize) { - b = new byte[SendPacketSize]; // default value is 200 - } else { - b = new byte[remain]; - lastPacketSize = remain; - } - System.arraycopy(tx_byte, pos, b, 0, b.length); - sendPackets.add(b); - log("BinaryFileLoader: Prepare next packet for send, len=" + Integer.toString(b.length)); - remain -= b.length; - pos += b.length; - } - log("BinaryFileLoader: Total packets prepared=" + Integer.toString(sendPackets.size())); - return lastPacketSize; - } - - public void sendBytes(byte[] b) { - if (!pOpen) { - log("BytesSender: Serial port not open, operation FAILED."); - return; - } - if (busyIcon) { - Busy.setIcon(LED_BLUE); - SnippetsBusy.setIcon(LED_BLUE); - } else { - Busy.setIcon(LED_RED); - SnippetsBusy.setIcon(LED_RED); - } - busyIcon = !busyIcon; - try { - //log("BytesSender sending:" + b.toString().replace("\r\n", "")); - serialPort.writeBytes(b); - } catch (SerialPortException ex) { - log("BytesSender send FAIL:" + b.toString().replace("\r\n", "")); - - } - } - - private class PortFilesUploader implements SerialPortEventListener { - - public void serialEvent(SerialPortEvent event) { - String data, crc_parsed; - boolean gotProperAnswer = false; - if (event.isRXCHAR() && event.getEventValue() > 0) { - try { - data = serialPort.readString(event.getEventValue()); - rcvBuf = rcvBuf + data; - rx_data = rx_data + data; - //log("rcv:"+data); - } catch (Exception e) { - data = ""; - log(e.toString()); - } - if (rcvBuf.contains("> ") && j < sendBuf.size()) { - //log("got intepreter answer, j="+Integer.toString(j)); - rcvBuf = ""; - gotProperAnswer = true; - } - if (rx_data.contains("~~~CRC-END~~~")) { - gotProperAnswer = true; - //log("Uploader: receiving packet checksum " + Integer.toString( j-sendBuf.size() +1) + "/" - // + Integer.toString( sendPackets.size() ) ); - // parsing answer - int start = rx_data.indexOf("~~~CRC-START~~~"); - //log("Before CRC parsing:"+rx_data); - crc_parsed = rx_data.substring(start + 15, rx_data.indexOf("~~~CRC-END~~~")); - rx_data = rx_data.substring(rx_data.indexOf("~~~CRC-END~~~") + 13); - //log("After CRC parsing:"+crc_parsed); - int crc_received = Integer.parseInt(crc_parsed); - int crc_expected = CRC(sendPackets.get(j - sendBuf.size())); - if (crc_expected == crc_received) { - log("Uploader: receiving checksum " + Integer.toString(j - sendBuf.size() + 1) + "/" - + Integer.toString(sendPackets.size()) - + " check: Success"); - sendPacketsCRC.add(true); - } else { - log("Uploader: receiving checksum " + Integer.toString(j - sendBuf.size() + 1) + "/" - + Integer.toString(sendPackets.size()) - + " check: Fail. Expected: " + Integer.toString(crc_expected) - + ", but received: " + Integer.toString(crc_received)); - sendPacketsCRC.add(false); - } - } - if (gotProperAnswer) { - try { - timeout.restart(); - } catch (Exception e) { - log(e.toString()); - } - ProgressBar.setValue(j * 100 / (sendBuf.size() + sendPackets.size() - 1)); - if (j < (sendBuf.size() + sendPackets.size())) { - if (timer.isRunning() || sendPending) { - // - } else { - inc_j(); - sendPending = true; - timer.start(); - } - } else { - try { - timer.stop(); - } catch (Exception e) { - } - } - } - if (j >= (sendBuf.size() + sendPackets.size())) { - LocalEcho = false; - send(addCR("_up=nil"), false); - try { - timer.stop(); - } catch (Exception e) { - } - try { - timeout.stop(); - } catch (Exception e) { - log(e.toString()); - } - //log("Uploader: send all data, finishing..."); - boolean success = true; - for (int i = 0; i < sendPacketsCRC.size(); i++) { - if (!sendPacketsCRC.get(i)) { - success = false; - } - } - if (success && (sendPacketsCRC.size() == sendPackets.size())) { - TerminalAdd("Success\r\n"); - log("Uploader: Success"); - } else { - TerminalAdd("Fail\r\n"); - log("Uploader: Fail"); - } - try { - serialPort.removeEventListener(); - } catch (Exception e) { - log(e.toString()); - } - try { - serialPort.addEventListener(new PortReader(), portMask); - } catch (Exception e) { - log(e.toString()); - } - StopSend(); - if (mFileIndex != -1 && mFileIndex++ < mFile.size()) { - UploadFilesStart(); - } - } - } else if (event.isCTS()) { - UpdateLedCTS(); - } else if (event.isERR()) { - log("FileManager: Unknown serial port error received."); - } - } - } - - private void ViewFile(String fn) { - String cmd = "_view=function()\n" - + "local _line\n" - + "if file.open(\"" + fn + "\",\"r\") then \n" - + " print(\"--FileView start\")\n" - + " repeat _line = file.readline() \n" - + " if (_line~=nil) then \n" - + " print(string.sub(_line,1,-2)) \n" - + " end \n" - + " until _line==nil\n" - + " file.close() \n" - + " print(\"--FileView done.\") \n" - + "else\n" - + " print(\"\\r--FileView error: can't open file\")\n" - + "end\n" - + "end\n" - + "_view()\n" - + "_view=nil\n"; - LocalEcho = false; - SendToESP(cmdPrep(cmd)); - } - - private void SetFirmwareType(int ftype) { - FirmwareType = ftype; - switch (ftype) { - case FIRMWARE_MPYTHON: - prefs.put(FIRMWARE, "MicroPython"); - PrefsFlush(); - chooser.setFileFilter(FILTER_PYTHON); - CommandsSetMicroPython(); - OptionMicroPython.setSelected(true); - CommandsMicroPython.setVisible(true); - CommandsNodeMCU.setVisible(false); - NodeFileManagerPane.setVisible(false); - PyFileManagerPane.setVisible(true); - DisablingNotImplemented(); - break; - case FIRMWARE_NODEMCU: - prefs.put(FIRMWARE, "NodeMCU"); - PrefsFlush(); - chooser.setFileFilter(FILTER_LUA); - CommandsSetNodeMCU(); - OptionNodeMCU.setSelected(true); - CommandsMicroPython.setVisible(false); - CommandsNodeMCU.setVisible(true); - NodeFileManagerPane.setVisible(true); - PyFileManagerPane.setVisible(false); - break; - default: - // AT-based - prefs.put(FIRMWARE, "AT"); - PrefsFlush(); - chooser.setFileFilter(FILTER_ALL); - CommandsSetAT(); - break; - } - LoadSnippets(); // reloading needed - } - - private void DisablingNotImplemented() { - if (OptionMicroPython.isSelected()) { - /* temporay disabling not emplemented functions */ - LineDelay.setValue(0); // micro python very fast :) - DumbMode.setSelected(true); - - MenuItemViewLeftExtra.setSelected(false); - //MenuItemViewFileManager.setSelected(false); - MenuItemViewRightExtra.setSelected(false); - MenuItemViewDonate.setSelected(false); - MenuItemFileDo.setEnabled(false); - FileDo.setEnabled(false); - MenuItemFileRemoveESP.setEnabled(false); - MenuESP.setEnabled(false); - FilesUpload.setEnabled(false); - //MenuItemFileSaveESP.setEnabled(false); - //FileSaveESP.setEnabled(false); - - FileAutoSaveESP.setSelected(false); - Condensed.setSelected(false); - Condensed.setEnabled(false); - - /* enabled items */ - MenuItemViewSnippets.setEnabled(true); - - } - } // DisablingNotImplemented - - private void cmdButtonGPIO(int gpio, int value) { - if (!OptionMicroPython.isSelected()) { - return; - } - if (!pOpen) { - log("Port not open, operation FAILED."); - return; - } - if (portJustOpen) { - log("ERROR: Communication with MCU not established."); - return; - } - log("Send command GPIO" + Integer.toString(gpio) + " : " + Integer.toString(value)); - String cmd = "import pyb;p=pyb.Pin(" + Integer.toString(gpio) + ",pyb.Pin.OUT);p.value(" + Integer.toString(value) + ")"; - btnSend(cmd); - } // cmdButtonGPIO - - private void cmdButtonGetGPIO(int gpio) { - if (!OptionMicroPython.isSelected()) { - return; - } - if (!pOpen) { - log("Port not open, operation FAILED."); - return; - } - if (portJustOpen) { - log("ERROR: Communication with MCU not established."); - return; - } - log("Send command GET GPIO" + Integer.toString(gpio)); - String cmd = "import pyb;p=pyb.Pin(" + Integer.toString(gpio) + ",pyb.Pin.IN);p.value()"; - btnSend(cmd); - } - - private boolean pySaveFileESP(String ft) { - boolean success = false; - log("pyFileSaveESP: Starting..."); - String[] content = TextEditor1.get(iTab).getText().split("\r?\n"); - if (pyFiler.Put(ft, content)) { - pasteMode(false); - success = SendTimerStart(); - } - return success; - } // pySaveFileESP - - private void AddPyFileButton(String FileName) { - PyFileAsButton.add(new javax.swing.JButton()); - int i = PyFileAsButton.size() - 1; - PyFileAsButton.get(i).setText(FileName); - PyFileAsButton.get(i).setAlignmentX(0.5F); - PyFileAsButton.get(i).setMargin(new java.awt.Insets(2, 2, 2, 2)); - PyFileAsButton.get(i).setMaximumSize(new java.awt.Dimension(130, 25)); - PyFileAsButton.get(i).setPreferredSize(new java.awt.Dimension(130, 25)); - PyFileAsButton.get(i).setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - PyFileAsButton.get(i).addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - PyFileAsButton1ActionPerformed(evt); - } - }); - // PopUp menu - FilePopupMenu.add(new javax.swing.JPopupMenu()); - int x = FilePopupMenu.size() - 1; - int y; - // PopUp menu items - /* - if (FileName.endsWith(".py")) { - FileAsButton.get(i).setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/lua.png"))); - FileAsButton.get(i).setToolTipText(FileAsButton.get(i).getActionCommand() + ", LeftClick - Run, RightClick - Other actions"); - AddMenuItemRun(x, FileName); - AddMenuItemCompile(x, FileName); - AddMenuItemSeparator(x); - AddMenuItemView(x, FileName); - AddMenuItemDump(x, FileName); - AddMenuItemEdit(x, FileName, size); - AddMenuItemDownload(x, FileName, size); - AddMenuItemRename(x, FileName); - AddMenuItemSeparator(x); - AddMenuItemRemove(x, FileName); - } else if (FileName.endsWith(".lc")) { - FileAsButton.get(i).setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/lc.png"))); - FileAsButton.get(i).setToolTipText(FileAsButton.get(i).getActionCommand() + ", LeftClick - Run, RightClick - Other actions"); - AddMenuItemRun(x, FileName); - AddMenuItemSeparator(x); - AddMenuItemDump(x, FileName); - AddMenuItemDownload(x, FileName, size); - AddMenuItemRename(x, FileName); - AddMenuItemSeparator(x); - AddMenuItemRemove(x, FileName); - } else { - FileAsButton.get(i).setIcon(new javax.swing.ImageIcon(getClass().getResource("/resources/file.png"))); - FileAsButton.get(i).setToolTipText(FileAsButton.get(i).getActionCommand() + ", LeftClick - View, RightClick - Other actions"); - AddMenuItemView(x, FileName); - AddMenuItemDump(x, FileName); - AddMenuItemEdit(x, FileName, size); - AddMenuItemDownload(x, FileName, size); - AddMenuItemRename(x, FileName); - AddMenuItemSeparator(x); - AddMenuItemRemove(x, FileName); - } - - FileAsButton.get(i).setComponentPopupMenu(FilePopupMenu.get(x)); - */ - PyFileManagerPane.add(PyFileAsButton.get(i)); - - } // AddPyFileButton - - private void ClearPyFileManager() { - if (!MenuItemViewFileManager.isSelected()) { - return; - } - PyFileManagerPane.removeAll(); - PyFileManagerPane.add(PyListDir); - PyFileManagerPane.repaint(); - PyFileAsButton = new ArrayList(); - } // ClearPyFileManager - - private void PyListFiles() { - if (portJustOpen) { - log("ERROR: Communication with MCU not yet established."); - return; - } - try { - serialPort.removeEventListener(); - } catch (Exception e) { - log(e.toString()); - return; - } - try { - serialPort.addEventListener(new PortPyFilesReader(), portMask); - log("pyFileManager: Add EventListener: Success."); - } catch (SerialPortException e) { - log("pyFileManager: Add EventListener Error. Canceled."); - return; - } - ClearPyFileManager(); - rx_data = ""; - rcvBuf = ""; - log("pyFileManager: Starting..."); - String cmd = "import os;os.listdir('" + pyFiler.pwd() + "')"; - btnSend(cmd); - WatchDogPyListDir(); - } // PyListFiles - - private void WatchDogPyListDir() { - watchDog = new ActionListener() { - public void actionPerformed(ActionEvent evt) { - //StopSend(); - Toolkit.getDefaultToolkit().beep(); - TerminalAdd("Waiting answer from ESP - Timeout reached. Command aborted."); - log("Waiting answer from ESP - Timeout reached. Command aborted."); - try { - serialPort.removeEventListener(); - serialPort.addEventListener(new PortReader(), portMask); - } catch (Exception e) { - log(e.toString()); - } - SendUnLock(); - } - }; - int delay = AnswerDelay.getValue() * 1000; - if (delay == 0) { - delay = 300; - } - - delay = 3000; - - timeout = new Timer(delay, watchDog); - timeout.setRepeats(false); - timeout.setInitialDelay(delay); - timeout.start(); - } // WatchDogPyListDir - - private class PortPyFilesReader implements SerialPortEventListener { - - public void serialEvent(SerialPortEvent event) { - String data; - if (event.isRXCHAR() && event.getEventValue() > 0) { - try { - data = serialPort.readString(event.getEventValue()); - rcvBuf = rcvBuf + data; - rx_data = rx_data + data; - TerminalAdd(data); - } catch (Exception e) { - data = ""; - log(e.toString()); - } - if (rx_data.contains("']\r\n>>>")) { - try { - timeout.stop(); - } catch (Exception e) { - log(e.toString()); - } - log("FileManager: File list found! Do parsing..."); - try { - int start = rx_data.indexOf("["); - rx_data = rx_data.substring(start + 1, rx_data.indexOf("]")); - rx_data = rx_data.replace("'", ""); - s = rx_data.split(", "); - Arrays.sort(s); - TerminalAdd("\r\n----------------------------"); - for (String subs : s) { - TerminalAdd("\r\n" + subs); - if (subs.trim().length() > 0) { - AddPyFileButton(subs); - log("FileManager found file " + subs); - } - } - if (PyFileAsButton.size() == 0) { - TerminalAdd("No files found."); - } - TerminalAdd("\r\n----------------------------\r\n> "); - PyFileManagerPane.invalidate(); - PyFileManagerPane.doLayout(); - PyFileManagerPane.repaint(); - PyFileManagerPane.requestFocusInWindow(); - log("pyFileManager: File list parsing done, found " + PyFileAsButton.size() + " file(s)."); - } catch (Exception e) { - log(e.toString()); - } - try { - serialPort.removeEventListener(); - serialPort.addEventListener(new PortReader(), portMask); - } catch (Exception e) { - log(e.toString()); - } -// SendUnLock(); - } - } else if (event.isCTS()) { - UpdateLedCTS(); - } else if (event.isERR()) { - log("FileManager: Unknown serial port error received."); - } - } // serialEvent - } // PortPyFilesReader -} // ESPlorer diff --git a/ESPlorer/src/ESPlorer/pyFiler.java b/ESPlorer/src/ESPlorer/pyFiler.java deleted file mode 100644 index 216043b..0000000 --- a/ESPlorer/src/ESPlorer/pyFiler.java +++ /dev/null @@ -1,89 +0,0 @@ -/** - * - * @author 4refr0nt - */ -package ESPlorer; - -import static ESPlorer.ESPlorer.sendBuf; -import java.util.ArrayList; - -public class pyFiler { - - private static String dir = ""; - - public static final int OK = 0; - public static final int ERROR_COMMUNICATION = 1; - - public pyFiler() { - - } - - public String ListDir() { - return ""; - } - - public boolean Put(String ft, String[] s) { - - boolean success = true; - sendBuf = new ArrayList(); - - sendBuf.add("f=open('" + escape(ft) + "','w')"); - for (String subs : s) { - sendBuf.add("f.write('" + escape(subs) + "\\n')"); - } - sendBuf.add("f.close()"); - - return success; - } - - public boolean Get() { - return false; - } - - public boolean Rename() { - return false; - } - - public int Length() { - return 0; - } - - public String cd() { - return dir; - } - - public String pwd() { - return dir; - } - - public String GetParent() { - return ""; - } - - public boolean isExist() { - return false; - } - - public String escape(String str) { - char ch; - StringBuilder buf = new StringBuilder(str.length() * 2); - int intValue; - - for (int i = 0, l = str.length(); i < l; ++i) { - - ch = str.charAt(i); - if (ch == '"') { - //intValue = ch; - buf.append("\\"); - //buf.append(ch); - } else if (ch == '\'') { - intValue = ch; - buf.append("\\"); - //buf.append(intValue); -// } else { - } - buf.append(ch); - } - return buf.toString(); - } // escape -} // pyFiler diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/DefaultTokenMakerFactory.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/DefaultTokenMakerFactory.java deleted file mode 100644 index 152e0cf..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/DefaultTokenMakerFactory.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * 12/14/2008 - * - * DefaultTokenMakerFactory.java - The default TokenMaker factory. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea; - - -/** - * The default implementation of TokenMakerFactory. This factory - * can create {@link TokenMaker}s for all languages known to - * {@link RSyntaxTextArea}. - * - * @author Robert Futrell - * @version 1.0 - */ -class DefaultTokenMakerFactory extends AbstractTokenMakerFactory - implements SyntaxConstants { - - - /** - * {@inheritDoc} - */ - @Override - protected void initTokenMakerMap() { - - String pkg = "org.fife.ui.rsyntaxtextarea.modes."; - - putMapping(SYNTAX_STYLE_NONE, pkg + "PlainTextTokenMaker"); - putMapping(SYNTAX_STYLE_ACTIONSCRIPT, pkg + "ActionScriptTokenMaker"); - putMapping(SYNTAX_STYLE_ASSEMBLER_X86, pkg + "AssemblerX86TokenMaker"); - putMapping(SYNTAX_STYLE_BBCODE, pkg + "BBCodeTokenMaker"); - putMapping(SYNTAX_STYLE_C, pkg + "CTokenMaker"); - putMapping(SYNTAX_STYLE_CLOJURE, pkg + "ClojureTokenMaker"); - putMapping(SYNTAX_STYLE_CPLUSPLUS, pkg + "CPlusPlusTokenMaker"); - putMapping(SYNTAX_STYLE_CSHARP, pkg + "CSharpTokenMaker"); - putMapping(SYNTAX_STYLE_CSS, pkg + "CSSTokenMaker"); - putMapping(SYNTAX_STYLE_D, pkg + "DTokenMaker"); - putMapping(SYNTAX_STYLE_DART, pkg + "DartTokenMaker"); - putMapping(SYNTAX_STYLE_DELPHI, pkg + "DelphiTokenMaker"); - putMapping(SYNTAX_STYLE_DTD, pkg + "DtdTokenMaker"); - putMapping(SYNTAX_STYLE_FORTRAN, pkg + "FortranTokenMaker"); - putMapping(SYNTAX_STYLE_GROOVY, pkg + "GroovyTokenMaker"); - putMapping(SYNTAX_STYLE_HTACCESS, pkg + "HtaccessTokenMaker"); - putMapping(SYNTAX_STYLE_HTML, pkg + "HTMLTokenMaker"); - putMapping(SYNTAX_STYLE_JAVA, pkg + "JavaTokenMaker"); - putMapping(SYNTAX_STYLE_JAVASCRIPT, pkg + "JavaScriptTokenMaker"); - putMapping(SYNTAX_STYLE_JSHINTRC, pkg + "JshintrcTokenMaker"); - putMapping(SYNTAX_STYLE_JSON, pkg + "JsonTokenMaker"); - putMapping(SYNTAX_STYLE_JSP, pkg + "JSPTokenMaker"); - putMapping(SYNTAX_STYLE_LATEX, pkg + "LatexTokenMaker"); - putMapping(SYNTAX_STYLE_LESS, pkg + "LessTokenMaker"); - putMapping(SYNTAX_STYLE_LISP, pkg + "LispTokenMaker"); - putMapping(SYNTAX_STYLE_LUA, pkg + "LuaTokenMaker"); - putMapping(SYNTAX_STYLE_MAKEFILE, pkg + "MakefileTokenMaker"); - putMapping(SYNTAX_STYLE_MXML, pkg + "MxmlTokenMaker"); - putMapping(SYNTAX_STYLE_NSIS, pkg + "NSISTokenMaker"); - putMapping(SYNTAX_STYLE_PERL, pkg + "PerlTokenMaker"); - putMapping(SYNTAX_STYLE_PHP, pkg + "PHPTokenMaker"); - putMapping(SYNTAX_STYLE_PROPERTIES_FILE,pkg + "PropertiesFileTokenMaker"); - putMapping(SYNTAX_STYLE_PYTHON, pkg + "PythonTokenMaker"); - putMapping(SYNTAX_STYLE_RUBY, pkg + "RubyTokenMaker"); - putMapping(SYNTAX_STYLE_SAS, pkg + "SASTokenMaker"); - putMapping(SYNTAX_STYLE_SCALA, pkg + "ScalaTokenMaker"); - putMapping(SYNTAX_STYLE_SQL, pkg + "SQLTokenMaker"); - putMapping(SYNTAX_STYLE_TCL, pkg + "TclTokenMaker"); - putMapping(SYNTAX_STYLE_UNIX_SHELL, pkg + "UnixShellTokenMaker"); - putMapping(SYNTAX_STYLE_VISUAL_BASIC, pkg + "VisualBasicTokenMaker"); - putMapping(SYNTAX_STYLE_WINDOWS_BATCH, pkg + "WindowsBatchTokenMaker"); - putMapping(SYNTAX_STYLE_XML, pkg + "XMLTokenMaker"); - - } - - -} \ No newline at end of file diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/DefaultTokenPainter.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/DefaultTokenPainter.java deleted file mode 100644 index af47654..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/DefaultTokenPainter.java +++ /dev/null @@ -1,272 +0,0 @@ -/* - * 03/16/2013 - * - * DefaultTokenPainter - Standard implementation of a token painter. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea; - -import java.awt.Color; -import java.awt.FontMetrics; -import java.awt.Graphics2D; -import java.awt.geom.Rectangle2D; -import javax.swing.text.TabExpander; - - -/** - * Standard implementation of a token painter. - * - * @author Robert Futrell - * @version 1.0 - */ -class DefaultTokenPainter implements TokenPainter { - - /** - * Rectangle used for filling token backgrounds. - */ - private Rectangle2D.Float bgRect; - - /** - * Micro-optimization; buffer used to compute tab width. If the width is - * correct it's not re-allocated, to prevent lots of very small garbage. - * Only used when painting tab lines. - */ - private static char[] tabBuf; - - - public DefaultTokenPainter() { - bgRect = new Rectangle2D.Float(); - } - - - /** - * {@inheritDoc} - */ - public final float paint(Token token, Graphics2D g, float x, float y, - RSyntaxTextArea host, TabExpander e) { - return paint(token, g, x,y, host, e, 0); - } - - - /** - * {@inheritDoc} - */ - public float paint(Token token, Graphics2D g, float x, float y, - RSyntaxTextArea host, TabExpander e, float clipStart) { - return paintImpl(token, g, x, y, host, e, clipStart, false, false); - } - - - /** - * {@inheritDoc} - */ - public float paint(Token token, Graphics2D g, float x, float y, - RSyntaxTextArea host, TabExpander e, float clipStart, - boolean paintBG) { - return paintImpl(token, g, x, y, host, e, clipStart, !paintBG, false); - } - - - /** - * Paints the background of a token. - * - * @param x The x-coordinate of the token. - * @param y The y-coordinate of the token. - * @param width The width of the token (actually, the width of the part of - * the token to paint). - * @param height The height of the token. - * @param g The graphics context with which to paint. - * @param fontAscent The ascent of the token's font. - * @param host The text area. - * @param color The color with which to paint. - */ - protected void paintBackground(float x, float y, float width, float height, - Graphics2D g, int fontAscent, RSyntaxTextArea host, - Color color) { - g.setColor(color); - bgRect.setRect(x,y-fontAscent, width,height); - //g.fill(bgRect); - g.fillRect((int)x, (int)(y-fontAscent), (int)width, (int)height); - } - - - /** - * Does the dirty-work of actually painting the token. - */ - protected float paintImpl(Token token, Graphics2D g, float x, float y, - RSyntaxTextArea host, TabExpander e, float clipStart, - boolean selected, boolean useSTC) { - - int origX = (int)x; - int textOffs = token.getTextOffset(); - char[] text = token.getTextArray(); - int end = textOffs + token.length(); - float nextX = x; - int flushLen = 0; - int flushIndex = textOffs; - Color fg = useSTC ? host.getSelectedTextColor() : - host.getForegroundForToken(token); - Color bg = selected ? null : host.getBackgroundForToken(token); - g.setFont(host.getFontForTokenType(token.getType())); - FontMetrics fm = host.getFontMetricsForTokenType(token.getType()); - - for (int i=textOffs; i 0) { - g.setColor(fg); - g.drawChars(text, flushIndex, flushLen, (int)x,(int)y); - flushLen = 0; - } - flushIndex = i + 1; - x = nextX; - break; - default: - flushLen += 1; - break; - } - } - - nextX = x+fm.charsWidth(text, flushIndex,flushLen); -java.awt.Rectangle r = host.getMatchRectangle(); - - if (flushLen>0 && nextX>=clipStart) { - if (bg!=null) { - paintBackground(x,y, nextX-x,fm.getHeight(), - g, fm.getAscent(), host, bg); - } - if (token.length()==1 && r!=null && r.x==x) { - ((RSyntaxTextAreaUI)host.getUI()).paintMatchedBracketImpl(g, host, r); - } - g.setColor(fg); - g.drawChars(text, flushIndex, flushLen, (int)x,(int)y); - } - - if (host.getUnderlineForToken(token)) { - g.setColor(fg); - int y2 = (int)(y+1); - g.drawLine(origX,y2, (int)nextX,y2); - } - - // Don't check if it's whitespace - some TokenMakers may return types - // other than Token.WHITESPACE for spaces (such as Token.IDENTIFIER). - // This also allows us to paint tab lines for MLC's. - if (host.getPaintTabLines() && origX==host.getMargin().left) {// && isWhitespace()) { - paintTabLines(token, origX, (int)y, (int)nextX, g, e, host); - } - - return nextX; - - } - - - /** - * {@inheritDoc} - */ - public float paintSelected(Token token, Graphics2D g, float x, float y, - RSyntaxTextArea host, TabExpander e, boolean useSTC) { - return paintSelected(token, g, x, y, host, e, 0, useSTC); - } - - - /** - * {@inheritDoc} - */ - public float paintSelected(Token token, Graphics2D g, float x, float y, - RSyntaxTextArea host, TabExpander e, float clipStart, - boolean useSTC) { - return paintImpl(token, g, x, y, host, e, clipStart, true, useSTC); - } - - - /** - * Paints dotted "tab" lines; that is, lines that show where your caret - * would go to on the line if you hit "tab". This visual effect is usually - * done in the leading whitespace token(s) of lines. - * - * @param token The token to render. - * @param x The starting x-offset of this token. It is assumed that this - * is the left margin of the text area (may be non-zero due to - * insets), since tab lines are only painted for leading whitespace. - * @param y The baseline where this token was painted. - * @param endX The ending x-offset of this token. - * @param g The graphics context. - * @param e Used to expand tabs. - * @param host The text area. - */ - protected void paintTabLines(Token token, int x, int y, int endX, - Graphics2D g, TabExpander e, RSyntaxTextArea host) { - - // We allow tab lines to be painted in more than just Token.WHITESPACE, - // i.e. for MLC's and Token.IDENTIFIERS (for TokenMakers that return - // whitespace as identifiers for performance). But we only paint tab - // lines for the leading whitespace in the token. So, if this isn't a - // WHITESPACE token, figure out the leading whitespace's length. - if (token.getType()!=Token.WHITESPACE) { - int offs = 0; - for (; offs0) { - // Only paint on even y-pixels to prevent doubling up between lines - y0++; - } - - // TODO: Go to endX (inclusive) if this token is last token in the line - Token next = token.getNextToken(); - if (next==null || !next.isPaintable()) { - endX++; - } - while (x0 { - - private int startOffs; - private int endOffs; - - - /** - * Constructor. - * - * @param startOffs The starting offset in the document, inclusive. - * @param endOffs The ending offset in the document, exclusive. - * @throws IllegalArgumentException If endOffs is less than - * startOffs, or either argument is less than zero. - */ - public DocumentRange(int startOffs, int endOffs) { - set(startOffs, endOffs); - } - - - /** - * Compares this document range to another. - * - * @param other Another document range. - * @return How the two should be sorted relative to each other. - */ - public int compareTo(DocumentRange other) { - if (other==null) { - return 1; - } - int diff = startOffs - other.startOffs; - if (diff!=0) { - return diff; - } - return endOffs - other.endOffs; - } - - - /** - * Returns whether this document range is equal to another one. - * - * @param other Another object, presumably a document range. - * @return Whether other is also a document range, and equal - * to this one. - */ - @Override - public boolean equals(Object other) { - if (other==this) { - return true; - } - if (other instanceof DocumentRange) { - return this.compareTo((DocumentRange)other)==0; - } - return false; - } - - - /** - * Gets the end offset of the range. - * - * @return The end offset. - * @see #getStartOffset() - */ - public int getEndOffset() { - return endOffs; - } - - - /** - * Gets the starting offset of the range. - * - * @return The starting offset. - * @see #getEndOffset() - */ - public int getStartOffset() { - return startOffs; - } - - - /** - * Overridden simply as a best practice, since {@link #equals(Object)} is - * overridden. - * - * @return The hash code for this object. - */ - @Override - public int hashCode() { - return startOffs + endOffs; - } - - - /** - * Returns whether this document range has zero length. This can happen, - * for example, with regex searches of forms like - * "foo|", where the right-hand sub-expression matches empty - * strings. - * - * @return Whether this document range has zero length. - */ - public boolean isZeroLength() { - return startOffs == endOffs; - } - - - /** - * Sets the document range. - * - * @param start The new start value, inclusive. - * @param end The new end value, exclusive. - * @throws IllegalArgumentException If end is less than - * start, or either argument is less than zero. - */ - public void set(int start, int end) { - if (start<0 || end<0) { - throw new IllegalArgumentException ( - "start and end must be >= 0 (" + start + "-" + end + ")"); - } - if (end - * - * ErrorStrips display ParserNotices from - * {@link Parser}s. Currently, the only way to get lines flagged in this - * component is to register a Parser on an RSyntaxTextArea and - * return ParserNotices for each line to display an icon for. - * The severity of each notice must be at least the threshold set by - * {@link #setLevelThreshold(org.fife.ui.rsyntaxtextarea.parser.ParserNotice.Level)} - * to be displayed in this error strip. The default threshold is - * {@link org.fife.ui.rsyntaxtextarea.parser.ParserNotice.Level#WARNING}.

- * - * An ErrorStrip can be added to a UI like so: - *

- * textArea = createTextArea();
- * textArea.addParser(new MyParser(textArea)); // Identifies lines to display
- * scrollPane = new RTextScrollPane(textArea, true);
- * ErrorStrip es = new ErrorStrip(textArea);
- * JPanel temp = new JPanel(new BorderLayout());
- * temp.add(scrollPane);
- * temp.add(es, BorderLayout.LINE_END);
- * 
- * - * @author Robert Futrell - * @version 0.5 - */ -/* - * Possible improvements: - * 1. Handle marked occurrence changes & "mark all" changes separately from - * parser changes. For each property change, call a method that removes - * the notices being reloaded from the Markers (removing any Markers that - * are now "empty"). - */ -public class ErrorStrip extends JPanel { - - /** - * The text area. - */ - private RSyntaxTextArea textArea; - - /** - * Listens for events in this component. - */ - private Listener listener; - - /** - * Whether "marked occurrences" in the text area should be shown in this - * error strip. - */ - private boolean showMarkedOccurrences; - - /** - * Whether markers for "mark all" highlights should be shown in this - * error strip. - */ - private boolean showMarkAll; - - /** - * Mapping of colors to brighter colors. This is kept to prevent - * unnecessary creation of the same Colors over and over. - */ - private Map brighterColors; - - /** - * Only notices of this severity (or worse) will be displayed in this - * error strip. - */ - private ParserNotice.Level levelThreshold; - - /** - * Whether the caret marker's location should be rendered. - */ - private boolean followCaret; - - /** - * The color to use for the caret marker. - */ - private Color caretMarkerColor; - - /** - * Where we paint the caret marker. - */ - private int caretLineY; - - /** - * The last location of the caret marker. - */ - private int lastLineY; - - /** - * The preferred width of this component. - */ - private static final int PREFERRED_WIDTH = 14; - - private static final String MSG = "org.fife.ui.rsyntaxtextarea.ErrorStrip"; - private static final ResourceBundle msg = ResourceBundle.getBundle(MSG); - - /** - * Constructor. - * - * @param textArea The text area we are examining. - */ - public ErrorStrip(RSyntaxTextArea textArea) { - this.textArea = textArea; - listener = new Listener(); - ToolTipManager.sharedInstance().registerComponent(this); - setLayout(null); // Manually layout Markers as they can overlap - addMouseListener(listener); - setShowMarkedOccurrences(true); - setShowMarkAll(true); - setLevelThreshold(ParserNotice.Level.WARNING); - setFollowCaret(true); - setCaretMarkerColor(Color.BLACK); - } - - - /** - * Overridden so we only start listening for parser notices when this - * component (and presumably the text area) are visible. - */ - @Override - public void addNotify() { - super.addNotify(); - textArea.addCaretListener(listener); - textArea.addPropertyChangeListener( - RSyntaxTextArea.PARSER_NOTICES_PROPERTY, listener); - textArea.addPropertyChangeListener( - RSyntaxTextArea.MARK_OCCURRENCES_PROPERTY, listener); - textArea.addPropertyChangeListener( - RSyntaxTextArea.MARKED_OCCURRENCES_CHANGED_PROPERTY, listener); - textArea.addPropertyChangeListener( - RSyntaxTextArea.MARK_ALL_OCCURRENCES_CHANGED_PROPERTY, listener); - refreshMarkers(); - } - - - /** - * Manually manages layout since this component uses no layout manager. - */ - @Override - public void doLayout() { - for (int i=0; i(5); // Usually small - } - Color brighter = brighterColors.get(c); - if (brighter==null) { - // Don't use c.brighter() as it doesn't work well for blue, and - // also doesn't return something brighter "enough." - int r = possiblyBrighter(c.getRed()); - int g = possiblyBrighter(c.getGreen()); - int b = possiblyBrighter(c.getBlue()); - brighter = new Color(r, g, b); - brighterColors.put(c, brighter); - } - return brighter; - } - - - /** - * returns the color to use when painting the caret marker. - * - * @return The caret marker color. - * @see #setCaretMarkerColor(Color) - */ - public Color getCaretMarkerColor() { - return caretMarkerColor; - } - - - /** - * Returns whether the caret's position should be drawn. - * - * @return Whether the caret's position should be drawn. - * @see #setFollowCaret(boolean) - */ - public boolean getFollowCaret() { - return followCaret; - } - - - /** - * {@inheritDoc} - */ - @Override - public Dimension getPreferredSize() { - int height = textArea.getPreferredScrollableViewportSize().height; - return new Dimension(PREFERRED_WIDTH, height); - } - - - /** - * Returns the minimum severity a parser notice must be for it to be - * displayed in this error strip. This will be one of the constants - * defined in the ParserNotice class. - * - * @return The minimum severity. - * @see #setLevelThreshold(org.fife.ui.rsyntaxtextarea.parser.ParserNotice.Level) - */ - public ParserNotice.Level getLevelThreshold() { - return levelThreshold; - } - - - /** - * Returns whether "mark all" highlights are shown in this error strip. - * - * @return Whether markers are shown for "mark all" highlights. - * @see #setShowMarkAll(boolean) - */ - public boolean getShowMarkAll() { - return showMarkAll; - } - - - /** - * Returns whether marked occurrences are shown in this error strip. - * - * @return Whether marked occurrences are shown. - * @see #setShowMarkedOccurrences(boolean) - */ - public boolean getShowMarkedOccurrences() { - return showMarkedOccurrences; - } - - - /** - * {@inheritDoc} - */ - @Override - public String getToolTipText(MouseEvent e) { - String text = null; - int line = yToLine(e.getY()); - if (line>-1) { - text = msg.getString("Line"); - text = MessageFormat.format(text, Integer.valueOf(line+1)); - } - return text; - } - - - /** - * Returns the y-offset in this component corresponding to a line in the - * text component. - * - * @param line The line. - * @return The y-offset. - * @see #yToLine(int) - */ - private int lineToY(int line) { - int h = textArea.getVisibleRect().height; - float lineCount = textArea.getLineCount(); - return (int)(((line-1)/(lineCount-1)) * (h-2)); - } - - - /** - * Overridden to (possibly) draw the caret's position. - * - * @param g The graphics context. - */ - @Override - protected void paintComponent(Graphics g) { - super.paintComponent(g); - if (caretLineY>-1) { - g.setColor(getCaretMarkerColor()); - g.fillRect(0, caretLineY, getWidth(), 2); - } - } - - - /** - * Returns a possibly brighter component for a color. - * - * @param i An RGB component for a color (0-255). - * @return A possibly brighter value for the component. - */ - private static final int possiblyBrighter(int i) { - if (i<255) { - i += (int)((255-i)*0.8f); - } - return i; - } - - - /** - * Refreshes the markers displayed in this error strip. - */ - private void refreshMarkers() { - - removeAll(); // listener is removed in Marker.removeNotify() - Map markerMap = new HashMap(); - - List notices = textArea.getParserNotices(); - for (ParserNotice notice : notices) { - if (notice.getLevel().isEqualToOrWorseThan(levelThreshold) || - (notice instanceof TaskNotice)) { - Integer key = Integer.valueOf(notice.getLine()); - Marker m = markerMap.get(key); - if (m==null) { - m = new Marker(notice); - m.addMouseListener(listener); - markerMap.put(key, m); - add(m); - } - else { - m.addNotice(notice); - } - } - } - - if (getShowMarkedOccurrences() && textArea.getMarkOccurrences()) { - List occurrences = textArea.getMarkedOccurrences(); - addMarkersForRanges(occurrences, markerMap, textArea.getMarkOccurrencesColor()); - } - - if (getShowMarkAll() /*&& textArea.getMarkAll()*/) { - Color markAllColor = textArea.getMarkAllHighlightColor(); - List ranges = textArea.getMarkAllHighlightRanges(); - addMarkersForRanges(ranges, markerMap, markAllColor); - } - - revalidate(); - repaint(); - - } - - - /** - * Adds markers for a list of ranges in the document. - * - * @param ranges The list of ranges in the document. - * @param markerMap A mapping from line number to Marker. - * @param color The color to use for the markers. - */ - private void addMarkersForRanges(List ranges, - Map markerMap, Color color) { - for (DocumentRange range : ranges) { - int line = 0; - try { - line = textArea.getLineOfOffset(range.getStartOffset()); - } catch (BadLocationException ble) { // Never happens - continue; - } - ParserNotice notice = new MarkedOccurrenceNotice(range, color); - Integer key = Integer.valueOf(line); - Marker m = markerMap.get(key); - if (m==null) { - m = new Marker(notice); - m.addMouseListener(listener); - markerMap.put(key, m); - add(m); - } - else { - if (!m.containsMarkedOccurence()) { - m.addNotice(notice); - } - } - } - } - - - /** - * {@inheritDoc} - */ - @Override - public void removeNotify() { - super.removeNotify(); - textArea.removeCaretListener(listener); - textArea.removePropertyChangeListener( - RSyntaxTextArea.PARSER_NOTICES_PROPERTY, listener); - textArea.removePropertyChangeListener( - RSyntaxTextArea.MARK_OCCURRENCES_PROPERTY, listener); - textArea.removePropertyChangeListener( - RSyntaxTextArea.MARKED_OCCURRENCES_CHANGED_PROPERTY, listener); - textArea.removePropertyChangeListener( - RSyntaxTextArea.MARK_ALL_OCCURRENCES_CHANGED_PROPERTY, listener); - } - - - /** - * Sets the color to use when painting the caret marker. - * - * @param color The new caret marker color. - * @see #getCaretMarkerColor() - */ - public void setCaretMarkerColor(Color color) { - if (color!=null) { - caretMarkerColor = color; - listener.caretUpdate(null); // Force repaint - } - } - - - /** - * Toggles whether the caret's current location should be drawn. - * - * @param follow Whether the caret's current location should be followed. - * @see #getFollowCaret() - */ - public void setFollowCaret(boolean follow) { - if (followCaret!=follow) { - if (followCaret) { - repaint(0,caretLineY, getWidth(),2); // Erase - } - caretLineY = -1; - lastLineY = -1; - followCaret = follow; - listener.caretUpdate(null); // Possibly repaint - } - } - - - /** - * Sets the minimum severity a parser notice must be for it to be displayed - * in this error strip. This should be one of the constants defined in - * the ParserNotice class. The default value is - * {@link org.fife.ui.rsyntaxtextarea.parser.ParserNotice.Level#WARNING}. - * - * @param level The new severity threshold. - * @see #getLevelThreshold() - * @see ParserNotice - */ - public void setLevelThreshold(ParserNotice.Level level) { - levelThreshold = level; - if (isDisplayable()) { - refreshMarkers(); - } - } - - - /** - * Sets whether "mark all" highlights are shown in this error strip. - * - * @param show Whether to show markers for "mark all" highlights. - * @see #getShowMarkAll() - */ - public void setShowMarkAll(boolean show) { - if (show!=showMarkAll) { - showMarkAll = show; - if (isDisplayable()) { // Skip this when we're first created - refreshMarkers(); - } - } - } - - - /** - * Sets whether marked occurrences are shown in this error strip. - * - * @param show Whether to show marked occurrences. - * @see #getShowMarkedOccurrences() - */ - public void setShowMarkedOccurrences(boolean show) { - if (show!=showMarkedOccurrences) { - showMarkedOccurrences = show; - if (isDisplayable()) { // Skip this when we're first created - refreshMarkers(); - } - } - } - - - /** - * Returns the line in the text area corresponding to a y-offset in this - * component. - * - * @param y The y-offset. - * @return The line. - * @see #lineToY(int) - */ - private final int yToLine(int y) { - int line = -1; - int h = textArea.getVisibleRect().height; - if (y-1) { - try { - int offs = textArea.getLineStartOffset(line); - textArea.setCaretPosition(offs); - } catch (BadLocationException ble) { // Never happens - UIManager.getLookAndFeel().provideErrorFeedback(textArea); - } - } - - } - - public void propertyChange(PropertyChangeEvent e) { - - String propName = e.getPropertyName(); - - // If they change whether marked occurrences are visible in editor - if (RSyntaxTextArea.MARK_OCCURRENCES_PROPERTY.equals(propName)) { - if (getShowMarkedOccurrences()) { - refreshMarkers(); - } - } - - // If parser notices changed. - // TODO: Don't update "mark all/occurrences" markers. - else if (RSyntaxTextArea.PARSER_NOTICES_PROPERTY.equals(propName)) { - refreshMarkers(); - } - - // If marked occurrences changed. - // TODO: Only update "mark occurrences" markers, not all of them. - else if (RSyntaxTextArea.MARKED_OCCURRENCES_CHANGED_PROPERTY. - equals(propName)) { - if (getShowMarkedOccurrences()) { - refreshMarkers(); - } - } - - // If "mark all" occurrences changed. - // TODO: Only update "mark all" markers, not all of them. - else if (RTextArea.MARK_ALL_OCCURRENCES_CHANGED_PROPERTY. - equals(propName)) { - if (getShowMarkAll()) { - refreshMarkers(); - } - } - - } - - } - - - /** - * A notice that wraps a "marked occurrence." - */ - private class MarkedOccurrenceNotice implements ParserNotice { - - private DocumentRange range; - private Color color; - - public MarkedOccurrenceNotice(DocumentRange range, Color color) { - this.range = range; - this.color = color; - } - - public int compareTo(ParserNotice other) { - return 0; // Value doesn't matter - } - - public boolean containsPosition(int pos) { - return pos>=range.getStartOffset() && pos notices; - - public Marker(ParserNotice notice) { - notices = new ArrayList(1); // Usually just 1 - addNotice(notice); - setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); - setSize(getPreferredSize()); - ToolTipManager.sharedInstance().registerComponent(this); - } - - public void addNotice(ParserNotice notice) { - notices.add(notice); - } - - public boolean containsMarkedOccurence() { - boolean result = false; - for (int i=0; i 1 - StringBuilder sb = new StringBuilder(""); - sb.append(msg.getString("MultipleMarkers")); - sb.append("
"); - for (int i=0; i"); - } - text = sb.toString(); - } - - return text; - - } - - protected void mouseClicked(MouseEvent e) { - ParserNotice pn = notices.get(0); - int offs = pn.getOffset(); - int len = pn.getLength(); - if (offs>-1 && len>-1) { // These values are optional - textArea.setSelectionStart(offs); - textArea.setSelectionEnd(offs+len); - } - else { - int line = pn.getLine(); - try { - offs = textArea.getLineStartOffset(line); - textArea.setCaretPosition(offs); - } catch (BadLocationException ble) { // Never happens - UIManager.getLookAndFeel().provideErrorFeedback(textArea); - } - } - } - - @Override - protected void paintComponent(Graphics g) { - - // TODO: Give "priorities" and always pick color of a notice with - // highest priority (e.g. parsing errors will usually be red). - - Color borderColor = getColor(); - if (borderColor==null) { - borderColor = Color.DARK_GRAY; - } - Color fillColor = getBrighterColor(borderColor); - - int w = getWidth(); - int h = getHeight(); - - g.setColor(fillColor); - g.fillRect(0,0, w,h); - - g.setColor(borderColor); - g.drawRect(0,0, w-1,h-1); - - } - - @Override - public void removeNotify() { - super.removeNotify(); - ToolTipManager.sharedInstance().unregisterComponent(this); - removeMouseListener(listener); - } - - public void updateLocation() { - int line = notices.get(0).getLine(); - int y = lineToY(line); - setLocation(2, y); - } - - } - - -} \ No newline at end of file diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/FileLocation.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/FileLocation.java deleted file mode 100644 index b5bc38c..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/FileLocation.java +++ /dev/null @@ -1,152 +0,0 @@ -/* - * 11/13/2008 - * - * FileLocation.java - Holds the location of a local or remote file. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea; - -import java.io.File; -import java.io.InputStream; -import java.io.IOException; -import java.io.OutputStream; -import java.net.MalformedURLException; -import java.net.URL; - - -/** - * Holds the location of a local or remote file. This provides a common way - * to read, write, and check properties of both local and remote files. - * - * @author Robert Futrell - * @version 1.0 - */ -public abstract class FileLocation { - - - /** - * Creates a {@link FileLocation} instance for the specified local file. - * - * @param fileFullPath The full path to a local file. - * @return The file's location. - */ - public static FileLocation create(String fileFullPath) { - if (fileFullPath.startsWith("http://") || - fileFullPath.startsWith("https://") || - fileFullPath.startsWith("ftp://")) { - try { - return new URLFileLocation(new URL(fileFullPath)); - } catch (MalformedURLException mue) { - throw new IllegalArgumentException( - "Not a valid URL: " + fileFullPath, mue); - } - } - return new FileFileLocation(new File(fileFullPath)); - } - - - /** - * Creates a {@link FileLocation} instance for the specified local file. - * - * @param file A local file. - * @return The file's location. - */ - public static FileLocation create(File file) { - return new FileFileLocation(file); - } - - - /** - * Creates a {@link FileLocation} instance for the specified file. - * - * @param url The URL of a file. - * @return The file's location. - */ - public static FileLocation create(URL url) { - if ("file".equalsIgnoreCase(url.getProtocol())) { - return new FileFileLocation(new File(url.getPath())); - } - return new URLFileLocation(url); - } - - - /** - * Returns the last time this file was modified, or - * {@link TextEditorPane#LAST_MODIFIED_UNKNOWN} if this value cannot be - * computed (such as for a remote file). - * - * @return The last time this file was modified. - */ - protected abstract long getActualLastModified(); - - - /** - * Returns the full path to the file. This will be stripped of - * sensitive information such as passwords for remote files. - * - * @return The full path to the file. - * @see #getFileName() - */ - public abstract String getFileFullPath(); - - - /** - * Returns the name of the file. - * - * @return The name of the file. - * @see #getFileFullPath() - */ - public abstract String getFileName(); - - - /** - * Opens an input stream for reading from this file. - * - * @return The input stream. - * @throws IOException If the file does not exist, or some other IO error - * occurs. - */ - protected abstract InputStream getInputStream() throws IOException; - - - /** - * Opens an output stream for writing this file. - * - * @return An output stream. - * @throws IOException If an IO error occurs. - */ - protected abstract OutputStream getOutputStream() throws IOException; - - - /** - * Returns whether this file location is a local file. - * - * @return Whether this is a local file. - * @see #isLocalAndExists() - */ - public abstract boolean isLocal(); - - - /** - * Returns whether this file location is a local file that already - * exists. - * - * @return Whether this file is local and actually exists. - * @see #isLocal() - */ - public abstract boolean isLocalAndExists(); - - - /** - * Returns whether this file location is a remote location. - * - * @return Whether this is a remote file location. - */ - public boolean isRemote() { - return !isLocal(); - } - - -} \ No newline at end of file diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/RSyntaxDocument.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/RSyntaxDocument.java deleted file mode 100644 index 335ec38..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/RSyntaxDocument.java +++ /dev/null @@ -1,675 +0,0 @@ -/* - * 10/16/2004 - * - * RSyntaxDocument.java - A document capable of syntax highlighting, used by - * RSyntaxTextArea. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea; - -import java.awt.event.ActionEvent; -import java.io.IOException; -import java.io.ObjectInputStream; -import java.util.Iterator; - -import javax.swing.Action; -import javax.swing.event.*; -import javax.swing.text.*; - -import org.fife.ui.rsyntaxtextarea.modes.AbstractMarkupTokenMaker; -import org.fife.ui.rtextarea.RDocument; -import org.fife.util.DynamicIntArray; - - -/** - * The document used by {@link org.fife.ui.rsyntaxtextarea.RSyntaxTextArea}. - * This document is like javax.swing.text.PlainDocument except that - * it also keeps track of syntax highlighting in the document. It has a "style" - * attribute associated with it that determines how syntax highlighting is done - * (i.e., what language is being highlighted).

- * - * Instances of RSyntaxTextArea will only accept instances of - * RSyntaxDocument, since it is this document that keeps - * track of syntax highlighting. All others will cause an exception to be - * thrown.

- * - * To change the language being syntax highlighted at any time, you merely have - * to call {@link #setSyntaxStyle}. Other than that, this document can be - * treated like any other save one caveat: all DocumentEvents of - * type CHANGE use their offset and length values to represent the - * first and last lines, respectively, that have had their syntax coloring - * change. This is really a hack to increase the speed of the painting code - * and should really be corrected, but oh well. - * - * @author Robert Futrell - * @version 1.0 - */ -public class RSyntaxDocument extends RDocument implements Iterable, - SyntaxConstants { - - /** - * Creates a {@link TokenMaker} appropriate for a given programming - * language. - */ - private transient TokenMakerFactory tokenMakerFactory; - - /** - * Splits text into tokens for the current programming language. - */ - private transient TokenMaker tokenMaker; - - /** - * The current syntax style. Only cached to keep this class serializable. - */ - private String syntaxStyle; - - /** - * Array of values representing the "last token type" on each line. This - * is used in cases such as multi-line comments: if the previous line - * ended with an (unclosed) multi-line comment, we can use this knowledge - * and start the current line's syntax highlighting in multi-line comment - * state. - */ - protected transient DynamicIntArray lastTokensOnLines; - - private transient int lastLine = -1; - private transient Token cachedTokenList; - private transient int useCacheCount = 0; - private transient int tokenRetrievalCount = 0; - - private transient Segment s; - - /** - * If this is set to true, debug information about how much - * token caching is helping is printed to stdout. - */ - private static final boolean DEBUG_TOKEN_CACHING = false; - - - /** - * Constructs a plain text document. A default root element is created, - * and the tab size set to 5. - * - * @param syntaxStyle The syntax highlighting scheme to use. - */ - public RSyntaxDocument(String syntaxStyle) { - this(null, syntaxStyle); - } - - - /** - * Constructs a plain text document. A default root element is created, - * and the tab size set to 5. - * - * @param tmf The TokenMakerFactory for this document. If - * this is null, a default factory is used. - * @param syntaxStyle The syntax highlighting scheme to use. - */ - public RSyntaxDocument(TokenMakerFactory tmf, String syntaxStyle) { - putProperty(tabSizeAttribute, Integer.valueOf(5)); - lastTokensOnLines = new DynamicIntArray(400); - lastTokensOnLines.add(Token.NULL); // Initial (empty) line. - s = new Segment(); - setTokenMakerFactory(tmf); - setSyntaxStyle(syntaxStyle); - } - - - /** - * Alerts all listeners to this document of an insertion. This is - * overridden so we can update our syntax highlighting stuff.

- * The syntax highlighting stuff has to be here instead of in - * insertUpdate because insertUpdate is not - * called by the undo/redo actions, but this method is. - * - * @param e The change. - */ - @Override - protected void fireInsertUpdate(DocumentEvent e) { - - cachedTokenList = null; - - /* - * Now that the text is actually inserted into the content and - * element structure, we can update our token elements and "last - * tokens on lines" structure. - */ - - Element lineMap = getDefaultRootElement(); - DocumentEvent.ElementChange change = e.getChange(lineMap); - Element[] added = change==null ? null : change.getChildrenAdded(); - - int numLines = lineMap.getElementCount(); - int line = lineMap.getElementIndex(e.getOffset()); - int previousLine = line - 1; - int previousTokenType = (previousLine>-1 ? - lastTokensOnLines.get(previousLine) : Token.NULL); - - // If entire lines were added... - if (added!=null && added.length>0) { - - Element[] removed = change.getChildrenRemoved(); - int numRemoved = removed!=null ? removed.length : 0; - - int endBefore = line + added.length - numRemoved; - //System.err.println("... adding lines: " + line + " - " + (endBefore-1)); - //System.err.println("... ... added: " + added.length + ", removed:" + numRemoved); - for (int i=line; i0). - - // Otherwise, text was inserted on a single line... - else { - - // Update last tokens for lines below until they stop changing. - updateLastTokensBelow(line, numLines, previousTokenType); - - } // End of else. - - // Let all listeners know about the insertion. - super.fireInsertUpdate(e); - - } - - - /** - * This method is called AFTER the content has been inserted into the - * document and the element structure has been updated.

- * The syntax-highlighting updates need to be done here (as opposed to - * an override of postRemoveUpdate) as this method is called - * in response to undo/redo events, whereas postRemoveUpdate - * is not.

- * Now that the text is actually inserted into the content and element - * structure, we can update our token elements and "last tokens on - * lines" structure. - * - * @param chng The change that occurred. - * @see #removeUpdate - */ - @Override - protected void fireRemoveUpdate(DocumentEvent chng) { - - cachedTokenList = null; - Element lineMap = getDefaultRootElement(); - int numLines = lineMap.getElementCount(); - - DocumentEvent.ElementChange change = chng.getChange(lineMap); - Element[] removed = change==null ? null : change.getChildrenRemoved(); - - // If entire lines were removed... - if (removed!=null && removed.length>0) { - - int line = change.getIndex(); // First line entirely removed. - int previousLine = line - 1; // Line before that. - int previousTokenType = (previousLine>-1 ? - lastTokensOnLines.get(previousLine) : Token.NULL); - - Element[] added = change.getChildrenAdded(); - int numAdded = added==null ? 0 : added.length; - - // Remove the cached last-token values for the removed lines. - int endBefore = line + removed.length - numAdded; - //System.err.println("... removing lines: " + line + " - " + (endBefore-1)); - //System.err.println("... added: " + numAdded + ", removed: " + removed.length); - - lastTokensOnLines.removeRange(line, endBefore); // Removing values for lines [line-(endBefore-1)]. - //System.err.println("--------- lastTokensOnLines.size() == " + lastTokensOnLines.getSize()); - - // Update last tokens for lines below until they've stopped changing. - updateLastTokensBelow(line, numLines, previousTokenType); - - } // End of if (removed!=null && removed.size()>0). - - // Otherwise, text was removed from just one line... - else { - - int line = lineMap.getElementIndex(chng.getOffset()); - if (line>=lastTokensOnLines.getSize()) - return; // If we're editing the last line in a document... - - int previousLine = line - 1; - int previousTokenType = (previousLine>-1 ? - lastTokensOnLines.get(previousLine) : Token.NULL); - //System.err.println("previousTokenType for line : " + previousLine + " is " + previousTokenType); - // Update last tokens for lines below until they've stopped changing. - updateLastTokensBelow(line, numLines, previousTokenType); - - } - - // Let all of our listeners know about the removal. - super.fireRemoveUpdate(chng); - - } - - - /** - * Returns the closest {@link TokenTypes "standard" token type} for a given - * "internal" token type (e.g. one whose value is < 0). - * - * @param type The token type. - * @return The closest "standard" token type. If a mapping is not defined - * for this language, then type is returned. - */ - public int getClosestStandardTokenTypeForInternalType(int type) { - return tokenMaker.getClosestStandardTokenTypeForInternalType(type); - } - - - /** - * Returns whether closing markup tags should be automatically completed. - * This method only returns true if - * {@link #getLanguageIsMarkup()} also returns true. - * - * @return Whether markup closing tags should be automatically completed. - * @see #getLanguageIsMarkup() - */ - public boolean getCompleteMarkupCloseTags() { - // TODO: Remove terrible dependency on AbstractMarkupTokenMaker - return getLanguageIsMarkup() && - ((AbstractMarkupTokenMaker)tokenMaker).getCompleteCloseTags(); - } - - - /** - * Returns whether the current programming language uses curly braces - * ('{' and '}') to denote code blocks. - * - * @param languageIndex The language index at the offset in question. - * Since some TokenMakers effectively have nested - * languages (such as JavaScript in HTML), this parameter tells the - * TokenMaker what sub-language to look at. - * @return Whether curly braces denote code blocks. - */ - public boolean getCurlyBracesDenoteCodeBlocks(int languageIndex) { - return tokenMaker.getCurlyBracesDenoteCodeBlocks(languageIndex); - } - - - /** - * Returns whether the current language is a markup language, such as - * HTML, XML or PHP. - * - * @return Whether the current language is a markup language. - */ - public boolean getLanguageIsMarkup() { - return tokenMaker.isMarkupLanguage(); - } - - - /** - * Returns the token type of the last token on the given line. - * - * @param line The line to inspect. - * @return The token type of the last token on the specified line. If - * the line is invalid, an exception is thrown. - */ - public int getLastTokenTypeOnLine(int line) { - return lastTokensOnLines.get(line); - } - - - /** - * Returns the text to place at the beginning and end of a - * line to "comment" it in this programming language. - * - * @return The start and end strings to add to a line to "comment" - * it out. A null value for either means there - * is no string to add for that part. A value of - * null for the array means this language - * does not support commenting/uncommenting lines. - */ - public String[] getLineCommentStartAndEnd(int languageIndex) { - return tokenMaker.getLineCommentStartAndEnd(languageIndex); - } - - - /** - * Returns whether tokens of the specified type should have "mark - * occurrences" enabled for the current programming language. - * - * @param type The token type. - * @return Whether tokens of this type should have "mark occurrences" - * enabled. - */ - boolean getMarkOccurrencesOfTokenType(int type) { - return tokenMaker.getMarkOccurrencesOfTokenType(type); - } - - - /** - * Returns the occurrence marker for the current language. - * - * @return The occurrence marker. - */ - OccurrenceMarker getOccurrenceMarker() { - return tokenMaker.getOccurrenceMarker(); - } - - - /** - * This method returns whether auto indentation should be done if Enter - * is pressed at the end of the specified line. - * - * @param line The line to check. - * @return Whether an extra indentation should be done. - */ - public boolean getShouldIndentNextLine(int line) { - Token t = getTokenListForLine(line); - t = t.getLastNonCommentNonWhitespaceToken(); - return tokenMaker.getShouldIndentNextLineAfter(t); - } - - - /** - * Returns the syntax style being used. - * - * @return The syntax style. - * @see #setSyntaxStyle(String) - */ - public String getSyntaxStyle() { - return syntaxStyle; - } - - - /** - * Returns a token list for the specified segment of text representing - * the specified line number. This method is basically a wrapper for - * tokenMaker.getTokenList that takes into account the last - * token on the previous line to assure token accuracy. - * - * @param line The line number of text in the document, - * >= 0. - * @return A token list representing the specified line. - */ - public final Token getTokenListForLine(int line) { - - tokenRetrievalCount++; - if (line==lastLine && cachedTokenList!=null) { - if (DEBUG_TOKEN_CACHING) { - useCacheCount++; - System.err.println("--- Using cached line; ratio now: " + - useCacheCount + "/" + tokenRetrievalCount); - } - return cachedTokenList; - } - lastLine = line; - - Element map = getDefaultRootElement(); - Element elem = map.getElement(line); - int startOffset = elem.getStartOffset(); - //int endOffset = (line==map.getElementCount()-1 ? elem.getEndOffset() - 1: - // elem.getEndOffset() - 1); - int endOffset = elem.getEndOffset() - 1; // Why always "-1"? - try { - getText(startOffset,endOffset-startOffset, s); - } catch (BadLocationException ble) { - ble.printStackTrace(); - return null; - } - int initialTokenType = line==0 ? Token.NULL : - getLastTokenTypeOnLine(line-1); - - //return tokenMaker.getTokenList(s, initialTokenType, startOffset); - cachedTokenList = tokenMaker.getTokenList(s, initialTokenType, startOffset); - return cachedTokenList; - - } - - - boolean insertBreakSpecialHandling(ActionEvent e) { - Action a = tokenMaker.getInsertBreakAction(); - if (a!=null) { - a.actionPerformed(e); - return true; - } - return false; - } - - - /** - * Returns whether a character could be part of an "identifier" token - * in a specific language. This is used to identify such things as the - * bounds of the "word" to select on double-clicking. - * - * @param languageIndex The language index the character was found in. - * @param ch The character. - * @return Whether the character could be part of an "identifier" token. - */ - public boolean isIdentifierChar(int languageIndex, char ch) { - return tokenMaker.isIdentifierChar(languageIndex, ch); - } - - - /** - * Returns an iterator over the paintable tokens in this document. Results - * are undefined if this document is modified while the iterator is being - * iterated through, so this should only be used on the EDT.

- * - * The remove() method of the returned iterator will throw - * an UnsupportedOperationException. - * - * @return An iterator. - */ - public Iterator iterator() { - return new TokenIterator(this); - } - - - /** - * Deserializes a document. - * - * @param in The stream to read from. - * @throws ClassNotFoundException - * @throws IOException - */ - private void readObject(ObjectInputStream in) - throws ClassNotFoundException, IOException { - - in.defaultReadObject(); - - // Install default TokenMakerFactory. To support custom TokenMakers, - // both JVM's should install default TokenMakerFactories that support - // the language they want to use beforehand. - setTokenMakerFactory(null); - - // Handle other transient stuff - this.s = new Segment(); - int lineCount = getDefaultRootElement().getElementCount(); - lastTokensOnLines = new DynamicIntArray(lineCount); - setSyntaxStyle(syntaxStyle); // Actually install (transient) TokenMaker - - } - - - /** - * Makes our private Segment s point to the text in our - * document referenced by the specified element. Note that - * line MUST be a valid line number in the document. - * - * @param line The line number you want to get. - */ - private final void setSharedSegment(int line) { - - Element map = getDefaultRootElement(); - //int numLines = map.getElementCount(); - - Element element = map.getElement(line); - if (element==null) - throw new InternalError("Invalid line number: " + line); - int startOffset = element.getStartOffset(); - //int endOffset = (line==numLines-1 ? - // element.getEndOffset()-1 : element.getEndOffset() - 1); - int endOffset = element.getEndOffset()-1; // Why always "-1"? - try { - getText(startOffset, endOffset-startOffset, s); - } catch (BadLocationException ble) { - throw new InternalError("Text range not in document: " + - startOffset + "-" + endOffset); - } - - } - - - /** - * Sets the syntax style being used for syntax highlighting in this - * document. What styles are supported by a document is determined by its - * {@link TokenMakerFactory}. By default, all RSyntaxDocuments - * support all languages built into RSyntaxTextArea. - * - * @param styleKey The new style to use, such as - * {@link SyntaxConstants#SYNTAX_STYLE_JAVA}. If this style is not - * known or supported by this document, then - * {@link SyntaxConstants#SYNTAX_STYLE_NONE} is used. - * @see #setSyntaxStyle(TokenMaker) - * @see #getSyntaxStyle() - */ - public void setSyntaxStyle(String styleKey) { - tokenMaker = tokenMakerFactory.getTokenMaker(styleKey); - updateSyntaxHighlightingInformation(); - this.syntaxStyle = styleKey; - } - - - /** - * Sets the syntax style being used for syntax highlighting in this - * document. You should call this method if you've created a custom token - * maker for a language not normally supported by - * RSyntaxTextArea. - * - * @param tokenMaker The new token maker to use. - * @see #setSyntaxStyle(String) - */ - public void setSyntaxStyle(TokenMaker tokenMaker) { - this.tokenMaker = tokenMaker; - updateSyntaxHighlightingInformation(); - this.syntaxStyle = "text/unknown"; // TODO: Make me public? - } - - - /** - * Sets the token maker factory used by this document. - * - * @param tmf The TokenMakerFactory for this document. If - * this is null, a default factory is used. - */ - public void setTokenMakerFactory(TokenMakerFactory tmf) { - tokenMakerFactory = tmf!=null ? tmf : - TokenMakerFactory.getDefaultInstance(); - } - - - /** - * Loops through the last-tokens-on-lines array from a specified point - * onward, updating last-token values until they stop changing. This - * should be called when lines are updated/inserted/removed, as doing - * so may cause lines below to change color. - * - * @param line The first line to check for a change in last-token value. - * @param numLines The number of lines in the document. - * @param previousTokenType The last-token value of the line just before - * line. - * @return The last line that needs repainting. - */ - private int updateLastTokensBelow(int line, int numLines, int previousTokenType) { - - int firstLine = line; - - // Loop through all lines past our starting point. Update even the last - // line's info, even though there aren't any lines after it that depend - // on it changing for them to be changed, as its state may be used - // elsewhere in the library. - int end = numLines; - //System.err.println("--- end==" + end + " (numLines==" + numLines + ")"); - while (linefirstLine) { - //System.err.println("... ... ... repainting lines " + firstLine + "-" + line); - fireChangedUpdate(new DefaultDocumentEvent(firstLine, line, - DocumentEvent.EventType.CHANGE)); - } - - return line; - - } - - - /** - * Updates internal state information; e.g. the "last tokens on lines" - * data. After this, a changed update is fired to let listeners know that - * the document's structure has changed.

- * - * This is called internally whenever the syntax style changes. - */ - private void updateSyntaxHighlightingInformation() { - - // Reinitialize the "last token on each line" array. Note that since - // the actual text in the document isn't changing, the number of lines - // is the same. - Element map = getDefaultRootElement(); - int numLines = map.getElementCount(); - int lastTokenType = Token.NULL; - for (int i=0; iRTextArea that adds syntax highlighting - * of certain programming languages to its list of features. Languages - * currently supported include: - * - * - * - * - * - * - *
- *
    - *
  • ActionScript - *
  • Assembler (X86) - *
  • BBCode - *
  • C - *
  • C++ - *
  • CSS - *
  • C# - *
  • Clojure - *
  • Dart - *
  • Delphi - *
  • DTD - *
  • Fortran - *
  • Groovy - *
  • HTML - *
  • htaccess - *
  • Java - *
  • JavaScript - *
  • .jshintrc - *
  • JSP - *
- *
- *
    - *
  • LaTeX - *
  • Lisp - *
  • Lua - *
  • Make - *
  • MXML - *
  • NSIS - *
  • Perl - *
  • PHP - *
  • Properties files - *
  • Python - *
  • Ruby - *
  • SAS - *
  • Scala - *
  • SQL - *
  • Tcl - *
  • UNIX shell scripts - *
  • Visual Basic - *
  • Windows batch - *
  • XML files - *
- *
- * - * Other added features include: - *

    - *
  • Code folding - *
  • Bracket matching - *
  • Auto-indentation - *
  • Copy as RTF - *
  • Clickable hyperlinks (if the language scanner being used supports it) - *
  • A pluggable "parser" system that can be used to implement syntax - * validation, spell checking, etc. - *
- * - * It is recommended that you use an instance of - * {@link org.fife.ui.rtextarea.RTextScrollPane} instead of a regular - * JScrollPane as this class allows you to add line numbers and - * bookmarks easily to your text area. - * - * @author Robert Futrell - * @version 2.5.8 - * @see TextEditorPane - */ -public class RSyntaxTextArea extends RTextArea implements SyntaxConstants { - - public static final String ANIMATE_BRACKET_MATCHING_PROPERTY = "RSTA.animateBracketMatching"; - public static final String ANTIALIAS_PROPERTY = "RSTA.antiAlias"; - public static final String AUTO_INDENT_PROPERTY = "RSTA.autoIndent"; - public static final String BRACKET_MATCHING_PROPERTY = "RSTA.bracketMatching"; - public static final String CLEAR_WHITESPACE_LINES_PROPERTY = "RSTA.clearWhitespaceLines"; - public static final String CLOSE_CURLY_BRACES_PROPERTY = "RSTA.closeCurlyBraces"; - public static final String CLOSE_MARKUP_TAGS_PROPERTY = "RSTA.closeMarkupTags"; - public static final String CODE_FOLDING_PROPERTY = "RSTA.codeFolding"; - public static final String EOL_VISIBLE_PROPERTY = "RSTA.eolMarkersVisible"; - public static final String FOCUSABLE_TIPS_PROPERTY = "RSTA.focusableTips"; - public static final String FRACTIONAL_FONTMETRICS_PROPERTY = "RSTA.fractionalFontMetrics"; - public static final String HIGHLIGHT_SECONDARY_LANGUAGES_PROPERTY = "RSTA.highlightSecondaryLanguages"; - public static final String HYPERLINKS_ENABLED_PROPERTY = "RSTA.hyperlinksEnabled"; - public static final String MARK_OCCURRENCES_PROPERTY = "RSTA.markOccurrences"; - public static final String MARKED_OCCURRENCES_CHANGED_PROPERTY = "RSTA.markedOccurrencesChanged"; - public static final String PAINT_MATCHED_BRACKET_PAIR_PROPERTY = "RSTA.paintMatchedBracketPair"; - public static final String PARSER_NOTICES_PROPERTY = "RSTA.parserNotices"; - public static final String SYNTAX_SCHEME_PROPERTY = "RSTA.syntaxScheme"; - public static final String SYNTAX_STYLE_PROPERTY = "RSTA.syntaxStyle"; - public static final String TAB_LINE_COLOR_PROPERTY = "RSTA.tabLineColor"; - public static final String TAB_LINES_PROPERTY = "RSTA.tabLines"; - public static final String USE_SELECTED_TEXT_COLOR_PROPERTY = "RSTA.useSelectedTextColor"; - public static final String VISIBLE_WHITESPACE_PROPERTY = "RSTA.visibleWhitespace"; - - private static final Color DEFAULT_BRACKET_MATCH_BG_COLOR = new Color(234,234,255); - private static final Color DEFAULT_BRACKET_MATCH_BORDER_COLOR = new Color(0,0,128); - private static final Color DEFAULT_SELECTION_COLOR = new Color(200,200,255); - - private static final String MSG = "org.fife.ui.rsyntaxtextarea.RSyntaxTextArea"; - - private JMenu foldingMenu; - private static RecordableTextAction toggleCurrentFoldAction; - private static RecordableTextAction collapseAllCommentFoldsAction; - private static RecordableTextAction collapseAllFoldsAction; - private static RecordableTextAction expandAllFoldsAction; - - /** The key for the syntax style to be highlighting. */ - private String syntaxStyleKey; - - /** The colors used for syntax highlighting. */ - private SyntaxScheme syntaxScheme; - - /** Handles code templates. */ - private static CodeTemplateManager codeTemplateManager; - - /** Whether or not templates are enabled. */ - private static boolean templatesEnabled; - - /** - * The rectangle surrounding the "matched bracket" if bracket matching - * is enabled. - */ - private Rectangle match; - - /** - * The rectangle surrounding the current offset if both bracket matching and - * "match both brackets" are enabled. - */ - private Rectangle dotRect; - - /** - * Used to store the location of the bracket at the caret position (either - * just before or just after it) and the location of its match. - */ - private Point bracketInfo; - - /** - * Colors used for the "matched bracket" if bracket matching is enabled. - */ - private Color matchedBracketBGColor; - private Color matchedBracketBorderColor; - - /** The location of the last matched bracket. */ - private int lastBracketMatchPos; - - /** Whether or not bracket matching is enabled. */ - private boolean bracketMatchingEnabled; - - /** Whether or not bracket matching is animated. */ - private boolean animateBracketMatching; - - /** Whether both brackets are highlighted when bracket matching. */ - private boolean paintMatchedBracketPair; - - private BracketMatchingTimer bracketRepaintTimer; - - private boolean metricsNeverRefreshed; - - /** - * Whether or not auto-indent is on. - */ - private boolean autoIndentEnabled; - - /** - * Whether curly braces should be closed on Enter key presses, (if the - * current language supports it). - */ - private boolean closeCurlyBraces; - - /** - * Whether closing markup tags should be automatically completed when - * "</" is typed (if the current language is a markup - * language). - */ - private boolean closeMarkupTags; - - /** - * Whether or not lines with nothing but whitespace are "made empty." - */ - private boolean clearWhitespaceLines; - - /** Whether we are displaying visible whitespace (spaces and tabs). */ - private boolean whitespaceVisible; - - /** Whether EOL markers should be visible at the end of each line. */ - private boolean eolMarkersVisible; - - /** Whether tab lines are enabled. */ - private boolean paintTabLines; - - /** The color to use when painting tab lines. */ - private Color tabLineColor; - - /** - * Whether hyperlinks are enabled (must be supported by the syntax - * scheme being used). - */ - private boolean hyperlinksEnabled; - - /** The color to use when painting hyperlinks. */ - private Color hyperlinkFG; - - /** - * Mask used to determine if the correct key is being held down to scan - * for hyperlinks (ctrl, meta, etc.). - */ - private int linkScanningMask; - - /** Whether secondary languages have their backgrounds colored. */ - private boolean highlightSecondaryLanguages; - - /** Whether the "selected text" color should be used with selected text. */ - private boolean useSelectedTextColor; - - /** Handles "mark occurrences" support. */ - private MarkOccurrencesSupport markOccurrencesSupport; - - /** The color used to render "marked occurrences." */ - private Color markOccurrencesColor; - - /** Whether a border should be painted around marked occurrences. */ - private boolean paintMarkOccurrencesBorder; - - /** Metrics of the text area's font. */ - private FontMetrics defaultFontMetrics; - - /** Manages running the parser. */ - private ParserManager parserManager; - - private String cachedTip; - /** Used to work around an issue with Apple JVMs. */ - private Point cachedTipLoc; - - /** - * Whether the editor is currently scanning for hyperlinks on mouse - * movement. - */ - private boolean isScanningForLinks; - - private int hoveredOverLinkOffset; - - private LinkGenerator linkGenerator; - private LinkGeneratorResult linkGeneratorResult; - - private int rhsCorrection; - - private FoldManager foldManager; - - /** Whether "focusable" tool tips are used instead of standard ones. */ - private boolean useFocusableTips; - - /** The last focusable tip displayed. */ - private FocusableTip focusableTip; - - /** Cached desktop anti-aliasing hints, if anti-aliasing is enabled. */ - private Map aaHints; - - /** Renders tokens. */ - private TokenPainter tokenPainter; - -private int lineHeight; // Height of a line of text; same for default, bold & italic. -private int maxAscent; -private boolean fractionalFontMetricsEnabled; - - private Color[] secondaryLanguageBackgrounds; - - - /** - * Constructor. - */ - public RSyntaxTextArea() { - } - - - /** - * Constructor. - * - * @param doc The document for the editor. - */ - public RSyntaxTextArea(RSyntaxDocument doc) { - super(doc); - setSyntaxEditingStyle(doc.getSyntaxStyle()); - } - - /** - * Constructor. - * - * @param text The initial text to display. - */ - public RSyntaxTextArea(String text) { - super(text); - } - - - /** - * Constructor. - * - * @param rows The number of rows to display. - * @param cols The number of columns to display. - * @throws IllegalArgumentException If either rows or - * cols is negative. - */ - public RSyntaxTextArea(int rows, int cols) { - super(rows, cols); - } - - - /** - * Constructor. - * - * @param text The initial text to display. - * @param rows The number of rows to display. - * @param cols The number of columns to display. - * @throws IllegalArgumentException If either rows or - * cols is negative. - */ - public RSyntaxTextArea(String text, int rows, int cols) { - super(text, rows, cols); - } - - - /** - * Constructor. - * - * @param doc The document for the editor. - * @param text The initial text to display. - * @param rows The number of rows to display. - * @param cols The number of columns to display. - * @throws IllegalArgumentException If either rows or - * cols is negative. - */ - public RSyntaxTextArea(RSyntaxDocument doc, String text,int rows,int cols) { - super(doc, text, rows, cols); - } - - - /** - * Creates a new RSyntaxTextArea. - * - * @param textMode Either INSERT_MODE or - * OVERWRITE_MODE. - */ - public RSyntaxTextArea(int textMode) { - super(textMode); - } - - - /** - * Adds an "active line range" listener to this text area. - * - * @param l The listener to add. - * @see #removeActiveLineRangeListener(ActiveLineRangeListener) - */ - public void addActiveLineRangeListener(ActiveLineRangeListener l) { - listenerList.add(ActiveLineRangeListener.class, l); - } - - - /** - * Adds a hyperlink listener to this text area. - * - * @param l The listener to add. - * @see #removeHyperlinkListener(HyperlinkListener) - */ - public void addHyperlinkListener(HyperlinkListener l) { - listenerList.add(HyperlinkListener.class, l); - } - - - /** - * Updates the font metrics the first time we're displayed. - */ - @Override - public void addNotify() { - - super.addNotify(); - - // Some LookAndFeels (e.g. WebLaF) for some reason have a 0x0 parent - // window initially (perhaps something to do with them fading in?), - // which will cause an exception from getGraphics(), so we must be - // careful here. - if (metricsNeverRefreshed) { - Window parent = SwingUtilities.getWindowAncestor(this); - if (parent!=null && parent.getWidth()>0 && parent.getHeight()>0) { - refreshFontMetrics(getGraphics2D(getGraphics())); - metricsNeverRefreshed = false; - } - } - - // Re-start parsing if we were removed from one container and added - // to another - if (parserManager!=null) { - parserManager.restartParsing(); - } - - } - - - /** - * Adds the parser to "validate" the source code in this text area. This - * can be anything from a spell checker to a "compiler" that verifies - * source code. - * - * @param parser The new parser. A value of null will - * do nothing. - * @see #getParser(int) - * @see #getParserCount() - * @see #removeParser(Parser) - */ - public void addParser(Parser parser) { - if (parserManager==null) { - parserManager = new ParserManager(this); - } - parserManager.addParser(parser); - } - - - /** - * Appends a submenu with code folding options to this text component's - * popup menu. - * - * @param popup The popup menu to append to. - * @see #createPopupMenu() - */ - protected void appendFoldingMenu(JPopupMenu popup) { - popup.addSeparator(); - ResourceBundle bundle = ResourceBundle.getBundle(MSG); - foldingMenu = new JMenu(bundle.getString("ContextMenu.Folding")); - foldingMenu.add(createPopupMenuItem(toggleCurrentFoldAction)); - foldingMenu.add(createPopupMenuItem(collapseAllCommentFoldsAction)); - foldingMenu.add(createPopupMenuItem(collapseAllFoldsAction)); - foldingMenu.add(createPopupMenuItem(expandAllFoldsAction)); - popup.add(foldingMenu); - - } - - - /** - * Recalculates the height of a line in this text area and the - * maximum ascent of all fonts displayed. - */ - private void calculateLineHeight() { - - lineHeight = maxAscent = 0; - - // Each token style. - for (int i=0; ilineHeight) - lineHeight = height; - int ascent = fm.getMaxAscent(); - if (ascent>maxAscent) - maxAscent = ascent; - } - } - - // The text area's (default) font). - Font temp = getFont(); - FontMetrics fm = getFontMetrics(temp); - int height = fm.getHeight(); - if (height>lineHeight) { - lineHeight = height; - } - int ascent = fm.getMaxAscent(); - if (ascent>maxAscent) { - maxAscent = ascent; - } - - } - - - /** - * Removes all parsers from this text area. - * - * @see #removeParser(Parser) - */ - public void clearParsers() { - if (parserManager!=null) { - parserManager.clearParsers(); - } - } - - - /** - * Clones a token list. This is necessary as tokens are reused in - * {@link RSyntaxDocument}, so we can't simply use the ones we - * are handed from it. - * - * @param t The token list to clone. - * @return The clone of the token list. - */ - private TokenImpl cloneTokenList(Token t) { - - if (t==null) { - return null; - } - - TokenImpl clone = new TokenImpl(t); - TokenImpl cloneEnd = clone; - - while ((t=t.getNextToken())!=null) { - TokenImpl temp = new TokenImpl(t); - cloneEnd.setNextToken(temp); - cloneEnd = temp; - } - - return clone; - - } - - - /** - * Overridden to toggle the enabled state of various - * RSyntaxTextArea-specific menu items. - * - * If you set the popup menu via {@link #setPopupMenu(JPopupMenu)}, you - * will want to override this method, especially if you removed any of the - * menu items in the default popup menu. - * - * @param popupMenu The popup menu. This will never be null. - * @see #createPopupMenu() - * @see #setPopupMenu(JPopupMenu) - */ - @Override - protected void configurePopupMenu(JPopupMenu popupMenu) { - - super.configurePopupMenu(popupMenu); - - // They may have overridden createPopupMenu()... - if (popupMenu!=null && popupMenu.getComponentCount()>0 && - foldingMenu!=null) { - foldingMenu.setEnabled(foldManager. - isCodeFoldingSupportedAndEnabled()); - } - } - - - /** - * Copies the currently selected text to the system clipboard, with - * any necessary style information (font, foreground color and background - * color). Does nothing for null selections. - */ - public void copyAsRtf() { - - int selStart = getSelectionStart(); - int selEnd = getSelectionEnd(); - if (selStart==selEnd) { - return; - } - - // Make sure there is a system clipboard, and that we can write - // to it. - SecurityManager sm = System.getSecurityManager(); - if (sm!=null) { - try { - sm.checkSystemClipboardAccess(); - } catch (SecurityException se) { - UIManager.getLookAndFeel().provideErrorFeedback(null); - return; - } - } - Clipboard cb = getToolkit().getSystemClipboard(); - - // Create the RTF selection. - RtfGenerator gen = new RtfGenerator(); - Token tokenList = getTokenListFor(selStart, selEnd); - for (Token t=tokenList; t!=null; t=t.getNextToken()) { - if (t.isPaintable()) { - if (t.length()==1 && t.charAt(0)=='\n') { - gen.appendNewline(); - } - else { - Font font = getFontForTokenType(t.getType()); - Color bg = getBackgroundForToken(t); - boolean underline = getUnderlineForToken(t); - // Small optimization - don't print fg color if this - // is a whitespace color. Saves on RTF size. - if (t.isWhitespace()) { - gen.appendToDocNoFG(t.getLexeme(), font, bg, underline); - } - else { - Color fg = getForegroundForToken(t); - gen.appendToDoc(t.getLexeme(), font, fg, bg, underline); - } - } - } - } - - // Set the system clipboard contents to the RTF selection. - RtfTransferable contents = new RtfTransferable(gen.getRtf().getBytes()); - //System.out.println("*** " + new String(gen.getRtf().getBytes())); - try { - cb.setContents(contents, null); - } catch (IllegalStateException ise) { - UIManager.getLookAndFeel().provideErrorFeedback(null); - return; - } - - } - - - /** - * Returns the document to use for an RSyntaxTextArea - * - * @return The document. - */ - @Override - protected Document createDefaultModel() { - return new RSyntaxDocument(SYNTAX_STYLE_NONE); - } - - - /** - * Returns the caret event/mouse listener for RTextAreas. - * - * @return The caret event/mouse listener. - */ - @Override - protected RTAMouseListener createMouseListener() { - return new RSyntaxTextAreaMutableCaretEvent(this); - } - - - /** - * Overridden to add menu items related to cold folding. - * - * @return The popup menu. - * @see #appendFoldingMenu(JPopupMenu) - */ - @Override - protected JPopupMenu createPopupMenu() { - JPopupMenu popup = super.createPopupMenu(); - appendFoldingMenu(popup); - return popup; - } - - - /** - * See createPopupMenuActions() in RTextArea. - * TODO: Remove these horrible hacks and move localizing of actions into - * the editor kits, where it should be! The context menu should contain - * actions from the editor kits. - */ - private static void createRstaPopupMenuActions() { - - ResourceBundle msg = ResourceBundle.getBundle(MSG); - - toggleCurrentFoldAction = new RSyntaxTextAreaEditorKit. - ToggleCurrentFoldAction(); - toggleCurrentFoldAction.setProperties(msg, "Action.ToggleCurrentFold"); - - collapseAllCommentFoldsAction = new RSyntaxTextAreaEditorKit. - CollapseAllCommentFoldsAction(); - collapseAllCommentFoldsAction.setProperties(msg, "Action.CollapseCommentFolds"); - - collapseAllFoldsAction = new RSyntaxTextAreaEditorKit.CollapseAllFoldsAction(true); - expandAllFoldsAction = new RSyntaxTextAreaEditorKit.ExpandAllFoldsAction(true); - - } - - - /** - * Returns the a real UI to install on this text area. - * - * @return The UI. - */ - @Override - protected RTextAreaUI createRTextAreaUI() { - return new RSyntaxTextAreaUI(this); - } - - - /** - * If the caret is on a bracket, this method finds the matching bracket, - * and if it exists, highlights it. - */ - protected final void doBracketMatching() { - - // We always need to repaint the "matched bracket" highlight if it - // exists. - if (match!=null) { - repaint(match); - if (dotRect!=null) { - repaint(dotRect); - } - } - - // If a matching bracket is found, get its bounds and paint it! - int lastCaretBracketPos = bracketInfo==null ? -1 : bracketInfo.x; - bracketInfo = RSyntaxUtilities.getMatchingBracketPosition(this, - bracketInfo); - if (bracketInfo.y>-1 && - (bracketInfo.y!=lastBracketMatchPos || - bracketInfo.x!=lastCaretBracketPos)) { - try { - match = modelToView(bracketInfo.y); - if (match!=null) { // Happens if we're not yet visible - if (getPaintMatchedBracketPair()) { - dotRect = modelToView(bracketInfo.x); - } - else { - dotRect = null; - } - if (getAnimateBracketMatching()) { - bracketRepaintTimer.restart(); - } - repaint(match); - if (dotRect!=null) { - repaint(dotRect); - } - } - } catch (BadLocationException ble) { - ble.printStackTrace(); // Shouldn't happen. - } - } - else if (bracketInfo.y==-1) { - // Set match to null so the old value isn't still repainted. - match = null; - dotRect = null; - bracketRepaintTimer.stop(); - } - lastBracketMatchPos = bracketInfo.y; - - } - - - /** - * Notifies all listeners that a caret change has occurred. - * - * @param e The caret event. - */ - @Override - protected void fireCaretUpdate(CaretEvent e) { - super.fireCaretUpdate(e); - if (isBracketMatchingEnabled()) { - doBracketMatching(); - } - } - - - /** - * Notifies all listeners that the active line range has changed. - * - * @param min The minimum "active" line, or -1. - * @param max The maximum "active" line, or -1. - */ - private void fireActiveLineRangeEvent(int min, int max) { - ActiveLineRangeEvent e = null; // Lazily created - // Guaranteed to return a non-null array - Object[] listeners = listenerList.getListenerList(); - // Process the listeners last to first, notifying - // those that are interested in this event - for (int i = listeners.length-2; i>=0; i-=2) { - if (listeners[i]==ActiveLineRangeListener.class) { - if (e==null) { - e = new ActiveLineRangeEvent(this, min, max); - } - ((ActiveLineRangeListener)listeners[i+1]).activeLineRangeChanged(e); - } - } - } - - - /** - * Notifies all listeners that have registered interest for notification - * on this event type. The listener list is processed last to first. - * - * @param e The event to fire. - * @see EventListenerList - */ - private void fireHyperlinkUpdate(HyperlinkEvent e) { - // Guaranteed to return a non-null array - Object[] listeners = listenerList.getListenerList(); - // Process the listeners last to first, notifying - // those that are interested in this event - for (int i = listeners.length-2; i>=0; i-=2) { - if (listeners[i]==HyperlinkListener.class) { - ((HyperlinkListener)listeners[i+1]).hyperlinkUpdate(e); - } - } - } - - - /** - * Notifies listeners that the marked occurrences for this text area - * have changed. - */ - void fireMarkedOccurrencesChanged() { - firePropertyChange(RSyntaxTextArea.MARKED_OCCURRENCES_CHANGED_PROPERTY, - null, null); - } - - - /** - * Fires a notification that the parser notices for this text area have - * changed. - */ - void fireParserNoticesChange() { - firePropertyChange(PARSER_NOTICES_PROPERTY, null, null); - } - - - /** - * Called whenever a fold is collapsed or expanded. This causes the - * text editor to revalidate. This method is here because of poor design - * and should be removed. - * - * @param fold The fold that was collapsed or expanded. - */ - public void foldToggled(Fold fold) { - match = null; // TODO: Update the bracket rect rather than hide it - dotRect = null; - if (getLineWrap()) { - // NOTE: Without doing this later, the caret position is out of - // sync with the Element structure when word wrap is enabled, and - // causes BadLocationExceptions when an entire folded region is - // deleted (see GitHub issue #22: - // https://github.com/bobbylight/RSyntaxTextArea/issues/22) - SwingUtilities.invokeLater(new Runnable() { - public void run() { - possiblyUpdateCurrentLineHighlightLocation(); - } - }); - } - else { - possiblyUpdateCurrentLineHighlightLocation(); - } - revalidate(); - repaint(); - } - - - /** - * Forces the given {@link Parser} to re-parse the content of this text - * area.

- * - * This method can be useful when a Parser can be configured - * as to what notices it returns. For example, if a Java language parser - * can be configured to set whether no serialVersionUID is a warning, - * error, or ignored, this method can be called after changing the expected - * notice type to have the document re-parsed. - * - * @param parser The index of the Parser to re-run. - * @see #getParser(int) - */ - public void forceReparsing(int parser) { - parserManager.forceReparsing(parser); - } - - - /** - * Forces re-parsing with a specific parser. Note that if this parser is - * not installed on this text area, nothing will happen. - * - * @param parser The parser that should re-parse this text area's contents. - * This should be installed on this text area. - * @return Whether the parser was installed on this text area. - * @see #forceReparsing(int) - */ - public boolean forceReparsing(Parser parser) { - for (int i=0; inull then this token has no special background - * color. - * @see #getForegroundForToken(Token) - */ - public Color getBackgroundForToken(Token token) { - Color c = null; - if (getHighlightSecondaryLanguages()) { - // 1-indexed, since 0 == main language. - int languageIndex = token.getLanguageIndex() - 1; - if (languageIndex>=0 && - languageIndex</" is typed. Note that this property is only - * honored for markup languages, such as HTML, XML and PHP. - * - * @return Whether closing markup tags should be automatically completed. - * @see #setCloseMarkupTags(boolean) - */ - public boolean getCloseMarkupTags() { - return closeMarkupTags; - } - - - /** - * Returns the code template manager for all instances of - * RSyntaxTextArea. The manager is lazily created. - * - * @return The code template manager. - * @see #setTemplatesEnabled(boolean) - */ - public static synchronized CodeTemplateManager getCodeTemplateManager() { - if (codeTemplateManager==null) { - codeTemplateManager = new CodeTemplateManager(); - } - return codeTemplateManager; - } - - - /** - * Returns the default bracket-match background color. - * - * @return The color. - * @see #getDefaultBracketMatchBorderColor - */ - public static final Color getDefaultBracketMatchBGColor() { - return DEFAULT_BRACKET_MATCH_BG_COLOR; - } - - - /** - * Returns the default bracket-match border color. - * - * @return The color. - * @see #getDefaultBracketMatchBGColor - */ - public static final Color getDefaultBracketMatchBorderColor() { - return DEFAULT_BRACKET_MATCH_BORDER_COLOR; - } - - - /** - * Returns the default selection color for this text area. This - * color was chosen because it's light and RSyntaxTextArea - * does not change text color between selected/unselected text for - * contrast like regular JTextAreas do. - * - * @return The default selection color. - */ - public static Color getDefaultSelectionColor() { - return DEFAULT_SELECTION_COLOR; - } - - - /** - * Returns the "default" syntax highlighting color scheme. The colors - * used are somewhat standard among syntax highlighting text editors. - * - * @return The default syntax highlighting color scheme. - * @see #restoreDefaultSyntaxScheme() - * @see #getSyntaxScheme() - * @see #setSyntaxScheme(SyntaxScheme) - */ - public SyntaxScheme getDefaultSyntaxScheme() { - return new SyntaxScheme(getFont()); - } - - - /** - * Returns whether an EOL marker should be drawn at the end of each line. - * - * @return Whether EOL markers should be visible. - * @see #setEOLMarkersVisible(boolean) - * @see #isWhitespaceVisible() - */ - public boolean getEOLMarkersVisible() { - return eolMarkersVisible; - } - - - /** - * Returns the fold manager for this text area. - * - * @return The fold manager. - */ - public FoldManager getFoldManager() { - return foldManager; - } - - - /** - * Returns the font for tokens of the specified type. - * - * @param type The type of token. - * @return The font to use for that token type. - * @see #getFontMetricsForTokenType(int) - */ - public Font getFontForTokenType(int type) { - Font f = syntaxScheme.getStyle(type).font; - return f!=null ? f : getFont(); - } - - - /** - * Returns the font metrics for tokens of the specified type. - * - * @param type The type of token. - * @return The font metrics to use for that token type. - * @see #getFontForTokenType(int) - */ - public FontMetrics getFontMetricsForTokenType(int type) { - FontMetrics fm = syntaxScheme.getStyle(type).fontMetrics; - return fm!=null ? fm : defaultFontMetrics; - } - - - /** - * Returns the foreground color to use when painting a token. - * - * @param t The token. - * @return The foreground color to use for that token. This - * value is never null. - * @see #getBackgroundForToken(Token) - */ - public Color getForegroundForToken(Token t) { - if (getHyperlinksEnabled() && hoveredOverLinkOffset==t.getOffset() && - (t.isHyperlink() || linkGeneratorResult!=null)) { - return hyperlinkFG; - } - return getForegroundForTokenType(t.getType()); - } - - - /** - * Returns the foreground color to use when painting a token. This does - * not take into account whether the token is a hyperlink. - * - * @param type The token type. - * @return The foreground color to use for that token. This - * value is never null. - * @see #getForegroundForToken(Token) - */ - public Color getForegroundForTokenType(int type) { - Color fg = syntaxScheme.getStyle(type).foreground; - return fg!=null ? fg : getForeground(); - } - - - /** - * Returns whether fractional font metrics are enabled for this text area. - * - * @return Whether fractional font metrics are enabled. - * @see #setFractionalFontMetricsEnabled - * @see #getAntiAliasingEnabled() - */ - public boolean getFractionalFontMetricsEnabled() { - return fractionalFontMetricsEnabled; - } - - - /** - * Returns a Graphics2D version of the specified graphics - * that has been initialized with the proper rendering hints. - * - * @param g The graphics context for which to get a - * Graphics2D. - * @return The Graphics2D. - */ - private final Graphics2D getGraphics2D(Graphics g) { - Graphics2D g2d = (Graphics2D)g; - if (aaHints!=null) { - g2d.addRenderingHints(aaHints); - } - if (fractionalFontMetricsEnabled) { - g2d.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, - RenderingHints.VALUE_FRACTIONALMETRICS_ON); - } - return g2d; - } - - - /** - * Returns whether "secondary" languages should have their backgrounds - * colored differently to visually differentiate them. This feature - * imposes a fair performance penalty. - * - * @return Whether secondary languages have their backgrounds colored - * differently. - * @see #setHighlightSecondaryLanguages(boolean) - * @see #getSecondaryLanguageBackground(int) - * @see #getSecondaryLanguageCount() - * @see #setSecondaryLanguageBackground(int, Color) - */ - public boolean getHighlightSecondaryLanguages() { - return highlightSecondaryLanguages; - } - - - /** - * Returns the color to use when painting hyperlinks. - * - * @return The color to use when painting hyperlinks. - * @see #setHyperlinkForeground(Color) - * @see #getHyperlinksEnabled() - */ - public Color getHyperlinkForeground() { - return hyperlinkFG; - } - - - /** - * Returns whether hyperlinks are enabled for this text area. - * - * @return Whether hyperlinks are enabled for this text area. - * @see #setHyperlinksEnabled(boolean) - */ - public boolean getHyperlinksEnabled() { - return hyperlinksEnabled; - } - - - /** - * Returns the last visible offset in this text area. This may not be the - * length of the document if code folding is enabled. - * - * @return The last visible offset in this text area. - */ - public int getLastVisibleOffset() { - if (isCodeFoldingEnabled()) { - int lastVisibleLine = foldManager.getLastVisibleLine(); - if (lastVisibleLine getMarkAllHighlightRanges() { - return ((RSyntaxTextAreaHighlighter)getHighlighter()). - getMarkAllHighlightRanges(); - } - - - /** - * Returns a list of "marked occurrences" in the text area. If there are - * no marked occurrences, this will be an empty list. - * - * @return The list of marked occurrences. - */ - public List getMarkedOccurrences() { - return ((RSyntaxTextAreaHighlighter)getHighlighter()). - getMarkedOccurrences(); - } - - - /** - * Returns whether "Mark Occurrences" is enabled. - * - * @return Whether "Mark Occurrences" is enabled. - * @see #setMarkOccurrences(boolean) - */ - public boolean getMarkOccurrences() { - return markOccurrencesSupport!=null; - } - - - /** - * Returns the color used to "mark occurrences." - * - * @return The mark occurrences color. - * @see #setMarkOccurrencesColor(Color) - */ - public Color getMarkOccurrencesColor() { - return markOccurrencesColor; - } - - - /** - * Returns whether tokens of the specified type should have "mark - * occurrences" enabled for the current programming language. - * - * @param type The token type. - * @return Whether tokens of this type should have "mark occurrences" - * enabled. - */ - boolean getMarkOccurrencesOfTokenType(int type) { - RSyntaxDocument doc = (RSyntaxDocument)getDocument(); - return doc.getMarkOccurrencesOfTokenType(type); - } - - - /** - * Gets the color used as the background for a matched bracket. - * - * @return The color used. If this is null, no special - * background is painted behind a matched bracket. - * @see #setMatchedBracketBGColor - * @see #getMatchedBracketBorderColor - */ - public Color getMatchedBracketBGColor() { - return matchedBracketBGColor; - } - - - /** - * Gets the color used as the border for a matched bracket. - * - * @return The color used. - * @see #setMatchedBracketBorderColor - * @see #getMatchedBracketBGColor - */ - public Color getMatchedBracketBorderColor() { - return matchedBracketBorderColor; - } - - - /** - * Returns the caret's offset's rectangle, or null if there - * is currently no matched bracket, bracket matching is disabled, or "paint - * both matched brackets" is disabled. This should never be called by the - * programmer directly. - * - * @return The rectangle surrounding the matched bracket. - * @see #getMatchRectangle() - */ - Rectangle getDotRectangle() { - return dotRect; - } - - - /** - * Returns the matched bracket's rectangle, or null if there - * is currently no matched bracket. This should never be called by the - * programmer directly. - * - * @return The rectangle surrounding the matched bracket. - * @see #getDotRectangle() - */ - Rectangle getMatchRectangle() { - return match; - } - - - /** - * Overridden to return the max ascent for any font used in the editor. - * - * @return The max ascent value. - */ - @Override - public int getMaxAscent() { - return maxAscent; - } - - - /** - * Returns whether the bracket at the caret position is painted as a - * "match" when a matched bracket is found. Note that this property does - * nothing if {@link #isBracketMatchingEnabled()} returns - * false. - * - * @return Whether both brackets in a bracket pair are highlighted when - * bracket matching is enabled. - * @see #setPaintMatchedBracketPair(boolean) - * @see #isBracketMatchingEnabled() - * @see #setBracketMatchingEnabled(boolean) - */ - public boolean getPaintMatchedBracketPair() { - return paintMatchedBracketPair; - } - - - /** - * Returns whether tab lines are painted. - * - * @return Whether tab lines are painted. - * @see #setPaintTabLines(boolean) - * @see #getTabLineColor() - */ - public boolean getPaintTabLines() { - return paintTabLines; - } - - - /** - * Returns whether to paint the backgrounds of tokens on the specified - * line (assuming they are not obstructed by e.g. selection). - * - * @param line The line number. - * @param y The y-offset of the line. This is used when line wrap is - * enabled, since each logical line can be rendered as several - * physical lines. - * @return Whether to paint the token backgrounds on this line. - */ - boolean getPaintTokenBackgrounds(int line, float y) { - //System.out.println(y + ", " + getCurrentCaretY() + "-" + (getCurrentCaretY() + getLineHeight())); - int iy = (int)y; - int curCaretY = getCurrentCaretY(); - return iy=curCaretY+getLineHeight() || - !getHighlightCurrentLine(); - } - - - /** - * Returns the specified parser. - * - * @param index The {@link Parser} to retrieve. - * @return The Parser. - * @see #getParserCount() - * @see #addParser(Parser) - */ - public Parser getParser(int index) { - return parserManager.getParser(index); - } - - - /** - * Returns the number of parsers operating on this text area. - * - * @return The parser count. - * @see #addParser(Parser) - */ - public int getParserCount() { - return parserManager==null ? 0 : parserManager.getParserCount(); - } - - - /** - * Returns the currently set parser delay. This is the delay that must - * occur between edits for any registered {@link Parser}s to run. - * - * @return The currently set parser delay, in milliseconds. - * @see #setParserDelay(int) - */ - public int getParserDelay() { - return parserManager.getDelay(); - } - - - /** - * Returns a list of the current parser notices for this text area. - * This method (like most Swing methods) should only be called on the - * EDT. - * - * @return The list of notices. This will be an empty list if there are - * none. - */ - public List getParserNotices() { - if (parserManager==null) { - return Collections.emptyList(); - } - return parserManager.getParserNotices(); - } - - - /** - * Workaround for JTextComponents allowing the caret to be rendered - * entirely off-screen if the entire "previous" character fit entirely. - * - * @return The amount of space to add to the x-axis preferred span. - * @see #setRightHandSideCorrection(int) - */ - public int getRightHandSideCorrection() { - return rhsCorrection; - } - - - /** - * If auto-indent is enabled, this method returns whether a new line after - * this one should be indented (based on the standard indentation rules for - * the current programming language). For example, in Java, for a line - * containing: - * - *

-	 * for (int i=0; i<10; i++) {
-	 * 
- * - * the following line should be indented. - * - * @param line The line to check. - * @return Whether a line inserted after this one should be auto-indented. - * If auto-indentation is disabled, this will always return - * false. - * @see #isAutoIndentEnabled() - */ - public boolean getShouldIndentNextLine(int line) { - if (isAutoIndentEnabled()) { - RSyntaxDocument doc = (RSyntaxDocument)getDocument(); - return doc.getShouldIndentNextLine(line); - } - return false; - } - - - /** - * Returns what type of syntax highlighting this editor is doing. - * - * @return The style being used, such as - * {@link SyntaxConstants#SYNTAX_STYLE_JAVA}. - * @see #setSyntaxEditingStyle(String) - * @see SyntaxConstants - */ - public String getSyntaxEditingStyle() { - return syntaxStyleKey; - } - - - /** - * Returns all of the colors currently being used in syntax highlighting - * by this text component. - * - * @return An instance of SyntaxScheme that represents - * the colors currently being used for syntax highlighting. - * @see #setSyntaxScheme(SyntaxScheme) - */ - public SyntaxScheme getSyntaxScheme() { - return syntaxScheme; - } - - - /** - * Returns the color used to paint tab lines. - * - * @return The color used to paint tab lines. - * @see #setTabLineColor(Color) - * @see #getPaintTabLines() - * @see #setPaintTabLines(boolean) - */ - public Color getTabLineColor() { - return tabLineColor; - } - - - /** - * Returns whether a border is painted around marked occurrences. - * - * @return Whether a border is painted. - * @see #setPaintMarkOccurrencesBorder(boolean) - * @see #getMarkOccurrencesColor() - * @see #getMarkOccurrences() - */ - public boolean getPaintMarkOccurrencesBorder() { - return paintMarkOccurrencesBorder; - } - - - /** - * Returns the background color for the specified secondary language. - * - * @param index The language index. Note that these are 1-based, not - * 0-based, and should be in the range - * 1-getSecondaryLanguageCount(), inclusive. - * @return The color, or null if none. - * @see #getSecondaryLanguageCount() - * @see #setSecondaryLanguageBackground(int, Color) - * @see #getHighlightSecondaryLanguages() - */ - public Color getSecondaryLanguageBackground(int index) { - return secondaryLanguageBackgrounds[index - 1]; - } - - - /** - * Returns the number of secondary language backgrounds. - * - * @return The number of secondary language backgrounds. - * @see #getSecondaryLanguageBackground(int) - * @see #setSecondaryLanguageBackground(int, Color) - * @see #getHighlightSecondaryLanguages() - */ - public int getSecondaryLanguageCount() { - return secondaryLanguageBackgrounds.length; - } - - - /** - * Returns whether or not templates are enabled for all instances - * of RSyntaxTextArea.

- * - * Note that basic users of RSyntaxTextArea will not call this - * method directly; rather, it is usually called by instances of - * LanguageSupport in the RSTALangaugeSupport - * library. See http://fifesoft.com - * for more information about this library. - * - * @param min The "minimum" line in the active line range, or - * -1 if the range is being cleared. - * @param max The "maximum" line in the active line range, or - * -1 if the range is being cleared. - * @see #addActiveLineRangeListener(ActiveLineRangeListener) - */ - public void setActiveLineRange(int min, int max) { - if (min==-1) { - max = -1; // Force max to be -1 if min is. - } - fireActiveLineRangeEvent(min, max); - } - - - /** - * Sets whether bracket matching should be animated. This fires a property - * change event of type {@link #ANIMATE_BRACKET_MATCHING_PROPERTY}. - * - * @param animate Whether to animate bracket matching. - * @see #getAnimateBracketMatching() - */ - public void setAnimateBracketMatching(boolean animate) { - if (animate!=animateBracketMatching) { - animateBracketMatching = animate; - if (animate && bracketRepaintTimer==null) { - bracketRepaintTimer = new BracketMatchingTimer(); - } - firePropertyChange(ANIMATE_BRACKET_MATCHING_PROPERTY, - !animate, animate); - } - } - - - /** - * Sets whether anti-aliasing is enabled in this editor. This method - * fires a property change event of type {@link #ANTIALIAS_PROPERTY}. - * - * @param enabled Whether anti-aliasing is enabled. - * @see #getAntiAliasingEnabled() - */ - public void setAntiAliasingEnabled(boolean enabled) { - - boolean currentlyEnabled = aaHints!=null; - - if (enabled!=currentlyEnabled) { - - if (enabled) { - aaHints = RSyntaxUtilities.getDesktopAntiAliasHints(); - // If the desktop query method comes up empty, use the standard - // Java2D greyscale method. Note this will likely NOT be as - // nice as what would be used if the getDesktopAntiAliasHints() - // call worked. - if (aaHints==null) { - Map temp = - new HashMap(); - temp.put(RenderingHints.KEY_TEXT_ANTIALIASING, - RenderingHints.VALUE_TEXT_ANTIALIAS_ON); - aaHints = temp; - } - } - else { - aaHints = null; - } - - // We must be connected to a screen resource for our graphics - // to be non-null. - if (isDisplayable()) { - refreshFontMetrics(getGraphics2D(getGraphics())); - } - firePropertyChange(ANTIALIAS_PROPERTY, !enabled, enabled); - repaint(); - - } - - } - - - /** - * Sets whether or not auto-indent is enabled. This fires a property - * change event of type {@link #AUTO_INDENT_PROPERTY}. - * - * @param enabled Whether or not auto-indent is enabled. - * @see #isAutoIndentEnabled() - */ - public void setAutoIndentEnabled(boolean enabled) { - if (autoIndentEnabled!=enabled) { - autoIndentEnabled = enabled; - firePropertyChange(AUTO_INDENT_PROPERTY, !enabled, enabled); - } - } - - - /** - * Sets whether bracket matching is enabled. This fires a property change - * event of type {@link #BRACKET_MATCHING_PROPERTY}. - * - * @param enabled Whether or not bracket matching should be enabled. - * @see #isBracketMatchingEnabled() - */ - public void setBracketMatchingEnabled(boolean enabled) { - if (enabled!=bracketMatchingEnabled) { - bracketMatchingEnabled = enabled; - repaint(); - firePropertyChange(BRACKET_MATCHING_PROPERTY, !enabled, enabled); - } - } - - - /** - * Sets whether or not lines containing nothing but whitespace are made - * into blank lines when Enter is pressed in them. This method fires - * a property change event of type {@link #CLEAR_WHITESPACE_LINES_PROPERTY}. - * - * @param enabled Whether or not whitespace-only lines are cleared when - * the user presses Enter on them. - * @see #isClearWhitespaceLinesEnabled() - */ - public void setClearWhitespaceLinesEnabled(boolean enabled) { - if (enabled!=clearWhitespaceLines) { - clearWhitespaceLines = enabled; - firePropertyChange(CLEAR_WHITESPACE_LINES_PROPERTY, - !enabled, enabled); - } - } - - - /** - * Toggles whether curly braces should be automatically closed when a - * newline is entered after an opening curly brace. Note that this - * property is only honored for languages that use curly braces to denote - * code blocks.

- * - * This method fires a property change event of type - * {@link #CLOSE_CURLY_BRACES_PROPERTY}. - * - * @param close Whether curly braces should be automatically closed. - * @see #getCloseCurlyBraces() - */ - public void setCloseCurlyBraces(boolean close) { - if (close!=closeCurlyBraces) { - closeCurlyBraces = close; - firePropertyChange(CLOSE_CURLY_BRACES_PROPERTY, !close, close); - } - } - - - /** - * Sets whether closing markup tags should be automatically completed - * when "</" is typed. Note that this property is only - * honored for markup languages, such as HTML, XML and PHP.

- * - * This method fires a property change event of type - * {@link #CLOSE_MARKUP_TAGS_PROPERTY}. - * - * @param close Whether closing markup tags should be automatically - * completed. - * @see #getCloseMarkupTags() - */ - public void setCloseMarkupTags(boolean close) { - if (close!=closeMarkupTags) { - closeMarkupTags = close; - firePropertyChange(CLOSE_MARKUP_TAGS_PROPERTY, !close, close); - } - } - - - /** - * Sets whether code folding is enabled. Note that only certain - * languages will support code folding out of the box. Those languages - * which do not support folding will ignore this property.

- * This method fires a property change event of type - * {@link #CODE_FOLDING_PROPERTY}. - * - * @param enabled Whether code folding should be enabled. - * @see #isCodeFoldingEnabled() - */ - public void setCodeFoldingEnabled(boolean enabled) { - if (enabled!=foldManager.isCodeFoldingEnabled()) { - foldManager.setCodeFoldingEnabled(enabled); - firePropertyChange(CODE_FOLDING_PROPERTY, !enabled, enabled); - } - } - - - /** - * Sets anti-aliasing to whatever the user's desktop value is. - * - * @see #getAntiAliasingEnabled() - */ - private final void setDefaultAntiAliasingState() { - - // Most accurate technique, but not available on all OSes. - aaHints = RSyntaxUtilities.getDesktopAntiAliasHints(); - if (aaHints==null) { - - Map temp = - new HashMap(); - - // In Java 6+, you can figure out what text AA hint Swing uses for - // JComponents... - JLabel label = new JLabel(); - FontMetrics fm = label.getFontMetrics(label.getFont()); - Object hint = null; - //FontRenderContext frc = fm.getFontRenderContext(); - //hint = fm.getAntiAliasingHint(); - try { - Method m = FontMetrics.class.getMethod("getFontRenderContext"); - FontRenderContext frc = (FontRenderContext)m.invoke(fm); - m = FontRenderContext.class.getMethod("getAntiAliasingHint"); - hint = m.invoke(frc); - } catch (RuntimeException re) { - throw re; // FindBugs - } catch (Exception e) { - // Swallow, either Java 1.5, or running in an applet - } - - // If not running Java 6+, default to AA enabled on Windows where - // the software AA is pretty fast, and default (e.g. disabled) on - // non-Windows. Note that OS X always uses AA no matter what - // rendering hints you give it, so this is a moot point there. - //System.out.println("Rendering hint: " + hint); - if (hint==null) { - String os = System.getProperty("os.name").toLowerCase(); - if (os.contains("windows")) { - hint = RenderingHints.VALUE_TEXT_ANTIALIAS_ON; - } - else { - hint = RenderingHints.VALUE_TEXT_ANTIALIAS_DEFAULT; - } - } - temp.put(RenderingHints.KEY_TEXT_ANTIALIASING, hint); - - aaHints = temp; - - } - - // We must be connected to a screen resource for our graphics - // to be non-null. - if (isDisplayable()) { - refreshFontMetrics(getGraphics2D(getGraphics())); - } - repaint(); - - } - - - /** - * Sets the document used by this text area. This is overridden so that - * only instances of {@link RSyntaxDocument} are accepted; for all - * others, an exception will be thrown. - * - * @param document The new document for this text area. - * @throws IllegalArgumentException If the document is not an - * RSyntaxDocument. - */ - @Override - public void setDocument(Document document) { - if (!(document instanceof RSyntaxDocument)) - throw new IllegalArgumentException("Documents for " + - "RSyntaxTextArea must be instances of " + - "RSyntaxDocument!"); - if (markOccurrencesSupport != null) { - markOccurrencesSupport.clear(); - } - super.setDocument(document); - setSyntaxEditingStyle(((RSyntaxDocument)document).getSyntaxStyle()); - if (markOccurrencesSupport != null) { - markOccurrencesSupport.doMarkOccurrences(); - } - } - - - /** - * Sets whether EOL markers are visible at the end of each line. This - * method fires a property change of type {@link #EOL_VISIBLE_PROPERTY}. - * - * @param visible Whether EOL markers are visible. - * @see #getEOLMarkersVisible() - * @see #setWhitespaceVisible(boolean) - */ - public void setEOLMarkersVisible(boolean visible) { - if (visible!=eolMarkersVisible) { - eolMarkersVisible = visible; - repaint(); - firePropertyChange(EOL_VISIBLE_PROPERTY, !visible, visible); - } - } - - - /** - * Sets the font used by this text area. Note that if some token styles - * are using a different font, they will not be changed by calling this - * method. To set different fonts on individual token types, use the - * text area's SyntaxScheme. - * - * @param font The font. - * @see SyntaxScheme#getStyle(int) - */ - @Override - public void setFont(Font font) { - - Font old = super.getFont(); - super.setFont(font); // Do this first. - - // Usually programmers keep a single font for all token types, but - // may use bold or italic for styling some. - SyntaxScheme scheme = getSyntaxScheme(); - if (scheme!=null && old!=null) { - scheme.changeBaseFont(old, font); - calculateLineHeight(); - } - - // We must be connected to a screen resource for our - // graphics to be non-null. - if (isDisplayable()) { - refreshFontMetrics(getGraphics2D(getGraphics())); - // Updates the margin line. - updateMarginLineX(); - // Force the current line highlight to be repainted, even - // though the caret's location hasn't changed. - forceCurrentLineHighlightRepaint(); - // Get line number border in text area to repaint again - // since line heights have updated. - firePropertyChange("font", old, font); - // So parent JScrollPane will have its scrollbars updated. - revalidate(); - } - - } - - - /** - * Sets whether fractional font metrics are enabled. This method fires - * a property change event of type {@link #FRACTIONAL_FONTMETRICS_PROPERTY}. - * - * @param enabled Whether fractional font metrics are enabled. - * @see #getFractionalFontMetricsEnabled() - */ - public void setFractionalFontMetricsEnabled(boolean enabled) { - if (fractionalFontMetricsEnabled!=enabled) { - fractionalFontMetricsEnabled = enabled; - // We must be connected to a screen resource for our graphics to be - // non-null. - if (isDisplayable()) { - refreshFontMetrics(getGraphics2D(getGraphics())); - } - firePropertyChange(FRACTIONAL_FONTMETRICS_PROPERTY, - !enabled, enabled); - } - } - - - /** - * Sets the highlighter used by this text area. - * - * @param h The highlighter. - * @throws IllegalArgumentException If h is not an instance - * of {@link RSyntaxTextAreaHighlighter}. - */ - @Override - public void setHighlighter(Highlighter h) { - if (!(h instanceof RSyntaxTextAreaHighlighter)) { - throw new IllegalArgumentException("RSyntaxTextArea requires " + - "an RSyntaxTextAreaHighlighter for its Highlighter"); - } - super.setHighlighter(h); - } - - - /** - * Sets whether "secondary" languages should have their backgrounds - * colored differently to visually differentiate them. This feature - * imposes a fair performance penalty. This method fires a property change - * event of type {@link #HIGHLIGHT_SECONDARY_LANGUAGES_PROPERTY}. - * - * @see #getHighlightSecondaryLanguages() - * @see #setSecondaryLanguageBackground(int, Color) - * @see #getSecondaryLanguageCount() - */ - public void setHighlightSecondaryLanguages(boolean highlight) { - if (this.highlightSecondaryLanguages!=highlight) { - highlightSecondaryLanguages = highlight; - repaint(); - firePropertyChange(HIGHLIGHT_SECONDARY_LANGUAGES_PROPERTY, - !highlight, highlight); - } - } - - - /** - * Sets the color to use when painting hyperlinks. - * - * @param fg The color to use when painting hyperlinks. - * @throws NullPointerException If fg is null. - * @see #getHyperlinkForeground() - * @see #setHyperlinksEnabled(boolean) - */ - public void setHyperlinkForeground(Color fg) { - if (fg==null) { - throw new NullPointerException("fg cannot be null"); - } - hyperlinkFG = fg; - } - - - /** - * Sets whether hyperlinks are enabled for this text area. This method - * fires a property change event of type - * {@link #HYPERLINKS_ENABLED_PROPERTY}. - * - * @param enabled Whether hyperlinks are enabled. - * @see #getHyperlinksEnabled() - */ - public void setHyperlinksEnabled(boolean enabled) { - if (this.hyperlinksEnabled!=enabled) { - this.hyperlinksEnabled = enabled; - repaint(); - firePropertyChange(HYPERLINKS_ENABLED_PROPERTY, !enabled, enabled); - } - } - - - public void setLinkGenerator(LinkGenerator generator) { - this.linkGenerator = generator; - } - - - /** - * Sets the mask for the key used to toggle whether we are scanning for - * hyperlinks with mouse hovering. The default value is - * CTRL_DOWN_MASK. - * - * @param mask The mask to use. This should be some bitwise combination of - * {@link InputEvent#CTRL_DOWN_MASK}, - * {@link InputEvent#ALT_DOWN_MASK}, - * {@link InputEvent#SHIFT_DOWN_MASK} or - * {@link InputEvent#META_DOWN_MASK}. - * For invalid values, behavior is undefined. - * @see InputEvent - */ - public void setLinkScanningMask(int mask) { - mask &= (InputEvent.CTRL_DOWN_MASK|InputEvent.META_DOWN_MASK| - InputEvent.ALT_DOWN_MASK|InputEvent.SHIFT_DOWN_MASK); - if (mask==0) { - throw new IllegalArgumentException("mask argument should be " + - "some combination of InputEvent.*_DOWN_MASK fields"); - } - linkScanningMask = mask; - } - - - /** - * Toggles whether "mark occurrences" is enabled. This method fires a - * property change event of type {@link #MARK_OCCURRENCES_PROPERTY}. - * - * @param markOccurrences Whether "Mark Occurrences" should be enabled. - * @see #getMarkOccurrences() - * @see #setMarkOccurrencesColor(Color) - */ - public void setMarkOccurrences(boolean markOccurrences) { - if (markOccurrences) { - if (markOccurrencesSupport==null) { - markOccurrencesSupport = new MarkOccurrencesSupport(); - markOccurrencesSupport.install(this); - firePropertyChange(MARK_OCCURRENCES_PROPERTY, false, true); - } - } - else { - if (markOccurrencesSupport!=null) { - markOccurrencesSupport.uninstall(); - markOccurrencesSupport = null; - firePropertyChange(MARK_OCCURRENCES_PROPERTY, true, false); - } - } - } - - - /** - * Sets the "mark occurrences" color. - * - * @param color The new color. This cannot be null. - * @see #getMarkOccurrencesColor() - * @see #setMarkOccurrences(boolean) - */ - public void setMarkOccurrencesColor(Color color) { - markOccurrencesColor = color; - if (markOccurrencesSupport!=null) { - markOccurrencesSupport.setColor(color); - } - } - - - /** - * Sets the color used as the background for a matched bracket. - * - * @param color The color to use. If this is null, then no - * special background is painted behind a matched bracket. - * @see #getMatchedBracketBGColor - * @see #setMatchedBracketBorderColor - * @see #setPaintMarkOccurrencesBorder(boolean) - */ - public void setMatchedBracketBGColor(Color color) { - matchedBracketBGColor = color; - if (match!=null) { - repaint(); - } - } - - - /** - * Sets the color used as the border for a matched bracket. - * - * @param color The color to use. - * @see #getMatchedBracketBorderColor - * @see #setMatchedBracketBGColor - */ - public void setMatchedBracketBorderColor(Color color) { - matchedBracketBorderColor = color; - if (match!=null) { - repaint(); - } - } - - - /** - * Toggles whether a border should be painted around marked occurrences. - * - * @param paintBorder Whether to paint a border. - * @see #getPaintMarkOccurrencesBorder() - * @see #setMarkOccurrencesColor(Color) - * @see #setMarkOccurrences(boolean) - */ - public void setPaintMarkOccurrencesBorder(boolean paintBorder) { - paintMarkOccurrencesBorder = paintBorder; - if (markOccurrencesSupport!=null) { - markOccurrencesSupport.setPaintBorder(paintBorder); - } - } - - - /** - * Sets whether the bracket at the caret position is painted as a "match" - * when a matched bracket is found. Note that this property does nothing - * if {@link #isBracketMatchingEnabled()} returns false.

- * - * This method fires a property change event of type - * {@link #PAINT_MATCHED_BRACKET_PAIR_PROPERTY}. - * - * @param paintPair Whether both brackets in a bracket pair should be - * highlighted when bracket matching is enabled. - * @see #getPaintMatchedBracketPair() - * @see #isBracketMatchingEnabled() - * @see #setBracketMatchingEnabled(boolean) - */ - public void setPaintMatchedBracketPair(boolean paintPair) { - if (paintPair!=paintMatchedBracketPair) { - paintMatchedBracketPair = paintPair; - doBracketMatching(); - repaint(); - firePropertyChange(PAINT_MATCHED_BRACKET_PAIR_PROPERTY, - !paintMatchedBracketPair, paintMatchedBracketPair); - } - } - - - /** - * Toggles whether tab lines are painted. This method fires a property - * change event of type {@link #TAB_LINES_PROPERTY}. - * - * @param paint Whether tab lines are painted. - * @see #getPaintTabLines() - * @see #setTabLineColor(Color) - */ - public void setPaintTabLines(boolean paint) { - if (paint!=paintTabLines) { - paintTabLines = paint; - repaint(); - firePropertyChange(TAB_LINES_PROPERTY, !paint, paint); - } - } - - - /** - * Sets the parser delay. This is the delay that must occur between edits - * for any registered {@link Parser}s to run. - * - * @param millis The new parser delay, in milliseconds. This must be - * greater than zero. - * @see #getParserDelay() - */ - public void setParserDelay(int millis) { - if (parserManager==null) { - parserManager = new ParserManager(this); - } - parserManager.setDelay(millis); - } - - - /** - * Applications typically have no need to modify this value.

- * - * Workaround for JTextComponents allowing the caret to be rendered - * entirely off-screen if the entire "previous" character fit entirely. - * - * @param rhsCorrection The amount of space to add to the x-axis preferred - * span. This should be non-negative. - * @see #getRightHandSideCorrection() - */ - public void setRightHandSideCorrection(int rhsCorrection) { - if (rhsCorrection<0) { - throw new IllegalArgumentException("correction should be > 0"); - } - if (rhsCorrection!=this.rhsCorrection) { - this.rhsCorrection = rhsCorrection; - revalidate(); - repaint(); - } - } - - - /** - * Sets the background color to use for a secondary language. - * - * @param index The language index. Note that these are 1-based, not - * 0-based, and should be in the range - * 1-getSecondaryLanguageCount(), inclusive. - * @param color The new color, or null for none. - * @see #getSecondaryLanguageBackground(int) - * @see #getSecondaryLanguageCount() - */ - public void setSecondaryLanguageBackground(int index, Color color) { - index--; - Color old = secondaryLanguageBackgrounds[index]; - if ((color==null && old!=null) || (color!=null && !color.equals(old))) { - secondaryLanguageBackgrounds[index] = color; - if (getHighlightSecondaryLanguages()) { - repaint(); - } - } - } - - - /** - * Sets what type of syntax highlighting this editor is doing. This method - * fires a property change of type {@link #SYNTAX_STYLE_PROPERTY}. - * - * @param styleKey The syntax editing style to use, for example, - * {@link SyntaxConstants#SYNTAX_STYLE_NONE} or - * {@link SyntaxConstants#SYNTAX_STYLE_JAVA}. - * @see #getSyntaxEditingStyle() - * @see SyntaxConstants - */ - public void setSyntaxEditingStyle(String styleKey) { - if (styleKey==null) { - styleKey = SYNTAX_STYLE_NONE; - } - if (!styleKey.equals(syntaxStyleKey)) { - String oldStyle = syntaxStyleKey; - syntaxStyleKey = styleKey; - ((RSyntaxDocument)getDocument()).setSyntaxStyle(styleKey); - firePropertyChange(SYNTAX_STYLE_PROPERTY, oldStyle, styleKey); - setActiveLineRange(-1, -1); - } - - } - - - /** - * Sets all of the colors used in syntax highlighting to the colors - * specified. This uses a shallow copy of the color scheme so that - * multiple text areas can share the same color scheme and have their - * properties changed simultaneously.

- * - * This method fires a property change event of type - * {@link #SYNTAX_SCHEME_PROPERTY}. - * - * @param scheme The instance of SyntaxScheme to use. - * @see #getSyntaxScheme() - */ - public void setSyntaxScheme(SyntaxScheme scheme) { - - // NOTE: We don't check whether colorScheme is the same as the - // current scheme because DecreaseFontSizeAction and - // IncreaseFontSizeAction need it this way. - // FIXME: Find a way around this. - - SyntaxScheme old = this.syntaxScheme; - this.syntaxScheme = scheme; - - // Recalculate the line height. We do this here instead of in - // refreshFontMetrics() as this method is called less often and we - // don't need the rendering hints to get the font's height. - calculateLineHeight(); - - if (isDisplayable()) { - refreshFontMetrics(getGraphics2D(getGraphics())); - } - - // Updates the margin line and "matched bracket" highlight - updateMarginLineX(); - lastBracketMatchPos = -1; - doBracketMatching(); - - // Force the current line highlight to be repainted, even though - // the caret's location hasn't changed. - forceCurrentLineHighlightRepaint(); - - // So encompassing JScrollPane will have its scrollbars updated. - revalidate(); - - firePropertyChange(SYNTAX_SCHEME_PROPERTY, old, this.syntaxScheme); - - } - - - /** - * If templates are enabled, all currently-known templates are forgotten - * and all templates are loaded from all files in the specified directory - * ending in "*.xml". If templates aren't enabled, nothing happens. - * - * @param dir The directory containing files ending in extension - * .xml that contain templates to load. - * @return true if the load was successful; - * false if either templates aren't currently - * enabled or the load failed somehow (most likely, the - * directory doesn't exist). - * @see #getTemplatesEnabled - * @see #setTemplatesEnabled - * @see #saveTemplates - */ - public static synchronized boolean setTemplateDirectory(String dir) { - if (getTemplatesEnabled() && dir!=null) { - File directory = new File(dir); - if (directory.isDirectory()) { - return getCodeTemplateManager(). - setTemplateDirectory(directory)>-1; - } - boolean created = directory.mkdir(); - if (created) { - return getCodeTemplateManager(). - setTemplateDirectory(directory)>-1; - } - } - return false; - } - - - /** - * Enables or disables templates.

- * - * Templates are a set of "shorthand identifiers" that you can configure - * so that you only have to type a short identifier (such as "forb") to - * insert a larger amount of code into the document (such as:

- * - *

-	 *   for (<caret>) {
-	 *
-	 *   }
-	 * 
- * - * Templates are a shared resource among all instances of - * RSyntaxTextArea; that is, templates can only be - * enabled/disabled for all text areas globally, not individually, and - * all text areas have access of the same templates. This should not - * be an issue; rather, it should be beneficial as it promotes - * uniformity among all text areas in an application.

- * - * For more flexible boilerplate code insertion, consider using the - * TemplateCompletion - * class in the - * AutoComplete - * add-on library. - * - * @param enabled Whether or not templates should be enabled. - * @see #getTemplatesEnabled() - */ - public static synchronized void setTemplatesEnabled(boolean enabled) { - templatesEnabled = enabled; - } - - - /** - * Sets the color use to paint tab lines. This method fires a property - * change event of type {@link #TAB_LINE_COLOR_PROPERTY}. - * - * @param c The color. If this value is null, the default - * (gray) is used. - * @see #getTabLineColor() - * @see #setPaintTabLines(boolean) - * @see #getPaintTabLines() - */ - public void setTabLineColor(Color c) { - - if (c==null) { - c = Color.gray; - } - - if (!c.equals(tabLineColor)) { - Color old = tabLineColor; - tabLineColor = c; - if (getPaintTabLines()) { - repaint(); - } - firePropertyChange(TAB_LINE_COLOR_PROPERTY, old, tabLineColor); - } - - } - - - /** - * Sets whether "focusable" tool tips are used instead of standard ones. - * Focusable tool tips are tool tips that the user can click on, - * resize, copy from, and clink links in. This method fires a property - * change event of type {@link #FOCUSABLE_TIPS_PROPERTY}. - * - * @param use Whether to use focusable tool tips. - * @see #getUseFocusableTips() - * @see FocusableTip - */ - public void setUseFocusableTips(boolean use) { - if (use!=useFocusableTips) { - useFocusableTips = use; - firePropertyChange(FOCUSABLE_TIPS_PROPERTY, !use, use); - } - } - - - /** - * Sets whether selected text should use the "selected text color" property - * (set via {@link #setSelectedTextColor(Color)}). This is the typical - * behavior of text components. By default, RSyntaxTextArea does not do - * this, so that token styles are visible even in selected regions of text. - * This method fires a property change event of type - * {@link #USE_SELECTED_TEXT_COLOR_PROPERTY}. - * - * @param use Whether to use the "selected text" color when painting text - * in selected regions. - * @see #getUseSelectedTextColor() - */ - public void setUseSelectedTextColor(boolean use) { - if (use!=useSelectedTextColor) { - useSelectedTextColor = use; - firePropertyChange(USE_SELECTED_TEXT_COLOR_PROPERTY, !use, use); - } - } - - - /** - * Sets whether whitespace is visible. This method fires a property change - * of type {@link #VISIBLE_WHITESPACE_PROPERTY}. - * - * @param visible Whether whitespace should be visible. - * @see #isWhitespaceVisible() - */ - public void setWhitespaceVisible(boolean visible) { - if (whitespaceVisible!=visible) { - this.whitespaceVisible = visible; - tokenPainter = visible ? new VisibleWhitespaceTokenPainter() : - (TokenPainter)new DefaultTokenPainter(); - repaint(); - firePropertyChange(VISIBLE_WHITESPACE_PROPERTY, !visible, visible); - } - } - - - /** - * Resets the editor state after the user clicks on a hyperlink or releases - * the hyperlink modifier. - */ - private void stopScanningForLinks() { - if (isScanningForLinks) { - Cursor c = getCursor(); - isScanningForLinks = false; - linkGeneratorResult = null; - hoveredOverLinkOffset = -1; - if (c!=null && c.getType()==Cursor.HAND_CURSOR) { - setCursor(Cursor.getPredefinedCursor(Cursor.TEXT_CURSOR)); - repaint(); // TODO: Repaint just the affected line. - } - } - } - - - /** - * {@inheritDoc} - */ - @Override - public void undoLastAction() { - super.undoLastAction(); - // Occasionally marked occurrences' Positions are in invalid states - // due to how javax.swing.text.AbstractDocument tracks the start and - // end offsets. This is usually not needed, but can be when the last - // token in the Document is a marked occurrence, and an undo or redo - // occurs which clears most of the document text. In that case it is - // possible for the end Position to be reset to something small, but - // the start offset to be its prior valid (start > end). - ((RSyntaxTextAreaHighlighter)getHighlighter()). - clearMarkOccurrencesHighlights(); - } - - - /** - * Returns the token at the specified position in the view. - * - * @param p The position in the view. - * @return The token, or null if no token is at that - * position. - * @see #modelToToken(int) - */ - /* - * TODO: This is a little inefficient. This should convert view - * coordinates to the underlying token (if any). The way things currently - * are, we're calling getTokenListForLine() twice (once in viewToModel() - * and once here). - */ - public Token viewToToken(Point p) { - return modelToToken(viewToModel(p)); - } - - - /** - * A timer that animates the "bracket matching" animation. - */ - private class BracketMatchingTimer extends Timer implements ActionListener { - - private int pulseCount; - - public BracketMatchingTimer() { - super(20, null); - addActionListener(this); - setCoalesce(false); - } - - public void actionPerformed(ActionEvent e) { - if (isBracketMatchingEnabled()) { - if (match!=null) { - updateAndInvalidate(match); - } - if (dotRect!=null && getPaintMatchedBracketPair()) { - updateAndInvalidate(dotRect); - } - if (++pulseCount==8) { - pulseCount = 0; - stop(); - } - } - } - - private void init(Rectangle r) { - r.x += 3; - r.y += 3; - r.width -= 6; - r.height -= 6; // So animation can "grow" match - } - - @Override - public void start() { - init(match); - if (dotRect!=null && getPaintMatchedBracketPair()) { - init(dotRect); - } - pulseCount = 0; - super.start(); - } - - private void updateAndInvalidate(Rectangle r) { - if (pulseCount<5) { - r.x--; - r.y--; - r.width += 2; - r.height += 2; - repaint(r.x,r.y, r.width,r.height); - } - else if (pulseCount<7) { - r.x++; - r.y++; - r.width -= 2; - r.height -= 2; - repaint(r.x-2,r.y-2, r.width+5,r.height+5); - } - } - - } - - - /** - * Handles hyperlinks. - */ - private class RSyntaxTextAreaMutableCaretEvent - extends RTextAreaMutableCaretEvent { - - private Insets insets; - - protected RSyntaxTextAreaMutableCaretEvent(RTextArea textArea) { - super(textArea); - insets = new Insets(0, 0, 0, 0); - } - - private HyperlinkEvent createHyperlinkEvent() { - HyperlinkEvent he = null; - if (linkGeneratorResult!=null) { - he = linkGeneratorResult.execute(); - linkGeneratorResult = null; - } - else { - Token t = modelToToken(hoveredOverLinkOffset); - URL url = null; - String desc = null; - try { - String temp = t.getLexeme(); - // URI's need "http://" prefix for web URL's to work. - if (temp.startsWith("www.")) { - temp = "http://" + temp; - } - url = new URL(temp); - } catch (MalformedURLException mue) { - desc = mue.getMessage(); - } - he = new HyperlinkEvent(RSyntaxTextArea.this, - HyperlinkEvent.EventType.ACTIVATED, - url, desc); - } - return he; - } - - private final boolean equal(LinkGeneratorResult e1, - LinkGeneratorResult e2) { - return e1.getSourceOffset()==e2.getSourceOffset(); - } - - @Override - public void mouseClicked(MouseEvent e) { - if (getHyperlinksEnabled() && isScanningForLinks && - hoveredOverLinkOffset>-1) { - HyperlinkEvent he = createHyperlinkEvent(); - if (he!=null) { - fireHyperlinkUpdate(he); - } - stopScanningForLinks(); - } - } - - @Override - public void mouseMoved(MouseEvent e) { - - super.mouseMoved(e); - - if (!getHyperlinksEnabled()) { - return; - } - - // If our link scanning mask is pressed... - if ((e.getModifiersEx()&linkScanningMask)==linkScanningMask) { - - // GitHub issue #25 - links identified at "edges" of editor - // should not be activated if mouse is in margin insets. - insets = getInsets(insets); - if (insets!=null) { - int x = e.getX(); - int y = e.getY(); - if (x<=insets.left || yRTextAreaEditorKit that adds functionality for - * programming-specific stuff. There are currently subclasses to handle: - * - *

    - *
  • Toggling code folds.
  • - *
  • Aligning "closing" curly braces with their matches, if the current - * programming language uses curly braces to identify code blocks.
  • - *
  • Copying the current selection as RTF.
  • - *
  • Block indentation (increasing the indent of one or multiple lines)
  • - *
  • Block un-indentation (decreasing the indent of one or multiple lines) - *
  • - *
  • Inserting a "code template" when a configurable key (e.g. a space) is - * pressed
  • - *
  • Decreasing the point size of all fonts in the text area
  • - *
  • Increasing the point size of all fonts in the text area
  • - *
  • Moving the caret to the "matching bracket" of the one at the current - * caret position
  • - *
  • Toggling whether the currently selected lines are commented out.
  • - *
  • Better selection of "words" on mouse double-clicks for programming - * languages.
  • - *
  • Better keyboard navigation via Ctrl+arrow keys for programming - * languages.
  • - *
- * - * @author Robert Futrell - * @version 0.5 - */ -public class RSyntaxTextAreaEditorKit extends RTextAreaEditorKit { - - private static final long serialVersionUID = 1L; - - public static final String rstaCloseCurlyBraceAction = "RSTA.CloseCurlyBraceAction"; - public static final String rstaCloseMarkupTagAction = "RSTA.CloseMarkupTagAction"; - public static final String rstaCollapseAllFoldsAction = "RSTA.CollapseAllFoldsAction"; - public static final String rstaCollapseAllCommentFoldsAction = "RSTA.CollapseAllCommentFoldsAction"; - public static final String rstaCollapseFoldAction = "RSTA.CollapseFoldAction"; - public static final String rstaCopyAsRtfAction = "RSTA.CopyAsRtfAction"; - public static final String rstaDecreaseIndentAction = "RSTA.DecreaseIndentAction"; - public static final String rstaExpandAllFoldsAction = "RSTA.ExpandAllFoldsAction"; - public static final String rstaExpandFoldAction = "RSTA.ExpandFoldAction"; - public static final String rstaGoToMatchingBracketAction = "RSTA.GoToMatchingBracketAction"; - public static final String rstaPossiblyInsertTemplateAction = "RSTA.TemplateAction"; - public static final String rstaToggleCommentAction = "RSTA.ToggleCommentAction"; - public static final String rstaToggleCurrentFoldAction = "RSTA.ToggleCurrentFoldAction"; - - private static final String MSG = "org.fife.ui.rsyntaxtextarea.RSyntaxTextArea"; - private static final ResourceBundle msg = ResourceBundle.getBundle(MSG); - - - /** - * The actions that RSyntaxTextAreaEditorKit adds to those of - * RTextAreaEditorKit. - */ - private static final Action[] defaultActions = { - new CloseCurlyBraceAction(), - new CloseMarkupTagAction(), - new BeginWordAction(beginWordAction, false), - new BeginWordAction(selectionBeginWordAction, true), - new ChangeFoldStateAction(rstaCollapseFoldAction, true), - new ChangeFoldStateAction(rstaExpandFoldAction, false), - new CollapseAllFoldsAction(), - new CopyAsRtfAction(), - //new DecreaseFontSizeAction(), - new DecreaseIndentAction(), - new DeletePrevWordAction(), - new DumbCompleteWordAction(), - new EndAction(endAction, false), - new EndAction(selectionEndAction, true), - new EndWordAction(endWordAction, false), - new EndWordAction(endWordAction, true), - new ExpandAllFoldsAction(), - new GoToMatchingBracketAction(), - new InsertBreakAction(), - //new IncreaseFontSizeAction(), - new InsertTabAction(), - new NextWordAction(nextWordAction, false), - new NextWordAction(selectionNextWordAction, true), - new PossiblyInsertTemplateAction(), - new PreviousWordAction(previousWordAction, false), - new PreviousWordAction(selectionPreviousWordAction, true), - new SelectWordAction(), - new ToggleCommentAction(), - }; - - - /** - * Constructor. - */ - public RSyntaxTextAreaEditorKit() { - } - - - /** - * Returns the default document used by RSyntaxTextAreas. - * - * @return The document. - */ - @Override - public Document createDefaultDocument() { - return new RSyntaxDocument(SyntaxConstants.SYNTAX_STYLE_NONE); - } - - - /** - * Overridden to return a row header that is aware of folding. - * - * @param textArea The text area. - * @return The icon row header. - */ - @Override - public IconRowHeader createIconRowHeader(RTextArea textArea) { - return new FoldingAwareIconRowHeader((RSyntaxTextArea)textArea); - } - - - /** - * Fetches the set of commands that can be used - * on a text component that is using a model and - * view produced by this kit. - * - * @return the command list - */ - @Override - public Action[] getActions() { - return TextAction.augmentList(super.getActions(), - RSyntaxTextAreaEditorKit.defaultActions); - } - - - /** - * Returns localized text for an action. There's definitely a better place - * for this functionality. - * - * @param key The key into the action resource bundle. - * @return The localized text. - */ - public static String getString(String key) { - return msg.getString(key); - } - - - /** - * Positions the caret at the beginning of the word. This class is here - * to better handle finding the "beginning of the word" for programming - * languages. - */ - protected static class BeginWordAction - extends RTextAreaEditorKit.BeginWordAction { - - private Segment seg; - - protected BeginWordAction(String name, boolean select) { - super(name, select); - seg = new Segment(); - } - - @Override - protected int getWordStart(RTextArea textArea, int offs) - throws BadLocationException { - - if (offs==0) { - return offs; - } - - RSyntaxDocument doc = (RSyntaxDocument)textArea.getDocument(); - int line = textArea.getLineOfOffset(offs); - int start = textArea.getLineStartOffset(line); - if (offs==start) { - return start; - } - int end = textArea.getLineEndOffset(line); - if (line!=textArea.getLineCount()-1) { - end--; - } - doc.getText(start, end-start, seg); - - // Determine the "type" of char at offs - lower case, upper case, - // whitespace or other. We take special care here as we're starting - // in the middle of the Segment to check whether we're already at - // the "beginning" of a word. - int firstIndex = seg.getBeginIndex() + (offs-start) - 1; - seg.setIndex(firstIndex); - char ch = seg.current(); - char nextCh = offs==end ? 0 : seg.array[seg.getIndex() + 1]; - - // The "word" is a group of letters and/or digits - int languageIndex = 0; // TODO - if (doc.isIdentifierChar(languageIndex, ch)) { - if (offs!=end && !doc.isIdentifierChar(languageIndex, nextCh)) { - return offs; - } - do { - ch = seg.previous(); - } while (doc.isIdentifierChar(languageIndex, ch)); - } - - // The "word" is whitespace - else if (Character.isWhitespace(ch)) { - if (offs!=end && !Character.isWhitespace(nextCh)) { - return offs; - } - do { - ch = seg.previous(); - } while (Character.isWhitespace(ch)); - } - - // Otherwise, the "word" a single "something else" char (operator, - // etc.). - - offs -= firstIndex - seg.getIndex() + 1;//seg.getEndIndex() - seg.getIndex(); - if (ch!=Segment.DONE && nextCh!='\n') { - offs++; - } - - return offs; - - } - - } - - - /** - * Expands or collapses the nearest fold. - */ - public static class ChangeFoldStateAction extends FoldRelatedAction { - - private boolean collapse; - - public ChangeFoldStateAction(String name, boolean collapse) { - super(name); - this.collapse = collapse; - } - - public ChangeFoldStateAction(String name, Icon icon, - String desc, Integer mnemonic, KeyStroke accelerator) { - super(name, icon, desc, mnemonic, accelerator); - } - - @Override - public void actionPerformedImpl(ActionEvent e, RTextArea textArea) { - RSyntaxTextArea rsta = (RSyntaxTextArea)textArea; - if (rsta.isCodeFoldingEnabled()) { - Fold fold = getClosestFold(rsta); - if (fold!=null) { - fold.setCollapsed(collapse); - } - possiblyRepaintGutter(textArea); - } - else { - UIManager.getLookAndFeel().provideErrorFeedback(rsta); - } - } - - @Override - public final String getMacroID() { - return getName(); - } - - } - - - /** - * Action that (optionally) aligns a closing curly brace with the line - * containing its matching opening curly brace. - */ - public static class CloseCurlyBraceAction extends RecordableTextAction { - - private static final long serialVersionUID = 1L; - - private Point bracketInfo; - private Segment seg; - - public CloseCurlyBraceAction() { - super(rstaCloseCurlyBraceAction); - seg = new Segment(); - } - - @Override - public void actionPerformedImpl(ActionEvent e, RTextArea textArea) { - - RSyntaxTextArea rsta = (RSyntaxTextArea)textArea; - RSyntaxDocument doc = (RSyntaxDocument)rsta.getDocument(); - - int languageIndex = 0; - int dot = textArea.getCaretPosition(); - if (dot>0) { - Token t = RSyntaxUtilities.getTokenAtOffset(rsta, dot-1); - languageIndex = t==null ? 0 : t.getLanguageIndex(); - } - boolean alignCurlyBraces = rsta.isAutoIndentEnabled() && - doc.getCurlyBracesDenoteCodeBlocks(languageIndex); - - if (alignCurlyBraces) { - textArea.beginAtomicEdit(); - } - - try { - - textArea.replaceSelection("}"); - - // If the user wants to align curly braces... - if (alignCurlyBraces) { - - Element root = doc.getDefaultRootElement(); - dot = rsta.getCaretPosition() - 1; // Start before '}' - int line = root.getElementIndex(dot); - Element elem = root.getElement(line); - int start = elem.getStartOffset(); - - // Get the current line's text up to the '}' entered. - try { - doc.getText(start, dot-start, seg); - } catch (BadLocationException ble) { // Never happens - ble.printStackTrace(); - return; - } - - // Only attempt to align if there's only whitespace up to - // the '}' entered. - for (int i=0; i-1) { - try { - String ws = RSyntaxUtilities.getLeadingWhitespace( - doc, bracketInfo.y); - rsta.replaceRange(ws, start, dot); - } catch (BadLocationException ble) { - ble.printStackTrace(); - return; - } - } - - } - - } finally { - if (alignCurlyBraces) { - textArea.endAtomicEdit(); - } - } - - } - - @Override - public final String getMacroID() { - return rstaCloseCurlyBraceAction; - } - - } - - - /** - * (Optionally) completes a closing markup tag. - */ - public static class CloseMarkupTagAction extends RecordableTextAction { - - private static final long serialVersionUID = 1L; - - public CloseMarkupTagAction() { - super(rstaCloseMarkupTagAction); - } - - @Override - public void actionPerformedImpl(ActionEvent e, RTextArea textArea) { - - if (!textArea.isEditable() || !textArea.isEnabled()) { - UIManager.getLookAndFeel().provideErrorFeedback(textArea); - return; - } - - RSyntaxTextArea rsta = (RSyntaxTextArea)textArea; - RSyntaxDocument doc = (RSyntaxDocument)rsta.getDocument(); - - Caret c = rsta.getCaret(); - boolean selection = c.getDot()!=c.getMark(); - rsta.replaceSelection("/"); - - // Don't automatically complete a tag if there was a selection - int dot = c.getDot(); - - if (doc.getLanguageIsMarkup() && - doc.getCompleteMarkupCloseTags() && - !selection && rsta.getCloseMarkupTags() && dot>1) { - - try { - - // Check actual char before token type, since it's quicker - char ch = doc.charAt(dot-2); - if (ch=='<' || ch=='[') { - - Token t = doc.getTokenListForLine( - rsta.getCaretLineNumber()); - t = RSyntaxUtilities.getTokenAtOffset(t, dot-1); - if (t!=null && t.getType()==Token.MARKUP_TAG_DELIMITER) { - //System.out.println("Huzzah - closing tag!"); - String tagName = discoverTagName(doc, dot); - if (tagName!=null) { - rsta.replaceSelection(tagName + (char)(ch+2)); - } - } - - } - - } catch (BadLocationException ble) { // Never happens - UIManager.getLookAndFeel().provideErrorFeedback(rsta); - ble.printStackTrace(); - } - - } - - } - - /** - * Discovers the name of the tag being closed. Assumes standard - * SGML-style markup tags. - * - * @param doc The document to parse. - * @param dot The location of the caret. This should be right after - * the start of a closing tag token (e.g. "</" - * or "[" in the case of BBCode). - * @return The name of the tag to close, or null if it - * could not be determined. - */ - private String discoverTagName(RSyntaxDocument doc, int dot) { - - Stack stack = new Stack(); - - Element root = doc.getDefaultRootElement(); - int curLine = root.getElementIndex(dot); - - for (int i=0; i<=curLine; i++) { - - Token t = doc.getTokenListForLine(i); - while (t!=null && t.isPaintable()) { - - if (t.getType()==Token.MARKUP_TAG_DELIMITER) { - if (t.isSingleChar('<') || t.isSingleChar('[')) { - t = t.getNextToken(); - while (t!=null && t.isPaintable()) { - if (t.getType()==Token.MARKUP_TAG_NAME || - // Being lenient here and also checking - // for attributes, in case they - // (incorrectly) have whitespace between - // the '<' char and the element name. - t.getType()==Token.MARKUP_TAG_ATTRIBUTE) { - stack.push(t.getLexeme()); - break; - } - t = t.getNextToken(); - } - } - else if (t.length()==2 && t.charAt(0)=='/' && - (t.charAt(1)=='>' || - t.charAt(1)==']')) { - if (!stack.isEmpty()) { // Always true for valid XML - stack.pop(); - } - } - else if (t.length()==2 && - (t.charAt(0)=='<' || t.charAt(0)=='[') && - t.charAt(1)=='/') { - String tagName = null; - if (!stack.isEmpty()) { // Always true for valid XML - tagName = stack.pop(); - } - if (t.getEndOffset()>=dot) { - return tagName; - } - } - } - - t = t==null ? null : t.getNextToken(); - - } - - } - - return null; // Should never happen - - } - - @Override - public String getMacroID() { - return getName(); - } - - } - - - /** - * Collapses all comment folds. - */ - public static class CollapseAllCommentFoldsAction extends FoldRelatedAction{ - - private static final long serialVersionUID = 1L; - - public CollapseAllCommentFoldsAction() { - super(rstaCollapseAllCommentFoldsAction); - setProperties(msg, "Action.CollapseCommentFolds"); - } - - public CollapseAllCommentFoldsAction(String name, Icon icon, - String desc, Integer mnemonic, KeyStroke accelerator) { - super(name, icon, desc, mnemonic, accelerator); - } - - @Override - public void actionPerformedImpl(ActionEvent e, RTextArea textArea) { - RSyntaxTextArea rsta = (RSyntaxTextArea)textArea; - if (rsta.isCodeFoldingEnabled()) { - FoldCollapser collapser = new FoldCollapser(); - collapser.collapseFolds(rsta.getFoldManager()); - possiblyRepaintGutter(textArea); - } - else { - UIManager.getLookAndFeel().provideErrorFeedback(rsta); - } - } - - @Override - public final String getMacroID() { - return rstaCollapseAllCommentFoldsAction; - } - - } - - - /** - * Collapses all folds. - */ - public static class CollapseAllFoldsAction extends FoldRelatedAction { - - private static final long serialVersionUID = 1L; - - public CollapseAllFoldsAction() { - this(false); - } - - public CollapseAllFoldsAction(boolean localizedName) { - super(rstaCollapseAllFoldsAction); - if (localizedName) { - setProperties(msg, "Action.CollapseAllFolds"); - } - } - - public CollapseAllFoldsAction(String name, Icon icon, - String desc, Integer mnemonic, KeyStroke accelerator) { - super(name, icon, desc, mnemonic, accelerator); - } - - @Override - public void actionPerformedImpl(ActionEvent e, RTextArea textArea) { - RSyntaxTextArea rsta = (RSyntaxTextArea)textArea; - if (rsta.isCodeFoldingEnabled()) { - FoldCollapser collapser = new FoldCollapser() { - @Override - public boolean getShouldCollapse(Fold fold) { - return true; - } - }; - collapser.collapseFolds(rsta.getFoldManager()); - possiblyRepaintGutter(textArea); - } - else { - UIManager.getLookAndFeel().provideErrorFeedback(rsta); - } - } - - @Override - public final String getMacroID() { - return rstaCollapseAllFoldsAction; - } - - } - - - /** - * Action for copying text as RTF. - */ - public static class CopyAsRtfAction extends RecordableTextAction { - - private static final long serialVersionUID = 1L; - - public CopyAsRtfAction() { - super(rstaCopyAsRtfAction); - } - - public CopyAsRtfAction(String name, Icon icon, String desc, - Integer mnemonic, KeyStroke accelerator) { - super(name, icon, desc, mnemonic, accelerator); - } - - @Override - public void actionPerformedImpl(ActionEvent e, RTextArea textArea) { - ((RSyntaxTextArea)textArea).copyAsRtf(); - textArea.requestFocusInWindow(); - } - - @Override - public final String getMacroID() { - return getName(); - } - - } - - - /** - * Action for decreasing the font size of all fonts in the text area. - */ - public static class DecreaseFontSizeAction - extends RTextAreaEditorKit.DecreaseFontSizeAction { - - private static final long serialVersionUID = 1L; - - public DecreaseFontSizeAction() { - super(); - } - - public DecreaseFontSizeAction(String name, Icon icon, String desc, - Integer mnemonic, KeyStroke accelerator) { - super(name, icon, desc, mnemonic, accelerator); - } - - @Override - public void actionPerformedImpl(ActionEvent e, RTextArea textArea) { - - RSyntaxTextArea rsta = (RSyntaxTextArea)textArea; - SyntaxScheme scheme = rsta.getSyntaxScheme(); - - // All we need to do is update all of the fonts in syntax - // schemes, then call setSyntaxHighlightingColorScheme with the - // same scheme already being used. This relies on the fact that - // that method does not check whether the new scheme is different - // from the old scheme before updating. - - boolean changed = false; - int count = scheme.getStyleCount(); - for (int i=0; i=MINIMUM_SIZE) { - // Shrink by decreaseAmount. - ss.font = font.deriveFont(newSize); - changed = true; - } - else if (oldSize>MINIMUM_SIZE) { - // Can't shrink by full decreaseAmount, but - // can shrink a little bit. - ss.font = font.deriveFont(MINIMUM_SIZE); - changed = true; - } - } - } - } - - // Do the text area's font also. - Font font = rsta.getFont(); - float oldSize = font.getSize2D(); - float newSize = oldSize - decreaseAmount; - if (newSize>=MINIMUM_SIZE) { - // Shrink by decreaseAmount. - rsta.setFont(font.deriveFont(newSize)); - changed = true; - } - else if (oldSize>MINIMUM_SIZE) { - // Can't shrink by full decreaseAmount, but - // can shrink a little bit. - rsta.setFont(font.deriveFont(MINIMUM_SIZE)); - changed = true; - } - - // If we updated at least one font, update the screen. If - // all of the fonts were already the minimum size, beep. - if (changed) { - rsta.setSyntaxScheme(scheme); - // NOTE: This is a hack to get an encompassing - // RTextScrollPane to repaint its line numbers to account - // for a change in line height due to a font change. I'm - // not sure why we need to do this here but not when we - // change the syntax highlighting color scheme via the - // Options dialog... setSyntaxHighlightingColorScheme() - // calls revalidate() which won't repaint the scroll pane - // if scrollbars don't change, which is why we need this. - Component parent = rsta.getParent(); - if (parent instanceof javax.swing.JViewport) { - parent = parent.getParent(); - if (parent instanceof JScrollPane) { - parent.repaint(); - } - } - } - else - UIManager.getLookAndFeel().provideErrorFeedback(rsta); - - } - - } - - - /** - * Action for when un-indenting lines (either the current line if there is - * selection, or all selected lines if there is one). - */ - public static class DecreaseIndentAction extends RecordableTextAction { - - private static final long serialVersionUID = 1L; - - private Segment s; - - public DecreaseIndentAction() { - this(rstaDecreaseIndentAction); - } - - public DecreaseIndentAction(String name) { - super(name); - s = new Segment(); - } - - @Override - public void actionPerformedImpl(ActionEvent e, RTextArea textArea) { - - if (!textArea.isEditable() || !textArea.isEnabled()) { - UIManager.getLookAndFeel().provideErrorFeedback(textArea); - return; - } - - Document document = textArea.getDocument(); - Element map = document.getDefaultRootElement(); - Caret c = textArea.getCaret(); - int dot = c.getDot(); - int mark = c.getMark(); - int line1 = map.getElementIndex(dot); - int tabSize = textArea.getTabSize(); - - // If there is a selection, indent all lines in the selection. - // Otherwise, indent the line the caret is on. - if (dot!=mark) { - // Note that we cheaply reuse variables here, so don't - // take their names to mean what they are. - int line2 = map.getElementIndex(mark); - dot = Math.min(line1, line2); - mark = Math.max(line1, line2); - Element elem; - textArea.beginAtomicEdit(); - try { - for (line1=dot; line1i) { - // If the first character is a tab, remove it. - if (s.array[i]=='\t') { - doc.remove(start, 1); - } - // Otherwise, see if the first character is a space. If it - // is, remove all contiguous whitespaces at the beginning of - // this line, up to the tab size. - else if (s.array[i]==' ') { - i++; - int toRemove = 1; - while (i start) { - char ch = doc.charAt(offs); - if (isIdentifierChar(ch)) { - offs--; - } - } - else { // offs == start => previous word is on previous line - if (line == 0) { - return -1; - } - elem = root.getElement(--line); - offs = elem.getEndOffset() - 1; - } - - int prevWordStart = getPreviousWordStartInLine(doc, elem, offs); - while (prevWordStart == -1 && line > 0) { - line--; - elem = root.getElement(line); - prevWordStart = getPreviousWordStartInLine(doc, elem, - elem.getEndOffset()); - } - - return prevWordStart; - - } - - private int getPreviousWordStartInLine(RSyntaxDocument doc, - Element elem, int offs) throws BadLocationException { - - int start = elem.getStartOffset(); - int cur = offs; - - // Skip any whitespace or non-word chars - while (cur >= start) { - char ch = doc.charAt(cur); - if (isIdentifierChar(ch)) { - break; - } - cur--; - } - if (cur < start) { - // Empty line or nothing but whitespace/non-word chars - return -1; - } - - return getWordStartImpl(doc, elem, cur); - - } - - @Override - protected int getWordEnd(RTextArea textArea, int offs) - throws BadLocationException { - - RSyntaxDocument doc = (RSyntaxDocument)textArea.getDocument(); - Element root = doc.getDefaultRootElement(); - int line = root.getElementIndex(offs); - Element elem = root.getElement(line); - int end = elem.getEndOffset() - 1; - - int wordEnd = offs; - while (wordEnd <= end) { - if (!isIdentifierChar(doc.charAt(wordEnd))) { - break; - } - wordEnd++; - } - - return wordEnd; - - } - - @Override - protected int getWordStart(RTextArea textArea, int offs) - throws BadLocationException { - RSyntaxDocument doc = (RSyntaxDocument)textArea.getDocument(); - Element root = doc.getDefaultRootElement(); - int line = root.getElementIndex(offs); - Element elem = root.getElement(line); - return getWordStartImpl(doc, elem, offs); - } - - private static final int getWordStartImpl(RSyntaxDocument doc, - Element elem, int offs) throws BadLocationException { - - int start = elem.getStartOffset(); - - int wordStart = offs; - while (wordStart >= start) { - char ch = doc.charAt(wordStart); - // Ignore newlines so we work when caret is at end of line - if (!isIdentifierChar(ch) && ch != '\n') { - break; - } - wordStart--; - } - - return wordStart==offs ? offs : wordStart + 1; - - } - - /** - * Overridden to not suggest word completions if the text right before - * the caret contains non-word characters, such as '/' or '%'. - * - * @param prefix The prefix characters before the caret. - * @return Whether the prefix could be part of a "word" in the context - * of the text area's current content. - */ - @Override - protected boolean isAcceptablePrefix(String prefix) { - return prefix.length() > 0 && - isIdentifierChar(prefix.charAt(prefix.length()-1)); - } - - /** - * Returns whether the specified character should be considered part - * of an identifier. - * - * @param ch The character. - * @return Whether the character is part of an identifier. - */ - private static final boolean isIdentifierChar(char ch) { - //return doc.isIdentifierChar(languageIndex, ch); - return Character.isLetterOrDigit(ch) || ch == '_' || ch == '$'; - } - - } - - - /** - * Positions the caret at the end of the word. This class is here to - * better handle finding the "end of the word" in programming languages. - */ - protected static class EndWordAction - extends RTextAreaEditorKit.EndWordAction { - - private Segment seg; - - protected EndWordAction(String name, boolean select) { - super(name, select); - seg = new Segment(); - } - - @Override - protected int getWordEnd(RTextArea textArea, int offs) - throws BadLocationException { - - RSyntaxDocument doc = (RSyntaxDocument)textArea.getDocument(); - if (offs==doc.getLength()) { - return offs; - } - - int line = textArea.getLineOfOffset(offs); - int end = textArea.getLineEndOffset(line); - if (line!=textArea.getLineCount()-1) { - end--; // Hide newline - } - if (offs==end) { - return end; - } - doc.getText(offs, end-offs, seg); - - // Determine the "type" of char at offs - letter/digit, - // whitespace or other - char ch = seg.first(); - - // The "word" is a group of letters and/or digits - int languageIndex = 0; // TODO - if (doc.isIdentifierChar(languageIndex, ch)) { - do { - ch = seg.next(); - } while (doc.isIdentifierChar(languageIndex, ch)); - } - - // The "word" is whitespace. - else if (Character.isWhitespace(ch)) { - - do { - ch = seg.next(); - } while (Character.isWhitespace(ch)); - } - - // Otherwise, the "word" is a single character of some other type - // (operator, etc.). - - offs += seg.getIndex() - seg.getBeginIndex(); - return offs; - - } - - } - - - /** - * Expands all folds. - */ - public static class ExpandAllFoldsAction extends FoldRelatedAction { - - private static final long serialVersionUID = 1L; - - public ExpandAllFoldsAction() { - this(false); - } - - public ExpandAllFoldsAction(boolean localizedName) { - super(rstaExpandAllFoldsAction); - if (localizedName) { - setProperties(msg, "Action.ExpandAllFolds"); - } - } - - public ExpandAllFoldsAction(String name, Icon icon, - String desc, Integer mnemonic, KeyStroke accelerator) { - super(name, icon, desc, mnemonic, accelerator); - } - - @Override - public void actionPerformedImpl(ActionEvent e, RTextArea textArea) { - RSyntaxTextArea rsta = (RSyntaxTextArea)textArea; - if (rsta.isCodeFoldingEnabled()) { - FoldManager fm = rsta.getFoldManager(); - for (int i=0; i-1) { - // Go to the position AFTER the bracket so the previous - // bracket (which we were just on) is highlighted. - rsta.setCaretPosition(bracketInfo.y+1); - } - else { - UIManager.getLookAndFeel().provideErrorFeedback(rsta); - } - } - - @Override - public final String getMacroID() { - return rstaGoToMatchingBracketAction; - } - - } - - - /** - * Action for increasing the font size of all fonts in the text area. - */ - public static class IncreaseFontSizeAction - extends RTextAreaEditorKit.IncreaseFontSizeAction { - - private static final long serialVersionUID = 1L; - - public IncreaseFontSizeAction() { - super(); - } - - public IncreaseFontSizeAction(String name, Icon icon, String desc, - Integer mnemonic, KeyStroke accelerator) { - super(name, icon, desc, mnemonic, accelerator); - } - - @Override - public void actionPerformedImpl(ActionEvent e, RTextArea textArea) { - - RSyntaxTextArea rsta = (RSyntaxTextArea)textArea; - SyntaxScheme scheme = rsta.getSyntaxScheme(); - - // All we need to do is update all of the fonts in syntax - // schemes, then call setSyntaxHighlightingColorScheme with the - // same scheme already being used. This relies on the fact that - // that method does not check whether the new scheme is different - // from the old scheme before updating. - - boolean changed = false; - int count = scheme.getStyleCount(); - for (int i=0; ipos that - * is NOT a whitespace char, or -1 if only - * whitespace chars follow pos (or it is the end - * position in the string). - */ - private static final int atEndOfLine(int pos, String s, int sLen) { - for (int i=pos; i0) { - StringBuilder sb = new StringBuilder(); - if (line==textArea.getLineCount()-1) { - sb.append('\n'); - } - if (leadingWS!=null) { - sb.append(leadingWS); - } - sb.append("}\n"); - int dot = textArea.getCaretPosition(); - int end = textArea.getLineEndOffsetOfCurrentLine(); - // Insert at end of line, not at dot: they may have - // pressed Enter in the middle of the line and brought - // some text (though it must be whitespace and/or - // comments) down onto the new line. - textArea.insert(sb.toString(), end); - textArea.setCaretPosition(dot); // Caret may have moved - } - - } - - } - - } - - } - - - /** - * Action for inserting tabs. This is extended to "block indent" a - * group of contiguous lines if they are selected. - */ - public static class InsertTabAction extends RecordableTextAction { - - private static final long serialVersionUID = 1L; - - public InsertTabAction() { - super(insertTabAction); - } - - public InsertTabAction(String name) { - super(name); - } - - @Override - public void actionPerformedImpl(ActionEvent e, RTextArea textArea) { - - if (!textArea.isEditable() || !textArea.isEnabled()) { - UIManager.getLookAndFeel().provideErrorFeedback(textArea); - return; - } - - Document document = textArea.getDocument(); - Element map = document.getDefaultRootElement(); - Caret c = textArea.getCaret(); - int dot = c.getDot(); - int mark = c.getMark(); - int dotLine = map.getElementIndex(dot); - int markLine = map.getElementIndex(mark); - - // If there is a multi-line selection, indent all lines in - // the selection. - if (dotLine!=markLine) { - int first = Math.min(dotLine, markLine); - int last = Math.max(dotLine, markLine); - Element elem; int start; - - // Since we're using Document.insertString(), we must mimic the - // soft tab behavior provided by RTextArea.replaceSelection(). - String replacement = "\t"; - if (textArea.getTabsEmulated()) { - StringBuilder sb = new StringBuilder(); - int temp = textArea.getTabSize(); - for (int i=0; i0 && - // ((mod&ActionEvent.ALT_MASK)==(mod&ActionEvent.CTRL_MASK))) { - // char ch = str.charAt(0); - // if (ch>=0x20 && ch!=0x7F) - // textArea.replaceSelection(str); - //} - textArea.replaceSelection(" "); - } - - @Override - public final String getMacroID() { - return rstaPossiblyInsertTemplateAction; - } - - } - - - /** - * Action to move the selection and/or caret. Constructor indicates - * direction to use. This class overrides the behavior defined in - * {@link RTextAreaEditorKit} to better skip "words" in source code. - */ - public static class PreviousWordAction - extends RTextAreaEditorKit.PreviousWordAction { - - private Segment seg; - - public PreviousWordAction(String nm, boolean select) { - super(nm, select); - seg = new Segment(); - } - - /** - * Overridden to do better with skipping "words" in code. - */ - @Override - protected int getPreviousWord(RTextArea textArea, int offs) - throws BadLocationException { - - if (offs==0) { - return offs; - } - - RSyntaxDocument doc = (RSyntaxDocument)textArea.getDocument(); - Element root = doc.getDefaultRootElement(); - int line = root.getElementIndex(offs); - int start = root.getElement(line).getStartOffset(); - if (offs==start) {// If we're already at the start of the line... - RSyntaxTextArea rsta = (RSyntaxTextArea)textArea; - if (rsta.isCodeFoldingEnabled()) { // End of next visible line - FoldManager fm = rsta.getFoldManager(); - while (--line>=0 && fm.isLineHidden(line)); - if (line>=0) { // Found an earlier visible line - offs = root.getElement(line).getEndOffset() - 1; - } - // No earlier visible line - we must be at offs==0... - return offs; - } - else { - return start-1; // End of previous line. - } - } - doc.getText(start, offs-start, seg); - - // Determine the "type" of char at offs - lower case, upper case, - // whitespace or other - char ch = seg.last(); - - // Skip any "leading" whitespace - while (Character.isWhitespace(ch)) { - ch = seg.previous(); - } - - // Skip the group of letters and/or digits - int languageIndex = 0; - if (doc.isIdentifierChar(languageIndex, ch)) { - do { - ch = seg.previous(); - } while (doc.isIdentifierChar(languageIndex, ch)); - } - - // Skip groups of "anything else" (operators, etc.). - else if (!Character.isWhitespace(ch)) { - do { - ch = seg.previous(); - } while (ch!=Segment.DONE && - !(doc.isIdentifierChar(languageIndex, ch) || - Character.isWhitespace(ch))); - } - - offs -= seg.getEndIndex() - seg.getIndex(); - if (ch!=Segment.DONE) { - offs++; - } - - return offs; - - } - - } - - - /** - * Selects the word around the caret. This class is here to better - * handle selecting "words" in programming languages. - */ - public static class SelectWordAction - extends RTextAreaEditorKit.SelectWordAction { - - @Override - protected void createActions() { - start = new BeginWordAction("pigdog", false); - end = new EndWordAction("pigdog", true); - } - - } - - - /** - * Action that toggles whether the currently selected lines are - * commented. - */ - public static class ToggleCommentAction extends RecordableTextAction { - - public ToggleCommentAction() { - super(rstaToggleCommentAction); - } - - @Override - public void actionPerformedImpl(ActionEvent e, RTextArea textArea) { - - if (!textArea.isEditable() || !textArea.isEnabled()) { - UIManager.getLookAndFeel().provideErrorFeedback(textArea); - return; - } - - RSyntaxDocument doc = (RSyntaxDocument)textArea.getDocument(); - Element map = doc.getDefaultRootElement(); - Caret c = textArea.getCaret(); - int dot = c.getDot(); - int mark = c.getMark(); - int line1 = map.getElementIndex(dot); - int line2 = map.getElementIndex(mark); - int start = Math.min(line1, line2); - int end = Math.max(line1, line2); - - Token t = doc.getTokenListForLine(start); - int languageIndex = t!=null ? t.getLanguageIndex() : 0; - String[] startEnd = doc.getLineCommentStartAndEnd(languageIndex); - - if (startEnd==null) { - UIManager.getLookAndFeel().provideErrorFeedback(textArea); - return; - } - - // Don't toggle comment on last line if there is no - // text selected on it. - if (start!=end) { - Element elem = map.getElement(end); - if (Math.max(dot, mark)==elem.getStartOffset()) { - end--; - } - } - - textArea.beginAtomicEdit(); - try { - boolean add = getDoAdd(doc,map, start,end, startEnd); - for (line1=start; line1<=end; line1++) { - Element elem = map.getElement(line1); - handleToggleComment(elem, doc, startEnd, add); - } - } catch (BadLocationException ble) { - ble.printStackTrace(); - UIManager.getLookAndFeel().provideErrorFeedback(textArea); - } finally { - textArea.endAtomicEdit(); - } - - } - - private boolean getDoAdd(Document doc, Element map, int startLine, - int endLine, String[] startEnd) - throws BadLocationException { - boolean doAdd = false; - for (int i=startLine; i<=endLine; i++) { - Element elem = map.getElement(i); - int start = elem.getStartOffset(); - String t = doc.getText(start, elem.getEndOffset()-start-1); - if (!t.startsWith(startEnd[0]) || - (startEnd[1]!=null && !t.endsWith(startEnd[1]))) { - doAdd = true; - break; - } - } - return doAdd; - } - - private void handleToggleComment(Element elem, Document doc, - String[] startEnd, boolean add) throws BadLocationException { - int start = elem.getStartOffset(); - int end = elem.getEndOffset() - 1; - if (add) { - doc.insertString(start, startEnd[0], null); - if (startEnd[1]!=null) { - doc.insertString(end+startEnd[0].length(), startEnd[1], - null); - } - } - else { - doc.remove(start, startEnd[0].length()); - if (startEnd[1]!=null) { - int temp = startEnd[1].length(); - doc.remove(end-startEnd[0].length()-temp, temp); - } - } - } - - @Override - public final String getMacroID() { - return rstaToggleCommentAction; - } - - } - - - /** - * Toggles the fold at the current caret position or line. - */ - public static class ToggleCurrentFoldAction extends FoldRelatedAction { - - private static final long serialVersionUID = 1L; - - public ToggleCurrentFoldAction() { - super(rstaToggleCurrentFoldAction); - setProperties(msg, "Action.ToggleCurrentFold"); - } - - public ToggleCurrentFoldAction(String name, Icon icon, String desc, - Integer mnemonic, KeyStroke accelerator) { - super(name, icon, desc, mnemonic, accelerator); - } - - @Override - public void actionPerformedImpl(ActionEvent e, RTextArea textArea) { - RSyntaxTextArea rsta = (RSyntaxTextArea)textArea; - if (rsta.isCodeFoldingEnabled()) { - Fold fold = getClosestFold(rsta); - if (fold!=null) { - fold.toggleCollapsedState(); - } - possiblyRepaintGutter(textArea); - } - else { - UIManager.getLookAndFeel().provideErrorFeedback(rsta); - } - } - - @Override - public final String getMacroID() { - return rstaToggleCurrentFoldAction; - } - - } - - -} \ No newline at end of file diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/RSyntaxTextAreaHighlighter.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/RSyntaxTextAreaHighlighter.java deleted file mode 100644 index 505b40d..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/RSyntaxTextAreaHighlighter.java +++ /dev/null @@ -1,290 +0,0 @@ -/* - * 04/23/2009 - * - * RSyntaxTextAreaHighlighter.java - Highlighter for RSyntaxTextAreas. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea; - -import java.awt.Color; -import java.awt.Graphics; -import java.awt.Shape; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import javax.swing.plaf.TextUI; -import javax.swing.text.BadLocationException; -import javax.swing.text.Document; -import javax.swing.text.Element; -import javax.swing.text.JTextComponent; -import javax.swing.text.View; - -import org.fife.ui.rsyntaxtextarea.parser.Parser; -import org.fife.ui.rsyntaxtextarea.parser.ParserNotice; -import org.fife.ui.rtextarea.RTextAreaHighlighter; -import org.fife.ui.rtextarea.SmartHighlightPainter; - - -/** - * The highlighter implementation used by {@link RSyntaxTextArea}s. It knows to - * always paint "marked occurrences" highlights below selection highlights, - * and squiggle underline highlights above all other highlights.

- * - * Most of this code is copied from javax.swing.text.DefaultHighlighter; - * unfortunately, we cannot re-use much of it since it is package private. - * - * @author Robert Futrell - * @version 1.0 - */ -public class RSyntaxTextAreaHighlighter extends RTextAreaHighlighter { - - /** - * Marked occurrences in the document (to be painted separately from - * other highlights). - */ - private List markedOccurrences; - - /** - * Highlights from document parsers. These should be painted "on top of" - * all other highlights to ensure they are always above the selection. - */ - private List parserHighlights; - - /** - * The default color used for parser notices when none is specified. - */ - private static final Color DEFAULT_PARSER_NOTICE_COLOR = Color.RED; - - - /** - * Constructor. - */ - public RSyntaxTextAreaHighlighter() { - markedOccurrences = new ArrayList(); - parserHighlights = new ArrayList(0); // Often unused - } - - - /** - * Adds a special "marked occurrence" highlight. - * - * @param start - * @param end - * @param p - * @return A tag to reference the highlight later. - * @throws BadLocationException - * @see #clearMarkOccurrencesHighlights() - */ - Object addMarkedOccurrenceHighlight(int start, int end, - SmartHighlightPainter p) throws BadLocationException { - Document doc = textArea.getDocument(); - TextUI mapper = textArea.getUI(); - // Always layered highlights for marked occurrences. - SyntaxLayeredHighlightInfoImpl i = new SyntaxLayeredHighlightInfoImpl(); - i.setPainter(p); - i.setStartOffset(doc.createPosition(start)); - // HACK: Use "end-1" to prevent chars the user types at the "end" of - // the highlight to be absorbed into the highlight (default Highlight - // behavior). - i.setEndOffset(doc.createPosition(end-1)); - markedOccurrences.add(i); - mapper.damageRange(textArea, start, end); - return i; - } - - - /** - * Adds a highlight from a parser. - * - * @param notice The notice from a {@link Parser}. - * @return A tag with which to reference the highlight. - * @throws BadLocationException - * @see #clearParserHighlights() - * @see #clearParserHighlights(Parser) - */ - HighlightInfo addParserHighlight(ParserNotice notice, HighlightPainter p) - throws BadLocationException { - - Document doc = textArea.getDocument(); - TextUI mapper = textArea.getUI(); - - int start = notice.getOffset(); - int end = 0; - if (start==-1) { // Could just define an invalid line number - int line = notice.getLine(); - Element root = doc.getDefaultRootElement(); - if (line>=0 && line i = parserHighlights.iterator(); - for (; i.hasNext(); ) { - - SyntaxLayeredHighlightInfoImpl info = i.next(); - - if (info.notice.getParser()==parser) { - if (info.width > 0 && info.height > 0) { - textArea.repaint(info.x, info.y, info.width, info.height); - } - i.remove(); - } - - } - - } - - - /** - * {@inheritDoc} - */ - @Override - public void deinstall(JTextComponent c) { - super.deinstall(c); - markedOccurrences.clear(); - parserHighlights.clear(); - } - - - /** - * Returns a list of "marked occurrences" in the text area. If there are - * no marked occurrences, this will be an empty list. - * - * @return The list of marked occurrences, or an empty list if none. The - * contents of this list will be of type {@link DocumentRange}. - */ - public List getMarkedOccurrences() { - List list = new ArrayList(markedOccurrences.size()); - for (HighlightInfo info : markedOccurrences) { - int start = info.getStartOffset(); - int end = info.getEndOffset() + 1; // HACK - if (start <= end) { - // Occasionally a Marked Occurrence can have a lost end offset - // but not start offset (replacing entire text content with - // new content, and a marked occurrence is on the last token - // in the document). - DocumentRange range = new DocumentRange(start, end); - list.add(range); - } - } - return list; - } - - - @Override - public void paintLayeredHighlights(Graphics g, int lineStart, int lineEnd, - Shape viewBounds, JTextComponent editor, View view) { - paintListLayered(g, lineStart,lineEnd, viewBounds, editor, view, markedOccurrences); - super.paintLayeredHighlights(g, lineStart, lineEnd, viewBounds, editor, view); - paintListLayered(g, lineStart,lineEnd, viewBounds, editor, view, parserHighlights); - } - - - /** - * Removes a parser highlight from this view. - * - * @param tag The reference to the highlight. - * @see #addParserHighlight(ParserNotice, javax.swing.text.Highlighter.HighlightPainter) - */ - void removeParserHighlight(HighlightInfo tag) { - repaintListHighlight(tag); - parserHighlights.remove(tag); - } - - - /** - * Highlight info implementation used for parser notices and marked - * occurrences. - */ - private static class SyntaxLayeredHighlightInfoImpl extends - LayeredHighlightInfoImpl { - - ParserNotice notice;//Color color; // Used only by Parser highlights. - - @Override - public Color getColor() { - //return color; - Color color = null; - if (notice!=null) { - color = notice.getColor(); - if (color==null) { - color = DEFAULT_PARSER_NOTICE_COLOR; - } - } - return color; - } - - @Override - public String toString() { - return "[SyntaxLayeredHighlightInfoImpl: " + - "startOffs=" + getStartOffset() + - ", endOffs=" + getEndOffset() + - ", color=" + getColor() + - "]"; - } - - } - - -} \ No newline at end of file diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/RSyntaxTextAreaUI.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/RSyntaxTextAreaUI.java deleted file mode 100644 index 53db1e7..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/RSyntaxTextAreaUI.java +++ /dev/null @@ -1,260 +0,0 @@ -/* - * 02/24/2004 - * - * RSyntaxTextAreaUI.java - UI for an RSyntaxTextArea. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea; - -import java.awt.Color; -import java.awt.Graphics; -import java.awt.Rectangle; -import java.beans.PropertyChangeEvent; -import javax.swing.InputMap; -import javax.swing.JComponent; -import javax.swing.UIManager; -import javax.swing.plaf.ComponentUI; -import javax.swing.plaf.InputMapUIResource; -import javax.swing.text.*; - -import org.fife.ui.rtextarea.RTextArea; -import org.fife.ui.rtextarea.RTextAreaUI; - - -/** - * UI used by RSyntaxTextArea. This allows us to implement - * syntax highlighting. - * - * @author Robert Futrell - * @version 0.1 - */ -public class RSyntaxTextAreaUI extends RTextAreaUI { - - private static final String SHARED_ACTION_MAP_NAME = "RSyntaxTextAreaUI.actionMap"; - private static final String SHARED_INPUT_MAP_NAME = "RSyntaxTextAreaUI.inputMap"; - private static final EditorKit defaultKit = new RSyntaxTextAreaEditorKit(); - - - public static ComponentUI createUI(JComponent ta) { - return new RSyntaxTextAreaUI(ta); - } - - - /** - * Constructor. - */ - public RSyntaxTextAreaUI(JComponent rSyntaxTextArea) { - super(rSyntaxTextArea); - } - - - /** - * Creates the view for an element. - * - * @param elem The element. - * @return The view. - */ - @Override - public View create(Element elem) { - RTextArea c = getRTextArea(); - if (c instanceof RSyntaxTextArea) { - RSyntaxTextArea area = (RSyntaxTextArea) c; - View v; - if (area.getLineWrap()) - v = new WrappedSyntaxView(elem); - else - v = new SyntaxView(elem); - return v; - } - return null; - } - - - /** - * Creates the highlighter to use for syntax text areas. - * - * @return The highlighter. - */ - @Override - protected Highlighter createHighlighter() { - return new RSyntaxTextAreaHighlighter(); - } - - - /** - * Returns the name to use to cache/fetch the shared action map. This - * should be overridden by subclasses if the subclass has its own custom - * editor kit to install, so its actions get picked up. - * - * @return The name of the cached action map. - */ - @Override - protected String getActionMapName() { - return SHARED_ACTION_MAP_NAME; - } - - - /** - * Fetches the EditorKit for the UI. - * - * @param tc The text component for which this UI is installed. - * @return The editor capabilities. - * @see javax.swing.plaf.TextUI#getEditorKit - */ - @Override - public EditorKit getEditorKit(JTextComponent tc) { - return defaultKit; - } - - - /** - * Get the InputMap to use for the UI.

- * - * This method is not named getInputMap() because there is - * a package-private method in BasicTextAreaUI with that name. - * Thus, creating a new method with that name causes certain compilers to - * issue warnings that you are not actually overriding the original method - * (since it is package-private). - */ - @Override - protected InputMap getRTextAreaInputMap() { - InputMap map = new InputMapUIResource(); - InputMap shared = (InputMap)UIManager.get(SHARED_INPUT_MAP_NAME); - if (shared==null) { - shared = new RSyntaxTextAreaDefaultInputMap(); - UIManager.put(SHARED_INPUT_MAP_NAME, shared); - } - //KeyStroke[] keys = shared.allKeys(); - //for (int i=0; i " + shared.get(keys[i])); - map.setParent(shared); - return map; - } - - - @Override - protected void paintEditorAugmentations(Graphics g) { - super.paintEditorAugmentations(g); - paintMatchedBracket(g); - } - - - /** - * Paints the "matched bracket", if any. - * - * @param g The graphics context. - */ - protected void paintMatchedBracket(Graphics g) { - RSyntaxTextArea rsta = (RSyntaxTextArea)textArea; - if (rsta.isBracketMatchingEnabled()) { - Rectangle match = rsta.getMatchRectangle(); - if (match!=null) { - paintMatchedBracketImpl(g, rsta, match); - } - if (rsta.getPaintMatchedBracketPair()) { - Rectangle dotRect = rsta.getDotRectangle(); - if (dotRect!=null) { // should always be true - paintMatchedBracketImpl(g, rsta, dotRect); - } - } - } - } - - - protected void paintMatchedBracketImpl(Graphics g, RSyntaxTextArea rsta, - Rectangle r) { - // We must add "-1" to the height because otherwise we'll paint below - // the region that gets invalidated. - if (rsta.getAnimateBracketMatching()) { - Color bg = rsta.getMatchedBracketBGColor(); - if (bg!=null) { - g.setColor(bg); - g.fillRoundRect(r.x,r.y, r.width,r.height-1, 5,5); - } - g.setColor(rsta.getMatchedBracketBorderColor()); - g.drawRoundRect(r.x,r.y, r.width,r.height-1, 5,5); - } - else { - Color bg = rsta.getMatchedBracketBGColor(); - if (bg!=null) { - g.setColor(bg); - g.fillRect(r.x,r.y, r.width,r.height-1); - } - g.setColor(rsta.getMatchedBracketBorderColor()); - g.drawRect(r.x,r.y, r.width,r.height-1); - } - } - - - /** - * Gets called whenever a bound property is changed on this UI's - * RSyntaxTextArea. - * - * @param e The property change event. - */ - @Override - protected void propertyChange(PropertyChangeEvent e) { - - String name = e.getPropertyName(); - - // If they change the syntax scheme, we must do this so that - // WrappedSyntaxView(_TEST) updates its child views properly. - if (name.equals(RSyntaxTextArea.SYNTAX_SCHEME_PROPERTY)) { - modelChanged(); - } - - // Everything else is general to all RTextAreas. - else { - super.propertyChange(e); - } - - } - - - /** - * Updates the view. This should be called when the underlying - * RSyntaxTextArea changes its syntax editing style. - */ - public void refreshSyntaxHighlighting() { - modelChanged(); - } - - - /** - * Returns the y-coordinate of the specified line.

- * - * This method is quicker than using traditional - * modelToView(int) calls, as the entire bounding box isn't - * computed. - */ - @Override - public int yForLine(int line) throws BadLocationException { - Rectangle alloc = getVisibleEditorRect(); - if (alloc!=null) { - RSTAView view = (RSTAView)getRootView(textArea).getView(0); - return view.yForLine(alloc, line); - } - return -1; - } - - - /** - * Returns the y-coordinate of the line containing a specified offset.

- * - * This is faster than calling modelToView(offs).y, so it is - * preferred if you do not need the actual bounding box. - */ - @Override - public int yForLineContaining(int offs) throws BadLocationException { - Rectangle alloc = getVisibleEditorRect(); - if (alloc!=null) { - RSTAView view = (RSTAView)getRootView(textArea).getView(0); - return view.yForLineContaining(alloc, offs); - } - return -1; - } - - -} \ No newline at end of file diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/RSyntaxUtilities.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/RSyntaxUtilities.java deleted file mode 100644 index 6eaf8d3..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/RSyntaxUtilities.java +++ /dev/null @@ -1,1514 +0,0 @@ -/* - * 08/06/2004 - * - * RSyntaxUtilities.java - Utility methods used by RSyntaxTextArea and its - * views. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea; - -import java.awt.Color; -import java.awt.Container; -import java.awt.Insets; -import java.awt.Point; -import java.awt.Rectangle; -import java.awt.Shape; -import java.awt.Toolkit; -import java.util.Map; -import java.util.regex.Pattern; -import java.util.regex.PatternSyntaxException; - -import javax.swing.*; -import javax.swing.text.BadLocationException; -import javax.swing.text.Caret; -import javax.swing.text.Document; -import javax.swing.text.Element; -import javax.swing.text.Position; -import javax.swing.text.Segment; -import javax.swing.text.TabExpander; -import javax.swing.text.View; - -import org.fife.ui.rsyntaxtextarea.TokenUtils.TokenSubList; -import org.fife.ui.rsyntaxtextarea.folding.FoldManager; -import org.fife.ui.rtextarea.Gutter; -import org.fife.ui.rtextarea.RTextArea; -import org.fife.ui.rtextarea.RTextScrollPane; - - -/** - * Utility methods used by RSyntaxTextArea and its associated - * classes. - * - * @author Robert Futrell - * @version 0.2 - */ -public class RSyntaxUtilities implements SwingConstants { - - /** - * Integer constant representing a Windows-variant OS. - */ - public static final int OS_WINDOWS = 1; - - /** - * Integer constant representing Mac OS X. - */ - public static final int OS_MAC_OSX = 2; - - /** - * Integer constant representing Linux. - */ - public static final int OS_LINUX = 4; - - /** - * Integer constant representing an "unknown" OS. 99.99% of the - * time, this means some UNIX variant (AIX, SunOS, etc.). - */ - public static final int OS_OTHER = 8; - - /** - * Used for the color of hyperlinks when a LookAndFeel uses light text - * against a dark background. - */ - private static final Color LIGHT_HYPERLINK_FG = new Color(0xd8ffff); - - private static final int OS = getOSImpl(); - - //private static final int DIGIT_MASK = 1; - private static final int LETTER_MASK = 2; - //private static final int WHITESPACE_MASK = 4; - //private static final int UPPER_CASE_MASK = 8; - private static final int HEX_CHARACTER_MASK = 16; - private static final int LETTER_OR_DIGIT_MASK = 32; - private static final int BRACKET_MASK = 64; - private static final int JAVA_OPERATOR_MASK = 128; - - /** - * A lookup table used to quickly decide if a 16-bit Java char is a - * US-ASCII letter (A-Z or a-z), a digit, a whitespace char (either space - * (0x0020) or tab (0x0009)), etc. This method should be faster - * than Character.isLetter, Character.isDigit, - * and Character.isWhitespace because we know we are dealing - * with ASCII chars and so don't have to worry about code planes, etc. - */ - private static final int[] dataTable = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, // 0-15 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16-31 - 4, 128, 0, 0, 0, 128, 128, 0, 64, 64, 128, 128, 0, 128, 0, 128, // 32-47 - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 128, 0, 128, 128, 128, 128, // 48-63 - 0, 58, 58, 58, 58, 58, 58, 42, 42, 42, 42, 42, 42, 42, 42, 42, // 64-79 - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 64, 0, 64, 128, 0, // 80-95 - 0, 50, 50, 50, 50, 50, 50, 34, 34, 34, 34, 34, 34, 34, 34, 34, // 96-111 - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 64, 128, 64, 128, 0, // 112-127 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 128-143 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 144- - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 160- - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 176- - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 192- - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 208- - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 224- - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 // 240-255. - }; - - /** - * Used in bracket matching methods. - */ - private static Segment charSegment = new Segment(); - - /** - * Used in token list manipulation methods. - */ - private static final TokenImpl tempToken = new TokenImpl(); - - /** - * Used internally. - */ - private static final char[] JS_KEYWORD_RETURN = { 'r', 'e', 't', 'u', 'r', 'n' }; - private static final char[] JS_AND = { '&', '&' }; - private static final char[] JS_OR = { '|', '|' }; - - /** - * Used internally. - */ - private static final String BRACKETS = "{([})]"; - - - /** - * Returns a string with characters that are special to HTML (such as - * <, > and &) replaced - * by their HTML escape sequences. - * - * @param s The input string. - * @param newlineReplacement What to replace newline characters with. - * If this is null, they are simply removed. - * @param inPreBlock Whether this HTML will be in within pre - * tags. If this is true, spaces will be kept as-is; - * otherwise, they will be converted to " ". - * @return The escaped version of s. - */ - public static final String escapeForHtml(String s, - String newlineReplacement, boolean inPreBlock) { - - if (s==null) { - return null; - } - if (newlineReplacement==null) { - newlineReplacement = ""; - } - final String tabString = " "; - boolean lastWasSpace = false; - - StringBuilder sb = new StringBuilder(); - - for (int i=0; i': - sb.append(">"); - lastWasSpace = false; - break; - default: - sb.append(ch); - lastWasSpace = false; - break; - } - } - - return sb.toString(); - - } - - - /** - * Returns the rendering hints for text that will most accurately reflect - * those of the native windowing system. - * - * @return The rendering hints, or null if they cannot be - * determined. - */ - public static Map getDesktopAntiAliasHints() { - return (Map)Toolkit.getDefaultToolkit(). - getDesktopProperty("awt.font.desktophints"); - } - - - /** - * Returns the color to use for the line underneath a folded region line. - * - * @param textArea The text area. - * @return The color to use. - */ - public static Color getFoldedLineBottomColor(RSyntaxTextArea textArea) { - Color color = Color.gray; - Gutter gutter = RSyntaxUtilities.getGutter(textArea); - if (gutter!=null) { - color = gutter.getFoldIndicatorForeground(); - } - return color; - } - - - /** - * Returns the gutter component of the scroll pane containing a text - * area, if any. - * - * @param textArea The text area. - * @return The gutter, or null if the text area is not in - * an {@link RTextScrollPane}. - * @see RTextScrollPane#getGutter() - */ - public static Gutter getGutter(RTextArea textArea) { - Gutter gutter = null; - Container parent = textArea.getParent(); - if (parent instanceof JViewport) { - parent = parent.getParent(); - if (parent instanceof RTextScrollPane) { - RTextScrollPane sp = (RTextScrollPane)parent; - gutter = sp.getGutter(); // Should always be non-null - } - } - return gutter; - } - - - /** - * Returns the color to use for hyperlink-style components. This method - * will return Color.blue unless it appears that the current - * LookAndFeel uses light text on a dark background, in which case a - * brighter alternative is returned. - * - * @return The color to use for hyperlinks. - * @see #isLightForeground(Color) - */ - public static final Color getHyperlinkForeground() { - - // This property is defined by all standard LaFs, even Nimbus (!), - // but you never know what crazy LaFs there are... - Color fg = UIManager.getColor("Label.foreground"); - if (fg==null) { - fg = new JLabel().getForeground(); - } - - return isLightForeground(fg) ? LIGHT_HYPERLINK_FG : Color.blue; - - } - - - /** - * Returns the leading whitespace of a string. - * - * @param text The String to check. - * @return The leading whitespace. - * @see #getLeadingWhitespace(Document, int) - */ - public static String getLeadingWhitespace(String text) { - int count = 0; - int len = text.length(); - while (countoffs is not a valid offset - * in the document. - * @see #getLeadingWhitespace(String) - */ - public static String getLeadingWhitespace(Document doc, int offs) - throws BadLocationException { - Element root = doc.getDefaultRootElement(); - int line = root.getElementIndex(offs); - Element elem = root.getElement(line); - int startOffs = elem.getStartOffset(); - int endOffs = elem.getEndOffset() - 1; - String text = doc.getText(startOffs, endOffs-startOffs); - return getLeadingWhitespace(text); - } - - - private static final Element getLineElem(Document d, int offs) { - Element map = d.getDefaultRootElement(); - int index = map.getElementIndex(offs); - Element elem = map.getElement(index); - if ((offs>=elem.getStartOffset()) && (offsp0, as this is - * the character where the x-pixel value is 0. - * - * @param textArea The text area containing the text. - * @param s A segment in which to load the line. This is passed in so we - * don't have to reallocate a new Segment for each - * call. - * @param p0 The starting position in the physical line in the document. - * @param p1 The position for which to get the bounding box in the view. - * @param e How to expand tabs. - * @param rect The rectangle whose x- and width-values are changed to - * represent the bounding box of p1. This is reused - * to keep from needlessly reallocating Rectangles. - * @param x0 The x-coordinate (pixel) marking the left-hand border of the - * text. This is useful if the text area has a border, for example. - * @return The bounding box in the view of the character p1. - * @throws BadLocationException If p0 or p1 is - * not a valid location in the specified text area's document. - * @throws IllegalArgumentException If p0 and p1 - * are not on the same line. - */ - public static Rectangle getLineWidthUpTo(RSyntaxTextArea textArea, - Segment s, int p0, int p1, - TabExpander e, Rectangle rect, - int x0) - throws BadLocationException { - - RSyntaxDocument doc = (RSyntaxDocument)textArea.getDocument(); - - // Ensure p0 and p1 are valid document positions. - if (p0<0) - throw new BadLocationException("Invalid document position", p0); - else if (p1>doc.getLength()) - throw new BadLocationException("Invalid document position", p1); - - // Ensure p0 and p1 are in the same line, and get the start/end - // offsets for that line. - Element map = doc.getDefaultRootElement(); - int lineNum = map.getElementIndex(p0); - // We do ">1" because p1 might be the first position on the next line - // or the last position on the previous one. - // if (lineNum!=map.getElementIndex(p1)) - if (Math.abs(lineNum-map.getElementIndex(p1))>1) - throw new IllegalArgumentException("p0 and p1 are not on the " + - "same line (" + p0 + ", " + p1 + ")."); - - // Get the token list. - Token t = doc.getTokenListForLine(lineNum); - - // Modify the token list 't' to begin at p0 (but still have correct - // token types, etc.), and get the x-location (in pixels) of the - // beginning of this new token list. - TokenSubList subList = TokenUtils.getSubTokenList(t, p0, e, textArea, - 0, tempToken); - t = subList.tokenList; - - rect = t.listOffsetToView(textArea, e, p1, x0, rect); - return rect; - - } - - - /** - * Returns the location of the bracket paired with the one at the current - * caret position. - * - * @param textArea The text area. - * @param input A point to use as the return value. If this is - * null, a new object is created and returned. - * @return A point representing the matched bracket info. The "x" field - * is the offset of the bracket at the caret position (either just - * before or just after the caret), and the "y" field is the offset - * of the matched bracket. Both "x" and "y" will be - * -1 if there isn't a matching bracket (or the caret - * isn't on a bracket). - */ - public static Point getMatchingBracketPosition(RSyntaxTextArea textArea, - Point input) { - - if (input==null) { - input = new Point(); - } - input.setLocation(-1, -1); - - try { - - // Actually position just BEFORE caret. - int caretPosition = textArea.getCaretPosition() - 1; - RSyntaxDocument doc = (RSyntaxDocument)textArea.getDocument(); - char bracket = 0; - - // If the caret was at offset 0, we can't check "to its left." - if (caretPosition>=0) { - bracket = doc.charAt(caretPosition); - } - - // Try to match a bracket "to the right" of the caret if one - // was not found on the left. - int index = BRACKETS.indexOf(bracket); - if (index==-1 && caretPosition

    - *
  • SwingConstants.WEST - *
  • SwingConstants.EAST - *
  • SwingConstants.NORTH - *
  • SwingConstants.SOUTH - *
- * @return the location within the model that best represents the next - * location visual position - * @exception BadLocationException - * @exception IllegalArgumentException if direction - * doesn't have one of the legal values above - */ - public static int getNextVisualPositionFrom(int pos, Position.Bias b, - Shape a, int direction, - Position.Bias[] biasRet, View view) - throws BadLocationException { - - RSyntaxTextArea target = (RSyntaxTextArea)view.getContainer(); - biasRet[0] = Position.Bias.Forward; - - // Do we want the "next position" above, below, to the left or right? - switch (direction) { - - case NORTH: - case SOUTH: - if (pos == -1) { - pos = (direction == NORTH) ? - Math.max(0, view.getEndOffset() - 1) : - view.getStartOffset(); - break; - } - Caret c = (target != null) ? target.getCaret() : null; - // YECK! Ideally, the x location from the magic caret - // position would be passed in. - Point mcp; - if (c != null) - mcp = c.getMagicCaretPosition(); - else - mcp = null; - int x; - if (mcp == null) { - Rectangle loc = target.modelToView(pos); - x = (loc == null) ? 0 : loc.x; - } - else { - x = mcp.x; - } - if (direction == NORTH) - pos = getPositionAbove(target,pos,x,(TabExpander)view); - else - pos = getPositionBelow(target,pos,x,(TabExpander)view); - break; - - case WEST: - int endOffs = view.getEndOffset(); - if(pos == -1) { - pos = Math.max(0, endOffs - 1); - } - else { - pos = Math.max(0, pos - 1); - if (target.isCodeFoldingEnabled()) { - int last = pos==endOffs-1 ? target.getLineCount()-1 : - target.getLineOfOffset(pos+1); - int current = target.getLineOfOffset(pos); - if (last!=current) { // If moving up a line... - FoldManager fm = target.getFoldManager(); - if (fm.isLineHidden(current)) { - while (--current>0 && fm.isLineHidden(current)); - pos = target.getLineEndOffset(current) - 1; - } - } - } - } - break; - - case EAST: - if(pos == -1) { - pos = view.getStartOffset(); - } - else { - pos = Math.min(pos + 1, view.getDocument().getLength()); - if (target.isCodeFoldingEnabled()) { - int last = pos==0 ? 0 : target.getLineOfOffset(pos-1); - int current = target.getLineOfOffset(pos); - if (last!=current) { // If moving down a line... - FoldManager fm = target.getFoldManager(); - if (fm.isLineHidden(current)) { - int lineCount = target.getLineCount(); - while (++current -1) - os = OS_WINDOWS; - else if (osName.indexOf("mac os x") > -1) - os = OS_MAC_OSX; - else if (osName.indexOf("linux") > -1) - os = OS_LINUX; - else - os = OS_OTHER; - } - return os; - } - - - /** - * Returns the flags necessary to create a {@link Pattern}. - * - * @param matchCase Whether the pattern should be case sensitive. - * @param others Any other flags. This may be 0. - * @return The flags. - */ - public static final int getPatternFlags(boolean matchCase, int others) { - if (!matchCase) { - others |= Pattern.CASE_INSENSITIVE|Pattern.UNICODE_CASE; - } - return others; - } - - - /** - * Determines the position in the model that is closest to the given - * view location in the row above. The component given must have a - * size to compute the result. If the component doesn't have a size - * a value of -1 will be returned. - * - * @param c the editor - * @param offs the offset in the document >= 0 - * @param x the X coordinate >= 0 - * @return the position >= 0 if the request can be computed, otherwise - * a value of -1 will be returned. - * @exception BadLocationException if the offset is out of range - */ - public static final int getPositionAbove(RSyntaxTextArea c, int offs, - float x, TabExpander e) throws BadLocationException { - - TokenOrientedView tov = (TokenOrientedView)e; - Token token = tov.getTokenListForPhysicalLineAbove(offs); - if (token==null) - return -1; - - // A line containing only Token.NULL is an empty line. - else if (token.getType()==Token.NULL) { - int line = c.getLineOfOffset(offs); // Sure to be >0 ?? - return c.getLineStartOffset(line-1); - } - - else { - return token.getListOffset(c, e, c.getMargin().left, x); - } - - } - - - /** - * Determines the position in the model that is closest to the given - * view location in the row below. The component given must have a - * size to compute the result. If the component doesn't have a size - * a value of -1 will be returned. - * - * @param c the editor - * @param offs the offset in the document >= 0 - * @param x the X coordinate >= 0 - * @return the position >= 0 if the request can be computed, otherwise - * a value of -1 will be returned. - * @exception BadLocationException if the offset is out of range - */ - public static final int getPositionBelow(RSyntaxTextArea c, int offs, - float x, TabExpander e) throws BadLocationException { - - TokenOrientedView tov = (TokenOrientedView)e; - Token token = tov.getTokenListForPhysicalLineBelow(offs); - if (token==null) - return -1; - - // A line containing only Token.NULL is an empty line. - else if (token.getType()==Token.NULL) { - int line = c.getLineOfOffset(offs); // Sure to be > c.getLineCount()-1 ?? -// return c.getLineStartOffset(line+1); -FoldManager fm = c.getFoldManager(); -line = fm.getVisibleLineBelow(line); -return c.getLineStartOffset(line); - } - - else { - return token.getListOffset(c, e, c.getMargin().left, x); - } - - } - - - /** - * Returns the last non-whitespace, non-comment token, starting with the - * specified line. - * - * @param doc The document. - * @param line The line at which to start looking. - * @return The last non-whitespace, non-comment token, or null - * if there isn't one. - * @see #getNextImportantToken(Token, RSyntaxTextArea, int) - * @see #getPreviousImportantTokenFromOffs(RSyntaxDocument, int) - */ - public static final Token getPreviousImportantToken(RSyntaxDocument doc, - int line) { - if (line<0) { - return null; - } - Token t = doc.getTokenListForLine(line); - if (t!=null) { - t = t.getLastNonCommentNonWhitespaceToken(); - if (t!=null) { - return t; - } - } - return getPreviousImportantToken(doc, line-1); - } - - - /** - * Returns the last non-whitespace, non-comment token, before the - * specified offset. - * - * @param doc The document. - * @param offs The ending offset for the search. - * @return The last non-whitespace, non-comment token, or null - * if there isn't one. - * @see #getPreviousImportantToken(RSyntaxDocument, int) - * @see #getNextImportantToken(Token, RSyntaxTextArea, int) - */ - public static final Token getPreviousImportantTokenFromOffs( - RSyntaxDocument doc, int offs) { - - Element root = doc.getDefaultRootElement(); - int line = root.getElementIndex(offs); - Token t = doc.getTokenListForLine(line); - - // Check line containing offs - Token target = null; - while (t!=null && t.isPaintable() && !t.containsPosition(offs)) { - if (!t.isCommentOrWhitespace()) { - target = t; - } - t = t.getNextToken(); - } - - // Check previous line(s) - if (target==null) { - target = RSyntaxUtilities.getPreviousImportantToken(doc, line-1); - } - - return target; - - } - - - /** - * Returns the token at the specified offset. - * - * @param textArea The text area. - * @param offset The offset of the token. - * @return The token, or null if the offset is not valid. - * @see #getTokenAtOffset(RSyntaxDocument, int) - * @see #getTokenAtOffset(Token, int) - */ - public static final Token getTokenAtOffset(RSyntaxTextArea textArea, - int offset) { - RSyntaxDocument doc = (RSyntaxDocument)textArea.getDocument(); - return RSyntaxUtilities.getTokenAtOffset(doc, offset); - } - - - /** - * Returns the token at the specified offset. - * - * @param doc The document. - * @param offset The offset of the token. - * @return The token, or null if the offset is not valid. - * @see #getTokenAtOffset(RSyntaxTextArea, int) - * @see #getTokenAtOffset(Token, int) - */ - public static final Token getTokenAtOffset(RSyntaxDocument doc, - int offset) { - Element root = doc.getDefaultRootElement(); - int lineIndex = root.getElementIndex(offset); - Token t = doc.getTokenListForLine(lineIndex); - return RSyntaxUtilities.getTokenAtOffset(t, offset); - } - - - /** - * Returns the token at the specified index, or null if - * the given offset isn't in this token list's range.
- * Note that this method does NOT check to see if tokenList - * is null; callers should check for themselves. - * - * @param tokenList The list of tokens in which to search. - * @param offset The offset at which to get the token. - * @return The token at offset, or null if - * none of the tokens are at that offset. - * @see #getTokenAtOffset(RSyntaxTextArea, int) - * @see #getTokenAtOffset(RSyntaxDocument, int) - */ - public static final Token getTokenAtOffset(Token tokenList, int offset) { - for (Token t=tokenList; t!=null && t.isPaintable(); t=t.getNextToken()){ - if (t.containsPosition(offset)) - return t; - } - return null; - } - - - /** - * Returns the end of the word at the given offset. - * - * @param textArea The text area. - * @param offs The offset into the text area's content. - * @return The end offset of the word. - * @throws BadLocationException If offs is invalid. - * @see #getWordStart(RSyntaxTextArea, int) - */ - public static int getWordEnd(RSyntaxTextArea textArea, int offs) - throws BadLocationException { - - Document doc = textArea.getDocument(); - int endOffs = textArea.getLineEndOffsetOfCurrentLine(); - int lineEnd = Math.min(endOffs, doc.getLength()); - if (offs == lineEnd) { // End of the line. - return offs; - } - - String s = doc.getText(offs, lineEnd-offs-1); - if (s!=null && s.length()>0) { // Should always be true - int i = 0; - int count = s.length(); - char ch = s.charAt(i); - if (Character.isWhitespace(ch)) { - while (ioffs is invalid. - * @see #getWordEnd(RSyntaxTextArea, int) - */ - public static int getWordStart(RSyntaxTextArea textArea, int offs) - throws BadLocationException { - - Document doc = textArea.getDocument(); - Element line = getLineElem(doc, offs); - if (line == null) { - throw new BadLocationException("No word at " + offs, offs); - } - - int lineStart = line.getStartOffset(); - if (offs==lineStart) { // Start of the line. - return offs; - } - - int endOffs = Math.min(offs+1, doc.getLength()); - String s = doc.getText(lineStart, endOffs-lineStart); - if(s != null && s.length() > 0) { - int i = s.length() - 1; - char ch = s.charAt(i); - if (Character.isWhitespace(ch)) { - while (i>0 && Character.isWhitespace(s.charAt(i-1))) { - i--; - } - offs = lineStart + i; - } - else if (Character.isLetterOrDigit(ch)) { - while (i>0 && Character.isLetterOrDigit(s.charAt(i-1))) { - i--; - } - offs = lineStart + i; - } - - } - - return offs; - - } - - - /** - * Determines the width of the given token list taking tabs - * into consideration. This is implemented in a 1.1 style coordinate - * system where ints are used and 72dpi is assumed.

- * - * This method also assumes that the passed-in token list begins at - * x-pixel 0 in the view (for tab purposes). - * - * @param tokenList The tokenList list representing the text. - * @param textArea The text area in which this token list resides. - * @param e The tab expander. This value cannot be null. - * @return The width of the token list, in pixels. - */ - public static final float getTokenListWidth(Token tokenList, - RSyntaxTextArea textArea, - TabExpander e) { - return getTokenListWidth(tokenList, textArea, e, 0); - } - - - /** - * Determines the width of the given token list taking tabs - * into consideration. This is implemented in a 1.1 style coordinate - * system where ints are used and 72dpi is assumed.

- * - * @param tokenList The token list list representing the text. - * @param textArea The text area in which this token list resides. - * @param e The tab expander. This value cannot be null. - * @param x0 The x-pixel coordinate of the start of the token list. - * @return The width of the token list, in pixels. - * @see #getTokenListWidthUpTo - */ - public static final float getTokenListWidth(final Token tokenList, - RSyntaxTextArea textArea, - TabExpander e, float x0) { - float width = x0; - for (Token t=tokenList; t!=null&&t.isPaintable(); t=t.getNextToken()) { - width += t.getWidth(textArea, e, width); - } - return width - x0; - } - - - /** - * Determines the width of the given token list taking tabs into - * consideration and only up to the given index in the document - * (exclusive). - * - * @param tokenList The token list representing the text. - * @param textArea The text area in which this token list resides. - * @param e The tab expander. This value cannot be null. - * @param x0 The x-pixel coordinate of the start of the token list. - * @param upTo The document position at which you want to stop, - * exclusive. If this position is before the starting position - * of the token list, a width of 0 will be - * returned; similarly, if this position comes after the entire - * token list, the width of the entire token list is returned. - * @return The width of the token list, in pixels, up to, but not - * including, the character at position upTo. - * @see #getTokenListWidth - */ - public static final float getTokenListWidthUpTo(final Token tokenList, - RSyntaxTextArea textArea, TabExpander e, - float x0, int upTo) { - float width = 0; - for (Token t=tokenList; t!=null&&t.isPaintable(); t=t.getNextToken()) { - if (t.containsPosition(upTo)) { - return width + t.getWidthUpTo(upTo-t.getOffset(), textArea, e, - x0+width); - } - width += t.getWidth(textArea, e, x0+width); - } - return width; - } - - - /** - * Returns whether or not this character is a "bracket" to be matched by - * such programming languages as C, C++, and Java. - * - * @param ch The character to check. - * @return Whether or not the character is a "bracket" - one of '(', ')', - * '[', ']', '{', and '}'. - */ - public static final boolean isBracket(char ch) { - // We need the first condition as it might be that ch>255, and thus - // not in our table. '}' is the highest-valued char in the bracket - // set. - return ch<='}' && (dataTable[ch]&BRACKET_MASK)>0; - } - - - /** - * Returns whether or not a character is a digit (0-9). - * - * @param ch The character to check. - * @return Whether or not the character is a digit. - */ - public static final boolean isDigit(char ch) { - // We do it this way as we'd need to do two conditions anyway (first - // to check that ch<255 so it can index into our table, then whether - // that table position has the digit mask). - return ch>='0' && ch<='9'; - } - - - /** - * Returns whether or not this character is a hex character. This method - * accepts both upper- and lower-case letters a-f. - * - * @param ch The character to check. - * @return Whether or not the character is a hex character 0-9, a-f, or - * A-F. - */ - public static final boolean isHexCharacter(char ch) { - // We need the first condition as it could be that ch>255 (and thus - // not a valid index into our table). 'f' is the highest-valued - // char that is a valid hex character. - return (ch<='f') && (dataTable[ch]&HEX_CHARACTER_MASK)>0; - } - - - /** - * Returns whether a character is a Java operator. Note that C and C++ - * operators are the same as Java operators. - * - * @param ch The character to check. - * @return Whether or not the character is a Java operator. - */ - public static final boolean isJavaOperator(char ch) { - // We need the first condition as it could be that ch>255 (and thus - // not a valid index into our table). '~' is the highest-valued - // char that is a valid Java operator. - return (ch<='~') && (dataTable[ch]&JAVA_OPERATOR_MASK)>0; - } - - - /** - * Returns whether a character is a US-ASCII letter (A-Z or a-z). - * - * @param ch The character to check. - * @return Whether or not the character is a US-ASCII letter. - */ - public static final boolean isLetter(char ch) { - // We need the first condition as it could be that ch>255 (and thus - // not a valid index into our table). - return (ch<='z') && (dataTable[ch]&LETTER_MASK)>0; - } - - - /** - * Returns whether or not a character is a US-ASCII letter or a digit. - * - * @param ch The character to check. - * @return Whether or not the character is a US-ASCII letter or a digit. - */ - public static final boolean isLetterOrDigit(char ch) { - // We need the first condition as it could be that ch>255 (and thus - // not a valid index into our table). - return (ch<='z') && (dataTable[ch]&LETTER_OR_DIGIT_MASK)>0; - } - - - /** - * Returns whether the specified color is "light" to use as a foreground. - * Colors that return true indicate that the current Look and - * Feel probably uses light text colors on a dark background. - * - * @param fg The foreground color. - * @return Whether it is a "light" foreground color. - * @see #getHyperlinkForeground() - */ - public static final boolean isLightForeground(Color fg) { - return fg.getRed()>0xa0 && fg.getGreen()>0xa0 && fg.getBlue()>0xa0; - } - - - /** - * Returns whether the specified token is a single non-word char (e.g. not - * in [A-Za-z]. This is a HACK to work around the fact that - * many standard token makers return things like semicolons and periods as - * {@link Token#IDENTIFIER}s just to make the syntax highlighting coloring - * look a little better. - * - * @param t The token to check. This cannot be null. - * @return Whether the token is a single non-word char. - */ - public static final boolean isNonWordChar(Token t) { - return t.length()==1 && !RSyntaxUtilities.isLetter(t.charAt(0)); - } - - - /** - * Returns whether or not a character is a whitespace character (either - * a space ' ' or tab '\t'). This checks for the Unicode character values - * 0x0020 and 0x0009. - * - * @param ch The character to check. - * @return Whether or not the character is a whitespace character. - */ - public static final boolean isWhitespace(char ch) { - // We do it this way as we'd need to do two conditions anyway (first - // to check that ch<255 so it can index into our table, then whether - // that table position has the whitespace mask). - return ch==' ' || ch=='\t'; - } - - - /** - * Returns whether a regular expression token can follow the specified - * token in JavaScript. - * - * @param t The token to check, which may be null. - * @return Whether a regular expression token may follow this one in - * JavaScript. - */ - public static boolean regexCanFollowInJavaScript(Token t) { - char ch; - // We basically try to mimic Eclipse's JS editor's behavior here. - return t==null || - //t.isOperator() || - (t.length()==1 && ( - (ch=t.charAt(0))=='=' || - ch=='(' || - ch==',' || - ch=='?' || - ch==':' || - ch=='[' || - ch=='!' || - ch=='&' - )) || - /* Operators "==", "===", "!=", "!==", "&&", "||" */ - (t.getType()==Token.OPERATOR && - (t.charAt(t.length()-1)=='=' || - t.is(JS_AND) || t.is(JS_OR))) || - t.is(Token.RESERVED_WORD_2, JS_KEYWORD_RETURN); - } - - - /** - * Selects a range of text in a text component. If the new selection is - * outside of the previous viewable rectangle, then the view is centered - * around the new selection. - * - * @param textArea The text component whose selection is to be centered. - * @param range The range to select. - */ - public static final void selectAndPossiblyCenter(JTextArea textArea, - DocumentRange range, boolean select) { - - int start = range.getStartOffset(); - int end = range.getEndOffset(); - - boolean foldsExpanded = false; - if (textArea instanceof RSyntaxTextArea) { - RSyntaxTextArea rsta = (RSyntaxTextArea)textArea; - FoldManager fm = rsta.getFoldManager(); - if (fm.isCodeFoldingSupportedAndEnabled()) { - foldsExpanded = fm.ensureOffsetNotInClosedFold(start); - foldsExpanded |= fm.ensureOffsetNotInClosedFold(end); - } - } - - if (select) { - textArea.setSelectionStart(start); - textArea.setSelectionEnd(end); - } - - Rectangle r = null; - try { - r = textArea.modelToView(start); - if (r==null) { // Not yet visible; i.e. JUnit tests - return; - } - if (end!=start) { - r = r.union(textArea.modelToView(end)); - } - } catch (BadLocationException ble) { // Never happens - ble.printStackTrace(); - if (select) { - textArea.setSelectionStart(start); - textArea.setSelectionEnd(end); - } - return; - } - - Rectangle visible = textArea.getVisibleRect(); - - // If the new selection is already in the view, don't scroll, - // as that is visually jarring. - if (!foldsExpanded && visible.contains(r)) { - if (select) { - textArea.setSelectionStart(start); - textArea.setSelectionEnd(end); - } - return; - } - - visible.x = r.x - (visible.width - r.width) / 2; - visible.y = r.y - (visible.height - r.height) / 2; - - Rectangle bounds = textArea.getBounds(); - Insets i = textArea.getInsets(); - bounds.x = i.left; - bounds.y = i.top; - bounds.width -= i.left + i.right; - bounds.height -= i.top + i.bottom; - - if (visible.x < bounds.x) { - visible.x = bounds.x; - } - - if (visible.x + visible.width > bounds.x + bounds.width) { - visible.x = bounds.x + bounds.width - visible.width; - } - - if (visible.y < bounds.y) { - visible.y = bounds.y; - } - - if (visible.y + visible.height > bounds.y + bounds.height) { - visible.y = bounds.y + bounds.height - visible.height; - } - - textArea.scrollRectToVisible(visible); - - } - - - /** - * If the character is an upper-case US-ASCII letter, it returns the - * lower-case version of that letter; otherwise, it just returns the - * character. - * - * @param ch The character to lower-case (if it is a US-ASCII upper-case - * character). - * @return The lower-case version of the character. - */ - public static final char toLowerCase(char ch) { - // We can logical OR with 32 because A-Z are 65-90 in the ASCII table - // and none of them have the 6th bit (32) set, and a-z are 97-122 in - // the ASCII table, which is 32 over from A-Z. - // We do it this way as we'd need to do two conditions anyway (first - // to check that ch<255 so it can index into our table, then whether - // that table position has the upper-case mask). - if (ch>='A' && ch<='Z') - return (char)(ch | 0x20); - return ch; - } - - - /** - * Creates a regular expression pattern that matches a "wildcard" pattern. - * - * @param wildcard The wildcard pattern. - * @param matchCase Whether the pattern should be case sensitive. - * @param escapeStartChar Whether to escape a starting '^' - * character. - * @return The pattern. - */ - public static Pattern wildcardToPattern(String wildcard, boolean matchCase, - boolean escapeStartChar) { - - int flags = RSyntaxUtilities.getPatternFlags(matchCase, 0); - - StringBuilder sb = new StringBuilder(); - for (int i=0; i0 || escapeStartChar) { - sb.append('\\'); - } - sb.append('^'); - break; - case '\\': - case '.': case '|': - case '+': case '-': - case '$': - case '[': case ']': - case '{': case '}': - case '(': case ')': - sb.append('\\').append(ch); - break; - default: - sb.append(ch); - break; - } - } - - Pattern p = null; - try { - p = Pattern.compile(sb.toString(), flags); - } catch (PatternSyntaxException pse) { - pse.printStackTrace(); - p = Pattern.compile(".+"); - } - - return p; - - } - - -} \ No newline at end of file diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/SquiggleUnderlineHighlightPainter.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/SquiggleUnderlineHighlightPainter.java deleted file mode 100644 index e5fb990..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/SquiggleUnderlineHighlightPainter.java +++ /dev/null @@ -1,120 +0,0 @@ -/* - * 09/13/2005 - * - * SquiggleUnderlineHighlightPainter.java - Highlighter that draws a squiggle - * underline under "highlighted" text, similar to error markers in Microsoft - * Visual Studio or Eclipse. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea; - -import java.awt.Color; -import java.awt.Graphics; -import java.awt.Rectangle; -import java.awt.Shape; -import javax.swing.text.BadLocationException; -import javax.swing.text.JTextComponent; -import javax.swing.text.Position; -import javax.swing.text.View; - -import org.fife.ui.rtextarea.ChangeableHighlightPainter; - - -/** - * Highlight painter that paints a squiggly underline underneath text, similar - * to what popular IDE's such as Visual Studio and Eclipse do to indicate - * errors, warnings, etc.

- * - * This class must be used as a LayerPainter. - * - * @author Robert Futrell - * @version 1.0 - */ -public class SquiggleUnderlineHighlightPainter - extends ChangeableHighlightPainter { - - private static final int AMT = 2; - - /** - * Constructor. - * - * @param color The color of the squiggle. This cannot be - * null. - */ - public SquiggleUnderlineHighlightPainter(Color color) { - super(color); - setPaint(color); - } - - - /** - * Paints a portion of a highlight. - * - * @param g the graphics context - * @param offs0 the starting model offset >= 0 - * @param offs1 the ending model offset >= offs1 - * @param bounds the bounding box of the view, which is not - * necessarily the region to paint. - * @param c the editor - * @param view View painting for - * @return region drawing occurred in - */ - @Override - public Shape paintLayer(Graphics g, int offs0, int offs1, - Shape bounds, JTextComponent c, View view) { - - g.setColor((Color)getPaint()); - - if (offs0 == view.getStartOffset() && offs1 == view.getEndOffset()) { - // Contained in view, can just use bounds. - Rectangle alloc; - if (bounds instanceof Rectangle) - alloc = (Rectangle)bounds; - else - alloc = bounds.getBounds(); - paintSquiggle(g, alloc); - return alloc; - } - - // Otherwise, should only render part of View. - try { - // --- determine locations --- - Shape shape = view.modelToView(offs0, Position.Bias.Forward, - offs1,Position.Bias.Backward, - bounds); - Rectangle r = (shape instanceof Rectangle) ? - (Rectangle)shape : shape.getBounds(); - paintSquiggle(g, r); - return r; - } catch (BadLocationException e) { - e.printStackTrace(); // can't render - } - - // Only if exception - return null; - - } - - - /** - * Paints a squiggle underneath text in the specified rectangle. - * - * @param g The graphics context with which to paint. - * @param r The rectangle containing the text. - */ - protected void paintSquiggle(Graphics g, Rectangle r) { - int x = r.x; - int y = r.y + r.height - AMT; - int delta = -AMT; - while (xRSyntaxTextArea. These constants are the values you can pass - * to {@link RSyntaxTextArea#setSyntaxEditingStyle(String)} to get syntax - * highlighting.

- * - * By default, all RSyntaxTextAreas can render all of these - * languages, but this can be changed (the list can be augmented or completely - * overwritten) on a per-text area basis. What languages can be rendered is - * actually managed by the {@link TokenMakerFactory} installed on the text - * area's {@link RSyntaxDocument}. By default, all - * RSyntaxDocumenets have a factory installed capable of handling - * all of these languages. - * - * @author Robert Futrell - * @version 1.0 - */ -public interface SyntaxConstants { - - /** - * Style meaning don't syntax highlight anything. - */ - public static final String SYNTAX_STYLE_NONE = "text/plain"; - - - /** - * Style for highlighting ActionScript. - */ - public static final String SYNTAX_STYLE_ACTIONSCRIPT = "text/actionscript"; - - - /** - * Style for highlighting x86 assembler. - */ - public static final String SYNTAX_STYLE_ASSEMBLER_X86 = "text/asm"; - - - /** - * Style for highlighting BBCode. - */ - public static final String SYNTAX_STYLE_BBCODE = "text/bbcode"; - - - /** - * Style for highlighting C. - */ - public static final String SYNTAX_STYLE_C = "text/c"; - - - /** - * Style for highlighting Clojure. - */ - public static final String SYNTAX_STYLE_CLOJURE = "text/clojure"; - - - /** - * Style for highlighting C++. - */ - public static final String SYNTAX_STYLE_CPLUSPLUS = "text/cpp"; - - - /** - * Style for highlighting C#. - */ - public static final String SYNTAX_STYLE_CSHARP = "text/cs"; - - - /** - * Style for highlighting CSS. - */ - public static final String SYNTAX_STYLE_CSS = "text/css"; - - - /** - * Syntax style for highlighting D. - */ - public static final String SYNTAX_STYLE_D = "text/d"; - - - /** - * Style for highlighting Dart. - */ - public static final String SYNTAX_STYLE_DART = "text/dart"; - - - /** - * Style for highlighting Delphi/Pascal. - */ - public static final String SYNTAX_STYLE_DELPHI = "text/delphi"; - - - /** - * Style for highlighting DTD files. - */ - public static final String SYNTAX_STYLE_DTD = "text/dtd"; - - - /** - * Style for highlighting Fortran. - */ - public static final String SYNTAX_STYLE_FORTRAN = "text/fortran"; - - - /** - * Style for highlighting Groovy. - */ - public static final String SYNTAX_STYLE_GROOVY = "text/groovy"; - - - /** - * Style for highlighting .htaccess files. - */ - public static final String SYNTAX_STYLE_HTACCESS = "text/htaccess"; - - - /** - * Style for highlighting HTML. - */ - public static final String SYNTAX_STYLE_HTML = "text/html"; - - - /** - * Style for highlighting Java. - */ - public static final String SYNTAX_STYLE_JAVA = "text/java"; - - - /** - * Style for highlighting JavaScript. - */ - public static final String SYNTAX_STYLE_JAVASCRIPT = "text/javascript"; - - - /** - * Style for highlighting .jshintrc files. - */ - public static final String SYNTAX_STYLE_JSHINTRC = "text/jshintrc"; - - - /** - * Style for highlighting JSON. - */ - public static final String SYNTAX_STYLE_JSON = "text/json"; - - - /** - * Style for highlighting JSP. - */ - public static final String SYNTAX_STYLE_JSP = "text/jsp"; - - - /** - * Style for highlighting LaTeX. - */ - public static final String SYNTAX_STYLE_LATEX = "text/latex"; - - - /** - * Style for highlighting Less. - */ - public static final String SYNTAX_STYLE_LESS = "text/less"; - - - /** - * Style for highlighting Lisp. - */ - public static final String SYNTAX_STYLE_LISP = "text/lisp"; - - - /** - * Style for highlighting Lua. - */ - public static final String SYNTAX_STYLE_LUA = "text/lua"; - - - /** - * Style for highlighting makefiles. - */ - public static final String SYNTAX_STYLE_MAKEFILE = "text/makefile"; - - - /** - * Style for highlighting MXML. - */ - public static final String SYNTAX_STYLE_MXML = "text/mxml"; - - - /** - * Style for highlighting NSIS install scripts. - */ - public static final String SYNTAX_STYLE_NSIS = "text/nsis"; - - - /** - * Style for highlighting Perl. - */ - public static final String SYNTAX_STYLE_PERL = "text/perl"; - - - /** - * Style for highlighting PHP. - */ - public static final String SYNTAX_STYLE_PHP = "text/php"; - - - /** - * Style for highlighting properties files. - */ - public static final String SYNTAX_STYLE_PROPERTIES_FILE = "text/properties"; - - - /** - * Style for highlighting Python. - */ - public static final String SYNTAX_STYLE_PYTHON = "text/python"; - - - /** - * Style for highlighting Ruby. - */ - public static final String SYNTAX_STYLE_RUBY = "text/ruby"; - - - /** - * Style for highlighting SAS keywords. - */ - public static final String SYNTAX_STYLE_SAS = "text/sas"; - - - /** - * Style for highlighting Scala. - */ - public static final String SYNTAX_STYLE_SCALA = "text/scala"; - - - /** - * Style for highlighting SQL. - */ - public static final String SYNTAX_STYLE_SQL = "text/sql"; - - - /** - * Style for highlighting Tcl. - */ - public static final String SYNTAX_STYLE_TCL = "text/tcl"; - - - /** - * Style for highlighting UNIX shell keywords. - */ - public static final String SYNTAX_STYLE_UNIX_SHELL = "text/unix"; - - - /** - * Style for highlighting Visual Basic. - */ - public static final String SYNTAX_STYLE_VISUAL_BASIC = "text/vb"; - - - /** - * Style for highlighting Windows batch files. - */ - public static final String SYNTAX_STYLE_WINDOWS_BATCH = "text/bat"; - - - /** - * Style for highlighting XML. - */ - public static final String SYNTAX_STYLE_XML = "text/xml"; - - -} \ No newline at end of file diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/SyntaxScheme.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/SyntaxScheme.java deleted file mode 100644 index 6420453..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/SyntaxScheme.java +++ /dev/null @@ -1,723 +0,0 @@ -/* - * 02/26/2004 - * - * SyntaxScheme.java - The set of colors and tokens used by an RSyntaxTextArea - * to color tokens. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea; - -import java.awt.Color; -import java.awt.Font; -import java.awt.Graphics2D; -import java.io.IOException; -import java.io.InputStream; -import java.lang.reflect.Field; -import javax.swing.text.StyleContext; -import org.xml.sax.Attributes; -import org.xml.sax.InputSource; -import org.xml.sax.SAXException; -import org.xml.sax.XMLReader; -import org.xml.sax.helpers.DefaultHandler; -import org.xml.sax.helpers.XMLReaderFactory; - - -/** - * The set of colors and styles used by an RSyntaxTextArea to - * color tokens.

- * You can use this class to programmatically set the fonts and colors used in - * an RSyntaxTextArea, but for more powerful, externalized control, consider - * using {@link Theme}s instead. - * - * @author Robert Futrell - * @version 1.0 - * @see Theme - */ -public class SyntaxScheme implements Cloneable, TokenTypes { - - private Style[] styles; - - private static final String VERSION = "*ver1"; - - - /** - * Creates a color scheme that either has all color values set to - * a default value or set to null. - * - * @param useDefaults If true, all color values will - * be set to default colors; if false, all colors - * will be initially null. - */ - public SyntaxScheme(boolean useDefaults) { - styles = new Style[DEFAULT_NUM_TOKEN_TYPES]; - if (useDefaults) { - restoreDefaults(null); - } - } - - - /** - * Creates a default color scheme. - * - * @param baseFont The base font to use. Keywords will be a bold version - * of this font, and comments will be an italicized version of this - * font. - */ - public SyntaxScheme(Font baseFont) { - this(baseFont, true); - } - - - /** - * Creates a default color scheme. - * - * @param baseFont The base font to use. Keywords will be a bold version - * of this font, and comments will be an italicized version of this - * font. - * @param fontStyles Whether bold and italic should be used in the scheme - * (vs. all tokens using a plain font). - */ - public SyntaxScheme(Font baseFont, boolean fontStyles) { - styles = new Style[DEFAULT_NUM_TOKEN_TYPES]; - restoreDefaults(baseFont, fontStyles); - } - - - /** - * Changes the "base font" for this syntax scheme. This is called by - * RSyntaxTextArea when its font changes via - * setFont(). This looks for tokens that use a derivative of - * the text area's old font (but bolded and/or italicized) and make them - * use the new font with those stylings instead. This is desirable because - * most programmers prefer a single font to be used in their text editor, - * but might want bold (say for keywords) or italics. - * - * @param old The old font of the text area. - * @param font The new font of the text area. - */ - void changeBaseFont(Font old, Font font) { - for (int i=0; itrue if this color scheme and - * otherScheme are the same scheme; - * false otherwise. - */ - @Override - public boolean equals(Object otherScheme) { - - // No need for null check; instanceof takes care of this for us, - // i.e. "if (!(null instanceof Foo))" evaluates to "true". - if (!(otherScheme instanceof SyntaxScheme)) { - return false; - } - - Style[] otherSchemes = ((SyntaxScheme)otherScheme).styles; - - int length = styles.length; - for (int i=0; i"$rrggbb". - * - * @param c The color. - * @return The string representation of the color. - */ - private static final String getHexString(Color c) { - return "$" + Integer.toHexString((c.getRGB() & 0xffffff)+0x1000000). - substring(1); - } - - - /** - * Returns the specified style. - * - * @param index The index of the style. - * @return The style. - * @see #setStyle(int, Style) - * @see #getStyleCount() - */ - public Style getStyle(int index) { - return styles[index]; - } - - - /** - * Returns the number of styles. - * - * @return The number of styles. - * @see #getStyle(int) - */ - public int getStyleCount() { - return styles.length; - } - - - /** - * Used by third party implementors e.g. SquirreL SQL. Most applications do - * not need to call this method. - *

- * Note that the returned array is not a copy of the style data; editing the - * array will modify the styles used by any RSyntaxTextArea - * using this scheme. - * - * @return The style array. - * @see #setStyles(Style[]) - */ - public Style[] getStyles() { - return styles; - } - - - /** - * This is implemented to be consistent with {@link #equals(Object)}. - * This is a requirement to keep FindBugs happy. - * - * @return The hash code for this object. - */ - @Override - public int hashCode() { - // Keep me fast. Iterating over *all* syntax schemes contained is - // probably much slower than a "bad" hash code here. - int hashCode = 0; - int count = styles.length; - for (int i=0; i - * - * Consider using the {@link Theme} class for saving and loading RSTA - * styles rather than using this API. - * - * @param baseFont The font to use as the "base" for the syntax scheme. - * If this is null, a default monospaced font is used. - * @param in The stream to load from. It is up to the caller to close this - * stream when they are done. - * @return The syntax scheme. - * @throws IOException If an IO error occurs. - */ - public static SyntaxScheme load(Font baseFont, InputStream in) - throws IOException { - if (baseFont==null) { - baseFont = RSyntaxTextArea.getDefaultFont(); - } - return SyntaxSchemeLoader.load(baseFont, in); - } - - - /** - * Loads a syntax highlighting color scheme from a string created from - * toCommaSeparatedString. This method is useful for saving - * and restoring color schemes.

- * - * Consider using the {@link Theme} class for saving and loading RSTA - * styles rather than using this API. - * - * @param string A string generated from {@link #toCommaSeparatedString()}. - * @return A color scheme. - * @see #toCommaSeparatedString() - */ - public static SyntaxScheme loadFromString(String string) { - return loadFromString(string, DEFAULT_NUM_TOKEN_TYPES); - } - - - /** - * Loads a syntax highlighting color scheme from a string created from - * toCommaSeparatedString. This method is useful for saving - * and restoring color schemes.

- * - * Consider using the {@link Theme} class for saving and loading RSTA - * styles rather than using this API. - * - * @param string A string generated from {@link #toCommaSeparatedString()}. - * @param tokenTypeCount The number of token types saved in this string. - * This should be the number of token types saved by your custom - * SyntaxScheme subclass, - * or {@link TokenTypes#DEFAULT_NUM_TOKEN_TYPES} if you used the - * standard implementation (which most people will). - * @return A color scheme. - * @see #loadFromString(String) - * @see #toCommaSeparatedString() - */ - public static SyntaxScheme loadFromString(String string, - int tokenTypeCount) { - - SyntaxScheme scheme = new SyntaxScheme(true); - - try { - - if (string!=null) { - - String[] tokens = string.split(",", -1); - - // Check the version string, use defaults if incompatible - if (tokens.length==0 || !VERSION.equals(tokens[0])) { - return scheme; // Still set to defaults - } - - int tokenCount = tokenTypeCount*7 + 1; // Version string - if (tokens.length!=tokenCount) { - throw new Exception( - "Not enough tokens in packed color scheme: expected " + - tokenCount + ", found " + tokens.length); - } - - // Use StyleContext to create fonts to get composite fonts for - // Asian glyphs. - StyleContext sc = StyleContext.getDefaultStyleContext(); - - // Loop through each token style. Format: - // "index,(fg|-),(bg|-),(t|f),((font,style,size)|(-,,))" - for (int i=0; i keep fg as null - fg = stringToColor(temp); - } - Color bg = null; temp = tokens[pos+2]; - if (!"-".equals(temp)) { // "-" => keep bg as null - bg = stringToColor(temp); - } - - // Check for "true" or "false" since we don't want to - // accidentally suck in an int representing the next - // packed color, and any string != "true" means false. - temp = tokens[pos+3]; - if (!"t".equals(temp) && !"f".equals(temp)) - throw new Exception("Expected 't' or 'f', found " + temp); - boolean underline = "t".equals(temp); - - Font font = null; - String family = tokens[pos+4]; - if (!"-".equals(family)) { - font = sc.getFont(family, - Integer.parseInt(tokens[pos+5]), // style - Integer.parseInt(tokens[pos+6])); // size - } - scheme.styles[i] = new Style(fg, bg, font, underline); - - } - - } - - } catch (Exception e) { - e.printStackTrace(); - } - - return scheme; - - } - - - void refreshFontMetrics(Graphics2D g2d) { - // It is assumed that any rendering hints are already applied to g2d. - for (int i=0; inull, then a default monospaced font is - * used. - */ - public void restoreDefaults(Font baseFont) { - restoreDefaults(baseFont, true); - } - - - /** - * Restores all colors and fonts to their default values. - * - * @param baseFont The base font to use when creating this scheme. If - * this is null, then a default monospaced font is - * used. - * @param fontStyles Whether bold and italic should be used in the scheme - * (vs. all tokens using a plain font). - */ - public void restoreDefaults(Font baseFont, boolean fontStyles) { - - // Colors used by tokens. - Color comment = new Color(0,128,0); - Color docComment = new Color(164,0,0); - Color markupComment = new Color(0, 96, 0); - Color keyword = Color.BLUE; - Color dataType = new Color(0,128,128); - Color function = new Color(173,128,0); - Color preprocessor = new Color(128,128,128); - Color operator = new Color(128, 64, 64); - Color regex = new Color(0,128,164); - Color variable = new Color(255,153,0); - Color literalNumber = new Color(100,0,200); - Color literalString = new Color(220,0,156); - Color error = new Color(148,148,0); - - // (Possible) special font styles for keywords and comments. - if (baseFont==null) { - baseFont = RSyntaxTextArea.getDefaultFont(); - } - Font commentFont = baseFont; - Font keywordFont = baseFont; - if (fontStyles) { - // WORKAROUND for Sun JRE bug 6282887 (Asian font bug in 1.4/1.5) - // That bug seems to be hidden now, see 6289072 instead. - StyleContext sc = StyleContext.getDefaultStyleContext(); - Font boldFont = sc.getFont(baseFont.getFamily(), Font.BOLD, - baseFont.getSize()); - Font italicFont = sc.getFont(baseFont.getFamily(), Font.ITALIC, - baseFont.getSize()); - commentFont = italicFont;//baseFont.deriveFont(Font.ITALIC); - keywordFont = boldFont;//baseFont.deriveFont(Font.BOLD); - } - - styles[COMMENT_EOL] = new Style(comment, null, commentFont); - styles[COMMENT_MULTILINE] = new Style(comment, null, commentFont); - styles[COMMENT_DOCUMENTATION] = new Style(docComment, null, commentFont); - styles[COMMENT_KEYWORD] = new Style(new Color(255,152,0), null, commentFont); - styles[COMMENT_MARKUP] = new Style(Color.gray, null, commentFont); - styles[RESERVED_WORD] = new Style(keyword, null, keywordFont); - styles[RESERVED_WORD_2] = new Style(keyword, null, keywordFont); - styles[FUNCTION] = new Style(function); - styles[LITERAL_BOOLEAN] = new Style(literalNumber); - styles[LITERAL_NUMBER_DECIMAL_INT] = new Style(literalNumber); - styles[LITERAL_NUMBER_FLOAT] = new Style(literalNumber); - styles[LITERAL_NUMBER_HEXADECIMAL] = new Style(literalNumber); - styles[LITERAL_STRING_DOUBLE_QUOTE] = new Style(literalString); - styles[LITERAL_CHAR] = new Style(literalString); - styles[LITERAL_BACKQUOTE] = new Style(literalString); - styles[DATA_TYPE] = new Style(dataType, null, keywordFont); - styles[VARIABLE] = new Style(variable); - styles[REGEX] = new Style(regex); - styles[ANNOTATION] = new Style(Color.gray); - styles[IDENTIFIER] = new Style(null); - styles[WHITESPACE] = new Style(Color.gray); - styles[SEPARATOR] = new Style(Color.RED); - styles[OPERATOR] = new Style(operator); - styles[PREPROCESSOR] = new Style(preprocessor); - styles[MARKUP_TAG_DELIMITER] = new Style(Color.RED); - styles[MARKUP_TAG_NAME] = new Style(Color.BLUE); - styles[MARKUP_TAG_ATTRIBUTE] = new Style(new Color(63,127,127)); - styles[MARKUP_TAG_ATTRIBUTE_VALUE]= new Style(literalString); - styles[MARKUP_COMMENT] = new Style(markupComment, null, commentFont); - styles[MARKUP_DTD] = new Style(function); - styles[MARKUP_PROCESSING_INSTRUCTION] = new Style(preprocessor); - styles[MARKUP_CDATA] = new Style(new Color(0xcc6600)); - styles[MARKUP_CDATA_DELIMITER] = new Style(new Color(0x008080)); - styles[MARKUP_ENTITY_REFERENCE] = new Style(dataType); - styles[ERROR_IDENTIFIER] = new Style(error); - styles[ERROR_NUMBER_FORMAT] = new Style(error); - styles[ERROR_STRING_DOUBLE] = new Style(error); - styles[ERROR_CHAR] = new Style(error); - - // Issue #34: If an application modifies TokenTypes to add new built-in - // token types, we'll get NPEs if not all styles are initialized. - for (int i=0; i$', it is assumed to be in hex, otherwise it is - * assumed to be decimal. So, for example, both of these: - *

-	 * "$00ff00"
-	 * "65280"
-	 * 
- * will return new Color(0, 255, 0). - * - * @param s The string to evaluate. - * @return The color. - */ - private static final Color stringToColor(String s) { - // Check for decimal as well as hex, for backward - // compatibility (fix from GwynEvans on forums) - char ch = s.charAt(0); - return new Color((ch=='$' || ch=='#') ? - Integer.parseInt(s.substring(1),16) : - Integer.parseInt(s)); - } - - - /** - * Returns this syntax highlighting scheme as a comma-separated list of - * values as follows: - *
    - *
  • If a color is non-null, it is added as a 24-bit integer - * of the form ((r<*lt;16) | (g<*lt;8) | (b)); if - * it is null, it is added as "-,". - *
  • The font and style (bold/italic) is added as an integer like so: - * "family, style, size". - *
  • The entire syntax highlighting scheme is thus one long string of - * color schemes of the format "i,[fg],[bg],uline,[style], - * where: - *
      - *
    • i is the index of the syntax scheme. - *
    • fg and bg are the foreground and background - * colors for the scheme, and may be null (represented by - * -). - *
    • uline is whether or not the font should be - * underlined, and is either t or f. - *
    • style is the family,style,size - * triplet described above. - *
    - *
- * - * @return A string representing the rgb values of the colors. - * @see #loadFromString(String) - */ - public String toCommaSeparatedString() { - - StringBuilder sb = new StringBuilder(VERSION); - sb.append(','); - - for (int i=0; iSyntaxScheme from an XML file. - */ - private static class SyntaxSchemeLoader extends DefaultHandler { - - private Font baseFont; - private SyntaxScheme scheme; - - public SyntaxSchemeLoader(Font baseFont) { - scheme = new SyntaxScheme(baseFont); - } - - public static SyntaxScheme load(Font baseFont, InputStream in) - throws IOException { - SyntaxSchemeLoader parser = null; - try { - XMLReader reader = XMLReaderFactory.createXMLReader(); - parser = new SyntaxSchemeLoader(baseFont); - parser.baseFont = baseFont; - reader.setContentHandler(parser); - InputSource is = new InputSource(in); - is.setEncoding("UTF-8"); - reader.parse(is); - } catch (SAXException se) { - throw new IOException(se.toString()); - } - return parser.scheme; - } - - @Override - public void startElement(String uri, String localName, String qName, - Attributes attrs) { - - if ("style".equals(qName)) { - - String type = attrs.getValue("token"); - Field field = null; - try { - field = Token.class.getField(type); - } catch (RuntimeException re) { - throw re; // FindBugs - } catch (Exception e) { - System.err.println("Invalid token type: " + type); - return; - } - - if (field.getType()==int.class) { - - int index = 0; - try { - index = field.getInt(scheme); - } catch (IllegalArgumentException e) { - e.printStackTrace(); - return; - } catch (IllegalAccessException e) { - e.printStackTrace(); - return; - } - - String fgStr = attrs.getValue("fg"); - if (fgStr!=null) { - Color fg = stringToColor(fgStr); - scheme.styles[index].foreground = fg; - } - - String bgStr = attrs.getValue("bg"); - if (bgStr!=null) { - Color bg = stringToColor(bgStr); - scheme.styles[index].background = bg; - } - - boolean styleSpecified = false; - boolean bold = false; - boolean italic = false; - String boldStr = attrs.getValue("bold"); - if (boldStr!=null) { - bold = Boolean.valueOf(boldStr).booleanValue(); - styleSpecified = true; - } - String italicStr = attrs.getValue("italic"); - if (italicStr!=null) { - italic = Boolean.valueOf(italicStr).booleanValue(); - styleSpecified = true; - } - if (styleSpecified) { - int style = 0; - if (bold) { style |= Font.BOLD; } - if (italic) { style |= Font.ITALIC; } - scheme.styles[index].font = baseFont.deriveFont(style); - } - - String ulineStr = attrs.getValue("underline"); - if (ulineStr!=null) { - boolean uline= Boolean.valueOf(ulineStr).booleanValue(); - scheme.styles[index].underline = uline; - } - - } - - } - - } - - } - - -} \ No newline at end of file diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/SyntaxView.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/SyntaxView.java deleted file mode 100644 index 77ffb37..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/SyntaxView.java +++ /dev/null @@ -1,1010 +0,0 @@ -/* - * 02/24/2004 - * - * SyntaxView.java - The View object used by RSyntaxTextArea when word wrap is - * disabled. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea; - -import java.awt.*; -import javax.swing.event.*; -import javax.swing.text.*; - -import org.fife.ui.rsyntaxtextarea.folding.Fold; -import org.fife.ui.rsyntaxtextarea.folding.FoldManager; - - -/** - * The javax.swing.text.View object used by {@link RSyntaxTextArea} - * when word wrap is disabled. It implements syntax highlighting for - * programming languages using the colors and font styles specified by the - * RSyntaxTextArea.

- * - * You don't really have to do anything to use this class, as - * {@link RSyntaxTextAreaUI} automatically sets the text area's view to be - * an instance of this class if word wrap is disabled.

- * - * The tokens that specify how to paint the syntax-highlighted text are gleaned - * from the text area's {@link RSyntaxDocument}. - * - * @author Robert Futrell - * @version 0.3 - */ -public class SyntaxView extends View implements TabExpander, - TokenOrientedView, RSTAView { - - /** - * The default font used by the text area. If this changes we need to - * recalculate the longest line. - */ - private Font font; - - /** - * Font metrics for the current font. - */ - private FontMetrics metrics; - - /** - * The current longest line. This is used to calculate the preferred width - * of the view. Since the calculation is potentially expensive, we try to - * avoid it by stashing which line is currently the longest. - */ - private Element longLine; - private float longLineWidth; - - private int tabSize; - private int tabBase; - - /** - * Cached for each paint() call so each drawLine() call has access to it. - */ - private RSyntaxTextArea host; - - /** - * Cached values to speed up the painting a tad. - */ - private int lineHeight = 0; - private int ascent; - private int clipStart; - private int clipEnd; - - /** - * Temporary token used when we need to "modify" tokens for rendering - * purposes. Since tokens returned from RSyntaxDocuments are treated as - * immutable, we use this temporary token to do that work. - */ - private TokenImpl tempToken; - - - /** - * Constructs a new SyntaxView wrapped around an element. - * - * @param elem The element representing the text to display. - */ - public SyntaxView(Element elem) { - super(elem); - tempToken = new TokenImpl(); - } - - - /** - * Iterate over the lines represented by the child elements - * of the element this view represents, looking for the line - * that is the longest. The longLine variable is updated to - * represent the longest line contained. The font variable - * is updated to indicate the font used to calculate the - * longest line. - */ - void calculateLongestLine() { - Component c = getContainer(); - font = c.getFont(); - metrics = c.getFontMetrics(font); - tabSize = getTabSize() * metrics.charWidth(' '); - Element lines = getElement(); - int n = lines.getElementCount(); - for (int i=0; i longLineWidth) { - longLineWidth = w; - longLine = line; - } - } - } - - - /** - * Gives notification from the document that attributes were changed - * in a location that this view is responsible for. - * - * @param changes the change information from the associated document - * @param a the current allocation of the view - * @param f the factory to use to rebuild if the view has children - * @see View#changedUpdate - */ - @Override - public void changedUpdate(DocumentEvent changes, Shape a, ViewFactory f) { - updateDamage(changes, a, f); - } - - - /** - * Repaint the given line range. - * - * @param line0 The starting line number to repaint. This must - * be a valid line number in the model. - * @param line1 The ending line number to repaint. This must - * be a valid line number in the model. - * @param a The region allocated for the view to render into. - * @param host The component hosting the view (used to call repaint). - */ - protected void damageLineRange(int line0, int line1, Shape a, - Component host) { - if (a != null) { - Rectangle area0 = lineToRect(a, line0); - Rectangle area1 = lineToRect(a, line1); - if ((area0 != null) && (area1 != null)) { - Rectangle dmg = area0.union(area1); // damage. - host.repaint(dmg.x, dmg.y, dmg.width, dmg.height); - } - else - host.repaint(); - } - } - - - /** - * Draws the passed-in text using syntax highlighting for the current - * language. It is assumed that the entire line is either not in a - * selected region, or painting with a selection-foreground color is turned - * off. - * - * @param painter The painter to render the tokens. - * @param token The list of tokens to draw. - * @param g The graphics context in which to draw. - * @param x The x-coordinate at which to draw. - * @param y The y-coordinate at which to draw. - * @return The x-coordinate representing the end of the painted text. - */ - private float drawLine(TokenPainter painter, Token token, Graphics2D g, - float x, float y, int line) { - - float nextX = x; // The x-value at the end of our text. - boolean paintBG = host.getPaintTokenBackgrounds(line, y); - - while (token!=null && token.isPaintable() && nextXtoken.getOffset()) { - tempToken.copyFrom(token); - tempToken.textCount = selStart - tempToken.getOffset(); - nextX = painter.paint(tempToken,g,nextX,y,host, this, clipStart); - tempToken.textCount = token.length(); - tempToken.makeStartAt(selStart); - // Clone required since token and tempToken must be - // different tokens for else statement below - token = new TokenImpl(tempToken); - } - - int tokenLen = token.length(); - int selCount = Math.min(tokenLen, selEnd-token.getOffset()); - if (selCount==tokenLen) { - nextX = painter.paintSelected(token, g, nextX,y, host, - this, clipStart, useSTC); - } - else { - tempToken.copyFrom(token); - tempToken.textCount = selCount; - nextX = painter.paintSelected(tempToken, g, nextX,y, host, - this, clipStart, useSTC); - tempToken.textCount = token.length(); - tempToken.makeStartAt(token.getOffset() + selCount); - token = tempToken; - nextX = painter.paint(token, g, nextX,y, host, this, - clipStart); - } - - } - - // Selection ends in this token - else if (token.containsPosition(selEnd)) { - tempToken.copyFrom(token); - tempToken.textCount = selEnd - tempToken.getOffset(); - nextX = painter.paintSelected(tempToken, g, nextX,y, host, this, - clipStart, useSTC); - tempToken.textCount = token.length(); - tempToken.makeStartAt(selEnd); - token = tempToken; - nextX = painter.paint(token, g, nextX,y, host, this, clipStart); - } - - // This token is entirely selected - else if (token.getOffset()>=selStart && - token.getEndOffset()<=selEnd) { - nextX = painter.paintSelected(token, g, nextX,y, host, this, - clipStart, useSTC); - } - - // This token is entirely unselected - else { - nextX = painter.paint(token, g, nextX,y, host, this, clipStart); - } - - token = token.getNextToken(); - - } - - // NOTE: We should re-use code from Token (paintBackground()) here, - // but don't because I'm just too lazy. - if (host.getEOLMarkersVisible()) { - g.setColor(host.getForegroundForTokenType(Token.WHITESPACE)); - g.setFont(host.getFontForTokenType(Token.WHITESPACE)); - g.drawString("\u00B6", nextX, y); - } - - // Return the x-coordinate at the end of the painted text. - return nextX; - - } - - - /** - * Calculates the width of the line represented by the given element. - * - * @param line The line for which to get the length. - * @param lineNumber The line number of the specified line in the document. - * @return The width of the line. - */ - private float getLineWidth(int lineNumber) { - Token tokenList = ((RSyntaxDocument)getDocument()). - getTokenListForLine(lineNumber); - return RSyntaxUtilities.getTokenListWidth(tokenList, - (RSyntaxTextArea)getContainer(), - this); - } - - - /** - * Provides a way to determine the next visually represented model - * location that one might place a caret. Some views may not be visible, - * they might not be in the same order found in the model, or they just - * might not allow access to some of the locations in the model. - * - * @param pos the position to convert >= 0 - * @param a the allocated region to render into - * @param direction the direction from the current position that can - * be thought of as the arrow keys typically found on a keyboard. - * This may be SwingConstants.WEST, SwingConstants.EAST, - * SwingConstants.NORTH, or SwingConstants.SOUTH. - * @return the location within the model that best represents the next - * location visual position. - * @exception BadLocationException - * @exception IllegalArgumentException for an invalid direction - */ - @Override - public int getNextVisualPositionFrom(int pos, Position.Bias b, Shape a, - int direction, Position.Bias[] biasRet) - throws BadLocationException { - return RSyntaxUtilities.getNextVisualPositionFrom(pos, b, a, - direction, biasRet, this); - } - - - /** - * Determines the preferred span for this view along an - * axis. - * - * @param axis may be either View.X_AXIS or View.Y_AXIS - * @return the span the view would like to be rendered into >= 0. - * Typically the view is told to render into the span - * that is returned, although there is no guarantee. - * The parent may choose to resize or break the view. - * @exception IllegalArgumentException for an invalid axis - */ - @Override - public float getPreferredSpan(int axis) { - updateMetrics(); - switch (axis) { - case View.X_AXIS: - float span = longLineWidth + getRhsCorrection(); // fudge factor - if (host.getEOLMarkersVisible()) { - span += metrics.charWidth('\u00B6'); - } - return span; - case View.Y_AXIS: - // We update lineHeight here as when this method is first - // called, lineHeight isn't initialized. If we don't do it - // here, we get no vertical scrollbar (as lineHeight==0). - lineHeight = host!=null ? host.getLineHeight() : lineHeight; -// return getElement().getElementCount() * lineHeight; -int visibleLineCount = getElement().getElementCount(); -if (host.isCodeFoldingEnabled()) { - visibleLineCount -= host.getFoldManager().getHiddenLineCount(); -} -return visibleLineCount * lineHeight; - default: - throw new IllegalArgumentException("Invalid axis: " + axis); - } - } - - - /** - * Workaround for JTextComponents allowing the caret to be rendered - * entirely off-screen if the entire "previous" character fit entirely. - * - * @return The amount of space to add to the x-axis preferred span. - */ - private final int getRhsCorrection() { - int rhsCorrection = 10; - if (host!=null) { - rhsCorrection = host.getRightHandSideCorrection(); - } - return rhsCorrection; - } - - - /** - * Returns the tab size set for the document, defaulting to 5. - * - * @return The tab size. - */ - private int getTabSize() { - Integer i = (Integer)getDocument().getProperty( - PlainDocument.tabSizeAttribute); - int size = (i != null) ? i.intValue() : 5; - return size; - } - - - /** - * Returns a token list for the physical line above the physical - * line containing the specified offset into the document. Note that for - * this plain (non-wrapped) view, this is simply the token list for the - * logical line above the line containing offset, since lines - * are not wrapped. - * - * @param offset The offset in question. - * @return A token list for the physical (and in this view, logical) line - * before this one. If offset is in the first line in - * the document, null is returned. - */ - public Token getTokenListForPhysicalLineAbove(int offset) { - RSyntaxDocument document = (RSyntaxDocument)getDocument(); - Element map = document.getDefaultRootElement(); -int line = map.getElementIndex(offset); -FoldManager fm = host.getFoldManager(); -if (fm==null) { - line--; - if (line>=0) { - return document.getTokenListForLine(line); - } -} -else { - line = fm.getVisibleLineAbove(line); - if (line>=0) { - return document.getTokenListForLine(line); - } -} -// int line = map.getElementIndex(offset) - 1; -// if (line>=0) -// return document.getTokenListForLine(line); - return null; - } - - - /** - * Returns a token list for the physical line below the physical - * line containing the specified offset into the document. Note that for - * this plain (non-wrapped) view, this is simply the token list for the - * logical line below the line containing offset, since lines - * are not wrapped. - * - * @param offset The offset in question. - * @return A token list for the physical (and in this view, logical) line - * after this one. If offset is in the last physical - * line in the document, null is returned. - */ - public Token getTokenListForPhysicalLineBelow(int offset) { - RSyntaxDocument document = (RSyntaxDocument)getDocument(); - Element map = document.getDefaultRootElement(); - int lineCount = map.getElementCount(); -int line = map.getElementIndex(offset); -if (!host.isCodeFoldingEnabled()) { - if (line=0 && line - * - * This is implemented to subtract the width of the second character, as - * this view's modelToView actually returns the width of the - * character instead of "1" or "0" like the View implementations in - * javax.swing.text. Thus, if we don't override this method, - * the View implementation will return one character's width - * too much for its consumers (implementations of - * javax.swing.text.Highlighter). - * - * @param p0 the position of the first character (>=0) - * @param b0 The bias of the first character position, toward the previous - * character or the next character represented by the offset, in - * case the position is a boundary of two views; b0 - * will have one of these values: - *

    - *
  • Position.Bias.Forward - *
  • Position.Bias.Backward - *
- * @param p1 the position of the last character (>=0) - * @param b1 the bias for the second character position, defined - * one of the legal values shown above - * @param a the area of the view, which encompasses the requested region - * @return the bounding box which is a union of the region specified - * by the first and last character positions - * @exception BadLocationException if the given position does - * not represent a valid location in the associated document - * @exception IllegalArgumentException if b0 or - * b1 are not one of the - * legal Position.Bias values listed above - * @see View#viewToModel - */ - @Override - public Shape modelToView(int p0, Position.Bias b0, - int p1, Position.Bias b1, - Shape a) throws BadLocationException { - - Shape s0 = modelToView(p0, a, b0); - Shape s1; - if (p1 ==getEndOffset()) { - try { - s1 = modelToView(p1, a, b1); - } catch (BadLocationException ble) { - s1 = null; - } - if (s1 == null) { - // Assume extends left to right. - Rectangle alloc = (a instanceof Rectangle) ? (Rectangle)a : - a.getBounds(); - s1 = new Rectangle(alloc.x + alloc.width - 1, alloc.y, - 1, alloc.height); - } - } - else { - s1 = modelToView(p1, a, b1); - } - Rectangle r0 = s0 instanceof Rectangle ? (Rectangle)s0 : s0.getBounds(); - Rectangle r1 = s1 instanceof Rectangle ? (Rectangle)s1 : s1.getBounds(); - if (r0.y != r1.y) { - // If it spans lines, force it to be the width of the view. - Rectangle alloc = (a instanceof Rectangle) ? (Rectangle)a : - a.getBounds(); - r0.x = alloc.x; - r0.width = alloc.width; - } - - r0.add(r1); - // The next line is the only difference between this method and - // View's implementation. We're subtracting the width of the second - // character. This is because this method is used by Highlighter - // implementations to get the area to "highlight", and if we don't do - // this, one character too many is highlighted thanks to our - // modelToView() implementation returning the actual width of the - // character requested! - if (p1>p0) r0.width -= r1.width; - - return r0; - - } - - - /** - * Returns the next tab stop position after a given reference position. - * This implementation does not support things like centering so it - * ignores the tabOffset argument. - * - * @param x the current position >= 0 - * @param tabOffset the position within the text stream - * that the tab occurred at >= 0. - * @return the tab stop, measured in points >= 0 - */ - public float nextTabStop(float x, int tabOffset) { - if (tabSize == 0) - return x; - int ntabs = (((int)x) - tabBase) / tabSize; - return tabBase + ((ntabs + 1) * tabSize); - } - - - /** - * Actually paints the text area. Only lines that have been damaged are - * repainted. - * - * @param g The graphics context with which to paint. - * @param a The allocated region in which to render. - */ - @Override - public void paint(Graphics g, Shape a) { - - RSyntaxDocument document = (RSyntaxDocument)getDocument(); - - Rectangle alloc = a.getBounds(); - - tabBase = alloc.x; - host = (RSyntaxTextArea)getContainer(); - - Rectangle clip = g.getClipBounds(); - // An attempt to speed things up for files with long lines. Note that - // this will actually slow things down a bit for the common case of - // regular-length lines, but it doesn't make a perceivable difference. - clipStart = clip.x; - clipEnd = clipStart + clip.width; - - lineHeight = host.getLineHeight(); - ascent = host.getMaxAscent();//metrics.getAscent(); - int heightAbove = clip.y - alloc.y; - int linesAbove = Math.max(0, heightAbove / lineHeight); - - FoldManager fm = host.getFoldManager(); - linesAbove += fm.getHiddenLineCountAbove(linesAbove, true); - Rectangle lineArea = lineToRect(a, linesAbove); - int y = lineArea.y + ascent; - int x = lineArea.x; - Element map = getElement(); - int lineCount = map.getElementCount(); - - // Whether token styles should always be painted, even in selections - int selStart = host.getSelectionStart(); - int selEnd = host.getSelectionEnd(); - - RSyntaxTextAreaHighlighter h = - (RSyntaxTextAreaHighlighter)host.getHighlighter(); - - Graphics2D g2d = (Graphics2D)g; - Token token; - //System.err.println("Painting lines: " + linesAbove + " to " + (endLine-1)); - - TokenPainter painter = host.getTokenPainter(); - int line = linesAbove; - //int count = 0; - while (y=selEnd || - endOffset alloc.y + alloc.height) { - return host.getLastVisibleOffset(); - } - - // They're asking about a position within the coverage of this view - // vertically. So, we figure out which line the point corresponds to. - // If the line is greater than the number of lines contained, then - // simply use the last line as it represents the last possible place - // we can position to. - else { - - Element map = doc.getDefaultRootElement(); - int lineIndex = Math.abs((y - alloc.y) / lineHeight);//metrics.getHeight() ); -FoldManager fm = host.getFoldManager(); -//System.out.print("--- " + lineIndex); -lineIndex += fm.getHiddenLineCountAbove(lineIndex, true); -//System.out.println(" => " + lineIndex); - if (lineIndex >= map.getElementCount()) { - return host.getLastVisibleOffset(); - } - - Element line = map.getElement(lineIndex); - - // If the point is to the left of the line... - if (x < alloc.x) - return line.getStartOffset(); - - // If the point is to the right of the line... - else if (x > alloc.x + alloc.width) - return line.getEndOffset() - 1; - - else { - // Determine the offset into the text - int p0 = line.getStartOffset(); - Token tokenList = doc.getTokenListForLine(lineIndex); - tabBase = alloc.x; - int offs = tokenList.getListOffset( - (RSyntaxTextArea)getContainer(), - this, tabBase, x); - return offs!=-1 ? offs : p0; - } - - } // End of else. - - } - - - /** - * {@inheritDoc} - */ - public int yForLine(Rectangle alloc, int line) throws BadLocationException { - - //Rectangle lineArea = lineToRect(alloc, lineIndex); - updateMetrics(); - if (metrics != null) { - // NOTE: lineHeight is not initially set here, leading to the - // current line not being highlighted when a document is first - // opened. So, we set it here just in case. - lineHeight = host!=null ? host.getLineHeight() : lineHeight; - FoldManager fm = host.getFoldManager(); - if (!fm.isLineHidden(line)) { - line -= fm.getHiddenLineCountAbove(line); - return alloc.y + line*lineHeight; - } - } - - return -1; - - } - - - /** - * {@inheritDoc} - */ - public int yForLineContaining(Rectangle alloc, int offs) - throws BadLocationException { - Element map = getElement(); - int line = map.getElementIndex(offs); - return yForLine(alloc, line); - } - - -} \ No newline at end of file diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/Theme.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/Theme.java deleted file mode 100644 index 6689c02..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/Theme.java +++ /dev/null @@ -1,870 +0,0 @@ -/* - * 10/30/2011 - * - * Theme.java - A color theme for RSyntaxTextArea. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea; - -import java.awt.Color; -import java.awt.Font; -import java.awt.SystemColor; -import java.io.BufferedInputStream; -import java.io.BufferedOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.PrintWriter; -import java.lang.reflect.Field; - -import javax.swing.UIManager; -import javax.swing.plaf.ColorUIResource; -import javax.swing.text.StyleContext; -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.SAXParser; -import javax.xml.parsers.SAXParserFactory; -import javax.xml.transform.OutputKeys; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.dom.DOMSource; -import javax.xml.transform.stream.StreamResult; -import org.w3c.dom.DOMImplementation; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.xml.sax.Attributes; -import org.xml.sax.InputSource; -import org.xml.sax.SAXException; -import org.xml.sax.SAXParseException; -import org.xml.sax.XMLReader; -import org.xml.sax.helpers.DefaultHandler; - -import org.fife.io.UnicodeWriter; -import org.fife.ui.rtextarea.Gutter; -import org.fife.ui.rtextarea.RTextArea; - - -/** - * A theme is a set of fonts and colors to use to style RSyntaxTextArea. - * Themes are defined in XML files that are validated against - * themes.dtd. This provides applications and other consumers - * with an easy way to style RSyntaxTextArea without having to use the API.

- * - * Sample themes are included in the source tree under the /themes - * folder, but are not a part of the built RSyntaxTextArea jar. Hosting - * applications are free to ship and use these themes as-is, modify them, or - * create their own.

- * - * Note that to save a Theme via {@link #save(OutputStream)}, - * you must currently create a Theme from a text area wrapped in - * an RTextScrollPane, so that the color information for the - * gutter can be retrieved. - * - * @author Robert Futrell - * @version 1.0 - */ -public class Theme { - - private Font baseFont; - private Color bgColor; - private Color caretColor; - private boolean useSelctionFG; - private Color selectionFG; - private Color selectionBG; - private boolean selectionRoundedEdges; - private Color currentLineHighlight; - private boolean fadeCurrentLineHighlight; - private Color marginLineColor; - private Color markAllHighlightColor; - private Color markOccurrencesColor; - private boolean markOccurrencesBorder; - private Color matchedBracketFG; - private Color matchedBracketBG; - private boolean matchedBracketHighlightBoth; - private boolean matchedBracketAnimate; - private Color hyperlinkFG; - private Color[] secondaryLanguages; - - private SyntaxScheme scheme; - - private Color gutterBorderColor; - private Color activeLineRangeColor; - private boolean iconRowHeaderInheritsGutterBG; - private Color lineNumberColor; - private String lineNumberFont; - private int lineNumberFontSize; - private Color foldIndicatorFG; - private Color foldBG; - - - /** - * Private constructor, used when loading from a stream. - * - * @param baseFont The default font to use for any "base font" properties - * not specified in the theme XML. If this is null, - * a default monospaced font will be used. - */ - private Theme(Font baseFont) { - // Optional fields that require a default value. - this.baseFont = baseFont!=null ? baseFont : RTextArea.getDefaultFont(); - secondaryLanguages = new Color[3]; - activeLineRangeColor = Gutter.DEFAULT_ACTIVE_LINE_RANGE_COLOR; - } - - - /** - * Creates a theme from an RSyntaxTextArea. It should be contained in - * an RTextScrollPane to get all gutter color information. - * - * @param textArea The text area. - */ - public Theme(RSyntaxTextArea textArea) { - - baseFont = textArea.getFont(); - bgColor = textArea.getBackground(); - caretColor = textArea.getCaretColor(); - useSelctionFG = textArea.getUseSelectedTextColor(); - selectionFG = textArea.getSelectedTextColor(); - selectionBG = textArea.getSelectionColor(); - selectionRoundedEdges = textArea.getRoundedSelectionEdges(); - currentLineHighlight = textArea.getCurrentLineHighlightColor(); - fadeCurrentLineHighlight = textArea.getFadeCurrentLineHighlight(); - marginLineColor = textArea.getMarginLineColor(); - markAllHighlightColor = textArea.getMarkAllHighlightColor(); - markOccurrencesColor = textArea.getMarkOccurrencesColor(); - markOccurrencesBorder = textArea.getPaintMarkOccurrencesBorder(); - matchedBracketBG = textArea.getMatchedBracketBGColor(); - matchedBracketFG = textArea.getMatchedBracketBorderColor(); - matchedBracketHighlightBoth = textArea.getPaintMatchedBracketPair(); - matchedBracketAnimate = textArea.getAnimateBracketMatching(); - hyperlinkFG = textArea.getHyperlinkForeground(); - - int count = textArea.getSecondaryLanguageCount(); - secondaryLanguages = new Color[count]; - for (int i=0; i0 ? lineNumberFontSize : - baseFont.getSize(); - Font font = getFont(fontName, Font.PLAIN, fontSize); - gutter.setLineNumberFont(font); - gutter.setFoldIndicatorForeground(foldIndicatorFG); - gutter.setFoldBackground(foldBG); - } - - } - - - private static final String colorToString(Color c) { - int color = c.getRGB() & 0xffffff; - String str = Integer.toHexString(color); - while (str.length()<6) { - str = "0" + str; - } - return str; - } - - - /** - * Returns the default selection background color to use if "default" is - * specified in a theme. - * - * @return The default selection background to use. - * @see #getDefaultSelectionFG() - */ - private static final Color getDefaultBG() { - Color c = UIManager.getColor("nimbusLightBackground"); - if (c==null) { - // Don't search for "text", as Nimbus defines that as the text - // component "text" color, but Basic LAFs use it for text - // component backgrounds! Nimbus also defines TextArea.background - // as too dark, not what it actually uses for text area backgrounds - c = UIManager.getColor("TextArea.background"); - if (c==null) { - c = new ColorUIResource(SystemColor.text); - } - } - return c; - } - - - /** - * Returns the default selection background color to use if "default" is - * specified in a theme. - * - * @return The default selection background to use. - * @see #getDefaultSelectionFG() - */ - private static final Color getDefaultSelectionBG() { - Color c = UIManager.getColor("TextArea.selectionBackground"); - if (c==null) { - c = UIManager.getColor("textHighlight"); - if (c==null) { - c = UIManager.getColor("nimbusSelectionBackground"); - if (c==null) { - c = new ColorUIResource(SystemColor.textHighlight); - } - } - } - return c; - } - - - /** - * Returns the default "selected text" color to use if "default" is - * specified in a theme. - * - * @return The default selection foreground color to use. - * @see #getDefaultSelectionBG() - */ - private static Color getDefaultSelectionFG() { - Color c = UIManager.getColor("TextArea.selectionForeground"); - if (c==null) { - c = UIManager.getColor("textHighlightText"); - if (c==null) { - c = UIManager.getColor("nimbusSelectedText"); - if (c==null) { - c = new ColorUIResource(SystemColor.textHighlightText); - } - } - } - return c; - } - - - /** - * Returns the specified font. - * - * @param family The font family. - * @param style The style of font. - * @param size The size of the font. - * @return The font. - */ - private static Font getFont(String family, int style, int size) { - // Use StyleContext to get a composite font for Asian glyphs. - StyleContext sc = StyleContext.getDefaultStyleContext(); - return sc.getFont(family, style, size); - } - - - /** - * Loads a theme. - * - * @param in The input stream to read from. This will be closed when this - * method returns. - * @return The theme. - * @throws IOException If an IO error occurs. - * @see #save(OutputStream) - */ - public static Theme load(InputStream in) throws IOException { - return load(in, null); - } - - - /** - * Loads a theme. - * - * @param in The input stream to read from. This will be closed when this - * method returns. - * @param baseFont The default font to use for any "base font" properties - * not specified in the theme XML. If this is null, - * a default monospaced font will be used. - * @return The theme. - * @throws IOException If an IO error occurs. - * @see #save(OutputStream) - */ - public static Theme load(InputStream in, Font baseFont) throws IOException { - - Theme theme = new Theme(baseFont); - - BufferedInputStream bin = new BufferedInputStream(in); - try { - XmlHandler.load(theme, bin); - } finally { - bin.close(); - } - - return theme; - - } - - - /** - * Saves this theme to an output stream. - * - * @param out The output stream to write to. - * @throws IOException If an IO error occurs. - * @see #load(InputStream) - */ - public void save(OutputStream out) throws IOException { - - BufferedOutputStream bout = new BufferedOutputStream(out); - try { - - DocumentBuilder db = DocumentBuilderFactory.newInstance(). - newDocumentBuilder(); - DOMImplementation impl = db.getDOMImplementation(); - - Document doc = impl.createDocument(null, "RSyntaxTheme", null); - Element root = doc.getDocumentElement(); - root.setAttribute("version", "1.0"); - - Element elem = doc.createElement("baseFont"); - if (!baseFont.getFamily().equals( - RSyntaxTextArea.getDefaultFont().getFamily())) { - elem.setAttribute("family", baseFont.getFamily()); - } - elem.setAttribute("size", Integer.toString(baseFont.getSize())); - root.appendChild(elem); - - elem = doc.createElement("background"); - elem.setAttribute("color", colorToString(bgColor)); - root.appendChild(elem); - - elem = doc.createElement("caret"); - elem.setAttribute("color", colorToString(caretColor)); - root.appendChild(elem); - - elem = doc.createElement("selection"); - elem.setAttribute("useFG", Boolean.toString(useSelctionFG)); - elem.setAttribute("fg", colorToString(selectionFG)); - elem.setAttribute("bg", colorToString(selectionBG)); - elem.setAttribute("roundedEdges", Boolean.toString(selectionRoundedEdges)); - root.appendChild(elem); - - elem = doc.createElement("currentLineHighlight"); - elem.setAttribute("color", colorToString(currentLineHighlight)); - elem.setAttribute("fade", Boolean.toString(fadeCurrentLineHighlight)); - root.appendChild(elem); - - elem = doc.createElement("marginLine"); - elem.setAttribute("fg", colorToString(marginLineColor)); - root.appendChild(elem); - - elem = doc.createElement("markAllHighlight"); - elem.setAttribute("color", colorToString(markAllHighlightColor)); - root.appendChild(elem); - - elem = doc.createElement("markOccurrencesHighlight"); - elem.setAttribute("color", colorToString(markOccurrencesColor)); - elem.setAttribute("border", Boolean.toString(markOccurrencesBorder)); - root.appendChild(elem); - - elem = doc.createElement("matchedBracket"); - elem.setAttribute("fg", colorToString(matchedBracketFG)); - elem.setAttribute("bg", colorToString(matchedBracketBG)); - elem.setAttribute("highlightBoth", Boolean.toString(matchedBracketHighlightBoth)); - elem.setAttribute("animate", Boolean.toString(matchedBracketAnimate)); - root.appendChild(elem); - - elem = doc.createElement("hyperlinks"); - elem.setAttribute("fg", colorToString(hyperlinkFG)); - root.appendChild(elem); - - elem = doc.createElement("secondaryLanguages"); - for (int i=0; i0) { - elem.setAttribute("fontSize", - Integer.toString(lineNumberFontSize)); - } - root.appendChild(elem); - - elem = doc.createElement("foldIndicator"); - elem.setAttribute("fg", colorToString(foldIndicatorFG)); - elem.setAttribute("iconBg", colorToString(foldBG)); - root.appendChild(elem); - - elem = doc.createElement("iconRowHeader"); - elem.setAttribute("activeLineRange", colorToString(activeLineRangeColor)); - elem.setAttribute("inheritsGutterBG", Boolean.toString(iconRowHeaderInheritsGutterBG)); - root.appendChild(elem); - - elem = doc.createElement("tokenStyles"); - Field[] fields = TokenTypes.class.getFields(); - for (int i=0; i - * "$00ff00" - * "00ff00" - * - * will return new Color(0, 255, 0). - * - * @param s The string to evaluate. - * @return The color. - */ - private static final Color stringToColor(String s) { - return stringToColor(s, null); - } - - - /** - * Returns the color represented by a string. The input is expected to - * be a 6-digit hex string, optionally prefixed by a '$'. For example, - * either of the following: - *

-	 * "$00ff00"
-	 * "00ff00"
-	 * 
- * will return new Color(0, 255, 0). - * - * @param s The string to evaluate. - * @param defaultVal The color to use if s is - * "default". - * @return The color. - */ - private static final Color stringToColor(String s, Color defaultVal) { - if (s==null || "default".equalsIgnoreCase(s)) { - return defaultVal; - } - if (s.length()==6 || s.length()==7) { - if (s.charAt(0)=='$') { - s = s.substring(1); - } - return new Color(Integer.parseInt(s, 16)); - } - return null; - } - - - /** - * Loads a SyntaxScheme from an XML file. - */ - private static class XmlHandler extends DefaultHandler { - - private Theme theme; - - @Override - public void error(SAXParseException e) throws SAXException { - throw e; - } - - @Override - public void fatalError(SAXParseException e) throws SAXException { - throw e; - } - - public static void load(Theme theme, InputStream in) throws IOException { - SAXParserFactory spf = SAXParserFactory.newInstance(); - spf.setValidating(true); - try { - SAXParser parser = spf.newSAXParser(); - XMLReader reader = parser.getXMLReader(); - XmlHandler handler = new XmlHandler(); - handler.theme = theme; - reader.setEntityResolver(handler); - reader.setContentHandler(handler); - reader.setDTDHandler(handler); - reader.setErrorHandler(handler); - InputSource is = new InputSource(in); - is.setEncoding("UTF-8"); - reader.parse(is); - } catch (/*SAX|ParserConfiguration*/Exception se) { - se.printStackTrace(); - throw new IOException(se.toString()); - } - } - - private static final int parseInt(Attributes attrs, String attr, - int def) { - int value = def; - String temp = attrs.getValue(attr); - if (temp != null) { - try { - value = Integer.parseInt(temp); - } catch (NumberFormatException nfe) { - nfe.printStackTrace(); - } - } - return value; - } - - @Override - public InputSource resolveEntity(String publicID, - String systemID) throws SAXException { - return new InputSource(getClass(). - getResourceAsStream("themes/theme.dtd")); - } - - @Override - public void startElement(String uri, String localName, String qName, - Attributes attrs) { - - if ("background".equals(qName)) { - - String color = attrs.getValue("color"); - if (color!=null) { - theme.bgColor = stringToColor(color, getDefaultBG()); - } - else { - String img = attrs.getValue("image"); - if (img!=null) { - throw new IllegalArgumentException("Not yet implemented"); - } - } - } - - // The base font to use in the editor. - else if ("baseFont".equals(qName)) { - int size = theme.baseFont.getSize(); - String sizeStr = attrs.getValue("size"); - if (sizeStr!=null) { - size = Integer.parseInt(sizeStr); - } - String family = attrs.getValue("family"); - if (family!=null) { - theme.baseFont = getFont(family, Font.PLAIN, size); - } - else if (sizeStr!=null) { - // No family specified, keep original family - theme.baseFont = theme.baseFont.deriveFont(size*1f); - } - } - - else if ("caret".equals(qName)) { - String color = attrs.getValue("color"); - theme.caretColor = stringToColor(color); - } - - else if ("currentLineHighlight".equals(qName)) { - String color = attrs.getValue("color"); - theme.currentLineHighlight = stringToColor(color); - String fadeStr = attrs.getValue("fade"); - boolean fade = Boolean.valueOf(fadeStr).booleanValue(); - theme.fadeCurrentLineHighlight = fade; - } - - else if ("foldIndicator".equals(qName)) { - String color = attrs.getValue("fg"); - theme.foldIndicatorFG = stringToColor(color); - color = attrs.getValue("iconBg"); - theme.foldBG = stringToColor(color); - } - - else if ("gutterBorder".equals(qName)) { - String color = attrs.getValue("color"); - theme.gutterBorderColor = stringToColor(color); - } - - else if ("iconRowHeader".equals(qName)) { - String color = attrs.getValue("activeLineRange"); - theme.activeLineRangeColor = stringToColor(color); - String inheritBGStr = attrs.getValue("inheritsGutterBG"); - theme.iconRowHeaderInheritsGutterBG = - inheritBGStr==null ? false : Boolean.valueOf(inheritBGStr); - } - - else if ("lineNumbers".equals(qName)) { - String color = attrs.getValue("fg"); - theme.lineNumberColor = stringToColor(color); - theme.lineNumberFont = attrs.getValue("fontFamily"); - theme.lineNumberFontSize = parseInt(attrs, "fontSize", -1); - } - - else if ("marginLine".equals(qName)) { - String color = attrs.getValue("fg"); - theme.marginLineColor = stringToColor(color); - } - - else if ("markAllHighlight".equals(qName)) { - String color = attrs.getValue("color"); - theme.markAllHighlightColor = stringToColor(color); - } - - else if ("markOccurrencesHighlight".equals(qName)) { - String color = attrs.getValue("color"); - theme.markOccurrencesColor = stringToColor(color); - String border = attrs.getValue("border"); - theme.markOccurrencesBorder = Boolean.valueOf(border).booleanValue(); - } - - else if ("matchedBracket".equals(qName)) { - String fg = attrs.getValue("fg"); - theme.matchedBracketFG = stringToColor(fg); - String bg = attrs.getValue("bg"); - theme.matchedBracketBG = stringToColor(bg); - String highlightBoth = attrs.getValue("highlightBoth"); - theme.matchedBracketHighlightBoth = Boolean.valueOf(highlightBoth).booleanValue(); - String animate = attrs.getValue("animate"); - theme.matchedBracketAnimate = Boolean.valueOf(animate).booleanValue(); - } - - else if ("hyperlinks".equals(qName)) { - String fg = attrs.getValue("fg"); - theme.hyperlinkFG = stringToColor(fg); - } - - else if ("language".equals(qName)) { - String indexStr = attrs.getValue("index"); - int index = Integer.parseInt(indexStr) - 1; - if (theme.secondaryLanguages.length>index) { // Sanity - Color bg = stringToColor(attrs.getValue("bg")); - theme.secondaryLanguages[index] = bg; - } - } - - else if ("selection".equals(qName)) { - String useStr = attrs.getValue("useFG"); - theme.useSelctionFG = Boolean.valueOf(useStr).booleanValue(); - String color = attrs.getValue("fg"); - theme.selectionFG = stringToColor(color, - getDefaultSelectionFG()); - //System.out.println(theme.selectionFG); - color = attrs.getValue("bg"); - theme.selectionBG = stringToColor(color, - getDefaultSelectionBG()); - String roundedStr = attrs.getValue("roundedEdges"); - theme.selectionRoundedEdges = Boolean.valueOf(roundedStr). - booleanValue(); - } - - // Start of the syntax scheme definition - else if ("tokenStyles".equals(qName)) { - theme.scheme = new SyntaxScheme(theme.baseFont, false); - } - - // A style in the syntax scheme - else if ("style".equals(qName)) { - - String type = attrs.getValue("token"); - Field field = null; - try { - field = Token.class.getField(type); - } catch (RuntimeException re) { - throw re; // FindBugs - } catch (Exception e) { - System.err.println("Invalid token type: " + type); - return; - } - - if (field.getType()==int.class) { - - int index = 0; - try { - index = field.getInt(theme.scheme); - } catch (IllegalArgumentException e) { - e.printStackTrace(); - return; - } catch (IllegalAccessException e) { - e.printStackTrace(); - return; - } - - String fgStr = attrs.getValue("fg"); - Color fg = stringToColor(fgStr); - theme.scheme.getStyle(index).foreground = fg; - - String bgStr = attrs.getValue("bg"); - Color bg = stringToColor(bgStr); - theme.scheme.getStyle(index).background = bg; - - Font font = theme.baseFont; - String familyName = attrs.getValue("fontFamily"); - if (familyName!=null) { - font = getFont(familyName, font.getStyle(), - font.getSize()); - } - String sizeStr = attrs.getValue("fontSize"); - if (sizeStr!=null) { - try { - float size = Float.parseFloat(sizeStr); - size = Math.max(size, 1f); - font = font.deriveFont(size); - } catch (NumberFormatException nfe) { - nfe.printStackTrace(); - } - } - theme.scheme.getStyle(index).font = font; - - boolean styleSpecified = false; - boolean bold = false; - boolean italic = false; - String boldStr = attrs.getValue("bold"); - if (boldStr!=null) { - bold = Boolean.valueOf(boldStr).booleanValue(); - styleSpecified = true; - } - String italicStr = attrs.getValue("italic"); - if (italicStr!=null) { - italic = Boolean.valueOf(italicStr).booleanValue(); - styleSpecified = true; - } - if (styleSpecified) { - int style = 0; - if (bold) { style |= Font.BOLD; } - if (italic) { style |= Font.ITALIC; } - Font orig = theme.scheme.getStyle(index).font; - theme.scheme.getStyle(index).font = - orig.deriveFont(style); - } - - String ulineStr = attrs.getValue("underline"); - if (ulineStr!=null) { - boolean uline= Boolean.valueOf(ulineStr).booleanValue(); - theme.scheme.getStyle(index).underline = uline; - } - - } - - } - - } - - @Override - public void warning(SAXParseException e) throws SAXException { - throw e; - } - - } - - -} \ No newline at end of file diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/Token.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/Token.java deleted file mode 100644 index 48fb45c..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/Token.java +++ /dev/null @@ -1,566 +0,0 @@ -/* - * 02/21/2004 - * - * Token.java - A token used in syntax highlighting. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea; - -import java.awt.Rectangle; -import javax.swing.text.TabExpander; - - -/** - * A generic token that functions as a node in a linked list of syntax - * highlighted tokens for some language.

- * - * A Token is a piece of text representing some logical token in - * source code for a programming language. For example, the line of C code:

- *

- * int i = 0;
- * 
- * would be broken into 8 Tokens: the first representing - * int, the second whitespace, the third i, the fourth - * whitespace, the fifth =, etc.

- * - * Note: The tokens returned by {@link RSyntaxDocument}s are pooled and - * should always be treated as immutable. Modifying tokens you did not create - * yourself can and will result in rendering issues and/or runtime exceptions. - * You have been warned! - * - * @author Robert Futrell - * @version 0.3 - */ -public interface Token extends TokenTypes { - - /** - * Appends HTML code for painting this token, using the given text area's - * color scheme. - * - * @param sb The buffer to append to. - * @param textArea The text area whose color scheme to use. - * @param fontFamily Whether to include the font family in the HTML for - * this token. You can pass false for this parameter - * if, for example, you are making all your HTML be monospaced, - * and don't want any crazy fonts being used in the editor to be - * reflected in your HTML. - * @return The buffer appended to. - * @see #getHTMLRepresentation(RSyntaxTextArea) - */ - public StringBuilder appendHTMLRepresentation(StringBuilder sb, - RSyntaxTextArea textArea, - boolean fontFamily); - - - /** - * Appends HTML code for painting this token, using the given text area's - * color scheme. - * - * @param sb The buffer to append to. - * @param textArea The text area whose color scheme to use. - * @param fontFamily Whether to include the font family in the HTML for - * this token. You can pass false for this parameter - * if, for example, you are making all your HTML be monospaced, - * and don't want any crazy fonts being used in the editor to be - * reflected in your HTML. - * @param tabsToSpaces Whether to convert tabs into spaces. - * @return The buffer appended to. - * @see #getHTMLRepresentation(RSyntaxTextArea) - */ - public StringBuilder appendHTMLRepresentation(StringBuilder sb, - RSyntaxTextArea textArea, boolean fontFamily, - boolean tabsToSpaces); - - - /** - * Returns the character at the specified offset in the token. - * - * @param index The index. This should be in the range - * 0-({@link #length()}-1). - * @return The character. - * @see #length() - */ - public char charAt(int index); - - - /** - * Returns whether the token straddles the specified position in the - * document. - * - * @param pos The position in the document to check. - * @return Whether the specified position is straddled by this token. - */ - public boolean containsPosition(int pos); - - - /** - * Returns the position in the token's internal char array corresponding - * to the specified document position.

- * Note that this method does NOT do any bounds checking; you can pass in - * a document position that does not correspond to a position in this - * token, and you will not receive an Exception or any other notification; - * it is up to the caller to ensure valid input. - * - * @param pos A position in the document that is represented by this token. - * @return The corresponding token position >= textOffset - * and < textOffset+textCount. - * @see #tokenToDocument - */ - public int documentToToken(int pos); - - - /** - * Returns whether this token's lexeme ends with the specified characters. - * - * @param ch The characters. - * @return Whether this token's lexeme ends with the specified characters. - * @see #startsWith(char[]) - */ - public boolean endsWith(char[] ch); - - - /** - * Returns the end offset of this token in the document (exclusive). In - * other words, the token ranges from - * [getOffset(), getEndOffset()). - * - * @return The end offset of this token. - * @see #getOffset() - */ - public int getEndOffset(); - - - /** - * Returns a String containing HTML code for painting this - * token, using the given text area's color scheme. - * - * @param textArea The text area whose color scheme to use. - * @return The HTML representation of the token. - * @see #appendHTMLRepresentation(StringBuilder, RSyntaxTextArea, boolean) - */ - public String getHTMLRepresentation(RSyntaxTextArea textArea); - - - /** - * Returns the language index of this token. - * - * @return The language index. A value of 0 denotes the - * "main" language, any positive value denotes a specific secondary - * language. - * @see #setLanguageIndex(int) - */ - public int getLanguageIndex(); - - - /** - * Returns the last token in this list that is not whitespace or a - * comment. - * - * @return The last non-comment, non-whitespace token, or null - * if there isn't one. - */ - public Token getLastNonCommentNonWhitespaceToken(); - - - /** - * Returns the last paintable token in this token list, or null - * if there is no paintable token. - * - * @return The last paintable token in this token list. - */ - public Token getLastPaintableToken(); - - - /** - * Returns the text of this token, as a string.

- * - * Note that this method isn't used much by the - * ryntaxtextarea package internally, as it tries to limit - * memory allocation. - * - * @return The text of this token. - */ - public String getLexeme(); - - - /** - * Determines the offset into this token list (i.e., into the - * document) that covers pixel location x if the token list - * starts at pixel location x0

. - * This method will return the document position "closest" to the - * x-coordinate (i.e., if they click on the "right-half" of the - * w in awe, the caret will be placed in - * between the w and e; similarly, clicking on - * the left-half places the caret between the a and - * w). This makes it useful for methods such as - * viewToModel found in javax.swing.text.View - * subclasses. - * - * @param textArea The text area from which the token list was derived. - * @param e How to expand tabs. - * @param x0 The pixel x-location that is the beginning of - * tokenList. - * @param x The pixel-position for which you want to get the corresponding - * offset. - * @return The position (in the document, NOT into the token list!) that - * covers the pixel location. If tokenList is - * null or has type Token.NULL, then - * -1 is returned; the caller should recognize this and - * return the actual end position of the (empty) line. - */ - public int getListOffset(RSyntaxTextArea textArea, TabExpander e, - float x0, float x); - - - /** - * Returns the token after this one in the linked list. - * - * @return The next token. - */ - public Token getNextToken(); - - - /** - * Returns the offset into the document at which this token resides. - * - * @return The offset into the document. - * @see #getEndOffset() - */ - public int getOffset(); - - - /** - * Returns the position in the document that represents the last character - * in the token that will fit into endBeforeX-startX pixels. - * For example, if you're using a monospaced 8-pixel-per-character font, - * have the token "while" and startX is 0 and - * endBeforeX is 30, this method will return the - * document position of the "i" in "while", because the "i" ends at pixel - * 24, while the "l" ends at 32. If not even the - * first character fits in endBeforeX-startX, the first - * character's position is still returned so calling methods don't go into - * infinite loops. - * - * @param textArea The text area in which this token is being painted. - * @param e How to expand tabs. - * @param startX The x-coordinate at which the token will be painted. This - * is needed because of tabs. - * @param endBeforeX The x-coordinate for which you want to find the last - * character of t which comes before it. - * @return The last document position that will fit in the specified amount - * of pixels. - */ - /* - * @see #getTokenListOffsetBeforeX - * FIXME: This method does not compute correctly! It needs to be abstract - * and implemented by subclasses. - */ - public int getOffsetBeforeX(RSyntaxTextArea textArea, TabExpander e, - float startX, float endBeforeX); - - - /** - * Returns the character array backing the lexeme of this token. This - * value should be treated as read-only. - * - * @return A character array containing the lexeme of this token. - * @see #getTextOffset() - * @see #length() - */ - public char[] getTextArray(); - - - /** - * Returns the offset into the character array of the lexeme in - * {@link #getTextArray()}. - * - * @return The offset of the lexeme in the character array. - * @see #getTextArray() - */ - public int getTextOffset(); - - - /** - * Returns the type of this token. - * - * @return The type of this token. - * @see TokenTypes - * @see #setType(int) - */ - public int getType(); - - - /** - * Returns the width of this token given the specified parameters. - * - * @param textArea The text area in which the token is being painted. - * @param e Describes how to expand tabs. This parameter cannot be - * null. - * @param x0 The pixel-location at which the token begins. This is needed - * because of tabs. - * @return The width of the token, in pixels. - * @see #getWidthUpTo - */ - public float getWidth(RSyntaxTextArea textArea, TabExpander e, float x0); - - - /** - * Returns the width of a specified number of characters in this token. - * For example, for the token "while", specifying a value of 3 - * here returns the width of the "whi" portion of the token. - * - * @param numChars The number of characters for which to get the width. - * @param textArea The text area in which the token is being painted. - * @param e How to expand tabs. This value cannot be null. - * @param x0 The pixel-location at which this token begins. This is needed - * because of tabs. - * @return The width of the specified number of characters in this token. - * @see #getWidth - */ - public float getWidthUpTo(int numChars, RSyntaxTextArea textArea, - TabExpander e, float x0); - - - /** - * Returns whether this token's lexeme matches a specific character array. - * - * @param lexeme The lexeme to check for. - * @return Whether this token has that lexeme. - * @see #is(int, char[]) - * @see #is(int, String) - * @see #isSingleChar(int, char) - * @see #startsWith(char[]) - */ - public boolean is(char[] lexeme); - - - /** - * Returns whether this token is of the specified type, with the specified - * lexeme.

- * This method is preferred over the other overload in performance-critical - * code where this operation may be called frequently, since it does not - * involve any String allocations. - * - * @param type The type to check for. - * @param lexeme The lexeme to check for. - * @return Whether this token has that type and lexeme. - * @see #is(int, String) - * @see #is(char[]) - * @see #isSingleChar(int, char) - * @see #startsWith(char[]) - */ - public boolean is(int type, char[] lexeme); - - - /** - * Returns whether this token is of the specified type, with the specified - * lexeme.

- * The other overload of this method is preferred over this one in - * performance-critical code, as this one involves a String allocation - * while the other does not. - * - * @param type The type to check for. - * @param lexeme The lexeme to check for. - * @return Whether this token has that type and lexeme. - * @see #is(int, char[]) - * @see #isSingleChar(int, char) - * @see #startsWith(char[]) - */ - public boolean is(int type, String lexeme); - - - /** - * Returns whether this token is a comment. - * - * @return Whether this token is a comment. - * @see #isWhitespace() - * @see #isCommentOrWhitespace() - */ - public boolean isComment(); - - - /** - * Returns whether this token is a comment or whitespace. - * - * @return Whether this token is a comment or whitespace. - * @see #isComment() - * @see #isWhitespace() - */ - public boolean isCommentOrWhitespace(); - - - /** - * Returns whether this token is a hyperlink. - * - * @return Whether this token is a hyperlink. - * @see #setHyperlink(boolean) - */ - public boolean isHyperlink(); - - - /** - * Returns whether this token is an identifier. - * - * @return Whether this token is an identifier. - */ - public boolean isIdentifier(); - - - /** - * Returns whether this token is a {@link #SEPARATOR} representing a single - * left curly brace. - * - * @return Whether this token is a left curly brace. - * @see #isRightCurly() - */ - public boolean isLeftCurly(); - - - /** - * Returns whether this token is a {@link #SEPARATOR} representing a single - * right curly brace. - * - * @return Whether this token is a right curly brace. - * @see #isLeftCurly() - */ - public boolean isRightCurly(); - - - /** - * Returns whether or not this token is "paintable;" i.e., whether or not - * the type of this token is one such that it has an associated syntax - * style. What this boils down to is whether the token type is greater - * than Token.NULL. - * - * @return Whether or not this token is paintable. - */ - public boolean isPaintable(); - - - /** - * Returns whether this token is the specified single character. - * - * @param ch The character to check for. - * @return Whether this token's lexeme is the single character specified. - * @see #isSingleChar(int, char) - */ - public boolean isSingleChar(char ch); - - - /** - * Returns whether this token is the specified single character, and of a - * specific type. - * - * @param type The token type. - * @param ch The character to check for. - * @return Whether this token is of the specified type, and with a lexeme - * Equaling the single character specified. - * @see #isSingleChar(char) - */ - public boolean isSingleChar(int type, char ch); - - - /** - * Returns whether or not this token is whitespace. - * - * @return true iff this token is whitespace. - * @see #isComment() - * @see #isCommentOrWhitespace() - */ - public boolean isWhitespace(); - - - /** - * Returns the length of this token. - * - * @return The length of this token. - * @see #getOffset() - */ - public int length(); - - - /** - * Returns the bounding box for the specified document location. The - * location must be in the specified token list; if it isn't, - * null is returned. - * - * @param textArea The text area from which the token list was derived. - * @param e How to expand tabs. - * @param pos The position in the document for which to get the bounding - * box in the view. - * @param x0 The pixel x-location that is the beginning of - * tokenList. - * @param rect The rectangle in which we'll be returning the results. This - * object is reused to keep from frequent memory allocations. - * @return The bounding box for the specified position in the model. - */ - public Rectangle listOffsetToView(RSyntaxTextArea textArea, TabExpander e, - int pos, int x0, Rectangle rect); - - - /** - * Sets whether this token is a hyperlink. - * - * @param hyperlink Whether this token is a hyperlink. - * @see #isHyperlink() - */ - public void setHyperlink(boolean hyperlink); - - - /** - * Sets the language index for this token. If this value is positive, it - * denotes a specific "secondary" language this token represents (such as - * JavaScript code or CSS embedded in an HTML file). If this value is - * 0, this token is in the "main" language being edited. - * Negative values are invalid and treated as 0. - * - * @param languageIndex The new language index. A value of - * 0 denotes the "main" language, any positive value - * denotes a specific secondary language. Negative values will - * be treated as 0. - * @see #getLanguageIndex() - */ - public void setLanguageIndex(int languageIndex); - - - /** - * Sets the type of this token. - * - * @param type The new token type. - * @see TokenTypes - * @see #getType() - */ - public void setType(int type); - - - /** - * Returns whether this token starts with the specified characters. - * - * @param chars The characters. - * @return Whether this token starts with those characters. - * @see #endsWith(char[]) - * @see #is(int, char[]) - */ - public boolean startsWith(char[] chars); - - - /** - * Returns the position in the document corresponding to the specified - * position in this token's internal char array (textOffset - - * textOffset+textCount-1).

- * Note that this method does NOT do any bounds checking; you can pass in - * an invalid token position, and you will not receive an Exception or any - * other indication that the returned document position is invalid. It is - * up to the user to ensure valid input. - * - * @param pos A position in the token's internal char array - * (textOffset - textOffset+textCount). - * @return The corresponding position in the document. - * @see #documentToToken(int) - */ - public int tokenToDocument(int pos); - - -} \ No newline at end of file diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/TokenPainter.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/TokenPainter.java deleted file mode 100644 index 89518d7..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/TokenPainter.java +++ /dev/null @@ -1,119 +0,0 @@ -/* - * 03/16/2013 - * - * TokenPainter - Renders tokens in an instance of RSyntaxTextArea. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea; - -import java.awt.Graphics2D; -import javax.swing.text.TabExpander; - - -/** - * Renders tokens in an instance of {@link RSyntaxTextArea}. One instance - * may render tokens "regularly," another may render visible whitespace, for - * example. - * - * @author Robert Futrell - * @version 1.0 - */ -interface TokenPainter { - - - /** - * Paints this token. - * - * @param token The token to render. - * @param g The graphics context in which to paint. - * @param x The x-coordinate at which to paint. - * @param y The y-coordinate at which to paint. - * @param host The text area this token is in. - * @param e How to expand tabs. - * @return The x-coordinate representing the end of the painted text. - */ - public float paint(Token token, Graphics2D g, float x, float y, - RSyntaxTextArea host, TabExpander e); - - - /** - * Paints this token. - * - * @param token The token to render. - * @param g The graphics context in which to paint. - * @param x The x-coordinate at which to paint. - * @param y The y-coordinate at which to paint. - * @param host The text area this token is in. - * @param e How to expand tabs. - * @param clipStart The left boundary of the clip rectangle in which we're - * painting. This optimizes painting by allowing us to not paint - * paint when this token is "to the left" of the clip rectangle. - * @return The x-coordinate representing the end of the painted text. - */ - public float paint(Token token, Graphics2D g, float x, float y, - RSyntaxTextArea host, TabExpander e, float clipStart); - - - /** - * Paints this token. - * - * @param token The token to render. - * @param g The graphics context in which to paint. - * @param x The x-coordinate at which to paint. - * @param y The y-coordinate at which to paint. - * @param host The text area this token is in. - * @param e How to expand tabs. - * @param clipStart The left boundary of the clip rectangle in which we're - * painting. This optimizes painting by allowing us to not paint - * paint when this token is "to the left" of the clip rectangle. - * @param paintBG Whether to paint the background. - * @return The x-coordinate representing the end of the painted text. - */ - public float paint(Token token, Graphics2D g, float x, float y, - RSyntaxTextArea host, TabExpander e, float clipStart, - boolean paintBG); - - - /** - * Paints this token as it should appear in a selected region of text - * (assuming painting with a selection-foreground color is enabled in the - * parent RSyntaxTextArea). - * - * @param token The token to render. - * @param g The graphics context in which to paint. - * @param x The x-coordinate at which to paint. - * @param y The y-coordinate at which to paint. - * @param host The text area this token is in. - * @param e How to expand tabs. - * @param useSTC Whether to use the text area's "selected text color." - * @return The x-coordinate representing the end of the painted text. - */ - public float paintSelected(Token token, Graphics2D g, float x, float y, - RSyntaxTextArea host, TabExpander e, boolean useSTC); - - - /** - * Paints this token as it should appear in a selected region of text - * (assuming painting with a selection-foreground color is enabled in the - * parent RSyntaxTextArea). - * - * @param token The token to render. - * @param g The graphics context in which to paint. - * @param x The x-coordinate at which to paint. - * @param y The y-coordinate at which to paint. - * @param host The text area this token is in. - * @param e How to expand tabs. - * @param clipStart The left boundary of the clip rectangle in which we're - * painting. This optimizes painting by allowing us to not paint - * paint when this token is "to the left" of the clip rectangle. - * @param useSTC Whether to use the text area's "selected text color." - * @return The x-coordinate representing the end of the painted text. - */ - public float paintSelected(Token token, Graphics2D g, float x, float y, - RSyntaxTextArea host, TabExpander e, float clipStart, - boolean useSTC); - - -} \ No newline at end of file diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/TokenUtils.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/TokenUtils.java deleted file mode 100644 index 11616e1..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/TokenUtils.java +++ /dev/null @@ -1,166 +0,0 @@ -package org.fife.ui.rsyntaxtextarea; - -import javax.swing.text.TabExpander; - - -/** - * Utility methods for dealing with tokens. - * - * @author Robert Futrell - * @version 1.0 - */ -public class TokenUtils { - - - private TokenUtils() {} - - - /** - * Modifies the passed-in token list to start at the specified offset. - * For example, if the token list covered positions 20-60 in the document - * (inclusive) like so: - *

-	 *   [token1] -> [token2] -> [token3] -> [token4]
-	 *   20     30   31     40   41     50   51     60
-	 * 
- * and you used this method to make the token list start at position 44, - * then the token list would be modified to be the following: - *
-	 *   [part-of-old-token3] -> [token4]
-	 *   44                 50   51     60
-	 * 
- * Tokens that come before the specified position are forever lost, and - * the token containing that position is made to begin at that position if - * necessary. All token types remain the same as they were originally.

- * - * This method can be useful if you are only interested in part of a token - * list (i.e., the line it represents), but you don't want to modify the - * token list yourself. - * - * @param tokenList The list to make start at the specified position. - * This parameter is modified. - * @param pos The position at which the new token list is to start. If - * this position is not in the passed-in token list, - * returned token list will either be null or the - * unpaintable token(s) at the end of the passed-in token list. - * @param e How to expand tabs. - * @param textArea The text area from which the token list came. - * @param x0 The initial x-pixel position of the old token list. - * @return Information about the "sub" token list. This will be - * null if pos was not a valid offset - * into the token list. - * @see #getSubTokenList(Token, int, TabExpander, RSyntaxTextArea, float, TokenImpl) - */ - public static TokenSubList getSubTokenList(Token tokenList, int pos, - TabExpander e, - final RSyntaxTextArea textArea, - float x0) { - return getSubTokenList(tokenList, pos, e, textArea, x0, null); - } - - - /** - * Modifies the passed-in token list to start at the specified offset. - * For example, if the token list covered positions 20-60 in the document - * (inclusive) like so: - *

-	 *   [token1] -> [token2] -> [token3] -> [token4]
-	 *   20     30   31     40   41     50   51     60
-	 * 
- * and you used this method to make the token list start at position 44, - * then the token list would be modified to be the following: - *
-	 *   [part-of-old-token3] -> [token4]
-	 *   44                 50   51     60
-	 * 
- * Tokens that come before the specified position are forever lost, and - * the token containing that position is made to begin at that position if - * necessary. All token types remain the same as they were originally.

- * - * This method can be useful if you are only interested in part of a token - * list (i.e., the line it represents), but you don't want to modify the - * token list yourself. - * - * @param tokenList The list to make start at the specified position. - * This parameter is modified. - * @param pos The position at which the new token list is to start. If - * this position is not in the passed-in token list, - * returned token list will either be null or the - * unpaintable token(s) at the end of the passed-in token list. - * @param e How to expand tabs. - * @param textArea The text area from which the token list came. - * @param x0 The initial x-pixel position of the old token list. - * @param tempToken A temporary token to use when creating the token list - * result. This may be null but callers can pass in - * a "buffer" token for performance if desired. - * @return Information about the "sub" token list. This will be - * null if pos was not a valid offset - * into the token list. - * @see #getSubTokenList(Token, int, TabExpander, RSyntaxTextArea, float) - */ - public static TokenSubList getSubTokenList(Token tokenList, int pos, - TabExpander e, - final RSyntaxTextArea textArea, - float x0, - TokenImpl tempToken) { - - if (tempToken==null) { - tempToken = new TokenImpl(); - } - Token t = tokenList; - - // Loop through the token list until you find the one that contains - // pos. Remember the cumulative width of all of these tokens. - while (t!=null && t.isPaintable() && !t.containsPosition(pos)) { - x0 += t.getWidth(textArea, e, x0); - t = t.getNextToken(); - } - - // Make the token that contains pos start at pos. - if (t!=null && t.isPaintable()) { - - if (t.getOffset()!=pos) { - // Number of chars between p0 and token start. - int difference = pos - t.getOffset(); - x0 += t.getWidthUpTo(t.length()-difference+1, textArea, e, x0); - tempToken.copyFrom(t); - tempToken.makeStartAt(pos); - - return new TokenSubList(tempToken, x0); - - } - else { // t.getOffset()==pos - return new TokenSubList(t, x0); - } - - } - - // This could be a null token, so we need to just return it. - return new TokenSubList(tokenList, x0); - //return null; - - } - - - public static class TokenSubList { - - /** - * The "sub" token list. - */ - public Token tokenList; - - /** - * The width, in pixels, of the part of the token list "removed from - * the front." This way, you know the x-offset of the "new" token list. - */ - public float x; - - public TokenSubList(Token tokenList, float x) { - this.tokenList = tokenList; - this.x = x; - } - - } - - -} \ No newline at end of file diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/WrappedSyntaxView.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/WrappedSyntaxView.java deleted file mode 100644 index 198bfed..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/WrappedSyntaxView.java +++ /dev/null @@ -1,1432 +0,0 @@ -/* - * 08/06/2004 - * - * WrappedSyntaxView.java - Test implementation of WrappedSyntaxView that - * is also aware of RSyntaxTextArea's different fonts per token type. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea; - -import java.awt.*; -import javax.swing.text.*; -import javax.swing.text.Position.Bias; -import javax.swing.event.*; - -import org.fife.ui.rsyntaxtextarea.TokenUtils.TokenSubList; -import org.fife.ui.rsyntaxtextarea.folding.Fold; -import org.fife.ui.rsyntaxtextarea.folding.FoldManager; -import org.fife.ui.rtextarea.Gutter; - - -/** - * The view used by {@link RSyntaxTextArea} when word wrap is enabled. - * - * @author Robert Futrell - * @version 0.2 - */ -public class WrappedSyntaxView extends BoxView implements TabExpander, - RSTAView { - - boolean widthChanging; - int tabBase; - int tabSize; - - /** - * This is reused to keep from allocating/deallocating. - */ - private Segment s, drawSeg; - - /** - * Another variable initialized once to keep from allocating/deallocating. - */ - private Rectangle tempRect; - - /** - * Cached for each paint() call so each drawView() call has access to it. - */ - private RSyntaxTextArea host; - private FontMetrics metrics; - private TokenImpl tempToken; - private TokenImpl lineCountTempToken; - -// /** -// * The end-of-line marker. -// */ -// private static final char[] eolMarker = { '.' }; - - /** - * The width of this view cannot be below this amount, as if the width - * is ever 0 (really a bug), we'll go into an infinite loop. - */ - private static final int MIN_WIDTH = 20; - - - /** - * Creates a new WrappedSyntaxView. Lines will be wrapped - * on character boundaries. - * - * @param elem the element underlying the view - */ - public WrappedSyntaxView(Element elem) { - super(elem, Y_AXIS); - tempToken = new TokenImpl(); - s = new Segment(); - drawSeg = new Segment(); - tempRect = new Rectangle(); - lineCountTempToken = new TokenImpl(); - } - - - - /** - * This is called by the nested wrapped line - * views to determine the break location. This can - * be reimplemented to alter the breaking behavior. - * It will either break at word or character boundaries - * depending upon the break argument given at - * construction. - */ - protected int calculateBreakPosition(int p0, Token tokenList, float x0) { -//System.err.println("------ beginning calculateBreakPosition() --------"); - int p = p0; - RSyntaxTextArea textArea = (RSyntaxTextArea)getContainer(); - float currentWidth = getWidth(); - if (currentWidth==Integer.MAX_VALUE) - currentWidth = getPreferredSpan(X_AXIS); - // Make sure width>0; this is a huge hack to fix a bug where - // loading text into an RTextArea before it is visible if word wrap - // is enabled causes an infinite loop in calculateBreakPosition() - // because of the 0-width! We cannot simply check in setSize() - // because the width is set to 0 somewhere else too somehow... - currentWidth = Math.max(currentWidth, MIN_WIDTH); - Token t = tokenList; - while (t!=null && t.isPaintable()) { -// FIXME: Replace the code below with the commented-out line below. This will -// allow long tokens to be broken at embedded spaces (such as MLC's). But it -// currently throws BadLocationExceptions sometimes... - float tokenWidth = t.getWidth(textArea, this, x0); - if (tokenWidth>currentWidth) { - // If the current token alone is too long for this line, - // break at a character boundary. - if (p==p0) { - return t.getOffsetBeforeX(textArea, this, 0, currentWidth); - } - // Return the first non-whitespace char (i.e., don't start - // off the continuation of a wrapped line with whitespace). - return t.isWhitespace() ? p+t.length() : p; -//return getBreakLocation(t, fm, x0, currentWidth, this); - } - currentWidth -= tokenWidth; - x0 += tokenWidth; - p += t.length(); -//System.err.println("*** *** *** token fit entirely (width==" + tokenWidth + "), adding " + t.textCount + " to p, now p==" + p); - t = t.getNextToken(); - } -//System.err.println("... ... whole line fits; returning p==" + p); -//System.err.println("------ ending calculateBreakPosition() --------"); - -// return p; -return p + 1; - } - -//private int getBreakLocation(Token t, FontMetrics fm, int x0, int x, -// TabExpander e) { -// Segment s = new Segment(); -// s.array = t.text; -// s.offset = t.getTextOffset(); -// s.count = t.textCount; -// return t.offset + Utilities.getBreakLocation(s, fm, x0, x, e, t.offset); -//} - - /** - * Gives notification from the document that attributes were changed - * in a location that this view is responsible for. - * - * @param e the change information from the associated document - * @param a the current allocation of the view - * @param f the factory to use to rebuild if the view has children - * @see View#changedUpdate - */ - @Override - public void changedUpdate(DocumentEvent e, Shape a, ViewFactory f) { - updateChildren(e, a); - } - - - /** - * Sets the allocation rectangle for a given line's view, but sets the - * y value to the passed-in value. This should be used instead of - * {@link #childAllocation(int, Rectangle)} since it allows you to account - * for hidden lines in collapsed fold regions. - * - * @param line - * @param y - * @param alloc - */ - private void childAllocation2(int line, int y, Rectangle alloc) { - alloc.x += getOffset(X_AXIS, line); - alloc.y += y; - alloc.width = getSpan(X_AXIS, line); - alloc.height = getSpan(Y_AXIS, line); - - // FIXME: This is required due to a bug that I can't track down. The - // top margin is being added twice somewhere in wrapped views, so we - // have to adjust for it here. - Insets margin = host.getMargin(); - if (margin!=null) { - alloc.y -= margin.top; - } - - } - - - /** - * Draws a single view (i.e., a line of text for a wrapped view), - * wrapping the text onto multiple lines if necessary. - * - * @param painter The painter to use to render tokens. - * @param g The graphics context in which to paint. - * @param r The rectangle in which to paint. - * @param view The View to paint. - * @param fontHeight The height of the font being used. - * @param y The y-coordinate at which to begin painting. - */ - protected void drawView(TokenPainter painter, Graphics2D g, Rectangle r, - View view, int fontHeight, int y, int line) { - - float x = r.x; - - LayeredHighlighter h = (LayeredHighlighter)host.getHighlighter(); - - RSyntaxDocument document = (RSyntaxDocument)getDocument(); - Element map = getElement(); - - int p0 = view.getStartOffset(); - int lineNumber = map.getElementIndex(p0); - int p1 = view.getEndOffset();// - 1; - - setSegment(p0,p1-1, document, drawSeg); - //System.err.println("drawSeg=='" + drawSeg + "' (p0/p1==" + p0 + "/" + p1 + ")"); - int start = p0 - drawSeg.offset; - Token token = document.getTokenListForLine(lineNumber); - - // If this line is an empty line, then the token list is simply a - // null token. In this case, the line highlight will be skipped in - // the loop below, so unfortunately we must manually do it here. - if (token!=null && token.getType()==Token.NULL) { - h.paintLayeredHighlights(g, p0,p1, r, host, this); - return; - } - - // Loop through all tokens in this view and paint them! - while (token!=null && token.isPaintable()) { - - int p = calculateBreakPosition(p0, token, x); - x = r.x; - - h.paintLayeredHighlights(g, p0,p, r, host, this); - - while (token!=null && token.isPaintable() && token.getEndOffset()-1View to paint. - * @param fontHeight The height of the font being used. - * @param y The y-coordinate at which to begin painting. - * @param selStart The start of the selection. - * @param selEnd The end of the selection. - */ - protected void drawViewWithSelection(TokenPainter painter, Graphics2D g, - Rectangle r, View view, int fontHeight, int y, int selStart, - int selEnd) { - - float x = r.x; - boolean useSTC = host.getUseSelectedTextColor(); - - LayeredHighlighter h = (LayeredHighlighter)host.getHighlighter(); - - RSyntaxDocument document = (RSyntaxDocument)getDocument(); - Element map = getElement(); - - int p0 = view.getStartOffset(); - int lineNumber = map.getElementIndex(p0); - int p1 = view.getEndOffset();// - 1; - - setSegment(p0,p1-1, document, drawSeg); - //System.err.println("drawSeg=='" + drawSeg + "' (p0/p1==" + p0 + "/" + p1 + ")"); - int start = p0 - drawSeg.offset; - Token token = document.getTokenListForLine(lineNumber); - - // If this line is an empty line, then the token list is simply a - // null token. In this case, the line highlight will be skipped in - // the loop below, so unfortunately we must manually do it here. - if (token!=null && token.getType()==Token.NULL) { - h.paintLayeredHighlights(g, p0,p1, r, host, this); - return; - } - - // Loop through all tokens in this view and paint them! - while (token!=null && token.isPaintable()) { - - int p = calculateBreakPosition(p0, token, x); - x = r.x; - - h.paintLayeredHighlights(g, p0,p, r, host, this); - - while (token!=null && token.isPaintable() && token.getEndOffset()-1token.getOffset()) { - tempToken.copyFrom(token); - tempToken.textCount = selStart - tempToken.getOffset(); - x = painter.paint(tempToken,g,x,y,host, this); - tempToken.textCount = token.length(); - tempToken.makeStartAt(selStart); - // Clone required since token and tempToken must be - // different tokens for else statement below - token = new TokenImpl(tempToken); - } - - int selCount = Math.min(token.length(), selEnd-token.getOffset()); - if (selCount==token.length()) { - x = painter.paintSelected(token, g, x,y, host, this, - useSTC); - } - else { - tempToken.copyFrom(token); - tempToken.textCount = selCount; - x = painter.paintSelected(tempToken, g, x,y, host, this, - useSTC); - tempToken.textCount = token.length(); - tempToken.makeStartAt(token.getOffset() + selCount); - token = tempToken; - x = painter.paint(token, g, x,y, host, this); - } - - } - - // Selection ends in this token - else if (token.containsPosition(selEnd)) { - tempToken.copyFrom(token); - tempToken.textCount = selEnd - tempToken.getOffset(); - x = painter.paintSelected(tempToken, g, x,y, host, this, - useSTC); - tempToken.textCount = token.length(); - tempToken.makeStartAt(selEnd); - token = tempToken; - x = painter.paint(token, g, x,y, host, this); - } - - // This token is entirely selected - else if (token.getOffset()>=selStart && - token.getEndOffset()<=selEnd) { - x = painter.paintSelected(token, g, x,y, host, this,useSTC); - } - - // This token is entirely unselected - else { - x = painter.paint(token, g, x,y, host, this); - } - - token = token.getNextToken(); - - } - - // If there's a token that's going to be split onto the next line - if (token!=null && token.isPaintable() && token.getOffset()token.getOffset()) { - tempToken.copyFrom(token); - tempToken.textCount = selStart - tempToken.getOffset(); - x = painter.paint(tempToken,g,x,y,host, this); - tempToken.textCount = token.length(); - tempToken.makeStartAt(selStart); - // Clone required since token and tempToken must be - // different tokens for else statement below - token = new TokenImpl(tempToken); - } - - int selCount = Math.min(token.length(), selEnd-token.getOffset()); - if (selCount==token.length()) { - x = painter.paintSelected(token, g, x,y, host, this, - useSTC); - } - else { - tempToken.copyFrom(token); - tempToken.textCount = selCount; - x = painter.paintSelected(tempToken, g, x,y, host, - this, useSTC); - tempToken.textCount = token.length(); - tempToken.makeStartAt(token.getOffset() + selCount); - token = tempToken; - x = painter.paint(token, g, x,y, host, this); - } - - } - - // Selection ends in this token - else if (token.containsPosition(selEnd)) { - tempToken.copyFrom(token); - tempToken.textCount = selEnd - tempToken.getOffset(); - x = painter.paintSelected(tempToken, g, x,y, host, this, - useSTC); - tempToken.textCount = token.length(); - tempToken.makeStartAt(selEnd); - token = tempToken; - x = painter.paint(token, g, x,y, host, this); - } - - // This token is entirely selected - else if (token.getOffset()>=selStart && - token.getEndOffset()<=selEnd) { - x = painter.paintSelected(token, g, x,y, host, this,useSTC); - } - - // This token is entirely unselected - else { - x = painter.paint(token, g, x,y, host, this); - } - - token = new TokenImpl(orig); - ((TokenImpl)token).makeStartAt(p); - - } - - p0 = (p==p0) ? p1 : p; - y += fontHeight; - - } // End of while (token!=null && token.isPaintable()). - - // NOTE: We should re-use code from Token (paintBackground()) here, - // but don't because I'm just too lazy. - if (host.getEOLMarkersVisible()) { - g.setColor(host.getForegroundForTokenType(Token.WHITESPACE)); - g.setFont(host.getFontForTokenType(Token.WHITESPACE)); - g.drawString("\u00B6", x, y-fontHeight); - } - - } - - - /** - * Fetches the allocation for the given child view.

- * Overridden to account for code folding. - * - * @param index The index of the child, >= 0 &&< getViewCount(). - * @param a The allocation to this view - * @return The allocation to the child; or null if - * a is null; or null if the - * layout is invalid - */ - @Override - public Shape getChildAllocation(int index, Shape a) { - if (a != null) { - Shape ca = getChildAllocationImpl(index, a); - if ((ca != null) && (!isAllocationValid())) { - // The child allocation may not have been set yet. - Rectangle r = (ca instanceof Rectangle) ? (Rectangle) ca : ca - .getBounds(); - if ((r.width == 0) && (r.height == 0)) { - return null; - } - } - return ca; - } - return null; - } - - /** - * Fetches the allocation for the given child view to render into.

- * Overridden to account for lines hidden by collapsed folded regions. - * - * @param line The index of the child, >= 0 &&< getViewCount() - * @param a The allocation to this view - * @return The allocation to the child - */ - public Shape getChildAllocationImpl(int line, Shape a) { - - Rectangle alloc = getInsideAllocation(a); - host = (RSyntaxTextArea)getContainer(); - FoldManager fm = host.getFoldManager(); - int y = alloc.y; - - // TODO: Make cached getOffset() calls for Y_AXIS valid even for - // folding, to speed this up! - for (int i=0; isetParent method. - * Subclasses can re-implement this to initialize their - * child views in a different manner. The default - * implementation creates a child view for each - * child element. - * - * @param f the view factory - */ - @Override - protected void loadChildren(ViewFactory f) { - Element e = getElement(); - int n = e.getElementCount(); - if (n > 0) { - View[] added = new View[n]; - for (int i = 0; i < n; i++) - added[i] = new WrappedLine(e.getElement(i)); - replace(0, 0, added); - } - } - - - @Override - public Shape modelToView(int pos, Shape a, Position.Bias b) - throws BadLocationException { - - if (! isAllocationValid()) { - Rectangle alloc = a.getBounds(); - setSize(alloc.width, alloc.height); - } - - boolean isBackward = (b == Position.Bias.Backward); - int testPos = (isBackward) ? Math.max(0, pos - 1) : pos; - if(isBackward && testPos < getStartOffset()) { - return null; - } - - int vIndex = getViewIndexAtPosition(testPos); - if ((vIndex != -1) && (vIndex < getViewCount())) { - View v = getView(vIndex); - if(v != null && testPos >= v.getStartOffset() && - testPos < v.getEndOffset()) { - Shape childShape = getChildAllocation(vIndex, a); - if (childShape == null) { - // We are likely invalid, fail. - return null; - } - Shape retShape = v.modelToView(pos, childShape, b); - if(retShape == null && v.getEndOffset() == pos) { - if(++vIndex < getViewCount()) { - v = getView(vIndex); - retShape = v.modelToView(pos, getChildAllocation(vIndex, a), b); - } - } - return retShape; - } - } - - throw new BadLocationException("Position not represented by view", pos); - - } - - - /** - * Provides a mapping, for a given region, from the document model - * coordinate space to the view coordinate space. The specified region is - * created as a union of the first and last character positions.

- * - * This is implemented to subtract the width of the second character, as - * this view's modelToView actually returns the width of the - * character instead of "1" or "0" like the View implementations in - * javax.swing.text. Thus, if we don't override this method, - * the View implementation will return one character's width - * too much for its consumers (implementations of - * javax.swing.text.Highlighter). - * - * @param p0 the position of the first character (>=0) - * @param b0 The bias of the first character position, toward the previous - * character or the next character represented by the offset, in - * case the position is a boundary of two views; b0 - * will have one of these values: - *

    - *
  • Position.Bias.Forward - *
  • Position.Bias.Backward - *
- * @param p1 the position of the last character (>=0) - * @param b1 the bias for the second character position, defined - * one of the legal values shown above - * @param a the area of the view, which encompasses the requested region - * @return the bounding box which is a union of the region specified - * by the first and last character positions - * @exception BadLocationException if the given position does - * not represent a valid location in the associated document - * @exception IllegalArgumentException if b0 or - * b1 are not one of the - * legal Position.Bias values listed above - * @see View#viewToModel - */ - @Override - public Shape modelToView(int p0, Position.Bias b0, - int p1, Position.Bias b1, - Shape a) throws BadLocationException { - - Shape s0 = modelToView(p0, a, b0); - Shape s1; - if (p1 ==getEndOffset()) { - try { - s1 = modelToView(p1, a, b1); - } catch (BadLocationException ble) { - s1 = null; - } - if (s1 == null) { - // Assume extends left to right. - Rectangle alloc = (a instanceof Rectangle) ? (Rectangle)a : - a.getBounds(); - s1 = new Rectangle(alloc.x + alloc.width - 1, alloc.y, - 1, alloc.height); - } - } - else { - s1 = modelToView(p1, a, b1); - } - Rectangle r0 = s0.getBounds(); - Rectangle r1 = (s1 instanceof Rectangle) ? (Rectangle) s1 : - s1.getBounds(); - if (r0.y != r1.y) { - // If it spans lines, force it to be the width of the view. - Rectangle alloc = (a instanceof Rectangle) ? (Rectangle)a : - a.getBounds(); - r0.x = alloc.x; - r0.width = alloc.width; - } - - r0.add(r1); - // The next line is the only difference between this method and - // View's implementation. We're subtracting the width of the second - // character. This is because this method is used by Highlighter - // implementations to get the area to "highlight", and if we don't do - // this, one character too many is highlighted thanks to our - // modelToView() implementation returning the actual width of the - // character requested! - if (p1>p0) r0.width -= r1.width; - return r0; - - } - - - /** - * Returns the next tab stop position after a given reference position. - * This implementation does not support things like centering so it - * ignores the tabOffset argument. - * - * @param x the current position >= 0 - * @param tabOffset the position within the text stream - * that the tab occurred at >= 0. - * @return the tab stop, measured in points >= 0 - */ - public float nextTabStop(float x, int tabOffset) { - if (tabSize == 0) - return x; - int ntabs = ((int) x - tabBase) / tabSize; - return tabBase + ((ntabs + 1) * tabSize); - } - - - /** - * Paints the word-wrapped text. - * - * @param g The graphics context in which to paint. - * @param a The shape (usually a rectangle) in which to paint. - */ - @Override - public void paint(Graphics g, Shape a) { - - Rectangle alloc = (a instanceof Rectangle) ? - (Rectangle)a : a.getBounds(); - tabBase = alloc.x; - - Graphics2D g2d = (Graphics2D)g; - host = (RSyntaxTextArea)getContainer(); - int ascent = host.getMaxAscent(); - int fontHeight = host.getLineHeight(); - FoldManager fm = host.getFoldManager(); - TokenPainter painter = host.getTokenPainter(); - Element root = getElement(); - - // Whether token styles should always be painted, even in selections - int selStart = host.getSelectionStart(); - int selEnd = host.getSelectionEnd(); - int curLine = host.getCaretLineNumber(); - - int n = getViewCount(); // Number of lines. - int x = alloc.x + getLeftInset(); - tempRect.y = alloc.y + getTopInset(); - Rectangle clip = g.getClipBounds(); - for (int i = 0; i < n; i++) { - - tempRect.x = x + getOffset(X_AXIS, i); - //tempRect.y = y + getOffset(Y_AXIS, i); - tempRect.width = getSpan(X_AXIS, i); - tempRect.height = getSpan(Y_AXIS, i); - //System.err.println("For line " + i + ": tempRect==" + tempRect); - - if (tempRect.intersects(clip)) { - Element lineElement = root.getElement(i); - int startOffset = lineElement.getStartOffset(); - int endOffset = lineElement.getEndOffset()-1; // Why always "-1"? - View view = getView(i); - if (selStart==selEnd || startOffset>=selEnd || - endOffsetSegment point to the text in our - * document between the given positions. Note that the positions MUST be - * valid positions in the document. - * - * @param p0 The first position in the document. - * @param p1 The second position in the document. - * @param document The document from which you want to get the text. - * @param seg The segment in which to load the text. - */ - private void setSegment(int p0, int p1, Document document, - Segment seg) { - try { -//System.err.println("... in setSharedSegment, p0/p1==" + p0 + "/" + p1); - document.getText(p0, p1-p0, seg); - //System.err.println("... in setSharedSegment: s=='" + s + "'; line/numLines==" + line + "/" + numLines); - } catch (BadLocationException ble) { // Never happens - ble.printStackTrace(); - } - } - - - /** - * Sets the size of the view. This should cause layout of the view along - * the given axis, if it has any layout duties. - * - * @param width the width >= 0 - * @param height the height >= 0 - */ - @Override - public void setSize(float width, float height) { - updateMetrics(); - if ((int) width != getWidth()) { - // invalidate the view itself since the childrens - // desired widths will be based upon this views width. - preferenceChanged(null, true, true); - widthChanging = true; - } - super.setSize(width, height); - widthChanging = false; - } - - - /** - * Update the child views in response to a - * document event. - */ - void updateChildren(DocumentEvent e, Shape a) { - - Element elem = getElement(); - DocumentEvent.ElementChange ec = e.getChange(elem); - - // This occurs when syntax highlighting only changes on lines - // (i.e. beginning a multiline comment). - if (e.getType()==DocumentEvent.EventType.CHANGE) { - //System.err.println("Updating the damage due to a CHANGE event..."); - // FIXME: Make me repaint more intelligently. - getContainer().repaint(); - //damageLineRange(startLine,endLine, a, host); - } - - else if (ec != null) { - - // the structure of this element changed. - Element[] removedElems = ec.getChildrenRemoved(); - Element[] addedElems = ec.getChildrenAdded(); - View[] added = new View[addedElems.length]; - - for (int i = 0; i < addedElems.length; i++) - added[i] = new WrappedLine(addedElems[i]); - //System.err.println("Replacing " + removedElems.length + - // " children with " + addedElems.length); - replace(ec.getIndex(), removedElems.length, added); - - // should damge a little more intelligently. - if (a != null) { - preferenceChanged(null, true, true); - getContainer().repaint(); - } - - } - - // update font metrics which may be used by the child views - updateMetrics(); - - } - - - final void updateMetrics() { - Component host = getContainer(); - Font f = host.getFont(); - metrics = host.getFontMetrics(f); // Metrics for the default font. - tabSize = getTabSize() * metrics.charWidth('m'); - } - - - @Override - public int viewToModel(float x, float y, Shape a, Position.Bias[] bias) { - - int offs = -1; - - if (! isAllocationValid()) { - Rectangle alloc = a.getBounds(); - setSize(alloc.width, alloc.height); - } - - // Get the child view for the line at (x,y), and ask it for the - // specific offset. - Rectangle alloc = getInsideAllocation(a); - View v = getViewAtPoint((int) x, (int) y, alloc); - if (v != null) { - offs = v.viewToModel(x, y, alloc, bias); - } - - // Code folding may have hidden the last line. If so, return the last - // visible offset instead of the last offset. - if (host.isCodeFoldingEnabled() && v==getView(getViewCount()-1) && - offs==v.getEndOffset()-1) { - offs = host.getLastVisibleOffset(); - } - - return offs; - - } - - - /** - * {@inheritDoc} - */ - public int yForLine(Rectangle alloc, int line) throws BadLocationException { - return yForLineContaining(alloc, - getElement().getElement(line).getStartOffset()); -//return alloc.y + getOffset(Y_AXIS, line); - } - - - /** - * {@inheritDoc} - */ - public int yForLineContaining(Rectangle alloc, int offs) - throws BadLocationException { - if (isAllocationValid()) { - // TODO: make cached Y_AXIS offsets valid even with folding enabled - // to speed this back up! - Rectangle r = (Rectangle)modelToView(offs, alloc, Bias.Forward); - if (r!=null) { - if (host.isCodeFoldingEnabled()) { - int line = host.getLineOfOffset(offs); - FoldManager fm = host.getFoldManager(); - if (fm.isLineHidden(line)) { - return -1; - } - } - return r.y; - } - } - return -1; - } - - - /** - * Simple view of a line that wraps if it doesn't - * fit within the horizontal space allocated. - * This class tries to be lightweight by carrying little - * state of it's own and sharing the state of the outer class - * with it's siblings. - */ - class WrappedLine extends View { - - int nlines; - - WrappedLine(Element elem) { - super(elem); - } - - /** - * Calculate the number of lines that will be rendered - * by logical line when it is wrapped. - */ - final int calculateLineCount() { - - int nlines = 0; - int startOffset = getStartOffset(); - int p1 = getEndOffset(); - - // Get the token list for this line so we don't have to keep - // recomputing it if this logical line spans multiple physical - // lines. - RSyntaxTextArea textArea = (RSyntaxTextArea)getContainer(); - RSyntaxDocument doc = (RSyntaxDocument)getDocument(); - Element map = doc.getDefaultRootElement(); - int line = map.getElementIndex(startOffset); - Token tokenList = doc.getTokenListForLine(line); - float x0 = 0;// FIXME: should be alloc.x!! alloc.x;//0; - - -//System.err.println(">>> calculateLineCount: " + startOffset + "-" + p1); - for (int p0=startOffset; p0>> >>> calculated number of lines for this view (line " + line + "/" + numLines + ": " + nlines); -*/ - return nlines; - } - - /** - * Determines the preferred span for this view along an - * axis. - * - * @param axis may be either X_AXIS or Y_AXIS - * @return the span the view would like to be rendered into. - * Typically the view is told to render into the span - * that is returned, although there is no guarantee. - * The parent may choose to resize or break the view. - * @see View#getPreferredSpan - */ - @Override - public float getPreferredSpan(int axis) { - switch (axis) { - case View.X_AXIS: - float width = getWidth(); - if (width == Integer.MAX_VALUE) { - // We have been initially set to MAX_VALUE, but we don't - // want this as our preferred. - return 100f; - } - return width; - case View.Y_AXIS: - if (nlines == 0 || widthChanging) - nlines = calculateLineCount(); - int h = nlines * ((RSyntaxTextArea)getContainer()).getLineHeight(); - return h; - default: - throw new IllegalArgumentException("Invalid axis: " + axis); - } - } - - /** - * Renders using the given rendering surface and area on that - * surface. The view may need to do layout and create child - * views to enable itself to render into the given allocation. - * - * @param g the rendering surface to use - * @param a the allocated region to render into - * @see View#paint - */ - @Override - public void paint(Graphics g, Shape a) { - // This is done by drawView() above. - } - - /** - * Provides a mapping from the document model coordinate space - * to the coordinate space of the view mapped to it. - * - * @param pos the position to convert - * @param a the allocated region to render into - * @return the bounding box of the given position is returned - * @exception BadLocationException if the given position does not - * represent a valid location in the associated document. - */ - @Override - public Shape modelToView(int pos, Shape a, Position.Bias b) - throws BadLocationException { - - //System.err.println("--- begin modelToView ---"); - Rectangle alloc = a.getBounds(); - RSyntaxTextArea textArea = (RSyntaxTextArea)getContainer(); - alloc.height = textArea.getLineHeight();//metrics.getHeight(); - alloc.width = 1; - int p0 = getStartOffset(); - int p1 = getEndOffset(); - int testP = (b == Position.Bias.Forward) ? pos : - Math.max(p0, pos - 1); - - // Get the token list for this line so we don't have to keep - // recomputing it if this logical line spans multiple physical - // lines. - RSyntaxDocument doc = (RSyntaxDocument)getDocument(); - Element map = doc.getDefaultRootElement(); - int line = map.getElementIndex(p0); - Token tokenList = doc.getTokenListForLine(line); - float x0 = alloc.x;//0; - - while (p0 < p1) { - TokenSubList subList = TokenUtils.getSubTokenList(tokenList, p0, - WrappedSyntaxView.this, textArea, x0, lineCountTempToken); - x0 = subList!=null ? subList.x : x0; - tokenList = subList!=null ? subList.tokenList : null; - int p = calculateBreakPosition(p0, tokenList, x0); - if ((pos >= p0) && (testP p0) { - alloc = RSyntaxUtilities.getLineWidthUpTo( - textArea, s, p0, pos, - WrappedSyntaxView.this, - alloc, alloc.x); - } - //System.err.println("--- end modelToView ---"); - return alloc; - } - - p0 = (p == p0) ? p1 : p; - //System.err.println("... ... Incrementing y"); - alloc.y += alloc.height; - - } - - throw new BadLocationException(null, pos); - - } - - /** - * Provides a mapping from the view coordinate space to the logical - * coordinate space of the model. - * - * @param fx the X coordinate - * @param fy the Y coordinate - * @param a the allocated region to render into - * @return the location within the model that best represents the - * given point in the view - * @see View#viewToModel - */ - @Override - public int viewToModel(float fx, float fy, Shape a, Position.Bias[] bias) { - - // PENDING(prinz) implement bias properly - bias[0] = Position.Bias.Forward; - - Rectangle alloc = (Rectangle) a; - RSyntaxDocument doc = (RSyntaxDocument)getDocument(); - int x = (int) fx; - int y = (int) fy; - if (y < alloc.y) { - // above the area covered by this icon, so the the position - // is assumed to be the start of the coverage for this view. - return getStartOffset(); - } - else if (y > alloc.y + alloc.height) { - // below the area covered by this icon, so the the position - // is assumed to be the end of the coverage for this view. - return getEndOffset() - 1; - } - else { - - // positioned within the coverage of this view vertically, - // so we figure out which line the point corresponds to. - // if the line is greater than the number of lines - // contained, then simply use the last line as it represents - // the last possible place we can position to. - - RSyntaxTextArea textArea = (RSyntaxTextArea)getContainer(); - alloc.height = textArea.getLineHeight(); - int p1 = getEndOffset(); - - // Get the token list for this line so we don't have to keep - // recomputing it if this logical line spans multiple - // physical lines. - Element map = doc.getDefaultRootElement(); - int p0 = getStartOffset(); - int line = map.getElementIndex(p0); - Token tlist = doc.getTokenListForLine(line); - - // Look at each physical line-chunk of this logical line. - while (p0=alloc.y) && (y<(alloc.y+alloc.height))) { - - // Point is to the left of the line - if (x < alloc.x) { - return p0; - } - - // Point is to the right of the line - else if (x > alloc.x + alloc.width) { - return p - 1; - } - - // Point is in this physical line! - else { - - // Start at alloc.x since this chunk starts - // at the beginning of a physical line. - int n = tlist.getListOffset(textArea, - WrappedSyntaxView.this, - alloc.x, x); - - // NOTE: We needed to add the max() with - // p0 as getTokenListForLine returns -1 - // for empty lines (just a null token). - // How did this work before? - // FIXME: Have null tokens have their - // offset but a -1 length. - return Math.max(Math.min(n, p1-1), p0); - - } // End of else. - - } // End of if ((y>=alloc.y) && ... - - p0 = (p == p0) ? p1 : p; - alloc.y += alloc.height; - - } // End of while (p0=sb.y+sb.height) { - y = p.y - Y_MARGIN - tipWindow.getHeight(); - } - - // Get x-coordinate of completions. Try to align left edge - // with the mouse first (with a slight margin). - int x = p.x - X_MARGIN; // ltr - if (!o.isLeftToRight()) { - x = p.x - tipWindow.getWidth() + X_MARGIN; - } - if (xsb.x+sb.width) { // completions don't fit - x = sb.x + sb.width - tipWindow.getWidth(); - } - - tipWindow.setLocation(x, y); - tipWindow.setVisible(true); - - computeTipVisibleBounds(); // Do after tip is visible - textAreaListener.install(textArea); - lastText = text; - - } - }); - - } - - - /** - * Returns the base URL to use when loading images in this focusable tip. - * - * @return The base URL to use. - * @see #setImageBase(URL) - */ - public URL getImageBase() { - return imageBase; - } - - - /** - * The maximum size for unfocused tool tips. - * - * @return The maximum size for unfocused tool tips. A value of - * null will use a default size. - * @see #setMaxSize(Dimension) - */ - public Dimension getMaxSize() { - return maxSize; - } - - - /** - * Returns localized text for the given key. - * - * @param key The key into the resource bundle. - * @return The localized text. - */ - static String getString(String key) { - return msg.getString(key); - } - - - /** - * Disposes of the focusable tip currently displayed, if any. - */ - public void possiblyDisposeOfTipWindow() { - if (tipWindow != null) { - tipWindow.dispose(); - tipWindow = null; - textAreaListener.uninstall(); - tipVisibleBounds.setBounds(-1, -1, 0, 0); - lastText = null; - textArea.requestFocus(); - } - } - - - void removeListeners() { - //System.out.println("DEBUG: Removing text area listeners"); - textAreaListener.uninstall(); - } - - - /** - * Sets the base URL to use when loading images in this focusable tip. - * - * @param url The base URL to use. - * @see #getImageBase() - */ - public void setImageBase(URL url) { - imageBase = url; - } - - - /** - * Sets the maximum size for unfocused tool tips. - * - * @param maxSize The new maximum size. A value of null will - * cause a default size to be used. - * @see #getMaxSize() - */ - public void setMaxSize(Dimension maxSize) { - this.maxSize = maxSize; - } - - - private void setTextArea(JTextArea textArea) { - this.textArea = textArea; - // Is okay to do multiple times. - ToolTipManager.sharedInstance().registerComponent(textArea); - } - - - public void toolTipRequested(MouseEvent e, String text) { - - if (text==null || text.length()==0) { - possiblyDisposeOfTipWindow(); - lastText = text; - return; - } - - if (lastText==null || text.length()!=lastText.length() - || !text.equals(lastText)) { - possiblyDisposeOfTipWindow(); - createAndShowTipWindow(e, text); - } - - } - - - private class TextAreaListener extends MouseInputAdapter implements - CaretListener, ComponentListener, FocusListener, KeyListener { - - public void caretUpdate(CaretEvent e) { - Object source = e.getSource(); - if (source == textArea) { - possiblyDisposeOfTipWindow(); - } - } - - public void componentHidden(ComponentEvent e) { - handleComponentEvent(e); - } - - public void componentMoved(ComponentEvent e) { - handleComponentEvent(e); - } - - public void componentResized(ComponentEvent e) { - handleComponentEvent(e); - } - - public void componentShown(ComponentEvent e) { - handleComponentEvent(e); - } - - public void focusGained(FocusEvent e) { - } - - public void focusLost(FocusEvent e) { - // Only dispose of tip if it wasn't the TipWindow that was clicked - // "c" can be null, at least on OS X, so we must check that before - // calling SwingUtilities.getWindowAncestor() to guard against an - // NPE. - Component c = e.getOppositeComponent(); - boolean tipClicked = (c instanceof TipWindow) || - (c!=null && - SwingUtilities.getWindowAncestor(c) instanceof TipWindow); - if (!tipClicked) { - possiblyDisposeOfTipWindow(); - } - } - - private void handleComponentEvent(ComponentEvent e) { - possiblyDisposeOfTipWindow(); - } - - public void install(JTextArea textArea) { - textArea.addCaretListener(this); - textArea.addComponentListener(this); - textArea.addFocusListener(this); - textArea.addKeyListener(this); - textArea.addMouseListener(this); - textArea.addMouseMotionListener(this); - } - - public void keyPressed(KeyEvent e) { - if (e.getKeyCode()==KeyEvent.VK_ESCAPE) { - possiblyDisposeOfTipWindow(); - } - else if (e.getKeyCode()==KeyEvent.VK_F2) { - if (tipWindow!=null && !tipWindow.getFocusableWindowState()) { - tipWindow.actionPerformed(null); - e.consume(); // Don't do bookmarking stuff - } - } - } - - public void keyReleased(KeyEvent e) { - } - - public void keyTyped(KeyEvent e) { - } - - @Override - public void mouseExited(MouseEvent e) { - // possiblyDisposeOfTipWindow(); - } - - @Override - public void mouseMoved(MouseEvent e) { - if (tipVisibleBounds==null || - !tipVisibleBounds.contains(e.getPoint())) { - possiblyDisposeOfTipWindow(); - } - } - - public void uninstall() { - textArea.removeCaretListener(this); - textArea.removeComponentListener(this); - textArea.removeFocusListener(this); - textArea.removeKeyListener(this); - textArea.removeMouseListener(this); - textArea.removeMouseMotionListener(this); - } - - } - -} \ No newline at end of file diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/focusabletip/TipWindow.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/focusabletip/TipWindow.java deleted file mode 100644 index a1c479a..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/focusabletip/TipWindow.java +++ /dev/null @@ -1,348 +0,0 @@ -/* - * 07/29/2009 - * - * TipWindow.java - The actual window component representing the tool tip. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.focusabletip; - -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Component; -import java.awt.Container; -import java.awt.Dimension; -import java.awt.Font; -import java.awt.Point; -import java.awt.Rectangle; -import java.awt.Window; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.KeyAdapter; -import java.awt.event.KeyEvent; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; -import javax.swing.BorderFactory; -import javax.swing.JEditorPane; -import javax.swing.JLabel; -import javax.swing.JPanel; -import javax.swing.JScrollPane; -import javax.swing.JSeparator; -import javax.swing.JWindow; -import javax.swing.SwingConstants; -import javax.swing.SwingUtilities; -import javax.swing.UIManager; -import javax.swing.border.Border; -import javax.swing.event.HyperlinkEvent; -import javax.swing.event.HyperlinkListener; -import javax.swing.event.MouseInputAdapter; -import javax.swing.text.BadLocationException; -import javax.swing.text.html.HTMLDocument; - -import org.fife.ui.rsyntaxtextarea.RSyntaxUtilities; - - -/** - * The actual tool tip component. - * - * @author Robert Futrell - * @version 1.0 - */ -class TipWindow extends JWindow implements ActionListener { - - private FocusableTip ft; - private JEditorPane textArea; - private String text; - private TipListener tipListener; - private HyperlinkListener userHyperlinkListener; - - private static TipWindow visibleInstance; - - - /** - * Constructor. - * - * @param owner The parent window. - * @param msg The text of the tool tip. This can be HTML. - */ - public TipWindow(Window owner, FocusableTip ft, String msg) { - - super(owner); - this.ft = ft; - // Render plain text tool tips correctly. - if (msg!=null && msg.length()>=6 && - !msg.substring(0,6).toLowerCase().equals("")) { - msg = "" + RSyntaxUtilities.escapeForHtml(msg, "
", false); - } - this.text = msg; - tipListener = new TipListener(); - - JPanel cp = new JPanel(new BorderLayout()); - cp.setBorder(TipUtil.getToolTipBorder()); - cp.setBackground(TipUtil.getToolTipBackground()); - textArea = new JEditorPane("text/html", text); - TipUtil.tweakTipEditorPane(textArea); - if (ft.getImageBase()!=null) { // Base URL for images - ((HTMLDocument)textArea.getDocument()).setBase(ft.getImageBase()); - } - textArea.addMouseListener(tipListener); - textArea.addHyperlinkListener(new HyperlinkListener() { - public void hyperlinkUpdate(HyperlinkEvent e) { - if (e.getEventType()==HyperlinkEvent.EventType.ACTIVATED) { - TipWindow.this.ft.possiblyDisposeOfTipWindow(); - } - } - }); - cp.add(textArea); - - setFocusableWindowState(false); - setContentPane(cp); - setBottomPanel(); // Must do after setContentPane() - pack(); - - // InputMap/ActionMap combo doesn't work for JWindows (even when - // using the JWindow's JRootPane), so we'll resort to KeyListener - KeyAdapter ka = new KeyAdapter() { - @Override - public void keyPressed(KeyEvent e) { - if (e.getKeyCode()==KeyEvent.VK_ESCAPE) { - TipWindow.this.ft.possiblyDisposeOfTipWindow(); - } - } - }; - addKeyListener(ka); - textArea.addKeyListener(ka); - - // Ensure only 1 TipWindow is ever visible. If the caller does what - // they're supposed to and only creates these on the EDT, the - // synchronization isn't necessary, but we'll be extra safe. - synchronized (TipWindow.class) { - if (visibleInstance!=null) { - visibleInstance.dispose(); - } - visibleInstance = this; - } - - } - - - public void actionPerformed(ActionEvent e) { - - if (!getFocusableWindowState()) { - setFocusableWindowState(true); - setBottomPanel(); - textArea.removeMouseListener(tipListener); - pack(); - addWindowFocusListener(new WindowAdapter() { - @Override - public void windowLostFocus(WindowEvent e) { - ft.possiblyDisposeOfTipWindow(); - } - }); - ft.removeListeners(); - if (e==null) { // Didn't get here via our mouseover timer - requestFocus(); - } - } - - } - - - /** - * Disposes of this window. - */ - @Override - public void dispose() { - //System.out.println("[DEBUG]: Disposing..."); - Container cp = getContentPane(); - for (int i=0; id.height) { - d.height = r.y + r.height + 5; - if(ft.getMaxSize() != null) { - d.height = Math.min(d.height, MAX_WINDOW_H); - } - textArea.setPreferredSize(d); - } - - } catch (BadLocationException ble) { // Never happens - ble.printStackTrace(); - } - - pack(); // Must re-pack to calculate proper size. - - } - - - public String getText() { - return text; - } - - - private void setBottomPanel() { - - final JPanel panel = new JPanel(new BorderLayout()); - panel.add(new JSeparator(), BorderLayout.NORTH); - - boolean focusable = getFocusableWindowState(); - if (focusable) { - SizeGrip sg = new SizeGrip(); - sg.applyComponentOrientation(sg.getComponentOrientation()); // Workaround - panel.add(sg, BorderLayout.LINE_END); - MouseInputAdapter adapter = new MouseInputAdapter() { - private Point lastPoint; - @Override - public void mouseDragged(MouseEvent e) { - Point p = e.getPoint(); - SwingUtilities.convertPointToScreen(p, panel); - if (lastPoint==null) { - lastPoint = p; - } - else { - int dx = p.x - lastPoint.x; - int dy = p.y - lastPoint.y; - setLocation(getX()+dx, getY()+dy); - lastPoint = p; - } - } - @Override - public void mousePressed(MouseEvent e) { - lastPoint = e.getPoint(); - SwingUtilities.convertPointToScreen(lastPoint, panel); - } - }; - panel.addMouseListener(adapter); - panel.addMouseMotionListener(adapter); - // Don't add tipListener to the panel or SizeGrip - } - else { - panel.setOpaque(false); - JLabel label = new JLabel(FocusableTip.getString("FocusHotkey")); - Color fg = UIManager.getColor("Label.disabledForeground"); - Font font = textArea.getFont(); - font = font.deriveFont(font.getSize2D() - 1.0f); - label.setFont(font); - if (fg==null) { // Non BasicLookAndFeel-derived Looks - fg = Color.GRAY; - } - label.setOpaque(true); - Color bg = TipUtil.getToolTipBackground(); - label.setBackground(bg); - label.setForeground(fg); - label.setHorizontalAlignment(SwingConstants.TRAILING); - label.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 5)); - panel.add(label); - panel.addMouseListener(tipListener); - } - - // Replace the previous SOUTH Component with the new one. - Container cp = getContentPane(); - if (cp.getComponentCount()==2) { // Skip first time through - Component comp = cp.getComponent(0); - cp.remove(0); - JScrollPane sp = new JScrollPane(comp); - Border emptyBorder = BorderFactory.createEmptyBorder(); - sp.setBorder(emptyBorder); - sp.setViewportBorder(emptyBorder); - sp.setBackground(textArea.getBackground()); - sp.getViewport().setBackground(textArea.getBackground()); - cp.add(sp); - // What was component 1 is now 0. - cp.getComponent(0).removeMouseListener(tipListener); - cp.remove(0); - } - - cp.add(panel, BorderLayout.SOUTH); - - } - - - /** - * Sets the listener for hyperlink events in this tip window. - * - * @param listener The new listener. The old listener (if any) is - * removed. A value of null means "no listener." - */ - public void setHyperlinkListener(HyperlinkListener listener) { - // We've added a separate listener, so remove only the user's. - if (userHyperlinkListener!=null) { - textArea.removeHyperlinkListener(userHyperlinkListener); - } - userHyperlinkListener = listener; - if (userHyperlinkListener!=null) { - textArea.addHyperlinkListener(userHyperlinkListener); - } - } - - - /** - * Listens for events in this window. - */ - private class TipListener extends MouseAdapter { - - public TipListener() { - } - - @Override - public void mousePressed(MouseEvent e) { - actionPerformed(null); // Manually create "real" window - } - - @Override - public void mouseExited(MouseEvent e) { - // Since we registered this listener on the child components of - // the JWindow, not the JWindow iteself, we have to be careful. - Component source = (Component)e.getSource(); - Point p = e.getPoint(); - SwingUtilities.convertPointToScreen(p, source); - if (!TipWindow.this.getBounds().contains(p)) { - ft.possiblyDisposeOfTipWindow(); - } - } - - } - - -} \ No newline at end of file diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/folding/FoldParserManager.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/folding/FoldParserManager.java deleted file mode 100644 index 2df425d..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/folding/FoldParserManager.java +++ /dev/null @@ -1,126 +0,0 @@ -/* - * 10/08/2011 - * - * FoldParserManager.java - Used by RSTA to determine what fold parser to use - * for each language it supports. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.folding; - -import java.util.HashMap; -import java.util.Map; - -import org.fife.ui.rsyntaxtextarea.SyntaxConstants; - - -/** - * Manages fold parsers. Instances of RSyntaxTextArea call into - * this class to retrieve fold parsers for whatever language they're editing. - * Folks implementing custom languages can add a {@link FoldParser} - * implementation for their language to this manager and it will be used by - * RSTA. - * - * @author Robert Futrell - * @version 1.0 - */ -public class FoldParserManager implements SyntaxConstants { - - /** - * Map from syntax styles to fold parsers. - */ - private Map foldParserMap; - - private static final FoldParserManager INSTANCE = new FoldParserManager(); - - - /** - * Private constructor to prevent instantiation. - */ - private FoldParserManager() { - foldParserMap = createFoldParserMap(); - } - - - /** - * Adds a mapping from a syntax style to a fold parser. The parser - * specified will be shared among all RSTA instances editing that language, - * so it should be stateless (which should not be difficult for a fold - * parser). You can also override the fold parser for built-in languages, - * such as SYNTAX_STYLE_JAVA, with your own parser - * implementations. - * - * @param syntaxStyle The syntax style. - * @param parser The parser. - * @see SyntaxConstants - */ - public void addFoldParserMapping(String syntaxStyle, FoldParser parser) { - foldParserMap.put(syntaxStyle, parser); - } - - - /** - * Creates the syntax style-to-fold parser mapping for built-in languages. - * - * @return The style-to-fold parser mapping. - */ - private Map createFoldParserMap() { - - Map map = new HashMap(); - - map.put(SYNTAX_STYLE_C, new CurlyFoldParser()); - map.put(SYNTAX_STYLE_CPLUSPLUS, new CurlyFoldParser()); - map.put(SYNTAX_STYLE_CSHARP, new CurlyFoldParser()); - map.put(SYNTAX_STYLE_CLOJURE, new LispFoldParser()); - map.put(SYNTAX_STYLE_CSS, new CurlyFoldParser()); - map.put(SYNTAX_STYLE_D, new CurlyFoldParser()); - map.put(SYNTAX_STYLE_DART, new CurlyFoldParser()); - map.put(SYNTAX_STYLE_GROOVY, new CurlyFoldParser()); - map.put(SYNTAX_STYLE_HTACCESS, new XmlFoldParser()); - map.put(SYNTAX_STYLE_HTML, new HtmlFoldParser(HtmlFoldParser.LANGUAGE_HTML)); - map.put(SYNTAX_STYLE_JAVA, new CurlyFoldParser(true, true)); - map.put(SYNTAX_STYLE_JAVASCRIPT, new CurlyFoldParser()); - map.put(SYNTAX_STYLE_JSHINTRC, new JsonFoldParser()); - map.put(SYNTAX_STYLE_JSON, new JsonFoldParser()); - map.put(SYNTAX_STYLE_JSP, new HtmlFoldParser(HtmlFoldParser.LANGUAGE_JSP)); - map.put(SYNTAX_STYLE_LATEX, new LatexFoldParser()); - map.put(SYNTAX_STYLE_LESS, new CurlyFoldParser()); - map.put(SYNTAX_STYLE_LISP, new LispFoldParser()); - map.put(SYNTAX_STYLE_MXML, new XmlFoldParser()); - map.put(SYNTAX_STYLE_NSIS, new NsisFoldParser()); - map.put(SYNTAX_STYLE_PERL, new CurlyFoldParser()); - map.put(SYNTAX_STYLE_PHP, new HtmlFoldParser(HtmlFoldParser.LANGUAGE_PHP)); - map.put(SYNTAX_STYLE_SCALA, new CurlyFoldParser()); - map.put(SYNTAX_STYLE_XML, new XmlFoldParser()); - - return map; - - } - - - /** - * Returns the singleton instance of this class. - * - * @return The singleton instance. - */ - public static FoldParserManager get() { - return INSTANCE; - } - - - /** - * Returns a fold parser to use for an editor highlighting code of a - * specific language. - * - * @param syntaxStyle A value from {@link SyntaxConstants}, such as - * SYNTAX_STYLE_JAVA. - * @return A fold parser to use, or null if none is registered - * for the language. - */ - public FoldParser getFoldParser(String syntaxStyle) { - return foldParserMap.get(syntaxStyle); - } - - -} \ No newline at end of file diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/folding/HtmlFoldParser.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/folding/HtmlFoldParser.java deleted file mode 100644 index e85e46b..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/folding/HtmlFoldParser.java +++ /dev/null @@ -1,408 +0,0 @@ -/* - * 09/30/2012 - * - * HtmlFoldParser.java - Fold parser for HTML 5 and PHP. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.folding; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.Stack; -import javax.swing.text.BadLocationException; - -import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea; -import org.fife.ui.rsyntaxtextarea.Token; - - -/** - * Fold parser for HTML 5, PHP and JSP. For HTML, we currently don't fold - * everything possible, just the "big" stuff. For PHP, we only fold - * the "big" HTML stuff and PHP regions, not code blocks in the actual PHP. - * For JSP we only fold the "big" HTML stuff and JSP blocks, not anything in - * the actual Java code. - * - * @author Robert Futrell - * @version 1.0 - */ -public class HtmlFoldParser implements FoldParser { - - /** - * Constant denoting we're folding HTML. - */ - public static final int LANGUAGE_HTML = -1; - - /** - * Constant denoting we're folding PHP. - */ - public static final int LANGUAGE_PHP = 0; - - /** - * Constant denoting we're folding JSP. - */ - public static final int LANGUAGE_JSP = 1; - - /** - * The language we're folding. - */ - private final int language; - - /** - * The set of tags we allow to be folded. These are tags that must have - * explicit close tags in both HTML 4 and HTML 5. - */ - private static final Set FOLDABLE_TAGS; - - private static final char[] MARKUP_CLOSING_TAG_START = "".toCharArray(); - private static final char[] MLC_START = "".toCharArray(); - - private static final char[] PHP_START = "".toCharArray(); - - // Scriptlets, declarations, and expressions all start the same way. - private static final char[] JSP_START = "<%".toCharArray(); - private static final char[] JSP_END = "%>".toCharArray(); - - private static final char[][] LANG_START = { PHP_START, JSP_START }; - private static final char[][] LANG_END = { PHP_END, JSP_END }; - - private static final char[] JSP_COMMENT_START = "<%--".toCharArray(); - private static final char[] JSP_COMMENT_END = "--%>".toCharArray(); - - static { - FOLDABLE_TAGS = new HashSet(); - FOLDABLE_TAGS.add("body"); - FOLDABLE_TAGS.add("canvas"); - FOLDABLE_TAGS.add("div"); - FOLDABLE_TAGS.add("form"); - FOLDABLE_TAGS.add("head"); - FOLDABLE_TAGS.add("html"); - FOLDABLE_TAGS.add("ol"); - FOLDABLE_TAGS.add("pre"); - FOLDABLE_TAGS.add("script"); - FOLDABLE_TAGS.add("span"); - FOLDABLE_TAGS.add("style"); - FOLDABLE_TAGS.add("table"); - FOLDABLE_TAGS.add("tfoot"); - FOLDABLE_TAGS.add("thead"); - FOLDABLE_TAGS.add("tr"); - FOLDABLE_TAGS.add("td"); - FOLDABLE_TAGS.add("ul"); - } - - - /** - * Constructor. - * - * @param language The language to fold, such as {@link #LANGUAGE_PHP}. - */ - public HtmlFoldParser(int language) { - if (languageLANGUAGE_JSP) { - throw new IllegalArgumentException("Invalid language: " + language); - } - this.language = language; - } - - - /** - * {@inheritDoc} - */ - public List getFolds(RSyntaxTextArea textArea) { - - List folds = new ArrayList(); - Stack tagNameStack = new Stack(); - boolean inSublanguage = false; - - Fold currentFold = null; - int lineCount = textArea.getLineCount(); - boolean inMLC = false; - boolean inJSMLC = false; - TagCloseInfo tci = new TagCloseInfo(); - - try { - - for (int line=0; line=0 && t.getType()==Token.SEPARATOR) { - - // or %> - else if (t.startsWith(LANG_END[language])) { - int phpEnd = t.getEndOffset() - 1; - currentFold.setEndOffset(phpEnd); - Fold parentFold = currentFold.getParent(); - // Don't add fold markers for single-line blocks - if (currentFold.isOnSingleLine()) { - removeFold(currentFold, folds); - } - currentFold = parentFold; - inSublanguage = false; - t = t.getNextToken(); - continue; - } - - } - - if (!inSublanguage) { - - if (t.getType()==Token.COMMENT_MULTILINE) { - - // Continuing an MLC from a previous line - if (inMLC) { - // Found the end of the MLC starting on a previous line... - if (t.endsWith(MLC_END)) { - int mlcEnd = t.getEndOffset() - 1; - currentFold.setEndOffset(mlcEnd); - Fold parentFold = currentFold.getParent(); - // Don't add fold markers for single-line blocks - if (currentFold.isOnSingleLine()) { - removeFold(currentFold, folds); - } - currentFold = parentFold; - inMLC = false; - } - // Otherwise, this MLC is continuing on to yet - // another line. - } - - // Continuing a JS MLC from a previous line - else if (inJSMLC) { - // Found the end of the MLC starting on a previous line... - if (t.endsWith(JSP_COMMENT_END)) { - int mlcEnd = t.getEndOffset() - 1; - currentFold.setEndOffset(mlcEnd); - Fold parentFold = currentFold.getParent(); - // Don't add fold markers for single-line blocks - if (currentFold.isOnSingleLine()) { - removeFold(currentFold, folds); - } - currentFold = parentFold; - inJSMLC = false; - } - // Otherwise, this MLC is continuing on to yet - // another line. - } - - // Starting a MLC that ends on a later line... - else if (t.startsWith(MLC_START) && !t.endsWith(MLC_END)) { - if (currentFold==null) { - currentFold = new Fold(FoldType.COMMENT, textArea, t.getOffset()); - folds.add(currentFold); - } - else { - currentFold = currentFold.createChild(FoldType.COMMENT, t.getOffset()); - } - inMLC = true; - } - - // Starting a JSP comment that ends on a later line... - else if (language==LANGUAGE_JSP && - t.startsWith(JSP_COMMENT_START) && - !t.endsWith(JSP_COMMENT_END)) { - if (currentFold==null) { - currentFold = new Fold(FoldType.COMMENT, textArea, t.getOffset()); - folds.add(currentFold); - } - else { - currentFold = currentFold.createChild(FoldType.COMMENT, t.getOffset()); - } - inJSMLC = true; - } - - } - - // If we're starting a new tag... - else if (t.isSingleChar(Token.MARKUP_TAG_DELIMITER, '<')) { - Token tagStartToken = t; - Token tagNameToken = t.getNextToken(); - if (isFoldableTag(tagNameToken)) { - int newLine = getTagCloseInfo(tagNameToken, textArea, line, tci); - if (tci.line==-1) { // EOF reached before end of tag - return folds; - } - // We have found either ">" or "/>" with tci. - System.out.println(line + ", "+ tci + ", " + t); - Token tagCloseToken = tci.closeToken; - if (tagCloseToken.isSingleChar(Token.MARKUP_TAG_DELIMITER, '>')) { - if (currentFold==null) { - currentFold = new Fold(FoldType.CODE, textArea, tagStartToken.getOffset()); - folds.add(currentFold); - } - else { - currentFold = currentFold.createChild(FoldType.CODE, tagStartToken.getOffset()); - } - tagNameStack.push(tagNameToken.getLexeme()); - } - t = tagCloseToken; // Continue parsing after tag - line = newLine; - } - } - - // If we've found a closing tag (e.g. ""). - else if (t.is(Token.MARKUP_TAG_DELIMITER, MARKUP_CLOSING_TAG_START)) { - if (currentFold!=null) { - Token tagNameToken = t.getNextToken(); - if (isFoldableTag(tagNameToken) && - isEndOfLastFold(tagNameStack, tagNameToken)) { - tagNameStack.pop(); - currentFold.setEndOffset(t.getOffset()); - Fold parentFold = currentFold.getParent(); - // Don't add fold markers for single-line blocks - if (currentFold.isOnSingleLine()) { - removeFold(currentFold, folds); - } - currentFold = parentFold; - t = tagNameToken; - } - } - } - - } - - t = t.getNextToken(); - - } - - } - - } catch (BadLocationException ble) { // Should never happen - ble.printStackTrace(); - } - - return folds; - - } - - - /** - * Grabs the token representing the closing of a tag (i.e. - * ">" or "/>"). This should only be - * called after a tag name has been parsed, to ensure the "closing" of - * other tags is not identified. - * - * @param tagNameToken The token denoting the name of the tag. - * @param textArea The text area whose contents are being parsed. - * @param line The line we're currently on. - * @param info On return, information about the closing of the tag is - * returned in this object. - * @return The line number of the closing tag token. - */ - private int getTagCloseInfo(Token tagNameToken, RSyntaxTextArea textArea, - int line, TagCloseInfo info) { - - info.reset(); - Token t = tagNameToken.getNextToken(); - - do { - - while (t!=null && t.getType()!=Token.MARKUP_TAG_DELIMITER) { - t = t.getNextToken(); - } - - if (t!=null) { - info.closeToken = t; - info.line = line; - break; - } - - } while (++line</...>") with a - * specific name is the closing tag of our current fold region. - * - * @param tagNameStack The stack of fold regions. - * @param tagNameToken The tag name of the most recently parsed closing - * tag. - * @return Whether it's the end of the current fold region. - */ - private static final boolean isEndOfLastFold(Stack tagNameStack, - Token tagNameToken) { - if (tagNameToken!=null && !tagNameStack.isEmpty()) { - return tagNameToken.getLexeme().equalsIgnoreCase(tagNameStack.peek()); - } - return false; - } - - - /** - * Returns whether a tag is one we allow as a foldable region. - * - * @param tagNameToken The tag's name token. This may be null. - * @return Whether this tag can be a foldable region. - */ - private static final boolean isFoldableTag(Token tagNameToken) { - return tagNameToken!=null && - FOLDABLE_TAGS.contains(tagNameToken.getLexeme().toLowerCase()); - } - - - /** - * If this fold has a parent fold, this method removes it from its parent. - * Otherwise, it's assumed to be the most recent (top-level) fold in the - * folds list, and is removed from that. - * - * @param fold The fold to remove. - * @param folds The list of top-level folds. - */ - private static final void removeFold(Fold fold, List folds) { - if (!fold.removeFromParent()) { - folds.remove(folds.size()-1); - } - } - - - /** - * A simple wrapper for the token denoting the closing of a tag (i.e. - * ">" or "/>"). - */ - private static class TagCloseInfo { - - private Token closeToken; - private int line; - - public void reset() { - closeToken = null; - line = -1; - } - - @Override - public String toString() { - return "[TagCloseInfo: " + - "closeToken=" + closeToken + - ", line=" + line + - "]"; - } - - } - - -} \ No newline at end of file diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/ActionScriptTokenMaker.flex b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/ActionScriptTokenMaker.flex deleted file mode 100644 index d35f6f6..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/ActionScriptTokenMaker.flex +++ /dev/null @@ -1,496 +0,0 @@ -/* - * 04/27/2010 - * - * ActionScriptTokenMaker.java - Scanner for ActionScript. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * Scanner for the ActionScript.

- * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated ActionScriptTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.5 - * - */ -%% - -%public -%class ActionScriptTokenMaker -%extends AbstractJFlexCTokenMaker -%unicode -%type org.fife.ui.rsyntaxtextarea.Token - - -%{ - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public ActionScriptTokenMaker() { - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addToken(int, int, int) - */ - private void addHyperlinkToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, true); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addHyperlinkToken(int, int, int) - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, false); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - * @param hyperlink Whether this token is a hyperlink. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, - int startOffset, boolean hyperlink) { - super.addToken(array, start,end, tokenType, startOffset, hyperlink); - zzStartRead = zzMarkedPos; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { "//", null }; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - - // Start off in the proper state. - int state = Token.NULL; - switch (initialTokenType) { - case Token.COMMENT_MULTILINE: - state = MLC; - start = text.offset; - break; - default: - state = Token.NULL; - } - - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(java.io.Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = zzPushbackPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtBOL = true; - zzAtEOF = false; - } - - -%} - -Letter = [A-Za-z] -LetterOrUnderscore = ({Letter}|"_") -NonzeroDigit = [1-9] -Digit = ("0"|{NonzeroDigit}) -HexDigit = ({Digit}|[A-Fa-f]) -OctalDigit = ([0-7]) -AnyCharacterButApostropheOrBackSlash = ([^\\']) -AnyCharacterButDoubleQuoteOrBackSlash = ([^\\\"\n]) -EscapedSourceCharacter = ("u"{HexDigit}{HexDigit}{HexDigit}{HexDigit}) -Escape = ("\\"(([btnfr\"'\\])|([0123]{OctalDigit}?{OctalDigit}?)|({OctalDigit}{OctalDigit}?)|{EscapedSourceCharacter})) -NonSeparator = ([^\t\f\r\n\ \(\)\{\}\[\]\;\,\.\=\>\<\!\~\?\:\+\-\*\/\&\|\^\%\"\']|"#"|"\\") -IdentifierStart = ({LetterOrUnderscore}|"$") -IdentifierPart = ({IdentifierStart}|{Digit}|("\\"{EscapedSourceCharacter})) - -LineTerminator = (\n) -WhiteSpace = ([ \t\f]) - -CharLiteral = ([\']({AnyCharacterButApostropheOrBackSlash}|{Escape})[\']) -UnclosedCharLiteral = ([\'][^\'\n]*) -ErrorCharLiteral = ({UnclosedCharLiteral}[\']) -StringLiteral = ([\"]({AnyCharacterButDoubleQuoteOrBackSlash}|{Escape})*[\"]) -UnclosedStringLiteral = ([\"]([\\].|[^\\\"])*[^\"]?) -ErrorStringLiteral = ({UnclosedStringLiteral}[\"]) - -MLCBegin = ("/*") -MLCEnd = ("*/") -LineCommentBegin = ("//") -IntegerHelper1 = (({NonzeroDigit}{Digit}*)|"0") -IntegerHelper2 = ("0"(([xX]{HexDigit}+)|({OctalDigit}*))) -IntegerLiteral = ({IntegerHelper1}[lL]?) -HexLiteral = ({IntegerHelper2}[lL]?) -FloatHelper1 = ([fFdD]?) -FloatHelper2 = ([eE][+-]?{Digit}+{FloatHelper1}) -FloatLiteral1 = ({Digit}+"."({FloatHelper1}|{FloatHelper2}|{Digit}+({FloatHelper1}|{FloatHelper2}))) -FloatLiteral2 = ("."{Digit}+({FloatHelper1}|{FloatHelper2})) -FloatLiteral3 = ({Digit}+{FloatHelper2}) -FloatLiteral = ({FloatLiteral1}|{FloatLiteral2}|{FloatLiteral3}|({Digit}+[fFdD])) -ErrorNumberFormat = (({IntegerLiteral}|{HexLiteral}|{FloatLiteral}){NonSeparator}+) -BooleanLiteral = ("true"|"false") - -Separator = ([\(\)\{\}\[\]]) -Separator2 = ([\;,.]) - -NonAssignmentOperator = ("+"|"-"|"<="|"^"|"++"|"<"|"*"|">="|"%"|"--"|">"|"/"|"!="|"?"|">>"|"!"|"&"|"=="|":"|">>"|"~"|"|"|"&&"|">>>") -AssignmentOperator = ("="|"-="|"*="|"/="|"|="|"&="|"^="|"+="|"%="|"<<="|">>="|">>>=") -Operator = ({NonAssignmentOperator}|{AssignmentOperator}) - -Identifier = ({IdentifierStart}{IdentifierPart}*) -ErrorIdentifier = ({NonSeparator}+) - -URLGenDelim = ([:\/\?#\[\]@]) -URLSubDelim = ([\!\$&'\(\)\*\+,;=]) -URLUnreserved = ({LetterOrUnderscore}|{Digit}|[\-\.\~]) -URLCharacter = ({URLGenDelim}|{URLSubDelim}|{URLUnreserved}|[%]) -URLCharacters = ({URLCharacter}*) -URLEndCharacter = ([\/\$]|{Letter}|{Digit}) -URL = (((https?|f(tp|ile))"://"|"www.")({URLCharacters}{URLEndCharacter})?) - - -%state MLC -%state EOL_COMMENT - -%% - - { - - /* Keywords */ - "add" | - "and" | - "break" | - "case" | - "catch" | - "class" | - "const" | - "continue" | - "default" | - "delete" | - "do" | - "dynamic" | - "else" | - "eq" | - "extends" | - "final" | - "finally" | - "for" | - "for each" | - "function" | - "ge" | - "get" | - "gt" | - "if" | - "ifFrameLoaded" | - "implements" | - "import" | - "in" | - "include" | - "interface" | - "internal" | - "label" | - "le" | - "lt" | - "namespace" | - "native" | - "ne" | - "new" | - "not" | - "on" | - "onClipEvent" | - "or" | - "override" | - "package" | - "private" | - "protected" | - "public" | - "return" | - "set" | - "static" | - "super" | - "switch" | - "tellTarget" | - "this" | - "throw" | - "try" | - "typeof" | - "use" | - "var" | - "void" | - "while" | - "with" | - - "null" | - "undefined" { addToken(Token.RESERVED_WORD); } - - /* Built-in objects (good idea not to use these names!) */ - "Array" | - "Boolean" | - "Color" | - "Date" | - "Function" | - "int" | - "Key" | - "MovieClip" | - "Math" | - "Mouse" | - "Null" | - "Number" | - "Object" | - "Selection" | - "Sound" | - "String" | - "uint" | - "Vector" | - "void" | - "XML" | - "XMLNode" | - "XMLSocket" { addToken(Token.DATA_TYPE); } - - /* Global functions */ - "call" | - "escape" | - "eval" | - "fscommand" | - "getProperty" | - "getTimer" | - "getURL" | - "getVersion" | - "gotoAndPlay" | - "gotoAndStop" | - "#include" | - "int" | - "isFinite" | - "isNaN" | - "loadMovie" | - "loadMovieNum" | - "loadVariables" | - "loadVariablesNum" | - "maxscroll" | - "newline" | - "nextFrame" | - "nextScene" | - "Number" | - "parseFloat" | - "parseInt" | - "play" | - "prevFrame" | - "prevScene" | - "print" | - "printAsBitmap" | - "printAsBitmapNum" | - "printNum" | - "random" | - "removeMovieClip" | - "scroll" | - "setProperty" | - "startDrag" | - "stop" | - "stopAllSounds" | - "stopDrag" | - "String" | - "targetPath" | - "tellTarget" | - "toggleHighQuality" | - "trace" | - "unescape" | - "unloadMovie" | - "unloadMovieNum" | - "updateAfterEvent" { addToken(Token.FUNCTION); } - - /* Booleans. */ - {BooleanLiteral} { addToken(Token.LITERAL_BOOLEAN); } - - {LineTerminator} { addNullToken(); return firstToken; } - - {Identifier} { addToken(Token.IDENTIFIER); } - - {WhiteSpace}+ { addToken(Token.WHITESPACE); } - - /* String/Character literals. */ - {CharLiteral} { addToken(Token.LITERAL_CHAR); } - {UnclosedCharLiteral} { addToken(Token.ERROR_CHAR); addNullToken(); return firstToken; } - {ErrorCharLiteral} { addToken(Token.ERROR_CHAR); } - {StringLiteral} { addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); } - {UnclosedStringLiteral} { addToken(Token.ERROR_STRING_DOUBLE); addNullToken(); return firstToken; } - {ErrorStringLiteral} { addToken(Token.ERROR_STRING_DOUBLE); } - - /* Comment literals. */ - "/**/" { addToken(Token.COMMENT_MULTILINE); } - {MLCBegin} { start = zzMarkedPos-2; yybegin(MLC); } - {LineCommentBegin} { start = zzMarkedPos-2; yybegin(EOL_COMMENT); } - - /* Separators. */ - {Separator} { addToken(Token.SEPARATOR); } - {Separator2} { addToken(Token.IDENTIFIER); } - - /* Operators. */ - {Operator} { addToken(Token.OPERATOR); } - - /* Numbers */ - {IntegerLiteral} { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); } - {HexLiteral} { addToken(Token.LITERAL_NUMBER_HEXADECIMAL); } - {FloatLiteral} { addToken(Token.LITERAL_NUMBER_FLOAT); } - {ErrorNumberFormat} { addToken(Token.ERROR_NUMBER_FORMAT); } - - {ErrorIdentifier} { addToken(Token.ERROR_IDENTIFIER); } - - /* Ended with a line not in a string or comment. */ - <> { addNullToken(); return firstToken; } - - /* Catch any other (unhandled) characters and flag them as bad. */ - . { addToken(Token.ERROR_IDENTIFIER); } - -} - - - { - - [^hwf\n\*]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_MULTILINE); start = zzMarkedPos; } - [hwf] {} - - \n { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; } - {MLCEnd} { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); } - \* {} - <> { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; } - -} - - - { - [^hwf\n]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_EOL); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_EOL); start = zzMarkedPos; } - [hwf] {} - \n { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; } - <> { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; } - -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/ActionScriptTokenMaker.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/ActionScriptTokenMaker.java deleted file mode 100644 index 3393dca..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/ActionScriptTokenMaker.java +++ /dev/null @@ -1,2070 +0,0 @@ -/* The following code was generated by JFlex 1.4.1 on 5/12/10 4:49 PM */ - -/* - * 04/27/2010 - * - * ActionScriptTokenMaker.java - Scanner for ActionScript. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * Scanner for the ActionScript.

- * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated ActionScriptTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.5 - * - */ - -public class ActionScriptTokenMaker extends AbstractJFlexCTokenMaker { - - /** This character denotes the end of file */ - public static final int YYEOF = -1; - - /** lexical states */ - public static final int EOL_COMMENT = 2; - public static final int YYINITIAL = 0; - public static final int MLC = 1; - - /** - * Translates characters to character classes - */ - private static final String ZZ_CMAP_PACKED = - "\11\0\1\21\1\10\1\0\1\21\1\17\22\0\1\72\1\50\1\15"+ - "\1\20\1\1\1\50\1\52\1\7\2\55\1\23\1\43\1\42\1\31"+ - "\1\32\1\22\1\4\3\16\4\6\2\3\1\53\1\42\1\44\1\45"+ - "\1\47\1\51\1\54\1\100\1\5\1\76\1\26\1\30\1\74\1\1"+ - "\1\114\1\113\1\1\1\101\1\25\1\102\1\103\1\104\1\110\1\115"+ - "\1\112\1\106\1\77\1\111\1\107\1\1\1\24\2\1\1\55\1\11"+ - "\1\55\1\46\1\2\1\0\1\36\1\14\1\64\1\62\1\35\1\27"+ - "\1\73\1\56\1\60\1\105\1\63\1\37\1\67\1\13\1\65\1\57"+ - "\1\70\1\34\1\40\1\33\1\12\1\75\1\61\1\71\1\66\1\1"+ - "\1\41\1\46\1\41\1\51\uff81\0"; - - /** - * Translates characters to character classes - */ - private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); - - /** - * Translates DFA states to action switch labels. - */ - private static final int [] ZZ_ACTION = zzUnpackAction(); - - private static final String ZZ_ACTION_PACKED_0 = - "\3\0\1\1\1\2\2\3\1\2\1\4\1\5\3\2"+ - "\1\6\2\1\1\7\2\10\3\2\1\10\7\2\1\11"+ - "\1\2\5\10\22\2\1\12\1\13\5\12\1\14\3\12"+ - "\1\1\1\15\1\3\1\16\1\15\1\16\1\15\1\17"+ - "\1\15\1\2\1\4\1\20\1\0\1\4\5\2\1\21"+ - "\3\2\2\6\1\22\1\1\1\23\1\24\21\2\1\21"+ - "\12\2\1\0\1\10\4\2\2\21\11\2\1\21\2\2"+ - "\1\21\17\2\1\25\10\0\1\1\1\16\1\0\2\17"+ - "\1\2\1\4\1\26\2\4\1\20\1\4\6\2\1\21"+ - "\4\2\1\6\1\27\1\6\1\1\1\0\1\30\5\2"+ - "\1\21\23\2\1\21\11\2\1\30\20\2\1\21\4\2"+ - "\1\30\12\2\10\0\1\1\1\2\1\4\10\2\1\6"+ - "\1\1\1\31\5\2\1\0\1\32\13\2\1\33\3\2"+ - "\1\33\40\2\2\0\1\34\2\0\1\35\1\1\1\2"+ - "\1\4\7\2\1\6\1\1\4\2\1\21\1\0\17\2"+ - "\1\33\23\2\4\0\1\1\1\2\1\4\6\2\1\6"+ - "\1\1\4\2\1\0\35\2\1\1\2\2\1\0\24\2"+ - "\1\33\1\2\1\21\25\2\1\33\40\2"; - - private static int [] zzUnpackAction() { - int [] result = new int[531]; - int offset = 0; - offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAction(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /** - * Translates a state to a row index in the transition table - */ - private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); - - private static final String ZZ_ROWMAP_PACKED_0 = - "\0\0\0\116\0\234\0\352\0\u0138\0\u0186\0\u01d4\0\u0222"+ - "\0\u0270\0\u02be\0\u030c\0\u035a\0\u03a8\0\u03f6\0\u02be\0\u0444"+ - "\0\u0492\0\u04e0\0\u052e\0\u057c\0\u05ca\0\u0618\0\u0666\0\u06b4"+ - "\0\u0702\0\u0750\0\u079e\0\u07ec\0\u083a\0\u0888\0\u02be\0\u02be"+ - "\0\u08d6\0\u0924\0\u0972\0\u02be\0\u09c0\0\u0a0e\0\u0a5c\0\u0aaa"+ - "\0\u0af8\0\u0b46\0\u0b94\0\u0be2\0\u0c30\0\u0c7e\0\u0ccc\0\u0d1a"+ - "\0\u0d68\0\u0db6\0\u0e04\0\u0e52\0\u0ea0\0\u0eee\0\u0f3c\0\u0f8a"+ - "\0\u02be\0\u0fd8\0\u1026\0\u1074\0\u10c2\0\u1110\0\u02be\0\u115e"+ - "\0\u11ac\0\u11fa\0\u1248\0\u1296\0\u1296\0\u1296\0\u12e4\0\u1332"+ - "\0\u1380\0\u13ce\0\u141c\0\u146a\0\u14b8\0\u02be\0\u1506\0\u1554"+ - "\0\u15a2\0\u15f0\0\u163e\0\u168c\0\u16da\0\u1728\0\u1776\0\u17c4"+ - "\0\u1812\0\u1860\0\u18ae\0\u02be\0\u18fc\0\u02be\0\u194a\0\u1998"+ - "\0\u19e6\0\u1a34\0\u1a82\0\u1ad0\0\u1b1e\0\u1b6c\0\u1bba\0\u1c08"+ - "\0\u1c56\0\u1ca4\0\u1cf2\0\u1d40\0\u1d8e\0\u1ddc\0\u1e2a\0\u1e78"+ - "\0\u0138\0\u1ec6\0\u1f14\0\u1f62\0\u1fb0\0\u1ffe\0\u204c\0\u209a"+ - "\0\u20e8\0\u2136\0\u2184\0\u052e\0\u21d2\0\u2220\0\u226e\0\u22bc"+ - "\0\u230a\0\u2358\0\u23a6\0\u23f4\0\u2442\0\u2490\0\u24de\0\u252c"+ - "\0\u257a\0\u25c8\0\u2616\0\u2664\0\u26b2\0\u2700\0\u274e\0\u279c"+ - "\0\u27ea\0\u2838\0\u2886\0\u28d4\0\u2922\0\u2970\0\u29be\0\u2a0c"+ - "\0\u2a5a\0\u2aa8\0\u2af6\0\u2b44\0\u2b92\0\u2be0\0\u2c2e\0\u02be"+ - "\0\u2c7c\0\u2cca\0\u2d18\0\u2d66\0\u2db4\0\u2e02\0\u2e50\0\u2e9e"+ - "\0\u2eec\0\u2f3a\0\u2f88\0\u1296\0\u2fd6\0\u3024\0\u3072\0\u02be"+ - "\0\u30c0\0\u310e\0\u1506\0\u315c\0\u31aa\0\u31f8\0\u3246\0\u3294"+ - "\0\u32e2\0\u3330\0\u337e\0\u33cc\0\u341a\0\u3468\0\u34b6\0\u3504"+ - "\0\u02be\0\u3552\0\u35a0\0\u35ee\0\u363c\0\u368a\0\u36d8\0\u3726"+ - "\0\u3774\0\u37c2\0\u3810\0\u385e\0\u38ac\0\u38fa\0\u3948\0\u3996"+ - "\0\u39e4\0\u3a32\0\u3a80\0\u3ace\0\u3b1c\0\u3b6a\0\u3bb8\0\u3c06"+ - "\0\u3c54\0\u3ca2\0\u3cf0\0\u3d3e\0\u3d8c\0\u3dda\0\u3e28\0\u3e76"+ - "\0\u3ec4\0\u3f12\0\u3f60\0\u3fae\0\u3ffc\0\u404a\0\u4098\0\u40e6"+ - "\0\u4134\0\u4182\0\u41d0\0\u421e\0\u426c\0\u42ba\0\u4308\0\u4356"+ - "\0\u43a4\0\u43f2\0\u4440\0\u448e\0\u44dc\0\u452a\0\u4578\0\u45c6"+ - "\0\u4614\0\u4662\0\u46b0\0\u46fe\0\u474c\0\u479a\0\u0138\0\u47e8"+ - "\0\u4836\0\u4884\0\u48d2\0\u4920\0\u496e\0\u49bc\0\u4a0a\0\u4a58"+ - "\0\u4aa6\0\u4af4\0\u4b42\0\u4b90\0\u4bde\0\u4c2c\0\u4c7a\0\u4cc8"+ - "\0\u4d16\0\u4d64\0\u4db2\0\u4e00\0\u4e4e\0\u4e9c\0\u4eea\0\u4f38"+ - "\0\u4f86\0\u4fd4\0\u5022\0\u5070\0\u50be\0\u510c\0\u02be\0\u515a"+ - "\0\u51a8\0\u51f6\0\u5244\0\u5292\0\u52e0\0\u0138\0\u532e\0\u537c"+ - "\0\u53ca\0\u5418\0\u5466\0\u54b4\0\u5502\0\u5550\0\u559e\0\u55ec"+ - "\0\u563a\0\u0138\0\u5688\0\u56d6\0\u5724\0\u5772\0\u57c0\0\u580e"+ - "\0\u585c\0\u58aa\0\u58f8\0\u5946\0\u5994\0\u59e2\0\u5a30\0\u5a7e"+ - "\0\u5acc\0\u5b1a\0\u5b68\0\u5bb6\0\u5c04\0\u5c52\0\u5ca0\0\u5cee"+ - "\0\u5d3c\0\u5d8a\0\u5dd8\0\u5e26\0\u5e74\0\u5ec2\0\u5f10\0\u5f5e"+ - "\0\u5fac\0\u5ffa\0\u6048\0\u6096\0\u60e4\0\u6132\0\u6180\0\u61ce"+ - "\0\u621c\0\u626a\0\u62b8\0\u6306\0\u6354\0\u63a2\0\u63f0\0\u643e"+ - "\0\u648c\0\u64da\0\u6528\0\u6576\0\u65c4\0\u6612\0\u6660\0\u66ae"+ - "\0\u66fc\0\u674a\0\u6798\0\u67e6\0\u6834\0\u6882\0\u68d0\0\u691e"+ - "\0\u696c\0\u69ba\0\u6a08\0\u6a56\0\u6aa4\0\u6af2\0\u6b40\0\u6b8e"+ - "\0\u6bdc\0\u6c2a\0\u6c78\0\u6cc6\0\u6d14\0\u6d62\0\u6db0\0\u6dfe"+ - "\0\u6e4c\0\u6e9a\0\u6ee8\0\u6f36\0\u6f84\0\u6fd2\0\u7020\0\u706e"+ - "\0\u70bc\0\u710a\0\u7158\0\u71a6\0\u71f4\0\u7242\0\u7290\0\u72de"+ - "\0\u732c\0\u737a\0\u621c\0\u73c8\0\u6306\0\u7416\0\u7464\0\u74b2"+ - "\0\u7500\0\u754e\0\u759c\0\u75ea\0\u7638\0\u7686\0\u76d4\0\u7722"+ - "\0\u7770\0\u77be\0\u780c\0\u785a\0\u78a8\0\u78f6\0\u7944\0\u7992"+ - "\0\u79e0\0\u7a2e\0\u7a7c\0\u7aca\0\u7b18\0\u7b66\0\u7bb4\0\u7c02"+ - "\0\u7c50\0\u7c9e\0\u7cec\0\u7d3a\0\u7d88\0\u7dd6\0\u7e24\0\u7e72"+ - "\0\u7ec0\0\u7f0e\0\u7f5c\0\u7faa\0\u7ff8\0\u8046\0\u8094\0\u80e2"+ - "\0\u8130\0\u817e\0\u81cc\0\u821a\0\u8268\0\u82b6\0\u8304\0\u8352"+ - "\0\u83a0\0\u83ee\0\u843c\0\u848a\0\u84d8\0\u8526\0\u8574\0\u85c2"+ - "\0\u8610\0\u865e\0\u86ac\0\u86fa\0\u8748\0\u8796\0\u87e4\0\u8832"+ - "\0\u8880\0\u88ce\0\352\0\u891c\0\u02be\0\u896a\0\u89b8\0\u8a06"+ - "\0\u8a54\0\u8aa2\0\u8af0\0\u8b3e\0\u8b8c\0\u8bda\0\u8c28\0\u8c76"+ - "\0\u8cc4\0\u8d12\0\u8d60\0\u8dae\0\u8dfc\0\u8e4a\0\u8e98\0\u8ee6"+ - "\0\u8f34\0\u8f82\0\u8fd0\0\u901e\0\u906c\0\u90ba\0\u9108\0\u9156"+ - "\0\u91a4\0\u91f2\0\u9240\0\u928e\0\u92dc\0\u932a\0\u9378\0\u93c6"+ - "\0\u9414\0\u9462\0\u94b0\0\u94fe\0\u954c\0\u959a\0\u95e8\0\u9636"+ - "\0\u9684\0\u96d2\0\u9720\0\u976e\0\u97bc\0\u980a\0\u9858\0\u98a6"+ - "\0\u98f4\0\u9942\0\u9990"; - - private static int [] zzUnpackRowMap() { - int [] result = new int[531]; - int offset = 0; - offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackRowMap(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int high = packed.charAt(i++) << 16; - result[j++] = high | packed.charAt(i++); - } - return j; - } - - /** - * The transition table of the DFA - */ - private static final int [] ZZ_TRANS = zzUnpackTrans(); - - private static final String ZZ_TRANS_PACKED_0 = - "\1\4\2\5\1\6\1\7\1\10\1\6\1\11\1\12"+ - "\1\4\1\13\1\14\1\15\1\16\1\6\1\17\1\20"+ - "\1\21\1\22\1\23\1\24\1\5\1\25\1\26\1\5"+ - "\1\27\1\30\1\31\1\32\1\33\1\34\1\35\1\36"+ - "\1\37\1\40\1\41\1\42\2\23\1\43\1\23\1\44"+ - "\1\45\1\44\1\4\1\37\1\5\1\46\1\47\1\50"+ - "\1\51\1\5\1\52\1\53\1\5\1\54\2\5\1\21"+ - "\1\55\1\56\1\57\1\60\1\5\1\61\1\62\1\63"+ - "\1\64\1\65\1\5\1\66\1\67\6\5\10\70\1\71"+ - "\12\70\1\72\3\70\1\73\26\70\1\74\2\70\1\75"+ - "\34\70\10\76\1\77\16\76\1\100\26\76\1\101\2\76"+ - "\1\102\34\76\7\4\2\0\4\4\1\0\1\4\1\0"+ - "\1\4\3\0\5\4\2\0\6\4\13\0\1\4\1\0"+ - "\14\4\1\0\24\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\6\5\13\0"+ - "\1\4\1\0\14\5\1\0\23\5\3\104\2\6\1\104"+ - "\1\6\2\0\4\104\1\0\1\6\1\0\1\104\3\0"+ - "\1\104\1\105\2\106\1\107\1\0\1\110\2\104\1\107"+ - "\1\104\1\105\1\104\13\0\1\104\1\0\4\104\1\106"+ - "\7\104\1\0\1\104\1\106\24\104\1\111\1\112\1\104"+ - "\1\112\2\0\4\104\1\0\1\112\1\0\1\104\3\0"+ - "\1\113\1\105\2\106\1\107\1\0\1\110\2\104\1\107"+ - "\1\104\1\105\1\104\13\0\1\104\1\0\4\104\1\106"+ - "\6\104\1\113\1\0\1\104\1\106\21\104\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\6\5\13\0\1\4\1\0\7\5\1\114"+ - "\4\5\1\0\23\5\7\115\1\116\1\117\1\120\104\115"+ - "\116\0\1\4\6\5\2\0\1\103\1\5\1\121\1\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\5\5"+ - "\1\122\13\0\1\4\1\0\1\5\1\123\1\124\11\5"+ - "\1\0\23\5\1\4\6\5\2\0\1\103\1\125\2\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\2\5"+ - "\1\126\1\127\2\5\13\0\1\4\1\0\7\5\1\130"+ - "\4\5\1\0\23\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\1\5"+ - "\1\131\4\5\13\0\1\4\1\0\14\5\1\0\23\5"+ - "\10\16\1\132\1\133\3\16\1\134\100\16\7\4\2\0"+ - "\4\4\1\0\1\4\1\0\1\4\3\0\5\4\2\0"+ - "\6\4\13\0\1\4\1\0\2\4\1\135\11\4\1\0"+ - "\23\4\21\0\1\21\50\0\1\21\45\0\1\136\1\137"+ - "\21\0\1\44\115\0\1\44\50\0\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\6\5\13\0\1\4\1\0\14\5\1\0\7\5"+ - "\1\140\13\5\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\3\5\1\141"+ - "\2\5\13\0\1\4\1\0\14\5\1\0\23\5\1\4"+ - "\6\5\2\0\1\103\1\142\2\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\3\5\1\143\1\5\1\144"+ - "\13\0\1\4\1\0\2\5\1\145\4\5\1\146\4\5"+ - "\1\0\23\5\31\0\1\44\13\0\1\44\53\0\2\110"+ - "\1\0\1\110\7\0\1\110\77\0\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\1\5\1\147\1\150\1\151\2\5\13\0\1\4"+ - "\1\0\1\152\6\5\1\153\1\154\3\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\2\5\1\155\1\156\2\5"+ - "\13\0\1\4\1\0\14\5\1\0\23\5\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\4\5\1\157\1\160\13\0\1\4\1\0"+ - "\12\5\1\161\1\162\1\0\2\5\1\163\20\5\1\4"+ - "\6\5\2\0\1\103\1\5\1\164\1\5\1\0\1\5"+ - "\1\0\1\4\3\0\5\5\2\0\6\5\13\0\1\4"+ - "\1\0\4\5\1\164\7\5\1\0\23\5\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\1\161\1\5\1\161\1\165\2\5\13\0"+ - "\1\4\1\0\7\5\1\166\4\5\1\0\23\5\1\4"+ - "\6\5\2\0\1\103\1\167\2\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\1\170\1\5\1\171\3\5"+ - "\13\0\1\4\1\0\3\5\1\172\2\5\1\173\5\5"+ - "\1\0\23\5\43\0\1\44\1\0\1\44\114\0\1\174"+ - "\1\44\115\0\1\44\1\0\1\175\113\0\1\44\4\0"+ - "\1\44\43\0\1\4\6\5\2\0\1\103\1\176\2\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\1\5"+ - "\1\177\1\5\1\200\1\201\1\5\13\0\1\4\1\0"+ - "\14\5\1\0\23\5\1\4\6\5\2\0\1\103\1\5"+ - "\1\202\1\5\1\0\1\5\1\0\1\4\3\0\3\5"+ - "\1\203\1\5\2\0\5\5\1\204\13\0\1\4\1\0"+ - "\11\5\1\205\2\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\6\5\13\0\1\4\1\0\1\206\1\5\1\207"+ - "\11\5\1\0\23\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\2\5"+ - "\1\210\3\5\13\0\1\4\1\0\7\5\1\161\1\211"+ - "\3\5\1\0\23\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\3\5"+ - "\1\212\1\213\1\5\13\0\1\4\1\0\7\5\1\214"+ - "\4\5\1\0\23\5\1\4\6\5\2\0\1\103\1\5"+ - "\1\215\1\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\1\5\1\161\4\5\13\0\1\4\1\0\14\5"+ - "\1\0\2\5\1\216\20\5\1\4\6\5\2\0\1\103"+ - "\3\5\1\0\1\5\1\0\1\4\3\0\5\5\2\0"+ - "\3\5\1\217\2\5\13\0\1\4\1\0\14\5\1\0"+ - "\23\5\1\4\6\5\2\0\1\103\3\5\1\0\1\5"+ - "\1\0\1\4\3\0\5\5\2\0\1\161\1\5\1\220"+ - "\3\5\13\0\1\4\1\0\7\5\1\221\4\5\1\0"+ - "\23\5\1\4\6\5\2\0\1\103\1\222\2\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\6\5\13\0"+ - "\1\4\1\0\14\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\3\5\1\223\2\5\13\0\1\4\1\0\7\5"+ - "\1\224\4\5\1\0\23\5\1\4\6\5\2\0\1\103"+ - "\3\5\1\0\1\5\1\0\1\4\3\0\5\5\2\0"+ - "\6\5\13\0\1\4\1\0\7\5\1\225\4\5\1\0"+ - "\23\5\1\4\6\5\2\0\1\103\3\5\1\0\1\5"+ - "\1\0\1\4\3\0\5\5\2\0\1\5\1\226\4\5"+ - "\13\0\1\4\1\0\14\5\1\0\23\5\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\2\5\1\227\3\5\13\0\1\4\1\0"+ - "\14\5\1\0\23\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\3\5"+ - "\1\230\2\5\13\0\1\4\1\0\7\5\1\231\4\5"+ - "\1\0\23\5\1\4\6\5\2\0\1\103\1\232\2\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\6\5"+ - "\13\0\1\4\1\0\14\5\1\0\23\5\1\4\6\5"+ - "\2\0\1\103\2\5\1\233\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\6\5\13\0\1\4\1\0\14\5"+ - "\1\0\23\5\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\1\234\1\5"+ - "\1\235\3\5\13\0\1\4\1\0\7\5\1\236\4\5"+ - "\1\0\23\5\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\2\5\1\237"+ - "\3\5\13\0\1\4\1\0\14\5\1\0\23\5\10\70"+ - "\1\0\12\70\1\0\3\70\1\0\26\70\1\0\2\70"+ - "\1\0\34\70\22\0\1\240\126\0\1\241\24\0\1\242"+ - "\70\0\1\243\143\0\1\244\34\0\10\76\1\0\16\76"+ - "\1\0\26\76\1\0\2\76\1\0\34\76\33\0\1\245"+ - "\24\0\1\246\70\0\1\247\143\0\1\250\34\0\7\4"+ - "\2\0\1\4\1\251\2\4\1\0\1\4\1\0\1\4"+ - "\3\0\5\4\2\0\6\4\13\0\1\4\1\0\14\4"+ - "\1\0\23\4\7\104\2\0\4\104\1\0\1\104\1\0"+ - "\1\104\3\0\5\104\2\0\6\104\13\0\1\104\1\0"+ - "\14\104\1\0\26\104\2\252\1\104\1\252\2\0\4\104"+ - "\1\0\1\252\1\0\1\104\3\0\5\104\1\253\1\0"+ - "\6\104\2\0\1\253\10\0\1\104\1\0\14\104\1\0"+ - "\26\104\2\110\1\104\1\110\2\0\4\104\1\0\1\110"+ - "\1\0\1\104\3\0\2\104\2\106\1\107\2\0\2\104"+ - "\1\107\3\104\13\0\1\104\1\0\4\104\1\106\7\104"+ - "\1\0\1\104\1\106\24\104\2\111\1\104\1\111\2\0"+ - "\4\104\1\0\1\111\1\0\1\104\3\0\2\104\2\106"+ - "\1\107\1\0\1\110\2\104\1\107\3\104\13\0\1\104"+ - "\1\0\4\104\1\106\7\104\1\0\1\104\1\106\24\104"+ - "\1\111\1\112\1\104\1\112\2\0\4\104\1\0\1\112"+ - "\1\0\1\104\3\0\1\104\1\254\2\106\1\107\1\0"+ - "\1\110\2\104\1\107\1\104\1\254\1\104\13\0\1\104"+ - "\1\0\4\104\1\106\7\104\1\0\1\104\1\106\24\104"+ - "\4\255\2\0\3\104\1\255\1\0\1\255\1\0\1\104"+ - "\3\0\2\104\3\255\2\0\2\104\2\255\2\104\13\0"+ - "\1\104\1\0\4\104\1\255\1\104\1\255\5\104\1\0"+ - "\1\104\1\255\1\104\1\255\1\104\1\255\15\104\1\4"+ - "\6\5\2\0\1\103\3\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\6\5\13\0\1\4\1\0\7\5"+ - "\1\256\4\5\1\0\23\5\7\257\1\260\1\0\105\257"+ - "\7\0\1\260\106\0\4\257\1\261\1\257\1\262\1\263"+ - "\1\0\1\115\1\264\3\115\1\261\10\257\1\115\3\257"+ - "\2\115\61\257\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\2\5\1\265"+ - "\1\5\1\266\1\5\13\0\1\4\1\0\4\5\1\267"+ - "\7\5\1\0\23\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\2\5"+ - "\1\161\3\5\13\0\1\4\1\0\14\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\6\5\13\0\1\4\1\0"+ - "\4\5\1\270\7\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\1\5\1\271\1\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\6\5\13\0\1\4\1\0\14\5"+ - "\1\0\23\5\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\4\5\1\272"+ - "\1\5\13\0\1\4\1\0\14\5\1\0\23\5\1\4"+ - "\6\5\2\0\1\103\3\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\6\5\13\0\1\4\1\0\3\5"+ - "\1\273\7\5\1\274\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\1\275\5\5\13\0\1\4\1\0\11\5\1\276"+ - "\2\5\1\0\23\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\1\161"+ - "\5\5\13\0\1\4\1\0\14\5\1\0\23\5\1\4"+ - "\6\5\2\0\1\103\3\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\2\5\1\277\3\5\13\0\1\4"+ - "\1\0\14\5\1\0\23\5\11\132\1\300\3\132\1\301"+ - "\104\132\1\16\1\132\2\16\1\0\1\16\1\302\4\16"+ - "\10\132\1\16\3\132\2\16\61\132\7\4\2\0\2\4"+ - "\1\303\1\4\1\0\1\4\1\0\1\4\3\0\5\4"+ - "\2\0\6\4\13\0\1\4\1\0\14\4\1\0\23\4"+ - "\23\0\1\304\72\0\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\1\5\1\305\3\5"+ - "\2\0\6\5\13\0\1\4\1\0\14\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\1\306\5\5\13\0\1\4"+ - "\1\0\14\5\1\0\23\5\1\4\6\5\2\0\1\103"+ - "\1\5\1\307\1\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\6\5\13\0\1\4\1\0\14\5\1\0"+ - "\23\5\1\4\6\5\2\0\1\103\3\5\1\0\1\5"+ - "\1\0\1\4\3\0\5\5\2\0\4\5\1\310\1\5"+ - "\13\0\1\4\1\0\14\5\1\0\23\5\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\6\5\13\0\1\4\1\0\6\5\1\311"+ - "\5\5\1\0\23\5\1\4\6\5\2\0\1\103\1\5"+ - "\1\312\1\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\6\5\13\0\1\4\1\0\14\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\1\5\1\313\4\5\13\0"+ - "\1\4\1\0\14\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\1\314\2\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\3\5\1\315\2\5\13\0\1\4\1\0"+ - "\10\5\1\161\3\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\4\5\1\316\1\5\13\0\1\4\1\0\14\5"+ - "\1\0\23\5\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\1\5\1\317"+ - "\4\5\13\0\1\4\1\0\14\5\1\0\23\5\1\4"+ - "\6\5\2\0\1\103\3\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\1\5\1\320\4\5\13\0\1\4"+ - "\1\0\2\5\1\321\11\5\1\0\23\5\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\6\5\13\0\1\4\1\0\14\5\1\0"+ - "\1\322\22\5\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\6\5\13\0"+ - "\1\4\1\0\1\5\1\323\12\5\1\0\23\5\1\4"+ - "\6\5\2\0\1\103\3\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\1\324\5\5\13\0\1\4\1\0"+ - "\11\5\1\325\2\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\1\5\1\326\1\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\6\5\13\0\1\4\1\0\14\5"+ - "\1\0\23\5\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\5\5\1\122"+ - "\13\0\1\4\1\0\14\5\1\0\23\5\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\6\5\13\0\1\4\1\0\6\5\1\327"+ - "\5\5\1\0\23\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\1\330"+ - "\5\5\13\0\1\4\1\0\14\5\1\0\23\5\1\4"+ - "\6\5\2\0\1\103\3\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\3\5\1\331\2\5\13\0\1\4"+ - "\1\0\14\5\1\0\23\5\1\4\6\5\2\0\1\103"+ - "\3\5\1\0\1\5\1\0\1\4\3\0\5\5\2\0"+ - "\6\5\13\0\1\4\1\0\4\5\1\161\7\5\1\0"+ - "\23\5\1\4\6\5\2\0\1\103\2\5\1\332\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\6\5\13\0"+ - "\1\4\1\0\14\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\3\5\1\333\2\5\13\0\1\4\1\0\14\5"+ - "\1\0\23\5\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\6\5\13\0"+ - "\1\4\1\0\1\5\1\334\12\5\1\0\23\5\1\4"+ - "\6\5\2\0\1\103\3\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\3\5\1\335\2\5\13\0\1\4"+ - "\1\0\7\5\1\336\4\5\1\0\23\5\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\1\337\5\5\13\0\1\4\1\0\14\5"+ - "\1\0\23\5\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\6\5\13\0"+ - "\1\4\1\0\2\5\1\340\11\5\1\0\23\5\1\4"+ - "\6\5\2\0\1\103\3\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\1\5\1\341\4\5\13\0\1\4"+ - "\1\0\14\5\1\0\23\5\45\0\1\44\1\0\1\23"+ - "\46\0\1\4\6\5\2\0\1\103\2\5\1\342\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\6\5\13\0"+ - "\1\4\1\0\14\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\2\5\1\343\3\5\13\0\1\4\1\0\2\5"+ - "\1\344\4\5\1\345\4\5\1\0\23\5\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\1\5\1\346\4\5\13\0\1\4\1\0"+ - "\6\5\1\347\5\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\3\5\1\350\2\5\13\0\1\4\1\0\14\5"+ - "\1\0\23\5\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\1\351\5\5"+ - "\13\0\1\4\1\0\6\5\1\352\5\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\6\5\13\0\1\4\1\0"+ - "\14\5\1\0\1\5\1\353\21\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\6\5\13\0\1\4\1\0\14\5\1\0\1\5"+ - "\1\354\6\5\1\355\12\5\1\4\6\5\2\0\1\103"+ - "\3\5\1\0\1\5\1\0\1\4\3\0\5\5\2\0"+ - "\6\5\13\0\1\4\1\0\1\5\1\356\12\5\1\0"+ - "\23\5\1\4\6\5\2\0\1\103\3\5\1\0\1\5"+ - "\1\0\1\4\3\0\5\5\2\0\6\5\13\0\1\4"+ - "\1\0\2\5\1\357\11\5\1\0\23\5\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\1\360\5\5\13\0\1\4\1\0\14\5"+ - "\1\0\23\5\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\3\5\1\361\1\5\2\0"+ - "\4\5\1\362\1\5\13\0\1\4\1\0\14\5\1\0"+ - "\23\5\1\4\6\5\2\0\1\103\1\5\1\363\1\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\6\5"+ - "\13\0\1\4\1\0\14\5\1\0\23\5\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\1\364\3\5\1\331\1\122\13\0\1\4"+ - "\1\0\14\5\1\0\23\5\1\4\6\5\2\0\1\103"+ - "\3\5\1\0\1\5\1\0\1\4\3\0\5\5\2\0"+ - "\3\5\1\365\2\5\13\0\1\4\1\0\14\5\1\0"+ - "\23\5\1\4\6\5\2\0\1\103\1\5\1\366\1\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\6\5"+ - "\13\0\1\4\1\0\14\5\1\0\23\5\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\6\5\13\0\1\4\1\0\14\5\1\0"+ - "\3\5\1\367\17\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\2\5"+ - "\1\370\3\5\13\0\1\4\1\0\14\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\6\5\13\0\1\4\1\0"+ - "\13\5\1\371\1\0\23\5\1\4\6\5\2\0\1\103"+ - "\3\5\1\0\1\5\1\0\1\4\3\0\5\5\2\0"+ - "\1\372\5\5\13\0\1\4\1\0\14\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\1\373\5\5\13\0\1\4"+ - "\1\0\14\5\1\0\23\5\1\4\6\5\2\0\1\103"+ - "\1\5\1\374\1\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\6\5\13\0\1\4\1\0\14\5\1\0"+ - "\23\5\1\4\6\5\2\0\1\103\3\5\1\0\1\5"+ - "\1\0\1\4\3\0\5\5\2\0\1\5\1\161\4\5"+ - "\13\0\1\4\1\0\14\5\1\0\23\5\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\6\5\13\0\1\4\1\0\2\5\1\164"+ - "\11\5\1\0\23\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\4\5"+ - "\1\375\1\5\13\0\1\4\1\0\14\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\1\5\1\376\4\5\13\0"+ - "\1\4\1\0\14\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\6\5\13\0\1\4\1\0\10\5\1\377\3\5"+ - "\1\0\23\5\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\1\u0100\5\5"+ - "\13\0\1\4\1\0\14\5\1\0\23\5\1\4\6\5"+ - "\2\0\1\103\1\u0101\2\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\6\5\13\0\1\4\1\0\14\5"+ - "\1\0\2\5\1\u0102\20\5\1\4\6\5\2\0\1\103"+ - "\3\5\1\0\1\5\1\0\1\4\3\0\5\5\2\0"+ - "\4\5\1\u0103\1\5\13\0\1\4\1\0\11\5\1\u0104"+ - "\2\5\1\0\23\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\6\5"+ - "\13\0\1\4\1\0\14\5\1\0\12\5\1\u0105\10\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\1\5\1\u0106\4\5\13\0"+ - "\1\4\1\0\14\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\4\5\1\u0107\1\5\13\0\1\4\1\0\14\5"+ - "\1\0\23\5\1\4\6\5\2\0\1\103\1\u0108\2\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\6\5"+ - "\13\0\1\4\1\0\14\5\1\0\23\5\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\6\5\13\0\1\4\1\0\6\5\1\u0109"+ - "\5\5\1\0\23\5\57\0\1\u010a\75\0\1\u010b\111\0"+ - "\1\u010c\143\0\1\u010d\113\0\1\u010e\75\0\1\u010f\111\0"+ - "\1\u0110\143\0\1\u0111\34\0\3\4\4\u0112\2\0\3\4"+ - "\1\u0112\1\0\1\u0112\1\0\1\4\3\0\2\4\3\u0112"+ - "\2\0\2\4\2\u0112\2\4\13\0\1\4\1\0\4\4"+ - "\1\u0112\1\4\1\u0112\5\4\1\0\1\4\1\u0112\1\4"+ - "\1\u0112\1\4\1\u0112\15\4\3\104\2\252\1\104\1\252"+ - "\2\0\4\104\1\0\1\252\1\0\1\104\3\0\2\104"+ - "\2\106\1\104\2\0\6\104\13\0\1\104\1\0\4\104"+ - "\1\106\7\104\1\0\1\104\1\106\21\104\3\0\2\252"+ - "\1\0\1\252\7\0\1\252\77\0\3\104\4\255\2\0"+ - "\3\104\1\255\1\0\1\255\1\0\1\104\3\0\1\104"+ - "\1\254\3\255\2\0\2\104\2\255\1\254\1\104\13\0"+ - "\1\104\1\0\4\104\1\255\1\104\1\255\5\104\1\0"+ - "\1\104\1\255\1\104\1\255\1\104\1\255\15\104\1\4"+ - "\6\5\2\0\1\103\3\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\4\5\1\u0113\1\5\13\0\1\4"+ - "\1\0\14\5\1\0\23\5\7\257\1\116\1\0\111\257"+ - "\1\262\1\257\1\262\1\260\1\0\5\257\1\262\103\257"+ - "\1\115\1\257\1\115\1\260\1\0\5\257\1\115\102\257"+ - "\4\u0114\1\116\1\0\3\257\1\u0114\1\257\1\u0114\7\257"+ - "\3\u0114\4\257\2\u0114\23\257\1\u0114\1\257\1\u0114\7\257"+ - "\1\u0114\1\257\1\u0114\1\257\1\u0114\15\257\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\5\5\1\160\13\0\1\4\1\0\14\5"+ - "\1\0\23\5\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\6\5\13\0"+ - "\1\4\1\0\7\5\1\u0115\4\5\1\0\23\5\1\4"+ - "\6\5\2\0\1\103\3\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\2\5\1\u0116\3\5\13\0\1\4"+ - "\1\0\14\5\1\0\23\5\1\4\6\5\2\0\1\103"+ - "\3\5\1\0\1\5\1\0\1\4\3\0\5\5\2\0"+ - "\3\5\1\u0117\2\5\13\0\1\4\1\0\14\5\1\0"+ - "\23\5\1\4\6\5\2\0\1\103\3\5\1\0\1\5"+ - "\1\0\1\4\3\0\5\5\2\0\1\377\5\5\13\0"+ - "\1\4\1\0\14\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\4\5\1\161\1\5\13\0\1\4\1\0\14\5"+ - "\1\0\23\5\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\4\5\1\u0118"+ - "\1\5\13\0\1\4\1\0\14\5\1\0\23\5\1\4"+ - "\6\5\2\0\1\103\3\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\1\u0119\5\5\13\0\1\4\1\0"+ - "\14\5\1\0\23\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\6\5"+ - "\13\0\1\4\1\0\2\5\1\u011a\11\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\2\5\1\u011b\3\5\13\0"+ - "\1\4\1\0\14\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\3\5\1\u011c\2\5\13\0\1\4\1\0\14\5"+ - "\1\0\23\5\10\132\1\0\110\132\4\u011d\2\132\1\300"+ - "\2\132\1\u011d\1\301\1\u011d\7\132\3\u011d\4\132\2\u011d"+ - "\23\132\1\u011d\1\132\1\u011d\7\132\1\u011d\1\132\1\u011d"+ - "\1\132\1\u011d\15\132\7\4\2\0\4\4\1\0\1\4"+ - "\1\0\1\4\3\0\5\4\2\0\6\4\13\0\1\4"+ - "\1\0\6\4\1\u011e\5\4\1\0\23\4\22\0\1\u011f"+ - "\73\0\1\4\6\5\2\0\1\103\3\5\1\0\1\5"+ - "\1\0\1\4\3\0\5\5\2\0\6\5\13\0\1\4"+ - "\1\0\14\5\1\0\10\5\1\u0120\2\5\1\u0121\7\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\2\5\1\377\3\5\13\0"+ - "\1\4\1\0\14\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\6\5\13\0\1\4\1\0\6\5\1\u0122\5\5"+ - "\1\0\23\5\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\5\5\1\314"+ - "\13\0\1\4\1\0\14\5\1\0\23\5\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\6\5\13\0\1\4\1\0\7\5\1\u0123"+ - "\4\5\1\0\23\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\3\5"+ - "\1\u0124\2\5\13\0\1\4\1\0\14\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\6\5\13\0\1\4\1\0"+ - "\14\5\1\u0125\23\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\2\5"+ - "\1\u0126\3\5\13\0\1\4\1\0\14\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\6\5\13\0\1\4\1\0"+ - "\6\5\1\u0127\5\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\4\5\1\u0128\1\5\13\0\1\4\1\0\14\5"+ - "\1\0\23\5\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\6\5\13\0"+ - "\1\4\1\0\14\5\1\0\1\u0129\22\5\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\6\5\13\0\1\4\1\0\7\5\1\u012a"+ - "\4\5\1\0\23\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\5\5"+ - "\1\161\13\0\1\4\1\0\14\5\1\0\23\5\1\4"+ - "\6\5\2\0\1\103\3\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\6\5\13\0\1\4\1\0\14\5"+ - "\1\0\1\u012b\22\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\2\5"+ - "\1\u012c\3\5\13\0\1\4\1\0\14\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\1\u012d\2\5\1\0\1\5"+ - "\1\0\1\4\3\0\5\5\2\0\6\5\13\0\1\4"+ - "\1\0\14\5\1\0\23\5\1\4\6\5\2\0\1\103"+ - "\3\5\1\0\1\5\1\0\1\4\3\0\5\5\2\0"+ - "\6\5\13\0\1\4\1\0\7\5\1\u012e\4\5\1\0"+ - "\23\5\1\4\6\5\2\0\1\103\3\5\1\0\1\5"+ - "\1\0\1\4\3\0\5\5\2\0\6\5\13\0\1\4"+ - "\1\0\4\5\1\u012f\7\5\1\0\23\5\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\3\5\1\u0130\2\5\13\0\1\4\1\0"+ - "\14\5\1\0\23\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\2\5"+ - "\1\u0131\3\5\13\0\1\4\1\0\14\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\4\5\1\u0132\1\5\13\0"+ - "\1\4\1\0\14\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\2\5\1\272\3\5\13\0\1\4\1\0\14\5"+ - "\1\0\23\5\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\6\5\13\0"+ - "\1\4\1\0\4\5\1\u0133\7\5\1\0\23\5\1\4"+ - "\6\5\2\0\1\103\3\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\2\5\1\223\3\5\13\0\1\4"+ - "\1\0\14\5\1\0\23\5\1\4\6\5\2\0\1\103"+ - "\3\5\1\0\1\5\1\0\1\4\3\0\5\5\2\0"+ - "\1\u0134\1\u0135\4\5\13\0\1\4\1\0\14\5\1\0"+ - "\23\5\1\4\6\5\2\0\1\103\3\5\1\0\1\5"+ - "\1\0\1\4\3\0\5\5\2\0\6\5\13\0\1\4"+ - "\1\0\1\5\1\u0136\12\5\1\0\23\5\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\6\5\13\0\1\4\1\0\14\5\1\0"+ - "\15\5\1\u0137\5\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\1\364"+ - "\5\5\13\0\1\4\1\0\14\5\1\0\23\5\1\4"+ - "\6\5\2\0\1\103\3\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\6\5\13\0\1\4\1\0\7\5"+ - "\1\u0138\4\5\1\0\23\5\1\4\6\5\2\0\1\103"+ - "\3\5\1\0\1\5\1\0\1\4\3\0\5\5\2\0"+ - "\4\5\1\u0134\1\5\13\0\1\4\1\0\14\5\1\0"+ - "\23\5\1\4\6\5\2\0\1\103\3\5\1\0\1\5"+ - "\1\0\1\4\3\0\5\5\2\0\6\5\13\0\1\4"+ - "\1\0\14\5\1\0\2\5\1\u0119\20\5\1\4\6\5"+ - "\2\0\1\103\1\5\1\u0139\1\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\6\5\13\0\1\4\1\0"+ - "\14\5\1\0\2\5\1\u013a\20\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\1\u013b\5\5\13\0\1\4\1\0\14\5\1\0"+ - "\23\5\1\4\6\5\2\0\1\103\3\5\1\0\1\5"+ - "\1\0\1\4\3\0\5\5\2\0\5\5\1\u013c\13\0"+ - "\1\4\1\0\14\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\6\5\13\0\1\4\1\0\5\5\1\u013d\6\5"+ - "\1\0\23\5\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\6\5\13\0"+ - "\1\4\1\0\10\5\1\u0132\3\5\1\0\23\5\1\4"+ - "\6\5\2\0\1\103\3\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\2\5\1\u013e\3\5\13\0\1\4"+ - "\1\0\14\5\1\0\23\5\1\4\6\5\2\0\1\103"+ - "\3\5\1\0\1\5\1\0\1\4\3\0\5\5\2\0"+ - "\4\5\1\u013f\1\5\13\0\1\4\1\0\14\5\1\0"+ - "\23\5\1\4\6\5\2\0\1\103\3\5\1\0\1\5"+ - "\1\0\1\4\3\0\5\5\2\0\1\5\1\u0140\4\5"+ - "\13\0\1\4\1\0\14\5\1\0\23\5\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\6\5\13\0\1\4\1\0\2\5\1\u0141"+ - "\11\5\1\0\23\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\3\5"+ - "\1\u0142\2\5\13\0\1\4\1\0\14\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\4\5\1\u0143\1\5\13\0"+ - "\1\4\1\0\7\5\1\u0144\4\5\1\0\23\5\1\4"+ - "\6\5\2\0\1\103\3\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\4\5\1\122\1\5\13\0\1\4"+ - "\1\0\14\5\1\0\23\5\1\4\6\5\2\0\1\103"+ - "\3\5\1\0\1\5\1\0\1\4\3\0\5\5\2\0"+ - "\6\5\13\0\1\4\1\0\1\161\13\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\3\5\1\u0145\2\5\13\0"+ - "\1\4\1\0\14\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\2\5\1\u0146\3\5\13\0\1\4\1\0\14\5"+ - "\1\0\23\5\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\3\5\1\u0147"+ - "\2\5\13\0\1\4\1\0\14\5\1\0\23\5\1\4"+ - "\6\5\2\0\1\103\3\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\6\5\13\0\1\4\1\0\6\5"+ - "\1\360\5\5\1\0\23\5\1\4\6\5\2\0\1\103"+ - "\3\5\1\0\1\5\1\0\1\4\3\0\5\5\2\0"+ - "\5\5\1\321\13\0\1\4\1\0\14\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\1\u0148\4\5\1\130\13\0"+ - "\1\4\1\0\14\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\4\5\1\u0149\1\5\13\0\1\4\1\0\14\5"+ - "\1\0\23\5\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\1\5\1\u014a"+ - "\4\5\13\0\1\4\1\0\14\5\1\0\23\5\1\4"+ - "\6\5\2\0\1\103\3\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\5\5\1\u014b\13\0\1\4\1\0"+ - "\14\5\1\0\23\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\6\5"+ - "\13\0\1\4\1\0\14\5\1\0\4\5\1\u014c\7\5"+ - "\1\u014d\1\u0137\1\u014e\4\5\1\4\6\5\2\0\1\103"+ - "\3\5\1\0\1\5\1\0\1\4\3\0\5\5\2\0"+ - "\6\5\13\0\1\4\1\0\7\5\1\u014f\4\5\1\0"+ - "\23\5\1\4\6\5\2\0\1\103\3\5\1\0\1\5"+ - "\1\0\1\4\3\0\5\5\2\0\6\5\13\0\1\4"+ - "\1\0\6\5\1\u0150\5\5\1\0\23\5\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\6\5\13\0\1\4\1\0\7\5\1\u0151"+ - "\4\5\1\0\23\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\3\5"+ - "\1\227\2\5\13\0\1\4\1\0\14\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\6\5\13\0\1\4\1\0"+ - "\1\377\13\5\1\0\23\5\1\4\6\5\2\0\1\103"+ - "\3\5\1\0\1\5\1\0\1\4\3\0\5\5\2\0"+ - "\5\5\1\306\13\0\1\4\1\0\14\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\6\5\13\0\1\4\1\0"+ - "\2\5\1\u0152\11\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\4\5\1\377\1\5\13\0\1\4\1\0\14\5"+ - "\1\0\23\5\1\4\6\5\2\0\1\103\2\5\1\u0153"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\6\5"+ - "\13\0\1\4\1\0\14\5\1\0\23\5\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\2\5\1\u0154\3\5\13\0\1\4\1\0"+ - "\14\5\1\0\23\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\6\5"+ - "\13\0\1\4\1\0\2\5\1\u0155\11\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\2\5\1\374\3\5\13\0"+ - "\1\4\1\0\14\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\1\5\1\u0156\1\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\6\5\13\0\1\4\1\0\14\5"+ - "\1\0\23\5\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\1\375\5\5"+ - "\13\0\1\4\1\0\14\5\1\0\23\5\53\0\1\u0157"+ - "\77\0\1\u010a\137\0\1\u0158\70\0\1\u0159\136\0\1\u015a"+ - "\77\0\1\u010e\137\0\1\u015b\70\0\1\u015c\63\0\3\4"+ - "\4\u015d\2\0\3\4\1\u015d\1\0\1\u015d\1\0\1\4"+ - "\3\0\2\4\3\u015d\2\0\2\4\2\u015d\2\4\13\0"+ - "\1\4\1\0\4\4\1\u015d\1\4\1\u015d\5\4\1\0"+ - "\1\4\1\u015d\1\4\1\u015d\1\4\1\u015d\16\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\2\5\1\u015e\3\5\13\0\1\4\1\0"+ - "\14\5\1\0\23\5\3\257\4\u015f\1\116\1\0\3\257"+ - "\1\u015f\1\257\1\u015f\7\257\3\u015f\4\257\2\u015f\23\257"+ - "\1\u015f\1\257\1\u015f\7\257\1\u015f\1\257\1\u015f\1\257"+ - "\1\u015f\15\257\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\3\5\1\u0160"+ - "\2\5\13\0\1\4\1\0\14\5\1\0\23\5\1\4"+ - "\6\5\2\0\1\103\3\5\1\0\1\5\1\0\1\4"+ - "\3\0\3\5\1\u0161\1\5\2\0\6\5\13\0\1\4"+ - "\1\0\14\5\1\0\23\5\1\4\6\5\2\0\1\103"+ - "\3\5\1\0\1\5\1\0\1\4\3\0\5\5\2\0"+ - "\1\u0162\5\5\13\0\1\4\1\0\14\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\6\5\13\0\1\4\1\0"+ - "\2\5\1\u0163\11\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\6\5\13\0\1\4\1\0\14\5\1\0\1\5"+ - "\1\u0164\11\5\1\u0165\7\5\1\4\6\5\2\0\1\103"+ - "\3\5\1\0\1\5\1\0\1\4\3\0\5\5\2\0"+ - "\6\5\13\0\1\4\1\0\14\5\1\0\2\5\1\122"+ - "\20\5\1\4\6\5\2\0\1\103\3\5\1\0\1\5"+ - "\1\0\1\4\3\0\5\5\2\0\5\5\1\u0166\13\0"+ - "\1\4\1\0\14\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\6\5\13\0\1\4\1\0\5\5\1\161\6\5"+ - "\1\0\23\5\3\132\4\u0167\2\132\1\300\2\132\1\u0167"+ - "\1\301\1\u0167\7\132\3\u0167\4\132\2\u0167\23\132\1\u0167"+ - "\1\132\1\u0167\7\132\1\u0167\1\132\1\u0167\1\132\1\u0167"+ - "\15\132\7\4\2\0\4\4\1\0\1\4\1\0\1\4"+ - "\3\0\5\4\2\0\4\4\1\u0168\1\4\13\0\1\4"+ - "\1\0\14\4\1\0\24\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\6\5"+ - "\13\0\1\4\1\0\7\5\1\u0169\4\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\6\5\13\0\1\4\1\0"+ - "\7\5\1\u016a\4\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\1\u016b\5\5\13\0\1\4\1\0\14\5\1\0"+ - "\23\5\1\4\6\5\2\0\1\103\3\5\1\0\1\5"+ - "\1\0\1\4\3\0\5\5\2\0\6\5\13\0\1\4"+ - "\1\0\11\5\1\u016c\2\5\1\0\23\5\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\4\5\1\u016d\1\5\13\0\1\4\1\0"+ - "\14\5\1\0\23\5\35\0\1\u016e\60\0\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\2\5\1\u0132\3\5\13\0\1\4\1\0"+ - "\14\5\1\0\23\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\6\5"+ - "\13\0\1\4\1\0\14\5\1\0\4\5\1\u016f\16\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\2\5\1\u0170\3\5\13\0"+ - "\1\4\1\0\14\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\6\5\13\0\1\4\1\0\3\5\1\161\10\5"+ - "\1\0\23\5\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\4\5\1\u0171"+ - "\1\5\13\0\1\4\1\0\14\5\1\0\23\5\1\4"+ - "\6\5\2\0\1\103\3\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\6\5\13\0\1\4\1\0\7\5"+ - "\1\u0172\4\5\1\0\23\5\1\4\6\5\2\0\1\103"+ - "\3\5\1\0\1\5\1\0\1\4\3\0\5\5\2\0"+ - "\1\5\1\u0173\4\5\13\0\1\4\1\0\14\5\1\0"+ - "\23\5\1\4\6\5\2\0\1\103\3\5\1\0\1\5"+ - "\1\0\1\4\3\0\5\5\2\0\6\5\13\0\1\4"+ - "\1\0\14\5\1\0\2\5\1\u0174\20\5\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\6\5\13\0\1\4\1\0\7\5\1\u0175"+ - "\4\5\1\0\23\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\6\5"+ - "\13\0\1\4\1\0\1\5\1\u0127\12\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\1\5\1\u0176\1\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\6\5\13\0"+ - "\1\4\1\0\14\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\6\5\13\0\1\4\1\0\14\5\1\0\7\5"+ - "\1\u0177\4\5\1\u0178\6\5\1\4\6\5\2\0\1\103"+ - "\3\5\1\0\1\5\1\0\1\4\3\0\5\5\2\0"+ - "\6\5\13\0\1\4\1\0\2\5\1\u0179\11\5\1\0"+ - "\23\5\1\4\6\5\2\0\1\103\3\5\1\0\1\5"+ - "\1\0\1\4\3\0\5\5\2\0\1\u017a\5\5\13\0"+ - "\1\4\1\0\14\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\2\5"+ - "\1\u017b\2\5\2\0\6\5\13\0\1\4\1\0\14\5"+ - "\1\0\5\5\1\u017c\15\5\1\4\6\5\2\0\1\103"+ - "\3\5\1\0\1\5\1\0\1\4\3\0\5\5\2\0"+ - "\1\5\1\u017d\4\5\13\0\1\4\1\0\14\5\1\0"+ - "\23\5\1\4\6\5\2\0\1\103\3\5\1\0\1\5"+ - "\1\0\1\4\3\0\5\5\2\0\4\5\1\331\1\5"+ - "\13\0\1\4\1\0\14\5\1\0\23\5\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\1\u017e\5\5\13\0\1\4\1\0\14\5"+ - "\1\0\23\5\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\3\5\1\u0146"+ - "\2\5\13\0\1\4\1\0\14\5\1\0\23\5\1\4"+ - "\6\5\2\0\1\103\3\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\2\5\1\u017f\3\5\13\0\1\4"+ - "\1\0\14\5\1\0\23\5\1\4\6\5\2\0\1\103"+ - "\3\5\1\0\1\5\1\0\1\4\3\0\5\5\2\0"+ - "\2\5\1\u0180\3\5\13\0\1\4\1\0\14\5\1\0"+ - "\23\5\1\4\6\5\2\0\1\103\3\5\1\0\1\5"+ - "\1\0\1\4\3\0\5\5\2\0\3\5\1\u0181\2\5"+ - "\13\0\1\4\1\0\14\5\1\0\23\5\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\1\5\1\u0182\4\5\13\0\1\4\1\0"+ - "\14\5\1\0\23\5\1\4\6\5\2\0\1\103\1\u0183"+ - "\2\5\1\0\1\5\1\0\1\4\3\0\5\5\2\0"+ - "\6\5\13\0\1\4\1\0\14\5\1\0\23\5\1\4"+ - "\6\5\2\0\1\103\3\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\3\5\1\u0184\2\5\13\0\1\4"+ - "\1\0\14\5\1\0\23\5\1\4\6\5\2\0\1\103"+ - "\1\5\1\u0185\1\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\6\5\13\0\1\4\1\0\14\5\1\0"+ - "\23\5\1\4\6\5\2\0\1\103\3\5\1\0\1\5"+ - "\1\0\1\4\3\0\5\5\2\0\6\5\13\0\1\4"+ - "\1\0\14\5\1\0\10\5\1\u0132\12\5\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\2\5\1\u0186\3\5\13\0\1\4\1\0"+ - "\14\5\1\0\23\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\1\5"+ - "\1\130\4\5\13\0\1\4\1\0\14\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\1\u0187\2\5\1\0\1\5"+ - "\1\0\1\4\3\0\5\5\2\0\6\5\13\0\1\4"+ - "\1\0\14\5\1\0\23\5\1\4\6\5\2\0\1\103"+ - "\3\5\1\0\1\5\1\0\1\4\3\0\5\5\2\0"+ - "\1\122\5\5\13\0\1\4\1\0\14\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\6\5\13\0\1\4\1\0"+ - "\11\5\1\u0134\2\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\6\5\13\0\1\4\1\0\2\5\1\u0188\11\5"+ - "\1\0\23\5\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\6\5\13\0"+ - "\1\4\1\0\2\5\1\u0189\11\5\1\0\23\5\1\4"+ - "\6\5\2\0\1\103\3\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\1\5\1\u018a\4\5\13\0\1\4"+ - "\1\0\14\5\1\0\23\5\1\4\6\5\2\0\1\103"+ - "\3\5\1\0\1\5\1\0\1\4\3\0\5\5\2\0"+ - "\6\5\13\0\1\4\1\0\6\5\1\173\5\5\1\0"+ - "\23\5\1\4\6\5\2\0\1\103\3\5\1\0\1\5"+ - "\1\0\1\4\3\0\5\5\2\0\6\5\13\0\1\4"+ - "\1\0\2\5\1\u018b\11\5\1\0\23\5\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\2\5\1\u018c\3\5\13\0\1\4\1\0"+ - "\14\5\1\0\23\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\6\5"+ - "\13\0\1\4\1\0\14\5\1\0\17\5\1\u018d\3\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\6\5\13\0\1\4\1\0"+ - "\14\5\1\0\5\5\1\u018e\15\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\1\u018f\5\5\13\0\1\4\1\0\14\5\1\0"+ - "\23\5\1\4\6\5\2\0\1\103\3\5\1\0\1\5"+ - "\1\0\1\4\3\0\5\5\2\0\1\5\1\377\4\5"+ - "\13\0\1\4\1\0\14\5\1\0\23\5\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\2\5\1\u0190\3\5\13\0\1\4\1\0"+ - "\14\5\1\0\23\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\2\5"+ - "\1\u0151\3\5\13\0\1\4\1\0\14\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\6\5\13\0\1\4\1\0"+ - "\6\5\1\271\5\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\1\5\1\u0191\1\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\6\5\13\0\1\4\1\0\14\5"+ - "\1\0\23\5\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\6\5\13\0"+ - "\1\4\1\0\4\5\1\377\7\5\1\0\23\5\22\0"+ - "\1\u0192\133\0\1\u010a\12\0\1\u0157\43\0\1\u0159\1\u0193"+ - "\4\u0159\1\u0193\2\0\3\u0159\1\0\1\u0159\1\0\1\u0193"+ - "\1\0\1\u0159\1\u0193\5\u0159\2\u0193\6\u0159\1\0\2\u0193"+ - "\1\0\1\u0193\2\0\6\u0193\14\u0159\1\0\23\u0159\22\0"+ - "\1\u0194\133\0\1\u010e\12\0\1\u015a\43\0\1\u015c\1\u0195"+ - "\4\u015c\1\u0195\2\0\3\u015c\1\0\1\u015c\1\0\1\u0195"+ - "\1\0\1\u015c\1\u0195\5\u015c\2\u0195\6\u015c\1\0\2\u0195"+ - "\1\0\1\u0195\2\0\6\u0195\14\u015c\1\0\23\u015c\3\4"+ - "\4\u0196\2\0\3\4\1\u0196\1\0\1\u0196\1\0\1\4"+ - "\3\0\2\4\3\u0196\2\0\2\4\2\u0196\2\4\13\0"+ - "\1\4\1\0\4\4\1\u0196\1\4\1\u0196\5\4\1\0"+ - "\1\4\1\u0196\1\4\1\u0196\1\4\1\u0196\16\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\3\5\1\u0197\2\5\13\0\1\4\1\0"+ - "\14\5\1\0\23\5\3\257\4\u0198\1\116\1\0\3\257"+ - "\1\u0198\1\257\1\u0198\7\257\3\u0198\4\257\2\u0198\23\257"+ - "\1\u0198\1\257\1\u0198\7\257\1\u0198\1\257\1\u0198\1\257"+ - "\1\u0198\15\257\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\6\5\13\0"+ - "\1\4\1\0\4\5\1\u0199\7\5\1\0\23\5\1\4"+ - "\6\5\2\0\1\103\3\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\6\5\13\0\1\4\1\0\2\5"+ - "\1\u019a\11\5\1\0\23\5\1\4\6\5\2\0\1\103"+ - "\3\5\1\0\1\5\1\0\1\4\3\0\5\5\2\0"+ - "\2\5\1\u019b\3\5\13\0\1\4\1\0\14\5\1\0"+ - "\23\5\1\4\6\5\2\0\1\103\1\5\1\u0127\1\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\6\5"+ - "\13\0\1\4\1\0\14\5\1\0\23\5\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\1\5\1\u019c\4\5\13\0\1\4\1\0"+ - "\14\5\1\0\23\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\6\5"+ - "\13\0\1\4\1\0\6\5\1\u019d\5\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\6\5\13\0\1\4\1\0"+ - "\1\5\1\u019e\12\5\1\0\23\5\3\132\4\u019f\2\132"+ - "\1\300\2\132\1\u019f\1\301\1\u019f\7\132\3\u019f\4\132"+ - "\2\u019f\23\132\1\u019f\1\132\1\u019f\7\132\1\u019f\1\132"+ - "\1\u019f\1\132\1\u019f\15\132\7\4\2\0\1\4\1\u01a0"+ - "\2\4\1\0\1\4\1\0\1\4\3\0\5\4\2\0"+ - "\6\4\13\0\1\4\1\0\14\4\1\0\24\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\6\5\13\0\1\4\1\0\4\5\1\306"+ - "\7\5\1\0\23\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\6\5"+ - "\13\0\1\4\1\0\6\5\1\u01a1\5\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\6\5\13\0\1\4\1\0"+ - "\2\5\1\u01a2\11\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\6\5\13\0\1\4\1\0\11\5\1\u01a3\2\5"+ - "\1\0\23\5\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\4\5\1\u01a4"+ - "\1\5\13\0\1\4\1\0\14\5\1\0\23\5\36\0"+ - "\1\u01a5\57\0\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\3\5\1\u01a6"+ - "\2\5\13\0\1\4\1\0\14\5\1\0\23\5\1\4"+ - "\6\5\2\0\1\103\3\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\1\u01a7\5\5\13\0\1\4\1\0"+ - "\14\5\1\0\23\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\2\5"+ - "\1\u01a8\3\5\13\0\1\4\1\0\14\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\3\5\1\161\1\5\2\0\6\5\13\0"+ - "\1\4\1\0\14\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\1\5\1\161\1\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\6\5\13\0\1\4\1\0\14\5"+ - "\1\0\23\5\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\2\5\1\u01a9"+ - "\3\5\13\0\1\4\1\0\14\5\1\0\23\5\1\4"+ - "\6\5\2\0\1\103\3\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\6\5\13\0\1\4\1\0\11\5"+ - "\1\u0132\2\5\1\0\23\5\1\4\6\5\2\0\1\103"+ - "\3\5\1\0\1\5\1\0\1\4\3\0\5\5\2\0"+ - "\6\5\13\0\1\4\1\0\4\5\1\321\7\5\1\0"+ - "\23\5\1\4\6\5\2\0\1\103\3\5\1\0\1\5"+ - "\1\0\1\4\3\0\5\5\2\0\6\5\13\0\1\4"+ - "\1\0\7\5\1\u01aa\4\5\1\0\23\5\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\3\5\1\u01ab\2\5\13\0\1\4\1\0"+ - "\14\5\1\0\23\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\6\5"+ - "\13\0\1\4\1\0\6\5\1\161\5\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\2\5\1\u017b\2\5\2\0\6\5\13\0"+ - "\1\4\1\0\14\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\1\5\1\u01ac\4\5\13\0\1\4\1\0\14\5"+ - "\1\0\23\5\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\4\5\1\u01ad"+ - "\1\5\13\0\1\4\1\0\14\5\1\0\23\5\1\4"+ - "\6\5\2\0\1\103\3\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\6\5\13\0\1\4\1\0\7\5"+ - "\1\u01ae\4\5\1\0\23\5\1\4\6\5\2\0\1\103"+ - "\3\5\1\0\1\5\1\0\1\4\3\0\5\5\2\0"+ - "\6\5\13\0\1\4\1\0\14\5\1\0\5\5\1\u01af"+ - "\2\5\1\u01b0\12\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\6\5"+ - "\13\0\1\4\1\0\6\5\1\u01b1\5\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\6\5\13\0\1\4\1\0"+ - "\14\5\1\0\1\5\1\u01b2\16\5\1\u01b3\2\5\1\4"+ - "\6\5\2\0\1\103\3\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\6\5\13\0\1\4\1\0\14\5"+ - "\1\0\1\122\22\5\1\4\6\5\2\0\1\103\1\5"+ - "\1\u01b4\1\5\1\0\1\5\1\0\1\4\3\0\3\5"+ - "\1\u019e\1\5\2\0\6\5\13\0\1\4\1\0\14\5"+ - "\1\0\23\5\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\6\5\13\0"+ - "\1\4\1\0\4\5\1\122\7\5\1\0\23\5\1\4"+ - "\6\5\2\0\1\103\3\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\6\5\13\0\1\4\1\0\11\5"+ - "\1\u01b5\2\5\1\0\23\5\1\4\6\5\2\0\1\103"+ - "\3\5\1\0\1\5\1\0\1\4\3\0\5\5\2\0"+ - "\6\5\13\0\1\4\1\0\2\5\1\u01b6\11\5\1\0"+ - "\23\5\1\4\6\5\2\0\1\103\3\5\1\0\1\5"+ - "\1\0\1\4\3\0\5\5\2\0\6\5\13\0\1\4"+ - "\1\0\11\5\1\u01b7\2\5\1\0\23\5\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\4\5\1\130\1\5\13\0\1\4\1\0"+ - "\14\5\1\0\23\5\1\4\6\5\2\0\1\103\1\5"+ - "\1\u01b8\1\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\6\5\13\0\1\4\1\0\14\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\6\5\13\0\1\4\1\0"+ - "\1\5\1\u01b9\12\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\6\5\13\0\1\4\1\0\2\5\1\u0183\11\5"+ - "\1\0\23\5\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\6\5\13\0"+ - "\1\4\1\0\11\5\1\u01ba\2\5\1\0\23\5\1\4"+ - "\6\5\2\0\1\103\3\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\1\5\1\u01bb\4\5\13\0\1\4"+ - "\1\0\14\5\1\0\23\5\1\4\6\5\2\0\1\103"+ - "\3\5\1\0\1\5\1\0\1\4\3\0\1\5\1\u0132"+ - "\3\5\2\0\6\5\13\0\1\4\1\0\14\5\1\0"+ - "\23\5\1\4\6\5\2\0\1\103\1\5\1\u01bc\1\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\6\5"+ - "\13\0\1\4\1\0\14\5\1\0\23\5\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\6\5\13\0\1\4\1\0\2\5\1\u01bd"+ - "\11\5\1\0\23\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\6\5"+ - "\13\0\1\4\1\0\14\5\1\0\3\5\1\u01be\17\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\6\5\13\0\1\4\1\0"+ - "\14\5\1\0\1\377\22\5\22\0\1\u0159\115\0\1\u015c"+ - "\73\0\3\4\4\5\2\0\3\4\1\5\1\0\1\5"+ - "\1\0\1\4\3\0\2\4\3\5\2\0\2\4\2\5"+ - "\2\4\13\0\1\4\1\0\4\4\1\5\1\4\1\5"+ - "\5\4\1\0\1\4\1\5\1\4\1\5\1\4\1\5"+ - "\16\4\6\5\2\0\1\103\1\5\1\377\1\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\6\5\13\0"+ - "\1\4\1\0\14\5\1\0\23\5\3\257\4\115\1\116"+ - "\1\0\3\257\1\115\1\257\1\115\7\257\3\115\4\257"+ - "\2\115\23\257\1\115\1\257\1\115\7\257\1\115\1\257"+ - "\1\115\1\257\1\115\15\257\1\4\6\5\2\0\1\103"+ - "\3\5\1\0\1\5\1\0\1\4\3\0\5\5\2\0"+ - "\6\5\13\0\1\4\1\0\14\5\1\0\7\5\1\u0177"+ - "\13\5\1\4\6\5\2\0\1\103\1\5\1\u01bf\1\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\6\5"+ - "\13\0\1\4\1\0\14\5\1\0\23\5\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\6\5\13\0\1\4\1\0\14\5\1\0"+ - "\5\5\1\u01c0\15\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\3\5"+ - "\1\u01c1\2\5\13\0\1\4\1\0\14\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\2\5\1\u0163\3\5\13\0"+ - "\1\4\1\0\14\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\3\5\1\u01c2\2\5\13\0\1\4\1\0\14\5"+ - "\1\0\23\5\3\132\4\16\2\132\1\300\2\132\1\16"+ - "\1\301\1\16\7\132\3\16\4\132\2\16\23\132\1\16"+ - "\1\132\1\16\7\132\1\16\1\132\1\16\1\132\1\16"+ - "\15\132\7\4\2\0\4\4\1\0\1\4\1\0\1\4"+ - "\3\0\5\4\2\0\6\4\13\0\1\4\1\0\4\4"+ - "\1\u01c3\7\4\1\0\24\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\6\5"+ - "\13\0\1\4\1\0\5\5\1\u01c4\6\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\6\5\13\0\1\4\1\0"+ - "\7\5\1\u0173\4\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\3\5\1\u01c5\2\5\13\0\1\4\1\0\14\5"+ - "\1\0\23\5\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\6\5\13\0"+ - "\1\4\1\0\10\5\1\161\3\5\1\0\23\5\64\0"+ - "\1\u01c6\31\0\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\1\5\1\u01c7"+ - "\4\5\13\0\1\4\1\0\14\5\1\0\23\5\1\4"+ - "\6\5\2\0\1\103\3\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\6\5\13\0\1\4\1\0\14\5"+ - "\1\0\15\5\1\u01c8\5\5\1\4\6\5\2\0\1\103"+ - "\3\5\1\0\1\5\1\0\1\4\3\0\5\5\2\0"+ - "\6\5\13\0\1\4\1\0\14\5\1\0\21\5\1\u01c9"+ - "\1\5\1\4\6\5\2\0\1\103\3\5\1\0\1\5"+ - "\1\0\1\4\3\0\5\5\2\0\6\5\13\0\1\4"+ - "\1\0\14\5\1\0\7\5\1\u01ca\13\5\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\6\5\13\0\1\4\1\0\14\5\1\0"+ - "\2\5\1\u01cb\20\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\1\5"+ - "\1\u01cc\4\5\13\0\1\4\1\0\14\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\3\5\1\u01cd\2\5\13\0"+ - "\1\4\1\0\14\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\4\5\1\u01ce\1\5\13\0\1\4\1\0\14\5"+ - "\1\0\23\5\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\6\5\13\0"+ - "\1\4\1\0\1\5\1\u01cf\12\5\1\0\23\5\1\4"+ - "\6\5\2\0\1\103\3\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\5\5\1\u01d0\13\0\1\4\1\0"+ - "\14\5\1\0\23\5\1\4\6\5\2\0\1\103\1\u0175"+ - "\2\5\1\0\1\5\1\0\1\4\3\0\5\5\2\0"+ - "\6\5\13\0\1\4\1\0\14\5\1\0\23\5\1\4"+ - "\6\5\2\0\1\103\3\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\1\u01bf\5\5\13\0\1\4\1\0"+ - "\14\5\1\0\23\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\4\5"+ - "\1\u01d1\1\5\13\0\1\4\1\0\14\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\1\5\1\u01d2\1\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\6\5\13\0"+ - "\1\4\1\0\14\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\3\5\1\272\2\5\13\0\1\4\1\0\14\5"+ - "\1\0\23\5\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\2\5\1\u01d3"+ - "\3\5\13\0\1\4\1\0\14\5\1\0\23\5\1\4"+ - "\6\5\2\0\1\103\3\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\1\u0127\5\5\13\0\1\4\1\0"+ - "\14\5\1\0\23\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\2\5"+ - "\1\u01d4\3\5\13\0\1\4\1\0\14\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\1\122\2\5\1\0\1\5"+ - "\1\0\1\4\3\0\5\5\2\0\6\5\13\0\1\4"+ - "\1\0\14\5\1\0\23\5\1\4\6\5\2\0\1\103"+ - "\3\5\1\0\1\5\1\0\1\4\3\0\4\5\1\u01d5"+ - "\2\0\6\5\13\0\1\4\1\0\14\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\2\5\1\u01d6\3\5\13\0"+ - "\1\4\1\0\14\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\5\5\1\u01d7\13\0\1\4\1\0\14\5\1\0"+ - "\23\5\1\4\6\5\2\0\1\103\3\5\1\0\1\5"+ - "\1\0\1\4\3\0\5\5\2\0\6\5\13\0\1\4"+ - "\1\0\4\5\1\u01d8\7\5\1\0\23\5\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\6\5\13\0\1\4\1\0\7\5\1\u0197"+ - "\4\5\1\0\23\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\4\5"+ - "\1\u01d9\1\5\13\0\1\4\1\0\14\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\2\5\1\164\3\5\13\0"+ - "\1\4\1\0\14\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\3\5"+ - "\1\u01da\1\5\2\0\6\5\13\0\1\4\1\0\14\5"+ - "\1\0\23\5\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\6\5\13\0"+ - "\1\4\1\0\11\5\1\u0127\2\5\1\0\23\5\1\4"+ - "\6\5\2\0\1\103\3\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\6\5\13\0\1\4\1\0\6\5"+ - "\1\122\5\5\1\0\23\5\7\4\2\0\4\4\1\0"+ - "\1\4\1\0\1\4\3\0\5\4\2\0\2\4\1\u01db"+ - "\3\4\13\0\1\4\1\0\14\4\1\0\24\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\2\5\1\271\3\5\13\0\1\4\1\0"+ - "\14\5\1\0\23\5\1\4\6\5\2\0\1\103\1\5"+ - "\1\u01dc\1\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\6\5\13\0\1\4\1\0\14\5\1\0\23\5"+ - "\56\0\1\u01dd\37\0\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\6\5"+ - "\13\0\1\4\1\0\14\5\1\0\1\u01de\22\5\1\4"+ - "\6\5\2\0\1\103\3\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\3\5\1\u01df\2\5\13\0\1\4"+ - "\1\0\14\5\1\0\23\5\1\4\6\5\2\0\1\103"+ - "\3\5\1\0\1\5\1\0\1\4\3\0\5\5\2\0"+ - "\6\5\13\0\1\4\1\0\2\5\1\u01e0\11\5\1\0"+ - "\23\5\1\4\6\5\2\0\1\103\3\5\1\0\1\5"+ - "\1\0\1\4\3\0\5\5\2\0\6\5\13\0\1\4"+ - "\1\0\7\5\1\u01e1\4\5\1\0\23\5\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\6\5\13\0\1\4\1\0\2\5\1\u01e2"+ - "\11\5\1\0\23\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\6\5"+ - "\13\0\1\4\1\0\2\5\1\u01e3\11\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\6\5\13\0\1\4\1\0"+ - "\14\5\1\0\1\u0132\22\5\1\4\6\5\2\0\1\103"+ - "\3\5\1\0\1\5\1\0\1\4\3\0\5\5\2\0"+ - "\6\5\13\0\1\4\1\0\14\5\1\0\13\5\1\u01e4"+ - "\7\5\1\4\6\5\2\0\1\103\3\5\1\0\1\5"+ - "\1\0\1\4\3\0\5\5\2\0\2\5\1\u01e5\3\5"+ - "\13\0\1\4\1\0\14\5\1\0\23\5\1\4\4\5"+ - "\1\u01e6\1\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\6\5\13\0\1\4\1\0"+ - "\14\5\1\0\23\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\6\5"+ - "\13\0\1\4\1\0\7\5\1\u01e7\4\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\1\u0132\5\5\13\0\1\4"+ - "\1\0\14\5\1\0\23\5\1\4\6\5\2\0\1\103"+ - "\3\5\1\0\1\5\1\0\1\4\3\0\1\5\1\u01e8"+ - "\3\5\2\0\6\5\13\0\1\4\1\0\14\5\1\0"+ - "\23\5\1\4\6\5\2\0\1\103\1\5\1\u01e9\1\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\6\5"+ - "\13\0\1\4\1\0\14\5\1\0\23\5\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\6\5\13\0\1\4\1\0\14\5\1\0"+ - "\2\5\1\u01ea\20\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\1\5"+ - "\1\u0132\4\5\13\0\1\4\1\0\14\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\6\5\13\0\1\4\1\0"+ - "\2\5\1\u01eb\11\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\6\5\13\0\1\4\1\0\14\5\1\0\13\5"+ - "\1\u01ec\1\5\1\u01ed\5\5\1\4\6\5\2\0\1\103"+ - "\3\5\1\0\1\5\1\0\1\4\3\0\5\5\2\0"+ - "\6\5\13\0\1\4\1\0\2\5\1\u01ee\11\5\1\0"+ - "\23\5\1\4\6\5\2\0\1\103\3\5\1\0\1\5"+ - "\1\0\1\4\3\0\5\5\2\0\1\u01ef\5\5\13\0"+ - "\1\4\1\0\14\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\6\5\13\0\1\4\1\0\4\5\1\u0132\7\5"+ - "\1\0\23\5\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\2\5\1\130"+ - "\3\5\13\0\1\4\1\0\14\5\1\0\23\5\1\4"+ - "\6\5\2\0\1\103\3\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\1\u01f0\5\5\13\0\1\4\1\0"+ - "\14\5\1\0\23\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\6\5"+ - "\13\0\1\4\1\0\14\5\1\0\1\u01f1\22\5\1\4"+ - "\6\5\2\0\1\103\3\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\6\5\13\0\1\4\1\0\14\5"+ - "\1\0\2\5\1\u01f2\20\5\1\4\6\5\2\0\1\103"+ - "\3\5\1\0\1\5\1\0\1\4\3\0\5\5\2\0"+ - "\2\5\1\u01f3\3\5\13\0\1\4\1\0\14\5\1\0"+ - "\23\5\1\4\6\5\2\0\1\103\3\5\1\0\1\5"+ - "\1\0\1\4\3\0\5\5\2\0\3\5\1\u01f4\2\5"+ - "\13\0\1\4\1\0\14\5\1\0\23\5\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\6\5\13\0\1\4\1\0\7\5\1\u01f5"+ - "\4\5\1\0\23\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\1\5"+ - "\1\u01f6\4\5\13\0\1\4\1\0\14\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\6\5\13\0\1\4\1\0"+ - "\2\5\1\u01f7\11\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\3\5\1\u01d2\2\5\13\0\1\4\1\0\14\5"+ - "\1\0\23\5\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\6\5\13\0"+ - "\1\4\1\0\7\5\1\u01f8\4\5\1\0\23\5\1\4"+ - "\6\5\2\0\1\103\3\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\1\321\5\5\13\0\1\4\1\0"+ - "\14\5\1\0\23\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\2\5"+ - "\1\u01f9\3\5\13\0\1\4\1\0\14\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\6\5\13\0\1\4\1\0"+ - "\7\5\1\u01fa\4\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\1\u01fb\5\5\13\0\1\4\1\0\14\5\1\0"+ - "\23\5\1\4\6\5\2\0\1\103\3\5\1\0\1\5"+ - "\1\0\1\4\3\0\5\5\2\0\4\5\1\201\1\5"+ - "\13\0\1\4\1\0\14\5\1\0\23\5\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\6\5\13\0\1\4\1\0\1\5\1\377"+ - "\12\5\1\0\23\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\2\5"+ - "\1\u01fc\3\5\13\0\1\4\1\0\14\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\6\5\13\0\1\4\1\0"+ - "\1\u0132\13\5\1\0\23\5\1\4\6\5\2\0\1\103"+ - "\3\5\1\0\1\5\1\0\1\4\3\0\5\5\2\0"+ - "\6\5\13\0\1\4\1\0\1\u01fd\13\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\6\5\13\0\1\4\1\0"+ - "\2\5\1\u01fe\11\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\6\5\13\0\1\4\1\0\14\5\1\0\10\5"+ - "\1\u01b0\12\5\1\4\6\5\2\0\1\103\2\5\1\u01ff"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\6\5"+ - "\13\0\1\4\1\0\14\5\1\0\23\5\1\4\6\5"+ - "\2\0\1\103\1\u0200\2\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\6\5\13\0\1\4\1\0\14\5"+ - "\1\0\23\5\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\1\350\5\5"+ - "\13\0\1\4\1\0\14\5\1\0\23\5\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\1\u0201\5\5\13\0\1\4\1\0\14\5"+ - "\1\0\23\5\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\3\5\1\u0202"+ - "\2\5\13\0\1\4\1\0\14\5\1\0\23\5\1\4"+ - "\6\5\2\0\1\103\1\5\1\130\1\5\1\0\1\5"+ - "\1\0\1\4\3\0\5\5\2\0\6\5\13\0\1\4"+ - "\1\0\14\5\1\0\23\5\1\4\6\5\2\0\1\103"+ - "\1\5\1\u0132\1\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\6\5\13\0\1\4\1\0\14\5\1\0"+ - "\23\5\1\4\6\5\2\0\1\103\3\5\1\0\1\5"+ - "\1\0\1\4\3\0\5\5\2\0\6\5\13\0\1\4"+ - "\1\0\7\5\1\u0203\4\5\1\0\23\5\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\1\5\1\u0204\4\5\13\0\1\4\1\0"+ - "\14\5\1\0\23\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\6\5"+ - "\13\0\1\4\1\0\14\5\1\0\22\5\1\u0205\1\4"+ - "\6\5\2\0\1\103\3\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\2\5\1\u0206\3\5\13\0\1\4"+ - "\1\0\14\5\1\0\23\5\1\4\6\5\2\0\1\103"+ - "\3\5\1\0\1\5\1\0\1\4\3\0\5\5\2\0"+ - "\4\5\1\u0207\1\5\13\0\1\4\1\0\14\5\1\0"+ - "\23\5\1\4\6\5\2\0\1\103\1\5\1\u0208\1\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\6\5"+ - "\13\0\1\4\1\0\14\5\1\0\23\5\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\6\5\13\0\1\4\1\0\11\5\1\u0209"+ - "\2\5\1\0\23\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\6\5"+ - "\13\0\1\4\1\0\4\5\1\u01bf\7\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\6\5\13\0\1\4\1\0"+ - "\1\5\1\u0132\12\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\4\5"+ - "\1\u020a\2\0\6\5\13\0\1\4\1\0\14\5\1\0"+ - "\23\5\1\4\6\5\2\0\1\103\1\u020b\2\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\6\5\13\0"+ - "\1\4\1\0\14\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\6\5\13\0\1\4\1\0\14\5\1\0\3\5"+ - "\1\u020c\17\5\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\2\5\1\u020d"+ - "\3\5\13\0\1\4\1\0\14\5\1\0\23\5\1\4"+ - "\6\5\2\0\1\103\3\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\6\5\13\0\1\4\1\0\4\5"+ - "\1\u020e\7\5\1\0\23\5\1\4\6\5\2\0\1\103"+ - "\3\5\1\0\1\5\1\0\1\4\3\0\5\5\2\0"+ - "\3\5\1\u020f\2\5\13\0\1\4\1\0\14\5\1\0"+ - "\23\5\1\4\6\5\2\0\1\103\3\5\1\0\1\5"+ - "\1\0\1\4\3\0\5\5\2\0\6\5\13\0\1\4"+ - "\1\0\14\5\1\0\2\5\1\u0210\20\5\1\4\6\5"+ - "\2\0\1\103\3\5\1\0\1\5\1\0\1\4\3\0"+ - "\5\5\2\0\3\5\1\u0211\2\5\13\0\1\4\1\0"+ - "\14\5\1\0\23\5\1\4\6\5\2\0\1\103\3\5"+ - "\1\0\1\5\1\0\1\4\3\0\5\5\2\0\4\5"+ - "\1\u0212\1\5\13\0\1\4\1\0\14\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\5\5\1\u01f3\13\0\1\4"+ - "\1\0\14\5\1\0\23\5\1\4\6\5\2\0\1\103"+ - "\3\5\1\0\1\5\1\0\1\4\3\0\5\5\2\0"+ - "\5\5\1\u0132\13\0\1\4\1\0\14\5\1\0\23\5"+ - "\1\4\6\5\2\0\1\103\3\5\1\0\1\5\1\0"+ - "\1\4\3\0\5\5\2\0\6\5\13\0\1\4\1\0"+ - "\1\5\1\u01f3\12\5\1\0\23\5\1\4\6\5\2\0"+ - "\1\103\3\5\1\0\1\5\1\0\1\4\3\0\5\5"+ - "\2\0\2\5\1\u01b3\3\5\13\0\1\4\1\0\14\5"+ - "\1\0\23\5\1\4\6\5\2\0\1\103\3\5\1\0"+ - "\1\5\1\0\1\4\3\0\5\5\2\0\4\5\1\u0213"+ - "\1\5\13\0\1\4\1\0\14\5\1\0\23\5\1\4"+ - "\6\5\2\0\1\103\3\5\1\0\1\5\1\0\1\4"+ - "\3\0\5\5\2\0\6\5\13\0\1\4\1\0\2\5"+ - "\1\u0203\11\5\1\0\23\5\1\4\6\5\2\0\1\103"+ - "\3\5\1\0\1\5\1\0\1\4\3\0\5\5\2\0"+ - "\6\5\13\0\1\4\1\0\2\5\1\u01f6\11\5\1\0"+ - "\23\5"; - - private static int [] zzUnpackTrans() { - int [] result = new int[39390]; - int offset = 0; - offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackTrans(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - value--; - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /* error codes */ - private static final int ZZ_UNKNOWN_ERROR = 0; - private static final int ZZ_NO_MATCH = 1; - private static final int ZZ_PUSHBACK_2BIG = 2; - - /* error messages for the codes above */ - private static final String ZZ_ERROR_MSG[] = { - "Unkown internal scanner error", - "Error: could not match input", - "Error: pushback value was too large" - }; - - /** - * ZZ_ATTRIBUTE[aState] contains the attributes of state aState - */ - private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); - - private static final String ZZ_ATTRIBUTE_PACKED_0 = - "\3\0\6\1\1\11\4\1\1\11\17\1\2\11\3\1"+ - "\1\11\24\1\1\11\5\1\1\11\16\1\1\11\1\0"+ - "\14\1\1\11\1\1\1\11\35\1\1\0\43\1\1\11"+ - "\10\0\2\1\1\0\4\1\1\11\20\1\1\11\2\1"+ - "\1\0\105\1\10\0\15\1\1\11\5\1\1\0\61\1"+ - "\2\0\1\1\2\0\22\1\1\0\43\1\4\0\17\1"+ - "\1\0\40\1\1\0\26\1\1\11\66\1"; - - private static int [] zzUnpackAttribute() { - int [] result = new int[531]; - int offset = 0; - offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAttribute(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - /** the input device */ - private java.io.Reader zzReader; - - /** the current state of the DFA */ - private int zzState; - - /** the current lexical state */ - private int zzLexicalState = YYINITIAL; - - /** this buffer contains the current text to be matched and is - the source of the yytext() string */ - private char zzBuffer[]; - - /** the textposition at the last accepting state */ - private int zzMarkedPos; - - /** the current text position in the buffer */ - private int zzCurrentPos; - - /** startRead marks the beginning of the yytext() string in the buffer */ - private int zzStartRead; - - /** endRead marks the last character in the buffer, that has been read - from input */ - private int zzEndRead; - - /** zzAtEOF == true <=> the scanner is at the EOF */ - private boolean zzAtEOF; - - /* user code: */ - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public ActionScriptTokenMaker() { - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addToken(int, int, int) - */ - private void addHyperlinkToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, true); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addHyperlinkToken(int, int, int) - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, false); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - * @param hyperlink Whether this token is a hyperlink. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, - int startOffset, boolean hyperlink) { - super.addToken(array, start,end, tokenType, startOffset, hyperlink); - zzStartRead = zzMarkedPos; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { "//", null }; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - - // Start off in the proper state. - int state = Token.NULL; - switch (initialTokenType) { - case Token.COMMENT_MULTILINE: - state = MLC; - start = text.offset; - break; - default: - state = Token.NULL; - } - - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(java.io.Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtEOF = false; - } - - - - - /** - * Creates a new scanner - * There is also a java.io.InputStream version of this constructor. - * - * @param in the java.io.Reader to read input from. - */ - public ActionScriptTokenMaker(java.io.Reader in) { - this.zzReader = in; - } - - /** - * Creates a new scanner. - * There is also java.io.Reader version of this constructor. - * - * @param in the java.io.Inputstream to read input from. - */ - public ActionScriptTokenMaker(java.io.InputStream in) { - this(new java.io.InputStreamReader(in)); - } - - /** - * Unpacks the compressed character translation table. - * - * @param packed the packed character translation table - * @return the unpacked character translation table - */ - private static char [] zzUnpackCMap(String packed) { - char [] map = new char[0x10000]; - int i = 0; /* index in packed string */ - int j = 0; /* index in unpacked array */ - while (i < 190) { - int count = packed.charAt(i++); - char value = packed.charAt(i++); - do map[j++] = value; while (--count > 0); - } - return map; - } - - - /** - * Closes the input stream. - */ - public final void yyclose() throws java.io.IOException { - zzAtEOF = true; /* indicate end of file */ - zzEndRead = zzStartRead; /* invalidate buffer */ - - if (zzReader != null) - zzReader.close(); - } - - - /** - * Returns the current lexical state. - */ - public final int yystate() { - return zzLexicalState; - } - - - /** - * Enters a new lexical state - * - * @param newState the new lexical state - */ - @Override -public final void yybegin(int newState) { - zzLexicalState = newState; - } - - - /** - * Returns the text matched by the current regular expression. - */ - public final String yytext() { - return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead ); - } - - - /** - * Returns the character at position pos from the - * matched text. - * - * It is equivalent to yytext().charAt(pos), but faster - * - * @param pos the position of the character to fetch. - * A value from 0 to yylength()-1. - * - * @return the character at position pos - */ - public final char yycharat(int pos) { - return zzBuffer[zzStartRead+pos]; - } - - - /** - * Returns the length of the matched text region. - */ - public final int yylength() { - return zzMarkedPos-zzStartRead; - } - - - /** - * Reports an error that occured while scanning. - * - * In a wellformed scanner (no or only correct usage of - * yypushback(int) and a match-all fallback rule) this method - * will only be called with things that "Can't Possibly Happen". - * If this method is called, something is seriously wrong - * (e.g. a JFlex bug producing a faulty scanner etc.). - * - * Usual syntax/scanner level error handling should be done - * in error fallback rules. - * - * @param errorCode the code of the errormessage to display - */ - private void zzScanError(int errorCode) { - String message; - try { - message = ZZ_ERROR_MSG[errorCode]; - } - catch (ArrayIndexOutOfBoundsException e) { - message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; - } - - throw new Error(message); - } - - - /** - * Pushes the specified amount of characters back into the input stream. - * - * They will be read again by then next call of the scanning method - * - * @param number the number of characters to be read again. - * This number must not be greater than yylength()! - */ - public void yypushback(int number) { - if ( number > yylength() ) - zzScanError(ZZ_PUSHBACK_2BIG); - - zzMarkedPos -= number; - } - - - /** - * Resumes scanning until the next regular expression is matched, - * the end of input is encountered or an I/O-Error occurs. - * - * @return the next token - * @exception java.io.IOException if any I/O-Error occurs - */ - public org.fife.ui.rsyntaxtextarea.Token yylex() throws java.io.IOException { - int zzInput; - int zzAction; - - // cached fields: - int zzCurrentPosL; - int zzMarkedPosL; - int zzEndReadL = zzEndRead; - char [] zzBufferL = zzBuffer; - char [] zzCMapL = ZZ_CMAP; - - int [] zzTransL = ZZ_TRANS; - int [] zzRowMapL = ZZ_ROWMAP; - int [] zzAttrL = ZZ_ATTRIBUTE; - - while (true) { - zzMarkedPosL = zzMarkedPos; - - zzAction = -1; - - zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; - - zzState = zzLexicalState; - - - zzForAction: { - while (true) { - - if (zzCurrentPosL < zzEndReadL) - zzInput = zzBufferL[zzCurrentPosL++]; - else if (zzAtEOF) { - zzInput = YYEOF; - break zzForAction; - } - else { - // store back cached positions - zzCurrentPos = zzCurrentPosL; - zzMarkedPos = zzMarkedPosL; - boolean eof = zzRefill(); - // get translated positions and possibly new buffer - zzCurrentPosL = zzCurrentPos; - zzMarkedPosL = zzMarkedPos; - zzBufferL = zzBuffer; - zzEndReadL = zzEndRead; - if (eof) { - zzInput = YYEOF; - break zzForAction; - } - else { - zzInput = zzBufferL[zzCurrentPosL++]; - } - } - int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; - if (zzNext == -1) break zzForAction; - zzState = zzNext; - - int zzAttributes = zzAttrL[zzState]; - if ( (zzAttributes & 1) == 1 ) { - zzAction = zzState; - zzMarkedPosL = zzCurrentPosL; - if ( (zzAttributes & 8) == 8 ) break zzForAction; - } - - } - } - - // store back cached position - zzMarkedPos = zzMarkedPosL; - - switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { - case 5: - { addNullToken(); return firstToken; - } - case 30: break; - case 22: - { addToken(Token.LITERAL_CHAR); - } - case 31: break; - case 21: - { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); - } - case 32: break; - case 25: - { addToken(Token.COMMENT_MULTILINE); - } - case 33: break; - case 20: - { start = zzMarkedPos-2; yybegin(MLC); - } - case 34: break; - case 7: - { addToken(Token.WHITESPACE); - } - case 35: break; - case 15: - { addToken(Token.LITERAL_NUMBER_HEXADECIMAL); - } - case 36: break; - case 23: - { addToken(Token.ERROR_STRING_DOUBLE); - } - case 37: break; - case 14: - { addToken(Token.LITERAL_NUMBER_FLOAT); - } - case 38: break; - case 17: - { addToken(Token.RESERVED_WORD); - } - case 39: break; - case 9: - { addToken(Token.SEPARATOR); - } - case 40: break; - case 2: - { addToken(Token.IDENTIFIER); - } - case 41: break; - case 12: - { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; - } - case 42: break; - case 19: - { start = zzMarkedPos-2; yybegin(EOL_COMMENT); - } - case 43: break; - case 27: - { addToken(Token.FUNCTION); - } - case 44: break; - case 4: - { addToken(Token.ERROR_CHAR); addNullToken(); return firstToken; - } - case 45: break; - case 6: - { addToken(Token.ERROR_STRING_DOUBLE); addNullToken(); return firstToken; - } - case 46: break; - case 24: - { addToken(Token.DATA_TYPE); - } - case 47: break; - case 1: - { addToken(Token.ERROR_IDENTIFIER); - } - case 48: break; - case 16: - { addToken(Token.ERROR_CHAR); - } - case 49: break; - case 26: - { addToken(Token.LITERAL_BOOLEAN); - } - case 50: break; - case 18: - { addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); - } - case 51: break; - case 29: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_EOL); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_EOL); start = zzMarkedPos; - } - case 52: break; - case 28: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_MULTILINE); start = zzMarkedPos; - } - case 53: break; - case 13: - { addToken(Token.ERROR_NUMBER_FORMAT); - } - case 54: break; - case 3: - { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); - } - case 55: break; - case 8: - { addToken(Token.OPERATOR); - } - case 56: break; - case 10: - { - } - case 57: break; - case 11: - { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; - } - case 58: break; - default: - if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { - zzAtEOF = true; - switch (zzLexicalState) { - case EOL_COMMENT: { - addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; - } - case 532: break; - case YYINITIAL: { - addNullToken(); return firstToken; - } - case 533: break; - case MLC: { - addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; - } - case 534: break; - default: - return null; - } - } - else { - zzScanError(ZZ_NO_MATCH); - } - } - } - } - - -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/AssemblerX86TokenMaker.flex b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/AssemblerX86TokenMaker.flex deleted file mode 100644 index cb28dd0..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/AssemblerX86TokenMaker.flex +++ /dev/null @@ -1,1032 +0,0 @@ -/* - * 12/06/2004 - * - * AssemblerX86TokenMaker.java - An object that can take a chunk of text and - * return a linked list of tokens representing X86 assembler. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * This class takes plain text and returns tokens representing x86 - * assembler.

- * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated AssemblerX86TokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.2 - * - */ -%% - -%public -%class AssemblerX86TokenMaker -%extends AbstractJFlexTokenMaker -%unicode -%ignorecase -%type org.fife.ui.rsyntaxtextarea.Token - - -%{ - - - /** - * Constructor. We must have this here as JFLex does not generate a - * no parameter constructor. - */ - public AssemblerX86TokenMaker() { - super(); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, int startOffset) { - super.addToken(array, start,end, tokenType, startOffset); - zzStartRead = zzMarkedPos; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { ";", null }; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - - // Start off in the proper state. - int state = Token.NULL; - switch (initialTokenType) { - default: - state = Token.NULL; - } - - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = zzPushbackPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtBOL = true; - zzAtEOF = false; - } - - -%} - -Letter = ([A-Za-z_]) -Digit = ([0-9]) -Number = ({Digit}+) - -Identifier = (({Letter}|{Digit})[^ \t\f\n\,\.\+\-\*\/\%\[\]]+) - -UnclosedStringLiteral = ([\"][^\"]*) -StringLiteral = ({UnclosedStringLiteral}[\"]) -UnclosedCharLiteral = ([\'][^\']*) -CharLiteral = ({UnclosedCharLiteral}[\']) - -CommentBegin = ([;]) - -LineTerminator = (\n) -WhiteSpace = ([ \t\f]) - -Label = (({Letter}|{Digit})+[\:]) - -Operator = ("+"|"-"|"*"|"/"|"%"|"^"|"|"|"&"|"~"|"!"|"="|"<"|">") - -%% - - { - - /* Keywords */ - ".186" | - ".286" | - ".286P" | - ".287" | - ".386" | - ".386P" | - ".387" | - ".486" | - ".486P" | - ".586" | - ".586P" | - ".686" | - ".686P" | - ".8086" | - ".8087" | - ".ALPHA" | - ".BREAK" | - ".BSS" | - ".CODE" | - ".CONST" | - ".CONTINUE" | - ".CREF" | - ".DATA" | - ".DATA?" | - ".DOSSEG" | - ".ELSE" | - ".ELSEIF" | - ".ENDIF" | - ".ENDW" | - ".ERR" | - ".ERR1" | - ".ERR2" | - ".ERRB" | - ".ERRDEF" | - ".ERRDIF" | - ".ERRDIFI" | - ".ERRE" | - ".ERRIDN" | - ".ERRIDNI" | - ".ERRNB" | - ".ERRNDEF" | - ".ERRNZ" | - ".EXIT" | - ".FARDATA" | - ".FARDATA?" | - ".IF" | - ".K3D" | - ".LALL" | - ".LFCOND" | - ".LIST" | - ".LISTALL" | - ".LISTIF" | - ".LISTMACRO" | - ".LISTMACROALL" | - ".MMX" | - ".MODEL" | - ".MSFLOAT" | - ".NO87" | - ".NOCREF" | - ".NOLIST" | - ".NOLISTIF" | - ".NOLISTMACRO" | - ".RADIX" | - ".REPEAT" | - ".SALL" | - ".SEQ" | - ".SFCOND" | - ".STACK" | - ".STARTUP" | - ".TEXT" | - ".TFCOND" | - ".UNTIL" | - ".UNTILCXZ" | - ".WHILE" | - ".XALL" | - ".XCREF" | - ".XLIST" | - ".XMM" | - "__FILE__" | - "__LINE__" | - "A16" | - "A32" | - "ADDR" | - "ALIGN" | - "ALIGNB" | - "ASSUME" | - "BITS" | - "CARRY?" | - "CATSTR" | - "CODESEG" | - "COMM" | - "COMMENT" | - "COMMON" | - "DATASEG" | - "DOSSEG" | - "ECHO" | - "ELSE" | - "ELSEIF" | - "ELSEIF1" | - "ELSEIF2" | - "ELSEIFB" | - "ELSEIFDEF" | - "ELSEIFE" | - "ELSEIFIDN" | - "ELSEIFNB" | - "ELSEIFNDEF" | - "END" | - "ENDIF" | - "ENDM" | - "ENDP" | - "ENDS" | - "ENDSTRUC" | - "EVEN" | - "EXITM" | - "EXPORT" | - "EXTERN" | - "EXTERNDEF" | - "EXTRN" | - "FAR" | - "FOR" | - "FORC" | - "GLOBAL" | - "GOTO" | - "GROUP" | - "HIGH" | - "HIGHWORD" | - "IEND" | - "IF" | - "IF1" | - "IF2" | - "IFB" | - "IFDEF" | - "IFDIF" | - "IFDIFI" | - "IFE" | - "IFIDN" | - "IFIDNI" | - "IFNB" | - "IFNDEF" | - "IMPORT" | - "INCBIN" | - "INCLUDE" | - "INCLUDELIB" | - "INSTR" | - "INVOKE" | - "IRP" | - "IRPC" | - "ISTRUC" | - "LABEL" | - "LENGTH" | - "LENGTHOF" | - "LOCAL" | - "LOW" | - "LOWWORD" | - "LROFFSET" | - "MACRO" | - "NAME" | - "NEAR" | - "NOSPLIT" | - "O16" | - "O32" | - "OFFSET" | - "OPATTR" | - "OPTION" | - "ORG" | - "OVERFLOW?" | - "PAGE" | - "PARITY?" | - "POPCONTEXT" | - "PRIVATE" | - "PROC" | - "PROTO" | - "PTR" | - "PUBLIC" | - "PURGE" | - "PUSHCONTEXT" | - "RECORD" | - "REPEAT" | - "REPT" | - "SECTION" | - "SEG" | - "SEGMENT" | - "SHORT" | - "SIGN?" | - "SIZE" | - "SIZEOF" | - "SIZESTR" | - "STACK" | - "STRUC" | - "STRUCT" | - "SUBSTR" | - "SUBTITLE" | - "SUBTTL" | - "THIS" | - "TITLE" | - "TYPE" | - "TYPEDEF" | - "UNION" | - "USE16" | - "USE32" | - "USES" | - "WHILE" | - "WRT" | - "ZERO?" { addToken(Token.PREPROCESSOR); } - - "DB" | - "DW" | - "DD" | - "DF" | - "DQ" | - "DT" | - "RESB" | - "RESW" | - "RESD" | - "RESQ" | - "REST" | - "EQU" | - "TEXTEQU" | - "TIMES" | - "DUP" { addToken(Token.FUNCTION); } - - "BYTE" | - "WORD" | - "DWORD" | - "FWORD" | - "QWORD" | - "TBYTE" | - "SBYTE" | - "TWORD" | - "SWORD" | - "SDWORD" | - "REAL4" | - "REAL8" | - "REAL10" { addToken(Token.DATA_TYPE); } - - /* Registers */ - "AL" | - "BL" | - "CL" | - "DL" | - "AH" | - "BH" | - "CH" | - "DH" | - "AX" | - "BX" | - "CX" | - "DX" | - "SI" | - "DI" | - "SP" | - "BP" | - "EAX" | - "EBX" | - "ECX" | - "EDX" | - "ESI" | - "EDI" | - "ESP" | - "EBP" | - "CS" | - "DS" | - "SS" | - "ES" | - "FS" | - "GS" | - "ST" | - "ST0" | - "ST1" | - "ST2" | - "ST3" | - "ST4" | - "ST5" | - "ST6" | - "ST7" | - "MM0" | - "MM1" | - "MM2" | - "MM3" | - "MM4" | - "MM5" | - "MM6" | - "MM7" | - "XMM0" | - "XMM1" | - "XMM2" | - "XMM3" | - "XMM4" | - "XMM5" | - "XMM6" | - "XMM7" | - "CR0" | - "CR2" | - "CR3" | - "CR4" | - "DR0" | - "DR1" | - "DR2" | - "DR3" | - "DR4" | - "DR5" | - "DR6" | - "DR7" | - "TR3" | - "TR4" | - "TR5" | - "TR6" | - "TR7" { addToken(Token.VARIABLE); } - - /* Pentium III Instructions. */ - "AAA" | - "AAD" | - "AAM" | - "AAS" | - "ADC" | - "ADD" | - "ADDPS" | - "ADDSS" | - "AND" | - "ANDNPS" | - "ANDPS" | - "ARPL" | - "BOUND" | - "BSF" | - "BSR" | - "BSWAP" | - "BT" | - "BTC" | - "BTR" | - "BTS" | - "CALL" | - "CBW" | - "CDQ" | - "CLC" | - "CLD" | - "CLI" | - "CLTS" | - "CMC" | - "CMOVA" | - "CMOVAE" | - "CMOVB" | - "CMOVBE" | - "CMOVC" | - "CMOVE" | - "CMOVG" | - "CMOVGE" | - "CMOVL" | - "CMOVLE" | - "CMOVNA" | - "CMOVNAE" | - "CMOVNB" | - "CMOVNBE" | - "CMOVNC" | - "CMOVNE" | - "CMOVNG" | - "CMOVNGE" | - "CMOVNL" | - "CMOVNLE" | - "CMOVNO" | - "CMOVNP" | - "CMOVNS" | - "CMOVNZ" | - "CMOVO" | - "CMOVP" | - "CMOVPE" | - "CMOVPO" | - "CMOVS" | - "CMOVZ" | - "CMP" | - "CMPPS" | - "CMPS" | - "CMPSB" | - "CMPSD" | - "CMPSS" | - "CMPSW" | - "CMPXCHG" | - "CMPXCHGB" | - "COMISS" | - "CPUID" | - "CWD" | - "CWDE" | - "CVTPI2PS" | - "CVTPS2PI" | - "CVTSI2SS" | - "CVTSS2SI" | - "CVTTPS2PI" | - "CVTTSS2SI" | - "DAA" | - "DAS" | - "DEC" | - "DIV" | - "DIVPS" | - "DIVSS" | - "EMMS" | - "ENTER" | - "F2XM1" | - "FABS" | - "FADD" | - "FADDP" | - "FBLD" | - "FBSTP" | - "FCHS" | - "FCLEX" | - "FCMOVB" | - "FCMOVBE" | - "FCMOVE" | - "FCMOVNB" | - "FCMOVNBE" | - "FCMOVNE" | - "FCMOVNU" | - "FCMOVU" | - "FCOM" | - "FCOMI" | - "FCOMIP" | - "FCOMP" | - "FCOMPP" | - "FCOS" | - "FDECSTP" | - "FDIV" | - "FDIVP" | - "FDIVR" | - "FDIVRP" | - "FFREE" | - "FIADD" | - "FICOM" | - "FICOMP" | - "FIDIV" | - "FIDIVR" | - "FILD" | - "FIMUL" | - "FINCSTP" | - "FINIT" | - "FIST" | - "FISTP" | - "FISUB" | - "FISUBR" | - "FLD1" | - "FLDCW" | - "FLDENV" | - "FLDL2E" | - "FLDL2T" | - "FLDLG2" | - "FLDLN2" | - "FLDPI" | - "FLDZ" | - "FMUL" | - "FMULP" | - "FNCLEX" | - "FNINIT" | - "FNOP" | - "FNSAVE" | - "FNSTCW" | - "FNSTENV" | - "FNSTSW" | - "FPATAN" | - "FPREM" | - "FPREMI" | - "FPTAN" | - "FRNDINT" | - "FRSTOR" | - "FSAVE" | - "FSCALE" | - "FSIN" | - "FSINCOS" | - "FSQRT" | - "FST" | - "FSTCW" | - "FSTENV" | - "FSTP" | - "FSTSW" | - "FSUB" | - "FSUBP" | - "FSUBR" | - "FSUBRP" | - "FTST" | - "FUCOM" | - "FUCOMI" | - "FUCOMIP" | - "FUCOMP" | - "FUCOMPP" | - "FWAIT" | - "FXAM" | - "FXCH" | - "FXRSTOR" | - "FXSAVE" | - "FXTRACT" | - "FYL2X" | - "FYL2XP1" | - "HLT" | - "IDIV" | - "IMUL" | - "IN" | - "INC" | - "INS" | - "INSB" | - "INSD" | - "INSW" | - "INT" | - "INTO" | - "INVD" | - "INVLPG" | - "IRET" | - "JA" | - "JAE" | - "JB" | - "JBE" | - "JC" | - "JCXZ" | - "JE" | - "JECXZ" | - "JG" | - "JGE" | - "JL" | - "JLE" | - "JMP" | - "JNA" | - "JNAE" | - "JNB" | - "JNBE" | - "JNC" | - "JNE" | - "JNG" | - "JNGE" | - "JNL" | - "JNLE" | - "JNO" | - "JNP" | - "JNS" | - "JNZ" | - "JO" | - "JP" | - "JPE" | - "JPO" | - "JS" | - "JZ" | - "LAHF" | - "LAR" | - "LDMXCSR" | - "LDS" | - "LEA" | - "LEAVE" | - "LES" | - "LFS" | - "LGDT" | - "LGS" | - "LIDT" | - "LLDT" | - "LMSW" | - "LOCK" | - "LODS" | - "LODSB" | - "LODSD" | - "LODSW" | - "LOOP" | - "LOOPE" | - "LOOPNE" | - "LOOPNZ" | - "LOOPZ" | - "LSL" | - "LSS" | - "LTR" | - "MASKMOVQ" | - "MAXPS" | - "MAXSS" | - "MINPS" | - "MINSS" | - "MOV" | - "MOVAPS" | - "MOVD" | - "MOVHLPS" | - "MOVHPS" | - "MOVLHPS" | - "MOVLPS" | - "MOVMSKPS" | - "MOVNTPS" | - "MOVNTQ" | - "MOVQ" | - "MOVS" | - "MOVSB" | - "MOVSD" | - "MOVSS" | - "MOVSW" | - "MOVSX" | - "MOVUPS" | - "MOVZX" | - "MUL" | - "MULPS" | - "MULSS" | - "NEG" | - "NOP" | - "NOT" | - "OR" | - "ORPS" | - "OUT" | - "OUTS" | - "OUTSB" | - "OUTSD" | - "OUTSW" | - "PACKSSDW" | - "PACKSSWB" | - "PACKUSWB" | - "PADDB" | - "PADDD" | - "PADDSB" | - "PADDSW" | - "PADDUSB" | - "PADDUSW" | - "PADDW" | - "PAND" | - "PANDN" | - "PAVGB" | - "PAVGW" | - "PCMPEQB" | - "PCMPEQD" | - "PCMPEQW" | - "PCMPGTB" | - "PCMPGTD" | - "PCMPGTW" | - "PEXTRW" | - "PINSRW" | - "PMADDWD" | - "PMAXSW" | - "PMAXUB" | - "PMINSW" | - "PMINUB" | - "PMOVMSKB" | - "PMULHUW" | - "PMULHW" | - "PMULLW" | - "POP" | - "POPA" | - "POPAD" | - "POPAW" | - "POPF" | - "POPFD" | - "POPFW" | - "POR" | - "PREFETCH" | - "PSADBW" | - "PSHUFW" | - "PSLLD" | - "PSLLQ" | - "PSLLW" | - "PSRAD" | - "PSRAW" | - "PSRLD" | - "PSRLQ" | - "PSRLW" | - "PSUBB" | - "PSUBD" | - "PSUBSB" | - "PSUBSW" | - "PSUBUSB" | - "PSUBUSW" | - "PSUBW" | - "PUNPCKHBW" | - "PUNPCKHDQ" | - "PUNPCKHWD" | - "PUNPCKLBW" | - "PUNPCKLDQ" | - "PUNPCKLWD" | - "PUSH" | - "PUSHA" | - "PUSHAD" | - "PUSHAW" | - "PUSHF" | - "PUSHFD" | - "PUSHFW" | - "PXOR" | - "RCL" | - "RCR" | - "RDMSR" | - "RDPMC" | - "RDTSC" | - "REP" | - "REPE" | - "REPNE" | - "REPNZ" | - "REPZ" | - "RET" | - "RETF" | - "RETN" | - "ROL" | - "ROR" | - "RSM" | - "SAHF" | - "SAL" | - "SAR" | - "SBB" | - "SCAS" | - "SCASB" | - "SCASD" | - "SCASW" | - "SETA" | - "SETAE" | - "SETB" | - "SETBE" | - "SETC" | - "SETE" | - "SETG" | - "SETGE" | - "SETL" | - "SETLE" | - "SETNA" | - "SETNAE" | - "SETNB" | - "SETNBE" | - "SETNC" | - "SETNE" | - "SETNG" | - "SETNGE" | - "SETNL" | - "SETNLE" | - "SETNO" | - "SETNP" | - "SETNS" | - "SETNZ" | - "SETO" | - "SETP" | - "SETPE" | - "SETPO" | - "SETS" | - "SETZ" | - "SFENCE" | - "SGDT" | - "SHL" | - "SHLD" | - "SHR" | - "SHRD" | - "SHUFPS" | - "SIDT" | - "SLDT" | - "SMSW" | - "SQRTPS" | - "SQRTSS" | - "STC" | - "STD" | - "STI" | - "STMXCSR" | - "STOS" | - "STOSB" | - "STOSD" | - "STOSW" | - "STR" | - "SUB" | - "SUBPS" | - "SUBSS" | - "SYSENTER" | - "SYSEXIT" | - "TEST" | - "UB2" | - "UCOMISS" | - "UNPCKHPS" | - "UNPCKLPS" | - "WAIT" | - "WBINVD" | - "VERR" | - "VERW" | - "WRMSR" | - "XADD" | - "XCHG" | - "XLAT" | - "XLATB" | - "XOR" | - "XORPS" { addToken(Token.RESERVED_WORD); } - -} - - { - - {LineTerminator} { addNullToken(); return firstToken; } - - {WhiteSpace}+ { addToken(Token.WHITESPACE); } - - /* String/Character Literals. */ - {CharLiteral} { addToken(Token.LITERAL_CHAR); } - {UnclosedCharLiteral} { addToken(Token.ERROR_CHAR); /*addNullToken(); return firstToken;*/ } - {StringLiteral} { addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); } - {UnclosedStringLiteral} { addToken(Token.ERROR_STRING_DOUBLE); addNullToken(); return firstToken; } - - /* Labels. */ - {Label} { addToken(Token.PREPROCESSOR); } - - ^%({Letter}|{Digit})* { addToken(Token.FUNCTION); } - - /* Comment Literals. */ - {CommentBegin}.* { addToken(Token.COMMENT_EOL); addNullToken(); return firstToken; } - - /* Operators. */ - {Operator} { addToken(Token.OPERATOR); } - - /* Numbers */ - {Number} { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); } - - /* Ended with a line not in a string or comment. */ - <> { addNullToken(); return firstToken; } - - /* Catch any other (unhandled) characters. */ - {Identifier} { addToken(Token.IDENTIFIER); } - . { addToken(Token.IDENTIFIER); } - -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/AssemblerX86TokenMaker.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/AssemblerX86TokenMaker.java deleted file mode 100644 index 4582ecd..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/AssemblerX86TokenMaker.java +++ /dev/null @@ -1,1865 +0,0 @@ -/* The following code was generated by JFlex 1.4.1 on 2/1/08 1:33 PM */ - -/* - * 12/06/2004 - * - * AssemblerX86TokenMaker.java - An object that can take a chunk of text and - * return a linked list of tokens representing X86 assembler. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * This class takes plain text and returns tokens representing x86 - * assembler.

- * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated AssemblerX86TokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.2 - * - */ - -public class AssemblerX86TokenMaker extends AbstractJFlexTokenMaker { - - /** This character denotes the end of file */ - public static final int YYEOF = -1; - - /** lexical states */ - public static final int YYINITIAL = 0; - - /** - * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l - * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l - * at the beginning of a line - * l is of the form l = 2*k, k a non negative integer - */ - private static final int ZZ_LEXSTATE[] = { - 0, 1 - }; - - /** - * Translates characters to character classes - */ - private static final String ZZ_CMAP_PACKED = - "\11\0\1\10\1\7\1\0\1\10\23\0\1\10\1\14\1\4\2\0"+ - "\1\13\1\14\1\5\2\0\1\12\1\12\1\3\1\12\1\15\1\12"+ - "\1\27\1\16\1\21\1\24\1\25\1\26\1\20\1\23\1\17\1\2"+ - "\1\11\1\6\1\14\1\14\1\14\1\50\1\0\1\30\1\33\1\40"+ - "\1\42\1\35\1\47\1\51\1\32\1\45\1\1\1\36\1\31\1\55"+ - "\1\43\1\41\1\22\1\56\1\34\1\37\1\44\1\46\1\61\1\52"+ - "\1\54\1\60\1\53\1\3\1\0\1\3\1\14\1\57\1\0\1\30"+ - "\1\33\1\40\1\42\1\35\1\47\1\51\1\32\1\45\1\1\1\36"+ - "\1\31\1\55\1\43\1\41\1\22\1\56\1\34\1\37\1\44\1\46"+ - "\1\61\1\52\1\54\1\60\1\53\1\0\1\14\1\0\1\14\uff81\0"; - - /** - * Translates characters to character classes - */ - private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); - - /** - * Translates DFA states to action switch labels. - */ - private static final int [] ZZ_ACTION = zzUnpackAction(); - - private static final String ZZ_ACTION_PACKED_0 = - "\2\0\2\1\1\2\1\3\1\4\1\5\1\6\1\7"+ - "\1\10\32\1\1\11\1\1\1\12\5\13\2\1\1\14"+ - "\1\15\25\0\16\1\2\16\23\1\1\13\11\1\1\16"+ - "\14\1\2\16\7\1\1\16\10\1\1\13\4\1\1\11"+ - "\3\1\1\16\1\1\1\11\15\1\1\13\1\12\13\1"+ - "\1\16\42\1\31\0\1\12\11\0\20\1\1\13\1\12"+ - "\14\1\2\13\3\1\1\13\4\1\1\12\6\1\1\13"+ - "\3\1\1\13\5\1\1\12\5\1\1\13\4\1\1\12"+ - "\1\1\1\13\2\1\1\13\10\1\1\13\4\1\1\13"+ - "\4\1\1\13\5\1\1\12\3\1\3\13\24\1\1\13"+ - "\37\1\1\13\3\1\1\13\3\1\1\0\1\12\10\0"+ - "\1\12\17\0\3\1\1\13\11\1\1\13\14\1\2\13"+ - "\1\1\1\17\1\13\3\1\2\12\10\1\1\12\7\1"+ - "\1\12\1\13\12\1\1\12\15\1\1\13\5\1\2\13"+ - "\1\1\1\13\14\1\1\13\3\1\1\13\4\1\1\0"+ - "\1\12\3\0\1\12\5\0\1\12\5\0\16\1\1\12"+ - "\5\1\1\12\16\1\1\12\1\1\1\13\4\1\1\13"+ - "\1\1\1\13\4\1\7\0\1\12\7\1\2\12\10\1"+ - "\1\0\1\12\2\0\1\12\1\0\4\1\1\12\1\1"+ - "\3\0\2\1\2\0\1\1\1\12\2\0"; - - private static int [] zzUnpackAction() { - int [] result = new int[668]; - int offset = 0; - offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAction(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /** - * Translates a state to a row index in the transition table - */ - private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); - - private static final String ZZ_ROWMAP_PACKED_0 = - "\0\0\0\62\0\144\0\226\0\310\0\372\0\u012c\0\u015e"+ - "\0\144\0\u0190\0\144\0\u01c2\0\u01f4\0\u0226\0\u0258\0\u028a"+ - "\0\u02bc\0\u02ee\0\u0320\0\u0352\0\u0384\0\u03b6\0\u03e8\0\u041a"+ - "\0\u044c\0\u047e\0\u04b0\0\u04e2\0\u0514\0\u0546\0\u0578\0\u05aa"+ - "\0\u05dc\0\u060e\0\u0640\0\u0672\0\u06a4\0\u06d6\0\u0708\0\u0708"+ - "\0\u073a\0\u076c\0\u079e\0\u0352\0\u07d0\0\u0802\0\u0834\0\144"+ - "\0\144\0\u0866\0\u0898\0\u08ca\0\u08fc\0\u092e\0\u0960\0\u0992"+ - "\0\u09c4\0\u09f6\0\u0a28\0\u0a5a\0\u0a8c\0\u0abe\0\u0af0\0\u0b22"+ - "\0\u0b54\0\u0b86\0\u0bb8\0\u0bea\0\u0c1c\0\u0c4e\0\u0c80\0\u0cb2"+ - "\0\u0ce4\0\u0d16\0\u0d48\0\u0d7a\0\u0dac\0\u0dde\0\u0e10\0\u0e42"+ - "\0\u0e74\0\u0ea6\0\u0ed8\0\u0f0a\0\u0f3c\0\u0352\0\u0f6e\0\u0fa0"+ - "\0\u0fd2\0\u1004\0\u1036\0\u1068\0\u109a\0\u10cc\0\u10fe\0\u1130"+ - "\0\u1162\0\u1194\0\u11c6\0\u11f8\0\u122a\0\u125c\0\u128e\0\u12c0"+ - "\0\u12f2\0\u1324\0\u1356\0\u1388\0\u13ba\0\u13ec\0\u141e\0\u1450"+ - "\0\u1482\0\u14b4\0\u14e6\0\u1518\0\u154a\0\u157c\0\u15ae\0\u15e0"+ - "\0\u1612\0\u1644\0\u1676\0\u16a8\0\u16da\0\u170c\0\u173e\0\u1770"+ - "\0\u17a2\0\u17d4\0\u1806\0\u1838\0\u186a\0\u189c\0\u18ce\0\u1900"+ - "\0\u1932\0\u1964\0\u1996\0\u19c8\0\u19fa\0\u1a2c\0\u1a5e\0\u1a90"+ - "\0\u1ac2\0\u1af4\0\u1b26\0\u1b58\0\u1b8a\0\u1bbc\0\u1bee\0\u0352"+ - "\0\u1c20\0\u1c52\0\u1c84\0\u1cb6\0\u1ce8\0\u186a\0\u1d1a\0\u1d4c"+ - "\0\u1d7e\0\u1db0\0\u1de2\0\u1e14\0\u1e46\0\u1e78\0\u1eaa\0\u1edc"+ - "\0\u1f0e\0\u1f40\0\u1f72\0\u1fa4\0\u1fd6\0\u2008\0\u203a\0\u206c"+ - "\0\u209e\0\u20d0\0\u2102\0\u2134\0\u2166\0\u2198\0\u21ca\0\u21fc"+ - "\0\u222e\0\u2260\0\u2292\0\u22c4\0\u22f6\0\u2328\0\u235a\0\u238c"+ - "\0\u23be\0\u23f0\0\u2422\0\u2454\0\u2486\0\u24b8\0\u24ea\0\u251c"+ - "\0\u254e\0\u2580\0\u25b2\0\u25e4\0\u2616\0\u2648\0\u267a\0\u26ac"+ - "\0\u26de\0\u2710\0\u2742\0\u2774\0\u27a6\0\u27d8\0\u280a\0\u283c"+ - "\0\u286e\0\u07d0\0\u28a0\0\u28d2\0\u2904\0\u2936\0\u2968\0\u299a"+ - "\0\u29cc\0\u29fe\0\u2a30\0\u2a62\0\u2a94\0\u2ac6\0\u2af8\0\u2b2a"+ - "\0\u2b5c\0\u2b8e\0\u2bc0\0\u2bf2\0\u2c24\0\u2c56\0\u2c88\0\u2cba"+ - "\0\u2cec\0\u2d1e\0\u2d50\0\u2d82\0\144\0\u2db4\0\u2de6\0\u2e18"+ - "\0\u2e4a\0\u2e7c\0\u2eae\0\u2ee0\0\u2f12\0\u2f44\0\u2f76\0\u2fa8"+ - "\0\u2fda\0\u300c\0\u303e\0\u3070\0\u30a2\0\u30d4\0\u3106\0\u3138"+ - "\0\u316a\0\u319c\0\u31ce\0\u3200\0\u3232\0\u3264\0\u3296\0\u0352"+ - "\0\u32c8\0\u32fa\0\u332c\0\u335e\0\u3390\0\u33c2\0\u33f4\0\u3426"+ - "\0\u3458\0\u348a\0\u34bc\0\u34ee\0\u3520\0\u3552\0\u3584\0\u35b6"+ - "\0\u35e8\0\u361a\0\u364c\0\u367e\0\u36b0\0\u36e2\0\u3714\0\u3746"+ - "\0\u3778\0\u37aa\0\u37dc\0\u380e\0\u3840\0\u3872\0\u38a4\0\u38d6"+ - "\0\u3908\0\u393a\0\u396c\0\u399e\0\u39d0\0\u3a02\0\u3a34\0\u3a66"+ - "\0\u3a98\0\u3aca\0\u3afc\0\u3b2e\0\u3b60\0\u3b92\0\u3bc4\0\u3bf6"+ - "\0\u3c28\0\u3c5a\0\u3c8c\0\u3cbe\0\u3cf0\0\u3d22\0\u3d54\0\u3d86"+ - "\0\u3db8\0\u3dea\0\u3e1c\0\u3e4e\0\u3e80\0\u3eb2\0\u3ee4\0\u3f16"+ - "\0\u3f48\0\u3f7a\0\u3fac\0\u3fde\0\u4010\0\u36e2\0\u4042\0\u4074"+ - "\0\u40a6\0\u40d8\0\u410a\0\u413c\0\u416e\0\u41a0\0\u41d2\0\u4204"+ - "\0\u4236\0\u4268\0\u429a\0\u42cc\0\u42fe\0\u4330\0\u4362\0\u4394"+ - "\0\u43c6\0\u43f8\0\u442a\0\u445c\0\u448e\0\u44c0\0\u44f2\0\u4524"+ - "\0\u4556\0\u4588\0\u45ba\0\u45ec\0\u461e\0\u3b92\0\u4650\0\u4682"+ - "\0\u46b4\0\u361a\0\u46e6\0\u4718\0\u474a\0\u477c\0\u47ae\0\u47e0"+ - "\0\u4812\0\u4844\0\u4876\0\u48a8\0\u48da\0\u490c\0\u493e\0\u4970"+ - "\0\u49a2\0\u49d4\0\u4a06\0\u4a38\0\u4a6a\0\u4a9c\0\u4ace\0\u4b00"+ - "\0\u4b32\0\u4b64\0\u4b96\0\u4bc8\0\u4bfa\0\u4c2c\0\u4c5e\0\u4c90"+ - "\0\u4cc2\0\u4cf4\0\u4d26\0\u4d58\0\u4d8a\0\u4dbc\0\u410a\0\u4dee"+ - "\0\u4e20\0\u4e52\0\u4e84\0\u4eb6\0\u4ee8\0\u4f1a\0\u4f4c\0\u4f7e"+ - "\0\u4fb0\0\u4fe2\0\u5014\0\u5046\0\u5078\0\u50aa\0\u50dc\0\u510e"+ - "\0\u5140\0\u5172\0\u51a4\0\u51d6\0\u5208\0\u523a\0\u526c\0\u529e"+ - "\0\u52d0\0\u5302\0\u5334\0\u5366\0\u5398\0\u53ca\0\u53fc\0\u542e"+ - "\0\u5460\0\u5492\0\u54c4\0\u54f6\0\u5528\0\u555a\0\u558c\0\u55be"+ - "\0\u55f0\0\u5622\0\u55f0\0\u5654\0\u5686\0\u56b8\0\u56ea\0\u571c"+ - "\0\u574e\0\u5780\0\u57b2\0\u4d58\0\u57e4\0\u076c\0\u5816\0\u5848"+ - "\0\u587a\0\u58ac\0\u0352\0\u58de\0\u5910\0\u5942\0\u5974\0\u59a6"+ - "\0\u1f40\0\u59d8\0\u5a0a\0\u5a3c\0\u5a6e\0\u5aa0\0\u5ad2\0\u5b04"+ - "\0\u5b36\0\u5b68\0\u5b9a\0\u5bcc\0\u5bfe\0\u5c30\0\u5c62\0\u5c94"+ - "\0\u5cc6\0\u5cf8\0\u5d2a\0\u5d5c\0\u5d8e\0\u5dc0\0\u5df2\0\u5e24"+ - "\0\u5e56\0\u5e88\0\u5eba\0\u5eec\0\u5f1e\0\u5f50\0\u5f82\0\u5fb4"+ - "\0\u5fe6\0\u6018\0\u604a\0\u607c\0\u60ae\0\u60e0\0\u6112\0\u6144"+ - "\0\u6176\0\u61a8\0\u5460\0\u0834\0\u61da\0\u620c\0\u623e\0\u6270"+ - "\0\u62a2\0\u62d4\0\u6306\0\u6338\0\u636a\0\u639c\0\u63ce\0\u6400"+ - "\0\u6432\0\u6464\0\u6496\0\u64c8\0\u64fa\0\u652c\0\u655e\0\u6590"+ - "\0\u65c2\0\u65f4\0\u6626\0\u6658\0\u668a\0\u66bc\0\u66ee\0\u6720"+ - "\0\u6752\0\u6784\0\u67b6\0\u67e8\0\u681a\0\u684c\0\u687e\0\u68b0"+ - "\0\u68e2\0\u6914\0\u6946\0\u6978\0\u69aa\0\u69dc\0\u6a0e\0\u6a40"+ - "\0\u6a72\0\u6aa4\0\u6ad6\0\u6b08\0\u6b3a\0\u6b6c\0\u6b9e\0\u6bd0"+ - "\0\u6c02\0\u6c34\0\u6c66\0\u4236\0\u6c98\0\u6cca\0\u65f4\0\u6cfc"+ - "\0\u6d2e\0\u6d60\0\u6d92\0\u6dc4\0\u6df6\0\u6e28\0\u6e5a\0\u5a6e"+ - "\0\u6e8c\0\u6ebe\0\u6ef0\0\u6f22\0\u6f54\0\u6f86\0\u6fb8\0\u6fea"+ - "\0\u701c\0\u704e\0\u7080\0\u70b2\0\u70e4\0\u7116\0\u7148\0\u717a"+ - "\0\u61da\0\u71ac\0\u71de\0\u7210\0\u7242\0\u1194\0\u7274\0\u72a6"+ - "\0\u72d8\0\u730a\0\u733c\0\u736e\0\u73a0\0\u73d2\0\u7404\0\u7436"+ - "\0\u7468\0\u749a\0\u74cc\0\u74fe\0\u7530\0\u7562\0\u7594\0\u587a"+ - "\0\u75c6\0\u75f8\0\u762a\0\u765c\0\u768e\0\u76c0\0\u76f2\0\u7724"+ - "\0\u7756\0\u7788\0\u77ba\0\u77ec\0\u781e\0\u7850\0\u7882\0\u4ee8"+ - "\0\u78b4\0\u78e6\0\u7918\0\u794a\0\u797c\0\u79ae\0\u79e0\0\u7a12"+ - "\0\u7a44\0\u7a76\0\u7aa8\0\u7ada\0\u7b0c\0\u7b3e\0\u7b70\0\u7ba2"+ - "\0\u6d60\0\u7bd4\0\u7c06\0\u7c38"; - - private static int [] zzUnpackRowMap() { - int [] result = new int[668]; - int offset = 0; - offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackRowMap(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int high = packed.charAt(i++) << 16; - result[j++] = high | packed.charAt(i++); - } - return j; - } - - /** - * The transition table of the DFA - */ - private static final int [] ZZ_TRANS = zzUnpackTrans(); - - private static final String ZZ_TRANS_PACKED_0 = - "\1\3\1\4\1\5\1\3\1\6\1\7\1\10\1\11"+ - "\1\12\1\3\3\13\1\14\4\5\1\15\5\5\1\16"+ - "\1\17\1\20\1\21\1\22\1\23\1\24\1\25\1\26"+ - "\1\27\1\30\1\31\1\32\1\33\1\34\1\35\1\3"+ - "\1\36\1\37\1\40\1\41\1\42\1\43\1\44\1\24"+ - "\1\45\1\3\1\4\1\5\1\3\1\6\1\7\1\10"+ - "\1\11\1\12\1\3\1\13\1\46\1\13\1\14\4\5"+ - "\1\15\5\5\1\16\1\17\1\20\1\21\1\22\1\23"+ - "\1\24\1\25\1\26\1\27\1\30\1\31\1\32\1\33"+ - "\1\34\1\35\1\3\1\36\1\37\1\40\1\41\1\42"+ - "\1\43\1\44\1\24\1\45\62\0\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\4\24\1\51"+ - "\5\24\2\52\1\24\1\52\1\24\1\53\1\24\1\54"+ - "\1\55\1\54\1\24\1\56\4\24\1\47\1\52\1\24"+ - "\1\54\1\24\1\57\4\24\1\47\1\24\1\5\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\4\5\1\24"+ - "\5\5\20\24\1\47\11\24\4\6\1\60\55\6\5\7"+ - "\1\61\54\7\7\10\1\0\52\10\10\0\1\12\67\0"+ - "\1\62\1\63\1\64\1\65\2\0\1\65\2\64\1\0"+ - "\1\66\1\67\1\0\1\70\1\71\1\72\1\73\1\74"+ - "\1\75\1\0\1\76\1\77\1\100\1\101\1\102\1\103"+ - "\2\0\1\104\1\0\1\105\1\106\4\0\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\12\24"+ - "\1\107\3\24\1\110\1\111\1\24\1\112\1\113\1\114"+ - "\2\24\1\115\1\116\1\117\1\24\1\47\3\24\1\120"+ - "\1\121\4\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\1\122\5\24\1\123\3\24\1\124"+ - "\1\125\1\126\1\24\1\127\2\24\1\130\2\24\1\131"+ - "\1\132\4\24\1\47\3\24\1\126\5\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\12\24"+ - "\1\133\1\134\2\24\1\135\1\136\1\24\1\137\1\24"+ - "\1\140\1\141\1\24\1\142\1\134\1\24\1\143\1\47"+ - "\1\144\3\24\1\145\4\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\13\24\1\146\13\24"+ - "\1\147\2\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\4\24\1\126\6\24"+ - "\2\126\4\24\1\150\1\24\1\151\2\24\1\152\1\153"+ - "\2\24\1\47\3\24\1\126\3\24\1\154\1\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\17\24\1\155\1\24\1\156\2\157\1\160\5\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\12\24\1\161\1\162\1\24\1\163\3\24"+ - "\1\164\1\165\1\24\1\166\1\167\4\24\1\47\3\24"+ - "\1\170\1\171\1\172\2\24\1\173\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\32\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\4\24\1\126\5\24\1\174\1\134\1\175"+ - "\1\176\1\24\1\177\1\24\1\126\1\200\1\24\1\43"+ - "\1\24\1\201\1\202\1\203\1\204\1\47\1\134\1\205"+ - "\2\24\1\145\1\206\1\24\1\207\1\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\4\24"+ - "\1\210\5\24\1\211\1\212\1\126\1\213\1\214\2\24"+ - "\1\126\1\24\1\215\1\216\5\24\1\47\1\24\1\217"+ - "\1\24\1\126\1\220\3\24\1\221\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\1\122\3\24"+ - "\1\222\1\24\1\123\7\24\1\223\11\24\1\224\1\225"+ - "\1\47\10\24\1\226\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\12\24\1\227\2\126\1\230"+ - "\1\231\1\232\1\24\1\126\1\24\1\233\1\230\1\24"+ - "\1\230\1\234\1\235\1\230\1\47\1\24\1\236\1\24"+ - "\1\126\1\24\1\230\3\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\12\24\1\237\4\24"+ - "\1\240\3\24\1\241\6\24\1\47\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\14\24"+ - "\1\242\1\243\1\244\1\245\7\24\1\246\2\24\1\47"+ - "\1\24\1\205\5\24\1\247\1\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\16\24\1\250"+ - "\1\251\1\24\1\252\2\24\1\253\1\254\3\24\1\255"+ - "\1\47\4\24\1\256\4\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\15\24\1\257\3\24"+ - "\1\260\1\261\2\24\1\262\4\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\3\24\1\263\1\264\5\24\1\265\1\266\1\24\1\267"+ - "\1\270\2\24\1\271\1\272\1\273\1\274\1\275\1\276"+ - "\1\277\1\300\1\301\1\47\1\24\1\302\1\24\1\303"+ - "\1\304\2\24\1\305\1\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\13\24\1\306\2\24"+ - "\1\307\2\24\1\126\1\24\1\310\6\24\1\47\11\24"+ - "\1\47\2\24\1\0\3\47\2\0\1\50\2\0\1\47"+ - "\1\0\12\24\1\311\1\24\1\312\1\313\1\314\4\24"+ - "\1\315\6\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\17\24\1\316\12\24"+ - "\1\47\11\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\12\24\1\317\1\320\6\24\1\321"+ - "\1\322\6\24\1\47\4\24\1\323\4\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\12\24"+ - "\1\324\10\24\1\325\3\24\1\326\1\327\1\24\1\47"+ - "\4\24\1\231\4\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\32\24\1\47\1\24\1\205"+ - "\7\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\32\24\1\47\6\24\1\330\2\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\17\24\1\331\12\24\1\47\11\24\1\0\2\46\13\0"+ - "\32\46\1\0\11\46\3\47\1\0\3\47\2\0\1\47"+ - "\2\0\1\47\1\0\45\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\17\24\1\54\3\24\1\54"+ - "\6\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\17\24\1\54\12\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\22\24\1\332\7\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\32\24\1\47\3\24\1\333\5\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\4\24\1\54"+ - "\5\24\2\52\1\24\1\52\1\24\1\54\1\24\3\54"+ - "\6\24\1\47\1\52\1\24\1\54\6\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\4\24"+ - "\1\54\25\24\1\47\11\24\17\0\1\334\71\0\1\335"+ - "\51\0\1\336\61\0\1\337\73\0\1\340\60\0\1\341"+ - "\14\0\1\342\1\0\1\343\46\0\1\344\2\0\1\345"+ - "\52\0\1\346\4\0\1\347\55\0\1\350\2\0\1\351"+ - "\6\0\1\352\10\0\1\353\31\0\1\354\65\0\1\341"+ - "\4\0\1\355\6\0\1\356\2\0\1\343\46\0\1\357"+ - "\4\0\1\360\50\0\1\361\10\0\1\362\61\0\1\363"+ - "\55\0\1\364\11\0\1\343\61\0\1\365\55\0\1\366"+ - "\46\0\1\367\63\0\1\370\57\0\1\341\1\371\6\0"+ - "\1\372\14\0\1\373\43\0\1\374\1\0\1\375\13\0"+ - "\1\376\4\0\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\16\24\1\377\3\24\1\u0100\1\24"+ - "\1\u0101\1\u0102\4\24\1\47\1\u0103\7\24\1\u0104\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\17\24\1\u0105\3\24\1\u0106\3\24\1\u0107\2\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\32\24\1\47\3\24\1\u0108\5\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\12\24\1\u0109\1\u010a\1\u010b\1\24\1\u010c\11\24\1\u010d"+ - "\1\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\32\24\1\47\4\24\1\u010e"+ - "\4\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\4\24\1\u010f\11\24\1\54\13\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\16\24\1\u0110\13\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\25\24\1\u0111\4\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\15\24\1\u0112"+ - "\1\u0113\2\24\1\u0114\3\24\1\u0115\4\24\1\47\11\24"+ - "\1\47\2\24\1\0\3\47\2\0\1\50\2\0\1\47"+ - "\1\0\23\24\1\142\6\24\1\47\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\12\24"+ - "\1\u0116\10\24\1\u0117\3\24\1\u0118\1\u0119\1\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\2\24\1\u0110\27\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\3\24\1\u0110\26\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\12\24\1\54"+ - "\6\24\1\54\2\24\1\54\5\24\1\47\4\24\1\54"+ - "\4\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\27\24\1\u011a\2\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\4\24\1\u011b\25\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\21\24\1\u011c"+ - "\10\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\22\24\1\54\1\24\1\u011d"+ - "\5\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\24\24\1\u011e\5\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\14\24\1\u011f\1\u0120\1\54\13\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\24\24\1\146\5\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\23\24\1\u0121\6\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\12\24\1\u0122"+ - "\6\24\1\54\3\24\1\u0123\4\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\13\24\1\54\5\24\1\54\10\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\22\24\1\u0124\1\u0125\1\u0126\5\24\1\47\1\24\1\u0127"+ - "\7\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\21\24\1\54\10\24\1\47\4\24\1\u0128"+ - "\4\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\16\24\1\54\13\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\21\24\1\54\10\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\21\24\1\54"+ - "\2\24\1\146\5\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\21\24\1\213"+ - "\10\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\26\24\1\54\3\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\32\24\1\47\1\u0129\10\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\16\24"+ - "\1\54\12\24\1\54\1\47\1\24\1\u012a\7\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\30\24\1\u012b\1\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\16\24\1\54"+ - "\2\24\2\54\7\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\26\24\1\u012c"+ - "\3\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\26\24\1\u012d\3\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\4\24\1\u012e\5\24\1\u012f\6\24\1\u0130"+ - "\1\u0131\3\24\1\u0132\3\24\1\47\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\32\24"+ - "\1\47\4\24\1\54\4\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\13\24\1\54\2\24"+ - "\1\54\13\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\4\24\1\u0133\21\24"+ - "\1\u0134\3\24\1\47\4\24\1\u0135\4\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\32\24"+ - "\1\47\3\24\1\126\5\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\21\24\1\u0136\10\24"+ - "\1\47\11\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\4\24\1\126\25\24\1\47\3\24"+ - "\1\126\5\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\4\24\1\126\22\24\1\126\2\24"+ - "\1\47\11\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\14\24\1\u0137\15\24\1\47\3\24"+ - "\1\126\5\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\27\24\1\126\2\24\1\47\3\24"+ - "\1\126\5\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\24\24\1\u0138\1\24\1\u0139\3\24"+ - "\1\47\11\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\4\24\1\u013a\21\24\1\u013b\1\u013c"+ - "\2\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\32\24\1\47\4\24\1\143"+ - "\4\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\30\24\1\230\1\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\17\24\1\u013d\12\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\13\24\1\54"+ - "\1\u011f\1\24\1\54\13\24\1\47\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\13\24"+ - "\1\u013e\2\24\1\u013e\4\24\1\u013f\4\24\1\u0140\1\24"+ - "\1\47\11\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\15\24\1\54\14\24\1\47\7\24"+ - "\1\154\1\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\22\24\1\u0141\3\24\1\u0142\3\24"+ - "\1\47\1\u0143\10\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\12\24\1\u0126\17\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\1\126\1\24\2\126\1\24\5\126\1\u0144"+ - "\3\24\1\u0145\3\24\1\54\1\u0126\1\54\2\24\1\54"+ - "\2\24\1\47\4\24\1\u0128\4\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\24\24\1\146"+ - "\5\24\1\47\1\u0146\1\24\1\u0147\6\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\15\24"+ - "\1\u0148\14\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\17\24\1\u0149\12\24"+ - "\1\47\11\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\23\24\1\315\6\24\1\47\11\24"+ - "\1\47\2\24\1\0\3\47\2\0\1\50\2\0\1\47"+ - "\1\0\16\24\1\u014a\13\24\1\47\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\21\24"+ - "\1\u014b\10\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\30\24\1\u014c\1\24"+ - "\1\47\11\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\13\24\1\u011b\2\24\1\u014d\7\24"+ - "\1\u014e\3\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\22\24\1\54\1\24"+ - "\1\54\1\24\1\143\1\54\2\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\32\24\1\47\1\24\1\54\7\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\3\24\1\126"+ - "\2\24\2\126\1\24\1\126\20\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\24\24\1\u014f\5\24\1\47\4\24\1\u0150\4\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\32\24\1\47\5\24\1\54\3\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\24\24\1\52"+ - "\5\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\4\24\1\u0151\15\24\1\54"+ - "\1\u0152\6\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\26\24\1\u0153\3\24"+ - "\1\47\11\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\12\24\1\u0154\13\24\1\u0155\3\24"+ - "\1\47\11\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\4\24\1\143\25\24\1\47\1\u0110"+ - "\10\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\26\24\1\u0156\3\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\31\24\1\u0157\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\17\24\1\u0158\12\24"+ - "\1\47\11\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\12\24\1\54\6\24\1\54\4\24"+ - "\1\u0159\3\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\1\126\1\24\2\126"+ - "\1\24\5\126\20\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\22\24\1\54"+ - "\7\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\21\24\1\u015a\10\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\32\24\1\47\10\24\1\u015b\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\4\24"+ - "\1\230\25\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\32\24\1\47\4\24"+ - "\1\u0103\4\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\12\24\1\115\17\24\1\47\1\54"+ - "\10\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\4\24\1\54\14\24\1\u015c\4\24\1\54"+ - "\3\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\27\24\1\u012c\2\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\32\24\1\47\7\24\1\154\1\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\2\24\1\126\2\24\4\126\21\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\21\24\1\146\10\24\1\47\3\24\1\u015d\5\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\26\24\1\u015e\3\24\1\47\4\24\1\u015f\4\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\4\24\1\u0160\25\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\4\24\1\u0161"+ - "\12\24\1\146\12\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\25\24\1\u0162"+ - "\4\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\26\24\1\u0163\3\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\27\24\1\u0164\2\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\21\24\1\u0165\1\u0166\3\24\1\u0167\3\24\1\47\10\24"+ - "\1\u0168\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\1\u0110\2\24\1\u0110\11\24\1\u0110\1\24"+ - "\1\u0110\4\24\1\u0169\1\u016a\1\24\1\u016b\2\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\4\24\1\u013a\23\24\1\u011b\1\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\3\24\1\54\26\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\17\24\1\u016c\12\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\23\24\1\u016d"+ - "\6\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\4\24\1\u016e\22\24\1\u016f"+ - "\2\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\32\24\1\47\3\24\1\u0170"+ - "\5\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\12\24\1\u0171\3\24\1\u0172\7\24\1\u0173"+ - "\3\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\15\24\1\143\1\u0110\5\24"+ - "\1\u0174\5\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\24\24\1\u0175\5\24"+ - "\1\47\11\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\13\24\1\u0176\5\24\1\u0177\10\24"+ - "\1\47\11\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\21\24\1\u0178\3\24\1\u0179\4\24"+ - "\1\47\11\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\12\24\1\u017a\7\24\1\u017b\3\24"+ - "\1\u017c\1\u017d\1\u017e\1\24\1\47\5\24\1\u017f\3\24"+ - "\1\47\2\24\1\0\3\47\2\0\1\50\2\0\1\47"+ - "\1\0\13\24\1\u0180\1\143\6\24\1\u0181\6\24\1\47"+ - "\4\24\1\u0182\4\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\16\24\1\u0161\13\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\17\24\1\u0183\7\24\1\u0184\2\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\21\24\1\u0185\1\u0186\1\57\3\24\1\u0187"+ - "\2\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\21\24\1\146\10\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\12\24\1\317\1\u0176\5\24\1\u0188\1\u0189"+ - "\1\24\1\u018a\1\u018b\4\24\1\47\4\24\1\u018c\4\24"+ - "\1\47\2\24\1\0\3\47\2\0\1\50\2\0\1\47"+ - "\1\0\22\24\1\u018d\7\24\1\47\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\16\24"+ - "\1\u018e\13\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\12\24\1\311\10\24"+ - "\1\315\6\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\12\24\1\156\3\24"+ - "\1\u018f\2\24\1\u0190\1\u0191\3\24\1\u0192\3\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\30\24\1\u0193\1\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\13\24\1\u0194\16\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\23\24\1\u0195"+ - "\6\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\23\24\1\u0196\6\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\26\24\1\u0137\3\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\27\24\1\146\2\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\27\24\1\u015e"+ - "\2\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\27\24\1\u0197\2\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\26\24\1\u0110\3\24\1\47\4\24\1\u0135"+ - "\4\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\16\24\1\u0198\13\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\16\24\1\u0199\13\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\24\24\1\u0176"+ - "\5\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\12\24\1\u019a\17\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\14\24\1\u019b\15\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\16\24\1\u019c\13\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\32\24\1\47"+ - "\4\24\1\231\4\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\21\24\1\u019d\1\u019e\7\24"+ - "\1\47\3\24\1\u019f\5\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\32\24\1\47\10\24"+ - "\1\u01a0\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\25\24\1\u019f\4\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\13\24\1\u015b\16\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\13\24\1\u01a1"+ - "\15\24\1\u01a2\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\16\24\1\u01a3\13\24"+ - "\1\47\11\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\32\24\1\47\2\24\1\54\6\24"+ - "\20\0\1\365\60\0\1\u01a4\62\0\1\u01a5\61\0\1\u01a5"+ - "\2\0\1\365\60\0\1\u01a6\70\0\1\u01a7\67\0\1\u01a8"+ - "\62\0\1\u01a9\56\0\1\u01aa\63\0\1\365\64\0\1\u01ab"+ - "\41\0\1\u01ac\76\0\1\u01ad\56\0\1\u01ae\67\0\1\u01af"+ - "\64\0\1\u01b0\56\0\1\365\75\0\1\365\33\0\1\u01b1"+ - "\66\0\1\101\66\0\1\u01b2\1\u01b3\62\0\1\u01b4\54\0"+ - "\1\u01b5\41\0\1\u01b6\11\0\1\u01b7\6\0\1\372\75\0"+ - "\1\u01b0\51\0\1\u01b8\51\0\1\u01b9\72\0\1\u01ba\61\0"+ - "\1\u01bb\50\0\1\357\102\0\1\365\53\0\1\u01bc\54\0"+ - "\1\u01bd\73\0\1\365\5\0\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\27\24\1\u01be\2\24"+ - "\1\47\11\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\20\24\1\u01bf\11\24\1\47\11\24"+ - "\1\47\2\24\1\0\3\47\2\0\1\50\2\0\1\47"+ - "\1\0\24\24\1\u01c0\5\24\1\47\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\24\24"+ - "\1\u01c1\5\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\17\24\1\u0110\12\24"+ - "\1\47\11\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\32\24\1\47\1\u01c2\10\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\31\24\1\u01c3\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\22\24\1\u0110\3\24"+ - "\1\u0137\3\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\32\24\1\47\10\24"+ - "\1\u01c4\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\26\24\1\u01c5\3\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\24\24\1\u01c6\5\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\13\24\1\u01c7"+ - "\16\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\30\24\1\u01c8\1\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\12\24\1\u01c9\1\u01c7\16\24\1\47\11\24"+ - "\1\47\2\24\1\0\3\47\2\0\1\50\2\0\1\47"+ - "\1\0\15\24\1\u01c0\14\24\1\47\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\4\24"+ - "\1\u01ca\25\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\12\24\1\u01cb\7\24"+ - "\1\u01cc\6\24\1\u01cb\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\21\24\1\u01c5"+ - "\10\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\13\24\1\u01cd\16\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\32\24\1\47\1\u0103\10\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\14\24"+ - "\1\u010f\15\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\4\24\1\u01ce\25\24"+ - "\1\47\11\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\24\24\1\u01cf\5\24\1\47\3\24"+ - "\1\u01d0\5\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\32\24\1\47\10\24\1\u01d1\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\25\24\1\u01d0\4\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\13\24\1\u01d2"+ - "\16\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\32\24\1\47\1\u01d3\10\24"+ - "\1\47\2\24\1\0\3\47\2\0\1\50\2\0\1\47"+ - "\1\0\13\24\1\54\16\24\1\47\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\30\24"+ - "\1\237\1\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\4\24\1\143\11\24"+ - "\1\u0110\2\24\1\143\10\24\1\47\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\4\24"+ - "\1\143\20\24\1\u01d4\4\24\1\47\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\31\24"+ - "\1\54\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\17\24\1\u01d5\12\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\31\24\1\225\1\47\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\32\24"+ - "\1\47\10\24\1\u01d6\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\32\24\1\47\1\u01d7\10\24"+ - "\1\47\2\24\1\0\3\47\2\0\1\50\2\0\1\47"+ - "\1\0\12\24\1\u01d5\5\24\1\54\11\24\1\47\11\24"+ - "\1\47\2\24\1\0\3\47\2\0\1\50\2\0\1\47"+ - "\1\0\4\24\1\u01d8\25\24\1\47\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\21\24"+ - "\1\u01d9\10\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\32\24\1\47\1\24"+ - "\1\u0131\7\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\32\24\1\47\3\24\1\u01da\5\24"+ - "\1\47\2\24\1\0\3\47\2\0\1\50\2\0\1\47"+ - "\1\0\14\24\1\u0127\15\24\1\47\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\12\24"+ - "\1\57\17\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\25\24\1\u0176\4\24"+ - "\1\47\11\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\21\24\1\u0110\10\24\1\47\11\24"+ - "\1\47\2\24\1\0\3\47\2\0\1\50\2\0\1\47"+ - "\1\0\17\24\1\u01db\12\24\1\47\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\17\24"+ - "\1\u01dc\5\24\1\u01dd\1\u0110\3\24\1\47\2\24\1\54"+ - "\6\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\13\24\1\u01de\16\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\15\24\1\230\6\24\1\230\1\24\1\230\3\24\1\47"+ - "\1\24\1\230\3\24\1\230\3\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\23\24\1\u01df"+ - "\6\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\25\24\1\54\3\24\1\54"+ - "\1\47\11\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\32\24\1\47\4\24\1\232\4\24"+ - "\1\47\2\24\1\0\3\47\2\0\1\50\2\0\1\47"+ - "\1\0\21\24\1\232\10\24\1\47\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\21\24"+ - "\1\142\10\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\17\24\1\u01e0\12\24"+ - "\1\47\11\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\23\24\1\u0110\6\24\1\47\11\24"+ - "\1\47\2\24\1\0\3\47\2\0\1\50\2\0\1\47"+ - "\1\0\4\24\1\u0110\14\24\1\u01e1\5\24\1\u01e2\2\24"+ - "\1\47\4\24\1\u0110\4\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\17\24\1\142\12\24"+ - "\1\47\11\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\23\24\1\u013f\6\24\1\47\11\24"+ - "\1\47\2\24\1\0\3\47\2\0\1\50\2\0\1\47"+ - "\1\0\16\24\1\u013d\1\u01e3\12\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\26\24\1\u01e4\3\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\25\24\1\u0110"+ - "\4\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\24\24\1\54\5\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\16\24\1\u01e5\13\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\31\24\1\u01d4\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\26\24\1\u0155\3\24"+ - "\1\47\11\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\4\24\1\51\5\24\2\52\1\24"+ - "\1\52\1\24\1\54\1\24\3\54\1\24\1\56\4\24"+ - "\1\47\1\52\1\24\1\54\6\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\32\24\1\47"+ - "\4\24\1\u01e6\4\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\22\24\1\u01e7\7\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\30\24\1\u01e8\1\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\25\24\1\u01e9\4\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\17\24\1\u01ea"+ - "\12\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\4\24\1\143\14\24\1\u01eb"+ - "\4\24\1\u01ec\3\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\25\24\1\u01ed"+ - "\4\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\26\24\1\u019f\3\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\17\24\1\u01ee\12\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\27\24\1\u0176\2\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\16\24\1\u01ef"+ - "\13\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\21\24\1\u01f0\10\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\17\24\1\u015a\12\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\27\24\1\u01f1\2\24\1\47\4\24\1\u01f2\4\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\4\24\1\143\14\24\1\u01f3\10\24\1\47\3\24\1\u01f4"+ - "\5\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\32\24\1\47\10\24\1\u0142\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\4\24"+ - "\1\u01f5\14\24\1\u01f6\4\24\1\u01f7\3\24\1\47\11\24"+ - "\1\47\2\24\1\0\3\47\2\0\1\50\2\0\1\47"+ - "\1\0\26\24\1\u01f0\3\24\1\47\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\27\24"+ - "\1\u016f\2\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\21\24\1\u01f8\10\24"+ - "\1\47\11\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\16\24\1\u01f9\13\24\1\47\11\24"+ - "\1\47\2\24\1\0\3\47\2\0\1\50\2\0\1\47"+ - "\1\0\12\24\1\u015a\17\24\1\47\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\21\24"+ - "\1\u01fa\10\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\4\24\1\143\14\24"+ - "\1\143\10\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\4\24\1\u01fb\25\24"+ - "\1\47\11\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\26\24\1\u01fc\3\24\1\47\11\24"+ - "\1\47\2\24\1\0\3\47\2\0\1\50\2\0\1\47"+ - "\1\0\13\24\1\u0103\16\24\1\47\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\17\24"+ - "\1\u01fd\12\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\17\24\1\u01fe\12\24"+ - "\1\47\11\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\22\24\1\u0110\7\24\1\47\11\24"+ - "\1\47\2\24\1\0\3\47\2\0\1\50\2\0\1\47"+ - "\1\0\24\24\1\u0110\5\24\1\47\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\16\24"+ - "\1\u01ff\13\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\32\24\1\47\10\24"+ - "\1\54\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\15\24\1\54\6\24\1\54\1\24\1\115"+ - "\3\24\1\47\1\24\1\54\7\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\13\24\1\u0200"+ - "\1\24\1\u0201\14\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\23\24\1\54"+ - "\6\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\13\24\1\u0202\7\24\1\u0203"+ - "\1\54\5\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\17\24\1\u01e2\7\24"+ - "\1\u0204\2\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\15\24\1\u0110\6\24"+ - "\1\u0205\5\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\24\24\1\u0206\5\24"+ - "\1\47\11\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\1\122\5\24\1\123\12\24\1\u0110"+ - "\10\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\32\24\1\47\4\24\1\u0207"+ - "\4\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\22\24\1\u0208\7\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\23\24\1\u013d\6\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\32\24\1\47"+ - "\4\24\1\u0209\4\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\26\24\1\u0173\3\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\17\24\1\u020a\12\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\12\24\1\u020b\17\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\24\24\1\u020c"+ - "\5\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\1\54\3\24\1\u020d\6\24"+ - "\1\u020e\3\24\1\u020f\2\24\1\213\7\24\1\47\2\24"+ - "\1\54\6\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\26\24\1\57\3\24\1\47\11\24"+ - "\1\47\2\24\1\0\3\47\2\0\1\50\2\0\1\47"+ - "\1\0\26\24\1\120\3\24\1\47\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\24\24"+ - "\1\u0210\5\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\12\24\1\u0211\17\24"+ - "\1\47\11\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\4\24\1\54\12\24\1\u020f\1\24"+ - "\2\213\7\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\25\24\1\u0212\4\24"+ - "\1\47\11\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\15\24\1\u0213\14\24\1\47\11\24"+ - "\1\47\2\24\1\0\3\47\2\0\1\50\2\0\1\47"+ - "\1\0\16\24\1\146\13\24\1\47\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\17\24"+ - "\1\u0214\12\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\21\24\1\54\10\24"+ - "\1\47\4\24\1\u0215\4\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\23\24\1\u0216\6\24"+ - "\1\47\11\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\22\24\1\u0217\7\24\1\47\11\24"+ - "\1\47\2\24\1\0\3\47\2\0\1\50\2\0\1\47"+ - "\1\0\32\24\1\47\10\24\1\u0213\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\12\24\1\u017a"+ - "\13\24\1\u0218\3\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\13\24\1\u0180"+ - "\16\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\25\24\1\311\4\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\26\24\1\u020c\1\24\1\u0219\1\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\23\24\1\u021a\6\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\27\24\1\u021b\2\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\22\24\1\u0217"+ - "\4\24\1\146\2\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\30\24\1\u011b"+ - "\1\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\23\24\1\u021c\6\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\17\24\1\u01d6\12\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\21\24\1\u0178\10\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\12\24\1\u017a"+ - "\17\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\14\24\1\54\15\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\16\24\1\u021d\13\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\13\24\1\u020c\16\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\3\24\1\u021e"+ - "\26\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\15\24\1\u021f\14\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\30\24\1\u0220\1\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\25\24\1\u0221\4\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\24\24\1\u01db"+ - "\5\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\23\24\1\u01e9\6\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\26\24\1\u0222\3\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\32\24\1\47\1\54\10\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\4\24\1\143\25\24"+ - "\1\47\11\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\20\24\1\u0223\11\24\1\47\11\24"+ - "\1\47\2\24\1\0\3\47\2\0\1\50\2\0\1\47"+ - "\1\0\16\24\1\u0137\13\24\1\47\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\12\24"+ - "\1\u01d4\1\u0224\1\u0225\4\24\1\u0226\2\24\1\54\1\u0227"+ - "\2\24\1\u01d4\1\24\1\47\2\24\1\u0214\1\24\1\u0228"+ - "\1\54\3\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\27\24\1\u0229\2\24\1\47\11\24"+ - "\1\47\2\24\1\0\3\47\2\0\1\50\2\0\1\47"+ - "\1\0\27\24\1\u022a\2\24\1\47\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\16\24"+ - "\1\54\13\24\1\47\1\24\1\54\7\24\20\0\1\365"+ - "\2\0\1\365\60\0\1\365\71\0\1\u022b\60\0\1\365"+ - "\74\0\1\u022c\56\0\1\u022d\50\0\1\u022e\76\0\1\376"+ - "\51\0\1\u022f\61\0\1\u0230\42\0\1\365\2\0\1\365"+ - "\11\0\1\365\1\0\1\365\4\0\1\u0231\1\u0232\1\0"+ - "\1\u0233\61\0\1\101\4\0\1\365\53\0\1\365\51\0"+ - "\1\u0234\3\0\1\u022e\56\0\1\365\63\0\1\u01b0\4\0"+ - "\1\u0235\45\0\1\u0236\70\0\1\u0237\45\0\1\365\103\0"+ - "\1\u0238\61\0\1\u0239\56\0\1\u023a\50\0\1\u01b2\67\0"+ - "\1\u01b0\53\0\1\u023b\65\0\1\u01a7\24\0\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\26\24"+ - "\1\u01ef\3\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\21\24\1\u023c\6\24"+ - "\1\u023d\1\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\15\24\1\54\3\24"+ - "\1\u01c2\2\24\1\54\3\24\1\u023e\1\24\1\47\1\24"+ - "\1\54\7\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\25\24\1\54\4\24\1\47\11\24"+ - "\1\47\2\24\1\0\3\47\2\0\1\50\2\0\1\47"+ - "\1\0\15\24\1\54\14\24\1\47\1\24\1\54\7\24"+ - "\1\47\2\24\1\0\3\47\2\0\1\50\2\0\1\47"+ - "\1\0\17\24\1\u023f\12\24\1\47\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\12\24"+ - "\1\u0240\17\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\16\24\1\213\13\24"+ - "\1\47\11\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\15\24\1\213\14\24\1\47\11\24"+ - "\1\47\2\24\1\0\3\47\2\0\1\50\2\0\1\47"+ - "\1\0\24\24\1\54\5\24\1\47\1\24\1\54\3\24"+ - "\1\54\3\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\31\24\1\213\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\24\24\1\54\5\24\1\47\1\24\1\54\7\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\17\24\1\u0241\12\24\1\47\1\u0242\10\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\23\24"+ - "\1\u0243\6\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\27\24\1\u0244\2\24"+ - "\1\47\11\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\22\24\1\u0245\7\24\1\47\11\24"+ - "\1\47\2\24\1\0\3\47\2\0\1\50\2\0\1\47"+ - "\1\0\24\24\1\u0246\5\24\1\47\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\21\24"+ - "\1\213\6\24\1\u0247\1\24\1\47\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\32\24"+ - "\1\47\4\24\1\u0248\4\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\13\24\1\213\1\u0249"+ - "\15\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\25\24\1\u024a\4\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\13\24\1\u0110\16\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\26\24\1\u024b\3\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\17\24\1\54"+ - "\5\24\1\u01dd\4\24\1\47\2\24\1\54\6\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\15\24\1\54\6\24\1\54\5\24\1\47\1\24\1\54"+ - "\7\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\22\24\1\u0135\7\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\12\24\1\u01e5\17\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\17\24\1\54"+ - "\12\24\1\47\2\24\1\54\6\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\1\u024c\1\u01db"+ - "\5\24\1\u01db\22\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\16\24\1\u0162"+ - "\13\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\27\24\1\u024d\2\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\31\24\1\u0110\1\47\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\16\24"+ - "\1\u024e\13\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\32\24\1\47\4\24"+ - "\1\u0110\4\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\26\24\1\u0110\3\24\1\47\11\24"+ - "\1\47\2\24\1\0\3\47\2\0\1\50\2\0\1\47"+ - "\1\0\17\24\1\u024f\12\24\1\47\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\20\24"+ - "\1\u0110\11\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\22\24\1\u0250\7\24"+ - "\1\47\11\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\32\24\1\50\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\21\24"+ - "\1\u01f0\1\24\1\u01e2\6\24\1\47\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\21\24"+ - "\1\54\4\24\1\115\3\24\1\47\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\26\24"+ - "\1\u01d5\1\u0251\2\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\22\24\1\u01d6"+ - "\7\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\25\24\1\u0252\4\24\1\47"+ - "\3\24\1\311\5\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\32\24\1\47\7\24\1\u01e9"+ - "\1\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\26\24\1\115\3\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\21\24\1\143\10\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\17\24\1\u024f"+ - "\3\24\1\u013d\6\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\15\24\1\54"+ - "\3\24\1\54\2\24\1\54\5\24\1\47\1\24\1\54"+ - "\7\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\22\24\1\u0253\7\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\21\24\1\u0254\5\24\1\u0255\2\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\21\24\1\u0256\5\24\1\u0257\2\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\4\24\1\u0258\14\24\1\u0259\10\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\17\24\1\u01e5\12\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\31\24\1\u025a"+ - "\1\47\11\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\17\24\1\u025b\12\24\1\47\11\24"+ - "\1\47\2\24\1\0\3\47\2\0\1\50\2\0\1\47"+ - "\1\0\13\24\1\u025c\16\24\1\47\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\17\24"+ - "\1\u025d\12\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\21\24\1\230\10\24"+ - "\1\47\11\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\24\24\1\u0205\5\24\1\47\11\24"+ - "\1\47\2\24\1\0\3\47\2\0\1\50\2\0\1\47"+ - "\1\0\30\24\1\u0244\1\24\1\47\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\30\24"+ - "\1\u025e\1\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\27\24\1\u013d\2\24"+ - "\1\47\11\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\4\24\1\u019b\25\24\1\47\11\24"+ - "\1\47\2\24\1\0\3\47\2\0\1\50\2\0\1\47"+ - "\1\0\20\24\1\u0103\11\24\1\47\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\31\24"+ - "\1\u025f\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\17\24\1\u01e2\12\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\25\24\1\u025f\4\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\27\24\1\u01f1\2\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\20\24\1\u0260"+ - "\11\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\1\54\31\24\1\47\11\24"+ - "\1\47\2\24\1\0\3\47\2\0\1\50\2\0\1\47"+ - "\1\0\32\24\1\47\4\24\1\u0261\4\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\27\24"+ - "\1\54\2\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\3\24\1\u0262\21\24"+ - "\1\257\4\24\1\47\1\257\10\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\25\24\1\u0164"+ - "\4\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\27\24\1\u0263\2\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\13\24\1\u01d6\16\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\22\24\1\u0264\7\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\4\24\1\54"+ - "\11\24\1\u020c\13\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\32\24\1\47"+ - "\3\24\1\54\5\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\4\24\1\u020c\22\24\1\u020c"+ - "\2\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\32\24\1\47\10\24\1\u0265"+ - "\1\47\2\24\1\0\3\47\2\0\1\50\2\0\1\47"+ - "\1\0\21\24\1\u0177\10\24\1\47\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\17\24"+ - "\1\u020f\1\24\2\213\7\24\1\47\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\15\24"+ - "\1\u0266\14\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\32\24\1\47\4\24"+ - "\1\u020c\4\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\32\24\1\47\10\24\1\u0266\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\32\24\1\47\4\24\1\u0215\4\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\12\24\1\u0267"+ - "\17\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\32\24\1\47\3\24\1\u0268"+ - "\5\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\12\24\1\u01d5\17\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\4\24\1\u0110\25\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\32\24\1\47"+ - "\10\24\1\u0176\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\15\24\1\54\14\24\1\47\11\24"+ - "\1\47\2\24\1\0\3\47\2\0\1\50\2\0\1\47"+ - "\1\0\32\24\1\47\4\24\1\u0269\4\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\4\24"+ - "\1\143\7\24\1\u01d4\15\24\1\47\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\4\24"+ - "\1\143\6\24\1\u01d4\16\24\1\47\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\15\24"+ - "\1\54\3\24\1\54\2\24\1\54\5\24\1\47\1\24"+ - "\1\54\1\24\1\54\5\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\26\24\1\u026a\3\24"+ - "\1\47\11\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\21\24\1\u026b\10\24\1\47\11\24"+ - "\1\47\2\24\1\0\3\47\2\0\1\50\2\0\1\47"+ - "\1\0\25\24\1\u026c\4\24\1\47\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\13\24"+ - "\1\u026c\16\24\1\47\11\24\30\0\1\365\61\0\1\341"+ - "\14\0\1\101\7\0\1\u026d\47\0\1\354\54\0\1\365"+ - "\53\0\1\u01b0\76\0\1\101\51\0\1\101\7\0\1\u026e"+ - "\47\0\1\365\6\0\1\357\10\0\1\365\50\0\1\u026f"+ - "\63\0\1\u0270\62\0\1\u0271\64\0\1\365\46\0\1\u0272"+ - "\63\0\1\u0273\53\0\1\u0274\60\0\1\361\72\0\1\u022f"+ - "\20\0\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\21\24\1\u0275\10\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\21\24\1\u0276\10\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\21\24\1\u01c2"+ - "\10\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\26\24\1\u0277\3\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\26\24\1\u0103\3\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\32\24\1\47\5\24\1\u0278\3\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\26\24\1\u0278"+ - "\3\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\25\24\1\u0279\4\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\20\24\1\u027a\11\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\32\24\1\47\1\24\1\u0176\7\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\21\24\1\u027b"+ - "\10\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\30\24\1\213\1\24\1\47"+ - "\1\24\1\54\7\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\15\24\1\u0110\14\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\14\24\1\u027c\15\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\11\24\1\u01db\20\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\31\24\1\u027d"+ - "\1\47\11\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\25\24\1\u01fe\4\24\1\47\11\24"+ - "\1\47\2\24\1\0\3\47\2\0\1\50\2\0\1\47"+ - "\1\0\25\24\1\u01e5\4\24\1\47\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\26\24"+ - "\1\u015e\3\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\26\24\1\u0139\3\24"+ - "\1\47\11\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\14\24\1\u027e\15\24\1\47\11\24"+ - "\1\47\2\24\1\0\3\47\2\0\1\50\2\0\1\47"+ - "\1\0\3\24\1\u027f\26\24\1\47\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\3\24"+ - "\1\u01d4\26\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\3\24\1\u0280\26\24"+ - "\1\47\11\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\3\24\1\u01f1\26\24\1\47\11\24"+ - "\1\47\2\24\1\0\3\47\2\0\1\50\2\0\1\47"+ - "\1\0\21\24\1\u0254\10\24\1\47\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\21\24"+ - "\1\u0256\10\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\13\24\1\u0281\16\24"+ - "\1\47\11\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\32\24\1\47\1\u0110\10\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\27\24\1\u01e5\2\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\32\24\1\47"+ - "\5\24\1\172\3\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\24\24\1\u0282\5\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\27\24\1\u0110\2\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\13\24\2\u01d4\15\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\17\24\1\54"+ - "\6\24\1\54\3\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\25\24\1\146"+ - "\4\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\23\24\1\143\6\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\15\24\1\52\1\24\1\54\5\24\1\u0283"+ - "\2\24\1\54\1\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\22\24\1\146"+ - "\7\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\4\24\1\u0209\25\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\23\24\1\u0284\6\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\4\24\1\143\25\24\1\47\5\24\1\54\3\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\20\24\1\u01d4\11\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\17\24\1\u0285"+ - "\12\24\1\47\11\24\30\0\1\u0286\100\0\1\u0287\55\0"+ - "\1\u0287\64\0\1\u0288\56\0\1\u0289\67\0\1\365\54\0"+ - "\1\u028a\55\0\1\u028b\21\0\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\24\24\1\213\5\24"+ - "\1\47\1\24\1\u0247\7\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\32\24\1\47\1\24"+ - "\1\u0247\7\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\22\24\1\u0191\7\24\1\47\11\24"+ - "\1\47\2\24\1\0\3\47\2\0\1\50\2\0\1\47"+ - "\1\0\26\24\1\u028c\3\24\1\47\11\24\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\13\24"+ - "\2\u028d\15\24\1\47\11\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\20\24\1\u0247\11\24"+ - "\1\47\11\24\1\47\2\24\1\0\3\47\2\0\1\50"+ - "\2\0\1\47\1\0\23\24\1\u01e2\6\24\1\47\11\24"+ - "\1\47\2\24\1\0\3\47\2\0\1\50\2\0\1\47"+ - "\1\0\1\u0110\2\24\1\u0110\11\24\1\u0110\1\24\1\u0110"+ - "\4\24\1\u0205\1\u016a\1\24\1\u028e\2\24\1\47\11\24"+ - "\1\47\2\24\1\0\3\47\2\0\1\50\2\0\1\47"+ - "\1\0\32\24\1\47\1\u0222\10\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\4\24\1\u020d"+ - "\25\24\1\47\11\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\21\24\1\u020d\10\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\23\24\1\u028f\6\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\17\24\1\u0290\12\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\15\24\1\52"+ - "\1\24\1\54\10\24\1\54\1\24\1\47\11\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\32\24\1\47\10\24\1\216\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\32\24\1\47\6\24"+ - "\1\u0291\2\24\40\0\1\u0292\66\0\1\365\62\0\1\u01b2"+ - "\60\0\1\101\7\0\1\u0293\60\0\1\u0294\5\0\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\17\24\1\u0295\12\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\15\24\1\213"+ - "\6\24\1\216\5\24\1\47\1\24\1\u0176\7\24\1\47"+ - "\2\24\1\0\3\47\2\0\1\50\2\0\1\47\1\0"+ - "\24\24\1\u013d\5\24\1\47\11\24\1\47\2\24\1\0"+ - "\3\47\2\0\1\50\2\0\1\47\1\0\32\24\1\47"+ - "\1\24\1\u01e9\7\24\1\47\2\24\1\0\3\47\2\0"+ - "\1\50\2\0\1\47\1\0\13\24\1\u0296\16\24\1\47"+ - "\11\24\1\47\2\24\1\0\3\47\2\0\1\50\2\0"+ - "\1\47\1\0\32\24\1\47\6\24\1\u0110\2\24\34\0"+ - "\1\u0297\55\0\1\u0298\104\0\1\365\6\0\1\47\2\24"+ - "\1\0\3\47\2\0\1\50\2\0\1\47\1\0\32\24"+ - "\1\47\3\24\1\u01e5\5\24\1\47\2\24\1\0\3\47"+ - "\2\0\1\50\2\0\1\47\1\0\27\24\1\u0299\2\24"+ - "\1\47\11\24\41\0\1\u029a\60\0\1\u029b\51\0\1\341"+ - "\65\0\1\u029c\66\0\1\365\20\0"; - - private static int [] zzUnpackTrans() { - int [] result = new int[31850]; - int offset = 0; - offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackTrans(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - value--; - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /* error codes */ - private static final int ZZ_UNKNOWN_ERROR = 0; - private static final int ZZ_NO_MATCH = 1; - private static final int ZZ_PUSHBACK_2BIG = 2; - - /* error messages for the codes above */ - private static final String ZZ_ERROR_MSG[] = { - "Unkown internal scanner error", - "Error: could not match input", - "Error: pushback value was too large" - }; - - /** - * ZZ_ATTRIBUTE[aState] contains the attributes of state aState - */ - private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); - - private static final String ZZ_ATTRIBUTE_PACKED_0 = - "\2\0\1\11\5\1\1\11\1\1\1\11\44\1\2\11"+ - "\25\0\225\1\31\0\1\11\11\0\245\1\1\0\1\1"+ - "\10\0\1\1\17\0\155\1\1\0\1\1\3\0\1\1"+ - "\5\0\1\1\5\0\61\1\7\0\22\1\1\0\1\1"+ - "\2\0\1\1\1\0\6\1\3\0\2\1\2\0\2\1"+ - "\2\0"; - - private static int [] zzUnpackAttribute() { - int [] result = new int[668]; - int offset = 0; - offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAttribute(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - /** the input device */ - private java.io.Reader zzReader; - - /** the current state of the DFA */ - private int zzState; - - /** the current lexical state */ - private int zzLexicalState = YYINITIAL; - - /** this buffer contains the current text to be matched and is - the source of the yytext() string */ - private char zzBuffer[]; - - /** the textposition at the last accepting state */ - private int zzMarkedPos; - - /** the current text position in the buffer */ - private int zzCurrentPos; - - /** startRead marks the beginning of the yytext() string in the buffer */ - private int zzStartRead; - - /** endRead marks the last character in the buffer, that has been read - from input */ - private int zzEndRead; - - /** - * zzAtBOL == true <=> the scanner is currently at the beginning of a line - */ - private boolean zzAtBOL = true; - - /** zzAtEOF == true <=> the scanner is at the EOF */ - private boolean zzAtEOF; - - /* user code: */ - - - /** - * Constructor. We must have this here as JFLex does not generate a - * no parameter constructor. - */ - public AssemblerX86TokenMaker() { - super(); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, int startOffset) { - super.addToken(array, start,end, tokenType, startOffset); - zzStartRead = zzMarkedPos; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { ";", null }; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - - // Start off in the proper state. - int state = Token.NULL; - switch (initialTokenType) { - default: - state = Token.NULL; - } - - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtBOL = true; - zzAtEOF = false; - } - - - - - /** - * Creates a new scanner - * There is also a java.io.InputStream version of this constructor. - * - * @param in the java.io.Reader to read input from. - */ - public AssemblerX86TokenMaker(java.io.Reader in) { - this.zzReader = in; - } - - /** - * Creates a new scanner. - * There is also java.io.Reader version of this constructor. - * - * @param in the java.io.Inputstream to read input from. - */ - public AssemblerX86TokenMaker(java.io.InputStream in) { - this(new java.io.InputStreamReader(in)); - } - - /** - * Unpacks the compressed character translation table. - * - * @param packed the packed character translation table - * @return the unpacked character translation table - */ - private static char [] zzUnpackCMap(String packed) { - char [] map = new char[0x10000]; - int i = 0; /* index in packed string */ - int j = 0; /* index in unpacked array */ - while (i < 200) { - int count = packed.charAt(i++); - char value = packed.charAt(i++); - do map[j++] = value; while (--count > 0); - } - return map; - } - - - /** - * Closes the input stream. - */ - public final void yyclose() throws java.io.IOException { - zzAtEOF = true; /* indicate end of file */ - zzEndRead = zzStartRead; /* invalidate buffer */ - - if (zzReader != null) - zzReader.close(); - } - - - /** - * Returns the current lexical state. - */ - public final int yystate() { - return zzLexicalState; - } - - - /** - * Enters a new lexical state - * - * @param newState the new lexical state - */ - @Override -public final void yybegin(int newState) { - zzLexicalState = newState; - } - - - /** - * Returns the text matched by the current regular expression. - */ - public final String yytext() { - return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead ); - } - - - /** - * Returns the character at position pos from the - * matched text. - * - * It is equivalent to yytext().charAt(pos), but faster - * - * @param pos the position of the character to fetch. - * A value from 0 to yylength()-1. - * - * @return the character at position pos - */ - public final char yycharat(int pos) { - return zzBuffer[zzStartRead+pos]; - } - - - /** - * Returns the length of the matched text region. - */ - public final int yylength() { - return zzMarkedPos-zzStartRead; - } - - - /** - * Reports an error that occured while scanning. - * - * In a wellformed scanner (no or only correct usage of - * yypushback(int) and a match-all fallback rule) this method - * will only be called with things that "Can't Possibly Happen". - * If this method is called, something is seriously wrong - * (e.g. a JFlex bug producing a faulty scanner etc.). - * - * Usual syntax/scanner level error handling should be done - * in error fallback rules. - * - * @param errorCode the code of the errormessage to display - */ - private void zzScanError(int errorCode) { - String message; - try { - message = ZZ_ERROR_MSG[errorCode]; - } - catch (ArrayIndexOutOfBoundsException e) { - message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; - } - - throw new Error(message); - } - - - /** - * Pushes the specified amount of characters back into the input stream. - * - * They will be read again by then next call of the scanning method - * - * @param number the number of characters to be read again. - * This number must not be greater than yylength()! - */ - public void yypushback(int number) { - if ( number > yylength() ) - zzScanError(ZZ_PUSHBACK_2BIG); - - zzMarkedPos -= number; - } - - - /** - * Resumes scanning until the next regular expression is matched, - * the end of input is encountered or an I/O-Error occurs. - * - * @return the next token - * @exception java.io.IOException if any I/O-Error occurs - */ - public org.fife.ui.rsyntaxtextarea.Token yylex() throws java.io.IOException { - int zzInput; - int zzAction; - - // cached fields: - int zzCurrentPosL; - int zzMarkedPosL; - int zzEndReadL = zzEndRead; - char [] zzBufferL = zzBuffer; - char [] zzCMapL = ZZ_CMAP; - - int [] zzTransL = ZZ_TRANS; - int [] zzRowMapL = ZZ_ROWMAP; - int [] zzAttrL = ZZ_ATTRIBUTE; - - while (true) { - zzMarkedPosL = zzMarkedPos; - - if (zzMarkedPosL > zzStartRead) { - switch (zzBufferL[zzMarkedPosL-1]) { - case '\n': - case '\u000B': - case '\u000C': - case '\u0085': - case '\u2028': - case '\u2029': - zzAtBOL = true; - break; - case '\r': - if (zzMarkedPosL < zzEndReadL) - zzAtBOL = zzBufferL[zzMarkedPosL] != '\n'; - else if (zzAtEOF) - zzAtBOL = false; - else { - boolean eof = zzRefill(); - zzMarkedPosL = zzMarkedPos; - zzEndReadL = zzEndRead; - zzBufferL = zzBuffer; - if (eof) - zzAtBOL = false; - else - zzAtBOL = zzBufferL[zzMarkedPosL] != '\n'; - } - break; - default: - zzAtBOL = false; - } - } - zzAction = -1; - - zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; - - if (zzAtBOL) - zzState = ZZ_LEXSTATE[zzLexicalState+1]; - else - zzState = ZZ_LEXSTATE[zzLexicalState]; - - - zzForAction: { - while (true) { - - if (zzCurrentPosL < zzEndReadL) - zzInput = zzBufferL[zzCurrentPosL++]; - else if (zzAtEOF) { - zzInput = YYEOF; - break zzForAction; - } - else { - // store back cached positions - zzCurrentPos = zzCurrentPosL; - zzMarkedPos = zzMarkedPosL; - boolean eof = zzRefill(); - // get translated positions and possibly new buffer - zzCurrentPosL = zzCurrentPos; - zzMarkedPosL = zzMarkedPos; - zzBufferL = zzBuffer; - zzEndReadL = zzEndRead; - if (eof) { - zzInput = YYEOF; - break zzForAction; - } - else { - zzInput = zzBufferL[zzCurrentPosL++]; - } - } - int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; - if (zzNext == -1) break zzForAction; - zzState = zzNext; - - int zzAttributes = zzAttrL[zzState]; - if ( (zzAttributes & 1) == 1 ) { - zzAction = zzState; - zzMarkedPosL = zzCurrentPosL; - if ( (zzAttributes & 8) == 8 ) break zzForAction; - } - - } - } - - // store back cached position - zzMarkedPos = zzMarkedPosL; - - switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { - case 11: - { addToken(Token.RESERVED_WORD); - } - case 16: break; - case 1: - { addToken(Token.IDENTIFIER); - } - case 17: break; - case 12: - { addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); - } - case 18: break; - case 9: - { addToken(Token.FUNCTION); - } - case 19: break; - case 5: - { addToken(Token.COMMENT_EOL); addNullToken(); return firstToken; - } - case 20: break; - case 14: - { addToken(Token.VARIABLE); - } - case 21: break; - case 7: - { addToken(Token.WHITESPACE); - } - case 22: break; - case 10: - { addToken(Token.PREPROCESSOR); - } - case 23: break; - case 15: - { addToken(Token.DATA_TYPE); - } - case 24: break; - case 4: - { addToken(Token.ERROR_CHAR); /*addNullToken(); return firstToken;*/ - } - case 25: break; - case 8: - { addToken(Token.OPERATOR); - } - case 26: break; - case 2: - { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); - } - case 27: break; - case 13: - { addToken(Token.LITERAL_CHAR); - } - case 28: break; - case 3: - { addToken(Token.ERROR_STRING_DOUBLE); addNullToken(); return firstToken; - } - case 29: break; - case 6: - { addNullToken(); return firstToken; - } - case 30: break; - default: - if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { - zzAtEOF = true; - switch (zzLexicalState) { - case YYINITIAL: { - addNullToken(); return firstToken; - } - case 669: break; - default: - return null; - } - } - else { - zzScanError(ZZ_NO_MATCH); - } - } - } - } - - -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/BBCodeTokenMaker.flex b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/BBCodeTokenMaker.flex deleted file mode 100644 index eb8ea08..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/BBCodeTokenMaker.flex +++ /dev/null @@ -1,273 +0,0 @@ -/* - * 11/18/2009 - * - * BBCodeTokenMaker.java - Generates tokens for BBCode syntax highlighting. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * Scanner for BBCode. - * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated BBCodeTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.7 - * - */ -%% - -%public -%class BBCodeTokenMaker -%extends AbstractMarkupTokenMaker -%unicode -%type org.fife.ui.rsyntaxtextarea.Token - - -%{ - - /** - * Token type specific to BBCodeTokenMaker; this signals that the user has - * ended a line with an unclosed tag; thus a new line is beginning - * still inside of the tag. - */ - public static final int INTERNAL_INTAG = -1; - - /** - * Whether closing markup tags are automatically completed for BBCode. - */ - private static boolean completeCloseTags = true; - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public BBCodeTokenMaker() { - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, int startOffset) { - super.addToken(array, start,end, tokenType, startOffset); - zzStartRead = zzMarkedPos; - } - - - /** - * Sets whether markup close tags should be completed. The default value - * for BBCode is true. - * - * @return Whether closing markup tags are completed. - * @see #setCompleteCloseTags(boolean) - */ - @Override - public boolean getCompleteCloseTags() { - return completeCloseTags; - } - - - /** - * Returns null since BBCode has no comments. - * - * @return null always. - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return null; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - - // Start off in the proper state. - int state = Token.NULL; - switch (initialTokenType) { - case INTERNAL_INTAG: - state = INTAG; - start = text.offset; - break; - default: - state = Token.NULL; - } - - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Sets whether markup close tags should be completed. - * - * @param complete Whether closing markup tags are completed. - * @see #getCompleteCloseTags() - */ - public static void setCompleteCloseTags(boolean complete) { - completeCloseTags = complete; - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(java.io.Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = zzPushbackPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtBOL = true; - zzAtEOF = false; - } - - -%} - -Whitespace = ([ \t\f]+) -LineTerminator = ([\n]) -Identifier = ([^ \t\f\n\[]+) -InTagIdentifier = ([^ \t\f\n\[\]\/\=]+) -Tag = ("b"|"i"|"u"|"s"|"size"|"color"|"center"|"quote"|"url"|"img"|"ul"|"li"|"ol"|"youtube"|"gvideo") - -%state INTAG - -%% - - { - {Identifier} { addToken(Token.IDENTIFIER); } - {Whitespace} { addToken(Token.WHITESPACE); } - "[" { addToken(Token.MARKUP_TAG_DELIMITER); yybegin(INTAG); } - "[/" { addToken(Token.MARKUP_TAG_DELIMITER); yybegin(INTAG); } - {LineTerminator} { addNullToken(); return firstToken; } - <> { addNullToken(); return firstToken; } -} - - { - "/" { addToken(Token.MARKUP_TAG_DELIMITER); } - {Tag} { addToken(Token.MARKUP_TAG_NAME); } - {InTagIdentifier} { addToken(Token.MARKUP_TAG_ATTRIBUTE); } - {Whitespace} { addToken(Token.WHITESPACE); } - "=" { addToken(Token.OPERATOR); } - "/]" { yybegin(YYINITIAL); addToken(Token.MARKUP_TAG_DELIMITER); } - "]" { yybegin(YYINITIAL); addToken(Token.MARKUP_TAG_DELIMITER); } - . { addToken(Token.IDENTIFIER); /* Unhandled chars, not likely */ } - <> { addToken(zzMarkedPos,zzMarkedPos, INTERNAL_INTAG); return firstToken; } -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/BBCodeTokenMaker.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/BBCodeTokenMaker.java deleted file mode 100644 index a466f90..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/BBCodeTokenMaker.java +++ /dev/null @@ -1,729 +0,0 @@ -/* The following code was generated by JFlex 1.4.1 on 11/18/09 4:41 PM */ - -/* - * 11/18/2009 - * - * BBCodeTokenMaker.java - Generates tokens for BBCode syntax highlighting. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * Scanner for BBCode. - * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated BBCodeTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.7 - * - */ - -public class BBCodeTokenMaker extends AbstractMarkupTokenMaker { - - /** This character denotes the end of file */ - public static final int YYEOF = -1; - - /** lexical states */ - public static final int INTAG = 1; - public static final int YYINITIAL = 0; - - /** - * Translates characters to character classes - */ - private static final String ZZ_CMAP_PACKED = - "\11\0\1\1\1\2\1\0\1\1\23\0\1\1\16\0\1\27\15\0"+ - "\1\30\35\0\1\3\1\0\1\4\4\0\1\5\1\13\1\26\1\12"+ - "\1\0\1\23\1\0\1\6\2\0\1\15\1\22\1\17\1\14\1\0"+ - "\1\21\1\16\1\10\1\20\1\7\1\25\2\0\1\24\1\11\uff85\0"; - - /** - * Translates characters to character classes - */ - private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); - - /** - * Translates DFA states to action switch labels. - */ - private static final int [] ZZ_ACTION = zzUnpackAction(); - - private static final String ZZ_ACTION_PACKED_0 = - "\2\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7"+ - "\4\10\6\5\1\11\1\12\1\4\23\5"; - - private static int [] zzUnpackAction() { - int [] result = new int[41]; - int offset = 0; - offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAction(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /** - * Translates a state to a row index in the transition table - */ - private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); - - private static final String ZZ_ROWMAP_PACKED_0 = - "\0\0\0\31\0\62\0\113\0\144\0\175\0\226\0\144"+ - "\0\144\0\226\0\257\0\310\0\341\0\372\0\u0113\0\u012c"+ - "\0\u0145\0\u015e\0\u0177\0\u0190\0\144\0\144\0\u01a9\0\u01c2"+ - "\0\u01db\0\u01f4\0\u020d\0\u0226\0\u023f\0\u0258\0\u0271\0\u028a"+ - "\0\u02a3\0\u02bc\0\u02d5\0\u02ee\0\u0307\0\u0320\0\u0339\0\u0352"+ - "\0\u036b"; - - private static int [] zzUnpackRowMap() { - int [] result = new int[41]; - int offset = 0; - offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackRowMap(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int high = packed.charAt(i++) << 16; - result[j++] = high | packed.charAt(i++); - } - return j; - } - - /** - * The transition table of the DFA - */ - private static final int [] ZZ_TRANS = zzUnpackTrans(); - - private static final String ZZ_TRANS_PACKED_0 = - "\1\3\1\4\1\5\1\6\25\3\1\7\1\4\1\0"+ - "\1\10\1\11\1\12\1\13\1\14\1\15\2\7\1\16"+ - "\1\17\1\20\3\7\1\21\1\7\1\22\1\23\2\7"+ - "\1\24\1\25\1\3\3\0\25\3\1\0\1\4\107\0"+ - "\1\26\1\0\1\7\4\0\22\7\2\0\1\7\4\0"+ - "\15\7\1\27\4\7\2\0\1\7\4\0\10\7\1\12"+ - "\1\17\10\7\2\0\1\7\4\0\1\7\1\30\20\7"+ - "\2\0\1\7\4\0\5\7\1\31\1\7\1\32\12\7"+ - "\2\0\1\7\4\0\10\7\1\12\11\7\2\0\1\7"+ - "\4\0\1\7\1\12\20\7\2\0\1\7\4\0\2\7"+ - "\1\33\17\7\2\0\1\7\4\0\20\7\1\34\1\7"+ - "\2\0\1\7\4\0\7\7\1\35\12\7\6\0\1\11"+ - "\24\0\1\7\4\0\16\7\1\12\3\7\2\0\1\7"+ - "\4\0\4\7\1\36\15\7\2\0\1\7\4\0\12\7"+ - "\1\37\7\7\2\0\1\7\4\0\10\7\1\40\11\7"+ - "\2\0\1\7\4\0\7\7\1\41\12\7\2\0\1\7"+ - "\4\0\1\7\1\42\20\7\2\0\1\7\4\0\2\7"+ - "\1\43\17\7\2\0\1\7\4\0\5\7\1\12\14\7"+ - "\2\0\1\7\4\0\13\7\1\44\6\7\2\0\1\7"+ - "\4\0\7\7\1\45\12\7\2\0\1\7\4\0\13\7"+ - "\1\36\6\7\2\0\1\7\4\0\21\7\1\46\2\0"+ - "\1\7\4\0\13\7\1\47\6\7\2\0\1\7\4\0"+ - "\5\7\1\45\14\7\2\0\1\7\4\0\11\7\1\12"+ - "\10\7\2\0\1\7\4\0\5\7\1\50\14\7\2\0"+ - "\1\7\4\0\2\7\1\51\17\7\2\0\1\7\4\0"+ - "\7\7\1\12\12\7\2\0\1\7\4\0\1\36\21\7"+ - "\2\0"; - - private static int [] zzUnpackTrans() { - int [] result = new int[900]; - int offset = 0; - offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackTrans(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - value--; - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /* error codes */ - private static final int ZZ_UNKNOWN_ERROR = 0; - private static final int ZZ_NO_MATCH = 1; - private static final int ZZ_PUSHBACK_2BIG = 2; - - /* error messages for the codes above */ - private static final String ZZ_ERROR_MSG[] = { - "Unkown internal scanner error", - "Error: could not match input", - "Error: pushback value was too large" - }; - - /** - * ZZ_ATTRIBUTE[aState] contains the attributes of state aState - */ - private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); - - private static final String ZZ_ATTRIBUTE_PACKED_0 = - "\2\0\2\1\1\11\2\1\2\11\13\1\2\11\23\1"; - - private static int [] zzUnpackAttribute() { - int [] result = new int[41]; - int offset = 0; - offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAttribute(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - /** the input device */ - private java.io.Reader zzReader; - - /** the current state of the DFA */ - private int zzState; - - /** the current lexical state */ - private int zzLexicalState = YYINITIAL; - - /** this buffer contains the current text to be matched and is - the source of the yytext() string */ - private char zzBuffer[]; - - /** the textposition at the last accepting state */ - private int zzMarkedPos; - - /** the current text position in the buffer */ - private int zzCurrentPos; - - /** startRead marks the beginning of the yytext() string in the buffer */ - private int zzStartRead; - - /** endRead marks the last character in the buffer, that has been read - from input */ - private int zzEndRead; - - /** zzAtEOF == true <=> the scanner is at the EOF */ - private boolean zzAtEOF; - - /* user code: */ - - /** - * Token type specific to BBCodeTokenMaker; this signals that the user has - * ended a line with an unclosed tag; thus a new line is beginning - * still inside of the tag. - */ - public static final int INTERNAL_INTAG = -1; - - /** - * Whether closing markup tags are automatically completed for BBCode. - */ - private static boolean completeCloseTags = true; - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public BBCodeTokenMaker() { - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, int startOffset) { - super.addToken(array, start,end, tokenType, startOffset); - zzStartRead = zzMarkedPos; - } - - - /** - * Sets whether markup close tags should be completed. The default value - * for BBCode is true. - * - * @return Whether closing markup tags are completed. - * @see #setCompleteCloseTags(boolean) - */ - @Override - public boolean getCompleteCloseTags() { - return completeCloseTags; - } - - - /** - * Returns null since BBCode has no comments. - * - * @return null always. - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return null; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - - // Start off in the proper state. - int state = Token.NULL; - switch (initialTokenType) { - case INTERNAL_INTAG: - state = INTAG; - start = text.offset; - break; - default: - state = Token.NULL; - } - - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Sets whether markup close tags should be completed. - * - * @param complete Whether closing markup tags are completed. - * @see #getCompleteCloseTags() - */ - public static void setCompleteCloseTags(boolean complete) { - completeCloseTags = complete; - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(java.io.Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtEOF = false; - } - - - - - /** - * Creates a new scanner - * There is also a java.io.InputStream version of this constructor. - * - * @param in the java.io.Reader to read input from. - */ - public BBCodeTokenMaker(java.io.Reader in) { - this.zzReader = in; - } - - /** - * Creates a new scanner. - * There is also java.io.Reader version of this constructor. - * - * @param in the java.io.Inputstream to read input from. - */ - public BBCodeTokenMaker(java.io.InputStream in) { - this(new java.io.InputStreamReader(in)); - } - - /** - * Unpacks the compressed character translation table. - * - * @param packed the packed character translation table - * @return the unpacked character translation table - */ - private static char [] zzUnpackCMap(String packed) { - char [] map = new char[0x10000]; - int i = 0; /* index in packed string */ - int j = 0; /* index in unpacked array */ - while (i < 80) { - int count = packed.charAt(i++); - char value = packed.charAt(i++); - do map[j++] = value; while (--count > 0); - } - return map; - } - - - /** - * Closes the input stream. - */ - public final void yyclose() throws java.io.IOException { - zzAtEOF = true; /* indicate end of file */ - zzEndRead = zzStartRead; /* invalidate buffer */ - - if (zzReader != null) - zzReader.close(); - } - - - /** - * Returns the current lexical state. - */ - public final int yystate() { - return zzLexicalState; - } - - - /** - * Enters a new lexical state - * - * @param newState the new lexical state - */ - @Override -public final void yybegin(int newState) { - zzLexicalState = newState; - } - - - /** - * Returns the text matched by the current regular expression. - */ - public final String yytext() { - return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead ); - } - - - /** - * Returns the character at position pos from the - * matched text. - * - * It is equivalent to yytext().charAt(pos), but faster - * - * @param pos the position of the character to fetch. - * A value from 0 to yylength()-1. - * - * @return the character at position pos - */ - public final char yycharat(int pos) { - return zzBuffer[zzStartRead+pos]; - } - - - /** - * Returns the length of the matched text region. - */ - public final int yylength() { - return zzMarkedPos-zzStartRead; - } - - - /** - * Reports an error that occured while scanning. - * - * In a wellformed scanner (no or only correct usage of - * yypushback(int) and a match-all fallback rule) this method - * will only be called with things that "Can't Possibly Happen". - * If this method is called, something is seriously wrong - * (e.g. a JFlex bug producing a faulty scanner etc.). - * - * Usual syntax/scanner level error handling should be done - * in error fallback rules. - * - * @param errorCode the code of the errormessage to display - */ - private void zzScanError(int errorCode) { - String message; - try { - message = ZZ_ERROR_MSG[errorCode]; - } - catch (ArrayIndexOutOfBoundsException e) { - message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; - } - - throw new Error(message); - } - - - /** - * Pushes the specified amount of characters back into the input stream. - * - * They will be read again by then next call of the scanning method - * - * @param number the number of characters to be read again. - * This number must not be greater than yylength()! - */ - public void yypushback(int number) { - if ( number > yylength() ) - zzScanError(ZZ_PUSHBACK_2BIG); - - zzMarkedPos -= number; - } - - - /** - * Resumes scanning until the next regular expression is matched, - * the end of input is encountered or an I/O-Error occurs. - * - * @return the next token - * @exception java.io.IOException if any I/O-Error occurs - */ - public org.fife.ui.rsyntaxtextarea.Token yylex() throws java.io.IOException { - int zzInput; - int zzAction; - - // cached fields: - int zzCurrentPosL; - int zzMarkedPosL; - int zzEndReadL = zzEndRead; - char [] zzBufferL = zzBuffer; - char [] zzCMapL = ZZ_CMAP; - - int [] zzTransL = ZZ_TRANS; - int [] zzRowMapL = ZZ_ROWMAP; - int [] zzAttrL = ZZ_ATTRIBUTE; - - while (true) { - zzMarkedPosL = zzMarkedPos; - - zzAction = -1; - - zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; - - zzState = zzLexicalState; - - - zzForAction: { - while (true) { - - if (zzCurrentPosL < zzEndReadL) - zzInput = zzBufferL[zzCurrentPosL++]; - else if (zzAtEOF) { - zzInput = YYEOF; - break zzForAction; - } - else { - // store back cached positions - zzCurrentPos = zzCurrentPosL; - zzMarkedPos = zzMarkedPosL; - boolean eof = zzRefill(); - // get translated positions and possibly new buffer - zzCurrentPosL = zzCurrentPos; - zzMarkedPosL = zzMarkedPos; - zzBufferL = zzBuffer; - zzEndReadL = zzEndRead; - if (eof) { - zzInput = YYEOF; - break zzForAction; - } - else { - zzInput = zzBufferL[zzCurrentPosL++]; - } - } - int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; - if (zzNext == -1) break zzForAction; - zzState = zzNext; - - int zzAttributes = zzAttrL[zzState]; - if ( (zzAttributes & 1) == 1 ) { - zzAction = zzState; - zzMarkedPosL = zzCurrentPosL; - if ( (zzAttributes & 8) == 8 ) break zzForAction; - } - - } - } - - // store back cached position - zzMarkedPos = zzMarkedPosL; - - switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { - case 1: - { addToken(Token.IDENTIFIER); - } - case 11: break; - case 9: - { addToken(Token.MARKUP_TAG_DELIMITER); - } - case 12: break; - case 2: - { addToken(Token.WHITESPACE); - } - case 13: break; - case 10: - { addToken(Token.OPERATOR); - } - case 14: break; - case 8: - { addToken(Token.MARKUP_TAG_NAME); - } - case 15: break; - case 4: - { addToken(Token.MARKUP_TAG_DELIMITER); yybegin(INTAG); - } - case 16: break; - case 6: - { addToken(Token.IDENTIFIER); /* Unhandled chars, not likely */ - } - case 17: break; - case 5: - { addToken(Token.MARKUP_TAG_ATTRIBUTE); - } - case 18: break; - case 3: - { addNullToken(); return firstToken; - } - case 19: break; - case 7: - { yybegin(YYINITIAL); addToken(Token.MARKUP_TAG_DELIMITER); - } - case 20: break; - default: - if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { - zzAtEOF = true; - switch (zzLexicalState) { - case INTAG: { - addToken(zzMarkedPos,zzMarkedPos, INTERNAL_INTAG); return firstToken; - } - case 42: break; - case YYINITIAL: { - addNullToken(); return firstToken; - } - case 43: break; - default: - return null; - } - } - else { - zzScanError(ZZ_NO_MATCH); - } - } - } - } - - -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/CPlusPlusTokenMaker.flex b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/CPlusPlusTokenMaker.flex deleted file mode 100644 index 4b57fec..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/CPlusPlusTokenMaker.flex +++ /dev/null @@ -1,675 +0,0 @@ -/* - * 11/19/2004 - * - * CPlusPlusTokenMaker.java - An object that can take a chunk of text and - * return a linked list of tokens representing it in C++. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * A parser for the C++ programming language. - * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated CPlusPlusTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.6 - * - */ -%% - -%public -%class CPlusPlusTokenMaker -%extends AbstractJFlexCTokenMaker -%unicode -%type org.fife.ui.rsyntaxtextarea.Token - - -%{ - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public CPlusPlusTokenMaker() { - super(); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addToken(int, int, int) - */ - private void addHyperlinkToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, true); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, int startOffset) { - super.addToken(array, start,end, tokenType, startOffset); - zzStartRead = zzMarkedPos; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { "//", null }; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - - // Start off in the proper state. - int state = Token.NULL; - switch (initialTokenType) { - case Token.COMMENT_MULTILINE: - state = MLC; - start = text.offset; - break; - default: - state = Token.NULL; - } - - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(java.io.Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = zzPushbackPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtBOL = true; - zzAtEOF = false; - } - - -%} - -Letter = [A-Za-z] -LetterOrUnderscore = ({Letter}|"_") -Digit = [0-9] -HexDigit = {Digit}|[A-Fa-f] -OctalDigit = [0-7] -Exponent = [eE][+-]?{Digit}+ - -PreprocessorWord = define|elif|else|endif|error|if|ifdef|ifndef|include|line|pragma|undef - -Trigraph = ("??="|"??("|"??)"|"??/"|"??'"|"??<"|"??>"|"??!"|"??-") - -OctEscape1 = ([\\]{OctalDigit}) -OctEscape2 = ([\\]{OctalDigit}{OctalDigit}) -OctEscape3 = ([\\][0-3]{OctalDigit}{OctalDigit}) -OctEscape = ({OctEscape1}|{OctEscape2}|{OctEscape3}) -HexEscape = ([\\][xX]{HexDigit}{HexDigit}) - -AnyChrChr = ([^\'\n\\]) -Escape = ([\\]([abfnrtv\'\"\?\\0e])) -UnclosedCharLiteral = ([\']({Escape}|{OctEscape}|{HexEscape}|{Trigraph}|{AnyChrChr})) -CharLiteral = ({UnclosedCharLiteral}[\']) -ErrorUnclosedCharLiteral = ([\'][^\'\n]*) -ErrorCharLiteral = (([\'][\'])|{ErrorUnclosedCharLiteral}[\']) -AnyStrChr = ([^\"\n\\]) -FalseTrigraph = (("?"(("?")*)[^\=\(\)\/\'\<\>\!\-\\\?\"\n])|("?"[\=\(\)\/\'\<\>\!\-])) -StringLiteral = ([\"]((((("?")*)({Escape}|{OctEscape}|{HexEscape}|{Trigraph}))|{FalseTrigraph}|{AnyStrChr})*)(("?")*)[\"]) -UnclosedStringLiteral = ([\"]([\\].|[^\\\"])*[^\"]?) -ErrorStringLiteral = ({UnclosedStringLiteral}[\"]) - - -LineTerminator = \n -WhiteSpace = [ \t\f] - -MLCBegin = "/*" -MLCEnd = "*/" -LineCommentBegin = "//" - -NonFloatSuffix = (([uU][lL]?)|([lL][uU]?)) -IntegerLiteral = ({Digit}+{Exponent}?{NonFloatSuffix}?) -HexLiteral = ("0"[xX]{HexDigit}+{NonFloatSuffix}?) -FloatLiteral = ((({Digit}*[\.]{Digit}+)|({Digit}+[\.]{Digit}*)){Exponent}?[fFlL]?) -ErrorNumberFormat = (({IntegerLiteral}|{HexLiteral}|{FloatLiteral}){NonSeparator}+) - -NonSeparator = ([^\t\f\r\n\ \(\)\{\}\[\]\;\,\.\=\>\<\!\~\?\:\+\-\*\/\&\|\^\%\"\']|"#") -Identifier = ({LetterOrUnderscore}({LetterOrUnderscore}|{Digit}|[$])*) -ErrorIdentifier = ({NonSeparator}+) - -URLGenDelim = ([:\/\?#\[\]@]) -URLSubDelim = ([\!\$&'\(\)\*\+,;=]) -URLUnreserved = ({LetterOrUnderscore}|{Digit}|[\-\.\~]) -URLCharacter = ({URLGenDelim}|{URLSubDelim}|{URLUnreserved}|[%]) -URLCharacters = ({URLCharacter}*) -URLEndCharacter = ([\/\$]|{Letter}|{Digit}) -URL = (((https?|f(tp|ile))"://"|"www.")({URLCharacters}{URLEndCharacter})?) - - -%state MLC -%state EOL_COMMENT - -%% - - { - - /* Keywords */ - "auto" | - "break" | - "case" | - "catch" | - "class" | - "const" | - "const_cast" | - "continue" | - "default" | - "delete" | - "do" | - "dynamic_cast" | - "else" | - "enum" | - "explicit" | - "extern" | - "for" | - "friend" | - "goto" | - "if" | - "inline" | - "mutable" | - "namespace" | - "new" | - "operator" | - "private" | - "protected" | - "public" | - "register" | - "reinterpret_cast" | - "sizeof" | - "static" | - "static_cast" | - "struct" | - "switch" | - "template" | - "this" | - "throw" | - "try" | - "typedef" | - "typeid" | - "typename" | - "union" | - "using" | - "virtual" | - "volatile" | - "while" { addToken(Token.RESERVED_WORD); } - - "return" { addToken(Token.RESERVED_WORD_2); } - - /* Boolean literals. */ - "true" | - "false" | - - /* Data types. */ - "char" | - "div_t" | - "double" | - "float" | - "int" | - "ldiv_t" | - "long" | - "short" | - "signed" | - "size_t" | - "unsigned" | - "void" | - "wchar_t" { addToken(Token.DATA_TYPE); } - - /* Standard functions */ - "abort" | - "abs" | - "acos" | - "asctime" | - "asin" | - "assert" | - "atan2" | - "atan" | - "atexit" | - "atof" | - "atoi" | - "atol" | - "bsearch" | - "btowc" | - "calloc" | - "ceil" | - "clearerr" | - "clock" | - "cosh" | - "cos" | - "ctime" | - "difftime" | - "div" | - "errno" | - "exit" | - "exp" | - "fabs" | - "fclose" | - "feof" | - "ferror" | - "fflush" | - "fgetc" | - "fgetpos" | - "fgetwc" | - "fgets" | - "fgetws" | - "floor" | - "fmod" | - "fopen" | - "fprintf" | - "fputc" | - "fputs" | - "fputwc" | - "fputws" | - "fread" | - "free" | - "freopen" | - "frexp" | - "fscanf" | - "fseek" | - "fsetpos" | - "ftell" | - "fwprintf" | - "fwrite" | - "fwscanf" | - "getchar" | - "getc" | - "getenv" | - "gets" | - "getwc" | - "getwchar" | - "gmtime" | - "isalnum" | - "isalpha" | - "iscntrl" | - "isdigit" | - "isgraph" | - "islower" | - "isprint" | - "ispunct" | - "isspace" | - "isupper" | - "isxdigit" | - "labs" | - "ldexp" | - "ldiv" | - "localeconv" | - "localtime" | - "log10" | - "log" | - "longjmp" | - "malloc" | - "mblen" | - "mbrlen" | - "mbrtowc" | - "mbsinit" | - "mbsrtowcs" | - "mbstowcs" | - "mbtowc" | - "memchr" | - "memcmp" | - "memcpy" | - "memmove" | - "memset" | - "mktime" | - "modf" | - "offsetof" | - "perror" | - "pow" | - "printf" | - "putchar" | - "putc" | - "puts" | - "putwc" | - "putwchar" | - "qsort" | - "raise" | - "rand" | - "realloc" | - "remove" | - "rename" | - "rewind" | - "scanf" | - "setbuf" | - "setjmp" | - "setlocale" | - "setvbuf" | - "setvbuf" | - "signal" | - "sinh" | - "sin" | - "sprintf" | - "sqrt" | - "srand" | - "sscanf" | - "strcat" | - "strchr" | - "strcmp" | - "strcmp" | - "strcoll" | - "strcpy" | - "strcspn" | - "strerror" | - "strftime" | - "strlen" | - "strncat" | - "strncmp" | - "strncpy" | - "strpbrk" | - "strrchr" | - "strspn" | - "strstr" | - "strtod" | - "strtok" | - "strtol" | - "strtoul" | - "strxfrm" | - "swprintf" | - "swscanf" | - "system" | - "tanh" | - "tan" | - "time" | - "tmpfile" | - "tmpnam" | - "tolower" | - "toupper" | - "ungetc" | - "ungetwc" | - "va_arg" | - "va_end" | - "va_start" | - "vfprintf" | - "vfwprintf" | - "vprintf" | - "vsprintf" | - "vswprintf" | - "vwprintf" | - "wcrtomb" | - "wcscat" | - "wcschr" | - "wcscmp" | - "wcscoll" | - "wcscpy" | - "wcscspn" | - "wcsftime" | - "wcslen" | - "wcsncat" | - "wcsncmp" | - "wcsncpy" | - "wcspbrk" | - "wcsrchr" | - "wcsrtombs" | - "wcsspn" | - "wcsstr" | - "wcstod" | - "wcstok" | - "wcstol" | - "wcstombs" | - "wcstoul" | - "wcsxfrm" | - "wctob" | - "wctomb" | - "wmemchr" | - "wmemcmp" | - "wmemcpy" | - "wmemmove" | - "wmemset" | - "wprintf" | - "wscanf" { addToken(Token.FUNCTION); } - - /* Standard-defined macros. */ - "__DATE__" | - "__TIME__" | - "__FILE__" | - "__LINE__" | - "__STDC__" { addToken(Token.PREPROCESSOR); } - - {LineTerminator} { addNullToken(); return firstToken; } - - {Identifier} { addToken(Token.IDENTIFIER); } - - {WhiteSpace}+ { addToken(Token.WHITESPACE); } - - /* Preprocessor directives */ - "#"{WhiteSpace}*{PreprocessorWord} { addToken(Token.PREPROCESSOR); } - - /* String/Character Literals. */ - {CharLiteral} { addToken(Token.LITERAL_CHAR); } - {UnclosedCharLiteral} { addToken(Token.ERROR_CHAR); /*addNullToken(); return firstToken;*/ } - {ErrorUnclosedCharLiteral} { addToken(Token.ERROR_CHAR); addNullToken(); return firstToken; } - {ErrorCharLiteral} { addToken(Token.ERROR_CHAR); } - {StringLiteral} { addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); } - {UnclosedStringLiteral} { addToken(Token.ERROR_STRING_DOUBLE); addNullToken(); return firstToken; } - {ErrorStringLiteral} { addToken(Token.ERROR_STRING_DOUBLE); } - - /* Comment Literals. */ - {MLCBegin} { start = zzMarkedPos-2; yybegin(MLC); } - {LineCommentBegin} { start = zzMarkedPos-2; yybegin(EOL_COMMENT); } - - /* Separators. */ - "(" | - ")" | - "[" | - "]" | - "{" | - "}" { addToken(Token.SEPARATOR); } - - /* Operators. */ - {Trigraph} | - "=" | - "+" | - "-" | - "*" | - "/" | - "%" | - "~" | - "<" | - ">" | - "<<" | - ">>" | - "==" | - "+=" | - "-=" | - "*=" | - "/=" | - "%=" | - "&=" | - "|=" | - "^=" | - ">=" | - "<=" | - "!=" | - ">>=" | - "<<=" | - "^" | - "&" | - "&&" | - "|" | - "||" | - "?" | - ":" | - "," | - "!" | - "++" | - "--" | - "." | - "," { addToken(Token.OPERATOR); } - - /* Numbers */ - {IntegerLiteral} { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); } - {HexLiteral} { addToken(Token.LITERAL_NUMBER_HEXADECIMAL); } - {FloatLiteral} { addToken(Token.LITERAL_NUMBER_FLOAT); } - {ErrorNumberFormat} { addToken(Token.ERROR_NUMBER_FORMAT); } - - /* Some lines will end in '\' to wrap an expression. */ - "\\" { addToken(Token.IDENTIFIER); } - - {ErrorIdentifier} { addToken(Token.ERROR_IDENTIFIER); } - - /* Other punctuation, we'll highlight it as "identifiers." */ - ";" { addToken(Token.IDENTIFIER); } - - /* Ended with a line not in a string or comment. */ - <> { addNullToken(); return firstToken; } - - /* Catch any other (unhandled) characters and flag them as bad. */ - . { addToken(Token.ERROR_IDENTIFIER); } - -} - - { - - [^hwf\n\*]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_MULTILINE); start = zzMarkedPos; } - [hwf] {} - - \n { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; } - {MLCEnd} { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); } - \* {} - <> { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; } - -} - - { - [^hwf\n]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_EOL); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_EOL); start = zzMarkedPos; } - [hwf] {} - \n { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; } - <> { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; } - -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/CPlusPlusTokenMaker.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/CPlusPlusTokenMaker.java deleted file mode 100644 index 345351c..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/CPlusPlusTokenMaker.java +++ /dev/null @@ -1,2326 +0,0 @@ -/* The following code was generated by JFlex 1.4.1 on 3/22/15 4:49 PM */ - -/* - * 11/19/2004 - * - * CPlusPlusTokenMaker.java - An object that can take a chunk of text and - * return a linked list of tokens representing it in C++. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * A parser for the C++ programming language. - * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated CPlusPlusTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.6 - * - */ - -public class CPlusPlusTokenMaker extends AbstractJFlexCTokenMaker { - - /** This character denotes the end of file */ - public static final int YYEOF = -1; - - /** lexical states */ - public static final int EOL_COMMENT = 2; - public static final int YYINITIAL = 0; - public static final int MLC = 1; - - /** - * Translates characters to character classes - */ - private static final String ZZ_CMAP_PACKED = - "\11\0\1\50\1\43\1\0\1\50\1\56\22\0\1\50\1\36\1\44"+ - "\1\57\1\60\1\65\1\113\1\33\1\31\1\31\1\51\1\7\1\64"+ - "\1\37\1\54\1\32\1\47\1\77\1\76\1\41\4\5\2\3\1\70"+ - "\1\63\1\34\1\30\1\35\1\27\1\61\1\103\1\4\1\111\1\102"+ - "\1\6\1\55\2\1\1\105\2\1\1\53\1\106\1\107\4\1\1\110"+ - "\1\104\1\52\2\1\1\42\2\1\1\62\1\40\1\62\1\115\1\2"+ - "\1\0\1\24\1\46\1\21\1\10\1\11\1\12\1\25\1\66\1\13"+ - "\1\100\1\72\1\15\1\26\1\14\1\20\1\23\1\101\1\17\1\16"+ - "\1\67\1\22\1\45\1\71\1\74\1\73\1\75\1\112\1\114\1\112"+ - "\1\64\uff81\0"; - - /** - * Translates characters to character classes - */ - private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); - - /** - * Translates DFA states to action switch labels. - */ - private static final int [] ZZ_ACTION = zzUnpackAction(); - - private static final String ZZ_ACTION_PACKED_0 = - "\3\0\1\1\2\2\1\3\1\4\17\2\2\4\1\5"+ - "\1\4\1\6\3\4\1\2\1\7\1\10\2\2\1\3"+ - "\1\11\1\4\2\1\1\2\1\4\3\2\2\4\2\12"+ - "\1\13\5\12\1\14\2\12\1\2\2\15\2\3\1\16"+ - "\2\2\1\17\22\2\1\17\56\2\1\0\1\20\1\21"+ - "\2\22\1\23\1\6\2\10\1\24\10\2\1\15\6\1"+ - "\1\0\14\2\2\0\1\25\6\0\5\2\1\3\1\0"+ - "\1\3\1\15\1\16\3\2\1\26\6\2\1\26\23\2"+ - "\1\27\16\2\1\26\1\2\1\26\40\2\1\26\15\2"+ - "\1\6\1\30\1\6\3\22\1\6\2\10\1\31\7\2"+ - "\1\32\4\1\1\33\4\1\6\0\14\2\10\0\5\2"+ - "\1\16\1\0\37\2\1\27\45\2\1\26\2\2\1\26"+ - "\7\2\1\6\1\10\7\2\2\32\7\1\4\0\1\33"+ - "\4\0\11\2\2\0\1\34\2\0\1\35\44\2\1\17"+ - "\14\2\1\32\1\33\3\1\7\0\10\2\4\0\11\2"+ - "\1\36\11\2\2\1\1\33\3\0\12\2\2\0\1\33"+ - "\4\2"; - - private static int [] zzUnpackAction() { - int [] result = new int[581]; - int offset = 0; - offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAction(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /** - * Translates a state to a row index in the transition table - */ - private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); - - private static final String ZZ_ROWMAP_PACKED_0 = - "\0\0\0\116\0\234\0\352\0\u0138\0\u0186\0\u01d4\0\u0222"+ - "\0\u0270\0\u02be\0\u030c\0\u035a\0\u03a8\0\u03f6\0\u0444\0\u0492"+ - "\0\u04e0\0\u052e\0\u057c\0\u05ca\0\u0618\0\u0666\0\u06b4\0\u0702"+ - "\0\u0750\0\u079e\0\u07ec\0\u083a\0\u0888\0\u08d6\0\u0924\0\352"+ - "\0\u079e\0\u0972\0\u09c0\0\u0a0e\0\u0a5c\0\u0aaa\0\u0af8\0\u079e"+ - "\0\u0b46\0\u079e\0\u079e\0\u0b94\0\u0be2\0\u0c30\0\u0c7e\0\u0ccc"+ - "\0\u0d1a\0\u0d68\0\u079e\0\u0db6\0\u0e04\0\u0e52\0\u0ea0\0\u0eee"+ - "\0\u079e\0\u0f3c\0\u0f8a\0\u0fd8\0\u1026\0\u1074\0\u10c2\0\u1110"+ - "\0\u115e\0\u11ac\0\u11fa\0\u1248\0\u1296\0\u12e4\0\u1332\0\u1380"+ - "\0\u13ce\0\u141c\0\u146a\0\u14b8\0\u1506\0\u1554\0\u15a2\0\u15f0"+ - "\0\u163e\0\u168c\0\u16da\0\u1728\0\u1776\0\u17c4\0\u0138\0\u1812"+ - "\0\u1860\0\u18ae\0\u18fc\0\u194a\0\u1998\0\u19e6\0\u1a34\0\u1a82"+ - "\0\u1ad0\0\u1b1e\0\u1b6c\0\u1bba\0\u1c08\0\u1c56\0\u1ca4\0\u1cf2"+ - "\0\u1d40\0\u1d8e\0\u1ddc\0\u1e2a\0\u1e78\0\u1ec6\0\u1f14\0\u1f62"+ - "\0\u1fb0\0\u1ffe\0\u204c\0\u209a\0\u20e8\0\u2136\0\u2184\0\u21d2"+ - "\0\u2220\0\u226e\0\u22bc\0\u230a\0\u2358\0\u23a6\0\u23f4\0\u2442"+ - "\0\u2490\0\u24de\0\u252c\0\u257a\0\u25c8\0\u2616\0\u079e\0\u079e"+ - "\0\u2664\0\u26b2\0\u079e\0\u2700\0\u274e\0\u279c\0\u079e\0\u27ea"+ - "\0\u2838\0\u2886\0\u28d4\0\u2922\0\u2970\0\u29be\0\u2a0c\0\u2a5a"+ - "\0\u2aa8\0\u2af6\0\u2b44\0\u2b92\0\u2be0\0\u2c2e\0\u2c7c\0\u2cca"+ - "\0\u2d18\0\u2d66\0\u2db4\0\u2e02\0\u2e50\0\u2e9e\0\u2eec\0\u2f3a"+ - "\0\u2f88\0\u2fd6\0\u3024\0\u3072\0\u30c0\0\u079e\0\u310e\0\u315c"+ - "\0\u31aa\0\u31f8\0\u3246\0\u3294\0\u32e2\0\u3330\0\u337e\0\u33cc"+ - "\0\u341a\0\u3468\0\u34b6\0\u1026\0\u3504\0\u1026\0\u3552\0\u35a0"+ - "\0\u35ee\0\u363c\0\u368a\0\u36d8\0\u3726\0\u3774\0\u37c2\0\u3810"+ - "\0\u385e\0\u38ac\0\u38fa\0\u3948\0\u3996\0\u39e4\0\u3a32\0\u3a80"+ - "\0\u3ace\0\u3b1c\0\u3b6a\0\u3bb8\0\u3c06\0\u3c54\0\u3ca2\0\u3cf0"+ - "\0\u3d3e\0\u3d8c\0\u3dda\0\u3e28\0\u0138\0\u3e76\0\u3ec4\0\u3f12"+ - "\0\u3f60\0\u3fae\0\u3ffc\0\u404a\0\u4098\0\u40e6\0\u4134\0\u4182"+ - "\0\u41d0\0\u421e\0\u426c\0\u42ba\0\u4308\0\u4356\0\u43a4\0\u43f2"+ - "\0\u4440\0\u448e\0\u44dc\0\u452a\0\u4578\0\u45c6\0\u4614\0\u4662"+ - "\0\u46b0\0\u46fe\0\u474c\0\u479a\0\u47e8\0\u4836\0\u4884\0\u48d2"+ - "\0\u4920\0\u496e\0\u49bc\0\u4a0a\0\u4a58\0\u4aa6\0\u4af4\0\u4b42"+ - "\0\u4b90\0\u4bde\0\u4c2c\0\u4c7a\0\u4cc8\0\u4d16\0\u0138\0\u4d64"+ - "\0\u4db2\0\u4e00\0\u4e4e\0\u4e9c\0\u4eea\0\u4f38\0\u4f86\0\u4fd4"+ - "\0\u5022\0\u5070\0\u50be\0\u510c\0\u515a\0\u079e\0\u51a8\0\u51f6"+ - "\0\u5244\0\u5292\0\u52e0\0\u532e\0\u537c\0\u079e\0\u53ca\0\u5418"+ - "\0\u5466\0\u54b4\0\u5502\0\u5550\0\u559e\0\u55ec\0\u563a\0\u5688"+ - "\0\u56d6\0\u5724\0\u5772\0\u57c0\0\u580e\0\u585c\0\u58aa\0\u58f8"+ - "\0\u5946\0\u5994\0\u59e2\0\u5a30\0\u5a7e\0\u5acc\0\u5b1a\0\u5b68"+ - "\0\u5bb6\0\u5c04\0\u5c52\0\u5ca0\0\u5cee\0\u5d3c\0\u5d8a\0\u5dd8"+ - "\0\u5e26\0\u5e74\0\u5ec2\0\u5f10\0\u5f5e\0\u5fac\0\u5ffa\0\u6048"+ - "\0\u6096\0\u60e4\0\u6132\0\u6180\0\u61ce\0\u621c\0\u626a\0\u62b8"+ - "\0\u6306\0\u6354\0\u63a2\0\u63f0\0\u643e\0\u648c\0\u64da\0\u6528"+ - "\0\u6576\0\u65c4\0\u6612\0\u6660\0\u66ae\0\u66fc\0\u674a\0\u6798"+ - "\0\u67e6\0\u6834\0\u6882\0\u68d0\0\u691e\0\u696c\0\u69ba\0\u6a08"+ - "\0\u6a56\0\u6aa4\0\u6af2\0\u6b40\0\u6b8e\0\u6bdc\0\u6c2a\0\u6c78"+ - "\0\u6cc6\0\u6d14\0\u6d62\0\u6db0\0\u6dfe\0\u6e4c\0\u6e9a\0\u6ee8"+ - "\0\u6f36\0\u6f84\0\u6fd2\0\u7020\0\u706e\0\u70bc\0\u710a\0\u7158"+ - "\0\u71a6\0\u71f4\0\u7242\0\u7290\0\u72de\0\u732c\0\u737a\0\u73c8"+ - "\0\u7416\0\u7464\0\u74b2\0\u7500\0\u754e\0\u759c\0\u75ea\0\u7638"+ - "\0\u7686\0\u76d4\0\u7722\0\u7770\0\u77be\0\u780c\0\u785a\0\u78a8"+ - "\0\u78f6\0\u7944\0\u7992\0\u79e0\0\u7a2e\0\u7a7c\0\u7aca\0\u7b18"+ - "\0\u7b66\0\u7bb4\0\u7c02\0\u7c50\0\u7c9e\0\u7cec\0\u7d3a\0\u7d88"+ - "\0\u7dd6\0\u7e24\0\u7e72\0\u7ec0\0\u7f0e\0\u7f5c\0\u7faa\0\u7ff8"+ - "\0\u8046\0\u8094\0\u80e2\0\u8130\0\u817e\0\u81cc\0\u821a\0\u8268"+ - "\0\u82b6\0\u8304\0\u8352\0\u83a0\0\u83ee\0\u843c\0\u848a\0\u84d8"+ - "\0\u8526\0\u8574\0\u85c2\0\u8610\0\u865e\0\u86ac\0\u86fa\0\u8748"+ - "\0\u8796\0\u87e4\0\u8832\0\u8880\0\u88ce\0\u891c\0\u896a\0\u4356"+ - "\0\u89b8\0\u8a06\0\u8a54\0\u8aa2\0\u8af0\0\u8b3e\0\u8b8c\0\u8bda"+ - "\0\u8c28\0\u8c76\0\u8cc4\0\u8d12\0\u8d60\0\u8dae\0\u8dfc\0\u8e4a"+ - "\0\u8e98\0\u8ee6\0\u8f34\0\u8f82\0\u8fd0\0\u901e\0\u906c\0\u90ba"+ - "\0\u9108\0\u9156\0\u91a4\0\u91f2\0\u9240\0\u928e\0\u92dc\0\u932a"+ - "\0\u9378\0\u93c6\0\u9414\0\u9462\0\u94b0\0\u94fe\0\u954c\0\u959a"+ - "\0\u95e8\0\u9636\0\u9684\0\u1026\0\352\0\u96d2\0\u9720\0\u976e"+ - "\0\u97bc\0\u980a\0\u9858\0\u98a6\0\u98f4\0\u9942\0\u9990\0\u99de"+ - "\0\u9a2c\0\u9a7a\0\u9ac8\0\u9b16\0\u9b64\0\u363c\0\u9bb2\0\u9c00"+ - "\0\u86fa\0\u9c4e\0\u87e4\0\u9c9c\0\u9cea\0\u9d38\0\u9d86\0\u9dd4"+ - "\0\u9e22\0\u9e70\0\u9ebe\0\u9f0c\0\u0138\0\u9f5a\0\u9fa8\0\u9ff6"+ - "\0\ua044\0\ua092\0\ua0e0\0\ua12e\0\ua17c\0\ua1ca\0\ua218\0\ua266"+ - "\0\u079e\0\ua2b4\0\ua302\0\ua350\0\ua39e\0\ua3ec\0\ua43a\0\u92dc"+ - "\0\ua488\0\ua4d6\0\ua524\0\ua572\0\ua5c0\0\ua60e\0\ua65c\0\ua6aa"+ - "\0\u0138\0\ua6f8\0\ua746\0\ua794\0\ua7e2"; - - private static int [] zzUnpackRowMap() { - int [] result = new int[581]; - int offset = 0; - offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackRowMap(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int high = packed.charAt(i++) << 16; - result[j++] = high | packed.charAt(i++); - } - return j; - } - - /** - * The transition table of the DFA - */ - private static final int [] ZZ_TRANS = zzUnpackTrans(); - - private static final String ZZ_TRANS_PACKED_0 = - "\1\4\1\5\1\6\1\7\1\5\1\7\1\5\1\10"+ - "\1\11\1\12\1\13\1\14\1\15\1\16\1\17\1\20"+ - "\1\21\1\22\1\23\1\24\1\25\1\26\1\27\1\30"+ - "\1\31\1\32\1\33\1\34\1\35\1\36\1\31\1\37"+ - "\1\40\1\7\1\5\1\41\1\42\1\43\1\44\1\45"+ - "\1\46\1\31\2\5\1\47\1\5\1\50\1\51\2\4"+ - "\1\32\1\52\1\53\1\31\1\5\1\54\1\53\1\55"+ - "\4\5\2\7\1\5\1\56\10\5\1\32\1\57\1\60"+ - "\1\31\12\61\1\62\30\61\1\63\5\61\1\64\14\61"+ - "\1\65\2\61\1\66\24\61\12\67\1\70\30\67\1\71"+ - "\22\67\1\72\2\67\1\73\24\67\7\4\1\0\17\4"+ - "\11\0\3\4\2\0\3\4\2\0\2\4\1\0\1\4"+ - "\1\0\3\4\4\0\2\4\1\0\21\4\4\0\1\4"+ - "\6\5\1\0\17\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\1\5\1\74"+ - "\4\5\1\0\17\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\3\75\1\7\1\75"+ - "\1\7\1\76\1\0\1\75\1\76\3\75\1\77\4\75"+ - "\1\100\4\75\11\0\1\75\1\7\1\75\2\0\2\75"+ - "\1\7\2\0\1\100\1\77\1\101\1\75\1\0\3\75"+ - "\4\0\2\75\1\0\5\75\2\7\12\75\13\0\1\53"+ - "\20\0\1\53\65\0\1\4\6\5\1\0\1\5\1\102"+ - "\1\5\1\103\4\5\1\104\6\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\2\5\1\105\16\5"+ - "\4\0\1\4\6\5\1\0\4\5\1\106\1\107\1\5"+ - "\1\110\7\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\3\5\1\111\15\5\4\0\1\4\6\5"+ - "\1\0\1\5\1\112\1\113\2\5\1\114\1\115\1\116"+ - "\1\117\1\120\1\5\1\121\1\122\1\123\1\124\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\1\5\1\125\1\0"+ - "\1\126\20\5\4\0\1\4\6\5\1\0\2\5\1\127"+ - "\1\5\1\130\1\5\1\131\10\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\1\5\1\132\12\5\1\133\2\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\1\134\7\5\1\135\3\5"+ - "\1\136\2\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\1\5"+ - "\1\137\1\5\1\140\2\5\1\141\1\142\1\5\1\143"+ - "\1\5\1\144\3\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\1\145\1\146\1\0\1\147\1\5\1\150\5\5"+ - "\1\151\10\5\4\0\1\4\6\5\1\0\1\5\1\152"+ - "\12\5\1\153\2\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\2\5\1\154\10\5\1\155\3\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\1\5\1\156\3\5\1\157\2\5\1\160"+ - "\3\5\1\161\2\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\1\162\1\163\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\4\5\1\164\1\5\1\165\10\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\1\5\1\166\5\5\1\167\1\170"+ - "\1\5\1\171\4\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\6\5\1\172\2\5\1\173\1\174\4\5\11\0\1\4"+ - "\2\5\2\0\1\5\1\175\1\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\1\5\1\176"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\1\5\1\177"+ - "\6\5\1\174\5\5\1\200\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\1\5\1\201\6\5\1\202\1\5\1\203\1\5"+ - "\1\204\2\5\11\0\1\4\2\5\2\0\1\5\1\205"+ - "\1\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\1\5\1\200\17\5\33\0"+ - "\1\206\116\0\1\53\233\0\1\53\1\0\1\207\16\0"+ - "\1\210\44\0\27\211\1\212\3\211\1\213\4\211\1\214"+ - "\2\211\1\0\52\211\30\0\1\53\3\0\1\31\111\0"+ - "\1\53\4\0\1\31\110\0\1\53\6\0\1\53\56\0"+ - "\40\42\1\215\2\42\1\216\1\217\51\42\1\4\6\5"+ - "\1\0\2\5\1\220\1\221\2\5\1\220\1\5\1\222"+ - "\2\5\1\144\1\223\2\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\1\224\20\5\4\0\1\4"+ - "\6\5\1\0\6\5\1\225\1\226\7\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\1\5\1\227\1\0\21\5"+ - "\4\0\3\75\1\7\1\75\1\7\1\76\1\0\1\75"+ - "\1\76\3\75\1\77\4\75\1\100\4\75\11\0\1\75"+ - "\1\7\1\230\2\0\2\75\1\7\2\0\1\100\1\77"+ - "\1\101\1\75\1\0\3\75\4\0\2\75\1\0\3\75"+ - "\1\230\1\75\2\7\12\75\54\0\1\46\50\0\1\101"+ - "\1\0\1\101\33\0\1\101\5\0\1\101\26\0\2\101"+ - "\16\0\7\4\1\0\1\231\1\232\1\4\1\233\1\4"+ - "\1\234\4\4\1\235\1\236\3\4\11\0\3\4\2\0"+ - "\3\4\1\237\1\0\2\4\1\0\1\4\1\0\3\4"+ - "\4\0\2\4\1\0\21\4\4\0\1\4\6\5\1\0"+ - "\1\5\1\240\1\5\1\241\3\5\1\242\1\243\3\5"+ - "\1\244\1\5\1\245\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\1\246\1\5\1\0\2\5\1\247\16\5\4\0"+ - "\1\4\6\5\1\0\6\5\1\141\2\5\1\250\1\5"+ - "\1\144\2\5\1\251\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\1\252\1\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\6\5\1\253\10\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\34\0\1\53\62\0"+ - "\1\53\32\0\1\53\63\0\1\53\1\0\12\61\1\0"+ - "\30\61\1\0\5\61\1\0\14\61\1\0\2\61\1\0"+ - "\24\61\13\0\1\254\53\0\1\255\60\0\1\256\152\0"+ - "\1\257\117\0\1\260\24\0\12\67\1\0\30\67\1\0"+ - "\22\67\1\0\2\67\1\0\24\67\13\0\1\261\53\0"+ - "\1\262\115\0\1\263\117\0\1\264\24\0\1\4\6\5"+ - "\1\0\17\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\1\5\1\265\1\0\1\266\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\11\5\1\267\1\5\1\270\3\5"+ - "\1\271\1\5\4\0\7\75\1\0\17\75\11\0\3\75"+ - "\2\0\3\75\2\0\2\75\1\0\1\75\1\0\3\75"+ - "\4\0\2\75\1\0\21\75\4\0\3\75\1\272\1\75"+ - "\1\272\1\75\1\273\17\75\10\0\1\273\1\75\1\272"+ - "\1\75\2\0\2\75\1\272\2\0\2\75\1\0\1\75"+ - "\1\0\3\75\4\0\2\75\1\0\5\75\2\272\12\75"+ - "\4\0\7\75\1\0\12\75\1\274\4\75\11\0\3\75"+ - "\2\0\3\75\2\0\1\274\1\75\1\0\1\75\1\0"+ - "\3\75\4\0\2\75\1\0\21\75\4\0\7\75\1\0"+ - "\5\75\1\274\11\75\11\0\3\75\2\0\3\75\2\0"+ - "\1\75\1\274\1\0\1\75\1\0\3\75\4\0\2\75"+ - "\1\0\21\75\4\0\3\75\1\101\1\75\1\101\1\275"+ - "\1\0\1\75\1\275\1\276\2\75\1\276\11\75\11\0"+ - "\1\75\1\101\1\75\2\0\2\75\1\101\2\0\1\75"+ - "\1\276\1\0\1\276\1\0\3\75\4\0\2\75\1\0"+ - "\5\75\2\101\12\75\4\0\1\4\6\5\1\0\2\5"+ - "\1\277\2\5\1\300\11\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\2\5\1\301\14\5\11\0\1\4\2\5\2\0"+ - "\1\302\2\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\12\5\1\303\4\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\4\5\1\304\12\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\12\5\1\305\4\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\6\5\1\306\10\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\7\5\1\307\7\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\3\5\1\310\7\5\1\311\3\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\1\5\1\312\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\7\5\1\313\1\314"+ - "\6\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\5\5\1\315"+ - "\11\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\10\5\1\316"+ - "\6\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\1\5\1\317"+ - "\7\5\1\143\5\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\1\5\1\320\1\5\1\321\13\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\7\5\1\127\3\5\1\322\3\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\5\5\1\323\11\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\7\5\1\324\2\5\1\325"+ - "\4\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\5\5\1\326"+ - "\11\5\11\0\1\4\2\5\2\0\1\5\1\327\1\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\1\5\1\330\15\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\10\5\1\331\6\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\1\5\1\332\15\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\6\5\1\141\1\333\3\5\1\144\3\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\5\5\1\334\11\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\1\5\1\335\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\1\336\4\5\1\337\1\340"+ - "\2\5\1\341\1\342\1\343\1\344\1\345\1\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\3\5"+ - "\1\346\15\5\4\0\1\4\6\5\1\0\17\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\1\127"+ - "\20\5\4\0\1\4\6\5\1\0\16\5\1\347\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\1\5\1\350\1\5\1\351"+ - "\13\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\4\5\1\352"+ - "\4\5\1\353\3\5\1\354\1\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\17\5\11\0\1\4\2\5\2\0\1\5"+ - "\1\327\1\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\17\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\1\5\1\355\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\4\5\1\356\10\5\1\357\1\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\4\5\1\360"+ - "\14\5\4\0\1\4\6\5\1\0\11\5\1\143\5\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\14\5\1\361\2\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\14\5\1\362\2\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\7\5\1\324\7\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\10\5\1\363\6\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\7\5\1\364\4\5"+ - "\1\365\2\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\3\5"+ - "\1\366\2\5\1\141\4\5\1\144\3\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\6\5\1\367\10\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\7\5\1\310\7\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\3\5\1\370\1\371\7\5\1\204"+ - "\1\372\1\373\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\1\5\1\374\1\0\1\375\20\5\4\0\1\4\6\5"+ - "\1\0\3\5\1\376\1\331\12\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\2\5\1\377\14\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\1\5\1\u0100\15\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\3\5\1\u0101\13\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\1\5\1\u0102\6\5\1\u0103\3\5\1\u0104"+ - "\2\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\4\5\1\u0105"+ - "\1\5\1\356\10\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\5\5\1\u0106\1\306\10\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\1\5\1\u0107\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\14\5\1\u0108\2\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\3\5\1\241\13\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\3\5\1\u0109\2\5\1\u010a\6\5\1\u010b"+ - "\1\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\3\5\1\u010c"+ - "\13\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\7\5\1\313"+ - "\7\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\3\5\1\u010d"+ - "\4\5\1\u010e\6\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\17\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\1\u010f\20\5\4\0\1\4\6\5\1\0\17\5"+ - "\11\0\1\4\2\5\2\0\1\5\1\u0110\1\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\1\5\1\u0111\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\3\5\1\u0112\2\5\1\u0113\2\5\1\200\5\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\10\5\1\327\6\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\17\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\1\5\1\u0114\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\6\5\1\u010f\1\5\1\151\6\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\1\5\1\u0115\6\5"+ - "\1\u0116\3\5\1\u0117\2\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\17\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\1\5\1\u0118\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\17\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\1\5"+ - "\1\163\1\0\21\5\4\0\1\4\6\5\1\0\16\5"+ - "\1\u0119\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\1\314\16\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\17\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\1\5\1\u011a\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\5\5\1\u0106\11\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\5\5\1\322\1\u011b\1\u011c"+ - "\7\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\1\5"+ - "\1\227\1\0\21\5\34\0\10\53\56\0\33\u011d\1\u011e"+ - "\7\u011d\1\0\101\u011d\1\u011f\3\u011d\1\u011e\7\u011d\1\0"+ - "\57\u011d\1\u0120\3\u011d\2\211\1\u011d\1\211\2\u011d\1\211"+ - "\4\u011d\1\211\2\u011d\1\211\3\u011d\1\u0121\4\u011d\1\211"+ - "\1\u0122\1\u0123\1\0\3\211\1\u0122\17\u011d\1\211\4\u011d"+ - "\1\u0123\1\u011d\2\u0122\16\u011d\5\216\1\42\3\216\2\42"+ - "\1\216\1\42\2\216\1\42\4\216\1\42\2\216\1\42"+ - "\3\216\1\42\4\216\2\42\1\u0124\1\0\4\42\17\216"+ - "\1\42\4\216\1\u0124\1\216\2\42\56\216\1\u0125\3\216"+ - "\1\u0126\51\216\1\4\6\5\1\0\13\5\1\144\3\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\1\224\20\5\4\0\1\4\6\5\1\0\7\5\1\u0127"+ - "\7\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\3\5\1\u0128"+ - "\1\5\1\u0129\11\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\1\5\1\u012a"+ - "\4\5\1\0\17\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\13\5\1\144\3\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\1\5\1\u012b\15\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\1\5\1\u012c\15\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\10\5\1\u012d\6\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\3\75\4\u012e\1\0"+ - "\3\u012e\6\75\1\u012e\2\75\1\u012e\2\75\11\0\1\75"+ - "\1\u012e\1\75\2\0\1\75\2\u012e\2\0\2\75\1\0"+ - "\1\u012e\1\0\3\75\4\0\2\75\1\0\5\75\2\u012e"+ - "\2\75\2\u012e\5\75\1\u012e\4\0\7\4\1\0\1\4"+ - "\1\u012f\15\4\11\0\3\4\2\0\3\4\2\0\2\4"+ - "\1\0\1\4\1\0\3\4\4\0\2\4\1\0\21\4"+ - "\4\0\7\4\1\0\4\4\1\u0130\1\u0131\1\4\1\u0132"+ - "\7\4\11\0\3\4\2\0\3\4\2\0\2\4\1\0"+ - "\1\4\1\0\3\4\4\0\2\4\1\0\21\4\4\0"+ - "\7\4\1\0\2\4\1\u0133\1\4\1\u0134\12\4\11\0"+ - "\3\4\2\0\3\4\2\0\2\4\1\0\1\4\1\0"+ - "\3\4\4\0\2\4\1\0\21\4\4\0\7\4\1\0"+ - "\3\4\1\u0135\13\4\11\0\3\4\2\0\3\4\2\0"+ - "\2\4\1\0\1\4\1\0\3\4\4\0\2\4\1\0"+ - "\21\4\4\0\7\4\1\0\4\4\1\u0136\12\4\11\0"+ - "\3\4\2\0\3\4\2\0\2\4\1\0\1\4\1\0"+ - "\3\4\4\0\2\4\1\0\21\4\4\0\7\4\1\0"+ - "\7\4\1\u0137\7\4\11\0\3\4\2\0\3\4\2\0"+ - "\2\4\1\0\1\4\1\0\3\4\4\0\2\4\1\0"+ - "\21\4\14\0\1\u0138\1\u0139\1\0\1\u013a\1\0\1\u013b"+ - "\4\0\1\u013c\1\u013d\24\0\1\237\45\0\1\4\6\5"+ - "\1\0\16\5\1\u013e\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\16\5\1\u013f\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\12\5"+ - "\1\u0140\4\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\2\5\1\127\16\5\4\0\1\4\6\5"+ - "\1\0\5\5\1\337\4\5\1\342\4\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\4\5\1\356\12\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\13\5\1\u0141\3\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\3\5\1\u0142\3\5\1\u0143\7\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\13\5\1\u0144\3\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\6\5\1\u0145\1\u0146"+ - "\7\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\1\u0147"+ - "\1\u0148\1\0\21\5\4\0\1\4\6\5\1\0\1\5"+ - "\1\201\15\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\3\5"+ - "\1\u0149\13\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\10\5"+ - "\1\151\6\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\21\0\1\u014a\123\0\1\u014b\161\0"+ - "\1\u014c\117\0\1\u014d\41\0\1\u014e\123\0\1\u014f\161\0"+ - "\1\u0150\117\0\1\u0151\24\0\1\4\6\5\1\0\17\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\14\5\1\u0152\4\5\4\0\1\4\6\5\1\0\17\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\14\5\1\u0153\4\5\4\0\1\4\6\5\1\0\17\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\12\5\1\u0154\6\5\4\0\1\4\6\5\1\0\17\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\14\5\1\u0155\4\5\4\0\1\4\6\5\1\0\17\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\13\5\1\u0156\5\5\4\0\3\75\1\272\1\75\1\272"+ - "\1\75\1\0\5\75\1\77\4\75\1\100\4\75\11\0"+ - "\1\75\1\272\1\75\2\0\2\75\1\272\2\0\1\100"+ - "\1\77\1\0\1\75\1\0\3\75\4\0\2\75\1\0"+ - "\5\75\2\272\12\75\7\0\1\272\1\0\1\272\33\0"+ - "\1\272\5\0\1\272\26\0\2\272\16\0\3\75\1\u0157"+ - "\1\75\1\u0157\1\75\1\u0158\17\75\10\0\1\u0158\1\75"+ - "\1\u0157\1\75\2\0\2\75\1\u0157\2\0\2\75\1\0"+ - "\1\75\1\0\3\75\4\0\2\75\1\0\5\75\2\u0157"+ - "\12\75\4\0\1\4\6\5\1\0\14\5\1\u0159\2\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\1\5\1\u015a\15\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\2\5\1\200\14\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\1\5\1\u015b\4\5\1\0\17\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\17\5\11\0\1\4"+ - "\2\5\2\0\1\5\1\u015c\1\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\14\5\1\u015d\2\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\16\5\1\127\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\1\5\1\127\15\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\4\5\1\u015e\12\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\17\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\1\5\1\u010f\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\5\5\1\u015f\11\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\1\5\1\u0160\15\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\7\5\1\u0161\7\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\2\5\1\u010f\14\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\12\5\1\u0162\4\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\10\5\1\u0163\3\5\1\u015b\2\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\1\5\1\u0164\15\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\1\5\1\u0165"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\1\5\1\u010f"+ - "\6\5\1\u0166\3\5\1\331\2\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\3\5\1\u0167\15\5"+ - "\4\0\1\4\6\5\1\0\1\5\1\u0168\15\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\1\5\1\u0112\15\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\10\5\1\376\6\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\3\5\1\u0169\13\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\17\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\1\5\1\u016a\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\6\5\1\u0140\10\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\6\5\1\u010f\10\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\17\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\1\5\1\u016b\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\1\u010f\16\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\5\5\1\u0101\11\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\3\5\1\u016c\13\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\3\5\1\u016d\13\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\3\5\1\u016e\13\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\10\5\1\u016f\6\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\13\5\1\u0170\3\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\4\5\1\u0171\12\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\13\5\1\u0172\3\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\7\5\1\u0173\2\5\1\u0174\4\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\5\5\1\u0175\11\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\7\5\1\u0176\7\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\1\336\16\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\1\5\1\u0177\15\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\17\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\3\5\1\u0167\15\5\4\0\1\4"+ - "\6\5\1\0\17\5\11\0\1\4\2\5\2\0\1\302"+ - "\2\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\15\5\1\u0178\1\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\14\5\1\u0179\2\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\17\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\6\5\1\u017a\12\5\4\0\1\4\6\5"+ - "\1\0\5\5\1\u017b\11\5\11\0\1\4\2\5\2\0"+ - "\1\u017c\1\u017d\1\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\7\5\1\u017e"+ - "\11\5\4\0\1\4\6\5\1\0\17\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\1\u010f\1\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\4\5\1\u017f\12\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\1\5\1\u0180\15\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\4\5\1\331\12\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\4\5\1\314\12\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\7\5\1\u015b\7\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\1\5\1\166\1\200\1\5"+ - "\1\u0181\1\322\1\u0182\1\u0183\1\5\1\u0184\1\u0185\1\u0186"+ - "\3\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\1\5"+ - "\1\u0187\1\0\3\5\1\u0188\15\5\4\0\1\4\6\5"+ - "\1\0\17\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\1\5\1\u0189\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\17\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\1\5"+ - "\1\u0107\1\0\21\5\4\0\1\4\6\5\1\0\17\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\1\5\1\u018a"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\4\5\1\u018b"+ - "\12\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\14\5\1\241"+ - "\2\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\3\5\1\u018c"+ - "\13\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\10\5\1\u018d"+ - "\6\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\12\5\1\u018e"+ - "\4\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\3\5\1\361"+ - "\13\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\6\5\1\u013f"+ - "\10\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\6\5\1\u018f"+ - "\10\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\7\5\1\u0190"+ - "\7\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\5\5\1\u010f"+ - "\11\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\14\5\1\u0191"+ - "\2\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\11\5\1\u0164"+ - "\5\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\6\5\1\u0142"+ - "\10\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\6\5\1\u0192"+ - "\10\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\1\5"+ - "\1\u0193\1\0\21\5\4\0\1\4\6\5\1\0\5\5"+ - "\1\u0194\11\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\11\5"+ - "\1\u0195\5\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\7\5"+ - "\1\335\7\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\10\5"+ - "\1\u0196\6\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\3\5"+ - "\1\u0197\13\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\1\5"+ - "\1\u0198\15\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\4\5"+ - "\1\u0199\12\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\4\5"+ - "\1\u019a\12\5\11\0\1\4\2\5\2\0\1\u019b\2\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\17\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\1\5"+ - "\1\u019c\1\0\21\5\4\0\1\4\6\5\1\0\5\5"+ - "\1\u019d\11\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\6\5"+ - "\1\u010f\2\5\1\u019e\5\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\1\u019f\20\5\4\0\1\4"+ - "\6\5\1\0\4\5\1\u010f\12\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\1\5\1\151\15\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\10\5\1\127\6\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\17\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\3\5\1\u01a0\15\5\4\0\1\4"+ - "\6\5\1\0\2\5\2\u010f\1\5\1\u010f\11\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\4\5\1\u01a1\12\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\1\5\1\u01a2\4\5\1\u010f"+ - "\2\5\1\u019e\5\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\1\u019f\20\5\4\0\1\4\6\5"+ - "\1\0\6\5\1\u01a3\2\5\1\u01a4\4\5\1\373\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\14\5\1\u01a5\2\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\3\5\1\u01a6\3\5\1\u01a7"+ - "\7\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\1\5"+ - "\1\u01a8\1\0\21\5\4\0\1\4\6\5\1\0\5\5"+ - "\1\322\11\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\1\5\1\227\1\0\21\5\4\0\33\u011d\1\213\7\u011d"+ - "\1\0\102\u011d\3\211\1\u0121\4\211\3\u011d\1\0\57\u011d"+ - "\1\211\25\u011d\1\u011e\5\u011d\1\211\1\u011d\1\0\3\u011d"+ - "\1\211\26\u011d\2\211\16\u011d\33\0\1\u011e\62\0\5\u011d"+ - "\1\u0120\25\u011d\1\u011e\5\u011d\1\u0120\1\u011d\1\0\3\u011d"+ - "\1\u0120\26\u011d\2\u0120\21\u011d\4\u01a9\1\u011d\3\u01a9\6\u011d"+ - "\1\u01a9\2\u011d\1\u01a9\6\u011d\1\213\5\u011d\1\u01a9\1\u011d"+ - "\1\0\2\u011d\2\u01a9\5\u011d\1\u01a9\20\u011d\2\u01a9\2\u011d"+ - "\2\u01a9\5\u011d\1\u01a9\4\u011d\3\216\4\u01aa\1\216\3\u01aa"+ - "\6\216\1\u01aa\2\216\1\u01aa\13\216\1\u0125\1\u01aa\2\216"+ - "\1\u0126\1\216\2\u01aa\5\216\1\u01aa\20\216\2\u01aa\2\216"+ - "\2\u01aa\5\216\1\u01aa\47\216\1\0\52\216\1\4\6\5"+ - "\1\0\17\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\1\5\1\u01ab\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\1\335\16\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\14\5"+ - "\1\u01ac\2\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\1\5"+ - "\1\361\4\5\1\u01ad\5\5\1\u01ae\2\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\14\5\1\u01af\2\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\14\5\1\u01b0\2\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\17\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\1\u01b1\20\5\4\0\3\75"+ - "\4\u012e\1\0\3\u012e\2\75\1\u01b2\3\75\1\u012e\1\u01b3"+ - "\1\75\1\u012e\2\75\11\0\1\75\1\u012e\1\75\2\0"+ - "\1\75\2\u012e\2\0\1\u01b3\1\u01b2\1\0\1\u012e\1\0"+ - "\3\75\4\0\2\75\1\0\5\75\2\u012e\2\75\2\u012e"+ - "\5\75\1\u012e\4\0\7\4\1\0\2\4\1\234\14\4"+ - "\11\0\3\4\2\0\3\4\2\0\2\4\1\0\1\4"+ - "\1\0\3\4\4\0\2\4\1\0\21\4\4\0\7\4"+ - "\1\0\1\u01b4\16\4\11\0\3\4\2\0\3\4\2\0"+ - "\2\4\1\0\1\4\1\0\3\4\4\0\2\4\1\0"+ - "\21\4\4\0\7\4\1\0\3\4\1\u01b5\2\4\1\u01b6"+ - "\10\4\11\0\3\4\2\0\3\4\2\0\2\4\1\0"+ - "\1\4\1\0\3\4\4\0\2\4\1\0\21\4\4\0"+ - "\7\4\1\0\7\4\1\u01b7\7\4\11\0\3\4\2\0"+ - "\3\4\2\0\2\4\1\0\1\4\1\0\3\4\4\0"+ - "\2\4\1\0\21\4\4\0\7\4\1\0\1\u01b8\3\4"+ - "\1\u0136\12\4\11\0\3\4\2\0\3\4\2\0\2\4"+ - "\1\0\1\4\1\0\3\4\4\0\2\4\1\0\21\4"+ - "\4\0\7\4\1\0\11\4\1\u01b9\5\4\11\0\3\4"+ - "\2\0\3\4\2\0\2\4\1\0\1\4\1\0\3\4"+ - "\4\0\2\4\1\0\21\4\4\0\7\4\1\0\4\4"+ - "\1\u01b6\12\4\11\0\3\4\2\0\3\4\2\0\2\4"+ - "\1\0\1\4\1\0\3\4\4\0\2\4\1\0\21\4"+ - "\4\0\7\4\1\0\1\u01b8\16\4\11\0\3\4\2\0"+ - "\3\4\2\0\2\4\1\0\1\4\1\0\3\4\4\0"+ - "\2\4\1\0\21\4\4\0\7\4\1\0\14\4\1\u01ba"+ - "\2\4\11\0\3\4\2\0\3\4\2\0\2\4\1\0"+ - "\1\4\1\0\3\4\4\0\2\4\1\0\21\4\15\0"+ - "\1\u01bb\120\0\1\u01bc\1\u01bd\1\0\1\u01be\110\0\1\u01bf"+ - "\1\0\1\u01c0\114\0\1\u01c1\116\0\1\u01c2\120\0\1\u01c3"+ - "\76\0\1\4\6\5\1\0\13\5\1\u01c4\3\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\1\5\1\u010f\15\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\1\5\1\335\15\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\2\5\1\u01c5\1\5\1\u01c6"+ - "\12\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\6\5\1\127"+ - "\10\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\10\5\1\132"+ - "\6\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\1\5\1\u01c7"+ - "\15\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\2\5\1\200"+ - "\1\5\1\u0181\1\322\1\u0182\1\u01c8\1\5\1\u0184\1\5"+ - "\1\u0186\3\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\1\5\1\u01c9\1\0\3\5\1\u0188\15\5\4\0\1\4"+ - "\6\5\1\0\17\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\1\5\1\u01ca\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\14\5\1\u01cb\2\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\10\5\1\u01cc\6\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\5\5\1\306\11\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\15\0\1\u014b\174\0"+ - "\1\u01cd\50\0\1\u01ce\146\0\1\u01cf\52\0\1\u014f\174\0"+ - "\1\u01d0\50\0\1\u01d1\146\0\1\u01d2\41\0\1\4\6\5"+ - "\1\0\17\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\16\5\1\u01d3\2\5\4\0\1\4\6\5"+ - "\1\0\17\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\1\5\1\u01d3\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\17\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\13\5\1\u01d3\5\5\4\0\1\4\6\5\1\0"+ - "\17\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\15\5\1\u01d3\3\5\4\0\1\4\6\5\1\0"+ - "\17\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\11\5\1\u01d4\7\5\4\0\3\75\1\u0157\1\75"+ - "\1\u0157\1\75\1\0\2\75\1\276\2\75\1\276\11\75"+ - "\11\0\1\75\1\u0157\1\75\2\0\2\75\1\u0157\2\0"+ - "\1\75\1\276\1\0\1\276\1\0\3\75\4\0\2\75"+ - "\1\0\5\75\2\u0157\12\75\7\0\1\u0157\1\0\1\u0157"+ - "\33\0\1\u0157\5\0\1\u0157\26\0\2\u0157\16\0\1\4"+ - "\6\5\1\0\12\5\1\u01d5\4\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\17\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\1\5\1\306\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\17\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\1\5\1\335\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\5\5\1\u0140\11\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\16\5\1\u01d6\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\10\5"+ - "\1\u010f\6\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\3\5"+ - "\1\u01d7\13\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\7\5"+ - "\1\u0196\7\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\10\5"+ - "\1\u0163\6\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\6\5"+ - "\1\u01d8\10\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\7\5"+ - "\1\u010f\7\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\17\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\1\5\1\u010f\17\5\4\0\1\4\6\5\1\0\13\5"+ - "\1\173\3\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\13\5"+ - "\1\322\3\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\13\5"+ - "\1\u010f\3\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\4\5"+ - "\1\u01d9\12\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\4\5"+ - "\1\u019a\12\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\6\5"+ - "\1\u010f\2\5\1\u010f\5\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\1\u01da\20\5\4\0\1\4"+ - "\6\5\1\0\6\5\1\u010f\2\5\1\u010f\1\5\1\173"+ - "\3\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\1\u01da\20\5\4\0\1\4\6\5\1\0\17\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\1\5\1\u013f"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\4\5\1\306"+ - "\12\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\15\5\1\u01a0"+ - "\1\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\17\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\1\u01db"+ - "\20\5\4\0\1\4\6\5\1\0\14\5\1\u01dc\2\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\17\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\1\5\1\u01dd\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\13\5\1\u01db\3\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\3\5\1\u01de\13\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\4\5\1\u01df\12\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\4\5\1\u01e0\6\5\1\u01e1"+ - "\3\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\14\5\1\u01e2"+ - "\2\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\6\5\1\u01e3"+ - "\10\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\17\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\7\5"+ - "\1\u017e\11\5\4\0\1\4\6\5\1\0\5\5\1\u01e4"+ - "\11\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\17\5\11\0"+ - "\1\4\2\5\2\0\2\5\1\u010f\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\10\5\1\u01e5\6\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\17\5\11\0\1\4"+ - "\2\5\2\0\1\5\1\u017d\1\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\12\5\1\314\4\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\16\5\1\u0167\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\1\5\1\u0128\12\5\1\u0101"+ - "\2\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\1\5\1\u015b\4\5\1\0"+ - "\10\5\1\u01e6\6\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\11\5\1\u01e7\5\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\13\5\1\u0112\3\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\1\5\1\u0163\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\11\5\1\u01e8\5\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\6\5\1\u01e9\1\5\1\332\2\5\1\u01ea\1\310"+ - "\1\5\1\u0167\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\1\u0163\1\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\11\5\1\u01eb\5\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\17\5\11\0\1\4\2\5\2\0\1\5\1\u01ec\1\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\10\5\1\u01ed\6\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\2\5\1\u01ee\14\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\3\5\1\u01ef\13\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\1\5\1\u01f0\15\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\17\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\1\5"+ - "\1\u01f1\1\0\21\5\4\0\1\4\6\5\1\0\6\5"+ - "\1\u01f2\10\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\17\5"+ - "\11\0\1\4\2\5\2\0\1\u013f\2\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\7\5\1\u01f3"+ - "\7\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\1\5\1\u01f4"+ - "\15\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\14\5\1\u01f5"+ - "\2\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\7\5\1\u01f6"+ - "\7\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\17\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\1\5\1\u01f7\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\3\5\1\u01f8\13\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\10\5\1\u01b1\6\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\17\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\1\127\1\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\4\5\1\127\12\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\15\5\1\u01f9\1\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\17\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\1\5\1\u01fa\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\15\5\1\127\1\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\17\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\1\5\1\314\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\14\5\1\u015a\2\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\1\5\1\u01fb\15\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\3\5\1\u01fc\13\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\17\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\1\u01fd\1\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\11\5\1\u019e\5\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\3\5\1\310\13\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\17\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\5\5\1\u010f\13\5\4\0\1\4\6\5"+ - "\1\0\4\5\1\u01fe\12\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\1\5\1\310\15\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\13\5\1\u01ea\2\5\1\u0167\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\1\u0163\1\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\17\5\11\0\1\4\2\5\2\0"+ - "\1\5\1\u0149\1\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\4\5\1\u01a0\12\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\17\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\1\5\1\u01a8\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\10\5\1\u01ff\6\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\3\u011d"+ - "\4\211\1\u011d\3\211\6\u011d\1\211\2\u011d\1\211\6\u011d"+ - "\1\213\5\u011d\1\211\1\u011d\1\0\2\u011d\2\211\5\u011d"+ - "\1\211\20\u011d\2\211\2\u011d\2\211\5\u011d\1\211\4\u011d"+ - "\3\216\4\42\1\216\3\42\6\216\1\42\2\216\1\42"+ - "\13\216\1\u0125\1\42\2\216\1\u0126\1\216\2\42\5\216"+ - "\1\42\20\216\2\42\2\216\2\42\5\216\1\42\4\216"+ - "\1\4\6\5\1\0\12\5\1\u0200\4\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\17\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\1\5\1\252\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\17\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\1\5\1\u0201\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\7\5\1\u0202\7\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\7\5\1\u0203\7\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\17\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\1\5\1\127\17\5\4\0\1\4\6\5"+ - "\1\0\11\5\1\u010f\5\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\7\75\1\0"+ - "\12\75\1\u0204\4\75\11\0\3\75\2\0\3\75\2\0"+ - "\1\u0204\1\75\1\0\1\75\1\0\3\75\4\0\2\75"+ - "\1\0\21\75\4\0\7\75\1\0\5\75\1\u0204\11\75"+ - "\11\0\3\75\2\0\3\75\2\0\1\75\1\u0204\1\0"+ - "\1\75\1\0\3\75\4\0\2\75\1\0\21\75\4\0"+ - "\7\4\1\0\3\4\1\u01b5\13\4\11\0\3\4\2\0"+ - "\3\4\2\0\2\4\1\0\1\4\1\0\3\4\4\0"+ - "\2\4\1\0\21\4\4\0\7\4\1\0\2\4\1\u0205"+ - "\14\4\11\0\3\4\2\0\3\4\2\0\2\4\1\0"+ - "\1\4\1\0\3\4\4\0\2\4\1\0\21\4\4\0"+ - "\7\4\1\0\1\4\1\u0205\15\4\11\0\3\4\2\0"+ - "\3\4\2\0\2\4\1\0\1\4\1\0\3\4\4\0"+ - "\2\4\1\0\21\4\4\0\7\4\1\0\10\4\1\u0206"+ - "\6\4\11\0\3\4\2\0\3\4\2\0\2\4\1\0"+ - "\1\4\1\0\3\4\4\0\2\4\1\0\21\4\4\0"+ - "\7\4\1\0\1\4\1\u01b5\15\4\11\0\3\4\2\0"+ - "\3\4\2\0\2\4\1\0\1\4\1\0\3\4\4\0"+ - "\2\4\1\0\21\4\4\0\7\4\1\0\5\4\1\u0207"+ - "\11\4\11\0\3\4\2\0\3\4\2\0\2\4\1\0"+ - "\1\4\1\0\3\4\4\0\2\4\1\0\21\4\4\0"+ - "\7\4\1\0\15\4\1\u0208\1\4\11\0\3\4\2\0"+ - "\3\4\2\0\2\4\1\0\1\4\1\0\3\4\4\0"+ - "\2\4\1\0\21\4\16\0\1\u013b\113\0\1\u0209\120\0"+ - "\1\u020a\2\0\1\u020b\116\0\1\u020c\106\0\1\u020d\3\0"+ - "\1\u01c2\122\0\1\u020e\110\0\1\u020b\111\0\1\u020d\131\0"+ - "\1\u020f\71\0\1\4\6\5\1\0\5\5\1\u019b\11\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\3\5\1\u0210\13\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\14\5\1\u01f0\2\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\1\u0211\2\5\1\u01d9"+ - "\1\u0212\12\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\11\5"+ - "\1\u01e8\5\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\1\5\1\u0213\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\10\5\1\u0214\6\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\10\5\1\u0215\6\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\7\5\1\u0216\7\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\16\5\1\u0217\11\0\1\4\2\5\2\0\1\5\1\u010f"+ - "\1\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\36\0\1\u0218\101\0"+ - "\1\u014b\51\0\1\u01cd\26\0\1\u01cf\1\u0219\4\u01cf\1\u0219"+ - "\17\u01cf\3\u0219\1\u01cf\1\u0219\2\0\2\u0219\1\0\2\u01cf"+ - "\2\0\3\u01cf\1\0\1\u0219\2\u01cf\1\u0219\1\u01cf\1\0"+ - "\1\u0219\1\u01cf\5\u0219\2\u01cf\1\u0219\21\u01cf\1\0\1\u0219"+ - "\34\0\1\u021a\101\0\1\u014f\51\0\1\u01d0\26\0\1\u01d2"+ - "\1\u021b\4\u01d2\1\u021b\17\u01d2\3\u021b\1\u01d2\1\u021b\2\0"+ - "\2\u021b\1\0\2\u01d2\2\0\3\u01d2\1\0\1\u021b\2\u01d2"+ - "\1\u021b\1\u01d2\1\0\1\u021b\1\u01d2\5\u021b\2\u01d2\1\u021b"+ - "\21\u01d2\1\0\1\u021b\2\0\1\4\5\5\1\u021c\1\0"+ - "\17\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\17\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\20\5"+ - "\1\u021c\4\0\1\4\6\5\1\0\5\5\1\u01eb\11\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\3\5\1\u021d\13\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\11\5\1\u021e\5\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\1\127\16\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\6\5\1\u010f\2\5\1\u010f"+ - "\5\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\1\5\1\u0163"+ - "\15\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\11\5\1\u013f"+ - "\5\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\7\5\1\u0101"+ - "\7\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\4\5\1\310"+ - "\12\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\11\5\1\310"+ - "\5\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\12\5\1\u01f0"+ - "\4\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\17\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\1\u021f\1\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\13\5\1\u01d8\3\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\13\5\1\u0220\3\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\1\5\1\u0221\15\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\1\5\1\163"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\11\5\1\u0222"+ - "\5\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\2\5\1\127"+ - "\14\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\13\5\1\u01ea"+ - "\1\310\1\5\1\u0167\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\17\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\1\u0163"+ - "\1\5\1\0\21\5\4\0\1\4\6\5\1\0\13\5"+ - "\1\u0112\3\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\17\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\2\5\1\u010f\16\5\4\0\1\4\6\5\1\0\17\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\1\5\1\127"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\7\5\1\u0164"+ - "\7\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\1\u010f\4\5"+ - "\1\u010f\4\5\1\u0101\4\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\1\5\1\u010f\17\5\4\0"+ - "\1\4\6\5\1\0\7\5\1\u01f0\7\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\11\5\1\u01f7\5\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\16\5\1\u010f\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\1\5\1\u0223\15\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\17\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\1\5\1\u0224\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\4\5\1\u0225\12\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\17\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\1\5\1\u0226\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\17\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\1\5"+ - "\1\u0227\1\0\21\5\4\0\1\4\6\5\1\0\1\5"+ - "\1\u0228\15\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\1\5\1\u0229\4\5"+ - "\1\0\17\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\4\5"+ - "\1\u022a\12\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\4\5"+ - "\1\u022b\12\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\11\5"+ - "\1\u010f\5\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\1\u01b1\20\5\4\0\1\4\6\5\1\0"+ - "\11\5\1\u022c\5\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\11\5\1\127\5\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\14\5\1\u0163\2\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\17\5\11\0\1\4\2\5\2\0\1\u010f\2\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\17\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\1\u022d\20\5\4\0\1\4\6\5\1\0\14\5\1\u022e"+ - "\2\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\14\5\1\151"+ - "\2\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\15\5\1\u010f"+ - "\1\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\11\5\1\u01d8"+ - "\5\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\7\4\1\0\7\4\1\u0205\7\4"+ - "\11\0\3\4\2\0\3\4\2\0\2\4\1\0\1\4"+ - "\1\0\3\4\4\0\2\4\1\0\21\4\4\0\7\4"+ - "\1\0\12\4\1\u022f\4\4\11\0\3\4\2\0\3\4"+ - "\2\0\2\4\1\0\1\4\1\0\3\4\4\0\2\4"+ - "\1\0\21\4\4\0\7\4\1\0\16\4\1\u0230\11\0"+ - "\3\4\2\0\3\4\2\0\2\4\1\0\1\4\1\0"+ - "\3\4\4\0\2\4\1\0\21\4\17\0\1\u020a\114\0"+ - "\1\u0231\114\0\1\u0231\124\0\1\u0232\106\0\1\u020a\121\0"+ - "\1\u0233\125\0\1\u0234\70\0\1\4\6\5\1\0\5\5"+ - "\1\u013f\11\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\1\5"+ - "\1\u01e6\15\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\14\5"+ - "\1\u0235\2\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\10\5"+ - "\1\u0236\6\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\1\u010f"+ - "\4\5\1\u010f\4\5\1\u0101\3\5\1\136\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\1\5\1\u010f"+ - "\17\5\4\0\1\4\6\5\1\0\16\5\1\u0217\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\17\5\11\0\1\4\2\5"+ - "\2\0\1\5\1\u010f\1\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\36\0\1\u01cf\115\0\1\u01d2\63\0\1\4\1\5\1\u0237"+ - "\4\5\1\0\17\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\11\5\1\u0238\5\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\3\5\1\u01eb\13\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\14\5\1\u010f\2\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\14\5\1\u0239\2\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\11\5\1\u023a\5\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\14\5\1\u0210\2\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\7\5\1\u023b\7\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\1\5\1\u023c\15\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\10\5\1\314\6\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\10\5\1\u023c\6\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\7\5\1\u0163\7\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\11\5\1\u023d\5\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\12\5\1\306\4\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\1\5\1\u0128\15\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\17\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\1\5"+ - "\1\u023e\1\0\21\5\4\0\1\4\6\5\1\0\11\5"+ - "\1\327\5\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\5\5"+ - "\1\127\11\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\7\4\1\0\1\u01b6\16\4"+ - "\11\0\3\4\2\0\3\4\2\0\2\4\1\0\1\4"+ - "\1\0\3\4\4\0\2\4\1\0\21\4\4\0\7\4"+ - "\1\0\14\4\1\u0205\2\4\11\0\3\4\2\0\3\4"+ - "\2\0\2\4\1\0\1\4\1\0\3\4\4\0\2\4"+ - "\1\0\21\4\23\0\1\u0231\120\0\1\u023f\121\0\1\u0240"+ - "\67\0\1\4\6\5\1\0\16\5\1\306\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\16\5\1\136\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\1\5\1\u0241\4\5\1\0\17\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\11\5\1\306\5\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\10\5\1\u01a2\6\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\13\5\1\u0242\3\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\7\5\1\127\7\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\14\5\1\u0243\2\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\1\5\1\u01d9\15\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\14\0\1\u020b"+ - "\131\0\1\u0231\71\0\1\4\6\5\1\0\7\5\1\u0244"+ - "\7\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\6\5\1\u01eb"+ - "\10\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\1\5\1\u0245"+ - "\15\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\17\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\1\5\1\u0238\1\0"+ - "\21\5\4\0"; - - private static int [] zzUnpackTrans() { - int [] result = new int[43056]; - int offset = 0; - offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackTrans(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - value--; - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /* error codes */ - private static final int ZZ_UNKNOWN_ERROR = 0; - private static final int ZZ_NO_MATCH = 1; - private static final int ZZ_PUSHBACK_2BIG = 2; - - /* error messages for the codes above */ - private static final String ZZ_ERROR_MSG[] = { - "Unkown internal scanner error", - "Error: could not match input", - "Error: pushback value was too large" - }; - - /** - * ZZ_ATTRIBUTE[aState] contains the attributes of state aState - */ - private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); - - private static final String ZZ_ATTRIBUTE_PACKED_0 = - "\3\0\26\1\1\11\6\1\1\11\6\1\1\11\1\1"+ - "\2\11\7\1\1\11\5\1\1\11\114\1\1\0\2\11"+ - "\2\1\1\11\3\1\1\11\17\1\1\0\14\1\2\0"+ - "\1\11\6\0\6\1\1\0\142\1\1\11\7\1\1\11"+ - "\21\1\6\0\14\1\10\0\6\1\1\0\142\1\4\0"+ - "\1\1\4\0\11\1\2\0\1\1\2\0\67\1\7\0"+ - "\10\1\4\0\25\1\1\11\3\0\12\1\2\0\5\1"; - - private static int [] zzUnpackAttribute() { - int [] result = new int[581]; - int offset = 0; - offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAttribute(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - /** the input device */ - private java.io.Reader zzReader; - - /** the current state of the DFA */ - private int zzState; - - /** the current lexical state */ - private int zzLexicalState = YYINITIAL; - - /** this buffer contains the current text to be matched and is - the source of the yytext() string */ - private char zzBuffer[]; - - /** the textposition at the last accepting state */ - private int zzMarkedPos; - - /** the current text position in the buffer */ - private int zzCurrentPos; - - /** startRead marks the beginning of the yytext() string in the buffer */ - private int zzStartRead; - - /** endRead marks the last character in the buffer, that has been read - from input */ - private int zzEndRead; - - /** zzAtEOF == true <=> the scanner is at the EOF */ - private boolean zzAtEOF; - - /* user code: */ - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public CPlusPlusTokenMaker() { - super(); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addToken(int, int, int) - */ - private void addHyperlinkToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, true); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, int startOffset) { - super.addToken(array, start,end, tokenType, startOffset); - zzStartRead = zzMarkedPos; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { "//", null }; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - - // Start off in the proper state. - int state = Token.NULL; - switch (initialTokenType) { - case Token.COMMENT_MULTILINE: - state = MLC; - start = text.offset; - break; - default: - state = Token.NULL; - } - - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(java.io.Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtEOF = false; - } - - - - - /** - * Creates a new scanner - * There is also a java.io.InputStream version of this constructor. - * - * @param in the java.io.Reader to read input from. - */ - public CPlusPlusTokenMaker(java.io.Reader in) { - this.zzReader = in; - } - - /** - * Creates a new scanner. - * There is also java.io.Reader version of this constructor. - * - * @param in the java.io.Inputstream to read input from. - */ - public CPlusPlusTokenMaker(java.io.InputStream in) { - this(new java.io.InputStreamReader(in)); - } - - /** - * Unpacks the compressed character translation table. - * - * @param packed the packed character translation table - * @return the unpacked character translation table - */ - private static char [] zzUnpackCMap(String packed) { - char [] map = new char[0x10000]; - int i = 0; /* index in packed string */ - int j = 0; /* index in unpacked array */ - while (i < 184) { - int count = packed.charAt(i++); - char value = packed.charAt(i++); - do map[j++] = value; while (--count > 0); - } - return map; - } - - - /** - * Closes the input stream. - */ - public final void yyclose() throws java.io.IOException { - zzAtEOF = true; /* indicate end of file */ - zzEndRead = zzStartRead; /* invalidate buffer */ - - if (zzReader != null) - zzReader.close(); - } - - - /** - * Returns the current lexical state. - */ - public final int yystate() { - return zzLexicalState; - } - - - /** - * Enters a new lexical state - * - * @param newState the new lexical state - */ - @Override - public final void yybegin(int newState) { - zzLexicalState = newState; - } - - - /** - * Returns the text matched by the current regular expression. - */ - public final String yytext() { - return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead ); - } - - - /** - * Returns the character at position pos from the - * matched text. - * - * It is equivalent to yytext().charAt(pos), but faster - * - * @param pos the position of the character to fetch. - * A value from 0 to yylength()-1. - * - * @return the character at position pos - */ - public final char yycharat(int pos) { - return zzBuffer[zzStartRead+pos]; - } - - - /** - * Returns the length of the matched text region. - */ - public final int yylength() { - return zzMarkedPos-zzStartRead; - } - - - /** - * Reports an error that occured while scanning. - * - * In a wellformed scanner (no or only correct usage of - * yypushback(int) and a match-all fallback rule) this method - * will only be called with things that "Can't Possibly Happen". - * If this method is called, something is seriously wrong - * (e.g. a JFlex bug producing a faulty scanner etc.). - * - * Usual syntax/scanner level error handling should be done - * in error fallback rules. - * - * @param errorCode the code of the errormessage to display - */ - private void zzScanError(int errorCode) { - String message; - try { - message = ZZ_ERROR_MSG[errorCode]; - } - catch (ArrayIndexOutOfBoundsException e) { - message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; - } - - throw new Error(message); - } - - - /** - * Pushes the specified amount of characters back into the input stream. - * - * They will be read again by then next call of the scanning method - * - * @param number the number of characters to be read again. - * This number must not be greater than yylength()! - */ - public void yypushback(int number) { - if ( number > yylength() ) - zzScanError(ZZ_PUSHBACK_2BIG); - - zzMarkedPos -= number; - } - - - /** - * Resumes scanning until the next regular expression is matched, - * the end of input is encountered or an I/O-Error occurs. - * - * @return the next token - * @exception java.io.IOException if any I/O-Error occurs - */ - public org.fife.ui.rsyntaxtextarea.Token yylex() throws java.io.IOException { - int zzInput; - int zzAction; - - // cached fields: - int zzCurrentPosL; - int zzMarkedPosL; - int zzEndReadL = zzEndRead; - char [] zzBufferL = zzBuffer; - char [] zzCMapL = ZZ_CMAP; - - int [] zzTransL = ZZ_TRANS; - int [] zzRowMapL = ZZ_ROWMAP; - int [] zzAttrL = ZZ_ATTRIBUTE; - - while (true) { - zzMarkedPosL = zzMarkedPos; - - zzAction = -1; - - zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; - - zzState = zzLexicalState; - - - zzForAction: { - while (true) { - - if (zzCurrentPosL < zzEndReadL) - zzInput = zzBufferL[zzCurrentPosL++]; - else if (zzAtEOF) { - zzInput = YYEOF; - break zzForAction; - } - else { - // store back cached positions - zzCurrentPos = zzCurrentPosL; - zzMarkedPos = zzMarkedPosL; - boolean eof = zzRefill(); - // get translated positions and possibly new buffer - zzCurrentPosL = zzCurrentPos; - zzMarkedPosL = zzMarkedPos; - zzBufferL = zzBuffer; - zzEndReadL = zzEndRead; - if (eof) { - zzInput = YYEOF; - break zzForAction; - } - else { - zzInput = zzBufferL[zzCurrentPosL++]; - } - } - int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; - if (zzNext == -1) break zzForAction; - zzState = zzNext; - - int zzAttributes = zzAttrL[zzState]; - if ( (zzAttributes & 1) == 1 ) { - zzAction = zzState; - zzMarkedPosL = zzCurrentPosL; - if ( (zzAttributes & 8) == 8 ) break zzForAction; - } - - } - } - - // store back cached position - zzMarkedPos = zzMarkedPosL; - - switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { - case 27: - { addToken(Token.PREPROCESSOR); - } - case 31: break; - case 7: - { addNullToken(); return firstToken; - } - case 32: break; - case 24: - { addToken(Token.LITERAL_CHAR); - } - case 33: break; - case 21: - { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); - } - case 34: break; - case 17: - { start = zzMarkedPos-2; yybegin(MLC); - } - case 35: break; - case 9: - { addToken(Token.WHITESPACE); - } - case 36: break; - case 26: - { addToken(Token.LITERAL_NUMBER_HEXADECIMAL); - } - case 37: break; - case 18: - { addToken(Token.ERROR_CHAR); /*addNullToken(); return firstToken;*/ - } - case 38: break; - case 25: - { addToken(Token.ERROR_STRING_DOUBLE); - } - case 39: break; - case 14: - { addToken(Token.LITERAL_NUMBER_FLOAT); - } - case 40: break; - case 15: - { addToken(Token.RESERVED_WORD); - } - case 41: break; - case 5: - { addToken(Token.SEPARATOR); - } - case 42: break; - case 2: - { addToken(Token.IDENTIFIER); - } - case 43: break; - case 12: - { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; - } - case 44: break; - case 16: - { start = zzMarkedPos-2; yybegin(EOL_COMMENT); - } - case 45: break; - case 22: - { addToken(Token.FUNCTION); - } - case 46: break; - case 6: - { addToken(Token.ERROR_CHAR); addNullToken(); return firstToken; - } - case 47: break; - case 8: - { addToken(Token.ERROR_STRING_DOUBLE); addNullToken(); return firstToken; - } - case 48: break; - case 23: - { addToken(Token.DATA_TYPE); - } - case 49: break; - case 1: - { addToken(Token.ERROR_IDENTIFIER); - } - case 50: break; - case 19: - { addToken(Token.ERROR_CHAR); - } - case 51: break; - case 20: - { addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); - } - case 52: break; - case 29: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_EOL); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_EOL); start = zzMarkedPos; - } - case 53: break; - case 28: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_MULTILINE); start = zzMarkedPos; - } - case 54: break; - case 30: - { addToken(Token.RESERVED_WORD_2); - } - case 55: break; - case 13: - { addToken(Token.ERROR_NUMBER_FORMAT); - } - case 56: break; - case 3: - { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); - } - case 57: break; - case 4: - { addToken(Token.OPERATOR); - } - case 58: break; - case 10: - { - } - case 59: break; - case 11: - { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; - } - case 60: break; - default: - if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { - zzAtEOF = true; - switch (zzLexicalState) { - case EOL_COMMENT: { - addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; - } - case 582: break; - case YYINITIAL: { - addNullToken(); return firstToken; - } - case 583: break; - case MLC: { - addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; - } - case 584: break; - default: - return null; - } - } - else { - zzScanError(ZZ_NO_MATCH); - } - } - } - } - - -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/CSSTokenMaker.flex b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/CSSTokenMaker.flex deleted file mode 100644 index a810d93..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/CSSTokenMaker.flex +++ /dev/null @@ -1,484 +0,0 @@ -/* - * 09/03/2005 - * - * CSSTokenMaker.java - Token maker for CSS 3 files. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * This class splits up text into tokens representing a CSS 3 file. It's - * written with a few extra internal states so that it can easily be copy - * and pasted into HTML, PHP, and JSP TokenMakres when it is updated.

- * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated CSSTokenMaker.java file will contain 2 - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.5 - * - */ -%% - -%public -%class CSSTokenMaker -%extends AbstractJFlexCTokenMaker -%unicode -%type org.fife.ui.rsyntaxtextarea.Token - - -%{ - - /** - * Internal type denoting a line ending in a CSS property. - */ - public static final int INTERNAL_CSS_PROPERTY = -1; - - /** - * Internal type denoting a line ending in a CSS property value. - */ - public static final int INTERNAL_CSS_VALUE = -2; - - /** - * Internal type denoting line ending in a CSS double-quote string. - * The state to return to is embedded in the actual end token type. - */ - public static final int INTERNAL_CSS_STRING = -(1<<11); - - /** - * Internal type denoting line ending in a CSS single-quote string. - * The state to return to is embedded in the actual end token type. - */ - public static final int INTERNAL_CSS_CHAR = -(2<<11); - - /** - * Internal type denoting line ending in a CSS multi-line comment. - * The state to return to is embedded in the actual end token type. - */ - public static final int INTERNAL_CSS_MLC = -(3<<11); - - /** - * The state previous CSS-related state we were in before going into a CSS - * string, multi-line comment, etc. - */ - private int cssPrevState; - - /** - * Whether we are highlighting less instead of CSS. - */ - private boolean highlightingLess; - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public CSSTokenMaker() { - super(); - } - - - /** - * Adds the token specified to the current linked list of tokens as an - * "end token;" that is, at zzMarkedPos. - * - * @param tokenType The token's type. - */ - private void addEndToken(int tokenType) { - addToken(zzMarkedPos,zzMarkedPos, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addToken(int, int, int) - */ - private void addHyperlinkToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, true); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, int startOffset) { - super.addToken(array, start,end, tokenType, startOffset); - zzStartRead = zzMarkedPos; - } - - - /** - * Returns the closest {@link TokenTypes "standard" token type} for a given - * "internal" token type (e.g. one whose value is < 0). - */ - @Override - public int getClosestStandardTokenTypeForInternalType(int type) { - switch (type) { - case INTERNAL_CSS_STRING: - case INTERNAL_CSS_CHAR: - return TokenTypes.LITERAL_STRING_DOUBLE_QUOTE; - case INTERNAL_CSS_MLC: - return TokenTypes.COMMENT_MULTILINE; - } - return type; - } - - - /** - * Returns true since CSS uses curly braces. - * - * @return true always. - */ - public boolean getCurlyBracesDenoteCodeBlocks() { - return true; - } - - - /** - * {@inheritDoc} - */ - @Override - public boolean getMarkOccurrencesOfTokenType(int type) { - return type==Token.RESERVED_WORD; // Used for CSS keys - } - - - /** - * {@inheritDoc} - */ - @Override - public boolean getShouldIndentNextLineAfter(Token t) { - if (t!=null && t.length()==1) { - char ch = t.charAt(0); - return ch=='{' || ch=='('; - } - return false; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - cssPrevState = YYINITIAL; // Shouldn't be necessary - - // Start off in the proper state. - int state = Token.NULL; - switch (initialTokenType) { - case Token.LITERAL_STRING_DOUBLE_QUOTE: - state = CSS_STRING; - break; - case Token.LITERAL_CHAR: - state = CSS_CHAR_LITERAL; - break; - case Token.COMMENT_MULTILINE: - state = CSS_C_STYLE_COMMENT; - break; - case INTERNAL_CSS_PROPERTY: - state = CSS_PROPERTY; - break; - case INTERNAL_CSS_VALUE: - state = CSS_VALUE; - break; - default: - if (initialTokenType<-1024) { - int main = -(-initialTokenType & 0xffffff00); - switch (main) { - default: // Should never happen - case INTERNAL_CSS_STRING: - state = CSS_STRING; - break; - case INTERNAL_CSS_CHAR: - state = CSS_CHAR_LITERAL; - break; - case INTERNAL_CSS_MLC: - state = CSS_C_STYLE_COMMENT; - break; - } - cssPrevState = -initialTokenType&0xff; - } - else { - state = Token.NULL; - } - } - - start = text.offset; - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Overridden to accept letters, digits, underscores, and hyphens. - */ - @Override - public boolean isIdentifierChar(int languageIndex, char ch) { - return Character.isLetterOrDigit(ch) || ch=='-' || ch=='.' || ch=='_'; - } - - - /** - * Toggles whether we're highlighting less instead of just CSS. - * - * @param highlightingLess Whether we're highlighting less. - */ - public void setHighlightingLess(boolean highlightingLess) { - this.highlightingLess = highlightingLess; - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(java.io.Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = zzPushbackPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtBOL = true; - zzAtEOF = false; - } - - -%} - -Digit = ([0-9]) -Letter = ([A-Za-z]) -LetterOrUnderscore = ({Letter}|[_]) -LetterOrUnderscoreOrDash = ({LetterOrUnderscore}|[\-]) - -CSS_SelectorPiece = (("*"|"."|{LetterOrUnderscoreOrDash})({LetterOrUnderscoreOrDash}|"."|{Digit})*) -CSS_PseudoClass = (":"("root"|"nth-child"|"nth-last-child"|"nth-of-type"|"nth-last-of-type"|"first-child"|"last-child"|"first-of-type"|"last-of-type"|"only-child"|"only-of-type"|"empty"|"link"|"visited"|"active"|"hover"|"focus"|"target"|"lang"|"enabled"|"disabled"|"checked"|":first-line"|":first-letter"|":before"|":after"|"not")) -CSS_AtRule = ("@"(charset|import|namespace|media|document|page|font-face|keyframes|viewport)) -CSS_Less_Var = ("@"({LetterOrUnderscoreOrDash})({LetterOrUnderscoreOrDash}|"."|{Digit})*) -CSS_Id = ("#"{CSS_SelectorPiece}) -CSS_Separator = ([;\(\)\[\]]) -WhiteSpace = ([ \t]+) -MlcStart = ("/*") -MlcEnd = ("*/") - -CSS_Property = ([\*]?{LetterOrUnderscoreOrDash}({LetterOrUnderscoreOrDash}|{Digit})*) -CSS_ValueChar = ({LetterOrUnderscoreOrDash}|[\\/]) -CSS_Value = ({CSS_ValueChar}*) -CSS_Function = ({CSS_Value}\() -CSS_Digits = ([\-]?{Digit}+([0-9\.]+)?(pt|pc|in|mm|cm|em|ex|px|ms|s|%)?) -CSS_Hex = ("#"[0-9a-fA-F]+) -CSS_Number = ({CSS_Digits}|{CSS_Hex}) - -URLGenDelim = ([:\/\?#\[\]@]) -URLSubDelim = ([\!\$&'\(\)\*\+,;=]) -URLUnreserved = ({LetterOrUnderscore}|{Digit}|[\-\.\~]) -URLCharacter = ({URLGenDelim}|{URLSubDelim}|{URLUnreserved}|[%]) -URLCharacters = ({URLCharacter}*) -URLEndCharacter = ([\/\$]|{Letter}|{Digit}) -URL = (((https?|f(tp|ile))"://"|"www.")({URLCharacters}{URLEndCharacter})?) - - -%state CSS_PROPERTY -%state CSS_VALUE -%state CSS_STRING -%state CSS_CHAR_LITERAL -%state CSS_C_STYLE_COMMENT - - -%% - - { - {CSS_SelectorPiece} { addToken(Token.DATA_TYPE); } - {CSS_PseudoClass} { addToken(Token.RESERVED_WORD); } - ":" { /* Unknown pseudo class */ addToken(Token.DATA_TYPE); } - {CSS_AtRule} { addToken(Token.REGEX); } - {CSS_Less_Var} { addToken(highlightingLess ? Token.VARIABLE : Token.REGEX); } - {CSS_Number} { addToken(highlightingLess ? Token.LITERAL_NUMBER_DECIMAL_INT : Token.IDENTIFIER); } - {CSS_Id} { addToken(highlightingLess ? Token.ANNOTATION : Token.VARIABLE); } - "{" { addToken(Token.SEPARATOR); yybegin(CSS_PROPERTY); } - [,] { addToken(Token.IDENTIFIER); } - \" { start = zzMarkedPos-1; cssPrevState = zzLexicalState; yybegin(CSS_STRING); } - \' { start = zzMarkedPos-1; cssPrevState = zzLexicalState; yybegin(CSS_CHAR_LITERAL); } - "}" { addToken(highlightingLess ? Token.SEPARATOR : Token.IDENTIFIER); } - [+>~\^$\|=] { addToken(Token.OPERATOR); } - {CSS_Separator} { addToken(Token.SEPARATOR); } - {WhiteSpace} { addToken(Token.WHITESPACE); } - {MlcStart} { start = zzMarkedPos-2; cssPrevState = zzLexicalState; yybegin(CSS_C_STYLE_COMMENT); } - . { /*System.out.println("yyinitial: " + yytext());*/ addToken(Token.IDENTIFIER); } - "\n" | - <> { addNullToken(); return firstToken; } -} - - { - {CSS_Property} { addToken(Token.RESERVED_WORD); } - {CSS_Less_Var} { addToken(highlightingLess ? Token.VARIABLE : Token.IDENTIFIER); } - "{" { addToken(Token.SEPARATOR); /* helps with auto-closing curlies when editing CSS */ } - "}" { addToken(Token.SEPARATOR); yybegin(YYINITIAL); } - ":" { addToken(Token.OPERATOR); yybegin(CSS_VALUE); } - {WhiteSpace} { addToken(Token.WHITESPACE); } - {MlcStart} { start = zzMarkedPos-2; cssPrevState = zzLexicalState; yybegin(CSS_C_STYLE_COMMENT); } - . { /*System.out.println("css_property: " + yytext());*/ addToken(Token.IDENTIFIER); } - "\n" | - <> { addEndToken(INTERNAL_CSS_PROPERTY); return firstToken; } -} - - { - {CSS_Value} { addToken(Token.IDENTIFIER); } - "!important" { addToken(Token.PREPROCESSOR); } - {CSS_Function} { int temp = zzMarkedPos - 2; - addToken(zzStartRead, temp, Token.FUNCTION); - addToken(zzMarkedPos-1, zzMarkedPos-1, Token.SEPARATOR); - zzStartRead = zzCurrentPos = zzMarkedPos; - } - {CSS_Number} { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); } - {CSS_Less_Var} { addToken(highlightingLess ? Token.VARIABLE : Token.IDENTIFIER); } - \" { start = zzMarkedPos-1; cssPrevState = zzLexicalState; yybegin(CSS_STRING); } - \' { start = zzMarkedPos-1; cssPrevState = zzLexicalState; yybegin(CSS_CHAR_LITERAL); } - ")" { /* End of a function */ addToken(Token.SEPARATOR); } - [;] { addToken(Token.OPERATOR); yybegin(CSS_PROPERTY); } - [,\.] { addToken(Token.IDENTIFIER); } - "}" { addToken(Token.SEPARATOR); yybegin(YYINITIAL); } - {WhiteSpace} { addToken(Token.WHITESPACE); } - {MlcStart} { start = zzMarkedPos-2; cssPrevState = zzLexicalState; yybegin(CSS_C_STYLE_COMMENT); } - . { /*System.out.println("css_value: " + yytext());*/ addToken(Token.IDENTIFIER); } - "\n" | - <> { addEndToken(INTERNAL_CSS_VALUE); return firstToken; } -} - - { - [^\n\\\"]+ {} - \\.? { /* Skip escaped chars. */ } - \" { addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); yybegin(cssPrevState); } - \n | - <> { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addEndToken(INTERNAL_CSS_STRING - cssPrevState); return firstToken; } -} - - { - [^\n\\\']+ {} - \\.? { /* Skip escaped chars. */ } - \' { addToken(start,zzStartRead, Token.LITERAL_CHAR); yybegin(cssPrevState); } - \n | - <> { addToken(start,zzStartRead-1, Token.LITERAL_CHAR); addEndToken(INTERNAL_CSS_CHAR - cssPrevState); return firstToken; } -} - - { - [^hwf\n\*]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_MULTILINE); start = zzMarkedPos; } - [hwf] {} - {MlcEnd} { addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); yybegin(cssPrevState); } - \* {} - \n | - <> { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_CSS_MLC - cssPrevState); return firstToken; } -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/CSSTokenMaker.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/CSSTokenMaker.java deleted file mode 100644 index 4069160..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/CSSTokenMaker.java +++ /dev/null @@ -1,1174 +0,0 @@ -/* The following code was generated by JFlex 1.4.1 on 8/22/15 12:29 PM */ - -/* - * 09/03/2005 - * - * CSSTokenMaker.java - Token maker for CSS 3 files. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * This class splits up text into tokens representing a CSS 3 file. It's - * written with a few extra internal states so that it can easily be copy - * and pasted into HTML, PHP, and JSP TokenMakres when it is updated.

- * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated CSSTokenMaker.java file will contain 2 - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.5 - * - */ - -public class CSSTokenMaker extends AbstractJFlexCTokenMaker { - - /** This character denotes the end of file */ - public static final int YYEOF = -1; - - /** lexical states */ - public static final int CSS_C_STYLE_COMMENT = 5; - public static final int YYINITIAL = 0; - public static final int CSS_STRING = 3; - public static final int CSS_VALUE = 2; - public static final int CSS_PROPERTY = 1; - public static final int CSS_CHAR_LITERAL = 4; - - /** - * Translates characters to character classes - */ - private static final String ZZ_CMAP_PACKED = - "\11\0\1\41\1\62\25\0\1\41\1\63\1\56\1\37\1\53\1\46"+ - "\1\50\1\57\1\44\1\64\1\5\1\52\1\55\1\4\1\6\1\42"+ - "\12\1\1\7\1\40\1\0\1\52\1\61\1\50\1\35\6\47\24\2"+ - "\1\51\1\43\1\51\1\61\1\3\1\0\1\21\1\34\1\15\1\20"+ - "\1\26\1\23\1\33\1\14\1\16\1\2\1\30\1\17\1\27\1\13"+ - "\1\11\1\25\1\2\1\10\1\22\1\12\1\32\1\31\1\36\1\45"+ - "\1\24\1\2\1\54\1\61\1\60\1\52\uff81\0"; - - /** - * Translates characters to character classes - */ - private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); - - /** - * Translates DFA states to action switch labels. - */ - private static final int [] ZZ_ACTION = zzUnpackAction(); - - private static final String ZZ_ACTION_PACKED_0 = - "\2\0\1\1\3\0\1\2\1\3\2\4\1\5\2\2"+ - "\1\6\1\7\1\2\1\10\1\11\1\1\1\12\1\13"+ - "\1\14\1\15\1\16\1\17\1\16\1\20\2\16\1\21"+ - "\1\22\1\23\1\24\1\25\2\1\2\24\1\26\1\1"+ - "\1\27\1\30\1\24\1\31\1\32\1\33\1\34\1\35"+ - "\1\32\1\36\1\37\5\32\1\40\2\0\1\3\3\0"+ - "\1\4\15\0\12\41\1\3\1\42\1\3\1\43\1\44"+ - "\2\0\1\25\3\0\1\25\1\0\1\33\1\45\27\0"+ - "\11\41\12\0\1\17\14\0\11\41\3\0\1\46\14\0"+ - "\5\41\1\47\2\41\13\0\6\41\5\0\3\41\4\0"+ - "\2\41\3\0\1\41\4\0\1\50"; - - private static int [] zzUnpackAction() { - int [] result = new int[230]; - int offset = 0; - offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAction(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /** - * Translates a state to a row index in the transition table - */ - private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); - - private static final String ZZ_ROWMAP_PACKED_0 = - "\0\0\0\65\0\152\0\237\0\324\0\u0109\0\u013e\0\u0173"+ - "\0\u01a8\0\u01dd\0\u0212\0\u0247\0\u027c\0\u013e\0\u02b1\0\u02e6"+ - "\0\u013e\0\u013e\0\u013e\0\u013e\0\u013e\0\u013e\0\u013e\0\u013e"+ - "\0\u031b\0\u0350\0\u013e\0\u0385\0\u02e6\0\u013e\0\u013e\0\u013e"+ - "\0\u013e\0\u03ba\0\u03ef\0\u0424\0\u0385\0\u0459\0\u013e\0\u048e"+ - "\0\u013e\0\u013e\0\u04c3\0\u013e\0\u04f8\0\u052d\0\u013e\0\u013e"+ - "\0\u0562\0\u013e\0\u013e\0\u0597\0\u05cc\0\u0601\0\u0636\0\u066b"+ - "\0\u013e\0\u06a0\0\u06d5\0\u013e\0\u070a\0\u073f\0\u0774\0\u07a9"+ - "\0\u07de\0\u0813\0\u0848\0\u087d\0\u08b2\0\u08e7\0\u091c\0\u0951"+ - "\0\u0986\0\u09bb\0\u09f0\0\u0a25\0\u0a5a\0\u0a8f\0\u0ac4\0\u0af9"+ - "\0\u0b2e\0\u0b63\0\u0b98\0\u0bcd\0\u0c02\0\u0c37\0\u0c6c\0\u0ca1"+ - "\0\u0cd6\0\u0d0b\0\u013e\0\u0d40\0\u0d75\0\u0daa\0\u013e\0\u0ddf"+ - "\0\u0e14\0\u0e49\0\u0459\0\u0e7e\0\u013e\0\u013e\0\u0eb3\0\u0ee8"+ - "\0\u0f1d\0\u0f52\0\u0f87\0\u0fbc\0\u0ff1\0\u1026\0\u105b\0\u1090"+ - "\0\u10c5\0\u10fa\0\u112f\0\u1164\0\u1199\0\u11ce\0\u1203\0\u1238"+ - "\0\u126d\0\u12a2\0\u12d7\0\u130c\0\u1341\0\u1376\0\u13ab\0\u13e0"+ - "\0\u1415\0\u144a\0\u147f\0\u14b4\0\u14e9\0\u151e\0\u1553\0\u1588"+ - "\0\u15bd\0\u15f2\0\u1627\0\u165c\0\u1691\0\u16c6\0\u16fb\0\u1730"+ - "\0\u013e\0\u1765\0\u179a\0\u17cf\0\u1804\0\u1839\0\u186e\0\u18a3"+ - "\0\u18d8\0\u190d\0\u1942\0\u1977\0\u19ac\0\u19e1\0\u1a16\0\u1a4b"+ - "\0\u1a80\0\u1ab5\0\u1aea\0\u1b1f\0\u1b54\0\u1b89\0\u1bbe\0\u1bf3"+ - "\0\u1c28\0\u1c5d\0\u1c92\0\u1cc7\0\u1cfc\0\u1d31\0\u1d66\0\u1d9b"+ - "\0\u1dd0\0\u1e05\0\u1e3a\0\u1e6f\0\u1ea4\0\u1ed9\0\u1f0e\0\u1f43"+ - "\0\u1f78\0\u1fad\0\u1fe2\0\u0a8f\0\u2017\0\u204c\0\u2081\0\u20b6"+ - "\0\u1c5d\0\u20eb\0\u2120\0\u2155\0\u218a\0\u21bf\0\u21f4\0\u2229"+ - "\0\u225e\0\u2293\0\u22c8\0\u22fd\0\u2332\0\u2367\0\u239c\0\u23d1"+ - "\0\u2406\0\u243b\0\u2470\0\u24a5\0\u24da\0\u250f\0\u2544\0\u2579"+ - "\0\u25ae\0\u25e3\0\u2618\0\u264d\0\u2682\0\u26b7\0\u26ec\0\u2721"+ - "\0\u2756\0\u278b\0\u27c0\0\u27f5\0\u282a\0\u013e"; - - private static int [] zzUnpackRowMap() { - int [] result = new int[230]; - int offset = 0; - offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackRowMap(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int high = packed.charAt(i++) << 16; - result[j++] = high | packed.charAt(i++); - } - return j; - } - - /** - * The transition table of the DFA - */ - private static final int [] ZZ_TRANS = zzUnpackTrans(); - - private static final String ZZ_TRANS_PACKED_0 = - "\1\7\1\10\2\11\1\12\2\11\1\13\25\11\1\14"+ - "\1\11\1\15\1\16\1\17\1\20\1\7\1\16\1\11"+ - "\1\7\1\11\1\7\1\16\2\21\1\22\1\23\1\24"+ - "\1\25\1\26\1\21\1\27\1\7\1\16\2\30\3\31"+ - "\1\32\1\30\1\33\25\31\1\34\1\31\2\30\1\17"+ - "\1\35\2\30\1\31\1\30\1\31\4\30\1\36\3\30"+ - "\1\37\1\30\1\40\2\30\1\41\1\42\2\43\1\44"+ - "\1\41\1\23\1\41\25\43\1\45\1\43\1\46\1\47"+ - "\1\17\1\50\1\43\1\51\1\43\1\41\1\43\5\41"+ - "\1\23\1\24\1\25\1\37\1\41\1\52\1\53\1\54"+ - "\43\55\1\56\12\55\1\57\3\55\1\60\2\55\43\61"+ - "\1\56\13\61\1\62\2\61\1\63\2\61\5\64\1\65"+ - "\6\64\1\66\6\64\1\67\12\64\1\70\23\64\1\71"+ - "\2\64\66\0\1\10\4\0\1\10\6\0\1\72\1\73"+ - "\3\0\1\74\2\0\1\75\1\76\1\77\16\0\1\74"+ - "\17\0\4\11\1\0\1\11\1\0\25\11\1\0\1\11"+ - "\6\0\1\11\1\0\1\11\16\0\1\100\3\11\1\0"+ - "\1\11\1\0\25\11\1\0\1\11\6\0\1\11\1\0"+ - "\1\11\24\0\1\101\1\102\1\103\1\104\1\105\1\106"+ - "\1\107\1\0\1\110\1\111\1\112\1\0\1\113\2\0"+ - "\1\114\2\0\1\115\35\0\3\116\3\0\3\116\1\117"+ - "\1\116\1\120\1\121\1\116\1\122\2\116\1\123\1\116"+ - "\1\124\1\116\1\125\1\126\1\127\3\116\1\0\1\116"+ - "\6\0\1\116\1\0\1\116\16\0\1\130\5\131\1\0"+ - "\5\131\1\132\2\131\2\132\1\131\1\132\2\131\1\132"+ - "\5\131\1\132\1\0\1\131\6\0\1\131\1\0\1\132"+ - "\56\0\1\17\30\0\1\133\60\0\4\31\3\0\25\31"+ - "\1\0\1\31\6\0\1\31\1\0\1\31\17\0\3\31"+ - "\3\0\25\31\1\0\1\31\6\0\1\31\1\0\1\31"+ - "\17\0\3\134\3\0\25\134\1\0\1\134\6\0\1\134"+ - "\1\0\1\134\16\0\1\42\4\0\1\42\6\0\1\135"+ - "\1\136\3\0\1\137\2\0\1\140\1\141\1\142\16\0"+ - "\1\137\20\0\3\43\3\0\25\43\1\0\1\43\3\0"+ - "\2\43\1\51\1\43\1\0\1\43\16\0\1\42\3\43"+ - "\3\0\25\43\1\0\1\43\3\0\2\43\1\51\1\43"+ - "\1\0\1\43\16\0\1\143\13\0\1\143\2\0\2\143"+ - "\1\0\1\143\2\0\1\143\5\0\1\143\12\0\1\143"+ - "\17\0\3\43\1\133\2\0\25\43\1\0\1\43\3\0"+ - "\2\43\1\51\1\43\1\0\1\43\33\0\1\144\46\0"+ - "\43\55\1\0\12\55\1\0\3\55\1\0\2\55\62\145"+ - "\1\0\2\145\43\61\1\0\13\61\1\0\2\61\1\0"+ - "\2\61\5\64\1\0\6\64\1\0\6\64\1\0\12\64"+ - "\1\0\23\64\1\0\2\64\42\0\1\146\34\0\1\147"+ - "\64\0\1\150\3\0\1\151\104\0\1\152\55\0\1\74"+ - "\50\0\1\74\63\0\1\74\2\0\1\74\27\0\1\74"+ - "\46\0\1\74\15\0\1\74\41\0\1\74\4\0\1\74"+ - "\36\0\1\100\3\11\1\0\1\100\1\0\25\11\1\0"+ - "\1\11\6\0\1\11\1\74\1\11\36\0\1\153\1\0"+ - "\1\154\10\0\1\155\41\0\1\156\66\0\1\157\72\0"+ - "\1\160\54\0\1\161\1\162\63\0\1\163\67\0\1\164"+ - "\66\0\1\165\2\0\1\166\61\0\1\167\63\0\1\170"+ - "\60\0\1\171\4\0\1\172\61\0\1\173\13\0\1\174"+ - "\53\0\1\175\47\0\4\116\1\0\1\116\1\0\25\116"+ - "\1\0\1\116\6\0\1\116\1\0\1\116\16\0\4\116"+ - "\1\0\1\116\1\0\11\116\1\176\13\116\1\0\1\116"+ - "\6\0\1\116\1\0\1\116\16\0\4\116\1\0\1\116"+ - "\1\0\4\116\1\177\20\116\1\0\1\116\6\0\1\116"+ - "\1\0\1\116\16\0\4\116\1\0\1\116\1\0\17\116"+ - "\1\200\5\116\1\0\1\116\6\0\1\116\1\0\1\116"+ - "\16\0\4\116\1\0\1\116\1\0\1\116\1\201\23\116"+ - "\1\0\1\116\6\0\1\116\1\0\1\116\16\0\4\116"+ - "\1\0\1\116\1\0\1\116\1\202\23\116\1\0\1\116"+ - "\6\0\1\116\1\0\1\116\16\0\4\116\1\0\1\116"+ - "\1\0\11\116\1\203\13\116\1\0\1\116\6\0\1\116"+ - "\1\0\1\116\16\0\4\116\1\0\1\116\1\0\16\116"+ - "\1\204\6\116\1\0\1\116\6\0\1\116\1\0\1\116"+ - "\16\0\4\116\1\0\1\116\1\0\16\116\1\205\6\116"+ - "\1\0\1\116\6\0\1\116\1\0\1\116\16\0\4\116"+ - "\1\0\1\116\1\0\6\116\1\206\16\116\1\0\1\116"+ - "\6\0\1\116\1\0\1\116\16\0\1\130\13\0\1\130"+ - "\2\0\2\130\1\0\1\130\2\0\1\130\5\0\1\130"+ - "\12\0\1\130\16\0\4\131\1\0\1\131\1\0\25\131"+ - "\1\0\1\131\6\0\1\131\1\0\1\131\16\0\1\132"+ - "\3\131\1\0\1\131\1\0\5\131\1\132\2\131\2\132"+ - "\1\131\1\132\2\131\1\132\5\131\1\132\1\0\1\131"+ - "\6\0\1\131\1\0\1\132\16\0\4\134\1\0\1\134"+ - "\1\0\25\134\1\0\1\134\6\0\1\134\1\0\1\134"+ - "\44\0\1\137\50\0\1\137\63\0\1\137\2\0\1\137"+ - "\27\0\1\137\46\0\1\137\15\0\1\137\41\0\1\137"+ - "\4\0\1\137\64\0\1\207\47\0\1\210\77\0\1\211"+ - "\56\0\1\212\103\0\1\213\51\0\1\214\57\0\1\215"+ - "\74\0\1\216\47\0\1\161\72\0\1\217\55\0\1\220"+ - "\66\0\1\221\66\0\1\222\101\0\1\223\61\0\1\224"+ - "\51\0\1\225\64\0\1\226\6\0\1\227\64\0\1\173"+ - "\54\0\1\230\67\0\1\231\57\0\1\232\75\0\1\233"+ - "\70\0\1\234\61\0\1\235\43\0\4\116\1\0\1\116"+ - "\1\0\17\116\1\236\5\116\1\0\1\116\6\0\1\116"+ - "\1\0\1\116\16\0\4\116\1\0\1\116\1\0\11\116"+ - "\1\237\13\116\1\0\1\116\6\0\1\116\1\0\1\116"+ - "\16\0\4\116\1\0\1\116\1\0\15\116\1\240\7\116"+ - "\1\0\1\116\6\0\1\116\1\0\1\116\16\0\4\116"+ - "\1\0\1\116\1\0\5\116\1\241\17\116\1\0\1\116"+ - "\6\0\1\116\1\0\1\116\16\0\4\116\1\0\1\116"+ - "\1\0\3\116\1\242\21\116\1\0\1\116\6\0\1\116"+ - "\1\0\1\116\16\0\4\116\1\0\1\116\1\0\23\116"+ - "\1\243\1\116\1\0\1\116\6\0\1\116\1\0\1\116"+ - "\16\0\4\116\1\0\1\116\1\0\10\116\1\244\14\116"+ - "\1\0\1\116\6\0\1\116\1\0\1\116\16\0\4\116"+ - "\1\0\1\116\1\0\14\116\1\245\10\116\1\0\1\116"+ - "\6\0\1\116\1\0\1\116\16\0\4\116\1\0\1\116"+ - "\1\0\16\116\1\246\6\116\1\0\1\116\6\0\1\116"+ - "\1\0\1\116\42\0\1\247\64\0\1\250\46\0\1\251"+ - "\103\0\1\211\44\0\1\252\70\0\1\223\62\0\1\253"+ - "\77\0\1\254\65\0\1\255\73\0\1\256\35\0\1\257"+ - "\106\0\1\260\53\0\1\261\77\0\1\221\67\0\1\221"+ - "\43\0\1\255\70\0\1\262\100\0\1\263\54\0\1\227"+ - "\76\0\1\264\42\0\1\265\70\0\1\266\47\0\4\116"+ - "\1\0\1\116\1\0\16\116\1\267\6\116\1\0\1\116"+ - "\6\0\1\116\1\0\1\116\16\0\4\116\1\0\1\116"+ - "\1\0\1\270\24\116\1\0\1\116\6\0\1\116\1\0"+ - "\1\116\16\0\4\116\1\0\1\116\1\0\1\116\1\271"+ - "\23\116\1\0\1\116\6\0\1\116\1\0\1\116\16\0"+ - "\4\116\1\0\1\116\1\0\22\116\1\272\2\116\1\0"+ - "\1\116\6\0\1\116\1\0\1\116\16\0\4\116\1\0"+ - "\1\116\1\0\2\116\1\273\22\116\1\0\1\116\6\0"+ - "\1\116\1\0\1\116\16\0\4\116\1\0\1\116\1\0"+ - "\16\116\1\274\6\116\1\0\1\116\6\0\1\116\1\0"+ - "\1\116\16\0\4\116\1\0\1\116\1\0\6\116\1\275"+ - "\16\116\1\0\1\116\6\0\1\116\1\0\1\116\16\0"+ - "\4\116\1\0\1\116\1\0\13\116\1\276\11\116\1\0"+ - "\1\116\6\0\1\116\1\0\1\116\16\0\4\116\1\0"+ - "\1\116\1\0\25\116\1\0\1\200\6\0\1\116\1\0"+ - "\1\116\26\0\1\277\62\0\1\251\12\0\1\211\104\0"+ - "\1\300\23\0\2\252\5\301\25\252\1\301\1\252\2\301"+ - "\1\0\1\252\1\0\1\301\1\252\1\301\1\252\3\301"+ - "\1\252\1\0\1\301\1\0\1\301\3\0\2\301\22\0"+ - "\1\302\53\0\1\303\57\0\1\304\106\0\1\161\47\0"+ - "\1\305\3\0\1\306\1\0\1\307\55\0\1\221\104\0"+ - "\1\310\65\0\1\311\55\0\1\221\61\0\1\310\71\0"+ - "\1\221\52\0\1\310\53\0\4\116\1\0\1\116\1\0"+ - "\12\116\1\312\12\116\1\0\1\116\6\0\1\116\1\0"+ - "\1\116\16\0\4\116\1\0\1\116\1\0\12\116\1\313"+ - "\12\116\1\0\1\116\6\0\1\116\1\0\1\116\16\0"+ - "\4\116\1\0\1\116\1\0\1\314\24\116\1\0\1\116"+ - "\6\0\1\116\1\0\1\116\16\0\4\116\1\0\1\116"+ - "\1\0\17\116\1\315\5\116\1\0\1\116\6\0\1\116"+ - "\1\0\1\116\16\0\3\116\1\316\1\0\1\116\1\0"+ - "\25\116\1\0\1\116\6\0\1\116\1\0\1\116\16\0"+ - "\4\116\1\0\1\116\1\0\11\116\1\274\13\116\1\0"+ - "\1\116\6\0\1\116\1\0\1\116\16\0\4\116\1\0"+ - "\1\116\1\0\1\317\24\116\1\0\1\116\6\0\1\116"+ - "\1\0\1\116\25\0\1\320\116\0\1\252\34\0\1\321"+ - "\62\0\1\311\65\0\1\305\3\0\1\306\72\0\1\322"+ - "\55\0\1\323\71\0\1\232\71\0\1\324\64\0\1\221"+ - "\37\0\4\116\1\0\1\116\1\0\15\116\1\325\7\116"+ - "\1\0\1\116\6\0\1\116\1\0\1\116\16\0\4\116"+ - "\1\0\1\116\1\0\16\116\1\314\6\116\1\0\1\116"+ - "\6\0\1\116\1\0\1\116\16\0\4\116\1\0\1\116"+ - "\1\0\2\116\1\274\22\116\1\0\1\116\6\0\1\116"+ - "\1\0\1\116\16\0\4\116\1\0\1\116\1\0\16\116"+ - "\1\326\6\116\1\0\1\116\6\0\1\116\1\0\1\116"+ - "\16\0\4\116\1\0\1\116\1\0\13\116\1\325\11\116"+ - "\1\0\1\116\6\0\1\116\1\0\1\116\16\0\4\116"+ - "\1\0\1\116\1\0\11\116\1\327\13\116\1\0\1\116"+ - "\6\0\1\116\1\0\1\116\27\0\1\330\56\0\1\331"+ - "\64\0\1\332\76\0\1\333\66\0\1\221\45\0\4\116"+ - "\1\0\1\116\1\0\11\116\1\334\13\116\1\0\1\116"+ - "\6\0\1\116\1\0\1\116\16\0\4\116\1\0\1\116"+ - "\1\0\3\116\1\314\21\116\1\0\1\116\6\0\1\116"+ - "\1\0\1\116\16\0\4\116\1\0\1\116\1\0\17\116"+ - "\1\335\5\116\1\0\1\116\6\0\1\116\1\0\1\116"+ - "\36\0\1\336\62\0\1\337\57\0\1\340\71\0\1\324"+ - "\46\0\4\116\1\0\1\116\1\0\5\116\1\243\17\116"+ - "\1\0\1\116\6\0\1\116\1\0\1\116\16\0\4\116"+ - "\1\0\1\116\1\0\16\116\1\341\6\116\1\0\1\116"+ - "\6\0\1\116\1\0\1\116\30\0\1\342\67\0\1\343"+ - "\7\0\1\344\62\0\1\345\41\0\4\116\1\0\1\116"+ - "\1\0\12\116\1\274\12\116\1\0\1\116\6\0\1\116"+ - "\1\0\1\116\27\0\1\346\65\0\1\311\63\0\1\214"+ - "\77\0\1\311\37\0"; - - private static int [] zzUnpackTrans() { - int [] result = new int[10335]; - int offset = 0; - offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackTrans(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - value--; - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /* error codes */ - private static final int ZZ_UNKNOWN_ERROR = 0; - private static final int ZZ_NO_MATCH = 1; - private static final int ZZ_PUSHBACK_2BIG = 2; - - /* error messages for the codes above */ - private static final String ZZ_ERROR_MSG[] = { - "Unkown internal scanner error", - "Error: could not match input", - "Error: pushback value was too large" - }; - - /** - * ZZ_ATTRIBUTE[aState] contains the attributes of state aState - */ - private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); - - private static final String ZZ_ATTRIBUTE_PACKED_0 = - "\2\0\1\1\3\0\1\11\6\1\1\11\2\1\10\11"+ - "\2\1\1\11\2\1\4\11\5\1\1\11\1\1\2\11"+ - "\1\1\1\11\2\1\2\11\1\1\2\11\5\1\1\11"+ - "\2\0\1\11\3\0\1\1\15\0\15\1\1\11\1\1"+ - "\2\0\1\11\3\0\1\1\1\0\2\11\27\0\11\1"+ - "\12\0\1\11\14\0\11\1\3\0\1\1\14\0\10\1"+ - "\13\0\6\1\5\0\3\1\4\0\2\1\3\0\1\1"+ - "\4\0\1\11"; - - private static int [] zzUnpackAttribute() { - int [] result = new int[230]; - int offset = 0; - offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAttribute(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - /** the input device */ - private java.io.Reader zzReader; - - /** the current state of the DFA */ - private int zzState; - - /** the current lexical state */ - private int zzLexicalState = YYINITIAL; - - /** this buffer contains the current text to be matched and is - the source of the yytext() string */ - private char zzBuffer[]; - - /** the textposition at the last accepting state */ - private int zzMarkedPos; - - /** the current text position in the buffer */ - private int zzCurrentPos; - - /** startRead marks the beginning of the yytext() string in the buffer */ - private int zzStartRead; - - /** endRead marks the last character in the buffer, that has been read - from input */ - private int zzEndRead; - - /** zzAtEOF == true <=> the scanner is at the EOF */ - private boolean zzAtEOF; - - /* user code: */ - - /** - * Internal type denoting a line ending in a CSS property. - */ - public static final int INTERNAL_CSS_PROPERTY = -1; - - /** - * Internal type denoting a line ending in a CSS property value. - */ - public static final int INTERNAL_CSS_VALUE = -2; - - /** - * Internal type denoting line ending in a CSS double-quote string. - * The state to return to is embedded in the actual end token type. - */ - public static final int INTERNAL_CSS_STRING = -(1<<11); - - /** - * Internal type denoting line ending in a CSS single-quote string. - * The state to return to is embedded in the actual end token type. - */ - public static final int INTERNAL_CSS_CHAR = -(2<<11); - - /** - * Internal type denoting line ending in a CSS multi-line comment. - * The state to return to is embedded in the actual end token type. - */ - public static final int INTERNAL_CSS_MLC = -(3<<11); - - /** - * The state previous CSS-related state we were in before going into a CSS - * string, multi-line comment, etc. - */ - private int cssPrevState; - - /** - * Whether we are highlighting less instead of CSS. - */ - private boolean highlightingLess; - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public CSSTokenMaker() { - super(); - } - - - /** - * Adds the token specified to the current linked list of tokens as an - * "end token;" that is, at zzMarkedPos. - * - * @param tokenType The token's type. - */ - private void addEndToken(int tokenType) { - addToken(zzMarkedPos,zzMarkedPos, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addToken(int, int, int) - */ - private void addHyperlinkToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, true); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, int startOffset) { - super.addToken(array, start,end, tokenType, startOffset); - zzStartRead = zzMarkedPos; - } - - - /** - * Returns the closest {@link TokenTypes "standard" token type} for a given - * "internal" token type (e.g. one whose value is < 0). - */ - @Override - public int getClosestStandardTokenTypeForInternalType(int type) { - switch (type) { - case INTERNAL_CSS_STRING: - case INTERNAL_CSS_CHAR: - return TokenTypes.LITERAL_STRING_DOUBLE_QUOTE; - case INTERNAL_CSS_MLC: - return TokenTypes.COMMENT_MULTILINE; - } - return type; - } - - - /** - * Returns true since CSS uses curly braces. - * - * @return true always. - */ - public boolean getCurlyBracesDenoteCodeBlocks() { - return true; - } - - - /** - * {@inheritDoc} - */ - @Override - public boolean getMarkOccurrencesOfTokenType(int type) { - return type==Token.RESERVED_WORD; // Used for CSS keys - } - - - /** - * {@inheritDoc} - */ - @Override - public boolean getShouldIndentNextLineAfter(Token t) { - if (t!=null && t.length()==1) { - char ch = t.charAt(0); - return ch=='{' || ch=='('; - } - return false; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - cssPrevState = YYINITIAL; // Shouldn't be necessary - - // Start off in the proper state. - int state = Token.NULL; - switch (initialTokenType) { - case Token.LITERAL_STRING_DOUBLE_QUOTE: - state = CSS_STRING; - break; - case Token.LITERAL_CHAR: - state = CSS_CHAR_LITERAL; - break; - case Token.COMMENT_MULTILINE: - state = CSS_C_STYLE_COMMENT; - break; - case INTERNAL_CSS_PROPERTY: - state = CSS_PROPERTY; - break; - case INTERNAL_CSS_VALUE: - state = CSS_VALUE; - break; - default: - if (initialTokenType<-1024) { - int main = -(-initialTokenType & 0xffffff00); - switch (main) { - default: // Should never happen - case INTERNAL_CSS_STRING: - state = CSS_STRING; - break; - case INTERNAL_CSS_CHAR: - state = CSS_CHAR_LITERAL; - break; - case INTERNAL_CSS_MLC: - state = CSS_C_STYLE_COMMENT; - break; - } - cssPrevState = -initialTokenType&0xff; - } - else { - state = Token.NULL; - } - } - - start = text.offset; - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Overridden to accept letters, digits, underscores, and hyphens. - */ - @Override - public boolean isIdentifierChar(int languageIndex, char ch) { - return Character.isLetterOrDigit(ch) || ch=='-' || ch=='.' || ch=='_'; - } - - - /** - * Toggles whether we're highlighting less instead of just CSS. - * - * @param highlightingLess Whether we're highlighting less. - */ - public void setHighlightingLess(boolean highlightingLess) { - this.highlightingLess = highlightingLess; - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(java.io.Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtEOF = false; - } - - - - - /** - * Creates a new scanner - * There is also a java.io.InputStream version of this constructor. - * - * @param in the java.io.Reader to read input from. - */ - public CSSTokenMaker(java.io.Reader in) { - this.zzReader = in; - } - - /** - * Creates a new scanner. - * There is also java.io.Reader version of this constructor. - * - * @param in the java.io.Inputstream to read input from. - */ - public CSSTokenMaker(java.io.InputStream in) { - this(new java.io.InputStreamReader(in)); - } - - /** - * Unpacks the compressed character translation table. - * - * @param packed the packed character translation table - * @return the unpacked character translation table - */ - private static char [] zzUnpackCMap(String packed) { - char [] map = new char[0x10000]; - int i = 0; /* index in packed string */ - int j = 0; /* index in unpacked array */ - while (i < 134) { - int count = packed.charAt(i++); - char value = packed.charAt(i++); - do map[j++] = value; while (--count > 0); - } - return map; - } - - - /** - * Closes the input stream. - */ - public final void yyclose() throws java.io.IOException { - zzAtEOF = true; /* indicate end of file */ - zzEndRead = zzStartRead; /* invalidate buffer */ - - if (zzReader != null) - zzReader.close(); - } - - - /** - * Returns the current lexical state. - */ - public final int yystate() { - return zzLexicalState; - } - - - /** - * Enters a new lexical state - * - * @param newState the new lexical state - */ - @Override - public final void yybegin(int newState) { - zzLexicalState = newState; - } - - - /** - * Returns the text matched by the current regular expression. - */ - public final String yytext() { - return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead ); - } - - - /** - * Returns the character at position pos from the - * matched text. - * - * It is equivalent to yytext().charAt(pos), but faster - * - * @param pos the position of the character to fetch. - * A value from 0 to yylength()-1. - * - * @return the character at position pos - */ - public final char yycharat(int pos) { - return zzBuffer[zzStartRead+pos]; - } - - - /** - * Returns the length of the matched text region. - */ - public final int yylength() { - return zzMarkedPos-zzStartRead; - } - - - /** - * Reports an error that occured while scanning. - * - * In a wellformed scanner (no or only correct usage of - * yypushback(int) and a match-all fallback rule) this method - * will only be called with things that "Can't Possibly Happen". - * If this method is called, something is seriously wrong - * (e.g. a JFlex bug producing a faulty scanner etc.). - * - * Usual syntax/scanner level error handling should be done - * in error fallback rules. - * - * @param errorCode the code of the errormessage to display - */ - private void zzScanError(int errorCode) { - String message; - try { - message = ZZ_ERROR_MSG[errorCode]; - } - catch (ArrayIndexOutOfBoundsException e) { - message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; - } - - throw new Error(message); - } - - - /** - * Pushes the specified amount of characters back into the input stream. - * - * They will be read again by then next call of the scanning method - * - * @param number the number of characters to be read again. - * This number must not be greater than yylength()! - */ - public void yypushback(int number) { - if ( number > yylength() ) - zzScanError(ZZ_PUSHBACK_2BIG); - - zzMarkedPos -= number; - } - - - /** - * Resumes scanning until the next regular expression is matched, - * the end of input is encountered or an I/O-Error occurs. - * - * @return the next token - * @exception java.io.IOException if any I/O-Error occurs - */ - public org.fife.ui.rsyntaxtextarea.Token yylex() throws java.io.IOException { - int zzInput; - int zzAction; - - // cached fields: - int zzCurrentPosL; - int zzMarkedPosL; - int zzEndReadL = zzEndRead; - char [] zzBufferL = zzBuffer; - char [] zzCMapL = ZZ_CMAP; - - int [] zzTransL = ZZ_TRANS; - int [] zzRowMapL = ZZ_ROWMAP; - int [] zzAttrL = ZZ_ATTRIBUTE; - - while (true) { - zzMarkedPosL = zzMarkedPos; - - zzAction = -1; - - zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; - - zzState = zzLexicalState; - - - zzForAction: { - while (true) { - - if (zzCurrentPosL < zzEndReadL) - zzInput = zzBufferL[zzCurrentPosL++]; - else if (zzAtEOF) { - zzInput = YYEOF; - break zzForAction; - } - else { - // store back cached positions - zzCurrentPos = zzCurrentPosL; - zzMarkedPos = zzMarkedPosL; - boolean eof = zzRefill(); - // get translated positions and possibly new buffer - zzCurrentPosL = zzCurrentPos; - zzMarkedPosL = zzMarkedPos; - zzBufferL = zzBuffer; - zzEndReadL = zzEndRead; - if (eof) { - zzInput = YYEOF; - break zzForAction; - } - else { - zzInput = zzBufferL[zzCurrentPosL++]; - } - } - int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; - if (zzNext == -1) break zzForAction; - zzState = zzNext; - - int zzAttributes = zzAttrL[zzState]; - if ( (zzAttributes & 1) == 1 ) { - zzAction = zzState; - zzMarkedPosL = zzCurrentPosL; - if ( (zzAttributes & 8) == 8 ) break zzForAction; - } - - } - } - - // store back cached position - zzMarkedPos = zzMarkedPosL; - - switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { - case 1: - { addToken(Token.IDENTIFIER); - } - case 41: break; - case 2: - { /*System.out.println("yyinitial: " + yytext());*/ addToken(Token.IDENTIFIER); - } - case 42: break; - case 24: - { addEndToken(INTERNAL_CSS_VALUE); return firstToken; - } - case 43: break; - case 40: - { addToken(Token.PREPROCESSOR); - } - case 44: break; - case 9: - { addToken(Token.SEPARATOR); yybegin(CSS_PROPERTY); - } - case 45: break; - case 28: - { addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); yybegin(cssPrevState); - } - case 46: break; - case 31: - { addToken(start,zzStartRead-1, Token.LITERAL_CHAR); addEndToken(INTERNAL_CSS_CHAR - cssPrevState); return firstToken; - } - case 47: break; - case 35: - { start = zzMarkedPos-2; cssPrevState = zzLexicalState; yybegin(CSS_C_STYLE_COMMENT); - } - case 48: break; - case 30: - { addToken(start,zzStartRead, Token.LITERAL_CHAR); yybegin(cssPrevState); - } - case 49: break; - case 37: - { addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); yybegin(cssPrevState); - } - case 50: break; - case 12: - { addToken(highlightingLess ? Token.SEPARATOR : Token.IDENTIFIER); - } - case 51: break; - case 10: - { start = zzMarkedPos-1; cssPrevState = zzLexicalState; yybegin(CSS_STRING); - } - case 52: break; - case 16: - { addToken(Token.OPERATOR); yybegin(CSS_VALUE); - } - case 53: break; - case 5: - { /* Unknown pseudo class */ addToken(Token.DATA_TYPE); - } - case 54: break; - case 22: - { addToken(Token.OPERATOR); yybegin(CSS_PROPERTY); - } - case 55: break; - case 27: - { /* Skip escaped chars. */ - } - case 56: break; - case 39: - { addToken(Token.REGEX); - } - case 57: break; - case 34: - { addToken(highlightingLess ? Token.ANNOTATION : Token.VARIABLE); - } - case 58: break; - case 3: - { addToken(highlightingLess ? Token.LITERAL_NUMBER_DECIMAL_INT : Token.IDENTIFIER); - } - case 59: break; - case 19: - { addEndToken(INTERNAL_CSS_PROPERTY); return firstToken; - } - case 60: break; - case 23: - { int temp = zzMarkedPos - 2; - addToken(zzStartRead, temp, Token.FUNCTION); - addToken(zzMarkedPos-1, zzMarkedPos-1, Token.SEPARATOR); - zzStartRead = zzCurrentPos = zzMarkedPos; - } - case 61: break; - case 7: - { addToken(Token.WHITESPACE); - } - case 62: break; - case 18: - { addToken(Token.SEPARATOR); yybegin(YYINITIAL); - } - case 63: break; - case 4: - { addToken(Token.DATA_TYPE); - } - case 64: break; - case 33: - { addToken(highlightingLess ? Token.VARIABLE : Token.REGEX); - } - case 65: break; - case 17: - { addToken(Token.SEPARATOR); /* helps with auto-closing curlies when editing CSS */ - } - case 66: break; - case 21: - { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); - } - case 67: break; - case 29: - { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addEndToken(INTERNAL_CSS_STRING - cssPrevState); return firstToken; - } - case 68: break; - case 32: - { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_CSS_MLC - cssPrevState); return firstToken; - } - case 69: break; - case 25: - { /* End of a function */ addToken(Token.SEPARATOR); - } - case 70: break; - case 36: - { addToken(highlightingLess ? Token.VARIABLE : Token.IDENTIFIER); - } - case 71: break; - case 14: - { /*System.out.println("css_property: " + yytext());*/ addToken(Token.IDENTIFIER); - } - case 72: break; - case 15: - { addToken(Token.RESERVED_WORD); - } - case 73: break; - case 38: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_MULTILINE); start = zzMarkedPos; - } - case 74: break; - case 11: - { start = zzMarkedPos-1; cssPrevState = zzLexicalState; yybegin(CSS_CHAR_LITERAL); - } - case 75: break; - case 6: - { addToken(Token.SEPARATOR); - } - case 76: break; - case 13: - { addNullToken(); return firstToken; - } - case 77: break; - case 8: - { addToken(Token.OPERATOR); - } - case 78: break; - case 20: - { /*System.out.println("css_value: " + yytext());*/ addToken(Token.IDENTIFIER); - } - case 79: break; - case 26: - { - } - case 80: break; - default: - if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { - zzAtEOF = true; - switch (zzLexicalState) { - case CSS_C_STYLE_COMMENT: { - addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_CSS_MLC - cssPrevState); return firstToken; - } - case 231: break; - case YYINITIAL: { - addNullToken(); return firstToken; - } - case 232: break; - case CSS_STRING: { - addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addEndToken(INTERNAL_CSS_STRING - cssPrevState); return firstToken; - } - case 233: break; - case CSS_VALUE: { - addEndToken(INTERNAL_CSS_VALUE); return firstToken; - } - case 234: break; - case CSS_PROPERTY: { - addEndToken(INTERNAL_CSS_PROPERTY); return firstToken; - } - case 235: break; - case CSS_CHAR_LITERAL: { - addToken(start,zzStartRead-1, Token.LITERAL_CHAR); addEndToken(INTERNAL_CSS_CHAR - cssPrevState); return firstToken; - } - case 236: break; - default: - return null; - } - } - else { - zzScanError(ZZ_NO_MATCH); - } - } - } - } - - -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/CSharpTokenMaker.flex b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/CSharpTokenMaker.flex deleted file mode 100644 index ba203c0..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/CSharpTokenMaker.flex +++ /dev/null @@ -1,514 +0,0 @@ -/* - * 11/13/2004 - * - * CSharpTokenMaker.java - An object that can take a chunk of text and return - * a linked list of tokens representing it in the C# programming language. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * A lexer for the C# programming language. - * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated CSharpTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.5 - * - */ -%% - -%public -%class CSharpTokenMaker -%extends AbstractJFlexCTokenMaker -%unicode -%type org.fife.ui.rsyntaxtextarea.Token - - -%{ - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public CSharpTokenMaker() { - super(); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addToken(int, int, int) - */ - private void addHyperlinkToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, true); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, int startOffset) { - super.addToken(array, start,end, tokenType, startOffset); - zzStartRead = zzMarkedPos; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { "//", null }; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - - // Start off in the proper state. - int state = Token.NULL; - switch (initialTokenType) { - case Token.LITERAL_STRING_DOUBLE_QUOTE: - state = VERBATIMSTRING; - start = text.offset; - break; - case Token.COMMENT_MULTILINE: - state = DELIMITEDCOMMENT; - start = text.offset; - break; - default: - state = Token.NULL; - } - - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = zzPushbackPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtBOL = true; - zzAtEOF = false; - } - - -%} - -/* C1.1 - Line terminators. */ -NewlineCharacter = ([\n]) - -/* C.1.2 - Whitespace. */ -Whitespace = ([\t ]+) - -/* C.1.3 - Comments */ -InputCharacter = ([^\n]) -InputCharacters = ({InputCharacter}+) -DocumentationCommentStart = ("///") -SingleLineComment = ("//"([^/]{InputCharacters}?)?) -DelimitedCommentStart = ("/*") -DelimitedCommentEnd = ("*/") - -/* C.1.5 - Unicode character escape sequences. */ -UnicodeEscape1 = ("\\u"{HexDigit}{HexDigit}{HexDigit}{HexDigit}) -UnicodeEscape2 = ("\\U"{HexDigit}{HexDigit}{HexDigit}{HexDigit}{HexDigit}{HexDigit}{HexDigit}{HexDigit}) -UnicodeEscapeSequence = ({UnicodeEscape1}|{UnicodeEscape2}) - -/* C1.6 - Identifiers. */ -LetterCharacter = ([A-Za-z]) /* Not accurate - many more Unicode letters, Unicode escapes */ -/* -CombiningCharacter = () -*/ -DecimalDigitCharacter = ([0-9]) -ConnectingCharacter = ([_\-]) -/* -FormattingCharacter = () -*/ -/* -IdentifierPartCharacter = ({LetterCharacter}|{DecimalDigitCharacter}|{ConnectingCharacter}|{CombiningCharacter}|{FormattingCharacter}) -*/ -IdentifierPartCharacter = ({LetterCharacter}|{DecimalDigitCharacter}|{ConnectingCharacter}) -IdentifierPartCharacters = ({IdentifierPartCharacter}+) -IdentifierStartCharacter = ({LetterCharacter}|[_]) -IdentifierOrKeyword = ({IdentifierStartCharacter}{IdentifierPartCharacters}?) -Identifier = ("@"?{IdentifierOrKeyword}) -/* NOTE: The two below aren't from the C# spec, but we add them so we can */ -/* highlight errors. */ -NonSeparator = (([^\t\f\r\n\ \(\)\{\}\[\]\;\,\.\=\>\<\!\~\?\:\+\-\*\/\&\|\^\%\"\']|"#"|"\\")) -ErrorIdentifier = ({NonSeparator}+) - -/* C1.8 - Literals. */ -BooleanLiteral = ("true"|"false") -DecimalDigit = ([0-9]) -DecimalDigits = ({DecimalDigit}+) -IntegerTypeSuffix = (([uU][lL]?)|([lL][uU]?)) -DecimalIntegerLiteral = ({DecimalDigits}{IntegerTypeSuffix}?) -HexDigit = ([0-9A-Fa-f]) -HexDigits = ({HexDigit}+) -HexadecimalIntegerLiteral = ("0"[xX]{HexDigits}{IntegerTypeSuffix}?) -Sign = ([+\-]) -ExponentPart = ([eE]{Sign}?{DecimalDigits}) -RealTypeSuffix = ([fFdDmM]) -RealHelper1 = ({DecimalDigits}"."{DecimalDigits}{ExponentPart}?{RealTypeSuffix}?) -RealHelper2 = ("."{DecimalDigits}{ExponentPart}?{RealTypeSuffix}?) -RealHelper3 = ({DecimalDigits}{ExponentPart}{RealTypeSuffix}?) -RealHelper4 = ({DecimalDigits}{RealTypeSuffix}) -RealLiteral = ({RealHelper1}|{RealHelper2}|{RealHelper3}|{RealHelper4}) -ErrorNumberFormat = (({DecimalIntegerLiteral}|{HexadecimalIntegerLiteral}|{RealLiteral}){NonSeparator}+) -SingleCharacter = ([^\'\\\n]) -SimpleEscapeSequence = ("\\"[\'\"\\0abfnrtv]) -HexadecimalEscapeSequence = ("\\x"{HexDigit}{HexDigit}?{HexDigit}?{HexDigit}?) -Character = ({SingleCharacter}|{SimpleEscapeSequence}|{HexadecimalEscapeSequence}|{UnicodeEscapeSequence}) -UnclosedCharacterLiteral = ("'"{Character}) -CharacterLiteral = ({UnclosedCharacterLiteral}"'") -ErrorUnclosedCharacterLiteral = ("'"[^\'\n]*) -ErrorCharacterLiteral = ("''"|{ErrorUnclosedCharacterLiteral}[\']) -QuoteEscapeSequence = ("\"\"") -SingleVerbatimStringLiteralCharacter = ([^\"]) -VerbatimStringLiteralStart = ("@\"") -SingleRegularStringLiteralCharacter = ([^\"\\\n]) -RegularStringLiteralCharacter = ({SingleRegularStringLiteralCharacter}|{SimpleEscapeSequence}|{HexadecimalEscapeSequence}|{UnicodeEscapeSequence}) -RegularStringLiteralCharacters = ({RegularStringLiteralCharacter}+) -RegularStringLiteral = ([\"]{RegularStringLiteralCharacters}?[\"]) -UnclosedRegularStringLiteral = ([\"]([\\].|[^\\\"])*[^\"]?) -ErrorRegularStringLiteral = ({UnclosedRegularStringLiteral}[\"]) - -/* C.1.9 - Operators and Punctuators. */ -OOPHelper1 = (":") -OOPHelper2 = ("+"|"-"|"*"|"/"|"%"|"&"|"|"|"^"|"!"|"~") -OOPHelper3 = ("="|"<"|">"|"?"|"++"|"--"|"&&"|"||"|"<<"|">>") -OOPHelper4 = ("=="|"!="|"<="|">="|"+="|"-="|"*="|"/="|"%="|"&=") -OOPHelper5 = ("|="|"^="|"<<="|">>="|"->") -OperatorOrPunctuator = ({OOPHelper1}|{OOPHelper2}|{OOPHelper3}|{OOPHelper4}|{OOPHelper5}) -/* NOTE: We distinguish between operators and separators (punctuators), but */ -/* the C# spec doesn't, so the stuff below isn't in the spec. */ -Separator = ([\{\}\[\]\(\)]) -Separator2 = ([,;]) - -/* C.1.10 - Pre-processing Directives. */ -/* NOTE: We don't do ALL of the PP stuff here as it's unnecessary */ -/* for us to know the difference between declarations, diagnostics, */ -/* regions, etc. */ -ConditionalSymbol = ({IdentifierOrKeyword}) /* Not correct - excludes "true" and "false". */ -PPNewLine = ({Whitespace}?{SingleLineComment}?{NewlineCharacter}) -PPPrimaryExpression = ({IdentifierOrKeyword}|({Whitespace}?{PPExpression}{Whitespace}?)) -PPUnaryExpression = ({PPPrimaryExpression}|("!"{Whitespace}?{PPUnaryExpression})) -PPEqualityExpression = ({PPUnaryExpression}|({Whitespace}?"=="{Whitespace}?{PPUnaryExpression})|({Whitespace}?"!="{Whitespace}?{PPUnaryExpression})) -PPAndExpression = ({PPEqualityExpression}|({Whitespace}?"&&"{Whitespace}?{PPEqualityExpression})) -PPOrExpression = ({PPAndExpression}|({Whitespace}?"||"{Whitespace}?{PPAndExpression})) -PPExpression = ({Whitespace}?{PPOrExpression}{Whitespace}?) -PPWord = ("define"|"undef"|"if"|"elif"|"else"|"endif"|"line"|"error"|"warning"|"region"|"endregion") -PPDirective = ({Whitespace}?"#"{Whitespace}?{PPWord}{InputCharacter}*) - -/* URL matching, for comments (not in C# spec) */ -URLGenDelim = ([:\/\?#\[\]@]) -URLSubDelim = ([\!\$&'\(\)\*\+,;=]) -URLUnreserved = ([A-Za-z_]|{DecimalDigitCharacter}|[\-\.\~]) -URLCharacter = ({URLGenDelim}|{URLSubDelim}|{URLUnreserved}|[%]) -URLCharacters = ({URLCharacter}*) -URLEndCharacter = ([\/\$]|[A-Za-z0-9]) -URL = (((https?|f(tp|ile))"://"|"www.")({URLCharacters}{URLEndCharacter})?) - - -%state DELIMITEDCOMMENT -%state DOCUMENTCOMMENT -%state VERBATIMSTRING - -%% - - { - - /* Keywords */ - "abstract" | - "as" | - "base" | - "break" | - "case" | - "catch" | - "checked" | - "class" | - "const" | - "continue" | - "decimal" | - "default" | - "delegate" | - "do" | - "else" | - "enum" | - "event" | - "explicit" | - "extern" | - "finally" | - "fixed" | - "for" | - "foreach" | - "goto" | - "if" | - "implicit" | - "in" | - "interface" | - "internal" | - "is" | - "lock" | - "namespace" | - "new" | - "null" | - "object" | - "operator" | - "out" | - "override" | - "params" | - "private" | - "protected" | - "public" | - "readonly" | - "ref" | - "return" | - "sealed" | - "sizeof" | - "stackalloc" | - "static" | - "string" | - "struct" | - "switch" | - "this" | - "throw" | - "try" | - "typeof" | - "unchecked" | - "unsafe" | - "using" | - "virtual" | - "void" | - "volatile" | - "while" { addToken(Token.RESERVED_WORD); } - - /* Data types. */ - "bool" | - "byte" | - "char" | - "double" | - "float" | - "int" | - "long" | - "object" | - "sbyte" | - "short" | - "string" | - "uint" | - "ulong" | - "ushort" { addToken(Token.DATA_TYPE); } - - - {NewlineCharacter} { addNullToken(); return firstToken; } - - {BooleanLiteral} { addToken(Token.LITERAL_BOOLEAN); } - - {Identifier} { addToken(Token.IDENTIFIER); } - - {Whitespace} { addToken(Token.WHITESPACE); } - - /* String/Character Literals. */ - {CharacterLiteral} { addToken(Token.LITERAL_CHAR); } - {UnclosedCharacterLiteral} { addToken(Token.ERROR_CHAR); /*addNullToken(); return firstToken;*/ } - {ErrorUnclosedCharacterLiteral} { addToken(Token.ERROR_CHAR); addNullToken(); return firstToken; } - {ErrorCharacterLiteral} { addToken(Token.ERROR_CHAR); } - {VerbatimStringLiteralStart} { start = zzMarkedPos-2; yybegin(VERBATIMSTRING); } - {RegularStringLiteral} { addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); } - {UnclosedRegularStringLiteral} { addToken(Token.ERROR_STRING_DOUBLE); addNullToken(); return firstToken; } - {ErrorRegularStringLiteral} { addToken(Token.ERROR_STRING_DOUBLE); } - - /* Comments. */ - {DelimitedCommentStart} { start = zzMarkedPos-2; yybegin(DELIMITEDCOMMENT); } - {DocumentationCommentStart} { start = zzMarkedPos-3; yybegin(DOCUMENTCOMMENT); } - {SingleLineComment} { addToken(Token.COMMENT_EOL); addNullToken(); return firstToken; } - - /* Separators. */ - {Separator} { addToken(Token.SEPARATOR); } - {Separator2} { addToken(Token.IDENTIFIER); } - - /* Operators. */ - {OperatorOrPunctuator} { addToken(Token.OPERATOR); } - - /* Numbers */ - {DecimalIntegerLiteral} { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); } - {HexadecimalIntegerLiteral} { addToken(Token.LITERAL_NUMBER_HEXADECIMAL); } - {RealLiteral} { addToken(Token.LITERAL_NUMBER_FLOAT); } - {ErrorNumberFormat} { addToken(Token.ERROR_NUMBER_FORMAT); } - - /* Preprocessor directives. */ - {PPDirective} { addToken(Token.PREPROCESSOR); } - - /* Pretty-much anything else. */ - {ErrorIdentifier} { addToken(Token.ERROR_IDENTIFIER); } - - /* Ended with a line not in a string or comment. */ - <> { addNullToken(); return firstToken; } - - /* Catch any other (unhandled) characters and flag them as bad. */ - . { addToken(Token.ERROR_IDENTIFIER); } - -} - - - { - - [^hwf\n\*]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_MULTILINE); start = zzMarkedPos; } - [hwf] {} - \n { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; } - {DelimitedCommentEnd} { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); } - \* {} - <> { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; } - -} - - - { - - [^hwf\<\n]* {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_DOCUMENTATION); start = zzMarkedPos; } - [hwf] {} - \n { addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addNullToken(); return firstToken; } - "<"[^\>]*">" { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addToken(temp,zzMarkedPos-1, Token.PREPROCESSOR); start = zzMarkedPos; } - "<" { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addToken(temp,zzEndRead, Token.PREPROCESSOR); addNullToken(); return firstToken; } - <> { addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addNullToken(); return firstToken; } - -} - - - { - - [^\"\n]* {} - {QuoteEscapeSequence} {} - \" { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); } - \n { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); return firstToken; } - <> { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); return firstToken; } - -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/CSharpTokenMaker.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/CSharpTokenMaker.java deleted file mode 100644 index e0d88c3..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/CSharpTokenMaker.java +++ /dev/null @@ -1,1599 +0,0 @@ -/* The following code was generated by JFlex 1.4.1 on 1/21/09 4:27 PM */ - -/* - * 11/13/2004 - * - * CSharpTokenMaker.java - An object that can take a chunk of text and return - * a linked list of tokens representing it in the C# programming language. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * A lexer for the C# programming language. - * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated CSharpTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.5 - * - */ - -public class CSharpTokenMaker extends AbstractJFlexCTokenMaker { - - /** This character denotes the end of file */ - public static final int YYEOF = -1; - - /** lexical states */ - public static final int VERBATIMSTRING = 3; - public static final int DOCUMENTCOMMENT = 2; - public static final int YYINITIAL = 0; - public static final int DELIMITEDCOMMENT = 1; - - /** - * Translates characters to character classes - */ - private static final String ZZ_CMAP_PACKED = - "\11\0\1\2\1\1\1\0\2\15\22\0\1\2\1\45\1\41\1\16"+ - "\1\66\1\45\1\46\1\37\2\65\1\4\1\32\1\56\1\12\1\36"+ - "\1\3\1\30\11\11\1\44\1\56\1\53\1\52\1\54\1\51\1\14"+ - "\3\27\1\35\1\33\1\35\5\10\1\26\1\34\7\10\1\7\2\10"+ - "\1\31\2\10\1\65\1\5\1\65\1\50\1\13\1\0\1\23\1\42"+ - "\1\71\1\57\1\21\1\22\1\64\1\67\1\60\1\75\1\72\1\24"+ - "\1\73\1\61\1\62\1\70\1\10\1\20\1\25\1\17\1\6\1\40"+ - "\1\63\1\43\1\74\1\76\1\55\1\47\1\55\1\51\uff81\0"; - - /** - * Translates characters to character classes - */ - private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); - - /** - * Translates DFA states to action switch labels. - */ - private static final int [] ZZ_ACTION = zzUnpackAction(); - - private static final String ZZ_ACTION_PACKED_0 = - "\2\0\2\1\1\2\1\3\1\4\2\5\2\6\1\7"+ - "\1\5\3\2\7\6\1\7\1\5\1\2\1\10\1\6"+ - "\1\11\1\6\5\5\1\12\11\6\1\1\1\13\5\1"+ - "\1\14\1\1\1\15\3\1\1\16\1\17\1\0\1\20"+ - "\1\21\5\6\1\22\1\7\1\22\1\23\1\7\1\0"+ - "\1\24\7\2\14\6\1\25\10\6\1\22\1\23\1\26"+ - "\1\10\1\27\2\6\2\11\1\30\4\6\2\25\21\6"+ - "\1\31\7\0\1\32\2\0\1\1\7\0\1\20\1\33"+ - "\5\6\1\7\1\23\1\0\7\2\1\34\1\2\17\6"+ - "\1\25\10\6\1\35\1\10\1\36\2\10\1\26\1\10"+ - "\3\6\1\11\1\37\3\11\7\6\1\40\20\6\20\0"+ - "\1\6\1\40\2\6\6\2\1\41\12\6\2\35\2\10"+ - "\1\26\2\6\2\11\16\6\1\0\1\42\2\0\1\43"+ - "\7\0\3\2\10\6\1\35\2\10\1\26\1\6\2\11"+ - "\10\6\7\0\2\2\3\6\2\10\1\26\1\11\5\6"+ - "\2\0\1\2\3\6\1\0\1\6"; - - private static int [] zzUnpackAction() { - int [] result = new int[364]; - int offset = 0; - offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAction(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /** - * Translates a state to a row index in the transition table - */ - private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); - - private static final String ZZ_ROWMAP_PACKED_0 = - "\0\0\0\77\0\176\0\275\0\374\0\u013b\0\u017a\0\u01b9"+ - "\0\u01f8\0\u0237\0\u0276\0\u02b5\0\u02f4\0\u0333\0\u013b\0\u0372"+ - "\0\u03b1\0\u03f0\0\u042f\0\u046e\0\u04ad\0\u04ec\0\u052b\0\u056a"+ - "\0\u05a9\0\u05e8\0\u0627\0\u0666\0\u06a5\0\u06e4\0\u013b\0\u0723"+ - "\0\u0762\0\u07a1\0\u07e0\0\u013b\0\u013b\0\u081f\0\u085e\0\u089d"+ - "\0\u08dc\0\u091b\0\u095a\0\u0999\0\u09d8\0\u0a17\0\u013b\0\u0a56"+ - "\0\u0a95\0\u0ad4\0\u0b13\0\u0b52\0\u013b\0\u0b91\0\u0bd0\0\u0c0f"+ - "\0\u0c4e\0\u0c8d\0\u013b\0\u0ccc\0\u0d0b\0\u0d4a\0\u013b\0\u0d89"+ - "\0\u0dc8\0\u0e07\0\u0e46\0\u0e85\0\u0ec4\0\u0f03\0\u0f42\0\u0ec4"+ - "\0\u0f81\0\u05e8\0\u013b\0\u0fc0\0\u0fff\0\u103e\0\u107d\0\u10bc"+ - "\0\u10fb\0\u113a\0\u1179\0\u11b8\0\u11f7\0\u1236\0\u1275\0\u12b4"+ - "\0\u12f3\0\u1332\0\u1371\0\u13b0\0\u13ef\0\u142e\0\u0276\0\u146d"+ - "\0\u14ac\0\u14eb\0\u152a\0\u1569\0\u15a8\0\u15e7\0\u1626\0\u1665"+ - "\0\u16a4\0\u16e3\0\u1722\0\u013b\0\u1761\0\u17a0\0\u17df\0\u181e"+ - "\0\u013b\0\u185d\0\u189c\0\u18db\0\u191a\0\u1959\0\u1998\0\u19d7"+ - "\0\u1a16\0\u1a55\0\u1a94\0\u1ad3\0\u1b12\0\u1b51\0\u1b90\0\u1bcf"+ - "\0\u1c0e\0\u1c4d\0\u1c8c\0\u1ccb\0\u1d0a\0\u1d49\0\u1d88\0\u1dc7"+ - "\0\u013b\0\u1e06\0\u1e45\0\u1e84\0\u1ec3\0\u1f02\0\u1f41\0\u0bd0"+ - "\0\u013b\0\u1f80\0\u1fbf\0\u013b\0\u1ffe\0\u203d\0\u207c\0\u20bb"+ - "\0\u20fa\0\u2139\0\u2178\0\u21b7\0\u013b\0\u21f6\0\u2235\0\u2274"+ - "\0\u22b3\0\u22f2\0\u0ec4\0\u2331\0\u2370\0\u23af\0\u23ee\0\u242d"+ - "\0\u246c\0\u24ab\0\u24ea\0\u2529\0\u2568\0\u25a7\0\u25e6\0\u2625"+ - "\0\u2664\0\u26a3\0\u26e2\0\u2721\0\u2760\0\u279f\0\u27de\0\u281d"+ - "\0\u285c\0\u289b\0\u28da\0\u2919\0\u2958\0\u2997\0\u29d6\0\u2a15"+ - "\0\u2a54\0\u2a93\0\u2ad2\0\u2b11\0\u2b50\0\u2b8f\0\u2bce\0\u2c0d"+ - "\0\u013b\0\u2c4c\0\u2c8b\0\u2cca\0\u2d09\0\u2d48\0\u2d87\0\u2dc6"+ - "\0\u2e05\0\u013b\0\u2e44\0\u2e83\0\u2ec2\0\u2f01\0\u2f40\0\u2f7f"+ - "\0\u2fbe\0\u2ffd\0\u303c\0\u307b\0\u30ba\0\u30f9\0\u3138\0\u3177"+ - "\0\u31b6\0\u31f5\0\u3234\0\u3273\0\u32b2\0\u32f1\0\u3330\0\u336f"+ - "\0\u33ae\0\u33ed\0\u342c\0\u346b\0\u34aa\0\u34e9\0\u3528\0\u3567"+ - "\0\u35a6\0\u35e5\0\u3624\0\u3663\0\u36a2\0\u36e1\0\u3720\0\u375f"+ - "\0\u379e\0\u37dd\0\u381c\0\u385b\0\u389a\0\u38d9\0\u0276\0\u3918"+ - "\0\u3957\0\u3996\0\u39d5\0\u3a14\0\u3a53\0\u3a92\0\u3ad1\0\u0276"+ - "\0\u3b10\0\u3b4f\0\u3b8e\0\u3bcd\0\u3c0c\0\u3c4b\0\u3c8a\0\u3cc9"+ - "\0\u3d08\0\u3d47\0\u3d86\0\u3dc5\0\u3e04\0\u3e43\0\u3e82\0\u3ec1"+ - "\0\u3f00\0\u3f3f\0\u3f7e\0\u3fbd\0\u3ffc\0\u403b\0\u407a\0\u40b9"+ - "\0\u40f8\0\u4137\0\u4176\0\u41b5\0\u41f4\0\u4233\0\u4272\0\u42b1"+ - "\0\u42f0\0\u432f\0\u436e\0\u43ad\0\u43ec\0\u442b\0\u446a\0\u44a9"+ - "\0\u44e8\0\u4527\0\u4566\0\u45a5\0\u45e4\0\u4623\0\u4662\0\u46a1"+ - "\0\u46e0\0\u471f\0\u475e\0\u479d\0\u47dc\0\u481b\0\u485a\0\u4899"+ - "\0\u0ec4\0\u48d8\0\u4917\0\u4956\0\u4995\0\u49d4\0\u4a13\0\u4a52"+ - "\0\u4a91\0\u4ad0\0\u4b0f\0\u4b4e\0\u4b8d\0\u4bcc\0\u4c0b\0\u4c4a"+ - "\0\u436e\0\u4c89\0\u442b\0\u4cc8\0\u4d07\0\u4d46\0\u4d85\0\u4dc4"+ - "\0\u4e03\0\u4e42\0\u4e81\0\u4ec0\0\u4eff\0\u4f3e\0\u4f7d\0\u4fbc"+ - "\0\u4ffb\0\u503a\0\u5079\0\u50b8\0\u50f7\0\u5136\0\u5175\0\u51b4"+ - "\0\u51f3\0\u5232\0\u5271\0\u52b0"; - - private static int [] zzUnpackRowMap() { - int [] result = new int[364]; - int offset = 0; - offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackRowMap(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int high = packed.charAt(i++) << 16; - result[j++] = high | packed.charAt(i++); - } - return j; - } - - /** - * The transition table of the DFA - */ - private static final int [] ZZ_TRANS = zzUnpackTrans(); - - private static final String ZZ_TRANS_PACKED_0 = - "\1\5\1\6\1\7\1\10\1\11\1\5\1\12\2\13"+ - "\1\14\1\15\1\13\1\16\1\17\1\20\1\21\1\22"+ - "\1\23\1\24\1\25\1\26\1\27\2\13\1\30\1\13"+ - "\1\31\3\13\1\32\1\33\1\34\1\35\1\36\1\13"+ - "\1\37\1\11\1\40\1\41\1\11\1\37\1\11\1\42"+ - "\1\43\1\44\1\45\1\46\1\47\1\50\1\51\1\52"+ - "\1\53\1\44\1\5\1\13\1\54\1\55\5\13\1\56"+ - "\1\57\2\56\1\60\15\56\1\61\40\56\1\62\3\56"+ - "\1\63\7\56\1\64\1\65\20\64\1\66\30\64\1\67"+ - "\7\64\1\70\3\64\1\71\7\64\1\72\1\73\37\72"+ - "\1\74\35\72\1\5\4\0\5\5\1\0\2\5\1\0"+ - "\14\5\1\0\3\5\2\0\1\5\1\0\2\5\13\0"+ - "\6\5\1\0\11\5\101\0\1\7\13\0\1\75\63\0"+ - "\1\76\1\77\45\0\1\37\76\0\1\37\24\0\1\5"+ - "\4\0\1\5\4\13\1\100\1\13\1\5\1\0\1\5"+ - "\5\13\1\101\1\102\4\13\1\0\3\13\2\0\1\13"+ - "\1\0\2\13\13\0\1\13\1\103\1\104\3\13\1\0"+ - "\1\5\10\13\1\5\4\0\1\5\4\13\1\100\1\13"+ - "\1\5\1\0\1\5\13\13\1\0\3\13\2\0\1\13"+ - "\1\0\2\13\13\0\6\13\1\0\1\5\10\13\1\105"+ - "\4\0\1\105\2\106\1\105\1\14\1\0\2\105\1\0"+ - "\3\105\1\107\1\110\1\105\1\111\1\105\1\111\1\105"+ - "\1\14\1\105\1\0\1\107\2\110\1\112\1\0\1\105"+ - "\1\0\2\105\13\0\1\110\5\105\1\0\5\105\1\110"+ - "\3\105\12\0\1\37\37\0\1\37\1\0\1\37\22\0"+ - "\1\5\4\0\1\5\3\13\1\5\1\0\1\13\1\5"+ - "\1\0\1\5\11\13\1\5\1\13\1\0\3\13\2\0"+ - "\1\13\1\113\2\13\13\0\6\13\1\0\1\5\10\13"+ - "\1\5\1\0\1\75\2\0\1\5\1\114\3\5\1\0"+ - "\2\5\1\0\2\5\1\115\1\116\2\5\1\117\5\5"+ - "\1\0\3\5\2\0\1\5\1\0\2\5\13\0\1\120"+ - "\1\121\2\5\1\122\1\5\1\0\12\5\4\0\1\5"+ - "\4\13\1\100\1\13\1\5\1\0\1\5\1\13\1\123"+ - "\11\13\1\0\3\13\2\0\1\13\1\0\2\13\13\0"+ - "\6\13\1\0\1\5\1\124\4\13\1\125\2\13\1\5"+ - "\4\0\1\5\4\13\1\100\1\13\1\5\1\0\1\5"+ - "\2\13\1\126\10\13\1\0\3\13\2\0\1\13\1\0"+ - "\2\13\13\0\6\13\1\0\1\5\10\13\1\5\4\0"+ - "\1\5\4\13\1\100\1\13\1\5\1\0\1\5\5\13"+ - "\1\127\5\13\1\0\3\13\2\0\1\130\1\0\1\13"+ - "\1\131\13\0\2\13\1\132\3\13\1\0\1\5\10\13"+ - "\1\5\4\0\1\5\4\13\1\100\1\13\1\5\1\0"+ - "\1\5\4\13\1\133\1\134\5\13\1\0\3\13\2\0"+ - "\1\13\1\0\2\13\13\0\1\13\1\135\1\13\1\136"+ - "\2\13\1\0\1\5\10\13\1\5\4\0\1\5\4\13"+ - "\1\100\1\13\1\5\1\0\1\5\6\13\1\137\4\13"+ - "\1\0\3\13\2\0\1\13\1\0\1\140\1\13\13\0"+ - "\6\13\1\0\1\5\10\13\1\5\4\0\1\5\4\13"+ - "\1\100\1\13\1\5\1\0\1\5\13\13\1\0\3\13"+ - "\2\0\1\13\1\0\2\13\13\0\3\13\1\141\2\13"+ - "\1\0\1\5\10\13\1\5\4\0\1\5\4\13\1\100"+ - "\1\13\1\5\1\0\1\5\1\142\1\13\1\143\10\13"+ - "\1\0\3\13\2\0\1\13\1\0\1\144\1\13\13\0"+ - "\1\13\1\145\2\13\1\146\1\13\1\0\1\5\1\147"+ - "\7\13\1\105\4\0\1\105\2\106\1\105\1\14\1\0"+ - "\2\105\1\0\3\105\1\107\1\110\1\105\1\111\1\105"+ - "\1\111\1\105\1\14\1\150\1\0\1\107\2\110\1\112"+ - "\1\0\1\105\1\0\1\105\1\150\13\0\1\110\5\105"+ - "\1\0\5\105\1\110\3\105\32\0\1\37\17\0\1\37"+ - "\35\0\1\151\16\0\1\151\46\0\1\152\1\0\3\152"+ - "\1\153\31\152\1\154\37\152\1\5\4\0\1\5\4\13"+ - "\1\100\1\13\1\5\1\0\1\5\13\13\1\0\3\13"+ - "\2\0\1\13\1\0\2\13\13\0\1\13\1\155\1\13"+ - "\1\156\2\13\1\0\1\5\10\13\1\35\1\157\3\35"+ - "\1\160\33\35\1\161\35\35\1\5\4\0\1\5\4\13"+ - "\1\100\1\13\1\5\1\0\1\5\1\13\1\162\2\13"+ - "\1\127\6\13\1\0\3\13\2\0\1\13\1\0\2\13"+ - "\13\0\3\13\1\163\2\13\1\0\1\5\5\13\1\164"+ - "\2\13\46\0\1\37\3\0\1\37\73\0\1\37\2\0"+ - "\1\37\76\0\1\37\1\11\75\0\1\37\1\0\1\11"+ - "\22\0\1\5\4\0\1\5\4\13\1\100\1\13\1\5"+ - "\1\0\1\5\2\13\1\165\10\13\1\0\3\13\2\0"+ - "\1\13\1\0\2\13\13\0\3\13\1\166\2\13\1\0"+ - "\1\5\10\13\1\5\4\0\1\5\4\13\1\100\1\13"+ - "\1\5\1\0\1\5\3\13\1\137\2\13\1\137\4\13"+ - "\1\0\3\13\2\0\1\13\1\0\2\13\13\0\2\13"+ - "\1\167\3\13\1\0\1\5\4\13\1\170\3\13\1\5"+ - "\4\0\1\5\1\171\3\13\1\100\1\13\1\5\1\0"+ - "\1\5\2\13\1\172\1\13\1\173\6\13\1\0\3\13"+ - "\2\0\1\13\1\0\2\13\13\0\6\13\1\0\1\5"+ - "\10\13\1\5\4\0\1\5\1\174\3\13\1\100\1\13"+ - "\1\5\1\0\1\5\13\13\1\0\3\13\2\0\1\175"+ - "\1\0\1\176\1\13\13\0\6\13\1\0\1\5\1\13"+ - "\1\177\6\13\1\5\4\0\1\5\4\13\1\100\1\13"+ - "\1\5\1\0\1\5\13\13\1\0\3\13\2\0\1\13"+ - "\1\0\2\13\13\0\6\13\1\0\1\5\1\200\7\13"+ - "\1\5\4\0\1\5\4\13\1\100\1\13\1\5\1\0"+ - "\1\5\13\13\1\0\3\13\2\0\1\13\1\0\2\13"+ - "\13\0\3\13\1\201\2\13\1\0\1\5\10\13\1\5"+ - "\4\0\1\5\1\202\3\13\1\100\1\13\1\5\1\0"+ - "\1\5\1\13\1\203\2\13\1\204\6\13\1\0\3\13"+ - "\2\0\1\13\1\0\2\13\13\0\6\13\1\0\1\5"+ - "\10\13\1\5\4\0\1\5\4\13\1\100\1\13\1\5"+ - "\1\0\1\5\4\13\1\205\1\206\5\13\1\0\3\13"+ - "\2\0\1\13\1\0\2\13\13\0\3\13\1\207\2\13"+ - "\1\0\1\5\1\210\7\13\1\56\1\0\2\56\1\0"+ - "\15\56\1\0\40\56\1\0\3\56\1\0\7\56\3\0"+ - "\1\211\112\0\1\212\40\0\1\213\101\0\1\214\32\0"+ - "\1\215\57\0\1\64\1\0\20\64\1\0\30\64\1\0"+ - "\7\64\1\0\3\64\1\0\7\64\17\0\1\216\40\0"+ - "\1\217\16\0\54\220\1\221\22\220\63\0\1\222\32\0"+ - "\1\223\57\0\1\72\1\0\37\72\1\0\35\72\41\0"+ - "\1\224\37\0\1\75\3\0\1\225\11\0\1\226\1\227"+ - "\2\0\1\230\32\0\1\231\1\232\2\0\1\233\13\0"+ - "\3\234\1\235\73\234\6\0\6\100\3\0\13\100\1\0"+ - "\3\100\2\0\1\100\1\0\2\100\13\0\6\100\2\0"+ - "\10\100\1\5\4\0\1\5\4\13\1\100\1\13\1\5"+ - "\1\0\1\5\13\13\1\0\3\13\2\0\1\13\1\0"+ - "\2\13\13\0\3\13\1\236\2\13\1\0\1\5\10\13"+ - "\1\5\4\0\1\5\4\13\1\100\1\13\1\5\1\0"+ - "\1\5\13\13\1\0\3\13\2\0\1\13\1\0\2\13"+ - "\13\0\1\13\1\237\4\13\1\0\1\5\1\147\7\13"+ - "\1\5\4\0\1\5\4\13\1\100\1\13\1\5\1\0"+ - "\1\5\13\13\1\0\3\13\2\0\1\13\1\0\2\13"+ - "\13\0\2\13\1\240\3\13\1\0\1\5\10\13\1\5"+ - "\4\0\1\5\4\13\1\100\1\13\1\5\1\0\1\5"+ - "\6\13\1\241\4\13\1\0\3\13\2\0\1\13\1\0"+ - "\2\13\13\0\6\13\1\0\1\5\2\13\1\242\5\13"+ - "\1\105\4\0\5\105\1\0\2\105\1\0\14\105\1\0"+ - "\3\105\2\0\1\105\1\0\2\105\13\0\6\105\1\0"+ - "\12\105\4\0\5\105\1\0\2\105\1\0\6\105\1\243"+ - "\1\105\1\243\3\105\1\0\3\105\2\0\1\105\1\0"+ - "\2\105\13\0\6\105\1\0\12\105\4\0\4\105\1\244"+ - "\1\245\2\105\1\0\12\105\1\244\1\105\1\245\3\105"+ - "\2\0\1\105\1\0\2\105\13\0\6\105\1\0\12\105"+ - "\4\0\1\105\2\243\2\105\1\0\2\105\1\0\14\105"+ - "\1\0\3\105\2\0\1\105\1\0\2\105\13\0\6\105"+ - "\1\0\11\105\1\5\4\0\5\5\1\0\2\5\1\0"+ - "\14\5\1\0\3\5\2\0\1\5\1\0\2\5\13\0"+ - "\2\5\1\246\3\5\1\0\12\5\4\0\5\5\1\0"+ - "\2\5\1\0\3\5\1\247\10\5\1\0\3\5\2\0"+ - "\1\5\1\0\2\5\13\0\6\5\1\0\12\5\4\0"+ - "\5\5\1\0\2\5\1\0\2\5\1\250\3\5\1\251"+ - "\5\5\1\0\3\5\2\0\1\5\1\0\2\5\13\0"+ - "\2\5\1\252\3\5\1\0\12\5\4\0\5\5\1\0"+ - "\2\5\1\0\14\5\1\0\3\5\2\0\1\5\1\0"+ - "\2\5\13\0\1\5\1\253\4\5\1\0\12\5\4\0"+ - "\5\5\1\0\2\5\1\0\3\5\1\254\10\5\1\0"+ - "\3\5\2\0\1\5\1\0\2\5\13\0\6\5\1\0"+ - "\12\5\4\0\5\5\1\0\2\5\1\0\4\5\1\255"+ - "\7\5\1\0\3\5\2\0\1\5\1\0\2\5\13\0"+ - "\6\5\1\0\12\5\4\0\5\5\1\0\2\5\1\0"+ - "\5\5\1\256\6\5\1\0\3\5\2\0\1\5\1\0"+ - "\2\5\13\0\6\5\1\0\12\5\4\0\1\5\1\257"+ - "\3\13\1\100\1\13\1\5\1\0\1\5\13\13\1\0"+ - "\3\13\2\0\1\13\1\0\2\13\13\0\6\13\1\0"+ - "\1\5\5\13\1\137\2\13\1\5\4\0\1\5\4\13"+ - "\1\100\1\13\1\5\1\0\1\5\1\13\1\260\11\13"+ - "\1\0\3\13\2\0\1\13\1\0\2\13\13\0\1\13"+ - "\1\261\4\13\1\0\1\5\10\13\1\5\4\0\1\5"+ - "\4\13\1\100\1\13\1\5\1\0\1\5\13\13\1\0"+ - "\3\13\2\0\1\13\1\0\2\13\13\0\6\13\1\0"+ - "\1\5\1\13\1\262\6\13\1\5\4\0\1\5\4\13"+ - "\1\100\1\13\1\5\1\0\1\5\1\263\2\13\1\137"+ - "\1\264\6\13\1\0\3\13\2\0\1\13\1\0\2\13"+ - "\13\0\6\13\1\0\1\5\10\13\1\5\4\0\1\5"+ - "\4\13\1\100\1\13\1\5\1\0\1\5\6\13\1\265"+ - "\4\13\1\0\3\13\2\0\1\13\1\0\2\13\13\0"+ - "\6\13\1\0\1\5\10\13\1\5\4\0\1\5\4\13"+ - "\1\100\1\13\1\5\1\0\1\5\2\13\1\266\10\13"+ - "\1\0\3\13\2\0\1\13\1\0\2\13\13\0\6\13"+ - "\1\0\1\5\10\13\1\5\4\0\1\5\4\13\1\100"+ - "\1\13\1\5\1\0\1\5\1\267\12\13\1\0\3\13"+ - "\2\0\1\13\1\0\2\13\13\0\6\13\1\0\1\5"+ - "\1\13\1\270\6\13\1\5\4\0\1\5\1\271\3\13"+ - "\1\100\1\13\1\5\1\0\1\5\13\13\1\0\3\13"+ - "\2\0\1\13\1\0\2\13\13\0\6\13\1\0\1\5"+ - "\10\13\1\5\4\0\1\5\4\13\1\100\1\13\1\5"+ - "\1\0\1\5\5\13\1\272\5\13\1\0\3\13\2\0"+ - "\1\13\1\0\2\13\13\0\6\13\1\0\1\5\10\13"+ - "\1\5\4\0\1\5\4\13\1\100\1\13\1\5\1\0"+ - "\1\5\13\13\1\0\3\13\2\0\1\13\1\0\2\13"+ - "\13\0\3\13\1\273\2\13\1\0\1\5\10\13\1\5"+ - "\4\0\1\5\4\13\1\100\1\13\1\5\1\0\1\5"+ - "\13\13\1\0\3\13\2\0\1\13\1\0\1\13\1\274"+ - "\13\0\2\13\1\275\3\13\1\0\1\5\10\13\1\5"+ - "\4\0\1\5\4\13\1\100\1\13\1\5\1\0\1\5"+ - "\1\13\1\276\11\13\1\0\3\13\2\0\1\13\1\0"+ - "\2\13\13\0\6\13\1\0\1\5\10\13\1\5\4\0"+ - "\1\5\4\13\1\100\1\13\1\5\1\0\1\5\6\13"+ - "\1\277\4\13\1\0\3\13\2\0\1\13\1\0\2\13"+ - "\13\0\6\13\1\0\1\5\10\13\1\5\4\0\1\5"+ - "\4\13\1\100\1\13\1\5\1\0\1\5\13\13\1\0"+ - "\3\13\2\0\1\13\1\0\2\13\13\0\2\13\1\300"+ - "\3\13\1\0\1\5\2\13\1\301\5\13\1\5\4\0"+ - "\1\5\4\13\1\100\1\13\1\5\1\0\1\5\1\13"+ - "\1\302\2\13\1\303\6\13\1\0\3\13\2\0\1\13"+ - "\1\0\2\13\13\0\6\13\1\0\1\5\10\13\1\5"+ - "\4\0\1\5\4\13\1\100\1\13\1\5\1\0\1\5"+ - "\4\13\1\304\6\13\1\0\3\13\2\0\1\13\1\0"+ - "\2\13\13\0\6\13\1\0\1\5\10\13\1\5\4\0"+ - "\1\5\4\13\1\100\1\13\1\5\1\0\1\5\13\13"+ - "\1\0\3\13\2\0\1\13\1\0\2\13\13\0\6\13"+ - "\1\0\1\5\5\13\1\164\2\13\1\5\4\0\1\5"+ - "\4\13\1\100\1\13\1\5\1\0\1\5\13\13\1\0"+ - "\3\13\2\0\1\13\1\0\2\13\13\0\6\13\1\0"+ - "\1\5\7\13\1\262\1\5\4\0\1\5\4\13\1\100"+ - "\1\13\1\5\1\0\1\5\13\13\1\0\3\13\2\0"+ - "\1\13\1\0\2\13\13\0\1\13\1\305\4\13\1\0"+ - "\1\5\10\13\1\5\4\0\1\5\4\13\1\100\1\13"+ - "\1\5\1\0\1\5\13\13\1\0\3\13\2\0\1\13"+ - "\1\0\2\13\13\0\3\13\1\306\2\13\1\0\1\5"+ - "\10\13\1\105\4\0\4\105\1\307\1\0\2\105\1\0"+ - "\3\105\3\307\3\105\2\307\1\105\1\0\1\307\1\105"+ - "\1\307\2\0\1\105\1\0\1\307\1\105\13\0\1\307"+ - "\5\105\1\0\3\105\1\307\6\105\4\0\4\105\1\151"+ - "\1\0\2\105\1\0\3\105\1\107\1\110\5\105\1\151"+ - "\1\105\1\0\1\107\2\110\2\0\1\105\1\0\2\105"+ - "\13\0\1\110\5\105\1\0\5\105\1\110\3\105\1\310"+ - "\1\0\35\310\1\311\40\310\1\0\3\310\1\152\1\312"+ - "\1\313\7\310\2\152\1\310\2\152\4\310\1\152\6\310"+ - "\1\314\3\152\1\315\15\310\1\152\15\310\1\5\4\0"+ - "\1\5\4\13\1\100\1\13\1\5\1\0\1\5\1\13"+ - "\1\316\11\13\1\0\3\13\2\0\1\13\1\0\2\13"+ - "\13\0\6\13\1\0\1\5\10\13\1\5\4\0\1\5"+ - "\4\13\1\100\1\13\1\5\1\0\1\5\5\13\1\317"+ - "\5\13\1\0\3\13\2\0\1\13\1\0\2\13\13\0"+ - "\1\13\1\320\4\13\1\0\1\5\10\13\5\157\1\321"+ - "\33\157\1\322\36\157\1\0\3\157\1\35\1\323\1\324"+ - "\7\157\2\35\1\157\2\35\4\157\1\35\6\157\4\35"+ - "\1\325\15\157\1\35\15\157\1\5\4\0\1\5\4\13"+ - "\1\100\1\13\1\5\1\0\1\5\2\13\1\326\10\13"+ - "\1\0\3\13\2\0\1\13\1\0\2\13\13\0\6\13"+ - "\1\0\1\5\10\13\1\5\4\0\1\5\4\13\1\100"+ - "\1\13\1\5\1\0\1\5\13\13\1\0\3\13\2\0"+ - "\1\13\1\0\2\13\13\0\3\13\1\327\2\13\1\0"+ - "\1\5\10\13\1\5\4\0\1\5\4\13\1\100\1\13"+ - "\1\5\1\0\1\5\1\330\12\13\1\0\3\13\2\0"+ - "\1\13\1\0\2\13\13\0\6\13\1\0\1\5\10\13"+ - "\1\5\4\0\1\5\4\13\1\100\1\13\1\5\1\0"+ - "\1\5\3\13\1\331\1\13\1\332\5\13\1\0\3\13"+ - "\2\0\1\13\1\0\2\13\13\0\6\13\1\0\1\5"+ - "\2\13\1\333\5\13\1\5\4\0\1\5\1\334\3\13"+ - "\1\100\1\13\1\5\1\0\1\5\13\13\1\0\3\13"+ - "\2\0\1\13\1\0\2\13\13\0\6\13\1\0\1\5"+ - "\10\13\1\5\4\0\1\5\4\13\1\100\1\13\1\5"+ - "\1\0\1\5\1\335\12\13\1\0\3\13\2\0\1\13"+ - "\1\0\2\13\13\0\6\13\1\0\1\5\10\13\1\5"+ - "\4\0\1\5\4\13\1\100\1\13\1\5\1\0\1\5"+ - "\13\13\1\0\3\13\2\0\1\13\1\0\2\13\13\0"+ - "\6\13\1\0\1\5\1\13\1\270\6\13\1\5\4\0"+ - "\1\5\4\13\1\100\1\13\1\5\1\0\1\5\5\13"+ - "\1\336\5\13\1\0\3\13\2\0\1\13\1\0\2\13"+ - "\13\0\6\13\1\0\1\5\10\13\1\5\4\0\1\5"+ - "\4\13\1\100\1\13\1\5\1\0\1\5\13\13\1\0"+ - "\3\13\2\0\1\13\1\0\2\13\13\0\4\13\1\137"+ - "\1\13\1\0\1\5\10\13\1\5\4\0\1\5\4\13"+ - "\1\100\1\13\1\5\1\0\1\5\13\13\1\0\3\13"+ - "\2\0\1\13\1\0\2\13\13\0\6\13\1\0\1\5"+ - "\4\13\1\337\3\13\1\5\4\0\1\5\4\13\1\100"+ - "\1\13\1\5\1\0\1\5\1\137\12\13\1\0\3\13"+ - "\2\0\1\13\1\0\2\13\13\0\6\13\1\0\1\5"+ - "\10\13\1\5\4\0\1\5\4\13\1\100\1\13\1\5"+ - "\1\0\1\5\2\13\1\340\10\13\1\0\3\13\2\0"+ - "\1\13\1\0\2\13\13\0\6\13\1\0\1\5\10\13"+ - "\1\5\4\0\1\5\4\13\1\100\1\13\1\5\1\0"+ - "\1\5\13\13\1\0\3\13\2\0\1\13\1\0\2\13"+ - "\13\0\6\13\1\0\1\5\6\13\1\341\1\13\1\5"+ - "\4\0\1\5\4\13\1\100\1\13\1\5\1\0\1\5"+ - "\2\13\1\342\10\13\1\0\3\13\2\0\1\13\1\0"+ - "\2\13\13\0\6\13\1\0\1\5\10\13\1\5\4\0"+ - "\1\5\4\13\1\100\1\13\1\5\1\0\1\5\13\13"+ - "\1\0\3\13\2\0\1\13\1\0\2\13\13\0\1\13"+ - "\1\343\4\13\1\0\1\5\10\13\1\5\4\0\1\5"+ - "\4\13\1\100\1\13\1\5\1\0\1\5\1\344\12\13"+ - "\1\0\3\13\2\0\1\13\1\0\2\13\13\0\6\13"+ - "\1\0\1\5\10\13\1\5\4\0\1\5\4\13\1\100"+ - "\1\13\1\5\1\0\1\5\13\13\1\0\3\13\2\0"+ - "\1\13\1\0\1\345\1\13\13\0\6\13\1\0\1\5"+ - "\10\13\1\5\4\0\1\5\4\13\1\100\1\13\1\5"+ - "\1\0\1\5\13\13\1\0\3\13\2\0\1\13\1\0"+ - "\2\13\13\0\1\13\1\346\1\13\1\347\2\13\1\0"+ - "\1\5\10\13\1\5\4\0\1\5\4\13\1\100\1\13"+ - "\1\5\1\0\1\5\1\13\1\350\11\13\1\0\3\13"+ - "\2\0\1\13\1\0\2\13\13\0\6\13\1\0\1\5"+ - "\10\13\1\5\4\0\1\5\4\13\1\100\1\13\1\5"+ - "\1\0\1\5\1\351\5\13\1\265\4\13\1\0\3\13"+ - "\2\0\1\13\1\0\2\13\13\0\6\13\1\0\1\5"+ - "\10\13\1\5\4\0\1\5\4\13\1\100\1\13\1\5"+ - "\1\0\1\5\4\13\1\352\6\13\1\0\3\13\2\0"+ - "\1\13\1\0\2\13\13\0\6\13\1\0\1\5\10\13"+ - "\1\5\4\0\1\5\4\13\1\100\1\13\1\5\1\0"+ - "\1\5\13\13\1\0\3\13\2\0\1\13\1\0\2\13"+ - "\13\0\2\13\1\353\3\13\1\0\1\5\10\13\1\5"+ - "\4\0\1\5\4\13\1\100\1\13\1\5\1\0\1\5"+ - "\2\13\1\354\1\13\1\355\6\13\1\0\3\13\2\0"+ - "\1\13\1\0\2\13\13\0\6\13\1\0\1\5\10\13"+ - "\70\0\1\356\32\0\1\357\135\0\1\360\32\0\1\361"+ - "\147\0\1\362\32\0\1\363\135\0\1\364\32\0\1\365"+ - "\140\0\1\366\36\0\1\367\75\0\1\370\3\0\1\371"+ - "\34\0\1\372\75\0\1\373\37\0\1\374\77\0\1\255"+ - "\77\0\1\375\53\0\1\234\1\0\75\234\1\5\4\0"+ - "\1\5\4\13\1\100\1\13\1\5\1\0\1\5\13\13"+ - "\1\0\3\13\2\0\1\13\1\0\2\13\13\0\2\13"+ - "\1\300\3\13\1\0\1\5\10\13\1\5\4\0\1\5"+ - "\4\13\1\100\1\13\1\5\1\0\1\5\13\13\1\0"+ - "\3\13\2\0\1\13\1\0\2\13\13\0\2\13\1\376"+ - "\3\13\1\0\1\5\10\13\1\5\4\0\1\5\4\13"+ - "\1\100\1\13\1\5\1\0\1\5\1\377\12\13\1\0"+ - "\3\13\2\0\1\13\1\0\2\13\13\0\6\13\1\0"+ - "\1\5\10\13\1\5\4\0\1\5\4\13\1\100\1\13"+ - "\1\5\1\0\1\5\4\13\1\u0100\6\13\1\0\3\13"+ - "\2\0\1\13\1\0\2\13\13\0\6\13\1\0\1\5"+ - "\10\13\1\5\4\0\1\5\4\13\1\100\1\13\1\5"+ - "\1\0\1\5\13\13\1\0\3\13\2\0\1\13\1\0"+ - "\2\13\13\0\6\13\1\0\1\5\1\u0101\7\13\1\105"+ - "\4\0\4\105\1\244\1\0\2\105\1\0\4\105\1\110"+ - "\5\105\1\244\1\105\1\0\1\105\2\110\2\0\1\105"+ - "\1\0\2\105\13\0\1\110\5\105\1\0\5\105\1\110"+ - "\3\105\11\0\1\244\16\0\1\244\46\0\1\5\4\0"+ - "\5\5\1\0\2\5\1\0\14\5\1\0\3\5\2\0"+ - "\1\5\1\0\2\5\13\0\1\u0102\5\5\1\0\12\5"+ - "\4\0\5\5\1\0\2\5\1\0\14\5\1\0\3\5"+ - "\2\0\1\5\1\0\2\5\13\0\5\5\1\u0103\1\0"+ - "\12\5\4\0\5\5\1\0\2\5\1\0\2\5\1\u0104"+ - "\11\5\1\0\3\5\2\0\1\5\1\0\2\5\13\0"+ - "\6\5\1\0\12\5\4\0\5\5\1\0\2\5\1\0"+ - "\7\5\1\u0105\4\5\1\0\3\5\2\0\1\5\1\0"+ - "\2\5\13\0\1\5\1\121\4\5\1\0\12\5\4\0"+ - "\5\5\1\0\2\5\1\0\14\5\1\0\3\5\2\0"+ - "\1\5\1\0\2\5\13\0\1\u0106\5\5\1\0\12\5"+ - "\4\0\5\5\1\0\2\5\1\0\14\5\1\0\3\5"+ - "\2\0\1\5\1\0\2\5\13\0\2\5\1\u0105\3\5"+ - "\1\0\12\5\4\0\5\5\1\0\2\5\1\0\4\5"+ - "\1\117\7\5\1\0\3\5\2\0\1\5\1\0\2\5"+ - "\13\0\6\5\1\0\11\5\1\255\1\0\75\255\1\5"+ - "\4\0\5\5\1\0\2\5\1\0\2\5\1\u0107\11\5"+ - "\1\0\3\5\2\0\1\5\1\0\2\5\13\0\6\5"+ - "\1\0\12\5\4\0\1\5\4\13\1\100\1\13\1\5"+ - "\1\0\1\5\2\13\1\u0108\10\13\1\0\3\13\2\0"+ - "\1\13\1\0\2\13\13\0\6\13\1\0\1\5\10\13"+ - "\1\5\4\0\1\5\4\13\1\100\1\13\1\5\1\0"+ - "\1\5\13\13\1\0\3\13\2\0\1\13\1\0\2\13"+ - "\13\0\3\13\1\172\2\13\1\0\1\5\10\13\1\5"+ - "\4\0\1\5\4\13\1\100\1\13\1\5\1\0\1\5"+ - "\6\13\1\137\4\13\1\0\3\13\2\0\1\13\1\0"+ - "\2\13\13\0\6\13\1\0\1\5\10\13\1\5\4\0"+ - "\1\5\4\13\1\100\1\13\1\5\1\0\1\5\2\13"+ - "\1\u0109\10\13\1\0\3\13\2\0\1\13\1\0\2\13"+ - "\13\0\6\13\1\0\1\5\10\13\1\5\4\0\1\5"+ - "\1\u010a\3\13\1\100\1\13\1\5\1\0\1\5\13\13"+ - "\1\0\3\13\2\0\1\13\1\0\2\13\13\0\6\13"+ - "\1\0\1\5\10\13\1\5\4\0\1\5\4\13\1\100"+ - "\1\13\1\5\1\0\1\5\13\13\1\0\3\13\2\0"+ - "\1\13\1\0\2\13\13\0\1\u010b\5\13\1\0\1\5"+ - "\10\13\1\5\4\0\1\5\4\13\1\100\1\13\1\5"+ - "\1\0\1\5\2\13\1\137\10\13\1\0\3\13\2\0"+ - "\1\13\1\0\2\13\13\0\6\13\1\0\1\5\10\13"+ - "\1\5\4\0\1\5\4\13\1\100\1\13\1\5\1\0"+ - "\1\5\13\13\1\0\3\13\2\0\1\13\1\0\2\13"+ - "\13\0\2\13\1\174\3\13\1\0\1\5\10\13\1\5"+ - "\4\0\1\5\4\13\1\100\1\13\1\5\1\0\1\5"+ - "\2\13\1\u010a\10\13\1\0\3\13\2\0\1\13\1\0"+ - "\2\13\13\0\6\13\1\0\1\5\10\13\1\5\4\0"+ - "\1\5\4\13\1\100\1\13\1\5\1\0\1\5\5\13"+ - "\1\u010c\5\13\1\0\3\13\2\0\1\13\1\0\2\13"+ - "\13\0\6\13\1\0\1\5\10\13\1\5\4\0\1\5"+ - "\4\13\1\100\1\13\1\5\1\0\1\5\13\13\1\0"+ - "\3\13\2\0\1\13\1\0\2\13\13\0\6\13\1\0"+ - "\1\5\4\13\1\137\3\13\1\5\4\0\1\5\4\13"+ - "\1\100\1\13\1\5\1\0\1\5\6\13\1\257\4\13"+ - "\1\0\3\13\2\0\1\13\1\0\2\13\13\0\6\13"+ - "\1\0\1\5\10\13\1\5\4\0\1\5\4\13\1\100"+ - "\1\13\1\5\1\0\1\5\4\13\1\240\6\13\1\0"+ - "\3\13\2\0\1\13\1\0\2\13\13\0\6\13\1\0"+ - "\1\5\10\13\1\5\4\0\1\5\4\13\1\100\1\13"+ - "\1\5\1\0\1\5\2\13\1\320\10\13\1\0\3\13"+ - "\2\0\1\13\1\0\2\13\13\0\6\13\1\0\1\5"+ - "\10\13\1\5\4\0\1\5\4\13\1\100\1\13\1\5"+ - "\1\0\1\5\4\13\1\u010d\6\13\1\0\3\13\2\0"+ - "\1\13\1\0\2\13\13\0\6\13\1\0\1\5\10\13"+ - "\1\5\4\0\1\5\4\13\1\100\1\13\1\5\1\0"+ - "\1\5\2\13\1\u010e\10\13\1\0\3\13\2\0\1\13"+ - "\1\0\2\13\13\0\6\13\1\0\1\5\10\13\1\5"+ - "\4\0\1\5\4\13\1\100\1\13\1\5\1\0\1\5"+ - "\1\u010f\12\13\1\0\3\13\2\0\1\13\1\0\2\13"+ - "\13\0\6\13\1\0\1\5\10\13\1\5\4\0\1\5"+ - "\4\13\1\100\1\13\1\5\1\0\1\5\13\13\1\0"+ - "\3\13\2\0\1\13\1\0\2\13\13\0\5\13\1\377"+ - "\1\0\1\5\10\13\1\5\4\0\1\5\4\13\1\100"+ - "\1\13\1\5\1\0\1\5\13\13\1\0\3\13\2\0"+ - "\1\13\1\0\2\13\13\0\6\13\1\0\1\5\3\13"+ - "\1\137\4\13\1\5\4\0\1\5\1\u0110\3\13\1\100"+ - "\1\13\1\5\1\0\1\5\13\13\1\0\3\13\2\0"+ - "\1\13\1\0\2\13\13\0\1\13\1\237\4\13\1\0"+ - "\1\5\10\13\1\5\4\0\1\5\4\13\1\100\1\13"+ - "\1\5\1\0\1\5\1\u0111\12\13\1\0\3\13\2\0"+ - "\1\13\1\0\2\13\13\0\6\13\1\0\1\5\2\13"+ - "\1\u0112\5\13\1\5\4\0\1\5\4\13\1\100\1\13"+ - "\1\5\1\0\1\5\5\13\1\274\5\13\1\0\3\13"+ - "\2\0\1\13\1\0\2\13\13\0\6\13\1\0\1\5"+ - "\10\13\1\5\4\0\1\5\4\13\1\100\1\13\1\5"+ - "\1\0\1\5\1\351\12\13\1\0\3\13\2\0\1\13"+ - "\1\0\2\13\13\0\6\13\1\0\1\5\10\13\1\5"+ - "\4\0\1\5\4\13\1\100\1\13\1\5\1\0\1\5"+ - "\1\13\1\240\11\13\1\0\3\13\2\0\1\13\1\0"+ - "\2\13\13\0\6\13\1\0\1\5\10\13\1\105\4\0"+ - "\1\105\2\u0113\1\105\1\307\1\0\2\105\1\0\3\105"+ - "\3\307\1\u0114\1\105\1\u0114\2\307\1\105\1\0\1\307"+ - "\1\105\1\307\2\0\1\105\1\0\1\307\1\105\13\0"+ - "\1\307\5\105\1\0\3\105\1\307\5\105\1\310\1\0"+ - "\35\310\1\154\40\310\1\0\7\310\1\u0115\7\310\3\u0115"+ - "\3\310\2\u0115\2\310\1\u0115\1\310\1\u0115\1\310\1\154"+ - "\2\310\1\u0115\14\310\1\u0115\11\310\1\u0115\6\310\1\0"+ - "\7\310\1\u0116\7\310\3\u0116\3\310\2\u0116\2\310\1\u0116"+ - "\1\310\1\u0116\1\310\1\154\2\310\1\u0116\14\310\1\u0116"+ - "\11\310\1\u0116\5\310\37\0\1\311\37\0\1\310\1\0"+ - "\7\310\1\u0117\7\310\3\u0117\3\310\2\u0117\2\310\1\u0117"+ - "\1\310\1\u0117\1\310\1\154\2\310\1\u0117\14\310\1\u0117"+ - "\11\310\1\u0117\5\310\1\5\4\0\1\5\4\13\1\100"+ - "\1\13\1\5\1\0\1\5\1\u0118\12\13\1\0\3\13"+ - "\2\0\1\13\1\0\2\13\13\0\6\13\1\0\1\5"+ - "\10\13\1\5\4\0\1\5\4\13\1\100\1\13\1\5"+ - "\1\0\1\5\4\13\1\u0119\6\13\1\0\3\13\2\0"+ - "\1\13\1\0\2\13\13\0\6\13\1\0\1\5\10\13"+ - "\1\5\4\0\1\5\4\13\1\100\1\13\1\5\1\0"+ - "\1\5\13\13\1\0\3\13\2\0\1\13\1\0\2\13"+ - "\13\0\1\137\5\13\1\0\1\5\10\13\1\157\1\0"+ - "\102\157\1\321\3\157\1\u011a\7\157\3\u011a\3\157\2\u011a"+ - "\2\157\1\u011a\1\157\1\u011a\3\157\1\322\1\u011a\14\157"+ - "\1\u011a\11\157\1\u011a\12\157\1\321\3\157\1\u011b\7\157"+ - "\3\u011b\3\157\2\u011b\2\157\1\u011b\1\157\1\u011b\3\157"+ - "\1\322\1\u011b\14\157\1\u011b\11\157\1\u011b\12\157\1\321"+ - "\3\157\1\35\7\157\3\35\3\157\2\35\2\157\1\35"+ - "\1\157\1\35\3\157\1\322\1\35\14\157\1\35\11\157"+ - "\1\35\5\157\1\5\4\0\1\5\4\13\1\100\1\13"+ - "\1\5\1\0\1\5\4\13\1\301\6\13\1\0\3\13"+ - "\2\0\1\13\1\0\2\13\13\0\6\13\1\0\1\5"+ - "\10\13\1\5\4\0\1\5\4\13\1\100\1\13\1\5"+ - "\1\0\1\5\5\13\1\377\5\13\1\0\3\13\2\0"+ - "\1\13\1\0\2\13\13\0\6\13\1\0\1\5\10\13"+ - "\1\5\4\0\1\5\4\13\1\100\1\13\1\5\1\0"+ - "\1\5\2\13\1\377\10\13\1\0\3\13\2\0\1\13"+ - "\1\0\2\13\13\0\6\13\1\0\1\5\10\13\1\5"+ - "\4\0\1\5\4\13\1\100\1\13\1\5\1\0\1\5"+ - "\4\13\1\u011c\6\13\1\0\3\13\2\0\1\13\1\0"+ - "\2\13\13\0\6\13\1\0\1\5\10\13\1\5\4\0"+ - "\1\5\4\13\1\100\1\13\1\5\1\0\1\5\2\13"+ - "\1\u011d\10\13\1\0\3\13\2\0\1\13\1\0\2\13"+ - "\13\0\6\13\1\0\1\5\10\13\1\5\4\0\1\5"+ - "\4\13\1\100\1\13\1\5\1\0\1\5\13\13\1\0"+ - "\3\13\2\0\1\13\1\0\2\13\13\0\1\13\1\u011e"+ - "\4\13\1\0\1\5\10\13\1\5\4\0\1\5\4\13"+ - "\1\100\1\13\1\5\1\0\1\5\13\13\1\0\3\13"+ - "\2\0\1\13\1\0\1\u011f\1\13\13\0\6\13\1\0"+ - "\1\5\10\13\1\5\4\0\1\5\4\13\1\100\1\13"+ - "\1\5\1\0\1\5\2\13\1\u0120\10\13\1\0\3\13"+ - "\2\0\1\13\1\0\2\13\13\0\6\13\1\0\1\5"+ - "\10\13\1\5\4\0\1\5\4\13\1\100\1\13\1\5"+ - "\1\0\1\5\5\13\1\137\5\13\1\0\3\13\2\0"+ - "\1\13\1\0\2\13\13\0\6\13\1\0\1\5\10\13"+ - "\1\5\4\0\1\5\4\13\1\100\1\13\1\5\1\0"+ - "\1\5\2\13\1\u0121\10\13\1\0\3\13\2\0\1\13"+ - "\1\0\2\13\13\0\6\13\1\0\1\5\10\13\1\5"+ - "\4\0\1\5\4\13\1\100\1\13\1\5\1\0\1\5"+ - "\1\13\1\u0122\11\13\1\0\3\13\2\0\1\13\1\0"+ - "\2\13\13\0\6\13\1\0\1\5\10\13\1\5\4\0"+ - "\1\5\4\13\1\100\1\13\1\5\1\0\1\5\2\13"+ - "\1\u0110\10\13\1\0\3\13\2\0\1\13\1\0\2\13"+ - "\13\0\6\13\1\0\1\5\10\13\1\5\4\0\1\5"+ - "\4\13\1\100\1\13\1\5\1\0\1\5\1\13\1\u0123"+ - "\11\13\1\0\3\13\2\0\1\13\1\0\2\13\13\0"+ - "\6\13\1\0\1\5\10\13\1\5\4\0\1\5\4\13"+ - "\1\100\1\13\1\5\1\0\1\5\5\13\1\265\5\13"+ - "\1\0\3\13\2\0\1\13\1\0\2\13\13\0\6\13"+ - "\1\0\1\5\10\13\1\5\4\0\1\5\4\13\1\100"+ - "\1\13\1\5\1\0\1\5\13\13\1\0\3\13\2\0"+ - "\1\13\1\0\2\13\13\0\3\13\1\137\2\13\1\0"+ - "\1\5\10\13\1\5\4\0\1\5\4\13\1\100\1\13"+ - "\1\5\1\0\1\5\5\13\1\u0111\5\13\1\0\3\13"+ - "\2\0\1\13\1\0\2\13\13\0\6\13\1\0\1\5"+ - "\10\13\1\5\4\0\1\5\4\13\1\100\1\13\1\5"+ - "\1\0\1\5\13\13\1\0\3\13\2\0\1\u0124\1\0"+ - "\2\13\13\0\6\13\1\0\1\5\10\13\1\5\4\0"+ - "\1\5\4\13\1\100\1\13\1\5\1\0\1\5\1\u0125"+ - "\12\13\1\0\3\13\2\0\1\13\1\0\2\13\13\0"+ - "\6\13\1\0\1\5\10\13\1\5\4\0\1\5\4\13"+ - "\1\100\1\13\1\5\1\0\1\5\4\13\1\u0126\6\13"+ - "\1\0\3\13\2\0\1\13\1\0\2\13\13\0\6\13"+ - "\1\0\1\5\10\13\1\5\4\0\1\5\4\13\1\100"+ - "\1\13\1\5\1\0\1\5\13\13\1\0\3\13\2\0"+ - "\1\13\1\0\2\13\13\0\6\13\1\0\1\5\2\13"+ - "\1\u0127\5\13\1\5\4\0\1\5\4\13\1\100\1\13"+ - "\1\5\1\0\1\5\6\13\1\261\4\13\1\0\3\13"+ - "\2\0\1\13\1\0\2\13\13\0\6\13\1\0\1\5"+ - "\10\13\1\5\4\0\1\5\4\13\1\100\1\13\1\5"+ - "\1\0\1\5\1\u0128\5\13\1\174\4\13\1\0\3\13"+ - "\2\0\1\13\1\0\2\13\13\0\6\13\1\0\1\5"+ - "\10\13\1\5\4\0\1\5\4\13\1\100\1\13\1\5"+ - "\1\0\1\5\13\13\1\0\3\13\2\0\1\13\1\0"+ - "\2\13\13\0\6\13\1\0\1\5\2\13\1\u0129\5\13"+ - "\1\5\4\0\1\5\4\13\1\100\1\13\1\5\1\0"+ - "\1\5\1\13\1\377\11\13\1\0\3\13\2\0\1\13"+ - "\1\0\2\13\13\0\6\13\1\0\1\5\10\13\44\0"+ - "\1\u012a\53\0\1\356\113\0\1\u012b\130\0\1\u012c\52\0"+ - "\1\u012d\53\0\1\362\113\0\1\u012e\130\0\1\u012f\65\0"+ - "\1\u0130\103\0\1\u0131\32\0\1\u0132\103\0\1\u0133\32\0"+ - "\1\232\75\0\1\u0134\100\0\1\u0133\37\0\1\230\74\0"+ - "\1\u0135\56\0\1\5\4\0\1\5\4\13\1\100\1\13"+ - "\1\5\1\0\1\5\13\13\1\0\3\13\2\0\1\13"+ - "\1\0\2\13\13\0\5\13\1\137\1\0\1\5\10\13"+ - "\1\5\4\0\1\5\4\13\1\100\1\13\1\5\1\0"+ - "\1\5\3\13\1\265\7\13\1\0\3\13\2\0\1\13"+ - "\1\0\2\13\13\0\6\13\1\0\1\5\10\13\1\5"+ - "\4\0\1\5\4\13\1\100\1\13\1\5\1\0\1\5"+ - "\2\13\1\354\10\13\1\0\3\13\2\0\1\13\1\0"+ - "\2\13\13\0\6\13\1\0\1\5\10\13\1\5\4\0"+ - "\5\5\1\0\2\5\1\0\3\5\1\121\10\5\1\0"+ - "\3\5\2\0\1\5\1\0\2\5\13\0\6\5\1\0"+ - "\12\5\4\0\5\5\1\0\2\5\1\0\14\5\1\0"+ - "\3\5\2\0\1\5\1\0\2\5\13\0\1\5\1\u0136"+ - "\4\5\1\0\12\5\4\0\5\5\1\0\2\5\1\0"+ - "\14\5\1\0\3\5\2\0\1\5\1\0\2\5\13\0"+ - "\3\5\1\u0137\2\5\1\0\12\5\4\0\5\5\1\0"+ - "\2\5\1\0\3\5\1\255\10\5\1\0\3\5\2\0"+ - "\1\5\1\0\2\5\13\0\6\5\1\0\12\5\4\0"+ - "\5\5\1\0\2\5\1\0\2\5\1\115\11\5\1\0"+ - "\3\5\2\0\1\5\1\0\2\5\13\0\1\5\1\121"+ - "\4\5\1\0\12\5\4\0\5\5\1\0\2\5\1\0"+ - "\14\5\1\0\3\5\2\0\1\5\1\0\2\5\13\0"+ - "\2\5\1\u0138\3\5\1\0\12\5\4\0\1\5\4\13"+ - "\1\100\1\13\1\5\1\0\1\5\13\13\1\0\3\13"+ - "\2\0\1\13\1\0\2\13\13\0\3\13\1\u0139\2\13"+ - "\1\0\1\5\10\13\1\5\4\0\1\5\4\13\1\100"+ - "\1\13\1\5\1\0\1\5\1\13\1\u013a\11\13\1\0"+ - "\3\13\2\0\1\13\1\0\2\13\13\0\6\13\1\0"+ - "\1\5\10\13\1\5\4\0\1\5\4\13\1\100\1\13"+ - "\1\5\1\0\1\5\13\13\1\0\3\13\2\0\1\13"+ - "\1\0\2\13\13\0\3\13\1\u013b\2\13\1\0\1\5"+ - "\10\13\1\5\4\0\1\5\4\13\1\100\1\13\1\5"+ - "\1\0\1\5\13\13\1\0\3\13\2\0\1\13\1\0"+ - "\2\13\13\0\1\13\1\u013c\4\13\1\0\1\5\10\13"+ - "\1\5\4\0\1\5\4\13\1\100\1\13\1\5\1\0"+ - "\1\5\5\13\1\u013d\5\13\1\0\3\13\2\0\1\13"+ - "\1\0\2\13\13\0\6\13\1\0\1\5\10\13\1\5"+ - "\4\0\1\5\4\13\1\100\1\13\1\5\1\0\1\5"+ - "\4\13\1\351\6\13\1\0\3\13\2\0\1\13\1\0"+ - "\2\13\13\0\6\13\1\0\1\5\10\13\1\5\4\0"+ - "\1\5\4\13\1\100\1\13\1\5\1\0\1\5\1\13"+ - "\1\u013e\11\13\1\0\3\13\2\0\1\13\1\0\2\13"+ - "\13\0\6\13\1\0\1\5\10\13\1\5\4\0\1\5"+ - "\4\13\1\100\1\13\1\5\1\0\1\5\13\13\1\0"+ - "\3\13\2\0\1\13\1\0\2\13\13\0\6\13\1\0"+ - "\1\5\2\13\1\174\5\13\1\5\4\0\1\5\4\13"+ - "\1\100\1\13\1\5\1\0\1\5\13\13\1\0\3\13"+ - "\2\0\1\13\1\0\2\13\13\0\1\13\1\u013f\4\13"+ - "\1\0\1\5\10\13\1\5\4\0\1\5\4\13\1\100"+ - "\1\13\1\5\1\0\1\5\13\13\1\0\3\13\2\0"+ - "\1\13\1\0\2\13\13\0\6\13\1\0\1\5\3\13"+ - "\1\u0140\4\13\1\105\4\0\5\105\1\0\2\105\1\0"+ - "\6\105\1\u0141\1\105\1\u0141\3\105\1\0\3\105\2\0"+ - "\1\105\1\0\2\105\13\0\6\105\1\0\12\105\4\0"+ - "\1\105\2\u0141\2\105\1\0\2\105\1\0\14\105\1\0"+ - "\3\105\2\0\1\105\1\0\2\105\13\0\6\105\1\0"+ - "\11\105\1\310\1\0\7\310\1\u0142\7\310\3\u0142\3\310"+ - "\2\u0142\2\310\1\u0142\1\310\1\u0142\1\310\1\154\2\310"+ - "\1\u0142\14\310\1\u0142\11\310\1\u0142\6\310\1\0\7\310"+ - "\1\u0143\7\310\3\u0143\3\310\2\u0143\2\310\1\u0143\1\310"+ - "\1\u0143\1\310\1\154\2\310\1\u0143\14\310\1\u0143\11\310"+ - "\1\u0143\6\310\1\0\7\310\1\u0144\7\310\3\u0144\3\310"+ - "\2\u0144\2\310\1\u0144\1\310\1\u0144\1\310\1\311\2\310"+ - "\1\u0144\14\310\1\u0144\11\310\1\u0144\5\310\1\5\4\0"+ - "\1\5\1\u0145\3\13\1\100\1\13\1\5\1\0\1\5"+ - "\13\13\1\0\3\13\2\0\1\13\1\0\2\13\13\0"+ - "\6\13\1\0\1\5\10\13\1\5\4\0\1\5\4\13"+ - "\1\100\1\13\1\5\1\0\1\5\1\200\12\13\1\0"+ - "\3\13\2\0\1\13\1\0\2\13\13\0\6\13\1\0"+ - "\1\5\10\13\5\157\1\321\3\157\1\u0146\7\157\3\u0146"+ - "\3\157\2\u0146\2\157\1\u0146\1\157\1\u0146\3\157\1\322"+ - "\1\u0146\14\157\1\u0146\11\157\1\u0146\12\157\1\321\3\157"+ - "\1\u0147\7\157\3\u0147\3\157\2\u0147\2\157\1\u0147\1\157"+ - "\1\u0147\3\157\1\322\1\u0147\14\157\1\u0147\11\157\1\u0147"+ - "\5\157\1\5\4\0\1\5\1\u0148\3\13\1\100\1\13"+ - "\1\5\1\0\1\5\13\13\1\0\3\13\2\0\1\13"+ - "\1\0\2\13\13\0\6\13\1\0\1\5\10\13\1\5"+ - "\4\0\1\5\4\13\1\100\1\13\1\5\1\0\1\5"+ - "\13\13\1\0\3\13\2\0\1\13\1\0\2\13\13\0"+ - "\5\13\1\u0124\1\0\1\5\10\13\1\5\4\0\1\5"+ - "\4\13\1\100\1\13\1\5\1\0\1\5\13\13\1\0"+ - "\3\13\2\0\1\13\1\0\2\13\13\0\6\13\1\0"+ - "\1\5\4\13\1\u0145\3\13\1\5\4\0\1\5\4\13"+ - "\1\100\1\13\1\5\1\0\1\5\5\13\1\330\5\13"+ - "\1\0\3\13\2\0\1\13\1\0\2\13\13\0\6\13"+ - "\1\0\1\5\10\13\1\5\4\0\1\5\4\13\1\100"+ - "\1\13\1\5\1\0\1\5\1\13\1\u0149\11\13\1\0"+ - "\3\13\2\0\1\13\1\0\2\13\13\0\6\13\1\0"+ - "\1\5\10\13\1\5\4\0\1\5\4\13\1\100\1\13"+ - "\1\5\1\0\1\5\6\13\1\u014a\4\13\1\0\3\13"+ - "\2\0\1\13\1\0\2\13\13\0\6\13\1\0\1\5"+ - "\10\13\1\5\4\0\1\5\4\13\1\100\1\13\1\5"+ - "\1\0\1\5\1\13\1\u014b\11\13\1\0\3\13\2\0"+ - "\1\13\1\0\2\13\13\0\6\13\1\0\1\5\10\13"+ - "\1\5\4\0\1\5\4\13\1\100\1\13\1\5\1\0"+ - "\1\5\4\13\1\u014c\6\13\1\0\3\13\2\0\1\13"+ - "\1\0\2\13\13\0\6\13\1\0\1\5\10\13\1\5"+ - "\4\0\1\5\4\13\1\100\1\13\1\5\1\0\1\5"+ - "\4\13\1\u014d\6\13\1\0\3\13\2\0\1\13\1\0"+ - "\2\13\13\0\6\13\1\0\1\5\10\13\1\5\4\0"+ - "\1\5\4\13\1\100\1\13\1\5\1\0\1\5\2\13"+ - "\1\u014e\10\13\1\0\3\13\2\0\1\13\1\0\2\13"+ - "\13\0\6\13\1\0\1\5\10\13\1\5\4\0\1\5"+ - "\4\13\1\100\1\13\1\5\1\0\1\5\13\13\1\0"+ - "\3\13\2\0\1\13\1\0\2\13\13\0\6\13\1\0"+ - "\1\5\4\13\1\261\3\13\1\5\4\0\1\5\4\13"+ - "\1\100\1\13\1\5\1\0\1\5\13\13\1\0\3\13"+ - "\2\0\1\13\1\0\2\13\13\0\6\13\1\0\1\5"+ - "\1\137\7\13\1\5\4\0\1\5\4\13\1\100\1\13"+ - "\1\5\1\0\1\5\13\13\1\0\3\13\2\0\1\13"+ - "\1\0\2\13\13\0\1\13\1\u014f\4\13\1\0\1\5"+ - "\10\13\1\5\4\0\1\5\4\13\1\100\1\13\1\5"+ - "\1\0\1\5\13\13\1\0\3\13\2\0\1\13\1\0"+ - "\2\13\13\0\6\13\1\0\1\5\3\13\1\274\4\13"+ - "\3\0\1\u0150\76\0\1\u012b\1\u0151\1\0\4\u012b\3\u0151"+ - "\1\0\1\u0151\13\u012b\1\u0151\3\u012b\2\u0151\1\u012b\1\0"+ - "\2\u012b\3\u0151\2\0\2\u0151\3\0\1\u0151\6\u012b\1\u0151"+ - "\11\u012b\25\0\1\356\16\0\1\u012a\35\0\1\u0152\76\0"+ - "\1\u012e\1\u0153\1\0\4\u012e\3\u0153\1\0\1\u0153\13\u012e"+ - "\1\u0153\3\u012e\2\u0153\1\u012e\1\0\2\u012e\3\u0153\2\0"+ - "\2\u0153\3\0\1\u0153\6\u012e\1\u0153\11\u012e\25\0\1\362"+ - "\16\0\1\u012d\53\0\1\232\135\0\1\u0154\100\0\1\u0155"+ - "\35\0\1\255\75\0\1\226\37\0\1\232\77\0\1\u0156"+ - "\15\0\1\5\4\0\5\5\1\0\2\5\1\0\14\5"+ - "\1\0\3\5\2\0\1\5\1\0\2\5\13\0\3\5"+ - "\1\u0157\2\5\1\0\12\5\4\0\5\5\1\0\2\5"+ - "\1\0\2\5\1\255\11\5\1\0\3\5\2\0\1\5"+ - "\1\0\2\5\13\0\6\5\1\0\12\5\4\0\5\5"+ - "\1\0\2\5\1\0\14\5\1\0\3\5\2\0\1\5"+ - "\1\0\2\5\13\0\1\5\1\u0158\4\5\1\0\12\5"+ - "\4\0\1\5\4\13\1\100\1\13\1\5\1\0\1\5"+ - "\3\13\1\137\7\13\1\0\3\13\2\0\1\13\1\0"+ - "\2\13\13\0\6\13\1\0\1\5\10\13\1\5\4\0"+ - "\1\5\4\13\1\100\1\13\1\5\1\0\1\5\13\13"+ - "\1\0\3\13\2\0\1\13\1\0\2\13\13\0\2\13"+ - "\1\137\3\13\1\0\1\5\10\13\1\5\4\0\1\5"+ - "\4\13\1\100\1\13\1\5\1\0\1\5\13\13\1\0"+ - "\3\13\2\0\1\13\1\0\2\13\13\0\2\13\1\u013d"+ - "\3\13\1\0\1\5\10\13\1\5\4\0\1\5\4\13"+ - "\1\100\1\13\1\5\1\0\1\5\13\13\1\0\3\13"+ - "\2\0\1\13\1\0\2\13\13\0\6\13\1\0\1\5"+ - "\2\13\1\u0159\5\13\1\5\4\0\1\5\4\13\1\100"+ - "\1\13\1\5\1\0\1\5\5\13\1\u015a\5\13\1\0"+ - "\3\13\2\0\1\13\1\0\2\13\13\0\6\13\1\0"+ - "\1\5\10\13\1\5\4\0\1\5\4\13\1\100\1\13"+ - "\1\5\1\0\1\5\4\13\1\u0110\6\13\1\0\3\13"+ - "\2\0\1\13\1\0\2\13\13\0\6\13\1\0\1\5"+ - "\10\13\1\5\4\0\1\5\4\13\1\100\1\13\1\5"+ - "\1\0\1\5\13\13\1\0\3\13\2\0\1\13\1\0"+ - "\2\13\13\0\6\13\1\0\1\5\2\13\1\137\5\13"+ - "\1\5\4\0\1\5\4\13\1\100\1\13\1\5\1\0"+ - "\1\5\4\13\1\u015b\6\13\1\0\3\13\2\0\1\13"+ - "\1\0\2\13\13\0\6\13\1\0\1\5\10\13\1\310"+ - "\1\0\7\310\1\u015c\7\310\3\u015c\3\310\2\u015c\2\310"+ - "\1\u015c\1\310\1\u015c\1\310\1\154\2\310\1\u015c\14\310"+ - "\1\u015c\11\310\1\u015c\6\310\1\0\7\310\1\u015d\7\310"+ - "\3\u015d\3\310\2\u015d\2\310\1\u015d\1\310\1\u015d\1\310"+ - "\1\154\2\310\1\u015d\14\310\1\u015d\11\310\1\u015d\6\310"+ - "\1\0\7\310\1\u015e\7\310\3\u015e\3\310\2\u015e\2\310"+ - "\1\u015e\1\310\1\u015e\1\310\1\311\2\310\1\u015e\14\310"+ - "\1\u015e\11\310\1\u015e\5\310\1\5\4\0\1\5\4\13"+ - "\1\100\1\13\1\5\1\0\1\5\4\13\1\336\6\13"+ - "\1\0\3\13\2\0\1\13\1\0\2\13\13\0\6\13"+ - "\1\0\1\5\10\13\5\157\1\321\3\157\1\325\7\157"+ - "\3\325\3\157\2\325\2\157\1\325\1\157\1\325\3\157"+ - "\1\322\1\325\14\157\1\325\11\157\1\325\12\157\1\321"+ - "\3\157\1\u015f\7\157\3\u015f\3\157\2\u015f\2\157\1\u015f"+ - "\1\157\1\u015f\3\157\1\322\1\u015f\14\157\1\u015f\11\157"+ - "\1\u015f\5\157\1\5\4\0\1\5\4\13\1\100\1\13"+ - "\1\5\1\0\1\5\5\13\1\174\5\13\1\0\3\13"+ - "\2\0\1\13\1\0\2\13\13\0\6\13\1\0\1\5"+ - "\10\13\1\5\4\0\1\5\4\13\1\100\1\13\1\5"+ - "\1\0\1\5\3\13\1\u0160\7\13\1\0\3\13\2\0"+ - "\1\13\1\0\2\13\13\0\2\13\1\u0145\3\13\1\0"+ - "\1\5\10\13\1\5\4\0\1\5\4\13\1\100\1\13"+ - "\1\5\1\0\1\5\13\13\1\0\3\13\2\0\1\13"+ - "\1\0\2\13\13\0\6\13\1\0\1\5\1\13\1\u0160"+ - "\6\13\1\5\4\0\1\5\4\13\1\100\1\13\1\5"+ - "\1\0\1\5\13\13\1\0\3\13\2\0\1\13\1\0"+ - "\2\13\13\0\1\13\1\u0161\4\13\1\0\1\5\10\13"+ - "\1\5\4\0\1\5\4\13\1\100\1\13\1\5\1\0"+ - "\1\5\1\u0162\12\13\1\0\3\13\2\0\1\13\1\0"+ - "\2\13\13\0\6\13\1\0\1\5\10\13\1\5\4\0"+ - "\1\5\4\13\1\100\1\13\1\5\1\0\1\5\1\265"+ - "\12\13\1\0\3\13\2\0\1\13\1\0\2\13\13\0"+ - "\6\13\1\0\1\5\10\13\1\5\4\0\1\5\4\13"+ - "\1\100\1\13\1\5\1\0\1\5\13\13\1\0\3\13"+ - "\2\0\1\13\1\0\2\13\13\0\6\13\1\0\1\5"+ - "\2\13\1\u0163\5\13\1\5\4\0\1\5\4\13\1\100"+ - "\1\13\1\5\1\0\1\5\13\13\1\0\3\13\2\0"+ - "\1\13\1\0\2\13\13\0\2\13\1\u0164\3\13\1\0"+ - "\1\5\10\13\3\0\1\u012b\76\0\1\u012e\155\0\1\u0165"+ - "\34\0\1\255\136\0\1\u0166\16\0\1\5\4\0\5\5"+ - "\1\0\2\5\1\0\14\5\1\0\3\5\2\0\1\5"+ - "\1\0\2\5\13\0\2\5\1\255\3\5\1\0\12\5"+ - "\4\0\5\5\1\0\2\5\1\0\14\5\1\0\3\5"+ - "\2\0\1\5\1\0\2\5\13\0\2\5\1\u0167\3\5"+ - "\1\0\12\5\4\0\1\5\4\13\1\100\1\13\1\5"+ - "\1\0\1\5\13\13\1\0\3\13\2\0\1\13\1\0"+ - "\2\13\13\0\1\13\1\174\4\13\1\0\1\5\10\13"+ - "\1\5\4\0\1\5\4\13\1\100\1\13\1\5\1\0"+ - "\1\5\13\13\1\0\3\13\2\0\1\13\1\0\2\13"+ - "\13\0\6\13\1\0\1\5\5\13\1\137\2\13\1\5"+ - "\4\0\1\5\4\13\1\100\1\13\1\5\1\0\1\5"+ - "\5\13\1\u0168\5\13\1\0\3\13\2\0\1\13\1\0"+ - "\2\13\13\0\6\13\1\0\1\5\10\13\1\310\1\0"+ - "\7\310\1\152\7\310\3\152\3\310\2\152\2\310\1\152"+ - "\1\310\1\152\1\310\1\154\2\310\1\152\14\310\1\152"+ - "\11\310\1\152\6\310\1\0\7\310\1\312\7\310\3\312"+ - "\3\310\2\312\2\310\1\312\1\310\1\312\1\310\1\154"+ - "\2\310\1\312\14\310\1\312\11\310\1\312\6\310\1\0"+ - "\7\310\1\152\7\310\3\152\3\310\2\152\2\310\1\152"+ - "\1\310\1\152\1\310\1\311\2\310\1\152\14\310\1\152"+ - "\11\310\1\152\5\310\5\157\1\321\3\157\1\323\7\157"+ - "\3\323\3\157\2\323\2\157\1\323\1\157\1\323\3\157"+ - "\1\322\1\323\14\157\1\323\11\157\1\323\5\157\1\5"+ - "\4\0\1\5\4\13\1\100\1\13\1\5\1\0\1\5"+ - "\4\13\1\u0169\6\13\1\0\3\13\2\0\1\13\1\0"+ - "\2\13\13\0\6\13\1\0\1\5\10\13\1\5\4\0"+ - "\1\5\4\13\1\100\1\13\1\5\1\0\1\5\13\13"+ - "\1\0\3\13\2\0\1\13\1\0\2\13\13\0\1\265"+ - "\5\13\1\0\1\5\10\13\1\5\4\0\1\5\4\13"+ - "\1\100\1\13\1\5\1\0\1\5\13\13\1\0\3\13"+ - "\2\0\1\13\1\0\2\13\13\0\3\13\1\u016a\2\13"+ - "\1\0\1\5\10\13\1\5\4\0\1\5\4\13\1\100"+ - "\1\13\1\5\1\0\1\5\1\274\12\13\1\0\3\13"+ - "\2\0\1\13\1\0\2\13\13\0\6\13\1\0\1\5"+ - "\10\13\1\5\4\0\1\5\1\265\3\13\1\100\1\13"+ - "\1\5\1\0\1\5\13\13\1\0\3\13\2\0\1\13"+ - "\1\0\2\13\13\0\6\13\1\0\1\5\10\13\61\0"+ - "\1\255\76\0\1\u016b\15\0\1\5\4\0\5\5\1\0"+ - "\2\5\1\0\14\5\1\0\3\5\2\0\1\5\1\0"+ - "\2\5\13\0\5\5\1\255\1\0\12\5\4\0\1\5"+ - "\4\13\1\100\1\13\1\5\1\0\1\5\5\13\1\u016c"+ - "\5\13\1\0\3\13\2\0\1\13\1\0\2\13\13\0"+ - "\6\13\1\0\1\5\10\13\1\5\4\0\1\5\4\13"+ - "\1\100\1\13\1\5\1\0\1\5\13\13\1\0\3\13"+ - "\2\0\1\13\1\0\2\13\13\0\6\13\1\0\1\5"+ - "\2\13\1\265\5\13\1\5\4\0\1\5\4\13\1\100"+ - "\1\13\1\5\1\0\1\5\1\13\1\137\11\13\1\0"+ - "\3\13\2\0\1\13\1\0\2\13\13\0\6\13\1\0"+ - "\1\5\10\13\64\0\1\255\12\0\1\5\4\0\1\5"+ - "\4\13\1\100\1\13\1\5\1\0\1\5\13\13\1\0"+ - "\3\13\2\0\1\13\1\0\2\13\13\0\3\13\1\u013f"+ - "\2\13\1\0\1\5\10\13"; - - private static int [] zzUnpackTrans() { - int [] result = new int[21231]; - int offset = 0; - offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackTrans(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - value--; - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /* error codes */ - private static final int ZZ_UNKNOWN_ERROR = 0; - private static final int ZZ_NO_MATCH = 1; - private static final int ZZ_PUSHBACK_2BIG = 2; - - /* error messages for the codes above */ - private static final String ZZ_ERROR_MSG[] = { - "Unkown internal scanner error", - "Error: could not match input", - "Error: pushback value was too large" - }; - - /** - * ZZ_ATTRIBUTE[aState] contains the attributes of state aState - */ - private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); - - private static final String ZZ_ATTRIBUTE_PACKED_0 = - "\2\0\3\1\1\11\10\1\1\11\17\1\1\11\4\1"+ - "\2\11\11\1\1\11\5\1\1\11\5\1\1\11\1\1"+ - "\1\0\1\1\1\11\12\1\1\0\1\11\40\1\1\11"+ - "\4\1\1\11\27\1\1\11\7\0\1\11\2\0\1\11"+ - "\7\0\1\1\1\11\7\1\1\0\43\1\1\11\10\1"+ - "\1\11\33\1\20\0\54\1\1\0\1\1\2\0\1\1"+ - "\7\0\32\1\7\0\16\1\2\0\4\1\1\0\1\1"; - - private static int [] zzUnpackAttribute() { - int [] result = new int[364]; - int offset = 0; - offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAttribute(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - /** the input device */ - private java.io.Reader zzReader; - - /** the current state of the DFA */ - private int zzState; - - /** the current lexical state */ - private int zzLexicalState = YYINITIAL; - - /** this buffer contains the current text to be matched and is - the source of the yytext() string */ - private char zzBuffer[]; - - /** the textposition at the last accepting state */ - private int zzMarkedPos; - - /** the current text position in the buffer */ - private int zzCurrentPos; - - /** startRead marks the beginning of the yytext() string in the buffer */ - private int zzStartRead; - - /** endRead marks the last character in the buffer, that has been read - from input */ - private int zzEndRead; - - /** zzAtEOF == true <=> the scanner is at the EOF */ - private boolean zzAtEOF; - - /* user code: */ - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public CSharpTokenMaker() { - super(); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addToken(int, int, int) - */ - private void addHyperlinkToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, true); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, int startOffset) { - super.addToken(array, start,end, tokenType, startOffset); - zzStartRead = zzMarkedPos; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { "//", null }; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - - // Start off in the proper state. - int state = Token.NULL; - switch (initialTokenType) { - case Token.LITERAL_STRING_DOUBLE_QUOTE: - state = VERBATIMSTRING; - start = text.offset; - break; - case Token.COMMENT_MULTILINE: - state = DELIMITEDCOMMENT; - start = text.offset; - break; - default: - state = Token.NULL; - } - - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(java.io.Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtEOF = false; - } - - - - - /** - * Creates a new scanner - * There is also a java.io.InputStream version of this constructor. - * - * @param in the java.io.Reader to read input from. - */ - public CSharpTokenMaker(java.io.Reader in) { - this.zzReader = in; - } - - /** - * Creates a new scanner. - * There is also java.io.Reader version of this constructor. - * - * @param in the java.io.Inputstream to read input from. - */ - public CSharpTokenMaker(java.io.InputStream in) { - this(new java.io.InputStreamReader(in)); - } - - /** - * Unpacks the compressed character translation table. - * - * @param packed the packed character translation table - * @return the unpacked character translation table - */ - private static char [] zzUnpackCMap(String packed) { - char [] map = new char[0x10000]; - int i = 0; /* index in packed string */ - int j = 0; /* index in unpacked array */ - while (i < 158) { - int count = packed.charAt(i++); - char value = packed.charAt(i++); - do map[j++] = value; while (--count > 0); - } - return map; - } - - - /** - * Closes the input stream. - */ - public final void yyclose() throws java.io.IOException { - zzAtEOF = true; /* indicate end of file */ - zzEndRead = zzStartRead; /* invalidate buffer */ - - if (zzReader != null) - zzReader.close(); - } - - - /** - * Returns the current lexical state. - */ - public final int yystate() { - return zzLexicalState; - } - - - /** - * Enters a new lexical state - * - * @param newState the new lexical state - */ - @Override -public final void yybegin(int newState) { - zzLexicalState = newState; - } - - - /** - * Returns the text matched by the current regular expression. - */ - public final String yytext() { - return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead ); - } - - - /** - * Returns the character at position pos from the - * matched text. - * - * It is equivalent to yytext().charAt(pos), but faster - * - * @param pos the position of the character to fetch. - * A value from 0 to yylength()-1. - * - * @return the character at position pos - */ - public final char yycharat(int pos) { - return zzBuffer[zzStartRead+pos]; - } - - - /** - * Returns the length of the matched text region. - */ - public final int yylength() { - return zzMarkedPos-zzStartRead; - } - - - /** - * Reports an error that occured while scanning. - * - * In a wellformed scanner (no or only correct usage of - * yypushback(int) and a match-all fallback rule) this method - * will only be called with things that "Can't Possibly Happen". - * If this method is called, something is seriously wrong - * (e.g. a JFlex bug producing a faulty scanner etc.). - * - * Usual syntax/scanner level error handling should be done - * in error fallback rules. - * - * @param errorCode the code of the errormessage to display - */ - private void zzScanError(int errorCode) { - String message; - try { - message = ZZ_ERROR_MSG[errorCode]; - } - catch (ArrayIndexOutOfBoundsException e) { - message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; - } - - throw new Error(message); - } - - - /** - * Pushes the specified amount of characters back into the input stream. - * - * They will be read again by then next call of the scanning method - * - * @param number the number of characters to be read again. - * This number must not be greater than yylength()! - */ - public void yypushback(int number) { - if ( number > yylength() ) - zzScanError(ZZ_PUSHBACK_2BIG); - - zzMarkedPos -= number; - } - - - /** - * Resumes scanning until the next regular expression is matched, - * the end of input is encountered or an I/O-Error occurs. - * - * @return the next token - * @exception java.io.IOException if any I/O-Error occurs - */ - public org.fife.ui.rsyntaxtextarea.Token yylex() throws java.io.IOException { - int zzInput; - int zzAction; - - // cached fields: - int zzCurrentPosL; - int zzMarkedPosL; - int zzEndReadL = zzEndRead; - char [] zzBufferL = zzBuffer; - char [] zzCMapL = ZZ_CMAP; - - int [] zzTransL = ZZ_TRANS; - int [] zzRowMapL = ZZ_ROWMAP; - int [] zzAttrL = ZZ_ATTRIBUTE; - - while (true) { - zzMarkedPosL = zzMarkedPos; - - zzAction = -1; - - zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; - - zzState = zzLexicalState; - - - zzForAction: { - while (true) { - - if (zzCurrentPosL < zzEndReadL) - zzInput = zzBufferL[zzCurrentPosL++]; - else if (zzAtEOF) { - zzInput = YYEOF; - break zzForAction; - } - else { - // store back cached positions - zzCurrentPos = zzCurrentPosL; - zzMarkedPos = zzMarkedPosL; - boolean eof = zzRefill(); - // get translated positions and possibly new buffer - zzCurrentPosL = zzCurrentPos; - zzMarkedPosL = zzMarkedPos; - zzBufferL = zzBuffer; - zzEndReadL = zzEndRead; - if (eof) { - zzInput = YYEOF; - break zzForAction; - } - else { - zzInput = zzBufferL[zzCurrentPosL++]; - } - } - int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; - if (zzNext == -1) break zzForAction; - zzState = zzNext; - - int zzAttributes = zzAttrL[zzState]; - if ( (zzAttributes & 1) == 1 ) { - zzAction = zzState; - zzMarkedPosL = zzCurrentPosL; - if ( (zzAttributes & 8) == 8 ) break zzForAction; - } - - } - } - - // store back cached position - zzMarkedPos = zzMarkedPosL; - - switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { - case 35: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_DOCUMENTATION); start = zzMarkedPos; - } - case 36: break; - case 28: - { addToken(Token.PREPROCESSOR); - } - case 37: break; - case 3: - { addNullToken(); return firstToken; - } - case 38: break; - case 30: - { addToken(Token.LITERAL_CHAR); - } - case 39: break; - case 25: - { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); - } - case 40: break; - case 4: - { addToken(Token.WHITESPACE); - } - case 41: break; - case 29: - { addToken(Token.LITERAL_NUMBER_HEXADECIMAL); - } - case 42: break; - case 22: - { addToken(Token.ERROR_CHAR); /*addNullToken(); return firstToken;*/ - } - case 43: break; - case 31: - { addToken(Token.ERROR_STRING_DOUBLE); - } - case 44: break; - case 19: - { addToken(Token.LITERAL_NUMBER_FLOAT); - } - case 45: break; - case 21: - { addToken(Token.RESERVED_WORD); - } - case 46: break; - case 10: - { addToken(Token.SEPARATOR); - } - case 47: break; - case 12: - { addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addNullToken(); return firstToken; - } - case 48: break; - case 6: - { addToken(Token.IDENTIFIER); - } - case 49: break; - case 13: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addToken(temp,zzEndRead, Token.PREPROCESSOR); addNullToken(); return firstToken; - } - case 50: break; - case 8: - { addToken(Token.ERROR_CHAR); addNullToken(); return firstToken; - } - case 51: break; - case 9: - { addToken(Token.ERROR_STRING_DOUBLE); addNullToken(); return firstToken; - } - case 52: break; - case 32: - { addToken(Token.DATA_TYPE); - } - case 53: break; - case 2: - { addToken(Token.ERROR_IDENTIFIER); - } - case 54: break; - case 23: - { addToken(Token.ERROR_CHAR); - } - case 55: break; - case 33: - { addToken(Token.LITERAL_BOOLEAN); - } - case 56: break; - case 20: - { start = zzMarkedPos-2; yybegin(VERBATIMSTRING); - } - case 57: break; - case 24: - { addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); - } - case 58: break; - case 14: - { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); return firstToken; - } - case 59: break; - case 34: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_MULTILINE); start = zzMarkedPos; - } - case 60: break; - case 16: - { addToken(Token.COMMENT_EOL); addNullToken(); return firstToken; - } - case 61: break; - case 18: - { addToken(Token.ERROR_NUMBER_FORMAT); - } - case 62: break; - case 27: - { start = zzMarkedPos-3; yybegin(DOCUMENTCOMMENT); - } - case 63: break; - case 17: - { start = zzMarkedPos-2; yybegin(DELIMITEDCOMMENT); - } - case 64: break; - case 7: - { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); - } - case 65: break; - case 5: - { addToken(Token.OPERATOR); - } - case 66: break; - case 26: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addToken(temp,zzMarkedPos-1, Token.PREPROCESSOR); start = zzMarkedPos; - } - case 67: break; - case 15: - { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); - } - case 68: break; - case 1: - { - } - case 69: break; - case 11: - { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; - } - case 70: break; - default: - if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { - zzAtEOF = true; - switch (zzLexicalState) { - case VERBATIMSTRING: { - addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); return firstToken; - } - case 365: break; - case DOCUMENTCOMMENT: { - addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addNullToken(); return firstToken; - } - case 366: break; - case YYINITIAL: { - addNullToken(); return firstToken; - } - case 367: break; - case DELIMITEDCOMMENT: { - addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; - } - case 368: break; - default: - return null; - } - } - else { - zzScanError(ZZ_NO_MATCH); - } - } - } - } - - -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/CTokenMaker.flex b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/CTokenMaker.flex deleted file mode 100644 index 5a4ba1e..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/CTokenMaker.flex +++ /dev/null @@ -1,647 +0,0 @@ -/* - * 11/13/2004 - * - * CTokenMaker.java - An object that can take a chunk of text and - * return a linked list of tokens representing it in the C programming - * language. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * Scanner for the C programming language. - * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated CTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.6 - * - */ -%% - -%public -%class CTokenMaker -%extends AbstractJFlexCTokenMaker -%unicode -%type org.fife.ui.rsyntaxtextarea.Token - - -%{ - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public CTokenMaker() { - super(); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addToken(int, int, int) - */ - private void addHyperlinkToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, true); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, int startOffset) { - super.addToken(array, start,end, tokenType, startOffset); - zzStartRead = zzMarkedPos; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { "//", null }; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - - // Start off in the proper state. - int state = Token.NULL; - switch (initialTokenType) { - case Token.COMMENT_MULTILINE: - state = MLC; - start = text.offset; - break; - default: - state = Token.NULL; - } - - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = zzPushbackPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtBOL = true; - zzAtEOF = false; - } - - -%} - -Letter = [A-Za-z] -LetterOrUnderscore = ({Letter}|[_]) -Digit = [0-9] -HexDigit = {Digit}|[A-Fa-f] -OctalDigit = [0-7] -Exponent = [eE][+-]?{Digit}+ - -PreprocessorWord = define|elif|else|endif|error|if|ifdef|ifndef|include|line|pragma|undef - -Trigraph = ("??="|"??("|"??)"|"??/"|"??'"|"??<"|"??>"|"??!"|"??-") - -OctEscape1 = ([\\]{OctalDigit}) -OctEscape2 = ([\\]{OctalDigit}{OctalDigit}) -OctEscape3 = ([\\][0-3]{OctalDigit}{OctalDigit}) -OctEscape = ({OctEscape1}|{OctEscape2}|{OctEscape3}) -HexEscape = ([\\][xX]{HexDigit}{HexDigit}) - -AnyChrChr = ([^\'\n\\]) -Escape = ([\\]([abfnrtv\'\"\?\\0e])) -UnclosedCharLiteral = ([\']({Escape}|{OctEscape}|{HexEscape}|{Trigraph}|{AnyChrChr})) -CharLiteral = ({UnclosedCharLiteral}[\']) -ErrorUnclosedCharLiteral = ([\'][^\'\n]*) -ErrorCharLiteral = (([\'][\'])|{ErrorUnclosedCharLiteral}[\']) -AnyStrChr = ([^\"\n\\]) -FalseTrigraph = (("?"(("?")*)[^\=\(\)\/\'\<\>\!\-\\\?\"\n])|("?"[\=\(\)\/\'\<\>\!\-])) -StringLiteral = ([\"]((((("?")*)({Escape}|{OctEscape}|{HexEscape}|{Trigraph}))|{FalseTrigraph}|{AnyStrChr})*)(("?")*)[\"]) -UnclosedStringLiteral = ([\"]([\\].|[^\\\"])*[^\"]?) -ErrorStringLiteral = ({UnclosedStringLiteral}[\"]) - - -LineTerminator = \n -WhiteSpace = [ \t\f] - -MLCBegin = "/*" -MLCEnd = "*/" -LineCommentBegin = "//" - -NonFloatSuffix = (([uU][lL]?)|([lL][uU]?)) -IntegerLiteral = ({Digit}+{Exponent}?{NonFloatSuffix}?) -HexLiteral = ("0"[xX]{HexDigit}+{NonFloatSuffix}?) -FloatLiteral = ((({Digit}*[\.]{Digit}+)|({Digit}+[\.]{Digit}*)){Exponent}?[fFlL]?) -ErrorNumberFormat = (({IntegerLiteral}|{HexLiteral}|{FloatLiteral}){NonSeparator}+) - -NonSeparator = ([^\t\f\r\n\ \(\)\{\}\[\]\;\,\.\=\>\<\!\~\?\:\+\-\*\/\&\|\^\%\"\']|"#") -Identifier = ({LetterOrUnderscore}({LetterOrUnderscore}|{Digit}|[$])*) -ErrorIdentifier = ({NonSeparator}+) - - -URLGenDelim = ([:\/\?#\[\]@]) -URLSubDelim = ([\!\$&'\(\)\*\+,;=]) -URLUnreserved = ({LetterOrUnderscore}|{Digit}|[\-\.\~]) -URLCharacter = ({URLGenDelim}|{URLSubDelim}|{URLUnreserved}|[%]) -URLCharacters = ({URLCharacter}*) -URLEndCharacter = ([\/\$]|{Letter}|{Digit}) -URL = (((https?|f(tp|ile))"://"|"www.")({URLCharacters}{URLEndCharacter})?) - -%state MLC -%state EOL_COMMENT - -%% - - { - - /* Keywords */ - "auto" | - "break" | - "case" | - "const" | - "continue" | - "default" | - "do" | - "else" | - "enum" | - "extern" | - "for" | - "goto" | - "if" | - "register" | - "sizeof" | - "static" | - "struct" | - "switch" | - "typedef" | - "union" | - "volatile" | - "while" { addToken(Token.RESERVED_WORD); } - - "return" { addToken(Token.RESERVED_WORD_2); } - - /* Data types. */ - "char" | - "div_t" | - "double" | - "float" | - "int" | - "ldiv_t" | - "long" | - "short" | - "signed" | - "size_t" | - "unsigned" | - "void" | - "wchar_t" { addToken(Token.DATA_TYPE); } - - /* Standard functions */ - "abort" | - "abs" | - "acos" | - "asctime" | - "asin" | - "assert" | - "atan2" | - "atan" | - "atexit" | - "atof" | - "atoi" | - "atol" | - "bsearch" | - "btowc" | - "calloc" | - "ceil" | - "clearerr" | - "clock" | - "cosh" | - "cos" | - "ctime" | - "difftime" | - "div" | - "errno" | - "exit" | - "exp" | - "fabs" | - "fclose" | - "feof" | - "ferror" | - "fflush" | - "fgetc" | - "fgetpos" | - "fgetwc" | - "fgets" | - "fgetws" | - "floor" | - "fmod" | - "fopen" | - "fprintf" | - "fputc" | - "fputs" | - "fputwc" | - "fputws" | - "fread" | - "free" | - "freopen" | - "frexp" | - "fscanf" | - "fseek" | - "fsetpos" | - "ftell" | - "fwprintf" | - "fwrite" | - "fwscanf" | - "getchar" | - "getc" | - "getenv" | - "gets" | - "getwc" | - "getwchar" | - "gmtime" | - "isalnum" | - "isalpha" | - "iscntrl" | - "isdigit" | - "isgraph" | - "islower" | - "isprint" | - "ispunct" | - "isspace" | - "isupper" | - "isxdigit" | - "labs" | - "ldexp" | - "ldiv" | - "localeconv" | - "localtime" | - "log10" | - "log" | - "longjmp" | - "malloc" | - "mblen" | - "mbrlen" | - "mbrtowc" | - "mbsinit" | - "mbsrtowcs" | - "mbstowcs" | - "mbtowc" | - "memchr" | - "memcmp" | - "memcpy" | - "memmove" | - "memset" | - "mktime" | - "modf" | - "offsetof" | - "perror" | - "pow" | - "printf" | - "putchar" | - "putc" | - "puts" | - "putwc" | - "putwchar" | - "qsort" | - "raise" | - "rand" | - "realloc" | - "remove" | - "rename" | - "rewind" | - "scanf" | - "setbuf" | - "setjmp" | - "setlocale" | - "setvbuf" | - "setvbuf" | - "signal" | - "sinh" | - "sin" | - "sprintf" | - "sqrt" | - "srand" | - "sscanf" | - "strcat" | - "strchr" | - "strcmp" | - "strcmp" | - "strcoll" | - "strcpy" | - "strcspn" | - "strerror" | - "strftime" | - "strlen" | - "strncat" | - "strncmp" | - "strncpy" | - "strpbrk" | - "strrchr" | - "strspn" | - "strstr" | - "strtod" | - "strtok" | - "strtol" | - "strtoul" | - "strxfrm" | - "swprintf" | - "swscanf" | - "system" | - "tanh" | - "tan" | - "time" | - "tmpfile" | - "tmpnam" | - "tolower" | - "toupper" | - "ungetc" | - "ungetwc" | - "va_arg" | - "va_end" | - "va_start" | - "vfprintf" | - "vfwprintf" | - "vprintf" | - "vsprintf" | - "vswprintf" | - "vwprintf" | - "wcrtomb" | - "wcscat" | - "wcschr" | - "wcscmp" | - "wcscoll" | - "wcscpy" | - "wcscspn" | - "wcsftime" | - "wcslen" | - "wcsncat" | - "wcsncmp" | - "wcsncpy" | - "wcspbrk" | - "wcsrchr" | - "wcsrtombs" | - "wcsspn" | - "wcsstr" | - "wcstod" | - "wcstok" | - "wcstol" | - "wcstombs" | - "wcstoul" | - "wcsxfrm" | - "wctob" | - "wctomb" | - "wmemchr" | - "wmemcmp" | - "wmemcpy" | - "wmemmove" | - "wmemset" | - "wprintf" | - "wscanf" { addToken(Token.FUNCTION); } - - /* Standard-defined macros. */ - "__DATE__" | - "__TIME__" | - "__FILE__" | - "__LINE__" | - "__STDC__" { addToken(Token.PREPROCESSOR); } - - {LineTerminator} { addNullToken(); return firstToken; } - - {Identifier} { addToken(Token.IDENTIFIER); } - - {WhiteSpace}+ { addToken(Token.WHITESPACE); } - - /* Preprocessor directives */ - "#"{WhiteSpace}*{PreprocessorWord} { addToken(Token.PREPROCESSOR); } - - /* String/Character Literals. */ - {CharLiteral} { addToken(Token.LITERAL_CHAR); } - {UnclosedCharLiteral} { addToken(Token.ERROR_CHAR); /*addNullToken(); return firstToken;*/ } - {ErrorUnclosedCharLiteral} { addToken(Token.ERROR_CHAR); addNullToken(); return firstToken; } - {ErrorCharLiteral} { addToken(Token.ERROR_CHAR); } - {StringLiteral} { addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); } - {UnclosedStringLiteral} { addToken(Token.ERROR_STRING_DOUBLE); addNullToken(); return firstToken; } - {ErrorStringLiteral} { addToken(Token.ERROR_STRING_DOUBLE); } - - /* Comment Literals. */ - {MLCBegin} { start = zzMarkedPos-2; yybegin(MLC); } - {LineCommentBegin} { start = zzMarkedPos-2; yybegin(EOL_COMMENT); } - - /* Separators. */ - "(" | - ")" | - "[" | - "]" | - "{" | - "}" { addToken(Token.SEPARATOR); } - - /* Operators. */ - {Trigraph} | - "=" | - "+" | - "-" | - "*" | - "/" | - "%" | - "~" | - "<" | - ">" | - "<<" | - ">>" | - "==" | - "+=" | - "-=" | - "*=" | - "/=" | - "%=" | - "&=" | - "|=" | - "^=" | - ">=" | - "<=" | - "!=" | - ">>=" | - "<<=" | - "^" | - "&" | - "&&" | - "|" | - "||" | - "?" | - ":" | - "," | - "!" | - "++" | - "--" | - "." | - "," { addToken(Token.OPERATOR); } - - /* Numbers */ - {IntegerLiteral} { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); } - {HexLiteral} { addToken(Token.LITERAL_NUMBER_HEXADECIMAL); } - {FloatLiteral} { addToken(Token.LITERAL_NUMBER_FLOAT); } - {ErrorNumberFormat} { addToken(Token.ERROR_NUMBER_FORMAT); } - - /* Some lines will end in '\' to wrap an expression. */ - "\\" { addToken(Token.IDENTIFIER); } - - {ErrorIdentifier} { addToken(Token.ERROR_IDENTIFIER); } - - /* Other punctuation, we'll highlight it as "identifiers." */ - ";" { addToken(Token.IDENTIFIER); } - - /* Ended with a line not in a string or comment. */ - <> { addNullToken(); return firstToken; } - - /* Catch any other (unhandled) characters and flag them as bad. */ - . { addToken(Token.ERROR_IDENTIFIER); } - -} - - { - - [^hwf\n\*]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_MULTILINE); start = zzMarkedPos; } - [hwf] {} - - \n { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; } - {MLCEnd} { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); } - \* {} - <> { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; } - -} - - - { - [^hwf\n]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_EOL); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_EOL); start = zzMarkedPos; } - [hwf] {} - \n { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; } - <> { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; } -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/CTokenMaker.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/CTokenMaker.java deleted file mode 100644 index c49b129..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/CTokenMaker.java +++ /dev/null @@ -1,2082 +0,0 @@ -/* The following code was generated by JFlex 1.4.1 on 3/22/15 4:43 PM */ - -/* - * 11/13/2004 - * - * CTokenMaker.java - An object that can take a chunk of text and - * return a linked list of tokens representing it in the C programming - * language. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * Scanner for the C programming language. - * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated CTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.6 - * - */ - -public class CTokenMaker extends AbstractJFlexCTokenMaker { - - /** This character denotes the end of file */ - public static final int YYEOF = -1; - - /** lexical states */ - public static final int EOL_COMMENT = 2; - public static final int YYINITIAL = 0; - public static final int MLC = 1; - - /** - * Translates characters to character classes - */ - private static final String ZZ_CMAP_PACKED = - "\11\0\1\50\1\43\1\0\1\50\1\56\22\0\1\50\1\36\1\44"+ - "\1\57\1\60\1\65\1\113\1\33\1\31\1\31\1\51\1\7\1\64"+ - "\1\37\1\54\1\32\1\47\1\77\1\76\1\41\4\5\2\3\1\70"+ - "\1\63\1\34\1\30\1\35\1\27\1\61\1\103\1\4\1\111\1\102"+ - "\1\6\1\55\2\1\1\105\2\1\1\53\1\106\1\107\4\1\1\110"+ - "\1\104\1\52\2\1\1\42\2\1\1\62\1\40\1\62\1\115\1\2"+ - "\1\0\1\24\1\46\1\21\1\10\1\11\1\12\1\25\1\66\1\13"+ - "\1\100\1\72\1\15\1\26\1\14\1\20\1\23\1\101\1\17\1\16"+ - "\1\67\1\22\1\45\1\71\1\73\1\75\1\74\1\112\1\114\1\112"+ - "\1\64\uff81\0"; - - /** - * Translates characters to character classes - */ - private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); - - /** - * Translates DFA states to action switch labels. - */ - private static final int [] ZZ_ACTION = zzUnpackAction(); - - private static final String ZZ_ACTION_PACKED_0 = - "\3\0\1\1\2\2\1\3\1\4\16\2\2\4\1\5"+ - "\1\4\1\6\3\4\1\2\1\7\1\10\2\2\1\3"+ - "\1\11\1\4\2\1\1\2\1\4\3\2\2\4\2\12"+ - "\1\13\5\12\1\14\2\12\1\2\2\15\2\3\1\16"+ - "\2\2\1\17\21\2\1\17\50\2\1\0\1\20\1\21"+ - "\2\22\1\23\1\6\2\10\1\24\7\2\1\15\6\1"+ - "\1\0\11\2\2\0\1\25\6\0\5\2\1\3\1\0"+ - "\1\3\1\15\1\16\2\2\1\26\5\2\1\26\17\2"+ - "\1\27\15\2\1\26\1\2\1\26\45\2\1\6\1\30"+ - "\1\6\3\22\1\6\2\10\1\31\6\2\1\32\4\1"+ - "\1\33\4\1\6\0\10\2\10\0\5\2\1\16\1\0"+ - "\27\2\1\27\37\2\1\26\2\2\1\26\6\2\1\6"+ - "\1\10\6\2\2\32\7\1\4\0\1\33\4\0\10\2"+ - "\2\0\1\34\2\0\1\35\50\2\1\32\1\33\3\1"+ - "\7\0\7\2\4\0\5\2\1\36\5\2\2\1\1\33"+ - "\3\0\4\2\2\0\1\33"; - - private static int [] zzUnpackAction() { - int [] result = new int[503]; - int offset = 0; - offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAction(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /** - * Translates a state to a row index in the transition table - */ - private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); - - private static final String ZZ_ROWMAP_PACKED_0 = - "\0\0\0\116\0\234\0\352\0\u0138\0\u0186\0\u01d4\0\u0222"+ - "\0\u0270\0\u02be\0\u030c\0\u035a\0\u03a8\0\u03f6\0\u0444\0\u0492"+ - "\0\u04e0\0\u052e\0\u057c\0\u05ca\0\u0618\0\u0666\0\u06b4\0\u0702"+ - "\0\u0750\0\u079e\0\u07ec\0\u083a\0\u0888\0\u08d6\0\352\0\u0750"+ - "\0\u0924\0\u0972\0\u09c0\0\u0a0e\0\u0a5c\0\u0aaa\0\u0750\0\u0af8"+ - "\0\u0750\0\u0750\0\u0b46\0\u0b94\0\u0be2\0\u0c30\0\u0c7e\0\u0ccc"+ - "\0\u0d1a\0\u0750\0\u0d68\0\u0db6\0\u0e04\0\u0e52\0\u0ea0\0\u0750"+ - "\0\u0eee\0\u0f3c\0\u0f8a\0\u0fd8\0\u1026\0\u1074\0\u10c2\0\u1110"+ - "\0\u115e\0\u11ac\0\u11fa\0\u1248\0\u1296\0\u12e4\0\u1332\0\u1380"+ - "\0\u13ce\0\u141c\0\u146a\0\u14b8\0\u1506\0\u1554\0\u15a2\0\u15f0"+ - "\0\u163e\0\u168c\0\u16da\0\u1728\0\u0138\0\u1776\0\u17c4\0\u1812"+ - "\0\u1860\0\u18ae\0\u18fc\0\u194a\0\u1998\0\u19e6\0\u1a34\0\u1a82"+ - "\0\u1ad0\0\u1b1e\0\u1b6c\0\u1bba\0\u1c08\0\u1c56\0\u1ca4\0\u1cf2"+ - "\0\u1d40\0\u1d8e\0\u1ddc\0\u1e2a\0\u1e78\0\u1ec6\0\u1f14\0\u1f62"+ - "\0\u1fb0\0\u1ffe\0\u204c\0\u209a\0\u20e8\0\u2136\0\u2184\0\u21d2"+ - "\0\u2220\0\u226e\0\u22bc\0\u230a\0\u2358\0\u23a6\0\u0750\0\u0750"+ - "\0\u23f4\0\u2442\0\u0750\0\u2490\0\u24de\0\u252c\0\u0750\0\u257a"+ - "\0\u25c8\0\u2616\0\u2664\0\u26b2\0\u2700\0\u274e\0\u279c\0\u27ea"+ - "\0\u2838\0\u2886\0\u28d4\0\u2922\0\u2970\0\u29be\0\u2a0c\0\u2a5a"+ - "\0\u2aa8\0\u2af6\0\u2b44\0\u2b92\0\u2be0\0\u2c2e\0\u2c7c\0\u2cca"+ - "\0\u2d18\0\u0750\0\u2d66\0\u2db4\0\u2e02\0\u2e50\0\u2e9e\0\u2eec"+ - "\0\u2f3a\0\u2f88\0\u2fd6\0\u3024\0\u3072\0\u30c0\0\u310e\0\u0fd8"+ - "\0\u315c\0\u0fd8\0\u31aa\0\u31f8\0\u3246\0\u3294\0\u32e2\0\u3330"+ - "\0\u337e\0\u33cc\0\u0138\0\u341a\0\u3468\0\u34b6\0\u3504\0\u3552"+ - "\0\u35a0\0\u35ee\0\u363c\0\u368a\0\u36d8\0\u3726\0\u3774\0\u37c2"+ - "\0\u3810\0\u385e\0\u0138\0\u38ac\0\u38fa\0\u3948\0\u3996\0\u39e4"+ - "\0\u3a32\0\u3a80\0\u3ace\0\u3b1c\0\u3b6a\0\u3bb8\0\u3c06\0\u3c54"+ - "\0\u3ca2\0\u3cf0\0\u3d3e\0\u3d8c\0\u3dda\0\u3e28\0\u3e76\0\u3ec4"+ - "\0\u3f12\0\u3f60\0\u3fae\0\u3ffc\0\u404a\0\u4098\0\u40e6\0\u4134"+ - "\0\u4182\0\u41d0\0\u421e\0\u426c\0\u42ba\0\u4308\0\u4356\0\u43a4"+ - "\0\u43f2\0\u4440\0\u448e\0\u44dc\0\u452a\0\u4578\0\u45c6\0\u4614"+ - "\0\u4662\0\u46b0\0\u46fe\0\u474c\0\u479a\0\u47e8\0\u4836\0\u4884"+ - "\0\u48d2\0\u0750\0\u4920\0\u496e\0\u49bc\0\u4a0a\0\u4a58\0\u4aa6"+ - "\0\u4af4\0\u0750\0\u4b42\0\u4b90\0\u4bde\0\u4c2c\0\u4c7a\0\u4cc8"+ - "\0\u4d16\0\u4d64\0\u4db2\0\u4e00\0\u4e4e\0\u4e9c\0\u4eea\0\u4f38"+ - "\0\u4f86\0\u4fd4\0\u5022\0\u5070\0\u50be\0\u510c\0\u515a\0\u51a8"+ - "\0\u51f6\0\u5244\0\u5292\0\u52e0\0\u532e\0\u537c\0\u53ca\0\u5418"+ - "\0\u5466\0\u54b4\0\u5502\0\u5550\0\u559e\0\u55ec\0\u563a\0\u5688"+ - "\0\u56d6\0\u5724\0\u5772\0\u57c0\0\u580e\0\u585c\0\u58aa\0\u58f8"+ - "\0\u5946\0\u5994\0\u59e2\0\u5a30\0\u5a7e\0\u5acc\0\u5b1a\0\u5b68"+ - "\0\u5bb6\0\u5c04\0\u5c52\0\u5ca0\0\u5cee\0\u5d3c\0\u5d8a\0\u5dd8"+ - "\0\u5e26\0\u5e74\0\u5ec2\0\u5f10\0\u5f5e\0\u5fac\0\u5ffa\0\u6048"+ - "\0\u6096\0\u60e4\0\u6132\0\u6180\0\u61ce\0\u621c\0\u626a\0\u62b8"+ - "\0\u6306\0\u6354\0\u63a2\0\u63f0\0\u643e\0\u648c\0\u64da\0\u6528"+ - "\0\u6576\0\u65c4\0\u6612\0\u6660\0\u66ae\0\u66fc\0\u674a\0\u6798"+ - "\0\u67e6\0\u6834\0\u6882\0\u68d0\0\u691e\0\u696c\0\u69ba\0\u6a08"+ - "\0\u6a56\0\u6aa4\0\u6af2\0\u6b40\0\u6b8e\0\u6bdc\0\u6c2a\0\u6c78"+ - "\0\u6cc6\0\u6d14\0\u6d62\0\u6db0\0\u6dfe\0\u6e4c\0\u6e9a\0\u6ee8"+ - "\0\u6f36\0\u6f84\0\u6fd2\0\u7020\0\u706e\0\u70bc\0\u710a\0\u7158"+ - "\0\u71a6\0\u71f4\0\u7242\0\u7290\0\u72de\0\u732c\0\u737a\0\u73c8"+ - "\0\u7416\0\u7464\0\u74b2\0\u7500\0\u754e\0\u759c\0\u75ea\0\u7638"+ - "\0\u7686\0\u76d4\0\u7722\0\u7770\0\u77be\0\u780c\0\u785a\0\u78a8"+ - "\0\u78f6\0\u7944\0\u7992\0\u79e0\0\u3d3e\0\u7a2e\0\u7a7c\0\u7aca"+ - "\0\u7b18\0\u7b66\0\u7bb4\0\u7c02\0\u7c50\0\u7c9e\0\u7cec\0\u7d3a"+ - "\0\u7d88\0\u7dd6\0\u7e24\0\u7e72\0\u7ec0\0\u7f0e\0\u7f5c\0\u7faa"+ - "\0\u7ff8\0\u8046\0\u8094\0\u80e2\0\u8130\0\u817e\0\u81cc\0\u821a"+ - "\0\u8268\0\u82b6\0\u8304\0\u8352\0\u83a0\0\u83ee\0\u843c\0\u848a"+ - "\0\u0fd8\0\352\0\u84d8\0\u8526\0\u8574\0\u85c2\0\u8610\0\u865e"+ - "\0\u86ac\0\u86fa\0\u8748\0\u8796\0\u87e4\0\u8832\0\u8880\0\u88ce"+ - "\0\u891c\0\u3246\0\u896a\0\u89b8\0\u77be\0\u8a06\0\u78a8\0\u8a54"+ - "\0\u8aa2\0\u8af0\0\u8b3e\0\u8b8c\0\u0138\0\u8bda\0\u8c28\0\u8c76"+ - "\0\u8cc4\0\u8d12\0\u8d60\0\u8dae\0\u0750\0\u8dfc\0\u8e4a\0\u8e98"+ - "\0\u8ee6\0\u8f34\0\u8f82\0\u8fd0\0\u901e\0\u906c\0\u0138"; - - private static int [] zzUnpackRowMap() { - int [] result = new int[503]; - int offset = 0; - offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackRowMap(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int high = packed.charAt(i++) << 16; - result[j++] = high | packed.charAt(i++); - } - return j; - } - - /** - * The transition table of the DFA - */ - private static final int [] ZZ_TRANS = zzUnpackTrans(); - - private static final String ZZ_TRANS_PACKED_0 = - "\1\4\1\5\1\6\1\7\1\5\1\7\1\5\1\10"+ - "\1\11\1\12\1\13\1\14\1\5\1\15\1\16\1\17"+ - "\1\20\1\21\1\22\1\23\1\24\1\25\1\26\1\27"+ - "\1\30\1\31\1\32\1\33\1\34\1\35\1\30\1\36"+ - "\1\37\1\7\1\5\1\40\1\41\1\42\1\43\1\44"+ - "\1\45\1\30\2\5\1\46\1\5\1\47\1\50\2\4"+ - "\1\31\1\51\1\52\1\30\1\5\1\53\1\52\1\54"+ - "\4\5\2\7\1\5\1\55\10\5\1\31\1\56\1\57"+ - "\1\30\12\60\1\61\30\60\1\62\5\60\1\63\14\60"+ - "\1\64\2\60\1\65\24\60\12\66\1\67\30\66\1\70"+ - "\22\66\1\71\2\66\1\72\24\66\7\4\1\0\17\4"+ - "\11\0\3\4\2\0\3\4\2\0\2\4\1\0\1\4"+ - "\1\0\3\4\4\0\2\4\1\0\21\4\4\0\1\4"+ - "\6\5\1\0\17\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\1\5\1\73"+ - "\4\5\1\0\17\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\3\74\1\7\1\74"+ - "\1\7\1\75\1\0\1\74\1\75\3\74\1\76\4\74"+ - "\1\77\4\74\11\0\1\74\1\7\1\74\2\0\2\74"+ - "\1\7\2\0\1\77\1\76\1\100\1\74\1\0\3\74"+ - "\4\0\2\74\1\0\5\74\2\7\12\74\13\0\1\52"+ - "\20\0\1\52\65\0\1\4\6\5\1\0\1\5\1\101"+ - "\1\5\1\102\4\5\1\103\6\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\4\5\1\104\1\105\1\5\1\106\7\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\2\5\1\107\16\5\4\0\1\4\6\5\1\0\1\5"+ - "\1\110\1\111\2\5\1\112\1\113\1\114\1\115\1\116"+ - "\1\5\1\117\1\120\1\121\1\122\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\1\5\1\123\1\0\1\124\20\5"+ - "\4\0\1\4\6\5\1\0\2\5\1\125\1\5\1\126"+ - "\1\5\1\127\10\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\1\130\7\5\1\131\3\5\1\120\2\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\1\5\1\132\1\5\1\133\2\5"+ - "\1\134\1\135\1\5\1\136\1\5\1\137\3\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\1\140\1\141\1\0"+ - "\1\142\3\5\1\143\3\5\1\144\10\5\4\0\1\4"+ - "\6\5\1\0\1\5\1\145\12\5\1\146\2\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\2\5\1\147\14\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\1\5\1\150\3\5\1\151"+ - "\2\5\1\152\3\5\1\153\2\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\1\154\1\155\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\4\5\1\156\12\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\1\5\1\157\5\5\1\160\1\161"+ - "\1\5\1\162\4\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\6\5\1\163\2\5\1\164\1\165\4\5\11\0\1\4"+ - "\2\5\2\0\1\5\1\166\1\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\1\5\1\167"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\1\5\1\170"+ - "\6\5\1\165\5\5\1\171\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\1\5\1\172\6\5\1\173\3\5\1\174\2\5"+ - "\11\0\1\4\2\5\2\0\1\5\1\175\1\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\1\5\1\171\17\5\33\0\1\176\116\0"+ - "\1\52\233\0\1\52\1\0\1\177\16\0\1\200\44\0"+ - "\27\201\1\202\3\201\1\203\4\201\1\204\2\201\1\0"+ - "\52\201\30\0\1\52\3\0\1\30\111\0\1\52\4\0"+ - "\1\30\110\0\1\52\6\0\1\52\56\0\40\41\1\205"+ - "\2\41\1\206\1\207\51\41\1\4\6\5\1\0\2\5"+ - "\1\210\3\5\1\210\1\5\1\211\2\5\1\137\1\212"+ - "\2\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\1\213\20\5\4\0\1\4\6\5\1\0\6\5"+ - "\1\214\1\215\7\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\1\5\1\216\1\0\21\5\4\0\3\74\1\7"+ - "\1\74\1\7\1\75\1\0\1\74\1\75\3\74\1\76"+ - "\4\74\1\77\4\74\11\0\1\74\1\7\1\217\2\0"+ - "\2\74\1\7\2\0\1\77\1\76\1\100\1\74\1\0"+ - "\3\74\4\0\2\74\1\0\2\74\1\217\2\74\2\7"+ - "\12\74\54\0\1\45\50\0\1\100\1\0\1\100\33\0"+ - "\1\100\5\0\1\100\26\0\2\100\16\0\7\4\1\0"+ - "\1\220\1\221\1\4\1\222\1\4\1\223\4\4\1\224"+ - "\1\225\3\4\11\0\3\4\2\0\3\4\1\226\1\0"+ - "\2\4\1\0\1\4\1\0\3\4\4\0\2\4\1\0"+ - "\21\4\4\0\1\4\6\5\1\0\3\5\1\227\4\5"+ - "\1\230\3\5\1\231\1\5\1\232\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\4\5\1\233\14\5"+ - "\4\0\1\4\6\5\1\0\6\5\1\134\2\5\1\234"+ - "\1\5\1\137\2\5\1\235\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\1\236\1\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\6\5\1\237\10\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\34\0\1\52"+ - "\62\0\1\52\32\0\1\52\63\0\1\52\1\0\12\60"+ - "\1\0\30\60\1\0\5\60\1\0\14\60\1\0\2\60"+ - "\1\0\24\60\13\0\1\240\53\0\1\241\60\0\1\242"+ - "\152\0\1\243\117\0\1\244\24\0\12\66\1\0\30\66"+ - "\1\0\22\66\1\0\2\66\1\0\24\66\13\0\1\245"+ - "\53\0\1\246\115\0\1\247\117\0\1\250\24\0\1\4"+ - "\6\5\1\0\17\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\1\5\1\251\1\0\1\252\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\11\5\1\253\1\5\1\254"+ - "\3\5\1\255\1\5\4\0\7\74\1\0\17\74\11\0"+ - "\3\74\2\0\3\74\2\0\2\74\1\0\1\74\1\0"+ - "\3\74\4\0\2\74\1\0\21\74\4\0\3\74\1\256"+ - "\1\74\1\256\1\74\1\257\17\74\10\0\1\257\1\74"+ - "\1\256\1\74\2\0\2\74\1\256\2\0\2\74\1\0"+ - "\1\74\1\0\3\74\4\0\2\74\1\0\5\74\2\256"+ - "\12\74\4\0\7\74\1\0\12\74\1\260\4\74\11\0"+ - "\3\74\2\0\3\74\2\0\1\260\1\74\1\0\1\74"+ - "\1\0\3\74\4\0\2\74\1\0\21\74\4\0\7\74"+ - "\1\0\5\74\1\260\11\74\11\0\3\74\2\0\3\74"+ - "\2\0\1\74\1\260\1\0\1\74\1\0\3\74\4\0"+ - "\2\74\1\0\21\74\4\0\3\74\1\100\1\74\1\100"+ - "\1\261\1\0\1\74\1\261\1\262\2\74\1\262\11\74"+ - "\11\0\1\74\1\100\1\74\2\0\2\74\1\100\2\0"+ - "\1\74\1\262\1\0\1\262\1\0\3\74\4\0\2\74"+ - "\1\0\5\74\2\100\12\74\4\0\1\4\6\5\1\0"+ - "\2\5\1\263\14\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\2\5\1\264\14\5\11\0\1\4\2\5\2\0\1\265"+ - "\2\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\12\5\1\266\4\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\12\5\1\267\4\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\6\5\1\270\10\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\7\5\1\271\7\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\3\5\1\272\7\5\1\273\3\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\1\5\1\274\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\7\5\1\275\1\276\6\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\5\5\1\277\11\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\10\5\1\300\6\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\1\5\1\301\7\5"+ - "\1\136\5\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\1\5"+ - "\1\302\15\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\7\5"+ - "\1\125\3\5\1\303\3\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\5\5\1\304\11\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\7\5\1\160\2\5\1\305\4\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\17\5\11\0\1\4\2\5\2\0"+ - "\1\5\1\306\1\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\1\5\1\307\15\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\10\5\1\310\6\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\1\5\1\311\15\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\6\5\1\134\1\312\3\5\1\137"+ - "\3\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\17\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\1\5\1\313\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\1\314\4\5\1\315"+ - "\1\316\2\5\1\317\1\320\1\321\1\322\1\323\1\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\2\5\1\324\16\5\4\0\1\4\6\5\1\0\1\5"+ - "\1\325\1\5\1\326\13\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\4\5\1\327\4\5\1\330\3\5\1\331\1\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\17\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\1\5\1\332\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\4\5\1\333\10\5\1\334"+ - "\1\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\3\5\1\335\15\5\4\0\1\4\6\5\1\0"+ - "\11\5\1\136\5\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\14\5\1\336\2\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\14\5\1\337\2\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\7\5\1\160\7\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\10\5\1\340\6\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\7\5\1\341\4\5\1\342\2\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\3\5\1\343\2\5\1\134\4\5\1\137"+ - "\3\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\6\5\1\344"+ - "\10\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\7\5\1\272"+ - "\7\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\4\5\1\345"+ - "\7\5\1\174\1\346\1\347\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\1\5\1\350\1\0\1\351\20\5\4\0"+ - "\1\4\6\5\1\0\3\5\1\352\1\310\12\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\2\5\1\353\14\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\3\5\1\354\13\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\1\5\1\355\6\5\1\356"+ - "\6\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\4\5\1\357"+ - "\1\5\1\333\10\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\5\5\1\360\1\270\10\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\14\5\1\361\2\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\3\5\1\227\13\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\3\5\1\362\2\5\1\363\6\5\1\364\1\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\7\5\1\275\7\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\3\5\1\365\13\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\17\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\1\273\20\5"+ - "\4\0\1\4\6\5\1\0\17\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\1\5\1\366\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\3\5\1\367\2\5\1\370\2\5"+ - "\1\171\5\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\10\5"+ - "\1\306\6\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\17\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\1\5\1\371"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\6\5\1\273"+ - "\1\5\1\144\6\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\1\5\1\372\6\5\1\373\3\5\1\374\2\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\17\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\1\5\1\375\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\17\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\1\5\1\155\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\16\5\1\376\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\1\276\16\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\5\5\1\360\11\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\5\5\1\303\1\377\1\u0100\7\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\1\5\1\216\1\0\21\5\34\0"+ - "\10\52\56\0\33\u0101\1\u0102\7\u0101\1\0\101\u0101\1\u0103"+ - "\3\u0101\1\u0102\7\u0101\1\0\57\u0101\1\u0104\3\u0101\2\201"+ - "\1\u0101\1\201\2\u0101\1\201\4\u0101\1\201\2\u0101\1\201"+ - "\3\u0101\1\u0105\4\u0101\1\201\1\u0106\1\u0107\1\0\3\201"+ - "\1\u0106\17\u0101\1\201\3\u0101\1\u0107\2\u0101\2\u0106\16\u0101"+ - "\5\206\1\41\3\206\2\41\1\206\1\41\2\206\1\41"+ - "\4\206\1\41\2\206\1\41\3\206\1\41\4\206\2\41"+ - "\1\u0108\1\0\4\41\17\206\1\41\3\206\1\u0108\2\206"+ - "\2\41\56\206\1\u0109\3\206\1\u010a\51\206\1\4\6\5"+ - "\1\0\13\5\1\137\3\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\1\213\20\5\4\0\1\4"+ - "\6\5\1\0\3\5\1\u010b\1\5\1\u010c\11\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\1\5\1\u010d\4\5\1\0\17\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\13\5\1\137\3\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\1\5\1\u010e\15\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\1\5\1\u010f\15\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\10\5\1\u0110\6\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\3\74\4\u0111\1\0\3\u0111\6\74\1\u0111\2\74"+ - "\1\u0111\2\74\11\0\1\74\1\u0111\1\74\2\0\1\74"+ - "\2\u0111\2\0\2\74\1\0\1\u0111\1\0\3\74\4\0"+ - "\2\74\1\0\5\74\2\u0111\2\74\2\u0111\5\74\1\u0111"+ - "\4\0\7\4\1\0\1\4\1\u0112\15\4\11\0\3\4"+ - "\2\0\3\4\2\0\2\4\1\0\1\4\1\0\3\4"+ - "\4\0\2\4\1\0\21\4\4\0\7\4\1\0\4\4"+ - "\1\u0113\1\u0114\1\4\1\u0115\7\4\11\0\3\4\2\0"+ - "\3\4\2\0\2\4\1\0\1\4\1\0\3\4\4\0"+ - "\2\4\1\0\21\4\4\0\7\4\1\0\2\4\1\u0116"+ - "\1\4\1\u0117\12\4\11\0\3\4\2\0\3\4\2\0"+ - "\2\4\1\0\1\4\1\0\3\4\4\0\2\4\1\0"+ - "\21\4\4\0\7\4\1\0\3\4\1\u0118\13\4\11\0"+ - "\3\4\2\0\3\4\2\0\2\4\1\0\1\4\1\0"+ - "\3\4\4\0\2\4\1\0\21\4\4\0\7\4\1\0"+ - "\4\4\1\u0119\12\4\11\0\3\4\2\0\3\4\2\0"+ - "\2\4\1\0\1\4\1\0\3\4\4\0\2\4\1\0"+ - "\21\4\4\0\7\4\1\0\7\4\1\u011a\7\4\11\0"+ - "\3\4\2\0\3\4\2\0\2\4\1\0\1\4\1\0"+ - "\3\4\4\0\2\4\1\0\21\4\14\0\1\u011b\1\u011c"+ - "\1\0\1\u011d\1\0\1\u011e\4\0\1\u011f\1\u0120\24\0"+ - "\1\226\45\0\1\4\6\5\1\0\16\5\1\u0121\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\5\5\1\315\4\5\1\320"+ - "\4\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\4\5\1\333"+ - "\12\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\13\5\1\u0122"+ - "\3\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\13\5\1\u0123"+ - "\3\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\6\5\1\u0124"+ - "\1\u0125\7\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\1\u0126\1\u0127\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\1\5\1\172\15\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\3\5\1\u0128\13\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\10\5\1\144\6\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\21\0\1\u0129\123\0\1\u012a"+ - "\161\0\1\u012b\117\0\1\u012c\41\0\1\u012d\123\0\1\u012e"+ - "\161\0\1\u012f\117\0\1\u0130\24\0\1\4\6\5\1\0"+ - "\17\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\14\5\1\u0131\4\5\4\0\1\4\6\5\1\0"+ - "\17\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\14\5\1\u0132\4\5\4\0\1\4\6\5\1\0"+ - "\17\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\12\5\1\u0133\6\5\4\0\1\4\6\5\1\0"+ - "\17\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\14\5\1\u0134\4\5\4\0\1\4\6\5\1\0"+ - "\17\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\13\5\1\u0135\5\5\4\0\3\74\1\256\1\74"+ - "\1\256\1\74\1\0\5\74\1\76\4\74\1\77\4\74"+ - "\11\0\1\74\1\256\1\74\2\0\2\74\1\256\2\0"+ - "\1\77\1\76\1\0\1\74\1\0\3\74\4\0\2\74"+ - "\1\0\5\74\2\256\12\74\7\0\1\256\1\0\1\256"+ - "\33\0\1\256\5\0\1\256\26\0\2\256\16\0\3\74"+ - "\1\u0136\1\74\1\u0136\1\74\1\u0137\17\74\10\0\1\u0137"+ - "\1\74\1\u0136\1\74\2\0\2\74\1\u0136\2\0\2\74"+ - "\1\0\1\74\1\0\3\74\4\0\2\74\1\0\5\74"+ - "\2\u0136\12\74\4\0\1\4\6\5\1\0\14\5\1\u0138"+ - "\2\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\2\5\1\171"+ - "\14\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\1\5\1\126\4\5\1\0"+ - "\17\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\17\5\11\0"+ - "\1\4\2\5\2\0\1\5\1\u0139\1\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\16\5\1\125"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\1\5\1\125\15\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\4\5\1\u013a\12\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\17\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\1\5\1\273\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\1\5\1\u013b\15\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\7\5\1\u013c\7\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\2\5\1\273\14\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\12\5\1\u013d\4\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\10\5\1\u013e\3\5\1\126"+ - "\2\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\1\5\1\u013f"+ - "\15\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\1\5"+ - "\1\u0140\1\0\21\5\4\0\1\4\6\5\1\0\1\5"+ - "\1\273\6\5\1\u0141\3\5\1\310\2\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\2\5\1\u0142"+ - "\16\5\4\0\1\4\6\5\1\0\1\5\1\367\15\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\10\5\1\352\6\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\17\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\1\5\1\u0143\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\6\5\1\273\10\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\17\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\1\5\1\u0144\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\1\273\16\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\5\5\1\354\11\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\3\5\1\u0145\13\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\3\5\1\u0146\13\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\10\5\1\u0147\6\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\13\5\1\u0148\3\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\4\5\1\u0149\12\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\13\5\1\u014a\3\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\7\5\1\u014b\2\5\1\u014c\4\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\5\5\1\u014d\11\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\7\5\1\u014e\7\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\1\314\16\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\17\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\2\5\1\u0142\16\5\4\0"+ - "\1\4\6\5\1\0\17\5\11\0\1\4\2\5\2\0"+ - "\1\265\2\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\15\5\1\u014f\1\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\14\5\1\u0150\2\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\17\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\6\5\1\u0151\12\5\4\0\1\4"+ - "\6\5\1\0\5\5\1\u0152\11\5\11\0\1\4\2\5"+ - "\2\0\1\u0153\1\u0154\1\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\7\5"+ - "\1\u0155\11\5\4\0\1\4\6\5\1\0\17\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\1\273\1\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\4\5\1\u0156\12\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\1\5\1\u0157\15\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\4\5\1\310\12\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\4\5\1\276\12\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\7\5\1\126\7\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\1\5\1\157\1\171"+ - "\1\5\1\u0158\1\303\1\u0159\1\u015a\1\5\1\u015b\1\u015c"+ - "\1\u015d\3\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\1\5\1\u015e\1\0\2\5\1\u015f\16\5\4\0\1\4"+ - "\6\5\1\0\17\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\1\5\1\u0160\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\17\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\1\5\1\u0161\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\17\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\1\5"+ - "\1\u0162\1\0\21\5\4\0\1\4\6\5\1\0\14\5"+ - "\1\227\2\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\3\5"+ - "\1\u0163\13\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\10\5"+ - "\1\u0164\6\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\12\5"+ - "\1\u0165\4\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\3\5"+ - "\1\336\13\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\6\5"+ - "\1\u0121\10\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\6\5"+ - "\1\u0166\10\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\5\5"+ - "\1\273\11\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\14\5"+ - "\1\u0167\2\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\11\5"+ - "\1\u013f\5\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\6\5"+ - "\1\u0168\10\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\1\5\1\u0169\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\5\5\1\u016a\11\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\7\5\1\313\7\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\10\5\1\u016b\6\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\3\5\1\u016c\13\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\1\5\1\u016d\15\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\4\5\1\u016e\12\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\6\5\1\273\2\5\1\u016f\5\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\1\u0170\20\5\4\0"+ - "\1\4\6\5\1\0\4\5\1\273\12\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\1\5\1\144\15\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\10\5\1\125\6\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\17\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\2\5\1\u0171\16\5\4\0"+ - "\1\4\6\5\1\0\2\5\2\273\1\5\1\273\11\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\4\5\1\u0172\12\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\1\5\1\u0173\4\5"+ - "\1\273\2\5\1\u016f\5\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\1\u0170\20\5\4\0\1\4"+ - "\6\5\1\0\6\5\1\u0174\2\5\1\u0175\4\5\1\347"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\3\5\1\u0176\3\5"+ - "\1\u0177\7\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\1\5\1\u0178\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\5\5\1\303\11\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\1\5\1\216\1\0\21\5\4\0\33\u0101\1\203"+ - "\7\u0101\1\0\102\u0101\3\201\1\u0105\4\201\3\u0101\1\0"+ - "\57\u0101\1\201\25\u0101\1\u0102\5\u0101\1\201\1\u0101\1\0"+ - "\3\u0101\1\201\26\u0101\2\201\16\u0101\33\0\1\u0102\62\0"+ - "\5\u0101\1\u0104\25\u0101\1\u0102\5\u0101\1\u0104\1\u0101\1\0"+ - "\3\u0101\1\u0104\26\u0101\2\u0104\21\u0101\4\u0179\1\u0101\3\u0179"+ - "\6\u0101\1\u0179\2\u0101\1\u0179\6\u0101\1\203\5\u0101\1\u0179"+ - "\1\u0101\1\0\2\u0101\2\u0179\5\u0101\1\u0179\20\u0101\2\u0179"+ - "\2\u0101\2\u0179\5\u0101\1\u0179\4\u0101\3\206\4\u017a\1\206"+ - "\3\u017a\6\206\1\u017a\2\206\1\u017a\13\206\1\u0109\1\u017a"+ - "\2\206\1\u010a\1\206\2\u017a\5\206\1\u017a\20\206\2\u017a"+ - "\2\206\2\u017a\5\206\1\u017a\47\206\1\0\52\206\1\4"+ - "\6\5\1\0\1\313\16\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\14\5\1\u017b\2\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\1\5\1\336\4\5\1\u017c\5\5\1\u017d\2\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\14\5\1\u017e\2\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\14\5\1\u017f\2\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\17\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\1\u0180\20\5"+ - "\4\0\3\74\4\u0111\1\0\3\u0111\2\74\1\u0181\3\74"+ - "\1\u0111\1\u0182\1\74\1\u0111\2\74\11\0\1\74\1\u0111"+ - "\1\74\2\0\1\74\2\u0111\2\0\1\u0182\1\u0181\1\0"+ - "\1\u0111\1\0\3\74\4\0\2\74\1\0\5\74\2\u0111"+ - "\2\74\2\u0111\5\74\1\u0111\4\0\7\4\1\0\2\4"+ - "\1\223\14\4\11\0\3\4\2\0\3\4\2\0\2\4"+ - "\1\0\1\4\1\0\3\4\4\0\2\4\1\0\21\4"+ - "\4\0\7\4\1\0\1\u0183\16\4\11\0\3\4\2\0"+ - "\3\4\2\0\2\4\1\0\1\4\1\0\3\4\4\0"+ - "\2\4\1\0\21\4\4\0\7\4\1\0\3\4\1\u0184"+ - "\2\4\1\u0185\10\4\11\0\3\4\2\0\3\4\2\0"+ - "\2\4\1\0\1\4\1\0\3\4\4\0\2\4\1\0"+ - "\21\4\4\0\7\4\1\0\7\4\1\u0186\7\4\11\0"+ - "\3\4\2\0\3\4\2\0\2\4\1\0\1\4\1\0"+ - "\3\4\4\0\2\4\1\0\21\4\4\0\7\4\1\0"+ - "\1\u0187\3\4\1\u0119\12\4\11\0\3\4\2\0\3\4"+ - "\2\0\2\4\1\0\1\4\1\0\3\4\4\0\2\4"+ - "\1\0\21\4\4\0\7\4\1\0\11\4\1\u0188\5\4"+ - "\11\0\3\4\2\0\3\4\2\0\2\4\1\0\1\4"+ - "\1\0\3\4\4\0\2\4\1\0\21\4\4\0\7\4"+ - "\1\0\4\4\1\u0185\12\4\11\0\3\4\2\0\3\4"+ - "\2\0\2\4\1\0\1\4\1\0\3\4\4\0\2\4"+ - "\1\0\21\4\4\0\7\4\1\0\1\u0187\16\4\11\0"+ - "\3\4\2\0\3\4\2\0\2\4\1\0\1\4\1\0"+ - "\3\4\4\0\2\4\1\0\21\4\4\0\7\4\1\0"+ - "\14\4\1\u0189\2\4\11\0\3\4\2\0\3\4\2\0"+ - "\2\4\1\0\1\4\1\0\3\4\4\0\2\4\1\0"+ - "\21\4\15\0\1\u018a\120\0\1\u018b\1\u018c\1\0\1\u018d"+ - "\110\0\1\u018e\1\0\1\u018f\114\0\1\u0190\116\0\1\u0191"+ - "\120\0\1\u0192\76\0\1\4\6\5\1\0\1\5\1\273"+ - "\15\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\2\5\1\u0193"+ - "\1\5\1\u0194\12\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\1\5\1\u0195\15\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\2\5\1\171\1\5\1\u0158\1\303\1\u0159\1\u0196\1\5"+ - "\1\u015b\1\5\1\u015d\3\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\1\5\1\u0197\1\0\2\5\1\u015f\16\5"+ - "\4\0\1\4\6\5\1\0\17\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\1\5\1\u0198\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\14\5\1\u0199\2\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\10\5\1\u019a\6\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\5\5\1\270\11\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\15\0"+ - "\1\u012a\174\0\1\u019b\50\0\1\u019c\146\0\1\u019d\52\0"+ - "\1\u012e\174\0\1\u019e\50\0\1\u019f\146\0\1\u01a0\41\0"+ - "\1\4\6\5\1\0\17\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\16\5\1\u01a1\2\5\4\0"+ - "\1\4\6\5\1\0\17\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\1\5\1\u01a1\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\17\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\13\5\1\u01a1\5\5\4\0\1\4"+ - "\6\5\1\0\17\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\15\5\1\u01a1\3\5\4\0\1\4"+ - "\6\5\1\0\17\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\11\5\1\u01a2\7\5\4\0\3\74"+ - "\1\u0136\1\74\1\u0136\1\74\1\0\2\74\1\262\2\74"+ - "\1\262\11\74\11\0\1\74\1\u0136\1\74\2\0\2\74"+ - "\1\u0136\2\0\1\74\1\262\1\0\1\262\1\0\3\74"+ - "\4\0\2\74\1\0\5\74\2\u0136\12\74\7\0\1\u0136"+ - "\1\0\1\u0136\33\0\1\u0136\5\0\1\u0136\26\0\2\u0136"+ - "\16\0\1\4\6\5\1\0\12\5\1\u01a3\4\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\5\5\1\u01a4\11\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\10\5\1\273\6\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\7\5\1\u016b\7\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\10\5\1\u013e\6\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\6\5\1\u01a5\10\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\7\5\1\273\7\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\17\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\1\5\1\273\17\5"+ - "\4\0\1\4\6\5\1\0\13\5\1\164\3\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\13\5\1\303\3\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\13\5\1\273\3\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\6\5\1\273\2\5\1\273"+ - "\5\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\1\u01a6\20\5\4\0\1\4\6\5\1\0\6\5"+ - "\1\273\2\5\1\273\1\5\1\164\3\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\1\u01a6\20\5"+ - "\4\0\1\4\6\5\1\0\17\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\1\5\1\u0121\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\15\5\1\u0171\1\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\17\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\1\u01a7\20\5\4\0\1\4"+ - "\6\5\1\0\14\5\1\u01a8\2\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\17\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\1\5\1\u01a9\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\13\5\1\u01a7\3\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\3\5\1\u01aa\13\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\4\5\1\u01ab\12\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\4\5\1\u01ac\6\5\1\u01ad\3\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\14\5\1\u01ae\2\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\17\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\7\5\1\u0155\11\5\4\0"+ - "\1\4\6\5\1\0\5\5\1\u01af\11\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\17\5\11\0\1\4\2\5\2\0"+ - "\2\5\1\273\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\10\5\1\u01b0\6\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\17\5\11\0\1\4\2\5\2\0\1\5"+ - "\1\u0154\1\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\12\5\1\276\4\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\16\5\1\u0142\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\1\5\1\u010b\12\5\1\354\2\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\1\5\1\126\4\5\1\0\10\5\1\u01b1\6\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\11\5\1\u01b2\5\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\13\5\1\367\3\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\1\5\1\u013e"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\11\5\1\u01b3"+ - "\5\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\6\5\1\u01b4"+ - "\1\5\1\311\2\5\1\u01b5\1\272\1\5\1\u0142\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\1\u013e\1\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\11\5\1\u0168\5\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\17\5\11\0\1\4"+ - "\2\5\2\0\1\5\1\u01b6\1\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\10\5\1\u01b7\6\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\2\5\1\u01b8\14\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\3\5\1\u01b9\13\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\11\5\1\u01ba\5\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\1\5\1\u01bb\15\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\6\5\1\u01bc\10\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\17\5\11\0\1\4"+ - "\2\5\2\0\1\u0121\2\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\7\5\1\u01bd\7\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\1\5\1\u01be\15\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\7\5\1\u01bf\7\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\17\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\1\5\1\125\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\3\5\1\u01c0\13\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\10\5\1\u0180\6\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\4\5\1\125\12\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\15\5\1\u01c1\1\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\17\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\1\5\1\u01c2\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\17\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\1\5\1\276\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\17\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\1\u01c3\1\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\11\5\1\u016f\5\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\3\5\1\272\13\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\17\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\5\5\1\273\13\5\4\0\1\4\6\5\1\0"+ - "\4\5\1\u01c4\12\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\1\5\1\272\15\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\13\5\1\u01b5\2\5\1\u0142\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\1\u013e\1\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\4\5\1\u0171\12\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\17\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\1\5\1\u0178\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\10\5\1\u01c5\6\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\3\u0101\4\201"+ - "\1\u0101\3\201\6\u0101\1\201\2\u0101\1\201\6\u0101\1\203"+ - "\5\u0101\1\201\1\u0101\1\0\2\u0101\2\201\5\u0101\1\201"+ - "\20\u0101\2\201\2\u0101\2\201\5\u0101\1\201\4\u0101\3\206"+ - "\4\41\1\206\3\41\6\206\1\41\2\206\1\41\13\206"+ - "\1\u0109\1\41\2\206\1\u010a\1\206\2\41\5\206\1\41"+ - "\20\206\2\41\2\206\2\41\5\206\1\41\4\206\1\4"+ - "\6\5\1\0\17\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\1\5\1\236\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\17\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\1\5\1\u01c6\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\7\5\1\u01c7\7\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\7\5\1\u01c8\7\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\17\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\1\5\1\125\17\5\4\0\1\4\6\5\1\0"+ - "\11\5\1\273\5\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\21\5\4\0\7\74\1\0\12\74"+ - "\1\u01c9\4\74\11\0\3\74\2\0\3\74\2\0\1\u01c9"+ - "\1\74\1\0\1\74\1\0\3\74\4\0\2\74\1\0"+ - "\21\74\4\0\7\74\1\0\5\74\1\u01c9\11\74\11\0"+ - "\3\74\2\0\3\74\2\0\1\74\1\u01c9\1\0\1\74"+ - "\1\0\3\74\4\0\2\74\1\0\21\74\4\0\7\4"+ - "\1\0\3\4\1\u0184\13\4\11\0\3\4\2\0\3\4"+ - "\2\0\2\4\1\0\1\4\1\0\3\4\4\0\2\4"+ - "\1\0\21\4\4\0\7\4\1\0\2\4\1\u01ca\14\4"+ - "\11\0\3\4\2\0\3\4\2\0\2\4\1\0\1\4"+ - "\1\0\3\4\4\0\2\4\1\0\21\4\4\0\7\4"+ - "\1\0\1\4\1\u01ca\15\4\11\0\3\4\2\0\3\4"+ - "\2\0\2\4\1\0\1\4\1\0\3\4\4\0\2\4"+ - "\1\0\21\4\4\0\7\4\1\0\10\4\1\u01cb\6\4"+ - "\11\0\3\4\2\0\3\4\2\0\2\4\1\0\1\4"+ - "\1\0\3\4\4\0\2\4\1\0\21\4\4\0\7\4"+ - "\1\0\1\4\1\u0184\15\4\11\0\3\4\2\0\3\4"+ - "\2\0\2\4\1\0\1\4\1\0\3\4\4\0\2\4"+ - "\1\0\21\4\4\0\7\4\1\0\5\4\1\u01cc\11\4"+ - "\11\0\3\4\2\0\3\4\2\0\2\4\1\0\1\4"+ - "\1\0\3\4\4\0\2\4\1\0\21\4\4\0\7\4"+ - "\1\0\15\4\1\u01cd\1\4\11\0\3\4\2\0\3\4"+ - "\2\0\2\4\1\0\1\4\1\0\3\4\4\0\2\4"+ - "\1\0\21\4\16\0\1\u011e\113\0\1\u01ce\120\0\1\u01cf"+ - "\2\0\1\u01d0\116\0\1\u01d1\106\0\1\u01d2\3\0\1\u0191"+ - "\122\0\1\u01d3\110\0\1\u01d0\111\0\1\u01d2\131\0\1\u01d4"+ - "\71\0\1\4\6\5\1\0\3\5\1\u01d5\13\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\14\5\1\u01bb\2\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\1\u01d6\16\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\11\5\1\u01b3\5\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\1\5\1\u01d7\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\10\5\1\u01d8\6\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\10\5\1\u01d9\6\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\7\5\1\u01da\7\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\16\5\1\u01db\11\0\1\4"+ - "\2\5\2\0\1\5\1\273\1\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\36\0\1\u01dc\101\0\1\u012a\51\0\1\u019b\26\0"+ - "\1\u019d\1\u01dd\4\u019d\1\u01dd\17\u019d\3\u01dd\1\u019d\1\u01dd"+ - "\2\0\2\u01dd\1\0\2\u019d\2\0\3\u019d\1\0\1\u01dd"+ - "\2\u019d\1\u01dd\1\u019d\1\0\1\u01dd\1\u019d\5\u01dd\2\u019d"+ - "\1\u01dd\21\u019d\1\0\1\u01dd\34\0\1\u01de\101\0\1\u012e"+ - "\51\0\1\u019e\26\0\1\u01a0\1\u01df\4\u01a0\1\u01df\17\u01a0"+ - "\3\u01df\1\u01a0\1\u01df\2\0\2\u01df\1\0\2\u01a0\2\0"+ - "\3\u01a0\1\0\1\u01df\2\u01a0\1\u01df\1\u01a0\1\0\1\u01df"+ - "\1\u01a0\5\u01df\2\u01a0\1\u01df\21\u01a0\1\0\1\u01df\2\0"+ - "\1\4\5\5\1\u01e0\1\0\17\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\17\5\11\0\1\4\2\5\2\0\3\5"+ - "\2\0\2\5\1\0\1\5\1\0\1\4\1\5\1\4"+ - "\4\0\2\5\1\0\20\5\1\u01e0\4\0\1\4\6\5"+ - "\1\0\5\5\1\u0168\11\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\1\5\1\313\15\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\6\5\1\273\2\5\1\273\5\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\1\5\1\u013e\15\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\11\5\1\u0121\5\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\7\5\1\354\7\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\4\5\1\272\12\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\11\5\1\272\5\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\12\5\1\u01bb\4\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\17\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\1\u01e1\1\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\13\5\1\u01a5\3\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\1\5\1\u01e2\15\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\1\5\1\155\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\11\5\1\u01e3\5\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\2\5\1\125\14\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\21\5\4\0"+ - "\1\4\6\5\1\0\13\5\1\u01b5\1\272\1\5\1\u0142"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\17\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\1\u013e\1\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\13\5\1\367\3\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\17\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\4\5\1\273\14\5"+ - "\4\0\1\4\6\5\1\0\7\5\1\u013f\7\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\1\273\4\5\1\273\4\5"+ - "\1\354\4\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\1\5\1\273\17\5\4\0\1\4\6\5"+ - "\1\0\7\5\1\u01bb\7\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\11\5\1\125\5\5\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\21\5\4\0\1\4\6\5"+ - "\1\0\17\5\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\1\125\1\5\1\0\21\5\4\0\1\4\6\5\1\0"+ - "\16\5\1\273\11\0\1\4\2\5\2\0\3\5\2\0"+ - "\2\5\1\0\1\5\1\0\1\4\1\5\1\4\4\0"+ - "\2\5\1\0\21\5\4\0\1\4\6\5\1\0\17\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\1\5\1\u01e4"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\4\5\1\u01e5"+ - "\12\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\17\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\1\5\1\u01e6\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\1\5\1\u01e7\15\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\4\5\1\u01e8\12\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\4\5\1\u01e9\12\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\11\5\1\273\5\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\1\u0180\20\5\4\0\1\4\6\5\1\0\14\5\1\u013e"+ - "\2\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\17\5\11\0"+ - "\1\4\2\5\2\0\1\273\2\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\17\5\11\0\1\4"+ - "\2\5\2\0\3\5\2\0\2\5\1\0\1\5\1\0"+ - "\1\4\1\5\1\4\4\0\2\5\1\0\1\u01ea\20\5"+ - "\4\0\1\4\6\5\1\0\14\5\1\144\2\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\15\5\1\273\1\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\1\4\6\5\1\0\11\5\1\u01a5\5\5\11\0"+ - "\1\4\2\5\2\0\3\5\2\0\2\5\1\0\1\5"+ - "\1\0\1\4\1\5\1\4\4\0\2\5\1\0\21\5"+ - "\4\0\7\4\1\0\7\4\1\u01ca\7\4\11\0\3\4"+ - "\2\0\3\4\2\0\2\4\1\0\1\4\1\0\3\4"+ - "\4\0\2\4\1\0\21\4\4\0\7\4\1\0\12\4"+ - "\1\u01eb\4\4\11\0\3\4\2\0\3\4\2\0\2\4"+ - "\1\0\1\4\1\0\3\4\4\0\2\4\1\0\21\4"+ - "\4\0\7\4\1\0\16\4\1\u01ec\11\0\3\4\2\0"+ - "\3\4\2\0\2\4\1\0\1\4\1\0\3\4\4\0"+ - "\2\4\1\0\21\4\17\0\1\u01cf\114\0\1\u01ed\114\0"+ - "\1\u01ed\124\0\1\u01ee\106\0\1\u01cf\121\0\1\u01ef\125\0"+ - "\1\u01f0\70\0\1\4\6\5\1\0\5\5\1\u0121\11\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\1\5\1\u01b1\15\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\10\5\1\u01f1\6\5"+ - "\11\0\1\4\2\5\2\0\3\5\2\0\2\5\1\0"+ - "\1\5\1\0\1\4\1\5\1\4\4\0\2\5\1\0"+ - "\21\5\4\0\1\4\6\5\1\0\1\273\4\5\1\273"+ - "\4\5\1\354\3\5\1\120\11\0\1\4\2\5\2\0"+ - "\3\5\2\0\2\5\1\0\1\5\1\0\1\4\1\5"+ - "\1\4\4\0\2\5\1\0\1\5\1\273\17\5\4\0"+ - "\1\4\6\5\1\0\16\5\1\u01db\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\17\5\11\0\1\4\2\5\2\0\1\5"+ - "\1\273\1\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\36\0\1\u019d"+ - "\115\0\1\u01a0\63\0\1\4\1\5\1\u01f2\4\5\1\0"+ - "\17\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\14\5\1\273"+ - "\2\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\11\5\1\u01f3"+ - "\5\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\14\5\1\u01d5"+ - "\2\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\1\5\1\u01f4"+ - "\15\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\10\5\1\276"+ - "\6\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\7\5\1\u013e"+ - "\7\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\12\5\1\270"+ - "\4\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\1\5\1\u010b"+ - "\15\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\1\4\6\5\1\0\11\5\1\306"+ - "\5\5\11\0\1\4\2\5\2\0\3\5\2\0\2\5"+ - "\1\0\1\5\1\0\1\4\1\5\1\4\4\0\2\5"+ - "\1\0\21\5\4\0\7\4\1\0\1\u0185\16\4\11\0"+ - "\3\4\2\0\3\4\2\0\2\4\1\0\1\4\1\0"+ - "\3\4\4\0\2\4\1\0\21\4\4\0\7\4\1\0"+ - "\14\4\1\u01ca\2\4\11\0\3\4\2\0\3\4\2\0"+ - "\2\4\1\0\1\4\1\0\3\4\4\0\2\4\1\0"+ - "\21\4\23\0\1\u01ed\120\0\1\u01f5\121\0\1\u01f6\67\0"+ - "\1\4\6\5\1\0\16\5\1\120\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\1\5\1\u01f7\4\5\1\0\17\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\10\5\1\u0173\6\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\4\0\1\4"+ - "\6\5\1\0\7\5\1\125\7\5\11\0\1\4\2\5"+ - "\2\0\3\5\2\0\2\5\1\0\1\5\1\0\1\4"+ - "\1\5\1\4\4\0\2\5\1\0\21\5\14\0\1\u01d0"+ - "\131\0\1\u01ed\71\0"; - - private static int [] zzUnpackTrans() { - int [] result = new int[37050]; - int offset = 0; - offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackTrans(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - value--; - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /* error codes */ - private static final int ZZ_UNKNOWN_ERROR = 0; - private static final int ZZ_NO_MATCH = 1; - private static final int ZZ_PUSHBACK_2BIG = 2; - - /* error messages for the codes above */ - private static final String ZZ_ERROR_MSG[] = { - "Unkown internal scanner error", - "Error: could not match input", - "Error: pushback value was too large" - }; - - /** - * ZZ_ATTRIBUTE[aState] contains the attributes of state aState - */ - private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); - - private static final String ZZ_ATTRIBUTE_PACKED_0 = - "\3\0\25\1\1\11\6\1\1\11\6\1\1\11\1\1"+ - "\2\11\7\1\1\11\5\1\1\11\105\1\1\0\2\11"+ - "\2\1\1\11\3\1\1\11\16\1\1\0\11\1\2\0"+ - "\1\11\6\0\6\1\1\0\122\1\1\11\7\1\1\11"+ - "\20\1\6\0\10\1\10\0\6\1\1\0\122\1\4\0"+ - "\1\1\4\0\10\1\2\0\1\1\2\0\56\1\7\0"+ - "\7\1\4\0\15\1\1\11\3\0\4\1\2\0\1\1"; - - private static int [] zzUnpackAttribute() { - int [] result = new int[503]; - int offset = 0; - offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAttribute(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - /** the input device */ - private java.io.Reader zzReader; - - /** the current state of the DFA */ - private int zzState; - - /** the current lexical state */ - private int zzLexicalState = YYINITIAL; - - /** this buffer contains the current text to be matched and is - the source of the yytext() string */ - private char zzBuffer[]; - - /** the textposition at the last accepting state */ - private int zzMarkedPos; - - /** the current text position in the buffer */ - private int zzCurrentPos; - - /** startRead marks the beginning of the yytext() string in the buffer */ - private int zzStartRead; - - /** endRead marks the last character in the buffer, that has been read - from input */ - private int zzEndRead; - - /** zzAtEOF == true <=> the scanner is at the EOF */ - private boolean zzAtEOF; - - /* user code: */ - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public CTokenMaker() { - super(); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addToken(int, int, int) - */ - private void addHyperlinkToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, true); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, int startOffset) { - super.addToken(array, start,end, tokenType, startOffset); - zzStartRead = zzMarkedPos; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { "//", null }; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - - // Start off in the proper state. - int state = Token.NULL; - switch (initialTokenType) { - case Token.COMMENT_MULTILINE: - state = MLC; - start = text.offset; - break; - default: - state = Token.NULL; - } - - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtEOF = false; - } - - - - - /** - * Creates a new scanner - * There is also a java.io.InputStream version of this constructor. - * - * @param in the java.io.Reader to read input from. - */ - public CTokenMaker(java.io.Reader in) { - this.zzReader = in; - } - - /** - * Creates a new scanner. - * There is also java.io.Reader version of this constructor. - * - * @param in the java.io.Inputstream to read input from. - */ - public CTokenMaker(java.io.InputStream in) { - this(new java.io.InputStreamReader(in)); - } - - /** - * Unpacks the compressed character translation table. - * - * @param packed the packed character translation table - * @return the unpacked character translation table - */ - private static char [] zzUnpackCMap(String packed) { - char [] map = new char[0x10000]; - int i = 0; /* index in packed string */ - int j = 0; /* index in unpacked array */ - while (i < 184) { - int count = packed.charAt(i++); - char value = packed.charAt(i++); - do map[j++] = value; while (--count > 0); - } - return map; - } - - - /** - * Closes the input stream. - */ - public final void yyclose() throws java.io.IOException { - zzAtEOF = true; /* indicate end of file */ - zzEndRead = zzStartRead; /* invalidate buffer */ - - if (zzReader != null) - zzReader.close(); - } - - - /** - * Returns the current lexical state. - */ - public final int yystate() { - return zzLexicalState; - } - - - /** - * Enters a new lexical state - * - * @param newState the new lexical state - */ - @Override - public final void yybegin(int newState) { - zzLexicalState = newState; - } - - - /** - * Returns the text matched by the current regular expression. - */ - public final String yytext() { - return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead ); - } - - - /** - * Returns the character at position pos from the - * matched text. - * - * It is equivalent to yytext().charAt(pos), but faster - * - * @param pos the position of the character to fetch. - * A value from 0 to yylength()-1. - * - * @return the character at position pos - */ - public final char yycharat(int pos) { - return zzBuffer[zzStartRead+pos]; - } - - - /** - * Returns the length of the matched text region. - */ - public final int yylength() { - return zzMarkedPos-zzStartRead; - } - - - /** - * Reports an error that occured while scanning. - * - * In a wellformed scanner (no or only correct usage of - * yypushback(int) and a match-all fallback rule) this method - * will only be called with things that "Can't Possibly Happen". - * If this method is called, something is seriously wrong - * (e.g. a JFlex bug producing a faulty scanner etc.). - * - * Usual syntax/scanner level error handling should be done - * in error fallback rules. - * - * @param errorCode the code of the errormessage to display - */ - private void zzScanError(int errorCode) { - String message; - try { - message = ZZ_ERROR_MSG[errorCode]; - } - catch (ArrayIndexOutOfBoundsException e) { - message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; - } - - throw new Error(message); - } - - - /** - * Pushes the specified amount of characters back into the input stream. - * - * They will be read again by then next call of the scanning method - * - * @param number the number of characters to be read again. - * This number must not be greater than yylength()! - */ - public void yypushback(int number) { - if ( number > yylength() ) - zzScanError(ZZ_PUSHBACK_2BIG); - - zzMarkedPos -= number; - } - - - /** - * Resumes scanning until the next regular expression is matched, - * the end of input is encountered or an I/O-Error occurs. - * - * @return the next token - * @exception java.io.IOException if any I/O-Error occurs - */ - public org.fife.ui.rsyntaxtextarea.Token yylex() throws java.io.IOException { - int zzInput; - int zzAction; - - // cached fields: - int zzCurrentPosL; - int zzMarkedPosL; - int zzEndReadL = zzEndRead; - char [] zzBufferL = zzBuffer; - char [] zzCMapL = ZZ_CMAP; - - int [] zzTransL = ZZ_TRANS; - int [] zzRowMapL = ZZ_ROWMAP; - int [] zzAttrL = ZZ_ATTRIBUTE; - - while (true) { - zzMarkedPosL = zzMarkedPos; - - zzAction = -1; - - zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; - - zzState = zzLexicalState; - - - zzForAction: { - while (true) { - - if (zzCurrentPosL < zzEndReadL) - zzInput = zzBufferL[zzCurrentPosL++]; - else if (zzAtEOF) { - zzInput = YYEOF; - break zzForAction; - } - else { - // store back cached positions - zzCurrentPos = zzCurrentPosL; - zzMarkedPos = zzMarkedPosL; - boolean eof = zzRefill(); - // get translated positions and possibly new buffer - zzCurrentPosL = zzCurrentPos; - zzMarkedPosL = zzMarkedPos; - zzBufferL = zzBuffer; - zzEndReadL = zzEndRead; - if (eof) { - zzInput = YYEOF; - break zzForAction; - } - else { - zzInput = zzBufferL[zzCurrentPosL++]; - } - } - int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; - if (zzNext == -1) break zzForAction; - zzState = zzNext; - - int zzAttributes = zzAttrL[zzState]; - if ( (zzAttributes & 1) == 1 ) { - zzAction = zzState; - zzMarkedPosL = zzCurrentPosL; - if ( (zzAttributes & 8) == 8 ) break zzForAction; - } - - } - } - - // store back cached position - zzMarkedPos = zzMarkedPosL; - - switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { - case 27: - { addToken(Token.PREPROCESSOR); - } - case 31: break; - case 7: - { addNullToken(); return firstToken; - } - case 32: break; - case 24: - { addToken(Token.LITERAL_CHAR); - } - case 33: break; - case 21: - { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); - } - case 34: break; - case 17: - { start = zzMarkedPos-2; yybegin(MLC); - } - case 35: break; - case 9: - { addToken(Token.WHITESPACE); - } - case 36: break; - case 26: - { addToken(Token.LITERAL_NUMBER_HEXADECIMAL); - } - case 37: break; - case 18: - { addToken(Token.ERROR_CHAR); /*addNullToken(); return firstToken;*/ - } - case 38: break; - case 25: - { addToken(Token.ERROR_STRING_DOUBLE); - } - case 39: break; - case 14: - { addToken(Token.LITERAL_NUMBER_FLOAT); - } - case 40: break; - case 15: - { addToken(Token.RESERVED_WORD); - } - case 41: break; - case 5: - { addToken(Token.SEPARATOR); - } - case 42: break; - case 2: - { addToken(Token.IDENTIFIER); - } - case 43: break; - case 12: - { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; - } - case 44: break; - case 16: - { start = zzMarkedPos-2; yybegin(EOL_COMMENT); - } - case 45: break; - case 22: - { addToken(Token.FUNCTION); - } - case 46: break; - case 6: - { addToken(Token.ERROR_CHAR); addNullToken(); return firstToken; - } - case 47: break; - case 8: - { addToken(Token.ERROR_STRING_DOUBLE); addNullToken(); return firstToken; - } - case 48: break; - case 23: - { addToken(Token.DATA_TYPE); - } - case 49: break; - case 1: - { addToken(Token.ERROR_IDENTIFIER); - } - case 50: break; - case 19: - { addToken(Token.ERROR_CHAR); - } - case 51: break; - case 20: - { addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); - } - case 52: break; - case 29: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_EOL); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_EOL); start = zzMarkedPos; - } - case 53: break; - case 28: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_MULTILINE); start = zzMarkedPos; - } - case 54: break; - case 30: - { addToken(Token.RESERVED_WORD_2); - } - case 55: break; - case 13: - { addToken(Token.ERROR_NUMBER_FORMAT); - } - case 56: break; - case 3: - { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); - } - case 57: break; - case 4: - { addToken(Token.OPERATOR); - } - case 58: break; - case 10: - { - } - case 59: break; - case 11: - { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; - } - case 60: break; - default: - if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { - zzAtEOF = true; - switch (zzLexicalState) { - case EOL_COMMENT: { - addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; - } - case 504: break; - case YYINITIAL: { - addNullToken(); return firstToken; - } - case 505: break; - case MLC: { - addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; - } - case 506: break; - default: - return null; - } - } - else { - zzScanError(ZZ_NO_MATCH); - } - } - } - } - - -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/ClojureTokenMaker.flex b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/ClojureTokenMaker.flex deleted file mode 100644 index a2b637d..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/ClojureTokenMaker.flex +++ /dev/null @@ -1,561 +0,0 @@ -/* - * 12/23/2010 - * - * ClojureTokenMaker.java - Scanner for Clojure. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * Scanner for the Clojure programming language.

- * - * The original version of this class was graciously donated by the folks at the - * Fiji project. - * This version has been modified to fix a few issues. - * Its original location was - * here. - *

- * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated ClojureTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * - */ -%% - -%public -%class ClojureTokenMaker -%extends AbstractJFlexTokenMaker -%unicode -%type org.fife.ui.rsyntaxtextarea.Token - - -%{ - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public ClojureTokenMaker() { - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addToken(int, int, int) - */ - private void addHyperlinkToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, true); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addHyperlinkToken(int, int, int) - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, false); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - * @param hyperlink Whether this token is a hyperlink. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, - int startOffset, boolean hyperlink) { - super.addToken(array, start,end, tokenType, startOffset, hyperlink); - zzStartRead = zzMarkedPos; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { ";", null }; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - - // Start off in the proper state. - int state = Token.NULL; - switch (initialTokenType) { - /*case Token.COMMENT_MULTILINE: - state = MLC; - start = text.offset; - break; - case Token.COMMENT_DOCUMENTATION: - state = DOCCOMMENT; - start = text.offset; - break;*/ - case Token.LITERAL_STRING_DOUBLE_QUOTE: - state = STRING; - start = text.offset; - break; - default: - state = Token.NULL; - } - - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtBOL = true; - zzAtEOF = false; - } - - -%} - - -LineCommentBegin = (";") -Keyword = ([:][a-zA-Z?!\-+*/][a-zA-Z0-9?!\-+*/]*) -NonzeroDigit = [1-9] -Digit = ("0"|{NonzeroDigit}) -HexDigit = ({Digit}|[A-Fa-f]) -OctalDigit = ([0-7]) -EscapedSourceCharacter = ("u"{HexDigit}{HexDigit}{HexDigit}{HexDigit}) -Escape = ("\\"(([btnfr\"'\\])|([0123]{OctalDigit}?{OctalDigit}?)|({OctalDigit}{OctalDigit}?)|{EscapedSourceCharacter})) -AnyCharacterButDoubleQuoteOrBackSlash = ([^\\\"\n]) -StringLiteralStart = ([\"]) -CharLiteral = ("\\."|"\\space"|"\\tab"|"\\newline") -AnyCharacter = ([.]*) -Separator = ([\(\)\{\}\[\]]) -NonSeparator = ([^\t\f\r\n\ \(\)\{\}\[\]\;\,\.\=\>\<\!\~\?\:\+\-\*\/\&\|\^\%\"\']) - -BooleanLiteral =("true"|"false") - -LineTerminator = (\n) -WhiteSpace = ([ \t\f]) - -IntegerHelper1 = (({NonzeroDigit}{Digit}*)|"0") -IntegerHelper2 = ("0"(([xX]{HexDigit}+)|({OctalDigit}*))) -IntegerLiteral = ({IntegerHelper1}[lL]?) -HexLiteral = ({IntegerHelper2}[lL]?) -FloatHelper1 = ([fFdD]?) -FloatHelper2 = ([eE][+-]?{Digit}+{FloatHelper1}) -FloatLiteral1 = ({Digit}+"."({FloatHelper1}|{FloatHelper2}|{Digit}+({FloatHelper1}|{FloatHelper2}))) -FloatLiteral2 = ("."{Digit}+({FloatHelper1}|{FloatHelper2})) -FloatLiteral3 = ({Digit}+{FloatHelper2}) -FloatLiteral = ({FloatLiteral1}|{FloatLiteral2}|{FloatLiteral3}|({Digit}+[fFdD])) -ErrorNumberFormat = (({IntegerLiteral}|{HexLiteral}|{FloatLiteral}){NonSeparator}+) - - -Nil = ("nil") -Quote = (\('\|`\)) -Unquote = (\(\~@\|\~\)) -DispatchStart = ("#^"|"#^{") -Dispatch = ({DispatchStart}[^\s\t\n;\"}]*([ \t\n;\"]|"}")) -VarQuote = ("#'"[.]*[ \t\n;(\"]) -DefName = ([a-zA-Z0-9?!\-+*\./<>_]*) - -NonAssignmentOperator = ("+"|"-"|"<="|"^"|"<"|"*"|">="|"%"|">"|"/"|"!="|"?"|">>"|"!"|"&"|"=="|":"|">>"|"~"|">>>") -AssignmentOperator = ("=") -Operator = ({NonAssignmentOperator}|{AssignmentOperator}) - -Letter = [A-Za-z] -LetterOrUnderscore = ({Letter}|[_]) -Digit = [0-9] -URLGenDelim = ([:\/\?#\[\]@]) -URLSubDelim = ([\!\$&'\(\)\*\+,;=]) -URLUnreserved = ({LetterOrUnderscore}|{Digit}|[\-\.\~]) -URLCharacter = ({URLGenDelim}|{URLSubDelim}|{URLUnreserved}|[%]) -URLCharacters = ({URLCharacter}*) -URLEndCharacter = ([\/\$]|{Letter}|{Digit}) -URL = (((https?|f(tp|ile))"://"|"www.")({URLCharacters}{URLEndCharacter})?) - - -%state STRING -%state EOL_COMMENT - -%% - - { - -"case" | -"class" | -"cond" | -"condp" | -"def" | -"defmacro" | -"defn" | -"do" | -"fn" | -"for" | -"if" | -"if-let" | -"if-not" | -"instance?" | -"let" | -"loop" | -"monitor-enter" | -"monitor-exit" | -"new" | -"quote" | -"recur" | -"set!" | -"this" | -"throw" | -"try-finally" | -"var" | -"when" | -"when-first" | -"when-let" | -"when-not" { addToken(Token.RESERVED_WORD); } - -"*warn-on-reflection*" | -"*1" | -"*2" | -"*3" | -"*agent*" | -"*allow-unresolved-args*" | -"*assert*" | -"*clojure-version*" | -"*command-line-args*" | -"*compile-files*" | -"*compile-path*" | -"*e" | -"*err*" | -"*file*" | -"*flush-on-newline*" | -"*fn-loader*" | -"*in*" | -"*math-context*" | -"*ns*" | -"*out*" | -"*print-dup*" | -"*print-length*" | -"*print-level*" | -"*print-meta*" | -"*print-readably*" | -"*read-eval*" | -"*source-path*" | -"*unchecked-math*" | -"*use-context-classloader*" { addToken(Token.VARIABLE); } - -"*current-namespace*" | -"*in*" | -"*out*" | -"*print-meta*" -"->" | -".." | -"agent" | -"agent-errors" | -"agent-of" | -"aget" | -"alter" | -"and" | -"any" | -"appl" | -"apply" | -"array" | -"aset" | -"aset-boolean" | -"aset-byte" | -"aset-double" | -"aset-float" | -"aset-int" | -"aset-long" | -"aset-short" | -"assoc" | -"binding" | -"boolean" | -"byte" | -"char" | -"clear-agent-errors" | -"commute" | -"comp" | -"complement" | -"concat" | -"conj" | -"cons" | -"constantly" | -"count" | -"cycle" | -"dec" | -"defmethod" | -"defmulti" | -"delay" | -"deref" | -"dissoc" | -"doseq" | -"dotimes" | -"doto" | -"double" | -"drop" | -"drop-while" | -"ensure" | -"eql-ref?" | -"eql?" | -"eval" | -"every" | -"ffirst" | -"filter" | -"find" | -"find-var" | -"first" | -"float" | -"fnseq" | -"frest" | -"gensym" | -"get" | -"hash-map" | -"identity" | -"implement" | -"import" | -"in-namespace" | -"inc" | -"int" | -"into" | -"into-array" | -"iterate" | -"key" | -"keys" | -"lazy-cons" | -"list" | -"list*" | -"load-file" | -"locking" | -"long" | -"make-array" | -"make-proxy" | -"map" | -"mapcat" | -"max" | -"memfn" | -"merge" | -"meta" | -"min" | -"name" | -"namespace" | -"neg?" | -"newline" | -"nil?" | -"not" | -"not-any" | -"not-every" | -"nth" | -"or" | -"peek" | -"pmap" | -"pop" | -"pos?" | -"print" | -"prn" | -"quot" | -"range" | -"read" | -"reduce" | -"ref" | -"refer" | -"rem" | -"remove-method" | -"repeat" | -"replicate" | -"rest" | -"reverse" | -"rfirst" | -"rrest" | -"rseq" | -"second" | -"seq" | -"set" | -"short" | -"sorted-map" | -"sorted-map-by" | -"split-at" | -"split-with" | -"str" | -"strcat" | -"sym" | -"sync" | -"take" | -"take-while" | -"time" | -"unimport" | -"unintern" | -"unrefer" | -"val" | -"vals" | -"vector" | -"with-meta" | -"zero?" | -"zipmap" { addToken(Token.FUNCTION); } - -{LineTerminator} { addNullToken(); return firstToken; } - -{WhiteSpace}+ { addToken(Token.WHITESPACE); } - -{CharLiteral} { addToken(Token.LITERAL_CHAR); } -{StringLiteralStart} { start = zzMarkedPos-1; yybegin(STRING); } - -{Nil} { addToken(Token.DATA_TYPE); } - -{BooleanLiteral} { addToken(Token.LITERAL_BOOLEAN); } - - -{Quote} { addToken(Token.SEPARATOR); } -{Unquote} { addToken(Token.SEPARATOR); } -{VarQuote} { addToken(Token.SEPARATOR); } -{Dispatch} { addToken(Token.DATA_TYPE); } - -{LineCommentBegin} { start = zzMarkedPos-1; yybegin(EOL_COMMENT); } - -{Separator} { addToken(Token.SEPARATOR); } - -{Operator} { addToken(Token.OPERATOR); } - -{IntegerLiteral} { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); } -{HexLiteral} { addToken(Token.LITERAL_NUMBER_HEXADECIMAL); } -{FloatLiteral} { addToken(Token.LITERAL_NUMBER_FLOAT); } -{ErrorNumberFormat} { addToken(Token.ERROR_NUMBER_FORMAT); } -{Keyword} { addToken(Token.PREPROCESSOR); } -{DefName} { addToken(Token.IDENTIFIER); } - -<> { addNullToken(); return firstToken; } - -. { addToken(Token.ERROR_IDENTIFIER); } - -} - - { - [^\n\\\"]+ {} - \\.? { /* Skip escaped chars. */ } - \"\" {} - \" { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); } - \n | - <> { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); return firstToken; } -} - - { - [^hwf\n]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_EOL); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_EOL); start = zzMarkedPos; } - [hwf] {} - \n | - <> { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; } - -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/ClojureTokenMaker.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/ClojureTokenMaker.java deleted file mode 100644 index 9cf0f94..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/ClojureTokenMaker.java +++ /dev/null @@ -1,2304 +0,0 @@ -/* The following code was generated by JFlex 1.4.1 on 9/14/13 7:14 PM */ - -/* - * 12/23/2010 - * - * ClojureTokenMaker.java - Scanner for Clojure. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * Scanner for the Clojure programming language.

- * - * The original version of this class was graciously donated by the folks at the - * Fiji project. - * This version has been modified to fix a few issues. - * Its original location was - * here. - *

- * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated ClojureTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * - */ - -public class ClojureTokenMaker extends AbstractJFlexTokenMaker { - - /** This character denotes the end of file */ - public static final int YYEOF = -1; - - /** lexical states */ - public static final int EOL_COMMENT = 2; - public static final int STRING = 1; - public static final int YYINITIAL = 0; - - /** - * Translates characters to character classes - */ - private static final String ZZ_CMAP_PACKED = - "\11\0\1\57\1\16\1\0\1\37\1\35\22\0\1\60\1\71\1\17"+ - "\1\53\1\72\1\67\1\67\1\12\1\45\1\50\1\66\1\63\1\73"+ - "\1\44\1\20\1\70\1\4\1\15\1\15\1\15\4\7\2\5\1\2"+ - "\1\1\1\64\1\65\1\62\1\36\1\52\3\6\1\42\1\43\1\42"+ - "\5\3\1\41\13\3\1\40\2\3\1\34\1\11\1\34\1\54\1\61"+ - "\1\47\1\23\1\27\1\24\1\76\1\25\1\14\1\104\1\74\1\33"+ - "\1\105\1\106\1\32\1\77\1\30\1\75\1\22\1\101\1\13\1\21"+ - "\1\26\1\10\1\103\1\31\1\100\1\102\1\107\1\55\1\46\1\56"+ - "\1\51\uff81\0"; - - /** - * Translates characters to character classes - */ - private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); - - /** - * Translates DFA states to action switch labels. - */ - private static final int [] ZZ_ACTION = zzUnpackAction(); - - private static final String ZZ_ACTION_PACKED_0 = - "\1\1\2\0\1\2\1\3\1\4\1\1\2\5\1\1"+ - "\1\2\2\1\1\6\1\7\14\1\1\10\1\4\1\11"+ - "\1\10\1\4\1\2\4\4\11\1\1\12\1\13\1\14"+ - "\1\15\2\12\1\16\2\12\1\17\2\20\1\21\1\20"+ - "\2\22\1\20\1\5\1\20\1\1\1\23\3\0\6\1"+ - "\1\24\3\1\1\25\52\1\1\24\4\1\4\0\1\4"+ - "\3\1\1\26\4\1\1\26\11\1\1\24\13\1\1\13"+ - "\1\12\4\0\1\21\1\22\1\1\1\21\2\1\3\0"+ - "\4\1\1\25\5\1\1\25\4\1\1\24\2\1\2\25"+ - "\40\1\1\24\1\27\1\25\13\1\1\25\3\1\2\0"+ - "\2\27\26\1\1\24\10\1\1\25\4\1\4\0\3\1"+ - "\2\0\4\1\1\25\4\1\2\25\2\1\1\25\1\24"+ - "\1\25\3\1\1\30\1\1\1\25\3\1\1\25\3\1"+ - "\1\24\1\1\1\25\5\1\1\25\3\1\2\0\26\1"+ - "\1\25\2\1\1\0\1\31\1\0\1\1\2\0\7\1"+ - "\1\25\52\1\2\0\1\1\1\0\176\1\1\25\50\1"+ - "\1\26\44\1"; - - private static int [] zzUnpackAction() { - int [] result = new int[629]; - int offset = 0; - offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAction(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /** - * Translates a state to a row index in the transition table - */ - private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); - - private static final String ZZ_ROWMAP_PACKED_0 = - "\0\0\0\110\0\220\0\330\0\330\0\u0120\0\u0168\0\u01b0"+ - "\0\u01f8\0\u0240\0\u0288\0\u02d0\0\u0318\0\330\0\330\0\u0360"+ - "\0\u03a8\0\u03f0\0\u0438\0\u0480\0\u04c8\0\u0510\0\u0558\0\u05a0"+ - "\0\u05e8\0\u0630\0\u0678\0\330\0\u0168\0\u06c0\0\u0708\0\330"+ - "\0\u0750\0\u0798\0\u07e0\0\u0828\0\u0870\0\u08b8\0\u0900\0\u0948"+ - "\0\u0990\0\u09d8\0\u0a20\0\u0a68\0\u0ab0\0\u0af8\0\u0b40\0\u0b88"+ - "\0\330\0\u0bd0\0\u0c18\0\u0c60\0\330\0\u0ca8\0\u0cf0\0\u0d38"+ - "\0\u0d80\0\u0dc8\0\u0e10\0\u0e58\0\u0dc8\0\u0ea0\0\u0ee8\0\u0dc8"+ - "\0\u0f30\0\u0f78\0\330\0\u0fc0\0\u1008\0\u1050\0\u1098\0\u10e0"+ - "\0\u1128\0\u1170\0\u11b8\0\u1200\0\u1248\0\u1290\0\u12d8\0\u1320"+ - "\0\u0168\0\u1368\0\u13b0\0\u13f8\0\u1440\0\u1488\0\u14d0\0\u1518"+ - "\0\u1560\0\u15a8\0\u15f0\0\u1638\0\u1680\0\u16c8\0\u1710\0\u1758"+ - "\0\u17a0\0\u17e8\0\u1830\0\u1878\0\u18c0\0\u1908\0\u1950\0\u1998"+ - "\0\u19e0\0\u1a28\0\u1a70\0\u1ab8\0\u1b00\0\u1b48\0\u1b90\0\u1bd8"+ - "\0\u1c20\0\u1c68\0\u1cb0\0\u1cf8\0\u1d40\0\u1d88\0\u1dd0\0\u1e18"+ - "\0\u1e60\0\u1ea8\0\u1ef0\0\u1f38\0\u1f80\0\u1fc8\0\u2010\0\u2058"+ - "\0\u20a0\0\u20e8\0\u2130\0\u2178\0\u21c0\0\u2208\0\u2250\0\u2298"+ - "\0\u0168\0\u22e0\0\u2328\0\u2370\0\u23b8\0\u2400\0\u2448\0\u2490"+ - "\0\u24d8\0\u2520\0\u2568\0\u25b0\0\u25f8\0\u2640\0\u2688\0\u26d0"+ - "\0\u2718\0\u2760\0\u27a8\0\u27f0\0\u2838\0\u2880\0\u28c8\0\u2910"+ - "\0\u2958\0\u29a0\0\u29e8\0\330\0\330\0\u2a30\0\u2a78\0\u2ac0"+ - "\0\u2b08\0\u0dc8\0\u2b50\0\u2b98\0\u2be0\0\u2c28\0\u2c70\0\u2cb8"+ - "\0\u2d00\0\u2d48\0\u2d90\0\u2dd8\0\u2e20\0\u2e68\0\u2eb0\0\u2ef8"+ - "\0\u2f40\0\u2f88\0\u2fd0\0\u3018\0\u3060\0\u30a8\0\u30f0\0\u3138"+ - "\0\u3180\0\u0168\0\u31c8\0\u3210\0\u3258\0\u32a0\0\u32e8\0\u3330"+ - "\0\u3378\0\u33c0\0\u3408\0\u3450\0\u3498\0\u34e0\0\u3528\0\u3570"+ - "\0\u35b8\0\u2eb0\0\u3600\0\u3648\0\u3690\0\u36d8\0\u3720\0\u3768"+ - "\0\u37b0\0\u37f8\0\u3840\0\u3888\0\u38d0\0\u3918\0\u3960\0\u39a8"+ - "\0\u39f0\0\u3a38\0\u3a80\0\u3ac8\0\u3b10\0\u3b58\0\u3ba0\0\u3450"+ - "\0\u3be8\0\u3c30\0\u3c78\0\u3cc0\0\u3d08\0\u3d50\0\u3d98\0\u3de0"+ - "\0\u3e28\0\u3e70\0\u3eb8\0\u3f00\0\u3f48\0\u3f90\0\u3fd8\0\u4020"+ - "\0\u4068\0\u40b0\0\330\0\u2178\0\u40f8\0\u4140\0\u4188\0\u41d0"+ - "\0\u4218\0\u4260\0\u42a8\0\u42f0\0\u4338\0\u4380\0\u43c8\0\u4410"+ - "\0\u4458\0\u44a0\0\u44e8\0\u4530\0\u4578\0\u45c0\0\u4608\0\u4650"+ - "\0\u4698\0\u46e0\0\u4728\0\u4770\0\u47b8\0\u4800\0\u4848\0\u4890"+ - "\0\u48d8\0\u4920\0\u4968\0\u49b0\0\u49f8\0\u4a40\0\u4a88\0\u4ad0"+ - "\0\u4b18\0\u4b60\0\u4ba8\0\u4bf0\0\u4c38\0\u4c80\0\u4cc8\0\u4d10"+ - "\0\u4d58\0\u4da0\0\u4de8\0\u4e30\0\u4e78\0\u4ec0\0\u4f08\0\u4f50"+ - "\0\u4f98\0\u4fe0\0\u5028\0\u4fe0\0\u5070\0\u50b8\0\u5100\0\u3e28"+ - "\0\u5148\0\u5190\0\u51d8\0\u5220\0\u0168\0\u5268\0\u52b0\0\u52f8"+ - "\0\u5340\0\u5388\0\u53d0\0\u5418\0\u5460\0\u54a8\0\u54f0\0\u5538"+ - "\0\u5580\0\u55c8\0\u5610\0\u5658\0\u56a0\0\u56e8\0\u5730\0\u5778"+ - "\0\u57c0\0\u5808\0\u5850\0\u5898\0\u58e0\0\u5928\0\u5970\0\u59b8"+ - "\0\u5a00\0\u5a48\0\u5a90\0\u5ad8\0\u5b20\0\u5b68\0\u5bb0\0\u5bf8"+ - "\0\u5c40\0\u5c88\0\u5cd0\0\u5d18\0\u5d60\0\u5da8\0\u5df0\0\u5e38"+ - "\0\u5e80\0\u5ec8\0\u3648\0\u5f10\0\u5f58\0\u5fa0\0\u5fe8\0\u6030"+ - "\0\u6078\0\u60c0\0\u6108\0\u6150\0\u6198\0\u61e0\0\u6228\0\u6270"+ - "\0\u62b8\0\u6300\0\u6348\0\u6390\0\u63d8\0\u6420\0\u6468\0\u64b0"+ - "\0\u64f8\0\u6540\0\u6588\0\u65d0\0\u6618\0\u6660\0\u66a8\0\u66f0"+ - "\0\u6738\0\u6780\0\u67c8\0\u6810\0\u6858\0\u68a0\0\u68e8\0\u6930"+ - "\0\u6978\0\u69c0\0\u6a08\0\u6a50\0\u6a98\0\u6ae0\0\u6b28\0\u6b70"+ - "\0\u6bb8\0\u6c00\0\u6c48\0\u6c90\0\u6cd8\0\u6d20\0\u6d68\0\u6db0"+ - "\0\u6df8\0\u6e40\0\u6e88\0\u6ed0\0\u6f18\0\u6f60\0\u5fe8\0\u6fa8"+ - "\0\u6ff0\0\u7038\0\u7080\0\u70c8\0\u7110\0\u7158\0\u71a0\0\u71e8"+ - "\0\u7230\0\u7278\0\u72c0\0\u7308\0\u7350\0\u7398\0\u73e0\0\u7428"+ - "\0\u7470\0\u74b8\0\u7500\0\u7548\0\u7590\0\u75d8\0\u7620\0\u7668"+ - "\0\u76b0\0\u76f8\0\u7740\0\u7788\0\u77d0\0\u7818\0\u7860\0\u78a8"+ - "\0\u78f0\0\u7938\0\u7980\0\u79c8\0\u7a10\0\u7a58\0\u7aa0\0\u7ae8"+ - "\0\u7b30\0\u7b78\0\u7bc0\0\u49b0\0\u7c08\0\u7c50\0\u7c98\0\u7ce0"+ - "\0\u7d28\0\u7d70\0\u7db8\0\u7e00\0\u7e48\0\u7e90\0\u7ed8\0\u7f20"+ - "\0\u7f68\0\u7fb0\0\u53d0\0\u7ff8\0\u8040\0\u8088\0\u80d0\0\u8118"+ - "\0\u8160\0\u81a8\0\u81f0\0\u8238\0\u8280\0\u82c8\0\u8310\0\u8358"+ - "\0\u83a0\0\u83e8\0\u8430\0\u8478\0\u84c0\0\u8508\0\u8550\0\u8598"+ - "\0\u85e0\0\u8628\0\u8670\0\u86b8\0\u8700\0\u8748\0\u8790\0\u87d8"+ - "\0\u8820\0\u8868\0\u88b0\0\u88f8\0\u8940\0\u8988\0\u89d0\0\u8a18"+ - "\0\u8a60\0\u8aa8\0\u8af0\0\u8b38\0\u8b80\0\u8bc8\0\u8c10\0\u8c58"+ - "\0\u8ca0\0\u8ce8\0\u8d30\0\u8d78\0\u8dc0\0\u8e08\0\u8e50\0\u8e98"+ - "\0\u8ee0\0\u8f28\0\u8f70\0\u8fb8\0\u9000\0\u9048\0\u9090\0\u90d8"+ - "\0\u9120\0\u9168\0\u91b0\0\u91f8\0\u9240\0\u9288\0\u92d0\0\u9318"+ - "\0\u9360\0\u93a8\0\u93f0\0\u9438\0\u9480\0\u94c8\0\u9510\0\u9558"+ - "\0\u95a0\0\u95e8\0\u9630\0\u9678\0\u96c0\0\u9708\0\u9750\0\u9798"+ - "\0\u97e0\0\u9828\0\u9870\0\u98b8\0\u9900\0\u9948\0\u9990\0\u99d8"+ - "\0\u9a20\0\u9a68\0\u9ab0\0\u9af8\0\u9b40\0\u9b88\0\u9bd0\0\u9c18"+ - "\0\u9c60\0\u9ca8\0\u9cf0\0\u9d38\0\u9d80\0\u9dc8\0\u9e10\0\u9e58"+ - "\0\u9ea0\0\u9ee8\0\u9f30\0\u9f78\0\u9fc0\0\ua008\0\ua050\0\ua098"+ - "\0\ua0e0\0\ua128\0\ua170\0\ua1b8\0\ua200\0\ua248\0\ua290\0\ua2d8"+ - "\0\ua320\0\ua368\0\ua3b0\0\ua3f8\0\ua440\0\ua488\0\ua4d0\0\ua518"+ - "\0\ua560\0\ua5a8\0\ua5f0\0\ua638\0\ua680\0\ua6c8\0\ua710\0\ua758"+ - "\0\ua7a0\0\ua7e8\0\ua830\0\ua878\0\u5580"; - - private static int [] zzUnpackRowMap() { - int [] result = new int[629]; - int offset = 0; - offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackRowMap(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int high = packed.charAt(i++) << 16; - result[j++] = high | packed.charAt(i++); - } - return j; - } - - /** - * The transition table of the DFA - */ - private static final int [] ZZ_TRANS = zzUnpackTrans(); - - private static final String ZZ_TRANS_PACKED_0 = - "\1\4\1\5\1\6\1\7\1\10\1\11\1\7\1\11"+ - "\1\12\1\13\1\4\1\14\1\15\1\11\1\16\1\17"+ - "\1\20\1\21\1\22\1\23\1\24\1\25\1\26\1\27"+ - "\1\30\1\31\1\32\1\33\1\34\1\4\1\35\1\36"+ - "\4\7\1\35\1\37\2\4\1\34\1\40\1\4\1\41"+ - "\1\40\2\34\2\36\1\7\1\42\1\35\1\43\1\44"+ - "\1\45\1\40\1\35\1\43\2\4\1\46\1\47\1\50"+ - "\1\51\1\7\1\52\1\7\1\53\1\54\1\7\1\55"+ - "\1\56\11\57\1\60\4\57\1\61\1\62\70\57\14\63"+ - "\1\64\1\63\1\65\12\63\1\66\42\63\1\67\13\63"+ - "\113\0\1\70\2\0\1\70\1\0\1\70\2\0\2\70"+ - "\4\0\13\70\2\0\1\70\1\0\5\70\16\0\1\70"+ - "\2\0\1\70\1\0\2\70\2\0\14\70\3\0\6\7"+ - "\2\0\3\7\2\0\14\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\1\71\2\0\1\72\1\73\1\74\1\72\1\73\1\72"+ - "\1\71\1\0\1\72\1\75\1\73\2\0\1\76\4\72"+ - "\1\77\4\72\1\100\1\72\2\0\1\7\1\0\1\101"+ - "\1\100\1\75\1\77\1\7\2\0\1\71\2\0\2\71"+ - "\5\0\1\72\3\7\1\0\1\7\1\0\2\7\1\71"+ - "\1\0\2\72\1\75\1\72\1\101\7\72\1\71\2\0"+ - "\1\72\2\11\1\72\1\11\1\72\1\71\1\0\1\72"+ - "\1\75\1\11\2\0\1\76\4\72\1\77\4\72\1\100"+ - "\1\72\2\0\1\7\1\0\1\72\1\100\1\75\1\77"+ - "\1\7\2\0\1\71\2\0\2\71\5\0\1\72\3\7"+ - "\1\0\1\7\1\0\2\7\1\71\1\0\2\72\1\75"+ - "\11\72\3\0\6\7\2\0\3\7\2\0\10\7\1\102"+ - "\3\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\20\0\1\103\1\104"+ - "\4\0\1\105\1\0\1\106\62\0\6\7\2\0\1\107"+ - "\1\110\1\7\2\0\1\7\1\111\1\7\1\112\1\7"+ - "\1\113\6\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\14\7\3\0\6\7"+ - "\2\0\1\107\1\110\1\7\2\0\3\7\1\114\4\7"+ - "\1\115\1\7\1\116\1\117\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\1\7"+ - "\1\120\12\7\3\0\1\7\2\76\1\7\1\76\1\7"+ - "\2\0\2\7\1\76\2\0\1\121\13\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\14\7\3\0\6\7\2\0\3\7\2\0\2\7"+ - "\1\122\2\7\1\123\1\124\5\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\1\125\1\126\4\7\1\127\5\7\3\0\6\7\2\0"+ - "\1\130\2\7\2\0\5\7\1\131\6\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\1\7\1\132\1\7\1\133\10\7\3\0\6\7"+ - "\2\0\1\134\2\7\2\0\1\7\1\135\1\136\5\7"+ - "\1\137\1\7\1\140\1\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\10\7"+ - "\1\141\3\7\3\0\6\7\2\0\3\7\2\0\3\7"+ - "\1\142\6\7\1\143\1\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\1\144"+ - "\1\145\4\7\1\146\5\7\3\0\6\7\2\0\3\7"+ - "\2\0\10\7\1\147\3\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\5\7"+ - "\1\150\1\7\1\151\4\7\3\0\6\7\2\0\1\152"+ - "\2\7\2\0\3\7\1\153\7\7\1\154\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\1\155\13\7\3\0\6\7\2\0\3\7\2\0"+ - "\13\7\1\156\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\1\7\1\157\4\7"+ - "\1\160\5\7\3\0\6\7\2\0\3\7\2\0\3\7"+ - "\1\161\1\7\1\162\1\163\4\7\1\164\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\1\7\1\165\12\7\3\0\6\7\2\0\3\7"+ - "\2\0\13\7\1\166\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\1\167\13\7"+ - "\3\0\6\7\2\0\3\7\2\0\3\7\1\170\1\7"+ - "\1\171\5\7\1\172\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\1\7\1\173"+ - "\12\7\3\0\6\7\2\0\1\7\1\174\1\7\2\0"+ - "\6\7\1\175\1\7\1\176\3\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\2\7\1\177\1\200\10\7\37\0\1\36\17\0\2\36"+ - "\41\0\1\201\36\0\1\202\50\0\1\203\41\0\1\204"+ - "\36\0\6\7\2\0\3\7\2\0\14\7\2\0\1\7"+ - "\1\0\5\7\14\0\1\7\1\205\2\7\1\40\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\14\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\40\1\7\1\0\2\7\2\0\14\7\65\0\1\40"+ - "\25\0\5\7\1\206\2\0\1\207\1\210\1\211\2\0"+ - "\1\7\1\212\1\213\1\214\1\215\1\216\2\7\1\217"+ - "\1\220\1\7\1\221\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\1\7\1\222"+ - "\1\7\1\223\10\7\3\0\6\7\2\0\3\7\2\0"+ - "\3\7\1\224\10\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\6\7\2\0\1\121\2\7\2\0\14\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\14\7\3\0\6\7\2\0\1\225\2\7\2\0"+ - "\5\7\1\226\5\7\1\227\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\1\7"+ - "\1\230\12\7\3\0\6\7\2\0\3\7\2\0\3\7"+ - "\1\231\1\7\1\232\5\7\1\233\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\1\7\1\234\12\7\3\0\5\7\1\235\2\0\3\7"+ - "\2\0\14\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\14\7\3\0\6\7"+ - "\2\0\3\7\2\0\3\7\1\236\1\7\1\237\6\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\5\7\1\240\6\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\5\7\1\241\6\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\5\7\1\242\5\7\1\243\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\11\57\1\0\4\57\2\0\70\57\16\244\1\0"+ - "\71\244\17\0\1\245\70\0\14\63\1\0\1\63\1\0"+ - "\12\63\1\0\42\63\1\0\13\63\26\0\1\246\4\0"+ - "\1\247\105\0\1\250\104\0\1\251\64\0\6\70\2\0"+ - "\3\70\3\0\13\70\2\0\1\70\1\0\5\70\16\0"+ - "\1\70\2\0\1\70\1\0\2\70\2\0\14\70\1\71"+ - "\2\0\7\71\1\0\3\71\3\0\13\71\4\0\4\71"+ - "\3\0\1\71\2\0\2\71\5\0\1\71\10\0\1\71"+ - "\1\0\15\71\2\0\6\72\1\71\1\0\3\72\2\0"+ - "\1\7\13\72\2\0\1\7\1\0\4\72\1\7\2\0"+ - "\1\71\2\0\2\71\5\0\1\72\3\7\1\0\1\7"+ - "\1\0\2\7\1\71\1\0\14\72\1\71\2\0\1\72"+ - "\1\73\1\74\1\72\1\73\1\72\1\71\1\0\1\72"+ - "\1\75\1\73\2\0\1\76\4\72\1\77\4\72\1\252"+ - "\1\72\2\0\1\7\1\0\1\72\1\252\1\75\1\77"+ - "\1\7\2\0\1\71\2\0\2\71\5\0\1\72\3\7"+ - "\1\0\1\7\1\0\2\7\1\71\1\0\2\72\1\75"+ - "\11\72\1\71\2\0\1\72\2\74\1\72\1\74\1\72"+ - "\1\71\1\0\1\72\1\75\1\74\2\0\1\76\4\72"+ - "\1\77\6\72\2\0\1\7\1\0\2\72\1\75\1\77"+ - "\1\7\2\0\1\71\2\0\2\71\5\0\1\72\3\7"+ - "\1\0\1\7\1\0\2\7\1\71\1\0\2\72\1\75"+ - "\11\72\1\71\2\0\1\72\2\76\1\72\1\76\1\72"+ - "\1\71\1\0\1\72\1\75\1\76\2\0\1\7\4\72"+ - "\1\77\6\72\2\0\1\7\1\0\2\72\1\75\1\77"+ - "\1\7\2\0\1\71\2\0\2\71\5\0\1\72\3\7"+ - "\1\0\1\7\1\0\2\7\1\71\1\0\2\72\1\75"+ - "\11\72\1\71\2\0\1\72\2\253\1\72\1\253\1\72"+ - "\1\71\1\0\2\72\1\253\2\0\1\7\13\72\2\0"+ - "\1\7\1\0\4\72\1\254\2\0\1\71\2\0\2\71"+ - "\5\0\1\72\1\7\1\254\1\7\1\0\1\7\1\0"+ - "\2\7\1\71\1\0\14\72\1\71\2\0\1\72\4\255"+ - "\1\72\1\71\1\0\1\72\2\255\2\0\1\7\2\72"+ - "\3\255\1\72\1\255\4\72\2\0\1\7\1\0\2\72"+ - "\2\255\1\7\2\0\1\71\2\0\2\71\5\0\1\72"+ - "\3\7\1\0\1\7\1\0\2\7\1\71\1\0\2\72"+ - "\1\255\11\72\3\0\6\7\2\0\1\256\2\7\2\0"+ - "\13\7\1\257\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\14\7\22\0\1\260"+ - "\110\0\1\261\111\0\1\262\65\0\6\7\2\0\3\7"+ - "\2\0\5\7\1\263\6\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\13\7\1\264\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\3\7\2\0"+ - "\5\7\1\265\6\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\6\7\2\0\3\7\2\0\10\7\1\266\3\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\1\7\1\267"+ - "\1\7\2\0\1\7\1\270\1\271\1\272\1\273\7\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\2\7\1\274\1\275\3\7\1\276"+ - "\4\7\3\0\6\7\2\0\3\7\2\0\12\7\1\277"+ - "\1\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\1\7\1\111\12\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\14\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\1\7\1\300\12\7\3\0\6\7\2\0"+ - "\1\263\2\7\2\0\10\7\1\301\1\7\1\140\1\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\1\302"+ - "\2\7\2\0\14\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\6\7\2\0\3\7\2\0\12\7\1\303\1\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\3\7\2\0"+ - "\4\7\1\304\1\7\1\305\5\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\5\7\1\121\6\7\3\0\6\7\2\0\1\306\2\7"+ - "\2\0\14\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\14\7\3\0\6\7"+ - "\2\0\3\7\2\0\14\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\1\7"+ - "\1\307\12\7\3\0\6\7\2\0\1\310\2\7\2\0"+ - "\14\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\10\7\1\311\3\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\3\7\1\121\10\7\3\0\6\7\2\0\3\7\2\0"+ - "\10\7\1\121\2\7\1\312\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\5\7\1\313\6\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\1\7\1\314\1\121\11\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\3\7\1\315"+ - "\10\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\1\316\2\7\2\0\14\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\1\7\1\317\3\7"+ - "\1\320\6\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\14\7\3\0\6\7"+ - "\2\0\3\7\2\0\2\7\1\321\11\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\14\7\3\0\6\7\2\0\3\7\2\0\14\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\2\7\1\121\3\7\1\121\5\7"+ - "\3\0\6\7\2\0\3\7\2\0\6\7\1\322\5\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\5\7\1\323\6\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\1\7\1\324\12\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\3\7\1\325\1\7\1\326\6\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\14\7\3\0\6\7\2\0\3\7\2\0\3\7"+ - "\1\47\10\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\14\7\3\0\5\7"+ - "\1\312\2\0\3\7\2\0\10\7\1\327\3\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\3\7\1\330\10\7\3\0\6\7\2\0"+ - "\3\7\2\0\4\7\1\331\7\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\1\7\1\332"+ - "\12\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\12\7\1\333\1\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\3\7\1\334"+ - "\1\7\1\335\6\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\5\7\1\336\2\0\3\7\2\0\14\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\6\7\1\337\5\7\3\0\6\7\2\0\3\7"+ - "\2\0\14\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\12\7\1\340\1\7"+ - "\3\0\6\7\2\0\3\7\2\0\14\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\3\7\1\341\10\7\3\0\6\7\2\0\1\342"+ - "\2\7\2\0\13\7\1\343\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\10\7\1\344\3\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\14\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\1\7\1\345\12\7"+ - "\3\0\6\7\2\0\3\7\2\0\6\7\1\341\5\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\14\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\3\7\1\346\10\7"+ - "\3\0\6\7\2\0\3\7\2\0\11\7\1\347\2\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\10\7\1\314\3\7\3\0\6\7"+ - "\2\0\3\7\2\0\14\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\1\121"+ - "\13\7\3\0\6\7\2\0\3\7\2\0\12\7\1\350"+ - "\1\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\6\7\1\351\5\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\6\7\1\352"+ - "\5\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\5\7\1\353\6\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\14\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\13\7\1\354\3\0\6\7\2\0\3\7"+ - "\2\0\6\7\1\302\5\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\1\7\1\355\12\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\3\7\1\356\1\357\3\7\1\360\3\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\1\7\1\361\12\7\3\0\6\7\2\0"+ - "\3\7\2\0\14\7\2\0\1\7\1\0\4\7\1\362"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\5\7\1\363\6\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\1\7\1\364\2\7\1\121\1\7\1\365\5\7"+ - "\2\0\1\7\1\0\4\7\1\366\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\5\7\1\367\6\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\2\7\1\370"+ - "\11\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\46\0\1\371\113\0"+ - "\1\372\36\0\1\34\14\0\2\34\1\203\24\0\1\34"+ - "\11\0\2\34\27\0\1\204\1\373\14\204\2\373\1\204"+ - "\1\0\34\204\2\373\1\374\27\204\3\0\6\7\2\0"+ - "\3\7\2\0\14\7\2\0\1\7\1\0\5\7\14\0"+ - "\1\7\1\35\2\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\1\7\1\375"+ - "\6\7\1\376\3\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\6\7\2\0\3\7\2\0\5\7\1\377\6\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\3\7\2\0"+ - "\10\7\1\u0100\1\7\1\u0101\1\u0102\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\14\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\1\7\1\u0103\12\7\3\0\6\7\2\0"+ - "\1\u0104\2\7\2\0\14\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\1\7\1\u0105\10\7"+ - "\1\u0106\1\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\10\7\1\u0107\3\7"+ - "\3\0\5\7\1\u0108\2\0\3\7\2\0\12\7\1\u0109"+ - "\1\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\1\7\1\u010a\12\7\3\0"+ - "\6\7\2\0\1\u010b\2\7\2\0\14\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\14\7\3\0\6\7\2\0\3\7\2\0\1\7"+ - "\1\u010c\12\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\14\7\3\0\6\7"+ - "\2\0\3\7\2\0\3\7\1\u010d\10\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\14\7\3\0\6\7\2\0\3\7\2\0\10\7"+ - "\1\u010c\3\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\14\7\3\0\5\7"+ - "\1\u010e\2\0\3\7\2\0\14\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\3\7\1\u010f"+ - "\10\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\1\7\1\u0110\12\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\14\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\1\7\1\u0111\12\7\3\0\6\7\2\0"+ - "\1\u0112\1\u0113\1\7\2\0\4\7\1\121\5\7\1\316"+ - "\1\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\1\7\1\u0114\12\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\5\7\1\u0115\2\0\3\7\2\0\1\7"+ - "\1\111\4\7\1\u0116\5\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\2\7\1\306\11\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\4\7\1\121\5\7\1\u0117\1\7"+ - "\3\0\6\7\2\0\1\266\2\7\2\0\6\7\1\u0118"+ - "\5\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\3\7\1\u0119\10\7\3\0"+ - "\6\7\2\0\3\7\2\0\10\7\1\121\3\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\3\7\2\0"+ - "\10\7\1\u011a\3\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\6\7\2\0\3\7\2\0\14\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\1\7\1\u011b\12\7\3\0\6\7\2\0\1\302\2\7"+ - "\2\0\12\7\1\u011c\1\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\4\7\1\u011d\7\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\6\7\1\121\1\7\1\u011e\3\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\14\7\3\0\6\7\2\0\3\7\2\0\14\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\6\7\1\u011c\5\7\3\0\6\7"+ - "\2\0\1\u011f\2\7\2\0\14\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\2\7\1\u0120"+ - "\11\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\22\0\1\u0121\117\0"+ - "\1\u0122\106\0\1\u0123\104\0\1\u0124\61\0\1\71\2\0"+ - "\1\72\2\253\1\72\1\253\1\72\1\71\1\0\1\72"+ - "\1\75\1\253\2\0\1\7\13\72\2\0\1\7\1\0"+ - "\2\72\1\75\1\72\1\7\2\0\1\71\2\0\2\71"+ - "\5\0\1\72\3\7\1\0\1\7\1\0\2\7\1\71"+ - "\1\0\2\72\1\75\11\72\3\0\1\7\2\253\1\7"+ - "\1\253\1\7\2\0\2\7\1\253\2\0\14\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\1\71\2\0\1\72\4\255\1\72"+ - "\1\71\1\0\1\72\2\255\2\0\1\7\2\72\3\255"+ - "\1\72\1\255\2\72\1\252\1\72\2\0\1\7\1\0"+ - "\1\72\1\252\2\255\1\7\2\0\1\71\2\0\2\71"+ - "\5\0\1\72\3\7\1\0\1\7\1\0\2\7\1\71"+ - "\1\0\2\72\1\255\11\72\3\0\6\7\2\0\3\7"+ - "\2\0\5\7\1\u0125\6\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\10\7\1\u0126\3\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\3\7\1\u0127\10\7\23\0\1\u0128"+ - "\113\0\1\103\111\0\1\u0129\61\0\6\7\2\0\3\7"+ - "\2\0\1\7\1\270\12\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\1\263\2\7\2\0\14\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\3\7\2\0"+ - "\14\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\5\7\1\121\6\7\3\0"+ - "\6\7\2\0\3\7\2\0\14\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\10\7\1\341\3\7\3\0\6\7\2\0\3\7\2\0"+ - "\5\7\1\47\6\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\6\7\2\0\3\7\2\0\6\7\1\121\5\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\3\7\2\0"+ - "\5\7\1\300\4\7\1\u012a\1\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\14\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\2\7\1\121\11\7\3\0\5\7\1\120"+ - "\2\0\3\7\2\0\14\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\5\7\1\u012b\2\0\3\7\2\0\14\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\3\7\2\0"+ - "\14\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\1\7\1\u012c\12\7\3\0"+ - "\6\7\2\0\3\7\2\0\5\7\1\u012d\6\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\3\7\2\0"+ - "\1\7\1\336\12\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\6\7\2\0\3\7\2\0\3\7\1\270\10\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\3\7\2\0"+ - "\14\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\2\7\1\u012e\11\7\3\0"+ - "\6\7\2\0\3\7\2\0\13\7\1\u012f\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\14\7\3\0\6\7\2\0\3\7\2\0\14\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\1\7\1\u0130\12\7\3\0\6\7"+ - "\2\0\3\7\2\0\14\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\1\7\1\302\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\4\7\1\300"+ - "\7\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\1\270\2\7\2\0\14\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\6\7\1\u0131\5\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\4\7\1\121\7\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\10\7\1\270\3\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\14\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\12\7\1\121\1\7"+ - "\3\0\6\7\2\0\3\7\2\0\14\7\2\0\1\121"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\14\7\3\0\6\7\2\0\3\7\2\0\2\7"+ - "\1\121\11\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\14\7\3\0\6\7"+ - "\2\0\3\7\2\0\3\7\1\u0132\10\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\14\7\3\0\6\7\2\0\3\7\2\0\14\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\1\7\1\311\12\7\3\0\6\7"+ - "\2\0\3\7\2\0\6\7\1\u0133\5\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\14\7\3\0\6\7\2\0\3\7\2\0\12\7"+ - "\1\u0134\1\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\14\7\3\0\6\7"+ - "\2\0\3\7\2\0\6\7\1\121\1\7\1\u0135\3\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\5\7\1\302\6\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\1\7\1\343\12\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\3\7\1\u0136\10\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\1\7\1\u0137\2\7"+ - "\1\300\7\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\2\7\1\u0138\6\7"+ - "\1\121\2\7\3\0\6\7\2\0\3\7\2\0\2\7"+ - "\1\u0139\11\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\3\7\1\u013a\10\7"+ - "\3\0\6\7\2\0\3\7\2\0\12\7\1\341\1\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\5\7\1\u013b\2\0"+ - "\3\7\2\0\14\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\6\7\2\0\3\7\2\0\14\7\2\0\1\121\1\0"+ - "\4\7\1\u013c\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\14\7\3\0\6\7\2\0\3\7\2\0\12\7"+ - "\1\121\1\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\14\7\3\0\6\7"+ - "\2\0\1\u0132\2\7\2\0\14\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\5\7\1\u013d"+ - "\6\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\14\7\2\0\1\7\1\0\4\7\1\u013e"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\5\7\1\u013f\6\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\5\7\1\121\6\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\14\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\1\7\1\u0140\12\7\3\0\6\7\2\0\3\7"+ - "\2\0\1\7\1\302\12\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\14\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\2\7\1\u0141\11\7\3\0\6\7\2\0\3\7"+ - "\2\0\12\7\1\u0142\1\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\5\7\1\u0143\6\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\12\7\1\u0144\1\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\14\7\2\0\1\7"+ - "\1\0\4\7\1\u0145\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\3\7\2\0"+ - "\14\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\1\u0146\13\7\3\0\6\7"+ - "\2\0\3\7\2\0\10\7\1\u0147\3\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\14\7\3\0\6\7\2\0\3\7\2\0\14\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\6\7\1\u0148\5\7\3\0\6\7"+ - "\2\0\3\7\2\0\6\7\1\u0149\5\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\14\7\3\0\6\7\2\0\3\7\2\0\14\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\2\7\1\u014a\11\7\3\0\6\7"+ - "\2\0\3\7\2\0\14\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\12\7"+ - "\1\u0141\1\7\3\0\6\7\2\0\3\7\2\0\14\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\10\7\1\121\3\7\3\0\6\7"+ - "\2\0\3\7\2\0\2\7\1\302\11\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\14\7\3\0\6\7\2\0\3\7\2\0\10\7"+ - "\1\u014b\1\7\1\u014c\1\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\1\u014d\2\7\2\0\14\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\3\7\2\0"+ - "\6\7\1\u014e\5\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\6\7\2\0\3\7\2\0\14\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\1\7\1\u014f\12\7\3\0\6\7\2\0\3\7\2\0"+ - "\10\7\1\u0150\3\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\6\7\2\0\3\7\2\0\10\7\1\u0151\3\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\3\7\2\0"+ - "\12\7\1\u0152\1\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\1\7\1\307"+ - "\12\7\47\0\1\u0153\106\0\1\u0154\44\0\6\7\2\0"+ - "\3\7\2\0\5\7\1\u0155\6\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\4\7\1\u0156"+ - "\7\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\3\7\1\u0157\10\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\14\7\2\0"+ - "\1\7\1\0\4\7\1\u0158\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\5\7\1\u0159\2\0"+ - "\3\7\2\0\14\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\6\7\2\0\3\7\2\0\12\7\1\u015a\1\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\5\7\1\u015b\2\0\3\7"+ - "\2\0\14\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\14\7\3\0\6\7"+ - "\2\0\3\7\2\0\13\7\1\u015c\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\1\7\1\u015d"+ - "\12\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\12\7\1\u015e\1\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\5\7\1\u015f"+ - "\6\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\1\u0160\2\7\2\0\14\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\14\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\1\7\1\u0161\12\7\3\0\6\7\2\0\3\7"+ - "\2\0\14\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\3\7\1\u0162\10\7"+ - "\3\0\6\7\2\0\1\u010c\2\7\2\0\14\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\3\7\2\0"+ - "\14\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\211\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\1\u0163\2\7\2\0\14\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\6\7\1\u010c\5\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\6\7\1\u0164\5\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\14\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\1\u0165\13\7\3\0\6\7\2\0\3\7\2\0"+ - "\2\7\1\u013f\11\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\6\7\2\0\3\7\2\0\5\7\1\u0166\6\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\3\7\2\0"+ - "\10\7\1\302\3\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\3\7\1\u0167"+ - "\10\7\3\0\6\7\2\0\3\7\2\0\1\7\1\317"+ - "\12\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\7\7\1\331\4\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\13\7\1\u0168"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\1\7\1\121\12\7\3\0\6\7"+ - "\2\0\3\7\2\0\5\7\1\u0169\6\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\14\7\3\0\6\7\2\0\3\7\2\0\3\7"+ - "\1\121\10\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\14\7\3\0\6\7"+ - "\2\0\1\7\1\233\1\7\2\0\14\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\14\7\3\0\6\7\2\0\3\7\2\0\13\7"+ - "\1\u016a\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\6\7\1\u016b\5\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\1\7\1\121"+ - "\12\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\6\7\1\u016c\5\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\1\7\1\u016d"+ - "\12\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\14\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\1\7\1\314"+ - "\12\7\3\0\6\7\2\0\3\7\2\0\14\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\3\7\1\133\10\7\2\0\1\u016e\132\0"+ - "\1\u0121\102\0\1\u016f\111\0\1\u0170\70\0\6\7\2\0"+ - "\1\7\1\322\1\7\2\0\14\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\6\7\1\u0171"+ - "\5\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\2\7\1\125\11\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\24\0\1\u0172\115\0\1\u0173\60\0\6\7\2\0"+ - "\3\7\2\0\13\7\1\u0174\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\4\7\1\341\7\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\14\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\7\7\1\u0175\4\7"+ - "\3\0\6\7\2\0\1\u0176\2\7\2\0\14\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\3\7\2\0"+ - "\14\7\2\0\1\7\1\0\4\7\1\u0177\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\14\7\3\0\6\7"+ - "\2\0\3\7\2\0\6\7\1\u0178\5\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\14\7\3\0\6\7\2\0\3\7\2\0\10\7"+ - "\1\272\3\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\14\7\3\0\6\7"+ - "\2\0\3\7\2\0\5\7\1\u0179\6\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\14\7\3\0\6\7\2\0\3\7\2\0\14\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\6\7\1\121\5\7\3\0\6\7"+ - "\2\0\3\7\2\0\14\7\2\0\1\7\1\0\4\7"+ - "\1\u017a\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\6\7\1\u017b"+ - "\5\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\1\u017c\2\7\2\0\14\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\6\7\1\u017d\5\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\12\7\1\u0152\1\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\5\7\1\160\2\0\3\7\2\0\14\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\1\341\2\7"+ - "\2\0\14\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\14\7\3\0\6\7"+ - "\2\0\1\u017e\2\7\2\0\14\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\1\7\1\u017f\1\7\2\0"+ - "\14\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\14\7\2\0\1\7\1\0\4\7\1\u0180"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\11\7\1\302\2\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\13\7\1\u0181\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\6\7\2\0\3\7\2\0\5\7\1\u0182\6\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\3\7\2\0"+ - "\1\7\1\u0183\12\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\6\7\2\0\3\7\2\0\13\7\1\u0184\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\14\7\3\0\6\7\2\0\3\7\2\0\3\7"+ - "\1\u0185\1\7\1\u0186\6\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\14\7\2\0\1\7"+ - "\1\0\4\7\1\u0187\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\3\7\2\0"+ - "\14\7\2\0\1\7\1\0\4\7\1\u0188\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\14\7\3\0\6\7"+ - "\2\0\3\7\2\0\14\7\2\0\1\7\1\0\4\7"+ - "\1\u0189\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\14\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\121\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\3\7\2\0"+ - "\14\7\2\0\1\7\1\0\4\7\1\u018a\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\14\7\3\0\6\7"+ - "\2\0\3\7\2\0\14\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\1\7"+ - "\1\171\12\7\3\0\6\7\2\0\3\7\2\0\5\7"+ - "\1\171\6\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\14\7\3\0\6\7"+ - "\2\0\3\7\2\0\3\7\1\160\10\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\14\7\3\0\6\7\2\0\3\7\2\0\3\7"+ - "\1\u018b\10\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\14\7\3\0\6\7"+ - "\2\0\3\7\2\0\14\7\2\0\1\7\1\0\4\7"+ - "\1\u018c\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\3\7\1\u018d"+ - "\10\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\6\7\1\u018e\5\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\5\7\1\u018f"+ - "\6\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\50\0\1\34\110\0"+ - "\1\u0153\41\0\6\7\2\0\3\7\2\0\14\7\2\0"+ - "\1\7\1\0\4\7\1\u0190\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\14\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\1\u0191\13\7\3\0"+ - "\6\7\2\0\3\7\2\0\14\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\2\7\1\u0192\11\7\3\0\6\7\2\0\3\7\2\0"+ - "\12\7\1\u0193\1\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\6\7\2\0\3\7\2\0\1\7\1\u0194\12\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\3\7\2\0"+ - "\5\7\1\u010c\6\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\6\7\2\0\1\u0195\2\7\2\0\14\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\14\7\3\0\6\7\2\0\3\7\2\0\10\7"+ - "\1\u0196\3\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\14\7\3\0\6\7"+ - "\2\0\3\7\2\0\5\7\1\u0197\6\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\14\7\3\0\6\7\2\0\3\7\2\0\14\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\1\7\1\u0198\12\7\3\0\6\7"+ - "\2\0\3\7\2\0\10\7\1\u010e\3\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\14\7\3\0\6\7\2\0\1\u0199\2\7\2\0"+ - "\14\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\14\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\11\7\1\u019a"+ - "\2\7\3\0\6\7\2\0\3\7\2\0\2\7\1\u019b"+ - "\11\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\3\7\1\u019c\10\7\3\0"+ - "\6\7\2\0\3\7\2\0\10\7\1\u019d\3\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\3\7\2\0"+ - "\14\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\1\u019e\13\7\3\0\6\7"+ - "\2\0\3\7\2\0\14\7\2\0\1\7\1\0\4\7"+ - "\1\u0120\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\1\7\1\121\1\7\2\0"+ - "\14\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\5\7\1\u019f"+ - "\2\0\3\7\2\0\3\7\1\u01a0\1\7\1\u01a1\6\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\14\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\3\7\1\u01a2\10\7"+ - "\3\0\6\7\2\0\3\7\2\0\14\7\2\0\1\7"+ - "\1\0\4\7\1\u01a3\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\3\7\2\0"+ - "\6\7\1\u01a4\5\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\6\7\2\0\3\7\2\0\14\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\1\7\1\47\12\7\3\0\6\7\2\0\3\7\2\0"+ - "\14\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\6\7\1\u01a5\5\7\70\0"+ - "\1\u01a6\20\0\2\u01a7\6\u016f\1\0\1\u01a7\3\u016f\2\0"+ - "\1\u01a7\13\u016f\1\u01a7\1\0\1\u01a7\1\0\4\u016f\2\u01a7"+ - "\2\0\4\u01a7\5\0\1\u01a7\1\0\1\u01a7\1\0\3\u01a7"+ - "\1\u016f\1\u01a7\1\u016f\1\u01a7\14\u016f\2\0\1\u016e\16\0"+ - "\1\u0121\71\0\6\7\2\0\3\7\2\0\5\7\1\u01a8"+ - "\6\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\25\0\1\103\115\0"+ - "\1\u01a9\57\0\6\7\2\0\3\7\2\0\4\7\1\u014d"+ - "\7\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\5\7\1\u01aa\6\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\1\7\1\341"+ - "\12\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\14\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\7\7\1\144"+ - "\4\7\3\0\6\7\2\0\3\7\2\0\14\7\2\0"+ - "\1\7\1\0\4\7\1\u01ab\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\14\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\2\7\1\u01ac\11\7"+ - "\3\0\6\7\2\0\1\7\1\u01ad\1\7\2\0\1\7"+ - "\1\u01ae\5\7\1\u01af\2\7\1\u01b0\1\312\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\2\7\1\u01b1\11\7\3\0\6\7\2\0\3\7"+ - "\2\0\14\7\2\0\1\7\1\0\4\7\1\u01b2\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\6\7\2\0\3\7\2\0\14\7\2\0\1\7\1\0"+ - "\4\7\1\u01b3\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\14\7\3\0\6\7\2\0\3\7\2\0\3\7"+ - "\1\u01b4\10\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\14\7\3\0\6\7"+ - "\2\0\3\7\2\0\5\7\1\u01b5\6\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\14\7\3\0\6\7\2\0\3\7\2\0\13\7"+ - "\1\u01b6\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\11\7\1\u01b7\2\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\10\7\1\360"+ - "\3\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\3\7\1\233\10\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\2\7\1\u01b8"+ - "\11\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\10\7\1\341\3\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\10\7\1\u0132"+ - "\3\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\14\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\7\7\1\u01b9"+ - "\4\7\3\0\6\7\2\0\3\7\2\0\14\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\3\7\1\u01ba\10\7\3\0\6\7\2\0"+ - "\1\7\1\u01bb\1\7\2\0\10\7\1\u014b\1\7\1\u014c"+ - "\1\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\4\7\1\u01bc\7\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\1\7\1\u01bd\1\7\2\0"+ - "\14\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\10\7\1\u01be\3\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\3\7\1\u01bf"+ - "\10\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\14\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\3\7\1\u01c0"+ - "\10\7\3\0\6\7\2\0\3\7\2\0\13\7\1\u01c1"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\14\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\3\7\1\u01c2\10\7"+ - "\3\0\6\7\2\0\3\7\2\0\4\7\1\u01c3\7\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\5\7\1\u01c4\6\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\14\7\2\0\1\7"+ - "\1\0\4\7\1\u01c5\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\3\7\2\0"+ - "\14\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\1\7\1\u01c6\12\7\3\0"+ - "\6\7\2\0\3\7\2\0\14\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\1\u01c7\13\7\3\0\6\7\2\0\3\7\2\0\4\7"+ - "\1\u01c8\7\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\14\7\3\0\6\7"+ - "\2\0\3\7\2\0\6\7\1\u01c9\5\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\14\7\3\0\6\7\2\0\1\u010e\2\7\2\0"+ - "\14\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\11\7\1\u01ca\2\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\5\7\1\u01cb"+ - "\6\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\5\7\1\u01cc"+ - "\2\0\3\7\2\0\14\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\13\7\1\u01cd\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\3\7\2\0"+ - "\3\7\1\u01ce\10\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\6\7\2\0\3\7\2\0\14\7\2\0\1\7\1\0"+ - "\4\7\1\u01cf\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\14\7\3\0\6\7\2\0\3\7\2\0\14\7"+ - "\2\0\1\7\1\0\4\7\1\u01d0\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\12\7\1\u01d1\1\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\4\7\1\u01d2"+ - "\7\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\6\7\1\u01d3\5\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\5\7\1\u01d4"+ - "\6\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\2\7\1\u01d5\1\u01bf\10\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\14\7\3\0\6\7\2\0\3\7\2\0\14\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\1\7\1\u01d6\12\7\3\0\6\7"+ - "\2\0\3\7\2\0\14\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\3\7"+ - "\1\121\10\7\70\0\1\u016f\22\0\6\7\2\0\1\233"+ - "\2\7\2\0\14\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\30\0"+ - "\1\u0172\62\0\6\7\2\0\3\7\2\0\14\7\2\0"+ - "\1\7\1\0\4\7\1\u01d7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\3\7\1\270\5\7\1\u01d8\2\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\14\7\3\0\6\7\2\0\3\7\2\0\14\7"+ - "\2\0\1\7\1\0\4\7\1\u01d9\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\12\7\1\116\1\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\14\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\1\125\13\7\3\0\6\7\2\0\3\7"+ - "\2\0\14\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\1\7\1\157\4\7"+ - "\1\160\5\7\3\0\6\7\2\0\3\7\2\0\14\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\1\7\1\u0181\12\7\3\0\6\7"+ - "\2\0\3\7\2\0\14\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\1\7"+ - "\1\u01da\12\7\3\0\6\7\2\0\3\7\2\0\5\7"+ - "\1\u01db\6\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\1\7\1\u0166\12\7"+ - "\3\0\6\7\2\0\3\7\2\0\3\7\1\u01dc\10\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\10\7\1\u01dd\3\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\1\7\1\314\1\7\2\0\14\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\10\7\1\u01de\3\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\14\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\1\u01bd\13\7\3\0\6\7\2\0\3\7\2\0"+ - "\3\7\1\u012b\10\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\6\7\2\0\3\7\2\0\5\7\1\335\6\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\3\7\2\0"+ - "\5\7\1\u01df\6\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\6\7\2\0\3\7\2\0\13\7\1\u01e0\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\14\7\3\0\6\7\2\0\3\7\2\0\14\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\1\7\1\u01e1\12\7\3\0\6\7"+ - "\2\0\3\7\2\0\13\7\1\331\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\4\7\1\u01e2"+ - "\7\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\1\134\2\7\2\0\14\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\5\7\1\u01e3\6\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\6\7\1\u0132\5\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\5\7\1\312\6\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\14\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\1\7\1\u01e4\12\7"+ - "\3\0\6\7\2\0\3\7\2\0\4\7\1\u01e5\7\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\5\7\1\u01e6\6\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\3\7\1\u01e7\10\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\14\7\2\0\1\7\1\0\4\7\1\u01e8\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\6\7\2\0\3\7\2\0\5\7\1\u01e9\6\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\3\7\2\0"+ - "\14\7\2\0\1\7\1\0\4\7\1\u01ea\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\14\7\3\0\6\7"+ - "\2\0\3\7\2\0\14\7\2\0\1\7\1\0\4\7"+ - "\1\u01eb\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\10\7\1\u01ec"+ - "\3\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\1\u01ed\2\7\2\0\14\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\12\7\1\u01ee\1\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\10\7\1\u01ef\3\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\14\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\1\7\1\u01f0\12\7\3\0\6\7\2\0\3\7"+ - "\2\0\4\7\1\u01f1\7\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\6\7\1\u01f2\5\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\1\u01f3"+ - "\2\7\2\0\14\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\6\7\2\0\3\7\2\0\14\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\1\u01f4\13\7\3\0\6\7\2\0\1\u01f5\2\7\2\0"+ - "\14\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\1\u01f6\2\7\2\0\14\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\14\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\3\7\1\u01f7\10\7\3\0\6\7\2\0\3\7"+ - "\2\0\13\7\1\u01f8\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\6\7\2\0\3\7\2\0\14\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\3\7\1\u01f9\10\7\3\0\5\7\1\u0115\2\0\3\7"+ - "\2\0\14\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\14\7\3\0\6\7"+ - "\2\0\1\u01fa\2\7\2\0\14\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\14\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\10\7\1\u01fb\3\7\3\0\6\7\2\0"+ - "\3\7\2\0\6\7\1\u01fc\5\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\3\7\1\u01fd"+ - "\10\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\6\7\1\u0118\5\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\1\u01fe\2\7\2\0\14\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\10\7\1\u01d4\3\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\5\7\1\u01ff\6\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\10\7\1\u0200\3\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\14\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\12\7\1\u0201\1\7\3\0\6\7\2\0\3\7"+ - "\2\0\14\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\7\7\1\u0202\4\7"+ - "\3\0\6\7\2\0\3\7\2\0\14\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\2\7\1\u0203\11\7\3\0\6\7\2\0\3\7"+ - "\2\0\14\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\1\7\1\u0204\12\7"+ - "\3\0\6\7\2\0\3\7\2\0\14\7\2\0\1\7"+ - "\1\0\4\7\1\u0205\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\1\u0206\2\7"+ - "\2\0\12\7\1\u0207\1\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\2\7"+ - "\1\u0208\1\u0209\10\7\3\0\5\7\1\u020a\2\0\3\7"+ - "\2\0\14\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\14\7\3\0\6\7"+ - "\2\0\3\7\2\0\6\7\1\u020b\5\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\14\7\3\0\6\7\2\0\3\7\2\0\5\7"+ - "\1\u020c\6\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\14\7\3\0\6\7"+ - "\2\0\3\7\2\0\5\7\1\u020d\6\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\14\7\3\0\6\7\2\0\3\7\2\0\14\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\2\7\1\u020e\11\7\3\0\6\7"+ - "\2\0\3\7\2\0\10\7\1\u020f\3\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\14\7\3\0\6\7\2\0\3\7\2\0\14\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\1\7\1\u0210\12\7\3\0\6\7"+ - "\2\0\3\7\2\0\13\7\1\121\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\14\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\1\7\1\302\12\7\3\0\6\7\2\0"+ - "\3\7\2\0\14\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\1\7\1\272"+ - "\12\7\3\0\6\7\2\0\3\7\2\0\14\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\1\7\1\u0211\12\7\3\0\6\7\2\0"+ - "\3\7\2\0\14\7\2\0\1\7\1\0\4\7\1\u0212"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\5\7\1\u01a1\6\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\6\7\1\163\5\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\3\7\1\u0213\10\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\1\u0214"+ - "\2\7\2\0\14\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\6\7\2\0\3\7\2\0\5\7\1\u0215\6\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\3\7\2\0"+ - "\12\7\1\u0132\1\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\6\7\2\0\3\7\2\0\12\7\1\u0216\1\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\3\7\2\0"+ - "\1\7\1\171\12\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\6\7\2\0\3\7\2\0\14\7\2\0\1\302\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\6\7\1\u0217"+ - "\5\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\5\7\1\u0218\6\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\3\7\1\u0219"+ - "\10\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\5\7\1\u010b\6\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\10\7\1\u021a"+ - "\3\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\2\7\1\u021b\11\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\5\7\1\u021c"+ - "\6\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\5\7\1\u021d\6\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\5\7\1\u021e\2\0\3\7\2\0\14\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\5\7\1\u021f\6\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\10\7\1\u0220\3\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\14\7\2\0\1\7\1\0\4\7\1\u0221\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\6\7\2\0\3\7\2\0\14\7\2\0\1\7\1\0"+ - "\4\7\1\u0222\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\14\7\3\0\6\7\2\0\3\7\2\0\14\7"+ - "\2\0\1\7\1\0\4\7\1\u0223\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\14\7\2\0\1\7\1\0\4\7\1\u0224"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\14\7\2\0\1\7"+ - "\1\0\4\7\1\u0225\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\3\7\2\0"+ - "\10\7\1\u0226\3\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\6\7\2\0\3\7\2\0\14\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\4\7\1\u0132\7\7\3\0\6\7\2\0\3\7\2\0"+ - "\5\7\1\u0227\6\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\6\7\2\0\3\7\2\0\2\7\1\u0228\11\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\3\7\2\0"+ - "\14\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\1\7\1\u0229\12\7\3\0"+ - "\6\7\2\0\3\7\2\0\10\7\1\u022a\3\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\3\7\2\0"+ - "\12\7\1\u022b\1\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\6\7\2\0\3\7\2\0\5\7\1\u022c\6\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\3\7\2\0"+ - "\14\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\2\7\1\u022d\11\7\3\0"+ - "\6\7\2\0\3\7\2\0\12\7\1\u010c\1\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\3\7\2\0"+ - "\14\7\2\0\1\7\1\0\4\7\1\u022e\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\14\7\3\0\6\7"+ - "\2\0\3\7\2\0\3\7\1\u022f\10\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\14\7\3\0\6\7\2\0\3\7\2\0\3\7"+ - "\1\u0230\10\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\14\7\3\0\6\7"+ - "\2\0\3\7\2\0\10\7\1\u0231\3\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\7\7\1\u0232\4\7\3\0\6\7\2\0\3\7"+ - "\2\0\2\7\1\u010c\11\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\6\7\1\u0233\5\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\1\u0234"+ - "\2\7\2\0\14\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\6\7\2\0\3\7\2\0\10\7\1\u0235\3\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\3\7\2\0"+ - "\14\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\7\7\1\u0236\4\7\3\0"+ - "\6\7\2\0\1\7\1\u0237\1\7\2\0\2\7\1\u021b"+ - "\11\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\12\7\1\u0238\1\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\1\u0239\2\7\2\0\14\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\6\7\1\u023a\5\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\10\7\1\u023b\3\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\4\7\1\u023c\7\7\3\0\6\7"+ - "\2\0\3\7\2\0\14\7\2\0\1\7\1\0\4\7"+ - "\1\u023d\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\1\u01d4\2\7\2\0\14\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\6\7\1\u023e\5\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\14\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\6\7\1\302\5\7\3\0\6\7\2\0\3\7"+ - "\2\0\14\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\4\7\1\u023f\7\7"+ - "\3\0\6\7\2\0\3\7\2\0\14\7\2\0\1\7"+ - "\1\0\4\7\1\u0240\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\3\7\2\0"+ - "\10\7\1\u0241\3\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\6\7\2\0\3\7\2\0\6\7\1\u0242\5\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\3\7\2\0"+ - "\14\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\2\7\1\u0243\11\7\3\0"+ - "\6\7\2\0\3\7\2\0\14\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\10\7\1\u022f\3\7\3\0\6\7\2\0\3\7\2\0"+ - "\5\7\1\u0219\6\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\6\7\2\0\3\7\2\0\3\7\1\u0244\10\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\3\7\2\0"+ - "\5\7\1\u0245\6\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\6\7\2\0\3\7\2\0\3\7\1\u0246\10\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\3\7\2\0"+ - "\5\7\1\u0247\6\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\6\7\2\0\3\7\2\0\13\7\1\u0248\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\14\7\3\0\6\7\2\0\3\7\2\0\13\7"+ - "\1\u0249\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\5\7\1\u024a\6\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\5\7\1\u024b"+ - "\6\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\6\7\1\u024c\5\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\13\7\1\171"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\7\7\1\u0132\4\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\14\7\2\0\1\7"+ - "\1\0\4\7\1\u024d\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\3\7\2\0"+ - "\6\7\1\u024e\5\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\6\7\2\0\3\7\2\0\14\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\3\7\1\u021b\10\7\3\0\6\7\2\0\3\7\2\0"+ - "\5\7\1\u024f\6\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\6\7\2\0\3\7\2\0\14\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\1\u010c\13\7\3\0\6\7\2\0\3\7\2\0\3\7"+ - "\1\u0250\10\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\14\7\3\0\6\7"+ - "\2\0\3\7\2\0\14\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\u0251\1\0\2\7\2\0\14\7"+ - "\3\0\6\7\2\0\3\7\2\0\1\7\1\u0252\12\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\14\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\3\7\1\u0253\10\7"+ - "\3\0\6\7\2\0\1\u0254\2\7\2\0\14\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\3\7\2\0"+ - "\12\7\1\u0255\1\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\6\7\2\0\3\7\2\0\10\7\1\u0256\3\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\1\7\1\u0257"+ - "\1\7\2\0\14\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\6\7\2\0\3\7\2\0\14\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\4\7\1\u010e\7\7\3\0\6\7\2\0\3\7\2\0"+ - "\5\7\1\120\6\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\6\7\2\0\3\7\2\0\5\7\1\u01db\6\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\3\7\2\0"+ - "\14\7\2\0\1\7\1\0\4\7\1\u0258\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\14\7\3\0\6\7"+ - "\2\0\3\7\2\0\11\7\1\u0259\2\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\14\7\3\0\6\7\2\0\3\7\2\0\7\7"+ - "\1\u025a\4\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\14\7\3\0\6\7"+ - "\2\0\3\7\2\0\14\7\2\0\1\7\1\0\4\7"+ - "\1\u025b\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\14\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\1\7\1\u025c\12\7\3\0\6\7\2\0"+ - "\3\7\2\0\5\7\1\u025d\6\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\1\7\1\u025e"+ - "\12\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\5\7\1\217\6\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\5\7\1\u025f"+ - "\6\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\12\7\1\u0260\1\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\4\7\1\u0261"+ - "\7\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\12\7\1\u0262\1\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\12\7\1\u0263"+ - "\1\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\14\7\2\0\1\7\1\0\5\7\14\0"+ - "\1\7\1\121\2\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\12\7\1\u0264"+ - "\1\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\1\7\1\u0265\12\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\13\7\1\u0266"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\14\7\3\0\6\7\2\0\3\7"+ - "\2\0\14\7\2\0\1\7\1\0\4\7\1\u0267\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\6\7\2\0\3\7\2\0\5\7\1\u0268\6\7\2\0"+ - "\1\7\1\0\5\7\14\0\4\7\1\0\1\7\1\0"+ - "\2\7\2\0\14\7\3\0\6\7\2\0\3\7\2\0"+ - "\12\7\1\u0269\1\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\14\7\3\0"+ - "\6\7\2\0\3\7\2\0\13\7\1\u026a\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\14\7\3\0\6\7\2\0\3\7\2\0\14\7"+ - "\2\0\1\7\1\0\5\7\14\0\4\7\1\0\1\7"+ - "\1\0\2\7\2\0\6\7\1\u010c\5\7\3\0\6\7"+ - "\2\0\3\7\2\0\14\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\7\7"+ - "\1\u026b\4\7\3\0\6\7\2\0\3\7\2\0\2\7"+ - "\1\u026c\11\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\14\7\3\0\6\7"+ - "\2\0\3\7\2\0\14\7\2\0\1\7\1\0\5\7"+ - "\14\0\4\7\1\0\1\7\1\0\2\7\2\0\1\7"+ - "\1\221\12\7\3\0\6\7\2\0\3\7\2\0\3\7"+ - "\1\u026d\10\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\14\7\3\0\6\7"+ - "\2\0\3\7\2\0\4\7\1\u026e\7\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\14\7\3\0\6\7\2\0\3\7\2\0\3\7"+ - "\1\u026f\10\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\14\7\3\0\6\7"+ - "\2\0\3\7\2\0\10\7\1\u015a\3\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\14\7\3\0\6\7\2\0\3\7\2\0\5\7"+ - "\1\u0270\6\7\2\0\1\7\1\0\5\7\14\0\4\7"+ - "\1\0\1\7\1\0\2\7\2\0\14\7\3\0\6\7"+ - "\2\0\3\7\2\0\3\7\1\u0271\10\7\2\0\1\7"+ - "\1\0\5\7\14\0\4\7\1\0\1\7\1\0\2\7"+ - "\2\0\14\7\3\0\6\7\2\0\1\u0272\2\7\2\0"+ - "\14\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\6\7\1\u025e\5\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7\3\0\6\7\2\0\3\7\2\0\1\7\1\u0273"+ - "\12\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\14\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\2\7\1\u025f"+ - "\11\7\3\0\6\7\2\0\3\7\2\0\4\7\1\u0274"+ - "\7\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\14\7\2\0\1\7\1\0\5\7\14\0"+ - "\4\7\1\0\1\7\1\0\2\7\2\0\10\7\1\217"+ - "\3\7\3\0\6\7\2\0\3\7\2\0\1\7\1\u0158"+ - "\12\7\2\0\1\7\1\0\5\7\14\0\4\7\1\0"+ - "\1\7\1\0\2\7\2\0\14\7\3\0\6\7\2\0"+ - "\3\7\2\0\5\7\1\u0275\6\7\2\0\1\7\1\0"+ - "\5\7\14\0\4\7\1\0\1\7\1\0\2\7\2\0"+ - "\14\7"; - - private static int [] zzUnpackTrans() { - int [] result = new int[43200]; - int offset = 0; - offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackTrans(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - value--; - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /* error codes */ - private static final int ZZ_UNKNOWN_ERROR = 0; - private static final int ZZ_NO_MATCH = 1; - private static final int ZZ_PUSHBACK_2BIG = 2; - - /* error messages for the codes above */ - private static final String ZZ_ERROR_MSG[] = { - "Unkown internal scanner error", - "Error: could not match input", - "Error: pushback value was too large" - }; - - /** - * ZZ_ATTRIBUTE[aState] contains the attributes of state aState - */ - private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); - - private static final String ZZ_ATTRIBUTE_PACKED_0 = - "\1\1\2\0\2\11\10\1\2\11\14\1\1\11\3\1"+ - "\1\11\20\1\1\11\3\1\1\11\15\1\1\11\3\0"+ - "\72\1\4\0\37\1\2\11\4\0\6\1\3\0\106\1"+ - "\2\0\1\11\45\1\4\0\3\1\2\0\51\1\2\0"+ - "\31\1\1\0\1\1\1\0\1\1\2\0\62\1\2\0"+ - "\1\1\1\0\314\1"; - - private static int [] zzUnpackAttribute() { - int [] result = new int[629]; - int offset = 0; - offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAttribute(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - /** the input device */ - private java.io.Reader zzReader; - - /** the current state of the DFA */ - private int zzState; - - /** the current lexical state */ - private int zzLexicalState = YYINITIAL; - - /** this buffer contains the current text to be matched and is - the source of the yytext() string */ - private char zzBuffer[]; - - /** the textposition at the last accepting state */ - private int zzMarkedPos; - - /** the current text position in the buffer */ - private int zzCurrentPos; - - /** startRead marks the beginning of the yytext() string in the buffer */ - private int zzStartRead; - - /** endRead marks the last character in the buffer, that has been read - from input */ - private int zzEndRead; - - /** zzAtEOF == true <=> the scanner is at the EOF */ - private boolean zzAtEOF; - - /* user code: */ - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public ClojureTokenMaker() { - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addToken(int, int, int) - */ - private void addHyperlinkToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, true); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addHyperlinkToken(int, int, int) - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, false); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - * @param hyperlink Whether this token is a hyperlink. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, - int startOffset, boolean hyperlink) { - super.addToken(array, start,end, tokenType, startOffset, hyperlink); - zzStartRead = zzMarkedPos; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { ";", null }; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - - // Start off in the proper state. - int state = Token.NULL; - switch (initialTokenType) { - /*case Token.COMMENT_MULTILINE: - state = MLC; - start = text.offset; - break; - case Token.COMMENT_DOCUMENTATION: - state = DOCCOMMENT; - start = text.offset; - break;*/ - case Token.LITERAL_STRING_DOUBLE_QUOTE: - state = STRING; - start = text.offset; - break; - default: - state = Token.NULL; - } - - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtEOF = false; - } - - - - - /** - * Creates a new scanner - * There is also a java.io.InputStream version of this constructor. - * - * @param in the java.io.Reader to read input from. - */ - public ClojureTokenMaker(java.io.Reader in) { - this.zzReader = in; - } - - /** - * Creates a new scanner. - * There is also java.io.Reader version of this constructor. - * - * @param in the java.io.Inputstream to read input from. - */ - public ClojureTokenMaker(java.io.InputStream in) { - this(new java.io.InputStreamReader(in)); - } - - /** - * Unpacks the compressed character translation table. - * - * @param packed the packed character translation table - * @return the unpacked character translation table - */ - private static char [] zzUnpackCMap(String packed) { - char [] map = new char[0x10000]; - int i = 0; /* index in packed string */ - int j = 0; /* index in unpacked array */ - while (i < 164) { - int count = packed.charAt(i++); - char value = packed.charAt(i++); - do map[j++] = value; while (--count > 0); - } - return map; - } - - - /** - * Closes the input stream. - */ - public final void yyclose() throws java.io.IOException { - zzAtEOF = true; /* indicate end of file */ - zzEndRead = zzStartRead; /* invalidate buffer */ - - if (zzReader != null) - zzReader.close(); - } - - - /** - * Returns the current lexical state. - */ - public final int yystate() { - return zzLexicalState; - } - - - /** - * Enters a new lexical state - * - * @param newState the new lexical state - */ - @Override - public final void yybegin(int newState) { - zzLexicalState = newState; - } - - - /** - * Returns the text matched by the current regular expression. - */ - public final String yytext() { - return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead ); - } - - - /** - * Returns the character at position pos from the - * matched text. - * - * It is equivalent to yytext().charAt(pos), but faster - * - * @param pos the position of the character to fetch. - * A value from 0 to yylength()-1. - * - * @return the character at position pos - */ - public final char yycharat(int pos) { - return zzBuffer[zzStartRead+pos]; - } - - - /** - * Returns the length of the matched text region. - */ - public final int yylength() { - return zzMarkedPos-zzStartRead; - } - - - /** - * Reports an error that occured while scanning. - * - * In a wellformed scanner (no or only correct usage of - * yypushback(int) and a match-all fallback rule) this method - * will only be called with things that "Can't Possibly Happen". - * If this method is called, something is seriously wrong - * (e.g. a JFlex bug producing a faulty scanner etc.). - * - * Usual syntax/scanner level error handling should be done - * in error fallback rules. - * - * @param errorCode the code of the errormessage to display - */ - private void zzScanError(int errorCode) { - String message; - try { - message = ZZ_ERROR_MSG[errorCode]; - } - catch (ArrayIndexOutOfBoundsException e) { - message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; - } - - throw new Error(message); - } - - - /** - * Pushes the specified amount of characters back into the input stream. - * - * They will be read again by then next call of the scanning method - * - * @param number the number of characters to be read again. - * This number must not be greater than yylength()! - */ - public void yypushback(int number) { - if ( number > yylength() ) - zzScanError(ZZ_PUSHBACK_2BIG); - - zzMarkedPos -= number; - } - - - /** - * Resumes scanning until the next regular expression is matched, - * the end of input is encountered or an I/O-Error occurs. - * - * @return the next token - * @exception java.io.IOException if any I/O-Error occurs - */ - public org.fife.ui.rsyntaxtextarea.Token yylex() throws java.io.IOException { - int zzInput; - int zzAction; - - // cached fields: - int zzCurrentPosL; - int zzMarkedPosL; - int zzEndReadL = zzEndRead; - char [] zzBufferL = zzBuffer; - char [] zzCMapL = ZZ_CMAP; - - int [] zzTransL = ZZ_TRANS; - int [] zzRowMapL = ZZ_ROWMAP; - int [] zzAttrL = ZZ_ATTRIBUTE; - - while (true) { - zzMarkedPosL = zzMarkedPos; - - zzAction = -1; - - zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; - - zzState = zzLexicalState; - - - zzForAction: { - while (true) { - - if (zzCurrentPosL < zzEndReadL) - zzInput = zzBufferL[zzCurrentPosL++]; - else if (zzAtEOF) { - zzInput = YYEOF; - break zzForAction; - } - else { - // store back cached positions - zzCurrentPos = zzCurrentPosL; - zzMarkedPos = zzMarkedPosL; - boolean eof = zzRefill(); - // get translated positions and possibly new buffer - zzCurrentPosL = zzCurrentPos; - zzMarkedPosL = zzMarkedPos; - zzBufferL = zzBuffer; - zzEndReadL = zzEndRead; - if (eof) { - zzInput = YYEOF; - break zzForAction; - } - else { - zzInput = zzBufferL[zzCurrentPosL++]; - } - } - int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; - if (zzNext == -1) break zzForAction; - zzState = zzNext; - - int zzAttributes = zzAttrL[zzState]; - if ( (zzAttributes & 1) == 1 ) { - zzAction = zzState; - zzMarkedPosL = zzCurrentPosL; - if ( (zzAttributes & 8) == 8 ) break zzForAction; - } - - } - } - - // store back cached position - zzMarkedPos = zzMarkedPosL; - - switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { - case 15: - { addToken(Token.PREPROCESSOR); - } - case 26: break; - case 6: - { addNullToken(); return firstToken; - } - case 27: break; - case 19: - { addToken(Token.LITERAL_CHAR); - } - case 28: break; - case 9: - { addToken(Token.WHITESPACE); - } - case 29: break; - case 17: - { addToken(Token.LITERAL_NUMBER_HEXADECIMAL); - } - case 30: break; - case 18: - { addToken(Token.LITERAL_NUMBER_FLOAT); - } - case 31: break; - case 20: - { addToken(Token.RESERVED_WORD); - } - case 32: break; - case 22: - { addToken(Token.VARIABLE); - } - case 33: break; - case 8: - { addToken(Token.SEPARATOR); - } - case 34: break; - case 1: - { addToken(Token.IDENTIFIER); - } - case 35: break; - case 14: - { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; - } - case 36: break; - case 21: - { addToken(Token.FUNCTION); - } - case 37: break; - case 23: - { addToken(Token.DATA_TYPE); - } - case 38: break; - case 11: - { /* Skip escaped chars. */ - } - case 39: break; - case 2: - { addToken(Token.ERROR_IDENTIFIER); - } - case 40: break; - case 24: - { addToken(Token.LITERAL_BOOLEAN); - } - case 41: break; - case 12: - { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); return firstToken; - } - case 42: break; - case 25: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_EOL); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_EOL); start = zzMarkedPos; - } - case 43: break; - case 16: - { addToken(Token.ERROR_NUMBER_FORMAT); - } - case 44: break; - case 7: - { start = zzMarkedPos-1; yybegin(STRING); - } - case 45: break; - case 3: - { start = zzMarkedPos-1; yybegin(EOL_COMMENT); - } - case 46: break; - case 5: - { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); - } - case 47: break; - case 4: - { addToken(Token.OPERATOR); - } - case 48: break; - case 13: - { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); - } - case 49: break; - case 10: - { - } - case 50: break; - default: - if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { - zzAtEOF = true; - switch (zzLexicalState) { - case EOL_COMMENT: { - addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; - } - case 630: break; - case STRING: { - addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); return firstToken; - } - case 631: break; - case YYINITIAL: { - addNullToken(); return firstToken; - } - case 632: break; - default: - return null; - } - } - else { - zzScanError(ZZ_NO_MATCH); - } - } - } - } - - -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/DTokenMaker.flex b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/DTokenMaker.flex deleted file mode 100644 index c23934d..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/DTokenMaker.flex +++ /dev/null @@ -1,663 +0,0 @@ -/* - * 09/08/2014 - * - * DTokenMaker.java - Scanner for the D programming language. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * Scanner for the D programming language.

- * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated DTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 1.0 - * - */ -%% - -%public -%class DTokenMaker -%extends AbstractJFlexCTokenMaker -%unicode -%type org.fife.ui.rsyntaxtextarea.Token - - -%{ - - - /** - * Token type specific to DTokenMaker; this signals that the user is in - * a nestable multi-line comment. The nested depth is embedded in the - * actual end token type. - */ - private static final int INTERNAL_IN_NESTABLE_MLC = -(1<<11); - - /** - * When in a (possibly) nested MLC, this is the current nested depth. - */ - private int nestedMlcDepth; - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public DTokenMaker() { - } - - - /** - * Adds the token specified to the current linked list of tokens as an - * "end token;" that is, at zzMarkedPos. - * - * @param tokenType The token's type. - */ - private void addEndToken(int tokenType) { - addToken(zzMarkedPos,zzMarkedPos, tokenType); - } - - - private void addNestedMlcEndToken() { - addEndToken(INTERNAL_IN_NESTABLE_MLC - nestedMlcDepth); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addToken(int, int, int) - */ - private void addHyperlinkToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, true); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addHyperlinkToken(int, int, int) - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, false); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - * @param hyperlink Whether this token is a hyperlink. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, - int startOffset, boolean hyperlink) { - super.addToken(array, start,end, tokenType, startOffset, hyperlink); - zzStartRead = zzMarkedPos; - } - - - @Override - public int getClosestStandardTokenTypeForInternalType(int type) { - switch (type) { - case INTERNAL_IN_NESTABLE_MLC: - return TokenTypes.COMMENT_MULTILINE; - } - return type; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { "//", null }; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - nestedMlcDepth = 0; - - // Start off in the proper state. - int state = YYINITIAL; - switch (initialTokenType) { - case Token.LITERAL_BACKQUOTE: - state = WYSIWYG_STRING_2; - break; - case Token.LITERAL_STRING_DOUBLE_QUOTE: - state = WYSIWYG_STRING_1; - break; - case Token.COMMENT_MULTILINE: - state = MLC; - break; - case Token.COMMENT_DOCUMENTATION: - state = DOCCOMMENT; - break; - case INTERNAL_IN_NESTABLE_MLC: - state = NESTABLE_MLC; - break; - default: - if (initialTokenType<-1024) { - int main = -(-initialTokenType & 0xffffff00); - switch (main) { - default: // Should never happen - case INTERNAL_IN_NESTABLE_MLC: - state = NESTABLE_MLC; - break; - } - nestedMlcDepth = -initialTokenType&0xff; - } - else { - state = YYINITIAL; - } - } - - start = text.offset; - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - * @exception IOException if any I/O-Error occurs. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = zzPushbackPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtBOL = true; - zzAtEOF = false; - } - - -%} - -Letter = ([A-Za-z]) -LetterOrUnderscore = ({Letter}|"_") -NonzeroDigit = ([1-9]) -BinaryDigit = ([0-1]) -Digit = ("0"|{NonzeroDigit}) -HexDigit = ({Digit}|[A-Fa-f]) -OctalDigit = ([0-7]) -AnyCharacterButApostropheOrBackSlash = ([^\\']) -AnyCharacterButDoubleQuoteOrBackSlash = ([^\\\"\n]) -EscapedSourceCharacter = ("u"{HexDigit}{HexDigit}{HexDigit}{HexDigit}) -Escape = ("\\"(([btnfr\"'\\])|([0123]{OctalDigit}?{OctalDigit}?)|({OctalDigit}{OctalDigit}?)|{EscapedSourceCharacter})) -NonSeparator = ([^\t\f\r\n\ \(\)\{\}\[\]\;\,\.\=\>\<\!\~\?\:\+\-\*\/\&\|\^\%\"\'\`]|"#"|"\\") -IdentifierStart = ({LetterOrUnderscore}|"$") -IdentifierPart = ({IdentifierStart}|{Digit}|("\\"{EscapedSourceCharacter})) - -LineTerminator = (\n) -WhiteSpace = ([ \t\f]) - -StringPostfix = ([cwd]) -CharLiteral = ([\']({AnyCharacterButApostropheOrBackSlash}|{Escape})[\']{StringPostfix}?) -UnclosedCharLiteral = ([\'][^\'\n]*) -ErrorCharLiteral = ({UnclosedCharLiteral}[\']{StringPostfix}?) -StringLiteral = ([\"]({AnyCharacterButDoubleQuoteOrBackSlash}|{Escape})*[\"]{StringPostfix}?) -UnclosedStringLiteral = ([\"]([\\].|[^\\\"])*[^\"]?) -HexStringLiteral = ([x]{StringLiteral}) -UnclosedHexStringLiteral = ([x]{UnclosedStringLiteral}) -ErrorStringLiteral = ({UnclosedStringLiteral}[\"]{StringPostfix}?) -WysiwygStringLiteralStart = ("r"[\"]) -WysiwygStringLiteralStart2 = ("`") - -MLCBegin = "/*" -MLCEnd = "*/" -DocCommentBegin = "/**" -NestableMLCBegin = "/+" -LineCommentBegin = "//" -LineDocCommentBegin = "///" - -DigitOrUnderscore = ({Digit}|[_]) -DigitsAndUnderscoresEnd = ({DigitOrUnderscore}*{Digit}) -IntegerHelper = (({NonzeroDigit}{DigitsAndUnderscoresEnd}?)|"0") -IntegerLiteral = ({IntegerHelper}[lL]?) - -BinaryDigitOrUnderscore = ({BinaryDigit}|[_]) -BinaryDigitsAndUnderscores = ({BinaryDigit}({BinaryDigitOrUnderscore}*{BinaryDigit})?) -BinaryLiteral = ("0"[bB]{BinaryDigitsAndUnderscores}) - -HexDigitOrUnderscore = ({HexDigit}|[_]) -HexDigitsAndUnderscores = ({HexDigit}({HexDigitOrUnderscore}*{HexDigit})?) -OctalDigitOrUnderscore = ({OctalDigit}|[_]) -OctalDigitsAndUnderscoresEnd= ({OctalDigitOrUnderscore}*{OctalDigit}) -HexHelper = ("0"(([xX]{HexDigitsAndUnderscores})|({OctalDigitsAndUnderscoresEnd}))) -NonFloatSuffix = (([uU][lL]?)|([lL][uU]?)) -HexLiteral = ({HexHelper}{NonFloatSuffix}?) - -FloatHelper1 = ([fFdD]?) -FloatHelper2 = ([eE][+-]?{Digit}+{FloatHelper1}) -FloatLiteral1 = ({Digit}+"."({FloatHelper1}|{FloatHelper2}|{Digit}+({FloatHelper1}|{FloatHelper2}))) -FloatLiteral2 = ("."{Digit}+({FloatHelper1}|{FloatHelper2})) -FloatLiteral3 = ({Digit}+{FloatHelper2}) -FloatLiteral = ({FloatLiteral1}|{FloatLiteral2}|{FloatLiteral3}|({Digit}+[fFdD])) - -ErrorNumberFormat = (({IntegerLiteral}|{HexLiteral}|{FloatLiteral}){NonSeparator}+) -BooleanLiteral = ("true"|"false") - -Separator = ([\(\)\{\}\[\]]) -Separator2 = ([\;,.]) - -NonAssignmentOperator = ("+"|"-"|"<="|"^"|"++"|"<"|"*"|">="|"%"|"--"|">"|"/"|"!="|"?"|">>"|"!"|"&"|"=="|":"|">>"|"~"|"|"|"&&"|">>>") -AssignmentOperator = ("="|"-="|"*="|"/="|"|="|"&="|"^="|"+="|"%="|"<<="|">>="|">>>=") -Operator = ({NonAssignmentOperator}|{AssignmentOperator}) - -Identifier = ({IdentifierStart}{IdentifierPart}*) -ErrorIdentifier = ({NonSeparator}+) - -Annotation = ("@"{Identifier}?) - -URLGenDelim = ([:\/\?#\[\]@]) -URLSubDelim = ([\!\$&'\(\)\*\+,;=]) -URLUnreserved = ({LetterOrUnderscore}|{Digit}|[\-\.\~]) -URLCharacter = ({URLGenDelim}|{URLSubDelim}|{URLUnreserved}|[%]) -URLCharacters = ({URLCharacter}*) -URLEndCharacter = ([\/\$]|{Letter}|{Digit}) -URL = (((https?|f(tp|ile))"://"|"www.")({URLCharacters}{URLEndCharacter})?) - - -%state MLC -%state DOCCOMMENT -%state NESTABLE_MLC -%state EOL_COMMENT -%state EOL_DOCCOMMENT -%state WYSIWYG_STRING_1 -%state WYSIWYG_STRING_2 - -%% - - { - - /* Keywords */ - "abstract" | - "alias" | - "align" | - "asm" | - "assert" | - "auto" | - - "body" | - "break" | - - "case" | - "cast" | - "catch" | - "class" | - "const" | - "continue" | - - "debug" | - "default" | - "delegate" | - "delete" | - "deprecated" | - "do" | - - "else" | - "enum" | - "export" | - "extern" | - - "final" | - "finally" | - "for" | - "foreach" | - "foreach_reverse" | - "function" | - - "goto" | - - "if" | - "immutable" | - "import" | - "in" | - "inout" | - "interface" | - "invariant" | - "is" | - - "lazy" | - - "macro" | - "mixin" | - "module" | - - "new" | - "nothrow" | - "null" | - - "out" | - "override" | - - "package" | - "pragma" | - "private" | - "protected" | - "public" | - "pure" | - - "ref" | - - "scope" | - "shared" | - "static" | - "struct" | - "super" | - "switch" | - "synchronized" | - - "template" | - "this" | - "throw" | - "try" | - "typedef" | - "typeid" | - "typeof" | - - "union" | - "unittest" | - - "version" | - "void" | - "volatile" | - - "while" | - "with" | - - "__FILE__" | - "__MODULE__" | - "__LINE__" | - "__FUNCTION__" | - "__PRETTY_FUNCTION__" | - - "__gshared" | - "__traits" | - "__vector" | - "__parameters" { addToken(Token.RESERVED_WORD); } - "return" { addToken(Token.RESERVED_WORD_2); } - - /* Data types. */ - "string" | - "wstring" | - "dstring" | - "size_t" | - "ptrdiff_t" | - "bool" | - "byte" | - "cdouble" | - "cent" | - "cfloat" | - "char" | - "creal" | - "dchar" | - "double" | - "float" | - "idouble" | - "ifloat" | - "ireal" | - "int" | - "long" | - "real" | - "short" | - "ubyte" | - "ucent" | - "uint" | - "ulong" | - "ushort" | - "wchar" { addToken(Token.DATA_TYPE); } - - /* Booleans. */ - {BooleanLiteral} { addToken(Token.LITERAL_BOOLEAN); } - - /* Standard library (TODO) */ - - {LineTerminator} { addNullToken(); return firstToken; } - - {Identifier} { addToken(Token.IDENTIFIER); } - - {WhiteSpace}+ { addToken(Token.WHITESPACE); } - - /* String/Character literals. */ - {CharLiteral} { addToken(Token.LITERAL_CHAR); } - {UnclosedCharLiteral} { addToken(Token.ERROR_CHAR); addNullToken(); return firstToken; } - {ErrorCharLiteral} { addToken(Token.ERROR_CHAR); } - {StringLiteral} { addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); } - {UnclosedStringLiteral} { addToken(Token.ERROR_STRING_DOUBLE); addNullToken(); return firstToken; } - {ErrorStringLiteral} { addToken(Token.ERROR_STRING_DOUBLE); } - {HexStringLiteral} { addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); } - {UnclosedHexStringLiteral} { addToken(Token.ERROR_STRING_DOUBLE); addNullToken(); return firstToken; } - {WysiwygStringLiteralStart} { addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); yybegin(WYSIWYG_STRING_1); } - {WysiwygStringLiteralStart2} { addToken(Token.LITERAL_BACKQUOTE); yybegin(WYSIWYG_STRING_2); } - - /* Comment literals. */ - "/**/" { addToken(Token.COMMENT_MULTILINE); } - {MLCBegin} { start = zzMarkedPos-2; yybegin(MLC); } - {DocCommentBegin} { start = zzMarkedPos-3; yybegin(DOCCOMMENT); } - {NestableMLCBegin} { start = zzMarkedPos-2; nestedMlcDepth = 1; yybegin(NESTABLE_MLC); } - {LineCommentBegin} { start = zzMarkedPos-2; yybegin(EOL_COMMENT); } - {LineDocCommentBegin} { start = zzMarkedPos-3; yybegin(EOL_DOCCOMMENT); } - - /* Annotations. */ - {Annotation} { addToken(Token.ANNOTATION); } - - /* Separators. */ - {Separator} { addToken(Token.SEPARATOR); } - {Separator2} { addToken(Token.IDENTIFIER); } - - /* Operators. */ - {Operator} { addToken(Token.OPERATOR); } - - /* Numbers */ - {IntegerLiteral} { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); } - {BinaryLiteral} { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); } - {HexLiteral} { addToken(Token.LITERAL_NUMBER_HEXADECIMAL); } - {FloatLiteral} { addToken(Token.LITERAL_NUMBER_FLOAT); } - {ErrorNumberFormat} { addToken(Token.ERROR_NUMBER_FORMAT); } - - {ErrorIdentifier} { addToken(Token.ERROR_IDENTIFIER); } - - /* Ended with a line not in a string or comment. */ - <> { addNullToken(); return firstToken; } - - /* Catch any other (unhandled) characters and flag them as identifiers. */ - . { addToken(Token.ERROR_IDENTIFIER); } - -} - - { - - [^hwf\n\*]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_MULTILINE); start = zzMarkedPos; } - [hwf] {} - - {MLCEnd} { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); } - \* {} - \n | - <> { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; } - -} - - { - - [^hwf\n\*]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_DOCUMENTATION); start = zzMarkedPos; } - [hwf] {} - - {MLCEnd} { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.COMMENT_DOCUMENTATION); } - \* {} - \n | - <> { yybegin(YYINITIAL); addToken(start,zzEndRead, Token.COMMENT_DOCUMENTATION); return firstToken; } - -} - - { - - [^hwf\n\+\/]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_MULTILINE); start = zzMarkedPos; } - [hwf] {} - - {NestableMLCBegin} { nestedMlcDepth++; } - "/" {} - - "+/" { - System.out.println("... " + nestedMlcDepth); - if (--nestedMlcDepth==0) { - addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); yybegin(YYINITIAL); - } - } - \+ {} - \n | - <> { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addNestedMlcEndToken(); return firstToken; } -} - - { - [^hwf\n]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_EOL); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_EOL); start = zzMarkedPos; } - [hwf] {} - \n | - <> { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; } - -} - - { - [^hwf\n]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_DOCUMENTATION); start = zzMarkedPos; } - [hwf] {} - \n | - <> { addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addNullToken(); return firstToken; } - -} - - { - [^\"]+ { addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); } - \" { addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); yybegin(YYINITIAL); } - <> { - if (firstToken==null) { - addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); - } - return firstToken; - } -} - - { - [^\`]+ { addToken(Token.LITERAL_BACKQUOTE); } - \` { addToken(Token.LITERAL_BACKQUOTE); yybegin(YYINITIAL); } - <> { - if (firstToken==null) { - addToken(Token.LITERAL_BACKQUOTE); - } - return firstToken; - } -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/DTokenMaker.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/DTokenMaker.java deleted file mode 100644 index a4baff1..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/DTokenMaker.java +++ /dev/null @@ -1,1948 +0,0 @@ -/* The following code was generated by JFlex 1.4.1 on 6/21/15 7:13 PM */ - -/* - * 09/08/2014 - * - * DTokenMaker.java - Scanner for the D programming language. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * Scanner for the D programming language.

- * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated DTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 1.0 - * - */ - -public class DTokenMaker extends AbstractJFlexCTokenMaker { - - /** This character denotes the end of file */ - public static final int YYEOF = -1; - - /** lexical states */ - public static final int WYSIWYG_STRING_1 = 6; - public static final int EOL_COMMENT = 4; - public static final int NESTABLE_MLC = 3; - public static final int DOCCOMMENT = 2; - public static final int YYINITIAL = 0; - public static final int MLC = 1; - public static final int WYSIWYG_STRING_2 = 7; - public static final int EOL_DOCCOMMENT = 5; - - /** - * Translates characters to character classes - */ - private static final String ZZ_CMAP_PACKED = - "\11\0\1\22\1\11\1\0\1\22\1\20\22\0\1\22\1\60\1\16"+ - "\1\21\1\1\1\60\1\62\1\10\2\65\1\31\1\32\1\53\1\43"+ - "\1\44\1\30\1\4\1\5\2\17\4\7\2\3\1\63\1\53\1\54"+ - "\1\55\1\57\1\61\1\64\1\6\1\34\1\105\1\40\1\42\1\100"+ - "\2\1\1\101\2\1\1\33\1\102\1\104\1\103\1\107\1\1\1\110"+ - "\1\1\1\106\1\37\2\1\1\36\1\111\1\1\1\65\1\12\1\65"+ - "\1\56\1\2\1\27\1\47\1\35\1\24\1\41\1\46\1\15\1\71"+ - "\1\66\1\70\1\1\1\75\1\50\1\72\1\14\1\73\1\67\1\1"+ - "\1\26\1\51\1\45\1\13\1\76\1\23\1\25\1\74\1\77\1\52"+ - "\1\56\1\52\1\61\uff81\0"; - - /** - * Translates characters to character classes - */ - private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); - - /** - * Translates DFA states to action switch labels. - */ - private static final int [] ZZ_ACTION = zzUnpackAction(); - - private static final String ZZ_ACTION_PACKED_0 = - "\10\0\1\1\2\2\2\3\1\4\1\5\3\2\1\6"+ - "\1\1\1\7\4\2\1\10\3\11\2\2\1\11\6\2"+ - "\1\12\1\2\4\11\1\13\6\2\1\14\1\15\4\14"+ - "\1\16\5\14\1\17\3\14\1\20\3\14\1\21\1\22"+ - "\1\23\1\24\1\25\1\1\1\2\2\26\1\27\1\3"+ - "\1\26\1\27\2\26\1\30\2\26\1\4\1\31\1\0"+ - "\1\4\16\2\2\6\1\22\13\2\1\6\1\32\1\2"+ - "\1\33\1\34\1\35\4\2\1\36\24\2\1\0\1\11"+ - "\1\13\4\2\3\36\10\2\3\0\1\37\4\0\1\40"+ - "\1\0\1\41\1\42\4\0\1\1\10\2\1\3\1\27"+ - "\1\0\4\30\1\3\1\4\1\43\1\31\2\4\1\31"+ - "\1\4\11\2\1\36\1\6\1\44\1\6\1\22\12\2"+ - "\2\6\2\2\1\45\1\46\37\2\1\1\6\2\1\47"+ - "\12\2\14\0\1\1\11\2\1\30\2\26\1\43\1\4"+ - "\2\2\1\47\4\2\1\44\1\6\2\2\2\6\1\2"+ - "\1\50\6\2\1\51\13\2\1\1\13\2\1\0\1\52"+ - "\2\0\1\53\2\0\1\54\1\0\1\1\10\2\1\4"+ - "\1\2\1\36\1\2\1\6\1\2\1\6\10\2\1\1"+ - "\12\2\6\0\1\1\6\2\1\4\2\2\1\6\1\2"+ - "\1\6\1\55\2\2\1\1\12\2\1\36\1\6\1\2"+ - "\1\1\21\2"; - - private static int [] zzUnpackAction() { - int [] result = new int[459]; - int offset = 0; - offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAction(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /** - * Translates a state to a row index in the transition table - */ - private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); - - private static final String ZZ_ROWMAP_PACKED_0 = - "\0\0\0\112\0\224\0\336\0\u0128\0\u0172\0\u01bc\0\u0206"+ - "\0\u0250\0\u029a\0\u02e4\0\u032e\0\u0378\0\u03c2\0\u040c\0\u0456"+ - "\0\u04a0\0\u04ea\0\u0534\0\u040c\0\u057e\0\u05c8\0\u0612\0\u065c"+ - "\0\u06a6\0\u040c\0\u06f0\0\u073a\0\u0784\0\u07ce\0\u0818\0\u0862"+ - "\0\u08ac\0\u08f6\0\u0940\0\u098a\0\u09d4\0\u0a1e\0\u040c\0\u040c"+ - "\0\u0a68\0\u0ab2\0\u040c\0\u0afc\0\u0b46\0\u0b90\0\u0bda\0\u0c24"+ - "\0\u0c6e\0\u0cb8\0\u0d02\0\u0d4c\0\u040c\0\u0d96\0\u0de0\0\u0e2a"+ - "\0\u0e74\0\u040c\0\u0ebe\0\u0f08\0\u0f52\0\u0f9c\0\u0fe6\0\u040c"+ - "\0\u1030\0\u107a\0\u10c4\0\u040c\0\u110e\0\u1158\0\u11a2\0\u040c"+ - "\0\u11ec\0\u040c\0\u1236\0\u040c\0\u1280\0\u12ca\0\u1314\0\u135e"+ - "\0\u1314\0\u1314\0\u13a8\0\u13f2\0\u143c\0\u1486\0\u14d0\0\u151a"+ - "\0\u1564\0\u15ae\0\u15f8\0\u1642\0\u168c\0\u16d6\0\u1720\0\u176a"+ - "\0\u17b4\0\u17fe\0\u1848\0\u1892\0\u18dc\0\u1926\0\u1970\0\u19ba"+ - "\0\u1a04\0\u1a4e\0\u1a98\0\u1ae2\0\u1b2c\0\u1b76\0\u1bc0\0\u1c0a"+ - "\0\u1c54\0\u1c9e\0\u1ce8\0\u1d32\0\u1d7c\0\u1dc6\0\u1e10\0\u1e5a"+ - "\0\u1ea4\0\u1eee\0\u040c\0\u1f38\0\u1f82\0\u1fcc\0\u040c\0\u2016"+ - "\0\u2060\0\u20aa\0\u20f4\0\u213e\0\u2188\0\u21d2\0\u221c\0\u2266"+ - "\0\u22b0\0\u22fa\0\u2344\0\u238e\0\u23d8\0\u2422\0\u246c\0\u24b6"+ - "\0\u2500\0\u254a\0\u2594\0\u25de\0\u2628\0\u2672\0\u26bc\0\u2706"+ - "\0\u073a\0\u2750\0\u279a\0\u27e4\0\u282e\0\u2878\0\u28c2\0\u290c"+ - "\0\u1ce8\0\u029a\0\u2956\0\u29a0\0\u29ea\0\u2a34\0\u2a7e\0\u2ac8"+ - "\0\u2b12\0\u2b5c\0\u2ba6\0\u2bf0\0\u2c3a\0\u040c\0\u2c84\0\u2cce"+ - "\0\u2d18\0\u2d62\0\u040c\0\u2dac\0\u040c\0\u040c\0\u2df6\0\u2e40"+ - "\0\u2e8a\0\u2ed4\0\u2f1e\0\u2f68\0\u2fb2\0\u2ffc\0\u3046\0\u3090"+ - "\0\u30da\0\u3124\0\u316e\0\u31b8\0\u3202\0\u324c\0\u3296\0\u32e0"+ - "\0\u332a\0\u3374\0\u33be\0\u3408\0\u3452\0\u040c\0\u349c\0\u34e6"+ - "\0\u3530\0\u357a\0\u35c4\0\u360e\0\u3658\0\u36a2\0\u36ec\0\u3736"+ - "\0\u3780\0\u37ca\0\u3814\0\u385e\0\u38a8\0\u38f2\0\u393c\0\u040c"+ - "\0\u3986\0\u39d0\0\u3a1a\0\u3a64\0\u213e\0\u3aae\0\u3af8\0\u3b42"+ - "\0\u3b8c\0\u3bd6\0\u3c20\0\u3c6a\0\u3cb4\0\u3cfe\0\u040c\0\u3d48"+ - "\0\u3d92\0\u3ddc\0\u3e26\0\u3e70\0\u3eba\0\u3f04\0\u3f4e\0\u3f98"+ - "\0\u3fe2\0\u402c\0\u4076\0\u40c0\0\u410a\0\u4154\0\u419e\0\u41e8"+ - "\0\u4232\0\u427c\0\u42c6\0\u4310\0\u435a\0\u43a4\0\u43ee\0\u4438"+ - "\0\u4482\0\u44cc\0\u4516\0\u4560\0\u45aa\0\u45f4\0\u463e\0\u4688"+ - "\0\u46d2\0\u471c\0\u4766\0\u47b0\0\u47fa\0\u4844\0\u488e\0\u48d8"+ - "\0\u4922\0\u496c\0\u49b6\0\u4a00\0\u4a4a\0\u4a94\0\u4ade\0\u4b28"+ - "\0\u4b72\0\u4bbc\0\u4c06\0\u4c50\0\u4c9a\0\u4ce4\0\u4d2e\0\u4d78"+ - "\0\u4dc2\0\u4e0c\0\u4e56\0\u4ea0\0\u4eea\0\u4f34\0\u4f7e\0\u4fc8"+ - "\0\u5012\0\u505c\0\u50a6\0\u50f0\0\u513a\0\u5184\0\u51ce\0\u1314"+ - "\0\u5218\0\u33be\0\u040c\0\u5262\0\u52ac\0\u52f6\0\u029a\0\u5340"+ - "\0\u538a\0\u53d4\0\u541e\0\u040c\0\u5468\0\u54b2\0\u54fc\0\u5546"+ - "\0\u5590\0\u55da\0\u040c\0\u5624\0\u566e\0\u56b8\0\u5702\0\u574c"+ - "\0\u5796\0\u029a\0\u57e0\0\u582a\0\u5874\0\u58be\0\u5908\0\u5952"+ - "\0\u599c\0\u59e6\0\u5a30\0\u5a7a\0\u5ac4\0\u5b0e\0\u5b58\0\u5ba2"+ - "\0\u5bec\0\u5c36\0\u5c80\0\u5cca\0\u5d14\0\u5d5e\0\u5da8\0\u5df2"+ - "\0\u5e3c\0\u5e86\0\u5ed0\0\u5f1a\0\u5f64\0\u5fae\0\u5ff8\0\u6042"+ - "\0\u608c\0\u60d6\0\u6120\0\u616a\0\u61b4\0\u61fe\0\u6248\0\u6292"+ - "\0\u62dc\0\u6326\0\u6370\0\u63ba\0\u6404\0\u644e\0\u6498\0\u64e2"+ - "\0\u652c\0\u6576\0\u65c0\0\u660a\0\u6654\0\u669e\0\u66e8\0\u6732"+ - "\0\u677c\0\u67c6\0\u6810\0\u685a\0\u68a4\0\u68ee\0\u6938\0\u6982"+ - "\0\u69cc\0\u6a16\0\u6a60\0\u6aaa\0\u6af4\0\u6b3e\0\u5ed0\0\u6b88"+ - "\0\u5fae\0\u6bd2\0\u608c\0\u6c1c\0\u6c66\0\u6cb0\0\u6cfa\0\u6d44"+ - "\0\u6d8e\0\u6dd8\0\u6e22\0\u6e6c\0\u6eb6\0\u6f00\0\u6f4a\0\u6f94"+ - "\0\u029a\0\u6fde\0\u7028\0\u7072\0\u70bc\0\u7106\0\u7150\0\u719a"+ - "\0\u71e4\0\u722e\0\u7278\0\u72c2\0\u730c\0\u7356\0\u73a0\0\u73ea"+ - "\0\u7434\0\u747e\0\u74c8\0\u7512\0\u755c\0\u75a6\0\u75f0\0\u763a"+ - "\0\u7684\0\u76ce\0\u7718\0\u7762\0\u77ac\0\u77f6\0\u7840\0\u788a"+ - "\0\u78d4\0\u791e\0\u7968"; - - private static int [] zzUnpackRowMap() { - int [] result = new int[459]; - int offset = 0; - offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackRowMap(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int high = packed.charAt(i++) << 16; - result[j++] = high | packed.charAt(i++); - } - return j; - } - - /** - * The transition table of the DFA - */ - private static final int [] ZZ_TRANS = zzUnpackTrans(); - - private static final String ZZ_TRANS_PACKED_0 = - "\1\11\1\12\1\13\1\14\1\15\1\14\1\12\1\14"+ - "\1\16\1\17\1\11\1\20\1\21\1\22\1\23\1\14"+ - "\1\24\1\11\1\25\1\26\1\27\1\30\1\31\1\32"+ - "\1\33\1\34\1\35\2\12\1\36\3\12\1\37\1\12"+ - "\1\40\1\41\1\42\1\43\1\44\1\45\1\46\1\47"+ - "\1\50\1\51\2\34\1\52\1\34\1\53\1\54\1\53"+ - "\1\55\1\47\1\12\1\56\1\57\1\60\1\61\1\62"+ - "\2\12\1\63\13\12\11\64\1\65\3\64\1\66\5\64"+ - "\1\67\5\64\1\70\34\64\1\71\34\64\1\72\3\64"+ - "\1\73\5\64\1\74\5\64\1\75\34\64\1\76\23\64"+ - "\11\77\1\100\3\77\1\66\5\77\1\67\4\77\1\101"+ - "\1\77\1\102\33\77\1\71\23\77\11\103\1\104\3\103"+ - "\1\105\5\103\1\106\42\103\1\107\34\103\1\110\3\103"+ - "\1\73\5\103\1\74\42\103\1\76\23\103\16\111\1\112"+ - "\73\111\27\113\1\114\62\113\10\11\2\0\4\11\1\0"+ - "\1\11\1\0\1\11\1\0\4\11\4\0\10\11\2\0"+ - "\5\11\12\0\1\11\1\0\25\11\7\12\2\0\1\115"+ - "\3\12\1\0\1\12\1\0\1\11\1\0\4\12\4\0"+ - "\10\12\2\0\5\12\12\0\1\11\1\0\24\12\1\11"+ - "\1\12\1\116\5\12\2\0\1\115\3\12\1\0\1\12"+ - "\1\0\1\11\1\0\4\12\4\0\10\12\2\0\5\12"+ - "\12\0\1\11\1\0\24\12\2\117\1\120\3\14\1\117"+ - "\1\14\2\0\3\117\1\121\1\0\1\14\1\0\1\117"+ - "\1\0\4\117\4\0\1\122\4\117\2\121\1\123\1\0"+ - "\1\124\1\117\1\123\1\117\1\122\1\117\12\0\1\117"+ - "\1\0\12\117\1\121\13\117\1\125\1\126\2\127\1\117"+ - "\1\127\2\0\3\117\1\121\1\0\1\127\1\0\1\117"+ - "\1\0\2\117\1\130\1\117\4\0\1\122\2\131\1\130"+ - "\1\117\2\121\1\123\1\0\1\124\1\117\1\123\1\117"+ - "\1\122\1\117\12\0\1\117\1\0\12\117\1\121\11\117"+ - "\10\132\1\133\1\134\1\135\77\132\112\0\1\11\7\12"+ - "\2\0\1\115\1\12\1\136\1\12\1\0\1\12\1\0"+ - "\1\11\1\0\1\12\1\137\2\12\4\0\2\12\1\140"+ - "\5\12\2\0\3\12\1\141\1\142\12\0\1\11\1\0"+ - "\2\12\1\143\21\12\1\11\7\12\2\0\1\115\1\144"+ - "\2\12\1\0\1\12\1\0\1\11\1\0\4\12\4\0"+ - "\10\12\2\0\1\12\1\145\3\12\12\0\1\11\1\0"+ - "\5\12\1\146\16\12\1\11\7\12\2\0\1\115\1\147"+ - "\2\12\1\0\1\12\1\0\1\11\1\0\4\12\4\0"+ - "\10\12\2\0\2\12\1\150\1\151\1\12\12\0\1\11"+ - "\1\0\2\12\1\152\2\12\1\153\16\12\11\23\1\154"+ - "\1\155\3\23\1\156\73\23\22\0\1\25\67\0\1\11"+ - "\7\12\2\0\1\115\3\12\1\0\1\12\1\0\1\11"+ - "\1\0\1\12\1\157\2\12\4\0\10\12\2\0\4\12"+ - "\1\160\12\0\1\11\1\0\1\161\1\12\1\162\21\12"+ - "\1\11\7\12\2\0\1\115\2\12\1\163\1\0\1\12"+ - "\1\0\1\11\1\0\3\12\1\164\4\0\6\12\1\165"+ - "\1\12\2\0\1\12\1\143\1\166\1\167\1\12\12\0"+ - "\1\11\1\0\1\170\4\12\1\171\16\12\1\11\7\12"+ - "\2\0\1\115\3\12\1\172\1\12\1\0\1\11\1\0"+ - "\4\12\4\0\10\12\2\0\5\12\12\0\1\11\1\0"+ - "\24\12\1\11\7\12\2\0\1\115\3\12\1\173\1\12"+ - "\1\0\1\11\1\0\4\12\4\0\10\12\2\0\1\12"+ - "\1\174\3\12\12\0\1\11\1\0\24\12\30\0\1\175"+ - "\1\176\1\177\22\0\1\53\111\0\1\53\66\0\1\53"+ - "\22\0\1\53\34\0\1\11\7\12\2\0\1\115\3\12"+ - "\1\0\1\12\1\0\1\11\1\0\3\12\1\200\4\0"+ - "\10\12\2\0\5\12\12\0\1\11\1\0\5\12\1\201"+ - "\1\202\15\12\1\11\7\12\2\0\1\115\3\12\1\0"+ - "\1\12\1\0\1\11\1\0\1\12\1\157\2\12\4\0"+ - "\10\12\2\0\1\12\1\203\2\12\1\160\12\0\1\11"+ - "\1\0\5\12\1\204\16\12\43\0\1\53\11\0\1\53"+ - "\37\0\3\124\1\0\1\124\7\0\1\124\72\0\1\11"+ - "\7\12\2\0\1\115\3\12\1\0\1\12\1\0\1\11"+ - "\1\0\3\12\1\205\4\0\10\12\2\0\1\12\1\206"+ - "\3\12\12\0\1\11\1\0\1\207\5\12\1\210\15\12"+ - "\1\11\7\12\2\0\1\115\1\12\1\211\1\12\1\0"+ - "\1\12\1\0\1\11\1\0\2\12\1\212\1\12\4\0"+ - "\10\12\2\0\3\12\1\213\1\12\12\0\1\11\1\0"+ - "\24\12\1\11\7\12\2\0\1\115\1\214\2\12\1\0"+ - "\1\12\1\0\1\11\1\0\4\12\4\0\2\12\1\215"+ - "\5\12\2\0\3\12\1\216\1\217\12\0\1\11\1\0"+ - "\24\12\1\11\7\12\2\0\1\115\3\12\1\0\1\12"+ - "\1\0\1\11\1\0\4\12\4\0\10\12\2\0\2\12"+ - "\1\220\2\12\12\0\1\11\1\0\5\12\1\221\16\12"+ - "\1\11\7\12\2\0\1\115\1\222\2\12\1\0\1\12"+ - "\1\0\1\11\1\0\1\223\1\224\2\12\4\0\10\12"+ - "\2\0\1\225\4\12\12\0\1\11\1\0\1\226\1\12"+ - "\1\227\3\12\1\230\15\12\54\0\1\231\1\53\111\0"+ - "\1\53\1\0\1\232\107\0\1\53\4\0\1\53\27\0"+ - "\1\11\2\233\3\11\1\233\1\11\2\0\1\11\3\233"+ - "\1\0\1\11\1\0\1\11\1\0\4\233\4\0\10\233"+ - "\2\0\5\233\12\0\1\11\1\0\24\233\1\11\7\12"+ - "\2\0\1\115\1\234\2\12\1\0\1\12\1\0\1\11"+ - "\1\0\3\12\1\235\4\0\10\12\2\0\1\236\1\12"+ - "\1\237\2\12\12\0\1\11\1\0\24\12\1\11\7\12"+ - "\2\0\1\115\1\12\1\240\1\241\1\0\1\12\1\0"+ - "\1\11\1\0\3\12\1\164\4\0\6\12\1\165\1\12"+ - "\2\0\4\12\1\242\12\0\1\11\1\0\4\12\1\243"+ - "\17\12\1\11\7\12\2\0\1\115\3\12\1\0\1\12"+ - "\1\0\1\11\1\0\4\12\4\0\10\12\2\0\5\12"+ - "\12\0\1\11\1\0\5\12\1\214\16\12\1\11\7\12"+ - "\2\0\1\115\3\12\1\0\1\12\1\0\1\11\1\0"+ - "\4\12\4\0\10\12\2\0\2\12\1\244\2\12\12\0"+ - "\1\11\1\0\2\12\1\245\2\12\1\246\16\12\1\11"+ - "\7\12\2\0\1\115\1\247\2\12\1\0\1\12\1\0"+ - "\1\11\1\0\4\12\4\0\10\12\2\0\5\12\12\0"+ - "\1\11\1\0\10\12\1\250\13\12\1\11\7\12\2\0"+ - "\1\115\3\12\1\0\1\12\1\0\1\11\1\0\4\12"+ - "\4\0\10\12\2\0\1\12\1\251\3\12\12\0\1\11"+ - "\1\0\5\12\1\252\16\12\11\64\1\0\3\64\1\0"+ - "\5\64\1\0\5\64\1\0\34\64\1\0\23\64\45\0"+ - "\1\253\22\0\1\254\44\0\1\255\116\0\1\256\126\0"+ - "\1\257\111\0\1\260\22\0\1\261\44\0\1\262\116\0"+ - "\1\263\126\0\1\264\44\0\11\77\1\0\3\77\1\0"+ - "\5\77\1\0\4\77\1\0\1\77\1\0\33\77\1\0"+ - "\23\77\32\0\1\265\107\0\1\266\61\0\11\103\1\0"+ - "\3\103\1\0\5\103\1\0\42\103\1\0\23\103\45\0"+ - "\1\267\22\0\1\270\44\0\1\271\133\0\1\272\44\0"+ - "\16\111\1\0\73\111\27\113\1\0\62\113\10\11\2\0"+ - "\1\11\1\273\2\11\1\0\1\11\1\0\1\11\1\0"+ - "\4\11\4\0\10\11\2\0\5\11\12\0\1\11\1\0"+ - "\25\11\7\12\2\0\1\115\3\12\1\0\1\12\1\0"+ - "\1\11\1\0\4\12\4\0\1\274\7\12\2\0\1\275"+ - "\4\12\12\0\1\11\1\0\1\12\1\276\1\12\1\277"+ - "\4\12\1\300\1\12\1\301\1\12\1\302\4\12\1\303"+ - "\2\12\10\117\2\0\4\117\1\0\1\117\1\0\1\117"+ - "\1\0\4\117\4\0\10\117\2\0\5\117\12\0\1\117"+ - "\1\0\26\117\1\120\3\304\1\117\1\304\2\0\4\117"+ - "\1\0\1\304\1\0\1\117\1\0\4\117\4\0\10\117"+ - "\2\0\5\117\12\0\1\117\1\0\27\117\3\305\1\117"+ - "\1\305\2\0\4\117\1\0\1\305\1\0\1\117\1\0"+ - "\4\117\3\0\1\306\10\117\1\306\1\0\5\117\12\0"+ - "\1\117\1\0\27\117\3\124\1\117\1\124\2\0\3\117"+ - "\1\121\1\0\1\124\1\0\1\117\1\0\4\117\4\0"+ - "\5\117\2\121\1\123\2\0\1\117\1\123\3\117\12\0"+ - "\1\117\1\0\12\117\1\121\13\117\1\125\1\117\2\307"+ - "\1\117\1\307\2\0\4\117\1\0\1\307\1\0\1\117"+ - "\1\0\4\117\4\0\10\117\2\0\5\117\12\0\1\117"+ - "\1\0\27\117\3\126\1\117\1\126\2\0\3\117\1\121"+ - "\1\0\1\126\1\0\1\117\1\0\4\117\4\0\5\117"+ - "\2\121\1\123\1\0\1\124\1\117\1\123\3\117\12\0"+ - "\1\117\1\0\12\117\1\121\13\117\1\125\1\126\2\127"+ - "\1\117\1\127\2\0\1\117\1\310\1\117\1\121\1\0"+ - "\1\127\1\0\1\117\1\0\4\117\4\0\1\311\3\117"+ - "\1\310\2\121\1\123\1\0\1\124\1\117\1\123\1\117"+ - "\1\311\1\117\12\0\1\117\1\0\12\117\1\121\14\117"+ - "\5\312\2\0\3\117\1\312\1\0\1\312\1\0\1\117"+ - "\1\0\1\117\1\312\2\117\4\0\1\117\2\312\2\117"+ - "\3\312\2\0\1\117\2\312\2\117\12\0\1\117\1\0"+ - "\12\117\1\312\4\117\1\312\10\117\2\313\2\117\2\0"+ - "\4\117\1\0\1\117\1\0\1\117\1\0\4\117\4\0"+ - "\10\117\2\0\5\117\12\0\1\117\1\0\24\117\10\314"+ - "\1\315\1\0\100\314\23\0\2\316\14\0\1\316\60\0"+ - "\1\315\101\0\4\314\2\317\1\314\1\320\1\321\1\0"+ - "\1\132\1\322\3\132\1\317\6\314\1\132\6\314\1\132"+ - "\7\314\1\132\44\314\1\11\7\12\2\0\1\115\3\12"+ - "\1\0\1\12\1\0\1\11\1\0\4\12\4\0\10\12"+ - "\2\0\5\12\12\0\1\11\1\0\2\12\1\323\21\12"+ - "\1\11\7\12\2\0\1\115\3\12\1\0\1\12\1\0"+ - "\1\11\1\0\4\12\4\0\10\12\2\0\1\12\1\143"+ - "\3\12\12\0\1\11\1\0\24\12\1\11\7\12\2\0"+ - "\1\115\3\12\1\0\1\12\1\0\1\11\1\0\4\12"+ - "\4\0\10\12\2\0\5\12\12\0\1\11\1\0\6\12"+ - "\1\202\15\12\1\11\7\12\2\0\1\115\3\12\1\0"+ - "\1\12\1\0\1\11\1\0\4\12\4\0\10\12\2\0"+ - "\5\12\12\0\1\11\1\0\5\12\1\221\16\12\1\11"+ - "\7\12\2\0\1\115\3\12\1\0\1\12\1\0\1\11"+ - "\1\0\4\12\4\0\10\12\2\0\5\12\12\0\1\11"+ - "\1\0\1\324\23\12\1\11\7\12\2\0\1\115\1\12"+ - "\1\325\1\12\1\0\1\12\1\0\1\11\1\0\4\12"+ - "\4\0\10\12\2\0\5\12\12\0\1\11\1\0\24\12"+ - "\1\11\7\12\2\0\1\115\3\12\1\0\1\12\1\0"+ - "\1\11\1\0\4\12\4\0\10\12\2\0\3\12\1\326"+ - "\1\12\12\0\1\11\1\0\24\12\1\11\7\12\2\0"+ - "\1\115\3\12\1\0\1\12\1\0\1\11\1\0\1\242"+ - "\3\12\4\0\10\12\2\0\5\12\12\0\1\11\1\0"+ - "\24\12\1\11\7\12\2\0\1\115\3\12\1\0\1\12"+ - "\1\0\1\11\1\0\4\12\4\0\10\12\2\0\1\327"+ - "\4\12\12\0\1\11\1\0\24\12\1\11\7\12\2\0"+ - "\1\115\1\12\1\330\1\12\1\0\1\12\1\0\1\11"+ - "\1\0\4\12\4\0\10\12\2\0\5\12\12\0\1\11"+ - "\1\0\24\12\1\11\7\12\2\0\1\115\3\12\1\0"+ - "\1\12\1\0\1\11\1\0\4\12\4\0\10\12\2\0"+ - "\3\12\1\331\1\12\12\0\1\11\1\0\24\12\1\11"+ - "\7\12\2\0\1\115\3\12\1\0\1\12\1\0\1\11"+ - "\1\0\4\12\4\0\10\12\2\0\5\12\12\0\1\11"+ - "\1\0\5\12\1\332\16\12\1\11\7\12\2\0\1\115"+ - "\1\12\1\333\1\12\1\0\1\12\1\0\1\11\1\0"+ - "\4\12\4\0\10\12\2\0\5\12\12\0\1\11\1\0"+ - "\24\12\1\11\7\12\2\0\1\115\3\12\1\0\1\12"+ - "\1\0\1\11\1\0\3\12\1\334\4\0\10\12\2\0"+ - "\5\12\12\0\1\11\1\0\24\12\12\154\1\335\3\154"+ - "\1\336\77\154\2\23\1\154\2\23\1\0\1\23\1\337"+ - "\4\23\6\154\1\23\6\154\1\23\7\154\1\23\44\154"+ - "\23\0\2\340\14\0\1\340\50\0\1\11\7\12\2\0"+ - "\1\115\3\12\1\0\1\12\1\0\1\11\1\0\4\12"+ - "\4\0\10\12\2\0\5\12\12\0\1\11\1\0\1\170"+ - "\23\12\1\11\7\12\2\0\1\115\3\12\1\0\1\12"+ - "\1\0\1\11\1\0\4\12\4\0\10\12\2\0\1\341"+ - "\4\12\12\0\1\11\1\0\24\12\1\11\7\12\2\0"+ - "\1\115\3\12\1\0\1\12\1\0\1\11\1\0\4\12"+ - "\4\0\10\12\2\0\5\12\12\0\1\11\1\0\2\12"+ - "\1\342\21\12\1\11\7\12\2\0\1\115\3\12\1\0"+ - "\1\12\1\0\1\11\1\0\4\12\4\0\10\12\2\0"+ - "\1\343\4\12\12\0\1\11\1\0\24\12\1\11\7\12"+ - "\2\0\1\115\3\12\1\0\1\12\1\0\1\11\1\0"+ - "\4\12\4\0\10\12\2\0\3\12\1\151\1\12\12\0"+ - "\1\11\1\0\24\12\1\11\7\12\2\0\1\115\3\12"+ - "\1\0\1\12\1\0\1\11\1\0\4\12\4\0\10\12"+ - "\2\0\1\12\1\344\3\12\12\0\1\11\1\0\24\12"+ - "\1\11\7\12\2\0\1\115\3\12\1\0\1\12\1\0"+ - "\1\11\1\0\4\12\4\0\10\12\2\0\5\12\12\0"+ - "\1\11\1\0\5\12\1\345\16\12\1\11\7\12\2\0"+ - "\1\115\3\12\1\0\1\12\1\0\1\11\1\0\4\12"+ - "\4\0\10\12\2\0\1\346\3\12\1\347\12\0\1\11"+ - "\1\0\24\12\1\11\7\12\2\0\1\115\3\12\1\0"+ - "\1\12\1\0\1\11\1\0\4\12\4\0\10\12\2\0"+ - "\2\12\1\350\2\12\12\0\1\11\1\0\24\12\1\11"+ - "\7\12\2\0\1\115\3\12\1\0\1\12\1\0\1\11"+ - "\1\0\4\12\4\0\10\12\2\0\2\12\1\351\2\12"+ - "\12\0\1\11\1\0\24\12\1\11\7\12\2\0\1\115"+ - "\1\12\1\352\1\12\1\0\1\12\1\0\1\11\1\0"+ - "\4\12\4\0\10\12\2\0\5\12\12\0\1\11\1\0"+ - "\24\12\11\172\1\353\1\354\3\172\1\156\73\172\1\11"+ - "\7\12\2\0\1\115\2\12\1\242\1\0\1\12\1\0"+ - "\1\11\1\0\4\12\4\0\10\12\2\0\1\355\1\12"+ - "\1\356\2\12\12\0\1\11\1\0\24\12\30\0\1\357"+ - "\112\0\1\360\60\0\1\11\7\12\2\0\1\115\3\12"+ - "\1\0\1\12\1\0\1\11\1\0\4\12\4\0\10\12"+ - "\2\0\1\12\1\361\3\12\12\0\1\11\1\0\24\12"+ - "\1\11\7\12\2\0\1\115\3\12\1\0\1\12\1\0"+ - "\1\11\1\0\4\12\4\0\6\12\1\362\1\12\2\0"+ - "\5\12\12\0\1\11\1\0\5\12\1\356\16\12\1\11"+ - "\7\12\2\0\1\115\3\12\1\0\1\12\1\0\1\11"+ - "\1\0\4\12\4\0\10\12\2\0\1\363\4\12\12\0"+ - "\1\11\1\0\24\12\1\11\7\12\2\0\1\115\2\12"+ - "\1\364\1\0\1\12\1\0\1\11\1\0\4\12\4\0"+ - "\2\12\1\365\5\12\2\0\3\12\1\366\1\12\12\0"+ - "\1\11\1\0\1\12\1\367\22\12\1\11\7\12\2\0"+ - "\1\115\1\370\2\12\1\0\1\12\1\0\1\11\1\0"+ - "\4\12\4\0\10\12\2\0\5\12\12\0\1\11\1\0"+ - "\24\12\1\11\7\12\2\0\1\115\1\371\2\12\1\0"+ - "\1\12\1\0\1\11\1\0\4\12\4\0\10\12\2\0"+ - "\5\12\12\0\1\11\1\0\6\12\1\242\15\12\1\11"+ - "\7\12\2\0\1\115\3\12\1\0\1\12\1\0\1\11"+ - "\1\0\4\12\4\0\10\12\2\0\5\12\12\0\1\11"+ - "\1\0\4\12\1\372\17\12\1\11\7\12\2\0\1\115"+ - "\3\12\1\0\1\12\1\0\1\11\1\0\3\12\1\373"+ - "\4\0\10\12\2\0\5\12\12\0\1\11\1\0\2\12"+ - "\1\374\21\12\1\11\7\12\2\0\1\115\3\12\1\0"+ - "\1\12\1\0\1\11\1\0\4\12\4\0\10\12\2\0"+ - "\5\12\12\0\1\11\1\0\1\12\1\375\22\12\1\11"+ - "\7\12\2\0\1\115\1\376\2\12\1\0\1\12\1\0"+ - "\1\11\1\0\4\12\4\0\10\12\2\0\5\12\12\0"+ - "\1\11\1\0\24\12\1\11\7\12\2\0\1\115\3\12"+ - "\1\0\1\12\1\0\1\11\1\0\4\12\4\0\10\12"+ - "\2\0\1\377\4\12\12\0\1\11\1\0\1\12\1\u0100"+ - "\22\12\1\11\7\12\2\0\1\115\3\12\1\0\1\12"+ - "\1\0\1\11\1\0\4\12\4\0\10\12\2\0\4\12"+ - "\1\u0101\12\0\1\11\1\0\24\12\1\11\7\12\2\0"+ - "\1\115\3\12\1\0\1\12\1\0\1\11\1\0\4\12"+ - "\4\0\10\12\2\0\1\u0102\4\12\12\0\1\11\1\0"+ - "\24\12\1\11\7\12\2\0\1\115\3\12\1\0\1\12"+ - "\1\0\1\11\1\0\4\12\4\0\10\12\2\0\4\12"+ - "\1\u0103\12\0\1\11\1\0\24\12\1\11\7\12\2\0"+ - "\1\115\3\12\1\0\1\12\1\0\1\11\1\0\4\12"+ - "\4\0\10\12\2\0\5\12\12\0\1\11\1\0\2\12"+ - "\1\u0104\21\12\1\11\7\12\2\0\1\115\3\12\1\0"+ - "\1\12\1\0\1\11\1\0\4\12\4\0\10\12\2\0"+ - "\4\12\1\u0105\12\0\1\11\1\0\4\12\1\242\17\12"+ - "\1\11\7\12\2\0\1\115\3\12\1\0\1\12\1\0"+ - "\1\11\1\0\4\12\4\0\10\12\2\0\5\12\12\0"+ - "\1\11\1\0\11\12\1\362\12\12\1\11\7\12\2\0"+ - "\1\115\1\12\1\u0106\1\12\1\0\1\12\1\0\1\11"+ - "\1\0\4\12\4\0\10\12\2\0\5\12\12\0\1\11"+ - "\1\0\24\12\1\11\7\12\2\0\1\115\3\12\1\0"+ - "\1\12\1\0\1\11\1\0\4\12\4\0\10\12\2\0"+ - "\5\12\12\0\1\11\1\0\1\12\1\u0107\22\12\1\11"+ - "\7\12\2\0\1\115\3\12\1\0\1\12\1\0\1\11"+ - "\1\0\4\12\4\0\10\12\2\0\5\12\12\0\1\11"+ - "\1\0\2\12\1\u0108\21\12\1\11\7\12\2\0\1\115"+ - "\3\12\1\0\1\12\1\0\1\11\1\0\4\12\4\0"+ - "\10\12\2\0\5\12\12\0\1\11\1\0\5\12\1\u0109"+ - "\16\12\1\11\7\12\2\0\1\115\3\12\1\0\1\12"+ - "\1\0\1\11\1\0\3\12\1\u010a\4\0\10\12\2\0"+ - "\2\12\1\u010b\2\12\12\0\1\11\1\0\24\12\1\11"+ - "\7\12\2\0\1\115\3\12\1\0\1\12\1\0\1\11"+ - "\1\0\4\12\4\0\10\12\2\0\2\12\1\u010c\2\12"+ - "\12\0\1\11\1\0\5\12\1\u010d\16\12\1\11\7\12"+ - "\2\0\1\115\3\12\1\0\1\12\1\0\1\11\1\0"+ - "\4\12\4\0\10\12\2\0\5\12\12\0\1\11\1\0"+ - "\11\12\1\u010e\12\12\1\11\7\12\2\0\1\115\1\12"+ - "\1\u010f\1\12\1\0\1\12\1\0\1\11\1\0\4\12"+ - "\4\0\10\12\2\0\5\12\12\0\1\11\1\0\24\12"+ - "\55\0\1\53\1\0\1\34\32\0\1\11\7\233\2\0"+ - "\1\u0110\3\233\1\0\1\233\1\0\1\11\1\0\4\233"+ - "\4\0\10\233\2\0\5\233\12\0\1\11\1\0\24\233"+ - "\1\11\7\12\2\0\1\115\3\12\1\0\1\12\1\0"+ - "\1\11\1\0\3\12\1\u0101\4\0\2\12\1\u0111\5\12"+ - "\2\0\5\12\12\0\1\11\1\0\24\12\1\11\7\12"+ - "\2\0\1\115\3\12\1\0\1\12\1\0\1\11\1\0"+ - "\4\12\4\0\10\12\2\0\2\12\1\u0112\2\12\12\0"+ - "\1\11\1\0\2\12\1\u0113\2\12\1\u0114\16\12\1\11"+ - "\7\12\2\0\1\115\3\12\1\0\1\12\1\0\1\11"+ - "\1\0\3\12\1\u0115\4\0\10\12\2\0\5\12\12\0"+ - "\1\11\1\0\24\12\1\11\7\12\2\0\1\115\3\12"+ - "\1\0\1\12\1\0\1\11\1\0\1\12\1\u0116\2\12"+ - "\4\0\10\12\2\0\5\12\12\0\1\11\1\0\24\12"+ - "\1\11\7\12\2\0\1\115\3\12\1\0\1\12\1\0"+ - "\1\11\1\0\4\12\4\0\10\12\2\0\1\u0117\4\12"+ - "\12\0\1\11\1\0\5\12\1\u0118\2\12\1\u0119\13\12"+ - "\1\11\7\12\2\0\1\115\3\12\1\0\1\12\1\0"+ - "\1\11\1\0\4\12\4\0\10\12\2\0\5\12\12\0"+ - "\1\11\1\0\1\12\1\u0100\2\12\1\u011a\17\12\1\11"+ - "\7\12\2\0\1\115\3\12\1\0\1\12\1\0\1\11"+ - "\1\0\1\12\1\u011b\2\12\4\0\10\12\2\0\5\12"+ - "\12\0\1\11\1\0\24\12\1\11\7\12\2\0\1\115"+ - "\3\12\1\0\1\12\1\0\1\11\1\0\2\12\1\u011c"+ - "\1\12\4\0\10\12\2\0\5\12\12\0\1\11\1\0"+ - "\24\12\1\11\7\12\2\0\1\115\3\12\1\0\1\12"+ - "\1\0\1\11\1\0\4\12\4\0\6\12\1\u011d\1\12"+ - "\2\0\5\12\12\0\1\11\1\0\24\12\1\11\7\12"+ - "\2\0\1\115\3\12\1\0\1\12\1\0\1\11\1\0"+ - "\4\12\4\0\10\12\2\0\1\242\4\12\12\0\1\11"+ - "\1\0\24\12\1\11\7\12\2\0\1\115\3\12\1\0"+ - "\1\12\1\0\1\11\1\0\4\12\4\0\10\12\2\0"+ - "\1\12\1\u011e\3\12\12\0\1\11\1\0\24\12\1\11"+ - "\7\12\2\0\1\115\3\12\1\0\1\12\1\0\1\11"+ - "\1\0\3\12\1\u011f\4\0\10\12\2\0\5\12\12\0"+ - "\1\11\1\0\24\12\1\11\7\12\2\0\1\115\3\12"+ - "\1\0\1\12\1\0\1\11\1\0\4\12\4\0\10\12"+ - "\2\0\3\12\1\u0120\1\12\12\0\1\11\1\0\2\12"+ - "\1\u0121\21\12\67\0\1\u0122\72\0\1\u0123\64\0\1\u0124"+ - "\133\0\1\u0125\133\0\1\u0126\72\0\1\u0127\64\0\1\u0128"+ - "\133\0\1\u0129\133\0\1\u012a\72\0\1\u012b\64\0\1\u012c"+ - "\133\0\1\u012d\44\0\3\11\5\u012e\2\0\3\11\1\u012e"+ - "\1\0\1\u012e\1\0\1\11\1\0\1\11\1\u012e\2\11"+ - "\4\0\1\11\2\u012e\2\11\3\u012e\2\0\1\11\2\u012e"+ - "\2\11\12\0\1\11\1\0\12\11\1\u012e\4\11\1\u012e"+ - "\5\11\7\12\2\0\1\115\3\12\1\0\1\12\1\0"+ - "\1\11\1\0\4\12\4\0\10\12\2\0\5\12\12\0"+ - "\1\11\1\0\13\12\1\u012f\10\12\1\11\7\12\2\0"+ - "\1\115\3\12\1\0\1\12\1\0\1\11\1\0\3\12"+ - "\1\u0130\4\0\10\12\2\0\5\12\12\0\1\11\1\0"+ - "\24\12\1\11\7\12\2\0\1\115\3\12\1\0\1\12"+ - "\1\0\1\11\1\0\4\12\4\0\10\12\2\0\2\12"+ - "\1\u0131\2\12\12\0\1\11\1\0\24\12\1\11\7\12"+ - "\2\0\1\115\3\12\1\0\1\12\1\0\1\11\1\0"+ - "\4\12\4\0\10\12\2\0\4\12\1\u0132\12\0\1\11"+ - "\1\0\24\12\1\11\7\12\2\0\1\115\3\12\1\0"+ - "\1\12\1\0\1\11\1\0\4\12\4\0\10\12\2\0"+ - "\1\12\1\u0133\3\12\12\0\1\11\1\0\24\12\1\11"+ - "\7\12\2\0\1\115\3\12\1\0\1\12\1\0\1\11"+ - "\1\0\4\12\4\0\4\12\1\u0134\3\12\2\0\5\12"+ - "\12\0\1\11\1\0\13\12\1\u0135\10\12\1\11\7\12"+ - "\2\0\1\115\3\12\1\0\1\12\1\0\1\11\1\0"+ - "\4\12\4\0\10\12\2\0\5\12\12\0\1\11\1\0"+ - "\15\12\1\u0136\6\12\1\11\7\12\2\0\1\115\3\12"+ - "\1\0\1\12\1\0\1\11\1\0\4\12\4\0\10\12"+ - "\2\0\5\12\12\0\1\11\1\0\22\12\1\u0137\1\12"+ - "\2\117\1\120\3\304\1\117\1\304\2\0\4\117\1\0"+ - "\1\304\1\0\1\117\1\0\4\117\4\0\1\122\7\117"+ - "\2\0\3\117\1\122\1\117\12\0\1\117\1\0\27\117"+ - "\3\305\1\117\1\305\2\0\3\117\1\121\1\0\1\305"+ - "\1\0\1\117\1\0\4\117\4\0\5\117\2\121\1\117"+ - "\2\0\5\117\12\0\1\117\1\0\12\117\1\121\11\117"+ - "\3\0\3\305\1\0\1\305\7\0\1\305\72\0\2\117"+ - "\1\125\1\117\2\307\1\117\1\307\2\0\1\117\1\310"+ - "\2\117\1\0\1\307\1\0\1\117\1\0\4\117\4\0"+ - "\1\311\3\117\1\310\3\117\2\0\3\117\1\311\1\117"+ - "\12\0\1\117\1\0\34\117\2\0\4\117\1\0\1\117"+ - "\1\0\1\117\1\0\4\117\4\0\1\u0138\7\117\2\0"+ - "\3\117\1\u0138\1\117\12\0\1\117\1\0\34\117\2\0"+ - "\1\117\1\u0138\2\117\1\0\1\117\1\0\1\117\1\0"+ - "\4\117\4\0\4\117\1\u0138\3\117\2\0\5\117\12\0"+ - "\1\117\1\0\26\117\1\u0139\5\312\2\0\1\117\1\310"+ - "\1\117\1\312\1\0\1\312\1\0\1\117\1\0\1\117"+ - "\1\312\2\117\4\0\1\311\2\312\1\117\1\310\3\312"+ - "\2\0\1\117\2\312\1\311\1\117\12\0\1\117\1\0"+ - "\12\117\1\312\4\117\1\312\6\117\1\u013a\1\117\2\313"+ - "\2\117\2\0\4\117\1\0\1\117\1\0\1\117\1\0"+ - "\4\117\4\0\10\117\2\0\5\117\12\0\1\117\1\0"+ - "\24\117\10\314\1\133\1\0\100\314\23\0\2\u013b\14\0"+ - "\1\u013b\50\0\4\314\2\320\1\314\1\320\1\315\1\0"+ - "\5\314\1\320\76\314\2\132\1\314\1\132\1\315\1\0"+ - "\5\314\1\132\72\314\10\0\1\315\12\0\2\316\14\0"+ - "\1\316\50\0\3\314\5\u013c\1\133\1\0\3\314\1\u013c"+ - "\1\314\1\u013c\4\314\1\u013c\7\314\2\u013c\2\314\3\u013c"+ - "\3\314\2\u013c\30\314\1\u013c\4\314\1\u013c\4\314\1\11"+ - "\7\12\2\0\1\115\3\12\1\0\1\12\1\0\1\11"+ - "\1\0\4\12\4\0\10\12\2\0\1\u013d\4\12\12\0"+ - "\1\11\1\0\5\12\1\u013e\16\12\1\11\7\12\2\0"+ - "\1\115\3\12\1\0\1\12\1\0\1\11\1\0\4\12"+ - "\4\0\10\12\2\0\5\12\12\0\1\11\1\0\5\12"+ - "\1\u010d\16\12\1\11\7\12\2\0\1\115\3\12\1\0"+ - "\1\12\1\0\1\11\1\0\4\12\4\0\10\12\2\0"+ - "\1\u013f\4\12\12\0\1\11\1\0\24\12\1\11\7\12"+ - "\2\0\1\115\3\12\1\0\1\12\1\0\1\11\1\0"+ - "\4\12\4\0\10\12\2\0\3\12\1\242\1\12\12\0"+ - "\1\11\1\0\24\12\1\11\7\12\2\0\1\115\3\12"+ - "\1\0\1\12\1\0\1\11\1\0\4\12\4\0\10\12"+ - "\2\0\5\12\12\0\1\11\1\0\1\u0140\23\12\1\11"+ - "\7\12\2\0\1\115\3\12\1\0\1\12\1\0\1\11"+ - "\1\0\1\12\1\u0141\2\12\4\0\10\12\2\0\5\12"+ - "\12\0\1\11\1\0\24\12\1\11\7\12\2\0\1\115"+ - "\3\12\1\0\1\12\1\0\1\11\1\0\4\12\4\0"+ - "\10\12\2\0\4\12\1\371\12\0\1\11\1\0\24\12"+ - "\1\11\7\12\2\0\1\115\3\12\1\0\1\12\1\0"+ - "\1\11\1\0\4\12\4\0\10\12\2\0\2\12\1\325"+ - "\2\12\12\0\1\11\1\0\24\12\1\11\7\12\2\0"+ - "\1\115\3\12\1\0\1\12\1\0\1\11\1\0\4\12"+ - "\4\0\10\12\2\0\2\12\1\u0142\2\12\12\0\1\11"+ - "\1\0\24\12\1\11\7\12\2\0\1\115\3\12\1\0"+ - "\1\12\1\0\1\11\1\0\4\12\4\0\10\12\2\0"+ - "\1\12\1\u0143\3\12\12\0\1\11\1\0\24\12\11\154"+ - "\1\0\100\154\23\0\2\u0144\14\0\1\u0144\50\0\3\154"+ - "\5\u0145\2\154\1\335\2\154\1\u0145\1\336\1\u0145\4\154"+ - "\1\u0145\7\154\2\u0145\2\154\3\u0145\3\154\2\u0145\30\154"+ - "\1\u0145\4\154\1\u0145\4\154\1\11\7\12\2\0\1\115"+ - "\3\12\1\0\1\12\1\0\1\11\1\0\3\12\1\u0146"+ - "\4\0\10\12\2\0\5\12\12\0\1\11\1\0\24\12"+ - "\1\11\7\12\2\0\1\115\3\12\1\0\1\12\1\0"+ - "\1\11\1\0\4\12\4\0\10\12\2\0\3\12\1\u0101"+ - "\1\12\12\0\1\11\1\0\24\12\1\11\7\12\2\0"+ - "\1\115\3\12\1\0\1\12\1\0\1\11\1\0\4\12"+ - "\4\0\10\12\2\0\5\12\12\0\1\11\1\0\1\242"+ - "\23\12\1\11\7\12\2\0\1\115\3\12\1\0\1\12"+ - "\1\0\1\11\1\0\4\12\4\0\10\12\2\0\2\12"+ - "\1\356\2\12\12\0\1\11\1\0\24\12\1\11\7\12"+ - "\2\0\1\115\3\12\1\0\1\12\1\0\1\11\1\0"+ - "\1\12\1\343\2\12\4\0\10\12\2\0\5\12\12\0"+ - "\1\11\1\0\24\12\1\11\7\12\2\0\1\115\3\12"+ - "\1\0\1\12\1\0\1\11\1\0\4\12\4\0\10\12"+ - "\2\0\2\242\3\12\12\0\1\11\1\0\24\12\1\11"+ - "\7\12\2\0\1\115\3\12\1\0\1\12\1\0\1\11"+ - "\1\0\4\12\4\0\10\12\2\0\4\12\1\374\12\0"+ - "\1\11\1\0\24\12\1\11\7\12\2\0\1\115\3\12"+ - "\1\0\1\12\1\0\1\11\1\0\3\12\1\u013f\4\0"+ - "\10\12\2\0\5\12\12\0\1\11\1\0\24\12\1\11"+ - "\7\12\2\0\1\115\3\12\1\0\1\12\1\0\1\11"+ - "\1\0\4\12\4\0\10\12\2\0\1\u0147\3\12\1\247"+ - "\12\0\1\11\1\0\24\12\12\353\1\u0148\3\353\1\0"+ - "\77\353\2\172\1\353\2\172\1\0\1\172\1\u0149\4\172"+ - "\6\353\1\172\6\353\1\172\7\353\1\172\44\353\1\11"+ - "\7\12\2\0\1\115\1\u014a\2\12\1\0\1\12\1\0"+ - "\1\11\1\0\4\12\4\0\10\12\2\0\5\12\12\0"+ - "\1\11\1\0\24\12\1\11\7\12\2\0\1\115\3\12"+ - "\1\0\1\12\1\0\1\11\1\0\4\12\4\0\10\12"+ - "\2\0\3\12\1\u013f\1\12\12\0\1\11\1\0\24\12"+ - "\30\0\1\u014b\61\0\1\11\7\12\2\0\1\115\3\12"+ - "\1\0\1\12\1\0\1\11\1\0\4\12\4\0\10\12"+ - "\2\0\2\12\1\u014c\2\12\12\0\1\11\1\0\24\12"+ - "\1\11\7\12\2\0\1\115\3\12\1\0\1\12\1\0"+ - "\1\11\1\0\4\12\4\0\10\12\2\0\5\12\12\0"+ - "\1\11\1\0\6\12\1\242\15\12\1\11\7\12\2\0"+ - "\1\115\3\12\1\0\1\12\1\0\1\11\1\0\4\12"+ - "\4\0\10\12\2\0\1\12\1\u013f\3\12\12\0\1\11"+ - "\1\0\24\12\1\11\7\12\2\0\1\115\3\12\1\0"+ - "\1\12\1\0\1\11\1\0\4\12\4\0\10\12\2\0"+ - "\2\12\1\u014d\2\12\12\0\1\11\1\0\24\12\1\11"+ - "\7\12\2\0\1\115\1\u014e\2\12\1\0\1\12\1\0"+ - "\1\11\1\0\4\12\4\0\10\12\2\0\5\12\12\0"+ - "\1\11\1\0\24\12\1\11\7\12\2\0\1\115\3\12"+ - "\1\0\1\12\1\0\1\11\1\0\4\12\4\0\10\12"+ - "\2\0\1\12\1\u014f\3\12\12\0\1\11\1\0\24\12"+ - "\1\11\7\12\2\0\1\115\3\12\1\0\1\12\1\0"+ - "\1\11\1\0\3\12\1\u0150\4\0\10\12\2\0\5\12"+ - "\12\0\1\11\1\0\24\12\1\11\7\12\2\0\1\115"+ - "\3\12\1\0\1\12\1\0\1\11\1\0\4\12\4\0"+ - "\2\12\1\u0151\5\12\2\0\5\12\12\0\1\11\1\0"+ - "\24\12\1\11\7\12\2\0\1\115\3\12\1\0\1\12"+ - "\1\0\1\11\1\0\4\12\4\0\10\12\2\0\1\12"+ - "\1\u0152\3\12\12\0\1\11\1\0\24\12\1\11\7\12"+ - "\2\0\1\115\3\12\1\0\1\12\1\0\1\11\1\0"+ - "\4\12\4\0\10\12\2\0\5\12\12\0\1\11\1\0"+ - "\1\12\1\u0153\22\12\1\11\7\12\2\0\1\115\3\12"+ - "\1\0\1\12\1\0\1\11\1\0\4\12\4\0\10\12"+ - "\2\0\5\12\12\0\1\11\1\0\5\12\1\145\16\12"+ - "\1\11\7\12\2\0\1\115\3\12\1\0\1\12\1\0"+ - "\1\11\1\0\4\12\4\0\10\12\2\0\4\12\1\242"+ - "\12\0\1\11\1\0\24\12\1\11\7\12\2\0\1\115"+ - "\3\12\1\0\1\12\1\0\1\11\1\0\4\12\4\0"+ - "\10\12\2\0\1\12\1\u0154\3\12\12\0\1\11\1\0"+ - "\24\12\1\11\7\12\2\0\1\115\3\12\1\0\1\12"+ - "\1\0\1\11\1\0\4\12\4\0\10\12\2\0\5\12"+ - "\12\0\1\11\1\0\4\12\1\242\17\12\1\11\7\12"+ - "\2\0\1\115\3\12\1\0\1\12\1\0\1\11\1\0"+ - "\4\12\4\0\10\12\2\0\1\12\1\u0155\3\12\12\0"+ - "\1\11\1\0\24\12\1\11\7\12\2\0\1\115\3\12"+ - "\1\0\1\12\1\0\1\11\1\0\4\12\4\0\10\12"+ - "\2\0\5\12\12\0\1\11\1\0\5\12\1\u0156\16\12"+ - "\1\11\7\12\2\0\1\115\3\12\1\0\1\12\1\0"+ - "\1\11\1\0\4\12\4\0\10\12\2\0\1\12\1\242"+ - "\3\12\12\0\1\11\1\0\24\12\1\11\7\12\2\0"+ - "\1\115\3\12\1\0\1\12\1\0\1\11\1\0\4\12"+ - "\4\0\10\12\2\0\5\12\12\0\1\11\1\0\5\12"+ - "\1\242\16\12\1\11\7\12\2\0\1\115\3\12\1\0"+ - "\1\12\1\0\1\11\1\0\4\12\4\0\10\12\2\0"+ - "\1\u0157\4\12\12\0\1\11\1\0\24\12\1\11\7\12"+ - "\2\0\1\115\3\12\1\0\1\12\1\0\1\11\1\0"+ - "\4\12\4\0\10\12\2\0\2\12\1\374\2\12\12\0"+ - "\1\11\1\0\3\12\1\u013e\20\12\1\11\7\12\2\0"+ - "\1\115\3\12\1\0\1\12\1\0\1\11\1\0\4\12"+ - "\4\0\10\12\2\0\1\12\1\u0156\3\12\12\0\1\11"+ - "\1\0\24\12\1\11\7\12\2\0\1\115\3\12\1\0"+ - "\1\12\1\0\1\11\1\0\4\12\4\0\10\12\2\0"+ - "\5\12\12\0\1\11\1\0\3\12\1\u013f\20\12\1\11"+ - "\7\12\2\0\1\115\3\12\1\0\1\12\1\0\1\11"+ - "\1\0\4\12\4\0\10\12\2\0\1\12\1\u0158\3\12"+ - "\12\0\1\11\1\0\24\12\1\11\7\12\2\0\1\115"+ - "\3\12\1\0\1\12\1\0\1\11\1\0\4\12\4\0"+ - "\10\12\2\0\1\346\4\12\12\0\1\11\1\0\24\12"+ - "\1\11\7\12\2\0\1\115\3\12\1\0\1\12\1\0"+ - "\1\11\1\0\4\12\4\0\10\12\2\0\5\12\12\0"+ - "\1\11\1\0\1\12\1\u0101\22\12\1\11\7\12\2\0"+ - "\1\115\1\u0159\2\12\1\0\1\12\1\0\1\11\1\0"+ - "\4\12\4\0\10\12\2\0\5\12\12\0\1\11\1\0"+ - "\2\12\1\221\21\12\1\11\7\12\2\0\1\115\3\12"+ - "\1\0\1\12\1\0\1\11\1\0\4\12\4\0\10\12"+ - "\2\0\1\u015a\4\12\12\0\1\11\1\0\24\12\1\11"+ - "\7\12\2\0\1\115\3\12\1\0\1\12\1\0\1\11"+ - "\1\0\3\12\1\u015b\4\0\10\12\2\0\5\12\12\0"+ - "\1\11\1\0\24\12\1\11\7\12\2\0\1\115\3\12"+ - "\1\0\1\12\1\0\1\11\1\0\3\12\1\325\4\0"+ - "\10\12\2\0\5\12\12\0\1\11\1\0\24\12\1\11"+ - "\7\12\2\0\1\115\3\12\1\0\1\12\1\0\1\11"+ - "\1\0\4\12\4\0\10\12\2\0\1\12\1\u015c\3\12"+ - "\12\0\1\11\1\0\24\12\1\11\7\12\2\0\1\115"+ - "\3\12\1\0\1\12\1\0\1\11\1\0\1\12\1\u015d"+ - "\2\12\4\0\10\12\2\0\5\12\12\0\1\11\1\0"+ - "\24\12\10\11\2\0\1\11\1\u015e\2\11\1\0\1\11"+ - "\1\0\1\11\1\0\4\11\4\0\10\11\2\0\5\11"+ - "\12\0\1\11\1\0\25\11\7\12\2\0\1\115\3\12"+ - "\1\0\1\12\1\0\1\11\1\0\4\12\4\0\10\12"+ - "\2\0\3\12\1\u015a\1\12\12\0\1\11\1\0\24\12"+ - "\1\11\7\12\2\0\1\115\3\12\1\0\1\12\1\0"+ - "\1\11\1\0\4\12\4\0\10\12\2\0\5\12\12\0"+ - "\1\11\1\0\3\12\1\u015f\20\12\1\11\7\12\2\0"+ - "\1\115\3\12\1\0\1\12\1\0\1\11\1\0\4\12"+ - "\4\0\10\12\2\0\5\12\12\0\1\11\1\0\10\12"+ - "\1\u0160\13\12\1\11\7\12\2\0\1\115\3\12\1\0"+ - "\1\12\1\0\1\11\1\0\4\12\4\0\10\12\2\0"+ - "\1\u0161\4\12\12\0\1\11\1\0\24\12\1\11\7\12"+ - "\2\0\1\115\3\12\1\0\1\12\1\0\1\11\1\0"+ - "\4\12\4\0\6\12\1\u0162\1\12\2\0\5\12\12\0"+ - "\1\11\1\0\24\12\1\11\7\12\2\0\1\115\3\12"+ - "\1\0\1\12\1\0\1\11\1\0\4\12\4\0\10\12"+ - "\2\0\5\12\12\0\1\11\1\0\7\12\1\u0163\14\12"+ - "\1\11\7\12\2\0\1\115\3\12\1\0\1\12\1\0"+ - "\1\11\1\0\4\12\4\0\10\12\2\0\1\12\1\u0164"+ - "\3\12\12\0\1\11\1\0\24\12\1\11\7\12\2\0"+ - "\1\115\1\247\2\12\1\0\1\12\1\0\1\11\1\0"+ - "\4\12\4\0\10\12\2\0\5\12\12\0\1\11\1\0"+ - "\24\12\1\11\7\12\2\0\1\115\3\12\1\0\1\12"+ - "\1\0\1\11\1\0\4\12\4\0\10\12\2\0\2\12"+ - "\1\u0165\2\12\12\0\1\11\1\0\24\12\1\11\7\12"+ - "\2\0\1\115\1\u0166\2\12\1\0\1\12\1\0\1\11"+ - "\1\0\4\12\4\0\10\12\2\0\5\12\12\0\1\11"+ - "\1\0\24\12\1\11\7\12\2\0\1\115\3\12\1\0"+ - "\1\12\1\0\1\11\1\0\3\12\1\u0102\4\0\10\12"+ - "\2\0\5\12\12\0\1\11\1\0\24\12\1\11\7\12"+ - "\2\0\1\115\3\12\1\0\1\12\1\0\1\11\1\0"+ - "\4\12\4\0\10\12\2\0\5\12\12\0\1\11\1\0"+ - "\2\12\1\u013e\21\12\1\11\7\12\2\0\1\115\1\342"+ - "\2\12\1\0\1\12\1\0\1\11\1\0\4\12\4\0"+ - "\10\12\2\0\5\12\12\0\1\11\1\0\24\12\1\11"+ - "\7\12\2\0\1\115\3\12\1\0\1\12\1\0\1\11"+ - "\1\0\3\12\1\u0167\4\0\10\12\2\0\5\12\12\0"+ - "\1\11\1\0\24\12\1\11\7\12\2\0\1\115\3\12"+ - "\1\0\1\12\1\0\1\11\1\0\4\12\4\0\10\12"+ - "\2\0\4\12\1\u0168\12\0\1\11\1\0\24\12\1\11"+ - "\7\12\2\0\1\115\3\12\1\0\1\12\1\0\1\11"+ - "\1\0\4\12\4\0\10\12\2\0\2\12\1\u0169\2\12"+ - "\12\0\1\11\1\0\24\12\1\11\7\12\2\0\1\115"+ - "\3\12\1\0\1\12\1\0\1\11\1\0\4\12\4\0"+ - "\6\12\1\242\1\12\2\0\5\12\12\0\1\11\1\0"+ - "\24\12\63\0\1\u016a\74\0\1\u0122\107\0\1\u016b\134\0"+ - "\1\u016c\105\0\1\u016d\74\0\1\u0126\107\0\1\u016e\134\0"+ - "\1\u016f\105\0\1\u0170\74\0\1\u012a\107\0\1\u0171\134\0"+ - "\1\u0172\22\0\3\11\5\u0173\2\0\3\11\1\u0173\1\0"+ - "\1\u0173\1\0\1\11\1\0\1\11\1\u0173\2\11\4\0"+ - "\1\11\2\u0173\2\11\3\u0173\2\0\1\11\2\u0173\2\11"+ - "\12\0\1\11\1\0\12\11\1\u0173\4\11\1\u0173\5\11"+ - "\7\12\2\0\1\115\3\12\1\0\1\12\1\0\1\11"+ - "\1\0\4\12\4\0\10\12\2\0\5\12\12\0\1\11"+ - "\1\0\16\12\1\u0174\5\12\1\11\7\12\2\0\1\115"+ - "\3\12\1\0\1\12\1\0\1\11\1\0\4\12\4\0"+ - "\10\12\2\0\2\12\1\u0175\2\12\12\0\1\11\1\0"+ - "\24\12\1\11\7\12\2\0\1\115\3\12\1\0\1\12"+ - "\1\0\1\11\1\0\3\12\1\u0176\4\0\10\12\2\0"+ - "\5\12\12\0\1\11\1\0\24\12\1\11\7\12\2\0"+ - "\1\115\3\12\1\0\1\12\1\0\1\11\1\0\4\12"+ - "\4\0\10\12\2\0\5\12\12\0\1\11\1\0\1\u0177"+ - "\23\12\1\11\7\12\2\0\1\115\3\12\1\0\1\12"+ - "\1\0\1\11\1\0\1\12\1\u0178\2\12\4\0\10\12"+ - "\2\0\5\12\12\0\1\11\1\0\24\12\1\11\7\12"+ - "\2\0\1\115\3\12\1\0\1\12\1\0\1\11\1\0"+ - "\4\12\4\0\10\12\2\0\5\12\12\0\1\11\1\0"+ - "\16\12\1\u0179\5\12\1\11\7\12\2\0\1\115\3\12"+ - "\1\0\1\12\1\0\1\11\1\0\4\12\4\0\1\u0174"+ - "\7\12\2\0\5\12\12\0\1\11\1\0\24\12\1\11"+ - "\7\12\2\0\1\115\3\12\1\0\1\12\1\0\1\11"+ - "\1\0\4\12\4\0\5\12\1\u017a\2\12\2\0\5\12"+ - "\12\0\1\11\1\0\24\12\1\11\7\12\2\0\1\115"+ - "\3\12\1\0\1\12\1\0\1\11\1\0\4\12\4\0"+ - "\7\12\1\u017b\2\0\5\12\12\0\1\11\1\0\24\12"+ - "\2\117\1\u0139\5\312\2\0\3\117\1\312\1\0\1\312"+ - "\1\0\1\117\1\0\1\117\1\312\2\117\4\0\1\117"+ - "\2\312\2\117\3\312\2\0\1\117\2\312\2\117\12\0"+ - "\1\117\1\0\12\117\1\312\4\117\1\312\4\117\3\314"+ - "\5\u017c\1\133\1\0\3\314\1\u017c\1\314\1\u017c\4\314"+ - "\1\u017c\7\314\2\u017c\2\314\3\u017c\3\314\2\u017c\30\314"+ - "\1\u017c\4\314\1\u017c\4\314\1\11\7\12\2\0\1\115"+ - "\3\12\1\0\1\12\1\0\1\11\1\0\4\12\4\0"+ - "\10\12\2\0\1\u017d\4\12\12\0\1\11\1\0\24\12"+ - "\1\11\7\12\2\0\1\115\1\12\1\242\1\12\1\0"+ - "\1\12\1\0\1\11\1\0\4\12\4\0\10\12\2\0"+ - "\5\12\12\0\1\11\1\0\24\12\1\11\7\12\2\0"+ - "\1\115\3\12\1\0\1\12\1\0\1\11\1\0\3\12"+ - "\1\373\4\0\10\12\2\0\5\12\12\0\1\11\1\0"+ - "\24\12\1\11\7\12\2\0\1\115\3\12\1\0\1\12"+ - "\1\0\1\11\1\0\4\12\4\0\10\12\2\0\1\u0168"+ - "\4\12\12\0\1\11\1\0\24\12\1\11\7\12\2\0"+ - "\1\115\3\12\1\0\1\12\1\0\1\11\1\0\4\12"+ - "\4\0\10\12\2\0\3\12\1\u017e\1\12\12\0\1\11"+ - "\1\0\24\12\1\11\7\12\2\0\1\115\3\12\1\0"+ - "\1\12\1\0\1\11\1\0\4\12\4\0\10\12\2\0"+ - "\2\12\1\u017f\2\12\12\0\1\11\1\0\24\12\3\154"+ - "\5\u0180\2\154\1\335\2\154\1\u0180\1\336\1\u0180\4\154"+ - "\1\u0180\7\154\2\u0180\2\154\3\u0180\3\154\2\u0180\30\154"+ - "\1\u0180\4\154\1\u0180\4\154\1\11\7\12\2\0\1\115"+ - "\3\12\1\0\1\12\1\0\1\11\1\0\4\12\4\0"+ - "\10\12\2\0\5\12\12\0\1\11\1\0\2\12\1\221"+ - "\21\12\1\11\7\12\2\0\1\115\3\12\1\0\1\12"+ - "\1\0\1\11\1\0\4\12\4\0\10\12\2\0\5\12"+ - "\12\0\1\11\1\0\2\12\1\u0181\21\12\11\353\1\0"+ - "\103\353\5\u0182\2\353\1\u0148\2\353\1\u0182\1\0\1\u0182"+ - "\4\353\1\u0182\7\353\2\u0182\2\353\3\u0182\3\353\2\u0182"+ - "\30\353\1\u0182\4\353\1\u0182\4\353\1\11\7\12\2\0"+ - "\1\115\3\12\1\0\1\12\1\0\1\11\1\0\3\12"+ - "\1\u0183\4\0\10\12\2\0\5\12\12\0\1\11\1\0"+ - "\24\12\1\11\7\12\2\0\1\115\3\12\1\0\1\12"+ - "\1\0\1\11\1\0\4\12\4\0\10\12\2\0\5\12"+ - "\12\0\1\11\1\0\7\12\1\242\14\12\1\11\7\12"+ - "\2\0\1\115\1\u0184\2\12\1\0\1\12\1\0\1\11"+ - "\1\0\4\12\4\0\10\12\2\0\5\12\12\0\1\11"+ - "\1\0\24\12\1\11\7\12\2\0\1\115\3\12\1\0"+ - "\1\12\1\0\1\11\1\0\4\12\4\0\10\12\2\0"+ - "\5\12\12\0\1\11\1\0\3\12\1\242\20\12\1\11"+ - "\7\12\2\0\1\115\3\12\1\0\1\12\1\0\1\11"+ - "\1\0\4\12\4\0\10\12\2\0\1\u0101\4\12\12\0"+ - "\1\11\1\0\3\12\1\u0160\20\12\1\11\7\12\2\0"+ - "\1\115\3\12\1\0\1\12\1\0\1\11\1\0\4\12"+ - "\4\0\10\12\2\0\1\12\1\u0185\3\12\12\0\1\11"+ - "\1\0\24\12\1\11\7\12\2\0\1\115\3\12\1\0"+ - "\1\12\1\0\1\11\1\0\4\12\4\0\10\12\2\0"+ - "\3\12\1\363\1\12\12\0\1\11\1\0\24\12\1\11"+ - "\7\12\2\0\1\115\3\12\1\0\1\12\1\0\1\11"+ - "\1\0\4\12\4\0\10\12\2\0\3\12\1\u0160\1\12"+ - "\12\0\1\11\1\0\24\12\1\11\7\12\2\0\1\115"+ - "\3\12\1\0\1\12\1\0\1\11\1\0\4\12\4\0"+ - "\6\12\1\u0186\1\12\2\0\5\12\12\0\1\11\1\0"+ - "\2\12\1\u0121\2\12\1\u0187\16\12\1\11\7\12\2\0"+ - "\1\115\3\12\1\0\1\12\1\0\1\11\1\0\3\12"+ - "\1\u013e\4\0\10\12\2\0\5\12\12\0\1\11\1\0"+ - "\24\12\1\11\7\12\2\0\1\115\3\12\1\0\1\12"+ - "\1\0\1\11\1\0\3\12\1\247\4\0\10\12\2\0"+ - "\5\12\12\0\1\11\1\0\24\12\1\11\7\12\2\0"+ - "\1\115\3\12\1\0\1\12\1\0\1\11\1\0\3\12"+ - "\1\u0188\4\0\10\12\2\0\5\12\12\0\1\11\1\0"+ - "\24\12\1\11\7\12\2\0\1\115\3\12\1\0\1\12"+ - "\1\0\1\11\1\0\3\12\1\242\4\0\10\12\2\0"+ - "\5\12\12\0\1\11\1\0\24\12\1\11\7\12\2\0"+ - "\1\115\3\12\1\0\1\12\1\0\1\11\1\0\1\12"+ - "\1\247\2\12\4\0\10\12\2\0\5\12\12\0\1\11"+ - "\1\0\24\12\1\11\7\12\2\0\1\115\3\12\1\0"+ - "\1\12\1\0\1\11\1\0\4\12\4\0\10\12\2\0"+ - "\5\12\12\0\1\11\1\0\2\12\1\u0189\21\12\1\11"+ - "\7\12\2\0\1\115\3\12\1\0\1\12\1\0\1\11"+ - "\1\0\4\12\4\0\10\12\2\0\1\12\1\u0121\3\12"+ - "\12\0\1\11\1\0\24\12\1\11\1\12\1\325\5\12"+ - "\2\0\1\115\3\12\1\0\1\12\1\0\1\11\1\0"+ - "\4\12\4\0\10\12\2\0\5\12\12\0\1\11\1\0"+ - "\24\12\1\11\7\12\2\0\1\115\3\12\1\0\1\12"+ - "\1\0\1\11\1\0\4\12\4\0\10\12\2\0\5\12"+ - "\12\0\1\11\1\0\1\u018a\23\12\3\11\5\u018b\2\0"+ - "\3\11\1\u018b\1\0\1\u018b\1\0\1\11\1\0\1\11"+ - "\1\u018b\2\11\4\0\1\11\2\u018b\2\11\3\u018b\2\0"+ - "\1\11\2\u018b\2\11\12\0\1\11\1\0\12\11\1\u018b"+ - "\4\11\1\u018b\5\11\7\12\2\0\1\115\3\12\1\0"+ - "\1\12\1\0\1\11\1\0\4\12\4\0\10\12\2\0"+ - "\5\12\12\0\1\11\1\0\4\12\1\u018c\17\12\1\11"+ - "\7\12\2\0\1\115\3\12\1\0\1\12\1\0\1\11"+ - "\1\0\4\12\4\0\10\12\2\0\2\12\1\u018d\2\12"+ - "\12\0\1\11\1\0\24\12\1\11\7\12\2\0\1\115"+ - "\3\12\1\0\1\12\1\0\1\11\1\0\4\12\4\0"+ - "\10\12\2\0\1\12\1\u018e\3\12\12\0\1\11\1\0"+ - "\24\12\1\11\7\12\2\0\1\115\3\12\1\0\1\12"+ - "\1\0\1\11\1\0\4\12\4\0\10\12\2\0\5\12"+ - "\12\0\1\11\1\0\2\12\1\u018f\21\12\1\11\7\12"+ - "\2\0\1\115\3\12\1\0\1\12\1\0\1\11\1\0"+ - "\4\12\4\0\10\12\2\0\2\12\1\u0190\2\12\12\0"+ - "\1\11\1\0\24\12\1\11\7\12\2\0\1\115\3\12"+ - "\1\0\1\12\1\0\1\11\1\0\3\12\1\u0191\4\0"+ - "\10\12\2\0\5\12\12\0\1\11\1\0\24\12\1\11"+ - "\7\12\2\0\1\115\3\12\1\0\1\12\1\0\1\11"+ - "\1\0\3\12\1\u0192\4\0\10\12\2\0\5\12\12\0"+ - "\1\11\1\0\24\12\1\11\7\12\2\0\1\115\3\12"+ - "\1\0\1\12\1\0\1\11\1\0\4\12\4\0\10\12"+ - "\2\0\1\u0193\4\12\12\0\1\11\1\0\24\12\1\11"+ - "\7\12\2\0\1\115\3\12\1\0\1\12\1\0\1\11"+ - "\1\0\3\12\1\u0194\4\0\10\12\2\0\5\12\12\0"+ - "\1\11\1\0\24\12\1\11\7\12\2\0\1\115\3\12"+ - "\1\0\1\12\1\0\1\11\1\0\4\12\4\0\10\12"+ - "\2\0\5\12\12\0\1\11\1\0\2\12\1\u0195\21\12"+ - "\1\11\7\12\2\0\1\115\3\12\1\0\1\12\1\0"+ - "\1\11\1\0\4\12\4\0\10\12\2\0\1\161\4\12"+ - "\12\0\1\11\1\0\24\12\30\0\1\u0196\62\0\1\u016b"+ - "\1\u0197\5\u016b\1\u0197\2\0\3\u016b\1\0\1\u016b\1\0"+ - "\1\u0197\1\0\4\u016b\1\0\1\u016b\2\u0197\10\u016b\2\u0197"+ - "\5\u016b\1\0\1\u0197\1\0\1\u0197\2\0\6\u0197\24\u016b"+ - "\51\0\1\u0122\11\0\1\u016a\56\0\1\u0198\62\0\1\u016e"+ - "\1\u0199\5\u016e\1\u0199\2\0\3\u016e\1\0\1\u016e\1\0"+ - "\1\u0199\1\0\4\u016e\1\0\1\u016e\2\u0199\10\u016e\2\u0199"+ - "\5\u016e\1\0\1\u0199\1\0\1\u0199\2\0\6\u0199\24\u016e"+ - "\51\0\1\u0126\11\0\1\u016d\56\0\1\u019a\62\0\1\u0171"+ - "\1\u019b\5\u0171\1\u019b\2\0\3\u0171\1\0\1\u0171\1\0"+ - "\1\u019b\1\0\4\u0171\1\0\1\u0171\2\u019b\10\u0171\2\u019b"+ - "\5\u0171\1\0\1\u019b\1\0\1\u019b\2\0\6\u019b\24\u0171"+ - "\51\0\1\u012a\11\0\1\u0170\26\0\3\11\5\u019c\2\0"+ - "\3\11\1\u019c\1\0\1\u019c\1\0\1\11\1\0\1\11"+ - "\1\u019c\2\11\4\0\1\11\2\u019c\2\11\3\u019c\2\0"+ - "\1\11\2\u019c\2\11\12\0\1\11\1\0\12\11\1\u019c"+ - "\4\11\1\u019c\5\11\7\12\2\0\1\115\3\12\1\0"+ - "\1\12\1\0\1\11\1\0\4\12\4\0\7\12\1\u019d"+ - "\2\0\5\12\12\0\1\11\1\0\24\12\1\11\7\12"+ - "\2\0\1\115\3\12\1\0\1\12\1\0\1\11\1\0"+ - "\4\12\4\0\10\12\2\0\5\12\12\0\1\11\1\0"+ - "\2\12\1\u019e\21\12\1\11\7\12\2\0\1\115\3\12"+ - "\1\0\1\12\1\0\1\11\1\0\4\12\4\0\10\12"+ - "\2\0\2\12\1\u019f\2\12\12\0\1\11\1\0\24\12"+ - "\1\11\7\12\2\0\1\115\3\12\1\0\1\12\1\0"+ - "\1\11\1\0\4\12\4\0\10\12\2\0\2\12\1\u010c"+ - "\2\12\12\0\1\11\1\0\24\12\1\11\7\12\2\0"+ - "\1\115\3\12\1\0\1\12\1\0\1\11\1\0\4\12"+ - "\4\0\10\12\2\0\1\u01a0\4\12\12\0\1\11\1\0"+ - "\24\12\1\11\7\12\2\0\1\115\3\12\1\0\1\12"+ - "\1\0\1\11\1\0\4\12\4\0\10\12\2\0\5\12"+ - "\12\0\1\11\1\0\17\12\1\u01a1\4\12\1\11\7\12"+ - "\2\0\1\115\3\12\1\0\1\12\1\0\1\11\1\0"+ - "\4\12\4\0\4\12\1\u0135\3\12\2\0\5\12\12\0"+ - "\1\11\1\0\24\12\1\11\7\12\2\0\1\115\3\12"+ - "\1\0\1\12\1\0\1\11\1\0\4\12\4\0\10\12"+ - "\2\0\5\12\12\0\1\11\1\0\20\12\1\u01a2\3\12"+ - "\3\314\5\u01a3\1\133\1\0\3\314\1\u01a3\1\314\1\u01a3"+ - "\4\314\1\u01a3\7\314\2\u01a3\2\314\3\u01a3\3\314\2\u01a3"+ - "\30\314\1\u01a3\4\314\1\u01a3\4\314\1\11\7\12\2\0"+ - "\1\115\3\12\1\0\1\12\1\0\1\11\1\0\4\12"+ - "\4\0\10\12\2\0\1\12\1\u01a4\3\12\12\0\1\11"+ - "\1\0\24\12\1\11\7\12\2\0\1\115\3\12\1\0"+ - "\1\12\1\0\1\11\1\0\4\12\4\0\10\12\2\0"+ - "\3\12\1\362\1\12\12\0\1\11\1\0\24\12\1\11"+ - "\7\12\2\0\1\115\3\12\1\0\1\12\1\0\1\11"+ - "\1\0\1\12\1\u01a5\2\12\4\0\10\12\2\0\5\12"+ - "\12\0\1\11\1\0\24\12\3\154\5\u01a6\2\154\1\335"+ - "\2\154\1\u01a6\1\336\1\u01a6\4\154\1\u01a6\7\154\2\u01a6"+ - "\2\154\3\u01a6\3\154\2\u01a6\30\154\1\u01a6\4\154\1\u01a6"+ - "\4\154\1\11\7\12\2\0\1\115\1\12\1\u01a7\1\12"+ - "\1\0\1\12\1\0\1\11\1\0\4\12\4\0\10\12"+ - "\2\0\5\12\12\0\1\11\1\0\24\12\3\353\5\u01a8"+ - "\2\353\1\u0148\2\353\1\u01a8\1\0\1\u01a8\4\353\1\u01a8"+ - "\7\353\2\u01a8\2\353\3\u01a8\3\353\2\u01a8\30\353\1\u01a8"+ - "\4\353\1\u01a8\4\353\1\11\7\12\2\0\1\115\1\12"+ - "\1\u01a9\1\12\1\0\1\12\1\0\1\11\1\0\4\12"+ - "\4\0\10\12\2\0\5\12\12\0\1\11\1\0\24\12"+ - "\1\11\7\12\2\0\1\115\3\12\1\0\1\12\1\0"+ - "\1\11\1\0\4\12\4\0\10\12\2\0\3\12\1\247"+ - "\1\12\12\0\1\11\1\0\24\12\1\11\7\12\2\0"+ - "\1\115\3\12\1\0\1\12\1\0\1\11\1\0\1\12"+ - "\1\u01aa\2\12\4\0\10\12\2\0\5\12\12\0\1\11"+ - "\1\0\24\12\1\11\7\12\2\0\1\115\3\12\1\0"+ - "\1\12\1\0\1\11\1\0\4\12\4\0\10\12\2\0"+ - "\1\12\1\u0187\3\12\12\0\1\11\1\0\24\12\1\11"+ - "\7\12\2\0\1\115\2\12\1\242\1\0\1\12\1\0"+ - "\1\11\1\0\4\12\4\0\10\12\2\0\5\12\12\0"+ - "\1\11\1\0\24\12\1\11\7\12\2\0\1\115\3\12"+ - "\1\0\1\12\1\0\1\11\1\0\4\12\4\0\10\12"+ - "\2\0\2\12\1\u0159\2\12\12\0\1\11\1\0\24\12"+ - "\1\11\7\12\2\0\1\115\3\12\1\0\1\12\1\0"+ - "\1\11\1\0\1\12\1\242\2\12\4\0\10\12\2\0"+ - "\5\12\12\0\1\11\1\0\24\12\1\11\7\12\2\0"+ - "\1\115\3\12\1\0\1\12\1\0\1\11\1\0\3\12"+ - "\1\u01ab\4\0\10\12\2\0\5\12\12\0\1\11\1\0"+ - "\24\12\3\11\5\u01ac\2\0\3\11\1\u01ac\1\0\1\u01ac"+ - "\1\0\1\11\1\0\1\11\1\u01ac\2\11\4\0\1\11"+ - "\2\u01ac\2\11\3\u01ac\2\0\1\11\2\u01ac\2\11\12\0"+ - "\1\11\1\0\12\11\1\u01ac\4\11\1\u01ac\5\11\7\12"+ - "\2\0\1\115\3\12\1\0\1\12\1\0\1\11\1\0"+ - "\4\12\4\0\10\12\2\0\2\12\1\242\2\12\12\0"+ - "\1\11\1\0\24\12\1\11\7\12\2\0\1\115\3\12"+ - "\1\0\1\12\1\0\1\11\1\0\4\12\4\0\10\12"+ - "\2\0\1\u0101\4\12\12\0\1\11\1\0\24\12\1\11"+ - "\7\12\2\0\1\115\3\12\1\0\1\12\1\0\1\11"+ - "\1\0\1\12\1\u01ad\2\12\4\0\10\12\2\0\5\12"+ - "\12\0\1\11\1\0\24\12\1\11\7\12\2\0\1\115"+ - "\2\12\1\u01ae\1\0\1\12\1\0\1\11\1\0\4\12"+ - "\4\0\10\12\2\0\5\12\12\0\1\11\1\0\24\12"+ - "\1\11\7\12\2\0\1\115\3\12\1\0\1\12\1\0"+ - "\1\11\1\0\4\12\4\0\10\12\2\0\5\12\12\0"+ - "\1\11\1\0\3\12\1\u0101\20\12\1\11\7\12\2\0"+ - "\1\115\2\12\1\u01af\1\0\1\12\1\0\1\11\1\0"+ - "\4\12\4\0\10\12\2\0\5\12\12\0\1\11\1\0"+ - "\24\12\1\11\7\12\2\0\1\115\3\12\1\0\1\12"+ - "\1\0\1\11\1\0\4\12\4\0\10\12\2\0\5\12"+ - "\12\0\1\11\1\0\2\12\1\u01b0\21\12\1\11\7\12"+ - "\2\0\1\115\3\12\1\0\1\12\1\0\1\11\1\0"+ - "\4\12\4\0\10\12\2\0\2\12\1\u01b1\2\12\12\0"+ - "\1\11\1\0\24\12\1\11\7\12\2\0\1\115\3\12"+ - "\1\0\1\12\1\0\1\11\1\0\4\12\4\0\10\12"+ - "\2\0\5\12\12\0\1\11\1\0\2\12\1\u01b2\21\12"+ - "\1\11\7\12\2\0\1\115\3\12\1\0\1\12\1\0"+ - "\1\11\1\0\4\12\4\0\10\12\2\0\5\12\12\0"+ - "\1\11\1\0\5\12\1\u013e\16\12\30\0\1\u016b\111\0"+ - "\1\u016e\111\0\1\u0171\61\0\3\11\5\12\2\0\3\11"+ - "\1\12\1\0\1\12\1\0\1\11\1\0\1\11\1\12"+ - "\2\11\4\0\1\11\2\12\2\11\3\12\2\0\1\11"+ - "\2\12\2\11\12\0\1\11\1\0\12\11\1\12\4\11"+ - "\1\12\5\11\1\12\1\u01b3\5\12\2\0\1\115\3\12"+ - "\1\0\1\12\1\0\1\11\1\0\4\12\4\0\10\12"+ - "\2\0\5\12\12\0\1\11\1\0\24\12\1\11\7\12"+ - "\2\0\1\115\3\12\1\0\1\12\1\0\1\11\1\0"+ - "\4\12\4\0\10\12\2\0\1\374\4\12\12\0\1\11"+ - "\1\0\24\12\1\11\7\12\2\0\1\115\3\12\1\0"+ - "\1\12\1\0\1\11\1\0\4\12\4\0\10\12\2\0"+ - "\5\12\12\0\1\11\1\0\4\12\1\u01b4\17\12\1\11"+ - "\7\12\2\0\1\115\3\12\1\0\1\12\1\0\1\11"+ - "\1\0\4\12\4\0\10\12\2\0\5\12\12\0\1\11"+ - "\1\0\5\12\1\u0158\16\12\1\11\7\12\2\0\1\115"+ - "\3\12\1\0\1\12\1\0\1\11\1\0\4\12\4\0"+ - "\10\12\2\0\5\12\12\0\1\11\1\0\20\12\1\u01b5"+ - "\3\12\1\11\7\12\2\0\1\115\3\12\1\0\1\12"+ - "\1\0\1\11\1\0\4\12\4\0\10\12\2\0\5\12"+ - "\12\0\1\11\1\0\20\12\1\u01b6\3\12\3\314\5\132"+ - "\1\133\1\0\3\314\1\132\1\314\1\132\4\314\1\132"+ - "\7\314\2\132\2\314\3\132\3\314\2\132\30\314\1\132"+ - "\4\314\1\132\4\314\1\11\7\12\2\0\1\115\3\12"+ - "\1\0\1\12\1\0\1\11\1\0\4\12\4\0\10\12"+ - "\2\0\4\12\1\247\12\0\1\11\1\0\24\12\1\11"+ - "\7\12\2\0\1\115\3\12\1\0\1\12\1\0\1\11"+ - "\1\0\4\12\4\0\10\12\2\0\5\12\12\0\1\11"+ - "\1\0\1\u01b7\23\12\3\154\5\23\2\154\1\335\2\154"+ - "\1\23\1\336\1\23\4\154\1\23\7\154\2\23\2\154"+ - "\3\23\3\154\2\23\30\154\1\23\4\154\1\23\4\154"+ - "\1\11\7\12\2\0\1\115\1\u0101\2\12\1\0\1\12"+ - "\1\0\1\11\1\0\4\12\4\0\10\12\2\0\5\12"+ - "\12\0\1\11\1\0\24\12\3\353\5\u01b8\2\353\1\u0148"+ - "\2\353\1\u01b8\1\0\1\u01b8\4\353\1\u01b8\7\353\2\u01b8"+ - "\2\353\3\u01b8\3\353\2\u01b8\30\353\1\u01b8\4\353\1\u01b8"+ - "\4\353\1\11\7\12\2\0\1\115\3\12\1\0\1\12"+ - "\1\0\1\11\1\0\4\12\4\0\10\12\2\0\2\12"+ - "\1\u01ad\2\12\12\0\1\11\1\0\24\12\1\11\7\12"+ - "\2\0\1\115\3\12\1\0\1\12\1\0\1\11\1\0"+ - "\4\12\4\0\10\12\2\0\5\12\12\0\1\11\1\0"+ - "\5\12\1\u01b9\16\12\3\11\5\u01ba\2\0\3\11\1\u01ba"+ - "\1\0\1\u01ba\1\0\1\11\1\0\1\11\1\u01ba\2\11"+ - "\4\0\1\11\2\u01ba\2\11\3\u01ba\2\0\1\11\2\u01ba"+ - "\2\11\12\0\1\11\1\0\12\11\1\u01ba\4\11\1\u01ba"+ - "\5\11\7\12\2\0\1\115\3\12\1\0\1\12\1\0"+ - "\1\11\1\0\4\12\4\0\10\12\2\0\1\u015b\4\12"+ - "\12\0\1\11\1\0\24\12\1\11\7\12\2\0\1\115"+ - "\2\12\1\u015c\1\0\1\12\1\0\1\11\1\0\4\12"+ - "\4\0\10\12\2\0\5\12\12\0\1\11\1\0\24\12"+ - "\1\11\7\12\2\0\1\115\3\12\1\0\1\12\1\0"+ - "\1\11\1\0\4\12\4\0\10\12\2\0\2\12\1\u01bb"+ - "\2\12\12\0\1\11\1\0\24\12\1\11\7\12\2\0"+ - "\1\115\3\12\1\0\1\12\1\0\1\11\1\0\4\12"+ - "\4\0\10\12\2\0\2\12\1\u01bc\2\12\12\0\1\11"+ - "\1\0\24\12\1\11\7\12\2\0\1\115\3\12\1\0"+ - "\1\12\1\0\1\11\1\0\4\12\4\0\2\12\1\342"+ - "\5\12\2\0\5\12\12\0\1\11\1\0\24\12\1\11"+ - "\7\12\2\0\1\115\3\12\1\0\1\12\1\0\1\11"+ - "\1\0\4\12\4\0\6\12\1\u0101\1\12\2\0\5\12"+ - "\12\0\1\11\1\0\24\12\1\11\1\12\1\242\5\12"+ - "\2\0\1\115\3\12\1\0\1\12\1\0\1\11\1\0"+ - "\4\12\4\0\10\12\2\0\5\12\12\0\1\11\1\0"+ - "\24\12\1\11\7\12\2\0\1\115\3\12\1\0\1\12"+ - "\1\0\1\11\1\0\4\12\4\0\10\12\2\0\1\12"+ - "\1\u01bd\3\12\12\0\1\11\1\0\24\12\1\11\7\12"+ - "\2\0\1\115\3\12\1\0\1\12\1\0\1\11\1\0"+ - "\4\12\4\0\10\12\2\0\5\12\12\0\1\11\1\0"+ - "\13\12\1\u01be\10\12\1\11\7\12\2\0\1\115\3\12"+ - "\1\0\1\12\1\0\1\11\1\0\4\12\4\0\10\12"+ - "\2\0\5\12\12\0\1\11\1\0\23\12\1\u01bf\1\11"+ - "\1\12\1\u01c0\5\12\2\0\1\115\3\12\1\0\1\12"+ - "\1\0\1\11\1\0\4\12\4\0\10\12\2\0\5\12"+ - "\12\0\1\11\1\0\24\12\3\353\5\172\2\353\1\u0148"+ - "\2\353\1\172\1\0\1\172\4\353\1\172\7\353\2\172"+ - "\2\353\3\172\3\353\2\172\30\353\1\172\4\353\1\172"+ - "\4\353\1\11\7\12\2\0\1\115\1\12\1\u01c1\1\12"+ - "\1\0\1\12\1\0\1\11\1\0\4\12\4\0\10\12"+ - "\2\0\5\12\12\0\1\11\1\0\24\12\3\11\5\233"+ - "\2\0\3\11\1\233\1\0\1\233\1\0\1\11\1\0"+ - "\1\11\1\233\2\11\4\0\1\11\2\233\2\11\3\233"+ - "\2\0\1\11\2\233\2\11\12\0\1\11\1\0\12\11"+ - "\1\233\4\11\1\233\5\11\7\12\2\0\1\115\3\12"+ - "\1\0\1\12\1\0\1\11\1\0\1\12\1\u0101\2\12"+ - "\4\0\10\12\2\0\5\12\12\0\1\11\1\0\24\12"+ - "\1\11\7\12\2\0\1\115\1\12\1\247\1\12\1\0"+ - "\1\12\1\0\1\11\1\0\4\12\4\0\10\12\2\0"+ - "\5\12\12\0\1\11\1\0\24\12\1\11\7\12\2\0"+ - "\1\115\3\12\1\0\1\12\1\0\1\11\1\0\4\12"+ - "\4\0\10\12\2\0\1\u01c2\4\12\12\0\1\11\1\0"+ - "\24\12\1\11\7\12\2\0\1\115\3\12\1\0\1\12"+ - "\1\0\1\11\1\0\4\12\4\0\10\12\2\0\5\12"+ - "\12\0\1\11\1\0\15\12\1\u01c3\6\12\1\11\1\12"+ - "\1\u01c4\5\12\2\0\1\115\3\12\1\0\1\12\1\0"+ - "\1\11\1\0\4\12\4\0\10\12\2\0\5\12\12\0"+ - "\1\11\1\0\24\12\1\11\7\12\2\0\1\115\3\12"+ - "\1\0\1\12\1\0\1\11\1\0\3\12\1\u01c5\4\0"+ - "\10\12\2\0\5\12\12\0\1\11\1\0\24\12\1\11"+ - "\7\12\2\0\1\115\3\12\1\0\1\12\1\0\1\11"+ - "\1\0\4\12\4\0\10\12\2\0\5\12\12\0\1\11"+ - "\1\0\2\12\1\u01c6\21\12\1\11\7\12\2\0\1\115"+ - "\3\12\1\0\1\12\1\0\1\11\1\0\4\12\4\0"+ - "\10\12\2\0\1\12\1\u01c7\3\12\12\0\1\11\1\0"+ - "\24\12\1\11\7\12\2\0\1\115\3\12\1\0\1\12"+ - "\1\0\1\11\1\0\4\12\4\0\10\12\2\0\5\12"+ - "\12\0\1\11\1\0\16\12\1\u019d\5\12\1\11\7\12"+ - "\2\0\1\115\3\12\1\0\1\12\1\0\1\11\1\0"+ - "\4\12\4\0\10\12\2\0\5\12\12\0\1\11\1\0"+ - "\12\12\1\u01c8\11\12\1\11\7\12\2\0\1\115\3\12"+ - "\1\0\1\12\1\0\1\11\1\0\4\12\4\0\10\12"+ - "\2\0\1\12\1\u01c9\3\12\12\0\1\11\1\0\24\12"+ - "\1\11\7\12\2\0\1\115\3\12\1\0\1\12\1\0"+ - "\1\11\1\0\4\12\4\0\10\12\2\0\5\12\12\0"+ - "\1\11\1\0\11\12\1\u015b\12\12\1\11\7\12\2\0"+ - "\1\115\3\12\1\0\1\12\1\0\1\11\1\0\3\12"+ - "\1\374\4\0\10\12\2\0\5\12\12\0\1\11\1\0"+ - "\24\12\1\11\7\12\2\0\1\115\3\12\1\0\1\12"+ - "\1\0\1\11\1\0\4\12\4\0\4\12\1\u0134\3\12"+ - "\2\0\5\12\12\0\1\11\1\0\24\12\1\11\7\12"+ - "\2\0\1\115\3\12\1\0\1\12\1\0\1\11\1\0"+ - "\4\12\4\0\10\12\2\0\5\12\12\0\1\11\1\0"+ - "\10\12\1\u01ca\13\12\1\11\7\12\2\0\1\115\3\12"+ - "\1\0\1\12\1\0\1\11\1\0\4\12\4\0\10\12"+ - "\2\0\1\12\1\u01cb\3\12\12\0\1\11\1\0\24\12"+ - "\1\11\7\12\2\0\1\115\3\12\1\0\1\12\1\0"+ - "\1\11\1\0\3\12\1\213\4\0\10\12\2\0\5\12"+ - "\12\0\1\11\1\0\24\12"; - - private static int [] zzUnpackTrans() { - int [] result = new int[31154]; - int offset = 0; - offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackTrans(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - value--; - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /* error codes */ - private static final int ZZ_UNKNOWN_ERROR = 0; - private static final int ZZ_NO_MATCH = 1; - private static final int ZZ_PUSHBACK_2BIG = 2; - - /* error messages for the codes above */ - private static final String ZZ_ERROR_MSG[] = { - "Unkown internal scanner error", - "Error: could not match input", - "Error: pushback value was too large" - }; - - /** - * ZZ_ATTRIBUTE[aState] contains the attributes of state aState - */ - private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); - - private static final String ZZ_ATTRIBUTE_PACKED_0 = - "\10\0\6\1\1\11\4\1\1\11\5\1\1\11\14\1"+ - "\2\11\2\1\1\11\11\1\1\11\4\1\1\11\5\1"+ - "\1\11\3\1\1\11\3\1\1\11\1\1\1\11\1\1"+ - "\1\11\17\1\1\0\36\1\1\11\3\1\1\11\31\1"+ - "\1\0\21\1\3\0\1\11\4\0\1\11\1\0\2\11"+ - "\4\0\13\1\1\0\7\1\1\11\21\1\1\11\16\1"+ - "\1\11\62\1\14\0\15\1\1\11\10\1\1\11\6\1"+ - "\1\11\36\1\1\0\1\1\2\0\1\1\2\0\1\1"+ - "\1\0\43\1\6\0\60\1"; - - private static int [] zzUnpackAttribute() { - int [] result = new int[459]; - int offset = 0; - offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAttribute(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - /** the input device */ - private java.io.Reader zzReader; - - /** the current state of the DFA */ - private int zzState; - - /** the current lexical state */ - private int zzLexicalState = YYINITIAL; - - /** this buffer contains the current text to be matched and is - the source of the yytext() string */ - private char zzBuffer[]; - - /** the textposition at the last accepting state */ - private int zzMarkedPos; - - /** the current text position in the buffer */ - private int zzCurrentPos; - - /** startRead marks the beginning of the yytext() string in the buffer */ - private int zzStartRead; - - /** endRead marks the last character in the buffer, that has been read - from input */ - private int zzEndRead; - - /** zzAtEOF == true <=> the scanner is at the EOF */ - private boolean zzAtEOF; - - /* user code: */ - - - /** - * Token type specific to DTokenMaker; this signals that the user is in - * a nestable multi-line comment. The nested depth is embedded in the - * actual end token type. - */ - private static final int INTERNAL_IN_NESTABLE_MLC = -(1<<11); - - /** - * When in a (possibly) nested MLC, this is the current nested depth. - */ - private int nestedMlcDepth; - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public DTokenMaker() { - } - - - /** - * Adds the token specified to the current linked list of tokens as an - * "end token;" that is, at zzMarkedPos. - * - * @param tokenType The token's type. - */ - private void addEndToken(int tokenType) { - addToken(zzMarkedPos,zzMarkedPos, tokenType); - } - - - private void addNestedMlcEndToken() { - addEndToken(INTERNAL_IN_NESTABLE_MLC - nestedMlcDepth); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addToken(int, int, int) - */ - private void addHyperlinkToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, true); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addHyperlinkToken(int, int, int) - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, false); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - * @param hyperlink Whether this token is a hyperlink. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, - int startOffset, boolean hyperlink) { - super.addToken(array, start,end, tokenType, startOffset, hyperlink); - zzStartRead = zzMarkedPos; - } - - - @Override - public int getClosestStandardTokenTypeForInternalType(int type) { - switch (type) { - case INTERNAL_IN_NESTABLE_MLC: - return TokenTypes.COMMENT_MULTILINE; - } - return type; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { "//", null }; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - nestedMlcDepth = 0; - - // Start off in the proper state. - int state = YYINITIAL; - switch (initialTokenType) { - case Token.LITERAL_BACKQUOTE: - state = WYSIWYG_STRING_2; - break; - case Token.LITERAL_STRING_DOUBLE_QUOTE: - state = WYSIWYG_STRING_1; - break; - case Token.COMMENT_MULTILINE: - state = MLC; - break; - case Token.COMMENT_DOCUMENTATION: - state = DOCCOMMENT; - break; - case INTERNAL_IN_NESTABLE_MLC: - state = NESTABLE_MLC; - break; - default: - if (initialTokenType<-1024) { - int main = -(-initialTokenType & 0xffffff00); - switch (main) { - default: // Should never happen - case INTERNAL_IN_NESTABLE_MLC: - state = NESTABLE_MLC; - break; - } - nestedMlcDepth = -initialTokenType&0xff; - } - else { - state = YYINITIAL; - } - } - - start = text.offset; - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - * @exception IOException if any I/O-Error occurs. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtEOF = false; - } - - - - - /** - * Creates a new scanner - * There is also a java.io.InputStream version of this constructor. - * - * @param in the java.io.Reader to read input from. - */ - public DTokenMaker(java.io.Reader in) { - this.zzReader = in; - } - - /** - * Creates a new scanner. - * There is also java.io.Reader version of this constructor. - * - * @param in the java.io.Inputstream to read input from. - */ - public DTokenMaker(java.io.InputStream in) { - this(new java.io.InputStreamReader(in)); - } - - /** - * Unpacks the compressed character translation table. - * - * @param packed the packed character translation table - * @return the unpacked character translation table - */ - private static char [] zzUnpackCMap(String packed) { - char [] map = new char[0x10000]; - int i = 0; /* index in packed string */ - int j = 0; /* index in unpacked array */ - while (i < 188) { - int count = packed.charAt(i++); - char value = packed.charAt(i++); - do map[j++] = value; while (--count > 0); - } - return map; - } - - - /** - * Closes the input stream. - */ - public final void yyclose() throws java.io.IOException { - zzAtEOF = true; /* indicate end of file */ - zzEndRead = zzStartRead; /* invalidate buffer */ - - if (zzReader != null) - zzReader.close(); - } - - - /** - * Returns the current lexical state. - */ - public final int yystate() { - return zzLexicalState; - } - - - /** - * Enters a new lexical state - * - * @param newState the new lexical state - */ - @Override - public final void yybegin(int newState) { - zzLexicalState = newState; - } - - - /** - * Returns the text matched by the current regular expression. - */ - public final String yytext() { - return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead ); - } - - - /** - * Returns the character at position pos from the - * matched text. - * - * It is equivalent to yytext().charAt(pos), but faster - * - * @param pos the position of the character to fetch. - * A value from 0 to yylength()-1. - * - * @return the character at position pos - */ - public final char yycharat(int pos) { - return zzBuffer[zzStartRead+pos]; - } - - - /** - * Returns the length of the matched text region. - */ - public final int yylength() { - return zzMarkedPos-zzStartRead; - } - - - /** - * Reports an error that occured while scanning. - * - * In a wellformed scanner (no or only correct usage of - * yypushback(int) and a match-all fallback rule) this method - * will only be called with things that "Can't Possibly Happen". - * If this method is called, something is seriously wrong - * (e.g. a JFlex bug producing a faulty scanner etc.). - * - * Usual syntax/scanner level error handling should be done - * in error fallback rules. - * - * @param errorCode the code of the errormessage to display - */ - private void zzScanError(int errorCode) { - String message; - try { - message = ZZ_ERROR_MSG[errorCode]; - } - catch (ArrayIndexOutOfBoundsException e) { - message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; - } - - throw new Error(message); - } - - - /** - * Pushes the specified amount of characters back into the input stream. - * - * They will be read again by then next call of the scanning method - * - * @param number the number of characters to be read again. - * This number must not be greater than yylength()! - */ - public void yypushback(int number) { - if ( number > yylength() ) - zzScanError(ZZ_PUSHBACK_2BIG); - - zzMarkedPos -= number; - } - - - /** - * Resumes scanning until the next regular expression is matched, - * the end of input is encountered or an I/O-Error occurs. - * - * @return the next token - * @exception java.io.IOException if any I/O-Error occurs - */ - public org.fife.ui.rsyntaxtextarea.Token yylex() throws java.io.IOException { - int zzInput; - int zzAction; - - // cached fields: - int zzCurrentPosL; - int zzMarkedPosL; - int zzEndReadL = zzEndRead; - char [] zzBufferL = zzBuffer; - char [] zzCMapL = ZZ_CMAP; - - int [] zzTransL = ZZ_TRANS; - int [] zzRowMapL = ZZ_ROWMAP; - int [] zzAttrL = ZZ_ATTRIBUTE; - - while (true) { - zzMarkedPosL = zzMarkedPos; - - zzAction = -1; - - zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; - - zzState = zzLexicalState; - - - zzForAction: { - while (true) { - - if (zzCurrentPosL < zzEndReadL) - zzInput = zzBufferL[zzCurrentPosL++]; - else if (zzAtEOF) { - zzInput = YYEOF; - break zzForAction; - } - else { - // store back cached positions - zzCurrentPos = zzCurrentPosL; - zzMarkedPos = zzMarkedPosL; - boolean eof = zzRefill(); - // get translated positions and possibly new buffer - zzCurrentPosL = zzCurrentPos; - zzMarkedPosL = zzMarkedPos; - zzBufferL = zzBuffer; - zzEndReadL = zzEndRead; - if (eof) { - zzInput = YYEOF; - break zzForAction; - } - else { - zzInput = zzBufferL[zzCurrentPosL++]; - } - } - int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; - if (zzNext == -1) break zzForAction; - zzState = zzNext; - - int zzAttributes = zzAttrL[zzState]; - if ( (zzAttributes & 1) == 1 ) { - zzAction = zzState; - zzMarkedPosL = zzCurrentPosL; - if ( (zzAttributes & 8) == 8 ) break zzForAction; - } - - } - } - - // store back cached position - zzMarkedPos = zzMarkedPosL; - - switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { - case 14: - { yybegin(YYINITIAL); addToken(start,zzEndRead, Token.COMMENT_DOCUMENTATION); return firstToken; - } - case 46: break; - case 2: - { addToken(Token.IDENTIFIER); - } - case 47: break; - case 41: - { addToken(Token.LITERAL_BOOLEAN); - } - case 48: break; - case 25: - { addToken(Token.ERROR_CHAR); - } - case 49: break; - case 22: - { addToken(Token.ERROR_NUMBER_FORMAT); - } - case 50: break; - case 4: - { addToken(Token.ERROR_CHAR); addNullToken(); return firstToken; - } - case 51: break; - case 18: - { addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); - } - case 52: break; - case 11: - { addToken(Token.ANNOTATION); - } - case 53: break; - case 6: - { addToken(Token.ERROR_STRING_DOUBLE); addNullToken(); return firstToken; - } - case 54: break; - case 1: - { addToken(Token.ERROR_IDENTIFIER); - } - case 55: break; - case 20: - { addToken(Token.LITERAL_BACKQUOTE); - } - case 56: break; - case 33: - { nestedMlcDepth++; - } - case 57: break; - case 37: - { start = zzMarkedPos-3; yybegin(EOL_DOCCOMMENT); - } - case 58: break; - case 43: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_DOCUMENTATION); start = zzMarkedPos; - } - case 59: break; - case 35: - { addToken(Token.LITERAL_CHAR); - } - case 60: break; - case 24: - { addToken(Token.LITERAL_NUMBER_HEXADECIMAL); - } - case 61: break; - case 28: - { start = zzMarkedPos-2; yybegin(MLC); - } - case 62: break; - case 17: - { addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addNullToken(); return firstToken; - } - case 63: break; - case 7: - { addToken(Token.WHITESPACE); - } - case 64: break; - case 32: - { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.COMMENT_DOCUMENTATION); - } - case 65: break; - case 39: - { addToken(Token.DATA_TYPE); - } - case 66: break; - case 34: - { System.out.println("... " + nestedMlcDepth); - if (--nestedMlcDepth==0) { - addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); yybegin(YYINITIAL); - } - } - case 67: break; - case 31: - { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); - } - case 68: break; - case 21: - { addToken(Token.LITERAL_BACKQUOTE); yybegin(YYINITIAL); - } - case 69: break; - case 3: - { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); - } - case 70: break; - case 19: - { addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); yybegin(YYINITIAL); - } - case 71: break; - case 38: - { start = zzMarkedPos-3; yybegin(DOCCOMMENT); - } - case 72: break; - case 15: - { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addNestedMlcEndToken(); return firstToken; - } - case 73: break; - case 30: - { addToken(Token.RESERVED_WORD); - } - case 74: break; - case 42: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_MULTILINE); start = zzMarkedPos; - } - case 75: break; - case 29: - { start = zzMarkedPos-2; nestedMlcDepth = 1; yybegin(NESTABLE_MLC); - } - case 76: break; - case 45: - { addToken(Token.RESERVED_WORD_2); - } - case 77: break; - case 16: - { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; - } - case 78: break; - case 10: - { addToken(Token.SEPARATOR); - } - case 79: break; - case 5: - { addNullToken(); return firstToken; - } - case 80: break; - case 13: - { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; - } - case 81: break; - case 8: - { addToken(Token.LITERAL_BACKQUOTE); yybegin(WYSIWYG_STRING_2); - } - case 82: break; - case 9: - { addToken(Token.OPERATOR); - } - case 83: break; - case 23: - { addToken(Token.LITERAL_NUMBER_FLOAT); - } - case 84: break; - case 26: - { addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); yybegin(WYSIWYG_STRING_1); - } - case 85: break; - case 44: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_EOL); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_EOL); start = zzMarkedPos; - } - case 86: break; - case 40: - { addToken(Token.COMMENT_MULTILINE); - } - case 87: break; - case 27: - { start = zzMarkedPos-2; yybegin(EOL_COMMENT); - } - case 88: break; - case 36: - { addToken(Token.ERROR_STRING_DOUBLE); - } - case 89: break; - case 12: - { - } - case 90: break; - default: - if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { - zzAtEOF = true; - switch (zzLexicalState) { - case WYSIWYG_STRING_1: { - if (firstToken==null) { - addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); - } - return firstToken; - } - case 460: break; - case EOL_COMMENT: { - addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; - } - case 461: break; - case NESTABLE_MLC: { - addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addNestedMlcEndToken(); return firstToken; - } - case 462: break; - case DOCCOMMENT: { - yybegin(YYINITIAL); addToken(start,zzEndRead, Token.COMMENT_DOCUMENTATION); return firstToken; - } - case 463: break; - case YYINITIAL: { - addNullToken(); return firstToken; - } - case 464: break; - case MLC: { - addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; - } - case 465: break; - case WYSIWYG_STRING_2: { - if (firstToken==null) { - addToken(Token.LITERAL_BACKQUOTE); - } - return firstToken; - } - case 466: break; - case EOL_DOCCOMMENT: { - addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addNullToken(); return firstToken; - } - case 467: break; - default: - return null; - } - } - else { - zzScanError(ZZ_NO_MATCH); - } - } - } - } - - -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/DartTokenMaker.flex b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/DartTokenMaker.flex deleted file mode 100644 index 5c5143c..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/DartTokenMaker.flex +++ /dev/null @@ -1,660 +0,0 @@ -/* - * 09/01/2014 - * - * DartTokenMaker.java - Token parser for Dart. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * Scanner for Dart files. Its states could be simplified, but are - * kept the way they are to keep a degree of similarity (i.e. copy/paste) - * between it and HTML/JSP/PHPTokenMaker. This should cause no difference in - * performance.

- * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated DartTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 1.0 - */ -%% - -%public -%class DartTokenMaker -%extends AbstractJFlexCTokenMaker -%unicode -%type org.fife.ui.rsyntaxtextarea.Token - - -%{ - - /** - * Token type specifying we're in a JavaScript multi-line comment. - */ - private static final int INTERNAL_IN_JS_MLC = -8; - - /** - * Token type specifying we're in an invalid multi-line JS string. - */ - private static final int INTERNAL_IN_JS_STRING_INVALID = -10; - - /** - * Token type specifying we're in a valid multi-line JS string. - */ - private static final int INTERNAL_IN_JS_STRING_VALID = -11; - - /** - * Token type specifying we're in an invalid multi-line JS single-quoted string. - */ - private static final int INTERNAL_IN_JS_CHAR_INVALID = -12; - - /** - * Token type specifying we're in a valid multi-line JS single-quoted string. - */ - private static final int INTERNAL_IN_JS_CHAR_VALID = -13; - - /** - * When in the JS_STRING state, whether the current string is valid. - */ - private boolean validJSString; - - /** - * The version of JavaScript being highlighted. - */ - private static String jsVersion; - - /** - * Language state set on JS tokens. Must be 0. - */ - private static final int LANG_INDEX_DEFAULT = 0; - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public DartTokenMaker() { - super(); - } - - - static { - jsVersion = "1.0"; - } - - - /** - * Adds the token specified to the current linked list of tokens as an - * "end token;" that is, at zzMarkedPos. - * - * @param tokenType The token's type. - */ - private void addEndToken(int tokenType) { - addToken(zzMarkedPos,zzMarkedPos, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addToken(int, int, int) - */ - private void addHyperlinkToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, true); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, int startOffset) { - super.addToken(array, start,end, tokenType, startOffset); - zzStartRead = zzMarkedPos; - } - - - /** - * Returns the closest {@link TokenTypes "standard" token type} for a given - * "internal" token type (e.g. one whose value is < 0). - */ - @Override - public int getClosestStandardTokenTypeForInternalType(int type) { - switch (type) { - case INTERNAL_IN_JS_MLC: - return TokenTypes.COMMENT_MULTILINE; - case INTERNAL_IN_JS_STRING_INVALID: - case INTERNAL_IN_JS_STRING_VALID: - case INTERNAL_IN_JS_CHAR_INVALID: - case INTERNAL_IN_JS_CHAR_VALID: - return TokenTypes.LITERAL_STRING_DOUBLE_QUOTE; - } - return type; - } - - - /** - * Returns the JavaScript version being highlighted. - * - * @return Supported JavaScript version. - * @see #isJavaScriptCompatible(String) - */ - public static String getJavaScriptVersion() { - return jsVersion; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { "//", null }; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - validJSString = true; - int languageIndex = LANG_INDEX_DEFAULT; - - // Start off in the proper state. - int state = YYINITIAL; - switch (initialTokenType) { - case Token.LITERAL_STRING_DOUBLE_QUOTE: - state = DART_MULTILINE_STRING_DOUBLE; - break; - case Token.LITERAL_CHAR: - state = DART_MULTILINE_STRING_SINGLE; - break; - case INTERNAL_IN_JS_MLC: - state = JS_MLC; - break; - case INTERNAL_IN_JS_STRING_INVALID: - state = JS_STRING; - validJSString = false; - break; - case INTERNAL_IN_JS_STRING_VALID: - state = JS_STRING; - break; - case INTERNAL_IN_JS_CHAR_INVALID: - state = JS_CHAR; - validJSString = false; - break; - case INTERNAL_IN_JS_CHAR_VALID: - state = JS_CHAR; - break; - default: - state = YYINITIAL; // ??? - break; - } - - setLanguageIndex(languageIndex); - start = text.offset; - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Returns whether features for a specific JS version should be honored - * while highlighting. - * - * @param version JavaScript version required - * @return Whether the JavaScript version is the same or greater than - * version required. - */ - public static boolean isJavaScriptCompatible(String version) { - return jsVersion.compareTo(version) >= 0; - } - - - /** - * Set the supported JavaScript version because some keywords were - * introduced on or after this version. - * - * @param javaScriptVersion The version of JavaScript to support, such as - * "1.5" or "1.6". - * @see #isJavaScriptCompatible(String) - * @see #getJavaScriptVersion() - */ - public static void setJavaScriptVersion(String javaScriptVersion) { - jsVersion = javaScriptVersion; - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = zzPushbackPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtBOL = true; - zzAtEOF = false; - } - - -%} - -Whitespace = ([ \t\f]+) -LineTerminator = ([\n]) - -Letter = [A-Za-z] -NonzeroDigit = [1-9] -Digit = ("0"|{NonzeroDigit}) -HexDigit = ({Digit}|[A-Fa-f]) -OctalDigit = ([0-7]) -LetterOrDigit = ({Letter}|{Digit}) -EscapedSourceCharacter = ("u"{HexDigit}{HexDigit}{HexDigit}{HexDigit}) -NonSeparator = ([^\t\f\r\n\ \(\)\{\}\[\]\;\,\.\=\>\<\!\~\?\:\+\-\*\/\&\|\^\%\"\']|"#"|"\\") -IdentifierStart = ({Letter}|"_"|"$") -IdentifierPart = ({IdentifierStart}|{Digit}|("\\"{EscapedSourceCharacter})) -JS_MLCBegin = "/*" -JS_MLCEnd = "*/" -JS_LineCommentBegin = "//" -JS_IntegerHelper1 = (({NonzeroDigit}{Digit}*)|"0") -JS_IntegerHelper2 = ("0"(([xX]{HexDigit}+)|({OctalDigit}*))) -JS_IntegerLiteral = ({JS_IntegerHelper1}[lL]?) -JS_HexLiteral = ({JS_IntegerHelper2}[lL]?) -JS_FloatHelper1 = ([fFdD]?) -JS_FloatHelper2 = ([eE][+-]?{Digit}+{JS_FloatHelper1}) -JS_FloatLiteral1 = ({Digit}+"."({JS_FloatHelper1}|{JS_FloatHelper2}|{Digit}+({JS_FloatHelper1}|{JS_FloatHelper2}))) -JS_FloatLiteral2 = ("."{Digit}+({JS_FloatHelper1}|{JS_FloatHelper2})) -JS_FloatLiteral3 = ({Digit}+{JS_FloatHelper2}) -JS_FloatLiteral = ({JS_FloatLiteral1}|{JS_FloatLiteral2}|{JS_FloatLiteral3}|({Digit}+[fFdD])) -JS_ErrorNumberFormat = (({JS_IntegerLiteral}|{JS_HexLiteral}|{JS_FloatLiteral}){NonSeparator}+) -JS_Separator = ([\(\)\{\}\[\]\]]) -JS_Separator2 = ([\;,.]) -JS_NonAssignmentOperator = ("+"|"-"|"<="|"^"|"++"|"<"|"*"|">="|"%"|"--"|">"|"/"|"!="|"?"|">>"|"!"|"&"|"=="|":"|">>"|"~"|"||"|"&&"|">>>") -JS_AssignmentOperator = ("="|"-="|"*="|"/="|"|="|"&="|"^="|"+="|"%="|"<<="|">>="|">>>=") -JS_Operator = ({JS_NonAssignmentOperator}|{JS_AssignmentOperator}) -JS_Identifier = ({IdentifierStart}{IdentifierPart}*) -JS_ErrorIdentifier = ({NonSeparator}+) - -DART_Annotation = ("@"{Letter}{LetterOrDigit}*) - -URLGenDelim = ([:\/\?#\[\]@]) -URLSubDelim = ([\!\$&'\(\)\*\+,;=]) -URLUnreserved = ({LetterOrDigit}|"_"|[\-\.\~]) -URLCharacter = ({URLGenDelim}|{URLSubDelim}|{URLUnreserved}|[%]) -URLCharacters = ({URLCharacter}*) -URLEndCharacter = ([\/\$]|{LetterOrDigit}) -URL = (((https?|f(tp|ile))"://"|"www.")({URLCharacters}{URLEndCharacter})?) - - -%state JS_STRING -%state JS_CHAR -%state JS_MLC -%state JS_EOL_COMMENT -%state DART_MULTILINE_STRING_DOUBLE -%state DART_MULTILINE_STRING_SINGLE - - -%% - - { - - // Keywords - "abstract" | - "assert" | - "class" | - "const" | - "extends" | - "factory" | - "get" | - "implements" | - "import" | - "interface" | - "library" | - "negate" | - "new" | - "null" | - "operator" | - "set" | - "source" | - "static" | - "super" | - "this" | - "typedef" | - "var" | - "final" | - "if" | - "else" | - "for" | - "in" | - "is" | - "while" | - "do" | - "switch" | - "case" | - "default" | - "in" | - "try" | - "catch" | - "finally" | - "break" | - "continue" | - "throw" | - "assert" { addToken(Token.RESERVED_WORD); } - "return" { addToken(Token.RESERVED_WORD_2); } - - // Literals. - "false" | - "true" { addToken(Token.LITERAL_BOOLEAN); } - "NaN" { addToken(Token.RESERVED_WORD); } - "Infinity" { addToken(Token.RESERVED_WORD); } - - // Data types - "bool" | - "int" | - "double" | - "num" | - "void" { addToken(Token.DATA_TYPE); } - - // stdlib types - "AssertionError" | - "Clock" | - "Collection" | - "Comparable" | - "Date" | - "Dispatcher" | - "Duration" | - "Expect" | - "FallThroughError" | - "Function" | - "HashMap" | - "HashSet" | - "Hashable" | - "Isolate" | - "Iterable" | - "Iterator" | - "LinkedHashMap" | - "List" | - "Map" | - "Match" | - "Math" | - "Object" | - "Pattern" | - "Promise" | - "Proxy" | - "Queue" | - "ReceivePort" | - "RegExp" | - "SendPort" | - "Set" | - "StopWatch" | - "String" | - "StringBuffer" | - "Strings" | - "TimeZone" | - "TypeError" | - - // stdlib exceptions - "BadNumberFormatException" | - "ClosureArgumentMismatchException" | - "EmptyQueueException" | - "Exception" | - "ExpectException" | - "IllegalAccessException" | - "IllegalArgumentException" | - "IllegalJSRegExpException" | - "IndexOutOfRangeException" | - "IntegerDivisionByZeroException" | - "NoMoreElementsException" | - "NoSuchMethodException" | - "NotImplementedException" | - "NullPointerException" | - "ObjectNotClosureException" | - "OutOfMemoryException" | - "StackOverflowException" | - "UnsupportedOperationException" | - "WrongArgumentCountException" { addToken(Token.FUNCTION); } - - {LineTerminator} { addNullToken(); return firstToken; } - {JS_Identifier} { addToken(Token.IDENTIFIER); } - {Whitespace} { addToken(Token.WHITESPACE); } - - /* Multi-line string literals. */ - \"\"\" { start = zzMarkedPos-3; yybegin(DART_MULTILINE_STRING_DOUBLE); } - \'\'\' { start = zzMarkedPos-3; yybegin(DART_MULTILINE_STRING_SINGLE); } - - /* String/Character literals. */ - [\'] { start = zzMarkedPos-1; validJSString = true; yybegin(JS_CHAR); } - [\"] { start = zzMarkedPos-1; validJSString = true; yybegin(JS_STRING); } - - {DART_Annotation} { addToken(Token.ANNOTATION); } - /* Comment literals. */ - "/**/" { addToken(Token.COMMENT_MULTILINE); } - {JS_MLCBegin} { start = zzMarkedPos-2; yybegin(JS_MLC); } - {JS_LineCommentBegin} { start = zzMarkedPos-2; yybegin(JS_EOL_COMMENT); } - - /* Deprecated stuff */ - "#library" | - "#import" | - "#source" | - "#resource" { addToken(Token.RESERVED_WORD); } - - /* Separators. */ - {JS_Separator} { addToken(Token.SEPARATOR); } - {JS_Separator2} { addToken(Token.IDENTIFIER); } - - /* Operators. */ - {JS_Operator} { addToken(Token.OPERATOR); } - - /* Numbers */ - {JS_IntegerLiteral} { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); } - {JS_HexLiteral} { addToken(Token.LITERAL_NUMBER_HEXADECIMAL); } - {JS_FloatLiteral} { addToken(Token.LITERAL_NUMBER_FLOAT); } - {JS_ErrorNumberFormat} { addToken(Token.ERROR_NUMBER_FORMAT); } - - {JS_ErrorIdentifier} { addToken(Token.ERROR_IDENTIFIER); } - - /* Ended with a line not in a string or comment. */ - <> { addNullToken(); return firstToken; } - - /* Catch any other (unhandled) characters and flag them as bad. */ - . { addToken(Token.ERROR_IDENTIFIER); } - -} - - { - [^\"\\\n]* {} - \\.? { /* Skip escaped chars, handles case: '\"""'. */ } - \"\"\" { addToken(start,zzStartRead+2, Token.LITERAL_STRING_DOUBLE_QUOTE); yybegin(YYINITIAL); } - \" {} - \n | - <> { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); return firstToken; } -} - - - { - [^\'\\\n]* {} - \\.? { /* Skip escaped chars, handles case: "\'''". */ } - \'\'\' { addToken(start,zzStartRead+2, Token.LITERAL_CHAR); yybegin(YYINITIAL); } - \' {} - \n | - <> { addToken(start,zzStartRead-1, Token.LITERAL_CHAR); return firstToken; } -} - - { - [^\n\\\"]+ {} - \\x{HexDigit}{2} {} - \\x { /* Invalid latin-1 character \xXX */ validJSString = false; } - \\u{HexDigit}{4} {} - \\u { /* Invalid Unicode character \\uXXXX */ validJSString = false; } - \\. { /* Skip all escaped chars. */ } - \\ { /* Line ending in '\' => continue to next line. */ - if (validJSString) { - addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); - addEndToken(INTERNAL_IN_JS_STRING_VALID); - } - else { - addToken(start,zzStartRead, Token.ERROR_STRING_DOUBLE); - addEndToken(INTERNAL_IN_JS_STRING_INVALID); - } - return firstToken; - } - \" { int type = validJSString ? Token.LITERAL_STRING_DOUBLE_QUOTE : Token.ERROR_STRING_DOUBLE; addToken(start,zzStartRead, type); yybegin(YYINITIAL); } - \n | - <> { addToken(start,zzStartRead-1, Token.ERROR_STRING_DOUBLE); addNullToken(); return firstToken; } -} - - { - [^\n\\\']+ {} - \\x{HexDigit}{2} {} - \\x { /* Invalid latin-1 character \xXX */ validJSString = false; } - \\u{HexDigit}{4} {} - \\u { /* Invalid Unicode character \\uXXXX */ validJSString = false; } - \\. { /* Skip all escaped chars. */ } - \\ { /* Line ending in '\' => continue to next line. */ - if (validJSString) { - addToken(start,zzStartRead, Token.LITERAL_CHAR); - addEndToken(INTERNAL_IN_JS_CHAR_VALID); - } - else { - addToken(start,zzStartRead, Token.ERROR_CHAR); - addEndToken(INTERNAL_IN_JS_CHAR_INVALID); - } - return firstToken; - } - \' { int type = validJSString ? Token.LITERAL_CHAR : Token.ERROR_CHAR; addToken(start,zzStartRead, type); yybegin(YYINITIAL); } - \n | - <> { addToken(start,zzStartRead-1, Token.ERROR_CHAR); addNullToken(); return firstToken; } -} - - { - // JavaScript MLC's. This state is essentially Java's MLC state. - [^hwf\n\*]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_MULTILINE); start = zzMarkedPos; } - [hwf] {} - {JS_MLCEnd} { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); } - \* {} - \n | - <> { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_IN_JS_MLC); return firstToken; } -} - - { - [^hwf\n]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_EOL); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_EOL); start = zzMarkedPos; } - [hwf] {} - \n | - <> { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; } -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/DartTokenMaker.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/DartTokenMaker.java deleted file mode 100644 index 6a0a610..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/DartTokenMaker.java +++ /dev/null @@ -1,2175 +0,0 @@ -/* The following code was generated by JFlex 1.4.1 on 6/21/15 7:25 PM */ - -/* - * 09/01/2014 - * - * DartTokenMaker.java - Token parser for Dart. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * Scanner for Dart files. Its states could be simplified, but are - * kept the way they are to keep a degree of similarity (i.e. copy/paste) - * between it and HTML/JSP/PHPTokenMaker. This should cause no difference in - * performance.

- * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated DartTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 1.0 - */ - -public class DartTokenMaker extends AbstractJFlexCTokenMaker { - - /** This character denotes the end of file */ - public static final int YYEOF = -1; - - /** lexical states */ - public static final int JS_STRING = 1; - public static final int JS_CHAR = 2; - public static final int DART_MULTILINE_STRING_DOUBLE = 5; - public static final int JS_EOL_COMMENT = 4; - public static final int YYINITIAL = 0; - public static final int JS_MLC = 3; - public static final int DART_MULTILINE_STRING_SINGLE = 6; - - /** - * Translates characters to character classes - */ - private static final String ZZ_CMAP_PACKED = - "\11\0\1\1\1\2\1\0\1\1\1\11\22\0\1\1\1\35\1\115"+ - "\1\12\1\15\1\35\1\37\1\44\2\43\1\17\1\30\1\27\1\24"+ - "\1\25\1\16\1\5\7\7\2\4\1\40\1\27\1\31\1\32\1\34"+ - "\1\36\1\42\1\75\1\6\1\76\1\77\1\23\1\22\1\3\1\101"+ - "\1\74\1\113\1\3\1\21\1\102\1\73\1\104\1\106\1\107\1\110"+ - "\1\103\1\100\1\114\1\3\1\111\1\20\1\3\1\112\1\43\1\13"+ - "\1\43\1\33\1\14\1\0\1\56\1\57\1\61\1\65\1\54\1\51"+ - "\1\67\1\45\1\52\1\105\1\72\1\53\1\70\1\63\1\62\1\47"+ - "\1\3\1\60\1\50\1\46\1\10\1\71\1\55\1\64\1\66\1\3"+ - "\1\26\1\41\1\26\1\36\uff81\0"; - - /** - * Translates characters to character classes - */ - private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); - - /** - * Translates DFA states to action switch labels. - */ - private static final int [] ZZ_ACTION = zzUnpackAction(); - - private static final String ZZ_ACTION_PACKED_0 = - "\5\0\2\1\1\2\1\3\1\4\1\5\2\6\1\5"+ - "\2\2\2\7\3\5\1\7\1\5\1\10\1\5\5\7"+ - "\2\2\1\11\37\5\1\12\1\1\1\13\1\14\1\15"+ - "\1\1\1\16\1\17\1\20\1\1\1\21\5\1\1\22"+ - "\3\1\1\23\1\24\1\1\1\25\1\26\1\1\1\2"+ - "\1\27\1\6\1\30\1\27\1\30\1\27\1\31\1\27"+ - "\1\5\4\2\1\32\1\33\5\5\1\0\1\7\1\34"+ - "\1\0\13\5\2\35\21\5\1\35\34\5\1\0\1\36"+ - "\1\37\1\40\1\41\10\0\1\24\1\0\1\26\1\0"+ - "\1\2\1\30\1\0\2\31\1\5\4\2\1\0\7\5"+ - "\1\42\13\5\1\43\17\5\1\43\31\5\1\44\15\5"+ - "\1\45\12\0\1\46\1\47\1\2\1\5\3\2\1\50"+ - "\7\5\1\51\64\5\1\0\1\1\2\0\1\52\2\0"+ - "\1\53\1\2\1\5\3\2\7\5\1\35\50\5\4\0"+ - "\1\2\1\5\3\2\3\5\1\44\6\5\1\54\23\5"+ - "\1\44\3\5\1\44\5\5\1\35\1\2\224\5"; - - private static int [] zzUnpackAction() { - int [] result = new int[616]; - int offset = 0; - offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAction(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /** - * Translates a state to a row index in the transition table - */ - private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); - - private static final String ZZ_ROWMAP_PACKED_0 = - "\0\0\0\116\0\234\0\352\0\u0138\0\u0186\0\u01d4\0\u0222"+ - "\0\u0270\0\u02be\0\u030c\0\u035a\0\u03a8\0\u03f6\0\u02be\0\u0444"+ - "\0\u0492\0\u04e0\0\u052e\0\u057c\0\u05ca\0\u0618\0\u0666\0\u02be"+ - "\0\u02be\0\u06b4\0\u0702\0\u0750\0\u02be\0\u079e\0\u07ec\0\u083a"+ - "\0\u0888\0\u08d6\0\u0924\0\u0972\0\u09c0\0\u0a0e\0\u0a5c\0\u0aaa"+ - "\0\u0af8\0\u0b46\0\u0b94\0\u0be2\0\u0c30\0\u0c7e\0\u0ccc\0\u0d1a"+ - "\0\u0d68\0\u0db6\0\u0e04\0\u0e52\0\u0ea0\0\u0eee\0\u0f3c\0\u0f8a"+ - "\0\u0fd8\0\u1026\0\u1074\0\u10c2\0\u1110\0\u115e\0\u11ac\0\u11fa"+ - "\0\u1248\0\u1296\0\u02be\0\u12e4\0\u02be\0\u1332\0\u02be\0\u12e4"+ - "\0\u02be\0\u1380\0\u02be\0\u13ce\0\u141c\0\u146a\0\u14b8\0\u1506"+ - "\0\u02be\0\u1554\0\u15a2\0\u15f0\0\u02be\0\u163e\0\u168c\0\u02be"+ - "\0\u16da\0\u1728\0\u1776\0\u17c4\0\u17c4\0\u17c4\0\u1812\0\u1860"+ - "\0\u18ae\0\u18fc\0\u194a\0\u1998\0\u19e6\0\u1a34\0\u1a82\0\u1ad0"+ - "\0\u02be\0\u1b1e\0\u1b6c\0\u1bba\0\u1c08\0\u1c56\0\u1ca4\0\u04e0"+ - "\0\u1cf2\0\u1d40\0\u1d8e\0\u1ddc\0\u1e2a\0\u1e78\0\u1ec6\0\u1f14"+ - "\0\u1f62\0\u1fb0\0\u1ffe\0\u204c\0\u209a\0\u20e8\0\u030c\0\u2136"+ - "\0\u2184\0\u21d2\0\u2220\0\u226e\0\u22bc\0\u230a\0\u2358\0\u23a6"+ - "\0\u23f4\0\u2442\0\u2490\0\u24de\0\u252c\0\u257a\0\u25c8\0\u2616"+ - "\0\u2664\0\u26b2\0\u2700\0\u274e\0\u279c\0\u27ea\0\u2838\0\u2886"+ - "\0\u28d4\0\u2922\0\u2970\0\u29be\0\u2a0c\0\u2a5a\0\u2aa8\0\u2af6"+ - "\0\u2b44\0\u2b92\0\u2be0\0\u2c2e\0\u2c7c\0\u2cca\0\u2d18\0\u2d66"+ - "\0\u2db4\0\u2e02\0\u2e50\0\u2e9e\0\u2eec\0\u2f3a\0\u2f88\0\u02be"+ - "\0\u2fd6\0\u3024\0\u02be\0\u3072\0\u30c0\0\u310e\0\u315c\0\u31aa"+ - "\0\u31f8\0\u3246\0\u3294\0\u02be\0\u32e2\0\u02be\0\u3330\0\u337e"+ - "\0\u33cc\0\u341a\0\u17c4\0\u3468\0\u34b6\0\u3504\0\u3552\0\u35a0"+ - "\0\u35ee\0\u363c\0\u368a\0\u36d8\0\u3726\0\u3774\0\u37c2\0\u3810"+ - "\0\u385e\0\u02be\0\u38ac\0\u38fa\0\u3948\0\u3996\0\u39e4\0\u3a32"+ - "\0\u3a80\0\u3ace\0\u3b1c\0\u3b6a\0\u3bb8\0\u3c06\0\u3c54\0\u3ca2"+ - "\0\u3cf0\0\u3d3e\0\u3d8c\0\u3dda\0\u3e28\0\u3e76\0\u3ec4\0\u3f12"+ - "\0\u3f60\0\u3fae\0\u3ffc\0\u404a\0\u4098\0\u030c\0\u40e6\0\u4134"+ - "\0\u4182\0\u41d0\0\u421e\0\u426c\0\u42ba\0\u4308\0\u4356\0\u43a4"+ - "\0\u43f2\0\u4440\0\u448e\0\u44dc\0\u452a\0\u4578\0\u45c6\0\u4614"+ - "\0\u4662\0\u46b0\0\u46fe\0\u474c\0\u479a\0\u47e8\0\u4836\0\u030c"+ - "\0\u4884\0\u48d2\0\u4920\0\u496e\0\u49bc\0\u4a0a\0\u4a58\0\u4aa6"+ - "\0\u4af4\0\u4b42\0\u4b90\0\u4bde\0\u4c2c\0\u02be\0\u4c7a\0\u4cc8"+ - "\0\u4d16\0\u4d64\0\u4db2\0\u4e00\0\u4e4e\0\u4e9c\0\u4eea\0\u4f38"+ - "\0\u02be\0\u02be\0\u4f86\0\u4fd4\0\u5022\0\u5070\0\u50be\0\u02be"+ - "\0\u510c\0\u515a\0\u51a8\0\u51f6\0\u5244\0\u5292\0\u52e0\0\u030c"+ - "\0\u532e\0\u537c\0\u53ca\0\u5418\0\u5466\0\u54b4\0\u5502\0\u5550"+ - "\0\u559e\0\u55ec\0\u563a\0\u5688\0\u56d6\0\u5724\0\u5772\0\u57c0"+ - "\0\u580e\0\u585c\0\u58aa\0\u58f8\0\u5946\0\u5994\0\u59e2\0\u5a30"+ - "\0\u5a7e\0\u5acc\0\u5b1a\0\u5b68\0\u5bb6\0\u5c04\0\u5c52\0\u5ca0"+ - "\0\u5cee\0\u5d3c\0\u5d8a\0\u5dd8\0\u5e26\0\u5e74\0\u5ec2\0\u5f10"+ - "\0\u5f5e\0\u5fac\0\u5ffa\0\u6048\0\u6096\0\u60e4\0\u6132\0\u6180"+ - "\0\u61ce\0\u621c\0\u626a\0\u62b8\0\u3024\0\u02be\0\u6306\0\u6354"+ - "\0\u63a2\0\u63f0\0\u643e\0\u648c\0\u64da\0\u6528\0\u6576\0\u65c4"+ - "\0\u6612\0\u6660\0\u66ae\0\u66fc\0\u674a\0\u6798\0\u67e6\0\u6834"+ - "\0\u6882\0\u68d0\0\u691e\0\u696c\0\u69ba\0\u6a08\0\u6a56\0\u6aa4"+ - "\0\u6af2\0\u6b40\0\u6b8e\0\u6bdc\0\u6c2a\0\u6c78\0\u6cc6\0\u6d14"+ - "\0\u6d62\0\u6db0\0\u6dfe\0\u6e4c\0\u6e9a\0\u6ee8\0\u6f36\0\u6f84"+ - "\0\u6fd2\0\u7020\0\u706e\0\u70bc\0\u710a\0\u7158\0\u71a6\0\u71f4"+ - "\0\u7242\0\u7290\0\u72de\0\u732c\0\u737a\0\u73c8\0\u7416\0\u7464"+ - "\0\u74b2\0\u7500\0\u63a2\0\u754e\0\u648c\0\u759c\0\u75ea\0\u7638"+ - "\0\u7686\0\u76d4\0\u7722\0\u7770\0\u77be\0\u780c\0\u785a\0\u78a8"+ - "\0\u78f6\0\u7944\0\u7992\0\u79e0\0\u030c\0\u7a2e\0\u7a7c\0\u7aca"+ - "\0\u7b18\0\u7b66\0\u7bb4\0\u7c02\0\u7c50\0\u7c9e\0\u7cec\0\u7d3a"+ - "\0\u7d88\0\u7dd6\0\u7e24\0\u7e72\0\u7ec0\0\u7f0e\0\u7f5c\0\u7faa"+ - "\0\u7ff8\0\u8046\0\u8094\0\u80e2\0\u8130\0\u817e\0\u81cc\0\u821a"+ - "\0\u8268\0\u82b6\0\u0222\0\u8304\0\u8352\0\u83a0\0\u83ee\0\u843c"+ - "\0\u848a\0\u84d8\0\u8526\0\u8574\0\u85c2\0\u8610\0\u865e\0\u86ac"+ - "\0\u86fa\0\u8748\0\u8796\0\u87e4\0\u8832\0\u8880\0\u88ce\0\u891c"+ - "\0\u896a\0\u89b8\0\u8a06\0\u8a54\0\u8aa2\0\u8af0\0\u8b3e\0\u8b8c"+ - "\0\u8bda\0\u8c28\0\u8c76\0\u8cc4\0\u8d12\0\u8d60\0\u8dae\0\u8dfc"+ - "\0\u8e4a\0\u8e98\0\u8ee6\0\u8f34\0\u8f82\0\u8fd0\0\u901e\0\u906c"+ - "\0\u90ba\0\u9108\0\u9156\0\u91a4\0\u91f2\0\u9240\0\u928e\0\u92dc"+ - "\0\u932a\0\u9378\0\u93c6\0\u9414\0\u9462\0\u94b0\0\u94fe\0\u954c"+ - "\0\u959a\0\u95e8\0\u9636\0\u9684\0\u96d2\0\u9720\0\u976e\0\u97bc"+ - "\0\u980a\0\u780c\0\u9858\0\u98a6\0\u98f4\0\u9942\0\u9990\0\u99de"+ - "\0\u9a2c\0\u9a7a\0\u9ac8\0\u9b16\0\u9b64\0\u9bb2\0\u9c00\0\u9c4e"+ - "\0\u9c9c\0\u9cea\0\u9d38\0\u9d86\0\u9dd4\0\u9e22\0\u9e70\0\u9ebe"+ - "\0\u9f0c\0\u9f5a\0\u9fa8\0\u9ff6\0\ua044\0\ua092\0\ua0e0\0\ua12e"+ - "\0\ua17c\0\ua1ca\0\ua218\0\ua266\0\ua2b4\0\ua302\0\ua350\0\ua39e"+ - "\0\ua3ec\0\ua43a\0\ua488\0\ua4d6\0\ua524\0\ua572\0\ua5c0\0\ua60e"+ - "\0\ua65c\0\ua6aa\0\ua6f8\0\ua746\0\ua794\0\ua7e2\0\ua830\0\ua87e"+ - "\0\ua8cc\0\ua91a\0\ua968\0\ua9b6\0\uaa04\0\uaa52\0\uaaa0\0\uaaee"+ - "\0\uab3c\0\uab8a\0\uabd8\0\uac26\0\uac74\0\uacc2\0\uad10\0\uad5e"+ - "\0\uadac\0\uadfa\0\uae48\0\uae96\0\uaee4\0\uaf32\0\uaf80\0\uafce"; - - private static int [] zzUnpackRowMap() { - int [] result = new int[616]; - int offset = 0; - offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackRowMap(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int high = packed.charAt(i++) << 16; - result[j++] = high | packed.charAt(i++); - } - return j; - } - - /** - * The transition table of the DFA - */ - private static final int [] ZZ_TRANS = zzUnpackTrans(); - - private static final String ZZ_TRANS_PACKED_0 = - "\1\10\1\11\1\12\1\13\1\14\1\15\1\16\1\14"+ - "\1\13\1\17\1\20\1\10\2\13\1\21\1\22\1\13"+ - "\1\23\1\24\1\25\1\26\1\27\1\30\1\31\1\32"+ - "\1\33\2\22\1\34\1\22\1\35\1\36\1\35\1\37"+ - "\1\40\1\30\1\41\1\13\1\42\1\13\1\43\1\44"+ - "\1\45\1\46\1\47\1\50\1\51\1\52\1\53\1\54"+ - "\1\55\1\56\1\13\1\57\1\13\1\60\1\13\1\61"+ - "\1\13\1\62\1\63\1\64\1\65\1\66\1\67\1\70"+ - "\1\71\1\72\1\73\1\13\1\74\1\75\1\76\1\77"+ - "\2\13\1\100\1\101\2\102\1\103\10\102\1\104\101\102"+ - "\1\105\2\106\1\107\10\106\1\110\30\106\1\111\51\106"+ - "\2\112\1\113\14\112\1\114\25\112\1\115\3\112\1\116"+ - "\3\112\1\117\40\112\2\120\1\121\42\120\1\122\3\120"+ - "\1\123\3\120\1\124\40\120\2\102\1\125\10\102\1\126"+ - "\101\102\1\127\2\106\1\130\10\106\1\131\30\106\1\132"+ - "\51\106\1\10\2\0\6\10\1\0\4\10\2\0\4\10"+ - "\16\0\1\10\2\0\50\10\2\0\1\11\232\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\50\13\1\0\1\134\2\0\1\134"+ - "\2\14\1\134\1\14\1\134\1\0\4\134\2\0\1\134"+ - "\1\135\1\136\1\137\1\0\1\140\14\0\1\134\2\0"+ - "\4\134\1\136\1\134\1\135\1\137\10\134\1\136\11\134"+ - "\1\136\15\134\1\0\1\134\2\0\1\134\1\141\1\142"+ - "\1\134\1\142\1\134\1\0\4\134\2\0\1\143\1\135"+ - "\1\136\1\137\1\0\1\140\14\0\1\134\2\0\4\134"+ - "\1\136\1\134\1\135\1\137\7\134\1\143\1\136\11\134"+ - "\1\136\15\134\1\0\1\10\2\0\6\13\1\0\1\10"+ - "\1\133\2\13\2\0\4\13\16\0\1\10\2\0\11\13"+ - "\1\144\36\13\1\0\1\10\2\0\6\10\1\0\4\10"+ - "\2\0\4\10\16\0\1\10\2\0\3\10\1\145\1\10"+ - "\1\146\1\147\4\10\1\150\34\10\17\0\1\151\1\152"+ - "\12\0\1\35\115\0\1\35\63\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\5\13\1\153\42\13\1\0\1\10\2\0\5\13"+ - "\1\154\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\11\13\1\155\36\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\17\13\1\156\3\13\1\157\24\13\25\0"+ - "\1\35\5\0\1\35\67\0\2\140\1\0\1\140\136\0"+ - "\1\35\1\0\1\35\114\0\1\160\1\35\115\0\1\35"+ - "\1\0\1\161\113\0\1\35\4\0\1\35\110\0\1\35"+ - "\6\0\1\35\54\0\1\10\2\0\1\162\2\10\1\162"+ - "\1\10\1\162\1\0\4\10\2\0\4\162\16\0\1\10"+ - "\2\0\50\162\45\0\1\163\51\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\1\164\12\13\1\165\5\13\1\166\26\13\1\0"+ - "\1\10\2\0\5\13\1\167\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\1\13\1\170\5\13"+ - "\1\171\1\172\4\13\1\173\32\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\5\13\1\174\3\13\1\175\3\13\1\176"+ - "\32\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\3\13\2\177"+ - "\11\13\1\200\4\13\1\201\24\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\5\13\1\202\42\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\6\13\1\203\10\13\1\204\30\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\1\205\47\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\3\13\1\206\6\13\1\207\35\13"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\13\13\1\210\1\13"+ - "\1\211\32\13\1\0\1\10\2\0\6\13\1\0\1\10"+ - "\1\133\2\13\2\0\4\13\16\0\1\10\2\0\7\13"+ - "\1\212\40\13\1\0\1\10\2\0\6\13\1\0\1\10"+ - "\1\133\2\13\2\0\4\13\16\0\1\10\2\0\6\13"+ - "\1\213\2\13\1\214\3\13\1\215\32\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\2\13\1\216\45\13\1\0\1\10"+ - "\2\0\5\13\1\217\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\7\13\1\220\40\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\7\13\1\221\5\13\1\222"+ - "\32\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\7\13\1\171"+ - "\40\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\11\13\1\176"+ - "\3\13\1\223\32\13\1\0\1\10\2\0\5\13\1\224"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\11\13\1\225\3\13\1\226\32\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\1\13\1\227\1\13\1\230\2\13"+ - "\1\231\7\13\1\232\31\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\3\13\1\233\44\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\6\13\1\234\6\13\1\235\32\13\1\0\1\10"+ - "\2\0\5\13\1\236\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\5\13\1\237\3\13\1\240"+ - "\36\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\5\13\1\241"+ - "\13\13\1\242\26\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\11\13\1\243\36\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\11\13\1\244\36\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\1\13\1\245\5\13\1\246\40\13\1\0\1\10\2\0"+ - "\5\13\1\247\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\12\13\1\250\35\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\11\13\1\251\1\13\1\252\34\13"+ - "\1\0\1\10\2\0\5\13\1\253\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\50\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\7\13\1\254\40\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\13\13\1\255\34\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\16\13\1\256\31\13\116\0"+ - "\1\257\2\102\1\0\10\102\1\0\101\102\1\0\2\260"+ - "\1\0\5\260\1\261\53\260\1\262\31\260\2\106\1\0"+ - "\10\106\1\0\30\106\1\0\51\106\2\112\1\0\14\112"+ - "\1\0\25\112\1\0\3\112\1\0\3\112\1\0\40\112"+ - "\16\0\1\263\145\0\1\264\115\0\1\265\3\0\1\266"+ - "\120\0\1\267\40\0\2\120\1\0\42\120\1\0\3\120"+ - "\1\0\3\120\1\0\40\120\46\0\1\270\115\0\1\271"+ - "\3\0\1\272\120\0\1\273\40\0\2\274\1\0\113\274"+ - "\115\0\1\275\2\276\1\0\113\276\44\0\1\277\51\0"+ - "\1\10\2\0\5\10\1\300\1\0\4\10\2\0\4\10"+ - "\16\0\1\10\2\0\50\10\1\0\1\134\2\0\6\134"+ - "\1\0\4\134\2\0\4\134\16\0\1\134\2\0\50\134"+ - "\1\0\1\134\2\0\1\134\2\301\1\134\1\301\1\134"+ - "\1\0\4\134\2\0\4\134\1\302\3\0\1\302\11\0"+ - "\1\134\2\0\50\134\1\0\1\134\2\0\1\134\2\140"+ - "\1\134\1\140\1\134\1\0\4\134\2\0\2\134\1\136"+ - "\1\137\16\0\1\134\2\0\4\134\1\136\2\134\1\137"+ - "\10\134\1\136\11\134\1\136\15\134\1\0\1\134\2\0"+ - "\1\134\2\141\1\134\1\141\1\134\1\0\4\134\2\0"+ - "\2\134\1\136\1\137\1\0\1\140\14\0\1\134\2\0"+ - "\4\134\1\136\2\134\1\137\10\134\1\136\11\134\1\136"+ - "\15\134\1\0\1\134\2\0\1\134\1\141\1\142\1\134"+ - "\1\142\1\134\1\0\4\134\2\0\1\134\1\303\1\136"+ - "\1\137\1\0\1\140\14\0\1\134\2\0\4\134\1\136"+ - "\1\134\1\303\1\137\10\134\1\136\11\134\1\136\15\134"+ - "\1\0\1\134\2\0\1\134\4\304\1\134\1\0\4\134"+ - "\2\0\2\134\2\304\16\0\1\134\2\0\4\134\1\304"+ - "\2\134\1\304\1\134\2\304\1\134\1\304\3\134\1\304"+ - "\7\134\3\304\15\134\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\20\13\1\305\27\13\1\0\1\10\2\0\6\10\1\0"+ - "\4\10\2\0\4\10\16\0\1\10\2\0\15\10\1\306"+ - "\32\10\1\0\1\10\2\0\6\10\1\0\4\10\2\0"+ - "\4\10\16\0\1\10\2\0\23\10\1\307\24\10\1\0"+ - "\1\10\2\0\6\10\1\0\4\10\2\0\4\10\16\0"+ - "\1\10\2\0\5\10\1\310\42\10\1\0\1\10\2\0"+ - "\6\10\1\0\4\10\2\0\4\10\16\0\1\10\2\0"+ - "\7\10\1\311\40\10\20\0\1\312\76\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\3\13\1\313\12\13\1\314\31\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\16\13\1\315\31\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\6\13\1\316\41\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\2\13\1\317\11\13\1\320"+ - "\33\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\2\13\1\321"+ - "\45\13\33\0\1\35\1\0\1\22\61\0\1\10\2\0"+ - "\6\162\1\0\4\10\2\0\4\162\16\0\1\10\2\0"+ - "\50\162\45\0\1\322\51\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\5\13\1\323\5\13\1\324\34\13\1\0\1\10\2\0"+ - "\5\13\1\325\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\21\13\1\177\26\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\2\13\1\326\45\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\2\13\1\327\45\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\11\13\1\330\36\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\1\13\1\177\46\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\5\13\1\331\42\13\1\0\1\10"+ - "\2\0\5\13\1\332\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\50\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\16\13\1\333\31\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\6\13\1\334\5\13\1\335\33\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\13\13\1\177\34\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\1\13\1\336\46\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\2\13\1\337\45\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\12\13\1\340\35\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\3\13\1\341\44\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\1\13\1\342\46\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\5\13\1\343\42\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\3\13\1\344\44\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\3\13\1\345\44\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\7\13\1\346\40\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\15\13\1\347\32\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\1\13\1\350\46\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\11\13\1\351\36\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\1\13\1\352\1\13\1\341"+ - "\44\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\16\13\1\353"+ - "\31\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\7\13\1\354"+ - "\40\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\6\13\1\355"+ - "\14\13\1\356\24\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\10\13\1\177\11\13\1\357\25\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\4\13\1\360\43\13\1\0\1\10\2\0"+ - "\5\13\1\361\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\50\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\5\13\1\362\42\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\6\13\1\363\41\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\26\13\1\177\21\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\1\13\1\364\33\13\1\365\1\366\11\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\7\13\1\367\40\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\15\13\1\370\32\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\6\13\1\371\41\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\1\13\1\372\2\13\1\373"+ - "\13\13\1\374\27\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\3\13\1\375\44\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\15\13\1\376\32\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\6\13\1\377\14\13\1\u0100\24\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\13\13\1\u0101\34\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\3\13\1\u0102\44\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\1\13\1\u0103\46\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\23\13\1\u0104\24\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\2\13\1\u0105\45\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\3\13\1\u0106\44\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\1\13\1\u0107\1\u0108\45\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\11\13\1\u0109\1\13\1\u010a\1\13"+ - "\1\u010b\32\13\1\0\1\10\2\0\6\13\1\0\1\10"+ - "\1\133\2\13\2\0\4\13\16\0\1\10\2\0\1\13"+ - "\1\u0108\14\13\1\u010c\31\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\1\13\1\u010d\46\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\40\13\1\u010e\7\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\1\13\1\u010f\46\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\15\13\1\u0110\32\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\7\13\1\u0111\40\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\14\13\1\u0112\5\13\1\u0113\25\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\15\13\1\u0114\32\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\3\13\1\u0115\44\13\116\0\1\u0116"+ - "\4\0\4\u0117\12\0\2\u0117\25\0\1\u0117\2\0\1\u0117"+ - "\1\0\2\u0117\1\0\1\u0117\3\0\1\u0117\7\0\3\u0117"+ - "\22\0\4\u0118\12\0\2\u0118\25\0\1\u0118\2\0\1\u0118"+ - "\1\0\2\u0118\1\0\1\u0118\3\0\1\u0118\7\0\3\u0118"+ - "\64\0\1\u0119\116\0\1\u011a\121\0\1\u011b\117\0\1\u011c"+ - "\106\0\1\u011d\116\0\1\u011e\121\0\1\u011f\117\0\1\u0120"+ - "\155\0\1\u0121\44\0\1\u0122\51\0\1\10\2\0\1\10"+ - "\4\u0123\1\10\1\0\4\10\2\0\2\10\2\u0123\16\0"+ - "\1\10\2\0\4\10\1\u0123\2\10\1\u0123\1\10\2\u0123"+ - "\1\10\1\u0123\3\10\1\u0123\7\10\3\u0123\15\10\1\0"+ - "\1\134\2\0\1\134\2\301\1\134\1\301\1\134\1\0"+ - "\4\134\2\0\2\134\1\136\1\134\16\0\1\134\2\0"+ - "\4\134\1\136\13\134\1\136\11\134\1\136\15\134\5\0"+ - "\2\301\1\0\1\301\106\0\1\134\2\0\1\134\4\304"+ - "\1\134\1\0\4\134\2\0\1\134\1\303\2\304\16\0"+ - "\1\134\2\0\4\134\1\304\1\134\1\303\1\304\1\134"+ - "\2\304\1\134\1\304\3\134\1\304\7\134\3\304\15\134"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\26\13\1\u0124\21\13"+ - "\1\0\1\10\2\0\5\10\1\u0125\1\0\4\10\2\0"+ - "\4\10\16\0\1\10\2\0\50\10\1\0\1\10\2\0"+ - "\6\10\1\0\4\10\2\0\4\10\16\0\1\10\2\0"+ - "\2\10\1\u0126\45\10\1\0\1\10\2\0\6\10\1\0"+ - "\4\10\2\0\4\10\16\0\1\10\2\0\12\10\1\u0127"+ - "\35\10\1\0\1\10\2\0\6\10\1\0\4\10\2\0"+ - "\4\10\16\0\1\10\2\0\3\10\1\145\44\10\17\0"+ - "\1\u0128\77\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\1\13\1\u0108"+ - "\46\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\25\13\1\u0129"+ - "\22\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\14\13\1\u012a"+ - "\33\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\6\13\1\u012b"+ - "\41\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\7\13\1\u012c"+ - "\40\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\7\13\1\u012d"+ - "\40\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\1\13\1\u012e"+ - "\46\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\3\13\1\177"+ - "\44\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\15\13\1\u012f"+ - "\32\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\7\13\1\u0130"+ - "\40\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\7\13\1\u0131"+ - "\40\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\7\13\1\176"+ - "\40\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\1\13\1\u0132"+ - "\46\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\1\13\1\352"+ - "\46\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\13\13\1\u0133"+ - "\34\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\11\13\1\u0134"+ - "\36\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\3\13\1\325"+ - "\44\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\1\13\1\u0135"+ - "\46\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\7\13\1\u0136"+ - "\40\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\6\13\1\u0137"+ - "\6\13\1\u0138\32\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\13\13\1\u0139\34\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\7\13\1\177\40\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\7\13\1\u013a\40\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\6\13\1\341\41\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\7\13\1\u0138\40\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\1\13\1\u013b\46\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\11\13\1\u013c\36\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\6\13\1\356\41\13\1\0\1\10\2\0\5\13\1\u013d"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\50\13\1\0\1\10\2\0\6\13\1\0\1\10"+ - "\1\133\2\13\2\0\4\13\16\0\1\10\2\0\3\13"+ - "\1\323\44\13\1\0\1\10\2\0\6\13\1\0\1\10"+ - "\1\133\2\13\2\0\4\13\16\0\1\10\2\0\14\13"+ - "\1\u013e\33\13\1\0\1\10\2\0\6\13\1\0\1\10"+ - "\1\133\2\13\2\0\4\13\16\0\1\10\2\0\1\13"+ - "\1\u013f\1\13\1\171\44\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\13\13\1\u0140\34\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\6\13\1\177\41\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\11\13\1\u0141\36\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\11\13\1\u0142\36\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\12\13\1\u0143\35\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\20\13\1\356\27\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\6\13\1\u0144\41\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\27\13\1\u0145\20\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\15\13\1\u0146\32\13\1\0\1\10\2\0\5\13"+ - "\1\u0147\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\50\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\13\13\1\u0148\34\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\6\13\1\u0149\41\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\7\13\1\u014a\40\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\7\13\1\u014b\40\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\5\13\1\u014c\42\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\7\13\1\u014d\40\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\7\13\1\u014e\40\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\3\13\1\u014f\10\13\1\u0150\33\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\6\13\1\u0151\41\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\2\13\1\u0152\45\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\11\13\1\u012a\36\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\2\13\1\u0153\45\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\7\13\1\u0108\40\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\7\13\1\u0154\40\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\7\13\1\u0155\40\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\1\u0156\47\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\1\u0108\13\13\1\u0157\33\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\14\13\1\u0158\33\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\5\13\1\u0159\42\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\2\13\1\u015a\45\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\20\13\1\u015b\27\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\37\13\1\u015c\10\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\7\13\1\u015d\40\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\1\13\1\u015e\46\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\17\13\1\u015f\3\13\1\u0160\24\13\1\0"+ - "\1\10\2\0\5\13\1\u0103\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\50\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\7\13\1\u0161\40\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\3\13"+ - "\1\u0162\16\0\1\10\2\0\50\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\16\13\1\u0163\31\13\1\0\1\10\2\0"+ - "\5\13\1\u0164\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\50\13\5\0\4\u0165\12\0\2\u0165"+ - "\25\0\1\u0165\2\0\1\u0165\1\0\2\u0165\1\0\1\u0165"+ - "\3\0\1\u0165\7\0\3\u0165\22\0\4\u0166\12\0\2\u0166"+ - "\25\0\1\u0166\2\0\1\u0166\1\0\2\u0166\1\0\1\u0166"+ - "\3\0\1\u0166\7\0\3\u0166\65\0\1\u0167\106\0\1\u0168"+ - "\131\0\1\u011a\66\0\1\u0169\137\0\1\u016a\106\0\1\u016b"+ - "\131\0\1\u011e\66\0\1\u016c\70\0\1\10\2\0\1\10"+ - "\4\u016d\1\10\1\0\4\10\2\0\2\10\2\u016d\16\0"+ - "\1\10\2\0\4\10\1\u016d\2\10\1\u016d\1\10\2\u016d"+ - "\1\10\1\u016d\3\10\1\u016d\7\10\3\u016d\15\10\1\0"+ - "\1\10\2\0\5\13\1\u016e\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\50\13\1\0\1\10"+ - "\2\0\6\10\1\0\4\10\2\0\4\10\16\0\1\10"+ - "\2\0\13\10\1\u016f\34\10\1\0\1\10\2\0\6\10"+ - "\1\0\4\10\2\0\4\10\16\0\1\10\2\0\15\10"+ - "\1\u0170\32\10\1\0\1\10\2\0\6\10\1\0\4\10"+ - "\2\0\4\10\16\0\1\10\2\0\13\10\1\u0171\34\10"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\7\13\1\u0172\40\13"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\1\13\1\u0173\46\13"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\33\13\1\u0174\14\13"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\14\13\1\u0175\33\13"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\2\13\1\u012a\45\13"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\21\13\1\u0176\26\13"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\10\13\1\177\37\13"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\20\13\1\u0177\27\13"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\5\13\1\u0178\42\13"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\14\13\1\341\33\13"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\6\13\1\u0179\41\13"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\15\13\1\u017a\32\13"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\13\13\1\u017b\34\13"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\7\13\1\u017c\40\13"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\13\13\1\171\34\13"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\11\13\1\u017a\36\13"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\16\13\1\u017d\31\13"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\13\13\1\u017e\34\13"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\25\13\1\177\22\13"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\13\13\1\u017f\34\13"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\1\177\47\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\5\13\1\u0180\42\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\11\13\1\u0181\36\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\1\13\1\341\46\13\1\0"+ - "\1\10\2\0\5\13\1\u0182\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\50\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\6\13\1\u0183\41\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\41\13\1\u0184\6\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\23\13\1\u0185\24\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\13\13\1\u0186\34\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\14\13\1\u0187\33\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\11\13\1\u0188\36\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\11\13\1\240\36\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\22\13\1\u0189\25\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\22\13\1\u018a\25\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\16\13\1\u018b\31\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\17\13\1\u018c\30\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\13\13\1\u018d\34\13\1\0\1\10"+ - "\2\0\5\13\1\u018e\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\50\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\25\13\1\u0108\22\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\7\13\1\315\40\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\11\13\1\u018f\36\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\11\13\1\u0190\36\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\45\13\1\u0191\2\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\3\13\1\u0192"+ - "\16\0\1\10\2\0\50\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\11\13\1\u0193\23\13\1\u0194\1\u0195\11\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\1\u0108\47\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\25\13\1\u0196\22\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\16\13\1\u0197\31\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\44\13\1\u0198\3\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\41\13\1\u0199\6\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\4\13\1\u019a\43\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\14\13\1\u019b\33\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\7\13\1\u019c\40\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\21\13\1\u0108\26\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\5\13\1\u019d\42\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\5\13\1\u019e\42\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\17\13\1\u019f\30\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\22\13\1\u01a0\25\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\2\13\1\u01a1\45\13\41\0\1\u0168"+ - "\7\0\1\u011a\63\0\1\u01a2\102\0\6\u0169\1\0\1\u01a3"+ - "\1\0\1\u01a3\2\u0169\1\u01a3\4\u0169\2\u01a3\1\0\2\u01a3"+ - "\1\0\1\u01a3\2\0\4\u01a3\1\0\3\u01a3\50\u0169\41\0"+ - "\1\u016b\7\0\1\u011e\63\0\1\u01a4\102\0\6\u016c\1\0"+ - "\1\u01a5\1\0\1\u01a5\2\u016c\1\u01a5\4\u016c\2\u01a5\1\0"+ - "\2\u01a5\1\0\1\u01a5\2\0\4\u01a5\1\0\3\u01a5\50\u016c"+ - "\1\0\1\10\2\0\1\10\4\u01a6\1\10\1\0\4\10"+ - "\2\0\2\10\2\u01a6\16\0\1\10\2\0\4\10\1\u01a6"+ - "\2\10\1\u01a6\1\10\2\u01a6\1\10\1\u01a6\3\10\1\u01a6"+ - "\7\10\3\u01a6\15\10\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\23\13\1\u01a7\24\13\1\0\1\10\2\0\6\10\1\0"+ - "\4\10\2\0\4\10\16\0\1\10\2\0\14\10\1\u01a8"+ - "\33\10\1\0\1\10\2\0\6\10\1\0\4\10\2\0"+ - "\4\10\16\0\1\10\2\0\13\10\1\u01a9\34\10\1\0"+ - "\1\10\2\0\6\10\1\0\4\10\2\0\4\10\16\0"+ - "\1\10\2\0\11\10\1\u01aa\36\10\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\20\13\1\u01ab\27\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\5\13\1\u01ac\42\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\1\u01ad\47\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\1\13\1\u01ae\46\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\42\13\1\u01af\5\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\7\13\1\u01b0\40\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\14\13\1\177\33\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\6\13\1\u01b1\41\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\13\13\1\u01b1\34\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\4\13\1\u01b2\43\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\23\13\1\u01b3\24\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\20\13\1\323\27\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\11\13\1\u01b4\36\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\16\13\1\u01b5\31\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\16\13\1\u01b6\31\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\1\13\1\u01b7\46\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\6\13\1\171\41\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\7\13\1\356\40\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\15\13\1\u01b8\32\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\2\13\1\u01b9\45\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\7\13\1\u01ba\40\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\1\u01bb\47\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\1\13\1\u01bc\10\13\1\u01bd\35\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\11\13\1\u01be\36\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\7\13\1\u01bf\40\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\5\13\1\u01c0\42\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\37\13\1\u01c1\10\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\1\13\1\u01c2\46\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\13\13\1\u01c3\34\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\13\13\1\u01c4\34\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\1\13\1\u01c5\46\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\15\13\1\u01c6\32\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\13\13\1\u01c7\34\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\12\13\1\u01bd\35\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\11\13\1\u019f\36\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\7\13\1\313\40\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\37\13\1\u01c8\10\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\22\13\1\u01c9\25\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\11\13\1\u01ca\36\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\15\13\1\u01cb\32\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\35\13\1\u01cc\12\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\1\13\1\u01cd\46\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\13\13\1\u01ce\34\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\3\13\1\u0103\44\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\24\13\1\u01cf\23\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\2\13\1\u0108\45\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\30\13\1\u01d0\17\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\2\13\1\u01d1\45\13\17\0\1\u0169\115\0"+ - "\1\u016c\77\0\1\10\2\0\1\10\4\13\1\10\1\0"+ - "\4\10\2\0\2\10\2\13\16\0\1\10\2\0\4\10"+ - "\1\13\2\10\1\13\1\10\2\13\1\10\1\13\3\10"+ - "\1\13\7\10\3\13\15\10\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\12\13\1\u01d2\35\13\1\0\1\10\2\0\6\10"+ - "\1\0\4\10\2\0\4\10\16\0\1\10\2\0\7\10"+ - "\1\u01d3\40\10\1\0\1\10\2\0\6\10\1\0\4\10"+ - "\2\0\4\10\16\0\1\10\2\0\1\10\1\u01d3\46\10"+ - "\1\0\1\10\2\0\6\10\1\0\4\10\2\0\4\10"+ - "\16\0\1\10\2\0\13\10\1\u01d4\34\10\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\34\13\1\u01d5\13\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\15\13\1\u01ce\32\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\13\13\1\u01d6\34\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\3\13"+ - "\1\u01d7\16\0\1\10\2\0\50\13\1\0\1\10\2\0"+ - "\5\13\1\u01d8\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\50\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\4\13\1\177\43\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\21\13\1\177\26\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\11\13\1\u0133\36\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\7\13\1\u01d9\40\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\14\13\1\171\33\13\1\0\1\10\2\0\5\13"+ - "\1\341\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\50\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\15\13\1\176\32\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\5\13\1\u01da\42\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\6\13\1\u01db\41\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\3\13\1\u01dc\16\0\1\10"+ - "\2\0\50\13\1\0\1\10\2\0\6\13\1\0\1\10"+ - "\1\133\2\13\2\0\4\13\16\0\1\10\2\0\35\13"+ - "\1\u01dd\12\13\1\0\1\10\2\0\6\13\1\0\1\10"+ - "\1\133\2\13\2\0\4\13\16\0\1\10\2\0\15\13"+ - "\1\u01de\32\13\1\0\1\10\2\0\6\13\1\0\1\10"+ - "\1\133\2\13\2\0\4\13\16\0\1\10\2\0\6\13"+ - "\1\u0103\41\13\1\0\1\10\2\0\6\13\1\0\1\10"+ - "\1\133\2\13\2\0\4\13\16\0\1\10\2\0\6\13"+ - "\1\u01df\41\13\1\0\1\10\2\0\6\13\1\0\1\10"+ - "\1\133\2\13\2\0\4\13\16\0\1\10\2\0\13\13"+ - "\1\u01e0\34\13\1\0\1\10\2\0\6\13\1\0\1\10"+ - "\1\133\2\13\2\0\4\13\16\0\1\10\2\0\1\13"+ - "\1\u01b1\46\13\1\0\1\10\2\0\5\13\1\u01e1\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\50\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\5\13\1\u01e2"+ - "\42\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\7\13\1\u01e3"+ - "\40\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\11\13\1\u0193"+ - "\36\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\14\13\1\u01e4"+ - "\33\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\16\13\1\u0103"+ - "\31\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\13\13\1\u01bc"+ - "\34\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\24\13\1\u01e5"+ - "\23\13\1\0\1\10\2\0\3\13\1\u01e6\2\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\3\13\1\u0108\44\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\1\13\1\u01e7\46\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\13\13\1\313\34\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\7\13\1\u01e8\40\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\26\13\1\u01e9\21\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\16\13\1\u0108\31\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\7\13\1\u015b\40\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\13\13\1\u01ea\34\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\15\13\1\u01eb\32\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\7\13\1\u01ec\40\13\1\0\1\10\2\0\6\10\1\0"+ - "\4\10\2\0\4\10\16\0\1\10\2\0\21\10\1\u01d3"+ - "\26\10\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\11\13\1\u01ed"+ - "\36\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\15\13\1\u01ee"+ - "\32\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\17\13\1\u01ef"+ - "\30\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\7\13\1\u01f0"+ - "\40\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\16\13\1\u01f1"+ - "\31\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\16\13\1\u01f2"+ - "\31\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\7\13\1\u01f3"+ - "\40\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\6\13\1\u01f4"+ - "\41\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\7\13\1\u01f5"+ - "\40\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\13\13\1\u0108"+ - "\34\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\30\13\1\u01f6"+ - "\15\13\1\u01f7\1\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\32\13\1\u01f8\15\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\1\13\1\u01f9\46\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\15\13\1\u01fa\32\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\30\13\1\u01fb\17\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\1\u01fc\47\13\1\0\1\10\2\0\6\13\1\0\1\10"+ - "\1\133\2\13\2\0\4\13\16\0\1\10\2\0\7\13"+ - "\1\u01fd\40\13\1\0\1\10\2\0\5\13\1\u01fe\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\50\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\14\13\1\u0157"+ - "\33\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\23\13\1\u01ff"+ - "\24\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\15\13\1\u0200"+ - "\32\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\22\13\1\u0201"+ - "\25\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\13\13\1\u0202"+ - "\34\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\13\13\1\u0203"+ - "\34\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\3\13\1\u0204"+ - "\44\13\1\0\1\10\2\0\5\13\1\u0205\1\0\1\10"+ - "\1\133\2\13\2\0\4\13\16\0\1\10\2\0\50\13"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\14\13\1\320\33\13"+ - "\1\0\1\10\2\0\5\13\1\u0206\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\50\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\1\13\1\323\46\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\1\13\1\u0207\46\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\23\13\1\u0208\24\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\7\13\1\u0209\40\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\1\13\1\u020a\46\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\13\13\1\u020b\1\u020c\33\13"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\36\13\1\u020d\11\13"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\5\13\1\u020e\42\13"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\37\13\1\u020f\10\13"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\16\13\1\u0155\31\13"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\13\13\1\u0210\34\13"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\7\13\1\u01de\40\13"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\13\13\1\u0211\34\13"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\4\13\1\u0212\43\13"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\15\13\1\u0213\32\13"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\1\13\1\u0214\46\13"+ - "\1\0\1\10\2\0\5\13\1\u0215\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\50\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\1\13\1\u0216\46\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\2\13\1\u0217\1\13\16\0\1\10\2\0\50\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\1\u0218\47\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\22\13\1\u0219\25\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\7\13\1\u021a\40\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\7\13\1\u021b\40\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\7\13\1\u021c\40\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\23\13\1\u021d\24\13\1\0\1\10"+ - "\2\0\6\13\1\0\1\10\1\133\2\13\2\0\4\13"+ - "\16\0\1\10\2\0\1\u021e\47\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\22\13\1\u021f\25\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\14\13\1\u0220\33\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\43\13\1\u0221\4\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\24\13\1\u0222\23\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\4\13\1\u0223\43\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\22\13\1\u0224\25\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\4\13\1\u0225\43\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\4\13\1\u01fc\43\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\13\13\1\u0226\34\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\31\13\1\u0227\16\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\23\13\1\u0228\24\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\7\13\1\u0229\40\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\15\13\1\u022a\32\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\35\13\1\u0194\12\13\1\0\1\10\2\0"+ - "\6\13\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\1\u0155\47\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\13\13\1\u021a\34\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\16\13\1\u022b\31\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\7\13\1\u022c\40\13\1\0\1\10\2\0\6\13"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\15\13\1\u022d\32\13\1\0\1\10\2\0\5\13"+ - "\1\u022e\1\0\1\10\1\133\2\13\2\0\4\13\16\0"+ - "\1\10\2\0\50\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\7\13\1\u022f\40\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\7\13\1\u0230\40\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\5\13\1\u0231\42\13\1\0\1\10\2\0\6\13\1\0"+ - "\1\10\1\133\2\13\2\0\4\13\16\0\1\10\2\0"+ - "\43\13\1\u0232\4\13\1\0\1\10\2\0\5\13\1\u0233"+ - "\1\0\1\10\1\133\2\13\2\0\4\13\16\0\1\10"+ - "\2\0\50\13\1\0\1\10\2\0\6\13\1\0\1\10"+ - "\1\133\2\13\2\0\4\13\16\0\1\10\2\0\6\13"+ - "\1\u0234\41\13\1\0\1\10\2\0\6\13\1\0\1\10"+ - "\1\133\2\13\2\0\4\13\16\0\1\10\2\0\21\13"+ - "\1\u021a\26\13\1\0\1\10\2\0\6\13\1\0\1\10"+ - "\1\133\2\13\2\0\4\13\16\0\1\10\2\0\6\13"+ - "\1\u0235\41\13\1\0\1\10\2\0\6\13\1\0\1\10"+ - "\1\133\2\13\2\0\4\13\16\0\1\10\2\0\7\13"+ - "\1\u0236\40\13\1\0\1\10\2\0\6\13\1\0\1\10"+ - "\1\133\2\13\2\0\4\13\16\0\1\10\2\0\20\13"+ - "\1\u0237\27\13\1\0\1\10\2\0\6\13\1\0\1\10"+ - "\1\133\2\13\2\0\4\13\16\0\1\10\2\0\13\13"+ - "\1\u0238\34\13\1\0\1\10\2\0\6\13\1\0\1\10"+ - "\1\133\2\13\2\0\4\13\16\0\1\10\2\0\1\13"+ - "\1\u0239\46\13\1\0\1\10\2\0\6\13\1\0\1\10"+ - "\1\133\2\13\2\0\4\13\16\0\1\10\2\0\16\13"+ - "\1\u023a\31\13\1\0\1\10\2\0\6\13\1\0\1\10"+ - "\1\133\2\13\2\0\4\13\16\0\1\10\2\0\20\13"+ - "\1\u021a\27\13\1\0\1\10\2\0\6\13\1\0\1\10"+ - "\1\133\2\13\2\0\4\13\16\0\1\10\2\0\23\13"+ - "\1\u023b\24\13\1\0\1\10\2\0\6\13\1\0\1\10"+ - "\1\133\2\13\2\0\4\13\16\0\1\10\2\0\3\13"+ - "\1\u023c\44\13\1\0\1\10\2\0\6\13\1\0\1\10"+ - "\1\133\2\13\2\0\4\13\16\0\1\10\2\0\22\13"+ - "\1\u023d\25\13\1\0\1\10\2\0\6\13\1\0\1\10"+ - "\1\133\2\13\2\0\4\13\16\0\1\10\2\0\3\13"+ - "\1\u023e\44\13\1\0\1\10\2\0\6\13\1\0\1\10"+ - "\1\133\2\13\2\0\4\13\16\0\1\10\2\0\11\13"+ - "\1\u023f\36\13\1\0\1\10\2\0\6\13\1\0\1\10"+ - "\1\133\2\13\2\0\4\13\16\0\1\10\2\0\23\13"+ - "\1\u0240\24\13\1\0\1\10\2\0\6\13\1\0\1\10"+ - "\1\133\2\13\2\0\4\13\16\0\1\10\2\0\15\13"+ - "\1\u0241\32\13\1\0\1\10\2\0\6\13\1\0\1\10"+ - "\1\133\2\13\2\0\4\13\16\0\1\10\2\0\15\13"+ - "\1\u0242\32\13\1\0\1\10\2\0\6\13\1\0\1\10"+ - "\1\133\2\13\2\0\4\13\16\0\1\10\2\0\16\13"+ - "\1\u0243\31\13\1\0\1\10\2\0\6\13\1\0\1\10"+ - "\1\133\2\13\2\0\4\13\16\0\1\10\2\0\37\13"+ - "\1\u0244\10\13\1\0\1\10\2\0\6\13\1\0\1\10"+ - "\1\133\2\13\2\0\4\13\16\0\1\10\2\0\23\13"+ - "\1\u0245\24\13\1\0\1\10\2\0\6\13\1\0\1\10"+ - "\1\133\2\13\2\0\4\13\16\0\1\10\2\0\7\13"+ - "\1\u022d\40\13\1\0\1\10\2\0\6\13\1\0\1\10"+ - "\1\133\2\13\2\0\4\13\16\0\1\10\2\0\1\13"+ - "\1\u023c\46\13\1\0\1\10\2\0\6\13\1\0\1\10"+ - "\1\133\2\13\2\0\4\13\16\0\1\10\2\0\7\13"+ - "\1\u0246\40\13\1\0\1\10\2\0\6\13\1\0\1\10"+ - "\1\133\2\13\2\0\4\13\16\0\1\10\2\0\3\13"+ - "\1\u021a\44\13\1\0\1\10\2\0\6\13\1\0\1\10"+ - "\1\133\2\13\2\0\3\13\1\u0247\16\0\1\10\2\0"+ - "\50\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\5\13\1\u0248"+ - "\42\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\16\13\1\u0249"+ - "\31\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\7\13\1\u024a"+ - "\40\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\10\13\1\u021a"+ - "\37\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\3\13\1\u024b"+ - "\44\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\1\13\1\u024c"+ - "\46\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\2\13\1\u024d"+ - "\45\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\11\13\1\u024e"+ - "\36\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\16\13\1\u024e"+ - "\31\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\17\13\1\u024f"+ - "\30\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\15\13\1\u0250"+ - "\32\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\22\13\1\u0206"+ - "\25\13\1\0\1\10\2\0\6\13\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\16\13\1\u0251"+ - "\31\13\1\0\1\10\2\0\5\13\1\u0252\1\0\1\10"+ - "\1\133\2\13\2\0\4\13\16\0\1\10\2\0\50\13"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\31\13\1\u0253\16\13"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\7\13\1\u0254\40\13"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\1\13\1\u021a\46\13"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\2\13\1\u021a\45\13"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\16\13\1\u0255\31\13"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\1\13\1\u0256\46\13"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\13\13\1\u0206\34\13"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\15\13\1\u0257\32\13"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\13\13\1\u0258\34\13"+ - "\1\0\1\10\2\0\3\13\1\u0259\2\13\1\0\1\10"+ - "\1\133\2\13\2\0\4\13\16\0\1\10\2\0\50\13"+ - "\1\0\1\10\2\0\6\13\1\0\1\10\1\133\2\13"+ - "\2\0\4\13\16\0\1\10\2\0\35\13\1\u025a\12\13"+ - "\1\0\1\10\2\0\5\13\1\u0246\1\0\1\10\1\133"+ - "\2\13\2\0\4\13\16\0\1\10\2\0\50\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\11\13\1\u025b\36\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\21\13\1\u025c\26\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\5\13\1\u025d\42\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\1\13\1\u025e\46\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\45\13\1\u025f\2\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\3\13\1\u0260\44\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\5\13\1\u0261\42\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\7\13\1\u0262\40\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\23\13\1\u0263\24\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\15\13\1\u0264\32\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\13\13\1\u0265\34\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\11\13\1\u0266\36\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\16\13\1\u021a\31\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\15\13\1\u021a\32\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\1\13\1\u0267\46\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\14\13\1\u0268\33\13\1\0"+ - "\1\10\2\0\6\13\1\0\1\10\1\133\2\13\2\0"+ - "\4\13\16\0\1\10\2\0\1\u021a\47\13\1\0"; - - private static int [] zzUnpackTrans() { - int [] result = new int[45084]; - int offset = 0; - offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackTrans(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - value--; - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /* error codes */ - private static final int ZZ_UNKNOWN_ERROR = 0; - private static final int ZZ_NO_MATCH = 1; - private static final int ZZ_PUSHBACK_2BIG = 2; - - /* error messages for the codes above */ - private static final String ZZ_ERROR_MSG[] = { - "Unkown internal scanner error", - "Error: could not match input", - "Error: pushback value was too large" - }; - - /** - * ZZ_ATTRIBUTE[aState] contains the attributes of state aState - */ - private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); - - private static final String ZZ_ATTRIBUTE_PACKED_0 = - "\5\0\4\1\1\11\4\1\1\11\10\1\2\11\3\1"+ - "\1\11\45\1\1\11\1\1\1\11\1\1\1\11\1\1"+ - "\1\11\1\1\1\11\5\1\1\11\3\1\1\11\2\1"+ - "\1\11\20\1\1\11\6\1\1\0\2\1\1\0\73\1"+ - "\1\0\1\11\2\1\1\11\10\0\1\11\1\0\1\11"+ - "\1\0\2\1\1\0\7\1\1\0\7\1\1\11\103\1"+ - "\1\11\12\0\2\11\5\1\1\11\74\1\1\0\1\11"+ - "\2\0\1\1\2\0\66\1\4\0\303\1"; - - private static int [] zzUnpackAttribute() { - int [] result = new int[616]; - int offset = 0; - offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAttribute(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - /** the input device */ - private java.io.Reader zzReader; - - /** the current state of the DFA */ - private int zzState; - - /** the current lexical state */ - private int zzLexicalState = YYINITIAL; - - /** this buffer contains the current text to be matched and is - the source of the yytext() string */ - private char zzBuffer[]; - - /** the textposition at the last accepting state */ - private int zzMarkedPos; - - /** the current text position in the buffer */ - private int zzCurrentPos; - - /** startRead marks the beginning of the yytext() string in the buffer */ - private int zzStartRead; - - /** endRead marks the last character in the buffer, that has been read - from input */ - private int zzEndRead; - - /** zzAtEOF == true <=> the scanner is at the EOF */ - private boolean zzAtEOF; - - /* user code: */ - - /** - * Token type specifying we're in a JavaScript multi-line comment. - */ - private static final int INTERNAL_IN_JS_MLC = -8; - - /** - * Token type specifying we're in an invalid multi-line JS string. - */ - private static final int INTERNAL_IN_JS_STRING_INVALID = -10; - - /** - * Token type specifying we're in a valid multi-line JS string. - */ - private static final int INTERNAL_IN_JS_STRING_VALID = -11; - - /** - * Token type specifying we're in an invalid multi-line JS single-quoted string. - */ - private static final int INTERNAL_IN_JS_CHAR_INVALID = -12; - - /** - * Token type specifying we're in a valid multi-line JS single-quoted string. - */ - private static final int INTERNAL_IN_JS_CHAR_VALID = -13; - - /** - * When in the JS_STRING state, whether the current string is valid. - */ - private boolean validJSString; - - /** - * The version of JavaScript being highlighted. - */ - private static String jsVersion; - - /** - * Language state set on JS tokens. Must be 0. - */ - private static final int LANG_INDEX_DEFAULT = 0; - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public DartTokenMaker() { - super(); - } - - - static { - jsVersion = "1.0"; - } - - - /** - * Adds the token specified to the current linked list of tokens as an - * "end token;" that is, at zzMarkedPos. - * - * @param tokenType The token's type. - */ - private void addEndToken(int tokenType) { - addToken(zzMarkedPos,zzMarkedPos, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addToken(int, int, int) - */ - private void addHyperlinkToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, true); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, int startOffset) { - super.addToken(array, start,end, tokenType, startOffset); - zzStartRead = zzMarkedPos; - } - - - /** - * Returns the closest {@link TokenTypes "standard" token type} for a given - * "internal" token type (e.g. one whose value is < 0). - */ - @Override - public int getClosestStandardTokenTypeForInternalType(int type) { - switch (type) { - case INTERNAL_IN_JS_MLC: - return TokenTypes.COMMENT_MULTILINE; - case INTERNAL_IN_JS_STRING_INVALID: - case INTERNAL_IN_JS_STRING_VALID: - case INTERNAL_IN_JS_CHAR_INVALID: - case INTERNAL_IN_JS_CHAR_VALID: - return TokenTypes.LITERAL_STRING_DOUBLE_QUOTE; - } - return type; - } - - - /** - * Returns the JavaScript version being highlighted. - * - * @return Supported JavaScript version. - * @see #isJavaScriptCompatible(String) - */ - public static String getJavaScriptVersion() { - return jsVersion; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { "//", null }; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - validJSString = true; - int languageIndex = LANG_INDEX_DEFAULT; - - // Start off in the proper state. - int state = YYINITIAL; - switch (initialTokenType) { - case Token.LITERAL_STRING_DOUBLE_QUOTE: - state = DART_MULTILINE_STRING_DOUBLE; - break; - case Token.LITERAL_CHAR: - state = DART_MULTILINE_STRING_SINGLE; - break; - case INTERNAL_IN_JS_MLC: - state = JS_MLC; - break; - case INTERNAL_IN_JS_STRING_INVALID: - state = JS_STRING; - validJSString = false; - break; - case INTERNAL_IN_JS_STRING_VALID: - state = JS_STRING; - break; - case INTERNAL_IN_JS_CHAR_INVALID: - state = JS_CHAR; - validJSString = false; - break; - case INTERNAL_IN_JS_CHAR_VALID: - state = JS_CHAR; - break; - default: - state = YYINITIAL; // ??? - break; - } - - setLanguageIndex(languageIndex); - start = text.offset; - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Returns whether features for a specific JS version should be honored - * while highlighting. - * - * @param version JavaScript version required - * @return Whether the JavaScript version is the same or greater than - * version required. - */ - public static boolean isJavaScriptCompatible(String version) { - return jsVersion.compareTo(version) >= 0; - } - - - /** - * Set the supported JavaScript version because some keywords were - * introduced on or after this version. - * - * @param javaScriptVersion The version of JavaScript to support, such as - * "1.5" or "1.6". - * @see #isJavaScriptCompatible(String) - * @see #getJavaScriptVersion() - */ - public static void setJavaScriptVersion(String javaScriptVersion) { - jsVersion = javaScriptVersion; - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtEOF = false; - } - - - - - /** - * Creates a new scanner - * There is also a java.io.InputStream version of this constructor. - * - * @param in the java.io.Reader to read input from. - */ - public DartTokenMaker(java.io.Reader in) { - this.zzReader = in; - } - - /** - * Creates a new scanner. - * There is also java.io.Reader version of this constructor. - * - * @param in the java.io.Inputstream to read input from. - */ - public DartTokenMaker(java.io.InputStream in) { - this(new java.io.InputStreamReader(in)); - } - - /** - * Unpacks the compressed character translation table. - * - * @param packed the packed character translation table - * @return the unpacked character translation table - */ - private static char [] zzUnpackCMap(String packed) { - char [] map = new char[0x10000]; - int i = 0; /* index in packed string */ - int j = 0; /* index in unpacked array */ - while (i < 190) { - int count = packed.charAt(i++); - char value = packed.charAt(i++); - do map[j++] = value; while (--count > 0); - } - return map; - } - - - /** - * Closes the input stream. - */ - public final void yyclose() throws java.io.IOException { - zzAtEOF = true; /* indicate end of file */ - zzEndRead = zzStartRead; /* invalidate buffer */ - - if (zzReader != null) - zzReader.close(); - } - - - /** - * Returns the current lexical state. - */ - public final int yystate() { - return zzLexicalState; - } - - - /** - * Enters a new lexical state - * - * @param newState the new lexical state - */ - @Override - public final void yybegin(int newState) { - zzLexicalState = newState; - } - - - /** - * Returns the text matched by the current regular expression. - */ - public final String yytext() { - return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead ); - } - - - /** - * Returns the character at position pos from the - * matched text. - * - * It is equivalent to yytext().charAt(pos), but faster - * - * @param pos the position of the character to fetch. - * A value from 0 to yylength()-1. - * - * @return the character at position pos - */ - public final char yycharat(int pos) { - return zzBuffer[zzStartRead+pos]; - } - - - /** - * Returns the length of the matched text region. - */ - public final int yylength() { - return zzMarkedPos-zzStartRead; - } - - - /** - * Reports an error that occured while scanning. - * - * In a wellformed scanner (no or only correct usage of - * yypushback(int) and a match-all fallback rule) this method - * will only be called with things that "Can't Possibly Happen". - * If this method is called, something is seriously wrong - * (e.g. a JFlex bug producing a faulty scanner etc.). - * - * Usual syntax/scanner level error handling should be done - * in error fallback rules. - * - * @param errorCode the code of the errormessage to display - */ - private void zzScanError(int errorCode) { - String message; - try { - message = ZZ_ERROR_MSG[errorCode]; - } - catch (ArrayIndexOutOfBoundsException e) { - message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; - } - - throw new Error(message); - } - - - /** - * Pushes the specified amount of characters back into the input stream. - * - * They will be read again by then next call of the scanning method - * - * @param number the number of characters to be read again. - * This number must not be greater than yylength()! - */ - public void yypushback(int number) { - if ( number > yylength() ) - zzScanError(ZZ_PUSHBACK_2BIG); - - zzMarkedPos -= number; - } - - - /** - * Resumes scanning until the next regular expression is matched, - * the end of input is encountered or an I/O-Error occurs. - * - * @return the next token - * @exception java.io.IOException if any I/O-Error occurs - */ - public org.fife.ui.rsyntaxtextarea.Token yylex() throws java.io.IOException { - int zzInput; - int zzAction; - - // cached fields: - int zzCurrentPosL; - int zzMarkedPosL; - int zzEndReadL = zzEndRead; - char [] zzBufferL = zzBuffer; - char [] zzCMapL = ZZ_CMAP; - - int [] zzTransL = ZZ_TRANS; - int [] zzRowMapL = ZZ_ROWMAP; - int [] zzAttrL = ZZ_ATTRIBUTE; - - while (true) { - zzMarkedPosL = zzMarkedPos; - - zzAction = -1; - - zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; - - zzState = zzLexicalState; - - - zzForAction: { - while (true) { - - if (zzCurrentPosL < zzEndReadL) - zzInput = zzBufferL[zzCurrentPosL++]; - else if (zzAtEOF) { - zzInput = YYEOF; - break zzForAction; - } - else { - // store back cached positions - zzCurrentPos = zzCurrentPosL; - zzMarkedPos = zzMarkedPosL; - boolean eof = zzRefill(); - // get translated positions and possibly new buffer - zzCurrentPosL = zzCurrentPos; - zzMarkedPosL = zzMarkedPos; - zzBufferL = zzBuffer; - zzEndReadL = zzEndRead; - if (eof) { - zzInput = YYEOF; - break zzForAction; - } - else { - zzInput = zzBufferL[zzCurrentPosL++]; - } - } - int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; - if (zzNext == -1) break zzForAction; - zzState = zzNext; - - int zzAttributes = zzAttrL[zzState]; - if ( (zzAttributes & 1) == 1 ) { - zzAction = zzState; - zzMarkedPosL = zzCurrentPosL; - if ( (zzAttributes & 8) == 8 ) break zzForAction; - } - - } - } - - // store back cached position - zzMarkedPos = zzMarkedPosL; - - switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { - case 11: - { addToken(start,zzStartRead-1, Token.ERROR_STRING_DOUBLE); addNullToken(); return firstToken; - } - case 45: break; - case 5: - { addToken(Token.IDENTIFIER); - } - case 46: break; - case 41: - { addToken(Token.LITERAL_BOOLEAN); - } - case 47: break; - case 39: - { addToken(start,zzStartRead+2, Token.LITERAL_CHAR); yybegin(YYINITIAL); - } - case 48: break; - case 30: - { /* Skip all escaped chars. */ - } - case 49: break; - case 32: - { /* Invalid latin-1 character \xXX */ validJSString = false; - } - case 50: break; - case 38: - { addToken(start,zzStartRead+2, Token.LITERAL_STRING_DOUBLE_QUOTE); yybegin(YYINITIAL); - } - case 51: break; - case 23: - { addToken(Token.ERROR_NUMBER_FORMAT); - } - case 52: break; - case 17: - { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_IN_JS_MLC); return firstToken; - } - case 53: break; - case 36: - { addToken(Token.FUNCTION); - } - case 54: break; - case 28: - { addToken(Token.ANNOTATION); - } - case 55: break; - case 2: - { addToken(Token.ERROR_IDENTIFIER); - } - case 56: break; - case 27: - { start = zzMarkedPos-2; yybegin(JS_MLC); - } - case 57: break; - case 13: - { int type = validJSString ? Token.LITERAL_STRING_DOUBLE_QUOTE : Token.ERROR_STRING_DOUBLE; addToken(start,zzStartRead, type); yybegin(YYINITIAL); - } - case 58: break; - case 37: - { start = zzMarkedPos-3; yybegin(DART_MULTILINE_STRING_DOUBLE); - } - case 59: break; - case 16: - { int type = validJSString ? Token.LITERAL_CHAR : Token.ERROR_CHAR; addToken(start,zzStartRead, type); yybegin(YYINITIAL); - } - case 60: break; - case 14: - { addToken(start,zzStartRead-1, Token.ERROR_CHAR); addNullToken(); return firstToken; - } - case 61: break; - case 26: - { start = zzMarkedPos-2; yybegin(JS_EOL_COMMENT); - } - case 62: break; - case 20: - { /* Skip escaped chars, handles case: '\"""'. */ - } - case 63: break; - case 34: - { start = zzMarkedPos-3; yybegin(DART_MULTILINE_STRING_SINGLE); - } - case 64: break; - case 25: - { addToken(Token.LITERAL_NUMBER_HEXADECIMAL); - } - case 65: break; - case 12: - { /* Line ending in '\' => continue to next line. */ - if (validJSString) { - addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); - addEndToken(INTERNAL_IN_JS_STRING_VALID); - } - else { - addToken(start,zzStartRead, Token.ERROR_STRING_DOUBLE); - addEndToken(INTERNAL_IN_JS_STRING_INVALID); - } - return firstToken; - } - case 66: break; - case 3: - { addToken(Token.WHITESPACE); - } - case 67: break; - case 35: - { addToken(Token.DATA_TYPE); - } - case 68: break; - case 33: - { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); - } - case 69: break; - case 15: - { /* Line ending in '\' => continue to next line. */ - if (validJSString) { - addToken(start,zzStartRead, Token.LITERAL_CHAR); - addEndToken(INTERNAL_IN_JS_CHAR_VALID); - } - else { - addToken(start,zzStartRead, Token.ERROR_CHAR); - addEndToken(INTERNAL_IN_JS_CHAR_INVALID); - } - return firstToken; - } - case 70: break; - case 6: - { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); - } - case 71: break; - case 10: - { start = zzMarkedPos-1; validJSString = true; yybegin(JS_STRING); - } - case 72: break; - case 31: - { /* Invalid Unicode character \\uXXXX */ validJSString = false; - } - case 73: break; - case 22: - { /* Skip escaped chars, handles case: "\'''". */ - } - case 74: break; - case 9: - { start = zzMarkedPos-1; validJSString = true; yybegin(JS_CHAR); - } - case 75: break; - case 29: - { addToken(Token.RESERVED_WORD); - } - case 76: break; - case 42: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_MULTILINE); start = zzMarkedPos; - } - case 77: break; - case 44: - { addToken(Token.RESERVED_WORD_2); - } - case 78: break; - case 18: - { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; - } - case 79: break; - case 8: - { addToken(Token.SEPARATOR); - } - case 80: break; - case 4: - { addNullToken(); return firstToken; - } - case 81: break; - case 7: - { addToken(Token.OPERATOR); - } - case 82: break; - case 21: - { addToken(start,zzStartRead-1, Token.LITERAL_CHAR); return firstToken; - } - case 83: break; - case 24: - { addToken(Token.LITERAL_NUMBER_FLOAT); - } - case 84: break; - case 43: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_EOL); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_EOL); start = zzMarkedPos; - } - case 85: break; - case 40: - { addToken(Token.COMMENT_MULTILINE); - } - case 86: break; - case 1: - { - } - case 87: break; - case 19: - { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); return firstToken; - } - case 88: break; - default: - if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { - zzAtEOF = true; - switch (zzLexicalState) { - case JS_STRING: { - addToken(start,zzStartRead-1, Token.ERROR_STRING_DOUBLE); addNullToken(); return firstToken; - } - case 617: break; - case JS_CHAR: { - addToken(start,zzStartRead-1, Token.ERROR_CHAR); addNullToken(); return firstToken; - } - case 618: break; - case DART_MULTILINE_STRING_DOUBLE: { - addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); return firstToken; - } - case 619: break; - case JS_EOL_COMMENT: { - addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; - } - case 620: break; - case YYINITIAL: { - addNullToken(); return firstToken; - } - case 621: break; - case JS_MLC: { - addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_IN_JS_MLC); return firstToken; - } - case 622: break; - case DART_MULTILINE_STRING_SINGLE: { - addToken(start,zzStartRead-1, Token.LITERAL_CHAR); return firstToken; - } - case 623: break; - default: - return null; - } - } - else { - zzScanError(ZZ_NO_MATCH); - } - } - } - } - - -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/DelphiTokenMaker.flex b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/DelphiTokenMaker.flex deleted file mode 100644 index 4e69d45..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/DelphiTokenMaker.flex +++ /dev/null @@ -1,559 +0,0 @@ -/* - * 7/28/2009 - * - * DelphiTokenMaker.java - Scanner for the Delphi programming language. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * Scanner for the Delphi programming language.

- * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated DelphiTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.5 - * - */ -%% - -%public -%class DelphiTokenMaker -%extends AbstractJFlexTokenMaker -%unicode -%type org.fife.ui.rsyntaxtextarea.Token - - -%{ - - - /** - * Token type specific to DelphiTokenMaker; denotes a line ending - * with an unterminated "(*" comment. - */ - public static final int INTERNAL_MLC2 = -1; - - /** - * Token type specific to DelphiTokenMaker; denotes a line ending - * with an unterminated "{$" compiler directive. - */ - public static final int INTERNAL_COMPILER_DIRECTIVE = -2; - - /** - * Token type specific to DelphiTokenMaker; denotes a line ending - * with an unterminated "(*$" compiler directive. - */ - public static final int INTERNAL_COMPILER_DIRECTIVE2 = -3; - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public DelphiTokenMaker() { - } - - - /** - * Adds the token specified to the current linked list of tokens as an - * "end token;" that is, at zzMarkedPos. - * - * @param tokenType The token's type. - */ - private void addEndToken(int tokenType) { - addToken(zzMarkedPos,zzMarkedPos, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addToken(int, int, int) - */ - private void addHyperlinkToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, true); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addHyperlinkToken(int, int, int) - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, false); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - * @param hyperlink Whether this token is a hyperlink. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, - int startOffset, boolean hyperlink) { - super.addToken(array, start,end, tokenType, startOffset, hyperlink); - zzStartRead = zzMarkedPos; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { "//", null }; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - - // Start off in the proper state. - int state = Token.NULL; - switch (initialTokenType) { - case Token.COMMENT_MULTILINE: - state = MLC; - start = text.offset; - break; - case INTERNAL_MLC2: - state = MLC2; - start = text.offset; - break; - case INTERNAL_COMPILER_DIRECTIVE: - state = COMPILER_DIRECTIVE; - start = text.offset; - break; - case INTERNAL_COMPILER_DIRECTIVE2: - state = COMPILER_DIRECTIVE2; - start = text.offset; - break; - default: - state = Token.NULL; - } - - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = zzPushbackPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtBOL = true; - zzAtEOF = false; - } - - -%} - -Letter = [A-Za-z] -LetterOrUnderscore = ({Letter}|"_") -NonzeroDigit = [1-9] -Digit = ("0"|{NonzeroDigit}) -HexDigit = ({Digit}|[A-Fa-f]) -OctalDigit = ([0-7]) -NonSeparator = ([^\t\f\r\n\ \(\)\{\}\[\]\;\,\.\=\>\<\!\~\?\:\+\-\*\/\&\|\^\%\"\']|"#"|"\\") -IdentifierStart = ({LetterOrUnderscore}|"$") -IdentifierPart = ({IdentifierStart}|{Digit}) - -LineTerminator = (\n) -WhiteSpace = ([ \t\f]) - -UnclosedStringLiteral = ([\'][^\']*) -StringLiteral = ({UnclosedStringLiteral}[\']) -EscapeSequence = ("#"{Digit}*) - -MLCBegin = "{" -MLCEnd = "}" -MLC2Begin = "(*" -MLC2End = "*)" -CompilerDirective1Begin = ({MLCBegin}"$") -CompilerDirective2Begin = ({MLC2Begin}"$") -LineCommentBegin = "//" - -IntegerHelper1 = (({NonzeroDigit}{Digit}*)|"0") -IntegerHelper2 = ("0"(([xX]{HexDigit}+)|({OctalDigit}*))) -IntegerLiteral = ({IntegerHelper1}[lL]?) -HexLiteral = ({IntegerHelper2}[lL]?) -FloatHelper1 = ([fFdD]?) -FloatHelper2 = ([eE][+-]?{Digit}+{FloatHelper1}) -FloatLiteral1 = ({Digit}+"."({FloatHelper1}|{FloatHelper2}|{Digit}+({FloatHelper1}|{FloatHelper2}))) -FloatLiteral2 = ("."{Digit}+({FloatHelper1}|{FloatHelper2})) -FloatLiteral3 = ({Digit}+{FloatHelper2}) -FloatLiteral = ({FloatLiteral1}|{FloatLiteral2}|{FloatLiteral3}|({Digit}+[fFdD])) -ErrorNumberFormat = (({IntegerLiteral}|{HexLiteral}|{FloatLiteral}){NonSeparator}+) -BooleanLiteral = ("true"|"false") - -Separator = ([\(\)\[\]]) -Separator2 = ([\;,.]) - -Operator = ([\^\@\:\=\<\>\+\-\/\*]) - -Identifier = ({IdentifierStart}{IdentifierPart}*) -ErrorIdentifier = ({NonSeparator}+) - -URLGenDelim = ([:\/\?#\[\]@]) -URLSubDelim = ([\!\$&'\(\)\*\+,;=]) -URLUnreserved = ({LetterOrUnderscore}|{Digit}|[\-\.\~]) -URLCharacter = ({URLGenDelim}|{URLSubDelim}|{URLUnreserved}|[%]) -URLCharacters = ({URLCharacter}*) -URLEndCharacter = ([\/\$]|{Letter}|{Digit}) -URL = (((https?|f(tp|ile))"://"|"www.")({URLCharacters}{URLEndCharacter})?) - - -%state MLC -%state MLC2 -%state COMPILER_DIRECTIVE -%state COMPILER_DIRECTIVE2 -%state EOL_COMMENT - -%% - - { - - /* Keywords */ - "array" | - "as" | - "at" | - "asm" | - "begin" | - "case" | - "class" | - "const" | - "constructor" | - "destructor" | - "dispinterface" | - "div" | - "do" | - "downto" | - "else" | - "end" | - "except" | - "exports" | - "file" | - "final" | - "finalization" | - "finally" | - "for" | - "function" | - "goto" | - "if" | - "implementation" | - "in" | - "inherited" | - "initialization" | - "inline" | - "interface" | - "is" | - "label" | - "mod" | - "not" | - "object" | - "of" | - "on" | - "or" | - "out" | - "packed" | - "procedure" | - "program" | - "property" | - "raise" | - "record" | - "repeat" | - "resourcestring" | - "set" | - "sealed" | - "shl" | - "shr" | - "static" | - "string" | - "then" | - "threadvar" | - "to" | - "try" | - "type" | - "unit" | - "unsafe" | - "until" | - "uses" | - "var" | - "while" | - "with" | - "xor" { addToken(Token.RESERVED_WORD); } - - /* Directives. */ - "absolute" | - "abstract" | - "assembler" | - "automated" | - "cdecl" | - "contains" | - "default" | - "deprecated" | - "dispid" | - "dynamic" | - "export" | - "external" | - "far" | - "forward" | - "implements" | - "index" | - "library" | - "local" | - "message" | - "name" | - "namespaces" | - "near" | - "nil" | - "nodefault" | - "overload" | - "override" | - "package" | - "pascal" | - "platform" | - "private" | - "protected" | - "public" | - "published" | - "read" | - "readonly" | - "register" | - "reintroduce" | - "requires" | - "resident" | - "safecall" | - "self" | - "stdcall" | - "stored" | - "varargs" | - "virtual" | - "write" | - "writeonly" { addToken(Token.FUNCTION); } - - /* Data types. */ - "shortint" | - "byte" | - "char" | - "smallint" | - "integer" | - "word" | - "longint" | - "cardinal" | - "boolean" | - "bytebool" | - "wordbool" | - "longbool" | - "real" | - "single" | - "double" | - "extended" | - "comp" | - "currency" | - "pointer" { addToken(Token.DATA_TYPE); } - - {BooleanLiteral} { addToken(Token.LITERAL_BOOLEAN); } - - {LineTerminator} { addNullToken(); return firstToken; } - - {Identifier} { addToken(Token.IDENTIFIER); } - - {WhiteSpace}+ { addToken(Token.WHITESPACE); } - - /* String/Character literals. */ - {StringLiteral} { addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); } - {UnclosedStringLiteral} { addToken(Token.ERROR_STRING_DOUBLE); addNullToken(); return firstToken; } - {EscapeSequence} { addToken(Token.PREPROCESSOR); } - - /* Comment literals. */ - {CompilerDirective1Begin} {start = zzMarkedPos-2; yybegin(COMPILER_DIRECTIVE); } - {CompilerDirective2Begin} {start = zzMarkedPos-3; yybegin(COMPILER_DIRECTIVE2); } - {MLCBegin} { start = zzMarkedPos-1; yybegin(MLC); } - {MLC2Begin} { start = zzMarkedPos-2; yybegin(MLC2); } - {LineCommentBegin} { start = zzMarkedPos-2; yybegin(EOL_COMMENT); } - - {Separator} { addToken(Token.SEPARATOR); } - {Separator2} { addToken(Token.IDENTIFIER); } - {Operator} { addToken(Token.OPERATOR); } - - {IntegerLiteral} { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); } - {HexLiteral} { addToken(Token.LITERAL_NUMBER_HEXADECIMAL); } - {FloatLiteral} { addToken(Token.LITERAL_NUMBER_FLOAT); } - {ErrorNumberFormat} { addToken(Token.ERROR_NUMBER_FORMAT); } - - {ErrorIdentifier} { addToken(Token.ERROR_IDENTIFIER); } - - /* Ended with a line not in a string or comment. */ - <> { addNullToken(); return firstToken; } - - /* Catch any other (unhandled) characters. */ - . { addToken(Token.IDENTIFIER); } - -} - - - { - - [^hwf\n\}]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_MULTILINE); start = zzMarkedPos; } - [hwf] {} - - \n { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; } - {MLCEnd} { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.COMMENT_MULTILINE); } - <> { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; } - -} - - - { - - [^hwf\n\*]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_MULTILINE); start = zzMarkedPos; } - [hwf] {} - - \n { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_MLC2); return firstToken; } - {MLC2End} { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); } - \* {} - <> { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_MLC2); return firstToken; } - -} - - - { - [^\n\}]+ {} - \n { addToken(start,zzStartRead-1, Token.PREPROCESSOR); addEndToken(INTERNAL_COMPILER_DIRECTIVE); return firstToken; } - {MLCEnd} { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.PREPROCESSOR); } - <> { addToken(start,zzStartRead-1, Token.PREPROCESSOR); addEndToken(INTERNAL_COMPILER_DIRECTIVE); return firstToken; } -} - - - { - [^\n\*]+ {} - \n { addToken(start,zzStartRead-1, Token.PREPROCESSOR); addEndToken(INTERNAL_COMPILER_DIRECTIVE2); return firstToken; } - {MLC2End} { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.PREPROCESSOR); } - \* {} - <> { addToken(start,zzStartRead-1, Token.PREPROCESSOR); addEndToken(INTERNAL_COMPILER_DIRECTIVE2); return firstToken; } -} - - - - { - [^hwf\n]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_EOL); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_EOL); start = zzMarkedPos; } - [hwf] {} - \n { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; } - <> { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; } -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/DelphiTokenMaker.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/DelphiTokenMaker.java deleted file mode 100644 index 0394554..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/DelphiTokenMaker.java +++ /dev/null @@ -1,1629 +0,0 @@ -/* The following code was generated by JFlex 1.4.1 on 8/19/09 10:23 AM */ - -/* - * 7/28/2009 - * - * DelphiTokenMaker.java - Scanner for the Delphi programming language. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * Scanner for the Delphi programming language.

- * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated DelphiTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.5 - * - */ - -public class DelphiTokenMaker extends AbstractJFlexTokenMaker { - - /** This character denotes the end of file */ - public static final int YYEOF = -1; - - /** lexical states */ - public static final int COMPILER_DIRECTIVE = 3; - public static final int EOL_COMMENT = 5; - public static final int YYINITIAL = 0; - public static final int COMPILER_DIRECTIVE2 = 4; - public static final int MLC = 1; - public static final int MLC2 = 2; - - /** - * Translates characters to character classes - */ - private static final String ZZ_CMAP_PACKED = - "\11\0\1\13\1\12\1\0\1\13\1\7\22\0\1\13\1\42\1\7"+ - "\1\10\1\11\1\42\1\42\1\14\1\17\1\21\1\20\1\27\1\42"+ - "\1\27\1\30\1\22\1\4\7\6\2\3\1\45\1\42\1\44\1\46"+ - "\1\44\1\42\1\43\3\5\1\25\1\26\1\25\5\1\1\24\13\1"+ - "\1\23\2\1\1\41\1\0\1\41\1\44\1\2\1\0\1\36\1\55"+ - "\1\60\1\62\1\34\1\35\1\56\1\47\1\51\1\66\1\67\1\37"+ - "\1\54\1\57\1\61\1\50\1\70\1\32\1\40\1\31\1\33\1\63"+ - "\1\52\1\64\1\53\1\65\1\15\1\7\1\16\1\42\uff81\0"; - - /** - * Translates characters to character classes - */ - private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); - - /** - * Translates DFA states to action switch labels. - */ - private static final int [] ZZ_ACTION = zzUnpackAction(); - - private static final String ZZ_ACTION_PACKED_0 = - "\6\0\1\1\1\2\2\3\1\2\1\4\1\5\1\6"+ - "\1\7\1\10\1\11\1\12\1\11\1\12\11\2\1\12"+ - "\14\2\1\13\1\14\1\15\4\13\1\16\2\13\1\17"+ - "\1\20\1\13\1\21\2\13\1\22\3\13\1\23\1\3"+ - "\1\24\1\23\1\24\1\23\1\25\1\23\1\26\1\27"+ - "\1\30\1\31\3\2\1\32\15\2\1\32\20\2\1\32"+ - "\31\2\1\32\3\2\4\0\1\33\1\34\4\0\1\24"+ - "\1\0\2\25\1\35\22\2\1\36\2\2\1\32\73\2"+ - "\1\32\1\2\10\0\1\37\1\2\1\40\1\36\56\2"+ - "\1\40\2\2\1\36\16\2\2\0\1\41\2\0\1\42"+ - "\13\2\1\32\40\2\1\32\10\2\4\0\10\2\1\36"+ - "\65\2"; - - private static int [] zzUnpackAction() { - int [] result = new int[437]; - int offset = 0; - offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAction(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /** - * Translates a state to a row index in the transition table - */ - private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); - - private static final String ZZ_ROWMAP_PACKED_0 = - "\0\0\0\71\0\162\0\253\0\344\0\u011d\0\u0156\0\u018f"+ - "\0\u01c8\0\u0201\0\u023a\0\u0273\0\u023a\0\u02ac\0\u02e5\0\u031e"+ - "\0\u0357\0\u023a\0\u023a\0\u0390\0\u03c9\0\u0402\0\u043b\0\u0474"+ - "\0\u04ad\0\u04e6\0\u051f\0\u0558\0\u0591\0\u0156\0\u05ca\0\u0603"+ - "\0\u063c\0\u0675\0\u06ae\0\u06e7\0\u0720\0\u0759\0\u0792\0\u07cb"+ - "\0\u0804\0\u083d\0\u0876\0\u023a\0\u023a\0\u08af\0\u08e8\0\u0921"+ - "\0\u095a\0\u023a\0\u0993\0\u09cc\0\u023a\0\u023a\0\u0a05\0\u023a"+ - "\0\u0a3e\0\u0a77\0\u023a\0\u0ab0\0\u0ae9\0\u0b22\0\u0b5b\0\u0b5b"+ - "\0\u0b5b\0\u0b94\0\u0bcd\0\u0c06\0\u0c3f\0\u0c78\0\u023a\0\u023a"+ - "\0\u0cb1\0\u023a\0\u0cea\0\u0d23\0\u0d5c\0\u018f\0\u0d95\0\u0dce"+ - "\0\u0e07\0\u0e40\0\u0e79\0\u0eb2\0\u0eeb\0\u0f24\0\u0f5d\0\u0f96"+ - "\0\u0fcf\0\u1008\0\u1041\0\u107a\0\u10b3\0\u10ec\0\u1125\0\u115e"+ - "\0\u1197\0\u11d0\0\u1209\0\u1242\0\u127b\0\u12b4\0\u12ed\0\u1326"+ - "\0\u135f\0\u1398\0\u13d1\0\u140a\0\u1443\0\u147c\0\u14b5\0\u14ee"+ - "\0\u1527\0\u1560\0\u1599\0\u15d2\0\u160b\0\u1644\0\u167d\0\u16b6"+ - "\0\u16ef\0\u1728\0\u1761\0\u179a\0\u17d3\0\u180c\0\u1845\0\u187e"+ - "\0\u18b7\0\u18f0\0\u1929\0\u1962\0\u199b\0\u19d4\0\u1a0d\0\u1a46"+ - "\0\u1a7f\0\u1ab8\0\u1af1\0\u1b2a\0\u1b63\0\u1b9c\0\u023a\0\u023a"+ - "\0\u1bd5\0\u1c0e\0\u1c47\0\u1c80\0\u1cb9\0\u1cf2\0\u0b5b\0\u1d2b"+ - "\0\u023a\0\u1d64\0\u1d9d\0\u1dd6\0\u1e0f\0\u1e48\0\u1e81\0\u1eba"+ - "\0\u1ef3\0\u1f2c\0\u1f65\0\u1f9e\0\u1fd7\0\u2010\0\u2049\0\u2082"+ - "\0\u20bb\0\u20f4\0\u212d\0\u018f\0\u2166\0\u219f\0\u21d8\0\u2211"+ - "\0\u224a\0\u2283\0\u22bc\0\u22f5\0\u232e\0\u2367\0\u23a0\0\u23d9"+ - "\0\u2412\0\u244b\0\u2484\0\u24bd\0\u24f6\0\u252f\0\u2568\0\u25a1"+ - "\0\u25da\0\u2613\0\u264c\0\u2685\0\u26be\0\u26f7\0\u2730\0\u2769"+ - "\0\u27a2\0\u27db\0\u2814\0\u284d\0\u2886\0\u28bf\0\u28f8\0\u2931"+ - "\0\u296a\0\u29a3\0\u29dc\0\u2a15\0\u2a4e\0\u2a87\0\u2ac0\0\u2af9"+ - "\0\u2b32\0\u2b6b\0\u2ba4\0\u2bdd\0\u2c16\0\u2c4f\0\u2c88\0\u2cc1"+ - "\0\u2cfa\0\u2d33\0\u2d6c\0\u2da5\0\u2dde\0\u2e17\0\u2e50\0\u2e89"+ - "\0\u2ec2\0\u2efb\0\u2f34\0\u2f6d\0\u2fa6\0\u2fdf\0\u3018\0\u3051"+ - "\0\u308a\0\u30c3\0\u30fc\0\u3135\0\u018f\0\u316e\0\u018f\0\u31a7"+ - "\0\u31e0\0\u3219\0\u3252\0\u328b\0\u32c4\0\u32fd\0\u3336\0\u336f"+ - "\0\u33a8\0\u33e1\0\u341a\0\u3453\0\u348c\0\u34c5\0\u34fe\0\u3537"+ - "\0\u3570\0\u35a9\0\u35e2\0\u361b\0\u3654\0\u368d\0\u36c6\0\u36ff"+ - "\0\u3738\0\u3771\0\u37aa\0\u37e3\0\u381c\0\u3855\0\u388e\0\u38c7"+ - "\0\u3900\0\u3939\0\u3972\0\u39ab\0\u39e4\0\u3a1d\0\u3a56\0\u3a8f"+ - "\0\u3ac8\0\u3b01\0\u3b3a\0\u3b73\0\u3bac\0\u3be5\0\u3c1e\0\u3c57"+ - "\0\u3c90\0\u3cc9\0\u3d02\0\u3d3b\0\u3d74\0\u3dad\0\u3de6\0\u3e1f"+ - "\0\u3e58\0\u3e91\0\u3eca\0\u3f03\0\u3f3c\0\u3f75\0\u3fae\0\u3fe7"+ - "\0\u4020\0\u4059\0\u4092\0\u40cb\0\u4104\0\u413d\0\u4176\0\u41af"+ - "\0\u41e8\0\u4221\0\u425a\0\u4293\0\u42cc\0\u4305\0\u433e\0\u4377"+ - "\0\u43b0\0\u43e9\0\u4422\0\u445b\0\u4494\0\u44cd\0\u4506\0\u453f"+ - "\0\u4578\0\u45b1\0\u45ea\0\u4623\0\u465c\0\u4695\0\u46ce\0\u4707"+ - "\0\u4740\0\u4779\0\u47b2\0\u47eb\0\u4824\0\u485d\0\u4896\0\u48cf"+ - "\0\u4908\0\u4941\0\u497a\0\u49b3\0\u49ec\0\u4a25\0\u4a5e\0\u4a97"+ - "\0\u4ad0\0\u4b09\0\u3eca\0\u4b42\0\u4b7b\0\u4bb4\0\u4bed\0\u4c26"+ - "\0\u4c5f\0\u4c98\0\u4cd1\0\u4d0a\0\u4092\0\u4d43\0\u413d\0\u4d7c"+ - "\0\u4db5\0\u4dee\0\u4e27\0\u4e60\0\u4e99\0\u4ed2\0\u4f0b\0\u1fd7"+ - "\0\u4f44\0\u4f7d\0\u4fb6\0\u4fef\0\u5028\0\u5061\0\u509a\0\u50d3"+ - "\0\u510c\0\u5145\0\u517e\0\u51b7\0\u51f0\0\u5229\0\u5262\0\u529b"+ - "\0\u52d4\0\u530d\0\u5346\0\u537f\0\u53b8\0\u53f1\0\u542a\0\u5463"+ - "\0\u549c\0\u54d5\0\u550e\0\u5547\0\u5580\0\u55b9\0\u55f2\0\u562b"+ - "\0\u5664\0\u569d\0\u56d6\0\u570f\0\u5748\0\u5781\0\u57ba\0\u57f3"+ - "\0\u582c\0\u5865\0\u589e\0\u58d7\0\u5910\0\u5949\0\u5982\0\u59bb"+ - "\0\u59f4\0\u5a2d\0\u5a66\0\u5a9f\0\u5ad8"; - - private static int [] zzUnpackRowMap() { - int [] result = new int[437]; - int offset = 0; - offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackRowMap(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int high = packed.charAt(i++) << 16; - result[j++] = high | packed.charAt(i++); - } - return j; - } - - /** - * The transition table of the DFA - */ - private static final int [] ZZ_TRANS = zzUnpackTrans(); - - private static final String ZZ_TRANS_PACKED_0 = - "\1\7\2\10\1\11\1\12\1\10\1\11\1\13\1\14"+ - "\1\10\1\15\1\16\1\17\1\20\1\13\1\21\1\22"+ - "\1\23\1\24\4\10\1\22\1\25\1\26\1\27\1\30"+ - "\1\31\1\32\1\33\1\34\1\35\1\23\1\13\1\36"+ - "\3\22\1\10\1\37\1\40\1\41\1\10\1\42\1\43"+ - "\1\44\1\45\1\46\1\47\1\50\1\51\1\52\4\10"+ - "\12\53\1\54\3\53\1\55\16\53\1\56\11\53\1\57"+ - "\2\53\1\60\16\53\12\61\1\62\5\61\1\63\14\61"+ - "\1\56\11\61\1\57\2\61\1\60\16\61\12\64\1\65"+ - "\3\64\1\66\52\64\12\67\1\70\5\67\1\71\50\67"+ - "\12\72\1\73\22\72\1\74\11\72\1\75\2\72\1\76"+ - "\16\72\7\7\1\0\2\7\11\0\4\7\2\0\10\7"+ - "\2\0\1\7\3\0\23\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\10\10\2\0\1\7\3\0\22\10"+ - "\3\77\2\11\1\77\1\11\1\0\2\77\11\0\1\77"+ - "\1\100\1\101\1\102\1\0\1\103\3\77\1\102\1\101"+ - "\1\77\1\100\1\77\2\0\1\77\3\0\13\77\1\101"+ - "\11\77\1\104\1\105\1\77\1\105\1\0\2\77\11\0"+ - "\1\106\1\100\1\101\1\102\1\0\1\103\3\77\1\102"+ - "\1\101\1\77\1\100\1\77\2\0\1\77\3\0\13\77"+ - "\1\101\1\77\1\106\4\77\71\0\3\7\2\14\1\7"+ - "\1\14\1\0\2\7\11\0\4\7\2\0\10\7\2\0"+ - "\1\7\3\0\22\7\13\0\1\16\55\0\14\17\1\107"+ - "\54\17\11\0\1\110\77\0\1\111\72\0\1\112\51\0"+ - "\2\103\1\0\1\103\62\0\1\7\6\10\1\0\1\7"+ - "\1\10\11\0\4\10\2\0\1\10\1\113\6\10\2\0"+ - "\1\7\3\0\1\114\3\10\1\115\5\10\1\116\7\10"+ - "\1\7\6\10\1\0\1\7\1\10\11\0\4\10\2\0"+ - "\3\10\1\117\1\10\1\120\2\10\2\0\1\7\3\0"+ - "\22\10\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\7\10\1\121\2\0\1\7\3\0\10\10\1\122"+ - "\11\10\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\6\10\1\123\1\10\2\0\1\7\3\0\10\10"+ - "\1\124\4\10\1\125\4\10\1\7\6\10\1\0\1\7"+ - "\1\10\11\0\4\10\2\0\2\10\1\126\2\10\1\127"+ - "\2\10\2\0\1\7\3\0\2\10\1\130\7\10\1\131"+ - "\7\10\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\1\116\1\132\1\133\4\10\1\134\2\0\1\7"+ - "\3\0\6\10\1\135\13\10\1\7\6\10\1\0\1\7"+ - "\1\10\11\0\4\10\2\0\5\10\1\136\2\10\2\0"+ - "\1\7\3\0\2\10\1\137\7\10\1\140\7\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\1\141"+ - "\2\10\1\142\1\10\1\143\2\10\2\0\1\7\3\0"+ - "\1\144\1\10\1\145\2\10\1\146\14\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\1\10\1\147"+ - "\1\150\2\10\1\151\1\152\1\10\2\0\1\7\3\0"+ - "\12\10\1\153\7\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\4\10\1\116\2\10\1\116\2\0"+ - "\1\7\3\0\5\10\1\154\2\10\1\155\11\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\1\10"+ - "\1\156\6\10\2\0\1\7\3\0\1\157\1\10\1\160"+ - "\7\10\1\161\7\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\3\10\1\162\4\10\2\0\1\7"+ - "\3\0\12\10\1\124\7\10\1\7\6\10\1\0\1\7"+ - "\1\10\11\0\4\10\2\0\3\10\1\163\4\10\2\0"+ - "\1\7\3\0\4\10\1\164\5\10\1\165\7\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\10\10"+ - "\2\0\1\7\3\0\12\10\1\166\7\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\3\10\1\167"+ - "\1\10\1\170\2\10\2\0\1\7\3\0\2\10\1\171"+ - "\7\10\1\172\7\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\2\10\1\173\2\10\1\174\1\175"+ - "\1\10\2\0\1\7\3\0\1\176\11\10\1\177\1\200"+ - "\6\10\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\1\10\1\116\1\201\1\10\1\116\3\10\2\0"+ - "\1\7\3\0\6\10\1\202\1\10\1\116\3\10\1\203"+ - "\5\10\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\3\10\1\204\4\10\2\0\1\7\3\0\2\10"+ - "\1\205\1\10\1\206\5\10\1\207\7\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\5\10\1\210"+ - "\2\10\2\0\1\7\3\0\2\10\1\211\17\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\10\10"+ - "\2\0\1\7\3\0\12\10\1\212\7\10\12\53\1\0"+ - "\3\53\1\0\16\53\1\0\11\53\1\0\2\53\1\0"+ - "\16\53\31\0\1\213\17\0\1\214\50\0\1\215\111\0"+ - "\1\216\16\0\12\61\1\0\5\61\1\0\14\61\1\0"+ - "\11\61\1\0\2\61\1\0\16\61\21\0\1\217\47\0"+ - "\12\64\1\0\3\64\1\0\52\64\12\67\1\0\5\67"+ - "\1\0\50\67\21\0\1\220\47\0\12\72\1\0\22\72"+ - "\1\0\11\72\1\0\2\72\1\0\16\72\31\0\1\221"+ - "\17\0\1\222\50\0\1\223\111\0\1\224\16\0\7\77"+ - "\1\0\2\77\11\0\4\77\2\0\10\77\2\0\1\77"+ - "\3\0\25\77\2\225\1\77\1\225\1\0\2\77\11\0"+ - "\4\77\1\226\1\0\10\77\2\0\1\77\3\0\25\77"+ - "\2\103\1\77\1\103\1\0\2\77\11\0\2\77\1\101"+ - "\1\102\2\0\3\77\1\102\1\101\3\77\2\0\1\77"+ - "\3\0\13\77\1\101\11\77\2\104\1\77\1\104\1\0"+ - "\2\77\11\0\2\77\1\101\1\102\1\0\1\103\3\77"+ - "\1\102\1\101\3\77\2\0\1\77\3\0\13\77\1\101"+ - "\11\77\1\104\1\105\1\77\1\105\1\0\2\77\11\0"+ - "\1\77\1\227\1\101\1\102\1\0\1\103\3\77\1\102"+ - "\1\101\1\77\1\227\1\77\2\0\1\77\3\0\13\77"+ - "\1\101\11\77\4\230\1\0\2\77\11\0\2\77\2\230"+ - "\2\0\3\77\3\230\2\77\2\0\1\77\3\0\6\77"+ - "\1\230\2\77\1\230\1\77\1\230\6\77\11\0\1\231"+ - "\57\0\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\2\10\1\232\5\10\2\0\1\7\3\0\4\10"+ - "\1\116\15\10\1\7\6\10\1\0\1\7\1\10\11\0"+ - "\4\10\2\0\1\10\1\233\1\10\1\234\4\10\2\0"+ - "\1\7\3\0\22\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\10\10\2\0\1\7\3\0\1\10"+ - "\1\235\20\10\1\7\6\10\1\0\1\7\1\10\11\0"+ - "\4\10\2\0\5\10\1\236\1\10\1\237\2\0\1\7"+ - "\3\0\1\10\1\240\1\241\4\10\1\242\1\10\1\243"+ - "\7\10\1\244\1\7\6\10\1\0\1\7\1\10\11\0"+ - "\4\10\2\0\10\10\2\0\1\7\3\0\2\10\1\123"+ - "\17\10\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\3\10\1\245\4\10\2\0\1\7\3\0\22\10"+ - "\1\7\6\10\1\0\1\7\1\10\11\0\4\10\2\0"+ - "\1\246\6\10\1\247\2\0\1\7\3\0\2\10\1\201"+ - "\17\10\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\7\10\1\235\2\0\1\7\3\0\22\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\10\10"+ - "\2\0\1\7\3\0\13\10\1\116\6\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\1\250\7\10"+ - "\2\0\1\7\3\0\1\10\1\251\7\10\1\252\10\10"+ - "\1\7\6\10\1\0\1\7\1\10\11\0\4\10\2\0"+ - "\10\10\2\0\1\7\3\0\10\10\1\253\11\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\1\10"+ - "\1\254\4\10\1\255\1\10\2\0\1\7\3\0\22\10"+ - "\1\7\6\10\1\0\1\7\1\10\11\0\4\10\2\0"+ - "\6\10\1\235\1\10\2\0\1\7\3\0\10\10\1\256"+ - "\11\10\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\1\10\1\257\6\10\2\0\1\7\3\0\22\10"+ - "\1\7\6\10\1\0\1\7\1\10\11\0\4\10\2\0"+ - "\1\10\1\260\6\10\2\0\1\7\3\0\22\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\1\261"+ - "\7\10\2\0\1\7\3\0\22\10\1\7\6\10\1\0"+ - "\1\7\1\10\11\0\4\10\2\0\7\10\1\262\2\0"+ - "\1\7\3\0\5\10\1\116\14\10\1\7\6\10\1\0"+ - "\1\7\1\10\11\0\4\10\2\0\7\10\1\263\2\0"+ - "\1\7\3\0\22\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\10\10\2\0\1\7\3\0\6\10"+ - "\1\264\13\10\1\7\6\10\1\0\1\7\1\10\11\0"+ - "\4\10\2\0\10\10\2\0\1\7\3\0\6\10\1\265"+ - "\13\10\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\10\10\2\0\1\7\3\0\10\10\1\266\1\267"+ - "\10\10\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\1\10\1\270\3\10\1\271\2\10\2\0\1\7"+ - "\3\0\12\10\1\272\1\273\6\10\1\7\6\10\1\0"+ - "\1\7\1\10\11\0\4\10\2\0\1\116\4\10\1\274"+ - "\1\275\1\10\2\0\1\7\3\0\22\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\4\10\1\276"+ - "\3\10\2\0\1\7\3\0\22\10\1\7\6\10\1\0"+ - "\1\7\1\10\11\0\4\10\2\0\1\10\1\116\4\10"+ - "\1\116\1\10\2\0\1\7\3\0\12\10\1\277\7\10"+ - "\1\7\6\10\1\0\1\7\1\10\11\0\4\10\2\0"+ - "\10\10\2\0\1\7\3\0\10\10\1\300\11\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\5\10"+ - "\1\301\2\10\2\0\1\7\3\0\22\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\10\10\2\0"+ - "\1\7\3\0\2\10\1\302\7\10\1\303\7\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\10\10"+ - "\2\0\1\7\3\0\6\10\1\304\13\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\7\10\1\305"+ - "\2\0\1\7\3\0\11\10\1\306\10\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\5\10\1\307"+ - "\2\10\2\0\1\7\3\0\22\10\1\7\6\10\1\0"+ - "\1\7\1\10\11\0\4\10\2\0\10\10\2\0\1\7"+ - "\3\0\2\10\1\310\17\10\1\7\6\10\1\0\1\7"+ - "\1\10\11\0\4\10\2\0\10\10\2\0\1\7\3\0"+ - "\1\10\1\311\20\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\1\312\5\10\1\313\1\10\2\0"+ - "\1\7\3\0\1\314\1\10\1\315\10\10\1\316\6\10"+ - "\1\7\6\10\1\0\1\7\1\10\11\0\4\10\2\0"+ - "\10\10\2\0\1\7\3\0\2\10\1\317\17\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\10\10"+ - "\2\0\1\7\3\0\2\10\1\320\17\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\1\321\7\10"+ - "\2\0\1\7\3\0\22\10\1\7\6\10\1\0\1\7"+ - "\1\10\11\0\4\10\2\0\1\10\1\322\6\10\2\0"+ - "\1\7\3\0\22\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\7\10\1\323\2\0\1\7\3\0"+ - "\22\10\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\10\10\2\0\1\7\3\0\7\10\1\324\12\10"+ - "\1\7\6\10\1\0\1\7\1\10\11\0\4\10\2\0"+ - "\1\325\7\10\2\0\1\7\3\0\22\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\10\10\2\0"+ - "\1\7\3\0\12\10\1\326\7\10\1\7\6\10\1\0"+ - "\1\7\1\10\11\0\4\10\2\0\1\327\7\10\2\0"+ - "\1\7\3\0\22\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\5\10\1\330\2\10\2\0\1\7"+ - "\3\0\22\10\1\7\6\10\1\0\1\7\1\10\11\0"+ - "\4\10\2\0\10\10\2\0\1\7\3\0\5\10\1\331"+ - "\14\10\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\6\10\1\254\1\10\2\0\1\7\3\0\22\10"+ - "\1\7\6\10\1\0\1\7\1\10\11\0\4\10\2\0"+ - "\1\116\7\10\2\0\1\7\3\0\13\10\1\332\6\10"+ - "\1\7\6\10\1\0\1\7\1\10\11\0\4\10\2\0"+ - "\1\10\1\333\6\10\2\0\1\7\3\0\22\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\1\10"+ - "\1\334\5\10\1\235\2\0\1\7\3\0\22\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\5\10"+ - "\1\335\2\10\2\0\1\7\3\0\22\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\5\10\1\336"+ - "\2\10\2\0\1\7\3\0\22\10\1\7\6\10\1\0"+ - "\1\7\1\10\11\0\4\10\2\0\10\10\2\0\1\7"+ - "\3\0\5\10\1\337\2\10\1\340\11\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\3\10\1\341"+ - "\4\10\2\0\1\7\3\0\22\10\1\7\6\10\1\0"+ - "\1\7\1\10\11\0\4\10\2\0\1\116\7\10\2\0"+ - "\1\7\3\0\22\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\10\10\2\0\1\7\3\0\17\10"+ - "\1\342\2\10\1\7\6\10\1\0\1\7\1\10\11\0"+ - "\4\10\2\0\3\10\1\343\4\10\2\0\1\7\3\0"+ - "\22\10\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\4\10\1\344\2\10\1\345\2\0\1\7\3\0"+ - "\1\10\1\346\20\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\7\10\1\347\2\0\1\7\3\0"+ - "\14\10\1\116\5\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\10\10\2\0\1\7\3\0\10\10"+ - "\1\350\11\10\1\7\6\10\1\0\1\7\1\10\11\0"+ - "\4\10\2\0\2\10\1\351\5\10\2\0\1\7\3\0"+ - "\3\10\1\352\16\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\1\10\1\353\6\10\2\0\1\7"+ - "\3\0\22\10\1\7\6\10\1\0\1\7\1\10\11\0"+ - "\4\10\2\0\1\10\1\354\6\10\2\0\1\7\3\0"+ - "\22\10\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\1\10\1\116\6\10\2\0\1\7\3\0\22\10"+ - "\50\0\1\355\57\0\1\356\62\0\1\357\111\0\1\360"+ - "\66\0\1\361\57\0\1\362\62\0\1\363\111\0\1\364"+ - "\16\0\3\77\2\225\1\77\1\225\1\0\2\77\11\0"+ - "\2\77\1\101\1\77\2\0\4\77\1\101\3\77\2\0"+ - "\1\77\3\0\13\77\1\101\6\77\3\0\2\225\1\0"+ - "\1\225\62\0\3\77\4\230\1\0\2\77\11\0\1\77"+ - "\1\227\2\230\2\0\3\77\3\230\1\227\1\77\2\0"+ - "\1\77\3\0\6\77\1\230\2\77\1\230\1\77\1\230"+ - "\6\77\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\3\10\1\365\4\10\2\0\1\7\3\0\22\10"+ - "\1\7\6\10\1\0\1\7\1\10\11\0\4\10\2\0"+ - "\3\10\1\366\4\10\2\0\1\7\3\0\22\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\10\10"+ - "\2\0\1\7\3\0\10\10\1\116\11\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\3\10\1\116"+ - "\4\10\2\0\1\7\3\0\22\10\1\7\6\10\1\0"+ - "\1\7\1\10\11\0\4\10\2\0\6\10\1\367\1\10"+ - "\2\0\1\7\3\0\13\10\1\370\6\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\10\10\2\0"+ - "\1\7\3\0\2\10\1\371\7\10\1\372\7\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\3\10"+ - "\1\373\4\10\2\0\1\7\3\0\22\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\10\10\2\0"+ - "\1\7\3\0\10\10\1\374\11\10\1\7\6\10\1\0"+ - "\1\7\1\10\11\0\4\10\2\0\10\10\2\0\1\7"+ - "\3\0\2\10\1\375\17\10\1\7\6\10\1\0\1\7"+ - "\1\10\11\0\4\10\2\0\10\10\2\0\1\7\3\0"+ - "\12\10\1\376\7\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\2\10\1\377\5\10\2\0\1\7"+ - "\3\0\22\10\1\7\6\10\1\0\1\7\1\10\11\0"+ - "\4\10\2\0\7\10\1\116\2\0\1\7\3\0\22\10"+ - "\1\7\6\10\1\0\1\7\1\10\11\0\4\10\2\0"+ - "\10\10\2\0\1\7\3\0\2\10\1\u0100\17\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\5\10"+ - "\1\u0101\2\10\2\0\1\7\3\0\22\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\3\10\1\u0102"+ - "\4\10\2\0\1\7\3\0\22\10\1\7\6\10\1\0"+ - "\1\7\1\10\11\0\4\10\2\0\10\10\2\0\1\7"+ - "\3\0\12\10\1\u0103\7\10\1\7\6\10\1\0\1\7"+ - "\1\10\11\0\4\10\2\0\3\10\1\u0104\4\10\2\0"+ - "\1\7\3\0\22\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\10\10\2\0\1\7\3\0\11\10"+ - "\1\u0105\10\10\1\7\6\10\1\0\1\7\1\10\11\0"+ - "\4\10\2\0\7\10\1\232\2\0\1\7\3\0\22\10"+ - "\1\7\6\10\1\0\1\7\1\10\11\0\4\10\2\0"+ - "\5\10\1\u0106\2\10\2\0\1\7\3\0\22\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\10\10"+ - "\2\0\1\7\3\0\3\10\1\u0107\16\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\5\10\1\u0108"+ - "\2\10\2\0\1\7\3\0\22\10\1\7\6\10\1\0"+ - "\1\7\1\10\11\0\4\10\2\0\10\10\2\0\1\7"+ - "\3\0\12\10\1\u0109\7\10\1\7\6\10\1\0\1\7"+ - "\1\10\11\0\4\10\2\0\3\10\1\u010a\4\10\2\0"+ - "\1\7\3\0\22\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\1\u010b\7\10\2\0\1\7\3\0"+ - "\12\10\1\u010c\7\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\3\10\1\u0100\4\10\2\0\1\7"+ - "\3\0\22\10\1\7\6\10\1\0\1\7\1\10\11\0"+ - "\4\10\2\0\1\10\1\u010d\6\10\2\0\1\7\3\0"+ - "\22\10\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\10\10\2\0\1\7\3\0\7\10\1\u010e\12\10"+ - "\1\7\6\10\1\0\1\7\1\10\11\0\4\10\2\0"+ - "\5\10\1\171\2\10\2\0\1\7\3\0\22\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\10\10"+ - "\2\0\1\7\3\0\2\10\1\u010f\17\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\1\u0110\7\10"+ - "\2\0\1\7\3\0\22\10\1\7\6\10\1\0\1\7"+ - "\1\10\11\0\4\10\2\0\1\10\1\u0111\6\10\2\0"+ - "\1\7\3\0\22\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\10\10\2\0\1\7\3\0\11\10"+ - "\1\u0112\10\10\1\7\6\10\1\0\1\7\1\10\11\0"+ - "\4\10\2\0\6\10\1\u0113\1\10\2\0\1\7\3\0"+ - "\22\10\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\4\10\1\254\3\10\2\0\1\7\3\0\22\10"+ - "\1\7\6\10\1\0\1\7\1\10\11\0\4\10\2\0"+ - "\3\10\1\273\4\10\2\0\1\7\3\0\22\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\1\10"+ - "\1\u0114\6\10\2\0\1\7\3\0\22\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\10\10\2\0"+ - "\1\7\3\0\7\10\1\u0115\12\10\1\7\6\10\1\0"+ - "\1\7\1\10\11\0\4\10\2\0\6\10\1\u0116\1\10"+ - "\2\0\1\7\3\0\22\10\1\7\6\10\1\0\1\7"+ - "\1\10\11\0\4\10\2\0\10\10\2\0\1\7\3\0"+ - "\14\10\1\u0117\5\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\1\u0118\7\10\2\0\1\7\3\0"+ - "\1\10\1\u0119\5\10\1\u011a\1\10\1\u011b\10\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\6\10"+ - "\1\u011c\1\10\2\0\1\7\3\0\22\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\10\10\2\0"+ - "\1\7\3\0\11\10\1\267\10\10\1\7\6\10\1\0"+ - "\1\7\1\10\11\0\4\10\2\0\10\10\2\0\1\7"+ - "\3\0\20\10\1\u011d\1\10\1\7\6\10\1\0\1\7"+ - "\1\10\11\0\4\10\2\0\1\u011e\7\10\2\0\1\7"+ - "\3\0\22\10\1\7\6\10\1\0\1\7\1\10\11\0"+ - "\4\10\2\0\10\10\2\0\1\7\3\0\10\10\1\u011f"+ - "\11\10\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\6\10\1\u0120\1\10\2\0\1\7\3\0\22\10"+ - "\1\7\6\10\1\0\1\7\1\10\11\0\4\10\2\0"+ - "\3\10\1\u0121\4\10\2\0\1\7\3\0\22\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\10\10"+ - "\2\0\1\7\3\0\2\10\1\u0122\17\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\3\10\1\u0123"+ - "\4\10\2\0\1\7\3\0\22\10\1\7\6\10\1\0"+ - "\1\7\1\10\11\0\4\10\2\0\1\u0124\7\10\2\0"+ - "\1\7\3\0\22\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\3\10\1\u0125\4\10\2\0\1\7"+ - "\3\0\22\10\1\7\6\10\1\0\1\7\1\10\11\0"+ - "\4\10\2\0\1\u0126\7\10\2\0\1\7\3\0\22\10"+ - "\1\7\6\10\1\0\1\7\1\10\11\0\4\10\2\0"+ - "\6\10\1\235\1\10\2\0\1\7\3\0\22\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\10\10"+ - "\2\0\1\7\3\0\1\116\21\10\1\7\6\10\1\0"+ - "\1\7\1\10\11\0\4\10\2\0\10\10\2\0\1\7"+ - "\3\0\13\10\1\u0127\6\10\1\7\6\10\1\0\1\7"+ - "\1\10\11\0\4\10\2\0\7\10\1\u0128\2\0\1\7"+ - "\3\0\22\10\1\7\6\10\1\0\1\7\1\10\11\0"+ - "\4\10\2\0\10\10\2\0\1\7\3\0\2\10\1\234"+ - "\17\10\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\3\10\1\u0127\4\10\2\0\1\7\3\0\22\10"+ - "\1\7\6\10\1\0\1\7\1\10\11\0\4\10\2\0"+ - "\6\10\1\u0129\1\10\2\0\1\7\3\0\22\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\10\10"+ - "\2\0\1\7\3\0\12\10\1\116\7\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\1\10\1\254"+ - "\6\10\2\0\1\7\3\0\22\10\1\7\6\10\1\0"+ - "\1\7\1\10\11\0\4\10\2\0\3\10\1\u012a\4\10"+ - "\2\0\1\7\3\0\22\10\1\7\6\10\1\0\1\7"+ - "\1\10\11\0\4\10\2\0\3\10\1\u012b\4\10\2\0"+ - "\1\7\3\0\22\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\1\10\1\u012c\6\10\2\0\1\7"+ - "\3\0\22\10\1\7\6\10\1\0\1\7\1\10\11\0"+ - "\4\10\2\0\10\10\2\0\1\7\3\0\13\10\1\u012d"+ - "\6\10\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\7\10\1\245\2\0\1\7\3\0\22\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\1\10"+ - "\1\367\6\10\2\0\1\7\3\0\22\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\10\10\2\0"+ - "\1\7\3\0\1\10\1\367\20\10\1\7\6\10\1\0"+ - "\1\7\1\10\11\0\4\10\2\0\1\u012e\6\10\1\u012f"+ - "\2\0\1\7\3\0\22\10\1\7\6\10\1\0\1\7"+ - "\1\10\11\0\4\10\2\0\10\10\2\0\1\7\3\0"+ - "\11\10\1\171\10\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\3\10\1\u0130\4\10\2\0\1\7"+ - "\3\0\22\10\1\7\6\10\1\0\1\7\1\10\11\0"+ - "\4\10\2\0\1\10\1\u0131\6\10\2\0\1\7\3\0"+ - "\22\10\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\5\10\1\u0132\2\10\2\0\1\7\3\0\22\10"+ - "\1\7\6\10\1\0\1\7\1\10\11\0\4\10\2\0"+ - "\1\u0133\7\10\2\0\1\7\3\0\22\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\1\10\1\u0134"+ - "\6\10\2\0\1\7\3\0\22\10\1\7\6\10\1\0"+ - "\1\7\1\10\11\0\4\10\2\0\10\10\2\0\1\7"+ - "\3\0\1\10\1\u0135\20\10\1\7\6\10\1\0\1\7"+ - "\1\10\11\0\4\10\2\0\5\10\1\u0136\2\10\2\0"+ - "\1\7\3\0\22\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\10\10\2\0\1\7\3\0\6\10"+ - "\1\u0115\13\10\1\7\6\10\1\0\1\7\1\10\11\0"+ - "\4\10\2\0\10\10\2\0\1\7\3\0\10\10\1\166"+ - "\11\10\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\5\10\1\u0137\2\10\2\0\1\7\3\0\22\10"+ - "\1\7\6\10\1\0\1\7\1\10\11\0\4\10\2\0"+ - "\1\u0138\7\10\2\0\1\7\3\0\22\10\45\0\1\u0139"+ - "\57\0\1\355\104\0\1\u013a\50\0\1\u013b\105\0\1\u013c"+ - "\57\0\1\361\104\0\1\u013d\50\0\1\u013e\40\0\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\5\10"+ - "\1\u013f\2\10\2\0\1\7\3\0\22\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\10\10\2\0"+ - "\1\7\3\0\12\10\1\u0140\7\10\1\7\6\10\1\0"+ - "\1\7\1\10\11\0\4\10\2\0\10\10\2\0\1\7"+ - "\3\0\13\10\1\u0141\6\10\1\7\6\10\1\0\1\7"+ - "\1\10\11\0\4\10\2\0\2\10\1\u0142\5\10\2\0"+ - "\1\7\3\0\22\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\5\10\1\201\2\10\2\0\1\7"+ - "\3\0\22\10\1\7\6\10\1\0\1\7\1\10\11\0"+ - "\4\10\2\0\1\u0143\7\10\2\0\1\7\3\0\22\10"+ - "\1\7\6\10\1\0\1\7\1\10\11\0\4\10\2\0"+ - "\7\10\1\u0144\2\0\1\7\3\0\22\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\1\10\1\124"+ - "\6\10\2\0\1\7\3\0\22\10\1\7\6\10\1\0"+ - "\1\7\1\10\11\0\4\10\2\0\10\10\2\0\1\7"+ - "\3\0\2\10\1\u0145\17\10\1\7\6\10\1\0\1\7"+ - "\1\10\11\0\4\10\2\0\6\10\1\116\1\10\2\0"+ - "\1\7\3\0\22\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\4\10\1\235\3\10\2\0\1\7"+ - "\3\0\22\10\1\7\6\10\1\0\1\7\1\10\11\0"+ - "\4\10\2\0\1\10\1\u0146\6\10\2\0\1\7\3\0"+ - "\10\10\1\u0147\11\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\1\10\1\u0148\6\10\2\0\1\7"+ - "\3\0\22\10\1\7\6\10\1\0\1\7\1\10\11\0"+ - "\4\10\2\0\10\10\2\0\1\7\3\0\1\10\1\201"+ - "\20\10\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\1\u0149\7\10\2\0\1\7\3\0\22\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\6\10"+ - "\1\u014a\1\10\2\0\1\7\3\0\22\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\5\10\1\u014b"+ - "\2\10\2\0\1\7\3\0\22\10\1\7\6\10\1\0"+ - "\1\7\1\10\11\0\4\10\2\0\10\10\2\0\1\7"+ - "\3\0\4\10\1\116\15\10\1\7\6\10\1\0\1\7"+ - "\1\10\11\0\4\10\2\0\10\10\2\0\1\7\3\0"+ - "\5\10\1\u014c\14\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\10\10\2\0\1\7\3\0\5\10"+ - "\1\u014d\14\10\1\7\6\10\1\0\1\7\1\10\11\0"+ - "\4\10\2\0\1\10\1\u014e\6\10\2\0\1\7\3\0"+ - "\22\10\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\6\10\1\u014f\1\10\2\0\1\7\3\0\22\10"+ - "\1\7\6\10\1\0\1\7\1\10\11\0\4\10\2\0"+ - "\5\10\1\u0150\2\10\2\0\1\7\3\0\22\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\10\10"+ - "\2\0\1\7\3\0\2\10\1\u0151\3\10\1\u0152\13\10"+ - "\1\7\6\10\1\0\1\7\1\10\11\0\4\10\2\0"+ - "\10\10\2\0\1\7\3\0\10\10\1\u0153\11\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\10\10"+ - "\2\0\1\7\3\0\2\10\1\u0154\17\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\3\10\1\u0155"+ - "\4\10\2\0\1\7\3\0\22\10\1\7\6\10\1\0"+ - "\1\7\1\10\11\0\4\10\2\0\5\10\1\u0156\2\10"+ - "\2\0\1\7\3\0\22\10\1\7\6\10\1\0\1\7"+ - "\1\10\11\0\4\10\2\0\3\10\1\124\4\10\2\0"+ - "\1\7\3\0\22\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\1\u0157\7\10\2\0\1\7\3\0"+ - "\22\10\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\6\10\1\u0158\1\10\2\0\1\7\3\0\22\10"+ - "\1\7\6\10\1\0\1\7\1\10\11\0\4\10\2\0"+ - "\6\10\1\u0157\1\10\2\0\1\7\3\0\22\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\5\10"+ - "\1\u0159\2\10\2\0\1\7\3\0\22\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\3\10\1\u015a"+ - "\4\10\2\0\1\7\3\0\22\10\1\7\6\10\1\0"+ - "\1\7\1\10\11\0\4\10\2\0\3\10\1\u015b\4\10"+ - "\2\0\1\7\3\0\22\10\1\7\6\10\1\0\1\7"+ - "\1\10\11\0\4\10\2\0\1\10\1\u015c\6\10\2\0"+ - "\1\7\3\0\22\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\3\10\1\u015d\4\10\2\0\1\7"+ - "\3\0\22\10\1\7\6\10\1\0\1\7\1\10\11\0"+ - "\4\10\2\0\10\10\2\0\1\7\3\0\2\10\1\u015e"+ - "\17\10\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\3\10\1\124\1\10\1\u015f\2\10\2\0\1\7"+ - "\3\0\22\10\1\7\6\10\1\0\1\7\1\10\11\0"+ - "\4\10\2\0\4\10\1\u0160\3\10\2\0\1\7\3\0"+ - "\22\10\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\1\u0161\7\10\2\0\1\7\3\0\22\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\3\10"+ - "\1\u0162\4\10\2\0\1\7\3\0\22\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\1\10\1\u0163"+ - "\6\10\2\0\1\7\3\0\7\10\1\u0161\12\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\10\10"+ - "\2\0\1\7\3\0\10\10\1\235\11\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\1\10\1\u0164"+ - "\6\10\2\0\1\7\3\0\22\10\1\7\6\10\1\0"+ - "\1\7\1\10\11\0\4\10\2\0\10\10\2\0\1\7"+ - "\3\0\2\10\1\u0165\17\10\1\7\6\10\1\0\1\7"+ - "\1\10\11\0\4\10\2\0\10\10\2\0\1\7\3\0"+ - "\15\10\1\254\4\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\3\10\1\370\4\10\2\0\1\7"+ - "\3\0\22\10\1\7\6\10\1\0\1\7\1\10\11\0"+ - "\4\10\2\0\10\10\2\0\1\7\3\0\6\10\1\u0152"+ - "\13\10\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\5\10\1\u015f\2\10\2\0\1\7\3\0\22\10"+ - "\1\7\6\10\1\0\1\7\1\10\11\0\4\10\2\0"+ - "\3\10\1\u0166\4\10\2\0\1\7\3\0\22\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\7\10"+ - "\1\u0167\2\0\1\7\3\0\22\10\1\7\6\10\1\0"+ - "\1\7\1\10\11\0\4\10\2\0\4\10\1\344\3\10"+ - "\2\0\1\7\3\0\22\10\1\7\6\10\1\0\1\7"+ - "\1\10\11\0\4\10\2\0\3\10\1\u0168\4\10\2\0"+ - "\1\7\3\0\22\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\10\10\2\0\1\7\3\0\2\10"+ - "\1\u0169\17\10\1\7\6\10\1\0\1\7\1\10\11\0"+ - "\4\10\2\0\5\10\1\u016a\2\10\2\0\1\7\3\0"+ - "\22\10\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\1\u016b\7\10\2\0\1\7\3\0\22\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\10\10"+ - "\2\0\1\7\3\0\11\10\1\201\10\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\1\10\1\u016c"+ - "\4\10\1\u016d\1\10\2\0\1\7\3\0\22\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\2\10"+ - "\1\u016e\5\10\2\0\1\7\3\0\22\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\1\10\1\u016f"+ - "\6\10\2\0\1\7\3\0\22\10\1\7\6\10\1\0"+ - "\1\7\1\10\11\0\4\10\2\0\3\10\1\u0170\4\10"+ - "\2\0\1\7\3\0\22\10\1\7\6\10\1\0\1\7"+ - "\1\10\11\0\4\10\2\0\10\10\2\0\1\7\3\0"+ - "\2\10\1\u0171\17\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\10\10\2\0\1\7\3\0\5\10"+ - "\1\u0172\14\10\1\7\6\10\1\0\1\7\1\10\11\0"+ - "\4\10\2\0\1\10\1\u0173\6\10\2\0\1\7\3\0"+ - "\22\10\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\2\10\1\267\5\10\2\0\1\7\3\0\22\10"+ - "\22\0\1\u0174\106\0\1\355\4\0\1\u0139\24\0\1\u013b"+ - "\1\u0175\4\u013b\1\0\1\u0175\1\u013b\2\0\1\u0175\2\0"+ - "\3\u0175\5\u013b\2\u0175\10\u013b\3\u0175\1\0\2\u0175\22\u013b"+ - "\22\0\1\u0176\106\0\1\361\4\0\1\u013c\24\0\1\u013e"+ - "\1\u0177\4\u013e\1\0\1\u0177\1\u013e\2\0\1\u0177\2\0"+ - "\3\u0177\5\u013e\2\u0177\10\u013e\3\u0177\1\0\2\u0177\22\u013e"+ - "\1\7\6\10\1\0\1\7\1\10\11\0\4\10\2\0"+ - "\10\10\2\0\1\7\3\0\13\10\1\u0178\6\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\10\10"+ - "\2\0\1\7\3\0\10\10\1\u0179\11\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\3\10\1\u017a"+ - "\4\10\2\0\1\7\3\0\22\10\1\7\6\10\1\0"+ - "\1\7\1\10\11\0\4\10\2\0\1\10\1\u017b\6\10"+ - "\2\0\1\7\3\0\22\10\1\7\6\10\1\0\1\7"+ - "\1\10\11\0\4\10\2\0\1\10\1\u017c\6\10\2\0"+ - "\1\7\3\0\22\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\1\u017d\7\10\2\0\1\7\3\0"+ - "\22\10\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\1\10\1\u017e\6\10\2\0\1\7\3\0\22\10"+ - "\1\7\6\10\1\0\1\7\1\10\11\0\4\10\2\0"+ - "\10\10\2\0\1\7\3\0\10\10\1\267\11\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\10\10"+ - "\2\0\1\7\3\0\13\10\1\u017f\6\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\1\u0180\7\10"+ - "\2\0\1\7\3\0\22\10\1\7\6\10\1\0\1\7"+ - "\1\10\11\0\4\10\2\0\10\10\2\0\1\7\3\0"+ - "\2\10\1\u0181\17\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\6\10\1\u0108\1\10\2\0\1\7"+ - "\3\0\2\10\1\u0182\17\10\1\7\6\10\1\0\1\7"+ - "\1\10\11\0\4\10\2\0\1\10\1\u0155\6\10\2\0"+ - "\1\7\3\0\22\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\5\10\1\u0183\2\10\2\0\1\7"+ - "\3\0\22\10\1\7\6\10\1\0\1\7\1\10\11\0"+ - "\4\10\2\0\10\10\2\0\1\7\3\0\6\10\1\u0184"+ - "\13\10\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\5\10\1\u0185\2\10\2\0\1\7\3\0\22\10"+ - "\1\7\6\10\1\0\1\7\1\10\11\0\4\10\2\0"+ - "\2\10\1\u0159\5\10\2\0\1\7\3\0\22\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\1\10"+ - "\1\u0186\6\10\2\0\1\7\3\0\22\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\10\10\2\0"+ - "\1\7\3\0\10\10\1\u0187\11\10\1\7\6\10\1\0"+ - "\1\7\1\10\11\0\4\10\2\0\10\10\2\0\1\7"+ - "\3\0\12\10\1\u0188\7\10\1\7\6\10\1\0\1\7"+ - "\1\10\11\0\4\10\2\0\10\10\2\0\1\7\3\0"+ - "\7\10\1\116\12\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\10\10\2\0\1\7\3\0\11\10"+ - "\1\116\10\10\1\7\6\10\1\0\1\7\1\10\11\0"+ - "\4\10\2\0\10\10\2\0\1\7\3\0\13\10\1\254"+ - "\6\10\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\6\10\1\171\1\10\2\0\1\7\3\0\22\10"+ - "\1\7\6\10\1\0\1\7\1\10\11\0\4\10\2\0"+ - "\10\10\2\0\1\7\3\0\2\10\1\u0151\17\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\3\10"+ - "\1\367\4\10\2\0\1\7\3\0\22\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\1\u0189\7\10"+ - "\2\0\1\7\3\0\22\10\1\7\6\10\1\0\1\7"+ - "\1\10\11\0\4\10\2\0\10\10\2\0\1\7\3\0"+ - "\11\10\1\u0183\10\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\1\10\1\u018a\6\10\2\0\1\7"+ - "\3\0\22\10\1\7\6\10\1\0\1\7\1\10\11\0"+ - "\4\10\2\0\5\10\1\u018b\2\10\2\0\1\7\3\0"+ - "\22\10\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\10\10\2\0\1\7\3\0\13\10\1\u018c\6\10"+ - "\1\7\6\10\1\0\1\7\1\10\11\0\4\10\2\0"+ - "\7\10\1\u018d\2\0\1\7\3\0\11\10\1\254\10\10"+ - "\1\7\6\10\1\0\1\7\1\10\11\0\4\10\2\0"+ - "\10\10\2\0\1\7\3\0\7\10\1\u0189\12\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\10\10"+ - "\2\0\1\7\3\0\12\10\1\u018e\7\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\3\10\1\336"+ - "\4\10\2\0\1\7\3\0\22\10\1\7\6\10\1\0"+ - "\1\7\1\10\11\0\4\10\2\0\10\10\2\0\1\7"+ - "\3\0\5\10\1\u018f\14\10\1\7\6\10\1\0\1\7"+ - "\1\10\11\0\4\10\2\0\4\10\1\u0190\3\10\2\0"+ - "\1\7\3\0\22\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\10\10\2\0\1\7\3\0\2\10"+ - "\1\u0191\17\10\1\7\6\10\1\0\1\7\1\10\11\0"+ - "\4\10\2\0\5\10\1\u0192\2\10\2\0\1\7\3\0"+ - "\22\10\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\5\10\1\u0193\2\10\2\0\1\7\3\0\22\10"+ - "\1\7\6\10\1\0\1\7\1\10\11\0\4\10\2\0"+ - "\10\10\2\0\1\7\3\0\1\10\1\u0194\20\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\10\10"+ - "\2\0\1\7\3\0\10\10\1\u0195\11\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\10\10\2\0"+ - "\1\7\3\0\10\10\1\u0196\11\10\1\7\6\10\1\0"+ - "\1\7\1\10\11\0\4\10\2\0\10\10\2\0\1\7"+ - "\3\0\2\10\1\u0197\17\10\1\7\6\10\1\0\1\7"+ - "\1\10\11\0\4\10\2\0\10\10\2\0\1\7\3\0"+ - "\2\10\1\u0198\17\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\10\10\2\0\1\7\3\0\12\10"+ - "\1\u0199\7\10\1\7\6\10\1\0\1\7\1\10\11\0"+ - "\4\10\2\0\6\10\1\u019a\1\10\2\0\1\7\3\0"+ - "\22\10\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\2\10\1\u019b\5\10\2\0\1\7\3\0\22\10"+ - "\1\7\6\10\1\0\1\7\1\10\11\0\4\10\2\0"+ - "\10\10\2\0\1\7\3\0\11\10\1\u014c\10\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\10\10"+ - "\2\0\1\7\3\0\10\10\1\u019c\2\10\1\254\6\10"+ - "\1\7\6\10\1\0\1\7\1\10\11\0\4\10\2\0"+ - "\10\10\2\0\1\7\3\0\2\10\1\u019d\17\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\10\10"+ - "\2\0\1\7\3\0\7\10\1\u019e\12\10\22\0\1\u013b"+ - "\70\0\1\u013e\46\0\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\10\10\2\0\1\7\3\0\14\10"+ - "\1\u019f\5\10\1\7\6\10\1\0\1\7\1\10\11\0"+ - "\4\10\2\0\6\10\1\u0186\1\10\2\0\1\7\3\0"+ - "\22\10\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\10\10\2\0\1\7\3\0\10\10\1\u019a\11\10"+ - "\1\7\6\10\1\0\1\7\1\10\11\0\4\10\2\0"+ - "\10\10\2\0\1\7\3\0\11\10\1\u01a0\10\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\10\10"+ - "\2\0\1\7\3\0\12\10\1\u01a1\7\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\3\10\1\330"+ - "\4\10\2\0\1\7\3\0\22\10\1\7\6\10\1\0"+ - "\1\7\1\10\11\0\4\10\2\0\3\10\1\u019e\4\10"+ - "\2\0\1\7\3\0\22\10\1\7\6\10\1\0\1\7"+ - "\1\10\11\0\4\10\2\0\3\10\1\u01a2\4\10\2\0"+ - "\1\7\3\0\22\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\10\10\2\0\1\7\3\0\12\10"+ - "\1\234\7\10\1\7\6\10\1\0\1\7\1\10\11\0"+ - "\4\10\2\0\10\10\2\0\1\7\3\0\16\10\1\u01a3"+ - "\3\10\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\1\u0111\7\10\2\0\1\7\3\0\22\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\6\10"+ - "\1\u017d\1\10\2\0\1\7\3\0\22\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\10\10\2\0"+ - "\1\7\3\0\11\10\1\u019a\10\10\1\7\6\10\1\0"+ - "\1\7\1\10\11\0\4\10\2\0\10\10\2\0\1\7"+ - "\3\0\4\10\1\254\15\10\1\7\6\10\1\0\1\7"+ - "\1\10\11\0\4\10\2\0\1\367\7\10\2\0\1\7"+ - "\3\0\22\10\1\7\6\10\1\0\1\7\1\10\11\0"+ - "\4\10\2\0\10\10\2\0\1\7\3\0\12\10\1\u01a4"+ - "\7\10\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\3\10\1\254\4\10\2\0\1\7\3\0\22\10"+ - "\1\7\6\10\1\0\1\7\1\10\11\0\4\10\2\0"+ - "\1\u0108\7\10\2\0\1\7\3\0\22\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\10\10\2\0"+ - "\1\7\3\0\5\10\1\116\14\10\1\7\6\10\1\0"+ - "\1\7\1\10\11\0\4\10\2\0\2\10\1\u01a5\5\10"+ - "\2\0\1\7\3\0\22\10\1\7\6\10\1\0\1\7"+ - "\1\10\11\0\4\10\2\0\10\10\2\0\1\7\3\0"+ - "\1\u0111\21\10\1\7\6\10\1\0\1\7\1\10\11\0"+ - "\4\10\2\0\1\10\1\u01a6\6\10\2\0\1\7\3\0"+ - "\22\10\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\3\10\1\u01a7\4\10\2\0\1\7\3\0\22\10"+ - "\1\7\6\10\1\0\1\7\1\10\11\0\4\10\2\0"+ - "\5\10\1\u01a8\2\10\2\0\1\7\3\0\22\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\1\u0113"+ - "\7\10\2\0\1\7\3\0\22\10\1\7\6\10\1\0"+ - "\1\7\1\10\11\0\4\10\2\0\6\10\1\u01a9\1\10"+ - "\2\0\1\7\3\0\22\10\1\7\6\10\1\0\1\7"+ - "\1\10\11\0\4\10\2\0\10\10\2\0\1\7\3\0"+ - "\10\10\1\367\11\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\5\10\1\u01aa\2\10\2\0\1\7"+ - "\3\0\22\10\1\7\6\10\1\0\1\7\1\10\11\0"+ - "\4\10\2\0\10\10\2\0\1\7\3\0\11\10\1\u01ab"+ - "\10\10\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\5\10\1\u01a4\2\10\2\0\1\7\3\0\22\10"+ - "\1\7\6\10\1\0\1\7\1\10\11\0\4\10\2\0"+ - "\10\10\2\0\1\7\3\0\10\10\1\u019e\11\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\10\10"+ - "\2\0\1\7\3\0\13\10\1\u0189\6\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\5\10\1\u0155"+ - "\2\10\2\0\1\7\3\0\22\10\1\7\6\10\1\0"+ - "\1\7\1\10\11\0\4\10\2\0\1\254\7\10\2\0"+ - "\1\7\3\0\22\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\10\10\2\0\1\7\3\0\11\10"+ - "\1\u01ac\10\10\1\7\6\10\1\0\1\7\1\10\11\0"+ - "\4\10\2\0\1\u01ad\7\10\2\0\1\7\3\0\22\10"+ - "\1\7\6\10\1\0\1\7\1\10\11\0\4\10\2\0"+ - "\10\10\2\0\1\7\3\0\11\10\1\254\10\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\7\10"+ - "\1\254\2\0\1\7\3\0\22\10\1\7\6\10\1\0"+ - "\1\7\1\10\11\0\4\10\2\0\5\10\1\212\2\10"+ - "\2\0\1\7\3\0\22\10\1\7\6\10\1\0\1\7"+ - "\1\10\11\0\4\10\2\0\3\10\1\u01ae\4\10\2\0"+ - "\1\7\3\0\22\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\10\10\2\0\1\7\3\0\13\10"+ - "\1\u01af\6\10\1\7\6\10\1\0\1\7\1\10\11\0"+ - "\4\10\2\0\10\10\2\0\1\7\3\0\13\10\1\367"+ - "\6\10\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\5\10\1\u0105\2\10\2\0\1\7\3\0\22\10"+ - "\1\7\6\10\1\0\1\7\1\10\11\0\4\10\2\0"+ - "\6\10\1\367\1\10\2\0\1\7\3\0\22\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\1\10"+ - "\1\235\6\10\2\0\1\7\3\0\22\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\10\10\2\0"+ - "\1\7\3\0\5\10\1\254\14\10\1\7\6\10\1\0"+ - "\1\7\1\10\11\0\4\10\2\0\10\10\2\0\1\7"+ - "\3\0\10\10\1\u01b0\11\10\1\7\6\10\1\0\1\7"+ - "\1\10\11\0\4\10\2\0\10\10\2\0\1\7\3\0"+ - "\11\10\1\235\10\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\10\10\2\0\1\7\3\0\2\10"+ - "\1\u0182\17\10\1\7\6\10\1\0\1\7\1\10\11\0"+ - "\4\10\2\0\10\10\2\0\1\7\3\0\11\10\1\u017e"+ - "\10\10\1\7\6\10\1\0\1\7\1\10\11\0\4\10"+ - "\2\0\10\10\2\0\1\7\3\0\4\10\1\367\15\10"+ - "\1\7\6\10\1\0\1\7\1\10\11\0\4\10\2\0"+ - "\1\52\7\10\2\0\1\7\3\0\22\10\1\7\6\10"+ - "\1\0\1\7\1\10\11\0\4\10\2\0\3\10\1\u01b1"+ - "\4\10\2\0\1\7\3\0\22\10\1\7\6\10\1\0"+ - "\1\7\1\10\11\0\4\10\2\0\7\10\1\u01b2\2\0"+ - "\1\7\3\0\22\10\1\7\6\10\1\0\1\7\1\10"+ - "\11\0\4\10\2\0\2\10\1\u01b3\5\10\2\0\1\7"+ - "\3\0\22\10\1\7\6\10\1\0\1\7\1\10\11\0"+ - "\4\10\2\0\1\u01b4\7\10\2\0\1\7\3\0\22\10"+ - "\1\7\6\10\1\0\1\7\1\10\11\0\4\10\2\0"+ - "\1\10\1\u0163\6\10\2\0\1\7\3\0\22\10\1\7"+ - "\6\10\1\0\1\7\1\10\11\0\4\10\2\0\1\u01b5"+ - "\7\10\2\0\1\7\3\0\22\10\1\7\6\10\1\0"+ - "\1\7\1\10\11\0\4\10\2\0\10\10\2\0\1\7"+ - "\3\0\11\10\1\u0189\10\10\1\7\6\10\1\0\1\7"+ - "\1\10\11\0\4\10\2\0\5\10\1\u0105\1\10\1\254"+ - "\2\0\1\7\3\0\22\10\1\7\6\10\1\0\1\7"+ - "\1\10\11\0\4\10\2\0\1\10\1\270\6\10\2\0"+ - "\1\7\3\0\22\10"; - - private static int [] zzUnpackTrans() { - int [] result = new int[23313]; - int offset = 0; - offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackTrans(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - value--; - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /* error codes */ - private static final int ZZ_UNKNOWN_ERROR = 0; - private static final int ZZ_NO_MATCH = 1; - private static final int ZZ_PUSHBACK_2BIG = 2; - - /* error messages for the codes above */ - private static final String ZZ_ERROR_MSG[] = { - "Unkown internal scanner error", - "Error: could not match input", - "Error: pushback value was too large" - }; - - /** - * ZZ_ATTRIBUTE[aState] contains the attributes of state aState - */ - private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); - - private static final String ZZ_ATTRIBUTE_PACKED_0 = - "\6\0\4\1\1\11\1\1\1\11\4\1\2\11\30\1"+ - "\2\11\4\1\1\11\2\1\2\11\1\1\1\11\2\1"+ - "\1\11\13\1\2\11\1\1\1\11\100\1\4\0\2\11"+ - "\4\0\1\1\1\0\2\1\1\11\123\1\10\0\104\1"+ - "\2\0\1\1\2\0\66\1\4\0\76\1"; - - private static int [] zzUnpackAttribute() { - int [] result = new int[437]; - int offset = 0; - offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAttribute(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - /** the input device */ - private java.io.Reader zzReader; - - /** the current state of the DFA */ - private int zzState; - - /** the current lexical state */ - private int zzLexicalState = YYINITIAL; - - /** this buffer contains the current text to be matched and is - the source of the yytext() string */ - private char zzBuffer[]; - - /** the textposition at the last accepting state */ - private int zzMarkedPos; - - /** the current text position in the buffer */ - private int zzCurrentPos; - - /** startRead marks the beginning of the yytext() string in the buffer */ - private int zzStartRead; - - /** endRead marks the last character in the buffer, that has been read - from input */ - private int zzEndRead; - - /** zzAtEOF == true <=> the scanner is at the EOF */ - private boolean zzAtEOF; - - /* user code: */ - - - /** - * Token type specific to DelphiTokenMaker; denotes a line ending - * with an unterminated "(*" comment. - */ - public static final int INTERNAL_MLC2 = -1; - - /** - * Token type specific to DelphiTokenMaker; denotes a line ending - * with an unterminated "{$" compiler directive. - */ - public static final int INTERNAL_COMPILER_DIRECTIVE = -2; - - /** - * Token type specific to DelphiTokenMaker; denotes a line ending - * with an unterminated "(*$" compiler directive. - */ - public static final int INTERNAL_COMPILER_DIRECTIVE2 = -3; - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public DelphiTokenMaker() { - } - - - /** - * Adds the token specified to the current linked list of tokens as an - * "end token;" that is, at zzMarkedPos. - * - * @param tokenType The token's type. - */ - private void addEndToken(int tokenType) { - addToken(zzMarkedPos,zzMarkedPos, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addToken(int, int, int) - */ - private void addHyperlinkToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, true); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addHyperlinkToken(int, int, int) - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, false); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - * @param hyperlink Whether this token is a hyperlink. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, - int startOffset, boolean hyperlink) { - super.addToken(array, start,end, tokenType, startOffset, hyperlink); - zzStartRead = zzMarkedPos; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { "//", null }; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - - // Start off in the proper state. - int state = Token.NULL; - switch (initialTokenType) { - case Token.COMMENT_MULTILINE: - state = MLC; - start = text.offset; - break; - case INTERNAL_MLC2: - state = MLC2; - start = text.offset; - break; - case INTERNAL_COMPILER_DIRECTIVE: - state = COMPILER_DIRECTIVE; - start = text.offset; - break; - case INTERNAL_COMPILER_DIRECTIVE2: - state = COMPILER_DIRECTIVE2; - start = text.offset; - break; - default: - state = Token.NULL; - } - - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtEOF = false; - } - - - - - /** - * Creates a new scanner - * There is also a java.io.InputStream version of this constructor. - * - * @param in the java.io.Reader to read input from. - */ - public DelphiTokenMaker(java.io.Reader in) { - this.zzReader = in; - } - - /** - * Creates a new scanner. - * There is also java.io.Reader version of this constructor. - * - * @param in the java.io.Inputstream to read input from. - */ - public DelphiTokenMaker(java.io.InputStream in) { - this(new java.io.InputStreamReader(in)); - } - - /** - * Unpacks the compressed character translation table. - * - * @param packed the packed character translation table - * @return the unpacked character translation table - */ - private static char [] zzUnpackCMap(String packed) { - char [] map = new char[0x10000]; - int i = 0; /* index in packed string */ - int j = 0; /* index in unpacked array */ - while (i < 158) { - int count = packed.charAt(i++); - char value = packed.charAt(i++); - do map[j++] = value; while (--count > 0); - } - return map; - } - - - /** - * Closes the input stream. - */ - public final void yyclose() throws java.io.IOException { - zzAtEOF = true; /* indicate end of file */ - zzEndRead = zzStartRead; /* invalidate buffer */ - - if (zzReader != null) - zzReader.close(); - } - - - /** - * Returns the current lexical state. - */ - public final int yystate() { - return zzLexicalState; - } - - - /** - * Enters a new lexical state - * - * @param newState the new lexical state - */ - @Override -public final void yybegin(int newState) { - zzLexicalState = newState; - } - - - /** - * Returns the text matched by the current regular expression. - */ - public final String yytext() { - return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead ); - } - - - /** - * Returns the character at position pos from the - * matched text. - * - * It is equivalent to yytext().charAt(pos), but faster - * - * @param pos the position of the character to fetch. - * A value from 0 to yylength()-1. - * - * @return the character at position pos - */ - public final char yycharat(int pos) { - return zzBuffer[zzStartRead+pos]; - } - - - /** - * Returns the length of the matched text region. - */ - public final int yylength() { - return zzMarkedPos-zzStartRead; - } - - - /** - * Reports an error that occured while scanning. - * - * In a wellformed scanner (no or only correct usage of - * yypushback(int) and a match-all fallback rule) this method - * will only be called with things that "Can't Possibly Happen". - * If this method is called, something is seriously wrong - * (e.g. a JFlex bug producing a faulty scanner etc.). - * - * Usual syntax/scanner level error handling should be done - * in error fallback rules. - * - * @param errorCode the code of the errormessage to display - */ - private void zzScanError(int errorCode) { - String message; - try { - message = ZZ_ERROR_MSG[errorCode]; - } - catch (ArrayIndexOutOfBoundsException e) { - message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; - } - - throw new Error(message); - } - - - /** - * Pushes the specified amount of characters back into the input stream. - * - * They will be read again by then next call of the scanning method - * - * @param number the number of characters to be read again. - * This number must not be greater than yylength()! - */ - public void yypushback(int number) { - if ( number > yylength() ) - zzScanError(ZZ_PUSHBACK_2BIG); - - zzMarkedPos -= number; - } - - - /** - * Resumes scanning until the next regular expression is matched, - * the end of input is encountered or an I/O-Error occurs. - * - * @return the next token - * @exception java.io.IOException if any I/O-Error occurs - */ - public org.fife.ui.rsyntaxtextarea.Token yylex() throws java.io.IOException { - int zzInput; - int zzAction; - - // cached fields: - int zzCurrentPosL; - int zzMarkedPosL; - int zzEndReadL = zzEndRead; - char [] zzBufferL = zzBuffer; - char [] zzCMapL = ZZ_CMAP; - - int [] zzTransL = ZZ_TRANS; - int [] zzRowMapL = ZZ_ROWMAP; - int [] zzAttrL = ZZ_ATTRIBUTE; - - while (true) { - zzMarkedPosL = zzMarkedPos; - - zzAction = -1; - - zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; - - zzState = zzLexicalState; - - - zzForAction: { - while (true) { - - if (zzCurrentPosL < zzEndReadL) - zzInput = zzBufferL[zzCurrentPosL++]; - else if (zzAtEOF) { - zzInput = YYEOF; - break zzForAction; - } - else { - // store back cached positions - zzCurrentPos = zzCurrentPosL; - zzMarkedPos = zzMarkedPosL; - boolean eof = zzRefill(); - // get translated positions and possibly new buffer - zzCurrentPosL = zzCurrentPos; - zzMarkedPosL = zzMarkedPos; - zzBufferL = zzBuffer; - zzEndReadL = zzEndRead; - if (eof) { - zzInput = YYEOF; - break zzForAction; - } - else { - zzInput = zzBufferL[zzCurrentPosL++]; - } - } - int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; - if (zzNext == -1) break zzForAction; - zzState = zzNext; - - int zzAttributes = zzAttrL[zzState]; - if ( (zzAttributes & 1) == 1 ) { - zzAction = zzState; - zzMarkedPosL = zzCurrentPosL; - if ( (zzAttributes & 8) == 8 ) break zzForAction; - } - - } - } - - // store back cached position - zzMarkedPos = zzMarkedPosL; - - switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { - case 15: - { addToken(start,zzStartRead-1, Token.PREPROCESSOR); addEndToken(INTERNAL_COMPILER_DIRECTIVE); return firstToken; - } - case 35: break; - case 4: - { addToken(Token.PREPROCESSOR); - } - case 36: break; - case 5: - { addNullToken(); return firstToken; - } - case 37: break; - case 27: - { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); - } - case 38: break; - case 6: - { addToken(Token.WHITESPACE); - } - case 39: break; - case 21: - { addToken(Token.LITERAL_NUMBER_HEXADECIMAL); - } - case 40: break; - case 20: - { addToken(Token.LITERAL_NUMBER_FLOAT); - } - case 41: break; - case 26: - { addToken(Token.RESERVED_WORD); - } - case 42: break; - case 16: - { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.PREPROCESSOR); - } - case 43: break; - case 9: - { addToken(Token.SEPARATOR); - } - case 44: break; - case 17: - { addToken(start,zzStartRead-1, Token.PREPROCESSOR); addEndToken(INTERNAL_COMPILER_DIRECTIVE2); return firstToken; - } - case 45: break; - case 2: - { addToken(Token.IDENTIFIER); - } - case 46: break; - case 18: - { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; - } - case 47: break; - case 25: - { start = zzMarkedPos-2; yybegin(EOL_COMMENT); - } - case 48: break; - case 30: - { addToken(Token.FUNCTION); - } - case 49: break; - case 7: - { addToken(Token.ERROR_STRING_DOUBLE); addNullToken(); return firstToken; - } - case 50: break; - case 14: - { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_MLC2); return firstToken; - } - case 51: break; - case 32: - { addToken(Token.DATA_TYPE); - } - case 52: break; - case 1: - { addToken(Token.ERROR_IDENTIFIER); - } - case 53: break; - case 31: - { addToken(Token.LITERAL_BOOLEAN); - } - case 54: break; - case 22: - { addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); - } - case 55: break; - case 34: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_EOL); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_EOL); start = zzMarkedPos; - } - case 56: break; - case 29: - { start = zzMarkedPos-3; yybegin(COMPILER_DIRECTIVE2); - } - case 57: break; - case 24: - { start = zzMarkedPos-2; yybegin(MLC2); - } - case 58: break; - case 33: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_MULTILINE); start = zzMarkedPos; - } - case 59: break; - case 19: - { addToken(Token.ERROR_NUMBER_FORMAT); - } - case 60: break; - case 28: - { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.PREPROCESSOR); - } - case 61: break; - case 13: - { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.COMMENT_MULTILINE); - } - case 62: break; - case 3: - { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); - } - case 63: break; - case 10: - { addToken(Token.OPERATOR); - } - case 64: break; - case 8: - { start = zzMarkedPos-1; yybegin(MLC); - } - case 65: break; - case 23: - { start = zzMarkedPos-2; yybegin(COMPILER_DIRECTIVE); - } - case 66: break; - case 11: - { - } - case 67: break; - case 12: - { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; - } - case 68: break; - default: - if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { - zzAtEOF = true; - switch (zzLexicalState) { - case COMPILER_DIRECTIVE: { - addToken(start,zzStartRead-1, Token.PREPROCESSOR); addEndToken(INTERNAL_COMPILER_DIRECTIVE); return firstToken; - } - case 438: break; - case EOL_COMMENT: { - addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; - } - case 439: break; - case YYINITIAL: { - addNullToken(); return firstToken; - } - case 440: break; - case COMPILER_DIRECTIVE2: { - addToken(start,zzStartRead-1, Token.PREPROCESSOR); addEndToken(INTERNAL_COMPILER_DIRECTIVE2); return firstToken; - } - case 441: break; - case MLC: { - addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; - } - case 442: break; - case MLC2: { - addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_MLC2); return firstToken; - } - case 443: break; - default: - return null; - } - } - else { - zzScanError(ZZ_NO_MATCH); - } - } - } - } - - -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/FortranTokenMaker.flex b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/FortranTokenMaker.flex deleted file mode 100644 index a119b88..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/FortranTokenMaker.flex +++ /dev/null @@ -1,477 +0,0 @@ -/* - * 03/23/2005 - * - * FortranTokenMaker.java - Scanner for the Fortran programming language. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * Scanner for the Fortran programming language. - * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated FortranTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.4 - * - */ -%% - -%public -%class FortranTokenMaker -%extends AbstractJFlexTokenMaker -%unicode -%ignorecase -%type org.fife.ui.rsyntaxtextarea.Token - - -%{ - - - /** - * Constructor. We must have this here as there is no default, - * no-parameter constructor generated by JFlex. - */ - public FortranTokenMaker() { - super(); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, int startOffset) { - super.addToken(array, start,end, tokenType, startOffset); - zzStartRead = zzMarkedPos; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { "!", null }; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - - // Start off in the proper state. - int state = Token.NULL; - switch (initialTokenType) { - case Token.LITERAL_STRING_DOUBLE_QUOTE: - state = STRING; - start = text.offset; - break; - case Token.LITERAL_CHAR: - state = CHAR; - start = text.offset; - break; - default: - state = Token.NULL; - } - - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = zzPushbackPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtBOL = true; - zzAtEOF = false; - } - - -%} - -LineTerminator = (\n) -WhiteSpace = ([ \t\f]) - -Column1CommentBegin = ([C\*]) -Column1Comment2Begin = (D) -AnywhereCommentBegin = (\!) - -Identifier = ([A-Za-z0-9_$]+) - -StringDelimiter = (\") -CharDelimiter = (\') - -Operators1 = ("<"|">"|"<="|">="|"&"|"/="|"==") -Operators2 = (\.(lt|gt|eq|ne|le|ge|and|or)\.) -Operator = ({Operators1}|{Operators2}) - -Boolean = (\.(true|false)\.) - -%state STRING -%state CHAR - -%% - -/* Keywords */ - "INCLUDE" { addToken(Token.RESERVED_WORD); } - "PROGRAM" { addToken(Token.RESERVED_WORD); } - "MODULE" { addToken(Token.RESERVED_WORD); } - "SUBROUTINE" { addToken(Token.RESERVED_WORD); } - "FUNCTION" { addToken(Token.RESERVED_WORD); } - "CONTAINS" { addToken(Token.RESERVED_WORD); } - "USE" { addToken(Token.RESERVED_WORD); } - "CALL" { addToken(Token.RESERVED_WORD); } - "RETURN" { addToken(Token.RESERVED_WORD); } - "IMPLICIT" { addToken(Token.RESERVED_WORD); } - "EXPLICIT" { addToken(Token.RESERVED_WORD); } - "NONE" { addToken(Token.RESERVED_WORD); } - "DATA" { addToken(Token.RESERVED_WORD); } - "PARAMETER" { addToken(Token.RESERVED_WORD); } - "ALLOCATE" { addToken(Token.RESERVED_WORD); } - "ALLOCATABLE" { addToken(Token.RESERVED_WORD); } - "ALLOCATED" { addToken(Token.RESERVED_WORD); } - "DEALLOCATE" { addToken(Token.RESERVED_WORD); } - "INTEGER" { addToken(Token.RESERVED_WORD); } - "REAL" { addToken(Token.RESERVED_WORD); } - "DOUBLE" { addToken(Token.RESERVED_WORD); } - "PRECISION" { addToken(Token.RESERVED_WORD); } - "COMPLEX" { addToken(Token.RESERVED_WORD); } - "LOGICAL" { addToken(Token.RESERVED_WORD); } - "CHARACTER" { addToken(Token.RESERVED_WORD); } - "DIMENSION" { addToken(Token.RESERVED_WORD); } - "KIND" { addToken(Token.RESERVED_WORD); } - "CASE" { addToken(Token.RESERVED_WORD); } - "SELECT" { addToken(Token.RESERVED_WORD); } - "DEFAULT" { addToken(Token.RESERVED_WORD); } - "CONTINUE" { addToken(Token.RESERVED_WORD); } - "CYCLE" { addToken(Token.RESERVED_WORD); } - "DO" { addToken(Token.RESERVED_WORD); } - "WHILE" { addToken(Token.RESERVED_WORD); } - "ELSE" { addToken(Token.RESERVED_WORD); } - "IF" { addToken(Token.RESERVED_WORD); } - "ELSEIF" { addToken(Token.RESERVED_WORD); } - "THEN" { addToken(Token.RESERVED_WORD); } - "ELSEWHERE" { addToken(Token.RESERVED_WORD); } - "END" { addToken(Token.RESERVED_WORD); } - "ENDIF" { addToken(Token.RESERVED_WORD); } - "ENDDO" { addToken(Token.RESERVED_WORD); } - "FORALL" { addToken(Token.RESERVED_WORD); } - "WHERE" { addToken(Token.RESERVED_WORD); } - "EXIT" { addToken(Token.RESERVED_WORD); } - "GOTO" { addToken(Token.RESERVED_WORD); } - "PAUSE" { addToken(Token.RESERVED_WORD); } - "STOP" { addToken(Token.RESERVED_WORD); } - "BACKSPACE" { addToken(Token.RESERVED_WORD); } - "CLOSE" { addToken(Token.RESERVED_WORD); } - "ENDFILE" { addToken(Token.RESERVED_WORD); } - "INQUIRE" { addToken(Token.RESERVED_WORD); } - "OPEN" { addToken(Token.RESERVED_WORD); } - "PRINT" { addToken(Token.RESERVED_WORD); } - "READ" { addToken(Token.RESERVED_WORD); } - "REWIND" { addToken(Token.RESERVED_WORD); } - "WRITE" { addToken(Token.RESERVED_WORD); } - "FORMAT" { addToken(Token.RESERVED_WORD); } - "AIMAG" { addToken(Token.RESERVED_WORD); } - "AINT" { addToken(Token.RESERVED_WORD); } - "AMAX0" { addToken(Token.RESERVED_WORD); } - "AMIN0" { addToken(Token.RESERVED_WORD); } - "ANINT" { addToken(Token.RESERVED_WORD); } - "CEILING" { addToken(Token.RESERVED_WORD); } - "CMPLX" { addToken(Token.RESERVED_WORD); } - "CONJG" { addToken(Token.RESERVED_WORD); } - "DBLE" { addToken(Token.RESERVED_WORD); } - "DCMPLX" { addToken(Token.RESERVED_WORD); } - "DFLOAT" { addToken(Token.RESERVED_WORD); } - "DIM" { addToken(Token.RESERVED_WORD); } - "DPROD" { addToken(Token.RESERVED_WORD); } - "FLOAT" { addToken(Token.RESERVED_WORD); } - "FLOOR" { addToken(Token.RESERVED_WORD); } - "IFIX" { addToken(Token.RESERVED_WORD); } - "IMAG" { addToken(Token.RESERVED_WORD); } - "INT" { addToken(Token.RESERVED_WORD); } - "LOGICAL" { addToken(Token.RESERVED_WORD); } - "MODULO" { addToken(Token.RESERVED_WORD); } - "NINT" { addToken(Token.RESERVED_WORD); } - "REAL" { addToken(Token.RESERVED_WORD); } - "SIGN" { addToken(Token.RESERVED_WORD); } - "SNGL" { addToken(Token.RESERVED_WORD); } - "TRANSFER" { addToken(Token.RESERVED_WORD); } - "ZEXT" { addToken(Token.RESERVED_WORD); } - "ABS" { addToken(Token.RESERVED_WORD); } - "ACOS" { addToken(Token.RESERVED_WORD); } - "AIMAG" { addToken(Token.RESERVED_WORD); } - "AINT" { addToken(Token.RESERVED_WORD); } - "ALOG" { addToken(Token.RESERVED_WORD); } - "ALOG10" { addToken(Token.RESERVED_WORD); } - "AMAX0" { addToken(Token.RESERVED_WORD); } - "AMAX1" { addToken(Token.RESERVED_WORD); } - "AMIN0" { addToken(Token.RESERVED_WORD); } - "AMIN1" { addToken(Token.RESERVED_WORD); } - "AMOD" { addToken(Token.RESERVED_WORD); } - "ANINT" { addToken(Token.RESERVED_WORD); } - "ASIN" { addToken(Token.RESERVED_WORD); } - "ATAN" { addToken(Token.RESERVED_WORD); } - "ATAN2" { addToken(Token.RESERVED_WORD); } - "CABS" { addToken(Token.RESERVED_WORD); } - "CCOS" { addToken(Token.RESERVED_WORD); } - "CHAR" { addToken(Token.RESERVED_WORD); } - "CLOG" { addToken(Token.RESERVED_WORD); } - "CMPLX" { addToken(Token.RESERVED_WORD); } - "CONJG" { addToken(Token.RESERVED_WORD); } - "COS" { addToken(Token.RESERVED_WORD); } - "COSH" { addToken(Token.RESERVED_WORD); } - "CSIN" { addToken(Token.RESERVED_WORD); } - "CSQRT" { addToken(Token.RESERVED_WORD); } - "DABS" { addToken(Token.RESERVED_WORD); } - "DACOS" { addToken(Token.RESERVED_WORD); } - "DASIN" { addToken(Token.RESERVED_WORD); } - "DATAN" { addToken(Token.RESERVED_WORD); } - "DATAN2" { addToken(Token.RESERVED_WORD); } - "DBLE" { addToken(Token.RESERVED_WORD); } - "DCOS" { addToken(Token.RESERVED_WORD); } - "DCOSH" { addToken(Token.RESERVED_WORD); } - "DDIM" { addToken(Token.RESERVED_WORD); } - "DEXP" { addToken(Token.RESERVED_WORD); } - "DIM" { addToken(Token.RESERVED_WORD); } - "DINT" { addToken(Token.RESERVED_WORD); } - "DLOG" { addToken(Token.RESERVED_WORD); } - "DLOG10" { addToken(Token.RESERVED_WORD); } - "DMAX1" { addToken(Token.RESERVED_WORD); } - "DMIN1" { addToken(Token.RESERVED_WORD); } - "DMOD" { addToken(Token.RESERVED_WORD); } - "DNINT" { addToken(Token.RESERVED_WORD); } - "DPROD" { addToken(Token.RESERVED_WORD); } - "DREAL" { addToken(Token.RESERVED_WORD); } - "DSIGN" { addToken(Token.RESERVED_WORD); } - "DSIN" { addToken(Token.RESERVED_WORD); } - "DSINH" { addToken(Token.RESERVED_WORD); } - "DSQRT" { addToken(Token.RESERVED_WORD); } - "DTAN" { addToken(Token.RESERVED_WORD); } - "DTANH" { addToken(Token.RESERVED_WORD); } - "EXP" { addToken(Token.RESERVED_WORD); } - "FLOAT" { addToken(Token.RESERVED_WORD); } - "IABS" { addToken(Token.RESERVED_WORD); } - "ICHAR" { addToken(Token.RESERVED_WORD); } - "IDIM" { addToken(Token.RESERVED_WORD); } - "IDINT" { addToken(Token.RESERVED_WORD); } - "IDNINT" { addToken(Token.RESERVED_WORD); } - "IFIX" { addToken(Token.RESERVED_WORD); } - "INDEX" { addToken(Token.RESERVED_WORD); } - "INT" { addToken(Token.RESERVED_WORD); } - "ISIGN" { addToken(Token.RESERVED_WORD); } - "LEN" { addToken(Token.RESERVED_WORD); } - "LGE" { addToken(Token.RESERVED_WORD); } - "LGT" { addToken(Token.RESERVED_WORD); } - "LLE" { addToken(Token.RESERVED_WORD); } - "LLT" { addToken(Token.RESERVED_WORD); } - "LOG" { addToken(Token.RESERVED_WORD); } - "LOG10" { addToken(Token.RESERVED_WORD); } - "MAX" { addToken(Token.RESERVED_WORD); } - "MAX0" { addToken(Token.RESERVED_WORD); } - "MAX1" { addToken(Token.RESERVED_WORD); } - "MIN" { addToken(Token.RESERVED_WORD); } - "MIN0" { addToken(Token.RESERVED_WORD); } - "MIN1" { addToken(Token.RESERVED_WORD); } - "MOD" { addToken(Token.RESERVED_WORD); } - "NINT" { addToken(Token.RESERVED_WORD); } - "REAL" { addToken(Token.RESERVED_WORD); } - "SIGN" { addToken(Token.RESERVED_WORD); } - "SIN" { addToken(Token.RESERVED_WORD); } - "SINH" { addToken(Token.RESERVED_WORD); } - "SNGL" { addToken(Token.RESERVED_WORD); } - "SQRT" { addToken(Token.RESERVED_WORD); } - "TAN" { addToken(Token.RESERVED_WORD); } - "TANH" { addToken(Token.RESERVED_WORD); } - - { - - {LineTerminator} { addNullToken(); return firstToken; } - - {WhiteSpace}+ { addToken(Token.WHITESPACE); } - - /* String/Character Literals. */ - {CharDelimiter} { start = zzMarkedPos-1; yybegin(CHAR); } - {StringDelimiter} { start = zzMarkedPos-1; yybegin(STRING); } - - /* Comment Literals. */ - /* Note that we cannot combine these as JFLex doesn't like combining an */ - /* expression containing the beginning-of-line character '^'. */ - {Column1CommentBegin} { - // Since we change zzStartRead, we have the unfortunate - // side-effect of not being able to use the '^' operator. - // So we must check whether we're really at the beginning - // of the line ourselves... - if (zzStartRead==s.offset) { - addToken(zzStartRead,zzEndRead, Token.COMMENT_EOL); - addNullToken(); - return firstToken; - } - else { - addToken(Token.IDENTIFIER); - } - } - {Column1Comment2Begin} { - // Since we change zzStartRead, we have the unfortunate - // side-effect of not being able to use the '^' operator. - // So we must check whether we're really at the beginning - // of the line ourselves... - if (zzStartRead==s.offset) { - addToken(zzStartRead,zzEndRead, Token.COMMENT_DOCUMENTATION); - addNullToken(); - return firstToken; - } - else { - addToken(Token.IDENTIFIER); - } - } - {AnywhereCommentBegin} { addToken(zzStartRead,zzEndRead, Token.COMMENT_EOL); addNullToken(); return firstToken; } - - /* Operators. */ - {Operator} { addToken(Token.OPERATOR); } - - /* Boolean literals. */ - {Boolean} { addToken(Token.LITERAL_BOOLEAN); } - - {Identifier} { addToken(Token.IDENTIFIER); } - - /* Ended with a line not in a string or char literal. */ - <> { addNullToken(); return firstToken; } - - /* Catch any other (unhandled) characters. */ - . { addToken(Token.IDENTIFIER); } - -} - - { - [^\'\n]* {} - \' { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_CHAR); } - \n { addToken(start,zzStartRead-1, Token.LITERAL_CHAR); return firstToken; } - <> { addToken(start,zzStartRead-1, Token.LITERAL_CHAR); return firstToken; } -} - - { - [^\"\n]* {} - \" { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); } - \n { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); return firstToken; } - <> { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); return firstToken; } -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/FortranTokenMaker.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/FortranTokenMaker.java deleted file mode 100644 index 628f22c..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/FortranTokenMaker.java +++ /dev/null @@ -1,1009 +0,0 @@ -/* The following code was generated by JFlex 1.4.1 on 10/16/06 10:31 AM */ - -/* - * 03/23/2005 - * - * FortranTokenMaker.java - Scanner for the Fortran programming language. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * Scanner for the Fortran programming language. - * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated FortranTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.4 - * - */ - -public class FortranTokenMaker extends AbstractJFlexTokenMaker { - - /** This character denotes the end of file */ - public static final int YYEOF = -1; - - /** lexical states */ - public static final int STRING = 1; - public static final int YYINITIAL = 0; - public static final int CHAR = 2; - - /** - * Translates characters to character classes - */ - private static final String ZZ_CMAP_PACKED = - "\11\0\1\2\1\1\1\0\1\2\23\0\1\2\1\5\1\10\1\0"+ - "\1\6\1\0\1\14\1\11\2\0\1\3\3\0\1\16\1\15\1\45"+ - "\1\50\1\51\7\6\2\0\1\12\1\13\1\12\2\0\1\25\1\37"+ - "\1\7\1\4\1\22\1\31\1\21\1\41\1\33\1\46\1\42\1\17"+ - "\1\36\1\24\1\26\1\35\1\23\1\27\1\32\1\20\1\30\1\6"+ - "\1\44\1\40\1\43\1\47\4\0\1\6\1\0\1\25\1\37\1\34"+ - "\1\4\1\22\1\31\1\21\1\41\1\33\1\46\1\42\1\17\1\36"+ - "\1\24\1\26\1\35\1\23\1\27\1\32\1\20\1\30\1\6\1\44"+ - "\1\40\1\43\1\47\uff85\0"; - - /** - * Translates characters to character classes - */ - private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); - - /** - * Translates DFA states to action switch labels. - */ - private static final int [] ZZ_ACTION = zzUnpackAction(); - - private static final String ZZ_ACTION_PACKED_0 = - "\1\0\2\1\1\2\1\3\1\4\1\5\1\6\1\7"+ - "\1\2\1\5\1\10\1\11\1\12\1\2\1\12\24\2"+ - "\1\1\1\13\1\14\1\1\1\15\1\16\7\2\1\17"+ - "\20\2\7\0\41\2\1\17\27\2\1\17\10\2\1\17"+ - "\3\2\4\0\2\17\3\2\2\17\20\2\1\17\10\2"+ - "\2\17\3\2\1\17\2\2\1\17\6\2\1\17\2\0"+ - "\3\2\1\17\4\2\1\17\26\2\1\0\20\2\1\20"+ - "\12\2\1\17"; - - private static int [] zzUnpackAction() { - int [] result = new int[257]; - int offset = 0; - offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAction(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /** - * Translates a state to a row index in the transition table - */ - private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); - - private static final String ZZ_ROWMAP_PACKED_0 = - "\0\0\0\52\0\124\0\176\0\176\0\250\0\176\0\322"+ - "\0\176\0\374\0\u0126\0\176\0\176\0\u0150\0\u0150\0\176"+ - "\0\u017a\0\u01a4\0\u01ce\0\u01f8\0\u0222\0\u024c\0\u0276\0\u02a0"+ - "\0\u02ca\0\u02f4\0\u031e\0\u0348\0\u0372\0\u0126\0\u039c\0\u03c6"+ - "\0\u03f0\0\u041a\0\u0444\0\u046e\0\u0498\0\176\0\176\0\u04c2"+ - "\0\176\0\176\0\u04ec\0\u0516\0\u0540\0\u056a\0\u0594\0\u05be"+ - "\0\u05e8\0\u0612\0\u063c\0\u0666\0\u0690\0\u06ba\0\u06e4\0\u070e"+ - "\0\u0738\0\u0762\0\u078c\0\u07b6\0\u07e0\0\u080a\0\u0834\0\u085e"+ - "\0\u0888\0\u08b2\0\u08dc\0\u0906\0\u0930\0\u095a\0\u0984\0\u09ae"+ - "\0\u09d8\0\u0a02\0\u0a2c\0\u0a56\0\u0a80\0\u0aaa\0\u0ad4\0\u0afe"+ - "\0\u0b28\0\u0b52\0\u0b7c\0\u0ba6\0\u0bd0\0\u0bfa\0\u0c24\0\u0c4e"+ - "\0\u0c78\0\u0ca2\0\u0ccc\0\u0cf6\0\u0d20\0\u0d4a\0\u0d74\0\u0d9e"+ - "\0\u0dc8\0\u0df2\0\u0e1c\0\u0e46\0\u0e70\0\u0e9a\0\u0ec4\0\u0eee"+ - "\0\u0f18\0\u0f42\0\u0f6c\0\u0f96\0\u0fc0\0\u0fea\0\u1014\0\u103e"+ - "\0\u1068\0\u1092\0\u10bc\0\u10e6\0\u1110\0\u113a\0\u1164\0\u118e"+ - "\0\u11b8\0\u11e2\0\u120c\0\u1236\0\u1260\0\u128a\0\u12b4\0\u12de"+ - "\0\u1308\0\u1332\0\u135c\0\u1386\0\u13b0\0\u13da\0\u1404\0\u142e"+ - "\0\u1458\0\u1482\0\u14ac\0\u14d6\0\u1500\0\u152a\0\u1554\0\u157e"+ - "\0\u15a8\0\u15d2\0\u15fc\0\374\0\u1626\0\u1650\0\u167a\0\u16a4"+ - "\0\u16ce\0\u16f8\0\u1722\0\u174c\0\u1776\0\u17a0\0\u17ca\0\u17f4"+ - "\0\u181e\0\u1848\0\u1872\0\u189c\0\u18c6\0\u18f0\0\u191a\0\u1944"+ - "\0\u196e\0\u1998\0\u19c2\0\u19ec\0\u1a16\0\u1a40\0\u1a6a\0\u16f8"+ - "\0\u1a94\0\u1abe\0\u1ae8\0\u1b12\0\u1b3c\0\u1b66\0\u1b90\0\u1bba"+ - "\0\u1be4\0\u1c0e\0\u1c38\0\u174c\0\u1c62\0\u1c8c\0\u1cb6\0\u1ce0"+ - "\0\u1d0a\0\u1d34\0\u1d5e\0\u1d88\0\u1db2\0\u1ddc\0\u1e06\0\u1e30"+ - "\0\u1e5a\0\u1e84\0\u1eae\0\u1ed8\0\u1f02\0\u1f2c\0\u1b12\0\u1f56"+ - "\0\u1f80\0\u1faa\0\u1fd4\0\u1ffe\0\u2028\0\u2052\0\u207c\0\u20a6"+ - "\0\u20d0\0\u20fa\0\u2124\0\u214e\0\u2178\0\u21a2\0\u21cc\0\u21f6"+ - "\0\u2220\0\u224a\0\u2274\0\u229e\0\u22c8\0\u22f2\0\u231c\0\u2346"+ - "\0\u2370\0\u239a\0\u23c4\0\u23ee\0\u2418\0\u2442\0\u246c\0\u2496"+ - "\0\u24c0\0\u24ea\0\u2514\0\u253e\0\u2568\0\176\0\u2592\0\u25bc"+ - "\0\u25e6\0\u2610\0\u263a\0\u2664\0\u268e\0\u26b8\0\u26e2\0\u270c"+ - "\0\u13da"; - - private static int [] zzUnpackRowMap() { - int [] result = new int[257]; - int offset = 0; - offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackRowMap(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int high = packed.charAt(i++) << 16; - result[j++] = high | packed.charAt(i++); - } - return j; - } - - /** - * The transition table of the DFA - */ - private static final int [] ZZ_TRANS = zzUnpackTrans(); - - private static final String ZZ_TRANS_PACKED_0 = - "\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13"+ - "\1\14\1\15\1\16\1\17\1\20\1\17\1\21\1\22"+ - "\1\23\1\24\1\25\1\12\1\26\1\27\1\30\1\31"+ - "\1\32\1\33\1\34\1\35\1\36\1\37\1\40\1\41"+ - "\2\12\1\42\1\12\1\43\2\12\1\44\2\12\1\45"+ - "\1\46\6\45\1\47\41\45\1\50\1\51\7\50\1\52"+ - "\40\50\54\0\1\6\53\0\1\53\1\0\1\12\1\54"+ - "\7\0\1\55\1\56\1\12\1\57\1\12\1\60\1\61"+ - "\1\62\1\63\1\12\1\64\1\65\1\66\1\54\1\67"+ - "\1\70\1\71\12\12\4\0\1\12\1\0\2\12\7\0"+ - "\33\12\4\0\1\12\1\0\1\12\1\72\7\0\1\73"+ - "\2\12\1\74\2\12\1\75\1\76\3\12\1\77\1\12"+ - "\1\72\1\12\1\100\2\12\1\101\1\12\1\102\6\12"+ - "\13\0\1\20\55\0\1\103\1\104\1\103\1\105\1\0"+ - "\1\106\1\107\1\110\2\0\1\111\24\0\1\12\1\0"+ - "\2\12\7\0\1\112\1\12\1\112\1\113\3\12\1\114"+ - "\23\12\4\0\1\12\1\0\2\12\7\0\6\12\1\115"+ - "\1\12\1\116\11\12\1\117\10\12\4\0\1\12\1\0"+ - "\2\12\7\0\7\12\1\120\23\12\4\0\1\12\1\0"+ - "\2\12\7\0\1\121\4\12\1\122\13\12\1\123\11\12"+ - "\4\0\1\12\1\0\2\12\7\0\7\12\1\124\4\12"+ - "\1\125\16\12\4\0\1\12\1\0\1\12\1\72\7\0"+ - "\1\126\1\127\3\12\1\60\5\12\1\130\1\131\1\72"+ - "\1\12\1\132\1\133\12\12\4\0\1\12\1\0\2\12"+ - "\7\0\16\12\1\117\14\12\4\0\1\12\1\0\2\12"+ - "\7\0\3\12\1\134\27\12\4\0\1\12\1\0\2\12"+ - "\7\0\13\12\1\135\17\12\4\0\1\12\1\0\2\12"+ - "\7\0\1\136\6\12\1\137\1\12\1\140\21\12\4\0"+ - "\1\12\1\0\2\12\7\0\1\12\1\141\1\12\1\142"+ - "\1\143\1\144\3\12\1\145\2\12\1\146\16\12\4\0"+ - "\1\147\1\0\1\12\1\150\7\0\5\12\1\151\1\152"+ - "\3\12\1\153\1\154\1\12\1\150\1\12\1\155\13\12"+ - "\4\0\1\12\1\0\2\12\7\0\6\12\1\156\1\12"+ - "\1\157\22\12\4\0\1\12\1\0\2\12\7\0\6\12"+ - "\1\160\1\161\4\12\1\162\16\12\4\0\1\12\1\0"+ - "\2\12\7\0\6\12\1\163\24\12\4\0\1\12\1\0"+ - "\2\12\7\0\14\12\1\164\16\12\4\0\1\12\1\0"+ - "\2\12\7\0\10\12\1\165\11\12\1\166\10\12\4\0"+ - "\1\12\1\0\2\12\7\0\3\12\1\167\27\12\1\45"+ - "\1\0\6\45\1\0\41\45\1\50\1\0\7\50\1\0"+ - "\40\50\4\0\1\12\1\0\2\12\7\0\14\12\1\170"+ - "\16\12\4\0\1\12\1\0\2\12\7\0\7\12\1\171"+ - "\7\12\1\100\13\12\4\0\1\12\1\0\2\12\7\0"+ - "\7\12\1\172\23\12\4\0\1\12\1\0\2\12\7\0"+ - "\6\12\1\115\24\12\4\0\1\12\1\0\2\12\7\0"+ - "\6\12\1\173\3\12\1\174\6\12\1\175\11\12\4\0"+ - "\1\12\1\0\2\12\7\0\14\12\1\125\16\12\4\0"+ - "\1\12\1\0\1\12\1\72\7\0\1\12\1\176\11\12"+ - "\1\130\1\12\1\72\2\12\1\133\12\12\4\0\1\12"+ - "\1\0\2\12\7\0\11\12\1\177\21\12\4\0\1\12"+ - "\1\0\2\12\7\0\3\12\1\200\27\12\4\0\1\12"+ - "\1\0\2\12\7\0\1\201\32\12\4\0\1\12\1\0"+ - "\2\12\7\0\4\12\1\143\7\12\1\146\16\12\4\0"+ - "\1\12\1\0\2\12\7\0\5\12\1\202\11\12\1\203"+ - "\13\12\4\0\1\12\1\0\2\12\7\0\10\12\1\204"+ - "\22\12\4\0\1\12\1\0\2\12\7\0\6\12\1\205"+ - "\1\206\4\12\1\207\16\12\4\0\1\12\1\0\2\12"+ - "\7\0\1\135\32\12\4\0\1\12\1\0\2\12\7\0"+ - "\7\12\1\133\23\12\4\0\1\12\1\0\2\12\7\0"+ - "\7\12\1\210\23\12\4\0\1\12\1\0\2\12\7\0"+ - "\14\12\1\211\16\12\4\0\1\12\1\0\2\12\7\0"+ - "\1\212\12\12\1\135\4\12\1\133\12\12\4\0\1\12"+ - "\1\0\2\12\7\0\5\12\1\213\5\12\1\214\3\12"+ - "\1\215\13\12\4\0\1\12\1\0\2\12\7\0\4\12"+ - "\1\143\7\12\1\113\16\12\4\0\1\12\1\0\2\12"+ - "\7\0\16\12\1\216\14\12\4\0\1\12\1\0\2\12"+ - "\7\0\6\12\1\217\24\12\4\0\1\12\1\0\1\12"+ - "\1\71\7\0\15\12\1\71\15\12\20\0\1\220\1\0"+ - "\1\220\56\0\1\221\45\0\1\220\50\0\1\220\53\0"+ - "\1\222\54\0\1\220\47\0\1\223\30\0\1\12\1\0"+ - "\2\12\7\0\1\12\1\224\1\12\1\224\27\12\4\0"+ - "\1\12\1\0\2\12\7\0\5\12\1\224\25\12\4\0"+ - "\1\12\1\0\2\12\7\0\2\12\1\225\30\12\4\0"+ - "\1\12\1\0\2\12\7\0\5\12\1\214\25\12\4\0"+ - "\1\12\1\0\2\12\7\0\6\12\1\226\24\12\4\0"+ - "\1\12\1\0\2\12\7\0\3\12\1\113\27\12\4\0"+ - "\1\12\1\0\2\12\7\0\1\12\1\227\31\12\4\0"+ - "\1\12\1\0\2\12\7\0\13\12\1\230\17\12\4\0"+ - "\1\231\1\0\2\12\7\0\33\12\4\0\1\12\1\0"+ - "\2\12\7\0\14\12\1\202\1\12\1\232\14\12\4\0"+ - "\1\12\1\0\2\12\7\0\5\12\1\135\25\12\4\0"+ - "\1\12\1\0\2\12\7\0\5\12\1\202\25\12\4\0"+ - "\1\12\1\0\2\12\7\0\1\233\6\12\1\172\23\12"+ - "\4\0\1\12\1\0\2\12\7\0\6\12\1\234\24\12"+ - "\4\0\1\12\1\0\2\12\7\0\14\12\1\113\16\12"+ - "\4\0\1\12\1\0\2\12\7\0\5\12\1\202\11\12"+ - "\1\235\13\12\4\0\1\12\1\0\2\12\7\0\6\12"+ - "\1\236\1\206\4\12\1\237\16\12\4\0\1\12\1\0"+ - "\2\12\7\0\13\12\1\224\17\12\4\0\1\12\1\0"+ - "\2\12\7\0\1\12\1\240\4\12\1\241\16\12\1\42"+ - "\5\12\4\0\1\12\1\0\2\12\7\0\3\12\1\224"+ - "\27\12\4\0\1\12\1\0\2\12\7\0\7\12\1\242"+ - "\23\12\4\0\1\12\1\0\2\12\7\0\10\12\1\243"+ - "\22\12\4\0\1\12\1\0\2\12\7\0\5\12\1\244"+ - "\25\12\4\0\1\12\1\0\2\12\7\0\7\12\1\175"+ - "\23\12\4\0\1\12\1\0\2\12\7\0\1\245\32\12"+ - "\4\0\1\12\1\0\2\12\7\0\10\12\1\202\22\12"+ - "\4\0\1\12\1\0\2\12\7\0\2\12\1\212\30\12"+ - "\4\0\1\12\1\0\2\12\7\0\20\12\1\246\12\12"+ - "\4\0\1\12\1\0\2\12\7\0\2\12\1\113\2\12"+ - "\1\214\25\12\4\0\1\12\1\0\2\12\7\0\5\12"+ - "\1\60\6\12\1\247\16\12\4\0\1\12\1\0\2\12"+ - "\7\0\22\12\1\250\10\12\4\0\1\251\1\0\1\12"+ - "\1\252\7\0\1\12\1\253\2\12\1\254\10\12\1\252"+ - "\15\12\4\0\1\12\1\0\2\12\7\0\20\12\1\133"+ - "\12\12\4\0\1\12\1\0\2\12\7\0\14\12\1\255"+ - "\16\12\4\0\1\12\1\0\2\12\7\0\14\12\1\256"+ - "\16\12\4\0\1\12\1\0\2\12\7\0\6\12\1\257"+ - "\7\12\1\260\14\12\4\0\1\12\1\0\2\12\7\0"+ - "\10\12\1\261\1\32\21\12\4\0\1\12\1\0\2\12"+ - "\7\0\3\12\1\262\3\12\1\263\4\12\1\125\16\12"+ - "\4\0\1\12\1\0\2\12\7\0\21\12\1\264\11\12"+ - "\4\0\1\265\1\0\2\12\7\0\33\12\4\0\1\12"+ - "\1\0\2\12\7\0\5\12\1\264\25\12\4\0\1\12"+ - "\1\0\1\12\1\266\7\0\15\12\1\266\15\12\4\0"+ - "\1\12\1\0\2\12\7\0\5\12\1\206\25\12\4\0"+ - "\1\12\1\0\2\12\7\0\14\12\1\267\16\12\4\0"+ - "\1\12\1\0\2\12\7\0\3\12\1\270\10\12\1\71"+ - "\16\12\4\0\1\12\1\0\2\12\7\0\21\12\1\202"+ - "\11\12\4\0\1\12\1\0\2\12\7\0\17\12\1\224"+ - "\13\12\4\0\1\12\1\0\2\12\7\0\13\12\1\214"+ - "\17\12\4\0\1\12\1\0\2\12\7\0\2\12\1\271"+ - "\30\12\4\0\1\12\1\0\2\12\7\0\1\272\32\12"+ - "\4\0\1\12\1\0\2\12\7\0\6\12\1\273\24\12"+ - "\4\0\1\12\1\0\2\12\7\0\16\12\1\224\14\12"+ - "\4\0\1\12\1\0\2\12\7\0\6\12\1\274\24\12"+ - "\4\0\1\12\1\0\2\12\7\0\20\12\1\71\12\12"+ - "\4\0\1\12\1\0\2\12\7\0\6\12\1\212\24\12"+ - "\4\0\1\12\1\0\2\12\7\0\7\12\1\275\23\12"+ - "\4\0\1\12\1\0\2\12\7\0\1\12\1\224\31\12"+ - "\4\0\1\12\1\0\2\12\7\0\3\12\1\276\27\12"+ - "\4\0\1\12\1\0\2\12\7\0\7\12\1\206\23\12"+ - "\4\0\1\12\1\0\2\12\7\0\21\12\1\277\11\12"+ - "\4\0\1\224\1\0\2\12\7\0\33\12\4\0\1\12"+ - "\1\0\2\12\7\0\5\12\1\277\25\12\4\0\1\12"+ - "\1\0\2\12\7\0\2\12\1\224\10\12\1\135\17\12"+ - "\4\0\1\12\1\0\2\12\7\0\1\300\32\12\4\0"+ - "\1\12\1\0\2\12\7\0\1\224\32\12\4\0\1\12"+ - "\1\0\2\12\7\0\1\12\1\301\25\12\1\257\3\12"+ - "\4\0\1\12\1\0\2\12\7\0\22\12\1\224\10\12"+ - "\4\0\1\12\1\0\2\12\7\0\16\12\1\302\14\12"+ - "\4\0\1\12\1\0\2\12\7\0\1\255\32\12\4\0"+ - "\1\12\1\0\2\12\7\0\10\12\1\303\22\12\16\0"+ - "\1\20\63\0\1\304\25\0\1\220\64\0\1\305\36\0"+ - "\1\12\1\0\2\12\7\0\14\12\1\306\14\12\1\307"+ - "\1\12\4\0\1\12\1\0\2\12\7\0\5\12\1\310"+ - "\25\12\4\0\1\12\1\0\2\12\7\0\7\12\1\224"+ - "\23\12\4\0\1\12\1\0\2\12\7\0\3\12\1\311"+ - "\27\12\4\0\1\227\1\0\2\12\7\0\12\12\1\312"+ - "\1\12\1\313\16\12\4\0\1\12\1\0\2\12\7\0"+ - "\1\314\32\12\4\0\1\12\1\0\2\12\7\0\7\12"+ - "\1\315\23\12\4\0\1\12\1\0\2\12\7\0\5\12"+ - "\1\316\25\12\4\0\1\12\1\0\2\12\7\0\6\12"+ - "\1\257\24\12\4\0\1\12\1\0\2\12\7\0\21\12"+ - "\1\317\11\12\4\0\1\12\1\0\2\12\7\0\5\12"+ - "\1\317\25\12\4\0\1\12\1\0\2\12\7\0\11\12"+ - "\1\320\21\12\4\0\1\224\1\0\2\12\7\0\1\224"+ - "\32\12\4\0\1\12\1\0\2\12\7\0\6\12\1\202"+ - "\1\321\23\12\4\0\1\12\1\0\2\12\7\0\6\12"+ - "\1\322\10\12\1\275\13\12\4\0\1\12\1\0\1\12"+ - "\1\323\7\0\15\12\1\323\15\12\4\0\1\12\1\0"+ - "\2\12\7\0\3\12\1\324\27\12\4\0\1\12\1\0"+ - "\2\12\7\0\10\12\1\325\22\12\4\0\1\12\1\0"+ - "\2\12\7\0\5\12\1\202\11\12\1\224\13\12\4\0"+ - "\1\12\1\0\2\12\7\0\6\12\1\321\24\12\4\0"+ - "\1\12\1\0\2\12\7\0\3\12\1\255\27\12\4\0"+ - "\1\12\1\0\2\12\7\0\1\326\32\12\4\0\1\12"+ - "\1\0\2\12\7\0\3\12\1\327\27\12\4\0\1\12"+ - "\1\0\2\12\7\0\11\12\1\330\21\12\4\0\1\12"+ - "\1\0\2\12\7\0\21\12\1\224\11\12\4\0\1\12"+ - "\1\0\2\12\7\0\2\12\1\113\30\12\4\0\1\12"+ - "\1\0\2\12\7\0\2\12\1\224\30\12\4\0\1\12"+ - "\1\0\2\12\7\0\6\12\1\331\24\12\4\0\1\12"+ - "\1\0\1\12\1\332\7\0\15\12\1\332\15\12\4\0"+ - "\1\12\1\0\2\12\7\0\2\12\1\333\30\12\4\0"+ - "\1\12\1\0\2\12\7\0\26\12\1\224\2\12\1\224"+ - "\1\12\4\0\1\12\1\0\2\12\7\0\11\12\1\334"+ - "\21\12\4\0\1\12\1\0\2\12\7\0\23\12\1\335"+ - "\7\12\4\0\1\12\1\0\2\12\7\0\1\12\1\135"+ - "\31\12\4\0\1\12\1\0\2\12\7\0\10\12\1\135"+ - "\22\12\4\0\1\12\1\0\2\12\7\0\31\12\1\307"+ - "\1\12\4\0\1\12\1\0\2\12\7\0\1\336\32\12"+ - "\4\0\1\12\1\0\2\12\7\0\11\12\1\337\21\12"+ - "\4\0\1\12\1\0\2\12\7\0\6\12\1\202\24\12"+ - "\4\0\1\12\1\0\2\12\7\0\5\12\1\340\25\12"+ - "\4\0\1\12\1\0\2\12\7\0\31\12\1\224\1\12"+ - "\4\0\1\12\1\0\2\12\7\0\14\12\1\341\16\12"+ - "\4\0\1\12\1\0\2\12\7\0\6\12\1\342\5\12"+ - "\1\343\16\12\4\0\1\12\1\0\2\12\7\0\1\251"+ - "\32\12\4\0\1\12\1\0\2\12\7\0\6\12\1\344"+ - "\24\12\22\0\1\345\61\0\1\304\23\0\1\12\1\0"+ - "\1\12\1\200\7\0\15\12\1\200\15\12\4\0\1\12"+ - "\1\0\2\12\7\0\26\12\1\224\4\12\4\0\1\12"+ - "\1\0\2\12\7\0\13\12\1\346\17\12\4\0\1\12"+ - "\1\0\2\12\7\0\14\12\1\313\10\12\1\347\5\12"+ - "\4\0\1\12\1\0\2\12\7\0\14\12\1\71\16\12"+ - "\4\0\1\12\1\0\2\12\7\0\12\12\1\224\20\12"+ - "\4\0\1\12\1\0\2\12\7\0\14\12\1\350\16\12"+ - "\4\0\1\12\1\0\1\12\1\351\7\0\15\12\1\351"+ - "\15\12\4\0\1\12\1\0\2\12\7\0\32\12\1\224"+ - "\4\0\1\12\1\0\2\12\7\0\10\12\1\113\22\12"+ - "\4\0\1\12\1\0\2\12\7\0\10\12\1\224\22\12"+ - "\4\0\1\12\1\0\2\12\7\0\1\212\32\12\4\0"+ - "\1\12\1\0\2\12\7\0\1\12\1\352\31\12\4\0"+ - "\1\12\1\0\1\12\1\202\7\0\15\12\1\202\15\12"+ - "\4\0\1\12\1\0\2\12\7\0\7\12\1\353\23\12"+ - "\4\0\1\12\1\0\2\12\7\0\11\12\1\354\21\12"+ - "\4\0\1\12\1\0\2\12\7\0\2\12\1\355\30\12"+ - "\4\0\1\12\1\0\2\12\7\0\14\12\1\270\16\12"+ - "\4\0\1\12\1\0\2\12\7\0\17\12\1\356\13\12"+ - "\4\0\1\12\1\0\2\12\7\0\14\12\1\340\16\12"+ - "\4\0\1\12\1\0\2\12\7\0\10\12\1\357\22\12"+ - "\4\0\1\12\1\0\2\12\7\0\1\360\32\12\4\0"+ - "\1\12\1\0\2\12\7\0\13\12\1\361\17\12\4\0"+ - "\1\12\1\0\2\12\7\0\7\12\1\362\23\12\4\0"+ - "\1\12\1\0\2\12\7\0\1\202\32\12\4\0\1\12"+ - "\1\0\2\12\7\0\13\12\1\352\17\12\4\0\1\12"+ - "\1\0\2\12\7\0\5\12\1\257\25\12\4\0\1\12"+ - "\1\0\2\12\7\0\14\12\1\363\16\12\4\0\1\12"+ - "\1\0\2\12\7\0\5\12\1\364\25\12\4\0\1\12"+ - "\1\0\1\12\1\365\7\0\15\12\1\365\15\12\16\0"+ - "\1\366\37\0\1\12\1\0\2\12\7\0\12\12\1\355"+ - "\20\12\4\0\1\12\1\0\2\12\7\0\22\12\1\367"+ - "\10\12\4\0\1\12\1\0\1\12\1\370\7\0\15\12"+ - "\1\370\15\12\4\0\1\12\1\0\2\12\7\0\6\12"+ - "\1\371\24\12\4\0\1\12\1\0\2\12\7\0\14\12"+ - "\1\372\16\12\4\0\1\12\1\0\2\12\7\0\11\12"+ - "\1\373\21\12\4\0\1\135\1\0\2\12\7\0\33\12"+ - "\4\0\1\12\1\0\2\12\7\0\3\12\1\321\27\12"+ - "\4\0\1\12\1\0\2\12\7\0\3\12\1\365\27\12"+ - "\4\0\1\12\1\0\2\12\7\0\6\12\1\170\24\12"+ - "\4\0\1\12\1\0\2\12\7\0\3\12\1\224\3\12"+ - "\1\224\23\12\4\0\1\12\1\0\2\12\7\0\16\12"+ - "\1\374\14\12\4\0\1\12\1\0\1\12\1\375\7\0"+ - "\15\12\1\375\15\12\4\0\1\12\1\0\2\12\7\0"+ - "\5\12\1\133\25\12\4\0\1\12\1\0\2\12\7\0"+ - "\11\12\1\135\21\12\4\0\1\12\1\0\2\12\7\0"+ - "\1\12\1\355\31\12\4\0\1\12\1\0\2\12\7\0"+ - "\3\12\1\270\27\12\4\0\1\12\1\0\2\12\7\0"+ - "\14\12\1\202\16\12\4\0\1\12\1\0\2\12\7\0"+ - "\1\12\1\376\31\12\4\0\1\12\1\0\2\12\7\0"+ - "\7\12\1\113\23\12\4\0\1\12\1\0\2\12\7\0"+ - "\1\12\1\377\31\12\4\0\1\12\1\0\2\12\7\0"+ - "\6\12\1\u0100\24\12\4\0\1\12\1\0\2\12\7\0"+ - "\6\12\1\267\24\12\4\0\1\12\1\0\2\12\7\0"+ - "\3\12\1\u0101\2\12\1\177\24\12\4\0\1\12\1\0"+ - "\2\12\7\0\14\12\1\124\16\12\4\0\1\12\1\0"+ - "\1\12\1\135\7\0\15\12\1\135\15\12"; - - private static int [] zzUnpackTrans() { - int [] result = new int[10038]; - int offset = 0; - offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackTrans(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - value--; - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /* error codes */ - private static final int ZZ_UNKNOWN_ERROR = 0; - private static final int ZZ_NO_MATCH = 1; - private static final int ZZ_PUSHBACK_2BIG = 2; - - /* error messages for the codes above */ - private static final String ZZ_ERROR_MSG[] = { - "Unkown internal scanner error", - "Error: could not match input", - "Error: pushback value was too large" - }; - - /** - * ZZ_ATTRIBUTE[aState] contains the attributes of state aState - */ - private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); - - private static final String ZZ_ATTRIBUTE_PACKED_0 = - "\1\0\2\1\2\11\1\1\1\11\1\1\1\11\2\1"+ - "\2\11\2\1\1\11\25\1\2\11\1\1\2\11\30\1"+ - "\7\0\106\1\4\0\60\1\2\0\37\1\1\0\20\1"+ - "\1\11\13\1"; - - private static int [] zzUnpackAttribute() { - int [] result = new int[257]; - int offset = 0; - offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAttribute(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - /** the input device */ - private java.io.Reader zzReader; - - /** the current state of the DFA */ - private int zzState; - - /** the current lexical state */ - private int zzLexicalState = YYINITIAL; - - /** this buffer contains the current text to be matched and is - the source of the yytext() string */ - private char zzBuffer[]; - - /** the textposition at the last accepting state */ - private int zzMarkedPos; - - /** the current text position in the buffer */ - private int zzCurrentPos; - - /** startRead marks the beginning of the yytext() string in the buffer */ - private int zzStartRead; - - /** endRead marks the last character in the buffer, that has been read - from input */ - private int zzEndRead; - - /** zzAtEOF == true <=> the scanner is at the EOF */ - private boolean zzAtEOF; - - /* user code: */ - - - /** - * Constructor. We must have this here as there is no default, - * no-parameter constructor generated by JFlex. - */ - public FortranTokenMaker() { - super(); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, int startOffset) { - super.addToken(array, start,end, tokenType, startOffset); - zzStartRead = zzMarkedPos; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { "!", null }; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - - // Start off in the proper state. - int state = Token.NULL; - switch (initialTokenType) { - case Token.LITERAL_STRING_DOUBLE_QUOTE: - state = STRING; - start = text.offset; - break; - case Token.LITERAL_CHAR: - state = CHAR; - start = text.offset; - break; - default: - state = Token.NULL; - } - - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtEOF = false; - } - - - - - /** - * Creates a new scanner - * There is also a java.io.InputStream version of this constructor. - * - * @param in the java.io.Reader to read input from. - */ - public FortranTokenMaker(java.io.Reader in) { - this.zzReader = in; - } - - /** - * Creates a new scanner. - * There is also java.io.Reader version of this constructor. - * - * @param in the java.io.Inputstream to read input from. - */ - public FortranTokenMaker(java.io.InputStream in) { - this(new java.io.InputStreamReader(in)); - } - - /** - * Unpacks the compressed character translation table. - * - * @param packed the packed character translation table - * @return the unpacked character translation table - */ - private static char [] zzUnpackCMap(String packed) { - char [] map = new char[0x10000]; - int i = 0; /* index in packed string */ - int j = 0; /* index in unpacked array */ - while (i < 168) { - int count = packed.charAt(i++); - char value = packed.charAt(i++); - do map[j++] = value; while (--count > 0); - } - return map; - } - - - /** - * Closes the input stream. - */ - public final void yyclose() throws java.io.IOException { - zzAtEOF = true; /* indicate end of file */ - zzEndRead = zzStartRead; /* invalidate buffer */ - - if (zzReader != null) - zzReader.close(); - } - - - /** - * Returns the current lexical state. - */ - public final int yystate() { - return zzLexicalState; - } - - - /** - * Enters a new lexical state - * - * @param newState the new lexical state - */ - @Override -public final void yybegin(int newState) { - zzLexicalState = newState; - } - - - /** - * Returns the text matched by the current regular expression. - */ - public final String yytext() { - return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead ); - } - - - /** - * Returns the character at position pos from the - * matched text. - * - * It is equivalent to yytext().charAt(pos), but faster - * - * @param pos the position of the character to fetch. - * A value from 0 to yylength()-1. - * - * @return the character at position pos - */ - public final char yycharat(int pos) { - return zzBuffer[zzStartRead+pos]; - } - - - /** - * Returns the length of the matched text region. - */ - public final int yylength() { - return zzMarkedPos-zzStartRead; - } - - - /** - * Reports an error that occured while scanning. - * - * In a wellformed scanner (no or only correct usage of - * yypushback(int) and a match-all fallback rule) this method - * will only be called with things that "Can't Possibly Happen". - * If this method is called, something is seriously wrong - * (e.g. a JFlex bug producing a faulty scanner etc.). - * - * Usual syntax/scanner level error handling should be done - * in error fallback rules. - * - * @param errorCode the code of the errormessage to display - */ - private void zzScanError(int errorCode) { - String message; - try { - message = ZZ_ERROR_MSG[errorCode]; - } - catch (ArrayIndexOutOfBoundsException e) { - message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; - } - - throw new Error(message); - } - - - /** - * Pushes the specified amount of characters back into the input stream. - * - * They will be read again by then next call of the scanning method - * - * @param number the number of characters to be read again. - * This number must not be greater than yylength()! - */ - public void yypushback(int number) { - if ( number > yylength() ) - zzScanError(ZZ_PUSHBACK_2BIG); - - zzMarkedPos -= number; - } - - - /** - * Resumes scanning until the next regular expression is matched, - * the end of input is encountered or an I/O-Error occurs. - * - * @return the next token - * @exception java.io.IOException if any I/O-Error occurs - */ - public org.fife.ui.rsyntaxtextarea.Token yylex() throws java.io.IOException { - int zzInput; - int zzAction; - - // cached fields: - int zzCurrentPosL; - int zzMarkedPosL; - int zzEndReadL = zzEndRead; - char [] zzBufferL = zzBuffer; - char [] zzCMapL = ZZ_CMAP; - - int [] zzTransL = ZZ_TRANS; - int [] zzRowMapL = ZZ_ROWMAP; - int [] zzAttrL = ZZ_ATTRIBUTE; - - while (true) { - zzMarkedPosL = zzMarkedPos; - - zzAction = -1; - - zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; - - zzState = zzLexicalState; - - - zzForAction: { - while (true) { - - if (zzCurrentPosL < zzEndReadL) - zzInput = zzBufferL[zzCurrentPosL++]; - else if (zzAtEOF) { - zzInput = YYEOF; - break zzForAction; - } - else { - // store back cached positions - zzCurrentPos = zzCurrentPosL; - zzMarkedPos = zzMarkedPosL; - boolean eof = zzRefill(); - // get translated positions and possibly new buffer - zzCurrentPosL = zzCurrentPos; - zzMarkedPosL = zzMarkedPos; - zzBufferL = zzBuffer; - zzEndReadL = zzEndRead; - if (eof) { - zzInput = YYEOF; - break zzForAction; - } - else { - zzInput = zzBufferL[zzCurrentPosL++]; - } - } - int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; - if (zzNext == -1) break zzForAction; - zzState = zzNext; - - int zzAttributes = zzAttrL[zzState]; - if ( (zzAttributes & 1) == 1 ) { - zzAction = zzState; - zzMarkedPosL = zzCurrentPosL; - if ( (zzAttributes & 8) == 8 ) break zzForAction; - } - - } - } - - // store back cached position - zzMarkedPos = zzMarkedPosL; - - switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { - case 15: - { addToken(Token.RESERVED_WORD); - } - case 17: break; - case 2: - { addToken(Token.IDENTIFIER); - } - case 18: break; - case 4: - { addToken(Token.WHITESPACE); - } - case 19: break; - case 11: - { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); return firstToken; - } - case 20: break; - case 13: - { addToken(start,zzStartRead-1, Token.LITERAL_CHAR); return firstToken; - } - case 21: break; - case 10: - { addToken(Token.OPERATOR); - } - case 22: break; - case 5: - { // Since we change zzStartRead, we have the unfortunate - // side-effect of not being able to use the '^' operator. - // So we must check whether we're really at the beginning - // of the line ourselves... - if (zzStartRead==s.offset) { - addToken(zzStartRead,zzEndRead, Token.COMMENT_EOL); - addNullToken(); - return firstToken; - } - else { - addToken(Token.IDENTIFIER); - } - } - case 23: break; - case 16: - { addToken(Token.LITERAL_BOOLEAN); - } - case 24: break; - case 8: - { start = zzMarkedPos-1; yybegin(STRING); - } - case 25: break; - case 7: - { addToken(zzStartRead,zzEndRead, Token.COMMENT_EOL); addNullToken(); return firstToken; - } - case 26: break; - case 6: - { // Since we change zzStartRead, we have the unfortunate - // side-effect of not being able to use the '^' operator. - // So we must check whether we're really at the beginning - // of the line ourselves... - if (zzStartRead==s.offset) { - addToken(zzStartRead,zzEndRead, Token.COMMENT_DOCUMENTATION); - addNullToken(); - return firstToken; - } - else { - addToken(Token.IDENTIFIER); - } - } - case 27: break; - case 9: - { start = zzMarkedPos-1; yybegin(CHAR); - } - case 28: break; - case 14: - { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_CHAR); - } - case 29: break; - case 12: - { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); - } - case 30: break; - case 3: - { addNullToken(); return firstToken; - } - case 31: break; - case 1: - { - } - case 32: break; - default: - if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { - zzAtEOF = true; - switch (zzLexicalState) { - case STRING: { - addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); return firstToken; - } - case 258: break; - case YYINITIAL: { - addNullToken(); return firstToken; - } - case 259: break; - case CHAR: { - addToken(start,zzStartRead-1, Token.LITERAL_CHAR); return firstToken; - } - case 260: break; - default: - return null; - } - } - else { - zzScanError(ZZ_NO_MATCH); - } - } - } - } - - -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/GroovyTokenMaker.flex b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/GroovyTokenMaker.flex deleted file mode 100644 index cf174cc..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/GroovyTokenMaker.flex +++ /dev/null @@ -1,930 +0,0 @@ -/* - * 09/28/2007 - * - * GroovyTokenMaker.java - Scanner for the Groovy programming language. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * Scanner for the Groovy programming language.

- * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated GroovyTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.5 - * - */ -%% - -%public -%class GroovyTokenMaker -%extends AbstractJFlexCTokenMaker -%unicode -%type org.fife.ui.rsyntaxtextarea.Token - - -%{ - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public GroovyTokenMaker() { - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addToken(int, int, int) - */ - private void addHyperlinkToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, true); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, int startOffset) { - super.addToken(array, start,end, tokenType, startOffset); - zzStartRead = zzMarkedPos; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { "//", null }; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - - // Start off in the proper state. - int state = Token.NULL; - switch (initialTokenType) { - case Token.LITERAL_STRING_DOUBLE_QUOTE: - state = MULTILINE_STRING_DOUBLE; - start = text.offset; - break; - case Token.LITERAL_CHAR: - state = MULTILINE_STRING_SINGLE; - start = text.offset; - break; - case Token.COMMENT_MULTILINE: - state = MLC; - start = text.offset; - break; - case Token.COMMENT_DOCUMENTATION: - state = DOCCOMMENT; - start = text.offset; - break; - default: - state = Token.NULL; - } - - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Returns whether a regular expression token can follow the specified - * token. - * - * @param t The token to check, which may be null. - * @return Whether a regular expression token may follow this one. - */ - private static final boolean regexCanFollow(Token t) { - char ch; - return t==null || - //t.isOperator() || - (t.length()==1 && ( - (ch=t.charAt(0))=='=' || - ch=='(' || - ch==',' || - ch=='?' || - ch==':' || - ch=='[' - )) || - /* Operators "==", "===", "!=", "!==", etc. */ - (t.getType()==Token.OPERATOR && - ((ch=t.charAt(t.length()-1))=='=' || ch=='~')); - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(java.io.Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = zzPushbackPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtBOL = true; - zzAtEOF = false; - } - - -%} - -Letter = [A-Za-z] -LetterOrUnderscore = ({Letter}|"_") -NonzeroDigit = [1-9] -BinaryDigit = ([0-1]) -Digit = ("0"|{NonzeroDigit}) -HexDigit = ({Digit}|[A-Fa-f]) -OctalDigit = ([0-7]) -AnyCharacterButApostropheOrBackSlash = ([^\\']) -EscapedSourceCharacter = ("u"{HexDigit}{HexDigit}{HexDigit}{HexDigit}) -Escape = ("\\"(([btnfr\"'\\])|([0123]{OctalDigit}?{OctalDigit}?)|({OctalDigit}{OctalDigit}?)|{EscapedSourceCharacter})) -NonSeparator = ([^\t\f\r\n\ \(\)\{\}\[\]\;\,\.\=\>\<\!\~\?\:\+\-\*\/\&\|\^\%\"\']|"#"|"\\") -IdentifierStart = ({LetterOrUnderscore}|"$") -IdentifierPart = ({IdentifierStart}|{Digit}|("\\"{EscapedSourceCharacter})) - -LineTerminator = (\n) -WhiteSpace = ([ \t\f]) - -CharLiteral = ([\']({AnyCharacterButApostropheOrBackSlash}|{Escape})*[\']) -UnclosedCharLiteral = ([\'][^\'\n]*) -ErrorCharLiteral = ({UnclosedCharLiteral}[\']) - -MLCBegin = "/*" -MLCEnd = "*/" -DocCommentBegin = "/**" -LineCommentBegin = "//" - -DigitOrUnderscore = ({Digit}|[_]) -DigitsAndUnderscoresEnd = ({DigitOrUnderscore}*{Digit}) -IntegerHelper = (({NonzeroDigit}{DigitsAndUnderscoresEnd}?)|"0") -IntegerLiteral = ({IntegerHelper}[lL]?) - -BinaryDigitOrUnderscore = ({BinaryDigit}|[_]) -BinaryDigitsAndUnderscores = ({BinaryDigit}({BinaryDigitOrUnderscore}*{BinaryDigit})?) -BinaryLiteral = ("0"[bB]{BinaryDigitsAndUnderscores}) - -HexDigitOrUnderscore = ({HexDigit}|[_]) -HexDigitsAndUnderscores = ({HexDigit}({HexDigitOrUnderscore}*{HexDigit})?) -OctalDigitOrUnderscore = ({OctalDigit}|[_]) -OctalDigitsAndUnderscoresEnd= ({OctalDigitOrUnderscore}*{OctalDigit}) -HexHelper = ("0"(([xX]{HexDigitsAndUnderscores})|({OctalDigitsAndUnderscoresEnd}))) -HexLiteral = ({HexHelper}[lL]?) - -FloatHelper1 = ([fFdD]?) -FloatHelper2 = ([eE][+-]?{Digit}+{FloatHelper1}) -FloatLiteral1 = ({Digit}+"."({FloatHelper1}|{FloatHelper2}|{Digit}+({FloatHelper1}|{FloatHelper2}))) -FloatLiteral2 = ("."{Digit}+({FloatHelper1}|{FloatHelper2})) -FloatLiteral3 = ({Digit}+{FloatHelper2}) -FloatLiteral = ({FloatLiteral1}|{FloatLiteral2}|{FloatLiteral3}|({Digit}+[fFdD])) - -ErrorNumberFormat = (({IntegerLiteral}|{HexLiteral}|{FloatLiteral}){NonSeparator}+) -BooleanLiteral = ("true"|"false") -Regex = ([~]?"/"([^\*\\/]|\\.)([^/\\]|\\.)*"/") - -Separator = ([\(\)\{\}\[\]]) -Separator2 = ([\;,.]) - -NonAssignmentOperator = ("+"|"-"|"<="|"^"|"++"|"<"|"*"|">="|"%"|"--"|">"|"/"|"!="|"?"|">>"|"!"|"&"|"=="|":"|">>"|"~"|"|"|"&&"|">>>") -AssignmentOperator = ("="|"-="|"*="|"/="|"|="|"&="|"^="|"+="|"%="|"<<="|">>="|">>>=") -GroovyOperator = ("=~") -Operator = ({NonAssignmentOperator}|{AssignmentOperator}|{GroovyOperator}) - -CurrentBlockTag = ("author"|"deprecated"|"exception"|"param"|"return"|"see"|"serial"|"serialData"|"serialField"|"since"|"throws"|"version") -ProposedBlockTag = ("category"|"example"|"tutorial"|"index"|"exclude"|"todo"|"internal"|"obsolete"|"threadsafety") -BlockTag = ({CurrentBlockTag}|{ProposedBlockTag}) -InlineTag = ("code"|"docRoot"|"inheritDoc"|"link"|"linkplain"|"literal"|"value") - -Identifier = ({IdentifierStart}{IdentifierPart}*) -ErrorIdentifier = ({NonSeparator}+) - -// Variables in strings -VariableStart = ([\$]) -BracedVariable = ({VariableStart}\{[^\}]+\}) -UnbracedVariable = ({VariableStart}{Identifier}) -Variable = ({BracedVariable}|{UnbracedVariable}) - -Annotation = ("@"{Identifier}?) - -URLGenDelim = ([:\/\?#\[\]@]) -URLSubDelim = ([\!\$&'\(\)\*\+,;=]) -URLUnreserved = ({LetterOrUnderscore}|{Digit}|[\-\.\~]) -URLCharacter = ({URLGenDelim}|{URLSubDelim}|{URLUnreserved}|[%]) -URLCharacters = ({URLCharacter}*) -URLEndCharacter = ([\/\$]|{Letter}|{Digit}) -URL = (((https?|f(tp|ile))"://"|"www.")({URLCharacters}{URLEndCharacter})?) - -%state MLC -%state DOCCOMMENT -%state EOL_COMMENT -%state MULTILINE_STRING_DOUBLE -%state MULTILINE_STRING_SINGLE -%state STRING_DOUBLE - -%% - - { - - /* Keywords */ - "abstract" | - "break" | - "case" | - "catch" | - "class" | - "const" | - "continue" | - "default" | - "do" | - "else" | - "enum" | - "extends" | - "final" | - "finally" | - "for" | - "goto" | - "if" | - "it" | - "implements" | - "import" | - "instanceof" | - "interface" | - "native" | - "new" | - "null" | - "package" | - "private" | - "protected" | - "public" | - "static" | - "strictfp" | - "super" | - "switch" | - "synchronized" | - "this" | - "throw" | - "throws" | - "transient" | - "try" | - "void" | - "volatile" | - "while" { addToken(Token.RESERVED_WORD); } - "return" { addToken(Token.RESERVED_WORD_2); } - - /* Groovy keywords */ - "as" | - "assert" | - "def" | - "mixin" | - "property" | - "test" | - "using" | - "in" { addToken(Token.RESERVED_WORD); } - - /* Data types. */ - "boolean" | - "byte" | - "char" | - "double" | - "float" | - "int" | - "long" | - "short" { addToken(Token.DATA_TYPE); } - - /* Booleans. */ - {BooleanLiteral} { addToken(Token.LITERAL_BOOLEAN); } - - /* java.lang classes */ - "Appendable" | - "AutoCloseable" | - "CharSequence" | - "Cloneable" | - "Comparable" | - "Iterable" | - "Readable" | - "Runnable" | - "Thread.UncaughtExceptionHandler" | - "Boolean" | - "Byte" | - "Character" | - "Character.Subset" | - "Character.UnicodeBlock" | - "Class" | - "ClassLoader" | - "ClassValue" | - "Compiler" | - "Double" | - "Enum" | - "Float" | - "InheritableThreadLocal" | - "Integer" | - "Long" | - "Math" | - "Number" | - "Object" | - "Package" | - "Process" | - "ProcessBuilder" | - "ProcessBuilder.Redirect" | - "Runtime" | - "RuntimePermission" | - "SecurityManager" | - "Short" | - "StackTraceElement" | - "StrictMath" | - "String" | - "StringBuffer" | - "StringBuilder" | - "System" | - "Thread" | - "ThreadGroup" | - "ThreadLocal" | - "Throwable" | - "Void" | - "Character.UnicodeScript" | - "ProcessBuilder.Redirect.Type" | - "Thread.State" | - "ArithmeticException" | - "ArrayIndexOutOfBoundsException" | - "ArrayStoreException" | - "ClassCastException" | - "ClassNotFoundException" | - "CloneNotSupportedException" | - "EnumConstantNotPresentException" | - "Exception" | - "IllegalAccessException" | - "IllegalArgumentException" | - "IllegalMonitorStateException" | - "IllegalStateException" | - "IllegalThreadStateException" | - "IndexOutOfBoundsException" | - "InstantiationException" | - "InterruptedException" | - "NegativeArraySizeException" | - "NoSuchFieldException" | - "NoSuchMethodException" | - "NullPointerException" | - "NumberFormatException" | - "RuntimeException" | - "SecurityException" | - "StringIndexOutOfBoundsException" | - "TypeNotPresentException" | - "UnsupportedOperationException" | - "AbstractMethodError" | - "AssertionError" | - "BootstrapMethodError" | - "ClassCircularityError" | - "ClassFormatError" | - "Error" | - "ExceptionInInitializerError" | - "IllegalAccessError" | - "IncompatibleClassChangeError" | - "InstantiationError" | - "InternalError" | - "LinkageError" | - "NoClassDefFoundError" | - "NoSuchFieldError" | - "NoSuchMethodError" | - "OutOfMemoryError" | - "StackOverflowError" | - "ThreadDeath" | - "UnknownError" | - "UnsatisfiedLinkError" | - "UnsupportedClassVersionError" | - "VerifyError" | - "VirtualMachineError" | - - /* java.io classes*/ - "Closeable" | - "DataInput" | - "DataOutput" | - "Externalizable" | - "FileFilter" | - "FilenameFilter" | - "Flushable" | - "ObjectInput" | - "ObjectInputValidation" | - "ObjectOutput" | - "ObjectStreamConstants" | - "Serializable" | - - "BufferedInputStream" | - "BufferedOutputStream" | - "BufferedReader" | - "BufferedWriter" | - "ByteArrayInputStream" | - "ByteArrayOutputStream" | - "CharArrayReader" | - "CharArrayWriter" | - "Console" | - "DataInputStream" | - "DataOutputStream" | - "File" | - "FileDescriptor" | - "FileInputStream" | - "FileOutputStream" | - "FilePermission" | - "FileReader" | - "FileWriter" | - "FilterInputStream" | - "FilterOutputStream" | - "FilterReader" | - "FilterWriter" | - "InputStream" | - "InputStreamReader" | - "LineNumberInputStream" | - "LineNumberReader" | - "ObjectInputStream" | - "ObjectInputStream.GetField" | - "ObjectOutputStream" | - "ObjectOutputStream.PutField" | - "ObjectStreamClass" | - "ObjectStreamField" | - "OutputStream" | - "OutputStreamWriter" | - "PipedInputStream" | - "PipedOutputStream" | - "PipedReader" | - "PipedWriter" | - "PrintStream" | - "PrintWriter" | - "PushbackInputStream" | - "PushbackReader" | - "RandomAccessFile" | - "Reader" | - "SequenceInputStream" | - "SerializablePermission" | - "StreamTokenizer" | - "StringBufferInputStream" | - "StringReader" | - "StringWriter" | - "Writer" | - - "CharConversionException" | - "EOFException" | - "FileNotFoundException" | - "InterruptedIOException" | - "InvalidClassException" | - "InvalidObjectException" | - "IOException" | - "NotActiveException" | - "NotSerializableException" | - "ObjectStreamException" | - "OptionalDataException" | - "StreamCorruptedException" | - "SyncFailedException" | - "UncheckedIOException" | - "UnsupportedEncodingException" | - "UTFDataFormatException" | - "WriteAbortedException" | - - "IOError" | - - /* java.util classes */ - "Collection" | - "Comparator" | - "Deque" | - "Enumeration" | - "EventListener" | - "Formattable" | - "Iterator" | - "List" | - "ListIterator" | - "Map" | - "Map.Entry" | - "NavigableMap" | - "NavigableSet" | - "Observer" | - "PrimitiveIterator" | - "PrimitiveIterator.OfDouble" | - "PrimitiveIterator.OfInt" | - "PrimitiveIterator.OfLong" | - "Queue" | - "RandomAccess" | - "Set" | - "SortedMap" | - "SortedSet" | - "Spliterator" | - "Spliterator.OfDouble" | - "Spliterator.OfInt" | - "Spliterator.OfLong" | - "Spliterator.OfPrimitive" | - - "AbstractCollection" | - "AbstractList" | - "AbstractMap" | - "AbstractMap.SimpleEntry" | - "AbstractMap.SimpleImmutableEntry" | - "AbstractQueue" | - "AbstractSequentialList" | - "AbstractSet" | - "ArrayDeque" | - "ArrayList" | - "Arrays" | - "Base64" | - "Base64.Decoder" | - "Base64.Encoder" | - "BitSet" | - "Calendar" | - "Calendar.Builder" | - "Collections" | - "Currency" | - "Date" | - "Dictionary" | - "DoubleSummaryStatistics" | - "EnumMap" | - "EnumSet" | - "EventListenerProxy" | - "EventObject" | - "FormattableFlags" | - "Formatter" | - "GregorianCalendar" | - "HashMap" | - "HashSet" | - "Hashtable" | - "IdentityHashMap" | - "IntSummaryStatistics" | - "LinkedHashMap" | - "LinkedHashSet" | - "LinkedList" | - "ListResourceBundle" | - "Locale" | - "Locale.Builder" | - "Locale.LanguageRange" | - "LongSummaryStatistics" | - "Objects" | - "Observable" | - "Optional" | - "OptionalDouble" | - "OptionalInt" | - "OptionalLong" | - "PriorityQueue" | - "Properties" | - "PropertyPermission" | - "PropertyResourceBundle" | - "Random" | - "ResourceBundle" | - "ResourceBundle.Control" | - "Scanner" | - "ServiceLoader" | - "SimpleTimeZone" | - "Spliterators" | - "Spliterators.AbstractDoubleSpliterator" | - "Spliterators.AbstractIntSpliterator" | - "Spliterators.AbstractLongSpliterator" | - "Spliterators.AbstractSpliterator" | - "SpliteratorRandom" | - "Stack" | - "StringJoiner" | - "StringTokenizer" | - "Timer" | - "TimerTask" | - "TimeZone" | - "TreeMap" | - "TreeSet" | - "UUID" | - "Vector" | - "WeakHashMap" | - - "Formatter.BigDecimalLayoutForm" | - "Locale.Category" | - "Locale.FilteringMode" | - - "ConcurrentModificationException" | - "DuplicateFormatFlagsException" | - "EmptyStackException" | - "FormatFlagsConversionMismatchException" | - "FormatterClosedException" | - "IllegalFormatCodePointException" | - "IllegalFormatConversionException" | - "IllegalFormatException" | - "IllegalFormatFlagsException" | - "IllegalFormatPrecisionException" | - "IllegalFormatWidthException" | - "IllformedLocaleException" | - "InputMismatchException" | - "InvalidPropertiesFormatException" | - "MissingFormatArgumentException" | - "MissingFormatWidthException" | - "MissingResourceException" | - "NoSuchElementException" | - "TooManyListenersException" | - "UnknownFormatConversionException" | - "UnknownFormatFlagsException" | - - "ServiceConfigurationError" { addToken(Token.FUNCTION); } - - /* Commonly used methods added to Object class */ - "addShutdownHook" | - "any" | - "asBoolean" | - "asType" | - "collect" | - "dump" | - "each" | - "eachWithIndex" | - "every" | - "find" | - "findAll" | - "findIndexOf" | - "findIndexValues" | - "findLastIndexOf" | - "getAt" | - "getMetaClass" | - "getMetaPropertyValues" | - "getProperties" | - "grep" | - "hasProperty" | - "identity" | - "inject" | - "inspect" | - "invokeMethod" | - "is" | - "isCase" | - "iterator" | - "metaClass" | - "print" | - "printf" | - "println" | - "putAt" | - "respondsTo" | - "setMetaClass" | - "sleep" | - "split" | - "sprintf" | - "toString" | - "use" | - "with" { addToken(Token.FUNCTION); } - - {LineTerminator} { addNullToken(); return firstToken; } - - {Identifier} { addToken(Token.IDENTIFIER); } - - {WhiteSpace}+ { addToken(Token.WHITESPACE); } - - /* Multiline string literals. */ - \"\"\" { start = zzMarkedPos-3; yybegin(MULTILINE_STRING_DOUBLE); } - \'\'\' { start = zzMarkedPos-3; yybegin(MULTILINE_STRING_SINGLE); } - - - /* String/Character literals. */ - {CharLiteral} { addToken(Token.LITERAL_CHAR); } - {UnclosedCharLiteral} { addToken(Token.ERROR_CHAR); addNullToken(); return firstToken; } - {ErrorCharLiteral} { addToken(Token.ERROR_CHAR); } - \" { start = zzMarkedPos-1; yybegin(STRING_DOUBLE); } - - /* Comment literals. */ - "/**/" { addToken(Token.COMMENT_MULTILINE); } - {MLCBegin} { start = zzMarkedPos-2; yybegin(MLC); } - {DocCommentBegin} { start = zzMarkedPos-3; yybegin(DOCCOMMENT); } - {LineCommentBegin} { start = zzMarkedPos-2; yybegin(EOL_COMMENT); } - - /* Regular expressions. */ - {Regex} { - boolean highlightedAsRegex = false; - if (zzBuffer[zzStartRead]=='~' || firstToken==null) { - addToken(Token.REGEX); - highlightedAsRegex = true; - } - else { - // If this is *likely* to be a regex, based on - // the previous token, highlight it as such. - Token t = firstToken.getLastNonCommentNonWhitespaceToken(); - if (regexCanFollow(t)) { - addToken(Token.REGEX); - highlightedAsRegex = true; - } - } - // If it doesn't *appear* to be a regex, highlight it as - // individual tokens. - if (!highlightedAsRegex) { - int temp = zzStartRead + 1; - addToken(zzStartRead, zzStartRead, Token.OPERATOR); - zzStartRead = zzCurrentPos = zzMarkedPos = temp; - } - } - - /* Annotations. */ - {Annotation} { addToken(Token.ANNOTATION); } - - /* Separators. */ - {Separator} { addToken(Token.SEPARATOR); } - {Separator2} { addToken(Token.IDENTIFIER); } - - /* Operators. */ - {Operator} { addToken(Token.OPERATOR); } - - /* Numbers */ - {IntegerLiteral} { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); } - {BinaryLiteral} { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); } - {HexLiteral} { addToken(Token.LITERAL_NUMBER_HEXADECIMAL); } - {FloatLiteral} { addToken(Token.LITERAL_NUMBER_FLOAT); } - {ErrorNumberFormat} { addToken(Token.ERROR_NUMBER_FORMAT); } - - {ErrorIdentifier} { addToken(Token.ERROR_IDENTIFIER); } - - /* Ended with a line not in a string or comment. */ - <> { addNullToken(); return firstToken; } - - /* Catch any other (unhandled) characters and flag them as bad. */ - . { addToken(Token.ERROR_IDENTIFIER); } - -} - - - { - - [^hwf\n\*]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_MULTILINE); start = zzMarkedPos; } - [hwf] {} - - \n { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; } - {MLCEnd} { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); } - \* {} - <> { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; } - -} - - - { - - [^hwf\@\{\n\<\*]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_DOCUMENTATION); start = zzMarkedPos; } - [hwf] {} - - "@"{BlockTag} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addToken(temp,zzMarkedPos-1, Token.VARIABLE); start = zzMarkedPos; } - "@" {} - "{@"{InlineTag}[^\}]*"}" { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addToken(temp,zzMarkedPos-1, Token.VARIABLE); start = zzMarkedPos; } - "{" {} - \n { addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); return firstToken; } - "<"[/]?({Letter}[^\>]*)?">" { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addToken(temp,zzMarkedPos-1, Token.PREPROCESSOR); start = zzMarkedPos; } - \< {} - {MLCEnd} { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.COMMENT_DOCUMENTATION); } - \* {} - <> { yybegin(YYINITIAL); addToken(start,zzEndRead, Token.COMMENT_DOCUMENTATION); return firstToken; } - -} - - - { - [^hwf\n]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_EOL); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_EOL); start = zzMarkedPos; } - [hwf] {} - \n | - <> { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; } -} - - - { - [^\"\\\$\n]* {} - \\.? { /* Skip escaped chars, handles case: '\"""'. */ } - \"\"\" { yybegin(YYINITIAL); addToken(start,zzStartRead+2, Token.LITERAL_STRING_DOUBLE_QUOTE); } - {Variable} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addToken(temp,zzMarkedPos-1, Token.VARIABLE); start = zzMarkedPos; } - {VariableStart} {} - \" {} - \n | - <> { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); return firstToken; } -} - - - { - [^\'\\\n]* {} - \\.? { /* Skip escaped chars, handles case: "\'''". */ } - \'\'\' { yybegin(YYINITIAL); addToken(start,zzStartRead+2, Token.LITERAL_CHAR); } - \' {} - \n | - <> { addToken(start,zzStartRead-1, Token.LITERAL_CHAR); return firstToken; } -} - - { - [^\n\\\$\"]+ {} - \n { addToken(start,zzStartRead-1, Token.ERROR_STRING_DOUBLE); addNullToken(); return firstToken; } - \\.? { /* Skip escaped chars. */ } - {Variable} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addToken(temp,zzMarkedPos-1, Token.VARIABLE); start = zzMarkedPos; } - {VariableStart} {} - \" { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); } - <> { addToken(start,zzStartRead-1, Token.ERROR_STRING_DOUBLE); return firstToken; } -} - diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/GroovyTokenMaker.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/GroovyTokenMaker.java deleted file mode 100644 index ec24125..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/GroovyTokenMaker.java +++ /dev/null @@ -1,5581 +0,0 @@ -/* The following code was generated by JFlex 1.4.1 on 6/21/15 6:49 PM */ - -/* - * 09/28/2007 - * - * GroovyTokenMaker.java - Scanner for the Groovy programming language. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * Scanner for the Groovy programming language.

- * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated GroovyTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.5 - * - */ - -public class GroovyTokenMaker extends AbstractJFlexCTokenMaker { - - /** This character denotes the end of file */ - public static final int YYEOF = -1; - - /** lexical states */ - public static final int EOL_COMMENT = 3; - public static final int MULTILINE_STRING_DOUBLE = 4; - public static final int DOCCOMMENT = 2; - public static final int YYINITIAL = 0; - public static final int MLC = 1; - public static final int STRING_DOUBLE = 6; - public static final int MULTILINE_STRING_SINGLE = 5; - - /** - * Translates characters to character classes - */ - private static final String ZZ_CMAP_PACKED = - "\11\0\1\22\1\21\1\0\1\22\1\16\22\0\1\22\1\53\1\13"+ - "\1\17\1\20\1\53\1\55\1\10\2\44\1\24\1\46\1\45\1\33"+ - "\1\34\1\23\1\4\1\5\2\7\1\123\1\7\1\122\1\7\2\3"+ - "\1\56\1\45\1\47\1\50\1\52\1\54\1\100\1\102\1\26\1\6"+ - "\1\67\1\32\1\31\1\117\1\110\1\105\1\125\1\1\1\25\1\112"+ - "\1\113\1\114\1\116\1\121\1\74\1\103\1\106\1\107\1\111\1\120"+ - "\1\30\1\1\1\124\1\44\1\12\1\44\1\51\1\2\1\0\1\40"+ - "\1\27\1\63\1\61\1\37\1\15\1\72\1\57\1\65\1\115\1\75"+ - "\1\41\1\66\1\14\1\60\1\62\1\104\1\36\1\42\1\35\1\11"+ - "\1\71\1\70\1\64\1\73\1\101\1\76\1\51\1\77\1\43\uff81\0"; - - /** - * Translates characters to character classes - */ - private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); - - /** - * Translates DFA states to action switch labels. - */ - private static final int [] ZZ_ACTION = zzUnpackAction(); - - private static final String ZZ_ACTION_PACKED_0 = - "\4\0\2\1\1\0\1\2\1\3\2\4\1\3\1\5"+ - "\1\3\1\6\2\3\1\2\1\7\1\10\2\11\5\3"+ - "\1\11\7\3\1\11\1\12\1\3\6\11\13\3\1\13"+ - "\16\3\2\1\1\14\5\1\1\15\10\1\1\16\3\1"+ - "\1\17\2\1\1\20\2\1\1\21\1\22\1\23\1\24"+ - "\1\25\1\2\2\26\1\27\1\4\1\26\1\27\2\26"+ - "\1\30\2\26\5\3\1\5\1\31\1\5\1\0\1\3"+ - "\1\0\7\3\2\0\1\32\1\33\1\11\37\3\1\34"+ - "\12\3\2\0\1\11\3\3\1\34\7\3\3\34\1\35"+ - "\22\3\1\13\57\3\2\0\1\36\4\0\1\37\2\0"+ - "\1\40\22\0\1\17\1\0\1\41\2\0\1\21\1\23"+ - "\1\2\1\4\1\27\1\0\2\30\1\4\1\30\10\3"+ - "\1\31\1\42\1\5\1\43\1\5\1\0\1\35\1\3"+ - "\1\44\5\3\1\45\1\46\65\3\1\34\13\3\1\47"+ - "\30\3\1\2\54\3\1\35\24\3\37\0\1\50\2\0"+ - "\1\51\1\2\2\26\12\3\1\43\1\5\1\0\4\3"+ - "\1\35\1\52\1\35\3\3\1\35\5\3\1\35\2\3"+ - "\1\47\4\3\2\35\6\3\1\53\5\3\1\35\54\3"+ - "\1\2\56\3\1\0\31\3\2\0\1\54\2\0\1\55"+ - "\15\0\1\56\12\0\1\57\1\0\1\41\1\2\2\3"+ - "\1\35\11\3\1\5\1\0\1\34\42\3\1\34\20\3"+ - "\1\35\24\3\1\2\11\3\1\35\31\3\1\35\11\3"+ - "\1\0\31\3\36\0\1\2\15\3\1\5\1\0\4\3"+ - "\1\35\5\3\1\35\27\3\1\60\31\3\1\35\1\2"+ - "\11\3\1\35\30\3\1\35\13\3\1\0\2\3\1\35"+ - "\10\3\1\35\12\3\23\0\14\3\1\0\2\3\1\0"+ - "\3\3\1\0\45\3\1\35\2\3\1\2\43\3\1\0"+ - "\14\3\1\0\23\3\1\35\6\3\5\0\1\56\4\0"+ - "\1\35\14\3\4\0\3\3\2\0\102\3\2\0\11\3"+ - "\1\0\20\3\1\35\12\3\12\0\4\3\1\35\6\3"+ - "\4\0\3\3\1\0\3\3\1\35\10\3\1\35\11\3"+ - "\1\35\47\3\2\0\10\3\1\35\27\3\5\0\4\3"+ - "\1\0\2\3\1\35\2\3\4\0\1\3\1\0\3\3"+ - "\1\0\57\3\2\0\32\3\5\0\3\3\2\0\3\3"+ - "\4\0\3\3\1\0\1\35\14\3\1\35\10\3\1\35"+ - "\5\3\1\35\12\3\2\0\15\3\1\35\5\3\2\0"+ - "\2\3\2\0\3\3\4\0\3\3\1\0\10\3\1\35"+ - "\3\3\1\0\1\3\1\35\2\3\1\35\2\3\1\0"+ - "\1\35\15\3\1\0\14\3\1\35\3\3\1\35\5\3"+ - "\2\0\2\3\3\0\2\3\1\0\2\3\1\35\10\3"+ - "\1\0\2\3\2\0\12\3\1\0\23\3\2\0\1\3"+ - "\2\0\2\3\1\0\5\3\1\35\1\3\1\0\2\3"+ - "\2\0\12\3\1\0\14\3\1\35\2\3\2\0\1\3"+ - "\2\0\2\3\1\0\4\3\1\0\1\3\1\0\1\3"+ - "\5\0\11\3\1\0\11\3\1\0\2\3\1\0\1\3"+ - "\2\0\1\3\1\0\2\3\1\0\1\3\5\0\10\3"+ - "\1\0\6\3\1\0\1\3\3\0\1\3\1\0\1\3"+ - "\1\0\1\3\5\0\5\3\1\0\3\3\1\35\1\3"+ - "\1\0\1\35\4\0\1\3\1\0\1\3\1\0\1\3"+ - "\4\0\3\3\1\0\3\3\1\0\1\35\4\0\1\3"+ - "\1\0\1\3\4\0\2\3\1\0\2\3\6\0\1\3"+ - "\1\0\1\3\4\0\1\3\7\0\1\3\1\0\1\3"+ - "\30\0\1\35\37\0"; - - private static int [] zzUnpackAction() { - int [] result = new int[2058]; - int offset = 0; - offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAction(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /** - * Translates a state to a row index in the transition table - */ - private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); - - private static final String ZZ_ROWMAP_PACKED_0 = - "\0\0\0\126\0\254\0\u0102\0\u0158\0\u01ae\0\u0204\0\u025a"+ - "\0\u02b0\0\u0306\0\u035c\0\u03b2\0\u0408\0\u045e\0\u04b4\0\u050a"+ - "\0\u0560\0\u05b6\0\u05b6\0\u060c\0\u0662\0\u06b8\0\u070e\0\u0764"+ - "\0\u07ba\0\u0810\0\u0866\0\u08bc\0\u0912\0\u0968\0\u09be\0\u0a14"+ - "\0\u0a6a\0\u0ac0\0\u0b16\0\u0b6c\0\u05b6\0\u05b6\0\u0bc2\0\u0c18"+ - "\0\u0c6e\0\u0cc4\0\u05b6\0\u0d1a\0\u0d70\0\u0dc6\0\u0e1c\0\u0e72"+ - "\0\u0ec8\0\u0f1e\0\u0f74\0\u0fca\0\u1020\0\u1076\0\u10cc\0\u1122"+ - "\0\u1178\0\u11ce\0\u1224\0\u127a\0\u12d0\0\u1326\0\u137c\0\u13d2"+ - "\0\u1428\0\u147e\0\u14d4\0\u152a\0\u1580\0\u15d6\0\u162c\0\u1682"+ - "\0\u05b6\0\u16d8\0\u172e\0\u1784\0\u17da\0\u1830\0\u05b6\0\u1886"+ - "\0\u18dc\0\u1932\0\u1988\0\u19de\0\u1a34\0\u1a8a\0\u1ae0\0\u05b6"+ - "\0\u1b36\0\u1b8c\0\u1be2\0\u1c38\0\u1c8e\0\u1ce4\0\u05b6\0\u1d3a"+ - "\0\u1d90\0\u1de6\0\u05b6\0\u1e3c\0\u05b6\0\u05b6\0\u1e92\0\u1ee8"+ - "\0\u1f3e\0\u1ee8\0\u1ee8\0\u1f94\0\u1fea\0\u2040\0\u2096\0\u20ec"+ - "\0\u2142\0\u2198\0\u21ee\0\u2244\0\u229a\0\u22f0\0\u2346\0\u239c"+ - "\0\u23f2\0\u2448\0\u249e\0\u24f4\0\u254a\0\u25a0\0\u25f6\0\u264c"+ - "\0\u26a2\0\u26f8\0\u274e\0\u27a4\0\u27fa\0\u2850\0\u05b6\0\u28a6"+ - "\0\u27fa\0\u28fc\0\u2952\0\u29a8\0\u29fe\0\u2a54\0\u2aaa\0\u2b00"+ - "\0\u2b56\0\u2bac\0\u2c02\0\u2c58\0\u2cae\0\u2d04\0\u2d5a\0\u2db0"+ - "\0\u2e06\0\u2e5c\0\u2eb2\0\u2f08\0\u2f5e\0\u2fb4\0\u300a\0\u3060"+ - "\0\u30b6\0\u310c\0\u3162\0\u31b8\0\u320e\0\u3264\0\u32ba\0\u3310"+ - "\0\u3366\0\u33bc\0\u3412\0\u3468\0\u34be\0\u3514\0\u356a\0\u35c0"+ - "\0\u3616\0\u366c\0\u36c2\0\u3718\0\u06b8\0\u376e\0\u37c4\0\u381a"+ - "\0\u3870\0\u38c6\0\u391c\0\u3972\0\u39c8\0\u3a1e\0\u3a74\0\u3aca"+ - "\0\u3b20\0\u3b76\0\u02b0\0\u3bcc\0\u3c22\0\u3c78\0\u3cce\0\u3d24"+ - "\0\u3d7a\0\u3dd0\0\u3e26\0\u3e7c\0\u3ed2\0\u3f28\0\u3f7e\0\u3fd4"+ - "\0\u402a\0\u4080\0\u40d6\0\u412c\0\u4182\0\u41d8\0\u422e\0\u4284"+ - "\0\u42da\0\u4330\0\u4386\0\u43dc\0\u4432\0\u4488\0\u44de\0\u4534"+ - "\0\u458a\0\u45e0\0\u4636\0\u468c\0\u46e2\0\u4738\0\u478e\0\u47e4"+ - "\0\u483a\0\u4890\0\u48e6\0\u493c\0\u4992\0\u49e8\0\u4a3e\0\u4a94"+ - "\0\u4aea\0\u4b40\0\u4b96\0\u4bec\0\u4c42\0\u4c98\0\u4cee\0\u4d44"+ - "\0\u4d9a\0\u4df0\0\u4e46\0\u4e9c\0\u4ef2\0\u4f48\0\u4f9e\0\u4ff4"+ - "\0\u504a\0\u50a0\0\u50f6\0\u514c\0\u51a2\0\u51f8\0\u524e\0\u52a4"+ - "\0\u52fa\0\u05b6\0\u5350\0\u53a6\0\u53fc\0\u5452\0\u05b6\0\u54a8"+ - "\0\u54fe\0\u05b6\0\u5554\0\u55aa\0\u5600\0\u5656\0\u56ac\0\u5702"+ - "\0\u5758\0\u57ae\0\u5804\0\u585a\0\u58b0\0\u5906\0\u595c\0\u59b2"+ - "\0\u5a08\0\u5a5e\0\u5ab4\0\u5b0a\0\u05b6\0\u5b60\0\u5bb6\0\u5c0c"+ - "\0\u5c62\0\u05b6\0\u05b6\0\u5cb8\0\u5d0e\0\u5d64\0\u5dba\0\u5e10"+ - "\0\u1ee8\0\u5e66\0\u5ebc\0\u5f12\0\u5f68\0\u5fbe\0\u6014\0\u606a"+ - "\0\u60c0\0\u6116\0\u616c\0\u05b6\0\u05b6\0\u61c2\0\u249e\0\u6218"+ - "\0\u626e\0\u02b0\0\u62c4\0\u05b6\0\u631a\0\u6370\0\u63c6\0\u641c"+ - "\0\u6472\0\u05b6\0\u64c8\0\u651e\0\u6574\0\u65ca\0\u6620\0\u6676"+ - "\0\u66cc\0\u6722\0\u6778\0\u67ce\0\u6824\0\u687a\0\u68d0\0\u6926"+ - "\0\u697c\0\u69d2\0\u6a28\0\u6a7e\0\u6ad4\0\u6b2a\0\u6b80\0\u6bd6"+ - "\0\u6c2c\0\u6c82\0\u6cd8\0\u6d2e\0\u6d84\0\u6dda\0\u6e30\0\u6e86"+ - "\0\u6edc\0\u6f32\0\u6f88\0\u6fde\0\u7034\0\u708a\0\u70e0\0\u7136"+ - "\0\u718c\0\u71e2\0\u7238\0\u728e\0\u72e4\0\u733a\0\u7390\0\u73e6"+ - "\0\u743c\0\u7492\0\u74e8\0\u753e\0\u7594\0\u75ea\0\u7640\0\u7696"+ - "\0\u76ec\0\u7742\0\u7798\0\u77ee\0\u7844\0\u789a\0\u78f0\0\u7946"+ - "\0\u799c\0\u79f2\0\u7a48\0\u7a9e\0\u7af4\0\u7b4a\0\u7ba0\0\u7bf6"+ - "\0\u7c4c\0\u7ca2\0\u7cf8\0\u7d4e\0\u7da4\0\u7dfa\0\u7e50\0\u7ea6"+ - "\0\u7efc\0\u7f52\0\u7fa8\0\u7ffe\0\u8054\0\u80aa\0\u8100\0\u8156"+ - "\0\u81ac\0\u8202\0\u8258\0\u82ae\0\u8304\0\u835a\0\u83b0\0\u8406"+ - "\0\u845c\0\u84b2\0\u8508\0\u855e\0\u85b4\0\u860a\0\u8660\0\u86b6"+ - "\0\u870c\0\u8762\0\u87b8\0\u880e\0\u8864\0\u88ba\0\u8910\0\u8966"+ - "\0\u89bc\0\u8a12\0\u8a68\0\u8abe\0\u8b14\0\u8b6a\0\u8bc0\0\u8c16"+ - "\0\u8c6c\0\u8cc2\0\u8d18\0\u8d6e\0\u8dc4\0\u8e1a\0\u8e70\0\u8ec6"+ - "\0\u8f1c\0\u8f72\0\u8fc8\0\u901e\0\u9074\0\u90ca\0\u9120\0\u9176"+ - "\0\u91cc\0\u9222\0\u9278\0\u92ce\0\u9324\0\u937a\0\u93d0\0\u9426"+ - "\0\u947c\0\u94d2\0\u9528\0\u957e\0\u95d4\0\u962a\0\u9680\0\u96d6"+ - "\0\u972c\0\u9782\0\u97d8\0\u982e\0\u9884\0\u98da\0\u9930\0\u9986"+ - "\0\u99dc\0\u9a32\0\u9a88\0\u9ade\0\u9b34\0\u9b8a\0\u9be0\0\u9c36"+ - "\0\u9c8c\0\u9ce2\0\u9d38\0\u9d8e\0\u9de4\0\u9e3a\0\u9e90\0\u9ee6"+ - "\0\u9f3c\0\u9f92\0\u9fe8\0\ua03e\0\ua094\0\ua0ea\0\ua140\0\ua196"+ - "\0\ua1ec\0\ua242\0\ua298\0\ua2ee\0\ua344\0\ua39a\0\u05b6\0\ua3f0"+ - "\0\ua446\0\u05b6\0\ua49c\0\u5e66\0\ua4f2\0\ua548\0\ua59e\0\ua5f4"+ - "\0\ua64a\0\ua6a0\0\ua6f6\0\ua74c\0\ua7a2\0\ua7f8\0\ua84e\0\u05b6"+ - "\0\ua8a4\0\ua8fa\0\ua950\0\ua9a6\0\ua9fc\0\uaa52\0\uaaa8\0\u05b6"+ - "\0\uaafe\0\uab54\0\uabaa\0\uac00\0\uac56\0\uacac\0\uad02\0\uad58"+ - "\0\uadae\0\uae04\0\uae5a\0\uaeb0\0\uaf06\0\u02b0\0\uaf5c\0\uafb2"+ - "\0\ub008\0\ub05e\0\ub0b4\0\ub10a\0\ub160\0\ub1b6\0\ub20c\0\ub262"+ - "\0\ub2b8\0\ub30e\0\u02b0\0\ub364\0\ub3ba\0\ub410\0\ub466\0\ub4bc"+ - "\0\ub512\0\ub568\0\ub5be\0\ub614\0\ub66a\0\ub6c0\0\ub716\0\ub76c"+ - "\0\ub7c2\0\ub818\0\ub86e\0\ub8c4\0\ub91a\0\ub970\0\ub9c6\0\uba1c"+ - "\0\uba72\0\ubac8\0\ubb1e\0\ubb74\0\ubbca\0\ubc20\0\ubc76\0\ubccc"+ - "\0\ubd22\0\ubd78\0\ubdce\0\ube24\0\ube7a\0\ubed0\0\ubf26\0\ubf7c"+ - "\0\ubfd2\0\uc028\0\uc07e\0\uc0d4\0\uc12a\0\uc180\0\uc1d6\0\uc22c"+ - "\0\uc282\0\uc2d8\0\uc32e\0\uc384\0\uc3da\0\uc430\0\uc486\0\uc4dc"+ - "\0\uc532\0\uc588\0\uc5de\0\uc634\0\uc68a\0\uc6e0\0\uc736\0\uc78c"+ - "\0\uc7e2\0\uc838\0\uc88e\0\uc8e4\0\uc93a\0\uc990\0\uc9e6\0\uca3c"+ - "\0\uca92\0\ucae8\0\ucb3e\0\ucb94\0\ucbea\0\ucc40\0\ucc96\0\uccec"+ - "\0\ucd42\0\ucd98\0\ucdee\0\uce44\0\uce9a\0\ucef0\0\ucf46\0\ucf9c"+ - "\0\ucff2\0\ud048\0\ud09e\0\ud0f4\0\ud14a\0\ud1a0\0\ud1f6\0\ud24c"+ - "\0\ud2a2\0\ud2f8\0\ud34e\0\ud3a4\0\ud3fa\0\ud450\0\ud4a6\0\ud4fc"+ - "\0\ud552\0\ud5a8\0\ud5fe\0\ud654\0\ud6aa\0\ud700\0\ud756\0\ud7ac"+ - "\0\ud802\0\ud858\0\ud8ae\0\ud904\0\ud95a\0\ud9b0\0\uda06\0\uda5c"+ - "\0\udab2\0\udb08\0\udb5e\0\udbb4\0\udc0a\0\udc60\0\udcb6\0\udd0c"+ - "\0\udd62\0\uddb8\0\ude0e\0\ude64\0\udeba\0\udf10\0\udf66\0\udfbc"+ - "\0\ue012\0\ue068\0\ue0be\0\ue114\0\ue16a\0\ue1c0\0\ue216\0\ue26c"+ - "\0\ue2c2\0\u05b6\0\ue318\0\ue36e\0\ue3c4\0\ue41a\0\ue470\0\ue4c6"+ - "\0\ue51c\0\ue572\0\ue5c8\0\ue61e\0\ue674\0\ue6ca\0\u05b6\0\ue720"+ - "\0\ue776\0\ue7cc\0\ue822\0\ue878\0\ue8ce\0\ue924\0\ue97a\0\ue9d0"+ - "\0\uea26\0\uea7c\0\uead2\0\ueb28\0\ueb7e\0\uebd4\0\uec2a\0\uec80"+ - "\0\uecd6\0\ued2c\0\ued82\0\uedd8\0\uee2e\0\uee84\0\ueeda\0\uef30"+ - "\0\uef86\0\uefdc\0\uf032\0\uf088\0\uf0de\0\uf134\0\uf18a\0\uf1e0"+ - "\0\uf236\0\uf28c\0\uf2e2\0\uf338\0\uf38e\0\uf3e4\0\uf43a\0\uf490"+ - "\0\uf4e6\0\uf53c\0\uf592\0\uf5e8\0\uf63e\0\uf694\0\uf6ea\0\uf740"+ - "\0\uf796\0\u6e30\0\uf7ec\0\uf842\0\uf898\0\uf8ee\0\uf944\0\uf99a"+ - "\0\uf9f0\0\ufa46\0\ufa9c\0\ufaf2\0\ufb48\0\ufb9e\0\ufbf4\0\ufc4a"+ - "\0\ufca0\0\ufcf6\0\ufd4c\0\ufda2\0\ufdf8\0\ufe4e\0\ufea4\0\ufefa"+ - "\0\uff50\0\uffa6\0\ufffc\1\122\1\250\1\376\1\u0154\1\u01aa"+ - "\1\u0200\1\u0256\1\u02ac\1\u0302\1\u0358\1\u03ae\1\u0404\1\u045a"+ - "\1\u04b0\1\u0506\1\u055c\1\u05b2\1\u0608\1\u065e\1\u06b4\1\u070a"+ - "\1\u0760\1\u07b6\1\u080c\1\u0862\1\u08b8\1\u090e\1\u0964\1\u09ba"+ - "\1\u0a10\1\u0a66\1\u0abc\1\u0b12\1\u0b68\1\u0bbe\1\u0c14\1\u0c6a"+ - "\1\u0cc0\1\u0d16\1\u0d6c\1\u0dc2\1\u0e18\1\u0e6e\1\u0ec4\1\u0f1a"+ - "\1\u0f70\1\u0fc6\1\u101c\1\u1072\1\u10c8\1\u111e\1\u1174\1\u11ca"+ - "\1\u1220\1\u1276\1\u12cc\1\u1322\1\u1378\1\u13ce\1\u1424\1\u147a"+ - "\1\u14d0\1\u1526\1\u157c\1\u15d2\1\u1628\1\u167e\1\u16d4\1\u172a"+ - "\1\u1780\1\u17d6\1\u182c\1\u1882\1\u18d8\1\u192e\1\u1984\1\u19da"+ - "\1\u1a30\1\u1a86\1\u1adc\1\u1b32\1\u1b88\1\u1bde\1\u1c34\1\u1c8a"+ - "\0\udd62\1\u1ce0\0\ude64\1\u1d36\1\u1d8c\1\u1de2\1\u1e38\1\u1e8e"+ - "\1\u1ee4\1\u1f3a\1\u1f90\1\u1fe6\1\u203c\1\u2092\1\u20e8\1\u213e"+ - "\1\u2194\1\u21ea\1\u2240\1\u2296\1\u22ec\1\u2342\1\u2398\1\u23ee"+ - "\1\u2444\1\u249a\1\u24f0\0\ue674\1\u2546\1\u259c\1\u25f2\1\u2648"+ - "\1\u269e\1\u26f4\1\u274a\1\u27a0\1\u27f6\1\u284c\1\u28a2\1\u28f8"+ - "\1\u294e\1\u29a4\1\u29fa\1\u2a50\1\u2aa6\1\u2afc\1\u2b52\1\u2ba8"+ - "\1\u2bfe\1\u2c54\1\u2caa\1\u2d00\1\u2d56\1\u2dac\0\u3bcc\1\u2e02"+ - "\1\u2e58\1\u2eae\1\u2f04\1\u2f5a\1\u2fb0\1\u3006\1\u305c\1\u30b2"+ - "\1\u3108\1\u315e\1\u31b4\1\u320a\1\u3260\1\u32b6\1\u330c\1\u3362"+ - "\1\u33b8\1\u340e\1\u3464\1\u34ba\1\u3510\1\u3566\1\u35bc\0\u02b0"+ - "\1\u3612\1\u3668\1\u36be\1\u3714\1\u376a\1\u37c0\1\u3816\1\u386c"+ - "\1\u38c2\1\u3918\1\u396e\1\u39c4\1\u3a1a\1\u3a70\1\u3ac6\1\u3b1c"+ - "\1\u3b72\1\u3bc8\1\u3c1e\1\u3c74\1\u3cca\1\u3d20\1\u3d76\1\u3dcc"+ - "\1\u3e22\1\u3e78\1\u3ece\1\u3f24\1\u3f7a\1\u3fd0\1\u4026\1\u407c"+ - "\1\u40d2\1\u4128\1\u417e\1\u41d4\1\u422a\1\u4280\1\u42d6\1\u432c"+ - "\1\u4382\1\u43d8\1\u442e\1\u4484\1\u44da\1\u4530\1\u4586\1\u45dc"+ - "\1\u4632\1\u4688\1\u46de\1\u4734\1\u478a\1\u47e0\1\u4836\1\u488c"+ - "\1\u48e2\1\u4938\1\u498e\1\u49e4\1\u4a3a\1\u4a90\1\u4ae6\1\u4b3c"+ - "\1\u4b92\1\u4be8\1\u4c3e\1\u4c94\1\u4cea\1\u4d40\1\u4d96\1\u4dec"+ - "\1\u4e42\1\u4e98\1\u4eee\1\u4f44\1\u4f9a\1\u4ff0\1\u5046\1\u509c"+ - "\1\u50f2\1\u5148\1\u519e\1\u51f4\1\u524a\1\u52a0\1\u52f6\1\u534c"+ - "\1\u53a2\1\u53f8\1\u544e\1\u54a4\1\u54fa\1\u5550\1\u55a6\1\u55fc"+ - "\1\u5652\1\u56a8\1\u56fe\1\u5754\1\u57aa\1\u5800\1\u5856\1\u58ac"+ - "\1\u5902\1\u5958\1\u59ae\1\u5a04\1\u5a5a\1\u5ab0\1\u5b06\1\u5b5c"+ - "\1\u5bb2\1\u5c08\1\u5c5e\1\u5cb4\1\u5d0a\1\u5d60\1\u5db6\1\u5e0c"+ - "\1\u5e62\1\u5eb8\1\u5f0e\1\u5f64\1\u5fba\1\u6010\1\u6066\1\u60bc"+ - "\1\u6112\1\u6168\1\u61be\1\u6214\1\u626a\1\u62c0\1\u6316\1\u636c"+ - "\1\u63c2\1\u6418\1\u646e\1\u64c4\1\u651a\1\u6570\1\u65c6\1\u661c"+ - "\1\u6672\1\u66c8\1\u671e\1\u6774\1\u67ca\1\u6820\1\u6876\1\u68cc"+ - "\1\u6922\1\u6978\1\u69ce\1\u6a24\1\u6a7a\1\u6ad0\1\u6b26\1\u6b7c"+ - "\1\u6bd2\1\u6c28\1\u6c7e\1\u6cd4\1\u6d2a\1\u6d80\1\u6dd6\1\u6e2c"+ - "\1\u6e82\1\u6ed8\1\u6f2e\1\u6f84\1\u6fda\1\u7030\1\u7086\1\u70dc"+ - "\1\u7132\1\u7188\1\u71de\1\u7234\1\u728a\1\u72e0\1\u7336\1\u738c"+ - "\1\u73e2\1\u7438\1\u748e\1\u74e4\1\u753a\1\u7590\1\u75e6\1\u763c"+ - "\1\u7692\1\u76e8\1\u773e\1\u7794\1\u77ea\1\u7840\1\u7896\1\u78ec"+ - "\1\u7942\1\u7998\1\u79ee\1\u7a44\1\u7a9a\1\u7af0\1\u7b46\1\u7b9c"+ - "\1\u7bf2\1\u7c48\1\u7c9e\1\u7cf4\1\u7d4a\1\u7da0\1\u7df6\1\u7e4c"+ - "\1\u7ea2\1\u7ef8\1\u7f4e\1\u7fa4\1\u7ffa\1\u4f9a\1\u8050\1\u80a6"+ - "\1\u80fc\1\u8152\1\u81a8\1\u81fe\1\u8254\1\u82aa\1\u8300\1\u8356"+ - "\1\u83ac\1\u8402\1\u8458\1\u84ae\1\u8504\1\u855a\1\u85b0\1\u8606"+ - "\1\u865c\1\u86b2\1\u8708\1\u875e\1\u87b4\1\u880a\1\u8860\1\u88b6"+ - "\1\u890c\1\u8962\1\u89b8\1\u8a0e\1\u8a64\1\u8aba\1\u8b10\1\u8b66"+ - "\1\u8bbc\1\u8c12\1\u8c68\1\u8cbe\1\u8d14\1\u8d6a\1\u8dc0\1\u8e16"+ - "\1\u8e6c\1\u8ec2\1\u8f18\1\u8f6e\1\u8fc4\1\u901a\1\u9070\1\u90c6"+ - "\1\u911c\1\u9172\1\u91c8\1\u921e\1\u9274\1\u92ca\1\u9320\1\u9376"+ - "\1\u93cc\1\u9422\1\u9478\1\u94ce\1\u9524\1\u957a\1\u95d0\1\u9626"+ - "\1\u967c\1\u96d2\1\u9728\1\u977e\1\u97d4\1\u982a\1\u9880\1\u98d6"+ - "\1\u992c\1\u9982\1\u99d8\1\u9a2e\1\u9a84\1\u9ada\1\u9b30\1\u9b86"+ - "\1\u9bdc\1\u9c32\1\u9c88\1\u9cde\1\u9d34\1\u9d8a\1\u9de0\1\u9e36"+ - "\1\u9e8c\1\u9ee2\1\u9f38\1\u9f8e\1\u9fe4\1\ua03a\1\ua090\1\ua0e6"+ - "\1\ua13c\1\ua192\1\ua1e8\1\ua23e\1\ua294\1\ua2ea\1\ua340\1\ua396"+ - "\1\ua3ec\1\ua442\1\ua498\1\ua4ee\1\ua544\1\ua59a\1\ua5f0\1\ua646"+ - "\1\ua69c\1\ua6f2\1\ua748\1\ua79e\1\ua7f4\1\ua84a\1\ua8a0\1\ua8f6"+ - "\1\ua94c\1\ua9a2\1\ua9f8\1\uaa4e\1\uaaa4\1\uaafa\1\uab50\1\uaba6"+ - "\1\uabfc\1\uac52\1\uaca8\1\uacfe\1\uad54\1\uadaa\1\uae00\1\uae56"+ - "\1\uaeac\1\uaf02\1\uaf58\1\uafae\1\ub004\1\ub05a\1\ub0b0\1\ub106"+ - "\1\ub15c\1\ub1b2\1\ub208\1\ub25e\1\ub2b4\1\ub30a\1\ub360\1\ub3b6"+ - "\1\ub40c\1\ub462\1\ub4b8\1\ub50e\1\ub564\1\ub5ba\1\ub610\1\ub666"+ - "\1\ub6bc\1\ub712\1\ub768\1\ub7be\1\ub814\1\ub86a\1\ub8c0\1\ub916"+ - "\1\ub96c\1\ub9c2\1\uba18\1\uba6e\1\ubac4\1\ubb1a\1\ubb70\1\ubbc6"+ - "\1\ubc1c\1\ubc72\1\ubcc8\1\ubd1e\1\ubd74\1\ubdca\1\ube20\1\ube76"+ - "\1\ubecc\1\ubf22\1\ubf78\1\ubfce\1\uc024\1\uc07a\1\uc0d0\1\uc126"+ - "\1\uc17c\1\uc1d2\1\uc228\1\uc27e\1\uc2d4\1\uc32a\1\uc380\1\uc3d6"+ - "\1\uc42c\1\uc482\1\uc4d8\1\uc52e\1\uc584\1\uc5da\1\uc630\1\uc686"+ - "\1\uc6dc\1\uc732\1\uc788\1\uc7de\1\uc834\1\uc88a\1\uc8e0\1\uc3d6"+ - "\1\uc936\1\uc98c\1\uc9e2\1\uca38\1\uca8e\1\ucae4\1\ucb3a\1\ucb90"+ - "\1\ucbe6\1\ucc3c\1\ucc92\1\ucce8\1\ucd3e\1\ucd94\1\ucdea\1\uce40"+ - "\1\uce96\1\uceec\1\ucf42\1\ucf98\1\ucfee\1\ud044\1\ud09a\1\ud0f0"+ - "\1\ud146\1\ud19c\1\ud1f2\1\ud248\1\ud29e\1\ud2f4\1\ud34a\1\ud3a0"+ - "\1\ud3f6\1\ud44c\1\ud4a2\1\ud4f8\1\ud54e\1\ud5a4\1\ud5fa\1\ud650"+ - "\1\ud6a6\1\ud6fc\1\ud752\1\ud7a8\1\ud7fe\1\ud854\1\ud8aa\1\ud900"+ - "\1\ud956\0\u05b6\1\ud9ac\1\uda02\1\uda58\1\udaae\1\udb04\1\udb5a"+ - "\1\udbb0\1\udc06\1\udc5c\1\udcb2\1\udd08\1\udd5e\1\uddb4\1\ude0a"+ - "\1\ude60\1\udeb6\1\udf0c\1\udf62\1\udfb8\1\ue00e\1\ue064\1\ue0ba"+ - "\1\ue110\1\ue166\1\ue1bc\1\ue212\1\ue268\1\ue2be\1\ue314\1\ue36a"+ - "\1\ue3c0\1\ue416\1\ue46c\1\ue4c2\1\ue518\1\u9cde\1\ue56e\1\ue5c4"+ - "\1\ue61a\1\ue670\1\ue6c6\1\ue71c\1\ue772\1\ue7c8\1\ue81e\1\ue874"+ - "\1\ue8ca\1\ue920\1\ue976\1\ue9cc\1\uea22\1\uea78\1\ueace\1\ueb24"+ - "\1\ueb7a\1\uebd0\1\uec26\1\uec7c\1\uecd2\1\ued28\1\ued7e\1\uedd4"+ - "\1\uee2a\1\uee80\1\ueed6\1\uef2c\1\uef82\1\uefd8\1\uf02e\1\uf084"+ - "\1\uf0da\1\uf130\1\uf186\1\uf1dc\1\uf232\1\uf288\1\uf2de\1\uf334"+ - "\1\uf38a\1\uf3e0\1\uf436\1\uf48c\1\uf4e2\1\uf538\1\uf58e\1\uf5e4"+ - "\1\uf63a\1\uf690\1\uf6e6\1\uf73c\1\uf792\1\uf7e8\1\uf83e\1\uf894"+ - "\1\uf8ea\1\uf940\1\uf996\1\uf9ec\1\ufa42\1\ufa98\1\ufaee\1\ufb44"+ - "\1\ufb9a\1\ufbf0\1\ufc46\1\ufc9c\1\ufcf2\1\ufd48\1\ufd9e\1\ufdf4"+ - "\1\ufe4a\1\ufea0\1\ufef6\1\uff4c\1\uffa2\1\ufff8\2\116\2\244"+ - "\2\372\2\u0150\2\u01a6\2\u01fc\2\u0252\2\u02a8\2\u02fe\2\u0354"+ - "\2\u03aa\2\u0400\2\u0456\2\u04ac\2\u0502\2\u0558\2\u05ae\2\u0604"+ - "\2\u065a\2\u06b0\2\u0706\2\u075c\2\u07b2\2\u0808\2\u085e\2\u08b4"+ - "\2\u090a\2\u0960\2\u09b6\2\u0a0c\2\u0a62\2\u0ab8\2\u0b0e\2\u0b64"+ - "\2\u0bba\2\u0c10\2\u0c66\2\u0cbc\2\u0d12\2\u0d68\2\u0dbe\2\u0e14"+ - "\2\u0e6a\2\u0ec0\2\u0f16\2\u0f6c\2\u0fc2\2\u1018\2\u106e\2\u10c4"+ - "\2\u111a\2\u1170\2\u11c6\2\u121c\2\u1272\2\u12c8\2\u131e\2\u1374"+ - "\2\u13ca\2\u1420\2\u1476\2\u14cc\2\u1522\2\u1578\2\u15ce\2\u1624"+ - "\2\u167a\2\u16d0\2\u1726\2\u177c\2\u17d2\2\u1828\2\u187e\2\u18d4"+ - "\2\u192a\2\u1980\2\u19d6\2\u1a2c\2\u1a82\2\u1ad8\2\u1b2e\2\u1b84"+ - "\2\u1bda\2\u1c30\2\u1c86\2\u1cdc\2\u1d32\2\u1d88\2\u1dde\2\u1e34"+ - "\2\u1e8a\2\u1ee0\2\u1f36\2\u1f8c\2\u1fe2\2\u2038\2\u208e\2\u20e4"+ - "\2\u213a\2\u2190\2\u21e6\2\u223c\2\u2292\2\u22e8\2\u233e\2\u2394"+ - "\2\u23ea\2\u2440\2\u2496\2\u24ec\2\u2542\2\u2598\2\u25ee\2\u2644"+ - "\2\u269a\2\u26f0\2\u2746\2\u279c\2\u27f2\1\ua396\2\u2848\2\u289e"+ - "\2\u28f4\2\u294a\2\u29a0\2\u29f6\2\u2a4c\2\u2aa2\2\u2af8\2\u2b4e"+ - "\2\u2ba4\2\u2bfa\2\u2c50\2\u2ca6\2\u2cfc\2\u2d52\2\u2da8\2\u2dfe"+ - "\2\u2e54\2\u2eaa\2\u2f00\2\u2f56\2\u2fac\2\u3002\2\u3058\2\u30ae"+ - "\2\u3104\2\u315a\2\u31b0\2\u3206\2\u325c\2\u32b2\2\u3308\2\u335e"+ - "\2\u33b4\2\u340a\2\u3460\2\u34b6\2\u350c\2\u3562\2\u35b8\2\u360e"+ - "\2\u3664\2\u36ba\2\u3710\2\u3766\2\u37bc\2\u3812\2\u3868\2\u38be"+ - "\2\u3914\2\u396a\2\u39c0\2\u3a16\2\u3a6c\2\u3ac2\2\u3b18\2\u3b6e"+ - "\2\u3bc4\2\u3c1a\2\u3c70\2\u3cc6\2\u3d1c\2\u3d72\2\u3dc8\2\u3e1e"+ - "\2\u3e74\2\u3eca\2\u3f20\2\u3f76\2\u3fcc\2\u4022\2\u4078\2\u40ce"+ - "\2\u4124\2\u417a\2\u41d0\2\u4226\2\u427c\2\u42d2\2\u4328\2\u437e"+ - "\2\u43d4\2\u442a\2\u4480\2\u44d6\2\u452c\2\u4582\2\u45d8\2\u462e"+ - "\2\u4684\2\u46da\2\u4730\2\u4786\2\u47dc\2\u4832\2\u4888\2\u48de"+ - "\2\u4934\2\u498a\2\u49e0\2\u4a36\2\u4a8c\2\u4ae2\2\u4b38\2\u4b8e"+ - "\2\u4be4\2\u4c3a\2\u4c90\2\u4ce6\2\u4d3c\2\u4d92\2\u4de8\2\u4e3e"+ - "\2\u4e94\2\u4eea\2\u4f40\2\u4f96\2\u4fec\2\u5042\2\u5098\2\u50ee"+ - "\2\u5144\2\u519a\2\u51f0\2\u5246\2\u529c\2\u52f2\2\u5348\2\u539e"+ - "\2\u53f4\2\u544a\2\u54a0\2\u54f6\2\u554c\2\u55a2\2\u55f8\2\u564e"+ - "\2\u56a4\2\u56fa\2\u5750\2\u57a6\2\u57fc\2\u5852\2\u58a8\2\u58fe"+ - "\2\u5954\2\u59aa\2\u5a00\2\u5a56\2\u5aac\2\u5b02\2\u5b58\2\u5bae"+ - "\2\u5c04\2\u5c5a\2\u5cb0\2\u5d06\2\u5d5c\2\u5db2\2\u5e08\2\u5e5e"+ - "\2\u5eb4\2\u5f0a\2\u5f60\2\u5fb6\2\u600c\2\u6062\2\u60b8\2\u610e"+ - "\2\u6164\2\u61ba\2\u6210\2\u6266\2\u62bc\2\u6312\2\u6368\2\u63be"+ - "\2\u6414\2\u646a\2\u64c0\2\u6516\2\u656c\2\u65c2\2\u6618\2\u666e"+ - "\2\u66c4\2\u671a\2\u6770\2\u67c6\2\u681c\2\u6872\2\u68c8\2\u691e"+ - "\2\u6974\2\u69ca\2\u6a20\2\u6a76\2\u6acc\2\u6b22\2\u6b78\2\u6bce"+ - "\2\u6c24\2\u6c7a\2\u6cd0\2\u6d26\2\u6d7c\2\u6dd2\2\u6e28\2\u6e7e"+ - "\2\u6ed4\2\u6f2a\2\u6f80\2\u6fd6\2\u702c\2\u7082\2\u70d8\2\u712e"+ - "\2\u7184\2\u71da\2\u7230\2\u7286\2\u72dc\2\u7332\2\u7388\2\u73de"+ - "\2\u7434\2\u748a\2\u74e0\2\u7536\2\u758c\2\u75e2\2\u7638\2\u768e"+ - "\2\u76e4\2\u773a\2\u7790\2\u77e6\2\u783c\2\u7892\2\u78e8\2\u793e"+ - "\2\u7994\2\u79ea\2\u7a40\2\u7a96\2\u7aec\2\u7b42\2\u7b98\2\u7bee"+ - "\2\u7c44\2\u7c9a\2\u7cf0\2\u7d46\2\u7d9c\2\u7df2\2\u7e48\2\u7e9e"+ - "\2\u7ef4\2\u7f4a\2\u7fa0\2\u7ff6\2\u804c\2\u80a2\2\u80f8\2\u814e"+ - "\2\u81a4\2\u81fa\2\u8250\2\u82a6\2\u82fc\2\u8352\2\u83a8\2\u83fe"+ - "\2\u8454\2\u84aa\2\u8500\2\u8556\2\u85ac\2\u8602\2\u8658\2\u86ae"+ - "\2\u8704\2\u875a\2\u87b0\2\u8806\2\u885c\2\u88b2\2\u8908\2\u895e"+ - "\2\u89b4\2\u8a0a\2\u8a60\2\u8ab6\2\u8b0c\2\u8b62\2\u8bb8\2\u8c0e"+ - "\2\u8c64\2\u8cba\2\u8d10\2\u8d66\2\u8dbc\2\u8e12\2\u8e68\2\u8ebe"+ - "\2\u8f14\2\u8f6a\2\u8fc0\2\u9016\2\u906c\2\u90c2\2\u9118\2\u916e"+ - "\2\u91c4\2\u921a\2\u9270\2\u92c6\2\u931c\2\u9372\2\u93c8\2\u941e"+ - "\2\u9474\2\u94ca\2\u9520\2\u9576\2\u95cc\2\u9622\2\u9678\2\u96ce"+ - "\2\u9724\2\u977a\2\u97d0\2\u9826\2\u987c\2\u98d2\2\u9928\2\u997e"+ - "\2\u99d4\2\u9a2a\2\u9a80\2\u9ad6\2\u9b2c\2\u9b82\2\u9bd8\2\u9c2e"+ - "\2\u9c84\2\u9cda\2\u9d30\2\u9d86\2\u9ddc\2\u9e32\2\u9e88\2\u9ede"+ - "\2\u9f34\2\u9f8a\2\u9fe0\2\ua036\2\ua08c\2\ua0e2\2\ua138\2\ua18e"+ - "\2\ua1e4\2\ua23a"; - - private static int [] zzUnpackRowMap() { - int [] result = new int[2058]; - int offset = 0; - offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackRowMap(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int high = packed.charAt(i++) << 16; - result[j++] = high | packed.charAt(i++); - } - return j; - } - - /** - * The transition table of the DFA - */ - private static final int [] ZZ_TRANS = zzUnpackTrans(); - - private static final String ZZ_TRANS_PACKED_0 = - "\1\10\2\11\1\12\1\13\1\12\1\14\1\12\1\15"+ - "\1\16\1\10\1\17\1\20\1\21\1\22\1\10\1\11"+ - "\1\23\1\24\1\25\1\26\1\27\1\30\1\31\1\11"+ - "\1\32\1\33\1\34\1\35\1\36\1\37\1\40\1\41"+ - "\1\42\1\43\1\44\1\45\1\46\1\47\1\50\1\51"+ - "\1\26\1\52\1\26\1\53\1\54\1\53\1\55\1\11"+ - "\1\56\1\57\1\60\1\11\1\61\1\62\1\63\1\64"+ - "\1\65\1\66\1\11\1\67\1\11\2\45\1\70\1\11"+ - "\1\71\1\72\1\11\1\73\1\74\1\75\1\76\1\77"+ - "\1\100\1\101\1\102\1\11\1\103\1\104\1\105\1\106"+ - "\2\12\2\11\15\107\1\110\3\107\1\111\2\107\1\112"+ - "\32\107\1\113\10\107\1\114\35\107\15\115\1\116\3\115"+ - "\1\117\2\115\1\120\22\115\1\121\7\115\1\122\10\115"+ - "\1\123\5\115\1\124\1\115\1\125\25\115\15\126\1\127"+ - "\3\126\1\130\35\126\1\131\10\126\1\132\35\126\12\133"+ - "\1\134\1\135\4\133\1\136\1\137\104\133\10\140\1\141"+ - "\1\140\1\142\6\140\1\143\104\140\12\133\1\144\1\145"+ - "\4\133\1\136\1\146\104\133\10\10\1\0\2\10\1\0"+ - "\2\10\1\0\2\10\4\0\6\10\2\0\6\10\14\0"+ - "\17\10\2\0\27\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\25\11\2\150\1\151\3\12"+ - "\1\150\1\12\1\0\2\150\1\0\1\150\1\152\1\0"+ - "\2\150\4\0\1\153\3\150\1\152\1\154\1\0\1\155"+ - "\2\150\1\154\1\150\1\153\1\150\14\0\2\150\1\152"+ - "\5\150\1\152\6\150\2\0\22\150\2\12\4\150\1\156"+ - "\1\157\2\160\1\150\1\160\1\0\2\150\1\0\1\150"+ - "\1\152\1\0\2\150\4\0\1\153\2\161\1\162\1\152"+ - "\1\154\1\0\1\155\2\150\1\154\1\150\1\153\1\150"+ - "\14\0\2\150\1\152\2\150\1\162\2\150\1\152\6\150"+ - "\2\0\22\150\2\160\2\150\1\10\7\11\1\0\1\163"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\3\11\1\164\1\165\1\11\14\0\1\166\1\167"+ - "\15\11\2\0\1\10\25\11\10\170\1\171\1\170\1\172"+ - "\6\170\1\173\104\170\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\5\11\1\174\14\0\17\11\2\0\1\10\25\11\13\0"+ - "\1\175\112\0\1\10\7\11\1\0\1\176\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\2\11"+ - "\1\177\1\200\2\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\3\11\1\201\1\202"+ - "\1\11\14\0\1\11\1\203\4\11\1\204\10\11\2\0"+ - "\1\10\25\11\150\0\1\24\103\0\12\205\1\206\10\205"+ - "\1\207\1\210\23\205\1\211\55\205\50\0\1\53\55\0"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\1\11"+ - "\1\212\4\11\1\213\10\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\214\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\3\11\1\215\2\11\14\0"+ - "\1\11\1\216\4\11\1\217\5\11\1\220\2\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\1\11"+ - "\1\221\4\11\14\0\1\11\1\222\12\11\1\223\2\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\4\11\1\224\1\11\14\0\1\11\1\225\4\11\1\226"+ - "\10\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\1\227\1\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\1\11\1\230\4\11\14\0\5\11\1\231"+ - "\1\11\1\232\2\11\1\233\4\11\2\0\1\10\13\11"+ - "\1\234\11\11\33\0\1\53\14\0\1\53\60\0\3\155"+ - "\1\0\1\155\112\0\2\155\2\0\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\1\11\1\235\1\236\3\11\14\0\1\237"+ - "\1\240\15\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\2\11\1\241\3\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\1\242\1\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\3\11\1\243\1\244\1\11\14\0\5\11\1\245\4\11"+ - "\1\246\4\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\1\247\1\11\1\0\1\10\1\11"+ - "\4\0\2\11\1\250\3\11\2\0\5\11\1\251\14\0"+ - "\2\11\1\252\14\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\1\11\1\253\15\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\254\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\1\255\1\11\1\256\1\11\1\257\1\11\14\0\1\260"+ - "\2\11\1\261\5\11\1\262\2\11\1\263\2\11\2\0"+ - "\1\10\25\11\23\0\1\264\150\0\1\53\1\0\1\53"+ - "\124\0\1\265\1\53\120\0\1\53\4\0\1\53\125\0"+ - "\1\53\1\0\1\266\123\0\1\53\4\0\1\53\50\0"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\3\11\1\267\2\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\270\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\2\11\1\271\3\11\14\0\1\11\1\272"+ - "\15\11\2\0\1\10\25\11\1\10\7\11\1\0\1\273"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\1\11\1\274\1\11\1\275\2\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\3\11\1\276\1\277\1\11\14\0\1\300\1\301\15\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\1\302\1\303\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\1\304\4\11\1\305\14\0\2\11\1\306\4\11"+ - "\1\307\7\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\2\11\1\310\3\11\14\0\6\11\1\311"+ - "\10\11\2\0\1\10\25\11\1\10\7\11\1\0\1\312"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\2\11\1\313\1\314\2\11\14\0\1\11\1\315"+ - "\4\11\1\316\10\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\1\317\5\11\1\320"+ - "\10\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\1\11\1\321\15\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\1\11\1\322"+ - "\1\323\3\11\14\0\1\11\1\324\15\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\325\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\2\11\1\326"+ - "\1\327\2\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\2\330\3\10\1\330\1\10\1\0\1\330\1\10\1\0"+ - "\2\330\1\0\1\10\1\330\4\0\6\330\2\0\6\330"+ - "\14\0\17\330\2\0\1\10\21\330\2\10\2\330\1\10"+ - "\7\11\1\0\1\331\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\2\11\1\332\3\11\2\0\1\11\1\333"+ - "\3\11\1\334\14\0\3\11\1\335\13\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\1\336\1\11"+ - "\1\337\3\11\14\0\1\340\1\341\1\11\1\342\1\343"+ - "\1\11\1\344\5\11\1\345\2\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\1\346\1\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\1\347\3\11"+ - "\1\350\1\11\14\0\2\11\1\351\14\11\2\0\1\10"+ - "\13\11\1\352\11\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\1\11\1\353\4\11\14\0\1\354\1\355\4\11\1\356"+ - "\5\11\1\357\2\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\1\360\1\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\17\11\2\0"+ - "\1\10\5\11\1\361\1\362\16\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\3\11\1\363\2\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\2\11"+ - "\1\364\3\11\14\0\1\11\1\365\4\11\1\366\10\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\3\11\1\367\2\11\14\0\6\11\1\370\10\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\371\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\2\11"+ - "\1\372\1\373\2\11\14\0\1\11\1\374\15\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\375\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\2\11\1\376\3\11"+ - "\2\0\6\11\14\0\3\11\1\377\13\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\u0100\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\1\11\1\u0101"+ - "\1\11\1\u0102\2\11\14\0\6\11\1\u0103\10\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\1\11"+ - "\1\u0104\4\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\1\11\1\u0105\1\u0106\3\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\u0107\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\17\11\2\0\1\10\25\11"+ - "\15\107\1\0\3\107\1\0\2\107\1\0\32\107\1\0"+ - "\10\107\1\0\35\107\35\0\1\u0108\27\0\1\u0109\63\0"+ - "\1\u010a\137\0\1\u010b\160\0\1\u010c\35\0\15\115\1\0"+ - "\3\115\1\0\2\115\1\0\22\115\1\0\7\115\1\0"+ - "\10\115\1\0\5\115\1\0\1\115\1\0\25\115\35\0"+ - "\1\u010d\27\0\1\u010e\63\0\1\u010f\103\0\1\u0110\4\0"+ - "\1\u0110\2\0\1\u0110\2\0\2\u0110\5\0\1\u0111\1\0"+ - "\6\u0110\2\0\6\u0110\7\0\1\u0112\4\0\17\u0110\3\0"+ - "\21\u0110\2\0\2\u0110\35\0\1\u0113\160\0\1\u0114\135\0"+ - "\1\u0115\62\0\1\u0116\1\u0117\1\u0118\1\u0119\1\0\1\u011a"+ - "\15\0\1\u011b\1\u011c\1\u011d\1\u011e\1\0\1\u011f\3\0"+ - "\1\u0120\34\0\15\126\1\0\3\126\1\0\35\126\1\0"+ - "\10\126\1\0\35\126\35\0\1\u0121\27\0\1\u0122\75\0"+ - "\1\u0123\160\0\1\u0124\35\0\12\133\2\0\4\133\2\0"+ - "\104\133\21\u0125\1\0\104\u0125\13\0\1\u0126\113\0\2\u0127"+ - "\3\0\1\u0127\2\0\1\u0127\2\0\2\u0127\2\0\1\u0127"+ - "\4\0\6\u0127\2\0\6\u0127\14\0\17\u0127\1\u0128\2\0"+ - "\21\u0127\2\0\2\u0127\10\140\1\0\1\140\1\0\6\140"+ - "\1\0\104\140\10\0\1\u0129\115\0\21\u012a\1\0\104\u012a"+ - "\21\u012b\1\0\104\u012b\10\10\1\0\1\u012c\1\10\1\0"+ - "\2\10\1\0\2\10\4\0\6\10\2\0\6\10\14\0"+ - "\17\10\2\0\26\10\10\150\1\0\2\150\1\0\2\150"+ - "\1\0\2\150\4\0\6\150\2\0\6\150\14\0\17\150"+ - "\2\0\30\150\1\151\3\u012d\1\150\1\u012d\1\0\2\150"+ - "\1\0\2\150\1\0\2\150\4\0\6\150\2\0\6\150"+ - "\14\0\17\150\2\0\22\150\2\u012d\5\150\3\u012e\1\150"+ - "\1\u012e\1\0\2\150\1\0\2\150\1\0\2\150\4\0"+ - "\6\150\1\u012f\1\0\6\150\3\0\1\u012f\10\0\17\150"+ - "\2\0\22\150\2\u012e\5\150\3\155\1\150\1\155\1\0"+ - "\2\150\1\0\1\150\1\152\1\0\2\150\4\0\4\150"+ - "\1\152\1\154\2\0\2\150\1\154\3\150\14\0\2\150"+ - "\1\152\5\150\1\152\6\150\2\0\22\150\2\155\4\150"+ - "\1\156\1\150\2\u0130\1\150\1\u0130\1\0\2\150\1\0"+ - "\2\150\1\0\2\150\4\0\6\150\2\0\6\150\14\0"+ - "\17\150\2\0\22\150\2\u0130\5\150\3\157\1\150\1\157"+ - "\1\0\2\150\1\0\1\150\1\152\1\0\2\150\4\0"+ - "\4\150\1\152\1\154\1\0\1\155\2\150\1\154\3\150"+ - "\14\0\2\150\1\152\5\150\1\152\6\150\2\0\22\150"+ - "\2\157\4\150\1\156\1\157\2\160\1\150\1\160\1\0"+ - "\2\150\1\0\1\150\1\152\1\0\2\150\4\0\1\u0131"+ - "\3\150\1\152\1\154\1\0\1\155\2\150\1\154\1\150"+ - "\1\u0131\1\150\14\0\2\150\1\152\5\150\1\152\6\150"+ - "\2\0\22\150\2\160\6\150\2\u0132\2\150\1\0\2\150"+ - "\1\0\2\150\1\0\2\150\4\0\6\150\2\0\6\150"+ - "\14\0\17\150\2\0\31\150\5\u0133\1\0\2\150\1\0"+ - "\1\150\1\u0133\1\0\2\150\4\0\1\150\2\u0133\1\150"+ - "\2\u0133\2\0\2\150\2\u0133\2\150\14\0\2\150\1\u0133"+ - "\1\150\1\u0133\3\150\1\u0133\6\150\2\0\2\150\1\u0133"+ - "\17\150\2\u0133\2\150\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\1\11\1\u0134\4\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\4\11\1\u0135\1\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\3\11\1\u0136\2\11\14\0\1\11\1\u0137"+ - "\15\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\3\11\1\u0138\2\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\1\u0139"+ - "\1\11\1\0\1\10\1\11\4\0\6\11\2\0\4\11"+ - "\1\u013a\1\11\14\0\7\11\1\u013b\7\11\2\0\1\10"+ - "\25\11\10\170\1\u013c\1\170\1\172\6\170\1\173\104\170"+ - "\10\0\1\u013d\115\0\4\u013e\2\170\1\u013e\1\170\1\u013f"+ - "\1\u0140\4\170\3\u013e\1\0\5\u013e\1\170\5\u013e\2\170"+ - "\63\u013e\2\170\2\u013e\10\173\1\u013c\1\173\1\u0141\113\173"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\2\11\1\u0142\3\11"+ - "\14\0\6\11\1\u0143\10\11\2\0\1\10\25\11\13\0"+ - "\1\u0144\112\0\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\4\11"+ - "\1\u0145\1\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\11\11\1\303"+ - "\5\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\1\u0146\5\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\4\11\1\u0147\1\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\1\11\1\u0148\15\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\1\11"+ - "\1\303\4\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\1\u0149\1\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\17\11"+ - "\2\0\1\10\25\11\12\205\1\206\10\205\1\u014a\123\205"+ - "\1\0\104\205\24\0\1\u014b\101\0\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\1\u014c\1\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\4\11\1\u014d\12\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\1\u014e\1\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\5\11\1\u014f\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\1\11\1\u0150"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\5\11\1\u0151\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\1\11"+ - "\1\u0152\15\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\1\u0153\5\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\1\u0154\5\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\2\11\1\u0155\3\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\1\11\1\u0156\15\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\1\u0157\5\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\u0158\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\1\11\1\u0159\15\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\1\11\1\u015a\4\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\4\11\1\u015b\1\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\u015c\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\1\11\1\u015d\4\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\1\u015e"+ - "\5\11\14\0\4\11\1\u015f\12\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\3\11"+ - "\1\u0160\13\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\2\11\1\u0161\3\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\4\11\1\u0162\1\11"+ - "\2\0\6\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\u0163\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\3\11\1\u0164\2\11\14\0"+ - "\14\11\1\303\2\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\5\11\1\u0165\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\1\11"+ - "\1\u0166\4\11\14\0\6\11\1\u0167\10\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\17\11\2\0\1\10\2\11\1\u0168\22\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\1\u0169\4\11\1\u016a\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\u016b\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\4\11\1\u016c\12\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\5\11\1\u016d\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\1\u016e\5\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\2\11\1\u016f\3\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\14\11"+ - "\1\u0142\2\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\5\11\1\u0170\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\1\11\1\u0171\4\11\2\0"+ - "\5\11\1\u0172\14\0\17\11\2\0\1\10\5\11\1\u0173"+ - "\17\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\2\11\1\u0174\14\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\1\u0175\1\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\3\11\1\u0176\13\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\1\11\1\u0177\1\11\1\u0178"+ - "\2\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\1\u0179\5\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\2\11"+ - "\1\322\3\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\1\11\1\u017a"+ - "\15\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\1\11\1\u017b\2\11\1\u017c\1\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\6\11\1\u017d\10\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\1\u017e\1\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\17\11\2\0\1\10\25\11\12\205\1\206\10\205\2\0"+ - "\101\205\50\0\1\53\1\0\1\26\53\0\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\5\11\1\u017f\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\7\11\1\u0180\7\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\1\11\1\u0181\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\u0182\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\2\11\1\u0183\3\11\2\0\1\u0184\5\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\1\11\1\u0185\4\11\1\u0186\10\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\4\11\1\u0187\12\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\1\u0188\4\11\1\u016d"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\3\11\1\u0189\2\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\3\11"+ - "\1\u018a\2\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\1\u018b\1\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\4\11\1\u018c\1\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\1\u018d\4\11\1\u018e\14\0\12\11\1\u018f"+ - "\4\11\2\0\1\10\14\11\1\u0190\10\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\2\11\1\u0191\3\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\5\11\1\u0192\1\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\2\11\1\u0193\3\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\3\11\1\u0194\13\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\1\u0195"+ - "\5\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\5\11\1\u0196\11\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\3\11\1\u0197\13\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\17\11"+ - "\2\0\1\10\3\11\1\u0198\21\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\1\u0199\5\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\u019a\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\4\11\1\u019b\12\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\6\11\1\u019c\10\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\1\u019d\5\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\4\11"+ - "\1\u019e\1\11\14\0\6\11\1\u019f\10\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\2\11\1\u0180"+ - "\3\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\1\u01a0\5\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\1\u01a1"+ - "\5\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\1\u01a2\1\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\3\11"+ - "\1\u01a3\1\11\1\u01a4\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\1\u01a5\1\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\330\1\0\1\330"+ - "\1\u01a6\1\0\2\330\1\0\1\10\1\330\4\0\6\330"+ - "\2\0\6\330\14\0\17\330\2\0\1\10\25\330\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\1\u01a7\5\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\5\11\1\u01a8\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\1\11\1\u01a9\4\11\14\0"+ - "\6\11\1\u01aa\10\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\5\11\1\u01ab\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\3\11\1\u01ac\13\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\1\11\1\u01ad\1\11\1\u01ae"+ - "\2\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\1\u0142\1\u01af\4\11\14\0\4\11"+ - "\1\u01b0\12\11\2\0\1\10\3\11\1\u01b1\21\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\1\11\1\u01b2"+ - "\15\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\1\11\1\u01b3\4\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\4\11\1\u01b4"+ - "\1\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\3\11\1\u01b5\2\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\7\11\1\u01b6\7\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\1\u01b7\1\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\5\11\1\u01b8"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\1\u01b9\4\11\1\u01ba\14\0\1\u01bb\1\11"+ - "\1\u01bc\1\u01bd\1\u01be\5\11\1\u01bf\4\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\2\11\1\u01c0"+ - "\3\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\4\11\1\u01c1\1\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\2\11\1\u01c2\3\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\5\11\1\u01c3\2\0\6\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\2\11\1\u01c4\3\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\1\11\1\u01c5"+ - "\4\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\1\11\1\u01c6\15\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\7\11\1\u01c7\7\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\3\11"+ - "\1\u01c8\13\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\5\11\1\u01c9\14\0\4\11\1\u01ca\11\11"+ - "\1\u01cb\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\4\11"+ - "\1\u01cc\1\11\2\0\6\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\17\11\2\0\1\10\4\11\1\u01cd\20\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\5\11\1\u01ce\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\1\11"+ - "\1\u01cf\4\11\14\0\4\11\1\u01d0\12\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\6\11\1\u01d1\10\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\1\11\1\u01d2\4\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\1\u019d\5\11\14\0\3\11\1\u01d3\13\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\5\11\1\u01d4"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\4\11\1\u01d5\1\11\14\0\7\11\1\u01d6"+ - "\7\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\13\11\1\u01d7\3\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\12\11\1\u01d8\4\11\2\0\1\10\25\11\1\10\5\11"+ - "\1\u01d9\1\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\1\u01da\5\11\14\0"+ - "\17\11\2\0\1\10\2\11\1\u01db\22\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\1\u01dc\5\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\5\11"+ - "\1\u01dd\14\0\17\11\2\0\1\10\14\11\1\u01de\10\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\1\u01df\5\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\5\11\1\u01e0\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\1\11"+ - "\1\u01e1\4\11\1\u01e2\10\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\4\11\1\u01e3"+ - "\12\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\3\11\1\u01e4\13\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\2\11\1\u01e5"+ - "\3\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\6\11\1\u01e6\10\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\3\11\1\u01e7\2\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\2\11\1\u0198\3\11"+ - "\14\0\17\11\2\0\1\10\25\11\62\0\1\u01e8\104\0"+ - "\1\u01e9\121\0\1\u01ea\160\0\1\u01eb\117\0\1\u01ec\104\0"+ - "\1\u01ed\64\0\52\u0110\1\u0112\53\u0110\1\0\1\u0110\4\0"+ - "\1\u0110\2\0\1\u0110\2\0\2\u0110\7\0\6\u0110\2\0"+ - "\6\u0110\7\0\1\u0112\4\0\17\u0110\3\0\21\u0110\2\0"+ - "\2\u0110\35\0\1\u01ee\160\0\1\u01ef\76\0\1\u01f0\17\0"+ - "\1\u01f1\1\0\1\u01f2\1\0\1\u01f3\3\0\1\u01f4\45\0"+ - "\1\u01f5\45\0\1\u01f6\1\u01f7\104\0\1\u01f8\152\0\1\u01f9"+ - "\52\0\1\u01fa\153\0\1\u01fb\25\0\1\u01fc\67\0\1\u01fd"+ - "\135\0\1\u01fe\126\0\1\u01ff\125\0\1\u0200\101\0\1\u0201"+ - "\150\0\1\u0202\150\0\1\u0203\104\0\1\u0204\121\0\1\u0205"+ - "\160\0\1\u0206\50\0\1\u0207\113\0\7\u0127\1\0\1\u0127"+ - "\1\u0208\1\0\2\u0127\2\0\1\u0127\4\0\6\u0127\2\0"+ - "\6\u0127\14\0\17\u0127\3\0\25\u0127\77\u0209\1\0\26\u0209"+ - "\10\0\1\u020a\115\0\3\10\5\u020b\1\0\2\10\1\0"+ - "\1\10\1\u020b\1\0\2\10\4\0\1\10\2\u020b\1\10"+ - "\2\u020b\2\0\2\10\2\u020b\2\10\14\0\2\10\1\u020b"+ - "\1\10\1\u020b\3\10\1\u020b\6\10\2\0\2\10\1\u020b"+ - "\17\10\2\u020b\2\10\2\150\1\151\3\u012d\1\150\1\u012d"+ - "\1\0\2\150\1\0\2\150\1\0\2\150\4\0\1\153"+ - "\5\150\2\0\4\150\1\153\1\150\14\0\17\150\2\0"+ - "\22\150\2\u012d\5\150\3\u012e\1\150\1\u012e\1\0\2\150"+ - "\1\0\1\150\1\152\1\0\2\150\4\0\4\150\1\152"+ - "\1\150\2\0\6\150\14\0\2\150\1\152\5\150\1\152"+ - "\6\150\2\0\22\150\2\u012e\2\150\3\0\3\u012e\1\0"+ - "\1\u012e\112\0\2\u012e\2\0\2\150\1\156\1\150\2\u0130"+ - "\1\150\1\u0130\1\0\2\150\1\0\2\150\1\0\2\150"+ - "\4\0\1\u0131\5\150\2\0\4\150\1\u0131\1\150\14\0"+ - "\17\150\2\0\22\150\2\u0130\4\150\1\u020c\1\150\2\u0132"+ - "\2\150\1\0\2\150\1\0\2\150\1\0\2\150\4\0"+ - "\6\150\2\0\6\150\14\0\17\150\2\0\30\150\1\u020d"+ - "\5\u0133\1\0\2\150\1\0\1\150\1\u0133\1\0\2\150"+ - "\4\0\1\u0131\2\u0133\1\150\2\u0133\2\0\2\150\2\u0133"+ - "\1\u0131\1\150\14\0\2\150\1\u0133\1\150\1\u0133\3\150"+ - "\1\u0133\6\150\2\0\2\150\1\u0133\17\150\2\u0133\2\150"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\1\11\1\u020e\4\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\2\11\1\u020f\3\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\5\11"+ - "\1\u0210\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\1\u0211\1\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\5\11\1\u0212\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\1\11\1\u0213\4\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\5\11\1\u0214\14\0"+ - "\4\11\1\u0215\12\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\4\11\1\u0216\1\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\3\11\1\u0217\13\11\2\0\1\10\25\11"+ - "\10\u013e\1\u0218\10\u013e\1\0\107\u013e\5\u0219\1\u0218\4\u013e"+ - "\1\u0219\3\u013e\1\0\4\u013e\2\u0219\1\u013e\2\u0219\4\u013e"+ - "\2\u0219\20\u013e\1\u0219\1\u013e\1\u0219\3\u013e\1\u0219\12\u013e"+ - "\1\u0219\17\u013e\2\u0219\2\u013e\4\0\2\173\1\0\2\173"+ - "\1\u021a\4\173\11\0\1\173\5\0\2\173\63\0\2\173"+ - "\2\0\1\10\7\11\1\0\1\11\1\147\1\0\1\u021b"+ - "\1\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\4\11\1\303\1\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\6\11\1\u021c\10\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\5\11\1\u0163\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\3\11\1\u021d\2\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\3\11\1\u021e\2\11"+ - "\14\0\2\11\1\u021f\14\11\2\0\1\10\25\11\23\0"+ - "\1\u0220\102\0\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\13\11\1\u0221\3\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\3\11\1\u0222\2\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\2\11\1\u0223\3\11\14\0\16\11\1\u0224\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\1\u0225"+ - "\5\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\1\11\1\u0226\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\2\11"+ - "\1\u0227\3\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\1\u0228\3\11\1\u0229\1\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\17\11\2\0\1\10\2\11"+ - "\1\u022a\22\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\2\11"+ - "\1\u022b\3\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\3\11\1\u022c\2\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\4\11\1\u022d\1\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\2\11\1\u022e"+ - "\3\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\5\11\1\u022f\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\3\11"+ - "\1\u0230\2\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\7\11\1\u0231"+ - "\7\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\1\u0232\1\11\1\u0233\3\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\7\11\1\u0234\7\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\1\11\1\u0235"+ - "\15\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\2\11\1\u0236\3\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\2\11\1\u0237"+ - "\3\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\1\u0238\5\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\1\u0239\1\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\5\11\1\u023a\2\0\6\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\2\11"+ - "\1\u023b\3\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\1\u023c\1\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\1\303\5\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\1\11\1\u023d"+ - "\15\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\5\11\1\303\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\1\u023e\5\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\u023f"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\3\11\1\u0240"+ - "\13\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\7\11\1\303\7\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\1\u0241\16\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\2\11\1\303\3\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\2\11"+ - "\1\u0242\3\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\1\11\1\247\4\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\1\u0243\5\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\1\11"+ - "\1\u0244\15\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\2\11\1\u0245\3\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\14\11\1\u0246\2\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\17\11\2\0"+ - "\1\10\2\11\1\u0247\22\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\13\11\1\u022e\3\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\2\11\1\203"+ - "\3\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\6\11\1\u0248\10\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\1\u0249\5\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\17\11\2\0"+ - "\1\10\11\11\1\u024a\13\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\1\11\1\u021d\4\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\6\11\1\u024b\10\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\6\11\1\u0230\10\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\1\u0188\5\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\4\11\1\u024c"+ - "\12\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\17\11\2\0\1\10\15\11\1\u024d"+ - "\7\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\3\11\1\u0142\13\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\3\11\1\u024e\2\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\2\11\1\u024f"+ - "\3\11\2\0\6\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\4\11\1\u0249\1\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\17\11\2\0\1\10\1\11"+ - "\1\u0230\23\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\1\u0250"+ - "\5\11\14\0\3\11\1\u0251\13\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\1\u0252\1\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\12\11\1\u0253\4\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\16\11\1\u0254\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\4\11\1\u0255\12\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\5\11\1\u0167\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\1\11\1\u022e\4\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\1\u0256\4\11\1\u0165"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\4\11\1\u0190\1\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\2\11"+ - "\1\u0257\3\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\1\u0258\5\11\14\0\3\11"+ - "\1\u0190\13\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\1\11\1\u0259\15\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\2\11"+ - "\1\u025a\3\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\1\11\1\u025b\4\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\3\11\1\u025c\2\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\1\u025d"+ - "\1\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\4\11\1\u025e\1\11\14\0\1\11\1\u0245"+ - "\15\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\3\11\1\u025f\2\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\6\11\1\u0260\10\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\4\11\1\u0261\1\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\u0262\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\2\11\1\u0142\1\u0263\2\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\2\11"+ - "\1\u0264\3\11\2\0\6\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\1\u0265\5\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\4\11\1\u016d\1\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\1\u0142\16\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\3\11\1\u0266\2\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\2\11\1\303\14\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\17\11"+ - "\2\0\1\10\1\11\1\u0230\7\11\1\u0267\3\11\1\u0268"+ - "\7\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\1\11\1\303\15\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\1\u0269\1\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\1\u026a\5\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\2\11\1\u026b\14\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\1\11"+ - "\1\u026c\15\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\2\11\1\u026d\14\11\2\0"+ - "\1\10\25\11\10\10\1\0\1\u026e\1\10\1\0\2\10"+ - "\1\0\2\10\4\0\6\10\2\0\6\10\14\0\17\10"+ - "\2\0\27\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\1\11\1\u026f\15\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\1\u0270\5\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\3\11"+ - "\1\u0271\2\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\1\u0272\5\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\2\11\1\u0273\3\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\2\11\1\u0274\3\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\2\11\1\u0275\3\11\14\0\6\11\1\u0276"+ - "\10\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\4\11\1\u0277\12\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\6\11\1\u0278\3\11\1\u0279\4\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\u027a\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\u027b\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\1\11\1\u0230\4\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\1\u027c\5\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\6\11\1\u027d"+ - "\10\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\1\u027e\1\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\3\11"+ - "\1\u027f\13\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\4\11\1\u0280\12\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\1\u0281"+ - "\5\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\2\11\1\u0282\3\11\14\0\17\11"+ - "\2\0\1\10\2\11\1\u0283\22\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\1\u0284\5\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\2\11\1\u0285"+ - "\3\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\2\11\1\u0286\3\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\u0287\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\1\11\1\u0288\15\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\3\11\1\u0289\2\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\1\11\1\u028a\4\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\1\11\1\u028b\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\2\11\1\u028c\3\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\1\u028d\1\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\1\11\1\230\4\11\14\0"+ - "\5\11\1\u028e\11\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\2\11\1\u028f\3\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\2\11\1\u0290\3\11\14\0\1\11\1\u0291\15\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\11\11\1\u0292\13\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\2\11\1\u0293\3\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\2\11\1\u0294\3\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\u0295\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\3\11\1\u0296"+ - "\2\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\1\u0297\16\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\1\u0298\1\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\10\11\1\u0299\6\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\10\11\1\u0142\6\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\1\u029a"+ - "\16\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\6\11\1\u029b\10\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\1\u015d\5\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\2\11\1\u0142\14\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\1\u029c"+ - "\5\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\1\0\1\u029d\6\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\5\11"+ - "\1\u029e\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\4\11\1\u029f\1\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\2\11\1\u02a0"+ - "\3\11\2\0\6\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\3\11\1\u02a1\2\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\6\11\1\u02a2\10\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\4\11"+ - "\1\u02a3\1\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\17\11\2\0"+ - "\1\10\1\11\1\u02a4\1\u02a5\22\11\1\10\7\11\1\0"+ - "\1\u02a6\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\3\11"+ - "\1\u02a7\13\11\2\0\1\10\13\11\1\u02a8\11\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\2\11\1\u02a9\3\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\2\11\1\u02aa\3\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\6\11\1\u02ab\10\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\1\u02ac\16\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\3\11\1\u02ad\1\u02ae\12\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\1\u02af\1\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\1\11\1\u02b0\5\11\1\u02b1\7\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\16\11"+ - "\1\u02b2\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\2\11\1\u02b3\3\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\13\11\1\u02b4\3\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\1\u02b5\5\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\16\11\1\u02b6\2\0\1\10\25\11\56\0\1\u02b7"+ - "\106\0\1\u01e8\150\0\1\u02b8\77\0\1\u02b9\147\0\1\u02ba"+ - "\106\0\1\u01ec\150\0\1\u02bb\77\0\1\u02bc\156\0\1\u02bd"+ - "\120\0\1\u02be\125\0\1\u02bf\61\0\1\u02c0\151\0\1\u02c1"+ - "\122\0\1\u02c2\126\0\1\u02c3\150\0\1\u02c4\101\0\1\u02c5"+ - "\130\0\1\u02c6\22\0\1\u02c7\77\0\1\u02c8\126\0\1\u02c9"+ - "\1\u02ca\102\0\1\u02cb\153\0\1\u02cc\145\0\1\u02cd\101\0"+ - "\1\u02ce\124\0\1\u02cf\125\0\1\u02d0\23\0\1\u02d1\102\0"+ - "\1\u02d2\145\0\1\u02d3\106\0\1\u0203\150\0\1\u02d4\77\0"+ - "\1\u02d5\102\0\1\u02d6\114\0\77\u0209\1\u02d7\26\u0209\3\10"+ - "\5\u02d8\1\0\2\10\1\0\1\10\1\u02d8\1\0\2\10"+ - "\4\0\1\10\2\u02d8\1\10\2\u02d8\2\0\2\10\2\u02d8"+ - "\2\10\14\0\2\10\1\u02d8\1\10\1\u02d8\3\10\1\u02d8"+ - "\6\10\2\0\2\10\1\u02d8\17\10\2\u02d8\2\10\2\150"+ - "\1\u020d\5\u0133\1\0\2\150\1\0\1\150\1\u0133\1\0"+ - "\2\150\4\0\1\150\2\u0133\1\150\2\u0133\2\0\2\150"+ - "\2\u0133\2\150\14\0\2\150\1\u0133\1\150\1\u0133\3\150"+ - "\1\u0133\6\150\2\0\2\150\1\u0133\17\150\2\u0133\2\150"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\2\11\1\u02d9\3\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\1\u02da\1\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\5\11\1\u02db"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\2\11\1\u02dc\3\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\2\11"+ - "\1\u0269\3\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\5\11\1\u02dd\1\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\3\11\1\u02de"+ - "\2\11\14\0\17\11\2\0\1\10\1\11\1\u02df\1\u02e0"+ - "\22\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\1\11\1\u02e1\15\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\u02e2\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\2\11\1\u02e3"+ - "\3\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\3\11\1\u01c0\2\11\14\0\6\11"+ - "\1\u02e4\10\11\2\0\1\10\25\11\3\u013e\5\u02e5\1\u0218"+ - "\4\u013e\1\u02e5\3\u013e\1\0\4\u013e\2\u02e5\1\u013e\2\u02e5"+ - "\4\u013e\2\u02e5\20\u013e\1\u02e5\1\u013e\1\u02e5\3\u013e\1\u02e5"+ - "\12\u013e\1\u02e5\17\u013e\2\u02e5\2\u013e\3\0\5\u02e6\5\0"+ - "\1\u02e6\10\0\2\u02e6\1\0\2\u02e6\4\0\2\u02e6\20\0"+ - "\1\u02e6\1\0\1\u02e6\3\0\1\u02e6\12\0\1\u02e6\17\0"+ - "\2\u02e6\2\0\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\13\11\1\303\3\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\12\11\1\u016d"+ - "\4\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\1\u022e\5\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\4\11\1\u02e7\1\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\1\u02e8\5\11\2\0\6\11\14\0\17\11\2\0\1\10"+ - "\1\11\1\u02e9\2\11\1\u02ea\20\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\17\11\2\0\1\10\2\11"+ - "\1\u0283\22\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\4\11"+ - "\1\u02eb\1\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\17\11\2\0"+ - "\1\10\12\11\1\u02ec\12\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\2\11\1\u02ed\1\u02ee\2\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\15\11\1\u02ef\1\11\2\0\1\10\4\11\1\u02f0"+ - "\20\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\2\11\1\u02f1"+ - "\3\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\17\11\2\0\1\10"+ - "\21\11\1\u02f2\3\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\5\11\1\u02f3\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\2\11\1\u02f4\3\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\2\11\1\u0230\3\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\17\11\2\0\1\10\1\11\1\u02f5\23\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\16\11\1\303\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\2\11"+ - "\1\u02f6\3\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\1\u0269\16\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\1\u0142\5\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\3\11\1\u02f7\2\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\2\11\1\u02f8\3\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\1\u02f9"+ - "\1\11\1\0\1\10\1\11\4\0\4\11\1\u02fa\1\11"+ - "\2\0\6\11\14\0\10\11\1\u02fb\4\11\1\u02fc\1\11"+ - "\2\0\1\10\4\11\1\u02fd\5\11\1\u02fe\1\u02ff\1\11"+ - "\1\u0300\1\11\1\u0301\5\11\1\10\5\11\1\u0302\1\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\2\11\1\u0303\3\11\14\0\17\11"+ - "\2\0\1\10\2\11\1\u022a\6\11\1\u0304\13\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\1\11\1\u0142\4\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\1\11\1\u0305\4\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\3\11\1\u0306\13\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\14\11\1\u0307\2\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\1\u0308\5\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\5\11\1\u028e"+ - "\11\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\5\11\1\u0309\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\11\11"+ - "\1\u030a\5\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\1\11\1\u030b\4\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\1\11"+ - "\1\u030c\4\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\1\11\1\u030d"+ - "\15\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\17\11\2\0\1\10\17\11\1\u030e"+ - "\5\11\1\10\7\11\1\0\1\11\1\147\1\0\1\u030f"+ - "\1\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\1\11\1\u0310\4\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\1\11\1\u0311\15\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\1\11\1\u0165\4\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\3\11\1\u0262\13\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\1\u0312\16\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\4\11\1\u0313\12\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\6\11\1\u0314\10\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\2\11\1\310\3\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\1\u0315\1\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\1\u0316"+ - "\16\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\1\11\1\u0317\4\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\u0318\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\4\11\1\u0157\1\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\2\11\1\u0319"+ - "\3\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\2\11\1\u031a\3\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\1\u031b\5\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\3\11\1\u031c\2\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\3\11\1\u031d\2\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\1\303\16\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\6\11\1\u031e\10\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\1\11"+ - "\1\u031f\4\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\3\11\1\u0320\2\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\16\11\1\u0321\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\4\11"+ - "\1\u0230\12\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\3\11\1\u01d0\2\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\5\11"+ - "\1\u0262\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\1\u0322\5\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\2\11"+ - "\1\u0323\3\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\5\11\1\u0324\1\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\1\303\1\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\6\11"+ - "\1\u0325\10\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\2\11\1\u0142\3\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\4\11\1\u0326\6\11\1\u0327"+ - "\11\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\4\11\1\u0328"+ - "\1\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\6\11\1\u0329\10\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\1\317\5\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\2\11\1\u032a\3\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\1\11\1\u032b\4\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\3\11\1\u032c"+ - "\2\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\6\11\1\u032d\10\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\2\11\1\u0235\1\u032c\2\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\u032e\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\1\11\1\u032f\15\11\2\0\1\10"+ - "\25\11\3\10\5\u0330\1\0\2\10\1\0\1\10\1\u0330"+ - "\1\0\2\10\4\0\1\10\2\u0330\1\10\2\u0330\2\0"+ - "\2\10\2\u0330\2\10\14\0\2\10\1\u0330\1\10\1\u0330"+ - "\3\10\1\u0330\6\10\2\0\2\10\1\u0330\17\10\2\u0330"+ - "\3\10\5\11\1\u0331\1\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\1\11\1\u0332\4\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\14\11\1\u0333\2\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\1\u0334\16\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\1\11\1\u0335\4\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\1\u0336\1\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\3\11\1\u0337\2\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\1\u0338"+ - "\1\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\4\11\1\u0339\12\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\16\11\1\u033a"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\3\11\1\u033b\2\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\6\11"+ - "\1\u033c\10\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\1\11\1\u033d\4\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\2\11"+ - "\1\u033e\3\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\2\11\1\u033f\3\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\1\u0340\5\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\1\u0341\1\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\4\11\1\u0342\1\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\4\11\1\u0343\1\11\2\0"+ - "\6\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\2\11\1\u0344\3\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\1\11\1\u0345\4\11\14\0\13\11\1\u0341\3\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\u0346\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\3\11\1\u0347\2\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\1\11"+ - "\1\u0348\4\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\5\11\1\u0349"+ - "\11\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\1\u034a\5\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\7\11"+ - "\1\u034b\7\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\4\11\1\u034c\1\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\3\11"+ - "\1\u034d\2\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\1\11\1\u034e"+ - "\15\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\13\11\1\u034f\3\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\1\u0350\5\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\4\11\1\u0351\12\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\2\11\1\u022a\6\11\1\u0304"+ - "\13\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\3\11\1\u0352"+ - "\2\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\11\11\1\u0269\5\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\3\11\1\u0353\2\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\1\11\1\u0354\4\11"+ - "\14\0\17\11\2\0\1\10\23\11\1\u0355\1\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\17\11\2\0"+ - "\1\10\12\11\1\u0356\12\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\3\11\1\u0357\13\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\1\u0358\5\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\2\11\1\u0359\3\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\1\11\1\u035a\15\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\3\11\1\u035b\2\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\1\u0269\5\11\14\0\17\11\2\0\1\10\2\11"+ - "\1\u022a\6\11\1\u0304\13\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\1\11\1\u035c\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\u035d\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\17\11"+ - "\2\0\1\10\25\11\32\0\1\u035e\73\0\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\6\11\1\u035f\10\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\17\11\2\0\1\10\15\11\1\u0360\7\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\2\11\1\u0361\3\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\1\u0362\5\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\13\11\1\u0363\3\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\3\11\1\u0364\2\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\4\11\1\u0365\12\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\2\11\1\u0366\3\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\4\11\1\u0367\12\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\u0368\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\1\11\1\u0369\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\1\11\1\u036a"+ - "\4\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\4\11\1\u036b\12\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\1\11\1\u036c\15\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\2\11\1\u036d\3\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\2\11\1\u036e\3\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\2\11"+ - "\1\u036f\3\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\1\u0370\5\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\1\11\1\u0371\4\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\6\11"+ - "\1\u0372\10\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\3\11\1\u0373\2\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\2\11\1\u0374\14\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\1\11\1\u0375"+ - "\15\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\2\11\1\u0376\3\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\17\11\2\0\1\10\7\11\1\u0377\15\11\23\0\1\u0378"+ - "\144\0\1\u01e8\13\0\1\u02b7\50\0\1\u02b9\1\u0379\5\u02b9"+ - "\1\u0379\1\u02b9\2\0\2\u02b9\1\0\1\u0379\1\u02b9\2\0"+ - "\1\u02b9\1\u0379\6\u02b9\2\u0379\6\u02b9\4\u0379\1\0\1\u0379"+ - "\2\0\4\u0379\17\u02b9\2\0\1\u0379\25\u02b9\23\0\1\u037a"+ - "\144\0\1\u01ec\13\0\1\u02ba\50\0\1\u02bc\1\u037b\5\u02bc"+ - "\1\u037b\1\u02bc\2\0\2\u02bc\1\0\1\u037b\1\u02bc\2\0"+ - "\1\u02bc\1\u037b\6\u02bc\2\u037b\6\u02bc\4\u037b\1\0\1\u037b"+ - "\2\0\4\u037b\17\u02bc\2\0\1\u037b\25\u02bc\14\0\1\u037c"+ - "\20\0\1\u037d\153\0\1\u037e\123\0\1\u037f\123\0\1\u0380"+ - "\107\0\1\u0381\144\0\1\u0382\104\0\1\u0383\20\0\1\u0384"+ - "\125\0\1\u02ca\56\0\1\u0385\202\0\1\u0386\76\0\1\u0387"+ - "\1\0\1\u0388\143\0\1\u0389\133\0\1\u038a\123\0\1\u038b"+ - "\122\0\1\u038c\103\0\1\u038d\127\0\1\u038e\124\0\1\u038f"+ - "\125\0\1\u0390\125\0\1\u0391\130\0\1\u0392\106\0\1\u0393"+ - "\144\0\1\u0203\13\0\1\u02d3\50\0\1\u02d5\1\u0394\5\u02d5"+ - "\1\u0394\1\u02d5\2\0\2\u02d5\1\0\1\u0394\1\u02d5\2\0"+ - "\1\u02d5\1\u0394\6\u02d5\2\u0394\6\u02d5\4\u0394\1\0\1\u0394"+ - "\2\0\4\u0394\17\u02d5\2\0\1\u0394\25\u02d5\3\0\5\u0395"+ - "\5\0\1\u0395\10\0\2\u0395\1\0\2\u0395\4\0\2\u0395"+ - "\20\0\1\u0395\1\0\1\u0395\3\0\1\u0395\12\0\1\u0395"+ - "\17\0\2\u0395\2\0\3\10\5\u0396\1\0\2\10\1\0"+ - "\1\10\1\u0396\1\0\2\10\4\0\1\10\2\u0396\1\10"+ - "\2\u0396\2\0\2\10\2\u0396\2\10\14\0\2\10\1\u0396"+ - "\1\10\1\u0396\3\10\1\u0396\6\10\2\0\2\10\1\u0396"+ - "\17\10\2\u0396\3\10\7\11\1\0\1\11\1\147\1\0"+ - "\1\u0397\1\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\2\11\1\u0398\14\11"+ - "\2\0\1\10\25\11\1\10\5\11\1\u0399\1\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\1\u039a\3\11\1\u039b\1\11\2\0\6\11\14\0\17\11"+ - "\2\0\1\10\10\11\1\u039c\1\11\1\u02fe\12\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\3\11\1\u032c\2\11\14\0"+ - "\17\11\2\0\1\10\12\11\1\u039d\12\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\1\11\1\u039e\15\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\4\11\1\u039f\12\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\1\11\1\u03a0\4\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\2\11\1\u03a1\3\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\4\11"+ - "\1\u0262\1\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\1\11\1\u03a2\4\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\4\11\1\u03a3\12\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\4\11\1\u0341"+ - "\1\11\14\0\17\11\2\0\1\10\25\11\3\u013e\5\u03a4"+ - "\1\u0218\4\u013e\1\u03a4\3\u013e\1\0\4\u013e\2\u03a4\1\u013e"+ - "\2\u03a4\4\u013e\2\u03a4\20\u013e\1\u03a4\1\u013e\1\u03a4\3\u013e"+ - "\1\u03a4\12\u013e\1\u03a4\17\u013e\2\u03a4\2\u013e\3\0\5\u03a5"+ - "\5\0\1\u03a5\10\0\2\u03a5\1\0\2\u03a5\4\0\2\u03a5"+ - "\20\0\1\u03a5\1\0\1\u03a5\3\0\1\u03a5\12\0\1\u03a5"+ - "\17\0\2\u03a5\2\0\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\4\11\1\u03a6\1\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\3\11\1\u03a7\2\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\4\11\1\u03a8\1\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\1\u03a9\1\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\2\11\1\u03aa\3\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\u03ab\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\2\11\1\u03ac\14\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\13\11\1\u03ad\3\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\2\11\1\u03ae\3\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\1\u03af\5\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\1\11\1\u01e4"+ - "\4\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\17\11\2\0\1\10"+ - "\22\11\1\u03b0\2\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\1\u03b1\5\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\3\11\1\u03b2\2\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\1\11\1\u03b3\4\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\3\11\1\u03b4"+ - "\2\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\1\u03b5\5\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\1\11"+ - "\1\u0374\4\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\3\11\1\u03b6\2\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\6\11\1\u03b7\10\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\2\11\1\u03b8"+ - "\3\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\2\11\1\u03b9\3\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\1\u03ba\1\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\1\11\1\u03bb"+ - "\15\11\2\0\1\10\25\11\1\10\7\11\1\0\1\u03bc"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\2\11\1\u03bd\3\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\1\11\1\u03be\4\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\1\11\1\u03bf\15\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\1\11\1\u03c0\4\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\3\11\1\u0180\2\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\1\u03c1\1\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\1\u03c2\5\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\17\11"+ - "\2\0\1\10\2\11\1\u03c3\22\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\1\u03c4\5\11\2\0\6\11\14\0\17\11\2\0\1\10"+ - "\13\11\1\u03c5\11\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\6\11\1\u03c6\10\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\6\11"+ - "\1\u03c7\10\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\1\u03c8\1\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\1\u03c9"+ - "\1\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\6\11\1\u03ca\10\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\2\11\1\u0167\14\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\3\11\1\u03cb\2\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\4\11\1\u0229\1\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\u03cc\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\1\u03cd\5\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\4\11"+ - "\1\303\12\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\1\u03ce\5\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\1\11\1\u03cf"+ - "\4\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\1\11\1\u03d0\15\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\4\11\1\u0165\1\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\4\11"+ - "\1\u03d1\12\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\1\11\1\u03d2\4\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\1\11\1\u0142\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\4\11\1\u03b2\1\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\1\u016d\5\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\13\11\1\u016d\3\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\1\u03d3"+ - "\1\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\1\11\1\u03d4\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\1\u03d5"+ - "\1\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\2\11\1\u03d6\3\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\6\11\1\u03d7\10\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\7\11\1\u03d8"+ - "\7\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\4\11\1\u03d9\1\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\4\11\1\u03da\12\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\1\u03db\1\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\u03dc\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\2\11\1\u0221\3\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\1\11\1\u03dd\15\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\1\u03de\5\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\1\11\1\u03df\15\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\2\11\1\u02e1\3\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\7\11\1\u03e0\7\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\1\11"+ - "\1\u03e1\4\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\7\11\1\u03e2"+ - "\7\11\2\0\1\10\25\11\3\10\5\u03e3\1\0\2\10"+ - "\1\0\1\10\1\u03e3\1\0\2\10\4\0\1\10\2\u03e3"+ - "\1\10\2\u03e3\2\0\2\10\2\u03e3\2\10\14\0\2\10"+ - "\1\u03e3\1\10\1\u03e3\3\10\1\u03e3\6\10\2\0\2\10"+ - "\1\u03e3\17\10\2\u03e3\3\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\4\11\1\u03e4\1\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\3\11\1\u03e5\2\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\1\u03e6\5\11\2\0\5\11\1\u0142\14\0\10\11\1\u03e7"+ - "\6\11\2\0\1\10\2\11\1\u03e8\1\11\1\u03e9\20\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\7\11"+ - "\1\u03ea\7\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\1\u03eb\5\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\2\11\1\u0269\14\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\7\11\1\u03ec\7\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\13\11\1\u03ed\3\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\1\u03ee\5\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\17\11\2\0\1\10\5\11\1\u03ef"+ - "\5\11\1\u03f0\11\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\4\11\1\u03f1\1\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\4\11"+ - "\1\u03f2\12\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\6\11\1\u03f3\10\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\1\u03f4\1\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\2\11\1\u028f\14\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\2\11\1\u03f5\3\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\2\11\1\u0235\3\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\2\11\1\u03f6\3\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\3\11"+ - "\1\u03f7\2\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\7\11\1\u0142"+ - "\7\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\1\u03f8\1\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\1\11\1\u03f9\4\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\7\11\1\u03fa\7\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\1\u03fb\1\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\6\11\1\u03fc\10\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\17\11"+ - "\2\0\1\10\13\11\1\u03fd\11\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\17\11\2\0\1\10\2\11"+ - "\1\u03fe\6\11\1\u03ff\13\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\3\11\1\u0400\13\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\6\11\1\u0401\10\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\2\11\1\u02e1\3\11\2\0\1\u015d\5\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\1\11\1\u0402\4\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\3\11\1\u0403"+ - "\2\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\6\11\1\u0404\10\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\2\11\1\u0405\3\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\2\11"+ - "\1\u0406\14\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\1\u0407\1\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\17\11\2\0\1\10\5\11\1\u0408\17\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\1\11\1\u0409\15\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\1\11\1\u040a\15\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\3\11"+ - "\1\u040b\13\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\6\11\1\u040c\10\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\4\11\1\u040d\12\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\11\11\1\u040e"+ - "\5\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\1\u040f\5\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\14\11"+ - "\1\u0410\2\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\3\11\1\u0411\2\11\14\0\17\11\2\0"+ - "\1\10\25\11\14\0\1\u0412\111\0\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\1\u0413\1\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\1\11\1\u0414\15\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\1\11\1\u0415\4\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\6\11\1\u0416\10\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\3\11\1\u0417\2\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\5\11\1\u0418\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\1\u0419\5\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\1\11\1\u041a\4\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\1\u041b\16\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\1\u041c\5\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\11\11\1\u041d\13\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\12\11\1\u026b"+ - "\4\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\1\u041e\5\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\1\u041f\1\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\3\11\1\u0420\2\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\1\11\1\u0421"+ - "\4\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\5\11\1\u0422\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\2\11\1\u0423\14\11\1\u0301"+ - "\5\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\6\11\1\u0424\10\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\1\u0425\5\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\13\11\1\u0262\3\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\15\11\1\u02fc"+ - "\1\11\2\0\1\10\4\11\1\u02fd\6\11\1\u02ff\3\11"+ - "\1\u0301\5\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\1\11"+ - "\1\u0426\4\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\1\11\1\u0142\4\11\14\0"+ - "\17\11\2\0\1\10\1\11\1\u0427\23\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\3\11\1\u0428\2\11\14\0\17\11"+ - "\2\0\1\10\25\11\23\0\1\u02b9\125\0\1\u02bc\177\0"+ - "\1\u0429\67\0\1\u042a\162\0\1\u042b\70\0\1\u0429\125\0"+ - "\1\u042c\77\0\1\u037f\152\0\1\u042d\127\0\1\u042e\155\0"+ - "\1\u042f\73\0\1\u0430\151\0\1\u0431\125\0\1\u0432\54\0"+ - "\1\u0433\174\0\1\u0434\105\0\1\u0435\124\0\1\u02ca\127\0"+ - "\1\u0436\123\0\1\u0437\154\0\1\u02ca\131\0\1\u0438\71\0"+ - "\1\u0439\153\0\1\u02ca\126\0\1\u043a\63\0\1\u02d5\105\0"+ - "\5\u043b\5\0\1\u043b\10\0\2\u043b\1\0\2\u043b\4\0"+ - "\2\u043b\20\0\1\u043b\1\0\1\u043b\3\0\1\u043b\12\0"+ - "\1\u043b\17\0\2\u043b\2\0\3\10\5\11\1\0\2\10"+ - "\1\0\1\10\1\11\1\0\2\10\4\0\1\10\2\11"+ - "\1\10\2\11\2\0\2\10\2\11\2\10\14\0\2\10"+ - "\1\11\1\10\1\11\3\10\1\11\6\10\2\0\2\10"+ - "\1\11\17\10\2\11\3\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\4\11\1\247\12\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\3\11\1\u043c\2\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\3\11\1\u043d\2\11\14\0\6\11\1\u043e"+ - "\10\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\1\11\1\u03b9\15\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\1\11\1\u043f\15\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\3\11\1\u0440\2\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\1\11\1\u0441\15\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\1\u0442\1\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\1\u0443\5\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\1\11\1\u0444\4\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\17\11\2\0\1\10\3\11"+ - "\1\u0445\21\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\1\11"+ - "\1\u0446\4\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\1\u0447\5\11\14\0\17\11"+ - "\2\0\1\10\25\11\3\u013e\5\170\1\u0218\4\u013e\1\170"+ - "\3\u013e\1\0\4\u013e\2\170\1\u013e\2\170\4\u013e\2\170"+ - "\20\u013e\1\170\1\u013e\1\170\3\u013e\1\170\12\u013e\1\170"+ - "\17\u013e\2\170\2\u013e\3\0\5\u0448\5\0\1\u0448\10\0"+ - "\2\u0448\1\0\2\u0448\4\0\2\u0448\20\0\1\u0448\1\0"+ - "\1\u0448\3\0\1\u0448\12\0\1\u0448\17\0\2\u0448\2\0"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\14\11"+ - "\1\303\2\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\5\11\1\u0449\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\4\11\1\u0142"+ - "\1\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\2\11\1\u044a\14\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\1\0"+ - "\1\u044b\6\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\7\11\1\u044c"+ - "\7\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\1\u03e6"+ - "\5\11\2\0\6\11\14\0\17\11\2\0\1\10\7\11"+ - "\1\u044d\15\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\2\11"+ - "\1\u0410\3\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\5\11\1\u044e\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\1\0"+ - "\1\u044f\6\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\1\11\1\u0450\4\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\1\u0142\1\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\1\11\1\u0451\4\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\1\u022e\1\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\4\11\1\u0452\1\11\2\0"+ - "\1\u0453\5\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\7\11\1\u0454"+ - "\7\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\4\11\1\u0455\1\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\5\11\1\u0456"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\3\11\1\u0457\2\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\3\11\1\u0458\13\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\1\u0459\5\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\1\u03ba\5\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\1\11\1\u045a\4\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\6\11\1\u0455\10\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\1\u045b"+ - "\1\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\3\11\1\u045c\2\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\3\11"+ - "\1\u045d\2\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\6\11\1\u045e"+ - "\10\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\1\u045f\5\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\6\11"+ - "\1\u0460\10\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\2\11\1\u0461\3\11\2\0\6\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\2\11"+ - "\1\u0462\3\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\1\u0463\1\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\2\11\1\u0464\14\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\1\u0465\5\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\4\11\1\u0165\12\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\1\u0466\5\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\1\11\1\u0467\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\1\11"+ - "\1\u0142\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\1\11\1\u0468\15\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\3\11\1\u0469\13\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\1\u046a\5\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\1\u03a6\5\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\u016d\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\3\11"+ - "\1\u046b\2\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\4\11\1\u046c"+ - "\12\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\17\11\2\0\1\10\11\11\1\u046d"+ - "\13\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\1\247\5\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\2\11\1\u046e\3\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\3\11"+ - "\1\u046f\2\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\3\11\1\u0470\2\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\3\11\1\u0471\13\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\1\u03db\5\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\1\u0472\1\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\3\11\1\u0473"+ - "\2\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\3\11\1\u0474\13\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\2\11\1\u0475\3\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\4\11"+ - "\1\u0476\12\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\17\11\2\0\1\10\1\11"+ - "\1\u0477\23\11\3\10\5\u0478\1\0\2\10\1\0\1\10"+ - "\1\u0478\1\0\2\10\4\0\1\10\2\u0478\1\10\2\u0478"+ - "\2\0\2\10\2\u0478\2\10\14\0\2\10\1\u0478\1\10"+ - "\1\u0478\3\10\1\u0478\6\10\2\0\2\10\1\u0478\17\10"+ - "\2\u0478\3\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\1\11\1\u0479\15\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\4\11\1\u047a\12\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\6\11\1\u047b\10\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\2\11\1\313\3\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\1\u047c\5\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\1\u047d"+ - "\1\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\2\11\1\u047e\3\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\6\11\1\u047f\10\11\2\0\1\10\25\11\1\10"+ - "\5\11\1\u0480\1\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\17\11\2\0\1\10\5\11\1\u0481\17\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\1\11\1\u0482\4\11\2\0\6\11\14\0\15\11"+ - "\1\u02fc\1\11\2\0\1\10\4\11\1\u03e9\1\u0481\11\11"+ - "\1\u0301\4\11\1\u0483\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\17\11\2\0\1\10\11\11\1\u0484\13\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\1\11\1\u0485\4\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\12\11\1\u0486\4\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\6\11\1\u0487\10\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\2\11\1\u0488\3\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\1\u0489\5\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\4\11"+ - "\1\u048a\12\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\1\11\1\u048b\4\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\5\11\1\u048c\17\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\6\11\1\u048d"+ - "\10\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\3\11\1\u048e\2\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\u048f\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\7\11\1\u0490\7\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\1\u0491\5\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\1\u0492\5\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\u0493\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\1\u0494\5\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\6\11"+ - "\1\u0495\10\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\3\11\1\u0496\2\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\2\11\1\u0497\14\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\7\11\1\u0498"+ - "\7\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\4\11\1\u0499\1\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\1\u049a\5\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\3\11\1\u045c\13\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\1\u049b\5\11\1\0"+ - "\1\u049c\6\11\14\0\10\11\1\u049d\6\11\2\0\1\10"+ - "\16\11\1\u049e\6\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\14\11\1\u049f\2\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\3\11\1\u04a0\2\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\1\u0262\1\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\1\u04a1\5\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\1\11\1\u04a2\15\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\5\11"+ - "\1\u04a3\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\16\11\1\u04a4\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\1\u04a5\1\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\3\11\1\u04a6\2\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\5\11\1\u04a7"+ - "\2\0\6\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\4\11\1\u04a8\1\11\14\0"+ - "\17\11\2\0\1\10\25\11\35\0\1\u04a9\70\0\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\13\11\1\u04aa"+ - "\3\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\6\11\1\u04ab\10\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\4\11\1\u04ac\1\11\2\0"+ - "\6\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\12\11\1\u04ad\4\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\2\11\1\u04ae"+ - "\3\11\2\0\6\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\5\11\1\u04af\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\6\11\1\u04b0\10\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\6\11\1\u04b1\10\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\4\11\1\u04b2\1\u04b3\2\0\6\11\14\0\17\11"+ - "\2\0\1\10\11\11\1\u04b4\13\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\17\11\2\0\1\10\2\11"+ - "\1\u04b5\22\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\2\11"+ - "\1\u04b6\3\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\5\11\1\u0142\14\0\17\11"+ - "\2\0\1\10\2\11\1\u04b7\1\11\1\u04b8\6\11\1\u04b9"+ - "\11\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\3\11\1\u04ba"+ - "\2\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\4\11\1\u04bb\12\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\1\u04bc\5\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\5\11\1\u04bd\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\1\u04be\5\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\1\u04bf\5\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\6\11\1\u04c0\10\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\6\11"+ - "\1\u04c1\10\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\2\11\1\u04c2\3\11\2\0\6\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\5\11"+ - "\1\u04c3\14\0\17\11\2\0\1\10\25\11\77\u0429\1\u02ca"+ - "\26\u0429\36\0\1\u04c4\147\0\1\u04c5\103\0\1\u04c6\154\0"+ - "\1\u04c7\121\0\1\u04c8\106\0\1\u02ca\77\0\1\u02ca\152\0"+ - "\1\u038b\121\0\1\u0392\151\0\1\u038b\102\0\1\u02ca\130\0"+ - "\1\u04c9\123\0\1\u04ca\151\0\1\u04cb\122\0\1\u04cc\61\0"+ - "\1\u04c7\171\0\1\u0430\50\0\5\u04cd\5\0\1\u04cd\10\0"+ - "\2\u04cd\1\0\2\u04cd\4\0\2\u04cd\20\0\1\u04cd\1\0"+ - "\1\u04cd\3\0\1\u04cd\12\0\1\u04cd\17\0\2\u04cd\2\0"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\1\11\1\u04ce\4\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\5\11\1\u04cf\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\1\11\1\u04d0"+ - "\4\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\1\11\1\u04d1\4\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\4\11\1\u0198\1\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\1\u04d2\5\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\12\11\1\u04d3\4\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\2\11\1\u04d4"+ - "\3\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\3\11\1\u04d5\2\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\u04d6\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\2\11\1\u04d7\3\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\6\11\1\u04d8\10\11\2\0\1\10\25\11"+ - "\3\0\5\173\5\0\1\173\10\0\2\173\1\0\2\173"+ - "\4\0\2\173\20\0\1\173\1\0\1\173\3\0\1\173"+ - "\12\0\1\173\17\0\2\173\2\0\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\1\u04d9\5\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\2\11\1\u04da"+ - "\3\11\14\0\17\11\2\0\1\10\25\11\6\0\1\u04db"+ - "\16\0\1\u04dc\1\u04dd\2\0\1\u04de\74\0\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\2\11\1\u04df\3\11\2\0\6\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\3\11\1\u04e0\2\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\1\11"+ - "\1\u04e1\15\11\2\0\1\10\25\11\32\0\1\u04e2\34\0"+ - "\1\u04e3\36\0\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\3\11"+ - "\1\u04e4\2\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\3\11\1\u04e5\2\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\4\11\1\u04e6\1\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\2\11\1\u04e7"+ - "\1\u04e8\2\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\2\11\1\u04e9\3\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\1\u0341\5\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\4\11"+ - "\1\u04ea\12\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\2\11\1\u0341\14\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\u04eb\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\4\11\1\u04ec\1\11\2\0\6\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\7\11\1\u04ed\7\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\5\11\1\u04ee\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\1\u04ef\5\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\4\11\1\u04f0\1\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\1\11\1\u04f1\15\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\3\11\1\u04f2"+ - "\2\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\5\11\1\u04f3\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\14\11\1\u0190\10\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\1\u0165\1\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\13\11\1\u0142\3\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\5\11\1\u04f4\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\1\u04f5\16\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\2\11"+ - "\1\u04f6\14\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\3\11\1\303\13\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\1\u04f7\1\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\2\11\1\u04f8\3\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\2\11\1\u019f\3\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\4\11"+ - "\1\u016d\12\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\2\11\1\u04f9\3\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\2\11"+ - "\1\u04fa\3\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\1\u04fb\1\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\5\11\1\u04fc\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\1\u04fd\5\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\u04fe\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\3\11\1\u016f\2\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\5\11\1\u0324\1\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\17\11\2\0\1\10\15\11"+ - "\1\u04ff\7\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\2\11"+ - "\1\u0500\3\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\5\11\1\u023a\2\0\6\11\14\0\17\11"+ - "\2\0\1\10\15\11\1\u0300\7\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\2\11\1\u0501\3\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\4\11\1\u0502\12\11\2\0\1\10\25\11\3\10"+ - "\5\330\1\0\2\10\1\0\1\10\1\330\1\0\2\10"+ - "\4\0\1\10\2\330\1\10\2\330\2\0\2\10\2\330"+ - "\2\10\14\0\2\10\1\330\1\10\1\330\3\10\1\330"+ - "\6\10\2\0\2\10\1\330\17\10\2\330\3\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\5\11\1\u0212\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\1\u0503"+ - "\5\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\5\11\1\u0230\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\1\11\1\u0504\15\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\2\11\1\u01bc"+ - "\14\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\1\u0505\5\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\1\11"+ - "\1\u0506\15\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\1\11\1\u0507\15\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\1\11\1\u0508\15\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\u0509\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\1\11\1\u050a\15\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\3\11\1\320\2\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\3\11\1\u050b\2\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\2\11\1\u050c"+ - "\3\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\17\11\2\0\1\10"+ - "\1\u050d\24\11\1\10\5\11\1\u050e\1\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\1\u039a"+ - "\5\11\2\0\6\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\14\11"+ - "\1\u050f\2\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\2\11\1\u0510\3\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\3\11"+ - "\1\u0511\2\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\6\11\1\u0512"+ - "\10\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\4\11\1\u0513\1\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\4\11\1\u0410"+ - "\1\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\3\11\1\u0514\13\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\3\11\1\u0515\2\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\6\11"+ - "\1\u0516\10\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\3\11\1\u0517\2\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\1\u0518"+ - "\5\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\1\11\1\u0519\4\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\5\11\1\u051a\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\1\u051b\5\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\5\11\1\u051c\1\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\17\11\2\0\1\10\13\11"+ - "\1\u051d\1\11\1\u051e\7\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\2\11\1\u051f\3\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\4\11\1\u0520\1\11\2\0"+ - "\6\11\14\0\17\11\2\0\1\10\1\11\1\u0521\1\u0522"+ - "\2\11\1\u0523\3\11\1\u0524\13\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\14\11\1\u02b6\2\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\1\11\1\u0525\15\11\2\0\1\10\25\11\103\0"+ - "\1\u0526\3\0\1\u0527\16\0\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\2\11\1\u0484\3\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\1\11\1\u0528"+ - "\4\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\1\u0529\5\11\2\0\6\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\5\11"+ - "\1\u052a\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\17\11\2\0\1\10"+ - "\15\11\1\u052b\7\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\1\11\1\u052c\4\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\1\11\1\u052d"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\2\11\1\u052e\3\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\4\11\1\u052f\1\u04a7\2\0"+ - "\6\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\1\11\1\230\4\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\17\11\2\0\1\10\11\11\1\u0530\13\11"+ - "\36\0\1\u0531\67\0\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\4\11\1\u0532"+ - "\1\11\2\0\6\11\14\0\15\11\1\u0533\1\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\1\u0534\1\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\1\11\1\u0535\15\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\2\11\1\u0536\3\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\4\11\1\u01c4\1\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\10\11\1\u0537\6\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\12\11\1\u0538\4\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\3\11\1\u0539\2\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\6\11\1\u053a\10\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\4\11\1\u053b"+ - "\1\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\2\11\1\u053c\3\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\1\u053d\5\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\7\11\1\u053e"+ - "\7\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\1\u053f\5\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\1\u0540\1\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\u0541"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\4\11\1\u0542\1\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\16\11\1\u0543\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\6\11"+ - "\1\u0544\5\11\1\u0545\2\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\1\11\1\u0546\4\11\2\0\6\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\1\11\1\u0547\4\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\14\11\1\u0548\2\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\12\11\1\u0549\4\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\3\11\1\u054a\2\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\1\11"+ - "\1\u054b\15\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\1\u054c\16\11\2\0\1\10"+ - "\25\11\40\0\1\u054d\145\0\1\u054e\132\0\1\u054f\100\0"+ - "\1\u0550\127\0\1\u0551\114\0\1\u0552\35\0\1\u0553\73\0"+ - "\1\u038b\130\0\1\u0554\123\0\1\u0555\72\0\5\u0127\5\0"+ - "\1\u0127\10\0\2\u0127\1\0\2\u0127\4\0\2\u0127\20\0"+ - "\1\u0127\1\0\1\u0127\3\0\1\u0127\12\0\1\u0127\17\0"+ - "\2\u0127\2\0\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\1\0\1\u0556"+ - "\6\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\1\u0162\5\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\4\11\1\u0557\12\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\7\11\1\u0558"+ - "\7\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\17\11\2\0\1\10\2\11\1\u0559"+ - "\22\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\2\11\1\u055a"+ - "\3\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\1\11\1\u055b\4\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\14\11\1\u055c\2\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\2\11\1\u055d\3\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\1\u055e\1\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\1\11\1\u055f\15\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\17\11\2\0\1\10"+ - "\4\11\1\u0560\20\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\5\11\1\u0561\11\11\2\0\1\10\25\11"+ - "\40\0\1\u0562\125\0\1\u0563\76\0\1\u0564\201\0\1\u0565"+ - "\40\0\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\2\11\1\u0566"+ - "\3\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\5\11\1\u0567\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\u0568\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\25\11\14\0\1\u0569\150\0"+ - "\1\u0569\66\0\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\3\11\1\u056a\13\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\14\11\1\u056b"+ - "\2\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\3\11\1\u056c\2\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\1\11\1\u056d"+ - "\4\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\2\11\1\u056e\3\11\2\0\6\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\4\11\1\u02fa"+ - "\1\11\2\0\6\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\1\11\1\u056f\4\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\1\u0570\5\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\1\11\1\u0571\15\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\6\11\1\u0572\10\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\1\u0573\5\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\6\11\1\u0574"+ - "\10\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\6\11\1\u0575\10\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\1\u0576"+ - "\1\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\4\11\1\u0577\12\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\1\u0578"+ - "\5\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\17\11\2\0\1\10"+ - "\5\11\1\u0579\17\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\17\11\2\0\1\10\4\11\1\u057a\20\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\1\11"+ - "\1\u057b\15\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\6\11\1\u057c\10\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\1\11"+ - "\1\u03d7\4\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\1\11\1\u057d"+ - "\15\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\1\u057e\5\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\1\u0167\5\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\5\11\1\u0142\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\2\11\1\u057f\3\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\1\u0580\5\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\1\11\1\u0581"+ - "\4\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\1\11\1\u0582\4\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\1\11\1\u0583"+ - "\4\11\2\0\6\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\4\11"+ - "\1\u0584\12\11\2\0\1\10\25\11\1\10\5\11\1\u0585"+ - "\1\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\1\u03e6\5\11\2\0\6\11\14\0\17\11"+ - "\2\0\1\10\2\11\1\u0586\6\11\1\u0587\6\11\1\106"+ - "\4\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\1\11\1\u0538"+ - "\4\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\6\11\1\u0588\10\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\1\u0410\1\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\1\11\1\u0589\4\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\16\11\1\u058a\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\1\11\1\u058b"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\6\11\1\u058c\10\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\6\11\1\u027e\10\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\4\11\1\u058d\12\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\1\11\1\u058e\4\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\3\11\1\u058f\2\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\1\11\1\u0590\15\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\5\11\1\u023a\2\0\6\11\14\0\17\11"+ - "\2\0\1\10\11\11\1\u0591\13\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\17\11\2\0\1\10\4\11"+ - "\1\u02fd\20\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\1\u0592"+ - "\5\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\7\11\1\u0593\7\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\2\11\1\u0594\3\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\1\u0595\5\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\1\11\1\u0596\4\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\3\11\1\u0597"+ - "\2\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\2\11\1\u0598\3\11\2\0\6\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\17\11\2\0\1\10\13\11\1\u0599\11\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\2\11\1\u059a\3\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\7\11\1\u059b\7\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\6\11\1\u059c\10\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\4\11\1\u059d\1\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\2\11"+ - "\1\u059e\3\11\2\0\6\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\1\11\1\u059f"+ - "\4\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\2\11\1\u05a0\14\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\1\11\1\u05a1\15\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\1\11\1\u05a2\4\11"+ - "\14\0\4\11\1\u05a3\12\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\1\u05a4\5\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\1\u05a5\16\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\1\11\1\u05a6"+ - "\15\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\4\11\1\u05a7\12\11\2\0\1\10"+ - "\25\11\35\0\1\u05a8\104\0\1\u05a9\111\0\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\1\11\1\u05aa\15\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\6\11\1\u05ab\10\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\16\11"+ - "\1\u0142\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\1\11\1\u05ac\4\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\1\u05ad\5\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\6\11\1\u05ae\10\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\2\11\1\u05af\14\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\1\11\1\u05b0"+ - "\15\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\3\11\1\u05b1\2\11\14\0\17\11\2\0\1\10"+ - "\25\11\73\0\1\u05b2\32\0\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\1\11\1\u05b3\15\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\2\11\1\u05b4"+ - "\3\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\1\u05b5\5\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\1\11"+ - "\1\u05b6\4\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\17\11\2\0"+ - "\1\10\1\11\1\u05b7\23\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\2\11\1\u05b8\3\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\2\11\1\u0162"+ - "\3\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\4\11\1\u05b9\1\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\2\11\1\u05ba\3\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\2\11\1\u05bb\3\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\1\u05bc\5\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\1\11\1\u05bd"+ - "\4\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\1\11\1\u05be\15\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\1\11\1\u05bf\4\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\3\11"+ - "\1\u05c0\13\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\1\u05c1\5\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\1\u05c2\5\11\2\0\6\11"+ - "\14\0\10\11\1\u05c3\6\11\2\0\1\10\4\11\1\u05c4"+ - "\20\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\15\11\1\u02fc\1\11\2\0\1\10\4\11\1\u02fd\20\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\2\11\1\u04fc\3\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\15\11\1\u02ef\1\11\2\0"+ - "\1\10\15\11\1\u0300\7\11\1\10\7\11\1\0\1\u05c5"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\2\11\1\u05c6\3\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\17\11\2\0\1\10\20\11\1\106"+ - "\4\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\2\11\1\u05c7"+ - "\3\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\1\u05c8\1\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\1\11"+ - "\1\u05c9\4\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\17\11\2\0"+ - "\1\10\11\11\1\u0304\13\11\41\0\1\u0429\121\0\1\u0429"+ - "\125\0\1\u05ca\131\0\1\u02ca\124\0\1\u05cb\152\0\1\u05cc"+ - "\100\0\1\u05cd\122\0\1\u05ce\163\0\1\u02ca\60\0\1\u04dd"+ - "\77\0\1\10\7\11\1\0\1\u05cf\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\3\11\1\u05d0\2\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\u05d1\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\1\11\1\u05d2\4\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\1\0\1\u05d3\6\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\15\11\1\u02fc\1\11\2\0"+ - "\1\10\17\11\1\u0301\5\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\1\u05d4\1\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\1\u05d5\5\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\1\u05d6\1\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\1\u05d7\1\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\17\11\2\0\1\10\10\11\1\u05d8"+ - "\2\11\1\u03ce\11\11\35\0\1\u05d9\104\0\1\u05da\176\0"+ - "\1\u05db\101\0\1\u05dc\64\0\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\1\11\1\u0543\4\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\1\u028f\16\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\1\11\1\u05dd\4\11\14\0\17\11\2\0"+ - "\1\10\25\11\63\0\1\u05de\42\0\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\17\11\2\0\1\10\11\11"+ - "\1\u05df\13\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\4\11\1\u02fd\6\11\1\u02ff"+ - "\11\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\13\11\1\u05e0\3\11\2\0\1\10\25\11\1\10\5\11"+ - "\1\u05e1\1\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\1\0\1\u05e2\6\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\4\11\1\u05e3\1\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\6\11\1\u05e4\10\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\17\11\2\0\1\10"+ - "\2\11\1\u0423\22\11\1\10\7\11\1\0\1\u05e5\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\5\11\1\u05e6\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\3\11"+ - "\1\u05e7\2\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\1\11\1\u03b2"+ - "\15\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\17\11\2\0\1\10\1\u0269\24\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\17\11"+ - "\2\0\1\10\4\11\1\u05e8\20\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\16\11\1\u0162\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\2\11\1\u05e9"+ - "\3\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\1\11\1\u0142\15\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\1\u05ea\1\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\11\11\1\u05eb"+ - "\5\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\17\11\2\0\1\10\1\u046a\24\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\1\11\1\303"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\1\u05ec\16\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\4\11\1\u05ed\1\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\1\11\1\u05ee\15\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\1\u05ef"+ - "\5\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\u05f0\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\2\11\1\u05f1"+ - "\3\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\1\11\1\u05f2\15\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\2\11\1\u05f3\3\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\2\11\1\u05f4\1\u05f5"+ - "\2\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\4\11\1\u0162\12\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\1\11\1\u05f6\4\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\2\11\1\u05f7\3\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\1\11\1\u05f8\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\4\11\1\u0457"+ - "\1\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\2\11\1\u05f9\3\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\1\11\1\u05fa\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\2\11\1\u05fb\3\11\2\0\6\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\1\u05fc\1\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\3\11\1\u05fd\2\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\1\11\1\u05fe\15\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\2\11"+ - "\1\u05ff\3\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\2\11\1\u0162"+ - "\14\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\2\11\1\u0600\3\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\14\11\1\u0601\2\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\1\u0602\5\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\4\11"+ - "\1\u0603\1\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\1\11\1\u0604\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\3\11\1\u0605\2\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\3\11\1\u0606\2\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\2\11\1\u0607\3\11\2\0\6\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\3\11"+ - "\1\u0608\2\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\17\11\2\0"+ - "\1\10\14\11\1\u0609\10\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\1\11\1\u060a\15\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\1\u060b\5\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\1\11\1\u060c\4\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\13\11\1\u060d\3\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\4\11\1\u060e"+ - "\12\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\3\11\1\u060f\2\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\1\11\1\u0610"+ - "\4\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\1\u0611\1\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\3\11"+ - "\1\u03a8\2\11\14\0\17\11\2\0\1\10\25\11\40\0"+ - "\1\u0612\150\0\1\u0613\42\0\1\10\7\11\1\0\1\u0180"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\5\11\1\u0614\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\2\11\1\u0615\3\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\2\11\1\u0616\3\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\2\11\1\u0617\3\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\4\11\1\u0618\20\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\1\11\1\u0619\4\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\4\11\1\u061a\12\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\1\11\1\u061b"+ - "\4\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\5\11\1\u061c\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\2\11"+ - "\1\u061d\3\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\7\11\1\u061e"+ - "\7\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\1\11\1\u061f\4\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\1\11"+ - "\1\u0620\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\6\11\1\u0621\10\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\4\11"+ - "\1\u0622\1\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\7\11\1\u0623"+ - "\7\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\1\u0624\16\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\2\11\1\u0625\3\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\1\11\1\u035c\4\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\2\11"+ - "\1\u0626\3\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\u0627\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\3\11\1\u0628\13\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\1\11\1\u03c7"+ - "\15\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\3\11\1\u0629\2\11\14\0\1\11\1\u062a\15\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\1\u0230\1\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\6\11\1\u062b"+ - "\10\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\3\11\1\u0344\2\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\17\11\2\0\1\10\4\11\1\u062c\20\11\1\10\5\11"+ - "\1\u062d\1\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\1\u0513\5\11\14\0\17\11\2\0\1\10\25\11\67\0"+ - "\1\u062e\53\0\1\u062f\147\0\1\u0630\123\0\1\u0631\127\0"+ - "\1\u0632\66\0\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\4\11"+ - "\1\u0633\1\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\1\u0410\5\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\3\11\1\u0634\13\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\5\11\1\u0635\14\0"+ - "\17\11\2\0\1\10\25\11\103\0\1\u0636\3\0\1\u0637"+ - "\16\0\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\4\11\1\u0262\12\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\17\11\2\0\1\10"+ - "\11\11\1\u0638\13\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\2\11\1\u0639\14\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\3\11\1\u063a\2\11"+ - "\14\0\17\11\2\0\1\10\25\11\37\0\1\u063b\160\0"+ - "\1\u063c\74\0\1\u063d\121\0\1\u063e\70\0\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\4\11\1\u063f\12\11"+ - "\2\0\1\10\25\11\60\0\1\u063d\45\0\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\2\11\1\u05f4\3\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\5\11\1\u0640\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\4\11\1\u0641\1\11\14\0"+ - "\17\11\2\0\1\10\25\11\26\0\1\u0642\77\0\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\2\11\1\u0643\3\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\3\11\1\u01d0\13\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\1\u0594"+ - "\1\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\5\11\1\u04ef\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\1\u0644"+ - "\1\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\1\u0645\1\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\1\u0646"+ - "\1\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\2\11\1\u0647\14\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\1\u0648\1\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\1\11\1\u01d1\15\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\1\11\1\u0649\15\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\3\11"+ - "\1\u064a\13\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\6\11\1\u0544\10\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\1\u064b\1\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\5\11\1\u064c\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\4\11"+ - "\1\u064d\1\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\1\u0142\5\11\14\0\17\11"+ - "\2\0\1\10\3\11\1\u064e\21\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\1\u064f\5\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"; - - private static final String ZZ_TRANS_PACKED_1 = - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\3\11\1\u0650\13\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\u0651\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\1\u0652"+ - "\1\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\2\11\1\u0653\3\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\5\11\1\u0654\2\0"+ - "\6\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\4\11\1\u0655\1\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\4\11\1\u0656\1\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\1\11\1\u0657"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\1\u0658\1\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\1\11\1\u0659\4\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\17\11\2\0\1\10\23\11"+ - "\1\u0355\1\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\2\11\1\u065a\14\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\17\11\2\0"+ - "\1\10\2\11\1\u065b\22\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\6\11\1\u065c\10\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\2\11\1\u065d"+ - "\3\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\1\11\1\u065e\4\11\2\0\6\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\7\11\1\u065f\7\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\1\u0660\5\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\4\11\1\u0661\1\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\5\11\1\u0662"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\2\11\1\u0663\3\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\3\11\1\u0664\13\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\1\11\1\u0665"+ - "\15\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\7\11\1\u0666\7\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\u05bb\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\2\11\1\u0667\3\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\1\u0538\5\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\2\11\1\u0668\3\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\6\11\1\u0669\10\11\2\0\1\10\25\11\35\0"+ - "\1\u066a\130\0\1\u066b\65\0\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\1\u066c\5\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\5\11\1\u0623\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\2\11\1\u066d\14\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\2\11\1\u066e\14\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\17\11\2\0\1\10"+ - "\13\11\1\u0162\11\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\7\11\1\u066f\7\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\1\u0670"+ - "\16\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\7\11\1\u0671\7\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\1\11\1\u0672\15\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\1\11\1\u0162\4\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\3\11\1\u04cf\2\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\1\11\1\u0673\4\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\4\11\1\u0674\1\11\2\0\6\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\1\u0675\24\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\2\11\1\352\14\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\2\11\1\u0676\3\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\1\11"+ - "\1\u0622\15\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\3\11\1\u0677\2\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\3\11"+ - "\1\u0678\2\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\1\u0679\5\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\u067a\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\1\u067b\5\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\u032c\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\4\11\1\u067c\1\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\1\u067d"+ - "\5\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\3\11\1\u067e\2\11\14\0\17\11"+ - "\2\0\1\10\25\11\60\0\1\u067f\104\0\1\u0680\127\0"+ - "\1\u0632\124\0\1\u02ca\146\0\1\u02ca\44\0\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\3\11\1\u0681\2\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\3\11\1\u04c2\13\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\6\11"+ - "\1\u0682\10\11\2\0\1\10\25\11\11\0\1\u0683\130\0"+ - "\1\u0684\111\0\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\1\11\1\u0685\15\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\2\11\1\u0686\3\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\4\11\1\u0687\1\11\14\0\17\11\2\0\1\10"+ - "\25\11\72\0\1\u0688\44\0\1\u0689\175\0\1\u068a\103\0"+ - "\1\u068b\66\0\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\2\11"+ - "\1\u068c\3\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\5\11\1\u068d\1\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\1\11\1\u068e\15\11\2\0\1\10"+ - "\25\11\65\0\1\u068f\40\0\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\4\11"+ - "\1\u0690\1\11\2\0\6\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\1\u0294\5\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\17\11\2\0\1\10\4\11"+ - "\1\u0691\20\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\2\11"+ - "\1\u0692\3\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\2\11\1\u0693\3\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\17\11\2\0\1\10\7\11\1\u0694"+ - "\15\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\1\11\1\u0695"+ - "\4\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\2\11\1\u0696\3\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\2\11\1\u0697\14\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\5\11\1\u0698\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\4\11\1\u0699\1\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\u069a\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\1\u069b\16\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\1\0\1\u069c\6\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\3\11\1\u05c9\13\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\6\11\1\u069d\10\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\1\11\1\u069e\4\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\4\11\1\u069f\1\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\1\11"+ - "\1\u06a0\15\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\2\11\1\u06a1\3\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\6\11\1\u06a2\10\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\3\11\1\u06a3\2\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\1\0\1\u06a4\5\11\1\u06a5\14\0\15\11\1\u06a6\1\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\5\11\1\u023a"+ - "\2\0\6\11\14\0\17\11\2\0\1\10\4\11\1\u0618"+ - "\20\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\1\u06a7\5\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\1\11\1\u06a8\15\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\5\11\1\u06a9\17\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\1\11\1\u06aa"+ - "\15\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\15\11\1\u02fc\1\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\4\11\1\u06ab\12\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\2\11\1\u06ac\3\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\5\11\1\u0162\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\4\11\1\u04cf"+ - "\12\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\2\11\1\u06ad\3\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\4\11\1\u06ae\12\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\3\11\1\u06af\2\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\5\11\1\u06b0\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\3\11\1\u06b1\2\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\1\u06b2\5\11\14\0\17\11\2\0\1\10\25\11"+ - "\37\0\1\u05b2\77\0\1\u06b3\114\0\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\2\11\1\u06b4\3\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\5\11\1\u06b5\1\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\5\11"+ - "\1\u06b6\2\0\6\11\14\0\17\11\2\0\1\10\13\11"+ - "\1\u06b7\11\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\1\u06b8\5\11\2\0"+ - "\6\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\3\11\1\u06b9\2\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\6\11\1\u06ba\10\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\3\11\1\u06bb\2\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\u06bc\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\3\11\1\u06bd\2\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\1\11\1\u06be\15\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\3\11"+ - "\1\u06bf\2\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\1\u04cf\1\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\7\11\1\u06c0\7\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\7\11"+ - "\1\u06c1\7\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\17\11\2\0\1\10\2\11"+ - "\1\u06c2\5\11\1\u06c3\14\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\1\u06c4\5\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\3\11\1\u0162\2\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\2\11\1\u06c5\14\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\2\11"+ - "\1\u06c6\3\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\4\11\1\u06c7\1\11\14\0"+ - "\17\11\2\0\1\10\25\11\63\0\1\u0429\77\0\1\u0555"+ - "\70\0\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\1\11\1\u06c8"+ - "\4\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\1\11\1\u06c9\15\11"+ - "\2\0\1\10\25\11\27\0\1\u06ca\163\0\1\u06cb\40\0"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\2\11"+ - "\1\u06cc\14\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\5\11\1\u06cd\11\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\u0544\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\25\11\60\0\1\u04a9\105\0"+ - "\1\u06ce\124\0\1\u06cf\124\0\1\u06d0\67\0\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\1\11\1\u06d1\4\11\2\0\6\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\1\11\1\u06d2\15\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\5\11\1\u0513\14\0"+ - "\17\11\2\0\1\10\25\11\72\0\1\u06d3\33\0\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\4\11\1\u06d4\1\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\1\u06d5\1\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\1\11\1\u06d6\4\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\5\11\1\u0142\11\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\1\11\1\u06d7\15\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\7\11\1\u06d8"+ - "\7\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\1\11\1\u06d9\4\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\4\11\1\u06da"+ - "\1\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\4\11\1\u06db\1\11\2\0\6\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\2\11\1\u06dc\3\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\2\11\1\u06dd\3\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\1\11\1\u06de\15\11\2\0"+ - "\1\10\25\11\103\0\1\u06df\22\0\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\17\11\2\0\1\10\1\u0341"+ - "\24\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\2\11\1\u06e0"+ - "\3\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\11\11\1\u0410\5\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\17\11\2\0\1\10\15\11\1\u0300\7\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\13\11"+ - "\1\u06e1\3\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\13\11\1\u0341\3\11\2\0"+ - "\1\10\25\11\114\0\1\u06e2\11\0\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\1\0\1\u06e3\6\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\3\11\1\u06e4"+ - "\2\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\3\11\1\u06e5\2\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\1\352\1\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\1\u06e6\16\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\u06e7\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\1\u0162\16\11\2\0"+ - "\1\10\25\11\1\10\5\11\1\u06e8\1\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\1\11\1\u06e9\4\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\3\11\1\u06ea\2\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\1\u06eb\5\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\5\11\1\352\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\2\11\1\u06ec\14\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\1\11\1\u06ed\15\11"+ - "\2\0\1\10\25\11\72\0\1\u06ee\33\0\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\1\u06ef\1\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\4\11"+ - "\1\u06f0\1\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\1\u06f1\1\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\3\11\1\u06f2\13\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\6\11"+ - "\1\u06f3\10\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\1\u06f4\5\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\1\u03ad"+ - "\1\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\1\u06f5\5\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\1\11\1\u06f6"+ - "\4\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\14\11\1\u06f7\2\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\u06f8\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\2\11\1\u06ea\3\11\2\0\6\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\17\11\2\0\1\10\17\11\1\u0301\5\11"+ - "\1\10\5\11\1\u06f9\1\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\4\11\1\u06fa\1\u023a"+ - "\2\0\6\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\1\u06fb\5\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\3\11\1\u06fc\2\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\17\11"+ - "\2\0\1\10\2\11\1\u06fd\22\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\2\11\1\u06fe\3\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\1\11"+ - "\1\u06ff\4\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\2\11\1\u0700\3\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\6\11\1\u0701\10\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\1\u0162"+ - "\1\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\25\11\42\0\1\u0702\146\0"+ - "\1\u0703\42\0\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\6\11\1\u0704\10\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\17\11\2\0"+ - "\1\10\13\11\1\u03ce\11\11\72\0\1\u0705\71\0\1\u05b2"+ - "\154\0\1\u0706\40\0\1\10\7\11\1\0\1\u0707\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\1\u0708\1\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\17\11\2\0"+ - "\1\10\25\11\67\0\1\u0709\36\0\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\3\11\1\u070a\2\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\6\11\1\u070b\10\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\17\11\2\0"+ - "\1\10\15\11\1\u070c\7\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\1\11\1\u052a\15\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\3\11\1\u070d"+ - "\2\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\1\u070e\5\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\2\11"+ - "\1\u070f\3\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\6\11\1\u02e1"+ - "\10\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\4\11\1\u045c\12\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\1\u0710"+ - "\1\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\2\11\1\u0410\14\11\2\0"+ - "\1\10\25\11\65\0\1\u0711\40\0\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\7\11\1\u0712\7\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\u0713\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\25\11\15\0\1\u0714\212\0"+ - "\1\u0715\23\0\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\1\u0716\1\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\1\u0717\5\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\1\11"+ - "\1\u0718\4\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\1\u0719\1\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\4\11\1\u071a\1\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\1\u071b\5\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\4\11\1\u0538\1\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\5\11\1\u071c\1\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\4\11\1\u071d"+ - "\1\u023a\2\0\6\11\14\0\17\11\2\0\1\10\15\11"+ - "\1\u071e\1\11\1\u071f\5\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\17\11\2\0\1\10\2\11\1\u0522"+ - "\22\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\1\11\1\u06ec"+ - "\4\11\14\0\17\11\2\0\1\10\25\11\57\0\1\u0720"+ - "\46\0\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\2\11\1\u0721"+ - "\3\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\3\11\1\u0722\2\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\4\11\1\u0723\12\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\2\11\1\u0724\3\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\1\u0725\1\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\5\11\1\u02dd\1\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\4\11\1\u071d"+ - "\1\11\2\0\6\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\17\11"+ - "\2\0\1\10\1\11\1\u0726\15\11\1\u071f\5\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\4\11\1\u0538"+ - "\12\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\17\11\2\0\1\10\2\11\1\u0727"+ - "\22\11\1\10\7\11\1\0\1\11\1\147\1\0\1\u06de"+ - "\1\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\4\11\1\u03d9\1\11\14\0\1\11\1\u0728"+ - "\15\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\6\11\1\u0729\10\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\1\11\1\u072a"+ - "\4\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\4\11\1\u072b\1\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\1\u072c\5\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\1\11\1\u072d\4\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\3\11\1\u072e\2\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\1\u072f"+ - "\1\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\1\u035c\5\11\14\0\17\11\2\0\1\10"+ - "\25\11\37\0\1\u0730\146\0\1\u0731\45\0\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\1\11\1\u0732\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\17\11\2\0"+ - "\1\10\25\11\37\0\1\u0733\102\0\1\u0734\111\0\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\1\u0735\1\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\12\11\1\u0736\4\11\2\0\1\10\25\11"+ - "\37\0\1\u0737\66\0\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\13\11\1\u04fc\3\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\1\u0738\5\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\1\11\1\u0739\4\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\1\u073a\5\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\14\11\1\u073b\2\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\1\0\1\u073c"+ - "\6\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\1\u073d\5\11\14\0\17\11\2\0"+ - "\1\10\25\11\66\0\1\u073e\37\0\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\2\11\1\u05c4\3\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\1\11"+ - "\1\u073f\4\11\14\0\17\11\2\0\1\10\25\11\25\0"+ - "\1\u0740\41\0\1\u0741\15\0\1\u0742\10\0\1\u0743\36\0"+ - "\1\u0744\76\0\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\2\11\1\u0745\14\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\6\11\1\u0746"+ - "\10\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\2\11\1\u0747\3\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\2\11\1\u0662\14\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\3\11\1\u0748\2\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\6\11\1\u0749\10\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\1\11"+ - "\1\u074a\15\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\4\11\1\u074b\1\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\1\11"+ - "\1\u074c\4\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\6\11\1\u074d"+ - "\10\11\2\0\1\10\25\11\35\0\1\u074e\70\0\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\1\11\1\u0662\4\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\5\11\1\u074f\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\1\11"+ - "\1\u0750\15\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\1\11\1\u0751\4\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\16\11\1\u0410\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\1\11\1\u05a2\4\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\6\11\1\u0752\10\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\1\u0753\1\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\2\11\1\u0754\3\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\2\11\1\u0755"+ - "\3\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\6\11\1\u0756\10\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\1\11\1\u0757\4\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\1\0\1\u0758\6\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\1\u0759\5\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\2\11"+ - "\1\u075a\14\11\2\0\1\10\25\11\35\0\1\u05b2\151\0"+ - "\1\u075b\44\0\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\6\11\1\u075c\10\11\2\0\1\10\25\11\74\0"+ - "\1\u075d\123\0\1\u075e\33\0\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\2\11\1\u02e1\14\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\2\11\1\u075f"+ - "\3\11\14\0\17\11\2\0\1\10\25\11\63\0\1\u0760"+ - "\42\0\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\6\11\1\u0761\10\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\1\11\1\u0762\15\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\4\11\1\u071d"+ - "\1\11\2\0\6\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\17\11"+ - "\2\0\1\10\10\11\1\u05d8\14\11\6\0\1\u0763\117\0"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\6\11"+ - "\1\u0764\10\11\2\0\1\10\25\11\62\0\1\u0765\43\0"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\3\11\1\u0335\2\11"+ - "\14\0\17\11\2\0\1\10\25\11\60\0\1\u0766\125\0"+ - "\1\u0767\61\0\1\u0730\147\0\1\u0768\131\0\1\u0769\63\0"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\1\11"+ - "\1\u0344\15\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\5\11\1\u076a\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\3\11\1\u076b"+ - "\2\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\5\11\1\u076c\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\2\11"+ - "\1\u076d\3\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\1\u0442\1\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\2\11"+ - "\1\u076e\14\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\3\11\1\u076f\2\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\2\11"+ - "\1\u0770\3\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\2\11\1\u0771"+ - "\14\11\2\0\1\10\25\11\32\0\1\u0772\73\0\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\5\11\1\u0773\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\2\11\1\u0774\14\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\3\11\1\u0775\2\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\17\11\2\0\1\10\1\u0538"+ - "\24\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\5\11\1\u0776"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\4\11\1\u01d1\1\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\3\11"+ - "\1\u0777\2\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\2\11\1\u03c0"+ - "\14\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\2\11\1\u0778\3\11\14\0\17\11\2\0\1\10"+ - "\25\11\74\0\1\u0779\31\0\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\1\11\1\u077a\15\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\3\11\1\u0235"+ - "\2\11\14\0\17\11\2\0\1\10\25\11\37\0\1\u077b"+ - "\66\0\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\4\11\1\u0751\12\11\2\0\1\10\25\11\40\0\1\u077c"+ - "\177\0\1\u077d\13\0\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\1\11\1\u077e\4\11\14\0\17\11\2\0\1\10\25\11"+ - "\65\0\1\u077f\40\0\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\3\11\1\u0780\2\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\5\11"+ - "\1\247\11\11\2\0\1\10\25\11\60\0\1\u0781\45\0"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\3\11\1\u0782\2\11"+ - "\14\0\17\11\2\0\1\10\25\11\41\0\1\u0783\100\0"+ - "\1\u0784\122\0\1\u0785\201\0\1\u0786\75\0\1\u0787\70\0"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\1\u0788\5\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\2\11\1\u0789\14\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\5\11\1\u078a"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\5\11\1\u04a6\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\2\11\1\u078b"+ - "\3\11\14\0\17\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\13\11\1\u0662\3\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\4\11\1\u078c\12\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\1\u06ab\5\11\14\0"+ - "\17\11\2\0\1\10\25\11\64\0\1\u078d\41\0\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\6\11\14\0\17\11\2\0"+ - "\1\10\10\11\1\u078e\14\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\6\11\1\u078f\10\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\1\u0635\5\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\1\u0790\5\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\7\11\1\u0791\7\11\2\0\1\10\25\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\3\11\1\u0792\2\11\14\0\17\11"+ - "\2\0\1\10\25\11\37\0\1\u0793\66\0\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\1\11\1\u0794\4\11\14\0\17\11"+ - "\2\0\1\10\25\11\26\0\1\u0795\54\0\1\u0796\36\0"+ - "\1\u0797\171\0\1\u0798\45\0\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\5\11\1\u0799\14\0\17\11\2\0\1\10\25\11"+ - "\66\0\1\u079a\37\0\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\4\11\1\u079b\1\11\14\0\17\11\2\0\1\10\25\11"+ - "\14\0\1\u079c\111\0\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\4\11\1\u079d\1\11\14\0\17\11\2\0\1\10\25\11"+ - "\37\0\1\u079e\160\0\1\u05b2\62\0\1\u079f\164\0\1\u07a0"+ - "\75\0\1\u07a1\67\0\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\6\11\1\u07a2\10\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\1\u049b\5\11\2\0\6\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\5\11\1\u07a3\1\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\17\11\2\0\1\10\15\11\1\u07a4\7\11\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\6\11\1\u05d2\10\11"+ - "\2\0\1\10\25\11\63\0\1\u07a5\42\0\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\2\11\1\u07a6\3\11\14\0\17\11"+ - "\2\0\1\10\25\11\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\1\u07a7\1\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\17\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\2\11\1\0\1\10"+ - "\1\11\4\0\6\11\2\0\3\11\1\u07a8\2\11\14\0"+ - "\17\11\2\0\1\10\25\11\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\1\0\1\u07a9\6\11\14\0\17\11\2\0\1\10\25\11"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\7\11"+ - "\1\u07aa\7\11\2\0\1\10\25\11\61\0\1\u07ab\44\0"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\1\0\1\u07ac\6\11\14\0"+ - "\17\11\2\0\1\10\25\11\41\0\1\u07ad\147\0\1\u07ae"+ - "\134\0\1\u066a\114\0\1\u066a\44\0\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\6\11\1\u07af\10\11\2\0"+ - "\1\10\25\11\40\0\1\u07b0\65\0\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\6\11\1\u07b1\10\11\2\0"+ - "\1\10\25\11\35\0\1\u07b2\70\0\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\1\u03e6\5\11\2\0\6\11\14\0\17\11\2\0\1\10"+ - "\25\11\32\0\1\u035e\52\0\1\u07b3\61\0\1\u066a\151\0"+ - "\1\u07b4\100\0\1\u07b5\65\0\1\10\7\11\1\0\1\11"+ - "\1\147\1\0\2\11\1\0\1\10\1\11\4\0\6\11"+ - "\2\0\6\11\14\0\4\11\1\u04fc\12\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\6\11\14\0"+ - "\1\u07b6\16\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\1\11\1\u07b7\15\11\2\0"+ - "\1\10\25\11\37\0\1\u07b8\66\0\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\1\11\1\u07b9\4\11\14\0\17\11\2\0"+ - "\1\10\25\11\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\2\11\1\0\1\10\1\11\4\0\6\11\2\0\6\11"+ - "\14\0\13\11\1\u0162\3\11\2\0\1\10\25\11\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\1\u07ba\1\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\17\11"+ - "\2\0\1\10\25\11\117\0\1\u07bb\6\0\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\1\0\1\u07bc\6\11\14\0\17\11\2\0"+ - "\1\10\25\11\65\0\1\u07bd\154\0\1\u07be\71\0\1\u07bf"+ - "\103\0\1\u07c0\67\0\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\1\11\1\u07c1\15\11\2\0\1\10\25\11"+ - "\41\0\1\u07c2\64\0\1\10\7\11\1\0\1\11\1\147"+ - "\1\0\2\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\17\11\2\0\1\10\1\u07c3\24\11\36\0"+ - "\1\u07c4\155\0\1\u07c5\74\0\1\u07c6\153\0\1\u07c7\42\0"+ - "\1\10\7\11\1\0\1\11\1\147\1\0\2\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\3\11\1\u07c8\2\11"+ - "\14\0\17\11\2\0\1\10\25\11\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\6\11\14\0\6\11\1\u0676\10\11\2\0"+ - "\1\10\25\11\62\0\1\u07c9\43\0\1\10\7\11\1\0"+ - "\1\11\1\147\1\0\2\11\1\0\1\10\1\11\4\0"+ - "\6\11\2\0\5\11\1\u03eb\14\0\17\11\2\0\1\10"+ - "\25\11\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\1\u04fc\5\11"+ - "\14\0\17\11\2\0\1\10\25\11\37\0\1\u07ca\204\0"+ - "\1\u07cb\45\0\1\u07cc\104\0\1\u07cd\173\0\1\u07ce\127\0"+ - "\1\u07cf\40\0\1\10\7\11\1\0\1\11\1\147\1\0"+ - "\1\u07d0\1\11\1\0\1\10\1\11\4\0\6\11\2\0"+ - "\6\11\14\0\17\11\2\0\1\10\25\11\25\0\1\u07d1"+ - "\100\0\1\10\7\11\1\0\1\11\1\147\1\0\2\11"+ - "\1\0\1\10\1\11\4\0\6\11\2\0\2\11\1\u07d2"+ - "\3\11\14\0\17\11\2\0\1\10\25\11\60\0\1\u07d3"+ - "\133\0\1\u07d4\124\0\1\u07d5\75\0\1\u07d6\70\0\1\10"+ - "\7\11\1\0\1\11\1\147\1\0\1\u02ee\1\11\1\0"+ - "\1\10\1\11\4\0\6\11\2\0\6\11\14\0\17\11"+ - "\2\0\1\10\25\11\35\0\1\u07d7\125\0\1\u07d8\101\0"+ - "\1\u07ca\153\0\1\u07d9\113\0\1\u0740\41\0\1\u0741\15\0"+ - "\1\u0742\115\0\1\u05b2\112\0\1\u0730\43\0\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\6\11\14\0\17\11\2\0\1\10"+ - "\11\11\1\u03ff\13\11\40\0\1\u07da\65\0\1\10\7\11"+ - "\1\0\1\11\1\147\1\0\2\11\1\0\1\10\1\11"+ - "\4\0\6\11\2\0\1\11\1\u0410\4\11\14\0\17\11"+ - "\2\0\1\10\25\11\41\0\1\u05b2\75\0\1\u07db\205\0"+ - "\1\u066a\61\0\1\u07dc\41\0\1\u07dd\13\0\1\u07de\1\0"+ - "\1\u07df\105\0\1\u07e0\71\0\1\u07e1\157\0\1\u07e2\135\0"+ - "\1\u07e3\67\0\1\u07e4\150\0\1\u07e5\125\0\1\u07e6\127\0"+ - "\1\u07e7\57\0\1\u07e8\171\0\1\u07e9\132\0\1\u07ea\75\0"+ - "\1\u07eb\150\0\1\u07ec\105\0\1\u07ed\101\0\1\u07ee\122\0"+ - "\1\u07ef\155\0\1\u07f0\121\0\1\u07f1\104\0\1\u07f2\150\0"+ - "\1\u07f3\122\0\1\u07f4\102\0\1\u07f5\143\0\1\u07f6\170\0"+ - "\1\u07f1\62\0\1\u07f7\163\0\1\u07f8\143\0\1\u07de\132\0"+ - "\1\u07f9\56\0\1\u07fa\172\0\1\u07fb\54\0\1\u07fc\131\0"+ - "\1\u07fd\125\0\1\u07fe\121\0\1\u07ff\130\0\1\u0800\146\0"+ - "\1\u05b2\137\0\1\u0801\63\0\1\u0802\133\0\1\u029d\125\0"+ - "\1\u07f1\125\0\1\u0803\102\0\1\u0804\173\0\1\u066a\123\0"+ - "\1\u0805\103\0\1\u0806\150\0\1\u0807\102\0\1\u0808\127\0"+ - "\1\u0809\126\0\1\u068a\152\0\1\u05b2\74\0\1\u080a\150\0"+ - "\1\u06cf\45\0"; - - private static int [] zzUnpackTrans() { - int [] result = new int[172688]; - int offset = 0; - offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); - offset = zzUnpackTrans(ZZ_TRANS_PACKED_1, offset, result); - return result; - } - - private static int zzUnpackTrans(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - value--; - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /* error codes */ - private static final int ZZ_UNKNOWN_ERROR = 0; - private static final int ZZ_NO_MATCH = 1; - private static final int ZZ_PUSHBACK_2BIG = 2; - - /* error messages for the codes above */ - private static final String ZZ_ERROR_MSG[] = { - "Unkown internal scanner error", - "Error: could not match input", - "Error: pushback value was too large" - }; - - /** - * ZZ_ATTRIBUTE[aState] contains the attributes of state aState - */ - private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); - - private static final String ZZ_ATTRIBUTE_PACKED_0 = - "\4\0\2\1\1\0\12\1\2\11\21\1\2\11\4\1"+ - "\1\11\35\1\1\11\5\1\1\11\10\1\1\11\6\1"+ - "\1\11\3\1\1\11\1\1\2\11\24\1\1\0\1\1"+ - "\1\0\7\1\2\0\1\11\54\1\2\0\122\1\2\0"+ - "\1\11\4\0\1\11\2\0\1\11\22\0\1\11\1\0"+ - "\1\1\2\0\2\11\3\1\1\0\14\1\2\11\3\1"+ - "\1\0\2\1\1\11\5\1\1\11\235\1\37\0\1\11"+ - "\2\0\1\11\15\1\1\11\1\1\1\0\5\1\1\11"+ - "\174\1\1\0\31\1\2\0\1\1\2\0\1\1\15\0"+ - "\1\11\12\0\1\1\1\0\1\11\16\1\1\0\167\1"+ - "\1\0\31\1\36\0\17\1\1\0\154\1\1\0\26\1"+ - "\23\0\14\1\1\0\2\1\1\0\3\1\1\0\114\1"+ - "\1\0\14\1\1\0\32\1\5\0\1\1\4\0\15\1"+ - "\4\0\3\1\2\0\102\1\2\0\11\1\1\0\33\1"+ - "\12\0\13\1\4\0\3\1\1\0\76\1\2\0\10\1"+ - "\1\11\27\1\5\0\4\1\1\0\5\1\4\0\1\1"+ - "\1\0\3\1\1\0\57\1\2\0\32\1\5\0\3\1"+ - "\2\0\3\1\4\0\3\1\1\0\47\1\2\0\23\1"+ - "\2\0\2\1\2\0\3\1\4\0\3\1\1\0\14\1"+ - "\1\0\7\1\1\0\16\1\1\0\26\1\2\0\2\1"+ - "\3\0\2\1\1\0\13\1\1\0\2\1\2\0\12\1"+ - "\1\0\23\1\2\0\1\1\2\0\2\1\1\0\7\1"+ - "\1\0\2\1\2\0\12\1\1\0\17\1\2\0\1\1"+ - "\2\0\2\1\1\0\4\1\1\0\1\1\1\0\1\1"+ - "\5\0\11\1\1\0\11\1\1\0\2\1\1\0\1\1"+ - "\2\0\1\1\1\0\2\1\1\0\1\1\5\0\10\1"+ - "\1\0\6\1\1\0\1\1\3\0\1\1\1\0\1\1"+ - "\1\0\1\1\5\0\5\1\1\0\5\1\1\0\1\1"+ - "\4\0\1\1\1\0\1\1\1\0\1\1\4\0\3\1"+ - "\1\0\3\1\1\0\1\1\4\0\1\1\1\0\1\1"+ - "\4\0\2\1\1\0\2\1\6\0\1\1\1\0\1\1"+ - "\4\0\1\1\7\0\1\1\1\0\1\1\30\0\1\1"+ - "\37\0"; - - private static int [] zzUnpackAttribute() { - int [] result = new int[2058]; - int offset = 0; - offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAttribute(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - /** the input device */ - private java.io.Reader zzReader; - - /** the current state of the DFA */ - private int zzState; - - /** the current lexical state */ - private int zzLexicalState = YYINITIAL; - - /** this buffer contains the current text to be matched and is - the source of the yytext() string */ - private char zzBuffer[]; - - /** the textposition at the last accepting state */ - private int zzMarkedPos; - - /** the current text position in the buffer */ - private int zzCurrentPos; - - /** startRead marks the beginning of the yytext() string in the buffer */ - private int zzStartRead; - - /** endRead marks the last character in the buffer, that has been read - from input */ - private int zzEndRead; - - /** zzAtEOF == true <=> the scanner is at the EOF */ - private boolean zzAtEOF; - - /* user code: */ - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public GroovyTokenMaker() { - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addToken(int, int, int) - */ - private void addHyperlinkToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, true); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, int startOffset) { - super.addToken(array, start,end, tokenType, startOffset); - zzStartRead = zzMarkedPos; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { "//", null }; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - - // Start off in the proper state. - int state = Token.NULL; - switch (initialTokenType) { - case Token.LITERAL_STRING_DOUBLE_QUOTE: - state = MULTILINE_STRING_DOUBLE; - start = text.offset; - break; - case Token.LITERAL_CHAR: - state = MULTILINE_STRING_SINGLE; - start = text.offset; - break; - case Token.COMMENT_MULTILINE: - state = MLC; - start = text.offset; - break; - case Token.COMMENT_DOCUMENTATION: - state = DOCCOMMENT; - start = text.offset; - break; - default: - state = Token.NULL; - } - - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Returns whether a regular expression token can follow the specified - * token. - * - * @param t The token to check, which may be null. - * @return Whether a regular expression token may follow this one. - */ - private static final boolean regexCanFollow(Token t) { - char ch; - return t==null || - //t.isOperator() || - (t.length()==1 && ( - (ch=t.charAt(0))=='=' || - ch=='(' || - ch==',' || - ch=='?' || - ch==':' || - ch=='[' - )) || - /* Operators "==", "===", "!=", "!==", etc. */ - (t.getType()==Token.OPERATOR && - ((ch=t.charAt(t.length()-1))=='=' || ch=='~')); - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(java.io.Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtEOF = false; - } - - - - - /** - * Creates a new scanner - * There is also a java.io.InputStream version of this constructor. - * - * @param in the java.io.Reader to read input from. - */ - public GroovyTokenMaker(java.io.Reader in) { - this.zzReader = in; - } - - /** - * Creates a new scanner. - * There is also java.io.Reader version of this constructor. - * - * @param in the java.io.Inputstream to read input from. - */ - public GroovyTokenMaker(java.io.InputStream in) { - this(new java.io.InputStreamReader(in)); - } - - /** - * Unpacks the compressed character translation table. - * - * @param packed the packed character translation table - * @return the unpacked character translation table - */ - private static char [] zzUnpackCMap(String packed) { - char [] map = new char[0x10000]; - int i = 0; /* index in packed string */ - int j = 0; /* index in unpacked array */ - while (i < 200) { - int count = packed.charAt(i++); - char value = packed.charAt(i++); - do map[j++] = value; while (--count > 0); - } - return map; - } - - - /** - * Closes the input stream. - */ - public final void yyclose() throws java.io.IOException { - zzAtEOF = true; /* indicate end of file */ - zzEndRead = zzStartRead; /* invalidate buffer */ - - if (zzReader != null) - zzReader.close(); - } - - - /** - * Returns the current lexical state. - */ - public final int yystate() { - return zzLexicalState; - } - - - /** - * Enters a new lexical state - * - * @param newState the new lexical state - */ - @Override - public final void yybegin(int newState) { - zzLexicalState = newState; - } - - - /** - * Returns the text matched by the current regular expression. - */ - public final String yytext() { - return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead ); - } - - - /** - * Returns the character at position pos from the - * matched text. - * - * It is equivalent to yytext().charAt(pos), but faster - * - * @param pos the position of the character to fetch. - * A value from 0 to yylength()-1. - * - * @return the character at position pos - */ - public final char yycharat(int pos) { - return zzBuffer[zzStartRead+pos]; - } - - - /** - * Returns the length of the matched text region. - */ - public final int yylength() { - return zzMarkedPos-zzStartRead; - } - - - /** - * Reports an error that occured while scanning. - * - * In a wellformed scanner (no or only correct usage of - * yypushback(int) and a match-all fallback rule) this method - * will only be called with things that "Can't Possibly Happen". - * If this method is called, something is seriously wrong - * (e.g. a JFlex bug producing a faulty scanner etc.). - * - * Usual syntax/scanner level error handling should be done - * in error fallback rules. - * - * @param errorCode the code of the errormessage to display - */ - private void zzScanError(int errorCode) { - String message; - try { - message = ZZ_ERROR_MSG[errorCode]; - } - catch (ArrayIndexOutOfBoundsException e) { - message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; - } - - throw new Error(message); - } - - - /** - * Pushes the specified amount of characters back into the input stream. - * - * They will be read again by then next call of the scanning method - * - * @param number the number of characters to be read again. - * This number must not be greater than yylength()! - */ - public void yypushback(int number) { - if ( number > yylength() ) - zzScanError(ZZ_PUSHBACK_2BIG); - - zzMarkedPos -= number; - } - - - /** - * Resumes scanning until the next regular expression is matched, - * the end of input is encountered or an I/O-Error occurs. - * - * @return the next token - * @exception java.io.IOException if any I/O-Error occurs - */ - public org.fife.ui.rsyntaxtextarea.Token yylex() throws java.io.IOException { - int zzInput; - int zzAction; - - // cached fields: - int zzCurrentPosL; - int zzMarkedPosL; - int zzEndReadL = zzEndRead; - char [] zzBufferL = zzBuffer; - char [] zzCMapL = ZZ_CMAP; - - int [] zzTransL = ZZ_TRANS; - int [] zzRowMapL = ZZ_ROWMAP; - int [] zzAttrL = ZZ_ATTRIBUTE; - - while (true) { - zzMarkedPosL = zzMarkedPos; - - zzAction = -1; - - zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; - - zzState = zzLexicalState; - - - zzForAction: { - while (true) { - - if (zzCurrentPosL < zzEndReadL) - zzInput = zzBufferL[zzCurrentPosL++]; - else if (zzAtEOF) { - zzInput = YYEOF; - break zzForAction; - } - else { - // store back cached positions - zzCurrentPos = zzCurrentPosL; - zzMarkedPos = zzMarkedPosL; - boolean eof = zzRefill(); - // get translated positions and possibly new buffer - zzCurrentPosL = zzCurrentPos; - zzMarkedPosL = zzMarkedPos; - zzBufferL = zzBuffer; - zzEndReadL = zzEndRead; - if (eof) { - zzInput = YYEOF; - break zzForAction; - } - else { - zzInput = zzBufferL[zzCurrentPosL++]; - } - } - int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; - if (zzNext == -1) break zzForAction; - zzState = zzNext; - - int zzAttributes = zzAttrL[zzState]; - if ( (zzAttributes & 1) == 1 ) { - zzAction = zzState; - zzMarkedPosL = zzCurrentPosL; - if ( (zzAttributes & 8) == 8 ) break zzForAction; - } - - } - } - - // store back cached position - zzMarkedPos = zzMarkedPosL; - - switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { - case 21: - { addToken(start,zzStartRead-1, Token.ERROR_STRING_DOUBLE); addNullToken(); return firstToken; - } - case 49: break; - case 3: - { addToken(Token.IDENTIFIER); - } - case 50: break; - case 43: - { addToken(Token.LITERAL_BOOLEAN); - } - case 51: break; - case 6: - { start = zzMarkedPos-1; yybegin(STRING_DOUBLE); - } - case 52: break; - case 36: - { start = zzMarkedPos-3; yybegin(MULTILINE_STRING_DOUBLE); - } - case 53: break; - case 13: - { addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); return firstToken; - } - case 54: break; - case 35: - { addToken(Token.ERROR_CHAR); - } - case 55: break; - case 22: - { addToken(Token.ERROR_NUMBER_FORMAT); - } - case 56: break; - case 5: - { addToken(Token.ERROR_CHAR); addNullToken(); return firstToken; - } - case 57: break; - case 11: - { addToken(Token.ANNOTATION); - } - case 58: break; - case 29: - { addToken(Token.FUNCTION); - } - case 59: break; - case 34: - { start = zzMarkedPos-3; yybegin(MULTILINE_STRING_SINGLE); - } - case 60: break; - case 2: - { addToken(Token.ERROR_IDENTIFIER); - } - case 61: break; - case 37: - { boolean highlightedAsRegex = false; - if (zzBuffer[zzStartRead]=='~' || firstToken==null) { - addToken(Token.REGEX); - highlightedAsRegex = true; - } - else { - // If this is *likely* to be a regex, based on - // the previous token, highlight it as such. - Token t = firstToken.getLastNonCommentNonWhitespaceToken(); - if (regexCanFollow(t)) { - addToken(Token.REGEX); - highlightedAsRegex = true; - } - } - // If it doesn't *appear* to be a regex, highlight it as - // individual tokens. - if (!highlightedAsRegex) { - int temp = zzStartRead + 1; - addToken(zzStartRead, zzStartRead, Token.OPERATOR); - zzStartRead = zzCurrentPos = zzMarkedPos = temp; - } - } - case 62: break; - case 41: - { yybegin(YYINITIAL); addToken(start,zzStartRead+2, Token.LITERAL_CHAR); - } - case 63: break; - case 46: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addToken(temp,zzMarkedPos-1, Token.VARIABLE); start = zzMarkedPos; - } - case 64: break; - case 32: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addToken(temp,zzMarkedPos-1, Token.PREPROCESSOR); start = zzMarkedPos; - } - case 65: break; - case 45: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_DOCUMENTATION); start = zzMarkedPos; - } - case 66: break; - case 15: - { /* Skip escaped chars, handles case: '\"""'. */ - } - case 67: break; - case 25: - { addToken(Token.LITERAL_CHAR); - } - case 68: break; - case 19: - { /* Skip escaped chars. */ - } - case 69: break; - case 40: - { yybegin(YYINITIAL); addToken(start,zzStartRead+2, Token.LITERAL_STRING_DOUBLE_QUOTE); - } - case 70: break; - case 24: - { addToken(Token.LITERAL_NUMBER_HEXADECIMAL); - } - case 71: break; - case 27: - { start = zzMarkedPos-2; yybegin(MLC); - } - case 72: break; - case 8: - { addToken(Token.WHITESPACE); - } - case 73: break; - case 31: - { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.COMMENT_DOCUMENTATION); - } - case 74: break; - case 39: - { addToken(Token.DATA_TYPE); - } - case 75: break; - case 30: - { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); - } - case 76: break; - case 4: - { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); - } - case 77: break; - case 33: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addToken(temp,zzMarkedPos-1, Token.VARIABLE); start = zzMarkedPos; - } - case 78: break; - case 20: - { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); - } - case 79: break; - case 17: - { /* Skip escaped chars, handles case: "\'''". */ - } - case 80: break; - case 38: - { start = zzMarkedPos-3; yybegin(DOCCOMMENT); - } - case 81: break; - case 28: - { addToken(Token.RESERVED_WORD); - } - case 82: break; - case 44: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_MULTILINE); start = zzMarkedPos; - } - case 83: break; - case 48: - { addToken(Token.RESERVED_WORD_2); - } - case 84: break; - case 14: - { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; - } - case 85: break; - case 10: - { addToken(Token.SEPARATOR); - } - case 86: break; - case 7: - { addNullToken(); return firstToken; - } - case 87: break; - case 12: - { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; - } - case 88: break; - case 9: - { addToken(Token.OPERATOR); - } - case 89: break; - case 18: - { addToken(start,zzStartRead-1, Token.LITERAL_CHAR); return firstToken; - } - case 90: break; - case 23: - { addToken(Token.LITERAL_NUMBER_FLOAT); - } - case 91: break; - case 47: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_EOL); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_EOL); start = zzMarkedPos; - } - case 92: break; - case 42: - { addToken(Token.COMMENT_MULTILINE); - } - case 93: break; - case 26: - { start = zzMarkedPos-2; yybegin(EOL_COMMENT); - } - case 94: break; - case 1: - { - } - case 95: break; - case 16: - { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); return firstToken; - } - case 96: break; - default: - if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { - zzAtEOF = true; - switch (zzLexicalState) { - case EOL_COMMENT: { - addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; - } - case 2059: break; - case MULTILINE_STRING_DOUBLE: { - addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); return firstToken; - } - case 2060: break; - case DOCCOMMENT: { - yybegin(YYINITIAL); addToken(start,zzEndRead, Token.COMMENT_DOCUMENTATION); return firstToken; - } - case 2061: break; - case YYINITIAL: { - addNullToken(); return firstToken; - } - case 2062: break; - case MLC: { - addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; - } - case 2063: break; - case STRING_DOUBLE: { - addToken(start,zzStartRead-1, Token.ERROR_STRING_DOUBLE); return firstToken; - } - case 2064: break; - case MULTILINE_STRING_SINGLE: { - addToken(start,zzStartRead-1, Token.LITERAL_CHAR); return firstToken; - } - case 2065: break; - default: - return null; - } - } - else { - zzScanError(ZZ_NO_MATCH); - } - } - } - } - - -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/HTMLTokenMaker.flex b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/HTMLTokenMaker.flex deleted file mode 100644 index 27102d3..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/HTMLTokenMaker.flex +++ /dev/null @@ -1,1250 +0,0 @@ -/* - * 01/24/2005 - * - * HTMLTokenMaker.java - Generates tokens for HTML syntax highlighting. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * Scanner for HTML 5 files. - * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated HTMLTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.9 - */ -%% - -%public -%class HTMLTokenMaker -%extends AbstractMarkupTokenMaker -%unicode -%type org.fife.ui.rsyntaxtextarea.Token - - -%{ - - /** - * Type specific to XMLTokenMaker denoting a line ending with an unclosed - * double-quote attribute. - */ - public static final int INTERNAL_ATTR_DOUBLE = -1; - - - /** - * Type specific to XMLTokenMaker denoting a line ending with an unclosed - * single-quote attribute. - */ - public static final int INTERNAL_ATTR_SINGLE = -2; - - - /** - * Token type specific to HTMLTokenMaker; this signals that the user has - * ended a line with an unclosed HTML tag; thus a new line is beginning - * still inside of the tag. - */ - public static final int INTERNAL_INTAG = -3; - - /** - * Token type specific to HTMLTokenMaker; this signals that the user has - * ended a line with an unclosed <script> tag. - */ - public static final int INTERNAL_INTAG_SCRIPT = -4; - - /** - * Token type specifying we're in a double-qouted attribute in a - * script tag. - */ - public static final int INTERNAL_ATTR_DOUBLE_QUOTE_SCRIPT = -5; - - /** - * Token type specifying we're in a single-qouted attribute in a - * script tag. - */ - public static final int INTERNAL_ATTR_SINGLE_QUOTE_SCRIPT = -6; - - /** - * Token type specific to HTMLTokenMaker; this signals that the user has - * ended a line with an unclosed <style> tag. - */ - public static final int INTERNAL_INTAG_STYLE = -7; - - /** - * Token type specifying we're in a double-qouted attribute in a - * style tag. - */ - public static final int INTERNAL_ATTR_DOUBLE_QUOTE_STYLE = -8; - - /** - * Token type specifying we're in a single-qouted attribute in a - * style tag. - */ - public static final int INTERNAL_ATTR_SINGLE_QUOTE_STYLE = -9; - - /** - * Token type specifying we're in JavaScript. - */ - public static final int INTERNAL_IN_JS = -10; - - /** - * Token type specifying we're in a JavaScript multiline comment. - */ - public static final int INTERNAL_IN_JS_MLC = -11; - - /** - * Token type specifying we're in an invalid multi-line JS string. - */ - public static final int INTERNAL_IN_JS_STRING_INVALID = -12; - - /** - * Token type specifying we're in a valid multi-line JS string. - */ - public static final int INTERNAL_IN_JS_STRING_VALID = -13; - - /** - * Token type specifying we're in an invalid multi-line JS single-quoted string. - */ - public static final int INTERNAL_IN_JS_CHAR_INVALID = -14; - - /** - * Token type specifying we're in a valid multi-line JS single-quoted string. - */ - public static final int INTERNAL_IN_JS_CHAR_VALID = -15; - - /** - * Internal type denoting a line ending in CSS. - */ - public static final int INTERNAL_CSS = -16; - - /** - * Internal type denoting a line ending in a CSS property. - */ - public static final int INTERNAL_CSS_PROPERTY = -17; - - /** - * Internal type denoting a line ending in a CSS property value. - */ - public static final int INTERNAL_CSS_VALUE = -18; - - /** - * Internal type denoting line ending in a CSS double-quote string. - * The state to return to is embedded in the actual end token type. - */ - public static final int INTERNAL_CSS_STRING = -(1<<11); - - /** - * Internal type denoting line ending in a CSS single-quote string. - * The state to return to is embedded in the actual end token type. - */ - public static final int INTERNAL_CSS_CHAR = -(2<<11); - - /** - * Internal type denoting line ending in a CSS multi-line comment. - * The state to return to is embedded in the actual end token type. - */ - public static final int INTERNAL_CSS_MLC = -(3<<11); - - /** - * The state previous CSS-related state we were in before going into a CSS - * string, multi-line comment, etc. - */ - private int cssPrevState; - - /** - * Whether closing markup tags are automatically completed for HTML. - */ - private static boolean completeCloseTags; - - /** - * When in the JS_STRING state, whether the current string is valid. - */ - private boolean validJSString; - - /** - * Language state set on HTML tokens. Must be 0. - */ - private static final int LANG_INDEX_DEFAULT = 0; - - /** - * Language state set on JavaScript tokens. - */ - private static final int LANG_INDEX_JS = 1; - - /** - * Language state set on CSS tokens. - */ - private static final int LANG_INDEX_CSS = 2; - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public HTMLTokenMaker() { - super(); - } - - - /** - * Adds the token specified to the current linked list of tokens as an - * "end token;" that is, at zzMarkedPos. - * - * @param tokenType The token's type. - */ - private void addEndToken(int tokenType) { - addToken(zzMarkedPos,zzMarkedPos, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addToken(int, int, int) - */ - private void addHyperlinkToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, true); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, int startOffset) { - super.addToken(array, start,end, tokenType, startOffset); - zzStartRead = zzMarkedPos; - } - - - /** - * {@inheritDoc} - */ - @Override - protected OccurrenceMarker createOccurrenceMarker() { - return new HtmlOccurrenceMarker(); - } - - - /** - * Sets whether markup close tags should be completed. You might not want - * this to be the case, since some tags in standard HTML aren't usually - * closed. - * - * @return Whether closing markup tags are completed. - * @see #setCompleteCloseTags(boolean) - */ - @Override - public boolean getCompleteCloseTags() { - return completeCloseTags; - } - - - @Override - public boolean getCurlyBracesDenoteCodeBlocks(int languageIndex) { - return languageIndex==LANG_INDEX_CSS || languageIndex==LANG_INDEX_JS; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - switch (languageIndex) { - case LANG_INDEX_JS: - return new String[] { "//", null }; - case LANG_INDEX_CSS: - return new String[] { "/*", "*/" }; - default: - return new String[] { "" }; - } - } - - - /** - * Returns Token.MARKUP_TAG_NAME. - * - * @param type The token type. - * @return Whether tokens of this type should have "mark occurrences" - * enabled. - */ - @Override - public boolean getMarkOccurrencesOfTokenType(int type) { - return type==Token.MARKUP_TAG_NAME; - } - - - /** - * Overridden to handle newlines in JS and CSS differently than those in - * markup. - */ - @Override - public boolean getShouldIndentNextLineAfter(Token token) { - int languageIndex = token==null ? 0 : token.getLanguageIndex(); - if (getCurlyBracesDenoteCodeBlocks(languageIndex)) { - if (token!=null && token.length()==1) { - char ch = token.charAt(0); - return ch=='{' || ch=='('; - } - } - return false; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - cssPrevState = CSS; // Shouldn't be necessary - int languageIndex = 0; - - // Start off in the proper state. - int state = Token.NULL; - switch (initialTokenType) { - case Token.MARKUP_COMMENT: - state = COMMENT; - break; - case Token.PREPROCESSOR: - state = PI; - break; - case Token.VARIABLE: - state = DTD; - break; - case INTERNAL_INTAG: - state = INTAG; - break; - case INTERNAL_INTAG_SCRIPT: - state = INTAG_SCRIPT; - break; - case INTERNAL_INTAG_STYLE: - state = INTAG_STYLE; - break; - case INTERNAL_ATTR_DOUBLE: - state = INATTR_DOUBLE; - break; - case INTERNAL_ATTR_SINGLE: - state = INATTR_SINGLE; - break; - case INTERNAL_ATTR_DOUBLE_QUOTE_SCRIPT: - state = INATTR_DOUBLE_SCRIPT; - break; - case INTERNAL_ATTR_SINGLE_QUOTE_SCRIPT: - state = INATTR_SINGLE_SCRIPT; - break; - case INTERNAL_ATTR_DOUBLE_QUOTE_STYLE: - state = INATTR_DOUBLE_STYLE; - break; - case INTERNAL_ATTR_SINGLE_QUOTE_STYLE: - state = INATTR_SINGLE_STYLE; - break; - case INTERNAL_IN_JS: - state = JAVASCRIPT; - languageIndex = LANG_INDEX_JS; - break; - case INTERNAL_IN_JS_MLC: - state = JS_MLC; - languageIndex = LANG_INDEX_JS; - break; - case INTERNAL_IN_JS_STRING_INVALID: - state = JS_STRING; - validJSString = false; - languageIndex = LANG_INDEX_JS; - break; - case INTERNAL_IN_JS_STRING_VALID: - state = JS_STRING; - validJSString = true; - languageIndex = LANG_INDEX_JS; - break; - case INTERNAL_IN_JS_CHAR_INVALID: - state = JS_CHAR; - validJSString = false; - languageIndex = LANG_INDEX_JS; - break; - case INTERNAL_IN_JS_CHAR_VALID: - state = JS_CHAR; - validJSString = true; - languageIndex = LANG_INDEX_JS; - break; - case INTERNAL_CSS: - state = CSS; - languageIndex = LANG_INDEX_CSS; - break; - case INTERNAL_CSS_PROPERTY: - state = CSS_PROPERTY; - languageIndex = LANG_INDEX_CSS; - break; - case INTERNAL_CSS_VALUE: - state = CSS_VALUE; - languageIndex = LANG_INDEX_CSS; - break; - default: - if (initialTokenType<-1024) { - int main = -(-initialTokenType & 0xffffff00); - switch (main) { - default: // Should never happen - case INTERNAL_CSS_STRING: - state = CSS_STRING; - break; - case INTERNAL_CSS_CHAR: - state = CSS_CHAR_LITERAL; - break; - case INTERNAL_CSS_MLC: - state = CSS_C_STYLE_COMMENT; - break; - } - cssPrevState = -initialTokenType&0xff; - languageIndex = LANG_INDEX_CSS; - } - else { - state = Token.NULL; - } - break; - } - - setLanguageIndex(languageIndex); - start = text.offset; - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Sets whether markup close tags should be completed. You might not want - * this to be the case, since some tags in standard HTML aren't usually - * closed. - * - * @param complete Whether closing markup tags are completed. - * @see #getCompleteCloseTags() - */ - public static void setCompleteCloseTags(boolean complete) { - completeCloseTags = complete; - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(java.io.Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = zzPushbackPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtBOL = true; - zzAtEOF = false; - } - - -%} - -// HTML-specific stuff. -Whitespace = ([ \t\f]+) -LineTerminator = ([\n]) -Identifier = ([^ \t\n<&]+) -EntityReference = ([&][^; \t]*[;]?) -InTagIdentifier = ([^ \t\n\"\'/=>]+) -EndScriptTag = ("") -EndStyleTag = ("") - -// General stuff. -Letter = [A-Za-z] -NonzeroDigit = [1-9] -Digit = ("0"|{NonzeroDigit}) -HexDigit = ({Digit}|[A-Fa-f]) -OctalDigit = ([0-7]) -LetterOrUnderscore = ({Letter}|[_]) -LetterOrUnderscoreOrDash = ({LetterOrUnderscore}|[\-]) - - -// JavaScript stuff. -EscapedSourceCharacter = ("u"{HexDigit}{HexDigit}{HexDigit}{HexDigit}) -NonSeparator = ([^\t\f\r\n\ \(\)\{\}\[\]\;\,\.\=\>\<\!\~\?\:\+\-\*\/\&\|\^\%\"\']|"#"|"\\") -IdentifierStart = ({Letter}|"_"|"$") -IdentifierPart = ({IdentifierStart}|{Digit}|("\\"{EscapedSourceCharacter})) -JS_MLCBegin = "/*" -JS_MLCEnd = "*/" -JS_LineCommentBegin = "//" -JS_IntegerHelper1 = (({NonzeroDigit}{Digit}*)|"0") -JS_IntegerHelper2 = ("0"(([xX]{HexDigit}+)|({OctalDigit}*))) -JS_IntegerLiteral = ({JS_IntegerHelper1}[lL]?) -JS_HexLiteral = ({JS_IntegerHelper2}[lL]?) -JS_FloatHelper1 = ([fFdD]?) -JS_FloatHelper2 = ([eE][+-]?{Digit}+{JS_FloatHelper1}) -JS_FloatLiteral1 = ({Digit}+"."({JS_FloatHelper1}|{JS_FloatHelper2}|{Digit}+({JS_FloatHelper1}|{JS_FloatHelper2}))) -JS_FloatLiteral2 = ("."{Digit}+({JS_FloatHelper1}|{JS_FloatHelper2})) -JS_FloatLiteral3 = ({Digit}+{JS_FloatHelper2}) -JS_FloatLiteral = ({JS_FloatLiteral1}|{JS_FloatLiteral2}|{JS_FloatLiteral3}|({Digit}+[fFdD])) -JS_ErrorNumberFormat = (({JS_IntegerLiteral}|{JS_HexLiteral}|{JS_FloatLiteral}){NonSeparator}+) -JS_Separator = ([\(\)\{\}\[\]\]]) -JS_Separator2 = ([\;,.]) -JS_NonAssignmentOperator = ("+"|"-"|"<="|"^"|"++"|"<"|"*"|">="|"%"|"--"|">"|"/"|"!="|"?"|">>"|"!"|"&"|"=="|":"|">>"|"~"|"||"|"&&"|">>>") -JS_AssignmentOperator = ("="|"-="|"*="|"/="|"|="|"&="|"^="|"+="|"%="|"<<="|">>="|">>>=") -JS_Operator = ({JS_NonAssignmentOperator}|{JS_AssignmentOperator}) -JS_Identifier = ({IdentifierStart}{IdentifierPart}*) -JS_ErrorIdentifier = ({NonSeparator}+) -JS_Regex = ("/"([^\*\\/]|\\.)([^/\\]|\\.)*"/"[gim]*) - - -// CSS stuff. -CSS_SelectorPiece = (("*"|"."|{LetterOrUnderscoreOrDash})({LetterOrUnderscoreOrDash}|"."|{Digit})*) -CSS_PseudoClass = (":"("root"|"nth-child"|"nth-last-child"|"nth-of-type"|"nth-last-of-type"|"first-child"|"last-child"|"first-of-type"|"last-of-type"|"only-child"|"only-of-type"|"empty"|"link"|"visited"|"active"|"hover"|"focus"|"target"|"lang"|"enabled"|"disabled"|"checked"|":first-line"|":first-letter"|":before"|":after"|"not")) -CSS_AtKeyword = ("@"{CSS_SelectorPiece}) -CSS_Id = ("#"{CSS_SelectorPiece}) -CSS_Separator = ([;\(\)\[\]]) -CSS_MlcStart = ({JS_MLCBegin}) -CSS_MlcEnd = ({JS_MLCEnd}) -CSS_Property = ([\*]?{LetterOrUnderscoreOrDash}({LetterOrUnderscoreOrDash}|{Digit})*) -CSS_ValueChar = ({LetterOrUnderscoreOrDash}|[\\/]) -CSS_Value = ({CSS_ValueChar}*) -CSS_Function = ({CSS_Value}\() -CSS_Digits = ([\-]?{Digit}+([0-9\.]+)?(pt|pc|in|mm|cm|em|ex|px|ms|s|%)?) -CSS_Hex = ("#"[0-9a-fA-F]+) -CSS_Number = ({CSS_Digits}|{CSS_Hex}) - - -URLGenDelim = ([:\/\?#\[\]@]) -URLSubDelim = ([\!\$&'\(\)\*\+,;=]) -URLUnreserved = ({LetterOrUnderscore}|{Digit}|[\-\.\~]) -URLCharacter = ({URLGenDelim}|{URLSubDelim}|{URLUnreserved}|[%]) -URLCharacters = ({URLCharacter}*) -URLEndCharacter = ([\/\$]|{Letter}|{Digit}) -URL = (((https?|f(tp|ile))"://"|"www.")({URLCharacters}{URLEndCharacter})?) - - -%state COMMENT -%state PI -%state DTD -%state INTAG -%state INTAG_CHECK_TAG_NAME -%state INATTR_DOUBLE -%state INATTR_SINGLE -%state INTAG_SCRIPT -%state INATTR_DOUBLE_SCRIPT -%state INATTR_SINGLE_SCRIPT -%state INTAG_STYLE -%state INATTR_DOUBLE_STYLE -%state INATTR_SINGLE_STYLE -%state JAVASCRIPT -%state JS_STRING -%state JS_CHAR -%state JS_MLC -%state JS_EOL_COMMENT -%state CSS -%state CSS_PROPERTY -%state CSS_VALUE -%state CSS_STRING -%state CSS_CHAR_LITERAL -%state CSS_C_STYLE_COMMENT - - -%% - - { - "" { yybegin(YYINITIAL); addToken(start,zzStartRead+2, Token.MARKUP_COMMENT); } - "-" {} - <> { addToken(start,zzStartRead-1, Token.MARKUP_COMMENT); return firstToken; } -} - - { - [^\n\?]+ {} - {LineTerminator} { addToken(start,zzStartRead-1, Token.MARKUP_PROCESSING_INSTRUCTION); return firstToken; } - "?>" { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.MARKUP_PROCESSING_INSTRUCTION); } - "?" {} - <> { addToken(start,zzStartRead-1, Token.MARKUP_PROCESSING_INSTRUCTION); return firstToken; } -} - - { - [^\n>]+ {} - ">" { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.MARKUP_DTD); } - {LineTerminator} | - <> { addToken(start,zzStartRead-1, Token.MARKUP_DTD); return firstToken; } -} - - { - [Aa] | - [aA][bB][bB][rR] | - [aA][cC][rR][oO][nN][yY][mM] | - [aA][dD][dD][rR][eE][sS][sS] | - [aA][pP][pP][lL][eE][tT] | - [aA][rR][eE][aA] | - [aA][rR][tT][iI][cC][lL][eE] | - [aA][sS][iI][dD][eE] | - [aA][uU][dD][iI][oO] | - [bB] | - [bB][aA][sS][eE] | - [bB][aA][sS][eE][fF][oO][nN][tT] | - [bB][dD][oO] | - [bB][gG][sS][oO][uU][nN][dD] | - [bB][iI][gG] | - [bB][lL][iI][nN][kK] | - [bB][lL][oO][cC][kK][qQ][uU][oO][tT][eE] | - [bB][oO][dD][yY] | - [bB][rR] | - [bB][uU][tT][tT][oO][nN] | - [cC][aA][nN][vV][aA][sS] | - [cC][aA][pP][tT][iI][oO][nN] | - [cC][eE][nN][tT][eE][rR] | - [cC][iI][tT][eE] | - [cC][oO][dD][eE] | - [cC][oO][lL] | - [cC][oO][lL][gG][rR][oO][uU][pP] | - [cC][oO][mM][mM][aA][nN][dD] | - [cC][oO][mM][mM][eE][nN][tT] | - [dD][dD] | - [dD][aA][tT][aA][gG][rR][iI][dD] | - [dD][aA][tT][aA][lL][iI][sS][tT] | - [dD][aA][tT][aA][tT][eE][mM][pP][lL][aA][tT][eE] | - [dD][eE][lL] | - [dD][eE][tT][aA][iI][lL][sS] | - [dD][fF][nN] | - [dD][iI][aA][lL][oO][gG] | - [dD][iI][rR] | - [dD][iI][vV] | - [dD][lL] | - [dD][tT] | - [eE][mM] | - [eE][mM][bB][eE][dD] | - [eE][vV][eE][nN][tT][sS][oO][uU][rR][cC][eE] | - [fF][iI][eE][lL][dD][sS][eE][tT] | - [fF][iI][gG][uU][rR][eE] | - [fF][oO][nN][tT] | - [fF][oO][oO][tT][eE][rR] | - [fF][oO][rR][mM] | - [fF][rR][aA][mM][eE] | - [fF][rR][aA][mM][eE][sS][eE][tT] | - [hH][123456] | - [hH][eE][aA][dD] | - [hH][eE][aA][dD][eE][rR] | - [hH][rR] | - [hH][tT][mM][lL] | - [iI] | - [iI][fF][rR][aA][mM][eE] | - [iI][lL][aA][yY][eE][rR] | - [iI][mM][gG] | - [iI][nN][pP][uU][tT] | - [iI][nN][sS] | - [iI][sS][iI][nN][dD][eE][xX] | - [kK][bB][dD] | - [kK][eE][yY][gG][eE][nN] | - [lL][aA][bB][eE][lL] | - [lL][aA][yY][eE][rR] | - [lL][eE][gG][eE][nN][dD] | - [lL][iI] | - [lL][iI][nN][kK] | - [mM][aA][pP] | - [mM][aA][rR][kK] | - [mM][aA][rR][qQ][uU][eE][eE] | - [mM][eE][nN][uU] | - [mM][eE][tT][aA] | - [mM][eE][tT][eE][rR] | - [mM][uU][lL][tT][iI][cC][oO][lL] | - [nN][aA][vV] | - [nN][eE][sS][tT] | - [nN][oO][bB][rR] | - [nN][oO][eE][mM][bB][eE][dD] | - [nN][oO][fF][rR][aA][mM][eE][sS] | - [nN][oO][lL][aA][yY][eE][rR] | - [nN][oO][sS][cC][rR][iI][pP][tT] | - [oO][bB][jJ][eE][cC][tT] | - [oO][lL] | - [oO][pP][tT][gG][rR][oO][uU][pP] | - [oO][pP][tT][iI][oO][nN] | - [oO][uU][tT][pP][uU][tT] | - [pP] | - [pP][aA][rR][aA][mM] | - [pP][lL][aA][iI][nN][tT][eE][xX][tT] | - [pP][rR][eE] | - [pP][rR][oO][gG][rR][eE][sS][sS] | - [qQ] | - [rR][uU][lL][eE] | - [sS] | - [sS][aA][mM][pP] | - [sS][cC][rR][iI][pP][tT] | - [sS][eE][cC][tT][iI][oO][nN] | - [sS][eE][lL][eE][cC][tT] | - [sS][eE][rR][vV][eE][rR] | - [sS][mM][aA][lL][lL] | - [sS][oO][uU][rR][cC][eE] | - [sS][pP][aA][cC][eE][rR] | - [sS][pP][aA][nN] | - [sS][tT][rR][iI][kK][eE] | - [sS][tT][rR][oO][nN][gG] | - [sS][tT][yY][lL][eE] | - [sS][uU][bB] | - [sS][uU][pP] | - [tT][aA][bB][lL][eE] | - [tT][bB][oO][dD][yY] | - [tT][dD] | - [tT][eE][xX][tT][aA][rR][eE][aA] | - [tT][fF][oO][oO][tT] | - [tT][hH] | - [tT][hH][eE][aA][dD] | - [tT][iI][mM][eE] | - [tT][iI][tT][lL][eE] | - [tT][rR] | - [tT][tT] | - [uU] | - [uU][lL] | - [vV][aA][rR] | - [vV][iI][dD][eE][oO] { addToken(Token.MARKUP_TAG_NAME); } - {InTagIdentifier} { /* A non-recognized HTML tag name */ yypushback(yylength()); yybegin(INTAG); } - . { /* Shouldn't happen */ yypushback(1); yybegin(INTAG); } - <> { addToken(zzMarkedPos,zzMarkedPos, INTERNAL_INTAG); return firstToken; } -} - - { - "/" { addToken(Token.MARKUP_TAG_DELIMITER); } - {InTagIdentifier} { addToken(Token.MARKUP_TAG_ATTRIBUTE); } - {Whitespace} { addToken(Token.WHITESPACE); } - "=" { addToken(Token.OPERATOR); } - "/>" { yybegin(YYINITIAL); addToken(Token.MARKUP_TAG_DELIMITER); } - ">" { yybegin(YYINITIAL); addToken(Token.MARKUP_TAG_DELIMITER); } - [\"] { start = zzMarkedPos-1; yybegin(INATTR_DOUBLE); } - [\'] { start = zzMarkedPos-1; yybegin(INATTR_SINGLE); } - <> { addToken(zzMarkedPos,zzMarkedPos, INTERNAL_INTAG); return firstToken; } -} - - { - [^\"]* {} - [\"] { yybegin(INTAG); addToken(start,zzStartRead, Token.MARKUP_TAG_ATTRIBUTE_VALUE); } - <> { addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_DOUBLE); return firstToken; } -} - - { - [^\']* {} - [\'] { yybegin(INTAG); addToken(start,zzStartRead, Token.MARKUP_TAG_ATTRIBUTE_VALUE); } - <> { addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_SINGLE); return firstToken; } -} - - { - {InTagIdentifier} { addToken(Token.MARKUP_TAG_ATTRIBUTE); } - "/>" { addToken(Token.MARKUP_TAG_DELIMITER); yybegin(YYINITIAL); } - "/" { addToken(Token.MARKUP_TAG_DELIMITER); } // Won't appear in valid HTML. - {Whitespace} { addToken(Token.WHITESPACE); } - "=" { addToken(Token.OPERATOR); } - ">" { addToken(Token.MARKUP_TAG_DELIMITER); yybegin(JAVASCRIPT, LANG_INDEX_JS); } - [\"] { start = zzMarkedPos-1; yybegin(INATTR_DOUBLE_SCRIPT); } - [\'] { start = zzMarkedPos-1; yybegin(INATTR_SINGLE_SCRIPT); } - <> { addToken(zzMarkedPos,zzMarkedPos, INTERNAL_INTAG_SCRIPT); return firstToken; } -} - - { - [^\"]* {} - [\"] { yybegin(INTAG_SCRIPT); addToken(start,zzStartRead, Token.MARKUP_TAG_ATTRIBUTE_VALUE); } - <> { addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_DOUBLE_QUOTE_SCRIPT); return firstToken; } -} - - { - [^\']* {} - [\'] { yybegin(INTAG_SCRIPT); addToken(start,zzStartRead, Token.MARKUP_TAG_ATTRIBUTE_VALUE); } - <> { addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_SINGLE_QUOTE_SCRIPT); return firstToken; } -} - - { - {InTagIdentifier} { addToken(Token.MARKUP_TAG_ATTRIBUTE); } - "/>" { addToken(Token.MARKUP_TAG_DELIMITER); yybegin(YYINITIAL); } - "/" { addToken(Token.MARKUP_TAG_DELIMITER); } // Won't appear in valid HTML. - {Whitespace} { addToken(Token.WHITESPACE); } - "=" { addToken(Token.OPERATOR); } - ">" { addToken(Token.MARKUP_TAG_DELIMITER); yybegin(CSS, LANG_INDEX_CSS); } - [\"] { start = zzMarkedPos-1; yybegin(INATTR_DOUBLE_STYLE); } - [\'] { start = zzMarkedPos-1; yybegin(INATTR_SINGLE_STYLE); } - <> { addToken(zzMarkedPos,zzMarkedPos, INTERNAL_INTAG_STYLE); return firstToken; } -} - - { - [^\"]* {} - [\"] { yybegin(INTAG_STYLE); addToken(start,zzStartRead, Token.MARKUP_TAG_ATTRIBUTE_VALUE); } - <> { addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_DOUBLE_QUOTE_STYLE); return firstToken; } -} - - { - [^\']* {} - [\'] { yybegin(INTAG_STYLE); addToken(start,zzStartRead, Token.MARKUP_TAG_ATTRIBUTE_VALUE); } - <> { addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_SINGLE_QUOTE_STYLE); return firstToken; } -} - - { - - {EndScriptTag} { - yybegin(YYINITIAL, LANG_INDEX_DEFAULT); - addToken(zzStartRead,zzStartRead+1, Token.MARKUP_TAG_DELIMITER); - addToken(zzMarkedPos-7,zzMarkedPos-2, Token.MARKUP_TAG_NAME); - addToken(zzMarkedPos-1,zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER); - } - - // ECMA 3+ keywords. - "break" | - "continue" | - "delete" | - "else" | - "for" | - "function" | - "if" | - "in" | - "new" | - "this" | - "typeof" | - "var" | - "void" | - "while" | - "with" { addToken(Token.RESERVED_WORD); } - "return" { addToken(Token.RESERVED_WORD_2); } - - //JavaScript 1.6 - "each" {if(JavaScriptTokenMaker.isJavaScriptCompatible("1.6")){ addToken(Token.RESERVED_WORD);} else {addToken(Token.IDENTIFIER);} } - //JavaScript 1.7 - "let" {if(JavaScriptTokenMaker.isJavaScriptCompatible("1.7")){ addToken(Token.RESERVED_WORD);} else {addToken(Token.IDENTIFIER);} } - - // Reserved (but not yet used) ECMA keywords. - "abstract" { addToken(Token.RESERVED_WORD); } - "boolean" { addToken(Token.DATA_TYPE); } - "byte" { addToken(Token.DATA_TYPE); } - "case" { addToken(Token.RESERVED_WORD); } - "catch" { addToken(Token.RESERVED_WORD); } - "char" { addToken(Token.DATA_TYPE); } - "class" { addToken(Token.RESERVED_WORD); } - "const" { addToken(Token.RESERVED_WORD); } - "debugger" { addToken(Token.RESERVED_WORD); } - "default" { addToken(Token.RESERVED_WORD); } - "do" { addToken(Token.RESERVED_WORD); } - "double" { addToken(Token.DATA_TYPE); } - "enum" { addToken(Token.RESERVED_WORD); } - "export" { addToken(Token.RESERVED_WORD); } - "extends" { addToken(Token.RESERVED_WORD); } - "final" { addToken(Token.RESERVED_WORD); } - "finally" { addToken(Token.RESERVED_WORD); } - "float" { addToken(Token.DATA_TYPE); } - "goto" { addToken(Token.RESERVED_WORD); } - "implements" { addToken(Token.RESERVED_WORD); } - "import" { addToken(Token.RESERVED_WORD); } - "instanceof" { addToken(Token.RESERVED_WORD); } - "int" { addToken(Token.DATA_TYPE); } - "interface" { addToken(Token.RESERVED_WORD); } - "long" { addToken(Token.DATA_TYPE); } - "native" { addToken(Token.RESERVED_WORD); } - "package" { addToken(Token.RESERVED_WORD); } - "private" { addToken(Token.RESERVED_WORD); } - "protected" { addToken(Token.RESERVED_WORD); } - "public" { addToken(Token.RESERVED_WORD); } - "short" { addToken(Token.DATA_TYPE); } - "static" { addToken(Token.RESERVED_WORD); } - "super" { addToken(Token.RESERVED_WORD); } - "switch" { addToken(Token.RESERVED_WORD); } - "synchronized" { addToken(Token.RESERVED_WORD); } - "throw" { addToken(Token.RESERVED_WORD); } - "throws" { addToken(Token.RESERVED_WORD); } - "transient" { addToken(Token.RESERVED_WORD); } - "try" { addToken(Token.RESERVED_WORD); } - "volatile" { addToken(Token.RESERVED_WORD); } - "null" { addToken(Token.RESERVED_WORD); } - - // Literals. - "false" | - "true" { addToken(Token.LITERAL_BOOLEAN); } - "NaN" { addToken(Token.RESERVED_WORD); } - "Infinity" { addToken(Token.RESERVED_WORD); } - - // Functions. - "eval" | - "parseInt" | - "parseFloat" | - "escape" | - "unescape" | - "isNaN" | - "isFinite" { addToken(Token.FUNCTION); } - - {LineTerminator} { addEndToken(INTERNAL_IN_JS); return firstToken; } - {JS_Identifier} { addToken(Token.IDENTIFIER); } - {Whitespace} { addToken(Token.WHITESPACE); } - - /* String/Character literals. */ - [\'] { start = zzMarkedPos-1; validJSString = true; yybegin(JS_CHAR); } - [\"] { start = zzMarkedPos-1; validJSString = true; yybegin(JS_STRING); } - - /* Comment literals. */ - "/**/" { addToken(Token.COMMENT_MULTILINE); } - {JS_MLCBegin} { start = zzMarkedPos-2; yybegin(JS_MLC); } - {JS_LineCommentBegin} { start = zzMarkedPos-2; yybegin(JS_EOL_COMMENT); } - - /* Attempt to identify regular expressions (not foolproof) - do after comments! */ - {JS_Regex} { - boolean highlightedAsRegex = false; - if (firstToken==null) { - addToken(Token.REGEX); - highlightedAsRegex = true; - } - else { - // If this is *likely* to be a regex, based on - // the previous token, highlight it as such. - Token t = firstToken.getLastNonCommentNonWhitespaceToken(); - if (RSyntaxUtilities.regexCanFollowInJavaScript(t)) { - addToken(Token.REGEX); - highlightedAsRegex = true; - } - } - // If it doesn't *appear* to be a regex, highlight it as - // individual tokens. - if (!highlightedAsRegex) { - int temp = zzStartRead + 1; - addToken(zzStartRead, zzStartRead, Token.OPERATOR); - zzStartRead = zzCurrentPos = zzMarkedPos = temp; - } - } - - /* Separators. */ - {JS_Separator} { addToken(Token.SEPARATOR); } - {JS_Separator2} { addToken(Token.IDENTIFIER); } - - /* Operators. */ - {JS_Operator} { addToken(Token.OPERATOR); } - - /* Numbers */ - {JS_IntegerLiteral} { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); } - {JS_HexLiteral} { addToken(Token.LITERAL_NUMBER_HEXADECIMAL); } - {JS_FloatLiteral} { addToken(Token.LITERAL_NUMBER_FLOAT); } - {JS_ErrorNumberFormat} { addToken(Token.ERROR_NUMBER_FORMAT); } - - {JS_ErrorIdentifier} { addToken(Token.ERROR_IDENTIFIER); } - - /* Ended with a line not in a string or comment. */ - <> { addEndToken(INTERNAL_IN_JS); return firstToken; } - - /* Catch any other (unhandled) characters and flag them as bad. */ - . { addToken(Token.ERROR_IDENTIFIER); } - -} - - { - [^\n\\\"]+ {} - \\x{HexDigit}{2} {} - \\x { /* Invalid latin-1 character \xXX */ validJSString = false; } - \\u{HexDigit}{4} {} - \\u { /* Invalid Unicode character \\uXXXX */ validJSString = false; } - \\. { /* Skip all escaped chars. */ } - \\ { /* Line ending in '\' => continue to next line. */ - if (validJSString) { - addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); - addEndToken(INTERNAL_IN_JS_STRING_VALID); - } - else { - addToken(start,zzStartRead, Token.ERROR_STRING_DOUBLE); - addEndToken(INTERNAL_IN_JS_STRING_INVALID); - } - return firstToken; - } - \" { int type = validJSString ? Token.LITERAL_STRING_DOUBLE_QUOTE : Token.ERROR_STRING_DOUBLE; addToken(start,zzStartRead, type); yybegin(JAVASCRIPT); } - \n | - <> { addToken(start,zzStartRead-1, Token.ERROR_STRING_DOUBLE); addEndToken(INTERNAL_IN_JS); return firstToken; } -} - - { - [^\n\\\']+ {} - \\x{HexDigit}{2} {} - \\x { /* Invalid latin-1 character \xXX */ validJSString = false; } - \\u{HexDigit}{4} {} - \\u { /* Invalid Unicode character \\uXXXX */ validJSString = false; } - \\. { /* Skip all escaped chars. */ } - \\ { /* Line ending in '\' => continue to next line. */ - if (validJSString) { - addToken(start,zzStartRead, Token.LITERAL_CHAR); - addEndToken(INTERNAL_IN_JS_CHAR_VALID); - } - else { - addToken(start,zzStartRead, Token.ERROR_CHAR); - addEndToken(INTERNAL_IN_JS_CHAR_INVALID); - } - return firstToken; - } - \' { int type = validJSString ? Token.LITERAL_CHAR : Token.ERROR_CHAR; addToken(start,zzStartRead, type); yybegin(JAVASCRIPT); } - \n | - <> { addToken(start,zzStartRead-1, Token.ERROR_CHAR); addEndToken(INTERNAL_IN_JS); return firstToken; } -} - - { - // JavaScript MLC's. This state is essentially Java's MLC state. - [^hwf<\n\*]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_MULTILINE); start = zzMarkedPos; } - [hwf] {} - {EndScriptTag} { - yybegin(YYINITIAL, LANG_INDEX_DEFAULT); - int temp = zzStartRead; - addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); - addToken(temp,temp+1, Token.MARKUP_TAG_DELIMITER); - addToken(zzMarkedPos-7,zzMarkedPos-2, Token.MARKUP_TAG_NAME); - addToken(zzMarkedPos-1,zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER); - } - "<" {} - {JS_MLCEnd} { yybegin(JAVASCRIPT); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); } - \* {} - \n | - <> { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_IN_JS_MLC); return firstToken; } -} - - { - [^hwf<\n]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_EOL); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_EOL); start = zzMarkedPos; } - [hwf] {} - {EndScriptTag} { - int temp = zzStartRead; - addToken(start,zzStartRead-1, Token.COMMENT_EOL); - yybegin(YYINITIAL, LANG_INDEX_DEFAULT); - addToken(temp,temp+1, Token.MARKUP_TAG_DELIMITER); - addToken(zzMarkedPos-7,zzMarkedPos-2, Token.MARKUP_TAG_NAME); - addToken(zzMarkedPos-1,zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER); - } - "<" {} - \n | - <> { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addEndToken(INTERNAL_IN_JS); return firstToken; } - -} - - { - {EndStyleTag} { - yybegin(YYINITIAL, LANG_INDEX_DEFAULT); - addToken(zzStartRead,zzStartRead+1, Token.MARKUP_TAG_DELIMITER); - addToken(zzMarkedPos-6,zzMarkedPos-2, Token.MARKUP_TAG_NAME); - addToken(zzMarkedPos-1,zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER); - } - {CSS_SelectorPiece} { addToken(Token.DATA_TYPE); } - {CSS_PseudoClass} { addToken(Token.RESERVED_WORD); } - ":" { /* Unknown pseudo class */ addToken(Token.DATA_TYPE); } - {CSS_AtKeyword} { addToken(Token.REGEX); } - {CSS_Id} { addToken(Token.VARIABLE); } - "{" { addToken(Token.SEPARATOR); yybegin(CSS_PROPERTY); } - [,] { addToken(Token.IDENTIFIER); } - \" { start = zzMarkedPos-1; cssPrevState = zzLexicalState; yybegin(CSS_STRING); } - \' { start = zzMarkedPos-1; cssPrevState = zzLexicalState; yybegin(CSS_CHAR_LITERAL); } - [+>~\^$\|=] { addToken(Token.OPERATOR); } - {CSS_Separator} { addToken(Token.SEPARATOR); } - {Whitespace} { addToken(Token.WHITESPACE); } - {CSS_MlcStart} { start = zzMarkedPos-2; cssPrevState = zzLexicalState; yybegin(CSS_C_STYLE_COMMENT); } - . { /*System.out.println("CSS: " + yytext());*/ addToken(Token.IDENTIFIER); } - "\n" | - <> { addEndToken(INTERNAL_CSS); return firstToken; } -} - - { - {EndStyleTag} { - yybegin(YYINITIAL, LANG_INDEX_DEFAULT); - addToken(zzStartRead,zzStartRead+1, Token.MARKUP_TAG_DELIMITER); - addToken(zzMarkedPos-6,zzMarkedPos-2, Token.MARKUP_TAG_NAME); - addToken(zzMarkedPos-1,zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER); - } - {CSS_Property} { addToken(Token.RESERVED_WORD); } - "}" { addToken(Token.SEPARATOR); yybegin(CSS); } - ":" { addToken(Token.OPERATOR); yybegin(CSS_VALUE); } - {Whitespace} { addToken(Token.WHITESPACE); } - {CSS_MlcStart} { start = zzMarkedPos-2; cssPrevState = zzLexicalState; yybegin(CSS_C_STYLE_COMMENT); } - . { /*System.out.println("css_property: " + yytext());*/ addToken(Token.IDENTIFIER); } - "\n" | - <> { addEndToken(INTERNAL_CSS_PROPERTY); return firstToken; } -} - - { - {EndStyleTag} { - yybegin(YYINITIAL, LANG_INDEX_DEFAULT); - addToken(zzStartRead,zzStartRead+1, Token.MARKUP_TAG_DELIMITER); - addToken(zzMarkedPos-6,zzMarkedPos-2, Token.MARKUP_TAG_NAME); - addToken(zzMarkedPos-1,zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER); - } - {CSS_Value} { addToken(Token.IDENTIFIER); } - "!important" { addToken(Token.ANNOTATION); } - {CSS_Function} { int temp = zzMarkedPos - 2; - addToken(zzStartRead, temp, Token.FUNCTION); - addToken(zzMarkedPos-1, zzMarkedPos-1, Token.SEPARATOR); - zzStartRead = zzCurrentPos = zzMarkedPos; - } - {CSS_Number} { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); } - \" { start = zzMarkedPos-1; cssPrevState = zzLexicalState; yybegin(CSS_STRING); } - \' { start = zzMarkedPos-1; cssPrevState = zzLexicalState; yybegin(CSS_CHAR_LITERAL); } - ")" { /* End of a function */ addToken(Token.SEPARATOR); } - [;] { addToken(Token.OPERATOR); yybegin(CSS_PROPERTY); } - [,\.] { addToken(Token.IDENTIFIER); } - "}" { addToken(Token.SEPARATOR); yybegin(CSS); } - {Whitespace} { addToken(Token.WHITESPACE); } - {CSS_MlcStart} { start = zzMarkedPos-2; cssPrevState = zzLexicalState; yybegin(CSS_C_STYLE_COMMENT); } - . { /*System.out.println("css_value: " + yytext());*/ addToken(Token.IDENTIFIER); } - "\n" | - <> { addEndToken(INTERNAL_CSS_VALUE); return firstToken; } -} - - { - [^\n\\\"]+ {} - \\.? { /* Skip escaped chars. */ } - \" { addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); yybegin(cssPrevState); } - \n | - <> { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addEndToken(INTERNAL_CSS_STRING - cssPrevState); return firstToken; } -} - - { - [^\n\\\']+ {} - \\.? { /* Skip escaped chars. */ } - \' { addToken(start,zzStartRead, Token.LITERAL_CHAR); yybegin(cssPrevState); } - \n | - <> { addToken(start,zzStartRead-1, Token.LITERAL_CHAR); addEndToken(INTERNAL_CSS_CHAR - cssPrevState); return firstToken; } -} - - { - [^hwf\n\*]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_MULTILINE); start = zzMarkedPos; } - [hwf] {} - {CSS_MlcEnd} { addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); yybegin(cssPrevState); } - \* {} - \n | - <> { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_CSS_MLC - cssPrevState); return firstToken; } -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/HTMLTokenMaker.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/HTMLTokenMaker.java deleted file mode 100644 index b7d09bd..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/HTMLTokenMaker.java +++ /dev/null @@ -1,3049 +0,0 @@ -/* The following code was generated by JFlex 1.4.1 on 6/20/15 6:54 PM */ - -/* - * 01/24/2005 - * - * HTMLTokenMaker.java - Generates tokens for HTML syntax highlighting. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * Scanner for HTML 5 files. - * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated HTMLTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.9 - */ - -public class HTMLTokenMaker extends AbstractMarkupTokenMaker { - - /** This character denotes the end of file */ - public static final int YYEOF = -1; - - /** lexical states */ - public static final int INATTR_SINGLE_SCRIPT = 10; - public static final int JS_CHAR = 16; - public static final int CSS_STRING = 22; - public static final int JS_MLC = 17; - public static final int CSS_CHAR_LITERAL = 23; - public static final int INTAG_SCRIPT = 8; - public static final int CSS_PROPERTY = 20; - public static final int CSS_C_STYLE_COMMENT = 24; - public static final int CSS = 19; - public static final int CSS_VALUE = 21; - public static final int COMMENT = 1; - public static final int INATTR_DOUBLE_SCRIPT = 9; - public static final int PI = 2; - public static final int JAVASCRIPT = 14; - public static final int INTAG = 4; - public static final int INTAG_CHECK_TAG_NAME = 5; - public static final int INATTR_SINGLE_STYLE = 13; - public static final int DTD = 3; - public static final int JS_EOL_COMMENT = 18; - public static final int INATTR_DOUBLE_STYLE = 12; - public static final int INATTR_SINGLE = 7; - public static final int YYINITIAL = 0; - public static final int INATTR_DOUBLE = 6; - public static final int JS_STRING = 15; - public static final int INTAG_STYLE = 11; - - /** - * Translates characters to character classes - */ - private static final String ZZ_CMAP_PACKED = - "\11\0\1\4\1\2\1\0\1\1\1\33\22\0\1\4\1\51\1\7"+ - "\1\34\1\36\1\50\1\5\1\107\1\104\1\103\1\37\1\42\1\45"+ - "\1\31\1\43\1\10\1\25\6\124\1\27\2\24\1\53\1\6\1\3"+ - "\1\46\1\17\1\52\1\102\1\111\1\26\1\12\1\115\1\22\1\41"+ - "\1\117\1\123\1\14\1\125\1\120\1\21\1\114\1\113\1\112\1\15"+ - "\1\121\1\13\1\11\1\16\1\116\1\122\1\23\1\40\1\20\1\23"+ - "\1\106\1\35\1\106\1\47\1\30\1\0\1\70\1\101\1\65\1\67"+ - "\1\75\1\72\1\57\1\64\1\56\1\125\1\77\1\66\1\76\1\63"+ - "\1\61\1\74\1\121\1\60\1\71\1\62\1\32\1\100\1\110\1\105"+ - "\1\73\1\126\1\127\1\55\1\44\1\54\uff81\0"; - - /** - * Translates characters to character classes - */ - private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); - - /** - * Translates DFA states to action switch labels. - */ - private static final int [] ZZ_ACTION = zzUnpackAction(); - - private static final String ZZ_ACTION_PACKED_0 = - "\6\0\2\1\1\0\2\1\1\0\2\1\7\0\1\2"+ - "\3\0\2\2\1\3\1\4\1\5\1\6\1\1\1\7"+ - "\5\1\1\10\2\1\1\11\1\12\2\13\1\14\1\15"+ - "\1\16\1\17\1\20\1\21\1\22\1\23\2\21\2\23"+ - "\3\21\2\23\5\21\1\23\3\21\1\23\1\1\1\24"+ - "\1\1\1\25\1\15\1\26\1\27\1\30\1\31\1\32"+ - "\1\33\1\34\1\35\1\36\2\17\1\2\1\37\1\17"+ - "\2\2\1\17\2\40\1\17\1\2\1\35\2\17\1\2"+ - "\1\41\1\35\17\2\1\42\2\2\1\1\1\43\1\44"+ - "\1\45\1\1\1\46\1\47\1\50\1\1\1\51\6\1"+ - "\1\52\4\1\1\53\1\54\1\53\1\55\1\53\1\56"+ - "\1\53\1\57\1\53\1\60\1\61\1\62\1\63\2\62"+ - "\1\64\1\62\1\65\1\66\1\67\1\70\1\67\1\71"+ - "\2\2\1\40\1\2\2\67\1\72\1\73\1\74\1\75"+ - "\1\76\1\77\1\100\1\1\1\101\1\1\1\4\2\102"+ - "\1\103\1\104\1\6\5\0\1\105\31\21\1\23\1\21"+ - "\1\23\2\21\1\23\44\21\1\106\3\0\1\107\1\0"+ - "\1\110\1\17\1\35\1\2\1\17\1\111\1\40\1\111"+ - "\2\112\1\111\1\113\1\111\1\2\1\64\1\2\1\64"+ - "\17\2\1\64\34\2\1\114\1\115\1\116\1\0\1\117"+ - "\12\0\1\120\1\121\15\0\1\122\1\40\5\0\1\40"+ - "\1\0\1\76\1\123\1\124\2\102\1\0\1\125\4\0"+ - "\13\21\1\23\64\21\1\0\1\126\1\0\1\35\1\2"+ - "\1\112\1\0\2\113\1\2\1\56\23\2\1\127\40\2"+ - "\41\0\2\102\1\130\2\0\1\131\22\21\1\23\5\21"+ - "\1\23\12\21\1\0\1\132\1\35\10\2\1\133\6\2"+ - "\1\56\16\2\1\134\1\2\1\135\4\2\1\0\1\1"+ - "\3\0\1\136\3\0\1\137\6\0\1\64\15\0\2\102"+ - "\2\0\11\21\1\23\12\21\1\0\1\35\7\2\1\64"+ - "\10\2\1\64\6\2\24\0\1\102\1\140\12\21\1\0"+ - "\1\35\5\2\1\141\12\2\14\0\1\142\3\21\1\0"+ - "\10\2\10\0\1\21\1\0\3\2\2\0\1\143\4\0"+ - "\1\21\1\144\1\2\1\145\1\146\6\0\1\147"; - - private static int [] zzUnpackAction() { - int [] result = new int[805]; - int offset = 0; - offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAction(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /** - * Translates a state to a row index in the transition table - */ - private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); - - private static final String ZZ_ROWMAP_PACKED_0 = - "\0\0\0\130\0\260\0\u0108\0\u0160\0\u01b8\0\u0210\0\u0268"+ - "\0\u02c0\0\u0318\0\u0370\0\u03c8\0\u0420\0\u0478\0\u04d0\0\u0528"+ - "\0\u0580\0\u05d8\0\u0630\0\u0688\0\u06e0\0\u0738\0\u0790\0\u07e8"+ - "\0\u0840\0\u0898\0\u08f0\0\u0948\0\u09a0\0\u09f8\0\u0a50\0\u0aa8"+ - "\0\u0948\0\u0b00\0\u0b58\0\u0bb0\0\u0c08\0\u0c60\0\u0948\0\u0cb8"+ - "\0\u0d10\0\u0948\0\u0948\0\u0d68\0\u0dc0\0\u0948\0\u0e18\0\u0948"+ - "\0\u0948\0\u0948\0\u0e70\0\u0948\0\u0ec8\0\u0f20\0\u0f78\0\u0fd0"+ - "\0\u1028\0\u1080\0\u10d8\0\u1130\0\u1188\0\u11e0\0\u1238\0\u1290"+ - "\0\u12e8\0\u1340\0\u1398\0\u13f0\0\u1448\0\u14a0\0\u14f8\0\u0e70"+ - "\0\u1550\0\u0948\0\u15a8\0\u0948\0\u1600\0\u0948\0\u0948\0\u0948"+ - "\0\u0948\0\u0948\0\u0948\0\u0948\0\u1658\0\u0948\0\u16b0\0\u1708"+ - "\0\u0948\0\u0948\0\u1760\0\u17b8\0\u1810\0\u1868\0\u18c0\0\u1918"+ - "\0\u1970\0\u19c8\0\u0948\0\u1a20\0\u1a78\0\u1ad0\0\u0948\0\u1b28"+ - "\0\u1b80\0\u1bd8\0\u1c30\0\u1c88\0\u1ce0\0\u1d38\0\u1d90\0\u1de8"+ - "\0\u1e40\0\u1e98\0\u1ef0\0\u1f48\0\u1fa0\0\u1ff8\0\u2050\0\u0948"+ - "\0\u20a8\0\u2100\0\u2158\0\u0948\0\u0948\0\u21b0\0\u2208\0\u0948"+ - "\0\u21b0\0\u0948\0\u2260\0\u0948\0\u22b8\0\u2310\0\u2368\0\u23c0"+ - "\0\u2418\0\u2470\0\u0948\0\u24c8\0\u2520\0\u2578\0\u25d0\0\u0948"+ - "\0\u0948\0\u2628\0\u0948\0\u2680\0\u26d8\0\u2730\0\u2788\0\u27e0"+ - "\0\u0948\0\u0948\0\u0948\0\u0948\0\u2628\0\u2680\0\u2838\0\u2890"+ - "\0\u0948\0\u0948\0\u0948\0\u0948\0\u2628\0\u0948\0\u28e8\0\u2940"+ - "\0\u2998\0\u29f0\0\u2a48\0\u2aa0\0\u0948\0\u0948\0\u0948\0\u0948"+ - "\0\u2af8\0\u0948\0\u0948\0\u2b50\0\u0948\0\u2ba8\0\u2c00\0\u2c58"+ - "\0\u2cb0\0\u2d08\0\u0948\0\u0948\0\u2d60\0\u2db8\0\u2e10\0\u2e68"+ - "\0\u2ec0\0\u0948\0\u2f18\0\u2f70\0\u2fc8\0\u3020\0\u3078\0\u30d0"+ - "\0\u3128\0\u3180\0\u31d8\0\u3230\0\u3288\0\u32e0\0\u3338\0\u3390"+ - "\0\u33e8\0\u3440\0\u3498\0\u34f0\0\u3548\0\u35a0\0\u35f8\0\u3650"+ - "\0\u36a8\0\u3700\0\u3758\0\u37b0\0\u3808\0\u3860\0\u38b8\0\u3910"+ - "\0\u3968\0\u39c0\0\u3a18\0\u3a70\0\u3ac8\0\u3b20\0\u3b78\0\u3bd0"+ - "\0\u3c28\0\u3c80\0\u3cd8\0\u3d30\0\u3d88\0\u3de0\0\u3e38\0\u3e90"+ - "\0\u3ee8\0\u3f40\0\u3f98\0\u3ff0\0\u4048\0\u40a0\0\u40f8\0\u4150"+ - "\0\u41a8\0\u4200\0\u4258\0\u42b0\0\u4308\0\u4360\0\u43b8\0\u4410"+ - "\0\u4468\0\u44c0\0\u4518\0\u4570\0\u45c8\0\u0948\0\u1a20\0\u4620"+ - "\0\u4678\0\u0948\0\u46d0\0\u4728\0\u4678\0\u4780\0\u47d8\0\u4830"+ - "\0\u4888\0\u4888\0\u48e0\0\u4888\0\u4938\0\u4990\0\u49e8\0\u4a40"+ - "\0\u4a98\0\u4af0\0\u4b48\0\u17b8\0\u4ba0\0\u4bf8\0\u4c50\0\u4ca8"+ - "\0\u4d00\0\u4d58\0\u4db0\0\u4e08\0\u4e60\0\u4eb8\0\u4f10\0\u4f68"+ - "\0\u4fc0\0\u5018\0\u5070\0\u50c8\0\u5120\0\u5178\0\u51d0\0\u5228"+ - "\0\u5280\0\u52d8\0\u5330\0\u5388\0\u53e0\0\u5438\0\u5490\0\u54e8"+ - "\0\u5540\0\u5598\0\u55f0\0\u5648\0\u56a0\0\u56f8\0\u5750\0\u57a8"+ - "\0\u5800\0\u5858\0\u58b0\0\u5908\0\u5960\0\u59b8\0\u5a10\0\u5a68"+ - "\0\u0948\0\u5ac0\0\u5b18\0\u5b70\0\u0948\0\u5bc8\0\u5c20\0\u5c78"+ - "\0\u5cd0\0\u5d28\0\u5d80\0\u5dd8\0\u5e30\0\u5e88\0\u5ee0\0\u0948"+ - "\0\u5f38\0\u5f90\0\u5fe8\0\u6040\0\u6098\0\u60f0\0\u6148\0\u61a0"+ - "\0\u61f8\0\u6250\0\u62a8\0\u6300\0\u6358\0\u63b0\0\u6408\0\u0948"+ - "\0\u6460\0\u64b8\0\u6510\0\u6568\0\u65c0\0\u2a48\0\u6618\0\u0948"+ - "\0\u0948\0\u2c00\0\u6670\0\u66c8\0\u6720\0\u0948\0\u6778\0\u67d0"+ - "\0\u6828\0\u6880\0\u68d8\0\u6930\0\u6988\0\u69e0\0\u6a38\0\u6a90"+ - "\0\u6ae8\0\u6b40\0\u6b98\0\u6bf0\0\u6c48\0\u6ca0\0\u6cf8\0\u6d50"+ - "\0\u6da8\0\u6e00\0\u6e58\0\u6eb0\0\u6f08\0\u6f60\0\u6fb8\0\u7010"+ - "\0\u7068\0\u70c0\0\u7118\0\u7170\0\u71c8\0\u7220\0\u7278\0\u72d0"+ - "\0\u3860\0\u7328\0\u7380\0\u73d8\0\u7430\0\u7488\0\u74e0\0\u7538"+ - "\0\u7590\0\u75e8\0\u7640\0\u7698\0\u76f0\0\u7748\0\u77a0\0\u77f8"+ - "\0\u11e0\0\u7850\0\u78a8\0\u7900\0\u7958\0\u79b0\0\u7a08\0\u7a60"+ - "\0\u7ab8\0\u7b10\0\u7b68\0\u7bc0\0\u7c18\0\u7c70\0\u7cc8\0\u7d20"+ - "\0\u7d78\0\u7dd0\0\u7e28\0\u7e80\0\u7ed8\0\u7f30\0\u7f88\0\u7fe0"+ - "\0\u8038\0\u4888\0\u8090\0\u80e8\0\u8140\0\u8198\0\u81f0\0\u8248"+ - "\0\u82a0\0\u82f8\0\u8350\0\u83a8\0\u8400\0\u8458\0\u84b0\0\u8508"+ - "\0\u8560\0\u85b8\0\u8610\0\u8668\0\u86c0\0\u8718\0\u8770\0\u87c8"+ - "\0\u17b8\0\u8820\0\u8878\0\u88d0\0\u8928\0\u8980\0\u89d8\0\u8a30"+ - "\0\u8a88\0\u8ae0\0\u8b38\0\u8b90\0\u8be8\0\u8c40\0\u8c98\0\u8cf0"+ - "\0\u8d48\0\u8da0\0\u8df8\0\u8e50\0\u8ea8\0\u8f00\0\u8f58\0\u8fb0"+ - "\0\u9008\0\u9060\0\u90b8\0\u9110\0\u9168\0\u91c0\0\u9218\0\u9270"+ - "\0\u92c8\0\u9320\0\u9378\0\u93d0\0\u9428\0\u9480\0\u94d8\0\u9530"+ - "\0\u9588\0\u95e0\0\u9638\0\u9690\0\u96e8\0\u9740\0\u9798\0\u97f0"+ - "\0\u9848\0\u98a0\0\u98f8\0\u9950\0\u99a8\0\u9a00\0\u9a58\0\u9ab0"+ - "\0\u9b08\0\u9b60\0\u9bb8\0\u9c10\0\u9c68\0\u9cc0\0\u9d18\0\u9d70"+ - "\0\u9dc8\0\u9e20\0\u9e78\0\u9ed0\0\u0948\0\u9f28\0\u9f80\0\u9fd8"+ - "\0\ua030\0\ua088\0\ua0e0\0\ua138\0\ua190\0\ua1e8\0\ua240\0\ua298"+ - "\0\ua2f0\0\ua348\0\ua3a0\0\ua3f8\0\ua450\0\ua4a8\0\ua500\0\ua558"+ - "\0\ua5b0\0\ua608\0\ua660\0\ua6b8\0\ua710\0\ua768\0\u3968\0\ua7c0"+ - "\0\u71c8\0\ua818\0\ua870\0\ua8c8\0\ua920\0\ua978\0\ua9d0\0\uaa28"+ - "\0\uaa80\0\uaad8\0\uab30\0\uab88\0\u0948\0\uabe0\0\uac38\0\uac90"+ - "\0\uace8\0\uad40\0\uad98\0\uadf0\0\uae48\0\uaea0\0\u17b8\0\uaef8"+ - "\0\uaf50\0\uafa8\0\ub000\0\ub058\0\ub0b0\0\u17b8\0\ub108\0\ub160"+ - "\0\ub1b8\0\ub210\0\ub268\0\ub2c0\0\ub318\0\ub370\0\ub3c8\0\ub420"+ - "\0\ub478\0\ub4d0\0\ub528\0\ub580\0\u17b8\0\ub5d8\0\u17b8\0\ub630"+ - "\0\ub688\0\ub6e0\0\ub738\0\u5b18\0\u0948\0\ub790\0\ub7e8\0\ub840"+ - "\0\ub898\0\ub8f0\0\ub948\0\ub9a0\0\ub9f8\0\uba50\0\ubaa8\0\ubb00"+ - "\0\ubb58\0\ubbb0\0\ubc08\0\u0948\0\ubc60\0\ubcb8\0\ubd10\0\ubd68"+ - "\0\ubdc0\0\ube18\0\ube70\0\ubec8\0\ubf20\0\ubf78\0\ubfd0\0\uc028"+ - "\0\uc080\0\uc0d8\0\uc130\0\uc188\0\u9fd8\0\uc1e0\0\uc238\0\uc290"+ - "\0\uc2e8\0\uc340\0\uc398\0\uc3f0\0\uc448\0\uc4a0\0\uc4f8\0\uc4f8"+ - "\0\uc550\0\uc5a8\0\uc600\0\uc658\0\uc6b0\0\uc708\0\uc760\0\uc7b8"+ - "\0\uc810\0\uc868\0\uc8c0\0\uc918\0\uc970\0\uc9c8\0\uca20\0\uca78"+ - "\0\ucad0\0\ucb28\0\u8458\0\ucb80\0\ucbd8\0\ucc30\0\ucc88\0\ucce0"+ - "\0\ucd38\0\ucd90\0\ucde8\0\uce40\0\uce98\0\ucef0\0\ucf48\0\ucfa0"+ - "\0\ucff8\0\ud050\0\ud0a8\0\ud100\0\ub898\0\ud158\0\ud1b0\0\ub9f8"+ - "\0\ud208\0\ud260\0\ud2b8\0\ud310\0\ud368\0\ud3c0\0\ud418\0\ud470"+ - "\0\ud4c8\0\ud520\0\ud578\0\ud5d0\0\ud628\0\ud680\0\ud6d8\0\u2cb0"+ - "\0\ud730\0\ud788\0\ud7e0\0\ud838\0\ud890\0\ud8e8\0\ud940\0\ud998"+ - "\0\ud9f0\0\uda48\0\udaa0\0\udaf8\0\udb50\0\udba8\0\udc00\0\udc58"+ - "\0\udcb0\0\u17b8\0\udd08\0\udd60\0\uddb8\0\ude10\0\ude68\0\udec0"+ - "\0\udf18\0\udf70\0\udfc8\0\ue020\0\ue078\0\ue0d0\0\ue128\0\ue180"+ - "\0\ue1d8\0\ue230\0\ue288\0\ue2e0\0\ue338\0\ue390\0\ue3e8\0\ue440"+ - "\0\u2cb0\0\ue498\0\ue4f0\0\ue548\0\ue5a0\0\ue5f8\0\ue650\0\ue6a8"+ - "\0\ue700\0\ue758\0\ue7b0\0\ue808\0\ue860\0\ue8b8\0\ue910\0\ue968"+ - "\0\ue9c0\0\uea18\0\uea70\0\ueac8\0\ueb20\0\ueb78\0\uebd0\0\uec28"+ - "\0\uec80\0\uecd8\0\ued30\0\ued88\0\u0948\0\uede0\0\uee38\0\uee90"+ - "\0\ueee8\0\uef40\0\u0948\0\uef98\0\u0948\0\u0948\0\ueff0\0\uf048"+ - "\0\uf0a0\0\uf0f8\0\uf150\0\uf1a8\0\u0948"; - - private static int [] zzUnpackRowMap() { - int [] result = new int[805]; - int offset = 0; - offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackRowMap(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int high = packed.charAt(i++) << 16; - result[j++] = high | packed.charAt(i++); - } - return j; - } - - /** - * The transition table of the DFA - */ - private static final int [] ZZ_TRANS = zzUnpackTrans(); - - private static final String ZZ_TRANS_PACKED_0 = - "\1\32\1\33\1\34\1\35\1\36\1\37\122\32\2\40"+ - "\1\41\26\40\1\42\32\40\1\43\5\40\1\44\15\40"+ - "\1\45\17\40\2\46\1\47\47\46\1\50\55\46\2\51"+ - "\1\52\14\51\1\53\110\51\1\54\1\55\1\0\1\54"+ - "\1\36\2\54\1\56\1\57\6\54\1\60\26\54\1\61"+ - "\40\54\1\62\20\54\2\63\1\0\1\63\1\64\2\63"+ - "\2\64\1\65\1\66\1\67\1\70\1\71\1\72\1\64"+ - "\1\63\1\73\1\74\3\63\1\75\3\63\1\76\6\63"+ - "\1\77\4\63\1\64\7\63\1\70\1\63\1\67\1\100"+ - "\1\72\1\101\1\102\1\66\1\73\1\103\1\104\1\65"+ - "\1\77\1\63\1\71\1\74\1\105\1\106\1\107\1\75"+ - "\5\63\1\64\1\63\1\104\1\100\1\101\1\105\1\103"+ - "\1\76\1\63\1\106\1\110\1\107\1\102\4\63\7\111"+ - "\1\112\120\111\107\113\1\112\20\113\1\54\1\55\1\0"+ - "\1\54\1\36\2\54\1\114\1\115\6\54\1\116\26\54"+ - "\1\61\40\54\1\117\20\54\7\111\1\120\120\111\107\113"+ - "\1\120\20\113\1\54\1\55\1\0\1\54\1\36\2\54"+ - "\1\121\1\115\6\54\1\122\26\54\1\61\40\54\1\123"+ - "\20\54\7\111\1\124\120\111\107\113\1\124\20\113\1\125"+ - "\1\36\1\126\1\127\1\36\1\130\1\131\1\132\1\133"+ - "\3\134\1\135\2\134\1\136\4\134\1\137\1\140\1\134"+ - "\1\137\1\134\1\141\1\142\1\143\2\125\1\134\1\144"+ - "\2\134\1\145\1\146\1\147\1\131\4\144\3\61\1\150"+ - "\1\151\1\152\1\153\1\134\1\154\1\155\1\134\1\156"+ - "\1\157\1\160\1\161\1\162\1\163\1\134\1\164\1\165"+ - "\2\134\1\166\1\167\1\125\2\147\1\134\1\147\1\170"+ - "\1\171\2\134\1\172\10\134\1\137\2\134\1\147\2\173"+ - "\1\174\4\173\1\175\25\173\1\176\72\173\2\177\1\200"+ - "\32\177\1\201\51\177\1\202\20\177\2\203\1\204\1\205"+ - "\33\203\1\206\24\203\1\207\5\203\1\210\15\203\1\211"+ - "\17\203\2\212\1\213\1\214\60\212\1\215\5\212\1\216"+ - "\15\212\1\217\17\212\1\220\1\36\1\221\1\222\1\36"+ - "\1\220\1\147\1\223\1\224\6\225\1\61\4\225\2\220"+ - "\1\225\1\220\3\225\1\220\1\226\1\220\1\61\3\225"+ - "\1\61\1\225\1\220\1\131\2\61\3\220\1\227\2\61"+ - "\24\225\1\230\2\147\1\225\1\147\1\231\14\225\1\220"+ - "\2\225\1\232\1\233\1\36\1\234\1\235\1\36\3\233"+ - "\1\236\6\237\1\233\4\237\2\233\1\237\1\233\3\237"+ - "\4\233\1\240\2\237\2\233\1\241\6\233\1\242\2\233"+ - "\24\237\3\233\1\237\2\233\14\237\1\233\2\237\1\233"+ - "\1\243\1\36\1\244\1\245\1\36\1\243\1\246\1\223"+ - "\1\247\6\250\1\243\4\250\2\251\1\250\1\251\1\250"+ - "\1\252\1\250\1\243\1\253\1\250\2\243\2\250\1\243"+ - "\1\131\1\241\1\131\3\243\1\254\4\243\24\250\1\243"+ - "\1\255\1\256\1\250\1\243\1\231\14\250\1\251\2\250"+ - "\1\243\2\173\1\257\4\173\1\260\25\173\1\261\72\173"+ - "\2\177\1\262\32\177\1\261\51\177\1\263\20\177\2\264"+ - "\1\265\34\264\1\266\24\264\1\207\5\264\1\210\15\264"+ - "\1\211\17\264\2\32\4\0\123\32\1\33\2\0\1\36"+ - "\1\0\122\32\140\0\1\267\1\270\5\271\1\0\10\271"+ - "\2\0\1\271\5\0\2\271\7\0\1\272\1\273\3\0"+ - "\13\271\1\270\10\271\3\0\1\271\2\0\17\271\2\0"+ - "\1\36\2\0\1\36\123\0\4\37\1\0\1\37\1\274"+ - "\121\37\2\40\1\0\26\40\1\0\32\40\1\0\5\40"+ - "\1\0\15\40\1\0\17\40\31\0\1\275\160\0\1\276"+ - "\123\0\1\277\3\0\1\300\155\0\1\301\17\0\2\46"+ - "\1\0\47\46\1\0\55\46\17\0\1\302\110\0\2\51"+ - "\1\0\14\51\1\0\110\51\2\54\1\0\1\54\1\0"+ - "\2\54\2\0\6\54\1\0\26\54\1\0\40\54\1\0"+ - "\21\54\1\55\1\0\1\54\1\36\2\54\2\0\6\54"+ - "\1\0\26\54\1\0\40\54\1\0\20\54\17\0\1\60"+ - "\110\0\2\63\1\0\1\63\1\0\2\63\2\0\6\63"+ - "\1\0\26\63\1\0\40\63\1\0\22\63\1\0\1\63"+ - "\1\0\2\63\2\0\1\63\1\303\2\63\1\304\1\305"+ - "\1\0\2\63\1\306\7\63\1\307\13\63\1\0\12\63"+ - "\1\310\1\305\2\63\1\303\2\63\1\311\3\63\1\304"+ - "\1\306\1\312\10\63\1\0\1\63\1\311\1\310\1\63"+ - "\1\312\1\63\1\307\13\63\1\0\1\63\1\0\2\63"+ - "\2\0\3\63\1\313\2\63\1\0\2\63\1\314\23\63"+ - "\1\0\7\63\1\313\2\63\1\315\6\63\1\316\4\63"+ - "\1\314\11\63\1\0\1\63\1\316\1\315\17\63\1\0"+ - "\1\63\1\0\2\63\2\0\6\63\1\0\12\63\1\317"+ - "\13\63\1\0\40\63\1\0\6\63\1\317\13\63\1\0"+ - "\1\63\1\0\2\63\2\0\1\320\5\63\1\0\1\63"+ - "\1\321\17\63\1\322\4\63\1\0\14\63\1\323\2\63"+ - "\1\321\2\63\1\320\1\322\3\63\1\324\10\63\1\0"+ - "\3\63\1\323\1\324\15\63\1\0\1\63\1\0\2\63"+ - "\2\0\2\63\1\325\3\63\1\0\1\63\1\326\24\63"+ - "\1\0\11\63\1\325\5\63\1\326\1\63\1\327\16\63"+ - "\1\0\1\63\1\327\20\63\1\0\1\63\1\0\2\63"+ - "\2\0\2\63\1\110\1\330\1\63\1\110\1\0\2\63"+ - "\1\331\3\63\1\332\12\63\1\333\4\63\1\0\7\63"+ - "\1\330\1\63\1\110\1\63\1\110\1\63\1\334\2\63"+ - "\1\110\1\335\1\63\1\333\2\63\1\331\3\63\1\332"+ - "\5\63\1\0\1\63\1\335\3\63\1\110\5\63\1\334"+ - "\6\63\1\0\1\63\1\0\2\63\2\0\3\63\1\336"+ - "\2\63\1\0\2\63\1\337\23\63\1\0\7\63\1\336"+ - "\11\63\1\340\4\63\1\337\11\63\1\0\1\63\1\340"+ - "\20\63\1\0\1\63\1\0\2\63\2\0\6\63\1\0"+ - "\26\63\1\0\27\63\1\341\1\63\1\342\6\63\1\0"+ - "\4\63\1\341\5\63\1\342\7\63\1\0\1\63\1\0"+ - "\2\63\2\0\2\63\1\110\1\324\2\63\1\0\1\63"+ - "\1\343\10\63\1\344\13\63\1\0\7\63\1\324\1\345"+ - "\1\110\1\346\4\63\1\343\1\347\1\350\16\63\1\0"+ - "\1\63\1\350\1\346\2\63\1\347\1\344\1\345\12\63"+ - "\1\0\1\63\1\0\2\63\2\0\6\63\1\0\1\63"+ - "\1\110\24\63\1\0\17\63\1\110\20\63\1\0\22\63"+ - "\1\0\1\63\1\0\2\63\2\0\2\63\1\351\1\352"+ - "\2\63\1\0\26\63\1\0\7\63\1\352\1\63\1\351"+ - "\1\353\25\63\1\0\2\63\1\353\17\63\1\0\1\63"+ - "\1\0\2\63\2\0\4\63\1\354\1\63\1\0\1\63"+ - "\1\110\4\63\1\355\3\63\1\356\13\63\1\0\17\63"+ - "\1\110\5\63\1\354\4\63\1\355\5\63\1\0\6\63"+ - "\1\356\13\63\1\0\1\63\1\0\2\63\2\0\6\63"+ - "\1\0\2\63\1\357\23\63\1\0\12\63\1\360\6\63"+ - "\1\361\4\63\1\357\11\63\1\0\1\63\1\361\1\360"+ - "\17\63\1\0\1\63\1\0\2\63\2\0\2\63\1\110"+ - "\2\63\1\362\1\0\2\63\1\363\23\63\1\0\11\63"+ - "\1\110\1\63\1\362\12\63\1\363\11\63\1\0\14\63"+ - "\1\110\5\63\1\0\1\63\1\0\2\63\2\0\3\63"+ - "\1\364\1\63\1\110\1\0\1\63\1\110\1\365\16\63"+ - "\1\366\4\63\1\0\7\63\1\364\3\63\1\110\3\63"+ - "\2\110\1\367\1\63\1\366\2\63\1\365\11\63\1\0"+ - "\1\63\1\367\3\63\1\110\14\63\1\0\1\63\1\0"+ - "\2\63\2\0\1\370\1\371\1\372\1\63\1\373\1\63"+ - "\1\0\6\63\1\374\3\63\1\375\13\63\1\0\11\63"+ - "\1\372\4\63\1\371\1\63\1\376\1\63\1\370\2\63"+ - "\1\373\4\63\1\374\5\63\1\0\5\63\1\376\1\375"+ - "\13\63\1\0\1\63\1\0\2\63\2\0\6\63\1\0"+ - "\2\63\1\377\7\63\1\u0100\13\63\1\0\21\63\1\u0101"+ - "\4\63\1\377\11\63\1\0\1\63\1\u0101\4\63\1\u0100"+ - "\13\63\1\0\1\63\1\0\2\63\2\0\6\63\1\0"+ - "\2\63\1\u0102\3\63\1\u0103\17\63\1\0\26\63\1\u0102"+ - "\3\63\1\u0103\5\63\1\0\22\63\1\0\1\63\1\0"+ - "\2\63\2\0\3\63\1\u0104\2\63\1\0\26\63\1\0"+ - "\7\63\1\u0104\11\63\1\u0105\16\63\1\0\1\63\1\u0105"+ - "\16\63\7\111\1\0\120\111\107\113\1\0\20\113\17\0"+ - "\1\u0106\110\0\1\125\10\0\6\125\1\0\11\125\1\0"+ - "\1\125\1\0\3\125\1\0\2\125\14\0\25\125\2\0"+ - "\1\125\2\0\17\125\4\0\1\u0107\4\0\1\u0108\35\0"+ - "\1\61\66\0\1\61\40\0\1\61\61\0\10\u0109\1\u010a"+ - "\24\u0109\1\u010b\1\u0109\1\u010c\6\u0109\1\u010d\61\u0109\1\125"+ - "\10\0\6\134\1\0\11\134\1\0\1\134\1\0\1\125"+ - "\1\u010e\1\134\1\0\2\134\14\0\24\134\1\125\2\0"+ - "\1\134\2\0\17\134\1\0\1\125\10\0\6\134\1\0"+ - "\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0"+ - "\2\134\14\0\5\134\1\u010f\16\134\1\125\2\0\1\134"+ - "\2\0\17\134\20\0\1\u0110\26\0\1\61\61\0\1\u0111"+ - "\10\0\6\u0111\1\0\1\u0111\1\u0112\1\u0113\1\u0111\2\137"+ - "\1\u0111\1\137\1\u0111\1\0\1\u0111\1\0\3\u0111\1\0"+ - "\1\u0111\1\u0114\1\0\1\u0115\12\0\10\u0111\1\u0112\1\u0114"+ - "\2\u0111\1\u0114\2\u0111\1\u0113\5\u0111\2\0\1\u0111\2\0"+ - "\5\u0111\1\u0114\6\u0111\1\137\2\u0111\1\0\1\u0111\10\0"+ - "\6\u0111\1\0\1\u0111\1\u0112\1\u0113\1\u0111\1\u0116\1\u0117"+ - "\1\u0111\1\u0117\1\u0111\1\0\1\u0111\1\0\3\u0111\1\0"+ - "\1\u0118\1\u0114\1\0\1\u0115\12\0\10\u0111\1\u0112\1\u0114"+ - "\2\u0111\1\u0114\2\u0111\1\u0113\5\u0111\2\0\1\u0118\2\0"+ - "\5\u0111\1\u0114\6\u0111\1\u0117\2\u0111\32\0\1\61\14\0"+ - "\1\61\61\0\1\125\10\0\6\134\1\0\11\134\1\0"+ - "\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0"+ - "\5\134\1\u0119\16\134\1\125\2\0\1\134\2\0\17\134"+ - "\47\0\1\61\123\0\1\61\3\0\1\61\105\0\2\u0115"+ - "\1\0\1\u0115\74\0\1\u0115\51\0\1\61\6\0\1\61"+ - "\52\0\1\125\10\0\6\134\1\0\11\134\1\0\1\134"+ - "\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0\5\134"+ - "\1\u011a\5\134\1\u011b\1\u011c\3\134\1\u011d\3\134\1\125"+ - "\2\0\1\134\2\0\17\134\1\0\1\125\10\0\6\134"+ - "\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134"+ - "\1\0\2\134\14\0\3\134\1\u011e\20\134\1\125\2\0"+ - "\1\134\2\0\17\134\1\0\1\125\10\0\6\134\1\0"+ - "\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0"+ - "\2\134\14\0\17\134\1\u011f\4\134\1\125\2\0\1\134"+ - "\2\0\17\134\1\0\1\125\10\0\6\134\1\0\11\134"+ - "\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134"+ - "\14\0\2\134\1\u0120\3\134\1\u0121\6\134\1\u0122\6\134"+ - "\1\125\2\0\1\134\2\0\17\134\1\0\1\125\10\0"+ - "\6\134\1\0\11\134\1\0\1\u0123\1\0\1\125\1\u010e"+ - "\1\134\1\0\2\134\14\0\12\134\1\u0124\4\134\1\u0125"+ - "\4\134\1\125\2\0\1\134\2\0\17\134\1\0\1\125"+ - "\10\0\6\134\1\0\11\134\1\0\1\134\1\0\1\125"+ - "\1\u010e\1\134\1\0\2\134\14\0\3\134\1\u0126\2\134"+ - "\1\u0127\1\134\1\u0128\1\134\1\u0129\11\134\1\125\2\0"+ - "\1\134\2\0\17\134\1\0\1\125\10\0\6\134\1\0"+ - "\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0"+ - "\2\134\14\0\3\134\1\u012a\13\134\1\u012b\4\134\1\125"+ - "\2\0\1\134\2\0\17\134\1\0\1\125\10\0\6\134"+ - "\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134"+ - "\1\0\2\134\14\0\3\134\1\u012c\13\134\1\u012d\4\134"+ - "\1\125\2\0\1\134\2\0\17\134\1\0\1\125\10\0"+ - "\6\134\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e"+ - "\1\134\1\0\2\134\14\0\23\134\1\u012e\1\125\2\0"+ - "\1\134\2\0\17\134\1\0\1\125\10\0\6\134\1\0"+ - "\11\134\1\0\1\u012f\1\0\1\125\1\u010e\1\134\1\0"+ - "\2\134\14\0\4\134\1\u0130\1\134\1\u0131\6\134\1\u0132"+ - "\6\134\1\125\2\0\1\134\2\0\1\u0133\16\134\1\0"+ - "\1\125\10\0\6\134\1\0\11\134\1\0\1\u0134\1\0"+ - "\1\125\1\u010e\1\134\1\0\2\134\14\0\1\u0135\2\134"+ - "\1\u0136\4\134\1\u0137\1\134\1\u0138\11\134\1\125\2\0"+ - "\1\134\2\0\17\134\1\0\1\125\10\0\6\134\1\0"+ - "\11\134\1\0\1\u0139\1\0\1\125\1\u010e\1\134\1\0"+ - "\2\134\14\0\2\134\1\u013a\7\134\1\u013b\11\134\1\125"+ - "\2\0\1\134\2\0\17\134\1\0\1\125\10\0\6\134"+ - "\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134"+ - "\1\0\2\134\14\0\5\134\1\u013c\2\134\1\u013d\1\134"+ - "\1\u013e\1\u013f\6\134\1\u0140\1\134\1\125\2\0\1\u0141"+ - "\2\0\17\134\1\0\1\125\10\0\6\134\1\0\11\134"+ - "\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134"+ - "\14\0\3\134\1\u0142\6\134\1\u0136\11\134\1\125\2\0"+ - "\1\134\2\0\17\134\1\0\1\125\10\0\6\134\1\0"+ - "\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0"+ - "\2\134\14\0\2\134\1\u0143\1\u0144\11\134\1\u0145\6\134"+ - "\1\125\2\0\1\134\2\0\17\134\1\0\1\125\10\0"+ - "\6\134\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e"+ - "\1\134\1\0\2\134\14\0\1\u0146\5\134\1\u0147\15\134"+ - "\1\125\2\0\1\134\2\0\17\134\1\0\1\125\10\0"+ - "\6\134\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e"+ - "\1\134\1\0\2\134\14\0\12\134\1\u0148\11\134\1\125"+ - "\2\0\1\134\2\0\17\134\1\0\2\173\1\0\4\173"+ - "\1\0\25\173\1\0\72\173\2\u0149\1\0\27\u0149\1\u014a"+ - "\52\u0149\1\u014b\22\u0149\2\177\1\0\32\177\1\0\51\177"+ - "\1\0\20\177\2\203\2\0\33\203\1\0\24\203\1\0"+ - "\5\203\1\0\15\203\1\0\17\203\10\0\1\u014c\127\0"+ - "\1\u014d\201\0\1\u014e\123\0\1\u014f\3\0\1\u0150\155\0"+ - "\1\u0151\17\0\2\212\2\0\60\212\1\0\5\212\1\0"+ - "\15\212\1\0\17\212\10\0\1\u0152\201\0\1\u0153\123\0"+ - "\1\u0154\3\0\1\u0155\155\0\1\u0156\27\0\1\u0157\156\0"+ - "\1\u0158\101\0\6\225\1\0\13\225\5\0\2\225\1\0"+ - "\1\225\12\0\24\225\3\0\1\225\2\0\17\225\12\0"+ - "\6\u0159\1\0\4\u0159\2\0\1\u0159\1\0\3\u0159\4\0"+ - "\3\u0159\1\0\1\u0159\12\0\24\u0159\3\0\1\u0159\2\0"+ - "\14\u0159\1\0\2\u0159\54\0\1\u015a\4\0\1\u015b\1\u015c"+ - "\1\u015d\1\u015e\1\u015f\1\u0160\1\u0161\1\u0162\1\u0163\1\0"+ - "\1\u0164\2\0\1\u0165\2\0\1\u0166\40\0\6\u0167\1\0"+ - "\4\u0167\2\0\1\u0167\1\0\3\u0167\4\0\3\u0167\1\0"+ - "\1\u0167\12\0\24\u0167\3\0\1\u0167\2\0\14\u0167\1\0"+ - "\2\u0167\12\0\6\237\1\0\13\237\5\0\2\237\14\0"+ - "\24\237\3\0\1\237\2\0\17\237\12\0\6\237\1\0"+ - "\4\237\2\0\1\237\1\0\3\237\5\0\2\237\14\0"+ - "\24\237\3\0\1\237\2\0\14\237\1\0\2\237\11\0"+ - "\7\250\1\0\4\250\2\0\1\250\1\0\3\250\2\0"+ - "\1\250\1\0\1\u0158\2\250\14\0\24\250\2\0\1\256"+ - "\1\250\2\0\14\250\1\0\2\250\11\0\7\250\1\0"+ - "\4\250\2\0\1\250\1\0\3\250\2\0\1\250\2\0"+ - "\2\250\14\0\24\250\2\0\1\256\1\250\2\0\14\250"+ - "\1\0\2\250\25\0\2\251\1\0\1\251\13\0\1\251"+ - "\4\0\1\u0168\5\0\1\u0169\6\0\1\u016a\3\0\1\u0168"+ - "\2\0\1\u016b\1\u016c\1\u016d\25\0\1\251\13\0\7\250"+ - "\1\0\4\250\2\251\1\250\1\251\3\250\2\0\1\250"+ - "\2\0\2\250\14\0\24\250\2\0\1\256\1\250\2\0"+ - "\14\250\1\251\2\250\13\0\1\u016e\7\0\1\u016e\1\0"+ - "\4\u016e\11\0\1\u016e\23\0\1\u016e\1\0\2\u016e\1\0"+ - "\1\u016e\2\0\1\u016e\3\0\1\u016e\7\0\1\u016e\3\0"+ - "\1\u016e\6\0\1\u016e\61\0\1\u016f\51\0\2\u0170\1\0"+ - "\125\u0170\2\264\1\0\34\264\1\0\24\264\1\0\5\264"+ - "\1\0\15\264\1\0\17\264\10\0\1\u0171\130\0\6\u0172"+ - "\1\0\10\u0172\2\0\1\u0172\5\0\2\u0172\14\0\24\u0172"+ - "\3\0\1\u0172\2\0\17\u0172\12\0\1\271\1\u0173\3\271"+ - "\1\u0174\1\0\10\271\2\0\1\271\5\0\2\271\14\0"+ - "\4\271\1\u0174\2\271\1\u0173\14\271\3\0\1\271\2\0"+ - "\17\271\12\0\6\271\1\0\10\271\2\0\1\271\5\0"+ - "\2\271\14\0\24\271\3\0\1\271\2\0\17\271\32\0"+ - "\1\u0175\115\0\1\u0176\172\0\1\u0177\133\0\1\u0178\135\0"+ - "\1\u0179\143\0\1\u017a\17\0\2\63\1\0\1\63\1\0"+ - "\2\63\2\0\2\63\1\u017b\3\63\1\0\26\63\1\0"+ - "\11\63\1\u017b\26\63\1\0\22\63\1\0\1\63\1\0"+ - "\2\63\2\0\6\63\1\0\26\63\1\0\21\63\1\u017c"+ - "\16\63\1\0\1\63\1\u017c\20\63\1\0\1\63\1\0"+ - "\2\63\2\0\2\63\1\u017d\3\63\1\0\1\317\25\63"+ - "\1\0\11\63\1\u017d\12\63\1\317\13\63\1\0\22\63"+ - "\1\0\1\63\1\0\2\63\2\0\1\63\1\u017e\1\u017f"+ - "\3\63\1\0\1\63\1\u0180\24\63\1\0\11\63\1\u017f"+ - "\4\63\1\u017e\1\u0180\20\63\1\0\22\63\1\0\1\63"+ - "\1\0\2\63\2\0\4\63\1\110\1\63\1\0\6\63"+ - "\1\110\17\63\1\0\25\63\1\110\4\63\1\110\5\63"+ - "\1\0\22\63\1\0\1\63\1\0\2\63\2\0\6\63"+ - "\1\0\12\63\1\u0181\13\63\1\0\40\63\1\0\6\63"+ - "\1\u0181\13\63\1\0\1\63\1\0\2\63\2\0\6\63"+ - "\1\0\26\63\1\0\27\63\1\u0182\10\63\1\0\4\63"+ - "\1\u0182\15\63\1\0\1\63\1\0\2\63\2\0\6\63"+ - "\1\0\26\63\1\0\21\63\1\u0183\16\63\1\0\1\63"+ - "\1\u0183\20\63\1\0\1\63\1\0\2\63\2\0\5\63"+ - "\1\u0184\1\0\26\63\1\0\13\63\1\u0184\24\63\1\0"+ - "\22\63\1\0\1\63\1\0\2\63\2\0\6\63\1\0"+ - "\26\63\1\0\14\63\1\u0185\23\63\1\0\3\63\1\u0185"+ - "\16\63\1\0\1\63\1\0\2\63\2\0\6\63\1\0"+ - "\1\63\1\u0186\24\63\1\0\17\63\1\u0186\1\u0184\6\63"+ - "\1\u0187\10\63\1\0\4\63\1\u0187\1\u0184\14\63\1\0"+ - "\1\63\1\0\2\63\2\0\4\63\1\u017e\1\63\1\0"+ - "\26\63\1\0\14\63\1\u0188\10\63\1\u017e\12\63\1\0"+ - "\3\63\1\u0188\16\63\1\0\1\63\1\0\2\63\2\0"+ - "\6\63\1\0\1\63\1\u0184\24\63\1\0\17\63\1\u0184"+ - "\20\63\1\0\22\63\1\0\1\63\1\0\2\63\2\0"+ - "\3\63\1\u0189\2\63\1\0\26\63\1\0\7\63\1\u0189"+ - "\30\63\1\0\22\63\1\0\1\63\1\0\2\63\2\0"+ - "\6\63\1\0\26\63\1\0\21\63\1\u018a\16\63\1\0"+ - "\1\63\1\u018a\20\63\1\0\1\63\1\0\2\63\2\0"+ - "\2\63\1\u018b\3\63\1\0\26\63\1\0\11\63\1\u018b"+ - "\26\63\1\0\22\63\1\0\1\63\1\0\2\63\2\0"+ - "\1\110\3\63\1\u018c\1\63\1\0\26\63\1\0\22\63"+ - "\1\110\2\63\1\u018c\12\63\1\0\22\63\1\0\1\63"+ - "\1\0\2\63\2\0\6\63\1\0\26\63\1\0\10\63"+ - "\1\110\27\63\1\0\7\63\1\110\12\63\1\0\1\63"+ - "\1\0\2\63\2\0\6\63\1\0\2\63\1\110\23\63"+ - "\1\0\12\63\1\u018d\13\63\1\110\11\63\1\0\2\63"+ - "\1\u018d\17\63\1\0\1\63\1\0\2\63\2\0\6\63"+ - "\1\0\26\63\1\0\21\63\1\u018e\16\63\1\0\1\63"+ - "\1\u018e\20\63\1\0\1\63\1\0\2\63\2\0\2\63"+ - "\1\u018f\3\63\1\0\26\63\1\0\11\63\1\u018f\26\63"+ - "\1\0\22\63\1\0\1\63\1\0\2\63\2\0\5\63"+ - "\1\317\1\0\26\63\1\0\13\63\1\317\13\63\1\u0184"+ - "\10\63\1\0\4\63\1\u0184\15\63\1\0\1\63\1\0"+ - "\2\63\2\0\6\63\1\0\20\63\1\u0190\5\63\1\0"+ - "\36\63\1\u0190\1\63\1\0\22\63\1\0\1\63\1\0"+ - "\2\63\2\0\6\63\1\0\26\63\1\0\12\63\1\346"+ - "\25\63\1\0\2\63\1\346\17\63\1\0\1\63\1\0"+ - "\2\63\2\0\6\63\1\0\26\63\1\0\12\63\1\u0191"+ - "\25\63\1\0\2\63\1\u0191\17\63\1\0\1\63\1\0"+ - "\2\63\2\0\6\63\1\0\2\63\1\u0192\23\63\1\0"+ - "\26\63\1\u0192\11\63\1\0\22\63\1\0\1\63\1\0"+ - "\2\63\2\0\6\63\1\0\6\63\1\317\17\63\1\0"+ - "\32\63\1\317\5\63\1\0\22\63\1\0\1\63\1\0"+ - "\2\63\2\0\6\63\1\0\26\63\1\0\14\63\1\u0193"+ - "\23\63\1\0\3\63\1\u0193\16\63\1\0\1\63\1\0"+ - "\2\63\2\0\6\63\1\0\26\63\1\0\10\63\1\u0194"+ - "\27\63\1\0\7\63\1\u0194\12\63\1\0\1\63\1\0"+ - "\2\63\2\0\6\63\1\0\1\u0195\5\63\1\u0196\17\63"+ - "\1\0\24\63\1\u0195\5\63\1\u0196\5\63\1\0\22\63"+ - "\1\0\1\63\1\0\2\63\2\0\6\63\1\0\6\63"+ - "\1\u0197\17\63\1\0\32\63\1\u0197\5\63\1\0\22\63"+ - "\1\0\1\63\1\0\2\63\2\0\6\63\1\0\2\63"+ - "\1\u0198\23\63\1\0\26\63\1\u0198\11\63\1\0\22\63"+ - "\1\0\1\63\1\0\2\63\2\0\3\63\1\u0199\2\63"+ - "\1\0\26\63\1\0\7\63\1\u0199\2\63\1\u019a\25\63"+ - "\1\0\2\63\1\u019a\17\63\1\0\1\63\1\0\2\63"+ - "\2\0\5\63\1\u019b\1\0\26\63\1\0\13\63\1\u019b"+ - "\24\63\1\0\22\63\1\0\1\63\1\0\2\63\2\0"+ - "\1\u019c\5\63\1\0\26\63\1\0\22\63\1\u019c\15\63"+ - "\1\0\22\63\1\0\1\63\1\0\2\63\2\0\6\63"+ - "\1\0\26\63\1\0\20\63\1\u019d\17\63\1\0\5\63"+ - "\1\u019d\14\63\1\0\1\63\1\0\2\63\2\0\6\63"+ - "\1\0\26\63\1\0\12\63\1\110\25\63\1\0\2\63"+ - "\1\110\17\63\1\0\1\63\1\0\2\63\2\0\1\u019e"+ - "\5\63\1\0\26\63\1\0\22\63\1\u019e\15\63\1\0"+ - "\22\63\1\0\1\63\1\0\2\63\2\0\6\63\1\0"+ - "\26\63\1\0\21\63\1\u019f\16\63\1\0\1\63\1\u019f"+ - "\20\63\1\0\1\63\1\0\2\63\2\0\6\63\1\0"+ - "\2\63\1\u01a0\23\63\1\0\10\63\1\u01a1\15\63\1\u01a0"+ - "\11\63\1\0\7\63\1\u01a1\12\63\1\0\1\63\1\0"+ - "\2\63\2\0\2\63\1\u01a2\3\63\1\0\26\63\1\0"+ - "\11\63\1\u01a2\1\u0185\1\63\1\u01a3\23\63\1\0\2\63"+ - "\1\u0185\1\u01a3\16\63\1\0\1\63\1\0\2\63\2\0"+ - "\5\63\1\u01a4\1\0\26\63\1\0\13\63\1\u01a4\24\63"+ - "\1\0\22\63\1\0\1\63\1\0\2\63\2\0\6\63"+ - "\1\0\26\63\1\0\40\63\1\0\15\63\1\u0180\4\63"+ - "\1\0\1\63\1\0\2\63\2\0\5\63\1\u01a5\1\0"+ - "\26\63\1\0\13\63\1\u01a5\24\63\1\0\22\63\1\0"+ - "\1\63\1\0\2\63\2\0\1\u01a3\5\63\1\0\26\63"+ - "\1\0\22\63\1\u01a3\15\63\1\0\22\63\1\0\1\63"+ - "\1\0\2\63\2\0\1\u01a6\5\63\1\0\1\63\1\321"+ - "\1\u01a7\3\63\1\u0105\12\63\1\u01a8\4\63\1\0\17\63"+ - "\1\321\2\63\1\u01a6\1\u01a8\2\63\1\u01a7\3\63\1\u0105"+ - "\5\63\1\0\22\63\1\0\1\63\1\0\2\63\2\0"+ - "\6\63\1\0\26\63\1\0\31\63\1\110\6\63\1\0"+ - "\12\63\1\110\7\63\1\0\1\63\1\0\2\63\2\0"+ - "\6\63\1\0\26\63\1\0\27\63\1\u01a9\10\63\1\0"+ - "\4\63\1\u01a9\15\63\1\0\1\63\1\0\2\63\2\0"+ - "\6\63\1\0\26\63\1\0\21\63\1\u01aa\16\63\1\0"+ - "\1\63\1\u01aa\20\63\1\0\1\63\1\0\2\63\2\0"+ - "\2\63\1\110\3\63\1\0\26\63\1\0\11\63\1\110"+ - "\7\63\1\u01ab\7\63\1\110\6\63\1\0\1\63\1\u01ab"+ - "\10\63\1\110\7\63\1\0\1\63\1\0\2\63\2\0"+ - "\5\63\1\u01ac\1\0\1\63\1\110\24\63\1\0\13\63"+ - "\1\u01ac\3\63\1\110\20\63\1\0\22\63\1\0\1\63"+ - "\1\0\2\63\2\0\6\63\1\0\26\63\1\0\14\63"+ - "\1\110\23\63\1\0\3\63\1\110\16\63\1\0\1\63"+ - "\1\0\2\63\2\0\5\63\1\u01ad\1\0\26\63\1\0"+ - "\13\63\1\u01ad\24\63\1\0\22\63\1\0\1\63\1\0"+ - "\2\63\2\0\3\63\1\u01ae\2\63\1\0\26\63\1\0"+ - "\7\63\1\u01ae\30\63\1\0\22\63\1\0\1\63\1\0"+ - "\2\63\2\0\2\63\1\u01af\3\63\1\0\26\63\1\0"+ - "\11\63\1\u01af\26\63\1\0\22\63\1\0\1\63\1\0"+ - "\2\63\2\0\5\63\1\u01b0\1\0\2\63\1\u01b1\23\63"+ - "\1\0\13\63\1\u01b0\12\63\1\u01b1\11\63\1\0\22\63"+ - "\1\0\1\63\1\0\2\63\2\0\4\63\1\u01b2\1\63"+ - "\1\0\26\63\1\0\25\63\1\u01b2\12\63\1\0\22\63"+ - "\1\0\1\63\1\0\2\63\2\0\6\63\1\0\6\63"+ - "\1\u0105\17\63\1\0\32\63\1\u0105\5\63\1\0\22\63"+ - "\1\0\1\63\1\0\2\63\2\0\6\63\1\0\26\63"+ - "\1\0\20\63\1\u01b3\17\63\1\0\5\63\1\u01b3\14\63"+ - "\1\0\1\63\1\0\2\63\2\0\6\63\1\0\26\63"+ - "\1\0\20\63\1\u01b4\17\63\1\0\5\63\1\u01b4\14\63"+ - "\1\0\1\63\1\0\2\63\2\0\5\63\1\u01b5\1\0"+ - "\26\63\1\0\13\63\1\u01b5\1\u01b6\23\63\1\0\3\63"+ - "\1\u01b6\16\63\1\0\1\63\1\0\2\63\2\0\6\63"+ - "\1\0\1\63\1\u01b7\24\63\1\0\17\63\1\u01b7\20\63"+ - "\1\0\22\63\1\0\1\63\1\0\2\63\2\0\2\63"+ - "\1\u01b8\1\63\1\110\1\63\1\0\26\63\1\0\11\63"+ - "\1\u01b8\13\63\1\110\12\63\1\0\22\63\1\0\1\63"+ - "\1\0\2\63\2\0\6\63\1\0\1\u01b9\25\63\1\0"+ - "\24\63\1\u01b9\13\63\1\0\22\63\1\0\1\63\1\0"+ - "\2\63\2\0\6\63\1\0\26\63\1\0\20\63\1\110"+ - "\17\63\1\0\5\63\1\110\14\63\1\0\1\63\1\0"+ - "\2\63\2\0\6\63\1\0\26\63\1\0\20\63\1\u01ba"+ - "\17\63\1\0\5\63\1\u01ba\14\63\1\0\1\63\1\0"+ - "\2\63\2\0\2\63\1\110\3\63\1\0\26\63\1\0"+ - "\11\63\1\110\26\63\1\0\20\63\11\0\1\u01bb\57\0"+ - "\1\u01bb\36\0\10\u0109\1\u01bc\24\u0109\1\u010b\74\u0109\1\0"+ - "\125\u0109\37\0\1\u01bd\70\0\1\125\10\0\6\125\1\0"+ - "\11\125\1\0\1\u01be\1\0\3\125\1\0\2\125\14\0"+ - "\25\125\2\0\1\125\2\0\17\125\1\0\1\125\10\0"+ - "\6\134\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e"+ - "\1\134\1\0\2\134\14\0\14\134\1\u01bf\7\134\1\125"+ - "\2\0\1\134\2\0\17\134\20\0\1\144\26\0\1\61"+ - "\61\0\1\u0111\10\0\6\u0111\1\0\11\u0111\1\0\1\u0111"+ - "\1\0\3\u0111\1\0\2\u0111\14\0\25\u0111\2\0\1\u0111"+ - "\2\0\17\u0111\1\0\1\u0111\10\0\6\u0111\1\0\4\u0111"+ - "\2\u01c0\1\u0111\1\u01c0\1\u0111\1\u01c1\1\u0111\1\0\3\u0111"+ - "\1\0\2\u0111\1\u01c1\13\0\25\u0111\2\0\1\u0111\2\0"+ - "\14\u0111\1\u01c0\2\u0111\1\0\1\u0111\10\0\6\u0111\1\0"+ - "\2\u0111\1\u0113\1\u0111\2\u0115\1\u0111\1\u0115\1\u0111\1\0"+ - "\1\u0111\1\0\3\u0111\1\0\1\u0111\1\u0114\14\0\11\u0111"+ - "\1\u0114\2\u0111\1\u0114\2\u0111\1\u0113\5\u0111\2\0\1\u0111"+ - "\2\0\5\u0111\1\u0114\6\u0111\1\u0115\2\u0111\1\0\1\u0111"+ - "\10\0\6\u0111\1\0\2\u0111\1\u0113\1\u0111\2\u0116\1\u0111"+ - "\1\u0116\1\u0111\1\0\1\u0111\1\0\3\u0111\1\0\1\u0111"+ - "\1\u0114\1\0\1\u0115\12\0\11\u0111\1\u0114\2\u0111\1\u0114"+ - "\2\u0111\1\u0113\5\u0111\2\0\1\u0111\2\0\5\u0111\1\u0114"+ - "\6\u0111\1\u0116\2\u0111\1\0\1\u0111\10\0\6\u0111\1\0"+ - "\1\u0111\1\u01c2\1\u0113\1\u0111\1\u0116\1\u0117\1\u0111\1\u0117"+ - "\1\u0111\1\0\1\u0111\1\0\3\u0111\1\0\1\u0111\1\u0114"+ - "\1\0\1\u0115\12\0\10\u0111\1\u01c2\1\u0114\2\u0111\1\u0114"+ - "\2\u0111\1\u0113\5\u0111\2\0\1\u0111\2\0\5\u0111\1\u0114"+ - "\6\u0111\1\u0117\2\u0111\1\0\1\u0111\10\0\1\u0111\1\u01c3"+ - "\4\u0111\1\0\2\u0111\1\u01c3\1\u0111\4\u01c3\1\u0111\1\0"+ - "\1\u0111\1\0\3\u0111\1\0\1\u0111\1\u01c3\14\0\7\u0111"+ - "\1\u01c3\1\u0111\2\u01c3\1\u0111\1\u01c3\2\u0111\1\u01c3\3\u0111"+ - "\1\u01c3\1\u0111\2\0\1\u0111\2\0\1\u0111\1\u01c3\3\u0111"+ - "\1\u01c3\6\u0111\1\u01c3\2\u0111\1\0\1\125\10\0\6\134"+ - "\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134"+ - "\1\0\2\134\14\0\17\134\1\u01c4\4\134\1\125\2\0"+ - "\1\134\2\0\17\134\1\0\1\125\10\0\6\134\1\0"+ - "\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0"+ - "\2\134\14\0\4\134\1\u01c5\6\134\1\u01c6\10\134\1\125"+ - "\2\0\1\134\2\0\17\134\1\0\1\125\10\0\6\134"+ - "\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134"+ - "\1\0\1\134\1\u01c7\14\0\24\134\1\125\2\0\1\134"+ - "\2\0\3\134\1\u01c8\13\134\1\0\1\125\10\0\6\134"+ - "\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134"+ - "\1\0\2\134\14\0\16\134\1\u01c9\5\134\1\125\2\0"+ - "\1\134\2\0\17\134\1\0\1\125\10\0\6\134\1\0"+ - "\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0"+ - "\2\134\14\0\4\134\1\u01ca\17\134\1\125\2\0\1\134"+ - "\2\0\17\134\1\0\1\125\10\0\6\134\1\0\11\134"+ - "\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134"+ - "\14\0\4\134\1\u01cb\17\134\1\125\2\0\1\134\2\0"+ - "\17\134\1\0\1\125\10\0\6\134\1\0\11\134\1\0"+ - "\1\u01cc\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0"+ - "\12\134\1\u01cd\2\134\1\u011c\6\134\1\125\2\0\1\134"+ - "\2\0\17\134\1\0\1\125\10\0\6\134\1\0\11\134"+ - "\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134"+ - "\14\0\1\u01ce\1\134\1\u01cf\21\134\1\125\2\0\1\134"+ - "\2\0\17\134\1\0\1\125\10\0\6\134\1\0\11\134"+ - "\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134"+ - "\14\0\16\134\1\u01d0\5\134\1\125\2\0\1\134\2\0"+ - "\17\134\1\0\1\125\10\0\6\134\1\0\11\134\1\0"+ - "\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0"+ - "\10\134\1\u01d1\13\134\1\125\2\0\1\134\2\0\17\134"+ - "\1\0\1\125\10\0\6\134\1\0\11\134\1\0\1\134"+ - "\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0\4\134"+ - "\1\u01d2\17\134\1\125\2\0\1\134\2\0\17\134\1\0"+ - "\1\125\10\0\6\134\1\0\11\134\1\0\1\134\1\0"+ - "\1\125\1\u010e\1\134\1\0\2\134\14\0\24\134\1\125"+ - "\2\0\1\134\2\0\1\u011c\16\134\1\0\1\125\10\0"+ - "\6\134\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e"+ - "\1\134\1\0\2\134\14\0\5\134\1\u01d3\16\134\1\125"+ - "\2\0\1\134\2\0\17\134\1\0\1\125\10\0\6\134"+ - "\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134"+ - "\1\0\2\134\14\0\12\134\1\u01d4\11\134\1\125\2\0"+ - "\1\134\2\0\17\134\1\0\1\125\10\0\6\134\1\0"+ - "\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0"+ - "\2\134\14\0\12\134\1\u01d5\11\134\1\125\2\0\1\134"+ - "\2\0\17\134\1\0\1\125\10\0\6\134\1\0\11\134"+ - "\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134"+ - "\14\0\4\134\1\u01d6\6\134\1\u01d7\10\134\1\125\2\0"+ - "\1\134\2\0\17\134\1\0\1\125\10\0\6\134\1\0"+ - "\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0"+ - "\2\134\14\0\5\134\1\u01d8\16\134\1\125\2\0\1\134"+ - "\2\0\17\134\1\0\1\125\10\0\6\134\1\0\11\134"+ - "\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134"+ - "\14\0\4\134\1\u01d9\17\134\1\125\2\0\1\134\2\0"+ - "\17\134\1\0\1\125\10\0\6\134\1\0\11\134\1\0"+ - "\1\u01da\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0"+ - "\24\134\1\125\2\0\1\134\2\0\17\134\1\0\1\125"+ - "\10\0\6\134\1\0\11\134\1\0\1\134\1\0\1\125"+ - "\1\u010e\1\134\1\0\2\134\14\0\10\134\1\u01db\3\134"+ - "\1\u01dc\6\134\1\u01dd\1\125\2\0\1\134\2\0\17\134"+ - "\1\0\1\125\10\0\6\134\1\0\11\134\1\0\1\134"+ - "\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0\13\134"+ - "\1\u01de\10\134\1\125\2\0\1\134\2\0\17\134\1\0"+ - "\1\125\10\0\6\134\1\0\11\134\1\0\1\134\1\0"+ - "\1\125\1\u010e\1\134\1\0\2\134\14\0\16\134\1\u01df"+ - "\5\134\1\125\2\0\1\134\2\0\17\134\1\0\1\125"+ - "\10\0\6\134\1\0\11\134\1\0\1\134\1\0\1\125"+ - "\1\u010e\1\134\1\0\2\134\14\0\12\134\1\u01e0\11\134"+ - "\1\125\2\0\1\134\2\0\17\134\1\0\1\125\10\0"+ - "\6\134\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e"+ - "\1\134\1\0\2\134\14\0\3\134\1\u01e1\20\134\1\125"+ - "\2\0\1\134\2\0\17\134\1\0\1\125\10\0\6\134"+ - "\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134"+ - "\1\0\2\134\14\0\5\134\1\u01e2\16\134\1\125\2\0"+ - "\1\134\2\0\17\134\1\0\1\125\10\0\6\134\1\0"+ - "\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0"+ - "\2\134\14\0\1\u01e3\23\134\1\125\2\0\1\134\2\0"+ - "\17\134\1\0\1\125\10\0\6\134\1\0\11\134\1\0"+ - "\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0"+ - "\5\134\1\u01e4\16\134\1\125\2\0\1\134\2\0\17\134"+ - "\1\0\1\125\10\0\6\134\1\0\11\134\1\0\1\134"+ - "\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0\5\134"+ - "\1\u01e5\16\134\1\125\2\0\1\134\2\0\17\134\1\0"+ - "\1\125\10\0\6\134\1\0\11\134\1\0\1\134\1\0"+ - "\1\125\1\u010e\1\134\1\0\2\134\14\0\2\134\1\u011c"+ - "\21\134\1\125\2\0\1\134\2\0\17\134\1\0\1\125"+ - "\10\0\6\134\1\0\11\134\1\0\1\134\1\0\1\125"+ - "\1\u010e\1\134\1\0\2\134\14\0\3\134\1\u01e6\20\134"+ - "\1\125\2\0\1\134\2\0\17\134\1\0\1\125\10\0"+ - "\6\134\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e"+ - "\1\134\1\0\2\134\14\0\10\134\1\u01e7\13\134\1\125"+ - "\2\0\1\134\2\0\17\134\1\0\1\125\10\0\6\134"+ - "\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134"+ - "\1\0\2\134\14\0\23\134\1\u01e8\1\125\2\0\1\134"+ - "\2\0\17\134\1\0\1\125\10\0\6\134\1\0\11\134"+ - "\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134"+ - "\14\0\1\u01e9\2\134\1\u01ea\20\134\1\125\2\0\1\134"+ - "\2\0\17\134\1\0\1\125\10\0\6\134\1\0\11\134"+ - "\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134"+ - "\14\0\2\134\1\u01eb\4\134\1\u01ec\14\134\1\125\2\0"+ - "\1\134\2\0\17\134\1\0\1\125\10\0\6\134\1\0"+ - "\11\134\1\0\1\u01ed\1\0\1\125\1\u010e\1\134\1\0"+ - "\2\134\14\0\24\134\1\125\2\0\1\134\2\0\17\134"+ - "\1\0\1\125\10\0\6\134\1\0\11\134\1\0\1\134"+ - "\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0\13\134"+ - "\1\u01d7\10\134\1\125\2\0\1\134\2\0\17\134\1\0"+ - "\1\125\10\0\6\134\1\0\11\134\1\0\1\134\1\0"+ - "\1\125\1\u010e\1\134\1\0\2\134\14\0\7\134\1\u01ee"+ - "\14\134\1\125\2\0\1\134\2\0\17\134\1\0\1\125"+ - "\10\0\6\134\1\0\11\134\1\0\1\134\1\0\1\125"+ - "\1\u010e\1\134\1\0\2\134\14\0\7\134\1\u01ef\14\134"+ - "\1\125\2\0\1\134\2\0\17\134\1\0\1\125\10\0"+ - "\6\134\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e"+ - "\1\134\1\0\2\134\14\0\12\134\1\u01f0\11\134\1\125"+ - "\2\0\1\134\2\0\17\134\1\0\1\125\10\0\6\134"+ - "\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134"+ - "\1\0\2\134\14\0\4\134\1\u01f1\11\134\1\u01f2\5\134"+ - "\1\125\2\0\1\134\2\0\17\134\1\0\1\125\10\0"+ - "\6\134\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e"+ - "\1\134\1\0\2\134\14\0\1\u01f3\7\134\1\u01f4\13\134"+ - "\1\125\2\0\1\134\2\0\17\134\1\0\1\125\10\0"+ - "\6\134\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e"+ - "\1\134\1\0\2\134\14\0\17\134\1\u01f5\4\134\1\125"+ - "\2\0\1\134\2\0\17\134\1\0\1\125\10\0\6\134"+ - "\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134"+ - "\1\0\2\134\14\0\3\134\1\u01f6\20\134\1\125\2\0"+ - "\1\134\2\0\17\134\1\0\1\125\10\0\6\134\1\0"+ - "\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0"+ - "\2\134\14\0\4\134\1\u01f7\17\134\1\125\2\0\1\134"+ - "\2\0\17\134\1\0\1\125\10\0\6\134\1\0\11\134"+ - "\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134"+ - "\14\0\4\134\1\u01f8\17\134\1\125\2\0\1\134\2\0"+ - "\17\134\1\0\1\125\10\0\6\134\1\0\11\134\1\0"+ - "\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0"+ - "\1\u01f9\23\134\1\125\2\0\1\134\2\0\17\134\1\0"+ - "\1\125\10\0\6\134\1\0\11\134\1\0\1\134\1\0"+ - "\1\125\1\u010e\1\134\1\0\2\134\14\0\24\134\1\125"+ - "\2\0\1\134\2\0\3\134\1\u011c\13\134\13\0\1\u01fa"+ - "\7\0\1\u01fa\1\0\4\u01fa\11\0\1\u01fa\23\0\1\u01fa"+ - "\1\0\2\u01fa\1\0\1\u01fa\2\0\1\u01fa\3\0\1\u01fa"+ - "\7\0\1\u01fa\3\0\1\u01fa\6\0\1\u01fa\15\0\1\u01fb"+ - "\7\0\1\u01fb\1\0\4\u01fb\11\0\1\u01fb\23\0\1\u01fb"+ - "\1\0\2\u01fb\1\0\1\u01fb\2\0\1\u01fb\3\0\1\u01fb"+ - "\7\0\1\u01fb\3\0\1\u01fb\6\0\1\u01fb\14\0\1\u01fc"+ - "\57\0\1\u01fc\120\0\1\u01fd\133\0\1\u01fe\135\0\1\u01ff"+ - "\143\0\1\u0200\30\0\1\u0201\57\0\1\u0201\120\0\1\u0202"+ - "\133\0\1\u0203\135\0\1\u0204\143\0\1\u0205\30\0\1\u0206"+ - "\57\0\1\u0206\47\0\6\u0159\1\0\13\u0159\5\0\2\u0159"+ - "\1\0\1\u0159\12\0\24\u0159\3\0\1\u0159\2\0\17\u0159"+ - "\71\0\1\u0207\1\0\1\u0208\6\0\1\u0209\107\0\1\u020a"+ - "\131\0\1\u020b\134\0\1\u020c\120\0\1\u020d\1\u020e\126\0"+ - "\1\u020f\132\0\1\u0210\121\0\1\u0211\11\0\1\u0212\115\0"+ - "\1\u0213\136\0\1\u0214\120\0\1\u0215\2\0\1\u0216\131\0"+ - "\1\u0217\12\0\1\u0218\107\0\1\u0219\62\0\6\u0167\1\0"+ - "\13\u0167\5\0\2\u0167\1\0\1\u0167\12\0\24\u0167\3\0"+ - "\1\u0167\2\0\17\u0167\64\0\1\u0168\142\0\1\u0168\113\0"+ - "\1\u0168\2\0\1\u0168\17\0\1\u0168\120\0\1\u0168\6\0"+ - "\1\u0168\113\0\1\u0168\4\0\1\u0168\127\0\1\u021a\42\0"+ - "\2\271\1\u021b\3\271\1\0\10\271\2\0\1\271\5\0"+ - "\2\271\14\0\2\271\1\u021b\21\271\3\0\1\271\2\0"+ - "\17\271\12\0\6\271\1\0\1\u021c\7\271\2\0\1\271"+ - "\5\0\2\271\14\0\15\271\1\u021c\6\271\3\0\1\271"+ - "\2\0\17\271\32\0\1\u021d\172\0\1\u021e\130\0\1\u0179"+ - "\105\0\1\u021f\117\0\1\u0220\64\0\2\63\1\0\1\63"+ - "\1\0\2\63\2\0\3\63\1\u0221\2\63\1\0\26\63"+ - "\1\0\7\63\1\u0221\30\63\1\0\22\63\1\0\1\63"+ - "\1\0\2\63\2\0\1\63\1\u0195\4\63\1\0\26\63"+ - "\1\0\14\63\1\110\1\63\1\u0195\21\63\1\0\3\63"+ - "\1\110\16\63\1\0\1\63\1\0\2\63\2\0\3\63"+ - "\1\u0222\2\63\1\0\26\63\1\0\7\63\1\u0222\2\63"+ - "\1\u0223\25\63\1\0\2\63\1\u0223\17\63\1\0\1\63"+ - "\1\0\2\63\2\0\5\63\1\u0224\1\0\26\63\1\0"+ - "\13\63\1\u0224\24\63\1\0\22\63\1\0\1\63\1\0"+ - "\2\63\2\0\6\63\1\0\26\63\1\0\31\63\1\u0195"+ - "\6\63\1\0\12\63\1\u0195\7\63\1\0\1\63\1\0"+ - "\2\63\2\0\6\63\1\0\2\63\1\u0225\23\63\1\0"+ - "\26\63\1\u0225\11\63\1\0\22\63\1\0\1\63\1\0"+ - "\2\63\2\0\2\63\1\u0226\3\63\1\0\26\63\1\0"+ - "\11\63\1\u0226\26\63\1\0\22\63\1\0\1\63\1\0"+ - "\2\63\2\0\4\63\1\110\1\63\1\0\26\63\1\0"+ - "\25\63\1\110\12\63\1\0\22\63\1\0\1\63\1\0"+ - "\2\63\2\0\6\63\1\0\1\63\1\u01a9\24\63\1\0"+ - "\17\63\1\u01a9\20\63\1\0\22\63\1\0\1\63\1\0"+ - "\2\63\2\0\6\63\1\0\2\63\1\110\23\63\1\0"+ - "\26\63\1\110\11\63\1\0\22\63\1\0\1\63\1\0"+ - "\2\63\2\0\5\63\1\u0195\1\0\26\63\1\0\13\63"+ - "\1\u0195\24\63\1\0\22\63\1\0\1\63\1\0\2\63"+ - "\2\0\6\63\1\0\26\63\1\0\10\63\1\u0227\27\63"+ - "\1\0\7\63\1\u0227\12\63\1\0\1\63\1\0\2\63"+ - "\2\0\6\63\1\0\26\63\1\0\27\63\1\u0228\10\63"+ - "\1\0\4\63\1\u0228\15\63\1\0\1\63\1\0\2\63"+ - "\2\0\6\63\1\0\26\63\1\0\31\63\1\u0229\6\63"+ - "\1\0\12\63\1\u0229\7\63\1\0\1\63\1\0\2\63"+ - "\2\0\6\63\1\0\26\63\1\0\14\63\1\u022a\23\63"+ - "\1\0\3\63\1\u022a\16\63\1\0\1\63\1\0\2\63"+ - "\2\0\6\63\1\0\1\u0195\25\63\1\0\24\63\1\u0195"+ - "\13\63\1\0\22\63\1\0\1\63\1\0\2\63\2\0"+ - "\6\63\1\0\26\63\1\0\21\63\1\u022b\16\63\1\0"+ - "\1\63\1\u022b\20\63\1\0\1\63\1\0\2\63\2\0"+ - "\6\63\1\0\12\63\1\u01a3\13\63\1\0\40\63\1\0"+ - "\6\63\1\u01a3\13\63\1\0\1\63\1\0\2\63\2\0"+ - "\6\63\1\0\26\63\1\0\10\63\1\u01b4\27\63\1\0"+ - "\7\63\1\u01b4\12\63\1\0\1\63\1\0\2\63\2\0"+ - "\3\63\1\u022c\2\63\1\0\26\63\1\0\7\63\1\u022c"+ - "\30\63\1\0\22\63\1\0\1\63\1\0\2\63\2\0"+ - "\6\63\1\0\26\63\1\0\21\63\1\u01a2\16\63\1\0"+ - "\1\63\1\u01a2\20\63\1\0\1\63\1\0\2\63\2\0"+ - "\5\63\1\u022d\1\0\26\63\1\0\13\63\1\u022d\24\63"+ - "\1\0\22\63\1\0\1\63\1\0\2\63\2\0\6\63"+ - "\1\0\26\63\1\0\12\63\1\u01a3\25\63\1\0\2\63"+ - "\1\u01a3\17\63\1\0\1\63\1\0\2\63\2\0\6\63"+ - "\1\0\26\63\1\0\21\63\1\u0103\16\63\1\0\1\63"+ - "\1\u0103\20\63\1\0\1\63\1\0\2\63\2\0\6\63"+ - "\1\0\26\63\1\0\30\63\1\110\7\63\1\0\10\63"+ - "\1\110\11\63\1\0\1\63\1\0\2\63\2\0\6\63"+ - "\1\0\2\63\1\u022e\23\63\1\0\26\63\1\u022e\11\63"+ - "\1\0\22\63\1\0\1\63\1\0\2\63\2\0\6\63"+ - "\1\0\2\63\1\u0105\23\63\1\0\26\63\1\u0105\11\63"+ - "\1\0\22\63\1\0\1\63\1\0\2\63\2\0\6\63"+ - "\1\0\2\63\1\u01a9\23\63\1\0\26\63\1\u01a9\11\63"+ - "\1\0\22\63\1\0\1\63\1\0\2\63\2\0\6\63"+ - "\1\0\2\63\1\u0103\23\63\1\0\26\63\1\u0103\11\63"+ - "\1\0\22\63\1\0\1\63\1\0\2\63\2\0\6\63"+ - "\1\0\26\63\1\0\14\63\1\u022f\23\63\1\0\3\63"+ - "\1\u022f\16\63\1\0\1\63\1\0\2\63\2\0\1\63"+ - "\1\u0230\4\63\1\0\26\63\1\0\16\63\1\u0230\21\63"+ - "\1\0\22\63\1\0\1\63\1\0\2\63\2\0\5\63"+ - "\1\u0231\1\0\26\63\1\0\13\63\1\u0231\24\63\1\0"+ - "\22\63\1\0\1\63\1\0\2\63\2\0\6\63\1\0"+ - "\26\63\1\0\12\63\1\u0232\25\63\1\0\2\63\1\u0232"+ - "\17\63\1\0\1\63\1\0\2\63\2\0\6\63\1\0"+ - "\1\110\25\63\1\0\24\63\1\110\13\63\1\0\22\63"+ - "\1\0\1\63\1\0\2\63\2\0\6\63\1\0\2\63"+ - "\1\u0233\23\63\1\0\26\63\1\u0233\11\63\1\0\22\63"+ - "\1\0\1\63\1\0\2\63\2\0\6\63\1\0\26\63"+ - "\1\0\27\63\1\u0234\10\63\1\0\4\63\1\u0234\15\63"+ - "\1\0\1\63\1\0\2\63\2\0\6\63\1\0\1\63"+ - "\1\u0235\24\63\1\0\17\63\1\u0235\20\63\1\0\22\63"+ - "\1\0\1\63\1\0\2\63\2\0\6\63\1\0\12\63"+ - "\1\u0236\13\63\1\0\40\63\1\0\6\63\1\u0236\13\63"+ - "\1\0\1\63\1\0\2\63\2\0\6\63\1\0\26\63"+ - "\1\0\27\63\1\110\10\63\1\0\4\63\1\110\15\63"+ - "\1\0\1\63\1\0\2\63\2\0\5\63\1\110\1\0"+ - "\26\63\1\0\13\63\1\110\24\63\1\0\22\63\1\0"+ - "\1\63\1\0\2\63\2\0\3\63\1\u0231\2\63\1\0"+ - "\26\63\1\0\7\63\1\u0231\1\u0227\27\63\1\0\7\63"+ - "\1\u0227\12\63\1\0\1\63\1\0\2\63\2\0\4\63"+ - "\1\u018c\1\63\1\0\26\63\1\0\25\63\1\u018c\12\63"+ - "\1\0\22\63\1\0\1\63\1\0\2\63\2\0\1\63"+ - "\1\303\4\63\1\0\26\63\1\0\16\63\1\303\21\63"+ - "\1\0\22\63\1\0\1\63\1\0\2\63\2\0\6\63"+ - "\1\0\26\63\1\0\27\63\1\u0237\10\63\1\0\4\63"+ - "\1\u0237\15\63\1\0\1\63\1\0\2\63\2\0\2\63"+ - "\1\u0238\3\63\1\0\26\63\1\0\11\63\1\u0238\26\63"+ - "\1\0\22\63\1\0\1\63\1\0\2\63\2\0\6\63"+ - "\1\0\26\63\1\0\20\63\1\u0239\17\63\1\0\5\63"+ - "\1\u0239\14\63\1\0\1\63\1\0\2\63\2\0\6\63"+ - "\1\0\1\63\1\u023a\24\63\1\0\17\63\1\u023a\20\63"+ - "\1\0\22\63\1\0\1\63\1\0\2\63\2\0\6\63"+ - "\1\0\26\63\1\0\21\63\1\u023b\16\63\1\0\1\63"+ - "\1\u023b\20\63\1\0\1\63\1\0\2\63\2\0\6\63"+ - "\1\0\26\63\1\0\21\63\1\u023c\16\63\1\0\1\63"+ - "\1\u023c\20\63\1\0\1\63\1\0\2\63\2\0\6\63"+ - "\1\0\26\63\1\0\20\63\1\u0184\17\63\1\0\5\63"+ - "\1\u0184\14\63\1\0\1\63\1\0\2\63\2\0\6\63"+ - "\1\0\26\63\1\0\12\63\1\u023d\25\63\1\0\2\63"+ - "\1\u023d\17\63\1\0\1\63\1\0\2\63\2\0\3\63"+ - "\1\u023e\2\63\1\0\26\63\1\0\7\63\1\u023e\30\63"+ - "\1\0\22\63\1\0\1\63\1\0\2\63\2\0\6\63"+ - "\1\0\26\63\1\0\21\63\1\110\16\63\1\0\1\63"+ - "\1\110\20\63\1\0\1\63\1\0\2\63\2\0\6\63"+ - "\1\0\1\63\1\u023f\24\63\1\0\17\63\1\u023f\20\63"+ - "\1\0\22\63\1\0\1\63\1\0\2\63\2\0\3\63"+ - "\1\347\2\63\1\0\26\63\1\0\7\63\1\347\30\63"+ - "\1\0\22\63\1\0\1\63\1\0\2\63\2\0\2\63"+ - "\1\u0240\3\63\1\0\26\63\1\0\11\63\1\u0240\26\63"+ - "\1\0\22\63\1\0\1\63\1\0\2\63\2\0\6\63"+ - "\1\0\2\63\1\u0105\23\63\1\0\21\63\1\110\4\63"+ - "\1\u0105\11\63\1\0\1\63\1\110\20\63\1\0\1\63"+ - "\1\0\2\63\2\0\6\63\1\0\12\63\1\110\13\63"+ - "\1\0\40\63\1\0\6\63\1\110\13\63\1\0\1\63"+ - "\1\0\2\63\2\0\5\63\1\u0241\1\0\26\63\1\0"+ - "\13\63\1\u0241\24\63\1\0\22\63\1\0\1\63\1\0"+ - "\2\63\2\0\6\63\1\0\26\63\1\0\30\63\1\110"+ - "\7\63\1\0\10\63\1\110\1\u0242\10\63\1\0\1\63"+ - "\1\0\2\63\2\0\6\63\1\0\26\63\1\0\10\63"+ - "\1\u0243\27\63\1\0\7\63\1\u0243\12\63\1\0\1\63"+ - "\1\0\2\63\2\0\6\63\1\0\2\63\1\347\23\63"+ - "\1\0\26\63\1\347\11\63\1\0\20\63\12\0\1\u0244"+ - "\52\0\1\u0244\120\0\2\u01bc\16\0\1\u01bc\41\0\1\u0245"+ - "\117\0\1\125\10\0\1\125\1\u0246\4\125\1\0\2\125"+ - "\1\u0246\1\125\4\u0246\1\125\1\0\1\125\1\0\3\125"+ - "\1\0\1\125\1\u0246\14\0\7\125\1\u0246\1\125\2\u0246"+ - "\1\125\1\u0246\2\125\1\u0246\3\125\1\u0246\1\125\2\0"+ - "\1\125\2\0\1\125\1\u0246\3\125\1\u0246\6\125\1\u0246"+ - "\2\125\1\0\1\125\10\0\6\134\1\0\11\134\1\0"+ - "\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0"+ - "\1\u0247\23\134\1\125\2\0\1\134\2\0\17\134\1\0"+ - "\1\u0111\10\0\6\u0111\1\0\4\u0111\2\u01c0\1\u0111\1\u01c0"+ - "\1\u0111\1\0\1\u0111\1\0\3\u0111\1\0\1\u0111\1\u0114"+ - "\14\0\11\u0111\1\u0114\2\u0111\1\u0114\10\u0111\2\0\1\u0111"+ - "\2\0\5\u0111\1\u0114\6\u0111\1\u01c0\2\u0111\25\0\2\u01c0"+ - "\1\0\1\u01c0\74\0\1\u01c0\3\0\1\u0111\10\0\1\u0111"+ - "\1\u01c3\4\u0111\1\0\1\u0111\1\u01c2\1\u01c3\1\u0111\4\u01c3"+ - "\1\u0111\1\0\1\u0111\1\0\3\u0111\1\0\1\u0111\1\u01c3"+ - "\14\0\7\u0111\1\u01c3\1\u01c2\2\u01c3\1\u0111\1\u01c3\2\u0111"+ - "\1\u01c3\3\u0111\1\u01c3\1\u0111\2\0\1\u0111\2\0\1\u0111"+ - "\1\u01c3\3\u0111\1\u01c3\6\u0111\1\u01c3\2\u0111\1\0\1\125"+ - "\10\0\6\134\1\0\11\134\1\0\1\134\1\0\1\125"+ - "\1\u010e\1\134\1\0\2\134\14\0\13\134\1\u013f\10\134"+ - "\1\125\2\0\1\134\2\0\17\134\1\0\1\125\10\0"+ - "\6\134\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e"+ - "\1\134\1\0\2\134\14\0\17\134\1\u0248\4\134\1\125"+ - "\2\0\1\134\2\0\17\134\1\0\1\125\10\0\6\134"+ - "\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134"+ - "\1\0\2\134\14\0\4\134\1\u0249\17\134\1\125\2\0"+ - "\1\134\2\0\17\134\1\0\1\125\10\0\6\134\1\0"+ - "\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0"+ - "\2\134\14\0\1\u024a\23\134\1\125\2\0\1\134\2\0"+ - "\17\134\1\0\1\125\10\0\6\134\1\0\11\134\1\0"+ - "\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0"+ - "\12\134\1\u024b\11\134\1\125\2\0\1\134\2\0\17\134"+ - "\1\0\1\125\10\0\6\134\1\0\11\134\1\0\1\134"+ - "\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0\3\134"+ - "\1\u024c\4\134\1\u024d\13\134\1\125\2\0\1\134\2\0"+ - "\17\134\1\0\1\125\10\0\6\134\1\0\11\134\1\0"+ - "\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0"+ - "\3\134\1\u011c\20\134\1\125\2\0\1\134\2\0\17\134"+ - "\1\0\1\125\10\0\6\134\1\0\11\134\1\0\1\u024e"+ - "\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0\24\134"+ - "\1\125\2\0\1\134\2\0\17\134\1\0\1\125\10\0"+ - "\6\134\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e"+ - "\1\134\1\0\2\134\14\0\17\134\1\u024f\4\134\1\125"+ - "\2\0\1\134\2\0\17\134\1\0\1\125\10\0\6\134"+ - "\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134"+ - "\1\0\2\134\14\0\5\134\1\u0250\16\134\1\125\2\0"+ - "\1\134\2\0\17\134\1\0\1\125\10\0\6\134\1\0"+ - "\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0"+ - "\2\134\14\0\13\134\1\u011c\10\134\1\125\2\0\1\134"+ - "\2\0\17\134\1\0\1\125\10\0\6\134\1\0\11\134"+ - "\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134"+ - "\14\0\3\134\1\u0251\20\134\1\125\2\0\1\134\2\0"+ - "\17\134\1\0\1\125\10\0\6\134\1\0\11\134\1\0"+ - "\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0"+ - "\17\134\1\u0252\4\134\1\125\2\0\1\134\2\0\17\134"+ - "\1\0\1\125\10\0\6\134\1\0\11\134\1\0\1\134"+ - "\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0\10\134"+ - "\1\u011c\13\134\1\125\2\0\1\134\2\0\17\134\1\0"+ - "\1\125\10\0\6\134\1\0\11\134\1\0\1\134\1\0"+ - "\1\125\1\u010e\1\134\1\0\2\134\14\0\1\u0253\23\134"+ - "\1\125\2\0\1\134\2\0\17\134\1\0\1\125\10\0"+ - "\6\134\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e"+ - "\1\134\1\0\2\134\14\0\4\134\1\u0254\6\134\1\u0255"+ - "\10\134\1\125\2\0\1\134\2\0\17\134\1\0\1\125"+ - "\10\0\6\134\1\0\11\134\1\0\1\134\1\0\1\125"+ - "\1\u010e\1\134\1\0\2\134\14\0\2\134\1\u0256\21\134"+ - "\1\125\2\0\1\134\2\0\17\134\1\0\1\125\10\0"+ - "\6\134\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e"+ - "\1\134\1\0\2\134\14\0\13\134\1\u01ce\10\134\1\125"+ - "\2\0\1\134\2\0\17\134\1\0\1\125\10\0\6\134"+ - "\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134"+ - "\1\0\2\134\14\0\7\134\1\u01f8\14\134\1\125\2\0"+ - "\1\134\2\0\17\134\1\0\1\125\10\0\6\134\1\0"+ - "\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0"+ - "\2\134\14\0\17\134\1\u011c\4\134\1\125\2\0\1\134"+ - "\2\0\17\134\1\0\1\125\10\0\6\134\1\0\11\134"+ - "\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134"+ - "\14\0\1\134\1\u0256\22\134\1\125\2\0\1\134\2\0"+ - "\17\134\1\0\1\125\10\0\6\134\1\0\11\134\1\0"+ - "\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0"+ - "\23\134\1\u0257\1\125\2\0\1\134\2\0\17\134\1\0"+ - "\1\125\10\0\6\134\1\0\11\134\1\0\1\134\1\0"+ - "\1\125\1\u010e\1\134\1\0\2\134\14\0\17\134\1\u0258"+ - "\4\134\1\125\2\0\1\134\2\0\17\134\1\0\1\125"+ - "\10\0\6\134\1\0\11\134\1\0\1\134\1\0\1\125"+ - "\1\u010e\1\134\1\0\2\134\14\0\12\134\1\u0259\11\134"+ - "\1\125\2\0\1\134\2\0\17\134\1\0\1\125\10\0"+ - "\6\134\1\0\11\134\1\0\1\u025a\1\0\1\125\1\u010e"+ - "\1\134\1\0\2\134\14\0\24\134\1\125\2\0\1\134"+ - "\2\0\17\134\1\0\1\125\10\0\6\134\1\0\11\134"+ - "\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134"+ - "\14\0\4\134\1\u025b\17\134\1\125\2\0\1\134\2\0"+ - "\17\134\1\0\1\125\10\0\6\134\1\0\11\134\1\0"+ - "\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0"+ - "\17\134\1\u0136\4\134\1\125\2\0\1\134\2\0\17\134"+ - "\1\0\1\125\10\0\6\134\1\0\11\134\1\0\1\134"+ - "\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0\4\134"+ - "\1\u025c\17\134\1\125\2\0\1\134\2\0\17\134\1\0"+ - "\1\125\10\0\6\134\1\0\11\134\1\0\1\134\1\0"+ - "\1\125\1\u010e\1\134\1\0\2\134\14\0\2\134\1\u025d"+ - "\21\134\1\125\2\0\1\134\2\0\17\134\1\0\1\125"+ - "\10\0\6\134\1\0\11\134\1\0\1\134\1\0\1\125"+ - "\1\u010e\1\134\1\0\2\134\14\0\7\134\1\u025e\14\134"+ - "\1\125\2\0\1\134\2\0\17\134\1\0\1\125\10\0"+ - "\6\134\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e"+ - "\1\134\1\0\2\134\14\0\4\134\1\u01d6\17\134\1\125"+ - "\2\0\1\134\2\0\17\134\1\0\1\125\10\0\6\134"+ - "\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134"+ - "\1\0\2\134\14\0\7\134\1\u025f\14\134\1\125\2\0"+ - "\1\134\2\0\17\134\1\0\1\125\10\0\6\134\1\0"+ - "\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0"+ - "\2\134\14\0\12\134\1\u0260\11\134\1\125\2\0\1\134"+ - "\2\0\17\134\1\0\1\125\10\0\6\134\1\0\11\134"+ - "\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134"+ - "\14\0\12\134\1\u025d\11\134\1\125\2\0\1\134\2\0"+ - "\17\134\1\0\1\125\10\0\6\134\1\0\11\134\1\0"+ - "\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0"+ - "\13\134\1\u01cc\10\134\1\125\2\0\1\134\2\0\17\134"+ - "\1\0\1\125\10\0\6\134\1\0\11\134\1\0\1\134"+ - "\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0\10\134"+ - "\1\u025c\13\134\1\125\2\0\1\134\2\0\17\134\1\0"+ - "\1\125\10\0\6\134\1\0\11\134\1\0\1\134\1\0"+ - "\1\125\1\u010e\1\134\1\0\2\134\14\0\22\134\1\u0261"+ - "\1\134\1\125\2\0\1\134\2\0\17\134\1\0\1\125"+ - "\10\0\6\134\1\0\11\134\1\0\1\134\1\0\1\125"+ - "\1\u010e\1\134\1\0\2\134\14\0\4\134\1\u0262\17\134"+ - "\1\125\2\0\1\134\2\0\17\134\1\0\1\125\10\0"+ - "\6\134\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e"+ - "\1\134\1\0\2\134\14\0\13\134\1\u0263\10\134\1\125"+ - "\2\0\1\134\2\0\17\134\1\0\1\125\10\0\6\134"+ - "\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134"+ - "\1\0\2\134\14\0\21\134\1\u0264\2\134\1\125\2\0"+ - "\1\134\2\0\17\134\1\0\1\125\10\0\6\134\1\0"+ - "\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0"+ - "\2\134\14\0\20\134\1\u011c\3\134\1\125\2\0\1\134"+ - "\2\0\17\134\1\0\1\125\10\0\6\134\1\0\11\134"+ - "\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134"+ - "\14\0\6\134\1\u0265\15\134\1\125\2\0\1\134\2\0"+ - "\17\134\1\0\1\125\10\0\6\134\1\0\11\134\1\0"+ - "\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0"+ - "\12\134\1\u0266\11\134\1\125\2\0\1\134\2\0\17\134"+ - "\1\0\1\125\10\0\6\134\1\0\11\134\1\0\1\134"+ - "\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0\10\134"+ - "\1\u0267\13\134\1\125\2\0\1\134\2\0\17\134\1\0"+ - "\1\125\10\0\6\134\1\0\11\134\1\0\1\134\1\0"+ - "\1\125\1\u010e\1\134\1\0\2\134\14\0\17\134\1\u0268"+ - "\4\134\1\125\2\0\1\134\2\0\17\134\1\0\1\125"+ - "\10\0\6\134\1\0\11\134\1\0\1\134\1\0\1\125"+ - "\1\u010e\1\134\1\0\2\134\14\0\3\134\1\u024c\20\134"+ - "\1\125\2\0\1\134\2\0\17\134\1\0\1\125\10\0"+ - "\6\134\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e"+ - "\1\134\1\0\2\134\14\0\11\134\1\u011c\12\134\1\125"+ - "\2\0\1\134\2\0\17\134\1\0\1\125\10\0\6\134"+ - "\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134"+ - "\1\0\2\134\14\0\12\134\1\u0269\11\134\1\125\2\0"+ - "\1\134\2\0\17\134\1\0\1\125\10\0\6\134\1\0"+ - "\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0"+ - "\2\134\14\0\12\134\1\u026a\11\134\1\125\2\0\1\134"+ - "\2\0\17\134\1\0\1\125\10\0\6\134\1\0\11\134"+ - "\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134"+ - "\14\0\10\134\1\u026b\13\134\1\125\2\0\1\134\2\0"+ - "\17\134\1\0\1\125\10\0\6\134\1\0\11\134\1\0"+ - "\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0"+ - "\17\134\1\u0256\4\134\1\125\2\0\1\134\2\0\17\134"+ - "\1\0\1\125\10\0\6\134\1\0\11\134\1\0\1\134"+ - "\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0\6\134"+ - "\1\u011c\15\134\1\125\2\0\1\134\2\0\17\134\1\0"+ - "\1\125\10\0\6\134\1\0\11\134\1\0\1\134\1\0"+ - "\1\125\1\u010e\1\134\1\0\2\134\14\0\10\134\1\u01d7"+ - "\13\134\1\125\2\0\1\134\2\0\17\134\13\0\1\u026c"+ - "\7\0\1\u026c\1\0\4\u026c\11\0\1\u026c\23\0\1\u026c"+ - "\1\0\2\u026c\1\0\1\u026c\2\0\1\u026c\3\0\1\u026c"+ - "\7\0\1\u026c\3\0\1\u026c\6\0\1\u026c\15\0\1\u026d"+ - "\7\0\1\u026d\1\0\4\u026d\11\0\1\u026d\23\0\1\u026d"+ - "\1\0\2\u026d\1\0\1\u026d\2\0\1\u026d\3\0\1\u026d"+ - "\7\0\1\u026d\3\0\1\u026d\6\0\1\u026d\15\0\1\u026e"+ - "\52\0\1\u026e\136\0\1\u026f\130\0\1\u01ff\105\0\1\u0270"+ - "\117\0\1\u0271\76\0\1\u0272\52\0\1\u0272\136\0\1\u0273"+ - "\130\0\1\u0204\105\0\1\u0274\117\0\1\u0275\102\0\1\u0276"+ - "\43\0\1\u0276\137\0\1\u0277\113\0\1\u0278\146\0\1\u0279"+ - "\113\0\1\u020d\134\0\1\u027a\121\0\1\u027b\131\0\1\u027c"+ - "\131\0\1\u027d\143\0\1\u027e\124\0\1\u027f\115\0\1\u0280"+ - "\127\0\1\u0281\5\0\1\u0282\127\0\1\u0217\120\0\1\u0283"+ - "\125\0\1\u0284\134\0\1\u0285\132\0\1\u0286\133\0\1\u0287"+ - "\124\0\1\u0288\132\0\1\u0289\44\0\3\271\1\u028a\2\271"+ - "\1\0\10\271\2\0\1\271\5\0\2\271\14\0\1\u028a"+ - "\23\271\3\0\1\271\2\0\17\271\12\0\6\271\1\0"+ - "\1\271\1\u028b\6\271\2\0\1\271\5\0\2\271\14\0"+ - "\10\271\1\u028b\13\271\3\0\1\271\2\0\17\271\54\0"+ - "\1\u021f\15\0\1\u0179\46\0\1\u028c\124\0\2\u028d\1\0"+ - "\7\u0220\1\0\10\u0220\2\u028d\1\u0220\1\0\1\u028d\1\0"+ - "\1\u0220\1\u028d\2\u0220\2\u028d\1\0\2\u028d\1\0\5\u028d"+ - "\1\0\24\u0220\3\u028d\1\u0220\2\u028d\17\u0220\1\0\2\63"+ - "\1\0\1\63\1\0\2\63\2\0\4\63\1\u01a3\1\63"+ - "\1\0\26\63\1\0\25\63\1\u01a3\12\63\1\0\22\63"+ - "\1\0\1\63\1\0\2\63\2\0\6\63\1\0\26\63"+ - "\1\0\30\63\1\u0184\7\63\1\0\10\63\1\u0184\11\63"+ - "\1\0\1\63\1\0\2\63\2\0\6\63\1\0\26\63"+ - "\1\0\14\63\1\324\23\63\1\0\3\63\1\324\16\63"+ - "\1\0\1\63\1\0\2\63\2\0\3\63\1\u0231\2\63"+ - "\1\0\26\63\1\0\7\63\1\u0231\30\63\1\0\22\63"+ - "\1\0\1\63\1\0\2\63\2\0\1\63\1\u01a3\4\63"+ - "\1\0\26\63\1\0\16\63\1\u01a3\21\63\1\0\22\63"+ - "\1\0\1\63\1\0\2\63\2\0\1\63\1\u0184\4\63"+ - "\1\0\26\63\1\0\16\63\1\u0184\21\63\1\0\22\63"+ - "\1\0\1\63\1\0\2\63\2\0\2\63\1\u028e\3\63"+ - "\1\0\26\63\1\0\11\63\1\u028e\26\63\1\0\22\63"+ - "\1\0\1\63\1\0\2\63\2\0\6\63\1\0\2\63"+ - "\1\u028f\23\63\1\0\21\63\1\u022e\4\63\1\u028f\11\63"+ - "\1\0\1\63\1\u022e\20\63\1\0\1\63\1\0\2\63"+ - "\2\0\6\63\1\0\26\63\1\0\21\63\1\u0290\16\63"+ - "\1\0\1\63\1\u0290\20\63\1\0\1\63\1\0\2\63"+ - "\2\0\6\63\1\0\26\63\1\0\20\63\1\u0291\17\63"+ - "\1\0\5\63\1\u0291\14\63\1\0\1\63\1\0\2\63"+ - "\2\0\6\63\1\0\26\63\1\0\27\63\1\u0184\10\63"+ - "\1\0\4\63\1\u0184\15\63\1\0\1\63\1\0\2\63"+ - "\2\0\6\63\1\0\26\63\1\0\14\63\1\u0292\23\63"+ - "\1\0\3\63\1\u0292\16\63\1\0\1\63\1\0\2\63"+ - "\2\0\6\63\1\0\26\63\1\0\21\63\1\u0293\16\63"+ - "\1\0\1\63\1\u0293\20\63\1\0\1\63\1\0\2\63"+ - "\2\0\6\63\1\0\26\63\1\0\14\63\1\u0103\23\63"+ - "\1\0\3\63\1\u0103\16\63\1\0\1\63\1\0\2\63"+ - "\2\0\5\63\1\u0294\1\0\26\63\1\0\13\63\1\u0294"+ - "\24\63\1\0\22\63\1\0\1\63\1\0\2\63\2\0"+ - "\6\63\1\0\26\63\1\0\30\63\1\u0295\7\63\1\0"+ - "\10\63\1\u0295\11\63\1\0\1\63\1\0\2\63\2\0"+ - "\6\63\1\0\26\63\1\0\12\63\1\366\25\63\1\0"+ - "\2\63\1\366\17\63\1\0\1\63\1\0\2\63\2\0"+ - "\6\63\1\0\12\63\1\u022e\13\63\1\0\40\63\1\0"+ - "\6\63\1\u022e\13\63\1\0\1\63\1\0\2\63\2\0"+ - "\6\63\1\0\21\63\1\u0296\4\63\1\0\23\63\1\u0296"+ - "\14\63\1\0\22\63\1\0\1\63\1\0\2\63\2\0"+ - "\6\63\1\0\2\63\1\u0297\23\63\1\0\26\63\1\u0297"+ - "\11\63\1\0\22\63\1\0\1\63\1\0\2\63\2\0"+ - "\6\63\1\0\26\63\1\0\20\63\1\u0298\17\63\1\0"+ - "\5\63\1\u0298\14\63\1\0\1\63\1\0\2\63\2\0"+ - "\2\63\1\u0184\3\63\1\0\26\63\1\0\11\63\1\u0184"+ - "\26\63\1\0\22\63\1\0\1\63\1\0\2\63\2\0"+ - "\6\63\1\0\26\63\1\0\21\63\1\u0299\16\63\1\0"+ - "\1\63\1\u0299\20\63\1\0\1\63\1\0\2\63\2\0"+ - "\6\63\1\0\26\63\1\0\12\63\1\324\25\63\1\0"+ - "\2\63\1\324\17\63\1\0\1\63\1\0\2\63\2\0"+ - "\3\63\1\u029a\2\63\1\0\26\63\1\0\7\63\1\u029a"+ - "\30\63\1\0\22\63\1\0\1\63\1\0\2\63\2\0"+ - "\5\63\1\u029b\1\0\1\63\1\u029c\24\63\1\0\10\63"+ - "\1\u029d\2\63\1\u029b\3\63\1\u029c\20\63\1\0\7\63"+ - "\1\u029d\12\63\1\0\1\63\1\0\2\63\2\0\6\63"+ - "\1\0\26\63\1\0\14\63\1\u029e\23\63\1\0\3\63"+ - "\1\u029e\16\63\1\0\1\63\1\0\2\63\2\0\1\63"+ - "\1\317\4\63\1\0\26\63\1\0\16\63\1\317\21\63"+ - "\1\0\22\63\1\0\1\63\1\0\2\63\2\0\6\63"+ - "\1\0\2\63\1\u01a3\23\63\1\0\26\63\1\u01a3\11\63"+ - "\1\0\22\63\1\0\1\63\1\0\2\63\2\0\6\63"+ - "\1\0\2\63\1\u029f\23\63\1\0\26\63\1\u029f\11\63"+ - "\1\0\22\63\1\0\1\63\1\0\2\63\2\0\3\63"+ - "\1\u02a0\2\63\1\0\26\63\1\0\7\63\1\u02a0\30\63"+ - "\1\0\22\63\1\0\1\63\1\0\2\63\2\0\6\63"+ - "\1\0\12\63\1\u02a1\13\63\1\0\40\63\1\0\6\63"+ - "\1\u02a1\13\63\1\0\1\63\1\0\2\63\2\0\6\63"+ - "\1\0\2\63\1\366\23\63\1\0\26\63\1\366\11\63"+ - "\1\0\20\63\13\0\1\u02a2\44\0\1\u02a2\47\0\1\125"+ - "\10\0\1\125\1\u02a3\4\125\1\0\2\125\1\u02a3\1\125"+ - "\4\u02a3\1\125\1\0\1\125\1\0\3\125\1\0\1\125"+ - "\1\u02a3\14\0\7\125\1\u02a3\1\125\2\u02a3\1\125\1\u02a3"+ - "\2\125\1\u02a3\3\125\1\u02a3\1\125\2\0\1\125\2\0"+ - "\1\125\1\u02a3\3\125\1\u02a3\6\125\1\u02a3\2\125\1\0"+ - "\1\125\10\0\6\134\1\0\11\134\1\0\1\134\1\0"+ - "\1\125\1\u010e\1\134\1\0\2\134\14\0\5\134\1\u02a4"+ - "\16\134\1\125\2\0\1\134\2\0\17\134\1\0\1\125"+ - "\10\0\6\134\1\0\11\134\1\0\1\134\1\0\1\125"+ - "\1\u010e\1\134\1\0\2\134\14\0\2\134\1\u02a5\21\134"+ - "\1\125\2\0\1\134\2\0\17\134\1\0\1\125\10\0"+ - "\6\134\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e"+ - "\1\134\1\0\2\134\14\0\12\134\1\u02a6\11\134\1\125"+ - "\2\0\1\134\2\0\17\134\1\0\1\125\10\0\6\134"+ - "\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134"+ - "\1\0\2\134\14\0\5\134\1\u02a7\16\134\1\125\2\0"+ - "\1\134\2\0\17\134\1\0\1\125\10\0\6\134\1\0"+ - "\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0"+ - "\2\134\14\0\24\134\1\125\2\0\1\134\2\0\3\134"+ - "\1\u0267\13\134\1\0\1\125\10\0\6\134\1\0\11\134"+ - "\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134"+ - "\14\0\2\134\1\u0255\21\134\1\125\2\0\1\134\2\0"+ - "\17\134\1\0\1\125\10\0\6\134\1\0\11\134\1\0"+ - "\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0"+ - "\17\134\1\u02a8\4\134\1\125\2\0\1\134\2\0\17\134"+ - "\1\0\1\125\10\0\6\134\1\0\11\134\1\0\1\134"+ - "\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0\2\134"+ - "\1\u02a9\21\134\1\125\2\0\1\134\2\0\17\134\1\0"+ - "\1\125\10\0\6\134\1\0\11\134\1\0\1\134\1\0"+ - "\1\125\1\u010e\1\134\1\0\2\134\14\0\13\134\1\u02aa"+ - "\10\134\1\125\2\0\1\134\2\0\17\134\1\0\1\125"+ - "\10\0\6\134\1\0\11\134\1\0\1\134\1\0\1\125"+ - "\1\u010e\1\134\1\0\2\134\14\0\24\134\1\125\2\0"+ - "\1\134\2\0\1\u02ab\16\134\1\0\1\125\10\0\6\134"+ - "\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134"+ - "\1\0\2\134\14\0\3\134\1\u02ac\20\134\1\125\2\0"+ - "\1\134\2\0\17\134\1\0\1\125\10\0\6\134\1\0"+ - "\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0"+ - "\2\134\14\0\22\134\1\u01d7\1\134\1\125\2\0\1\134"+ - "\2\0\17\134\1\0\1\125\10\0\6\134\1\0\11\134"+ - "\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134"+ - "\14\0\1\u02ad\23\134\1\125\2\0\1\134\2\0\17\134"+ - "\1\0\1\125\10\0\6\134\1\0\11\134\1\0\1\134"+ - "\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0\4\134"+ - "\1\u011c\17\134\1\125\2\0\1\134\2\0\17\134\1\0"+ - "\1\125\10\0\6\134\1\0\11\134\1\0\1\134\1\0"+ - "\1\125\1\u010e\1\134\1\0\2\134\14\0\10\134\1\u01f7"+ - "\13\134\1\125\2\0\1\134\2\0\17\134\1\0\1\125"+ - "\10\0\6\134\1\0\11\134\1\0\1\134\1\0\1\125"+ - "\1\u010e\1\134\1\0\2\134\14\0\4\134\1\u01d7\17\134"+ - "\1\125\2\0\1\134\2\0\17\134\1\0\1\125\10\0"+ - "\6\134\1\0\11\134\1\0\1\u02ae\1\0\1\125\1\u010e"+ - "\1\134\1\0\2\134\14\0\24\134\1\125\2\0\1\134"+ - "\2\0\17\134\1\0\1\125\10\0\6\134\1\0\11\134"+ - "\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134"+ - "\14\0\1\134\1\u02af\22\134\1\125\2\0\1\134\2\0"+ - "\17\134\1\0\1\125\10\0\6\134\1\0\11\134\1\0"+ - "\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0"+ - "\2\134\1\u02b0\21\134\1\125\2\0\1\134\2\0\17\134"+ - "\1\0\1\125\10\0\6\134\1\0\11\134\1\0\1\134"+ - "\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0\1\u02b1"+ - "\23\134\1\125\2\0\1\134\2\0\17\134\1\0\1\125"+ - "\10\0\6\134\1\0\11\134\1\0\1\134\1\0\1\125"+ - "\1\u010e\1\134\1\0\2\134\14\0\4\134\1\u0256\17\134"+ - "\1\125\2\0\1\134\2\0\17\134\1\0\1\125\10\0"+ - "\6\134\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e"+ - "\1\134\1\0\2\134\14\0\6\134\1\u02b2\15\134\1\125"+ - "\2\0\1\134\2\0\17\134\1\0\1\125\10\0\6\134"+ - "\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134"+ - "\1\0\2\134\14\0\4\134\1\u02b3\17\134\1\125\2\0"+ - "\1\134\2\0\17\134\1\0\1\125\10\0\6\134\1\0"+ - "\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0"+ - "\2\134\14\0\10\134\1\u02b4\13\134\1\125\2\0\1\134"+ - "\2\0\17\134\1\0\1\125\10\0\6\134\1\0\11\134"+ - "\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134"+ - "\14\0\12\134\1\u0258\11\134\1\125\2\0\1\134\2\0"+ - "\17\134\1\0\1\125\10\0\6\134\1\0\11\134\1\0"+ - "\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0"+ - "\17\134\1\u02b5\4\134\1\125\2\0\1\134\2\0\17\134"+ - "\1\0\1\125\10\0\6\134\1\0\11\134\1\0\1\134"+ - "\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0\17\134"+ - "\1\u02b6\4\134\1\125\2\0\1\134\2\0\17\134\1\0"+ - "\1\125\10\0\6\134\1\0\11\134\1\0\1\134\1\0"+ - "\1\125\1\u010e\1\134\1\0\2\134\14\0\12\134\1\u02b7"+ - "\11\134\1\125\2\0\1\134\2\0\17\134\1\0\1\125"+ - "\10\0\6\134\1\0\11\134\1\0\1\134\1\0\1\125"+ - "\1\u010e\1\134\1\0\2\134\14\0\16\134\1\u02b8\5\134"+ - "\1\125\2\0\1\134\2\0\17\134\1\0\1\125\10\0"+ - "\6\134\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e"+ - "\1\134\1\0\2\134\14\0\5\134\1\u02b9\16\134\1\125"+ - "\2\0\1\134\2\0\17\134\1\0\1\125\10\0\6\134"+ - "\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134"+ - "\1\0\2\134\14\0\4\134\1\u0147\17\134\1\125\2\0"+ - "\1\134\2\0\17\134\1\0\1\125\10\0\6\134\1\0"+ - "\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0"+ - "\2\134\14\0\21\134\1\u011c\2\134\1\125\2\0\1\134"+ - "\2\0\17\134\1\0\1\125\10\0\6\134\1\0\11\134"+ - "\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134"+ - "\14\0\17\134\1\u02ba\4\134\1\125\2\0\1\134\2\0"+ - "\17\134\14\0\1\u02bb\44\0\1\u02bb\122\0\1\u0270\15\0"+ - "\1\u01ff\46\0\1\u02bc\124\0\2\u02bd\1\0\7\u0271\1\0"+ - "\10\u0271\2\u02bd\1\u0271\1\0\1\u02bd\1\0\1\u0271\1\u02bd"+ - "\2\u0271\2\u02bd\1\0\2\u02bd\1\0\5\u02bd\1\0\24\u0271"+ - "\3\u02bd\1\u0271\2\u02bd\17\u0271\14\0\1\u02be\44\0\1\u02be"+ - "\122\0\1\u0274\15\0\1\u0204\46\0\1\u02bf\124\0\2\u02c0"+ - "\1\0\7\u0275\1\0\10\u0275\2\u02c0\1\u0275\1\0\1\u02c0"+ - "\1\0\1\u0275\1\u02c0\2\u0275\2\u02c0\1\0\2\u02c0\1\0"+ - "\5\u02c0\1\0\24\u0275\3\u02c0\1\u0275\2\u02c0\17\u0275\21\0"+ - "\1\u02c1\52\0\1\u02c1\116\0\1\u027e\125\0\1\u02c2\141\0"+ - "\1\u02c3\130\0\1\u02c4\113\0\1\u02c5\101\0\1\u02c6\173\0"+ - "\1\u02c7\117\0\1\u02c8\141\0\1\u027c\107\0\1\u027c\132\0"+ - "\1\u02c4\123\0\1\u02c9\142\0\1\u0282\70\0\1\u02ca\176\0"+ - "\1\u02cb\110\0\1\u02cc\123\0\1\u02cd\132\0\1\u02ce\57\0"+ - "\4\271\1\u02cf\1\271\1\0\10\271\2\0\1\271\5\0"+ - "\2\271\14\0\16\271\1\u02cf\5\271\3\0\1\271\2\0"+ - "\17\271\12\0\6\271\1\0\2\271\1\u02d0\5\271\2\0"+ - "\1\271\5\0\2\271\14\0\17\271\1\u02d0\4\271\3\0"+ - "\1\271\2\0\17\271\11\0\1\u0220\117\0\2\63\1\0"+ - "\1\63\1\0\2\63\2\0\6\63\1\0\26\63\1\0"+ - "\12\63\1\u02d1\25\63\1\0\2\63\1\u02d1\17\63\1\0"+ - "\1\63\1\0\2\63\2\0\6\63\1\0\26\63\1\0"+ - "\14\63\1\u01a3\23\63\1\0\3\63\1\u01a3\16\63\1\0"+ - "\1\63\1\0\2\63\2\0\1\110\5\63\1\0\26\63"+ - "\1\0\22\63\1\110\15\63\1\0\22\63\1\0\1\63"+ - "\1\0\2\63\2\0\6\63\1\0\2\63\1\u02d2\23\63"+ - "\1\0\26\63\1\u02d2\11\63\1\0\22\63\1\0\1\63"+ - "\1\0\2\63\2\0\5\63\1\u02d3\1\0\26\63\1\0"+ - "\13\63\1\u02d3\24\63\1\0\22\63\1\0\1\63\1\0"+ - "\2\63\2\0\2\63\1\u02d4\3\63\1\0\26\63\1\0"+ - "\11\63\1\u02d4\26\63\1\0\22\63\1\0\1\63\1\0"+ - "\2\63\2\0\1\u02d5\5\63\1\0\26\63\1\0\22\63"+ - "\1\u02d5\15\63\1\0\22\63\1\0\1\63\1\0\2\63"+ - "\2\0\6\63\1\0\26\63\1\0\40\63\1\0\11\63"+ - "\1\u02d6\10\63\1\0\1\63\1\0\2\63\2\0\6\63"+ - "\1\0\26\63\1\0\12\63\1\u028f\25\63\1\0\2\63"+ - "\1\u028f\17\63\1\0\1\63\1\0\2\63\2\0\1\u023f"+ - "\5\63\1\0\26\63\1\0\22\63\1\u023f\15\63\1\0"+ - "\22\63\1\0\1\63\1\0\2\63\2\0\6\63\1\0"+ - "\26\63\1\0\27\63\1\u02d7\10\63\1\0\4\63\1\u02d7"+ - "\15\63\1\0\1\63\1\0\2\63\2\0\6\63\1\0"+ - "\1\63\1\u0290\24\63\1\0\17\63\1\u0290\20\63\1\0"+ - "\22\63\1\0\1\63\1\0\2\63\2\0\6\63\1\0"+ - "\2\63\1\u02d8\23\63\1\0\26\63\1\u02d8\11\63\1\0"+ - "\22\63\1\0\1\63\1\0\2\63\2\0\3\63\1\357"+ - "\2\63\1\0\26\63\1\0\7\63\1\357\30\63\1\0"+ - "\22\63\1\0\1\63\1\0\2\63\2\0\2\63\1\u02d9"+ - "\3\63\1\0\26\63\1\0\11\63\1\u02d9\26\63\1\0"+ - "\22\63\1\0\1\63\1\0\2\63\2\0\6\63\1\0"+ - "\1\u01a2\25\63\1\0\24\63\1\u01a2\13\63\1\0\22\63"+ - "\1\0\1\63\1\0\2\63\2\0\1\u0290\5\63\1\0"+ - "\26\63\1\0\22\63\1\u0290\15\63\1\0\22\63\1\0"+ - "\1\63\1\0\2\63\2\0\1\63\1\u02da\4\63\1\0"+ - "\26\63\1\0\16\63\1\u02da\21\63\1\0\22\63\1\0"+ - "\1\63\1\0\2\63\2\0\6\63\1\0\2\63\1\u0184"+ - "\23\63\1\0\26\63\1\u0184\11\63\1\0\20\63\14\0"+ - "\1\u02db\41\0\1\u02db\51\0\1\125\10\0\1\125\1\u02dc"+ - "\4\125\1\0\2\125\1\u02dc\1\125\4\u02dc\1\125\1\0"+ - "\1\125\1\0\3\125\1\0\1\125\1\u02dc\14\0\7\125"+ - "\1\u02dc\1\125\2\u02dc\1\125\1\u02dc\2\125\1\u02dc\3\125"+ - "\1\u02dc\1\125\2\0\1\125\2\0\1\125\1\u02dc\3\125"+ - "\1\u02dc\6\125\1\u02dc\2\125\1\0\1\125\10\0\6\134"+ - "\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134"+ - "\1\0\2\134\14\0\1\u02dd\23\134\1\125\2\0\1\134"+ - "\2\0\17\134\1\0\1\125\10\0\6\134\1\0\11\134"+ - "\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134"+ - "\14\0\14\134\1\u02de\7\134\1\125\2\0\1\134\2\0"+ - "\17\134\1\0\1\125\10\0\6\134\1\0\11\134\1\0"+ - "\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0"+ - "\5\134\1\u02df\16\134\1\125\2\0\1\134\2\0\17\134"+ - "\1\0\1\125\10\0\6\134\1\0\11\134\1\0\1\134"+ - "\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0\1\u02e0"+ - "\23\134\1\125\2\0\1\134\2\0\17\134\1\0\1\125"+ - "\10\0\6\134\1\0\11\134\1\0\1\134\1\0\1\125"+ - "\1\u010e\1\134\1\0\2\134\14\0\20\134\1\u02e1\3\134"+ - "\1\125\2\0\1\134\2\0\17\134\1\0\1\125\10\0"+ - "\6\134\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e"+ - "\1\134\1\0\2\134\14\0\5\134\1\u02e2\16\134\1\125"+ - "\2\0\1\134\2\0\17\134\1\0\1\125\10\0\6\134"+ - "\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134"+ - "\1\0\2\134\14\0\1\u02e3\23\134\1\125\2\0\1\134"+ - "\2\0\17\134\1\0\1\125\10\0\6\134\1\0\11\134"+ - "\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134"+ - "\14\0\14\134\1\u011c\7\134\1\125\2\0\1\134\2\0"+ - "\17\134\1\0\1\125\10\0\6\134\1\0\11\134\1\0"+ - "\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0"+ - "\5\134\1\u02e4\16\134\1\125\2\0\1\134\2\0\17\134"+ - "\1\0\1\125\10\0\6\134\1\0\11\134\1\0\1\134"+ - "\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0\10\134"+ - "\1\u0255\13\134\1\125\2\0\1\134\2\0\17\134\1\0"+ - "\1\125\10\0\6\134\1\0\11\134\1\0\1\134\1\0"+ - "\1\125\1\u010e\1\134\1\0\2\134\14\0\1\134\1\u01df"+ - "\22\134\1\125\2\0\1\134\2\0\17\134\1\0\1\125"+ - "\10\0\6\134\1\0\11\134\1\0\1\134\1\0\1\125"+ - "\1\u010e\1\134\1\0\2\134\14\0\12\134\1\u02e5\11\134"+ - "\1\125\2\0\1\134\2\0\17\134\1\0\1\125\10\0"+ - "\6\134\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e"+ - "\1\134\1\0\2\134\14\0\7\134\1\u011c\14\134\1\125"+ - "\2\0\1\134\2\0\17\134\1\0\1\125\10\0\6\134"+ - "\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134"+ - "\1\0\2\134\14\0\2\134\1\u02e6\21\134\1\125\2\0"+ - "\1\134\2\0\17\134\1\0\1\125\10\0\6\134\1\0"+ - "\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0"+ - "\2\134\14\0\1\u02e7\23\134\1\125\2\0\1\134\2\0"+ - "\17\134\1\0\1\125\10\0\6\134\1\0\11\134\1\0"+ - "\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0"+ - "\10\134\1\u02e8\13\134\1\125\2\0\1\134\2\0\17\134"+ - "\1\0\1\125\10\0\6\134\1\0\11\134\1\0\1\134"+ - "\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0\7\134"+ - "\1\u02e9\14\134\1\125\2\0\1\134\2\0\17\134\1\0"+ - "\1\125\10\0\3\134\1\u02ea\2\134\1\0\11\134\1\0"+ - "\1\134\1\0\1\125\1\u010e\1\134\1\0\1\134\1\u02eb"+ - "\14\0\24\134\1\125\2\0\1\134\2\0\17\134\1\0"+ - "\1\125\10\0\6\134\1\0\11\134\1\0\1\134\1\0"+ - "\1\125\1\u010e\1\134\1\0\2\134\14\0\1\134\1\u01d7"+ - "\22\134\1\125\2\0\1\134\2\0\17\134\1\0\1\125"+ - "\10\0\6\134\1\0\11\134\1\0\1\134\1\0\1\125"+ - "\1\u010e\1\134\1\0\2\134\14\0\17\134\1\u0267\4\134"+ - "\1\125\2\0\1\134\2\0\17\134\1\0\1\125\10\0"+ - "\6\134\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e"+ - "\1\134\1\0\2\134\14\0\11\134\1\u01ce\12\134\1\125"+ - "\2\0\1\134\2\0\17\134\1\0\1\125\10\0\6\134"+ - "\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134"+ - "\1\0\2\134\14\0\12\134\1\u02ec\11\134\1\125\2\0"+ - "\1\134\2\0\17\134\15\0\1\u02ed\41\0\1\u02ed\61\0"+ - "\1\u0271\133\0\1\u02ee\41\0\1\u02ee\61\0\1\u0275\140\0"+ - "\1\u02ef\44\0\1\u02ef\132\0\1\u02f0\117\0\1\u02f1\77\0"+ - "\1\u02f2\173\0\1\u020d\113\0\1\u02f3\3\0\1\u02f4\1\u02f5"+ - "\121\0\1\u027c\146\0\1\u02f6\130\0\1\u02f7\120\0\1\u027c"+ - "\124\0\1\u02f6\134\0\1\u027c\116\0\1\u02f6\125\0\1\u02f8"+ - "\60\0\5\271\1\u02f9\1\0\10\271\2\0\1\271\5\0"+ - "\2\271\14\0\4\271\1\u02f9\17\271\3\0\1\271\2\0"+ - "\17\271\1\0\2\63\1\0\1\63\1\0\2\63\2\0"+ - "\6\63\1\0\12\63\1\u0182\13\63\1\0\40\63\1\0"+ - "\6\63\1\u0182\13\63\1\0\1\63\1\0\2\63\2\0"+ - "\6\63\1\0\20\63\1\110\5\63\1\0\36\63\1\110"+ - "\1\63\1\0\22\63\1\0\1\63\1\0\2\63\2\0"+ - "\6\63\1\0\2\63\1\u02fa\23\63\1\0\26\63\1\u02fa"+ - "\11\63\1\0\22\63\1\0\1\63\1\0\2\63\2\0"+ - "\6\63\1\0\2\63\1\u01b1\23\63\1\0\26\63\1\u01b1"+ - "\11\63\1\0\22\63\1\0\1\63\1\0\2\63\2\0"+ - "\6\63\1\0\26\63\1\0\12\63\1\310\25\63\1\0"+ - "\2\63\1\310\17\63\1\0\1\63\1\0\2\63\2\0"+ - "\6\63\1\0\12\63\1\u02fb\13\63\1\0\40\63\1\0"+ - "\6\63\1\u02fb\13\63\1\0\1\63\1\0\2\63\2\0"+ - "\6\63\1\0\2\63\1\u0290\23\63\1\0\26\63\1\u0290"+ - "\11\63\1\0\22\63\1\0\1\63\1\0\2\63\2\0"+ - "\6\63\1\0\26\63\1\0\27\63\1\u02fc\10\63\1\0"+ - "\4\63\1\u02fc\15\63\1\0\1\63\1\0\2\63\2\0"+ - "\3\63\1\u0103\2\63\1\0\26\63\1\0\7\63\1\u0103"+ - "\30\63\1\0\22\63\1\0\1\63\1\0\2\63\2\0"+ - "\6\63\1\0\26\63\1\0\12\63\1\u01a9\25\63\1\0"+ - "\2\63\1\u01a9\15\63\15\0\1\u02fd\56\0\1\u02fd\33\0"+ - "\1\125\10\0\1\125\1\134\4\125\1\0\2\125\1\134"+ - "\1\125\4\134\1\125\1\0\1\125\1\0\3\125\1\0"+ - "\1\125\1\134\14\0\7\125\1\134\1\125\2\134\1\125"+ - "\1\134\2\125\1\134\3\125\1\134\1\125\2\0\1\125"+ - "\2\0\1\125\1\134\3\125\1\134\6\125\1\134\2\125"+ - "\1\0\1\125\10\0\6\134\1\0\11\134\1\0\1\134"+ - "\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0\4\134"+ - "\1\u02e8\17\134\1\125\2\0\1\134\2\0\17\134\1\0"+ - "\1\125\10\0\6\134\1\0\11\134\1\0\1\134\1\0"+ - "\1\125\1\u010e\1\134\1\0\2\134\14\0\12\134\1\u02fe"+ - "\11\134\1\125\2\0\1\134\2\0\17\134\1\0\1\125"+ - "\10\0\6\134\1\0\11\134\1\0\1\134\1\0\1\125"+ - "\1\u010e\1\134\1\0\2\134\14\0\7\134\1\u01d0\14\134"+ - "\1\125\2\0\1\134\2\0\17\134\1\0\1\125\10\0"+ - "\6\134\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e"+ - "\1\134\1\0\2\134\14\0\4\134\1\u02b8\17\134\1\125"+ - "\2\0\1\134\2\0\17\134\1\0\1\125\10\0\6\134"+ - "\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134"+ - "\1\0\2\134\14\0\17\134\1\u02ff\4\134\1\125\2\0"+ - "\1\134\2\0\17\134\1\0\1\125\10\0\6\134\1\0"+ - "\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0"+ - "\2\134\14\0\17\134\1\u0300\4\134\1\125\2\0\1\134"+ - "\2\0\17\134\1\0\1\125\10\0\6\134\1\0\11\134"+ - "\1\0\1\u01d7\1\0\1\125\1\u010e\1\134\1\0\2\134"+ - "\14\0\24\134\1\125\2\0\1\134\2\0\17\134\1\0"+ - "\1\125\10\0\6\134\1\0\11\134\1\0\1\134\1\0"+ - "\1\125\1\u010e\1\134\1\0\2\134\14\0\7\134\1\u0255"+ - "\14\134\1\125\2\0\1\134\2\0\17\134\1\0\1\125"+ - "\10\0\6\134\1\0\11\134\1\0\1\134\1\0\1\125"+ - "\1\u010e\1\134\1\0\2\134\14\0\3\134\1\u0301\20\134"+ - "\1\125\2\0\1\134\2\0\17\134\1\0\1\125\10\0"+ - "\6\134\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e"+ - "\1\134\1\0\2\134\14\0\3\134\1\u0302\20\134\1\125"+ - "\2\0\1\134\2\0\17\134\1\0\1\125\10\0\6\134"+ - "\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134"+ - "\1\0\2\134\14\0\15\134\1\u011c\6\134\1\125\2\0"+ - "\1\134\2\0\17\134\1\0\1\125\10\0\6\134\1\0"+ - "\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0"+ - "\2\134\14\0\4\134\1\u0303\17\134\1\125\2\0\1\134"+ - "\2\0\17\134\1\0\1\125\10\0\6\134\1\0\11\134"+ - "\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134"+ - "\14\0\5\134\1\u0304\16\134\1\125\2\0\1\134\2\0"+ - "\17\134\1\0\1\125\10\0\6\134\1\0\11\134\1\0"+ - "\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0"+ - "\10\134\1\u0305\13\134\1\125\2\0\1\134\2\0\17\134"+ - "\1\0\1\125\10\0\6\134\1\0\11\134\1\0\1\134"+ - "\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0\5\134"+ - "\1\u0256\16\134\1\125\2\0\1\134\2\0\17\134\16\0"+ - "\1\u0306\56\0\1\u0306\50\0\1\u0307\56\0\1\u0307\55\0"+ - "\1\u0308\52\0\1\u0308\114\0\1\u0309\125\0\1\u02f7\130\0"+ - "\1\u02f3\3\0\1\u02f4\134\0\1\u030a\121\0\1\u030b\133\0"+ - "\1\u0284\134\0\1\u030c\127\0\1\u027c\114\0\1\u030d\45\0"+ - "\2\63\1\0\1\63\1\0\2\63\2\0\6\63\1\0"+ - "\20\63\1\u01a3\5\63\1\0\36\63\1\u01a3\1\63\1\0"+ - "\22\63\1\0\1\63\1\0\2\63\2\0\6\63\1\0"+ - "\26\63\1\0\12\63\1\313\25\63\1\0\2\63\1\313"+ - "\17\63\1\0\1\63\1\0\2\63\2\0\4\63\1\u030e"+ - "\1\63\1\0\26\63\1\0\25\63\1\u030e\12\63\1\0"+ - "\20\63\16\0\1\u030f\43\0\1\u030f\45\0\1\125\10\0"+ - "\6\134\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e"+ - "\1\134\1\0\2\134\14\0\7\134\1\u01d7\14\134\1\125"+ - "\2\0\1\134\2\0\17\134\1\0\1\125\10\0\6\134"+ - "\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134"+ - "\1\0\2\134\14\0\5\134\1\u0310\16\134\1\125\2\0"+ - "\1\134\2\0\17\134\1\0\1\125\10\0\6\134\1\0"+ - "\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0"+ - "\2\134\14\0\5\134\1\u0255\16\134\1\125\2\0\1\134"+ - "\2\0\17\134\1\0\1\125\10\0\6\134\1\0\11\134"+ - "\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134"+ - "\14\0\5\134\1\u0311\16\134\1\125\2\0\1\134\2\0"+ - "\17\134\1\0\1\125\10\0\6\134\1\0\11\134\1\0"+ - "\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0"+ - "\5\134\1\u011c\16\134\1\125\2\0\1\134\2\0\17\134"+ - "\1\0\1\125\10\0\6\134\1\0\11\134\1\0\1\134"+ - "\1\0\1\125\1\u010e\1\134\1\0\2\134\14\0\17\134"+ - "\1\u01f3\4\134\1\125\2\0\1\134\2\0\17\134\1\0"+ - "\1\125\10\0\6\134\1\0\11\134\1\0\1\134\1\0"+ - "\1\125\1\u010e\1\134\1\0\2\134\14\0\4\134\1\u0267"+ - "\17\134\1\125\2\0\1\134\2\0\17\134\1\0\1\125"+ - "\10\0\6\134\1\0\11\134\1\0\1\134\1\0\1\125"+ - "\1\u010e\1\134\1\0\2\134\14\0\3\134\1\u0312\20\134"+ - "\1\125\2\0\1\134\2\0\17\134\17\0\1\u0313\43\0"+ - "\1\u0313\63\0\1\u0314\43\0\1\u0314\64\0\1\u0315\141\0"+ - "\1\u0316\127\0\1\u0317\154\0\1\u0318\140\0\1\u027c\130\0"+ - "\1\u0319\37\0\2\63\1\0\1\63\1\0\2\63\2\0"+ - "\6\63\1\0\1\63\1\u031a\24\63\1\0\17\63\1\u031a"+ - "\20\63\1\0\20\63\17\0\1\u031b\110\0\1\125\10\0"+ - "\6\134\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e"+ - "\1\134\1\0\2\134\14\0\4\134\1\u01ce\17\134\1\125"+ - "\2\0\1\134\2\0\17\134\1\0\1\125\10\0\6\134"+ - "\1\0\11\134\1\0\1\134\1\0\1\125\1\u010e\1\134"+ - "\1\0\2\134\14\0\1\u031c\23\134\1\125\2\0\1\134"+ - "\2\0\17\134\1\0\1\125\10\0\6\134\1\0\11\134"+ - "\1\0\1\134\1\0\1\125\1\u010e\1\134\1\0\2\134"+ - "\14\0\12\134\1\u0304\11\134\1\125\2\0\1\134\2\0"+ - "\17\134\20\0\1\u031d\127\0\1\u031e\176\0\1\u031f\123\0"+ - "\1\u0320\133\0\1\u030c\124\0\1\u0321\44\0\2\63\1\0"+ - "\1\63\1\0\2\63\2\0\6\63\1\0\26\63\1\0"+ - "\21\63\1\313\16\63\1\0\1\63\1\313\16\63\1\125"+ - "\10\0\6\134\1\0\11\134\1\0\1\134\1\0\1\125"+ - "\1\u010e\1\134\1\0\2\134\14\0\24\134\1\125\2\0"+ - "\1\134\2\0\16\134\1\u0303\57\0\1\u0322\16\0\1\u0323"+ - "\125\0\1\u0324\116\0\1\u0325\130\0\1\u02f7\126\0\1\u0277"+ - "\141\0\1\u02f7\33\0"; - - private static int [] zzUnpackTrans() { - int [] result = new int[61952]; - int offset = 0; - offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackTrans(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - value--; - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /* error codes */ - private static final int ZZ_UNKNOWN_ERROR = 0; - private static final int ZZ_NO_MATCH = 1; - private static final int ZZ_PUSHBACK_2BIG = 2; - - /* error messages for the codes above */ - private static final String ZZ_ERROR_MSG[] = { - "Unkown internal scanner error", - "Error: could not match input", - "Error: pushback value was too large" - }; - - /** - * ZZ_ATTRIBUTE[aState] contains the attributes of state aState - */ - private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); - - private static final String ZZ_ATTRIBUTE_PACKED_0 = - "\6\0\2\1\1\0\2\1\1\0\2\1\7\0\1\1"+ - "\3\0\2\1\1\11\4\1\1\11\5\1\1\11\2\1"+ - "\2\11\2\1\1\11\1\1\3\11\1\1\1\11\25\1"+ - "\1\11\1\1\1\11\1\1\7\11\1\1\1\11\2\1"+ - "\2\11\10\1\1\11\3\1\1\11\20\1\1\11\3\1"+ - "\2\11\2\1\1\11\1\1\1\11\1\1\1\11\6\1"+ - "\1\11\4\1\2\11\1\1\1\11\5\1\4\11\4\1"+ - "\4\11\1\1\1\11\6\1\4\11\1\1\2\11\1\1"+ - "\1\11\5\1\2\11\5\0\1\11\103\1\1\11\3\0"+ - "\1\11\1\0\75\1\1\11\2\1\1\0\1\11\12\0"+ - "\1\11\1\1\15\0\1\1\1\11\5\0\1\1\1\0"+ - "\2\11\3\1\1\0\1\11\4\0\100\1\1\0\1\1"+ - "\1\0\3\1\1\0\70\1\41\0\2\1\1\11\2\0"+ - "\44\1\1\0\1\11\46\1\1\0\1\11\3\0\1\1"+ - "\3\0\1\1\6\0\1\11\15\0\2\1\2\0\24\1"+ - "\1\0\30\1\24\0\14\1\1\0\21\1\14\0\4\1"+ - "\1\0\10\1\10\0\1\1\1\0\3\1\2\0\1\11"+ - "\4\0\1\1\1\11\1\1\2\11\6\0\1\11"; - - private static int [] zzUnpackAttribute() { - int [] result = new int[805]; - int offset = 0; - offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAttribute(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - /** the input device */ - private java.io.Reader zzReader; - - /** the current state of the DFA */ - private int zzState; - - /** the current lexical state */ - private int zzLexicalState = YYINITIAL; - - /** this buffer contains the current text to be matched and is - the source of the yytext() string */ - private char zzBuffer[]; - - /** the textposition at the last accepting state */ - private int zzMarkedPos; - - /** the current text position in the buffer */ - private int zzCurrentPos; - - /** startRead marks the beginning of the yytext() string in the buffer */ - private int zzStartRead; - - /** endRead marks the last character in the buffer, that has been read - from input */ - private int zzEndRead; - - /** zzAtEOF == true <=> the scanner is at the EOF */ - private boolean zzAtEOF; - - /* user code: */ - - /** - * Type specific to XMLTokenMaker denoting a line ending with an unclosed - * double-quote attribute. - */ - public static final int INTERNAL_ATTR_DOUBLE = -1; - - - /** - * Type specific to XMLTokenMaker denoting a line ending with an unclosed - * single-quote attribute. - */ - public static final int INTERNAL_ATTR_SINGLE = -2; - - - /** - * Token type specific to HTMLTokenMaker; this signals that the user has - * ended a line with an unclosed HTML tag; thus a new line is beginning - * still inside of the tag. - */ - public static final int INTERNAL_INTAG = -3; - - /** - * Token type specific to HTMLTokenMaker; this signals that the user has - * ended a line with an unclosed <script> tag. - */ - public static final int INTERNAL_INTAG_SCRIPT = -4; - - /** - * Token type specifying we're in a double-qouted attribute in a - * script tag. - */ - public static final int INTERNAL_ATTR_DOUBLE_QUOTE_SCRIPT = -5; - - /** - * Token type specifying we're in a single-qouted attribute in a - * script tag. - */ - public static final int INTERNAL_ATTR_SINGLE_QUOTE_SCRIPT = -6; - - /** - * Token type specific to HTMLTokenMaker; this signals that the user has - * ended a line with an unclosed <style> tag. - */ - public static final int INTERNAL_INTAG_STYLE = -7; - - /** - * Token type specifying we're in a double-qouted attribute in a - * style tag. - */ - public static final int INTERNAL_ATTR_DOUBLE_QUOTE_STYLE = -8; - - /** - * Token type specifying we're in a single-qouted attribute in a - * style tag. - */ - public static final int INTERNAL_ATTR_SINGLE_QUOTE_STYLE = -9; - - /** - * Token type specifying we're in JavaScript. - */ - public static final int INTERNAL_IN_JS = -10; - - /** - * Token type specifying we're in a JavaScript multiline comment. - */ - public static final int INTERNAL_IN_JS_MLC = -11; - - /** - * Token type specifying we're in an invalid multi-line JS string. - */ - public static final int INTERNAL_IN_JS_STRING_INVALID = -12; - - /** - * Token type specifying we're in a valid multi-line JS string. - */ - public static final int INTERNAL_IN_JS_STRING_VALID = -13; - - /** - * Token type specifying we're in an invalid multi-line JS single-quoted string. - */ - public static final int INTERNAL_IN_JS_CHAR_INVALID = -14; - - /** - * Token type specifying we're in a valid multi-line JS single-quoted string. - */ - public static final int INTERNAL_IN_JS_CHAR_VALID = -15; - - /** - * Internal type denoting a line ending in CSS. - */ - public static final int INTERNAL_CSS = -16; - - /** - * Internal type denoting a line ending in a CSS property. - */ - public static final int INTERNAL_CSS_PROPERTY = -17; - - /** - * Internal type denoting a line ending in a CSS property value. - */ - public static final int INTERNAL_CSS_VALUE = -18; - - /** - * Internal type denoting line ending in a CSS double-quote string. - * The state to return to is embedded in the actual end token type. - */ - public static final int INTERNAL_CSS_STRING = -(1<<11); - - /** - * Internal type denoting line ending in a CSS single-quote string. - * The state to return to is embedded in the actual end token type. - */ - public static final int INTERNAL_CSS_CHAR = -(2<<11); - - /** - * Internal type denoting line ending in a CSS multi-line comment. - * The state to return to is embedded in the actual end token type. - */ - public static final int INTERNAL_CSS_MLC = -(3<<11); - - /** - * The state previous CSS-related state we were in before going into a CSS - * string, multi-line comment, etc. - */ - private int cssPrevState; - - /** - * Whether closing markup tags are automatically completed for HTML. - */ - private static boolean completeCloseTags; - - /** - * When in the JS_STRING state, whether the current string is valid. - */ - private boolean validJSString; - - /** - * Language state set on HTML tokens. Must be 0. - */ - private static final int LANG_INDEX_DEFAULT = 0; - - /** - * Language state set on JavaScript tokens. - */ - private static final int LANG_INDEX_JS = 1; - - /** - * Language state set on CSS tokens. - */ - private static final int LANG_INDEX_CSS = 2; - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public HTMLTokenMaker() { - super(); - } - - - /** - * Adds the token specified to the current linked list of tokens as an - * "end token;" that is, at zzMarkedPos. - * - * @param tokenType The token's type. - */ - private void addEndToken(int tokenType) { - addToken(zzMarkedPos,zzMarkedPos, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addToken(int, int, int) - */ - private void addHyperlinkToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, true); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, int startOffset) { - super.addToken(array, start,end, tokenType, startOffset); - zzStartRead = zzMarkedPos; - } - - - /** - * {@inheritDoc} - */ - @Override - protected OccurrenceMarker createOccurrenceMarker() { - return new HtmlOccurrenceMarker(); - } - - - /** - * Sets whether markup close tags should be completed. You might not want - * this to be the case, since some tags in standard HTML aren't usually - * closed. - * - * @return Whether closing markup tags are completed. - * @see #setCompleteCloseTags(boolean) - */ - @Override - public boolean getCompleteCloseTags() { - return completeCloseTags; - } - - - @Override - public boolean getCurlyBracesDenoteCodeBlocks(int languageIndex) { - return languageIndex==LANG_INDEX_CSS || languageIndex==LANG_INDEX_JS; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - switch (languageIndex) { - case LANG_INDEX_JS: - return new String[] { "//", null }; - case LANG_INDEX_CSS: - return new String[] { "/*", "*/" }; - default: - return new String[] { "" }; - } - } - - - /** - * Returns Token.MARKUP_TAG_NAME. - * - * @param type The token type. - * @return Whether tokens of this type should have "mark occurrences" - * enabled. - */ - @Override - public boolean getMarkOccurrencesOfTokenType(int type) { - return type==Token.MARKUP_TAG_NAME; - } - - - /** - * Overridden to handle newlines in JS and CSS differently than those in - * markup. - */ - @Override - public boolean getShouldIndentNextLineAfter(Token token) { - int languageIndex = token==null ? 0 : token.getLanguageIndex(); - if (getCurlyBracesDenoteCodeBlocks(languageIndex)) { - if (token!=null && token.length()==1) { - char ch = token.charAt(0); - return ch=='{' || ch=='('; - } - } - return false; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - cssPrevState = CSS; // Shouldn't be necessary - int languageIndex = 0; - - // Start off in the proper state. - int state = Token.NULL; - switch (initialTokenType) { - case Token.MARKUP_COMMENT: - state = COMMENT; - break; - case Token.PREPROCESSOR: - state = PI; - break; - case Token.VARIABLE: - state = DTD; - break; - case INTERNAL_INTAG: - state = INTAG; - break; - case INTERNAL_INTAG_SCRIPT: - state = INTAG_SCRIPT; - break; - case INTERNAL_INTAG_STYLE: - state = INTAG_STYLE; - break; - case INTERNAL_ATTR_DOUBLE: - state = INATTR_DOUBLE; - break; - case INTERNAL_ATTR_SINGLE: - state = INATTR_SINGLE; - break; - case INTERNAL_ATTR_DOUBLE_QUOTE_SCRIPT: - state = INATTR_DOUBLE_SCRIPT; - break; - case INTERNAL_ATTR_SINGLE_QUOTE_SCRIPT: - state = INATTR_SINGLE_SCRIPT; - break; - case INTERNAL_ATTR_DOUBLE_QUOTE_STYLE: - state = INATTR_DOUBLE_STYLE; - break; - case INTERNAL_ATTR_SINGLE_QUOTE_STYLE: - state = INATTR_SINGLE_STYLE; - break; - case INTERNAL_IN_JS: - state = JAVASCRIPT; - languageIndex = LANG_INDEX_JS; - break; - case INTERNAL_IN_JS_MLC: - state = JS_MLC; - languageIndex = LANG_INDEX_JS; - break; - case INTERNAL_IN_JS_STRING_INVALID: - state = JS_STRING; - validJSString = false; - languageIndex = LANG_INDEX_JS; - break; - case INTERNAL_IN_JS_STRING_VALID: - state = JS_STRING; - validJSString = true; - languageIndex = LANG_INDEX_JS; - break; - case INTERNAL_IN_JS_CHAR_INVALID: - state = JS_CHAR; - validJSString = false; - languageIndex = LANG_INDEX_JS; - break; - case INTERNAL_IN_JS_CHAR_VALID: - state = JS_CHAR; - validJSString = true; - languageIndex = LANG_INDEX_JS; - break; - case INTERNAL_CSS: - state = CSS; - languageIndex = LANG_INDEX_CSS; - break; - case INTERNAL_CSS_PROPERTY: - state = CSS_PROPERTY; - languageIndex = LANG_INDEX_CSS; - break; - case INTERNAL_CSS_VALUE: - state = CSS_VALUE; - languageIndex = LANG_INDEX_CSS; - break; - default: - if (initialTokenType<-1024) { - int main = -(-initialTokenType & 0xffffff00); - switch (main) { - default: // Should never happen - case INTERNAL_CSS_STRING: - state = CSS_STRING; - break; - case INTERNAL_CSS_CHAR: - state = CSS_CHAR_LITERAL; - break; - case INTERNAL_CSS_MLC: - state = CSS_C_STYLE_COMMENT; - break; - } - cssPrevState = -initialTokenType&0xff; - languageIndex = LANG_INDEX_CSS; - } - else { - state = Token.NULL; - } - break; - } - - setLanguageIndex(languageIndex); - start = text.offset; - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Sets whether markup close tags should be completed. You might not want - * this to be the case, since some tags in standard HTML aren't usually - * closed. - * - * @param complete Whether closing markup tags are completed. - * @see #getCompleteCloseTags() - */ - public static void setCompleteCloseTags(boolean complete) { - completeCloseTags = complete; - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(java.io.Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtEOF = false; - } - - - - - /** - * Creates a new scanner - * There is also a java.io.InputStream version of this constructor. - * - * @param in the java.io.Reader to read input from. - */ - public HTMLTokenMaker(java.io.Reader in) { - this.zzReader = in; - } - - /** - * Creates a new scanner. - * There is also java.io.Reader version of this constructor. - * - * @param in the java.io.Inputstream to read input from. - */ - public HTMLTokenMaker(java.io.InputStream in) { - this(new java.io.InputStreamReader(in)); - } - - /** - * Unpacks the compressed character translation table. - * - * @param packed the packed character translation table - * @return the unpacked character translation table - */ - private static char [] zzUnpackCMap(String packed) { - char [] map = new char[0x10000]; - int i = 0; /* index in packed string */ - int j = 0; /* index in unpacked array */ - while (i < 194) { - int count = packed.charAt(i++); - char value = packed.charAt(i++); - do map[j++] = value; while (--count > 0); - } - return map; - } - - - /** - * Closes the input stream. - */ - public final void yyclose() throws java.io.IOException { - zzAtEOF = true; /* indicate end of file */ - zzEndRead = zzStartRead; /* invalidate buffer */ - - if (zzReader != null) - zzReader.close(); - } - - - /** - * Returns the current lexical state. - */ - public final int yystate() { - return zzLexicalState; - } - - - /** - * Enters a new lexical state - * - * @param newState the new lexical state - */ - @Override - public final void yybegin(int newState) { - zzLexicalState = newState; - } - - - /** - * Returns the text matched by the current regular expression. - */ - public final String yytext() { - return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead ); - } - - - /** - * Returns the character at position pos from the - * matched text. - * - * It is equivalent to yytext().charAt(pos), but faster - * - * @param pos the position of the character to fetch. - * A value from 0 to yylength()-1. - * - * @return the character at position pos - */ - public final char yycharat(int pos) { - return zzBuffer[zzStartRead+pos]; - } - - - /** - * Returns the length of the matched text region. - */ - public final int yylength() { - return zzMarkedPos-zzStartRead; - } - - - /** - * Reports an error that occured while scanning. - * - * In a wellformed scanner (no or only correct usage of - * yypushback(int) and a match-all fallback rule) this method - * will only be called with things that "Can't Possibly Happen". - * If this method is called, something is seriously wrong - * (e.g. a JFlex bug producing a faulty scanner etc.). - * - * Usual syntax/scanner level error handling should be done - * in error fallback rules. - * - * @param errorCode the code of the errormessage to display - */ - private void zzScanError(int errorCode) { - String message; - try { - message = ZZ_ERROR_MSG[errorCode]; - } - catch (ArrayIndexOutOfBoundsException e) { - message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; - } - - throw new Error(message); - } - - - /** - * Pushes the specified amount of characters back into the input stream. - * - * They will be read again by then next call of the scanning method - * - * @param number the number of characters to be read again. - * This number must not be greater than yylength()! - */ - public void yypushback(int number) { - if ( number > yylength() ) - zzScanError(ZZ_PUSHBACK_2BIG); - - zzMarkedPos -= number; - } - - - /** - * Resumes scanning until the next regular expression is matched, - * the end of input is encountered or an I/O-Error occurs. - * - * @return the next token - * @exception java.io.IOException if any I/O-Error occurs - */ - public org.fife.ui.rsyntaxtextarea.Token yylex() throws java.io.IOException { - int zzInput; - int zzAction; - - // cached fields: - int zzCurrentPosL; - int zzMarkedPosL; - int zzEndReadL = zzEndRead; - char [] zzBufferL = zzBuffer; - char [] zzCMapL = ZZ_CMAP; - - int [] zzTransL = ZZ_TRANS; - int [] zzRowMapL = ZZ_ROWMAP; - int [] zzAttrL = ZZ_ATTRIBUTE; - - while (true) { - zzMarkedPosL = zzMarkedPos; - - zzAction = -1; - - zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; - - zzState = zzLexicalState; - - - zzForAction: { - while (true) { - - if (zzCurrentPosL < zzEndReadL) - zzInput = zzBufferL[zzCurrentPosL++]; - else if (zzAtEOF) { - zzInput = YYEOF; - break zzForAction; - } - else { - // store back cached positions - zzCurrentPos = zzCurrentPosL; - zzMarkedPos = zzMarkedPosL; - boolean eof = zzRefill(); - // get translated positions and possibly new buffer - zzCurrentPosL = zzCurrentPos; - zzMarkedPosL = zzMarkedPos; - zzBufferL = zzBuffer; - zzEndReadL = zzEndRead; - if (eof) { - zzInput = YYEOF; - break zzForAction; - } - else { - zzInput = zzBufferL[zzCurrentPosL++]; - } - } - int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; - if (zzNext == -1) break zzForAction; - zzState = zzNext; - - int zzAttributes = zzAttrL[zzState]; - if ( (zzAttributes & 1) == 1 ) { - zzAction = zzState; - zzMarkedPosL = zzCurrentPosL; - if ( (zzAttributes & 8) == 8 ) break zzForAction; - } - - } - } - - // store back cached position - zzMarkedPos = zzMarkedPosL; - - switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { - case 54: - { addToken(Token.OPERATOR); yybegin(CSS_VALUE); - } - case 104: break; - case 73: - { addToken(Token.ERROR_NUMBER_FORMAT); - } - case 105: break; - case 63: - { addToken(start,zzStartRead-1, Token.LITERAL_CHAR); addEndToken(INTERNAL_CSS_CHAR - cssPrevState); return firstToken; - } - case 106: break; - case 23: - { start = zzMarkedPos-1; yybegin(INATTR_SINGLE_SCRIPT); - } - case 107: break; - case 10: - { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.MARKUP_DTD); - } - case 108: break; - case 49: - { addToken(Token.SEPARATOR); yybegin(CSS_PROPERTY); - } - case 109: break; - case 4: - { addToken(Token.MARKUP_TAG_DELIMITER); yybegin(INTAG); - } - case 110: break; - case 97: - { addToken(Token.RESERVED_WORD_2); - } - case 111: break; - case 83: - { addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); yybegin(cssPrevState); - } - case 112: break; - case 80: - { start = zzMarkedPos-2; cssPrevState = zzLexicalState; yybegin(CSS_C_STYLE_COMMENT); - } - case 113: break; - case 39: - { /* Line ending in '\' => continue to next line. */ - if (validJSString) { - addToken(start,zzStartRead, Token.LITERAL_CHAR); - addEndToken(INTERNAL_IN_JS_CHAR_VALID); - } - else { - addToken(start,zzStartRead, Token.ERROR_CHAR); - addEndToken(INTERNAL_IN_JS_CHAR_INVALID); - } - return firstToken; - } - case 114: break; - case 5: - { addToken(Token.WHITESPACE); - } - case 115: break; - case 98: - { addToken(zzStartRead,zzStartRead, Token.MARKUP_TAG_DELIMITER); - addToken(zzMarkedPos-6,zzMarkedPos-1, Token.MARKUP_TAG_NAME); - start = zzMarkedPos; yybegin(INTAG_SCRIPT); - } - case 116: break; - case 82: - { addToken(Token.REGEX); - } - case 117: break; - case 41: - { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_IN_JS_MLC); return firstToken; - } - case 118: break; - case 102: - { int temp = zzStartRead; - addToken(start,zzStartRead-1, Token.COMMENT_EOL); - yybegin(YYINITIAL, LANG_INDEX_DEFAULT); - addToken(temp,temp+1, Token.MARKUP_TAG_DELIMITER); - addToken(zzMarkedPos-7,zzMarkedPos-2, Token.MARKUP_TAG_NAME); - addToken(zzMarkedPos-1,zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER); - } - case 119: break; - case 93: - { addToken(Token.FUNCTION); - } - case 120: break; - case 8: - { addToken(start,zzStartRead-1, Token.MARKUP_PROCESSING_INSTRUCTION); return firstToken; - } - case 121: break; - case 35: - { addToken(start,zzStartRead-1, Token.ERROR_STRING_DOUBLE); addEndToken(INTERNAL_IN_JS); return firstToken; - } - case 122: break; - case 45: - { start = zzMarkedPos-1; cssPrevState = zzLexicalState; yybegin(CSS_STRING); - } - case 123: break; - case 20: - { yybegin(INTAG); addToken(start,zzStartRead, Token.MARKUP_TAG_ATTRIBUTE_VALUE); - } - case 124: break; - case 25: - { start = zzMarkedPos-1; yybegin(INATTR_DOUBLE_STYLE); - } - case 125: break; - case 76: - { /* Skip all escaped chars. */ - } - case 126: break; - case 70: - { addToken(Token.MARKUP_TAG_DELIMITER); yybegin(YYINITIAL); - } - case 127: break; - case 28: - { yybegin(INTAG_STYLE); addToken(start,zzStartRead, Token.MARKUP_TAG_ATTRIBUTE_VALUE); - } - case 128: break; - case 92: - { if(JavaScriptTokenMaker.isJavaScriptCompatible("1.6")){ addToken(Token.RESERVED_WORD);} else {addToken(Token.IDENTIFIER);} - } - case 129: break; - case 87: - { if(JavaScriptTokenMaker.isJavaScriptCompatible("1.7")){ addToken(Token.RESERVED_WORD);} else {addToken(Token.IDENTIFIER);} - } - case 130: break; - case 55: - { /*System.out.println("css_value: " + yytext());*/ addToken(Token.IDENTIFIER); - } - case 131: break; - case 17: - { /* A non-recognized HTML tag name */ yypushback(yylength()); yybegin(INTAG); - } - case 132: break; - case 26: - { addToken(Token.MARKUP_TAG_DELIMITER); yybegin(CSS, LANG_INDEX_CSS); - } - case 133: break; - case 64: - { addToken(start,zzStartRead, Token.LITERAL_CHAR); yybegin(cssPrevState); - } - case 134: break; - case 27: - { start = zzMarkedPos-1; yybegin(INATTR_SINGLE_STYLE); - } - case 135: break; - case 7: - { addToken(start,zzStartRead-1, Token.MARKUP_COMMENT); return firstToken; - } - case 136: break; - case 78: - { /* Invalid latin-1 character \xXX */ validJSString = false; - } - case 137: break; - case 24: - { yybegin(INTAG_SCRIPT); addToken(start,zzStartRead, Token.MARKUP_TAG_ATTRIBUTE_VALUE); - } - case 138: break; - case 36: - { int type = validJSString ? Token.LITERAL_STRING_DOUBLE_QUOTE : Token.ERROR_STRING_DOUBLE; addToken(start,zzStartRead, type); yybegin(JAVASCRIPT); - } - case 139: break; - case 90: - { addToken(Token.COMMENT_MULTILINE); - } - case 140: break; - case 68: - { start = zzMarkedPos-2; yybegin(PI); - } - case 141: break; - case 99: - { yybegin(YYINITIAL, LANG_INDEX_DEFAULT); - addToken(zzStartRead,zzStartRead+1, Token.MARKUP_TAG_DELIMITER); - addToken(zzMarkedPos-6,zzMarkedPos-2, Token.MARKUP_TAG_NAME); - addToken(zzMarkedPos-1,zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER); - } - case 142: break; - case 50: - { /*System.out.println("css_property: " + yytext());*/ addToken(Token.IDENTIFIER); - } - case 143: break; - case 9: - { addToken(start,zzStartRead-1, Token.MARKUP_DTD); return firstToken; - } - case 144: break; - case 66: - { int count = yylength(); - addToken(zzStartRead,zzStartRead, Token.MARKUP_TAG_DELIMITER); - zzMarkedPos -= (count-1); //yypushback(count-1); - yybegin(INTAG_CHECK_TAG_NAME); - } - case 145: break; - case 62: - { /* Skip escaped chars. */ - } - case 146: break; - case 77: - { /* Invalid Unicode character \\uXXXX */ validJSString = false; - } - case 147: break; - case 96: - { addToken(zzStartRead,zzStartRead, Token.MARKUP_TAG_DELIMITER); - addToken(zzMarkedPos-5,zzMarkedPos-1, Token.MARKUP_TAG_NAME); - start = zzMarkedPos; cssPrevState = zzLexicalState; yybegin(INTAG_STYLE); - } - case 148: break; - case 69: - { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.MARKUP_PROCESSING_INSTRUCTION); - } - case 149: break; - case 79: - { yybegin(JAVASCRIPT); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); - } - case 150: break; - case 30: - { addEndToken(INTERNAL_IN_JS); return firstToken; - } - case 151: break; - case 38: - { addToken(start,zzStartRead-1, Token.ERROR_CHAR); addEndToken(INTERNAL_IN_JS); return firstToken; - } - case 152: break; - case 15: - { addToken(Token.OPERATOR); - } - case 153: break; - case 57: - { addToken(Token.OPERATOR); yybegin(CSS_PROPERTY); - } - case 154: break; - case 88: - { start = zzMarkedPos-4; yybegin(COMMENT); - } - case 155: break; - case 85: - { yybegin(YYINITIAL); addToken(start,zzStartRead+2, Token.MARKUP_COMMENT); - } - case 156: break; - case 101: - { yybegin(YYINITIAL, LANG_INDEX_DEFAULT); - int temp = zzStartRead; - addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); - addToken(temp,temp+1, Token.MARKUP_TAG_DELIMITER); - addToken(zzMarkedPos-7,zzMarkedPos-2, Token.MARKUP_TAG_NAME); - addToken(zzMarkedPos-1,zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER); - } - case 157: break; - case 81: - { addToken(Token.VARIABLE); - } - case 158: break; - case 43: - { /*System.out.println("CSS: " + yytext());*/ addToken(Token.IDENTIFIER); - } - case 159: break; - case 2: - { addToken(Token.IDENTIFIER); - } - case 160: break; - case 94: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_MULTILINE); start = zzMarkedPos; - } - case 161: break; - case 22: - { addToken(Token.MARKUP_TAG_DELIMITER); yybegin(JAVASCRIPT, LANG_INDEX_JS); - } - case 162: break; - case 95: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_EOL); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_EOL); start = zzMarkedPos; - } - case 163: break; - case 53: - { addToken(Token.SEPARATOR); yybegin(CSS); - } - case 164: break; - case 31: - { start = zzMarkedPos-1; validJSString = true; yybegin(JS_STRING); - } - case 165: break; - case 61: - { addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); yybegin(cssPrevState); - } - case 166: break; - case 51: - { addEndToken(INTERNAL_CSS_PROPERTY); return firstToken; - } - case 167: break; - case 40: - { int type = validJSString ? Token.LITERAL_CHAR : Token.ERROR_CHAR; addToken(start,zzStartRead, type); yybegin(JAVASCRIPT); - } - case 168: break; - case 34: - { start = zzMarkedPos-1; validJSString = true; yybegin(JS_CHAR); - } - case 169: break; - case 72: - { start = zzMarkedPos-2; yybegin(JS_MLC); - } - case 170: break; - case 75: - { addToken(Token.LITERAL_NUMBER_HEXADECIMAL); - } - case 171: break; - case 59: - { int temp = zzMarkedPos - 2; - addToken(zzStartRead, temp, Token.FUNCTION); - addToken(zzMarkedPos-1, zzMarkedPos-1, Token.SEPARATOR); - zzStartRead = zzCurrentPos = zzMarkedPos; - } - case 172: break; - case 103: - { addToken(Token.ANNOTATION); - } - case 173: break; - case 29: - { addToken(Token.ERROR_IDENTIFIER); - } - case 174: break; - case 56: - { addEndToken(INTERNAL_CSS_VALUE); return firstToken; - } - case 175: break; - case 89: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.MARKUP_COMMENT); addHyperlinkToken(temp,zzMarkedPos-1, Token.MARKUP_COMMENT); start = zzMarkedPos; - } - case 176: break; - case 6: - { addToken(Token.MARKUP_ENTITY_REFERENCE); - } - case 177: break; - case 91: - { addToken(Token.LITERAL_BOOLEAN); - } - case 178: break; - case 18: - { /* Shouldn't happen */ yypushback(1); yybegin(INTAG); - } - case 179: break; - case 3: - { addNullToken(); return firstToken; - } - case 180: break; - case 44: - { addEndToken(INTERNAL_CSS); return firstToken; - } - case 181: break; - case 100: - { yybegin(YYINITIAL, LANG_INDEX_DEFAULT); - addToken(zzStartRead,zzStartRead+1, Token.MARKUP_TAG_DELIMITER); - addToken(zzMarkedPos-7,zzMarkedPos-2, Token.MARKUP_TAG_NAME); - addToken(zzMarkedPos-1,zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER); - } - case 182: break; - case 48: - { start = zzMarkedPos-1; cssPrevState = zzLexicalState; yybegin(CSS_CHAR_LITERAL); - } - case 183: break; - case 52: - { addToken(Token.RESERVED_WORD); - } - case 184: break; - case 12: - { start = zzMarkedPos-1; yybegin(INATTR_DOUBLE); - } - case 185: break; - case 14: - { yybegin(YYINITIAL); addToken(Token.MARKUP_TAG_DELIMITER); - } - case 186: break; - case 46: - { addToken(Token.DATA_TYPE); - } - case 187: break; - case 33: - { addToken(Token.SEPARATOR); - } - case 188: break; - case 84: - { int count = yylength(); - addToken(zzStartRead,zzStartRead+1, Token.MARKUP_TAG_DELIMITER); - zzMarkedPos -= (count-2); //yypushback(count-2); - yybegin(INTAG_CHECK_TAG_NAME); - } - case 189: break; - case 60: - { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addEndToken(INTERNAL_CSS_STRING - cssPrevState); return firstToken; - } - case 190: break; - case 58: - { /* End of a function */ addToken(Token.SEPARATOR); - } - case 191: break; - case 19: - { addToken(Token.MARKUP_TAG_NAME); - } - case 192: break; - case 11: - { addToken(Token.MARKUP_TAG_ATTRIBUTE); - } - case 193: break; - case 71: - { start = zzMarkedPos-2; yybegin(JS_EOL_COMMENT); - } - case 194: break; - case 37: - { /* Line ending in '\' => continue to next line. */ - if (validJSString) { - addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); - addEndToken(INTERNAL_IN_JS_STRING_VALID); - } - else { - addToken(start,zzStartRead, Token.ERROR_STRING_DOUBLE); - addEndToken(INTERNAL_IN_JS_STRING_INVALID); - } - return firstToken; - } - case 195: break; - case 74: - { addToken(Token.LITERAL_NUMBER_FLOAT); - } - case 196: break; - case 16: - { start = zzMarkedPos-1; yybegin(INATTR_SINGLE); - } - case 197: break; - case 86: - { boolean highlightedAsRegex = false; - if (firstToken==null) { - addToken(Token.REGEX); - highlightedAsRegex = true; - } - else { - // If this is *likely* to be a regex, based on - // the previous token, highlight it as such. - Token t = firstToken.getLastNonCommentNonWhitespaceToken(); - if (RSyntaxUtilities.regexCanFollowInJavaScript(t)) { - addToken(Token.REGEX); - highlightedAsRegex = true; - } - } - // If it doesn't *appear* to be a regex, highlight it as - // individual tokens. - if (!highlightedAsRegex) { - int temp = zzStartRead + 1; - addToken(zzStartRead, zzStartRead, Token.OPERATOR); - zzStartRead = zzCurrentPos = zzMarkedPos = temp; - } - } - case 198: break; - case 13: - { addToken(Token.MARKUP_TAG_DELIMITER); - } - case 199: break; - case 65: - { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_CSS_MLC - cssPrevState); return firstToken; - } - case 200: break; - case 32: - { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); - } - case 201: break; - case 67: - { start = zzMarkedPos-2; yybegin(DTD); - } - case 202: break; - case 21: - { start = zzMarkedPos-1; yybegin(INATTR_DOUBLE_SCRIPT); - } - case 203: break; - case 42: - { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addEndToken(INTERNAL_IN_JS); return firstToken; - } - case 204: break; - case 47: - { /* Unknown pseudo class */ addToken(Token.DATA_TYPE); - } - case 205: break; - case 1: - { - } - case 206: break; - default: - if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { - zzAtEOF = true; - switch (zzLexicalState) { - case INATTR_SINGLE_SCRIPT: { - addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_SINGLE_QUOTE_SCRIPT); return firstToken; - } - case 806: break; - case JS_CHAR: { - addToken(start,zzStartRead-1, Token.ERROR_CHAR); addEndToken(INTERNAL_IN_JS); return firstToken; - } - case 807: break; - case CSS_STRING: { - addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addEndToken(INTERNAL_CSS_STRING - cssPrevState); return firstToken; - } - case 808: break; - case JS_MLC: { - addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_IN_JS_MLC); return firstToken; - } - case 809: break; - case CSS_CHAR_LITERAL: { - addToken(start,zzStartRead-1, Token.LITERAL_CHAR); addEndToken(INTERNAL_CSS_CHAR - cssPrevState); return firstToken; - } - case 810: break; - case INTAG_SCRIPT: { - addToken(zzMarkedPos,zzMarkedPos, INTERNAL_INTAG_SCRIPT); return firstToken; - } - case 811: break; - case CSS_PROPERTY: { - addEndToken(INTERNAL_CSS_PROPERTY); return firstToken; - } - case 812: break; - case CSS_C_STYLE_COMMENT: { - addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_CSS_MLC - cssPrevState); return firstToken; - } - case 813: break; - case CSS: { - addEndToken(INTERNAL_CSS); return firstToken; - } - case 814: break; - case CSS_VALUE: { - addEndToken(INTERNAL_CSS_VALUE); return firstToken; - } - case 815: break; - case COMMENT: { - addToken(start,zzStartRead-1, Token.MARKUP_COMMENT); return firstToken; - } - case 816: break; - case INATTR_DOUBLE_SCRIPT: { - addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_DOUBLE_QUOTE_SCRIPT); return firstToken; - } - case 817: break; - case PI: { - addToken(start,zzStartRead-1, Token.MARKUP_PROCESSING_INSTRUCTION); return firstToken; - } - case 818: break; - case JAVASCRIPT: { - addEndToken(INTERNAL_IN_JS); return firstToken; - } - case 819: break; - case INTAG: { - addToken(zzMarkedPos,zzMarkedPos, INTERNAL_INTAG); return firstToken; - } - case 820: break; - case INTAG_CHECK_TAG_NAME: { - addToken(zzMarkedPos,zzMarkedPos, INTERNAL_INTAG); return firstToken; - } - case 821: break; - case INATTR_SINGLE_STYLE: { - addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_SINGLE_QUOTE_STYLE); return firstToken; - } - case 822: break; - case DTD: { - addToken(start,zzStartRead-1, Token.MARKUP_DTD); return firstToken; - } - case 823: break; - case JS_EOL_COMMENT: { - addToken(start,zzStartRead-1, Token.COMMENT_EOL); addEndToken(INTERNAL_IN_JS); return firstToken; - } - case 824: break; - case INATTR_DOUBLE_STYLE: { - addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_DOUBLE_QUOTE_STYLE); return firstToken; - } - case 825: break; - case INATTR_SINGLE: { - addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_SINGLE); return firstToken; - } - case 826: break; - case YYINITIAL: { - addNullToken(); return firstToken; - } - case 827: break; - case INATTR_DOUBLE: { - addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_DOUBLE); return firstToken; - } - case 828: break; - case JS_STRING: { - addToken(start,zzStartRead-1, Token.ERROR_STRING_DOUBLE); addEndToken(INTERNAL_IN_JS); return firstToken; - } - case 829: break; - case INTAG_STYLE: { - addToken(zzMarkedPos,zzMarkedPos, INTERNAL_INTAG_STYLE); return firstToken; - } - case 830: break; - default: - return null; - } - } - else { - zzScanError(ZZ_NO_MATCH); - } - } - } - } - - -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/HtaccessTokenMaker.flex b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/HtaccessTokenMaker.flex deleted file mode 100644 index ff4e121..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/HtaccessTokenMaker.flex +++ /dev/null @@ -1,500 +0,0 @@ -/* - * 06/30/2013 - * - * HtaccessTokenMaker.java - Token generator for .htaccess files. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * Scanner for .htaccess files. - * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated HtaccessTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.7 - * - */ -%% - -%public -%class HtaccessTokenMaker -%extends AbstractJFlexTokenMaker -%unicode -%ignorecase -%type org.fife.ui.rsyntaxtextarea.Token - - -%{ - - /** - * Type specific to HtaccessTokenMaker denoting a line ending with an - * unclosed double-quote attribute. - */ - public static final int INTERNAL_ATTR_DOUBLE = -1; - - - /** - * Type specific to HtaccessTokenMaker denoting a line ending with an - * unclosed single-quote attribute. - */ - public static final int INTERNAL_ATTR_SINGLE = -2; - - - /** - * Token type specific to HtaccessTokenMaker denoting a line ending with an - * unclosed XML tag; thus a new line is beginning still inside of the tag. - */ - public static final int INTERNAL_INTAG = -3; - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public HtaccessTokenMaker() { - } - - - /** - * Adds the token specified to the current linked list of tokens as an - * "end token;" that is, at zzMarkedPos. - * - * @param tokenType The token's type. - */ - private void addEndToken(int tokenType) { - addToken(zzMarkedPos,zzMarkedPos, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addToken(int, int, int) - */ - private void addHyperlinkToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, true); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, int startOffset) { - super.addToken(array, start,end, tokenType, startOffset); - zzStartRead = zzMarkedPos; - } - - - /** - * Returns how to transform a line into a line comment. - * - * @return The line comment start and end text for .htaccess files. - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { "#", null }; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - - // Start off in the proper state. - int state = YYINITIAL; - switch (initialTokenType) { - case INTERNAL_ATTR_DOUBLE: - state = INATTR_DOUBLE; - break; - case INTERNAL_ATTR_SINGLE: - state = INATTR_SINGLE; - break; - case INTERNAL_INTAG: - state = INTAG; - break; - default: - state = YYINITIAL; - } - - start = text.offset; - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = zzPushbackPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtBOL = true; - zzAtEOF = false; - } - - -%} - -NameStartChar = ([\:A-Z_a-z]) -NameChar = ({NameStartChar}|[\-\.0-9]) -TagName = ({NameStartChar}{NameChar}*) -Whitespace = ([ \t\f]+) -Identifier = ([^ \t\n<#]+) -InTagIdentifier = ([^ \t\n\"\'=>]+) -LineCommentBegin = ("#") - -AnyCharacterButDoubleQuoteOrBackSlash = ([^\\\"\n]) -Escape = ("\\".) -StringLiteral = ([\"]({AnyCharacterButDoubleQuoteOrBackSlash}|{Escape})*[\"]) -UnclosedStringLiteral = ([\"]([\\].|[^\\\"])*[^\"]?) -ErrorStringLiteral = ({UnclosedStringLiteral}[\"]) - -NameStartChar = ([\:A-Z_a-z]) -NameChar = ({NameStartChar}|[\-\.0-9]) -TagName = ({NameStartChar}{NameChar}*) -DirectiveStart = (("<"[/]?){TagName}) - -URLGenDelim = ([:\/\?#\[\]@]) -URLSubDelim = ([\!\$&'\(\)\*\+,;=]) -URLUnreserved = ([A-Za-z_0-9\-\.\~]) -URLCharacter = ({URLGenDelim}|{URLSubDelim}|{URLUnreserved}|[%]) -URLCharacters = ({URLCharacter}*) -URLEndCharacter = ([\/\$A-Za-z0-9]) -URL = (((https?|f(tp|ile))"://"|"www.")({URLCharacters}{URLEndCharacter})?) - -%state EOL_COMMENT -%state INTAG -%state INATTR_DOUBLE -%state INATTR_SINGLE - -%% - - { - - {Whitespace} { addToken(Token.WHITESPACE); } - {LineCommentBegin} { start = zzMarkedPos-1; yybegin(EOL_COMMENT); } - - "<"{TagName} { - int count = yylength(); - addToken(zzStartRead,zzStartRead, Token.MARKUP_TAG_DELIMITER); - addToken(zzMarkedPos-(count-1), zzMarkedPos-1, Token.MARKUP_TAG_NAME); - yybegin(INTAG); - } - "> { addNullToken(); return firstToken; } -} - - { - {InTagIdentifier} { addToken(Token.MARKUP_TAG_ATTRIBUTE); } - {Whitespace}+ { addToken(Token.WHITESPACE); } - "=" { addToken(Token.OPERATOR); } - ">" { yybegin(YYINITIAL); addToken(Token.MARKUP_TAG_DELIMITER); } - [\"] { start = zzMarkedPos-1; yybegin(INATTR_DOUBLE); } - [\'] { start = zzMarkedPos-1; yybegin(INATTR_SINGLE); } - <> { addToken(start,zzStartRead-1, INTERNAL_INTAG); return firstToken; } -} - - { - [^\"]* {} - [\"] { yybegin(INTAG); addToken(start,zzStartRead, Token.MARKUP_TAG_ATTRIBUTE_VALUE); } - <> { addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_DOUBLE); return firstToken; } -} - - { - [^\']* {} - [\'] { yybegin(INTAG); addToken(start,zzStartRead, Token.MARKUP_TAG_ATTRIBUTE_VALUE); } - <> { addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_SINGLE); return firstToken; } -} - - { - [^hwf\n]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_EOL); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_EOL); start = zzMarkedPos; } - [hwf] {} - \n | - <> { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; } - -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/HtaccessTokenMaker.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/HtaccessTokenMaker.java deleted file mode 100644 index 4e9f667..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/HtaccessTokenMaker.java +++ /dev/null @@ -1,1505 +0,0 @@ -/* The following code was generated by JFlex 1.4.1 on 7/14/13 10:47 PM */ - -/* - * 06/30/2013 - * - * HtaccessTokenMaker.java - Token generator for .htaccess files. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * Scanner for .htaccess files. - * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated HtaccessTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.7 - * - */ - -public class HtaccessTokenMaker extends AbstractJFlexTokenMaker { - - /** This character denotes the end of file */ - public static final int YYEOF = -1; - - /** lexical states */ - public static final int EOL_COMMENT = 1; - public static final int INTAG = 2; - public static final int INATTR_DOUBLE = 3; - public static final int YYINITIAL = 0; - public static final int INATTR_SINGLE = 4; - - /** - * Translates characters to character classes - */ - private static final String ZZ_CMAP_PACKED = - "\11\0\1\5\1\7\1\0\1\3\23\0\1\5\1\14\1\12\1\10"+ - "\1\21\1\14\1\14\1\16\5\14\1\2\1\33\1\13\12\20\1\15"+ - "\1\14\1\4\1\53\1\6\2\14\1\34\1\41\1\35\1\40\1\31"+ - "\1\26\1\43\1\22\1\27\1\17\1\51\1\30\1\46\1\36\1\37"+ - "\1\24\1\50\1\44\1\25\1\23\1\45\1\47\1\32\1\52\1\42"+ - "\1\17\1\14\1\11\1\14\1\0\1\1\1\0\1\34\1\41\1\35"+ - "\1\40\1\31\1\55\1\43\1\54\1\27\1\17\1\51\1\30\1\46"+ - "\1\36\1\37\1\24\1\50\1\44\1\25\1\23\1\45\1\47\1\56"+ - "\1\52\1\42\1\17\3\0\1\14\uff81\0"; - - /** - * Translates characters to character classes - */ - private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); - - /** - * Translates DFA states to action switch labels. - */ - private static final int [] ZZ_ACTION = zzUnpackAction(); - - private static final String ZZ_ACTION_PACKED_0 = - "\3\0\2\1\1\2\1\3\1\2\1\3\1\4\1\5"+ - "\21\2\1\1\1\6\6\1\2\7\1\10\1\11\1\12"+ - "\1\13\1\1\1\14\1\1\1\15\1\0\2\16\44\2"+ - "\4\1\4\0\1\17\1\16\1\20\1\16\1\21\56\2"+ - "\4\1\4\0\62\2\1\22\13\2\3\1\1\23\2\0"+ - "\104\2\1\1\2\0\1\22\12\2\1\22\31\2\1\22"+ - "\146\2\1\22\60\2\1\22\33\2\1\22\47\2\1\22"+ - "\225\2\1\22\33\2\1\22\102\2\1\22\1\2"; - - private static int [] zzUnpackAction() { - int [] result = new int[795]; - int offset = 0; - offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAction(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /** - * Translates a state to a row index in the transition table - */ - private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); - - private static final String ZZ_ROWMAP_PACKED_0 = - "\0\0\0\57\0\136\0\215\0\274\0\353\0\u011a\0\u0149"+ - "\0\u0178\0\u01a7\0\u01a7\0\u01d6\0\u0205\0\u0234\0\u0263\0\u0292"+ - "\0\u02c1\0\u02f0\0\u031f\0\u034e\0\u037d\0\u03ac\0\u03db\0\u040a"+ - "\0\u0439\0\u0468\0\u0497\0\u04c6\0\u04f5\0\u01a7\0\u0524\0\u0553"+ - "\0\u0582\0\u05b1\0\u05e0\0\u060f\0\u063e\0\u066d\0\u01a7\0\u01a7"+ - "\0\u01a7\0\u01a7\0\u069c\0\u01a7\0\u06cb\0\u06fa\0\u0729\0\u0758"+ - "\0\u0787\0\u07b6\0\u07e5\0\u0814\0\u0843\0\u0872\0\u08a1\0\u08d0"+ - "\0\u08ff\0\u092e\0\u095d\0\u098c\0\u09bb\0\u09ea\0\u0a19\0\u0a48"+ - "\0\u0a77\0\u0aa6\0\u0ad5\0\u0b04\0\u0b33\0\u0b62\0\u0b91\0\u0bc0"+ - "\0\u0bef\0\u0c1e\0\u0c4d\0\u0c7c\0\u0cab\0\u0cda\0\u0d09\0\u0d38"+ - "\0\u0d67\0\u0d96\0\u0dc5\0\u0df4\0\u0e23\0\u0e52\0\u0e81\0\u0eb0"+ - "\0\u0edf\0\u0f0e\0\u0f3d\0\u0f6c\0\u0f9b\0\u0fca\0\u0ff9\0\u01a7"+ - "\0\u1028\0\u01a7\0\u1057\0\u1086\0\u10b5\0\u10e4\0\u1113\0\u1142"+ - "\0\u1171\0\u11a0\0\u11cf\0\u11fe\0\u122d\0\u125c\0\u128b\0\u12ba"+ - "\0\u12e9\0\u1318\0\u1347\0\u1376\0\u13a5\0\u13d4\0\u1403\0\u1432"+ - "\0\u1461\0\u1490\0\u14bf\0\u14ee\0\u151d\0\u154c\0\u157b\0\u15aa"+ - "\0\u15d9\0\u1608\0\u1637\0\u1666\0\u1695\0\u16c4\0\u16f3\0\u1722"+ - "\0\u1751\0\u1780\0\u17af\0\u17de\0\u180d\0\u183c\0\u186b\0\u189a"+ - "\0\u18c9\0\u18f8\0\u1927\0\u1956\0\u1985\0\u19b4\0\u19e3\0\u1a12"+ - "\0\u1a41\0\u1a70\0\u1a9f\0\u1ace\0\u1afd\0\u1b2c\0\u1b5b\0\u1b8a"+ - "\0\u1bb9\0\u1be8\0\u1c17\0\u1c46\0\u1c75\0\u1ca4\0\u1cd3\0\u1d02"+ - "\0\u1d31\0\u1d60\0\u1d8f\0\u1dbe\0\u1ded\0\u1e1c\0\u1e4b\0\u1e7a"+ - "\0\u1ea9\0\u1ed8\0\u1f07\0\u1f36\0\u1f65\0\u1f94\0\u1fc3\0\u1ff2"+ - "\0\u2021\0\u2050\0\u207f\0\u20ae\0\u20dd\0\u210c\0\u213b\0\u216a"+ - "\0\u2199\0\u21c8\0\u21f7\0\u2226\0\u2255\0\u2284\0\u22b3\0\u22e2"+ - "\0\u2311\0\u2340\0\353\0\u236f\0\u239e\0\u23cd\0\u23fc\0\u242b"+ - "\0\u245a\0\u2489\0\u24b8\0\u24e7\0\u2516\0\u2545\0\u2574\0\u25a3"+ - "\0\u25d2\0\u2601\0\u2630\0\u265f\0\u268e\0\u26bd\0\u26ec\0\u271b"+ - "\0\u274a\0\u2779\0\u27a8\0\u27d7\0\u2806\0\u2835\0\u2864\0\u2893"+ - "\0\u28c2\0\u28f1\0\u2920\0\u294f\0\u297e\0\u29ad\0\u29dc\0\u2a0b"+ - "\0\u2a3a\0\u2a69\0\u2a98\0\u2ac7\0\u2af6\0\u2b25\0\u2b54\0\u2b83"+ - "\0\u2bb2\0\u2be1\0\u2c10\0\u2c3f\0\u2c6e\0\u2c9d\0\u2ccc\0\u2cfb"+ - "\0\u2d2a\0\u2d59\0\u2d88\0\u2db7\0\u2de6\0\u2e15\0\u2e44\0\u2e73"+ - "\0\u2ea2\0\u2ed1\0\u2f00\0\u2f2f\0\u2f5e\0\u2f8d\0\u2fbc\0\u2feb"+ - "\0\u301a\0\u3049\0\u3078\0\u30a7\0\u30d6\0\u3105\0\u3134\0\u3163"+ - "\0\u3192\0\u31c1\0\u31f0\0\u321f\0\u324e\0\u327d\0\u32ac\0\u32db"+ - "\0\u330a\0\u2601\0\u3339\0\u3368\0\u3397\0\u33c6\0\u33f5\0\u3424"+ - "\0\u3453\0\u3482\0\u34b1\0\u34e0\0\u350f\0\u353e\0\u356d\0\u359c"+ - "\0\u35cb\0\u35fa\0\u3629\0\u3658\0\u3687\0\u36b6\0\u36e5\0\u3714"+ - "\0\u3743\0\u3772\0\u37a1\0\u37d0\0\u37ff\0\u382e\0\u385d\0\u388c"+ - "\0\u38bb\0\u38ea\0\u3919\0\u3948\0\u3977\0\u39a6\0\u39d5\0\u3a04"+ - "\0\u3a33\0\u3a62\0\u3a91\0\u3ac0\0\u3aef\0\u3b1e\0\u3b4d\0\u3b7c"+ - "\0\u3bab\0\u3bda\0\u3c09\0\u3c38\0\u3c67\0\u3c96\0\u3cc5\0\u3cf4"+ - "\0\u3d23\0\u3d52\0\u3d81\0\u3db0\0\u3ddf\0\u3e0e\0\u3e3d\0\u3e6c"+ - "\0\u3368\0\u3e9b\0\u3eca\0\u3ef9\0\u3f28\0\u3f57\0\u3f86\0\u3fb5"+ - "\0\u3fe4\0\u4013\0\u4042\0\u4071\0\u40a0\0\u40cf\0\u40fe\0\u412d"+ - "\0\u415c\0\u418b\0\u41ba\0\u41e9\0\u4218\0\u4247\0\u4276\0\u42a5"+ - "\0\u42d4\0\u4303\0\u4332\0\u4361\0\u4390\0\u43bf\0\u43ee\0\u441d"+ - "\0\u444c\0\u447b\0\u44aa\0\u44d9\0\u4508\0\u4537\0\u4566\0\u4595"+ - "\0\u45c4\0\u45f3\0\u4622\0\u4651\0\u4680\0\u46af\0\u46de\0\u470d"+ - "\0\u473c\0\u476b\0\u479a\0\u47c9\0\u47f8\0\u4827\0\u4856\0\u4885"+ - "\0\u48b4\0\u48e3\0\u4912\0\u4941\0\u4970\0\u499f\0\u49ce\0\u49fd"+ - "\0\u4a2c\0\u4a5b\0\u4a8a\0\u4ab9\0\u4ae8\0\u4b17\0\u4b46\0\u4b75"+ - "\0\u4ba4\0\u4bd3\0\u4c02\0\u4c31\0\u4c60\0\u4c8f\0\u4cbe\0\u4ced"+ - "\0\u4d1c\0\u4d4b\0\u4d7a\0\u4da9\0\u4dd8\0\u4e07\0\u4e36\0\u4e65"+ - "\0\u4e94\0\u4ec3\0\u4ef2\0\u4f21\0\u4f50\0\u4f7f\0\u4fae\0\u4fdd"+ - "\0\u500c\0\u503b\0\u506a\0\u5099\0\u50c8\0\u50f7\0\u5126\0\u5155"+ - "\0\u5184\0\u51b3\0\u51e2\0\u5211\0\u5240\0\u526f\0\u529e\0\u52cd"+ - "\0\u52fc\0\u532b\0\u535a\0\u5389\0\u53b8\0\u53e7\0\u5416\0\u5445"+ - "\0\u5474\0\u54a3\0\u54d2\0\u5501\0\u5530\0\u555f\0\u558e\0\u55bd"+ - "\0\u55ec\0\u561b\0\u564a\0\u5679\0\u56a8\0\u56d7\0\u5706\0\u5735"+ - "\0\u5764\0\u5793\0\u57c2\0\u57f1\0\u5820\0\u584f\0\u587e\0\u58ad"+ - "\0\u58dc\0\u590b\0\u593a\0\u5969\0\u5998\0\u59c7\0\u59f6\0\u5a25"+ - "\0\u5a54\0\u5a83\0\u5ab2\0\u5ae1\0\u5b10\0\u5b3f\0\u5b6e\0\u5b9d"+ - "\0\u5bcc\0\u5bfb\0\u5c2a\0\u5c59\0\u5c88\0\u5cb7\0\u5ce6\0\u5d15"+ - "\0\u5d44\0\u5d73\0\u5da2\0\u5dd1\0\u5e00\0\u5e2f\0\u5e5e\0\u5e8d"+ - "\0\u5ebc\0\u5eeb\0\u5f1a\0\u5f49\0\u5f78\0\u5fa7\0\u5fd6\0\u6005"+ - "\0\u6034\0\u6063\0\u6092\0\u60c1\0\u60f0\0\u611f\0\u614e\0\u617d"+ - "\0\u61ac\0\u61db\0\u620a\0\u6239\0\u6268\0\u6297\0\u62c6\0\u62f5"+ - "\0\u6324\0\u6353\0\u6382\0\u63b1\0\u63e0\0\u640f\0\u643e\0\u646d"+ - "\0\u649c\0\u64cb\0\u64fa\0\u6529\0\u6558\0\u6587\0\u65b6\0\u65e5"+ - "\0\u6614\0\u6643\0\u6672\0\u66a1\0\u66d0\0\u66ff\0\u672e\0\u675d"+ - "\0\u678c\0\u67bb\0\u67ea\0\u6819\0\u6848\0\u6877\0\u68a6\0\u68d5"+ - "\0\u6904\0\u6933\0\u6962\0\u6991\0\u69c0\0\u69ef\0\u6a1e\0\u6a4d"+ - "\0\u6a7c\0\u6aab\0\u6ada\0\u6b09\0\u6b38\0\u6b67\0\u6b96\0\u6bc5"+ - "\0\u6bf4\0\u6c23\0\u6c52\0\u6c81\0\u6cb0\0\u6cdf\0\u6d0e\0\u6d3d"+ - "\0\u6d6c\0\u6d9b\0\u6dca\0\u6df9\0\u6e28\0\u6e57\0\u6e86\0\u6eb5"+ - "\0\u6ee4\0\u6f13\0\u6f42\0\u6f71\0\u6fa0\0\u6fcf\0\u6ffe\0\u702d"+ - "\0\u705c\0\u708b\0\u70ba\0\u70e9\0\u7118\0\u7147\0\u7176\0\u71a5"+ - "\0\u71d4\0\u7203\0\u7232\0\u7261\0\u7290\0\u72bf\0\u72ee\0\u731d"+ - "\0\u734c\0\u737b\0\u73aa\0\u73d9\0\u7408\0\u7437\0\u7466\0\u7495"+ - "\0\u74c4\0\u74f3\0\u7522\0\u7551\0\u7580\0\u75af\0\u75de\0\u760d"+ - "\0\u763c\0\u766b\0\u769a\0\u76c9\0\u76f8\0\u7727\0\u7756\0\u7785"+ - "\0\u77b4\0\u77e3\0\u7812\0\u7841\0\u7870\0\u789f\0\u78ce\0\u78fd"+ - "\0\u792c\0\u795b\0\u798a\0\u79b9\0\u79e8\0\u7a17\0\u7a46\0\u7a75"+ - "\0\u7aa4\0\u7ad3\0\u7b02\0\u7b31\0\u7b60\0\u7b8f\0\u7bbe\0\u7bed"+ - "\0\u7c1c\0\u7c4b\0\u7c7a\0\u7ca9\0\u7cd8\0\u7d07\0\u7d36\0\u7d65"+ - "\0\u7d94\0\u7dc3\0\u7df2\0\u7e21\0\u7e50\0\u7e7f\0\u7eae\0\u7edd"+ - "\0\u7f0c\0\u7f3b\0\u7f6a\0\u7f99\0\u7fc8\0\u7ff7\0\u8026\0\u8055"+ - "\0\u8084\0\u80b3\0\u80e2\0\u8111\0\u8140\0\u816f\0\u819e\0\u81cd"+ - "\0\u81fc\0\u822b\0\u825a\0\u8289\0\u82b8\0\u82e7\0\u8316\0\u8345"+ - "\0\u8374\0\u83a3\0\u83d2\0\u8401\0\u8430\0\u845f\0\u848e\0\u84bd"+ - "\0\u84ec\0\u851b\0\u854a\0\u8579\0\u85a8\0\u85d7\0\u8606\0\u8635"+ - "\0\u8664\0\u8693\0\u86c2\0\u86f1\0\u8720\0\u874f\0\u877e\0\u87ad"+ - "\0\u87dc\0\u880b\0\u883a\0\u8869\0\u8898\0\u88c7\0\u88f6\0\u8925"+ - "\0\u8954\0\u8983\0\u89b2\0\u89e1\0\u8a10\0\u8a3f\0\u8a6e\0\u8a9d"+ - "\0\u8acc\0\u8afb\0\u8b2a\0\u8b59\0\u8b88\0\u8bb7\0\u8be6\0\u8c15"+ - "\0\u8c44\0\u8c73\0\u8ca2\0\u8cd1\0\u8d00\0\u8d2f\0\u8d5e\0\u8d8d"+ - "\0\u8dbc\0\u8deb\0\u8e1a\0\u8e49\0\u8e78\0\u8ea7\0\u8ed6\0\u8f05"+ - "\0\u8f34\0\u8b2a\0\u8f63"; - - private static int [] zzUnpackRowMap() { - int [] result = new int[795]; - int offset = 0; - offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackRowMap(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int high = packed.charAt(i++) << 16; - result[j++] = high | packed.charAt(i++); - } - return j; - } - - /** - * The transition table of the DFA - */ - private static final int [] ZZ_TRANS = zzUnpackTrans(); - - private static final String ZZ_TRANS_PACKED_0 = - "\3\6\1\7\1\10\1\11\1\6\1\12\1\13\1\6"+ - "\1\14\7\6\1\15\1\6\1\16\1\17\1\20\1\21"+ - "\1\22\1\23\2\6\1\24\1\25\1\6\1\26\1\27"+ - "\1\30\2\6\1\31\1\32\1\33\3\6\1\34\1\6"+ - "\1\15\1\20\1\6\7\35\1\36\12\35\1\37\3\35"+ - "\1\40\3\35\1\41\21\35\1\42\1\43\1\44\3\45"+ - "\1\46\1\45\1\11\1\47\1\0\2\45\1\50\3\45"+ - "\1\51\34\45\1\52\3\45\12\53\1\54\44\53\16\55"+ - "\1\54\40\55\4\6\2\0\1\6\2\0\51\6\1\7"+ - "\1\0\1\11\1\6\2\0\46\6\1\0\1\56\11\0"+ - "\1\57\1\0\1\56\1\0\1\56\2\0\11\56\1\0"+ - "\17\56\1\0\3\56\3\0\1\11\1\0\1\11\130\0"+ - "\4\14\2\60\1\14\1\61\1\60\1\62\1\6\44\14"+ - "\4\6\2\0\1\6\2\0\20\6\1\63\31\6\2\0"+ - "\1\6\2\0\23\6\1\64\26\6\2\0\1\6\2\0"+ - "\14\6\1\65\3\6\1\66\2\6\1\67\1\70\25\6"+ - "\2\0\1\6\2\0\16\6\1\71\7\6\1\72\23\6"+ - "\2\0\1\6\2\0\14\6\1\73\10\6\1\74\7\6"+ - "\1\75\14\6\2\0\1\6\2\0\16\6\1\76\4\6"+ - "\1\77\26\6\2\0\1\6\2\0\25\6\1\100\5\6"+ - "\1\101\5\6\1\102\10\6\2\0\1\6\2\0\17\6"+ - "\1\103\4\6\1\104\1\105\1\6\1\106\4\6\1\107"+ - "\15\6\2\0\1\6\2\0\11\6\1\110\14\6\1\111"+ - "\3\6\1\112\10\6\1\110\6\6\2\0\1\6\2\0"+ - "\13\6\1\113\17\6\1\114\16\6\2\0\1\6\2\0"+ - "\16\6\1\115\1\6\1\116\31\6\2\0\1\6\2\0"+ - "\33\6\1\117\16\6\2\0\1\6\2\0\17\6\1\120"+ - "\1\121\31\6\2\0\1\6\2\0\25\6\1\122\24\6"+ - "\2\0\1\6\2\0\20\6\1\123\13\6\1\124\15\6"+ - "\2\0\1\6\2\0\30\6\1\125\15\6\7\35\1\0"+ - "\44\35\3\0\7\35\1\0\13\35\1\126\30\35\3\0"+ - "\7\35\1\0\13\35\1\127\3\35\1\130\24\35\3\0"+ - "\7\35\1\0\22\35\1\131\21\35\2\0\1\132\23\0"+ - "\1\133\56\0\1\134\3\0\1\135\61\0\1\132\23\0"+ - "\1\132\5\45\3\0\2\45\1\0\3\45\1\0\34\45"+ - "\1\0\6\45\1\46\1\45\1\11\2\0\2\45\1\0"+ - "\3\45\1\0\34\45\1\0\3\45\12\53\1\0\44\53"+ - "\16\55\1\0\40\55\1\0\2\56\12\0\1\56\1\0"+ - "\2\56\1\0\31\56\1\0\3\56\1\0\1\136\13\0"+ - "\1\136\1\0\1\136\2\0\11\136\1\0\17\136\1\0"+ - "\3\136\7\60\1\61\1\60\1\137\1\140\44\60\11\61"+ - "\1\141\1\142\44\61\4\14\2\60\1\14\1\0\1\60"+ - "\46\14\4\6\2\0\1\6\2\0\23\6\1\143\26\6"+ - "\2\0\1\6\2\0\14\6\1\144\35\6\2\0\1\6"+ - "\2\0\16\6\1\145\1\146\32\6\2\0\1\6\2\0"+ - "\12\6\1\147\20\6\1\150\16\6\2\0\1\6\2\0"+ - "\12\6\1\151\37\6\2\0\1\6\2\0\33\6\1\152"+ - "\16\6\2\0\1\6\2\0\17\6\1\153\32\6\2\0"+ - "\1\6\2\0\33\6\1\154\16\6\2\0\1\6\2\0"+ - "\23\6\1\155\26\6\2\0\1\6\2\0\27\6\1\156"+ - "\22\6\2\0\1\6\2\0\23\6\1\157\26\6\2\0"+ - "\1\6\2\0\35\6\1\160\14\6\2\0\1\6\2\0"+ - "\25\6\1\161\24\6\2\0\1\6\2\0\23\6\1\162"+ - "\26\6\2\0\1\6\2\0\33\6\1\163\16\6\2\0"+ - "\1\6\2\0\13\6\1\164\7\6\1\165\26\6\2\0"+ - "\1\6\2\0\17\6\1\166\32\6\2\0\1\6\2\0"+ - "\12\6\1\167\11\6\1\170\25\6\2\0\1\6\2\0"+ - "\26\6\1\171\23\6\2\0\1\6\2\0\27\6\1\172"+ - "\22\6\2\0\1\6\2\0\12\6\1\173\37\6\2\0"+ - "\1\6\2\0\20\6\1\174\2\6\1\175\26\6\2\0"+ - "\1\6\2\0\25\6\1\176\1\177\23\6\2\0\1\6"+ - "\2\0\16\6\1\200\33\6\2\0\1\6\2\0\12\6"+ - "\1\201\37\6\2\0\1\6\2\0\27\6\1\202\22\6"+ - "\2\0\1\6\2\0\33\6\1\203\16\6\2\0\1\6"+ - "\2\0\15\6\1\204\7\6\1\205\16\6\1\204\5\6"+ - "\2\0\1\6\2\0\26\6\1\206\23\6\2\0\1\6"+ - "\2\0\16\6\1\207\33\6\2\0\1\6\2\0\21\6"+ - "\1\210\1\6\1\211\3\6\1\212\5\6\1\213\1\6"+ - "\1\214\5\6\1\210\4\6\2\0\1\6\2\0\14\6"+ - "\1\215\35\6\2\0\1\6\2\0\12\6\1\216\37\6"+ - "\2\0\1\6\2\0\17\6\1\217\32\6\2\0\1\6"+ - "\2\0\16\6\1\220\27\6\7\35\1\0\13\35\1\221"+ - "\30\35\3\0\7\35\1\0\14\35\1\222\27\35\3\0"+ - "\7\35\1\0\20\35\1\223\23\35\3\0\7\35\1\0"+ - "\22\35\1\224\21\35\2\0\1\225\32\0\1\225\23\0"+ - "\1\225\23\0\1\226\57\0\1\227\62\0\1\230\27\0"+ - "\2\136\12\0\1\136\1\0\2\136\1\0\31\136\1\0"+ - "\3\136\7\60\1\0\47\60\7\61\1\0\47\61\4\6"+ - "\2\0\1\6\2\0\27\6\1\231\22\6\2\0\1\6"+ - "\2\0\14\6\1\232\35\6\2\0\1\6\2\0\12\6"+ - "\1\233\5\6\1\234\31\6\2\0\1\6\2\0\13\6"+ - "\1\235\10\6\1\236\1\6\1\237\4\6\1\240\1\241"+ - "\1\6\1\242\13\6\2\0\1\6\2\0\11\6\1\243"+ - "\4\6\1\244\1\6\1\245\5\6\1\246\14\6\1\243"+ - "\6\6\2\0\1\6\2\0\36\6\1\247\13\6\2\0"+ - "\1\6\2\0\16\6\1\250\33\6\2\0\1\6\2\0"+ - "\16\6\1\251\33\6\2\0\1\6\2\0\20\6\1\252"+ - "\31\6\2\0\1\6\2\0\24\6\1\253\25\6\2\0"+ - "\1\6\2\0\13\6\1\254\36\6\2\0\1\6\2\0"+ - "\20\6\1\255\31\6\2\0\1\6\2\0\13\6\1\256"+ - "\36\6\2\0\1\6\2\0\16\6\1\257\33\6\2\0"+ - "\1\6\2\0\32\6\1\260\17\6\2\0\1\6\2\0"+ - "\30\6\1\261\21\6\2\0\1\6\2\0\26\6\1\262"+ - "\23\6\2\0\1\6\2\0\16\6\1\263\33\6\2\0"+ - "\1\6\2\0\35\6\1\264\14\6\2\0\1\6\2\0"+ - "\26\6\1\265\23\6\2\0\1\6\2\0\16\6\1\266"+ - "\33\6\2\0\1\6\2\0\20\6\1\267\31\6\2\0"+ - "\1\6\2\0\25\6\1\270\24\6\2\0\1\6\2\0"+ - "\11\6\1\243\1\271\3\6\1\272\1\273\1\274\2\6"+ - "\1\275\1\276\1\6\1\277\1\300\13\6\1\243\6\6"+ - "\2\0\1\6\2\0\11\6\1\301\31\6\1\301\6\6"+ - "\2\0\1\6\2\0\24\6\1\302\25\6\2\0\1\6"+ - "\2\0\33\6\1\303\16\6\2\0\1\6\2\0\12\6"+ - "\1\304\37\6\2\0\1\6\2\0\40\6\1\305\11\6"+ - "\2\0\1\6\2\0\35\6\1\306\14\6\2\0\1\6"+ - "\2\0\16\6\1\307\33\6\2\0\1\6\2\0\20\6"+ - "\1\310\31\6\2\0\1\6\2\0\20\6\1\311\31\6"+ - "\2\0\1\6\2\0\23\6\1\312\26\6\2\0\1\6"+ - "\2\0\31\6\1\313\20\6\2\0\1\6\2\0\21\6"+ - "\1\314\23\6\1\314\4\6\2\0\1\6\2\0\35\6"+ - "\1\315\14\6\2\0\1\6\2\0\33\6\1\316\16\6"+ - "\2\0\1\6\2\0\27\6\1\317\22\6\2\0\1\6"+ - "\2\0\16\6\1\320\33\6\2\0\1\6\2\0\26\6"+ - "\1\321\23\6\2\0\1\6\2\0\34\6\1\322\15\6"+ - "\2\0\1\6\2\0\20\6\1\323\31\6\2\0\1\6"+ - "\2\0\23\6\1\324\26\6\2\0\1\6\2\0\12\6"+ - "\1\325\37\6\2\0\1\6\2\0\12\6\1\326\33\6"+ - "\7\35\1\0\14\35\1\327\27\35\3\0\7\35\1\0"+ - "\5\35\1\330\36\35\3\0\7\35\1\0\21\35\1\222"+ - "\22\35\3\0\7\35\1\0\23\35\1\331\20\35\36\0"+ - "\1\332\47\0\1\333\47\0\1\334\72\0\1\227\25\0"+ - "\4\6\2\0\1\6\2\0\20\6\1\335\31\6\2\0"+ - "\1\6\2\0\20\6\1\336\31\6\2\0\1\6\2\0"+ - "\16\6\1\337\33\6\2\0\1\6\2\0\33\6\1\340"+ - "\16\6\2\0\1\6\2\0\33\6\1\341\16\6\2\0"+ - "\1\6\2\0\16\6\1\342\33\6\2\0\1\6\2\0"+ - "\13\6\1\113\36\6\2\0\1\6\2\0\20\6\1\343"+ - "\31\6\2\0\1\6\2\0\14\6\1\344\35\6\2\0"+ - "\1\6\2\0\20\6\1\345\31\6\2\0\1\6\2\0"+ - "\23\6\1\346\26\6\2\0\1\6\2\0\25\6\1\347"+ - "\24\6\2\0\1\6\2\0\25\6\1\350\24\6\2\0"+ - "\1\6\2\0\34\6\1\351\15\6\2\0\1\6\2\0"+ - "\20\6\1\352\31\6\2\0\1\6\2\0\14\6\1\353"+ - "\35\6\2\0\1\6\2\0\13\6\1\354\36\6\2\0"+ - "\1\6\2\0\20\6\1\355\31\6\2\0\1\6\2\0"+ - "\20\6\1\356\31\6\2\0\1\6\2\0\16\6\1\357"+ - "\33\6\2\0\1\6\2\0\41\6\1\360\10\6\2\0"+ - "\1\6\2\0\27\6\1\361\1\362\4\6\1\363\14\6"+ - "\2\0\1\6\2\0\12\6\1\364\37\6\2\0\1\6"+ - "\2\0\34\6\1\365\15\6\2\0\1\6\2\0\17\6"+ - "\1\366\32\6\2\0\1\6\2\0\33\6\1\367\16\6"+ - "\2\0\1\6\2\0\33\6\1\370\16\6\2\0\1\6"+ - "\2\0\13\6\1\371\36\6\2\0\1\6\2\0\21\6"+ - "\1\313\23\6\1\313\4\6\2\0\1\6\2\0\26\6"+ - "\1\372\23\6\2\0\1\6\2\0\13\6\1\373\36\6"+ - "\2\0\1\6\2\0\31\6\1\374\20\6\2\0\1\6"+ - "\2\0\31\6\1\375\20\6\2\0\1\6\2\0\24\6"+ - "\1\376\1\347\24\6\2\0\1\6\2\0\23\6\1\377"+ - "\26\6\2\0\1\6\2\0\25\6\1\u0100\24\6\2\0"+ - "\1\6\2\0\17\6\1\u0101\32\6\2\0\1\6\2\0"+ - "\11\6\1\u0102\31\6\1\u0102\6\6\2\0\1\6\2\0"+ - "\34\6\1\u0103\15\6\2\0\1\6\2\0\20\6\1\u0104"+ - "\31\6\2\0\1\6\2\0\12\6\1\271\4\6\1\u0105"+ - "\3\6\1\u0106\1\6\1\u0107\1\6\1\u0108\1\u0109\1\6"+ - "\1\u010a\1\6\1\u010b\15\6\2\0\1\6\2\0\40\6"+ - "\1\u010c\11\6\2\0\1\6\2\0\14\6\1\u010d\35\6"+ - "\2\0\1\6\2\0\20\6\1\u010e\31\6\2\0\1\6"+ - "\2\0\16\6\1\u010f\33\6\2\0\1\6\2\0\23\6"+ - "\1\u0110\26\6\2\0\1\6\2\0\26\6\1\u0111\23\6"+ - "\2\0\1\6\2\0\33\6\1\313\16\6\2\0\1\6"+ - "\2\0\24\6\1\u0112\25\6\2\0\1\6\2\0\34\6"+ - "\1\u0113\15\6\2\0\1\6\2\0\14\6\1\u0114\35\6"+ - "\2\0\1\6\2\0\16\6\1\u0115\33\6\2\0\1\6"+ - "\2\0\16\6\1\u0116\33\6\2\0\1\6\2\0\35\6"+ - "\1\u0117\14\6\2\0\1\6\2\0\33\6\1\u0118\16\6"+ - "\2\0\1\6\2\0\36\6\1\u0119\13\6\2\0\1\6"+ - "\2\0\16\6\1\u011a\1\6\1\u011b\31\6\2\0\1\6"+ - "\2\0\12\6\1\232\37\6\2\0\1\6\2\0\14\6"+ - "\1\u011c\1\u011d\11\6\1\u011e\14\6\1\u011d\5\6\2\0"+ - "\1\6\2\0\16\6\1\u011f\33\6\2\0\1\6\2\0"+ - "\11\6\1\u0120\31\6\1\u0120\2\6\7\35\1\0\5\35"+ - "\1\330\7\35\1\222\26\35\3\0\7\35\1\0\3\35"+ - "\1\u0121\40\35\3\0\1\35\2\331\4\35\1\0\1\331"+ - "\2\35\41\331\3\332\1\0\2\u0122\5\0\1\u0122\2\0"+ - "\1\332\3\u0122\14\332\1\u0122\17\332\1\u0122\3\332\15\0"+ - "\1\334\7\0\1\227\44\0\1\u0123\43\0\4\6\2\0"+ - "\1\6\2\0\33\6\1\u0124\16\6\2\0\1\6\2\0"+ - "\25\6\1\u0125\24\6\2\0\1\6\2\0\35\6\1\u0126"+ - "\14\6\2\0\1\6\2\0\33\6\1\u0127\16\6\2\0"+ - "\1\6\2\0\26\6\1\u0128\23\6\2\0\1\6\2\0"+ - "\13\6\1\u0129\36\6\2\0\1\6\2\0\37\6\1\u012a"+ - "\12\6\2\0\1\6\2\0\20\6\1\u012b\31\6\2\0"+ - "\1\6\2\0\33\6\1\u012c\16\6\2\0\1\6\2\0"+ - "\25\6\1\u012d\24\6\2\0\1\6\2\0\13\6\1\u012e"+ - "\36\6\2\0\1\6\2\0\36\6\1\u012f\13\6\2\0"+ - "\1\6\2\0\12\6\1\347\37\6\2\0\1\6\2\0"+ - "\33\6\1\u0130\16\6\2\0\1\6\2\0\15\6\1\205"+ - "\26\6\1\205\5\6\2\0\1\6\2\0\12\6\1\u0131"+ - "\37\6\2\0\1\6\2\0\12\6\1\u0132\37\6\2\0"+ - "\1\6\2\0\12\6\1\271\4\6\1\u0133\32\6\2\0"+ - "\1\6\2\0\15\6\1\u0134\1\6\1\u0135\3\6\1\u0136"+ - "\7\6\1\u0137\10\6\1\u0134\5\6\2\0\1\6\2\0"+ - "\16\6\1\u0138\7\6\1\u0139\23\6\2\0\1\6\2\0"+ - "\20\6\1\u013a\31\6\2\0\1\6\2\0\23\6\1\u013b"+ - "\26\6\2\0\1\6\2\0\20\6\1\u013c\31\6\2\0"+ - "\1\6\2\0\33\6\1\u013d\5\6\1\u013e\10\6\2\0"+ - "\1\6\2\0\23\6\1\u013f\26\6\2\0\1\6\2\0"+ - "\20\6\1\u0140\31\6\2\0\1\6\2\0\27\6\1\u0141"+ - "\22\6\2\0\1\6\2\0\20\6\1\u0142\31\6\2\0"+ - "\1\6\2\0\17\6\1\u0143\32\6\2\0\1\6\2\0"+ - "\25\6\1\313\24\6\2\0\1\6\2\0\12\6\1\u0144"+ - "\37\6\2\0\1\6\2\0\35\6\1\u0145\14\6\2\0"+ - "\1\6\2\0\13\6\1\u0143\36\6\2\0\1\6\2\0"+ - "\26\6\1\u0146\23\6\2\0\1\6\2\0\25\6\1\u0147"+ - "\24\6\2\0\1\6\2\0\24\6\1\u0148\25\6\2\0"+ - "\1\6\2\0\12\6\1\u0149\37\6\2\0\1\6\2\0"+ - "\23\6\1\u014a\26\6\2\0\1\6\2\0\12\6\1\u014b"+ - "\37\6\2\0\1\6\2\0\14\6\1\u014c\1\u014d\26\6"+ - "\1\u014d\5\6\2\0\1\6\2\0\27\6\1\u014e\22\6"+ - "\2\0\1\6\2\0\34\6\1\u014f\15\6\2\0\1\6"+ - "\2\0\23\6\1\u0150\26\6\2\0\1\6\2\0\16\6"+ - "\1\u0151\11\6\1\u0152\21\6\2\0\1\6\2\0\23\6"+ - "\1\u0153\26\6\2\0\1\6\2\0\33\6\1\u0154\16\6"+ - "\2\0\1\6\2\0\14\6\1\u0155\35\6\2\0\1\6"+ - "\2\0\14\6\1\u0156\35\6\2\0\1\6\2\0\20\6"+ - "\1\u0157\31\6\2\0\1\6\2\0\25\6\1\u0158\24\6"+ - "\2\0\1\6\2\0\20\6\1\u0159\31\6\2\0\1\6"+ - "\2\0\13\6\1\u015a\36\6\2\0\1\6\2\0\25\6"+ - "\1\u015b\24\6\2\0\1\6\2\0\12\6\1\u015c\37\6"+ - "\2\0\1\6\2\0\17\6\1\u015d\32\6\2\0\1\6"+ - "\2\0\20\6\1\u015e\31\6\2\0\1\6\2\0\12\6"+ - "\1\u015f\37\6\2\0\1\6\2\0\12\6\1\u0160\37\6"+ - "\2\0\1\6\2\0\20\6\1\u0161\31\6\2\0\1\6"+ - "\2\0\20\6\1\u0162\31\6\2\0\1\6\2\0\20\6"+ - "\1\u0163\31\6\2\0\1\6\2\0\33\6\1\u0143\16\6"+ - "\2\0\1\6\2\0\14\6\1\u0164\35\6\2\0\1\6"+ - "\2\0\34\6\1\u0165\15\6\2\0\1\6\2\0\16\6"+ - "\1\u0166\33\6\2\0\1\6\2\0\16\6\1\310\33\6"+ - "\2\0\1\6\2\0\36\6\1\u0167\13\6\2\0\1\6"+ - "\2\0\23\6\1\u0168\22\6\7\35\1\0\3\35\1\331"+ - "\40\35\16\0\1\332\43\0\4\6\2\0\1\6\2\0"+ - "\25\6\1\u0107\24\6\2\0\1\6\2\0\36\6\1\313"+ - "\13\6\2\0\1\6\2\0\20\6\1\u0169\31\6\2\0"+ - "\1\6\2\0\26\6\1\u016a\23\6\2\0\1\6\2\0"+ - "\41\6\1\u016b\10\6\2\0\1\6\2\0\11\6\1\u016c"+ - "\31\6\1\u016c\6\6\2\0\1\6\2\0\34\6\1\u016d"+ - "\15\6\2\0\1\6\2\0\33\6\1\u0161\16\6\2\0"+ - "\1\6\2\0\16\6\1\u016e\33\6\2\0\1\6\2\0"+ - "\27\6\1\u016f\22\6\2\0\1\6\2\0\34\6\1\u0170"+ - "\15\6\2\0\1\6\2\0\16\6\1\u0171\33\6\2\0"+ - "\1\6\2\0\14\6\1\u0172\35\6\2\0\1\6\2\0"+ - "\16\6\1\u0173\33\6\2\0\1\6\2\0\23\6\1\u0174"+ - "\26\6\2\0\1\6\2\0\23\6\1\77\26\6\2\0"+ - "\1\6\2\0\23\6\1\u0175\26\6\2\0\1\6\2\0"+ - "\26\6\1\u0176\23\6\2\0\1\6\2\0\13\6\1\u0177"+ - "\36\6\2\0\1\6\2\0\20\6\1\u0178\31\6\2\0"+ - "\1\6\2\0\32\6\1\u0179\17\6\2\0\1\6\2\0"+ - "\13\6\1\113\17\6\1\u017a\16\6\2\0\1\6\2\0"+ - "\15\6\1\u017b\26\6\1\u017b\5\6\2\0\1\6\2\0"+ - "\14\6\1\u0143\35\6\2\0\1\6\2\0\25\6\1\u017c"+ - "\24\6\2\0\1\6\2\0\20\6\1\u017d\31\6\2\0"+ - "\1\6\2\0\35\6\1\u017e\14\6\2\0\1\6\2\0"+ - "\32\6\1\u017f\17\6\2\0\1\6\2\0\14\6\1\u0180"+ - "\20\6\1\u0181\14\6\2\0\1\6\2\0\26\6\1\u0182"+ - "\23\6\2\0\1\6\2\0\14\6\1\u0183\35\6\2\0"+ - "\1\6\2\0\20\6\1\313\31\6\2\0\1\6\2\0"+ - "\13\6\1\u0184\36\6\2\0\1\6\2\0\26\6\1\u0185"+ - "\23\6\2\0\1\6\2\0\25\6\1\u0149\24\6\2\0"+ - "\1\6\2\0\32\6\1\u0186\17\6\2\0\1\6\2\0"+ - "\26\6\1\u0187\23\6\2\0\1\6\2\0\30\6\1\u0188"+ - "\21\6\2\0\1\6\2\0\33\6\1\u0189\16\6\2\0"+ - "\1\6\2\0\13\6\1\u018a\36\6\2\0\1\6\2\0"+ - "\24\6\1\u018b\25\6\2\0\1\6\2\0\23\6\1\u018c"+ - "\26\6\2\0\1\6\2\0\23\6\1\u018d\26\6\2\0"+ - "\1\6\2\0\12\6\1\u018e\37\6\2\0\1\6\2\0"+ - "\35\6\1\u0143\14\6\2\0\1\6\2\0\32\6\1\u018f"+ - "\17\6\2\0\1\6\2\0\35\6\1\u0190\14\6\2\0"+ - "\1\6\2\0\14\6\1\u0191\35\6\2\0\1\6\2\0"+ - "\26\6\1\u0192\23\6\2\0\1\6\2\0\20\6\1\u0193"+ - "\31\6\2\0\1\6\2\0\13\6\1\u0194\36\6\2\0"+ - "\1\6\2\0\12\6\1\u0195\37\6\2\0\1\6\2\0"+ - "\12\6\1\u0196\37\6\2\0\1\6\2\0\12\6\1\u0197"+ - "\1\6\1\u0198\3\6\1\u0199\4\6\1\u0107\1\6\1\u019a"+ - "\22\6\2\0\1\6\2\0\20\6\1\u019b\31\6\2\0"+ - "\1\6\2\0\14\6\1\313\35\6\2\0\1\6\2\0"+ - "\26\6\1\u019c\23\6\2\0\1\6\2\0\12\6\1\u019d"+ - "\37\6\2\0\1\6\2\0\33\6\1\u019e\16\6\2\0"+ - "\1\6\2\0\24\6\1\u019f\1\u01a0\7\6\1\u01a1\14\6"+ - "\2\0\1\6\2\0\20\6\1\u01a2\31\6\2\0\1\6"+ - "\2\0\24\6\1\u01a3\25\6\2\0\1\6\2\0\11\6"+ - "\1\243\1\271\3\6\1\244\1\273\1\274\3\6\1\276"+ - "\1\6\1\246\14\6\1\243\6\6\2\0\1\6\2\0"+ - "\12\6\1\u01a4\37\6\2\0\1\6\2\0\15\6\1\u01a5"+ - "\26\6\1\u01a5\5\6\2\0\1\6\2\0\17\6\1\u01a6"+ - "\32\6\2\0\1\6\2\0\16\6\1\u01a7\33\6\2\0"+ - "\1\6\2\0\24\6\1\u01a8\25\6\2\0\1\6\2\0"+ - "\15\6\1\u01a9\26\6\1\u01a9\5\6\2\0\1\6\2\0"+ - "\33\6\1\u01aa\16\6\2\0\1\6\2\0\31\6\1\u01ab"+ - "\20\6\2\0\1\6\2\0\20\6\1\u01ac\31\6\2\0"+ - "\1\6\2\0\16\6\1\u01ad\33\6\2\0\1\6\2\0"+ - "\15\6\1\u01ae\26\6\1\u01ae\5\6\2\0\1\6\2\0"+ - "\17\6\1\202\32\6\2\0\1\6\2\0\12\6\1\u01af"+ - "\37\6\2\0\1\6\2\0\15\6\1\u01b0\26\6\1\u01b0"+ - "\5\6\2\0\1\6\2\0\16\6\1\u01b1\33\6\2\0"+ - "\1\6\2\0\25\6\1\u01b2\24\6\2\0\1\6\2\0"+ - "\32\6\1\313\17\6\2\0\1\6\2\0\40\6\1\u01b3"+ - "\11\6\2\0\1\6\2\0\32\6\1\u01b4\17\6\2\0"+ - "\1\6\2\0\13\6\1\u01b5\36\6\2\0\1\6\2\0"+ - "\23\6\1\u01b6\26\6\2\0\1\6\2\0\25\6\1\u01b7"+ - "\24\6\2\0\1\6\2\0\27\6\1\u01b8\22\6\2\0"+ - "\1\6\2\0\23\6\1\u01b9\26\6\2\0\1\6\2\0"+ - "\34\6\1\313\15\6\2\0\1\6\2\0\37\6\1\u01ba"+ - "\12\6\2\0\1\6\2\0\17\6\1\u01bb\32\6\2\0"+ - "\1\6\2\0\20\6\1\u01bc\31\6\2\0\1\6\2\0"+ - "\20\6\1\u01bd\31\6\2\0\1\6\2\0\35\6\1\u01be"+ - "\14\6\2\0\1\6\2\0\24\6\1\u01bf\25\6\2\0"+ - "\1\6\2\0\23\6\1\u01c0\3\6\1\361\1\u01c1\21\6"+ - "\2\0\1\6\2\0\23\6\1\u01c2\26\6\2\0\1\6"+ - "\2\0\34\6\1\u01c3\15\6\2\0\1\6\2\0\34\6"+ - "\1\u01c4\15\6\2\0\1\6\2\0\27\6\1\u01c5\22\6"+ - "\2\0\1\6\2\0\31\6\1\u01c6\20\6\2\0\1\6"+ - "\2\0\14\6\1\u01c7\35\6\2\0\1\6\2\0\34\6"+ - "\1\u01c8\15\6\2\0\1\6\2\0\33\6\1\u01c9\16\6"+ - "\2\0\1\6\2\0\34\6\1\u01ca\15\6\2\0\1\6"+ - "\2\0\13\6\1\u01cb\36\6\2\0\1\6\2\0\11\6"+ - "\1\u01cc\31\6\1\u01cc\6\6\2\0\1\6\2\0\20\6"+ - "\1\u01cd\31\6\2\0\1\6\2\0\12\6\1\271\10\6"+ - "\1\u0106\6\6\1\u010a\1\6\1\u010b\15\6\2\0\1\6"+ - "\2\0\16\6\1\u01ce\33\6\2\0\1\6\2\0\34\6"+ - "\1\u01cf\15\6\2\0\1\6\2\0\33\6\1\u01d0\16\6"+ - "\2\0\1\6\2\0\20\6\1\u01d1\31\6\2\0\1\6"+ - "\2\0\14\6\1\u01d2\11\6\1\237\1\361\22\6\2\0"+ - "\1\6\2\0\27\6\1\u01d3\22\6\2\0\1\6\2\0"+ - "\33\6\1\u01d4\16\6\2\0\1\6\2\0\12\6\1\u01d5"+ - "\37\6\2\0\1\6\2\0\41\6\1\u01d6\10\6\2\0"+ - "\1\6\2\0\26\6\1\u01d7\23\6\2\0\1\6\2\0"+ - "\41\6\1\u01d8\10\6\2\0\1\6\2\0\33\6\1\u01d9"+ - "\16\6\2\0\1\6\2\0\12\6\1\271\3\6\1\u01da"+ - "\1\273\32\6\2\0\1\6\2\0\35\6\1\u01db\14\6"+ - "\2\0\1\6\2\0\13\6\1\u017c\36\6\2\0\1\6"+ - "\2\0\13\6\1\u01dc\36\6\2\0\1\6\2\0\20\6"+ - "\1\u01dd\31\6\2\0\1\6\2\0\20\6\1\u01de\3\6"+ - "\1\u01df\1\6\1\237\1\6\1\362\2\6\1\u01e0\16\6"+ - "\2\0\1\6\2\0\12\6\1\u01e1\37\6\2\0\1\6"+ - "\2\0\11\6\1\u01e2\31\6\1\u01e2\6\6\2\0\1\6"+ - "\2\0\15\6\1\u01e3\26\6\1\u01e3\5\6\2\0\1\6"+ - "\2\0\20\6\1\u015b\31\6\2\0\1\6\2\0\20\6"+ - "\1\u01e4\31\6\2\0\1\6\2\0\40\6\1\313\11\6"+ - "\2\0\1\6\2\0\26\6\1\u01e5\23\6\2\0\1\6"+ - "\2\0\35\6\1\u01e6\14\6\2\0\1\6\2\0\24\6"+ - "\1\236\11\6\1\u01e7\13\6\2\0\1\6\2\0\33\6"+ - "\1\u01e8\16\6\2\0\1\6\2\0\33\6\1\u01e9\16\6"+ - "\2\0\1\6\2\0\31\6\1\u01ea\20\6\2\0\1\6"+ - "\2\0\15\6\1\u01eb\26\6\1\u01eb\5\6\2\0\1\6"+ - "\2\0\25\6\1\u01ec\24\6\2\0\1\6\2\0\32\6"+ - "\1\u01ed\17\6\2\0\1\6\2\0\12\6\1\u01ee\37\6"+ - "\2\0\1\6\2\0\20\6\1\u01ef\31\6\2\0\1\6"+ - "\2\0\25\6\1\u01f0\24\6\2\0\1\6\2\0\20\6"+ - "\1\u01f1\31\6\2\0\1\6\2\0\27\6\1\u01f2\22\6"+ - "\2\0\1\6\2\0\26\6\1\u011a\23\6\2\0\1\6"+ - "\2\0\20\6\1\u01f3\31\6\2\0\1\6\2\0\34\6"+ - "\1\u01f4\15\6\2\0\1\6\2\0\34\6\1\u01f5\15\6"+ - "\2\0\1\6\2\0\33\6\1\u013d\16\6\2\0\1\6"+ - "\2\0\13\6\1\u01f6\36\6\2\0\1\6\2\0\25\6"+ - "\1\u01f7\24\6\2\0\1\6\2\0\23\6\1\u01f8\26\6"+ - "\2\0\1\6\2\0\34\6\1\u01f9\15\6\2\0\1\6"+ - "\2\0\24\6\1\u01fa\25\6\2\0\1\6\2\0\31\6"+ - "\1\u01fb\20\6\2\0\1\6\2\0\12\6\1\u01fc\37\6"+ - "\2\0\1\6\2\0\14\6\1\u01fd\35\6\2\0\1\6"+ - "\2\0\23\6\1\u01fe\26\6\2\0\1\6\2\0\16\6"+ - "\1\u01ff\33\6\2\0\1\6\2\0\12\6\1\271\5\6"+ - "\1\274\31\6\2\0\1\6\2\0\20\6\1\u0200\31\6"+ - "\2\0\1\6\2\0\12\6\1\u0201\37\6\2\0\1\6"+ - "\2\0\16\6\1\u0202\33\6\2\0\1\6\2\0\17\6"+ - "\1\u0203\32\6\2\0\1\6\2\0\15\6\1\u0204\2\6"+ - "\1\u0205\2\6\1\u0106\1\u0206\2\6\1\u0207\1\u0208\1\6"+ - "\1\u0209\1\u020a\1\u020b\7\6\1\u0204\5\6\2\0\1\6"+ - "\2\0\26\6\1\u020c\23\6\2\0\1\6\2\0\14\6"+ - "\1\u020d\35\6\2\0\1\6\2\0\24\6\1\u020e\25\6"+ - "\2\0\1\6\2\0\13\6\1\u01d0\36\6\2\0\1\6"+ - "\2\0\15\6\1\u020f\26\6\1\u020f\5\6\2\0\1\6"+ - "\2\0\17\6\1\u0210\32\6\2\0\1\6\2\0\26\6"+ - "\1\u0211\23\6\2\0\1\6\2\0\16\6\1\u0212\33\6"+ - "\2\0\1\6\2\0\23\6\1\u0213\26\6\2\0\1\6"+ - "\2\0\31\6\1\371\20\6\2\0\1\6\2\0\13\6"+ - "\1\u0214\36\6\2\0\1\6\2\0\35\6\1\u0215\14\6"+ - "\2\0\1\6\2\0\12\6\1\u0216\37\6\2\0\1\6"+ - "\2\0\31\6\1\u0217\20\6\2\0\1\6\2\0\24\6"+ - "\1\266\25\6\2\0\1\6\2\0\23\6\1\u0218\26\6"+ - "\2\0\1\6\2\0\33\6\1\u0219\16\6\2\0\1\6"+ - "\2\0\35\6\1\313\14\6\2\0\1\6\2\0\25\6"+ - "\1\u021a\24\6\2\0\1\6\2\0\26\6\1\u021b\23\6"+ - "\2\0\1\6\2\0\34\6\1\371\15\6\2\0\1\6"+ - "\2\0\12\6\1\u021c\1\u021d\21\6\1\u021e\14\6\2\0"+ - "\1\6\2\0\20\6\1\u021f\31\6\2\0\1\6\2\0"+ - "\16\6\1\u0220\33\6\2\0\1\6\2\0\21\6\1\u0221"+ - "\23\6\1\u0221\4\6\2\0\1\6\2\0\33\6\1\u0222"+ - "\16\6\2\0\1\6\2\0\14\6\1\u0174\35\6\2\0"+ - "\1\6\2\0\20\6\1\u0223\31\6\2\0\1\6\2\0"+ - "\14\6\1\u0224\35\6\2\0\1\6\2\0\20\6\1\u0225"+ - "\31\6\2\0\1\6\2\0\24\6\1\u0226\2\6\1\u0227"+ - "\22\6\2\0\1\6\2\0\16\6\1\u0228\33\6\2\0"+ - "\1\6\2\0\26\6\1\u0229\23\6\2\0\1\6\2\0"+ - "\25\6\1\u022a\24\6\2\0\1\6\2\0\20\6\1\u022b"+ - "\31\6\2\0\1\6\2\0\23\6\1\u022c\26\6\2\0"+ - "\1\6\2\0\26\6\1\u022d\23\6\2\0\1\6\2\0"+ - "\25\6\1\u022e\24\6\2\0\1\6\2\0\23\6\1\u022f"+ - "\26\6\2\0\1\6\2\0\33\6\1\u0230\16\6\2\0"+ - "\1\6\2\0\17\6\1\u0200\32\6\2\0\1\6\2\0"+ - "\20\6\1\u0231\31\6\2\0\1\6\2\0\33\6\1\u0232"+ - "\16\6\2\0\1\6\2\0\27\6\1\u01d0\22\6\2\0"+ - "\1\6\2\0\13\6\1\313\36\6\2\0\1\6\2\0"+ - "\35\6\1\u0233\14\6\2\0\1\6\2\0\12\6\1\u0234"+ - "\37\6\2\0\1\6\2\0\12\6\1\271\37\6\2\0"+ - "\1\6\2\0\11\6\1\u0235\31\6\1\u0235\3\6\1\u0236"+ - "\2\6\2\0\1\6\2\0\52\6\2\0\1\6\2\0"+ - "\32\6\1\u0143\17\6\2\0\1\6\2\0\25\6\1\u0174"+ - "\24\6\2\0\1\6\2\0\12\6\1\313\37\6\2\0"+ - "\1\6\2\0\15\6\1\u0237\26\6\1\u0237\5\6\2\0"+ - "\1\6\2\0\13\6\1\u0238\36\6\2\0\1\6\2\0"+ - "\12\6\1\u0239\37\6\2\0\1\6\2\0\33\6\1\u023a"+ - "\16\6\2\0\1\6\2\0\25\6\1\u023b\24\6\2\0"+ - "\1\6\2\0\26\6\1\u023c\23\6\2\0\1\6\2\0"+ - "\20\6\1\u023d\31\6\2\0\1\6\2\0\16\6\1\u023e"+ - "\33\6\2\0\1\6\2\0\33\6\1\u023f\16\6\2\0"+ - "\1\6\2\0\20\6\1\u0240\31\6\2\0\1\6\2\0"+ - "\33\6\1\u0241\16\6\2\0\1\6\2\0\33\6\1\u0242"+ - "\16\6\2\0\1\6\2\0\12\6\1\u0243\37\6\2\0"+ - "\1\6\2\0\13\6\1\u0244\7\6\1\u0106\26\6\2\0"+ - "\1\6\2\0\16\6\1\371\33\6\2\0\1\6\2\0"+ - "\17\6\1\u01c5\32\6\2\0\1\6\2\0\34\6\1\u0245"+ - "\15\6\2\0\1\6\2\0\32\6\1\u0246\17\6\2\0"+ - "\1\6\2\0\24\6\1\u0247\25\6\2\0\1\6\2\0"+ - "\16\6\1\u0248\33\6\2\0\1\6\2\0\23\6\1\u0249"+ - "\26\6\2\0\1\6\2\0\20\6\1\u024a\31\6\2\0"+ - "\1\6\2\0\14\6\1\u024b\1\6\1\u024c\33\6\2\0"+ - "\1\6\2\0\12\6\1\u024d\37\6\2\0\1\6\2\0"+ - "\26\6\1\u024e\23\6\2\0\1\6\2\0\32\6\1\u024f"+ - "\17\6\2\0\1\6\2\0\25\6\1\u0250\24\6\2\0"+ - "\1\6\2\0\20\6\1\u0251\31\6\2\0\1\6\2\0"+ - "\20\6\1\u0252\31\6\2\0\1\6\2\0\23\6\1\u0253"+ - "\26\6\2\0\1\6\2\0\23\6\1\114\26\6\2\0"+ - "\1\6\2\0\41\6\1\313\10\6\2\0\1\6\2\0"+ - "\14\6\1\u0254\35\6\2\0\1\6\2\0\35\6\1\u0255"+ - "\14\6\2\0\1\6\2\0\33\6\1\u0256\16\6\2\0"+ - "\1\6\2\0\34\6\1\u0257\15\6\2\0\1\6\2\0"+ - "\14\6\1\u0258\35\6\2\0\1\6\2\0\17\6\1\u0259"+ - "\32\6\2\0\1\6\2\0\20\6\1\u025a\31\6\2\0"+ - "\1\6\2\0\17\6\1\u025b\32\6\2\0\1\6\2\0"+ - "\24\6\1\362\25\6\2\0\1\6\2\0\23\6\1\u025c"+ - "\26\6\2\0\1\6\2\0\33\6\1\u025d\16\6\2\0"+ - "\1\6\2\0\14\6\1\u025e\35\6\2\0\1\6\2\0"+ - "\12\6\1\u025f\37\6\2\0\1\6\2\0\27\6\1\u0260"+ - "\22\6\2\0\1\6\2\0\11\6\1\u0261\31\6\1\u0261"+ - "\6\6\2\0\1\6\2\0\27\6\1\361\22\6\2\0"+ - "\1\6\2\0\14\6\1\u0262\35\6\2\0\1\6\2\0"+ - "\16\6\1\u0263\33\6\2\0\1\6\2\0\20\6\1\u0264"+ - "\31\6\2\0\1\6\2\0\16\6\1\u0265\33\6\2\0"+ - "\1\6\2\0\16\6\1\u0266\33\6\2\0\1\6\2\0"+ - "\17\6\1\u0267\3\6\1\u0106\1\6\1\u0268\7\6\1\u0269"+ - "\1\u026a\13\6\2\0\1\6\2\0\16\6\1\u026b\33\6"+ - "\2\0\1\6\2\0\12\6\1\167\37\6\2\0\1\6"+ - "\2\0\24\6\1\276\25\6\2\0\1\6\2\0\26\6"+ - "\1\u026c\23\6\2\0\1\6\2\0\23\6\1\u026d\26\6"+ - "\2\0\1\6\2\0\35\6\1\u026e\14\6\2\0\1\6"+ - "\2\0\33\6\1\u026f\16\6\2\0\1\6\2\0\25\6"+ - "\1\u0270\24\6\2\0\1\6\2\0\26\6\1\u0271\23\6"+ - "\2\0\1\6\2\0\35\6\1\u0272\14\6\2\0\1\6"+ - "\2\0\17\6\1\313\32\6\2\0\1\6\2\0\16\6"+ - "\1\u0273\33\6\2\0\1\6\2\0\15\6\1\u020f\5\6"+ - "\1\u0274\1\6\1\u0275\1\6\1\u019a\2\6\1\u010a\4\6"+ - "\1\u0276\4\6\1\u020f\5\6\2\0\1\6\2\0\33\6"+ - "\1\u0277\16\6\2\0\1\6\2\0\33\6\1\u0278\16\6"+ - "\2\0\1\6\2\0\20\6\1\u0279\31\6\2\0\1\6"+ - "\2\0\40\6\1\u01c5\11\6\2\0\1\6\2\0\33\6"+ - "\1\u01a6\16\6\2\0\1\6\2\0\16\6\1\372\33\6"+ - "\2\0\1\6\2\0\25\6\1\u027a\24\6\2\0\1\6"+ - "\2\0\17\6\1\u027b\32\6\2\0\1\6\2\0\25\6"+ - "\1\u027c\24\6\2\0\1\6\2\0\24\6\1\u027d\25\6"+ - "\2\0\1\6\2\0\24\6\1\313\25\6\2\0\1\6"+ - "\2\0\16\6\1\u027e\33\6\2\0\1\6\2\0\27\6"+ - "\1\313\22\6\2\0\1\6\2\0\35\6\1\u01f8\14\6"+ - "\2\0\1\6\2\0\33\6\1\u027f\16\6\2\0\1\6"+ - "\2\0\12\6\1\u0280\37\6\2\0\1\6\2\0\35\6"+ - "\1\u021e\14\6\2\0\1\6\2\0\23\6\1\u0200\26\6"+ - "\2\0\1\6\2\0\16\6\1\u0281\33\6\2\0\1\6"+ - "\2\0\16\6\1\u0282\33\6\2\0\1\6\2\0\14\6"+ - "\1\u0241\35\6\2\0\1\6\2\0\16\6\1\u0233\33\6"+ - "\2\0\1\6\2\0\13\6\1\u0283\36\6\2\0\1\6"+ - "\2\0\12\6\1\202\37\6\2\0\1\6\2\0\12\6"+ - "\1\u0284\37\6\2\0\1\6\2\0\13\6\1\u0285\36\6"+ - "\2\0\1\6\2\0\31\6\1\u0286\20\6\2\0\1\6"+ - "\2\0\14\6\1\u0287\35\6\2\0\1\6\2\0\17\6"+ - "\1\u0288\32\6\2\0\1\6\2\0\20\6\1\u0289\31\6"+ - "\2\0\1\6\2\0\12\6\1\u028a\37\6\2\0\1\6"+ - "\2\0\26\6\1\u028b\23\6\2\0\1\6\2\0\25\6"+ - "\1\u0200\24\6\2\0\1\6\2\0\36\6\1\u0143\13\6"+ - "\2\0\1\6\2\0\25\6\1\u028c\24\6\2\0\1\6"+ - "\2\0\26\6\1\u028d\23\6\2\0\1\6\2\0\26\6"+ - "\1\u028e\23\6\2\0\1\6\2\0\34\6\1\u028f\15\6"+ - "\2\0\1\6\2\0\20\6\1\u0290\31\6\2\0\1\6"+ - "\2\0\17\6\1\u0291\32\6\2\0\1\6\2\0\25\6"+ - "\1\u0292\24\6\2\0\1\6\2\0\30\6\1\u0293\21\6"+ - "\2\0\1\6\2\0\13\6\1\u0294\36\6\2\0\1\6"+ - "\2\0\20\6\1\u0295\31\6\2\0\1\6\2\0\27\6"+ - "\1\u0296\22\6\2\0\1\6\2\0\34\6\1\u0297\15\6"+ - "\2\0\1\6\2\0\26\6\1\u0298\23\6\2\0\1\6"+ - "\2\0\12\6\1\u0299\37\6\2\0\1\6\2\0\17\6"+ - "\1\u029a\32\6\2\0\1\6\2\0\26\6\1\u029b\23\6"+ - "\2\0\1\6\2\0\26\6\1\u01f8\23\6\2\0\1\6"+ - "\2\0\26\6\1\u029c\23\6\2\0\1\6\2\0\24\6"+ - "\1\u029d\25\6\2\0\1\6\2\0\14\6\1\u0200\35\6"+ - "\2\0\1\6\2\0\14\6\1\167\35\6\2\0\1\6"+ - "\2\0\23\6\1\u029e\26\6\2\0\1\6\2\0\27\6"+ - "\1\u029f\22\6\2\0\1\6\2\0\11\6\1\u01b0\31\6"+ - "\1\u01b0\6\6\2\0\1\6\2\0\25\6\1\u0143\24\6"+ - "\2\0\1\6\2\0\35\6\1\u02a0\14\6\2\0\1\6"+ - "\2\0\24\6\1\u02a1\25\6\2\0\1\6\2\0\15\6"+ - "\1\u02a2\26\6\1\u02a2\5\6\2\0\1\6\2\0\12\6"+ - "\1\u0143\37\6\2\0\1\6\2\0\12\6\1\u02a1\37\6"+ - "\2\0\1\6\2\0\34\6\1\u011a\15\6\2\0\1\6"+ - "\2\0\33\6\1\u02a3\16\6\2\0\1\6\2\0\25\6"+ - "\1\u024e\24\6\2\0\1\6\2\0\34\6\1\u02a4\15\6"+ - "\2\0\1\6\2\0\26\6\1\u02a5\23\6\2\0\1\6"+ - "\2\0\23\6\1\u02a6\26\6\2\0\1\6\2\0\30\6"+ - "\1\u02a7\21\6\2\0\1\6\2\0\33\6\1\u02a8\16\6"+ - "\2\0\1\6\2\0\15\6\1\u02a9\26\6\1\u02a9\5\6"+ - "\2\0\1\6\2\0\32\6\1\u02aa\17\6\2\0\1\6"+ - "\2\0\34\6\1\u02ab\15\6\2\0\1\6\2\0\14\6"+ - "\1\u02ac\35\6\2\0\1\6\2\0\33\6\1\u02ad\16\6"+ - "\2\0\1\6\2\0\12\6\1\u02ae\37\6\2\0\1\6"+ - "\2\0\12\6\1\u02af\37\6\2\0\1\6\2\0\17\6"+ - "\1\u02b0\32\6\2\0\1\6\2\0\23\6\1\u02b1\26\6"+ - "\2\0\1\6\2\0\15\6\1\u02b2\26\6\1\u02b2\5\6"+ - "\2\0\1\6\2\0\13\6\1\u02b3\13\6\1\372\22\6"+ - "\2\0\1\6\2\0\13\6\1\u02b4\36\6\2\0\1\6"+ - "\2\0\12\6\1\u02b5\37\6\2\0\1\6\2\0\23\6"+ - "\1\u01fa\26\6\2\0\1\6\2\0\32\6\1\u02b6\17\6"+ - "\2\0\1\6\2\0\25\6\1\u02b7\24\6\2\0\1\6"+ - "\2\0\36\6\1\u02b8\13\6\2\0\1\6\2\0\20\6"+ - "\1\u02b9\31\6\2\0\1\6\2\0\14\6\1\u02a1\35\6"+ - "\2\0\1\6\2\0\20\6\1\u0220\31\6\2\0\1\6"+ - "\2\0\23\6\1\u02ba\26\6\2\0\1\6\2\0\11\6"+ - "\1\313\31\6\1\313\6\6\2\0\1\6\2\0\31\6"+ - "\1\u02bb\20\6\2\0\1\6\2\0\20\6\1\u02bc\31\6"+ - "\2\0\1\6\2\0\13\6\1\u02bd\36\6\2\0\1\6"+ - "\2\0\32\6\1\u02be\17\6\2\0\1\6\2\0\27\6"+ - "\1\u02bf\22\6\2\0\1\6\2\0\26\6\1\u02c0\23\6"+ - "\2\0\1\6\2\0\16\6\1\u02c1\33\6\2\0\1\6"+ - "\2\0\26\6\1\313\23\6\2\0\1\6\2\0\20\6"+ - "\1\u02c2\31\6\2\0\1\6\2\0\14\6\1\u02c3\35\6"+ - "\2\0\1\6\2\0\12\6\1\u02c4\37\6\2\0\1\6"+ - "\2\0\16\6\1\u02c5\33\6\2\0\1\6\2\0\20\6"+ - "\1\u02c6\31\6\2\0\1\6\2\0\13\6\1\u02c7\36\6"+ - "\2\0\1\6\2\0\20\6\1\u0250\31\6\2\0\1\6"+ - "\2\0\33\6\1\u02c8\16\6\2\0\1\6\2\0\20\6"+ - "\1\u02c9\31\6\2\0\1\6\2\0\23\6\1\u02ca\26\6"+ - "\2\0\1\6\2\0\23\6\1\u02cb\26\6\2\0\1\6"+ - "\2\0\20\6\1\u02cc\31\6\2\0\1\6\2\0\26\6"+ - "\1\u02cd\23\6\2\0\1\6\2\0\24\6\1\u02ce\25\6"+ - "\2\0\1\6\2\0\16\6\1\114\33\6\2\0\1\6"+ - "\2\0\20\6\1\u0286\31\6\2\0\1\6\2\0\25\6"+ - "\1\u0233\24\6\2\0\1\6\2\0\27\6\1\u0227\22\6"+ - "\2\0\1\6\2\0\12\6\1\u02cf\37\6\2\0\1\6"+ - "\2\0\13\6\1\u02d0\36\6\2\0\1\6\2\0\12\6"+ - "\1\u02d1\37\6\2\0\1\6\2\0\30\6\1\u02d2\21\6"+ - "\2\0\1\6\2\0\27\6\1\205\22\6\2\0\1\6"+ - "\2\0\12\6\1\205\37\6\2\0\1\6\2\0\35\6"+ - "\1\u02d3\14\6\2\0\1\6\2\0\20\6\1\u02d4\31\6"+ - "\2\0\1\6\2\0\32\6\1\u02d5\17\6\2\0\1\6"+ - "\2\0\15\6\1\u02d6\26\6\1\u02d6\5\6\2\0\1\6"+ - "\2\0\33\6\1\u02d7\16\6\2\0\1\6\2\0\23\6"+ - "\1\u02d8\26\6\2\0\1\6\2\0\20\6\1\u02d9\31\6"+ - "\2\0\1\6\2\0\33\6\1\u02da\16\6\2\0\1\6"+ - "\2\0\14\6\1\u02db\35\6\2\0\1\6\2\0\12\6"+ - "\1\u02dc\37\6\2\0\1\6\2\0\34\6\1\u02dd\15\6"+ - "\2\0\1\6\2\0\33\6\1\u02de\16\6\2\0\1\6"+ - "\2\0\20\6\1\u02df\31\6\2\0\1\6\2\0\20\6"+ - "\1\u02e0\31\6\2\0\1\6\2\0\26\6\1\u02e1\23\6"+ - "\2\0\1\6\2\0\26\6\1\u02e2\23\6\2\0\1\6"+ - "\2\0\34\6\1\u02e3\15\6\2\0\1\6\2\0\23\6"+ - "\1\u02e4\26\6\2\0\1\6\2\0\33\6\1\u02e5\16\6"+ - "\2\0\1\6\2\0\16\6\1\u02e6\33\6\2\0\1\6"+ - "\2\0\31\6\1\u02aa\20\6\2\0\1\6\2\0\30\6"+ - "\1\u01c1\21\6\2\0\1\6\2\0\32\6\1\u02e7\17\6"+ - "\2\0\1\6\2\0\27\6\1\u02e8\22\6\2\0\1\6"+ - "\2\0\20\6\1\u02e9\31\6\2\0\1\6\2\0\14\6"+ - "\1\u02ea\35\6\2\0\1\6\2\0\12\6\1\u02eb\37\6"+ - "\2\0\1\6\2\0\14\6\1\u02ec\35\6\2\0\1\6"+ - "\2\0\16\6\1\u02ed\33\6\2\0\1\6\2\0\15\6"+ - "\1\u01a9\1\6\1\u02ee\24\6\1\u01a9\5\6\2\0\1\6"+ - "\2\0\33\6\1\u02ef\16\6\2\0\1\6\2\0\33\6"+ - "\1\u02f0\16\6\2\0\1\6\2\0\20\6\1\u02f1\16\6"+ - "\1\u02f2\12\6\2\0\1\6\2\0\15\6\1\u02f3\26\6"+ - "\1\u02f3\5\6\2\0\1\6\2\0\16\6\1\u0241\33\6"+ - "\2\0\1\6\2\0\16\6\1\u0250\33\6\2\0\1\6"+ - "\2\0\36\6\1\u02f4\13\6\2\0\1\6\2\0\20\6"+ - "\1\326\31\6\2\0\1\6\2\0\25\6\1\u02f5\24\6"+ - "\2\0\1\6\2\0\25\6\1\u02f6\24\6\2\0\1\6"+ - "\2\0\21\6\1\u02f7\23\6\1\u02f7\4\6\2\0\1\6"+ - "\2\0\33\6\1\u02f8\16\6\2\0\1\6\2\0\20\6"+ - "\1\u02f9\31\6\2\0\1\6\2\0\12\6\1\u02fa\37\6"+ - "\2\0\1\6\2\0\16\6\1\u02fb\33\6\2\0\1\6"+ - "\2\0\14\6\1\u02fc\35\6\2\0\1\6\2\0\12\6"+ - "\1\u02b0\37\6\2\0\1\6\2\0\33\6\1\u02fd\16\6"+ - "\2\0\1\6\2\0\34\6\1\u02fe\15\6\2\0\1\6"+ - "\2\0\15\6\1\202\26\6\1\202\5\6\2\0\1\6"+ - "\2\0\20\6\1\u02aa\31\6\2\0\1\6\2\0\26\6"+ - "\1\u02ff\23\6\2\0\1\6\2\0\24\6\1\u0300\25\6"+ - "\2\0\1\6\2\0\26\6\1\u0301\23\6\2\0\1\6"+ - "\2\0\16\6\1\u0302\33\6\2\0\1\6\2\0\33\6"+ - "\1\u0303\16\6\2\0\1\6\2\0\11\6\1\u01dd\31\6"+ - "\1\u01dd\6\6\2\0\1\6\2\0\15\6\1\u0304\26\6"+ - "\1\u0304\5\6\2\0\1\6\2\0\26\6\1\u0305\23\6"+ - "\2\0\1\6\2\0\33\6\1\u0306\16\6\2\0\1\6"+ - "\2\0\20\6\1\u0307\31\6\2\0\1\6\2\0\25\6"+ - "\1\u0308\24\6\2\0\1\6\2\0\20\6\1\u0309\31\6"+ - "\2\0\1\6\2\0\33\6\1\u0250\16\6\2\0\1\6"+ - "\2\0\30\6\1\u030a\21\6\2\0\1\6\2\0\16\6"+ - "\1\u030b\33\6\2\0\1\6\2\0\20\6\1\u030c\31\6"+ - "\2\0\1\6\2\0\34\6\1\u030d\15\6\2\0\1\6"+ - "\2\0\26\6\1\u030e\23\6\2\0\1\6\2\0\33\6"+ - "\1\205\16\6\2\0\1\6\2\0\14\6\1\u030f\35\6"+ - "\2\0\1\6\2\0\23\6\1\u0310\26\6\2\0\1\6"+ - "\2\0\34\6\1\u0311\15\6\2\0\1\6\2\0\14\6"+ - "\1\u0312\35\6\2\0\1\6\2\0\12\6\1\u0313\37\6"+ - "\2\0\1\6\2\0\33\6\1\u0314\16\6\2\0\1\6"+ - "\2\0\33\6\1\u015b\16\6\2\0\1\6\2\0\20\6"+ - "\1\u0315\31\6\2\0\1\6\2\0\17\6\1\u0316\32\6"+ - "\2\0\1\6\2\0\12\6\1\u0317\37\6\2\0\1\6"+ - "\2\0\27\6\1\372\22\6\2\0\1\6\2\0\16\6"+ - "\1\u0150\33\6\2\0\1\6\2\0\24\6\1\u0143\25\6"+ - "\2\0\1\6\2\0\33\6\1\u0318\16\6\2\0\1\6"+ - "\2\0\16\6\1\u0319\33\6\2\0\1\6\2\0\20\6"+ - "\1\u031a\31\6\2\0\1\6\2\0\36\6\1\202\13\6"+ - "\2\0\1\6\2\0\23\6\1\u031b\26\6\2\0\1\6"+ - "\2\0\14\6\1\u01a6\31\6"; - - private static int [] zzUnpackTrans() { - int [] result = new int[36754]; - int offset = 0; - offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackTrans(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - value--; - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /* error codes */ - private static final int ZZ_UNKNOWN_ERROR = 0; - private static final int ZZ_NO_MATCH = 1; - private static final int ZZ_PUSHBACK_2BIG = 2; - - /* error messages for the codes above */ - private static final String ZZ_ERROR_MSG[] = { - "Unkown internal scanner error", - "Error: could not match input", - "Error: pushback value was too large" - }; - - /** - * ZZ_ATTRIBUTE[aState] contains the attributes of state aState - */ - private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); - - private static final String ZZ_ATTRIBUTE_PACKED_0 = - "\3\0\6\1\2\11\22\1\1\11\10\1\4\11\1\1"+ - "\1\11\2\1\1\0\52\1\4\0\2\1\1\11\1\1"+ - "\1\11\62\1\4\0\102\1\2\0\105\1\2\0\u01f8\1"; - - private static int [] zzUnpackAttribute() { - int [] result = new int[795]; - int offset = 0; - offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAttribute(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - /** the input device */ - private java.io.Reader zzReader; - - /** the current state of the DFA */ - private int zzState; - - /** the current lexical state */ - private int zzLexicalState = YYINITIAL; - - /** this buffer contains the current text to be matched and is - the source of the yytext() string */ - private char zzBuffer[]; - - /** the textposition at the last accepting state */ - private int zzMarkedPos; - - /** the current text position in the buffer */ - private int zzCurrentPos; - - /** startRead marks the beginning of the yytext() string in the buffer */ - private int zzStartRead; - - /** endRead marks the last character in the buffer, that has been read - from input */ - private int zzEndRead; - - /** zzAtEOF == true <=> the scanner is at the EOF */ - private boolean zzAtEOF; - - /* user code: */ - - /** - * Type specific to HtaccessTokenMaker denoting a line ending with an - * unclosed double-quote attribute. - */ - public static final int INTERNAL_ATTR_DOUBLE = -1; - - - /** - * Type specific to HtaccessTokenMaker denoting a line ending with an - * unclosed single-quote attribute. - */ - public static final int INTERNAL_ATTR_SINGLE = -2; - - - /** - * Token type specific to HtaccessTokenMaker denoting a line ending with an - * unclosed XML tag; thus a new line is beginning still inside of the tag. - */ - public static final int INTERNAL_INTAG = -3; - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public HtaccessTokenMaker() { - } - - - /** - * Adds the token specified to the current linked list of tokens as an - * "end token;" that is, at zzMarkedPos. - * - * @param tokenType The token's type. - */ - private void addEndToken(int tokenType) { - addToken(zzMarkedPos,zzMarkedPos, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addToken(int, int, int) - */ - private void addHyperlinkToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, true); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, int startOffset) { - super.addToken(array, start,end, tokenType, startOffset); - zzStartRead = zzMarkedPos; - } - - - /** - * Returns how to transform a line into a line comment. - * - * @return The line comment start and end text for .htaccess files. - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { "#", null }; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - - // Start off in the proper state. - int state = YYINITIAL; - switch (initialTokenType) { - case INTERNAL_ATTR_DOUBLE: - state = INATTR_DOUBLE; - break; - case INTERNAL_ATTR_SINGLE: - state = INATTR_SINGLE; - break; - case INTERNAL_INTAG: - state = INTAG; - break; - default: - state = YYINITIAL; - } - - start = text.offset; - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtEOF = false; - } - - - - - /** - * Creates a new scanner - * There is also a java.io.InputStream version of this constructor. - * - * @param in the java.io.Reader to read input from. - */ - public HtaccessTokenMaker(java.io.Reader in) { - this.zzReader = in; - } - - /** - * Creates a new scanner. - * There is also java.io.Reader version of this constructor. - * - * @param in the java.io.Inputstream to read input from. - */ - public HtaccessTokenMaker(java.io.InputStream in) { - this(new java.io.InputStreamReader(in)); - } - - /** - * Unpacks the compressed character translation table. - * - * @param packed the packed character translation table - * @return the unpacked character translation table - */ - private static char [] zzUnpackCMap(String packed) { - char [] map = new char[0x10000]; - int i = 0; /* index in packed string */ - int j = 0; /* index in unpacked array */ - while (i < 172) { - int count = packed.charAt(i++); - char value = packed.charAt(i++); - do map[j++] = value; while (--count > 0); - } - return map; - } - - - /** - * Closes the input stream. - */ - public final void yyclose() throws java.io.IOException { - zzAtEOF = true; /* indicate end of file */ - zzEndRead = zzStartRead; /* invalidate buffer */ - - if (zzReader != null) - zzReader.close(); - } - - - /** - * Returns the current lexical state. - */ - public final int yystate() { - return zzLexicalState; - } - - - /** - * Enters a new lexical state - * - * @param newState the new lexical state - */ - @Override -public final void yybegin(int newState) { - zzLexicalState = newState; - } - - - /** - * Returns the text matched by the current regular expression. - */ - public final String yytext() { - return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead ); - } - - - /** - * Returns the character at position pos from the - * matched text. - * - * It is equivalent to yytext().charAt(pos), but faster - * - * @param pos the position of the character to fetch. - * A value from 0 to yylength()-1. - * - * @return the character at position pos - */ - public final char yycharat(int pos) { - return zzBuffer[zzStartRead+pos]; - } - - - /** - * Returns the length of the matched text region. - */ - public final int yylength() { - return zzMarkedPos-zzStartRead; - } - - - /** - * Reports an error that occured while scanning. - * - * In a wellformed scanner (no or only correct usage of - * yypushback(int) and a match-all fallback rule) this method - * will only be called with things that "Can't Possibly Happen". - * If this method is called, something is seriously wrong - * (e.g. a JFlex bug producing a faulty scanner etc.). - * - * Usual syntax/scanner level error handling should be done - * in error fallback rules. - * - * @param errorCode the code of the errormessage to display - */ - private void zzScanError(int errorCode) { - String message; - try { - message = ZZ_ERROR_MSG[errorCode]; - } - catch (ArrayIndexOutOfBoundsException e) { - message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; - } - - throw new Error(message); - } - - - /** - * Pushes the specified amount of characters back into the input stream. - * - * They will be read again by then next call of the scanning method - * - * @param number the number of characters to be read again. - * This number must not be greater than yylength()! - */ - public void yypushback(int number) { - if ( number > yylength() ) - zzScanError(ZZ_PUSHBACK_2BIG); - - zzMarkedPos -= number; - } - - - /** - * Resumes scanning until the next regular expression is matched, - * the end of input is encountered or an I/O-Error occurs. - * - * @return the next token - * @exception java.io.IOException if any I/O-Error occurs - */ - public org.fife.ui.rsyntaxtextarea.Token yylex() throws java.io.IOException { - int zzInput; - int zzAction; - - // cached fields: - int zzCurrentPosL; - int zzMarkedPosL; - int zzEndReadL = zzEndRead; - char [] zzBufferL = zzBuffer; - char [] zzCMapL = ZZ_CMAP; - - int [] zzTransL = ZZ_TRANS; - int [] zzRowMapL = ZZ_ROWMAP; - int [] zzAttrL = ZZ_ATTRIBUTE; - - while (true) { - zzMarkedPosL = zzMarkedPos; - - zzAction = -1; - - zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; - - zzState = zzLexicalState; - - - zzForAction: { - while (true) { - - if (zzCurrentPosL < zzEndReadL) - zzInput = zzBufferL[zzCurrentPosL++]; - else if (zzAtEOF) { - zzInput = YYEOF; - break zzForAction; - } - else { - // store back cached positions - zzCurrentPos = zzCurrentPosL; - zzMarkedPos = zzMarkedPosL; - boolean eof = zzRefill(); - // get translated positions and possibly new buffer - zzCurrentPosL = zzCurrentPos; - zzMarkedPosL = zzMarkedPos; - zzBufferL = zzBuffer; - zzEndReadL = zzEndRead; - if (eof) { - zzInput = YYEOF; - break zzForAction; - } - else { - zzInput = zzBufferL[zzCurrentPosL++]; - } - } - int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; - if (zzNext == -1) break zzForAction; - zzState = zzNext; - - int zzAttributes = zzAttrL[zzState]; - if ( (zzAttributes & 1) == 1 ) { - zzAction = zzState; - zzMarkedPosL = zzCurrentPosL; - if ( (zzAttributes & 8) == 8 ) break zzForAction; - } - - } - } - - // store back cached position - zzMarkedPos = zzMarkedPosL; - - switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { - case 12: - { yybegin(INTAG); addToken(start,zzStartRead, Token.MARKUP_TAG_ATTRIBUTE_VALUE); - } - case 20: break; - case 4: - { addNullToken(); return firstToken; - } - case 21: break; - case 15: - { int count = yylength(); - addToken(zzStartRead,zzStartRead+1, Token.MARKUP_TAG_DELIMITER); - addToken(zzMarkedPos-(count-2), zzMarkedPos-1, Token.MARKUP_TAG_NAME); - yybegin(INTAG); - } - case 22: break; - case 3: - { addToken(Token.WHITESPACE); - } - case 23: break; - case 17: - { addToken(Token.ERROR_STRING_DOUBLE); - } - case 24: break; - case 2: - { addToken(Token.IDENTIFIER); - } - case 25: break; - case 6: - { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; - } - case 26: break; - case 18: - { addToken(Token.FUNCTION); - } - case 27: break; - case 14: - { addToken(Token.ERROR_STRING_DOUBLE); addNullToken(); return firstToken; - } - case 28: break; - case 13: - { int count = yylength(); - addToken(zzStartRead,zzStartRead, Token.MARKUP_TAG_DELIMITER); - addToken(zzMarkedPos-(count-1), zzMarkedPos-1, Token.MARKUP_TAG_NAME); - yybegin(INTAG); - } - case 29: break; - case 9: - { start = zzMarkedPos-1; yybegin(INATTR_DOUBLE); - } - case 30: break; - case 8: - { yybegin(YYINITIAL); addToken(Token.MARKUP_TAG_DELIMITER); - } - case 31: break; - case 16: - { addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); - } - case 32: break; - case 10: - { start = zzMarkedPos-1; yybegin(INATTR_SINGLE); - } - case 33: break; - case 19: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_EOL); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_EOL); start = zzMarkedPos; - } - case 34: break; - case 5: - { start = zzMarkedPos-1; yybegin(EOL_COMMENT); - } - case 35: break; - case 11: - { addToken(Token.OPERATOR); - } - case 36: break; - case 7: - { addToken(Token.MARKUP_TAG_ATTRIBUTE); - } - case 37: break; - case 1: - { - } - case 38: break; - default: - if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { - zzAtEOF = true; - switch (zzLexicalState) { - case EOL_COMMENT: { - addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; - } - case 796: break; - case INTAG: { - addToken(start,zzStartRead-1, INTERNAL_INTAG); return firstToken; - } - case 797: break; - case INATTR_DOUBLE: { - addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_DOUBLE); return firstToken; - } - case 798: break; - case YYINITIAL: { - addNullToken(); return firstToken; - } - case 799: break; - case INATTR_SINGLE: { - addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_SINGLE); return firstToken; - } - case 800: break; - default: - return null; - } - } - else { - zzScanError(ZZ_NO_MATCH); - } - } - } - } - - -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/JSPTokenMaker.flex b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/JSPTokenMaker.flex deleted file mode 100644 index 0cafb40..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/JSPTokenMaker.flex +++ /dev/null @@ -1,1861 +0,0 @@ -/* - * 02/11/2008 - * - * JSPTokenMaker.java - Generates tokens for JSP syntax highlighting. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * Scanner for JSP files (supporting HTML 5). - * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated JSPTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.9 - */ -%% - -%public -%class JSPTokenMaker -%extends AbstractMarkupTokenMaker -%unicode -%type org.fife.ui.rsyntaxtextarea.Token - - -%{ - - /** - * Type specific to JSPTokenMaker denoting a line ending with an unclosed - * double-quote attribute. - */ - private static final int INTERNAL_ATTR_DOUBLE = -1; - - - /** - * Type specific to JSPTokenMaker denoting a line ending with an unclosed - * single-quote attribute. - */ - private static final int INTERNAL_ATTR_SINGLE = -2; - - - /** - * Token type specific to JSPTokenMaker; this signals that the user has - * ended a line with an unclosed HTML tag; thus a new line is beginning - * still inside of the tag. - */ - private static final int INTERNAL_INTAG = -3; - - /** - * Token type specific to JSPTokenMaker; this signals that the user has - * ended a line with an unclosed <script> tag. - */ - private static final int INTERNAL_INTAG_SCRIPT = -4; - - /** - * Token type specifying we're in a double-qouted attribute in a - * script tag. - */ - private static final int INTERNAL_ATTR_DOUBLE_QUOTE_SCRIPT = -5; - - /** - * Token type specifying we're in a single-qouted attribute in a - * script tag. - */ - private static final int INTERNAL_ATTR_SINGLE_QUOTE_SCRIPT = -6; - - /** - * Token type specifying that the user has - * ended a line with an unclosed <style> tag. - */ - private static final int INTERNAL_INTAG_STYLE = -7; - - /** - * Token type specifying we're in a double-qouted attribute in a - * style tag. - */ - private static final int INTERNAL_ATTR_DOUBLE_QUOTE_STYLE = -8; - - /** - * Token type specifying we're in a single-qouted attribute in a - * style tag. - */ - private static final int INTERNAL_ATTR_SINGLE_QUOTE_STYLE = -9; - - /** - * Token type specifying we're in a JSP hidden comment ("<%-- ... --%>"). - */ - private static final int INTERNAL_IN_HIDDEN_COMMENT = -10; - - /** - * Token type specifying we're in a JSP directive (either include, page - * or taglib). - */ - private static final int INTERNAL_IN_JSP_DIRECTIVE = -11; - - /** - * Token type specifying we're in JavaScript. - */ - static final int INTERNAL_IN_JS = -12; - - /** - * Token type specifying we're in a JavaScript multi-line comment. - */ - private static final int INTERNAL_IN_JS_MLC = -13; - - /** - * Token type specifying we're in an invalid multi-line JS string. - */ - private static final int INTERNAL_IN_JS_STRING_INVALID = -14; - - /** - * Token type specifying we're in a valid multi-line JS string. - */ - private static final int INTERNAL_IN_JS_STRING_VALID = -15; - - /** - * Token type specifying we're in an invalid multi-line JS single-quoted string. - */ - private static final int INTERNAL_IN_JS_CHAR_INVALID = -16; - - /** - * Token type specifying we're in a valid multi-line JS single-quoted string. - */ - private static final int INTERNAL_IN_JS_CHAR_VALID = -17; - - /** - * Internal type denoting a line ending in CSS. - */ - private static final int INTERNAL_CSS = -18; - - /** - * Internal type denoting a line ending in a CSS property. - */ - private static final int INTERNAL_CSS_PROPERTY = -19; - - /** - * Internal type denoting a line ending in a CSS property value. - */ - private static final int INTERNAL_CSS_VALUE = -20; - - /** - * Internal type denoting line ending in a CSS double-quote string. - * The state to return to is embedded in the actual end token type. - */ - private static final int INTERNAL_CSS_STRING = -(1<<11); - - /** - * Internal type denoting line ending in a CSS single-quote string. - * The state to return to is embedded in the actual end token type. - */ - private static final int INTERNAL_CSS_CHAR = -(2<<11); - - /** - * Internal type denoting line ending in a CSS multi-line comment. - * The state to return to is embedded in the actual end token type. - */ - private static final int INTERNAL_CSS_MLC = -(3<<11); - - /** - * Token type specifying we're in a Java documentation comment. - */ - private static final int INTERNAL_IN_JAVA_DOCCOMMENT = -(4<<11); - - /** - * Token type specifying we're in Java code. - */ - static final int INTERNAL_IN_JAVA_EXPRESSION = -(5<<11); - - /** - * Token type specifying we're in Java multiline comment. - */ - private static final int INTERNAL_IN_JAVA_MLC = -(6<<11); - - /** - * The state previous CSS-related state we were in before going into a CSS - * string, multi-line comment, etc. - */ - private int cssPrevState; - - /** - * The state JSP was started in (YYINITIAL, INTERNAL_IN_JS, etc.). - */ - private int jspInState; - - /** - * Whether closing markup tags are automatically completed for JSP. - */ - private static boolean completeCloseTags; - - /** - * When in the JS_STRING state, whether the current string is valid. - */ - private boolean validJSString; - - /** - * Language state set on HTML tokens. Must be 0. - */ - private static final int LANG_INDEX_DEFAULT = 0; - - /** - * Language state set on JavaScript tokens. - */ - private static final int LANG_INDEX_JS = 1; - - /** - * Language state set on CSS tokens. - */ - private static final int LANG_INDEX_CSS = 2; - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public JSPTokenMaker() { - super(); - } - - - /** - * Adds the token specified to the current linked list of tokens as an - * "end token;" that is, at zzMarkedPos. - * - * @param tokenType The token's type. - */ - private void addEndToken(int tokenType) { - addToken(zzMarkedPos,zzMarkedPos, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addToken(int, int, int) - */ - private void addHyperlinkToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, true); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, int startOffset) { - super.addToken(array, start,end, tokenType, startOffset); - zzStartRead = zzMarkedPos; - } - - - /** - * {@inheritDoc} - */ - @Override - protected OccurrenceMarker createOccurrenceMarker() { - return new HtmlOccurrenceMarker(); - } - - - /** - * Sets whether markup close tags should be completed. You might not want - * this to be the case, since some tags in standard HTML aren't usually - * closed. - * - * @return Whether closing markup tags are completed. - * @see #setCompleteCloseTags(boolean) - */ - @Override - public boolean getCompleteCloseTags() { - return completeCloseTags; - } - - - @Override - public boolean getCurlyBracesDenoteCodeBlocks(int languageIndex) { - return languageIndex==LANG_INDEX_CSS || languageIndex==LANG_INDEX_JS; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - switch (languageIndex) { - case LANG_INDEX_JS: - return new String[] { "//", null }; - case LANG_INDEX_CSS: - return new String[] { "/*", "*/" }; - default: - return new String[] { "" }; - } - } - - - /** - * {@inheritDoc} - */ - @Override - public boolean getMarkOccurrencesOfTokenType(int type) { - return type==Token.FUNCTION || type==Token.VARIABLE || - type==Token.MARKUP_TAG_NAME; - } - - - /** - * Overridden to handle newlines in JS and CSS differently than those in - * markup. - */ - @Override - public boolean getShouldIndentNextLineAfter(Token token) { - int languageIndex = token==null ? 0 : token.getLanguageIndex(); - if (getCurlyBracesDenoteCodeBlocks(languageIndex)) { - if (token!=null && token.length()==1) { - char ch = token.charAt(0); - return ch=='{' || ch=='('; - } - } - return false; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - jspInState = YYINITIAL; // Shouldn't be necessary - cssPrevState = CSS; // Shouldn't be necessary - int languageIndex = 0; - - // Start off in the proper state. - int state = Token.NULL; - switch (initialTokenType) { - case Token.MARKUP_COMMENT: - state = COMMENT; - break; - case Token.PREPROCESSOR: - state = PI; - break; - case Token.VARIABLE: - state = DTD; - break; - case INTERNAL_INTAG: - state = INTAG; - break; - case INTERNAL_INTAG_SCRIPT: - state = INTAG_SCRIPT; - break; - case INTERNAL_INTAG_STYLE: - state = INTAG_STYLE; - break; - case INTERNAL_ATTR_DOUBLE: - state = INATTR_DOUBLE; - break; - case INTERNAL_ATTR_SINGLE: - state = INATTR_SINGLE; - break; - case INTERNAL_ATTR_DOUBLE_QUOTE_SCRIPT: - state = INATTR_DOUBLE_SCRIPT; - break; - case INTERNAL_ATTR_SINGLE_QUOTE_SCRIPT: - state = INATTR_SINGLE_SCRIPT; - break; - case INTERNAL_ATTR_DOUBLE_QUOTE_STYLE: - state = INATTR_DOUBLE_STYLE; - break; - case INTERNAL_ATTR_SINGLE_QUOTE_STYLE: - state = INATTR_SINGLE_STYLE; - break; - case INTERNAL_IN_HIDDEN_COMMENT: - state = HIDDEN_COMMENT; - break; - case INTERNAL_IN_JSP_DIRECTIVE: - state = JSP_DIRECTIVE; - break; - case INTERNAL_IN_JS: - state = JAVASCRIPT; - languageIndex = LANG_INDEX_JS; - break; - case INTERNAL_IN_JS_MLC: - state = JS_MLC; - languageIndex = LANG_INDEX_JS; - break; - case INTERNAL_IN_JS_STRING_INVALID: - state = JS_STRING; - languageIndex = LANG_INDEX_JS; - validJSString = false; - break; - case INTERNAL_IN_JS_STRING_VALID: - state = JS_STRING; - languageIndex = LANG_INDEX_JS; - validJSString = true; - break; - case INTERNAL_IN_JS_CHAR_INVALID: - state = JS_CHAR; - languageIndex = LANG_INDEX_JS; - validJSString = false; - break; - case INTERNAL_IN_JS_CHAR_VALID: - state = JS_CHAR; - languageIndex = LANG_INDEX_JS; - validJSString = true; - break; - case INTERNAL_CSS: - state = CSS; - languageIndex = LANG_INDEX_CSS; - break; - case INTERNAL_CSS_PROPERTY: - state = CSS_PROPERTY; - languageIndex = LANG_INDEX_CSS; - break; - case INTERNAL_CSS_VALUE: - state = CSS_VALUE; - languageIndex = LANG_INDEX_CSS; - break; - default: - if (initialTokenType<-1024) { - // INTERNAL_IN_JAVAxxx - jspInState or - // INTERNAL_IN_CSSxxx - cssPrevState - int main = -(-initialTokenType & 0xffffff00); - switch (main) { - default: // Should never happen - case INTERNAL_IN_JAVA_DOCCOMMENT: - state = JAVA_DOCCOMMENT; - jspInState = -initialTokenType&0xff; - break; - case INTERNAL_IN_JAVA_EXPRESSION: - state = JAVA_EXPRESSION; - jspInState = -initialTokenType&0xff; - break; - case INTERNAL_IN_JAVA_MLC: - state = JAVA_MLC; - jspInState = -initialTokenType&0xff; - break; - case INTERNAL_CSS_STRING: - state = CSS_STRING; - languageIndex = LANG_INDEX_CSS; - cssPrevState = -initialTokenType&0xff; - break; - case INTERNAL_CSS_CHAR: - state = CSS_CHAR_LITERAL; - languageIndex = LANG_INDEX_CSS; - cssPrevState = -initialTokenType&0xff; - break; - case INTERNAL_CSS_MLC: - state = CSS_C_STYLE_COMMENT; - languageIndex = LANG_INDEX_CSS; - cssPrevState = -initialTokenType&0xff; - break; - } - } - else { - state = Token.NULL; - } - break; - } - - setLanguageIndex(languageIndex); - start = text.offset; - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Sets whether markup close tags should be completed. You might not want - * this to be the case, since some tags in standard HTML aren't usually - * closed. - * - * @param complete Whether closing markup tags are completed. - * @see #getCompleteCloseTags() - */ - public static void setCompleteCloseTags(boolean complete) { - completeCloseTags = complete; - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = zzPushbackPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtBOL = true; - zzAtEOF = false; - } - - -%} - -// HTML-specific stuff. -Whitespace = ([ \t\f]) -LineTerminator = ([\n]) -Identifier = ([^ \t\n<&]+) -EntityReference = ([&][^; \t]*[;]?) -InTagIdentifier = ([^ \t\n\"\'/=>]+) -UnclosedStringLiteral = ([\"][^\"]*) -StringLiteral = ({UnclosedStringLiteral}[\"]) -UnclosedCharLiteral = ([\'][^\']*) -CharLiteral = ({UnclosedCharLiteral}[\']) -EndScriptTag = ("") -EndStyleTag = ("") - -JspExpressionStart = ("<%=") -JspScriptletStart = ("<%") -JspDeclarationStart = ("<%!") -JspStart = ({JspExpressionStart}|{JspScriptletStart}|{JspDeclarationStart}) - -// General stuff. -Letter = [A-Za-z] -NonzeroDigit = [1-9] -BinaryDigit = ([0-1]) -Digit = ("0"|{NonzeroDigit}) -HexDigit = ({Digit}|[A-Fa-f]) -OctalDigit = ([0-7]) -LetterOrUnderscore = ({Letter}|"_") -LetterOrUnderscoreOrDash = ({LetterOrUnderscore}|[\-]) - - -// Java stuff. -AnyCharacterButApostropheOrBackSlash = ([^\\']) -AnyCharacterButDoubleQuoteOrBackSlash = ([^\\\"\n]) -EscapedSourceCharacter = ("u"{HexDigit}{HexDigit}{HexDigit}{HexDigit}) -Escape = ("\\"(([btnfr\"'\\])|([0123]{OctalDigit}?{OctalDigit}?)|({OctalDigit}{OctalDigit}?)|{EscapedSourceCharacter})) -NonSeparator = ([^\t\f\r\n\ \(\)\{\}\[\]\;\,\.\=\>\<\!\~\?\:\+\-\*\/\&\|\^\%\"\']|"#"|"\\") -IdentifierStart = ({LetterOrUnderscore}|"$") -IdentifierPart = ({IdentifierStart}|{Digit}|("\\"{EscapedSourceCharacter})) -WhiteSpace = ([ \t\f]) -JCharLiteral = ([\']({AnyCharacterButApostropheOrBackSlash}|{Escape})[\']) -JUnclosedCharLiteral = ([\'][^\'\n]*) -JErrorCharLiteral = ({UnclosedCharLiteral}[\']) -JStringLiteral = ([\"]({AnyCharacterButDoubleQuoteOrBackSlash}|{Escape})*[\"]) -JUnclosedStringLiteral = ([\"]([\\].|[^\\\"])*[^\"]?) -JErrorStringLiteral = ({UnclosedStringLiteral}[\"]) - -MLCBegin = "/*" -MLCEnd = "*/" -DocCommentBegin = "/**" -LineCommentBegin = "//" - -DigitOrUnderscore = ({Digit}|[_]) -DigitsAndUnderscoresEnd = ({DigitOrUnderscore}*{Digit}) -IntegerHelper = (({NonzeroDigit}{DigitsAndUnderscoresEnd}?)|"0") -IntegerLiteral = ({IntegerHelper}[lL]?) - -BinaryDigitOrUnderscore = ({BinaryDigit}|[_]) -BinaryDigitsAndUnderscores = ({BinaryDigit}({BinaryDigitOrUnderscore}*{BinaryDigit})?) -BinaryLiteral = ("0"[bB]{BinaryDigitsAndUnderscores}) - -HexDigitOrUnderscore = ({HexDigit}|[_]) -HexDigitsAndUnderscores = ({HexDigit}({HexDigitOrUnderscore}*{HexDigit})?) -OctalDigitOrUnderscore = ({OctalDigit}|[_]) -OctalDigitsAndUnderscoresEnd= ({OctalDigitOrUnderscore}*{OctalDigit}) -HexHelper = ("0"(([xX]{HexDigitsAndUnderscores})|({OctalDigitsAndUnderscoresEnd}))) -HexLiteral = ({HexHelper}[lL]?) - -FloatHelper1 = ([fFdD]?) -FloatHelper2 = ([eE][+-]?{Digit}+{FloatHelper1}) -FloatLiteral1 = ({Digit}+"."({FloatHelper1}|{FloatHelper2}|{Digit}+({FloatHelper1}|{FloatHelper2}))) -FloatLiteral2 = ("."{Digit}+({FloatHelper1}|{FloatHelper2})) -FloatLiteral3 = ({Digit}+{FloatHelper2}) -FloatLiteral = ({FloatLiteral1}|{FloatLiteral2}|{FloatLiteral3}|({Digit}+[fFdD])) - -ErrorNumberFormat = (({IntegerLiteral}|{HexLiteral}|{FloatLiteral}){NonSeparator}+) -BooleanLiteral = ("true"|"false") -Separator = ([\(\)\{\}\[\]]) -Separator2 = ([\;,.]) -NonAssignmentOperator = ("+"|"-"|"<="|"^"|"++"|"<"|"*"|">="|"%"|"--"|">"|"/"|"!="|"?"|">>"|"!"|"&"|"=="|":"|">>"|"~"|"|"|"||"|"&&"|">>>") -AssignmentOperator = ("="|"-="|"*="|"/="|"|="|"&="|"^="|"+="|"%="|"<<="|">>="|">>>=") -Operator = ({NonAssignmentOperator}|{AssignmentOperator}) -JIdentifier = ({IdentifierStart}{IdentifierPart}*) -ErrorIdentifier = ({NonSeparator}+) -Annotation = ("@"{JIdentifier}?) -PrimitiveTypes = ("boolean"|"byte"|"char"|"double" |"float"|"int"|"long"|"short") - -CurrentBlockTag = ("author"|"deprecated"|"exception"|"param"|"return"|"see"|"serial"|"serialData"|"serialField"|"since"|"throws"|"version") -ProposedBlockTag = ("category"|"example"|"tutorial"|"index"|"exclude"|"todo"|"internal"|"obsolete"|"threadsafety") -BlockTag = ({CurrentBlockTag}|{ProposedBlockTag}) -InlineTag = ("code"|"docRoot"|"inheritDoc"|"link"|"linkplain"|"literal"|"value") - -URLGenDelim = ([:\/\?#\[\]@]) -URLSubDelim = ([\!\$&'\(\)\*\+,;=]) -URLUnreserved = ({LetterOrUnderscore}|{Digit}|[\-\.\~]) -URLCharacter = ({URLGenDelim}|{URLSubDelim}|{URLUnreserved}|[%]) -URLCharacters = ({URLCharacter}*) -URLEndCharacter = ([\/\$]|{Letter}|{Digit}) -URL = (((https?|f(tp|ile))"://"|"www.")({URLCharacters}{URLEndCharacter})?) - -// JavaScript stuff. -JS_MLCBegin = ({MLCBegin}) -JS_MLCEnd = ({MLCEnd}) -JS_LineCommentBegin = ({LineCommentBegin}) -JS_IntegerLiteral = ({IntegerLiteral}) -JS_HexLiteral = ({HexLiteral}) -JS_FloatLiteral = ({FloatLiteral}) -JS_ErrorNumberFormat = ({ErrorNumberFormat}) -JS_Separator = ({Separator}) -JS_Separator2 = ({Separator2}) -JS_Operator = ({Operator}) -JS_Identifier = ({JIdentifier}) -JS_ErrorIdentifier = ({ErrorIdentifier}) -JS_Regex = ("/"([^\*\\/]|\\.)([^/\\]|\\.)*"/"[gim]*) - - - -// CSS stuff. -CSS_SelectorPiece = (("*"|"."|{LetterOrUnderscoreOrDash})({LetterOrUnderscoreOrDash}|"."|{Digit})*) -CSS_PseudoClass = (":"("root"|"nth-child"|"nth-last-child"|"nth-of-type"|"nth-last-of-type"|"first-child"|"last-child"|"first-of-type"|"last-of-type"|"only-child"|"only-of-type"|"empty"|"link"|"visited"|"active"|"hover"|"focus"|"target"|"lang"|"enabled"|"disabled"|"checked"|":first-line"|":first-letter"|":before"|":after"|"not")) -CSS_AtKeyword = ("@"{CSS_SelectorPiece}) -CSS_Id = ("#"{CSS_SelectorPiece}) -CSS_Separator = ([;\(\)\[\]]) -CSS_MlcStart = ({JS_MLCBegin}) -CSS_MlcEnd = ({JS_MLCEnd}) -CSS_Property = ([\*]?{LetterOrUnderscoreOrDash}({LetterOrUnderscoreOrDash}|{Digit})*) -CSS_ValueChar = ({LetterOrUnderscoreOrDash}|[\\/]) -CSS_Value = ({CSS_ValueChar}*) -CSS_Function = ({CSS_Value}\() -CSS_Digits = ([\-]?{Digit}+([0-9\.]+)?(pt|pc|in|mm|cm|em|ex|px|ms|s|%)?) -CSS_Hex = ("#"[0-9a-fA-F]+) -CSS_Number = ({CSS_Digits}|{CSS_Hex}) - - -%state COMMENT -%state PI -%state DTD -%state INTAG -%state INTAG_CHECK_TAG_NAME -%state INATTR_DOUBLE -%state INATTR_SINGLE -%state INTAG_SCRIPT -%state INATTR_DOUBLE_SCRIPT -%state INATTR_SINGLE_SCRIPT -%state INTAG_STYLE -%state INATTR_DOUBLE_STYLE -%state INATTR_SINGLE_STYLE -%state JAVASCRIPT -%state JS_STRING -%state JS_CHAR -%state JS_MLC -%state JS_EOL_COMMENT -%state HIDDEN_COMMENT -%state JAVA_DOCCOMMENT -%state JAVA_EXPRESSION -%state JAVA_MLC -%state JSP_DIRECTIVE -%state CSS -%state CSS_PROPERTY -%state CSS_VALUE -%state CSS_STRING -%state CSS_CHAR_LITERAL -%state CSS_C_STYLE_COMMENT - - -%% - - { - "" { yybegin(YYINITIAL); addToken(start,zzStartRead+2, Token.MARKUP_COMMENT); } - "-" {} - {LineTerminator} | - <> { addToken(start,zzStartRead-1, Token.MARKUP_COMMENT); return firstToken; } -} - - { - [^hwf\n\-]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.MARKUP_COMMENT); addHyperlinkToken(temp,zzMarkedPos-1, Token.MARKUP_COMMENT); start = zzMarkedPos; } - [hwf] {} - "--%>" { yybegin(YYINITIAL); addToken(start,zzStartRead+3, Token.MARKUP_COMMENT); } - "-" {} - {LineTerminator} | - <> { addToken(start,zzStartRead-1, Token.MARKUP_COMMENT); addEndToken(INTERNAL_IN_HIDDEN_COMMENT); return firstToken; } -} - - { - [^\n\?]+ {} - {LineTerminator} { addToken(start,zzStartRead-1, Token.MARKUP_PROCESSING_INSTRUCTION); return firstToken; } - "?>" { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.MARKUP_PROCESSING_INSTRUCTION); } - "?" {} - <> { addToken(start,zzStartRead-1, Token.MARKUP_PROCESSING_INSTRUCTION); return firstToken; } -} - - { - [^\n>]+ {} - {LineTerminator} { addToken(start,zzStartRead-1, Token.MARKUP_DTD); return firstToken; } - ">" { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.MARKUP_DTD); } - <> { addToken(start,zzStartRead-1, Token.MARKUP_DTD); return firstToken; } -} - - { - [Aa] | - [aA][bB][bB][rR] | - [aA][cC][rR][oO][nN][yY][mM] | - [aA][dD][dD][rR][eE][sS][sS] | - [aA][pP][pP][lL][eE][tT] | - [aA][rR][eE][aA] | - [aA][rR][tT][iI][cC][lL][eE] | - [aA][sS][iI][dD][eE] | - [aA][uU][dD][iI][oO] | - [bB] | - [bB][aA][sS][eE] | - [bB][aA][sS][eE][fF][oO][nN][tT] | - [bB][dD][oO] | - [bB][gG][sS][oO][uU][nN][dD] | - [bB][iI][gG] | - [bB][lL][iI][nN][kK] | - [bB][lL][oO][cC][kK][qQ][uU][oO][tT][eE] | - [bB][oO][dD][yY] | - [bB][rR] | - [bB][uU][tT][tT][oO][nN] | - [cC][aA][nN][vV][aA][sS] | - [cC][aA][pP][tT][iI][oO][nN] | - [cC][eE][nN][tT][eE][rR] | - [cC][iI][tT][eE] | - [cC][oO][dD][eE] | - [cC][oO][lL] | - [cC][oO][lL][gG][rR][oO][uU][pP] | - [cC][oO][mM][mM][aA][nN][dD] | - [cC][oO][mM][mM][eE][nN][tT] | - [dD][dD] | - [dD][aA][tT][aA][gG][rR][iI][dD] | - [dD][aA][tT][aA][lL][iI][sS][tT] | - [dD][aA][tT][aA][tT][eE][mM][pP][lL][aA][tT][eE] | - [dD][eE][lL] | - [dD][eE][tT][aA][iI][lL][sS] | - [dD][fF][nN] | - [dD][iI][aA][lL][oO][gG] | - [dD][iI][rR] | - [dD][iI][vV] | - [dD][lL] | - [dD][tT] | - [eE][mM] | - [eE][mM][bB][eE][dD] | - [eE][vV][eE][nN][tT][sS][oO][uU][rR][cC][eE] | - [fF][iI][eE][lL][dD][sS][eE][tT] | - [fF][iI][gG][uU][rR][eE] | - [fF][oO][nN][tT] | - [fF][oO][oO][tT][eE][rR] | - [fF][oO][rR][mM] | - [fF][rR][aA][mM][eE] | - [fF][rR][aA][mM][eE][sS][eE][tT] | - [hH][123456] | - [hH][eE][aA][dD] | - [hH][eE][aA][dD][eE][rR] | - [hH][rR] | - [hH][tT][mM][lL] | - [iI] | - [iI][fF][rR][aA][mM][eE] | - [iI][lL][aA][yY][eE][rR] | - [iI][mM][gG] | - [iI][nN][pP][uU][tT] | - [iI][nN][sS] | - [iI][sS][iI][nN][dD][eE][xX] | - [kK][bB][dD] | - [kK][eE][yY][gG][eE][nN] | - [lL][aA][bB][eE][lL] | - [lL][aA][yY][eE][rR] | - [lL][eE][gG][eE][nN][dD] | - [lL][iI] | - [lL][iI][nN][kK] | - [mM][aA][pP] | - [mM][aA][rR][kK] | - [mM][aA][rR][qQ][uU][eE][eE] | - [mM][eE][nN][uU] | - [mM][eE][tT][aA] | - [mM][eE][tT][eE][rR] | - [mM][uU][lL][tT][iI][cC][oO][lL] | - [nN][aA][vV] | - [nN][eE][sS][tT] | - [nN][oO][bB][rR] | - [nN][oO][eE][mM][bB][eE][dD] | - [nN][oO][fF][rR][aA][mM][eE][sS] | - [nN][oO][lL][aA][yY][eE][rR] | - [nN][oO][sS][cC][rR][iI][pP][tT] | - [oO][bB][jJ][eE][cC][tT] | - [oO][lL] | - [oO][pP][tT][gG][rR][oO][uU][pP] | - [oO][pP][tT][iI][oO][nN] | - [oO][uU][tT][pP][uU][tT] | - [pP] | - [pP][aA][rR][aA][mM] | - [pP][lL][aA][iI][nN][tT][eE][xX][tT] | - [pP][rR][eE] | - [pP][rR][oO][gG][rR][eE][sS][sS] | - [qQ] | - [rR][uU][lL][eE] | - [sS] | - [sS][aA][mM][pP] | - [sS][cC][rR][iI][pP][tT] | - [sS][eE][cC][tT][iI][oO][nN] | - [sS][eE][lL][eE][cC][tT] | - [sS][eE][rR][vV][eE][rR] | - [sS][mM][aA][lL][lL] | - [sS][oO][uU][rR][cC][eE] | - [sS][pP][aA][cC][eE][rR] | - [sS][pP][aA][nN] | - [sS][tT][rR][iI][kK][eE] | - [sS][tT][rR][oO][nN][gG] | - [sS][tT][yY][lL][eE] | - [sS][uU][bB] | - [sS][uU][pP] | - [tT][aA][bB][lL][eE] | - [tT][bB][oO][dD][yY] | - [tT][dD] | - [tT][eE][xX][tT][aA][rR][eE][aA] | - [tT][fF][oO][oO][tT] | - [tT][hH] | - [tT][hH][eE][aA][dD] | - [tT][iI][mM][eE] | - [tT][iI][tT][lL][eE] | - [tT][rR] | - [tT][tT] | - [uU] | - [uU][lL] | - [vV][aA][rR] | - [vV][iI][dD][eE][oO] { addToken(Token.MARKUP_TAG_NAME); } - {InTagIdentifier} { /* A non-recognized HTML tag name */ yypushback(yylength()); yybegin(INTAG); } - . { /* Shouldn't happen */ yypushback(1); yybegin(INTAG); } - <> { addToken(zzMarkedPos,zzMarkedPos, INTERNAL_INTAG); return firstToken; } -} - - { - {JspStart} { addToken(Token.MARKUP_TAG_DELIMITER); jspInState = zzLexicalState; yybegin(JAVA_EXPRESSION); } - "/" { addToken(Token.MARKUP_TAG_DELIMITER); } - {InTagIdentifier} { addToken(Token.MARKUP_TAG_ATTRIBUTE); } - {Whitespace} { addToken(Token.WHITESPACE); } - "=" { addToken(Token.OPERATOR); } - "/>" { yybegin(YYINITIAL); addToken(Token.MARKUP_TAG_DELIMITER); } - ">" { yybegin(YYINITIAL); addToken(Token.MARKUP_TAG_DELIMITER); } - [\"] { start = zzMarkedPos-1; yybegin(INATTR_DOUBLE); } - [\'] { start = zzMarkedPos-1; yybegin(INATTR_SINGLE); } - <> { addToken(zzMarkedPos,zzMarkedPos, INTERNAL_INTAG); return firstToken; } -} - - { - {JspStart} { int temp=zzStartRead; if (zzStartRead>start) addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addToken(temp, zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER); jspInState = zzLexicalState; yybegin(JAVA_EXPRESSION); } - [^\"<]* {} - "<" { /* Allowing JSP expressions, etc. */ } - [\"] { addToken(start,zzStartRead, Token.MARKUP_TAG_ATTRIBUTE_VALUE); yybegin(INTAG); } - <> { addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_DOUBLE); return firstToken; } -} - - { - {JspStart} { int temp=zzStartRead; if (zzStartRead>start) addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addToken(temp, zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER); jspInState = zzLexicalState; yybegin(JAVA_EXPRESSION); } - [^\'<]* {} - "<" { /* Allowing JSP expressions, etc. */ } - [\'] { addToken(start,zzStartRead, Token.MARKUP_TAG_ATTRIBUTE_VALUE); yybegin(INTAG); } - <> { addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_SINGLE); return firstToken; } -} - - { - {JspStart} { addToken(Token.MARKUP_TAG_DELIMITER); jspInState = zzLexicalState; yybegin(JAVA_EXPRESSION); } - {InTagIdentifier} { addToken(Token.MARKUP_TAG_ATTRIBUTE); } - "/>" { addToken(Token.MARKUP_TAG_DELIMITER); yybegin(YYINITIAL); } - "/" { addToken(Token.MARKUP_TAG_DELIMITER); } // Won't appear in valid HTML. - {Whitespace}+ { addToken(Token.WHITESPACE); } - "=" { addToken(Token.OPERATOR); } - ">" { addToken(Token.MARKUP_TAG_DELIMITER); yybegin(JAVASCRIPT, LANG_INDEX_JS); } - [\"] { start = zzMarkedPos-1; yybegin(INATTR_DOUBLE_SCRIPT); } - [\'] { start = zzMarkedPos-1; yybegin(INATTR_SINGLE_SCRIPT); } - <> { addToken(zzMarkedPos,zzMarkedPos, INTERNAL_INTAG_SCRIPT); return firstToken; } -} - - { - {JspStart} { int temp=zzStartRead; if (zzStartRead>start) addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addToken(temp, zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER); jspInState = zzLexicalState; yybegin(JAVA_EXPRESSION); } - [^\"<]* {} - "<" { /* Allowing JSP expressions, etc. */ } - [\"] { yybegin(INTAG_SCRIPT); addToken(start,zzStartRead, Token.MARKUP_TAG_ATTRIBUTE_VALUE); } - <> { addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_DOUBLE_QUOTE_SCRIPT); return firstToken; } -} - - { - {JspStart} { int temp=zzStartRead; if (zzStartRead>start) addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addToken(temp, zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER); jspInState = zzLexicalState; yybegin(JAVA_EXPRESSION); } - [^\'<]* {} - "<" { /* Allowing JSP expressions, etc. */ } - [\'] { yybegin(INTAG_SCRIPT); addToken(start,zzStartRead, Token.MARKUP_TAG_ATTRIBUTE_VALUE); } - <> { addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_SINGLE_QUOTE_SCRIPT); return firstToken; } -} - - { - {InTagIdentifier} { addToken(Token.MARKUP_TAG_ATTRIBUTE); } - "/>" { addToken(Token.MARKUP_TAG_DELIMITER); yybegin(YYINITIAL); } - "/" { addToken(Token.MARKUP_TAG_DELIMITER); } // Won't appear in valid HTML. - {Whitespace} { addToken(Token.WHITESPACE); } - "=" { addToken(Token.OPERATOR); } - ">" { addToken(Token.MARKUP_TAG_DELIMITER); yybegin(CSS, LANG_INDEX_CSS); } - [\"] { start = zzMarkedPos-1; yybegin(INATTR_DOUBLE_STYLE); } - [\'] { start = zzMarkedPos-1; yybegin(INATTR_SINGLE_STYLE); } - <> { addToken(zzMarkedPos,zzMarkedPos, INTERNAL_INTAG_STYLE); return firstToken; } -} - - { - [^\"]* {} - [\"] { yybegin(INTAG_STYLE); addToken(start,zzStartRead, Token.MARKUP_TAG_ATTRIBUTE_VALUE); } - <> { addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_DOUBLE_QUOTE_STYLE); return firstToken; } -} - - { - [^\']* {} - [\'] { yybegin(INTAG_STYLE); addToken(start,zzStartRead, Token.MARKUP_TAG_ATTRIBUTE_VALUE); } - <> { addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_SINGLE_QUOTE_STYLE); return firstToken; } -} - - { - - {EndScriptTag} { - yybegin(YYINITIAL, LANG_INDEX_DEFAULT); - addToken(zzStartRead,zzStartRead+1, Token.MARKUP_TAG_DELIMITER); - addToken(zzMarkedPos-7,zzMarkedPos-2, Token.MARKUP_TAG_NAME); - addToken(zzMarkedPos-1,zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER); - } - - // ECMA 3+ keywords. - "break" | - "continue" | - "delete" | - "else" | - "for" | - "function" | - "if" | - "in" | - "new" | - "this" | - "typeof" | - "var" | - "void" | - "while" | - "with" { addToken(Token.RESERVED_WORD); } - "return" { addToken(Token.RESERVED_WORD_2); } - - //JavaScript 1.6 - "each" {if(JavaScriptTokenMaker.isJavaScriptCompatible("1.6")){ addToken(Token.RESERVED_WORD);} else {addToken(Token.IDENTIFIER);} } - //JavaScript 1.7 - "let" {if(JavaScriptTokenMaker.isJavaScriptCompatible("1.7")){ addToken(Token.RESERVED_WORD);} else {addToken(Token.IDENTIFIER);} } - - // Reserved (but not yet used) ECMA keywords. - "abstract" | - "case" | - "catch" | - "class" | - "const" | - "debugger" | - "default" | - "do" | - "enum" | - "export" | - "extends" | - "final" | - "finally" | - "goto" | - "implements" | - "import" | - "instanceof" | - "interface" | - "native" | - "package" | - "private" | - "protected" | - "public" | - "static" | - "super" | - "switch" | - "synchronized" | - "throw" | - "throws" | - "transient" | - "try" | - "volatile" | - "null" { addToken(Token.RESERVED_WORD); } - {PrimitiveTypes} { addToken(Token.DATA_TYPE); } - - // Literals. - {BooleanLiteral} { addToken(Token.LITERAL_BOOLEAN); } - "NaN" { addToken(Token.RESERVED_WORD); } - "Infinity" { addToken(Token.RESERVED_WORD); } - - // Functions. - "eval" | - "parseInt" | - "parseFloat" | - "escape" | - "unescape" | - "isNaN" | - "isFinite" { addToken(Token.FUNCTION); } - - {LineTerminator} { addEndToken(INTERNAL_IN_JS); return firstToken; } - {JS_Identifier} { addToken(Token.IDENTIFIER); } - {Whitespace}+ { addToken(Token.WHITESPACE); } - - /* String/Character literals. */ - [\'] { start = zzMarkedPos-1; validJSString = true; yybegin(JS_CHAR); } - [\"] { start = zzMarkedPos-1; validJSString = true; yybegin(JS_STRING); } - - /* Comment literals. */ - "/**/" { addToken(Token.COMMENT_MULTILINE); } - {JS_MLCBegin} { start = zzMarkedPos-2; yybegin(JS_MLC); } - {JS_LineCommentBegin} { start = zzMarkedPos-2; yybegin(JS_EOL_COMMENT); } - - /* Attempt to identify regular expressions (not foolproof) - do after comments! */ - {JS_Regex} { - boolean highlightedAsRegex = false; - if (firstToken==null) { - addToken(Token.REGEX); - highlightedAsRegex = true; - } - else { - // If this is *likely* to be a regex, based on - // the previous token, highlight it as such. - Token t = firstToken.getLastNonCommentNonWhitespaceToken(); - if (RSyntaxUtilities.regexCanFollowInJavaScript(t)) { - addToken(Token.REGEX); - highlightedAsRegex = true; - } - } - // If it doesn't *appear* to be a regex, highlight it as - // individual tokens. - if (!highlightedAsRegex) { - int temp = zzStartRead + 1; - addToken(zzStartRead, zzStartRead, Token.OPERATOR); - zzStartRead = zzCurrentPos = zzMarkedPos = temp; - } - } - - /* Separators. */ - {JS_Separator} { addToken(Token.SEPARATOR); } - {JS_Separator2} { addToken(Token.IDENTIFIER); } - - {JspStart} { addToken(Token.MARKUP_TAG_DELIMITER); jspInState = zzLexicalState; yybegin(JAVA_EXPRESSION); } - - /* Operators. */ - {JS_Operator} { addToken(Token.OPERATOR); } - - /* Numbers */ - {JS_IntegerLiteral} { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); } - {JS_HexLiteral} { addToken(Token.LITERAL_NUMBER_HEXADECIMAL); } - {JS_FloatLiteral} { addToken(Token.LITERAL_NUMBER_FLOAT); } - {JS_ErrorNumberFormat} { addToken(Token.ERROR_NUMBER_FORMAT); } - - {JS_ErrorIdentifier} { addToken(Token.ERROR_IDENTIFIER); } - - /* Ended with a line not in a string or comment. */ - <> { addEndToken(INTERNAL_IN_JS); return firstToken; } - - /* Catch any other (unhandled) characters and flag them as bad. */ - . { addToken(Token.ERROR_IDENTIFIER); } - -} - - - { - [^\n\\\"]+ {} - \n { addToken(start,zzStartRead-1, Token.ERROR_STRING_DOUBLE); addEndToken(INTERNAL_IN_JS); return firstToken; } - \\x{HexDigit}{2} {} - \\x { /* Invalid latin-1 character \xXX */ validJSString = false; } - \\u{HexDigit}{4} {} - \\u { /* Invalid Unicode character \\uXXXX */ validJSString = false; } - \\. { /* Skip all escaped chars. */ } - \\ { /* Line ending in '\' => continue to next line. */ - if (validJSString) { - addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); - addEndToken(INTERNAL_IN_JS_STRING_VALID); - } - else { - addToken(start,zzStartRead, Token.ERROR_STRING_DOUBLE); - addEndToken(INTERNAL_IN_JS_STRING_INVALID); - } - return firstToken; - } - \" { int type = validJSString ? Token.LITERAL_STRING_DOUBLE_QUOTE : Token.ERROR_STRING_DOUBLE; addToken(start,zzStartRead, type); yybegin(JAVASCRIPT); } - <> { addToken(start,zzStartRead-1, Token.ERROR_STRING_DOUBLE); addEndToken(INTERNAL_IN_JS); return firstToken; } -} - - { - [^\n\\\']+ {} - \n { addToken(start,zzStartRead-1, Token.ERROR_CHAR); addEndToken(INTERNAL_IN_JS); return firstToken; } - \\x{HexDigit}{2} {} - \\x { /* Invalid latin-1 character \xXX */ validJSString = false; } - \\u{HexDigit}{4} {} - \\u { /* Invalid Unicode character \\uXXXX */ validJSString = false; } - \\. { /* Skip all escaped chars. */ } - \\ { /* Line ending in '\' => continue to next line. */ - if (validJSString) { - addToken(start,zzStartRead, Token.LITERAL_CHAR); - addEndToken(INTERNAL_IN_JS_CHAR_VALID); - } - else { - addToken(start,zzStartRead, Token.ERROR_CHAR); - addEndToken(INTERNAL_IN_JS_CHAR_INVALID); - } - return firstToken; - } - \' { int type = validJSString ? Token.LITERAL_CHAR : Token.ERROR_CHAR; addToken(start,zzStartRead, type); yybegin(JAVASCRIPT); } - <> { addToken(start,zzStartRead-1, Token.ERROR_CHAR); addEndToken(INTERNAL_IN_JS); return firstToken; } -} - - - { - // JavaScript MLC's. This state is essentially Java's MLC state. - [^hwf<\n\*]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_MULTILINE); start = zzMarkedPos; } - [hwf] {} - {EndScriptTag} { - yybegin(YYINITIAL); - int temp = zzStartRead; - addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); - addToken(temp,temp+1, Token.MARKUP_TAG_DELIMITER); - addToken(zzMarkedPos-7,zzMarkedPos-2, Token.MARKUP_TAG_NAME); - addToken(zzMarkedPos-1,zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER); - } - "<" {} - \n { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_IN_JS_MLC); return firstToken; } - {JS_MLCEnd} { yybegin(JAVASCRIPT); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); } - \* {} - <> { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_IN_JS_MLC); return firstToken; } -} - - - { - [^hwf<\n]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_EOL); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_EOL); start = zzMarkedPos; } - [hwf] {} - {EndScriptTag} { - int temp = zzStartRead; - addToken(start,zzStartRead-1, Token.COMMENT_EOL); - yybegin(YYINITIAL, LANG_INDEX_DEFAULT); - addToken(temp,temp+1, Token.MARKUP_TAG_DELIMITER); - addToken(zzMarkedPos-7,zzMarkedPos-2, Token.MARKUP_TAG_NAME); - addToken(zzMarkedPos-1,zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER); - } - "<" {} - \n { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addEndToken(INTERNAL_IN_JS); return firstToken; } - <> { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addEndToken(INTERNAL_IN_JS); return firstToken; } - -} - - - { - {EndStyleTag} { - yybegin(YYINITIAL, LANG_INDEX_DEFAULT); - addToken(zzStartRead,zzStartRead+1, Token.MARKUP_TAG_DELIMITER); - addToken(zzMarkedPos-6,zzMarkedPos-2, Token.MARKUP_TAG_NAME); - addToken(zzMarkedPos-1,zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER); - } - {CSS_SelectorPiece} { addToken(Token.DATA_TYPE); } - {CSS_PseudoClass} { addToken(Token.RESERVED_WORD); } - ":" { /* Unknown pseudo class */ addToken(Token.DATA_TYPE); } - {CSS_AtKeyword} { addToken(Token.REGEX); } - {CSS_Id} { addToken(Token.VARIABLE); } - "{" { addToken(Token.SEPARATOR); yybegin(CSS_PROPERTY); } - [,] { addToken(Token.IDENTIFIER); } - \" { start = zzMarkedPos-1; cssPrevState = zzLexicalState; yybegin(CSS_STRING); } - \' { start = zzMarkedPos-1; cssPrevState = zzLexicalState; yybegin(CSS_CHAR_LITERAL); } - [+>~\^$\|=] { addToken(Token.OPERATOR); } - {CSS_Separator} { addToken(Token.SEPARATOR); } - {Whitespace} { addToken(Token.WHITESPACE); } - {CSS_MlcStart} { start = zzMarkedPos-2; cssPrevState = zzLexicalState; yybegin(CSS_C_STYLE_COMMENT); } - . { /*System.out.println("CSS: " + yytext());*/ addToken(Token.IDENTIFIER); } - "\n" | - <> { addEndToken(INTERNAL_CSS); return firstToken; } -} - - { - {EndStyleTag} { - yybegin(YYINITIAL, LANG_INDEX_DEFAULT); - addToken(zzStartRead,zzStartRead+1, Token.MARKUP_TAG_DELIMITER); - addToken(zzMarkedPos-6,zzMarkedPos-2, Token.MARKUP_TAG_NAME); - addToken(zzMarkedPos-1,zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER); - } - {CSS_Property} { addToken(Token.RESERVED_WORD); } - "}" { addToken(Token.SEPARATOR); yybegin(CSS); } - ":" { addToken(Token.OPERATOR); yybegin(CSS_VALUE); } - {Whitespace} { addToken(Token.WHITESPACE); } - {CSS_MlcStart} { start = zzMarkedPos-2; cssPrevState = zzLexicalState; yybegin(CSS_C_STYLE_COMMENT); } - . { /*System.out.println("css_property: " + yytext());*/ addToken(Token.IDENTIFIER); } - "\n" | - <> { addEndToken(INTERNAL_CSS_PROPERTY); return firstToken; } -} - - { - {EndStyleTag} { - yybegin(YYINITIAL, LANG_INDEX_DEFAULT); - addToken(zzStartRead,zzStartRead+1, Token.MARKUP_TAG_DELIMITER); - addToken(zzMarkedPos-6,zzMarkedPos-2, Token.MARKUP_TAG_NAME); - addToken(zzMarkedPos-1,zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER); - } - {CSS_Value} { addToken(Token.IDENTIFIER); } - "!important" { addToken(Token.ANNOTATION); } - {CSS_Function} { int temp = zzMarkedPos - 2; - addToken(zzStartRead, temp, Token.FUNCTION); - addToken(zzMarkedPos-1, zzMarkedPos-1, Token.SEPARATOR); - zzStartRead = zzCurrentPos = zzMarkedPos; - } - {CSS_Number} { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); } - \" { start = zzMarkedPos-1; cssPrevState = zzLexicalState; yybegin(CSS_STRING); } - \' { start = zzMarkedPos-1; cssPrevState = zzLexicalState; yybegin(CSS_CHAR_LITERAL); } - ")" { /* End of a function */ addToken(Token.SEPARATOR); } - [;] { addToken(Token.OPERATOR); yybegin(CSS_PROPERTY); } - [,\.] { addToken(Token.IDENTIFIER); } - "}" { addToken(Token.SEPARATOR); yybegin(CSS); } - {Whitespace} { addToken(Token.WHITESPACE); } - {CSS_MlcStart} { start = zzMarkedPos-2; cssPrevState = zzLexicalState; yybegin(CSS_C_STYLE_COMMENT); } - . { /*System.out.println("css_value: " + yytext());*/ addToken(Token.IDENTIFIER); } - "\n" | - <> { addEndToken(INTERNAL_CSS_VALUE); return firstToken; } -} - - { - [^\n\\\"]+ {} - \\.? { /* Skip escaped chars. */ } - \" { addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); yybegin(cssPrevState); } - \n | - <> { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addEndToken(INTERNAL_CSS_STRING - cssPrevState); return firstToken; } -} - - { - [^\n\\\']+ {} - \\.? { /* Skip escaped chars. */ } - \' { addToken(start,zzStartRead, Token.LITERAL_CHAR); yybegin(cssPrevState); } - \n | - <> { addToken(start,zzStartRead-1, Token.LITERAL_CHAR); addEndToken(INTERNAL_CSS_CHAR - cssPrevState); return firstToken; } -} - - { - [^hwf\n\*]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_MULTILINE); start = zzMarkedPos; } - [hwf] {} - {CSS_MlcEnd} { addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); yybegin(cssPrevState); } - \* {} - \n | - <> { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_CSS_MLC - cssPrevState); return firstToken; } -} - - - { - - "%>" { addToken(Token.MARKUP_TAG_DELIMITER); start = zzMarkedPos; yybegin(jspInState); } - - /* Keywords */ - "abstract"| - "assert" | - "break" | - "case" | - "catch" | - "class" | - "const" | - "continue" | - "default" | - "do" | - "else" | - "enum" | - "extends" | - "final" | - "finally" | - "for" | - "goto" | - "if" | - "implements" | - "import" | - "instanceof" | - "interface" | - "native" | - "new" | - "null" | - "package" | - "private" | - "protected" | - "public" | - "static" | - "strictfp" | - "super" | - "switch" | - "synchronized" | - "this" | - "throw" | - "throws" | - "transient" | - "try" | - "void" | - "volatile" | - "while" { addToken(Token.RESERVED_WORD); } - "return" { addToken(Token.RESERVED_WORD_2); } - - /* Data types. */ - {PrimitiveTypes} { addToken(Token.DATA_TYPE); } - - /* Booleans. */ - {BooleanLiteral} { addToken(Token.LITERAL_BOOLEAN); } - - /* java.lang classes */ - "Appendable" | - "AutoCloseable" | - "CharSequence" | - "Cloneable" | - "Comparable" | - "Iterable" | - "Readable" | - "Runnable" | - "Thread.UncaughtExceptionHandler" | - "Boolean" | - "Byte" | - "Character" | - "Character.Subset" | - "Character.UnicodeBlock" | - "Class" | - "ClassLoader" | - "ClassValue" | - "Compiler" | - "Double" | - "Enum" | - "Float" | - "InheritableThreadLocal" | - "Integer" | - "Long" | - "Math" | - "Number" | - "Object" | - "Package" | - "Process" | - "ProcessBuilder" | - "ProcessBuilder.Redirect" | - "Runtime" | - "RuntimePermission" | - "SecurityManager" | - "Short" | - "StackTraceElement" | - "StrictMath" | - "String" | - "StringBuffer" | - "StringBuilder" | - "System" | - "Thread" | - "ThreadGroup" | - "ThreadLocal" | - "Throwable" | - "Void" | - "Character.UnicodeScript" | - "ProcessBuilder.Redirect.Type" | - "Thread.State" | - "ArithmeticException" | - "ArrayIndexOutOfBoundsException" | - "ArrayStoreException" | - "ClassCastException" | - "ClassNotFoundException" | - "CloneNotSupportedException" | - "EnumConstantNotPresentException" | - "Exception" | - "IllegalAccessException" | - "IllegalArgumentException" | - "IllegalMonitorStateException" | - "IllegalStateException" | - "IllegalThreadStateException" | - "IndexOutOfBoundsException" | - "InstantiationException" | - "InterruptedException" | - "NegativeArraySizeException" | - "NoSuchFieldException" | - "NoSuchMethodException" | - "NullPointerException" | - "NumberFormatException" | - "RuntimeException" | - "SecurityException" | - "StringIndexOutOfBoundsException" | - "TypeNotPresentException" | - "UnsupportedOperationException" | - "AbstractMethodError" | - "AssertionError" | - "BootstrapMethodError" | - "ClassCircularityError" | - "ClassFormatError" | - "Error" | - "ExceptionInInitializerError" | - "IllegalAccessError" | - "IncompatibleClassChangeError" | - "InstantiationError" | - "InternalError" | - "LinkageError" | - "NoClassDefFoundError" | - "NoSuchFieldError" | - "NoSuchMethodError" | - "OutOfMemoryError" | - "StackOverflowError" | - "ThreadDeath" | - "UnknownError" | - "UnsatisfiedLinkError" | - "UnsupportedClassVersionError" | - "VerifyError" | - "VirtualMachineError" | - - /* java.io classes*/ - "Closeable" | - "DataInput" | - "DataOutput" | - "Externalizable" | - "FileFilter" | - "FilenameFilter" | - "Flushable" | - "ObjectInput" | - "ObjectInputValidation" | - "ObjectOutput" | - "ObjectStreamConstants" | - "Serializable" | - - "BufferedInputStream" | - "BufferedOutputStream" | - "BufferedReader" | - "BufferedWriter" | - "ByteArrayInputStream" | - "ByteArrayOutputStream" | - "CharArrayReader" | - "CharArrayWriter" | - "Console" | - "DataInputStream" | - "DataOutputStream" | - "File" | - "FileDescriptor" | - "FileInputStream" | - "FileOutputStream" | - "FilePermission" | - "FileReader" | - "FileWriter" | - "FilterInputStream" | - "FilterOutputStream" | - "FilterReader" | - "FilterWriter" | - "InputStream" | - "InputStreamReader" | - "LineNumberInputStream" | - "LineNumberReader" | - "ObjectInputStream" | - "ObjectInputStream.GetField" | - "ObjectOutputStream" | - "ObjectOutputStream.PutField" | - "ObjectStreamClass" | - "ObjectStreamField" | - "OutputStream" | - "OutputStreamWriter" | - "PipedInputStream" | - "PipedOutputStream" | - "PipedReader" | - "PipedWriter" | - "PrintStream" | - "PrintWriter" | - "PushbackInputStream" | - "PushbackReader" | - "RandomAccessFile" | - "Reader" | - "SequenceInputStream" | - "SerializablePermission" | - "StreamTokenizer" | - "StringBufferInputStream" | - "StringReader" | - "StringWriter" | - "Writer" | - - "CharConversionException" | - "EOFException" | - "FileNotFoundException" | - "InterruptedIOException" | - "InvalidClassException" | - "InvalidObjectException" | - "IOException" | - "NotActiveException" | - "NotSerializableException" | - "ObjectStreamException" | - "OptionalDataException" | - "StreamCorruptedException" | - "SyncFailedException" | - "UncheckedIOException" | - "UnsupportedEncodingException" | - "UTFDataFormatException" | - "WriteAbortedException" | - - "IOError" | - - /* java.util classes */ - "Collection" | - "Comparator" | - "Deque" | - "Enumeration" | - "EventListener" | - "Formattable" | - "Iterator" | - "List" | - "ListIterator" | - "Map" | - "Map.Entry" | - "NavigableMap" | - "NavigableSet" | - "Observer" | - "PrimitiveIterator" | - "PrimitiveIterator.OfDouble" | - "PrimitiveIterator.OfInt" | - "PrimitiveIterator.OfLong" | - "Queue" | - "RandomAccess" | - "Set" | - "SortedMap" | - "SortedSet" | - "Spliterator" | - "Spliterator.OfDouble" | - "Spliterator.OfInt" | - "Spliterator.OfLong" | - "Spliterator.OfPrimitive" | - - "AbstractCollection" | - "AbstractList" | - "AbstractMap" | - "AbstractMap.SimpleEntry" | - "AbstractMap.SimpleImmutableEntry" | - "AbstractQueue" | - "AbstractSequentialList" | - "AbstractSet" | - "ArrayDeque" | - "ArrayList" | - "Arrays" | - "Base64" | - "Base64.Decoder" | - "Base64.Encoder" | - "BitSet" | - "Calendar" | - "Calendar.Builder" | - "Collections" | - "Currency" | - "Date" | - "Dictionary" | - "DoubleSummaryStatistics" | - "EnumMap" | - "EnumSet" | - "EventListenerProxy" | - "EventObject" | - "FormattableFlags" | - "Formatter" | - "GregorianCalendar" | - "HashMap" | - "HashSet" | - "Hashtable" | - "IdentityHashMap" | - "IntSummaryStatistics" | - "LinkedHashMap" | - "LinkedHashSet" | - "LinkedList" | - "ListResourceBundle" | - "Locale" | - "Locale.Builder" | - "Locale.LanguageRange" | - "LongSummaryStatistics" | - "Objects" | - "Observable" | - "Optional" | - "OptionalDouble" | - "OptionalInt" | - "OptionalLong" | - "PriorityQueue" | - "Properties" | - "PropertyPermission" | - "PropertyResourceBundle" | - "Random" | - "ResourceBundle" | - "ResourceBundle.Control" | - "Scanner" | - "ServiceLoader" | - "SimpleTimeZone" | - "Spliterators" | - "Spliterators.AbstractDoubleSpliterator" | - "Spliterators.AbstractIntSpliterator" | - "Spliterators.AbstractLongSpliterator" | - "Spliterators.AbstractSpliterator" | - "SpliteratorRandom" | - "Stack" | - "StringJoiner" | - "StringTokenizer" | - "Timer" | - "TimerTask" | - "TimeZone" | - "TreeMap" | - "TreeSet" | - "UUID" | - "Vector" | - "WeakHashMap" | - - "Formatter.BigDecimalLayoutForm" | - "Locale.Category" | - "Locale.FilteringMode" | - - "ConcurrentModificationException" | - "DuplicateFormatFlagsException" | - "EmptyStackException" | - "FormatFlagsConversionMismatchException" | - "FormatterClosedException" | - "IllegalFormatCodePointException" | - "IllegalFormatConversionException" | - "IllegalFormatException" | - "IllegalFormatFlagsException" | - "IllegalFormatPrecisionException" | - "IllegalFormatWidthException" | - "IllformedLocaleException" | - "InputMismatchException" | - "InvalidPropertiesFormatException" | - "MissingFormatArgumentException" | - "MissingFormatWidthException" | - "MissingResourceException" | - "NoSuchElementException" | - "TooManyListenersException" | - "UnknownFormatConversionException" | - "UnknownFormatFlagsException" | - - "ServiceConfigurationError" { addToken(Token.FUNCTION); } - - {LineTerminator} { addEndToken(INTERNAL_IN_JAVA_EXPRESSION - jspInState); return firstToken; } - - {JIdentifier} { addToken(Token.IDENTIFIER); } - - {WhiteSpace}+ { addToken(Token.WHITESPACE); } - - /* String/Character literals. */ - {JCharLiteral} { addToken(Token.LITERAL_CHAR); } - {JUnclosedCharLiteral} { addToken(Token.ERROR_CHAR); addEndToken(INTERNAL_IN_JAVA_EXPRESSION - jspInState); return firstToken; } - {JErrorCharLiteral} { addToken(Token.ERROR_CHAR); } - {JStringLiteral} { addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); } - {JUnclosedStringLiteral} { addToken(Token.ERROR_STRING_DOUBLE); addEndToken(INTERNAL_IN_JAVA_EXPRESSION - jspInState); return firstToken; } - {JErrorStringLiteral} { addToken(Token.ERROR_STRING_DOUBLE); } - - /* Comment literals. */ - "/**/" { addToken(Token.COMMENT_MULTILINE); } - {MLCBegin} { start = zzMarkedPos-2; yybegin(JAVA_MLC); } - {DocCommentBegin} { start = zzMarkedPos-3; yybegin(JAVA_DOCCOMMENT); } - {LineCommentBegin}.* { addToken(Token.COMMENT_EOL); addEndToken(INTERNAL_IN_JAVA_EXPRESSION - jspInState); return firstToken; } - - /* Annotations. */ - {Annotation} { addToken(Token.ANNOTATION); } - - /* Separators. */ - {Separator} { addToken(Token.SEPARATOR); } - {Separator2} { addToken(Token.IDENTIFIER); } - - /* Operators. */ - {Operator} { addToken(Token.OPERATOR); } - - /* Numbers */ - {IntegerLiteral} { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); } - {BinaryLiteral} { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); } - {HexLiteral} { addToken(Token.LITERAL_NUMBER_HEXADECIMAL); } - {FloatLiteral} { addToken(Token.LITERAL_NUMBER_FLOAT); } - {ErrorNumberFormat} { addToken(Token.ERROR_NUMBER_FORMAT); } - - {ErrorIdentifier} { addToken(Token.ERROR_IDENTIFIER); } - - /* Ended with a line not in a string or comment. */ - <> { addEndToken(INTERNAL_IN_JAVA_EXPRESSION - jspInState); return firstToken; } - - /* Catch any other (unhandled) characters and flag them as bad. */ - . { addToken(Token.ERROR_IDENTIFIER); } - -} - - - { - [^hwf\n\*]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_MULTILINE); start = zzMarkedPos; } - [hwf] {} - {MLCEnd} { yybegin(JAVA_EXPRESSION); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); } - \* {} - \n | - <> { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_IN_JAVA_MLC - jspInState); return firstToken; } -} - - - { - - [^hwf\@\{\n\<\*]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_DOCUMENTATION); start = zzMarkedPos; } - [hwf] {} - - "@"{BlockTag} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addToken(temp,zzMarkedPos-1, Token.COMMENT_KEYWORD); start = zzMarkedPos; } - "@" {} - "{@"{InlineTag}[^\}]*"}" { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addToken(temp,zzMarkedPos-1, Token.COMMENT_KEYWORD); start = zzMarkedPos; } - "{" {} - \n { addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addEndToken(INTERNAL_IN_JAVA_DOCCOMMENT - jspInState); return firstToken; } - "<"[/]?({Letter}[^\>]*)?">" { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addToken(temp,zzMarkedPos-1, Token.COMMENT_MARKUP); start = zzMarkedPos; } - \< {} - {MLCEnd} { yybegin(JAVA_EXPRESSION); addToken(start,zzStartRead+1, Token.COMMENT_DOCUMENTATION); } - \* {} - <> { yybegin(JAVA_EXPRESSION); addToken(start,zzEndRead, Token.COMMENT_DOCUMENTATION); addEndToken(INTERNAL_IN_JAVA_DOCCOMMENT - jspInState); return firstToken; } - -} - - - { - "include" | - "page" | - "taglib" { addToken(Token.RESERVED_WORD); } - "/" { addToken(Token.RESERVED_WORD); } - {InTagIdentifier} { addToken(Token.IDENTIFIER); } - {Whitespace}+ { addToken(Token.WHITESPACE); } - "=" { addToken(Token.OPERATOR); } - "%>" { yybegin(YYINITIAL); addToken(Token.MARKUP_TAG_DELIMITER); } - "%" { addToken(Token.IDENTIFIER); } - ">" { addToken(Token.IDENTIFIER); /* Needed as InTagIdentifier ignores it. */ } - {UnclosedStringLiteral} { addToken(Token.ERROR_STRING_DOUBLE); } - {StringLiteral} { addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); } - {UnclosedCharLiteral} { addToken(Token.ERROR_CHAR); } - {CharLiteral} { addToken(Token.LITERAL_CHAR); } - <> { addToken(zzMarkedPos,zzMarkedPos, INTERNAL_IN_JSP_DIRECTIVE); return firstToken; } -} - diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/JSPTokenMaker.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/JSPTokenMaker.java deleted file mode 100644 index 5fcbbb4..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/JSPTokenMaker.java +++ /dev/null @@ -1,7840 +0,0 @@ -/* The following code was generated by JFlex 1.4.1 on 3/23/15 10:57 PM */ - -/* - * 02/11/2008 - * - * JSPTokenMaker.java - Generates tokens for JSP syntax highlighting. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * Scanner for JSP files (supporting HTML 5). - * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated JSPTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.9 - */ - -public class JSPTokenMaker extends AbstractMarkupTokenMaker { - - /** This character denotes the end of file */ - public static final int YYEOF = -1; - - /** lexical states */ - public static final int INATTR_SINGLE_SCRIPT = 10; - public static final int JS_CHAR = 16; - public static final int JAVA_EXPRESSION = 21; - public static final int CSS_STRING = 27; - public static final int HIDDEN_COMMENT = 19; - public static final int JS_MLC = 17; - public static final int CSS_CHAR_LITERAL = 28; - public static final int JAVA_DOCCOMMENT = 20; - public static final int INTAG_SCRIPT = 8; - public static final int CSS_PROPERTY = 25; - public static final int CSS_C_STYLE_COMMENT = 29; - public static final int CSS = 24; - public static final int CSS_VALUE = 26; - public static final int JSP_DIRECTIVE = 23; - public static final int COMMENT = 1; - public static final int INATTR_DOUBLE_SCRIPT = 9; - public static final int PI = 2; - public static final int JAVASCRIPT = 14; - public static final int INTAG = 4; - public static final int INTAG_CHECK_TAG_NAME = 5; - public static final int INATTR_SINGLE_STYLE = 13; - public static final int DTD = 3; - public static final int JS_EOL_COMMENT = 18; - public static final int INATTR_DOUBLE_STYLE = 12; - public static final int INATTR_SINGLE = 7; - public static final int YYINITIAL = 0; - public static final int INATTR_DOUBLE = 6; - public static final int JS_STRING = 15; - public static final int JAVA_MLC = 22; - public static final int INTAG_STYLE = 11; - - /** - * Translates characters to character classes - */ - private static final String ZZ_CMAP_PACKED = - "\11\0\1\4\1\2\1\0\1\1\1\46\22\0\1\4\1\26\1\10"+ - "\1\47\1\50\1\25\1\5\1\11\1\114\1\113\1\51\1\56\1\65"+ - "\1\36\1\57\1\12\1\31\1\32\2\45\1\136\1\126\1\135\1\34"+ - "\2\30\1\70\1\6\1\3\1\7\1\21\1\67\1\73\1\33\1\52"+ - "\1\14\1\106\1\24\1\55\1\121\1\125\1\16\1\127\1\122\1\23"+ - "\1\117\1\116\1\115\1\17\1\123\1\15\1\13\1\20\1\120\1\124"+ - "\1\134\1\54\1\22\1\27\1\112\1\37\1\112\1\66\1\35\1\0"+ - "\1\61\1\53\1\76\1\100\1\60\1\44\1\102\1\77\1\101\1\133"+ - "\1\111\1\62\1\105\1\43\1\74\1\103\1\132\1\41\1\63\1\42"+ - "\1\40\1\110\1\107\1\104\1\75\1\130\1\131\1\72\1\64\1\71"+ - "\uff81\0"; - - /** - * Translates characters to character classes - */ - private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); - - /** - * Translates DFA states to action switch labels. - */ - private static final int [] ZZ_ACTION = zzUnpackAction(); - - private static final String ZZ_ACTION_PACKED_0 = - "\6\0\2\1\1\0\2\1\1\0\2\1\14\0\1\2"+ - "\3\0\2\2\1\3\1\4\1\5\1\6\1\1\1\7"+ - "\5\1\1\10\2\1\1\11\1\12\2\13\1\5\1\14"+ - "\1\15\1\16\1\17\1\20\1\21\1\22\1\23\2\21"+ - "\2\23\3\21\2\23\2\21\1\23\6\21\1\23\1\1"+ - "\1\24\1\25\1\1\1\13\1\26\1\27\1\17\1\30"+ - "\1\31\1\32\1\33\1\34\1\1\1\35\1\1\1\36"+ - "\1\37\2\14\1\2\1\14\1\40\1\41\1\14\2\2"+ - "\1\14\2\42\1\14\5\2\1\36\1\2\1\14\5\2"+ - "\1\43\1\14\10\2\1\1\1\44\1\45\1\46\1\1"+ - "\1\47\1\50\1\51\1\1\1\52\6\1\1\53\4\1"+ - "\1\54\2\1\1\55\7\1\1\56\1\14\1\57\1\60"+ - "\1\14\10\2\1\14\1\42\11\2\1\61\17\2\1\1"+ - "\1\62\1\1\2\2\1\63\1\64\1\65\1\66\4\2"+ - "\1\67\1\70\1\67\1\71\1\72\1\67\1\73\1\67"+ - "\1\74\1\67\1\75\1\76\1\77\2\76\1\65\1\76"+ - "\1\100\1\101\1\102\1\103\1\102\1\104\2\2\1\102"+ - "\1\42\1\2\1\102\1\105\1\106\1\107\1\110\1\111"+ - "\1\112\1\113\1\114\1\1\1\4\2\115\1\116\1\117"+ - "\1\120\1\6\5\0\1\121\1\116\32\21\2\23\2\21"+ - "\1\23\44\21\1\122\1\123\2\0\1\116\1\0\1\14"+ - "\1\124\1\0\1\125\1\36\1\2\1\14\1\126\1\42"+ - "\2\126\2\127\1\126\1\130\2\126\43\2\3\65\12\2"+ - "\1\131\1\132\1\133\3\0\1\134\12\0\1\135\2\0"+ - "\1\136\16\0\1\57\1\137\1\57\1\60\1\0\1\64"+ - "\1\60\1\140\1\141\46\2\1\142\1\126\20\2\1\61"+ - "\34\2\1\143\1\144\3\2\1\0\1\145\1\146\15\0"+ - "\1\147\1\0\1\42\5\0\1\42\1\111\1\150\1\151"+ - "\2\115\1\116\1\0\1\152\1\0\1\153\4\0\1\116"+ - "\14\21\1\23\63\21\1\122\1\0\1\154\1\0\1\36"+ - "\1\2\1\127\1\0\1\42\3\130\30\2\1\155\16\2"+ - "\1\73\16\2\44\0\1\63\1\57\1\0\2\57\1\60"+ - "\1\0\1\64\3\60\1\156\3\2\1\157\65\2\1\42"+ - "\21\2\1\36\21\2\1\157\21\2\25\0\2\115\1\160"+ - "\1\161\2\0\1\162\31\21\1\23\2\21\1\23\6\21"+ - "\1\0\1\163\1\36\1\2\1\126\1\2\1\164\11\2"+ - "\1\73\1\165\26\2\1\0\1\1\3\0\1\166\3\0"+ - "\1\167\1\170\11\0\1\171\11\0\1\172\5\0\3\57"+ - "\1\60\70\2\1\157\3\2\1\157\1\2\1\157\5\2"+ - "\1\126\12\2\1\157\4\2\1\157\1\2\1\36\22\2"+ - "\1\0\16\2\1\65\23\0\2\115\2\0\12\21\1\23"+ - "\11\21\1\0\1\36\4\2\1\65\1\2\1\65\17\2"+ - "\37\0\3\57\1\60\3\2\1\157\14\2\1\157\47\2"+ - "\1\157\43\2\1\36\22\2\1\0\15\2\16\0\1\115"+ - "\1\173\12\21\1\0\1\36\1\2\1\174\16\2\24\0"+ - "\2\57\1\60\1\2\1\157\31\2\1\157\27\2\1\157"+ - "\2\2\1\157\24\2\1\157\16\2\1\36\6\2\1\157"+ - "\2\2\1\157\6\2\1\0\13\2\12\0\1\175\3\21"+ - "\1\0\7\2\4\0\1\171\6\0\1\57\33\2\1\157"+ - "\21\2\1\157\7\2\1\0\3\2\1\0\21\2\1\0"+ - "\14\2\1\36\23\2\1\0\13\2\6\0\1\21\1\0"+ - "\2\2\13\0\1\57\16\2\1\157\50\2\2\0\2\2"+ - "\4\0\16\2\2\0\22\2\1\157\11\2\1\0\12\2"+ - "\1\176\4\0\1\21\1\177\1\2\1\200\1\201\5\0"+ - "\14\2\1\0\10\2\1\157\33\2\2\0\1\2\4\0"+ - "\5\2\1\157\7\2\1\0\2\2\1\157\7\2\1\157"+ - "\17\2\1\157\11\2\10\0\16\2\1\157\2\2\1\0"+ - "\30\2\6\0\10\2\1\0\2\2\1\0\35\2\3\0"+ - "\1\61\2\0\10\2\1\157\4\2\2\0\10\2\1\157"+ - "\14\2\6\0\7\2\1\157\1\2\1\0\1\157\4\2"+ - "\1\157\17\2\1\157\2\2\1\157\3\2\1\0\1\157"+ - "\3\2\2\0\1\2\1\157\17\2\5\0\6\2\1\0"+ - "\1\2\1\0\3\2\1\157\3\2\1\157\17\2\2\0"+ - "\3\2\2\0\16\2\4\0\2\2\1\157\3\2\2\0"+ - "\25\2\2\0\2\2\2\0\1\157\11\2\1\157\2\2"+ - "\3\0\4\2\2\0\22\2\5\0\1\2\3\0\10\2"+ - "\1\0\1\2\3\0\4\2\2\0\15\2\4\0\1\2"+ - "\2\0\10\2\1\0\1\2\3\0\3\2\2\0\7\2"+ - "\6\0\5\2\1\0\1\157\3\0\2\2\2\0\2\2"+ - "\1\157\3\2\6\0\3\2\5\0\2\2\2\0\2\2"+ - "\1\0\1\157\2\2\5\0\2\2\3\0\1\2\2\0"+ - "\2\2\2\0\1\2\5\0\1\2\3\0\1\2\2\0"+ - "\1\2\11\0\1\2\2\0\1\2\16\0\1\157\43\0"; - - private static int [] zzUnpackAction() { - int [] result = new int[2523]; - int offset = 0; - offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAction(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /** - * Translates a state to a row index in the transition table - */ - private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); - - private static final String ZZ_ROWMAP_PACKED_0 = - "\0\0\0\137\0\276\0\u011d\0\u017c\0\u01db\0\u023a\0\u0299"+ - "\0\u02f8\0\u0357\0\u03b6\0\u0415\0\u0474\0\u04d3\0\u0532\0\u0591"+ - "\0\u05f0\0\u064f\0\u06ae\0\u070d\0\u076c\0\u07cb\0\u082a\0\u0889"+ - "\0\u08e8\0\u0947\0\u09a6\0\u0a05\0\u0a64\0\u0ac3\0\u0b22\0\u0b81"+ - "\0\u0be0\0\u0c3f\0\u0c9e\0\u0cfd\0\u0d5c\0\u0be0\0\u0dbb\0\u0e1a"+ - "\0\u0e79\0\u0ed8\0\u0f37\0\u0be0\0\u0f96\0\u0ff5\0\u0be0\0\u0be0"+ - "\0\u1054\0\u10b3\0\u0be0\0\u0be0\0\u0be0\0\u0be0\0\u1112\0\u0be0"+ - "\0\u1171\0\u0be0\0\u11d0\0\u122f\0\u128e\0\u12ed\0\u134c\0\u13ab"+ - "\0\u140a\0\u1469\0\u14c8\0\u1527\0\u1586\0\u15e5\0\u1644\0\u16a3"+ - "\0\u1702\0\u1761\0\u17c0\0\u181f\0\u187e\0\u1171\0\u18dd\0\u193c"+ - "\0\u0be0\0\u199b\0\u19fa\0\u0be0\0\u0be0\0\u1a59\0\u0be0\0\u0be0"+ - "\0\u0be0\0\u0be0\0\u0be0\0\u1ab8\0\u0be0\0\u1b17\0\u1b76\0\u0be0"+ - "\0\u1bd5\0\u1c34\0\u0be0\0\u1c93\0\u0be0\0\u0be0\0\u1cf2\0\u1d51"+ - "\0\u1db0\0\u1e0f\0\u1e6e\0\u1ecd\0\u1f2c\0\u1f8b\0\u1fea\0\u2049"+ - "\0\u20a8\0\u2107\0\u0be0\0\u2166\0\u21c5\0\u2224\0\u2283\0\u22e2"+ - "\0\u2341\0\u23a0\0\u0be0\0\u23ff\0\u245e\0\u24bd\0\u251c\0\u257b"+ - "\0\u25da\0\u2639\0\u2698\0\u26f7\0\u2756\0\u0be0\0\u0be0\0\u27b5"+ - "\0\u2814\0\u0be0\0\u0be0\0\u27b5\0\u2873\0\u0be0\0\u28d2\0\u2931"+ - "\0\u2990\0\u29ef\0\u2a4e\0\u2aad\0\u0be0\0\u2b0c\0\u2b6b\0\u2bca"+ - "\0\u2c29\0\u0be0\0\u2c88\0\u2ce7\0\u0be0\0\u2d46\0\u2da5\0\u2e04"+ - "\0\u2e63\0\u2ec2\0\u2f21\0\u2f80\0\u0be0\0\u2fdf\0\u303e\0\u309d"+ - "\0\u30fc\0\u315b\0\u31ba\0\u3219\0\u3278\0\u32d7\0\u3336\0\u3395"+ - "\0\u33f4\0\u3453\0\u34b2\0\u3511\0\u3570\0\u35cf\0\u362e\0\u368d"+ - "\0\u36ec\0\u374b\0\u37aa\0\u3809\0\u3868\0\u38c7\0\u3926\0\u3985"+ - "\0\u39e4\0\u3a43\0\u3aa2\0\u3b01\0\u3b60\0\u3bbf\0\u3c1e\0\u3c7d"+ - "\0\u3cdc\0\u3d3b\0\u3d9a\0\u3df9\0\u3e58\0\u0be0\0\u3eb7\0\u3f16"+ - "\0\u3f75\0\u3fd4\0\u4033\0\u0be0\0\u0be0\0\u4092\0\u40f1\0\u4150"+ - "\0\u41af\0\u0be0\0\u0be0\0\u420e\0\u0be0\0\u0be0\0\u426d\0\u42cc"+ - "\0\u432b\0\u438a\0\u43e9\0\u0be0\0\u0be0\0\u0be0\0\u420e\0\u426d"+ - "\0\u4448\0\u44a7\0\u0be0\0\u0be0\0\u0be0\0\u0be0\0\u420e\0\u0be0"+ - "\0\u4506\0\u4565\0\u45c4\0\u4623\0\u4682\0\u46e1\0\u0be0\0\u0be0"+ - "\0\u0be0\0\u0be0\0\u4740\0\u0be0\0\u0be0\0\u0be0\0\u479f\0\u47fe"+ - "\0\u485d\0\u48bc\0\u491b\0\u497a\0\u0be0\0\u0be0\0\u49d9\0\u4a38"+ - "\0\u4a97\0\u4af6\0\u4b55\0\u0be0\0\u4bb4\0\u4c13\0\u4c72\0\u4cd1"+ - "\0\u4d30\0\u4d8f\0\u4dee\0\u4e4d\0\u4eac\0\u4f0b\0\u4f6a\0\u4fc9"+ - "\0\u5028\0\u5087\0\u50e6\0\u5145\0\u51a4\0\u5203\0\u5262\0\u52c1"+ - "\0\u5320\0\u537f\0\u53de\0\u543d\0\u549c\0\u54fb\0\u555a\0\u55b9"+ - "\0\u5618\0\u5677\0\u56d6\0\u5735\0\u5794\0\u57f3\0\u5852\0\u58b1"+ - "\0\u5910\0\u596f\0\u59ce\0\u5a2d\0\u5a8c\0\u5aeb\0\u5b4a\0\u5ba9"+ - "\0\u5c08\0\u5c67\0\u5cc6\0\u5d25\0\u5d84\0\u5de3\0\u5e42\0\u5ea1"+ - "\0\u5f00\0\u5f5f\0\u5fbe\0\u601d\0\u607c\0\u60db\0\u613a\0\u6199"+ - "\0\u61f8\0\u6257\0\u62b6\0\u6315\0\u6374\0\u63d3\0\u6432\0\u6491"+ - "\0\u64f0\0\u0be0\0\u1c93\0\u654f\0\u65ae\0\u660d\0\u660d\0\u0be0"+ - "\0\u666c\0\u66cb\0\u672a\0\u6789\0\u67e8\0\u6847\0\u6847\0\u68a6"+ - "\0\u6905\0\u6847\0\u6964\0\u69c3\0\u6a22\0\u6a81\0\u6ae0\0\u6b3f"+ - "\0\u6b9e\0\u6bfd\0\u6c5c\0\u6cbb\0\u6d1a\0\u6d79\0\u6dd8\0\u6e37"+ - "\0\u6e96\0\u6ef5\0\u6f54\0\u6fb3\0\u7012\0\u7071\0\u70d0\0\u712f"+ - "\0\u718e\0\u71ed\0\u724c\0\u72ab\0\u730a\0\u7369\0\u73c8\0\u7427"+ - "\0\u7486\0\u74e5\0\u7544\0\u75a3\0\u7602\0\u7661\0\u76c0\0\u771f"+ - "\0\u777e\0\u77dd\0\u783c\0\u789b\0\u1d51\0\u78fa\0\u7959\0\u79b8"+ - "\0\u7a17\0\u7a76\0\u7ad5\0\u7b34\0\u7b93\0\u7bf2\0\u7c51\0\u0be0"+ - "\0\u7cb0\0\u7d0f\0\u7d6e\0\u7dcd\0\u7e2c\0\u0be0\0\u7e8b\0\u7eea"+ - "\0\u7f49\0\u7fa8\0\u8007\0\u8066\0\u80c5\0\u8124\0\u8183\0\u81e2"+ - "\0\u0be0\0\u8241\0\u82a0\0\u0be0\0\u82ff\0\u835e\0\u83bd\0\u841c"+ - "\0\u847b\0\u84da\0\u8539\0\u8598\0\u85f7\0\u8656\0\u86b5\0\u8714"+ - "\0\u8773\0\u87d2\0\u8831\0\u0be0\0\u8890\0\u88ef\0\u894e\0\u0be0"+ - "\0\u89ad\0\u8a0c\0\u8a6b\0\u8aca\0\u8b29\0\u8b88\0\u8be7\0\u8c46"+ - "\0\u8ca5\0\u8d04\0\u8d63\0\u8dc2\0\u8e21\0\u8e80\0\u8edf\0\u8f3e"+ - "\0\u8f9d\0\u8ffc\0\u905b\0\u90ba\0\u9119\0\u9178\0\u91d7\0\u9236"+ - "\0\u9295\0\u92f4\0\u9353\0\u93b2\0\u9411\0\u9470\0\u94cf\0\u952e"+ - "\0\u958d\0\u95ec\0\u964b\0\u96aa\0\u9709\0\u9768\0\u97c7\0\u9826"+ - "\0\u9885\0\u0be0\0\u98e4\0\u9943\0\u99a2\0\u9a01\0\u9a60\0\u9abf"+ - "\0\u9b1e\0\u9b7d\0\u9bdc\0\u9c3b\0\u9c9a\0\u9cf9\0\u9d58\0\u9db7"+ - "\0\u9e16\0\u9e75\0\u9ed4\0\u9f33\0\u9f92\0\u789b\0\u9ff1\0\ua050"+ - "\0\ua0af\0\ua10e\0\ua16d\0\ua1cc\0\ua22b\0\ua28a\0\ua2e9\0\ua348"+ - "\0\ua3a7\0\ua406\0\ua465\0\ua4c4\0\ua523\0\ua582\0\ua5e1\0\ua640"+ - "\0\ua69f\0\ua6fe\0\ua75d\0\ua7bc\0\ua81b\0\ua87a\0\ua8d9\0\ua938"+ - "\0\u0be0\0\u0be0\0\ua997\0\ua9f6\0\uaa55\0\uaab4\0\u0be0\0\uab13"+ - "\0\uab72\0\uabd1\0\uac30\0\uac8f\0\uacee\0\uad4d\0\uadac\0\uae0b"+ - "\0\uae6a\0\uaec9\0\uaf28\0\uaf87\0\uafe6\0\ub045\0\ub0a4\0\u0be0"+ - "\0\ub103\0\ub162\0\ub1c1\0\ub220\0\ub27f\0\u46e1\0\u0be0\0\u0be0"+ - "\0\u47fe\0\ub2de\0\ub33d\0\u0be0\0\ub39c\0\u0be0\0\ub3fb\0\u0be0"+ - "\0\ub45a\0\ub4b9\0\ub518\0\ub577\0\u1054\0\ub5d6\0\ub635\0\ub694"+ - "\0\ub6f3\0\ub752\0\ub7b1\0\ub810\0\ub86f\0\ub8ce\0\ub92d\0\ub98c"+ - "\0\ub9eb\0\uba4a\0\ubaa9\0\ubb08\0\ubb67\0\ubbc6\0\ubc25\0\ubc84"+ - "\0\ubce3\0\ubd42\0\ubda1\0\ube00\0\ube5f\0\ubebe\0\ubf1d\0\ubf7c"+ - "\0\ubfdb\0\uc03a\0\uc099\0\uc0f8\0\uc157\0\uc1b6\0\uc215\0\uc274"+ - "\0\uc2d3\0\uc332\0\uc391\0\uc3f0\0\uc44f\0\uc4ae\0\uc50d\0\uc56c"+ - "\0\uc5cb\0\uc62a\0\u5618\0\uc689\0\uc6e8\0\uc747\0\uc7a6\0\uc805"+ - "\0\uc864\0\uc8c3\0\u1527\0\uc922\0\uc981\0\uc9e0\0\uca3f\0\uca9e"+ - "\0\ucafd\0\ucb5c\0\ucbbb\0\ucc1a\0\ucc79\0\u0be0\0\uccd8\0\ucd37"+ - "\0\ucd96\0\ucdf5\0\uce54\0\uceb3\0\ucf12\0\ucf71\0\u6847\0\ucfd0"+ - "\0\ud02f\0\ud08e\0\ud0ed\0\ud14c\0\ud1ab\0\ud20a\0\ud269\0\ud2c8"+ - "\0\ud327\0\ud386\0\ud3e5\0\ud444\0\ud4a3\0\ud502\0\ud561\0\ud5c0"+ - "\0\ud61f\0\ud67e\0\ud6dd\0\ud73c\0\ud79b\0\ud7fa\0\ud859\0\ud8b8"+ - "\0\ud917\0\u1d51\0\ud976\0\ud9d5\0\uda34\0\uda93\0\udaf2\0\udb51"+ - "\0\udbb0\0\udc0f\0\udc6e\0\udccd\0\udd2c\0\udd8b\0\uddea\0\ude49"+ - "\0\udea8\0\udf07\0\udf66\0\udfc5\0\ue024\0\ue083\0\ue0e2\0\ue141"+ - "\0\ue1a0\0\ue1ff\0\ue25e\0\ue2bd\0\ue31c\0\ue37b\0\ue3da\0\ue439"+ - "\0\ue498\0\ue4f7\0\ue556\0\ue5b5\0\ue614\0\ue673\0\ue6d2\0\ue731"+ - "\0\ue790\0\ue7ef\0\ue84e\0\ue8ad\0\ue90c\0\ue96b\0\ue9ca\0\uea29"+ - "\0\uea88\0\ueae7\0\ueb46\0\ueba5\0\uec04\0\uec63\0\uecc2\0\ued21"+ - "\0\ued80\0\ueddf\0\uee3e\0\uee9d\0\ueefc\0\uef5b\0\uefba\0\uf019"+ - "\0\uf078\0\uf0d7\0\uf136\0\u0be0\0\uf195\0\uf1f4\0\uf253\0\uf2b2"+ - "\0\uf311\0\uf370\0\uf3cf\0\uf42e\0\uf48d\0\uf4ec\0\ucd96\0\uf54b"+ - "\0\uf5aa\0\uf609\0\u1d51\0\uf668\0\uf6c7\0\uf726\0\uf785\0\uf7e4"+ - "\0\uf843\0\uf8a2\0\uf901\0\uf960\0\uf9bf\0\ufa1e\0\ufa7d\0\ufadc"+ - "\0\ufb3b\0\ufb9a\0\ufbf9\0\ufc58\0\ufcb7\0\ufd16\0\ufd75\0\ufdd4"+ - "\0\ufe33\0\ufe92\0\ufef1\0\uff50\0\uffaf\1\16\1\155\1\314"+ - "\1\u012b\1\u018a\1\u01e9\1\u0248\1\u02a7\1\u0306\1\u0365\1\u03c4"+ - "\1\u0423\1\u0482\1\u04e1\1\u0540\1\u059f\1\u05fe\1\u065d\1\u06bc"+ - "\1\u071b\1\u077a\1\u07d9\1\u0838\1\u0897\1\u08f6\1\u0955\1\u09b4"+ - "\1\u0a13\1\u0a72\1\u0ad1\1\u0b30\1\u0b8f\1\u0bee\1\u0c4d\1\u0cac"+ - "\1\u0d0b\1\u0d6a\1\u0dc9\1\u0e28\1\u0e87\1\u0ee6\1\u0f45\1\u0fa4"+ - "\1\u1003\1\u1062\1\u10c1\1\u1120\1\u117f\1\u11de\1\u123d\1\u129c"+ - "\1\u12fb\1\u135a\1\u13b9\1\u1418\1\u1477\1\u14d6\1\u1535\1\u1594"+ - "\1\u15f3\1\u1652\1\u16b1\1\u1710\1\u176f\1\u17ce\1\u182d\1\u188c"+ - "\1\u18eb\1\u194a\1\u19a9\1\u1a08\1\u1a67\1\u1ac6\1\u1b25\1\u1b84"+ - "\1\u1be3\1\u1c42\1\u1ca1\1\u1d00\1\u1d5f\1\u1dbe\1\u1e1d\1\u1e7c"+ - "\1\u1edb\1\u1f3a\1\u1f99\1\u1ff8\1\u2057\1\u20b6\1\u2115\1\u2174"+ - "\1\u21d3\1\u2232\1\u2291\1\u22f0\1\u234f\1\u23ae\1\u240d\1\u246c"+ - "\1\u24cb\1\u252a\1\u2589\1\u25e8\1\u2647\0\u0be0\0\u0be0\1\u26a6"+ - "\1\u2705\1\u2764\1\u27c3\1\u2822\1\u2881\1\u28e0\1\u293f\1\u299e"+ - "\1\u29fd\1\u2a5c\1\u2abb\1\u2b1a\1\u2b79\1\u2bd8\1\u2c37\1\u2c96"+ - "\1\u2cf5\1\u2d54\1\u2db3\1\u2e12\1\u2e71\0\u5735\1\u2ed0\1\u2f2f"+ - "\1\u2f8e\1\u2fed\1\u304c\1\u30ab\1\u310a\1\u3169\0\ubf7c\1\u31c8"+ - "\1\u3227\1\u3286\1\u32e5\1\u3344\1\u33a3\1\u3402\0\u0be0\1\u3461"+ - "\1\u34c0\1\u351f\1\u357e\0\u1d51\1\u35dd\1\u363c\1\u369b\1\u36fa"+ - "\1\u3759\1\u37b8\1\u3817\1\u3876\1\u38d5\0\u1d51\0\u1d51\1\u3934"+ - "\1\u3993\1\u39f2\1\u3a51\1\u3ab0\1\u3b0f\1\u3b6e\1\u3bcd\1\u3c2c"+ - "\1\u3c8b\1\u3cea\1\u3d49\1\u3da8\1\u3e07\1\u3e66\1\u3ec5\1\u3f24"+ - "\1\u3f83\1\u3fe2\1\u4041\1\u40a0\1\u40ff\0\u7d0f\0\u0be0\1\u415e"+ - "\1\u41bd\1\u421c\1\u427b\1\u42da\1\u4339\1\u4398\1\u43f7\0\u0be0"+ - "\1\u4456\1\u44b5\1\u4514\1\u4573\1\u45d2\1\u4631\1\u4690\1\u46ef"+ - "\1\u474e\0\u0be0\1\u47ad\1\u480c\1\u486b\1\u48ca\1\u4929\1\u4988"+ - "\1\u49e7\1\u4a46\1\u4aa5\1\u4b04\1\u4b63\1\u4bc2\1\u4c21\1\u4c80"+ - "\1\u4cdf\1\u4d3e\1\u4d9d\1\u4dfc\1\u4e5b\1\u4eba\1\u4f19\1\u4f78"+ - "\1\u4fd7\1\u5036\1\u5095\1\u50f4\1\u5153\1\u51b2\1\u5211\1\u5270"+ - "\1\u52cf\1\u532e\1\u538d\1\u53ec\1\u544b\1\u54aa\1\u5509\1\u5568"+ - "\1\u55c7\1\u5626\1\u5685\1\u56e4\1\u5743\1\u57a2\1\u5801\1\u5860"+ - "\1\u58bf\1\u591e\1\u597d\1\u59dc\1\u5a3b\1\u5a9a\1\u5af9\1\u5b58"+ - "\1\u5bb7\1\u5c16\1\u5c75\1\u5cd4\1\u5d33\1\u5d92\1\u5df1\1\u5e50"+ - "\1\u5eaf\1\u5f0e\1\u5f6d\1\u5fcc\1\u602b\1\u608a\1\u60e9\1\u6148"+ - "\1\u61a7\1\u6206\1\u6265\1\u62c4\1\u6323\1\u6382\1\u63e1\1\u6440"+ - "\1\u649f\1\u64fe\1\u655d\1\u65bc\1\u661b\1\u667a\1\u66d9\1\u6738"+ - "\1\u6797\1\u0a13\1\u67f6\1\u6855\1\u68b4\1\u6913\1\u6972\1\u69d1"+ - "\1\u6a30\1\u6a8f\1\u6aee\1\u6b4d\1\u6bac\1\u6c0b\1\u6c6a\1\u6cc9"+ - "\1\u6d28\1\u6d87\1\u6de6\1\u6e45\1\u6ea4\1\u6f03\1\u6f62\1\u6fc1"+ - "\1\u7020\1\u707f\1\u70de\1\u713d\1\u719c\1\u71fb\1\u725a\1\u72b9"+ - "\1\u7318\1\u7377\1\u73d6\1\u7435\1\u7494\1\u74f3\1\u7552\1\u75b1"+ - "\1\u7610\1\u766f\1\u76ce\1\u772d\1\u778c\1\u77eb\1\u784a\1\u78a9"+ - "\1\u7908\1\u7967\1\u79c6\1\u7a25\1\u7a84\0\u3f16\1\u7ae3\1\u7b42"+ - "\1\u7ba1\1\u7c00\1\u7c5f\1\u7cbe\1\u7d1d\1\u7d7c\1\u7ddb\1\u7e3a"+ - "\1\u7e99\1\u7ef8\1\u7f57\1\u7fb6\1\u8015\1\u8074\1\u80d3\1\u8132"+ - "\1\u8191\1\u81f0\1\u824f\1\u82ae\1\u2764\1\u830d\1\u836c\1\u83cb"+ - "\1\u842a\1\u8489\1\u84e8\1\u8547\1\u85a6\1\u8605\1\u8664\1\u86c3"+ - "\1\u86c3\1\u8722\1\u8781\1\u87e0\1\u883f\1\u889e\1\u88fd\1\u895c"+ - "\1\u89bb\1\u8a1a\1\u8a79\1\u8ad8\1\u8b37\1\u8b96\1\u8bf5\0\ud2c8"+ - "\1\u8c54\1\u8cb3\1\u8d12\1\u8d71\1\u8dd0\1\u8e2f\1\u8e8e\1\u8eed"+ - "\1\u8f4c\1\u8fab\1\u900a\1\u9069\1\u90c8\1\u9127\1\u9186\1\u91e5"+ - "\1\u9244\1\u92a3\1\u9302\1\u427b\1\u9361\1\u93c0\1\u43f7\1\u941f"+ - "\1\u947e\1\u94dd\1\u953c\1\u959b\1\u95fa\1\u9659\1\u96b8\1\u9717"+ - "\1\u9776\1\u97d5\1\u9834\1\u9893\1\u98f2\1\u9951\1\u99b0\1\u9a0f"+ - "\1\u9a6e\1\u4b04\1\u9acd\1\u9b2c\1\u9b8b\1\u9bea\1\u9c49\1\u9ca8"+ - "\1\u9d07\1\u9d66\1\u9dc5\1\u9e24\1\u9e83\1\u9ee2\1\u9f41\1\u9fa0"+ - "\1\u9fff\1\ua05e\1\ua0bd\1\ua11c\1\ua17b\1\ua1da\1\ua239\1\ua298"+ - "\1\ua2f7\1\ua356\1\ua3b5\1\ua414\1\ua473\1\ua4d2\1\ua531\1\ua590"+ - "\1\ua5ef\1\ua64e\1\ua6ad\1\ua70c\1\ua76b\1\ua7ca\1\ua829\1\ua888"+ - "\1\ua8e7\1\ua946\1\ua9a5\1\uaa04\1\uaa63\1\uaac2\1\uab21\1\uab80"+ - "\1\uabdf\1\uac3e\1\uac9d\1\uacfc\1\uad5b\1\uadba\1\uae19\1\uae78"+ - "\1\uaed7\1\uaf36\1\uaf95\1\uaff4\1\ub053\1\ub0b2\1\ub111\1\ub170"+ - "\1\ub1cf\1\ub22e\1\ub28d\1\ub2ec\1\ub34b\1\ub3aa\1\ub409\1\ub468"+ - "\1\ub4c7\1\ub526\1\ub585\1\ub5e4\1\ub643\1\ub6a2\1\ub701\1\ub760"+ - "\1\ub7bf\1\ub81e\1\ub87d\1\ub8dc\1\ub93b\1\ub99a\1\ub9f9\1\uba58"+ - "\1\ubab7\1\ubb16\1\ubb75\1\ubbd4\1\ubc33\1\ubc92\1\ubcf1\1\ubd50"+ - "\1\ubdaf\1\ube0e\1\ube6d\1\ubecc\1\ubf2b\1\ubf8a\1\ubfe9\1\uc048"+ - "\1\uc0a7\1\uc106\1\uc165\1\uc1c4\1\uc223\1\uc282\1\uc2e1\1\uc340"+ - "\1\uc39f\1\uc3fe\1\uc45d\1\uc4bc\1\uc51b\1\uc57a\1\uc5d9\1\uc638"+ - "\1\uc697\1\uc6f6\1\uc755\1\uc7b4\1\uc813\1\uc872\1\uc8d1\1\uc930"+ - "\1\uc98f\1\uc9ee\1\uca4d\1\ucaac\1\ucb0b\1\ucb6a\1\ucbc9\1\ucc28"+ - "\1\ucc87\1\ucce6\1\ucd45\1\ucda4\1\uce03\1\uce62\1\ucec1\1\ucf20"+ - "\1\ucf7f\1\ucfde\1\ud03d\1\ud09c\1\ud0fb\1\ud15a\1\ud1b9\1\ud218"+ - "\0\u48bc\1\ud277\1\ud2d6\1\ud335\1\ud394\1\ud3f3\1\ud452\1\ud4b1"+ - "\1\ud510\1\ud56f\1\ud5ce\1\ud62d\1\ud68c\1\ud6eb\0\u1d51\1\ud74a"+ - "\1\ud7a9\1\ud808\1\ud867\1\ud8c6\1\ud925\1\ud984\1\ud9e3\1\uda42"+ - "\1\udaa1\1\udb00\1\udb5f\1\udbbe\1\udc1d\1\udc7c\1\udcdb\1\udd3a"+ - "\1\udd99\1\uddf8\1\ude57\1\udeb6\1\udf15\1\udf74\1\udfd3\1\ue032"+ - "\1\ue091\1\ue0f0\1\ue14f\1\ue1ae\1\ue20d\1\ue26c\1\ue2cb\1\ue32a"+ - "\1\ue389\1\ue3e8\1\ue447\1\ue4a6\1\ue505\1\ue564\1\ue5c3\1\ue622"+ - "\1\ue681\1\ue6e0\1\ue73f\1\ue79e\1\ue7fd\1\ue85c\1\ue8bb\1\ue91a"+ - "\1\ue979\1\ue9d8\1\uea37\1\uea96\1\ueaf5\1\ueb54\1\uebb3\1\uec12"+ - "\1\uec71\1\uecd0\1\ued2f\1\ued8e\1\ueded\1\uee4c\1\ueeab\1\uef0a"+ - "\1\uef69\1\uefc8\1\uf027\1\uf086\1\uf0e5\1\uf144\1\uf1a3\1\uf202"+ - "\1\uf261\1\uf2c0\1\uf31f\1\uf37e\1\uf3dd\1\uf43c\1\uf49b\1\uf4fa"+ - "\1\uf559\1\uf5b8\1\uf617\1\uf676\1\uf6d5\1\uf734\1\uf793\1\uf7f2"+ - "\1\uf851\1\uf8b0\1\uf90f\1\uf96e\1\uf9cd\1\ufa2c\1\ufa8b\1\ufaea"+ - "\1\ufb49\1\ufba8\1\ufc07\1\ufc66\1\ufcc5\1\ufd24\1\ufd83\1\ufde2"+ - "\1\ufe41\1\ufea0\1\ufeff\1\uff5e\1\uffbd\2\34\2\173\2\332"+ - "\2\u0139\2\u0198\2\u01f7\2\u0256\2\u02b5\2\u0314\2\u0373\2\u03d2"+ - "\2\u0431\2\u0490\2\u04ef\2\u054e\2\u05ad\2\u060c\2\u066b\2\u06ca"+ - "\2\u0729\2\u0788\2\u07e7\2\u0846\2\u08a5\2\u0904\2\u0963\2\u09c2"+ - "\2\u0a21\2\u0a80\2\u0adf\2\u0b3e\2\u0b9d\2\u0bfc\2\u0c5b\2\u0cba"+ - "\2\u0d19\2\u0d78\2\u0dd7\2\u0e36\2\u0e95\2\u0ef4\2\u0f53\2\u0fb2"+ - "\2\u1011\2\u1070\2\u10cf\2\u112e\2\u118d\2\u11ec\2\u124b\2\u12aa"+ - "\2\u1309\2\u1368\2\u13c7\2\u1426\2\u1485\0\u48bc\2\u14e4\2\u1543"+ - "\2\u15a2\2\u1601\2\u1660\2\u16bf\2\u171e\2\u177d\2\u17dc\2\u183b"+ - "\2\u189a\2\u18f9\2\u1958\2\u19b7\2\u1a16\2\u1a75\2\u1ad4\2\u1b33"+ - "\2\u1b92\2\u1bf1\2\u1c50\2\u1caf\2\u1d0e\2\u1d6d\2\u1dcc\2\u1e2b"+ - "\2\u1e8a\2\u1ee9\2\u1f48\2\u1fa7\2\u2006\2\u2065\2\u20c4\2\u2123"+ - "\2\u2182\2\u21e1\2\u2240\2\u229f\2\u22fe\2\u235d\2\u23bc\2\u241b"+ - "\2\u247a\2\u24d9\2\u2538\2\u2597\2\u25f6\2\u2655\2\u26b4\2\u2713"+ - "\2\u2772\2\u27d1\2\u2830\2\u288f\2\u28ee\2\u294d\2\u29ac\2\u2a0b"+ - "\2\u2a6a\2\u2ac9\2\u2b28\2\u2b87\2\u2be6\2\u2c45\2\u2ca4\2\u2d03"+ - "\2\u2d62\2\u2dc1\2\u2e20\2\u2e7f\2\u2ede\2\u2f3d\2\u2f9c\2\u2ffb"+ - "\2\u305a\2\u30b9\2\u3118\2\u3177\2\u31d6\2\u3235\2\u3294\2\u32f3"+ - "\2\u3352\2\u33b1\2\u3410\2\u346f\2\u34ce\2\u352d\2\u358c\2\u35eb"+ - "\2\u364a\2\u36a9\2\u3708\2\u3767\2\u37c6\2\u3825\2\u3884\2\u38e3"+ - "\2\u3942\2\u39a1\2\u3a00\2\u3a5f\2\u3abe\2\u3b1d\2\u3b7c\2\u3bdb"+ - "\2\u3c3a\2\u3c99\2\u3cf8\2\u3d57\2\u3db6\2\u3e15\2\u3e74\2\u3ed3"+ - "\2\u3f32\2\u3f91\2\u3ff0\2\u404f\2\u40ae\2\u410d\2\u416c\2\u41cb"+ - "\2\u422a\2\u4289\2\u42e8\2\u4347\2\u43a6\2\u4405\2\u4464\2\u44c3"+ - "\2\u4522\2\u4581\2\u45e0\2\u0a21\2\u463f\2\u469e\2\u46fd\2\u475c"+ - "\2\u47bb\2\u481a\2\u4879\2\u48d8\2\u4937\2\u4996\2\u49f5\2\u4a54"+ - "\2\u4ab3\2\u4b12\2\u4b71\2\u4bd0\2\u4c2f\2\u4c8e\2\u4ced\2\u4d4c"+ - "\2\u4dab\2\u4e0a\2\u4e69\2\u4ec8\2\u4f27\2\u4f86\2\u4fe5\2\u5044"+ - "\2\u50a3\2\u5102\2\u5161\2\u51c0\2\u521f\2\u527e\2\u52dd\2\u533c"+ - "\2\u539b\2\u53fa\2\u5459\2\u54b8\2\u5517\2\u5576\2\u55d5\2\u5634"+ - "\2\u5693\2\u56f2\2\u5751\2\u57b0\2\u580f\2\u586e\2\u58cd\2\u592c"+ - "\2\u598b\2\u59ea\2\u5a49\2\u5aa8\2\u5b07\2\u5b66\2\u5bc5\2\u5c24"+ - "\2\u5c83\2\u5ce2\2\u5d41\2\u5da0\2\u5dff\2\u5e5e\2\u5ebd\2\u5f1c"+ - "\2\u5f7b\2\u5fda\2\u6039\2\u6098\2\u60f7\2\u6156\2\u61b5\2\u6214"+ - "\2\u6273\2\u62d2\2\u6331\2\u6390\2\u63ef\2\u644e\2\u64ad\2\u650c"+ - "\2\u656b\2\u65ca\2\u6629\2\u6688\2\u66e7\2\u6746\2\u67a5\2\u6804"+ - "\2\u6863\2\u68c2\2\u6921\2\u6980\2\u69df\2\u6a3e\2\u6a9d\2\u6afc"+ - "\2\u6b5b\2\u6bba\2\u6c19\2\u6c78\2\u6cd7\2\u6d36\2\u6d95\2\u6df4"+ - "\2\u6e53\2\u6eb2\2\u6f11\2\u6f70\2\u6fcf\2\u702e\2\u708d\2\u70ec"+ - "\2\u714b\2\u71aa\2\u7209\2\u7268\2\u72c7\2\u7326\2\u7385\2\u73e4"+ - "\2\u7443\2\u74a2\2\u7501\2\u7560\2\u75bf\2\u761e\2\u767d\2\u76dc"+ - "\2\u773b\2\u779a\2\u77f9\2\u7858\2\u78b7\2\u7916\2\u7975\2\u79d4"+ - "\2\u7a33\2\u7a92\2\u7af1\2\u7b50\2\u7baf\2\u7c0e\2\u7c6d\2\u7ccc"+ - "\2\u7d2b\0\u0be0\2\u7d8a\2\u7de9\2\u7e48\2\u7ea7\2\u7f06\0\u0be0"+ - "\2\u7f65\0\u0be0\0\u0be0\2\u7fc4\2\u8023\2\u8082\2\u80e1\2\u8140"+ - "\2\u819f\2\u81fe\2\u825d\2\u82bc\2\u831b\2\u837a\2\u83d9\2\u8438"+ - "\2\u8497\2\u84f6\2\u8555\2\u85b4\2\u8613\2\u8672\2\u86d1\2\u8730"+ - "\2\u878f\2\u87ee\2\u884d\2\u88ac\2\u890b\2\u896a\2\u89c9\2\u8a28"+ - "\2\u8a87\2\u8ae6\2\u8b45\2\u8ba4\2\u8c03\2\u8c62\2\u8cc1\2\u8d20"+ - "\2\u8d7f\2\u8dde\2\u8e3d\2\u8e9c\2\u8efb\2\u8f5a\2\u8fb9\2\u9018"+ - "\2\u9077\2\u90d6\2\u9135\2\u9194\2\u91f3\2\u9252\2\u92b1\2\u9310"+ - "\2\u936f\2\u93ce\2\u942d\2\u948c\2\u94eb\2\u954a\2\u95a9\2\u9608"+ - "\2\u9667\2\u96c6\2\u9725\2\u9784\2\u97e3\2\u9842\2\u98a1\2\u9900"+ - "\2\u995f\2\u99be\2\u9a1d\2\u9a7c\2\u9adb\2\u9b3a\2\u9b99\2\u9bf8"+ - "\2\u9c57\2\u9cb6\2\u9d15\2\u9d74\2\u9dd3\2\u9e32\2\u9e91\2\u9ef0"+ - "\2\u9d74\2\u9f4f\2\u9fae\2\ua00d\2\ua06c\2\ua0cb\2\ua12a\2\ua189"+ - "\2\ua1e8\2\ua247\2\ua2a6\2\ua305\2\ua364\2\ua3c3\2\ua422\2\ua481"+ - "\0\u0be0\2\ua4e0\2\ua53f\2\ua59e\2\ua5fd\2\ua65c\2\ua6bb\2\ua71a"+ - "\2\ua779\2\ua7d8\2\ua837\2\ua896\2\ua8f5\2\ua954\2\ua9b3\2\uaa12"+ - "\2\uaa71\2\uaad0\2\uab2f\2\uab8e\2\uabed\2\uac4c\2\uacab\2\uad0a"+ - "\2\uad69\2\uadc8\2\uae27\2\uae86\2\uaee5\2\uaf44\2\uafa3\2\ub002"+ - "\2\u91f3\2\ub061\2\ub0c0\2\ub11f\2\ub17e\2\ub1dd\2\ub23c\2\ub29b"+ - "\2\ub2fa\2\ub359\2\ub3b8\2\ub417\2\ub476\2\ub4d5\2\ub534\2\ub593"+ - "\2\ub5f2\2\ub651\2\ub6b0\2\ub70f\2\ub76e\2\ub7cd\2\ub82c\2\ub88b"+ - "\2\ub8ea\2\ub949\2\ub9a8\2\uba07\2\uba66\2\ubac5\2\ubb24\2\ubb83"+ - "\2\ubbe2\2\ubc41\2\ubca0\2\ubcff\2\ubd5e\2\ubdbd\2\ube1c\2\ube7b"+ - "\2\ubeda\2\ubf39\2\ubf98\2\ubff7\2\uc056\2\uc0b5\2\uc114\2\uc173"+ - "\2\uc1d2\2\uc231\2\uc290\2\uc2ef\2\uc34e\2\uc3ad\2\uc40c\2\uc46b"+ - "\2\uc4ca\2\uc529\2\uc588\2\uc5e7\2\uc646\2\uc6a5\2\uc704\2\uc763"+ - "\2\uc7c2\2\uc821\2\uc880\2\uc8df\2\uc93e\2\uc99d\2\uc9fc\2\uca5b"+ - "\2\ucaba\2\ucb19\2\ucb78\2\ucbd7\2\ucc36\2\ucc95\0\u0be0\2\uccf4"+ - "\2\ucd53\2\ucdb2\2\uce11\2\uce70\2\ucecf\2\ucf2e\2\ucf8d\2\ucfec"+ - "\2\ud04b\2\ud0aa\2\ud109\2\ud168\2\ud1c7\2\ud226\2\ud285\2\ud2e4"+ - "\2\ud343\2\ud3a2\2\ud401\2\ud460\2\ud4bf\2\ud51e\2\ud57d\2\ud5dc"+ - "\2\ud63b\2\ud69a\2\ud6f9\2\ud758\2\ud7b7\2\ud816\2\ud875\2\ud8d4"+ - "\2\ud933\2\ud992\2\ud9f1\2\uda50\2\udaaf\2\udb0e\2\udb6d\2\udbcc"+ - "\2\udc2b\2\udc8a\2\udce9\2\udd48\2\udda7\2\ude06\2\ude65\2\udec4"+ - "\2\udf23\2\udf82\2\udfe1\2\ue040\2\ue09f\2\ue0fe\2\ue15d\2\ue1bc"+ - "\2\ue21b\2\ue27a\2\ue2d9\2\ue338\2\ue397\2\ue3f6\2\ue455\2\ue4b4"+ - "\2\ue513\2\ue572\2\ue5d1\2\ue630\2\ue68f\2\ue6ee\2\ue74d\2\ue7ac"+ - "\2\ue80b\2\ue86a\2\u5576\2\ue8c9\2\ue928\2\ue987\2\ue9e6\2\uea45"+ - "\2\ueaa4\2\ueb03\2\ueb62\2\uebc1\2\uec20\2\uec7f\2\uecde\2\ued3d"+ - "\2\ued9c\2\uedfb\2\uee5a\2\ueeb9\2\uef18\2\uef77\2\uefd6\2\uf035"+ - "\2\uf094\2\uf0f3\2\uf152\2\uf1b1\2\uf210\2\uf26f\2\uf2ce\2\uf32d"+ - "\2\uf38c\2\uf3eb\2\uf44a\2\uf4a9\2\uf508\2\uf567\2\uf5c6\2\uf625"+ - "\2\uf684\2\uf6e3\2\uf742\2\uf7a1\2\uf800\2\uf85f\2\uf8be\2\uf91d"+ - "\2\uf97c\2\uf9db\2\ufa3a\2\ufa99\2\ufaf8\2\ufb57\2\ufbb6\2\ufc15"+ - "\2\ufc74\2\ufcd3\2\ufd32\2\ufd91\2\ufdf0\2\ufe4f\2\ufeae\2\uff0d"+ - "\2\uff6c\2\uffcb\3\52\3\211\3\350\3\u0147\3\u01a6\3\u0205"+ - "\3\u0264\3\u02c3\3\u0322\3\u0381\3\u03e0\3\u043f\3\u049e\3\u04fd"+ - "\3\u055c\3\u05bb\3\u061a\3\u0679\3\u06d8\3\u0737\3\u0796\3\u07f5"+ - "\3\u0854\3\u08b3\3\u0912\3\u0971\3\u09d0\3\u0a2f\3\u0a8e\3\u0aed"+ - "\3\u0b4c\3\u0bab\3\u0c0a\3\u0c69\3\u0cc8\3\u0d27\3\u0d86\3\u0de5"+ - "\3\u0e44\3\u0ea3\3\u0f02\3\u0f61\3\u0fc0\3\u101f\3\u107e\3\u10dd"+ - "\3\u113c\3\u119b\3\u11fa\3\u1259\3\u12b8\3\u1317\3\u1376\3\u13d5"+ - "\3\u1434\3\u1493\3\u14f2\3\u1551\3\u15b0\3\u160f\3\u166e\3\u16cd"+ - "\3\u172c\3\u178b\3\u17ea\3\u1849\3\u18a8\3\u1907\3\u1966\3\u19c5"+ - "\3\u1a24\3\u1a83\3\u1ae2\3\u1b41\3\u1ba0\3\u1bff\3\u1c5e\3\u1cbd"+ - "\3\u1d1c\3\u1d7b\3\u1dda\3\u1e39\3\u1e98\3\u1ef7\3\u1f56\3\u1fb5"+ - "\3\u2014\3\u2073\3\u20d2\3\u2131\3\u2190\3\u21ef\3\u224e\3\u22ad"+ - "\3\u230c\3\u236b\3\u23ca\3\u2429\3\u2488\3\u24e7\3\u2546\3\u25a5"+ - "\3\u2604\3\u2663\3\u26c2\3\u2721\3\u2780\3\u27df\3\u283e\3\u289d"+ - "\3\u28fc\3\u295b\3\u29ba\3\u2a19\3\u2a78\3\u2ad7\3\u2b36\3\u2b95"+ - "\3\u2bf4\3\u2c53\3\u2cb2\3\u2d11\3\u2d70\3\u2dcf\3\u2e2e\3\u2e8d"+ - "\3\u2eec\3\u2f4b\3\u2faa\3\u3009\3\u3068\3\u30c7\3\u3126\3\u3185"+ - "\3\u31e4\3\u3243\3\u32a2\3\u3301\3\u3360\3\u33bf\3\u341e\3\u347d"+ - "\3\u34dc\3\u353b\3\u359a\3\u35f9\3\u3658\3\u36b7\3\u3716\3\u3775"+ - "\3\u37d4\3\u3833\3\u3892\3\u38f1\3\u3950\3\u39af\3\u3a0e\3\u3a6d"+ - "\3\u3acc\3\u3b2b\3\u3b8a\3\u3be9\3\u3c48\3\u3ca7\3\u3d06\3\u3d65"+ - "\3\u3dc4\3\u3e23\3\u3e82\3\u3ee1\3\u3f40\3\u3f9f\3\u3ffe\3\u405d"+ - "\3\u40bc\3\u411b\3\u417a\3\u41d9\3\u4238\3\u4297\3\u42f6\3\u4355"+ - "\3\u43b4\3\u4413\3\u4472\3\u44d1\3\u4530\3\u458f\3\u45ee\3\u464d"+ - "\3\u46ac\3\u470b\3\u476a\3\u47c9\3\u4828\3\u4887\3\u48e6\3\u4945"+ - "\3\u49a4\3\u4a03\3\u4a62\3\u4ac1\3\u4b20\3\u4b7f\3\u4bde\3\u4c3d"+ - "\3\u4c9c\3\u4cfb\3\u4d5a\3\u4db9\3\u4e18\3\u4e77\3\u4ed6\3\u4f35"+ - "\3\u4f94\3\u4ff3\3\u5052\3\u50b1\3\u5110\3\u516f\3\u51ce\3\u522d"+ - "\3\u528c\3\u52eb\3\u534a\3\u53a9\3\u5408\3\u5467\3\u54c6\3\u5525"+ - "\3\u5584\3\u55e3\3\u5642\3\u56a1\3\u5700\3\u575f\3\u57be\3\u581d"+ - "\3\u587c\3\u58db\3\u593a\3\u5999\3\u59f8\3\u5a57\3\u5ab6\3\u5b15"+ - "\3\u5b74\3\u5bd3\3\u5c32\3\u5c91\3\u5cf0\3\u5d4f\3\u5dae\3\u5e0d"+ - "\3\u5e6c\3\u5ecb\3\u5f2a\3\u5f89\3\u5fe8\3\u6047\3\u60a6\3\u6105"+ - "\3\u6164\3\u61c3\3\u6222\3\u6281\3\u62e0\3\u633f\3\u639e\3\u63fd"+ - "\3\u645c\3\u64bb\3\u651a\3\u6579\3\u65d8\3\u6637\3\u6696\3\u66f5"+ - "\3\u6754\3\u67b3\3\u6812\3\u6871\3\u68d0\3\u692f\3\u698e\3\u69ed"+ - "\3\u6a4c\3\u6aab\3\u6b0a\3\u6b69\3\u6bc8\3\u6c27\3\u6c86\3\u6ce5"+ - "\3\u6d44\3\u6da3\3\u6e02\3\u6e61\3\u6ec0\3\u6f1f\3\u6f7e\3\u6fdd"+ - "\3\u703c\3\u709b\3\u70fa\3\u7159\3\u71b8\3\u7217\3\u7276\3\u72d5"+ - "\3\u7334\3\u7393\3\u73f2\3\u7451\3\u74b0\3\u750f\3\u756e\3\u75cd"+ - "\3\u762c\3\u768b\3\u76ea"; - - private static int [] zzUnpackRowMap() { - int [] result = new int[2523]; - int offset = 0; - offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackRowMap(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int high = packed.charAt(i++) << 16; - result[j++] = high | packed.charAt(i++); - } - return j; - } - - /** - * The transition table of the DFA - */ - private static final int [] ZZ_TRANS = zzUnpackTrans(); - - private static final String ZZ_TRANS_PACKED_0 = - "\1\37\1\40\1\41\1\42\1\43\1\44\131\37\2\45"+ - "\1\46\33\45\1\47\5\45\1\50\32\45\1\51\7\45"+ - "\1\52\27\45\2\53\1\54\64\53\1\55\47\53\2\56"+ - "\1\57\16\56\1\60\115\56\2\61\1\0\1\62\1\63"+ - "\2\61\1\64\1\65\1\66\1\67\6\61\1\70\115\61"+ - "\2\71\1\0\1\71\1\72\2\71\4\72\1\73\1\74"+ - "\1\75\1\76\1\77\1\100\1\72\1\71\1\101\1\102"+ - "\6\71\1\103\4\71\1\104\1\75\1\100\1\105\1\106"+ - "\5\71\2\107\1\71\1\106\2\71\1\102\1\103\1\101"+ - "\1\73\10\71\1\110\1\71\1\74\1\111\1\112\1\76"+ - "\1\71\1\77\1\71\1\113\1\112\1\71\1\114\1\115"+ - "\3\71\1\110\1\105\1\113\1\104\1\71\1\115\1\116"+ - "\1\114\1\111\4\71\1\116\4\71\3\117\1\120\4\117"+ - "\1\121\126\117\3\122\1\120\5\122\1\121\125\122\1\61"+ - "\1\123\1\0\1\62\1\43\2\61\1\64\1\124\1\125"+ - "\1\126\6\61\1\127\115\61\3\117\1\120\4\117\1\130"+ - "\126\117\3\122\1\120\5\122\1\130\125\122\2\61\1\0"+ - "\1\61\1\63\2\61\1\64\1\131\1\132\1\126\6\61"+ - "\1\133\115\61\10\134\1\135\126\134\11\136\1\135\125\136"+ - "\1\137\1\43\1\140\1\141\1\43\1\142\1\143\1\144"+ - "\1\145\1\146\1\147\3\150\1\151\2\150\1\152\3\150"+ - "\2\144\1\150\1\153\1\154\1\153\1\150\1\153\1\150"+ - "\1\155\1\137\1\156\1\157\1\160\1\161\1\162\1\153"+ - "\1\163\1\137\1\150\1\144\1\150\1\164\2\150\1\165"+ - "\1\166\1\167\1\170\1\171\1\172\1\173\1\143\1\144"+ - "\3\64\1\174\1\137\2\150\1\175\1\150\1\176\1\177"+ - "\1\200\1\201\3\150\1\202\1\203\1\150\3\173\1\150"+ - "\1\204\7\150\1\153\2\150\1\173\3\150\2\153\2\205"+ - "\1\206\5\205\1\207\26\205\1\210\77\205\2\211\1\212"+ - "\6\211\1\213\25\211\1\214\77\211\2\215\1\216\1\217"+ - "\40\215\1\220\4\215\1\221\25\215\1\222\7\215\1\223"+ - "\27\215\2\224\1\225\1\226\40\224\1\227\32\224\1\230"+ - "\7\224\1\231\27\224\2\45\1\232\33\45\1\233\5\45"+ - "\1\50\32\45\1\51\7\45\1\52\27\45\2\234\1\235"+ - "\1\236\40\234\1\237\4\234\1\240\21\234\1\241\3\234"+ - "\1\242\7\234\1\243\21\234\1\244\5\234\1\137\1\43"+ - "\1\245\1\246\1\43\1\142\1\143\1\144\1\247\1\250"+ - "\1\251\1\252\1\253\1\254\1\255\1\256\1\257\1\152"+ - "\1\150\1\260\1\261\1\262\1\144\1\150\1\153\1\263"+ - "\1\153\1\264\1\153\1\150\1\155\1\137\1\150\1\157"+ - "\1\265\1\161\1\266\1\153\1\163\1\137\1\150\1\144"+ - "\1\267\1\164\1\150\1\270\1\165\1\166\1\271\1\272"+ - "\1\273\1\274\1\173\1\143\1\144\3\64\1\174\1\275"+ - "\2\150\1\175\1\150\1\276\1\277\1\200\1\300\2\150"+ - "\1\301\1\302\1\303\1\150\3\173\1\304\1\305\1\306"+ - "\1\307\1\310\1\150\1\311\1\312\1\313\1\153\2\150"+ - "\1\173\2\150\1\314\2\153\2\315\1\316\41\315\1\220"+ - "\4\315\1\317\25\315\1\222\7\315\1\223\27\315\1\320"+ - "\1\321\1\0\1\320\1\43\2\320\1\64\1\322\1\323"+ - "\1\324\6\320\1\325\3\320\1\326\14\320\1\327\36\320"+ - "\1\330\1\320\1\331\33\320\1\332\1\63\1\333\1\334"+ - "\1\63\1\332\1\173\1\64\1\335\1\336\1\337\6\340"+ - "\1\64\3\340\2\332\1\340\3\332\1\340\1\332\2\340"+ - "\1\332\5\340\2\332\1\341\1\64\5\340\1\64\5\340"+ - "\1\332\1\143\1\64\1\332\1\342\2\64\1\343\16\340"+ - "\3\173\11\340\1\332\2\340\1\344\3\340\2\332\1\345"+ - "\1\63\1\346\1\347\1\63\5\345\1\350\6\351\1\345"+ - "\3\351\2\345\1\351\3\345\1\351\1\345\2\351\1\345"+ - "\5\351\4\345\1\352\4\351\2\345\4\351\1\353\3\345"+ - "\1\354\3\345\16\351\3\345\11\351\1\345\2\351\1\345"+ - "\3\351\2\345\1\355\1\63\1\356\1\357\1\63\1\355"+ - "\1\360\1\355\1\335\1\336\1\361\6\362\1\355\3\362"+ - "\1\355\1\363\1\362\3\364\1\362\1\364\1\362\1\365"+ - "\6\362\1\364\1\355\1\366\2\355\4\362\1\355\1\143"+ - "\4\362\1\353\1\143\6\355\16\362\1\355\1\367\1\370"+ - "\11\362\1\364\2\362\1\355\3\362\2\364\2\205\1\371"+ - "\5\205\1\372\26\205\1\373\77\205\2\211\1\374\6\211"+ - "\1\375\25\211\1\373\77\211\2\315\1\376\41\315\1\220"+ - "\4\315\1\377\25\315\1\222\7\315\1\223\27\315\2\37"+ - "\4\0\132\37\1\40\2\0\1\43\1\0\131\37\151\0"+ - "\1\u0100\1\u0101\5\u0102\1\0\3\u0102\1\u0103\1\u0104\6\u0102"+ - "\3\0\6\u0102\4\0\4\u0102\2\0\3\u0102\1\u0101\3\0"+ - "\1\u0105\4\0\16\u0102\3\0\14\u0102\1\0\5\u0102\1\0"+ - "\1\43\2\0\1\43\132\0\4\44\1\0\1\44\1\u0106"+ - "\130\44\2\45\1\0\33\45\1\0\5\45\1\0\32\45"+ - "\1\0\7\45\1\0\27\45\36\0\1\u0107\142\0\1\u0108"+ - "\36\0\1\u0109\77\0\1\u010a\203\0\1\u010b\27\0\2\53"+ - "\1\0\64\53\1\0\47\53\21\0\1\u010c\115\0\2\56"+ - "\1\0\16\56\1\0\115\56\2\61\1\0\1\61\1\0"+ - "\2\61\4\0\6\61\1\0\117\61\1\0\1\61\1\0"+ - "\2\61\4\0\6\61\1\0\3\61\1\u010d\111\61\21\0"+ - "\1\70\115\0\2\71\1\0\1\71\1\0\2\71\4\0"+ - "\6\71\1\0\117\71\1\0\1\71\1\0\2\71\4\0"+ - "\1\71\1\u010e\2\71\1\u010f\1\u0110\1\0\2\71\1\u0111"+ - "\6\71\1\u0112\4\71\1\u0113\1\71\1\u0110\15\71\1\u0111"+ - "\1\u0112\12\71\1\u0114\1\71\1\u010e\4\71\1\u010f\1\71"+ - "\1\u0115\7\71\1\u0114\1\71\1\u0115\1\u0113\20\71\1\0"+ - "\1\71\1\0\2\71\4\0\3\71\1\u0116\2\71\1\0"+ - "\2\71\1\u0117\6\71\1\u0118\24\71\1\u0117\1\u0118\12\71"+ - "\1\u0119\4\71\1\u0116\13\71\1\u0119\23\71\1\0\1\71"+ - "\1\0\2\71\4\0\6\71\1\0\16\71\1\u011a\57\71"+ - "\1\u011a\20\71\1\0\1\71\1\0\2\71\4\0\1\u011b"+ - "\5\71\1\0\1\71\1\u011c\17\71\1\u011d\1\u011e\10\71"+ - "\1\u011e\4\71\1\u011c\1\u011b\21\71\1\u011f\10\71\1\u011d"+ - "\1\u011f\21\71\1\0\1\71\1\0\2\71\4\0\2\71"+ - "\1\u0120\3\71\1\0\1\71\1\u0121\7\71\1\u0122\5\71"+ - "\1\u0120\17\71\1\u0122\1\u0121\56\71\1\0\1\71\1\0"+ - "\2\71\4\0\2\71\1\116\1\u0123\1\71\1\116\1\0"+ - "\2\71\1\u0124\6\71\1\u0125\5\71\2\116\1\71\1\u0126"+ - "\5\71\2\u0127\1\71\1\u0126\2\71\1\u0124\1\u0125\15\71"+ - "\1\u0128\1\116\1\u0123\4\71\1\116\16\71\1\u0128\13\71"+ - "\1\0\1\71\1\0\2\71\4\0\3\71\1\u0129\2\71"+ - "\1\0\2\71\1\u012a\6\71\1\u012b\24\71\1\u012a\1\u012b"+ - "\17\71\1\u0129\37\71\1\0\1\71\1\0\2\71\4\0"+ - "\6\71\1\0\63\71\1\u012c\2\71\1\u012d\6\71\1\u012c"+ - "\4\71\1\u012d\14\71\1\0\1\71\1\0\2\71\4\0"+ - "\1\u012e\1\u012f\1\u0130\1\71\1\u0131\1\71\1\0\16\71"+ - "\1\u0132\1\u0130\10\71\2\u0133\7\71\1\u012e\12\71\1\u012f"+ - "\1\71\1\u0134\2\71\1\u0131\2\71\1\u0134\11\71\1\u0132"+ - "\20\71\1\0\1\71\1\0\2\71\4\0\6\71\1\0"+ - "\1\71\1\116\36\71\1\116\56\71\1\0\1\71\1\0"+ - "\2\71\4\0\6\71\1\0\2\71\1\u0135\6\71\1\u0136"+ - "\24\71\1\u0135\1\u0136\12\71\1\u0137\20\71\1\u0137\23\71"+ - "\1\0\1\71\1\0\2\71\4\0\2\71\1\u0138\1\u0139"+ - "\2\71\1\0\17\71\1\u0138\32\71\1\u013a\4\71\1\u0139"+ - "\13\71\1\u013a\23\71\1\0\1\71\1\0\2\71\4\0"+ - "\2\71\1\116\1\u011f\2\71\1\0\1\71\1\u013b\7\71"+ - "\1\u013c\4\71\1\u013d\1\116\17\71\1\u013c\1\u013b\11\71"+ - "\1\u013e\3\71\1\u013f\1\u011f\1\u0140\3\71\1\u013f\6\71"+ - "\1\u013e\2\71\1\u013d\1\u0140\17\71\1\0\1\71\1\0"+ - "\2\71\4\0\4\71\1\u0141\1\71\1\0\1\71\1\116"+ - "\14\71\1\u0142\11\71\2\u0143\6\71\1\116\20\71\1\u0141"+ - "\14\71\1\u0142\20\71\1\0\1\71\1\0\2\71\4\0"+ - "\2\71\1\116\2\71\1\u0144\1\0\2\71\1\u0145\5\71"+ - "\1\116\6\71\1\116\1\u0144\2\71\1\116\12\71\1\u0145"+ - "\45\71\1\116\6\71\2\116\2\71\1\0\1\71\1\0"+ - "\2\71\4\0\3\71\1\u0146\1\71\1\116\1\0\1\71"+ - "\1\116\1\u0147\6\71\1\u0148\6\71\1\116\1\71\1\u0149"+ - "\10\71\1\u0149\2\71\1\u0147\1\u0148\1\116\15\71\1\116"+ - "\1\u0146\4\71\1\116\32\71\1\0\1\71\1\0\2\71"+ - "\4\0\6\71\1\0\2\71\1\u014a\6\71\1\u014b\4\71"+ - "\1\u014c\17\71\1\u014a\1\u014b\36\71\1\u014c\20\71\1\0"+ - "\1\71\1\0\2\71\4\0\3\71\1\u014d\2\71\1\0"+ - "\11\71\1\u014e\25\71\1\u014e\17\71\1\u014d\37\71\1\0"+ - "\1\71\1\0\2\71\4\0\6\71\1\0\2\71\1\u014f"+ - "\25\71\2\u0150\4\71\1\u014f\56\71\3\117\1\0\4\117"+ - "\1\0\126\117\25\0\1\u0151\111\0\3\122\1\0\5\122"+ - "\1\0\125\122\1\61\1\123\1\0\1\61\1\43\2\61"+ - "\4\0\6\61\1\0\115\61\21\0\1\u0152\115\0\10\134"+ - "\1\0\126\134\11\136\1\0\125\136\1\137\12\0\6\137"+ - "\1\0\3\137\2\0\7\137\1\0\7\137\1\0\2\137"+ - "\1\0\4\137\2\0\4\137\7\0\17\137\3\0\14\137"+ - "\1\0\5\137\3\0\1\u0153\3\0\1\64\2\0\1\u0154"+ - "\12\0\1\u0155\116\0\1\64\1\0\1\64\136\0\1\64"+ - "\127\0\7\u0156\1\u0157\2\u0156\1\u0158\24\u0156\1\u0159\11\u0156"+ - "\1\u015a\65\u0156\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\3\150\1\u015c\2\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\7\0\1\64\11\0\1\u015d"+ - "\115\0\1\u015e\12\0\6\u015e\1\0\1\u015e\1\u015f\1\u0160"+ - "\2\0\1\u015e\3\153\1\u015e\1\153\1\u0161\1\0\5\u015e"+ - "\1\u0162\1\153\1\0\2\u015e\1\0\3\u015e\1\u0162\1\0"+ - "\1\u0163\1\u0160\1\u015e\1\u015f\1\u015e\7\0\5\u015e\1\u0162"+ - "\5\u015e\1\u0162\3\u015e\3\0\11\u015e\1\153\2\u015e\1\0"+ - "\3\u015e\2\153\1\u015e\12\0\6\u015e\1\0\1\u015e\1\u015f"+ - "\1\u0160\2\0\1\u015e\1\u0164\2\u0165\1\u015e\1\u0165\1\u0166"+ - "\1\0\5\u015e\1\u0162\1\u0165\1\0\2\u015e\1\0\2\u015e"+ - "\1\u0167\1\u0162\1\0\1\u0163\1\u0160\1\u015e\1\u015f\1\u015e"+ - "\7\0\5\u015e\1\u0162\3\u015e\1\u0167\1\u015e\1\u0162\3\u015e"+ - "\3\0\11\u015e\1\u0165\2\u015e\1\0\3\u015e\2\u0165\7\0"+ - "\1\64\26\0\1\64\100\0\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\3\150\1\u0168\2\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\u0169\3\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\1\150\1\u016a\4\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\1\150\1\u016b\1\150\1\u016c"+ - "\12\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\1\u016d\5\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\u016e\1\u016f"+ - "\2\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\1\u0170\5\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\1\150\1\u0171\1\u0172\1\150\7\0\1\137\1\u0173"+ - "\4\150\1\u0174\10\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\1\150\1\u0175\4\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\1\u0176\1\u0177\14\150\3\0"+ - "\14\150\1\0\5\150\7\0\1\64\46\0\1\64\110\0"+ - "\3\u0163\1\0\1\u0163\10\0\1\u0163\60\0\1\u0163\6\0"+ - "\2\u0163\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\3\150\1\u0178\2\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\1\150\1\u0179\1\u017a\1\u017b\7\0"+ - "\1\137\10\150\1\u017c\3\150\1\u017d\1\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\1\150\1\u017e\2\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\u017f\3\150\7\0\1\137"+ - "\1\u0180\15\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\1\u0181"+ - "\1\150\1\u0182\3\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\1\150\1\u0183\1\150\1\u0184"+ - "\7\150\1\u0185\2\150\3\0\14\150\1\0\5\150\7\0"+ - "\1\64\62\0\1\64\44\0\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\150\1\u0186\1\u0187\1\150"+ - "\7\0\1\137\1\u0188\2\150\1\u0189\12\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\1\u018a\3\150\7\0\1\137\1\u018b\15\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\3\150\1\u018c\1\u018d"+ - "\1\150\1\0\1\137\1\150\1\0\4\150\2\0\3\150"+ - "\1\u018e\7\0\1\137\11\150\1\u018f\4\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\1\u0190\15\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\1\u0191\1\u0192\4\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\1\150\1\u0193\2\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\3\150\1\u0194\1\150\1\u0195\10\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\1\150\1\u0173\2\150\7\0\1\137"+ - "\1\u0196\15\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\150\1\u0197"+ - "\2\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\2\205\1\0\5\205\1\0\26\205\1\0\77\205\2\u0198"+ - "\1\0\35\u0198\1\u0199\43\u0198\1\u019a\32\u0198\2\211\1\0"+ - "\6\211\1\0\25\211\1\0\77\211\2\215\2\0\40\215"+ - "\1\0\4\215\1\0\25\215\1\0\7\215\1\0\27\215"+ - "\12\0\1\u019b\166\0\1\u019c\36\0\1\u019d\47\0\1\u019e"+ - "\166\0\1\u019f\203\0\1\u01a0\27\0\2\224\2\0\40\224"+ - "\1\0\32\224\1\0\7\224\1\0\27\224\12\0\1\u01a1"+ - "\166\0\1\u01a2\36\0\1\u01a3\77\0\1\u01a4\203\0\1\u01a5"+ - "\65\0\1\u01a6\100\0\2\234\2\0\40\234\1\0\4\234"+ - "\1\0\21\234\1\0\3\234\1\0\7\234\1\0\21\234"+ - "\1\0\5\234\12\0\1\u01a7\6\u01a8\1\u01a9\3\u01a8\2\0"+ - "\1\u01a8\3\0\1\u01a8\4\0\5\u01a8\5\0\4\u01a8\2\0"+ - "\4\u01a8\10\0\16\u01a8\3\0\11\u01a8\1\0\2\u01a8\1\0"+ - "\3\u01a8\44\0\1\u01aa\36\0\1\u01ab\47\0\1\u01ac\165\0"+ - "\1\u01ad\1\u01ae\15\0\1\u01af\1\u01b0\1\0\1\u01b1\10\0"+ - "\1\u01b2\1\0\1\u01b3\1\0\1\u01b4\1\u01b5\1\0\1\u01b6"+ - "\4\0\1\u01b7\70\0\1\u01b8\203\0\1\u01b9\122\0\1\u01ba"+ - "\46\0\1\u0153\3\0\1\64\127\0\2\247\1\u01bb\5\247"+ - "\1\u01bc\26\247\1\u01bd\77\247\2\u01be\1\u01bf\6\u01be\1\u01c0"+ - "\25\u01be\1\u01c1\77\u01be\7\0\1\64\2\0\1\u01c2\36\0"+ - "\1\u01c3\65\0\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\2\150\1\u01c4\3\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\u01c5\3\150\7\0\1\137"+ - "\1\u01c6\1\u01c7\1\u01c8\1\u01c9\1\150\1\u01ca\1\150\1\u01cb"+ - "\6\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\1\u01cc\5\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\150\1\u01cd"+ - "\1\u01ce\1\150\7\0\1\137\1\u01cf\2\150\1\u01d0\12\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\1\u01d1\5\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\1\u01d2\1\u01d3\2\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\2\150\1\u01d4\1\u01d5\2\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\2\150\1\u01d6\1\150\7\0\1\137\4\150"+ - "\1\u01d7\11\150\3\0\1\u01d8\13\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\1\u01d9\1\u01da\4\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\1\150\1\u01db\2\150\7\0\1\137\5\150\1\u01dc"+ - "\10\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\1\150\1\u01dd"+ - "\4\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\1\u01de\1\u01df\1\150\1\u01e0\1\150\1\u01e1"+ - "\10\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\1\u01e2\4\150\1\u01e3\10\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\1\150\1\u01e4\1\150\1\u01e5\2\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\10\150"+ - "\1\u01e6\1\u01e7\2\150\1\u01e8\1\150\3\0\1\u01e9\13\150"+ - "\1\0\5\150\7\0\1\64\11\0\1\u01ea\115\0\1\u015e"+ - "\12\0\6\u015e\1\0\1\u015e\1\u015f\1\u0160\2\0\1\u015e"+ - "\1\u0164\2\u0165\1\u015e\1\u0165\1\u0166\1\0\5\u015e\1\u0162"+ - "\1\u0165\1\0\2\u015e\1\0\2\u01eb\1\u0167\1\u0162\1\0"+ - "\1\u0163\1\u0160\1\u015e\1\u015f\1\u015e\7\0\5\u015e\1\u0162"+ - "\3\u015e\1\u0167\1\u015e\1\u0162\3\u015e\3\0\11\u015e\1\u0165"+ - "\2\u015e\1\0\3\u015e\2\u0165\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\1\u01ec\1\u01ed\4\150"+ - "\1\0\1\137\1\150\1\0\1\150\1\u01ee\2\150\2\0"+ - "\3\150\1\u01ef\7\0\1\137\7\150\1\u01f0\6\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\1\150\1\u016a\4\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\3\150\1\u016c\12\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\1\150"+ - "\1\u0171\1\u0172\1\150\7\0\1\137\1\u0173\4\150\1\u0174"+ - "\10\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\1\u01f1\5\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\150\1\u01f2"+ - "\2\150\7\0\1\137\1\u01f3\1\u01f4\3\150\1\u01f5\10\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\2\150\1\u01f6\1\150\7\0"+ - "\1\137\1\u01f7\4\150\1\u01f8\10\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\3\150\1\u0178\2\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\2\150\1\u017a\1\150\7\0\1\137"+ - "\10\150\1\u01f9\5\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\1\150\1\u017e\2\150"+ - "\2\0\3\150\1\u01fa\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\1\u0180\15\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\1\u0181\1\150\1\u01fb\3\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\1\150\1\u0183\1\150\1\u0184\7\150\1\u0185\2\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\u01fc\1\0"+ - "\3\u01fc\2\0\1\u01fc\3\137\1\u01fc\1\137\1\u01fc\1\0"+ - "\1\137\5\u01fc\1\137\1\0\1\137\1\u01fc\1\0\4\u01fc"+ - "\2\0\4\u01fc\7\0\1\137\16\u01fc\3\0\11\u01fc\1\137"+ - "\2\u01fc\1\0\3\u01fc\3\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\1\u01fd\3\150\7\0\1\137\1\u018b"+ - "\15\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\3\150\1\u01fe"+ - "\1\u018d\1\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\11\150\1\u018f\4\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\1\u0191\1\u0192\4\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\150\1\u01ff\2\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\1\u0200"+ - "\5\150\1\0\1\137\1\150\1\0\4\150\2\0\1\u0201"+ - "\1\u0202\2\150\7\0\1\137\1\u0203\4\150\1\u0204\10\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\3\150"+ - "\1\u0194\12\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\1\u0196\15\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\1\u0205\5\150\1\0\1\137\1\150\1\0\1\150\1\u0206"+ - "\2\150\2\0\4\150\7\0\1\137\7\150\1\u0207\6\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\1\u0208\5\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\1\u0209\1\u020a\2\150"+ - "\7\0\1\137\1\u020b\15\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\1\150\1\u020c\2\150\7\0\1\137\5\150\1\u020d\10\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\5\150\1\u020e"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\3\150\1\u020f"+ - "\2\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\3\150\1\u0210\10\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\1\150\1\u0211\4\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\1\u0212\5\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\u0213\3\150\7\0\1\137"+ - "\1\u0214\4\150\1\u0215\10\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\1\150\1\u0216\2\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\1\150\1\u0217\4\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\u0218\3\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\2\315\1\0\41\315"+ - "\1\0\4\315\1\0\25\315\1\0\7\315\1\0\27\315"+ - "\12\0\1\u0219\124\0\2\320\1\0\1\320\1\0\2\320"+ - "\4\0\6\320\1\0\116\320\1\321\1\0\1\320\1\43"+ - "\2\320\4\0\6\320\1\0\115\320\10\322\1\u01bc\126\322"+ - "\11\323\1\u021a\125\323\2\320\1\0\1\320\1\0\2\320"+ - "\4\0\6\320\1\70\117\320\1\0\1\320\1\0\2\320"+ - "\4\0\6\320\1\0\37\320\1\u021b\57\320\1\0\1\320"+ - "\1\0\2\320\4\0\6\320\1\0\21\320\1\u021c\75\320"+ - "\1\0\1\320\1\0\2\320\4\0\6\320\1\0\37\320"+ - "\1\u021d\55\320\12\0\1\u021e\175\0\1\u021f\100\0\6\340"+ - "\1\0\3\340\2\0\10\340\1\0\6\340\4\0\4\340"+ - "\1\0\5\340\10\0\16\340\3\0\14\340\1\0\5\340"+ - "\13\0\6\u0220\1\0\3\u0220\2\0\1\u0220\3\0\1\u0220"+ - "\1\0\2\u0220\1\0\5\u0220\4\0\5\u0220\1\0\5\u0220"+ - "\10\0\16\u0220\3\0\11\u0220\1\0\2\u0220\1\0\3\u0220"+ - "\43\0\1\u0221\1\u0222\1\u0223\1\u0224\13\0\1\u0225\1\u0226"+ - "\1\u0227\5\0\1\u0228\3\0\1\u0229\1\0\1\u022a\1\u022b"+ - "\1\u022c\7\0\1\u022d\41\0\6\u022e\1\0\3\u022e\2\0"+ - "\1\u022e\3\0\1\u022e\1\0\2\u022e\1\0\5\u022e\4\0"+ - "\5\u022e\1\0\5\u022e\10\0\16\u022e\3\0\11\u022e\1\0"+ - "\2\u022e\1\0\3\u022e\15\0\6\351\1\0\3\351\2\0"+ - "\10\351\1\0\6\351\4\0\4\351\2\0\4\351\10\0"+ - "\16\351\3\0\14\351\1\0\5\351\13\0\6\351\1\0"+ - "\3\351\2\0\1\351\3\0\1\351\1\0\2\351\1\0"+ - "\5\351\5\0\4\351\2\0\4\351\10\0\16\351\3\0"+ - "\11\351\1\0\2\351\1\0\3\351\14\0\7\362\1\0"+ - "\3\362\2\0\1\362\3\0\1\362\1\0\10\362\4\0"+ - "\1\u021f\4\362\2\0\4\362\10\0\16\362\2\0\1\370"+ - "\11\362\1\0\2\362\1\0\3\362\14\0\7\362\1\0"+ - "\3\362\2\0\1\362\3\0\1\362\1\0\10\362\5\0"+ - "\4\362\2\0\4\362\10\0\16\362\2\0\1\370\11\362"+ - "\1\0\2\362\1\0\3\362\103\0\1\u022f\62\0\1\u0230"+ - "\2\0\3\364\1\0\1\364\10\0\1\364\11\0\1\364"+ - "\1\u0231\2\0\1\u0230\12\0\1\u0232\2\0\1\u0233\1\0"+ - "\1\u0234\1\0\1\u0235\20\0\1\364\6\0\2\364\12\0"+ - "\7\362\1\0\3\362\2\0\1\362\3\364\1\362\1\364"+ - "\10\362\1\364\4\0\4\362\2\0\4\362\10\0\16\362"+ - "\2\0\1\370\11\362\1\364\2\362\1\0\3\362\2\364"+ - "\14\0\1\u0236\7\0\1\u0236\3\0\5\u0236\7\0\2\u0236"+ - "\4\0\2\u0236\1\0\1\u0236\2\0\2\u0236\14\0\1\u0236"+ - "\1\0\1\u0236\5\0\1\u0236\17\0\1\u0236\6\0\2\u0236"+ - "\2\u0237\1\0\134\u0237\12\0\1\u0238\137\0\6\u0239\1\0"+ - "\3\u0239\2\0\6\u0239\3\0\6\u0239\4\0\4\u0239\2\0"+ - "\4\u0239\10\0\16\u0239\3\0\14\u0239\1\0\5\u0239\13\0"+ - "\1\u0102\1\u023a\3\u0102\1\u023b\1\0\3\u0102\2\0\6\u0102"+ - "\3\0\2\u0102\1\u023b\3\u0102\4\0\4\u0102\2\0\4\u0102"+ - "\10\0\2\u0102\1\u023a\13\u0102\3\0\14\u0102\1\0\5\u0102"+ - "\13\0\6\u0102\1\0\3\u0102\2\0\6\u0102\3\0\6\u0102"+ - "\4\0\4\u0102\2\0\4\u0102\10\0\16\u0102\3\0\14\u0102"+ - "\1\0\5\u0102\7\0\1\u023c\16\0\1\u023c\7\0\1\u023d"+ - "\34\0\1\u023e\101\0\1\u023f\121\0\1\u0240\220\0\1\u0241"+ - "\115\0\1\u0242\116\0\1\u0243\203\0\1\u0244\27\0\2\61"+ - "\1\0\1\61\1\0\2\61\1\u023c\3\0\6\61\1\0"+ - "\4\61\1\u0245\110\61\2\71\1\0\1\71\1\0\2\71"+ - "\4\0\2\71\1\u0246\3\71\1\0\17\71\1\u0246\77\71"+ - "\1\0\1\71\1\0\2\71\4\0\6\71\1\0\11\71"+ - "\1\u0247\25\71\1\u0247\57\71\1\0\1\71\1\0\2\71"+ - "\4\0\2\71\1\u0248\3\71\1\0\1\u011a\16\71\1\u0248"+ - "\33\71\1\u011a\43\71\1\0\1\71\1\0\2\71\4\0"+ - "\1\71\1\u0249\1\u024a\3\71\1\0\1\71\1\u024b\15\71"+ - "\1\u024a\20\71\1\u024b\13\71\1\u0249\42\71\1\0\1\71"+ - "\1\0\2\71\4\0\6\71\1\0\63\71\1\u024c\11\71"+ - "\1\u024c\21\71\1\0\1\71\1\0\2\71\4\0\4\71"+ - "\1\116\1\71\1\0\30\71\2\116\27\71\1\116\35\71"+ - "\1\0\1\71\1\0\2\71\4\0\6\71\1\0\16\71"+ - "\1\u024d\57\71\1\u024d\20\71\1\0\1\71\1\0\2\71"+ - "\4\0\6\71\1\0\11\71\1\u024e\25\71\1\u024e\57\71"+ - "\1\0\1\71\1\0\2\71\4\0\5\71\1\u024f\1\0"+ - "\20\71\1\u024f\76\71\1\0\1\71\1\0\2\71\4\0"+ - "\6\71\1\0\21\71\1\u0250\52\71\1\u0250\22\71\1\0"+ - "\1\71\1\0\2\71\4\0\4\71\1\u0249\1\71\1\0"+ - "\21\71\1\u0251\37\71\1\u0249\12\71\1\u0251\22\71\1\0"+ - "\1\71\1\0\2\71\4\0\6\71\1\0\1\71\1\u0252"+ - "\36\71\1\u0252\15\71\1\u024f\4\71\1\u0253\1\u024f\10\71"+ - "\1\u0253\21\71\1\0\1\71\1\0\2\71\4\0\6\71"+ - "\1\0\1\71\1\u024f\36\71\1\u024f\56\71\1\0\1\71"+ - "\1\0\2\71\4\0\3\71\1\u0254\2\71\1\0\57\71"+ - "\1\u0254\37\71\1\0\1\71\1\0\2\71\4\0\6\71"+ - "\1\0\11\71\1\u0255\25\71\1\u0255\57\71\1\0\1\71"+ - "\1\0\2\71\4\0\1\116\3\71\1\u0256\1\71\1\0"+ - "\41\71\1\116\17\71\1\u0256\35\71\1\0\1\71\1\0"+ - "\2\71\4\0\2\71\1\u0257\3\71\1\0\17\71\1\u0257"+ - "\77\71\1\0\1\71\1\0\2\71\4\0\6\71\1\0"+ - "\60\71\1\116\16\71\1\116\17\71\1\0\1\71\1\0"+ - "\2\71\4\0\6\71\1\0\2\71\1\116\33\71\1\116"+ - "\13\71\1\u0258\20\71\1\u0258\23\71\1\0\1\71\1\0"+ - "\2\71\4\0\6\71\1\0\11\71\1\u0259\25\71\1\u0259"+ - "\57\71\1\0\1\71\1\0\2\71\4\0\2\71\1\u025a"+ - "\3\71\1\0\17\71\1\u025a\77\71\1\0\1\71\1\0"+ - "\2\71\4\0\5\71\1\u011a\1\0\20\71\1\u011a\42\71"+ - "\1\u024f\11\71\1\u024f\21\71\1\0\1\71\1\0\2\71"+ - "\4\0\6\71\1\0\32\71\1\u025b\27\71\1\u025b\34\71"+ - "\1\0\1\71\1\0\2\71\4\0\6\71\1\0\30\71"+ - "\2\u011a\65\71\1\0\1\71\1\0\2\71\4\0\6\71"+ - "\1\0\52\71\1\u025c\20\71\1\u025c\23\71\1\0\1\71"+ - "\1\0\2\71\4\0\6\71\1\0\52\71\1\u013e\20\71"+ - "\1\u013e\23\71\1\0\1\71\1\0\2\71\4\0\6\71"+ - "\1\0\2\71\1\u025d\33\71\1\u025d\60\71\1\0\1\71"+ - "\1\0\2\71\4\0\6\71\1\0\21\71\1\u025e\52\71"+ - "\1\u025e\22\71\1\0\1\71\1\0\2\71\4\0\6\71"+ - "\1\0\60\71\1\u025f\16\71\1\u025f\17\71\1\0\1\71"+ - "\1\0\2\71\4\0\6\71\1\0\1\u0260\27\71\2\u0261"+ - "\21\71\1\u0260\43\71\1\0\1\71\1\0\2\71\4\0"+ - "\6\71\1\0\30\71\2\u0262\65\71\1\0\1\71\1\0"+ - "\2\71\4\0\6\71\1\0\2\71\1\u0263\33\71\1\u0263"+ - "\60\71\1\0\1\71\1\0\2\71\4\0\3\71\1\u0264"+ - "\2\71\1\0\57\71\1\u0264\37\71\1\0\1\71\1\0"+ - "\2\71\4\0\2\71\1\u0265\3\71\1\0\17\71\1\u0265"+ - "\77\71\1\0\1\71\1\0\2\71\4\0\5\71\1\u0266"+ - "\1\0\2\71\1\u0267\15\71\1\u0266\15\71\1\u0267\60\71"+ - "\1\0\1\71\1\0\2\71\4\0\4\71\1\u0268\1\71"+ - "\1\0\61\71\1\u0268\35\71\1\0\1\71\1\0\2\71"+ - "\4\0\6\71\1\0\56\71\1\u0269\5\71\1\u0269\32\71"+ - "\1\0\1\71\1\0\2\71\4\0\6\71\1\0\30\71"+ - "\2\u014e\65\71\1\0\1\71\1\0\2\71\4\0\6\71"+ - "\1\0\56\71\1\u026a\5\71\1\u026a\32\71\1\0\1\71"+ - "\1\0\2\71\4\0\1\u026b\5\71\1\0\41\71\1\u026b"+ - "\55\71\1\0\1\71\1\0\2\71\4\0\6\71\1\0"+ - "\66\71\1\116\13\71\1\116\14\71\1\0\1\71\1\0"+ - "\2\71\4\0\1\u026c\5\71\1\0\1\71\1\u011c\1\u026d"+ - "\17\71\1\u026e\5\71\2\u014e\1\71\1\u026e\2\71\1\u026d"+ - "\1\71\1\u011c\1\u026c\55\71\1\0\1\71\1\0\2\71"+ - "\4\0\6\71\1\0\11\71\1\u026f\25\71\1\u026f\57\71"+ - "\1\0\1\71\1\0\2\71\4\0\6\71\1\0\2\71"+ - "\1\u0270\33\71\1\u0270\21\71\1\u0271\16\71\1\u0271\17\71"+ - "\1\0\1\71\1\0\2\71\4\0\2\71\1\u0272\3\71"+ - "\1\0\17\71\1\u0272\1\71\1\u026b\30\71\1\u0250\20\71"+ - "\1\u0250\1\u026b\22\71\1\0\1\71\1\0\2\71\4\0"+ - "\3\71\1\u0273\2\71\1\0\52\71\1\u0274\4\71\1\u0273"+ - "\13\71\1\u0274\23\71\1\0\1\71\1\0\2\71\4\0"+ - "\1\u0275\5\71\1\0\41\71\1\u0275\55\71\1\0\1\71"+ - "\1\0\2\71\4\0\5\71\1\u0276\1\0\20\71\1\u0276"+ - "\76\71\1\0\1\71\1\0\2\71\4\0\6\71\1\0"+ - "\56\71\1\u0277\5\71\1\u0277\32\71\1\0\1\71\1\0"+ - "\2\71\4\0\6\71\1\0\52\71\1\116\20\71\1\116"+ - "\23\71\1\0\1\71\1\0\2\71\4\0\1\u0278\5\71"+ - "\1\0\41\71\1\u0278\55\71\1\0\1\71\1\0\2\71"+ - "\4\0\5\71\1\u0279\1\0\20\71\1\u0279\76\71\1\0"+ - "\1\71\1\0\2\71\4\0\5\71\1\u027a\1\0\20\71"+ - "\1\u027a\76\71\1\0\1\71\1\0\2\71\4\0\6\71"+ - "\1\0\105\71\1\u024b\3\71\1\u024b\5\71\1\0\1\71"+ - "\1\0\2\71\4\0\6\71\1\0\63\71\1\u027b\11\71"+ - "\1\u027b\21\71\1\0\1\71\1\0\2\71\4\0\6\71"+ - "\1\0\11\71\1\u027c\25\71\1\u027c\57\71\1\0\1\71"+ - "\1\0\2\71\4\0\2\71\1\116\3\71\1\0\11\71"+ - "\1\u027d\5\71\1\116\17\71\1\u027d\26\71\1\116\13\71"+ - "\1\116\14\71\1\0\1\71\1\0\2\71\4\0\5\71"+ - "\1\u027e\1\0\1\71\1\116\16\71\1\u027e\17\71\1\116"+ - "\56\71\1\0\1\71\1\0\2\71\4\0\5\71\1\u027f"+ - "\1\0\20\71\1\u027f\76\71\1\0\1\71\1\0\2\71"+ - "\4\0\6\71\1\0\21\71\1\116\52\71\1\116\22\71"+ - "\1\0\1\71\1\0\2\71\4\0\5\71\1\u0280\1\0"+ - "\20\71\1\u0280\1\u0281\52\71\1\u0281\22\71\1\0\1\71"+ - "\1\0\2\71\4\0\2\71\1\u0282\1\71\1\116\1\71"+ - "\1\0\17\71\1\u0282\41\71\1\116\35\71\1\0\1\71"+ - "\1\0\2\71\4\0\6\71\1\0\1\71\1\u0283\36\71"+ - "\1\u0283\56\71\1\0\1\71\1\0\2\71\4\0\6\71"+ - "\1\0\56\71\1\u0284\5\71\1\u0284\32\71\1\0\1\71"+ - "\1\0\2\71\4\0\2\71\1\116\3\71\1\0\17\71"+ - "\1\116\77\71\1\0\1\71\1\0\2\71\4\0\6\71"+ - "\1\0\1\u0285\52\71\1\u0285\43\71\1\0\1\71\1\0"+ - "\2\71\4\0\6\71\1\0\56\71\1\116\5\71\1\116"+ - "\30\71\7\0\1\u0286\16\0\1\u0286\123\0\1\u0287\47\0"+ - "\1\u0287\62\0\1\u023c\16\0\1\u023c\110\0\12\u0156\1\u0288"+ - "\24\u0156\1\u0159\101\u0156\1\0\134\u0156\51\0\1\u0289\65\0"+ - "\1\137\12\0\6\137\1\0\3\137\2\0\7\137\1\0"+ - "\1\137\1\u028a\5\137\1\0\2\137\1\0\4\137\2\0"+ - "\4\137\7\0\17\137\3\0\14\137\1\0\6\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\4\150"+ - "\1\u028b\1\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\7\0\1\64\11\0\1\144\115\0\1\u015e\12\0\6\u015e"+ - "\1\0\3\u015e\2\0\7\u015e\1\0\7\u015e\1\0\2\u015e"+ - "\1\0\4\u015e\2\0\4\u015e\7\0\17\u015e\3\0\14\u015e"+ - "\1\0\6\u015e\12\0\6\u015e\1\0\3\u015e\2\0\1\u015e"+ - "\3\u028c\1\u015e\1\u028c\1\u015e\1\u028d\6\u015e\1\u028c\1\0"+ - "\2\u015e\1\0\4\u015e\1\u028d\1\0\4\u015e\7\0\17\u015e"+ - "\3\0\11\u015e\1\u028c\2\u015e\1\0\3\u015e\2\u028c\1\u015e"+ - "\12\0\6\u015e\1\0\3\u015e\2\0\1\u015e\3\u028e\1\u015e"+ - "\1\u028e\1\u0161\1\0\6\u015e\1\u028e\1\0\2\u015e\1\0"+ - "\4\u015e\2\0\4\u015e\7\0\17\u015e\3\0\11\u015e\1\u028e"+ - "\2\u015e\1\0\3\u015e\2\u028e\1\u015e\12\0\6\u015e\1\0"+ - "\2\u015e\1\u0160\2\0\1\u015e\3\u0163\1\u015e\1\u0163\1\u015e"+ - "\1\0\5\u015e\1\u0162\1\u0163\1\0\2\u015e\1\0\3\u015e"+ - "\1\u0162\2\0\1\u0160\3\u015e\7\0\5\u015e\1\u0162\5\u015e"+ - "\1\u0162\3\u015e\3\0\11\u015e\1\u0163\2\u015e\1\0\3\u015e"+ - "\2\u0163\1\u015e\12\0\6\u015e\1\0\2\u015e\1\u0160\2\0"+ - "\1\u015e\3\u0164\1\u015e\1\u0164\1\u015e\1\0\5\u015e\1\u0162"+ - "\1\u0164\1\0\2\u015e\1\0\3\u015e\1\u0162\1\0\1\u0163"+ - "\1\u0160\3\u015e\7\0\5\u015e\1\u0162\5\u015e\1\u0162\3\u015e"+ - "\3\0\11\u015e\1\u0164\2\u015e\1\0\3\u015e\2\u0164\1\u015e"+ - "\12\0\6\u015e\1\0\1\u015e\1\u028f\1\u0160\2\0\1\u015e"+ - "\1\u0164\2\u0165\1\u015e\1\u0165\1\u0166\1\0\5\u015e\1\u0162"+ - "\1\u0165\1\0\2\u015e\1\0\3\u015e\1\u0162\1\0\1\u0163"+ - "\1\u0160\1\u015e\1\u028f\1\u015e\7\0\5\u015e\1\u0162\5\u015e"+ - "\1\u0162\3\u015e\3\0\11\u015e\1\u0165\2\u015e\1\0\3\u015e"+ - "\2\u0165\1\u015e\12\0\6\u015e\1\0\3\u015e\2\0\2\u015e"+ - "\2\u0290\1\u015e\1\u0290\1\u0166\1\0\6\u015e\1\u0290\1\0"+ - "\2\u015e\1\0\4\u015e\2\0\4\u015e\7\0\17\u015e\3\0"+ - "\11\u015e\1\u0290\2\u015e\1\0\3\u015e\2\u0290\1\u015e\12\0"+ - "\1\u015e\1\u0291\4\u015e\1\0\2\u015e\1\u0291\2\0\1\u015e"+ - "\5\u0291\1\u015e\1\0\5\u015e\2\u0291\1\0\2\u015e\1\0"+ - "\2\u0291\1\u015e\1\u0291\2\0\2\u0291\2\u015e\7\0\3\u015e"+ - "\1\u0291\1\u015e\1\u0291\5\u015e\1\u0291\3\u015e\3\0\11\u015e"+ - "\1\u0291\2\u015e\1\0\3\u015e\2\u0291\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\1\u0292\3\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\2\150"+ - "\1\u0293\3\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\1\u0294\5\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\1\150\1\u0295\2\150\7\0\1\137\1\150\1\u018d"+ - "\14\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\7\150\1\u0296\6\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\1\150\1\u0297\4\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\5\150\1\u0298\10\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\2\150\1\u0299\1\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\13\150\1\u018d\2\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\2\150\1\u029a\3\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\3\150\1\u029b\2\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\2\150\1\u029c\1\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\1\u029d\15\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\1\150"+ - "\1\u018d\4\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\3\150\1\u029e\2\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\1\u029f\3\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\1\u02a0\15\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\2\150\1\u02a1\3\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\1\u02a2"+ - "\5\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\2\150\1\u02a3\13\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\3\150\1\u02a4\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\2\150\1\u02a5\13\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\2\150\1\u02a6\3\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\7\150\1\u02a7\6\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\1\150\1\u02a8\2\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\3\150\1\u02a9\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\2\150\1\u02aa\3\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\3\150\1\u02ab"+ - "\2\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\7\150\1\u02ac\6\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\1\150\1\u02ad\2\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\3\150\1\u02ae\2\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\1\u02af\15\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\5\150\1\u02b0\10\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\2\150\1\u02b1\3\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\3\150\1\u02a4\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\1\150\1\u02b2\2\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\3\150\1\u02b3"+ - "\2\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\1\150"+ - "\1\u02b4\2\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\4\150\1\u02b5\1\150\1\0\1\137\1\150"+ - "\1\0\1\150\1\u02b6\2\150\2\0\2\150\1\u02b7\1\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\1\u02b8\5\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\2\150\1\u02b9\3\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\3\150\1\u02ba\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\3\150\1\u02bb\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\1\150\1\u02bc\12\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\7\150\1\u02bd\6\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\2\150\1\u02be\3\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\1\150\1\u02bf\2\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\1\u02c0"+ - "\4\150\1\u02c1\10\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\1\150\1\u02c2\4\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\2\150\1\u02c3\13\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\5\150\1\u02c4"+ - "\10\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\2\150\1\u02c5"+ - "\3\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\2\150"+ - "\1\u02c6\1\150\7\0\1\137\5\150\1\u02c7\10\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\1\150\1\u018d\12\150\1\0\5\150\14\0\1\u02c8\7\0"+ - "\1\u02c8\3\0\5\u02c8\7\0\2\u02c8\4\0\2\u02c8\1\0"+ - "\1\u02c8\2\0\2\u02c8\14\0\1\u02c8\1\0\1\u02c8\5\0"+ - "\1\u02c8\17\0\1\u02c8\6\0\2\u02c8\14\0\1\u02c9\7\0"+ - "\1\u02c9\3\0\5\u02c9\7\0\2\u02c9\4\0\2\u02c9\1\0"+ - "\1\u02c9\2\0\2\u02c9\14\0\1\u02c9\1\0\1\u02c9\5\0"+ - "\1\u02c9\17\0\1\u02c9\6\0\2\u02c9\13\0\1\u02ca\47\0"+ - "\1\u02ca\156\0\1\u02cb\115\0\1\u02cc\116\0\1\u02cd\203\0"+ - "\1\u02ce\42\0\1\u02cf\47\0\1\u02cf\156\0\1\u02d0\115\0"+ - "\1\u02d1\116\0\1\u02d2\203\0\1\u02d3\54\0\1\u02d4\124\0"+ - "\6\u01a8\1\u01a9\3\u01a8\2\0\1\u01a8\3\0\1\u01a8\4\0"+ - "\5\u01a8\5\0\4\u01a8\2\0\4\u01a8\10\0\16\u01a8\3\0"+ - "\11\u01a8\1\0\2\u01a8\1\0\3\u01a8\2\0\21\u01a8\1\u01a9"+ - "\115\u01a8\103\0\1\u02d5\115\0\1\u02d6\134\0\1\u02d7\116\0"+ - "\1\u02d8\33\0\1\u02d9\2\0\1\u02da\143\0\1\u02db\72\0"+ - "\1\u02dc\156\0\1\u02dd\20\0\1\u02de\110\0\1\u02df\144\0"+ - "\1\u02e0\135\0\1\u02e1\121\0\1\u02e2\154\0\1\u02e3\135\0"+ - "\1\u02e4\120\0\1\u02e5\203\0\1\u02e6\111\0\1\u02e7\13\0"+ - "\1\u02e8\1\0\1\u02e9\1\u02ea\6\0\1\u02eb\26\0\10\u01bb"+ - "\1\u02ec\26\u01bb\1\u02ed\101\u01bb\1\u02ee\5\u01bb\1\u02ef\1\247"+ - "\17\u01bb\2\247\1\u01bb\1\247\2\u01bb\1\247\1\u02f0\5\247"+ - "\5\u01bb\1\247\52\u01bb\1\247\6\u01bb\2\247\2\u02f1\1\u02f2"+ - "\6\u02f1\1\u021a\125\u02f1\11\u02f2\1\u021a\125\u02f2\2\u02f1\1\u02f2"+ - "\5\u02f1\1\u01be\1\u02f3\17\u02f1\2\u02f4\1\u02f1\1\u02f5\2\u02f1"+ - "\1\u01be\1\u02f6\4\u01be\1\u02f4\5\u02f1\1\u01be\52\u02f1\1\u02f5"+ - "\6\u02f1\2\u02f5\2\u01c2\1\0\134\u01c2\51\0\1\u02f7\65\0"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\1\150\1\u02f8\4\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\1\150\1\u02f9\2\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\1\150\1\u02fa\1\u02fb"+ - "\3\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\2\150\1\u02fc\13\150\3\0\14\150\1\0"+ - "\1\u02fd\4\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\1\150\1\u02fe\4\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\3\150\1\u02ff\2\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\3\150\1\u0300"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\1\150"+ - "\1\u0301\2\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\1\u0302\15\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\11\150\1\u0303\4\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\2\150\1\u0304\1\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\1\150"+ - "\1\u0305\4\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\2\150\1\u0306\1\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\1\150\1\u0307\2\150\7\0\1\137\1\u0308"+ - "\15\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\3\150\1\u0309"+ - "\2\150\1\0\1\137\1\150\1\0\4\150\2\0\2\150"+ - "\1\u030a\1\150\7\0\1\137\11\150\1\u030b\4\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\1\150\1\u030c\2\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\3\150\1\u030d"+ - "\2\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\1\150"+ - "\1\u030e\1\150\1\u030f\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\3\150\1\u0310\2\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\u0311\3\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\2\150\1\u0312"+ - "\3\150\1\0\1\137\1\150\1\0\4\150\2\0\3\150"+ - "\1\u0313\7\0\1\137\2\150\1\u0314\1\u0315\1\u0316\2\150"+ - "\1\u0317\4\150\1\u0318\1\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\2\150\1\u0319\1\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\1\u031a\3\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\2\150"+ - "\1\u031b\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\3\150\1\u031c\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\1\u031d\4\150\1\u031e\10\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\2\150\1\u031f\13\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\7\150\1\u0320\6\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\u0321\3\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\1\u0322\15\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\7\150\1\u0323\6\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\1\150\1\u0324\4\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\11\150\1\u0325\4\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\3\150\1\u0326\2\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\2\150\1\u0327\13\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\3\150\1\u0328\2\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\3\150\1\u0329\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\1\150\1\u032a\4\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\1\u032b\5\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\2\150"+ - "\1\u032c\3\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\2\150\1\u032d\13\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\7\150\1\u032e\6\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\u032f\3\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\3\150\1\u0330\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\u015e\12\0"+ - "\6\u015e\1\0\3\u015e\2\0\2\u015e\2\u0331\3\u015e\1\0"+ - "\7\u015e\1\0\2\u015e\1\0\4\u015e\2\0\4\u015e\7\0"+ - "\17\u015e\3\0\14\u015e\1\0\5\u015e\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\2\150\1\u0332"+ - "\3\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\1\150\1\u0333\4\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\5\150\1\u0334\10\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\3\150\1\u0335\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\3\150\1\u0336\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\7\150\1\u0337\6\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\4\150\1\u0338\1\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\3\150\1\u0339\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\1\u033a\15\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\2\150\1\u033b\3\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\2\150\1\u033c"+ - "\3\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\1\u033d\5\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\1\u033e\15\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\1\150\1\u033f\4\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\2\150\1\u0340\1\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\2\150\1\u02a6"+ - "\3\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\3\150"+ - "\1\u0341\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\1\150\1\u0342\4\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\1\150\1\u02ad\2\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\u01fc\1\0"+ - "\3\u01fc\2\0\7\u01fc\1\0\1\u0343\6\u01fc\1\0\1\137"+ - "\1\u01fc\1\0\4\u01fc\2\0\4\u01fc\7\0\1\137\16\u01fc"+ - "\3\0\14\u01fc\1\0\5\u01fc\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\4\150\1\u02b5\1\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\2\150\1\u02c3\13\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\7\150\1\u0344\6\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\1\u0345\4\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\2\150\1\u0346\3\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\1\u0347\5\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\2\150\1\u0348\13\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\2\150\1\u0349\3\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\3\150\1\u034a\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\1\150\1\u034b\3\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\2\150\1\u034c"+ - "\3\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\2\150"+ - "\1\u034d\1\150\7\0\1\137\11\150\1\u034e\4\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\6\150\1\u034f"+ - "\7\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\14\150\1\u0350\1\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\1\u0351\1\u0352\4\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\2\150\1\u0353\3\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\2\150\1\u0354\3\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\7\150\1\u0355\6\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\3\150"+ - "\1\u0356\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\3\150\1\u0357"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\3\150\1\u0358\7\0\1\137\2\150\1\u0359\12\150"+ - "\1\u035a\3\0\14\150\1\0\5\150\1\137\12\0\3\150"+ - "\1\u035b\2\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\1\u035c"+ - "\3\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\1\u0345\3\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\1\150\1\u035d\4\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\2\150\1\u035e"+ - "\13\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\5\150\1\u035f\10\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\1\150\1\u0360\4\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\3\150\1\u0361\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\5\150\1\u0362\10\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\150\1\u0363\2\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\2\320\1\0"+ - "\1\320\1\0\2\320\4\0\6\320\1\0\60\320\1\u0364"+ - "\36\320\1\0\1\320\1\0\2\320\4\0\6\320\1\0"+ - "\54\320\1\u0365\42\320\1\0\1\320\1\0\2\320\4\0"+ - "\6\320\1\0\60\320\1\u0366\34\320\13\0\1\u0367\47\0"+ - "\1\u0367\66\0\6\u0220\1\0\3\u0220\2\0\10\u0220\1\0"+ - "\6\u0220\4\0\4\u0220\1\0\5\u0220\10\0\16\u0220\3\0"+ - "\14\u0220\1\0\5\u0220\74\0\1\u0368\123\0\1\u0369\117\0"+ - "\1\u036a\31\0\1\u036b\136\0\1\u036c\4\0\1\u036d\100\0"+ - "\1\u036e\41\0\1\u036f\127\0\1\u0370\121\0\1\u0371\17\0"+ - "\1\u0372\101\0\1\u0373\6\0\1\u0374\5\0\1\u0375\120\0"+ - "\1\u0376\172\0\1\u0377\133\0\1\u0378\143\0\1\u0379\136\0"+ - "\1\u037a\50\0\6\u022e\1\0\3\u022e\2\0\10\u022e\1\0"+ - "\6\u022e\4\0\4\u022e\1\0\5\u022e\10\0\16\u022e\3\0"+ - "\14\u022e\1\0\5\u022e\105\0\1\u037b\135\0\2\u0230\136\0"+ - "\1\u0230\74\0\1\u0230\135\0\1\u0230\33\0\1\u0230\5\0"+ - "\1\u0230\115\0\1\u0230\21\0\1\u0230\44\0\2\u0102\1\u037c"+ - "\3\u0102\1\0\3\u0102\2\0\6\u0102\3\0\1\u0102\1\u037c"+ - "\4\u0102\4\0\4\u0102\2\0\4\u0102\10\0\16\u0102\3\0"+ - "\14\u0102\1\0\5\u0102\13\0\6\u0102\1\0\1\u037d\2\u0102"+ - "\2\0\6\u0102\3\0\6\u0102\4\0\4\u0102\2\0\4\u0102"+ - "\10\0\1\u0102\1\u037d\14\u0102\3\0\14\u0102\1\0\5\u0102"+ - "\36\0\1\u037e\136\0\1\u037f\170\0\1\u0380\126\0\1\u0241"+ - "\161\0\1\u0381\112\0\1\u0382\57\0\2\71\1\0\1\71"+ - "\1\0\2\71\4\0\3\71\1\u0383\2\71\1\0\57\71"+ - "\1\u0383\37\71\1\0\1\71\1\0\2\71\4\0\1\71"+ - "\1\u0260\4\71\1\0\21\71\1\116\32\71\1\u0260\17\71"+ - "\1\116\22\71\1\0\1\71\1\0\2\71\4\0\3\71"+ - "\1\u0384\2\71\1\0\52\71\1\u0385\4\71\1\u0384\13\71"+ - "\1\u0385\23\71\1\0\1\71\1\0\2\71\4\0\5\71"+ - "\1\u0386\1\0\20\71\1\u0386\76\71\1\0\1\71\1\0"+ - "\2\71\4\0\6\71\1\0\66\71\1\u0260\13\71\1\u0260"+ - "\14\71\1\0\1\71\1\0\2\71\4\0\6\71\1\0"+ - "\2\71\1\u0387\33\71\1\u0387\60\71\1\0\1\71\1\0"+ - "\2\71\4\0\4\71\1\116\1\71\1\0\61\71\1\116"+ - "\35\71\1\0\1\71\1\0\2\71\4\0\2\71\1\u0388"+ - "\3\71\1\0\17\71\1\u0388\77\71\1\0\1\71\1\0"+ - "\2\71\4\0\6\71\1\0\1\71\1\u027b\36\71\1\u027b"+ - "\56\71\1\0\1\71\1\0\2\71\4\0\6\71\1\0"+ - "\2\71\1\116\33\71\1\116\60\71\1\0\1\71\1\0"+ - "\2\71\4\0\5\71\1\u0260\1\0\20\71\1\u0260\76\71"+ - "\1\0\1\71\1\0\2\71\4\0\6\71\1\0\66\71"+ - "\1\u0389\13\71\1\u0389\14\71\1\0\1\71\1\0\2\71"+ - "\4\0\6\71\1\0\60\71\1\u038a\16\71\1\u038a\17\71"+ - "\1\0\1\71\1\0\2\71\4\0\6\71\1\0\63\71"+ - "\1\u038b\11\71\1\u038b\21\71\1\0\1\71\1\0\2\71"+ - "\4\0\6\71\1\0\21\71\1\u038c\52\71\1\u038c\22\71"+ - "\1\0\1\71\1\0\2\71\4\0\6\71\1\0\1\u0260"+ - "\52\71\1\u0260\43\71\1\0\1\71\1\0\2\71\4\0"+ - "\6\71\1\0\16\71\1\u026b\57\71\1\u026b\20\71\1\0"+ - "\1\71\1\0\2\71\4\0\6\71\1\0\11\71\1\u038d"+ - "\25\71\1\u038d\57\71\1\0\1\71\1\0\2\71\4\0"+ - "\6\71\1\0\60\71\1\u026a\16\71\1\u026a\17\71\1\0"+ - "\1\71\1\0\2\71\4\0\3\71\1\u038e\2\71\1\0"+ - "\57\71\1\u038e\37\71\1\0\1\71\1\0\2\71\4\0"+ - "\6\71\1\0\11\71\1\u0272\25\71\1\u0272\57\71\1\0"+ - "\1\71\1\0\2\71\4\0\5\71\1\u038f\1\0\20\71"+ - "\1\u038f\76\71\1\0\1\71\1\0\2\71\4\0\6\71"+ - "\1\0\52\71\1\u026b\20\71\1\u026b\23\71\1\0\1\71"+ - "\1\0\2\71\4\0\6\71\1\0\11\71\1\u0150\25\71"+ - "\1\u0150\57\71\1\0\1\71\1\0\2\71\4\0\6\71"+ - "\1\0\67\71\1\116\10\71\1\116\16\71\1\0\1\71"+ - "\1\0\2\71\4\0\6\71\1\0\2\71\1\u0390\33\71"+ - "\1\u0390\60\71\1\0\1\71\1\0\2\71\4\0\6\71"+ - "\1\0\2\71\1\u014e\33\71\1\u014e\60\71\1\0\1\71"+ - "\1\0\2\71\4\0\6\71\1\0\2\71\1\u027b\33\71"+ - "\1\u027b\60\71\1\0\1\71\1\0\2\71\4\0\6\71"+ - "\1\0\2\71\1\u0150\33\71\1\u0150\60\71\1\0\1\71"+ - "\1\0\2\71\4\0\6\71\1\0\21\71\1\u0391\52\71"+ - "\1\u0391\22\71\1\0\1\71\1\0\2\71\4\0\6\71"+ - "\1\0\56\71\1\u024f\5\71\1\u024f\32\71\1\0\1\71"+ - "\1\0\2\71\4\0\6\71\1\0\52\71\1\u0392\20\71"+ - "\1\u0392\23\71\1\0\1\71\1\0\2\71\4\0\3\71"+ - "\1\u0393\2\71\1\0\57\71\1\u0393\37\71\1\0\1\71"+ - "\1\0\2\71\4\0\6\71\1\0\11\71\1\116\25\71"+ - "\1\116\57\71\1\0\1\71\1\0\2\71\4\0\6\71"+ - "\1\0\1\71\1\u0394\36\71\1\u0394\56\71\1\0\1\71"+ - "\1\0\2\71\4\0\3\71\1\u013f\2\71\1\0\57\71"+ - "\1\u013f\37\71\1\0\1\71\1\0\2\71\4\0\2\71"+ - "\1\u0395\3\71\1\0\17\71\1\u0395\77\71\1\0\1\71"+ - "\1\0\2\71\4\0\5\71\1\116\1\0\20\71\1\116"+ - "\76\71\1\0\1\71\1\0\2\71\4\0\1\71\1\u010e"+ - "\4\71\1\0\54\71\1\u010e\42\71\1\0\1\71\1\0"+ - "\2\71\4\0\6\71\1\0\63\71\1\u0396\11\71\1\u0396"+ - "\21\71\1\0\1\71\1\0\2\71\4\0\2\71\1\u0397"+ - "\3\71\1\0\17\71\1\u0397\77\71\1\0\1\71\1\0"+ - "\2\71\4\0\6\71\1\0\63\71\1\u0398\11\71\1\u0398"+ - "\21\71\1\0\1\71\1\0\2\71\4\0\6\71\1\0"+ - "\1\71\1\u0399\36\71\1\u0399\56\71\1\0\1\71\1\0"+ - "\2\71\4\0\6\71\1\0\16\71\1\u039a\57\71\1\u039a"+ - "\20\71\1\0\1\71\1\0\2\71\4\0\6\71\1\0"+ - "\63\71\1\116\11\71\1\116\21\71\1\0\1\71\1\0"+ - "\2\71\4\0\1\71\1\u039b\4\71\1\0\54\71\1\u039b"+ - "\42\71\1\0\1\71\1\0\2\71\4\0\6\71\1\0"+ - "\2\71\1\u039c\33\71\1\u039c\60\71\1\0\1\71\1\0"+ - "\2\71\4\0\5\71\1\u039d\1\0\20\71\1\u039d\76\71"+ - "\1\0\1\71\1\0\2\71\4\0\6\71\1\0\1\116"+ - "\52\71\1\116\43\71\1\0\1\71\1\0\2\71\4\0"+ - "\6\71\1\0\52\71\1\u039e\20\71\1\u039e\23\71\1\0"+ - "\1\71\1\0\2\71\4\0\3\71\1\u039d\2\71\1\0"+ - "\57\71\1\u039d\1\u038a\16\71\1\u038a\17\71\1\0\1\71"+ - "\1\0\2\71\4\0\4\71\1\u0256\1\71\1\0\61\71"+ - "\1\u0256\35\71\1\0\1\71\1\0\2\71\4\0\6\71"+ - "\1\0\56\71\1\u039f\5\71\1\u039f\32\71\1\0\1\71"+ - "\1\0\2\71\4\0\6\71\1\0\1\71\1\u03a0\36\71"+ - "\1\u03a0\56\71\1\0\1\71\1\0\2\71\4\0\6\71"+ - "\1\0\11\71\1\u03a1\25\71\1\u03a1\57\71\1\0\1\71"+ - "\1\0\2\71\4\0\6\71\1\0\11\71\1\u03a2\25\71"+ - "\1\u03a2\57\71\1\0\1\71\1\0\2\71\4\0\6\71"+ - "\1\0\2\71\1\u014e\6\71\1\116\24\71\1\u014e\1\116"+ - "\57\71\1\0\1\71\1\0\2\71\4\0\6\71\1\0"+ - "\16\71\1\116\57\71\1\116\20\71\1\0\1\71\1\0"+ - "\2\71\4\0\6\71\1\0\67\71\1\116\10\71\1\116"+ - "\1\u03a3\6\71\1\u03a3\6\71\1\0\1\71\1\0\2\71"+ - "\4\0\5\71\1\u03a4\1\0\20\71\1\u03a4\76\71\1\0"+ - "\1\71\1\0\2\71\4\0\6\71\1\0\2\71\1\u013f"+ - "\33\71\1\u013f\60\71\1\0\1\71\1\0\2\71\4\0"+ - "\6\71\1\0\60\71\1\u03a5\16\71\1\u03a5\15\71\14\0"+ - "\1\u03a6\61\0\1\u03a6\141\0\2\u0288\2\0\1\u0288\43\0"+ - "\1\u03a7\124\0\1\137\12\0\1\137\1\u03a8\4\137\1\0"+ - "\2\137\1\u03a8\2\0\1\137\5\u03a8\1\137\1\0\5\137"+ - "\2\u03a8\1\0\2\137\1\0\2\u03a8\1\137\1\u03a8\2\0"+ - "\2\u03a8\2\137\7\0\3\137\1\u03a8\1\137\1\u03a8\5\137"+ - "\1\u03a8\3\137\3\0\11\137\1\u03a8\2\137\1\0\3\137"+ - "\2\u03a8\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\5\150\1\u03a9\10\150\3\0"+ - "\14\150\1\0\5\150\1\u015e\12\0\6\u015e\1\0\3\u015e"+ - "\2\0\1\u015e\3\u028c\1\u015e\1\u028c\1\u015e\1\0\5\u015e"+ - "\1\u0162\1\u028c\1\0\2\u015e\1\0\3\u015e\1\u0162\2\0"+ - "\4\u015e\7\0\5\u015e\1\u0162\5\u015e\1\u0162\3\u015e\3\0"+ - "\11\u015e\1\u028c\2\u015e\1\0\3\u015e\2\u028c\30\0\3\u028c"+ - "\1\0\1\u028c\10\0\1\u028c\60\0\1\u028c\6\0\2\u028c"+ - "\1\u015e\12\0\6\u015e\1\0\1\u015e\1\u015f\1\u015e\2\0"+ - "\1\u015e\3\u028e\1\u015e\1\u028e\1\u0161\1\0\6\u015e\1\u028e"+ - "\1\0\2\u015e\1\0\4\u015e\2\0\2\u015e\1\u015f\1\u015e"+ - "\7\0\17\u015e\3\0\11\u015e\1\u028e\2\u015e\1\0\3\u015e"+ - "\2\u028e\1\u015e\12\0\6\u015e\1\0\1\u015e\1\u028f\1\u015e"+ - "\2\0\2\u015e\2\u0290\1\u015e\1\u0290\1\u0166\1\0\6\u015e"+ - "\1\u0290\1\0\2\u015e\1\0\4\u015e\2\0\2\u015e\1\u028f"+ - "\1\u015e\7\0\17\u015e\3\0\11\u015e\1\u0290\2\u015e\1\0"+ - "\3\u015e\2\u0290\1\u015e\12\0\1\u015e\1\u0291\4\u015e\1\0"+ - "\1\u015e\1\u028f\1\u0291\2\0\1\u015e\5\u0291\1\u03aa\1\0"+ - "\5\u015e\2\u0291\1\0\2\u015e\1\0\2\u0291\1\u015e\1\u0291"+ - "\2\0\2\u0291\1\u028f\1\u015e\7\0\3\u015e\1\u0291\1\u015e"+ - "\1\u0291\5\u015e\1\u0291\3\u015e\3\0\11\u015e\1\u0291\2\u015e"+ - "\1\0\3\u015e\2\u0291\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\3\150\1\u017b\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\1\u03ab\5\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\1\u03ac\3\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\3\150"+ - "\1\u03ad\2\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\1\u03ae\3\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\1\u03af\15\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\3\150\1\u018d\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\2\150\1\u018d\1\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\5\150\1\u03b0\10\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\2\150\1\u03b1\13\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\3\150\1\u0294\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\1\150\1\u03b2\2\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\150\1\u03b3\2\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\150\1\u03b4"+ - "\2\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\2\150\1\u03b5\1\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\1\u03b6\3\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\11\150\1\u018d"+ - "\4\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\3\150\1\u03b7\12\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\1\u018d"+ - "\3\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\1\150\1\u03b8\2\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\1\u03b9\3\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\1\u03ba\15\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\2\150\1\u02fb\1\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\2\150"+ - "\1\u03bb\3\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\6\150\1\u03b6\7\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\1\u0173\3\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\2\150\1\u03bc\3\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\2\150\1\u03bd\13\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\1\150\1\u03b2\4\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\2\150\1\u02b1\3\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\2\150\1\u02c5"+ - "\13\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\3\150\1\u0298\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\2\150"+ - "\1\u03be\3\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\3\150\1\u03bf\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\1\150\1\u03b6\4\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\1\150\1\u03c0\2\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\1\u03c1\5\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\u03c2\3\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\1\150\1\u03c3\2\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\1\u03c4\3\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\2\150\1\u03c5\3\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\5\150"+ - "\1\u03c6\10\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\150\1\u03c7"+ - "\2\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\2\150\1\u03c8\1\150\7\0\1\137\1\u03ba\15\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\1\u018d\15\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\2\150\1\u03bc\1\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\2\150"+ - "\1\u03c9\3\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\14\150\1\u03ca\1\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\3\150\1\u03cb\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\15\150\1\u03cc"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\2\150\1\u02a4\1\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\3\150\1\u018d\12\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\1\150\1\u03cd\2\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\4\150\1\u018d\11\150"+ - "\3\0\14\150\1\0\5\150\14\0\1\u03ce\7\0\1\u03ce"+ - "\3\0\5\u03ce\7\0\2\u03ce\4\0\2\u03ce\1\0\1\u03ce"+ - "\2\0\2\u03ce\14\0\1\u03ce\1\0\1\u03ce\5\0\1\u03ce"+ - "\17\0\1\u03ce\6\0\2\u03ce\14\0\1\u03cf\7\0\1\u03cf"+ - "\3\0\5\u03cf\7\0\2\u03cf\4\0\2\u03cf\1\0\1\u03cf"+ - "\2\0\2\u03cf\14\0\1\u03cf\1\0\1\u03cf\5\0\1\u03cf"+ - "\17\0\1\u03cf\6\0\2\u03cf\14\0\1\u03d0\61\0\1\u03d0"+ - "\130\0\1\u03d1\126\0\1\u02cb\161\0\1\u03d2\112\0\1\u03d3"+ - "\73\0\1\u03d4\61\0\1\u03d4\130\0\1\u03d5\126\0\1\u02d0"+ - "\161\0\1\u03d6\112\0\1\u03d7\100\0\1\u03d8\205\0\1\u03d9"+ - "\126\0\1\u02d5\120\0\1\u03da\136\0\1\u03db\174\0\1\u03dc"+ - "\77\0\1\u03dd\156\0\1\u03de\14\0\1\u03df\102\0\1\u03e0"+ - "\135\0\1\u03e1\16\0\1\u03e2\121\0\1\u03e3\156\0\1\u03e4"+ - "\115\0\1\u03e5\177\0\1\u03e6\75\0\1\u03e7\35\0\1\u03e8"+ - "\77\0\1\u03e9\136\0\1\u03ea\200\0\1\u03eb\112\0\1\u03ec"+ - "\160\0\1\u03ed\131\0\1\u03ee\136\0\1\u03ef\105\0\1\u03f0"+ - "\154\0\1\u03f1\55\0\2\u01bb\1\u02ee\5\u01bb\1\u03f2\126\u01bb"+ - "\10\u02ee\1\u02ec\126\u02ee\2\u02ef\1\u03f2\5\u02ef\1\u01bc\26\u02ef"+ - "\1\u03f3\77\u02ef\10\u01bb\1\u02ec\3\u01bb\1\u03f4\7\u01bb\1\u03f4"+ - "\3\u01bb\5\u03f4\2\u01bb\1\u02ed\4\u01bb\2\u03f4\4\u01bb\2\u03f4"+ - "\1\u01bb\1\u03f4\2\u01bb\2\u03f4\14\u01bb\1\u03f4\1\u01bb\1\u03f4"+ - "\5\u01bb\1\u03f4\17\u01bb\1\u03f4\6\u01bb\2\u03f4\2\u02f1\1\u02f2"+ - "\6\u02f1\1\u01c0\125\u02f1\11\u02f2\1\u01c0\125\u02f2\11\0\1\u021a"+ - "\125\0\2\u02f1\1\u02f2\6\u02f1\1\u021a\17\u02f1\2\u02f5\1\u02f1"+ - "\1\u02f5\10\u02f1\1\u02f5\60\u02f1\1\u02f5\6\u02f1\2\u02f5\2\u02f1"+ - "\1\u02f2\6\u02f1\1\u021a\17\u02f1\2\u01be\1\u02f1\1\u01be\10\u02f1"+ - "\1\u01be\60\u02f1\1\u01be\6\u02f1\2\u01be\2\u02f1\1\u02f2\6\u02f1"+ - "\1\u01c0\2\u02f1\1\u03f5\7\u02f1\1\u03f5\3\u02f1\5\u03f5\7\u02f1"+ - "\2\u03f5\4\u02f1\2\u03f5\1\u02f1\1\u03f5\2\u02f1\2\u03f5\14\u02f1"+ - "\1\u03f5\1\u02f1\1\u03f5\5\u02f1\1\u03f5\17\u02f1\1\u03f5\6\u02f1"+ - "\2\u03f5\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\1\u03f6\3\150\7\0\1\137\5\150\1\u03f7\10\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\2\150"+ - "\1\u03f8\13\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\5\150\1\u03f9\6\150\1\u03fa\1\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\1\u03fb\5\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\1\u03fc\5\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\2\150\1\u03fd\3\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\2\150\1\u03fe\13\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\2\150\1\u03ff\3\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\3\150\1\u0400\2\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\1\150\1\u0401\4\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\7\150\1\u0402\6\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\5\150\1\u0403\10\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\1\150\1\u0404\4\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\u0405\3\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\3\150\1\u0406\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\3\150"+ - "\1\u0407\2\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\3\150\1\u0408\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\3\150\1\u0409\7\0\1\137\2\150\1\u040a\13\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\2\150\1\u040b\1\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\7\150\1\u040c\6\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\1\150\1\u040d\4\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\2\150\1\u040e\1\u040f\2\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\4\150\1\u0410\11\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\1\u0411\15\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\4\150\1\u0412\11\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\1\150\1\u0413\4\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\1\u0414\5\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\1\u0415\3\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\2\150"+ - "\1\u0416\3\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\1\u0417\15\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\1\u0418\3\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\1\u0419\3\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\1\u041a\5\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\150\1\u041b\2\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\4\150"+ - "\1\u041c\1\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\1\u041d\3\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\3\150\1\u041e\2\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\1\150\1\u01e4\4\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\10\150\1\u041f\5\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\3\150\1\u0420\12\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\2\150\1\u0421\4\150\1\u0422"+ - "\6\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\3\150\1\u0423"+ - "\2\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\1\u0424\10\150\1\u0425\4\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\15\150\1\u0426\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\1\u0427\3\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\u0428\3\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\2\150\1\u0429\11\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\1\u042a"+ - "\3\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\1\u042b\3\150\7\0\1\137\1\u042c\15\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\1\u042d\3\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\6\150\1\u042e"+ - "\7\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\1\150\1\u042f\2\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\1\u0430"+ - "\3\150\7\0\1\137\15\150\1\u0431\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\2\150\1\u0432\3\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\1\u0433\15\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\11\150"+ - "\1\u0434\4\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\u0435\3\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\1\u0436"+ - "\3\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\2\150\1\u0437\3\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\3\150\1\u0438\2\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\2\150\1\u0439\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\u015e\12\0\6\u015e"+ - "\1\0\3\u015e\2\0\2\u015e\2\u0331\2\u015e\1\u043a\1\0"+ - "\7\u015e\1\0\2\u015e\1\0\4\u015e\2\0\4\u015e\7\0"+ - "\17\u015e\3\0\14\u015e\1\0\5\u015e\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\1\u043b\15\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\150\1\u043c"+ - "\2\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\2\150\1\u043d\3\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\2\150\1\u043e\3\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\u043f\3\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\1\u0440\3\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\4\150"+ - "\1\u0441\1\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\1\u0442\3\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\2\150\1\u0443\3\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\2\150\1\u0444\1\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\1\u0445\3\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\1\u0446\5\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\3\150"+ - "\1\u0447\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\1\150\1\u0401\2\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\11\150\1\u0448\4\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\2\150\1\u0449\3\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\u044a\3\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\1\u03ba"+ - "\3\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\5\150\1\u044b\10\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\137\1\0\3\137\2\0"+ - "\7\137\1\0\1\137\1\u044c\5\137\1\0\2\137\1\0"+ - "\4\137\2\0\4\137\7\0\17\137\3\0\14\137\1\0"+ - "\6\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\2\150\1\u044d\1\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\1\u044e\5\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\1\u02fb\1\u044f\2\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\1\150\1\u0450\2\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\2\150\1\u0451\3\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\7\150\1\u0452\6\150\3\0"+ - "\1\u0453\13\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\u0454\3\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\1\u0455\3\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\5\150\1\u0456\10\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\2\150\1\u0457\1\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\1\150\1\u0458\2\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\150\1\u0459\2\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\5\150\1\u045a\10\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\1\u045b\5\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\2\150\1\u045c\1\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\1\u045d\5\150\1\0"+ - "\3\150\2\0\4\150\1\u045e\2\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\3\150\1\u02fb\12\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\1\0"+ - "\1\u045f\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\3\150\1\u0460\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\12\150\1\u0461\3\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\1\u0462\5\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\1\150\1\u0463\2\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\3\150\1\u0464\12\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\3\150\1\u0465\2\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\12\150\1\u02fb"+ - "\3\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\6\150\1\u0466\7\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\5\150\1\u0467\10\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\2\150\1\u032a\3\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\4\150\1\u02fb"+ - "\11\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\2\150\1\u0468"+ - "\3\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\3\150\1\u0469\12\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\2\150\1\u046a\3\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\15\150\1\u046b"+ - "\3\0\14\150\1\0\5\150\2\320\1\0\1\320\1\0"+ - "\2\320\4\0\6\320\1\0\40\320\1\u046c\56\320\1\0"+ - "\1\320\1\0\2\320\4\0\6\320\1\0\40\320\1\u046d"+ - "\56\320\1\0\1\320\1\0\2\320\4\0\6\320\1\0"+ - "\36\320\1\u046e\56\320\20\0\1\u046f\21\0\1\u046f\170\0"+ - "\1\u036b\103\0\1\u0470\174\0\1\u0471\101\0\1\324\172\0"+ - "\1\u0472\101\0\1\u0473\156\0\1\u0474\160\0\1\u0475\75\0"+ - "\1\u0476\137\0\1\u0477\17\0\1\u0478\116\0\1\u0479\174\0"+ - "\1\u047a\115\0\1\u047b\122\0\1\u047c\154\0\1\u047d\134\0"+ - "\1\u047e\166\0\1\u047f\111\0\1\u036e\136\0\1\u0480\156\0"+ - "\1\u0481\46\0\3\u0102\1\u0482\2\u0102\1\0\3\u0102\2\0"+ - "\6\u0102\3\0\6\u0102\4\0\4\u0102\2\0\4\u0102\10\0"+ - "\5\u0102\1\u0482\10\u0102\3\0\14\u0102\1\0\5\u0102\13\0"+ - "\6\u0102\1\0\1\u0102\1\u0483\1\u0102\2\0\6\u0102\3\0"+ - "\6\u0102\4\0\4\u0102\2\0\2\u0102\1\u0483\1\u0102\10\0"+ - "\16\u0102\3\0\14\u0102\1\0\5\u0102\12\0\1\u0484\207\0"+ - "\1\u0241\4\0\1\u0380\53\0\3\u0485\1\0\1\u0485\7\u0382"+ - "\1\0\3\u0382\2\u0485\6\u0382\2\u0485\1\0\6\u0382\1\0"+ - "\1\u0485\1\u0382\1\u0485\4\u0382\2\u0485\4\u0382\1\0\1\u0485"+ - "\1\0\3\u0485\1\0\1\u0485\16\u0382\3\u0485\14\u0382\1\0"+ - "\5\u0382\2\71\1\0\1\71\1\0\2\71\4\0\4\71"+ - "\1\u026b\1\71\1\0\61\71\1\u026b\35\71\1\0\1\71"+ - "\1\0\2\71\4\0\6\71\1\0\67\71\1\u024f\10\71"+ - "\1\u024f\16\71\1\0\1\71\1\0\2\71\4\0\6\71"+ - "\1\0\21\71\1\u011f\52\71\1\u011f\22\71\1\0\1\71"+ - "\1\0\2\71\4\0\3\71\1\u039d\2\71\1\0\57\71"+ - "\1\u039d\37\71\1\0\1\71\1\0\2\71\4\0\1\71"+ - "\1\u026b\4\71\1\0\54\71\1\u026b\42\71\1\0\1\71"+ - "\1\0\2\71\4\0\1\71\1\u024f\4\71\1\0\54\71"+ - "\1\u024f\42\71\1\0\1\71\1\0\2\71\4\0\6\71"+ - "\1\0\11\71\1\u0486\25\71\1\u0486\57\71\1\0\1\71"+ - "\1\0\2\71\4\0\2\71\1\u0487\3\71\1\0\17\71"+ - "\1\u0487\77\71\1\0\1\71\1\0\2\71\4\0\6\71"+ - "\1\0\2\71\1\u0488\6\71\1\u0390\24\71\1\u0488\1\u0390"+ - "\57\71\1\0\1\71\1\0\2\71\4\0\6\71\1\0"+ - "\56\71\1\u0489\5\71\1\u0489\32\71\1\0\1\71\1\0"+ - "\2\71\4\0\6\71\1\0\63\71\1\u024f\11\71\1\u024f"+ - "\21\71\1\0\1\71\1\0\2\71\4\0\6\71\1\0"+ - "\21\71\1\u048a\52\71\1\u048a\22\71\1\0\1\71\1\0"+ - "\2\71\4\0\6\71\1\0\11\71\1\u048b\25\71\1\u048b"+ - "\57\71\1\0\1\71\1\0\2\71\4\0\6\71\1\0"+ - "\21\71\1\u0150\52\71\1\u0150\22\71\1\0\1\71\1\0"+ - "\2\71\4\0\5\71\1\u048c\1\0\20\71\1\u048c\76\71"+ - "\1\0\1\71\1\0\2\71\4\0\6\71\1\0\21\71"+ - "\1\u048d\52\71\1\u048d\22\71\1\0\1\71\1\0\2\71"+ - "\4\0\1\71\1\u011a\4\71\1\0\54\71\1\u011a\42\71"+ - "\1\0\1\71\1\0\2\71\4\0\6\71\1\0\2\71"+ - "\1\u026b\33\71\1\u026b\60\71\1\0\1\71\1\0\2\71"+ - "\4\0\6\71\1\0\2\71\1\u048e\33\71\1\u048e\60\71"+ - "\1\0\1\71\1\0\2\71\4\0\6\71\1\0\11\71"+ - "\1\u048f\25\71\1\u048f\57\71\1\0\1\71\1\0\2\71"+ - "\4\0\6\71\1\0\2\71\1\u0490\33\71\1\u0490\60\71"+ - "\1\0\1\71\1\0\2\71\4\0\6\71\1\0\56\71"+ - "\1\u0491\5\71\1\u0491\32\71\1\0\1\71\1\0\2\71"+ - "\4\0\2\71\1\u024f\3\71\1\0\17\71\1\u024f\77\71"+ - "\1\0\1\71\1\0\2\71\4\0\6\71\1\0\67\71"+ - "\1\u0492\10\71\1\u0492\16\71\1\0\1\71\1\0\2\71"+ - "\4\0\6\71\1\0\22\71\1\u0493\10\71\1\u0493\63\71"+ - "\1\0\1\71\1\0\2\71\4\0\6\71\1\0\52\71"+ - "\1\u0149\20\71\1\u0149\23\71\1\0\1\71\1\0\2\71"+ - "\4\0\6\71\1\0\16\71\1\u0390\57\71\1\u0390\20\71"+ - "\1\0\1\71\1\0\2\71\4\0\6\71\1\0\52\71"+ - "\1\u011f\20\71\1\u011f\23\71\1\0\1\71\1\0\2\71"+ - "\4\0\3\71\1\u0494\2\71\1\0\57\71\1\u0494\37\71"+ - "\1\0\1\71\1\0\2\71\4\0\5\71\1\u0495\1\0"+ - "\1\71\1\u0496\16\71\1\u0495\17\71\1\u0496\17\71\1\u0497"+ - "\16\71\1\u0497\17\71\1\0\1\71\1\0\2\71\4\0"+ - "\6\71\1\0\16\71\1\u0498\57\71\1\u0498\20\71\1\0"+ - "\1\71\1\0\2\71\4\0\3\71\1\u0499\2\71\1\0"+ - "\57\71\1\u0499\37\71\1\0\1\71\1\0\2\71\4\0"+ - "\6\71\1\0\2\71\1\u0149\33\71\1\u0149\56\71\15\0"+ - "\1\u049a\23\0\1\u049a\75\0\1\137\12\0\1\137\1\u049b"+ - "\4\137\1\0\2\137\1\u049b\2\0\1\137\5\u049b\1\137"+ - "\1\0\5\137\2\u049b\1\0\2\137\1\0\2\u049b\1\137"+ - "\1\u049b\2\0\2\u049b\2\137\7\0\3\137\1\u049b\1\137"+ - "\1\u049b\5\137\1\u049b\3\137\3\0\11\137\1\u049b\2\137"+ - "\1\0\3\137\2\u049b\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\3\150\1\u049c\2\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\u015e\12\0\1\u015e"+ - "\1\u0291\4\u015e\1\0\2\u015e\1\u0291\2\0\1\u015e\5\u0291"+ - "\1\u03aa\1\0\5\u015e\2\u0291\1\0\2\u015e\1\0\2\u0291"+ - "\1\u015e\1\u0291\2\0\2\u0291\2\u015e\7\0\3\u015e\1\u0291"+ - "\1\u015e\1\u0291\5\u015e\1\u0291\3\u015e\3\0\11\u015e\1\u0291"+ - "\2\u015e\1\0\3\u015e\2\u0291\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\1\150\1\u049d\4\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\3\150\1\u049e"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\1\u049f\15\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\13\150\1\u04a0\2\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\14\150\1\u02a4\1\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\2\150\1\u04a1\3\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\2\150"+ - "\1\u03b6\3\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\2\150\1\u04a2\1\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\15\150\1\u018d\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\1\u04a3\3\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\7\150"+ - "\1\u044e\6\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\3\150"+ - "\1\u04a4\2\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\1\150\1\u03bf\4\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\1\150\1\u04a5\4\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\5\150"+ - "\1\u04a6\10\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\3\150\1\u04a7\12\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\5\150\1\u04a8\10\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\2\150\1\u018d\3\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\1\u04a9\5\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\6\150\1\u04aa\7\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\2\150\1\u02a4\3\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\2\150\1\u02a1\1\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\1\150\1\u04ab\4\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\1\150\1\u04ac\2\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\3\150\1\u04ad\2\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\1\150\1\u02fb"+ - "\12\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\1\u04ae\3\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\u04af\3\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\1\150\1\u03c2\2\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\1\u04b0"+ - "\3\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\1\150\1\u04b1\2\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\2\150\1\u0194\3\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\15\0\1\u04b2\23\0\1\u04b2"+ - "\107\0\1\u04b3\207\0\1\u02cb\4\0\1\u03d1\53\0\3\u04b4"+ - "\1\0\1\u04b4\7\u03d3\1\0\3\u03d3\2\u04b4\6\u03d3\2\u04b4"+ - "\1\0\6\u03d3\1\0\1\u04b4\1\u03d3\1\u04b4\4\u03d3\2\u04b4"+ - "\4\u03d3\1\0\1\u04b4\1\0\3\u04b4\1\0\1\u04b4\16\u03d3"+ - "\3\u04b4\14\u03d3\1\0\5\u03d3\15\0\1\u04b5\23\0\1\u04b5"+ - "\107\0\1\u04b6\207\0\1\u02d0\4\0\1\u03d5\53\0\3\u04b7"+ - "\1\0\1\u04b7\7\u03d7\1\0\3\u03d7\2\u04b7\6\u03d7\2\u04b7"+ - "\1\0\6\u03d7\1\0\1\u04b7\1\u03d7\1\u04b7\4\u03d7\2\u04b7"+ - "\4\u03d7\1\0\1\u04b7\1\0\3\u04b7\1\0\1\u04b7\16\u03d7"+ - "\3\u04b7\14\u03d7\1\0\5\u03d7\12\0\1\u04b8\164\0\1\u04b9"+ - "\172\0\1\u04ba\136\0\1\u03e2\122\0\1\u04bb\13\0\1\u04bc"+ - "\147\0\1\u04bd\111\0\1\u04be\1\0\1\u04bf\153\0\1\u04c0"+ - "\140\0\1\u04c1\133\0\1\u04c2\134\0\1\u04c3\122\0\1\u04c4"+ - "\117\0\1\u04c5\155\0\1\u04c6\136\0\1\u04c7\137\0\1\u04c8"+ - "\140\0\1\u04c9\136\0\1\u02d5\4\0\1\u03d9\53\0\3\u04ca"+ - "\1\0\1\u04ca\7\u03ec\1\0\3\u03ec\2\u04ca\6\u03ec\2\u04ca"+ - "\1\0\6\u03ec\1\0\1\u04ca\1\u03ec\1\u04ca\4\u03ec\2\u04ca"+ - "\4\u03ec\1\0\1\u04ca\1\0\3\u04ca\1\0\1\u04ca\16\u03ec"+ - "\3\u04ca\14\u03ec\1\0\5\u03ec\42\0\1\u04cb\1\u04cc\173\0"+ - "\1\u04cd\134\0\1\u04ce\137\0\1\u04cf\121\0\1\u04d0\54\0"+ - "\10\u03f2\1\0\26\u03f2\1\u04d1\101\u03f2\1\0\5\u03f2\2\u02ef"+ - "\17\u03f2\2\u02ef\1\u03f2\1\u02ef\2\u03f2\1\u02ef\1\u04d2\5\u02ef"+ - "\5\u03f2\1\u02ef\52\u03f2\1\u02ef\6\u03f2\2\u02ef\10\u01bb\1\u02ec"+ - "\3\u01bb\1\u04d3\7\u01bb\1\u04d3\3\u01bb\5\u04d3\2\u01bb\1\u02ed"+ - "\4\u01bb\2\u04d3\4\u01bb\2\u04d3\1\u01bb\1\u04d3\2\u01bb\2\u04d3"+ - "\14\u01bb\1\u04d3\1\u01bb\1\u04d3\5\u01bb\1\u04d3\17\u01bb\1\u04d3"+ - "\6\u01bb\2\u04d3\2\u02f1\1\u02f2\6\u02f1\1\u01c0\2\u02f1\1\u04d4"+ - "\7\u02f1\1\u04d4\3\u02f1\5\u04d4\7\u02f1\2\u04d4\4\u02f1\2\u04d4"+ - "\1\u02f1\1\u04d4\2\u02f1\2\u04d4\14\u02f1\1\u04d4\1\u02f1\1\u04d4"+ - "\5\u02f1\1\u04d4\17\u02f1\1\u04d4\6\u02f1\2\u04d4\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\150\1\u04d5"+ - "\2\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\3\150\1\u04d6\2\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\2\150\1\u04d7\13\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\15\150"+ - "\1\u04d8\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\1\150\1\u04d9\2\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\5\150\1\u04da\10\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\1\150\1\u04db\4\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\1\u04dc\3\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\u04dd\3\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\3\150\1\u04de\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\u04df\3\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\3\150\1\u04e0\2\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\2\150\1\u02fb\3\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\2\150\1\u04e1\1\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\2\150\1\u04e2"+ - "\3\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\1\u04e3"+ - "\3\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\3\150\1\u04e4\2\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\3\150\1\u04e5\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\1\u04e6\3\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\u040f\3\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\1\u04e7\15\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\1\u04e8"+ - "\5\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\1\u04e9"+ - "\3\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\1\150\1\u0311\2\150\7\0\1\137\5\150\1\u04ea\10\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\1\u04eb\1\u04ec"+ - "\4\150\1\0\3\150\2\0\4\150\1\u04ed\2\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\1\150\1\u04ee\2\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\5\150\1\u04ef\10\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\150\1\u04f0\2\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\u0433\1\u04f0"+ - "\2\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\1\u04f1\5\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\1\u04f2\15\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\1\150\1\u04f3\2\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\1\u04f4\5\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\1\150\1\u04f5"+ - "\4\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\6\150\1\u04e0\7\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\1\150\1\u04f6\2\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\11\150\1\u04f7"+ - "\4\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\1\150\1\u04f8"+ - "\4\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\10\150\1\u04f9\5\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\2\150\1\u04fa\3\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\2\150\1\u04fb\1\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\1\u04fc\15\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\6\150\1\u04fd\7\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\2\150\1\u04fe\3\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\2\150\1\u04ff\13\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\1\150\1\u0500\2\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\u0501\3\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\1\u0502"+ - "\3\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\2\150\1\u0503\3\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\1\150\1\u0504\4\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\5\150"+ - "\1\u0505\10\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\150\1\u0506"+ - "\2\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\4\150\1\u0507\11\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\1\u0446\5\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\2\150\1\u0508\11\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\1\150\1\u0509\2\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\1\150\1\u050a\12\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\1\150\1\u050b\2\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\13\150\1\u040f"+ - "\2\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\1\u050c\6\150\1\0\1\u015b\1\150"+ - "\1\u050d\4\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\1\u0414\5\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\2\150\1\u050e\1\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\1\150\1\u050f\12\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\1\u0510\1\u0511\2\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\2\150\1\u0512\1\u0513\2\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\1\150\1\u02fb\4\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\1\u0446\1\u0514"+ - "\4\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\u0515\3\150"+ - "\7\0\1\137\16\150\3\0\2\150\1\u0508\11\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\1\150\1\u0516\4\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\7\150\1\u0517"+ - "\6\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\1\150\1\u0518\14\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\2\150\1\u0519\3\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\10\150\1\u041f\5\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\1\150\1\u051a\4\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\1\150\1\u051b\14\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\3\150\1\u051c\12\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\1\150\1\u051d\4\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\1\150\1\u051e\4\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\3\150\1\u051f"+ - "\2\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\1\u0520"+ - "\3\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\3\150"+ - "\1\u0521\1\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\3\150\1\u0522\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\1\u0523\3\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\4\150\1\u0524\2\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\u0401\3\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\3\150\1\u040f\12\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\1\150\1\u0525\2\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\1\u0526\3\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\2\150\1\u0527"+ - "\1\u0528\1\u0529\1\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\3\150\1\u052a\2\150\1\0\1\137\1\150\1\0"+ - "\3\150\1\u052b\2\0\4\150\7\0\1\137\12\150\1\u052c"+ - "\3\150\3\0\1\u052d\1\u052e\12\150\1\0\2\150\1\u052f"+ - "\2\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\2\150\1\u0530\13\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\1\137\1\u0531\4\137"+ - "\1\0\2\137\1\u0531\2\0\1\137\5\u0531\1\137\1\0"+ - "\5\137\2\u0531\1\0\2\137\1\0\2\u0531\1\137\1\u0531"+ - "\2\0\2\u0531\2\137\7\0\3\137\1\u0531\1\137\1\u0531"+ - "\5\137\1\u0531\3\137\3\0\11\137\1\u0531\2\137\1\0"+ - "\3\137\2\u0531\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\5\150\1\u0532\10\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\u02fb\3\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\3\150"+ - "\1\u0533\2\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\1\u0534\13\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\2\150\1\u0535\1\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\5\150\1\u0536\10\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\1\u0537\5\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\4\150\1\u0538"+ - "\1\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\1\150\1\u0539\4\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\2\150\1\u053a\13\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\1\u053b\15\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\4\150\1\u053c"+ - "\1\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\u053d\3\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\2\150\1\u053e\3\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\6\150\1\u053f\7\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\2\150\1\u0540"+ - "\13\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\1\150\1\u0541\2\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\1\u0542"+ - "\3\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\2\150\1\u0543\13\150\3\0\14\150"+ - "\1\0\5\150\24\0\1\u0544\112\0\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\5\150\1\u0545\10\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\1\150"+ - "\1\u0546\2\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\7\150\1\u0547\6\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\2\150\1\u0548\3\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\1\u0549\3\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\1\u054a\15\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\1\u054b\15\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\4\150\1\u054c\1\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\1\u054d\5\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\1\u0446\5\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\2\150\1\u040f\3\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\2\150\1\u0508\11\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\1\u054e\3\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\10\150\1\u054f"+ - "\3\150\1\0\5\150\2\320\1\0\1\320\1\0\2\320"+ - "\4\0\6\320\1\0\57\320\1\u0550\37\320\1\0\1\320"+ - "\1\0\2\320\4\0\6\320\1\0\16\320\1\u0551\76\320"+ - "\22\0\1\u0552\52\0\1\u0552\143\0\1\u0553\72\0\1\u0554"+ - "\140\0\1\u0555\161\0\1\u0478\126\0\1\u0556\125\0\1\u0557"+ - "\175\0\1\u0558\137\0\1\324\76\0\1\u0559\205\0\1\324"+ - "\66\0\1\u055a\141\0\1\u055b\134\0\1\u047f\171\0\1\u0559"+ - "\137\0\1\u055c\120\0\1\u055d\157\0\1\u055e\131\0\1\u055f"+ - "\55\0\4\u0102\1\u0560\1\u0102\1\0\3\u0102\2\0\6\u0102"+ - "\3\0\6\u0102\4\0\4\u0102\2\0\4\u0102\10\0\7\u0102"+ - "\1\u0560\6\u0102\3\0\14\u0102\1\0\5\u0102\13\0\6\u0102"+ - "\1\0\2\u0102\1\u0561\2\0\6\u0102\3\0\6\u0102\4\0"+ - "\4\u0102\2\0\1\u0561\3\u0102\10\0\16\u0102\3\0\14\u0102"+ - "\1\0\5\u0102\12\0\1\u0382\124\0\2\71\1\0\1\71"+ - "\1\0\2\71\4\0\1\116\5\71\1\0\41\71\1\116"+ - "\55\71\1\0\1\71\1\0\2\71\4\0\6\71\1\0"+ - "\52\71\1\u0562\20\71\1\u0562\23\71\1\0\1\71\1\0"+ - "\2\71\4\0\6\71\1\0\21\71\1\u026b\52\71\1\u026b"+ - "\22\71\1\0\1\71\1\0\2\71\4\0\6\71\1\0"+ - "\2\71\1\u0563\33\71\1\u0563\60\71\1\0\1\71\1\0"+ - "\2\71\4\0\5\71\1\u0564\1\0\20\71\1\u0564\76\71"+ - "\1\0\1\71\1\0\2\71\4\0\2\71\1\u0565\3\71"+ - "\1\0\17\71\1\u0565\77\71\1\0\1\71\1\0\2\71"+ - "\4\0\1\u0566\5\71\1\0\41\71\1\u0566\55\71\1\0"+ - "\1\71\1\0\2\71\4\0\6\71\1\0\1\u0272\52\71"+ - "\1\u0272\43\71\1\0\1\71\1\0\2\71\4\0\1\u0486"+ - "\5\71\1\0\41\71\1\u0486\55\71\1\0\1\71\1\0"+ - "\2\71\4\0\6\71\1\0\63\71\1\u0567\11\71\1\u0567"+ - "\21\71\1\0\1\71\1\0\2\71\4\0\1\u0394\5\71"+ - "\1\0\41\71\1\u0394\55\71\1\0\1\71\1\0\2\71"+ - "\4\0\6\71\1\0\101\71\1\u0568\6\71\1\u0568\6\71"+ - "\1\0\1\71\1\0\2\71\4\0\6\71\1\0\52\71"+ - "\1\u0488\20\71\1\u0488\23\71\1\0\1\71\1\0\2\71"+ - "\4\0\6\71\1\0\1\71\1\u0486\36\71\1\u0486\56\71"+ - "\1\0\1\71\1\0\2\71\4\0\6\71\1\0\2\71"+ - "\1\u0569\33\71\1\u0569\60\71\1\0\1\71\1\0\2\71"+ - "\4\0\3\71\1\u0135\2\71\1\0\57\71\1\u0135\37\71"+ - "\1\0\1\71\1\0\2\71\4\0\2\71\1\u056a\3\71"+ - "\1\0\17\71\1\u056a\77\71\1\0\1\71\1\0\2\71"+ - "\4\0\6\71\1\0\2\71\1\u024f\33\71\1\u024f\60\71"+ - "\1\0\1\71\1\0\2\71\4\0\1\71\1\u056b\4\71"+ - "\1\0\54\71\1\u056b\40\71\16\0\1\u056c\62\0\1\u056c"+ - "\35\0\1\137\12\0\1\137\1\u056d\4\137\1\0\2\137"+ - "\1\u056d\2\0\1\137\5\u056d\1\137\1\0\5\137\2\u056d"+ - "\1\0\2\137\1\0\2\u056d\1\137\1\u056d\2\0\2\u056d"+ - "\2\137\7\0\3\137\1\u056d\1\137\1\u056d\5\137\1\u056d"+ - "\3\137\3\0\11\137\1\u056d\2\137\1\0\3\137\2\u056d"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\5\150\1\u056e\10\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\3\150\1\u056f\2\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\5\150"+ - "\1\u0570\10\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\4\150"+ - "\1\u018d\1\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\5\150\1\u0571\10\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\2\150\1\u0572\1\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\150\1\u0573\2\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\4\150\1\u0298\11\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\1\150\1\u0574\2\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\2\150\1\u018d\13\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\1\150\1\u0575\4\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\3\150"+ - "\1\u0576\2\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\2\150\1\u03bf\1\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\6\150\1\u02ac\7\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\4\150\1\u0577\1\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\3\150"+ - "\1\u0578\2\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\5\150\1\u0579\10\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\11\150\1\u057a\4\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\2\150"+ - "\1\u057b\13\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\3\150\1\u057c\2\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\3\150\1\u057d"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\6\150\1\u02a4\7\150\3\0"+ - "\14\150\1\0\5\150\16\0\1\u057e\62\0\1\u057e\47\0"+ - "\1\u03d3\142\0\1\u057f\62\0\1\u057f\47\0\1\u03d7\136\0"+ - "\1\u03ec\165\0\1\u0580\136\0\1\u0581\156\0\1\u0582\164\0"+ - "\1\u0583\132\0\1\u0584\136\0\1\u0585\73\0\1\u0586\172\0"+ - "\1\u0587\123\0\1\u0588\135\0\1\u03e2\140\0\1\u0589\156\0"+ - "\1\u058a\114\0\1\u058b\117\0\1\u058c\201\0\1\u03e2\137\0"+ - "\1\u03e2\132\0\1\u058d\115\0\1\u058e\167\0\1\u058f\105\0"+ - "\1\u058f\73\0\1\u0590\201\0\1\u0591\116\0\1\u04cd\76\0"+ - "\2\u03f2\1\0\144\u03f2\1\0\3\u03f2\1\u0592\7\u03f2\1\u0592"+ - "\3\u03f2\5\u0592\2\u03f2\1\u04d1\4\u03f2\2\u0592\4\u03f2\2\u0592"+ - "\1\u03f2\1\u0592\2\u03f2\2\u0592\14\u03f2\1\u0592\1\u03f2\1\u0592"+ - "\5\u03f2\1\u0592\17\u03f2\1\u0592\6\u03f2\2\u0592\10\u01bb\1\u02ec"+ - "\3\u01bb\1\u0593\7\u01bb\1\u0593\3\u01bb\5\u0593\2\u01bb\1\u02ed"+ - "\4\u01bb\2\u0593\4\u01bb\2\u0593\1\u01bb\1\u0593\2\u01bb\2\u0593"+ - "\14\u01bb\1\u0593\1\u01bb\1\u0593\5\u01bb\1\u0593\17\u01bb\1\u0593"+ - "\6\u01bb\2\u0593\2\u02f1\1\u02f2\6\u02f1\1\u01c0\2\u02f1\1\u0594"+ - "\7\u02f1\1\u0594\3\u02f1\5\u0594\7\u02f1\2\u0594\4\u02f1\2\u0594"+ - "\1\u02f1\1\u0594\2\u02f1\2\u0594\14\u02f1\1\u0594\1\u02f1\1\u0594"+ - "\5\u02f1\1\u0594\17\u02f1\1\u0594\6\u02f1\2\u0594\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\11\150\1\u0595\4\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\6\150\1\u0596\7\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\2\150\1\u0597\3\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\5\150\1\u0598"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\1\u0599\13\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\2\150\1\u059a"+ - "\1\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\2\150\1\u059b\13\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\5\150\1\u059c\10\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\3\150\1\u059d\2\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\4\150\1\u0428\11\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\1\150\1\u059e\2\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\11\150\1\u02fb\4\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\u0433\3\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\1\u059f\3\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\u05a0\3\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\3\150\1\u05a1\2\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\4\150\1\u05a2\11\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\1\150\1\u05a3\4\150"+ - "\1\0\1\150\1\u05a4\1\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\3\150\1\u05a5\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\1\150\1\u052e\5\150"+ - "\1\u05a6\4\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\150\1\u04f0\2\150\7\0"+ - "\1\137\16\150\3\0\1\150\1\u05a7\12\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\2\150\1\u044e\1\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\1\150\1\u05a8\4\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\2\150"+ - "\1\u05a9\13\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\2\150\1\u04e0"+ - "\1\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\1\u05aa\3\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\1\u05ab\15\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\1\150\1\u05ac\4\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\2\150"+ - "\1\u05ad\13\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\11\150\1\u05ae\4\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\1\150\1\u04e7"+ - "\2\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\1\150\1\u05af\4\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\11\150"+ - "\1\u05b0\4\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\2\150"+ - "\1\u032a\3\150\1\0\1\137\1\150\1\0\1\150\1\u04e7"+ - "\2\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\11\150\1\u05b1\4\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\1\150\1\u05b2\1\150"+ - "\1\u05b3\2\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\3\150\1\u05b4\2\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\7\150\1\u05b5\6\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\5\150"+ - "\1\u05b6\10\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\1\u05b7\13\150\1\0\5\150\1\137"+ - "\12\0\1\u05b8\5\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\2\150\1\u05b9\11\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\5\150\1\u05ba\10\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\1\150\1\u05bb\4\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\150\1\u05bc"+ - "\2\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\5\150\1\u05bd\10\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\1\u05be\3\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\1\150\1\u05bf\2\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\3\150\1\u05c0\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\1\150"+ - "\1\u05c1\4\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\1\u05c2\5\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\2\150\1\u052f\2\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\5\150\1\u05c3"+ - "\10\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\2\150\1\u05c4"+ - "\3\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\6\150\1\u044e\7\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\2\150\1\u0527\1\u0528\2\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\1\u052d\13\150\1\0\2\150\1\u052f\2\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\1\150"+ - "\1\u05c5\2\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\3\150\1\u05c6\2\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\1\u05c7\15\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\4\150"+ - "\1\u05c8\11\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\1\u05c9\15\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\5\150\1\u05ca\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\1\u05cb\3\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\1\u05cc\5\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\4\150\1\u05cd\11\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\6\150"+ - "\1\u05ce\7\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\u05cf\3\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\2\150\1\u05d0\3\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\1\u05d1\15\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\1\150\1\u05d2\4\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\3\150\1\u05d3\2\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\2\150"+ - "\1\u05d4\3\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\1\u05d5\5\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\1\150\1\u05d6\1\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\1\u05d7\13\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\2\150\1\u05d8\1\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\1\u05d9\2\150\1\u05da\2\150\1\0\1\150\1\u05db\1\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\3\150\1\u02fb\7\0\1\137\12\150"+ - "\1\u05dc\3\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\11\150\1\u05dd\4\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\1\150\1\u05de\2\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\2\150\1\u05df\3\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\4\150"+ - "\1\u040f\11\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\1\150"+ - "\1\u0320\4\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\4\150"+ - "\1\u05e0\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\2\150\1\u05e1\3\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\1\150\1\u05e2\2\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\1\150\1\u05e3"+ - "\4\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\2\150\1\u05e4\3\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\1\150\1\u0507\4\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\1\u05e5\3\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\3\150\1\u05e6\2\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\u05e7\3\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\1\150"+ - "\1\u05e8\2\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\5\150\1\u05e9\10\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\1\u05ea\3\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\1\u05eb\5\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\1\u05ec\15\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\1\150"+ - "\1\u05ed\4\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\2\150\1\u05ee\3\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\1\137\1\u05ef\4\137\1\0"+ - "\2\137\1\u05ef\2\0\1\137\5\u05ef\1\137\1\0\5\137"+ - "\2\u05ef\1\0\2\137\1\0\2\u05ef\1\137\1\u05ef\2\0"+ - "\2\u05ef\2\137\7\0\3\137\1\u05ef\1\137\1\u05ef\5\137"+ - "\1\u05ef\3\137\3\0\11\137\1\u05ef\2\137\1\0\3\137"+ - "\2\u05ef\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\2\150\1\u05f0\13\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\3\150\1\u05f1\2\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\1\u05f2\5\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\u042e\3\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\1\u05f3\15\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\2\150\1\u05f4\3\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\2\150"+ - "\1\u05f5\11\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\14\150"+ - "\1\u0410\1\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\2\150"+ - "\1\u05f6\3\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\3\150\1\u05f7\2\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\1\u05f8\15\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\1\150\1\u05f9\4\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\5\150\1\u05fa\10\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\1\150"+ - "\1\u05fb\2\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\3\150\1\u05fc\12\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\3\150\1\u05fd\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\1\150\1\u05fe\4\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\2\150"+ - "\1\u05ff\3\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\43\0\1\u0600\73\0\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\3\150\1\u0601\2\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\2\150\1\u0602"+ - "\3\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\7\150\1\u0603\6\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\5\150\1\u0604\10\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\2\150\1\u0605"+ - "\13\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\13\150\1\u0606\2\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\1\150\1\u0607\4\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\1\150\1\u0608\14\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\1\150\1\u0609\2\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\4\150\1\u060a\2\150\1\0\1\u015b"+ - "\1\150\1\u02fb\4\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\1\150\1\u060b\2\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\2\320\1\0\1\320\1\0\2\320"+ - "\4\0\6\320\1\0\31\320\1\u046e\65\320\1\0\1\320"+ - "\1\0\2\320\4\0\6\320\1\0\56\320\1\u0366\36\320"+ - "\23\0\1\u060c\36\0\1\u060c\134\0\1\u036b\140\0\1\u060d"+ - "\11\0\1\u060e\1\0\1\u060f\123\0\1\324\135\0\1\u0610"+ - "\151\0\1\324\151\0\1\u0611\64\0\1\u0612\163\0\1\u0613"+ - "\147\0\1\u0614\153\0\1\u0610\66\0\1\324\137\0\1\u0610"+ - "\135\0\1\u0615\110\0\5\u0102\1\u0616\1\0\3\u0102\2\0"+ - "\6\u0102\3\0\2\u0102\1\u0616\3\u0102\4\0\4\u0102\2\0"+ - "\4\u0102\10\0\16\u0102\3\0\14\u0102\1\0\5\u0102\2\71"+ - "\1\0\1\71\1\0\2\71\4\0\6\71\1\0\16\71"+ - "\1\u024c\57\71\1\u024c\20\71\1\0\1\71\1\0\2\71"+ - "\4\0\6\71\1\0\32\71\1\116\27\71\1\116\34\71"+ - "\1\0\1\71\1\0\2\71\4\0\6\71\1\0\2\71"+ - "\1\u0617\33\71\1\u0617\60\71\1\0\1\71\1\0\2\71"+ - "\4\0\6\71\1\0\2\71\1\u0267\33\71\1\u0267\60\71"+ - "\1\0\1\71\1\0\2\71\4\0\6\71\1\0\52\71"+ - "\1\u0114\20\71\1\u0114\23\71\1\0\1\71\1\0\2\71"+ - "\4\0\6\71\1\0\2\71\1\u0486\33\71\1\u0486\60\71"+ - "\1\0\1\71\1\0\2\71\4\0\6\71\1\0\16\71"+ - "\1\u0618\57\71\1\u0618\20\71\1\0\1\71\1\0\2\71"+ - "\4\0\6\71\1\0\63\71\1\u0619\11\71\1\u0619\21\71"+ - "\1\0\1\71\1\0\2\71\4\0\3\71\1\u0150\2\71"+ - "\1\0\57\71\1\u0150\37\71\1\0\1\71\1\0\2\71"+ - "\4\0\6\71\1\0\52\71\1\u027b\20\71\1\u027b\21\71"+ - "\17\0\1\u061a\63\0\1\u061a\33\0\1\137\12\0\1\137"+ - "\1\150\4\137\1\0\2\137\1\150\2\0\1\137\5\150"+ - "\1\137\1\0\5\137\2\150\1\0\2\137\1\0\2\150"+ - "\1\137\1\150\2\0\2\150\2\137\7\0\3\137\1\150"+ - "\1\137\1\150\5\137\1\150\3\137\3\0\11\137\1\150"+ - "\2\137\1\0\3\137\2\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\2\150\1\u0572\3\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\u061b\3\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\1\u061c\15\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\1\150\1\u018d\14\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\3\150\1\u03b6\2\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\2\150"+ - "\1\u03bf\13\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\1\u061d\15\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\1\u02a4\5\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\1\150\1\u061e\2\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\2\150\1\u0296\13\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\2\150\1\u044e\3\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\u061f\3\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\2\150\1\u0620\3\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\3\150\1\u0401\2\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\2\150\1\u0621\1\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\17\0\1\u0622\63\0"+ - "\1\u0622\52\0\1\u0623\63\0\1\u0623\76\0\1\u03e2\174\0"+ - "\1\u0624\135\0\1\u0625\121\0\1\u03e2\135\0\1\u04c2\116\0"+ - "\1\u04c9\174\0\1\u04c2\77\0\1\u03e2\157\0\1\u0626\134\0"+ - "\1\u0627\152\0\1\u0628\140\0\1\u0629\103\0\1\u0624\167\0"+ - "\1\u0580\103\0\1\u062a\75\0\64\u058f\1\u03e2\52\u058f\74\0"+ - "\1\u062b\103\0\1\u062c\75\0\10\u03f2\1\0\3\u03f2\1\u062d"+ - "\7\u03f2\1\u062d\3\u03f2\5\u062d\2\u03f2\1\u04d1\4\u03f2\2\u062d"+ - "\4\u03f2\2\u062d\1\u03f2\1\u062d\2\u03f2\2\u062d\14\u03f2\1\u062d"+ - "\1\u03f2\1\u062d\5\u03f2\1\u062d\17\u03f2\1\u062d\6\u03f2\2\u062d"+ - "\10\u01bb\1\u02ec\3\u01bb\1\247\7\u01bb\1\247\3\u01bb\5\247"+ - "\2\u01bb\1\u02ed\4\u01bb\2\247\4\u01bb\2\247\1\u01bb\1\247"+ - "\2\u01bb\2\247\14\u01bb\1\247\1\u01bb\1\247\5\u01bb\1\247"+ - "\17\u01bb\1\247\6\u01bb\2\247\2\u02f1\1\u02f2\6\u02f1\1\u01c0"+ - "\2\u02f1\1\u01be\7\u02f1\1\u01be\3\u02f1\5\u01be\7\u02f1\2\u01be"+ - "\4\u02f1\2\u01be\1\u02f1\1\u01be\2\u02f1\2\u01be\14\u02f1\1\u01be"+ - "\1\u02f1\1\u01be\5\u02f1\1\u01be\17\u02f1\1\u01be\6\u02f1\2\u01be"+ - "\1\137\12\0\1\150\1\u062e\3\150\1\u062f\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\2\150\1\u0527\1\u05da"+ - "\1\150\1\u062f\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\1\u0630\3\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\12\150\1\u0631\1\150"+ - "\1\0\2\150\1\u052f\2\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\2\150\1\u0632\11\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\1\150"+ - "\1\u0633\4\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\14\150\1\u0634\1\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\5\150\1\u0635\10\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\u0636\3\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\2\150\1\u0637"+ - "\3\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\2\150\1\u0638\13\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\5\150\1\u0639\10\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\5\150\1\u063a\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\1\150\1\u063b\4\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\2\150\1\u063c\13\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\1\150\1\u063d\2\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\1\150\1\u063e\2\150\7\0\1\137\5\150"+ - "\1\u063f\10\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\1\u05e5\15\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\1\u0640\15\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\1\150\1\u0641\2\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\1\u0642\15\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\1\150\1\u0643\4\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\2\150\1\u0644"+ - "\3\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\1\u0645\4\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\3\150\1\u0646\2\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\1\150\1\u0647\4\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\2\150\1\u0648\3\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\u0649\3\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\2\150\1\u064a\13\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\4\150"+ - "\1\u064b\2\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\11\150\1\u064c"+ - "\4\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\1\u064d\5\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\150\1\u064e"+ - "\2\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\2\150\1\u064f\3\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\1\150\1\u0650\2\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\2\150\1\u0651\3\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\1\u0652"+ - "\5\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\2\150\1\u0653\3\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\5\150\1\u0654\10\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\4\150\1\u0655"+ - "\11\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\11\150\1\u0656\4\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\2\150"+ - "\1\u0657\1\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\2\150\1\u0658\3\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\7\150\1\u0659"+ - "\6\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\2\150\1\u065a\13\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\3\150"+ - "\1\u065b\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\2\150\1\u065c\3\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\2\150\1\u065d\3\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\2\150\1\u065e\3\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\5\150\1\u065f\10\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\7\150\1\u02fb\6\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\1\150\1\u0660\14\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\2\150\1\u0661\3\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\1\150\1\u0662\1\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\1\0"+ - "\1\u0663\4\150\7\0\1\137\12\150\1\u0664\3\150\3\0"+ - "\4\150\1\u0665\7\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\3\150\1\u044e"+ - "\2\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\1\150"+ - "\1\u0666\2\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\1\0\1\u0667\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\11\150\1\u0668\4\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\1\150\1\u05db\1\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\10\150\1\u0669\3\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\1\u0608\3\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\3\150\1\u066a\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\1\u066b\3\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\3\150\1\u066c\2\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\1\150\1\u0659\2\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\1\150"+ - "\1\u066d\2\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\5\150\1\u066e\10\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\2\150\1\u066f\3\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\5\150\1\u0670\10\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\1\150\1\u0671\2\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\1\u0672\15\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\2\150\1\u0673\3\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\3\150\1\u0674\2\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\5\150\1\u0675\10\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\1\u0201\3\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\1\u0676\3\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\2\150\1\u0677\13\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\5\150"+ - "\1\u0678\10\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\1\0\1\u0679"; - - private static final String ZZ_TRANS_PACKED_1 = - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\1\150\1\u067a\4\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\3\150\1\u02fb\2\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\1\150\1\u067b\4\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\2\150"+ - "\1\u067c\3\150\1\0\1\137\1\150\1\0\3\150\1\u067d"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\1\150\1\u067e\2\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\7\150\1\u067f"+ - "\6\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\1\150\1\u0680"+ - "\4\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\11\150\1\u0681\4\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\2\150\1\u0682\1\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\3\150\1\u0683\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\2\150\1\u05e6\3\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\2\150"+ - "\1\u0684\3\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\5\150\1\u0682\10\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\4\150\1\u0685\1\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\1\137\1\u0686"+ - "\4\137\1\0\2\137\1\u0686\2\0\1\137\5\u0686\1\137"+ - "\1\0\5\137\2\u0686\1\0\2\137\1\0\2\u0686\1\137"+ - "\1\u0686\2\0\2\u0686\2\137\7\0\3\137\1\u0686\1\137"+ - "\1\u0686\5\137\1\u0686\3\137\3\0\11\137\1\u0686\2\137"+ - "\1\0\3\137\2\u0686\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\1\150\1\u0687\2\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\7\150\1\u0688\6\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\2\150\1\u05f1\3\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\3\150\1\u0689\2\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\1\u068a\5\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\u068b\3\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\1\u068c"+ - "\2\150\1\u068d\2\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\3\150\1\u02fb\7\0\1\137\16\150\3\0\1\u068e\13\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\1\150\1\u068f\2\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\5\150"+ - "\1\u0690\10\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\3\150\1\u0691\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\14\150\1\u0692\1\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\1\150"+ - "\1\u0693\2\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\2\150"+ - "\1\u0694\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\3\150\1\u0695\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\2\150\1\u0696\11\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\3\150"+ - "\1\u0697\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\5\150\1\u0698\10\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\5\150\1\u0699\10\150"+ - "\3\0\14\150\1\0\5\150\42\0\1\u069a\74\0\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\6\150\1\u069b\7\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\1\150\1\u069c\2\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\1\u069d\15\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\3\150\1\u069e\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\15\150\1\u069f\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\3\150"+ - "\1\u06a0\2\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\5\150\1\u06a1\10\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\2\150\1\u06a2"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\2\150\1\u06a3\1\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\1\150\1\u06a4\2\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\3\150"+ - "\1\u06a5\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\24\0\1\u06a6\33\0\1\u06a6\137\0\1\u0473\121\0\1\u06a7"+ - "\171\0\1\u06a8\117\0\1\u06a9\136\0\1\324\152\0\1\u060e"+ - "\1\0\1\u060f\102\0\1\u06aa\135\0\1\u0611\137\0\1\u06ab"+ - "\74\0\2\71\1\0\1\71\1\0\2\71\4\0\6\71"+ - "\1\0\32\71\1\u026b\27\71\1\u026b\34\71\1\0\1\71"+ - "\1\0\2\71\4\0\6\71\1\0\52\71\1\u0116\20\71"+ - "\1\u0116\23\71\1\0\1\71\1\0\2\71\4\0\4\71"+ - "\1\u06ac\1\71\1\0\61\71\1\u06ac\33\71\20\0\1\u06ad"+ - "\21\0\1\u06ad\74\0\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\3\150\1\u03bf\2\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\3\150\1\u018d"+ - "\2\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\3\150\1\u06ae\2\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\2\150\1\u02a4\13\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\3\150\1\u06af\2\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\1\u02c7\3\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\1\u033e\15\150\3\0\14\150\1\0\5\150\20\0"+ - "\1\u06b0\21\0\1\u06b0\114\0\1\u06b1\21\0\1\u06b1\155\0"+ - "\1\u06b2\140\0\1\u06b3\130\0\1\u06b4\30\0\1\u06b5\72\0"+ - "\1\u04c2\135\0\1\u06b6\156\0\1\u06b7\136\0\1\u06b8\151\0"+ - "\1\u06b9\143\0\1\u06ba\35\0\10\u03f2\1\0\3\u03f2\1\u06bb"+ - "\7\u03f2\1\u06bb\3\u03f2\5\u06bb\2\u03f2\1\u04d1\4\u03f2\2\u06bb"+ - "\4\u03f2\2\u06bb\1\u03f2\1\u06bb\2\u03f2\2\u06bb\14\u03f2\1\u06bb"+ - "\1\u03f2\1\u06bb\5\u03f2\1\u06bb\17\u03f2\1\u06bb\6\u03f2\2\u06bb"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\1\u06bc\15\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\1\u06bd\15\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\1\u06be\5\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\1\u06bf\15\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\150\1\u06c0\2\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\150\1\u06c1"+ - "\2\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\1\u06c2\3\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\13\150\1\u06c3"+ - "\1\0\5\150\1\137\12\0\1\150\1\u06c4\4\150\1\0"+ - "\1\150\1\u05a4\1\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\1\150\1\u06c5\14\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\1\u06c6\3\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\2\150\1\u06c7\1\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\5\150\1\u06c8"+ - "\10\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\1\150\1\u06c9\2\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\1\150\1\u02fb\14\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\1\150\1\u06ca\4\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\3\150\1\u06cb\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\1\150\1\u06cc\4\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\1\150"+ - "\1\u06cd\4\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\2\150\1\u0345\1\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\2\150\1\u06ce\3\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\u06cf\3\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\5\150\1\u06d0\10\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\1\u06d1\5\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\14\150\1\u06d2\1\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\1\150\1\u06d3\2\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\u06d4\3\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\4\150"+ - "\1\u0529\1\150\1\0\2\150\1\u0439\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\1\u06d5\3\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\2\150\1\u06d6\13\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\1\150\1\u06d7\2\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\7\150\1\u06d8\6\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\2\150"+ - "\1\u0608\1\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\5\150\1\u06d9\10\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\2\150\1\u06da\3\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\1\150\1\u06db\2\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\2\150\1\u06dc\3\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\1\150\1\u06dd\4\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\3\150\1\u06de\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\1\150\1\u06df"+ - "\2\150\1\u06e0\1\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\1\u06e1\13\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\1\u06e2\3\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\1\u06e3\4\150\1\u06e4\1\0"+ - "\3\150\2\0\4\150\1\u06e5\2\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\3\150\1\u06e6\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\2\150\1\u06e7\11\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\1\150\1\u046b\14\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\2\150\1\u06e8\3\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\15\150\1\u06e9\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\1\u06ea\3\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\1\150\1\u06eb\3\150\1\u06ec\10\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\1\150\1\u06ed\4\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\1\150\1\u06ee\14\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\14\150\1\u06ef\1\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\1\150\1\u06f0\1\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\4\150\1\u06f1\1\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\1\u06f2\15\150\3\0\14\150\1\0\5\150\13\0\1\u06f3"+ - "\104\0\1\u06f4\16\0\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\1\u0632\3\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\1\150\1\u06f5\4\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\3\150\1\u06f6"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\14\0"+ - "\1\u06f7\6\0\1\u06f8\26\0\1\u06f9\2\0\1\u06fa\61\0"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\1\150\1\u06fb"+ - "\2\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\1\150\1\u06fc\2\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\1\u06fd"+ - "\15\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\1\150\1\u06fe"+ - "\4\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\3\150"+ - "\1\u06ff\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\2\150\1\u0700\1\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\1\u0701\15\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\1\150\1\u0702\2\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\3\150\1\u0703\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\1\150\1\u0704\3\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\3\150\1\u0408\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\1\u0705\15\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\4\150\1\u0316\11\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\3\150\1\u0401\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\2\150\1\u0706"+ - "\3\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\2\150\1\u0707\3\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\1\u0708\15\150\3\0\14\150"+ - "\1\0\5\150\24\0\1\u0709\61\0\1\u070a\30\0\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\1\150"+ - "\1\u070b\2\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\1\150\1\u070c\2\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\1\u070d\1\u070e\2\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\2\150\1\u070f\1\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\4\150\1\u04e0\11\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\1\u0710\5\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\11\150\1\u0711\4\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\u0712\3\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\2\150\1\u04e0"+ - "\3\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\2\150\1\u0713\13\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\3\150"+ - "\1\u0714\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\7\150\1\u018d\6\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\1\137\1\u01fc"+ - "\4\137\1\0\2\137\1\u01fc\2\0\1\137\5\u01fc\1\137"+ - "\1\0\5\137\2\u01fc\1\0\2\137\1\0\2\u01fc\1\137"+ - "\1\u01fc\2\0\2\u01fc\2\137\7\0\3\137\1\u01fc\1\137"+ - "\1\u01fc\5\137\1\u01fc\3\137\3\0\11\137\1\u01fc\2\137"+ - "\1\0\3\137\2\u01fc\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\2\150\1\u0715\3\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\1\u0716\5\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\150\1\u0717"+ - "\2\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\2\150\1\u0718\3\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\11\150\1\u0719\4\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\2\150\1\u071a\3\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\3\150"+ - "\1\u071b\2\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\1\u071c\5\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\2\150\1\u071d\1\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\3\150\1\u071e\2\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\1\u071f\15\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\u0720\3\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\2\150"+ - "\1\u0321\1\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\2\150\1\u0721\1\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\5\150\1\u0722"+ - "\10\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\1\u0723\3\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\12\150\1\u0724\3\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\1\150\1\u0725\2\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\14\150\1\u0726\1\150"+ - "\3\0\14\150\1\0\5\150\41\0\1\u0727\75\0\1\137"+ - "\12\0\2\150\1\u0728\3\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\3\150"+ - "\1\u0729\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\1\150\1\u072a\4\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\4\150\1\u072b\1\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\u072c\3\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\2\150\1\u06a2\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\3\150\1\u072d"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\1\150\1\u072e\2\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\1\150\1\u01e4\4\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\2\150\1\u072f\11\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\1\u0730\15\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\3\150\1\u0731\12\150\3\0\14\150"+ - "\1\0\5\150\21\0\1\u0732\153\0\1\u0733\201\0\1\u0734"+ - "\135\0\1\324\74\0\1\u0735\161\0\1\u0736\55\0\2\71"+ - "\1\0\1\71\1\0\2\71\4\0\6\71\1\0\1\71"+ - "\1\u0737\36\71\1\u0737\54\71\21\0\1\u0738\115\0\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\5\150\1\u0739\10\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\2\150\1\u0298\3\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\21\0\1\u073a\136\0\1\u073b\177\0"+ - "\1\u03e2\135\0\1\u073c\156\0\1\u073d\116\0\1\u073e\152\0"+ - "\1\u03e2\103\0\1\u073f\156\0\1\u058f\116\0\1\u058f\136\0"+ - "\1\u0740\74\0\10\u03f2\1\0\3\u03f2\1\u02ef\7\u03f2\1\u02ef"+ - "\3\u03f2\5\u02ef\2\u03f2\1\u04d1\4\u03f2\2\u02ef\4\u03f2\2\u02ef"+ - "\1\u03f2\1\u02ef\2\u03f2\2\u02ef\14\u03f2\1\u02ef\1\u03f2\1\u02ef"+ - "\5\u03f2\1\u02ef\17\u03f2\1\u02ef\6\u03f2\2\u02ef\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\1\150"+ - "\1\u0741\4\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\15\150\1\u0742\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\4\150\1\u0743\1\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\5\150\1\u0744"+ - "\10\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\5\150\1\u0400\10\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\2\150\1\u0354\3\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\2\150\1\u0745\13\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\1\150\1\u0746\4\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\1\150\1\u0747\2\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\1\u0748\15\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\2\150\1\u0439\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\2\150\1\u0749"+ - "\11\150\1\0\5\150\1\137\12\0\3\150\1\u0528\2\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\1\u074a\3\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\11\150\1\u074b\4\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\2\150\1\u074c\3\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\1\0\1\u074d\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\2\150\1\u0330\3\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\2\150\1\u074e\13\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\11\150\1\u074f\4\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\1\u0750\5\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\3\150\1\u0751\2\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\1\u0752"+ - "\15\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\1\u0753\3\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\u0754\3\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\1\150\1\u0755\14\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\1\150\1\u0756\4\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\1\u0757\3\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\2\150"+ - "\1\u0758\13\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\1\150"+ - "\1\u0759\4\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\2\150\1\u075a\3\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\1\150\1\u075b\2\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\5\150"+ - "\1\u075c\10\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\1\150\1\u075d\2\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\1\u075e\13\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\1\u075f\3\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\11\150\1\u0760\4\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\2\150\1\u0761\1\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\1\150"+ - "\1\u0762\4\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\1\150\1\u0763"+ - "\2\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\4\150\1\u0764\11\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\2\150\1\u0765\3\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\3\150\1\u0766\12\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\1\150\1\u0767\4\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\2\150\1\u0768\13\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\1\u0769"+ - "\15\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\1\u076a\15\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\5\150\1\u076b\10\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\2\150\1\u0527\1\u0528\2\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\1\u076c\5\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\2\150\1\u0512"+ - "\1\150\1\u0529\1\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\1\u076d\3\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\1\u076e\3\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\6\150"+ - "\1\311\5\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\u076f\3\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\5\150\1\u0770\10\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\1\150\1\u0771\4\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\2\150\1\u017d\13\150\3\0"+ - "\14\150\1\0\5\150\42\0\1\u0772\137\0\1\u0773\73\0"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\1\u0774\15\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\15\150\1\u02fb\3\0\14\150"+ - "\1\0\5\150\61\0\1\u0775\136\0\1\u0776\115\0\1\u0777"+ - "\177\0\1\u0778\35\0\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\1\u0779\3\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\3\150\1\u077a\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\1\u077b\5\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\150\1\u035e"+ - "\2\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\2\150\1\u077c\3\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\5\150\1\u077d\10\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\3\150\1\u077e\2\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\2\150\1\u077f\13\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\2\150\1\u0780\3\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\1\u0781\3\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\1\150\1\u0726\4\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\5\150\1\u0782\10\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\1\u0783\1\u0784\4\150\1\0\1\150\1\u05db\1\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\2\150\1\u0785\3\150\1\311\5\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\3\150\1\u0608\2\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\43\0\1\u0786\153\0\1\u0786\56\0\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\7\150\1\u0787\6\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\1\150\1\u0788\14\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\1\150\1\u0789\4\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\1\150\1\u078a\2\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\150\1\u078b"+ - "\2\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\2\150\1\u078c\3\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\5\150\1\u078d\10\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\3\150\1\u052b\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\1\150\1\u078e"+ - "\4\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\1\u078f\15\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\1\u0790\3\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\2\150\1\u0791\3\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\1\150\1\u063c\4\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\1\150\1\u0792"+ - "\4\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\1\u0793\15\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\1\150\1\u0794\4\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\7\150\1\u0795\6\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\2\150\1\u0796\3\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\3\150\1\u057c\2\150\1\0\1\150\1\u0797\1\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\12\150\1\u0798\3\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\2\150\1\u0799\3\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\1\150"+ - "\1\u079a\4\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\4\150\1\u079b"+ - "\2\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\1\u079c\3\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\1\u079d\3\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\2\150\1\u079e\3\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\u079f\3\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\2\150"+ - "\1\u07a0\1\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\1\u0330\3\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\75\0\1\u07a1\41\0\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\1\u07a2\3\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\1\u07a3\15\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\2\150\1\u07a4\3\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\5\150\1\u07a5\10\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\4\150\1\u07a6"+ - "\11\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\1\u07a7\15\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\3\150"+ - "\1\u07a8\2\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\1\150\1\u07a9\2\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\1\150\1\u07aa\4\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\2\150\1\u0508\11\150\1\0\5\150\42\0\1\u07ab"+ - "\156\0\1\u06a9\136\0\1\u07ac\117\0\1\u07ad\73\0\2\71"+ - "\1\0\1\71\1\0\2\71\4\0\6\71\1\0\11\71"+ - "\1\u0116\25\71\1\u0116\55\71\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\13\150\1\u0620\1\0\5\150\44\0\1\u07ae\152\0"+ - "\1\u07af\120\0\1\u07b0\154\0\1\u07b1\164\0\1\u07b2\30\0"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\1\150\1\u07b3\4\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\1\u07b4\3\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\4\150\1\u07b5\1\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\2\150\1\u067e\1\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\1\u07b6"+ - "\3\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\4\150\1\u07b7\1\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\1\150\1\u07b8\2\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\3\150\1\u07b9\2\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\150\1\u07ba"+ - "\2\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\4\150\1\u0330\11\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\1\u07bb\3\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\1\u07bc\15\150"+ - "\3\0\14\150\1\0\5\150\52\0\1\u06f9\64\0\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\1\u07bd\5\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\1\150\1\u07be\2\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\1\u07bf\5\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\2\150\1\u07c0\3\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\3\150\1\u07c1"+ - "\2\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\3\150\1\u07c2\2\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\1\150\1\u07c3\4\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\2\150\1\u0527\3\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\2\150\1\u052f\2\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\1\0\1\u07c4"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\1\u07c5\5\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\1\u07c6\3\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\1\150\1\u07c7\14\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\u07c8\3\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\2\150\1\u07c9"+ - "\3\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\1\150\1\u07ca\2\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\2\150\1\u07cb\1\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\4\150\1\u07cc\1\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\1\150\1\u07cd\2\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\1\150"+ - "\1\u07ce\2\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\1\150\1\u07cf\2\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\1\u07d0\15\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\1\150\1\u07d1\3\150\1\137\12\0"+ - "\6\150\1\0\1\150\1\u07d2\1\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\1\150\1\u07d3\2\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\1\150\1\u07d4\4\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\6\150"+ - "\1\u07d5\7\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\2\150\1\u07d6\13\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\1\150\1\u07d7\4\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\3\150\1\u07d8\2\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\1\u05e2"+ - "\15\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\5\150\1\u07d9\10\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\3\150"+ - "\1\u02fb\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\1\150\1\u04df\2\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\3\150\1\u07da\2\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\3\150\1\u07db\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\1\u07dc\3\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\61\0\1\u07dd"+ - "\153\0\1\u07de\40\0\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\1\u05c5\5\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\42\0\1\u07df\137\0\1\u07e0"+ - "\174\0\1\u07e1\117\0\1\u07e2\54\0\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\1\150\1\u06e9"+ - "\4\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\3\150\1\u0428\12\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\1\150\1\u07e3\4\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\1\150\1\u07e4\2\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\13\150\1\u040f\1\0\5\150\1\137\12\0"+ - "\3\150\1\u07e5\2\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\15\150\1\u0330\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\1\u07e6\3\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\2\150\1\u0401\13\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\2\150"+ - "\1\u0330\13\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\u07e7\3\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\1\u07e8\15\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\1\u07e9\1\u07ea\2\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\76\0\1\u07eb\40\0\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\2\150\1\u07ec\11\150\1\0\5\150\1\137"+ - "\12\0\3\150\1\u0528\2\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\1\u052d\13\150"+ - "\1\0\5\150\1\137\12\0\1\150\1\u07ed\4\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\1\0\1\u07ee\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\2\150\1\u07ef\1\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\6\150\1\u07f0\7\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\1\u05c2\5\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\3\150\1\u07f1\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\5\150\1\u07f2"+ - "\10\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\1\u07f3\5\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\3\150\1\u07f4\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\1\u07f5"+ - "\3\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\1\150\1\u054c\4\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\1\u07f6\3\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\1\u07f7\5\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\7\150"+ - "\1\u07f8\6\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\1\u07f9\15\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\1\150"+ - "\1\u07fa\2\150\7\0\1\137\1\u07fb\15\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\1\u07fc\3\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\11\150\1\u07fd"+ - "\4\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\1\150\1\u07fe"+ - "\4\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\11\150\1\u07ff\4\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\2\150\1\u0800\1\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\3\150\1\u0801"+ - "\12\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\4\150\1\u0802"+ - "\1\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\5\150\1\u0803\10\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\3\150\1\u0804\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\1\150\1\u0805\4\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\u0806\3\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\1\u0807\3\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\3\150\1\u0808\2\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\1\150\1\u0809\4\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\1\150\1\u080a\4\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\2\150"+ - "\1\u080b\13\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\2\150"+ - "\1\u06c7\3\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\75\0\1\u080c\121\0\1\u080d\20\0\1\u080e\77\0\1\u080f"+ - "\154\0\1\u0810\140\0\1\u07b1\135\0\1\u03e2\155\0\1\u03e2"+ - "\132\0\1\u0811\42\0\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\1\u0812\5\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\3\150\1\u0813\2\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\u0814\3\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\2\150\1\u0815\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\2\150\1\u0816\1\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\2\150\1\u0817\1\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\4\150\1\u0818\1\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\3\150"+ - "\1\u0819\2\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\1\u050c\6\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\1\150\1\u081a\4\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\2\150\1\u081b\1\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\2\150\1\u0608"+ - "\3\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\7\150\1\u081c\6\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\2\150\1\u081d"+ - "\11\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\2\150\1\u044e"+ - "\13\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\3\150\1\u081e\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\13\0\1\u081f"+ - "\104\0\1\u0820\16\0\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\3\150\1\u0821\2\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\3\150\1\u0822\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\1\u0823\5\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\4\150\1\u0824\11\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\5\150\1\u0825\10\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\2\150\1\u0826\1\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\1\u0827\3\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\1\u0828\3\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\11\150\1\u0829\4\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\2\150\1\u082a\3\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\3\150\1\u082b\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\7\150"+ - "\1\u082c\6\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\u082d\3\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\1\u082e\15\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\2\150\1\u0726\3\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\1\u082f\3\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\1\u079c\5\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\u0830\3\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\11\150\1\u0831\4\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\5\150\1\u0832\10\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\2\150\1\u0833\1\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\2\150\1\u0834\3\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\2\150\1\u0835"+ - "\3\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\3\150"+ - "\1\u07ff\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\42\0\1\u0836\155\0\1\u0837\135\0\1\u0838\160\0\1\u0839"+ - "\116\0\1\u083a\116\0\1\u083b\74\0\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\2\150\1\u083c\13\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\3\150\1\u083d\2\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\3\150\1\u083e\2\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\3\150\1\u083f\2\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\2\150\1\u02fb"+ - "\3\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\1\u0840\4\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\2\150\1\u0841\1\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\2\150\1\u0842\3\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\7\150"+ - "\1\u0843\6\150\3\0\14\150\1\0\5\150\74\0\1\u083a"+ - "\42\0\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\1\u07e9\3\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\2\150\1\u0844\1\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\52\0\1\u0845\64\0\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\1\u0846"+ - "\3\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\3\150\1\u0847\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\3\150\1\u06e8\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\7\150\1\u035e\6\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\3\150\1\u074a\2\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\1\u0848\15\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\1\150"+ - "\1\u0849\2\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\1\150\1\u084a\2\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\2\150\1\u084b\3\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\1\u084c\5\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\3\150"+ - "\1\u084d\2\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\2\150\1\u084e\3\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\1\u04f0\5\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\1\150\1\u0330\4\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\1\150\1\u06cb\2\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\1\150\1\u084f\4\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\1\u0850\3\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\4\150\1\u01d8\11\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\1\u0800"+ - "\15\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\3\150\1\u0851\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\13\150\1\u0852\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\1\u0853\15\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\11\150\1\u0854\4\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\4\150\1\u0855\11\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\4\150"+ - "\1\u0856\11\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\1\u0330\13\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\11\150\1\u0857\4\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\1\150\1\u0858\2\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\3\150\1\u0859"+ - "\12\150\3\0\14\150\1\0\5\150\103\0\1\u0611\75\0"+ - "\1\u047c\137\0\1\u0611\135\0\1\u06b6\172\0\1\u058f\40\0"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\7\150\1\u07aa\6\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\5\150\1\u085a\10\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\1\150\1\u085b\4\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\2\150\1\u085c"+ - "\1\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\1\u085d\15\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\1\u085e\3\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\5\150\1\u085f\10\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\150\1\u0860\2\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\2\150\1\u0861\3\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\1\0"+ - "\1\u0862\3\150\1\u0863\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\1\150\1\u0864\2\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\7\150"+ - "\1\u06a4\6\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\1\u0865\15\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\5\150\1\u0866\10\150\3\0\14\150\1\0"+ - "\5\150\40\0\1\u0867\141\0\1\u0868\73\0\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\4\150\1\u0869\11\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\3\150\1\u086a\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\2\150\1\u086b\3\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\3\150\1\u0808\2\150"+ - "\1\0\2\150\1\u0439\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\1\u086c\15\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\1\u086d"+ - "\3\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\5\150\1\u086e\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\1\u086f\15\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\2\150\1\u0527\3\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\2\150"+ - "\1\u0870\13\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\3\150\1\u0330"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\1\u0871"+ - "\3\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\2\150\1\u06cb\13\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\2\150\1\u0872\13\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\150\1\u0873\2\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\3\150\1\u0874"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\1\150"+ - "\1\u0875\2\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\2\150\1\u0876\3\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\4\150\1\u0877"+ - "\11\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\1\u0878\3\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\u0879\3\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\60\0"+ - "\1\u07a1\116\0\1\u087a\200\0\1\u087b\74\0\1\u087c\176\0"+ - "\1\u087d\116\0\1\u087e\56\0\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\u087f\3\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\2\150\1\u042a"+ - "\3\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\3\150\1\u0880\2\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\1\u0881\3\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\1\u0882\5\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\2\150\1\u0883\1\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\3\150\1\u0884\12\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\1\0\1\u0885"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\1\u0886\15\150\3\0\14\150\1\0"+ - "\5\150\101\0\1\u0887\35\0\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\3\150\1\u0888\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\1\150"+ - "\1\u0889\4\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\1\150\1\u088a\4\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\11\150\1\u088b\4\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\11\150\1\u088c"+ - "\4\150\3\0\14\150\1\0\5\150\1\137\12\0\1\u088d"+ - "\5\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\7\150\1\u088e\4\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\2\150\1\u088f\3\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\6\150\1\u02fb\7\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\150\1\u0330\2\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\150\1\u0890"+ - "\2\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\3\150\1\u06cb\2\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\1\u0891\15\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\1\150\1\u0892\2\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\1\u0893\5\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\150\1\u0894"+ - "\2\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\1\150\1\u0895\4\150\1\0\2\150\1\u0896"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\1\u0897\13\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\1\150\1\u0898\1\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\150\1\u0899"+ - "\2\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\2\150\1\u089a\1\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\5\150\1\u089b\10\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\13\150\1\u04e0\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\1\u089c\3\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\13\150\1\u0608\2\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\4\150\1\u0529\1\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\6\150\1\u089d\7\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\6\150"+ - "\1\u04e0\7\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\150\1\u089e"+ - "\2\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\115\0\1\u089f\21\0\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\1\0\1\u08a0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\1\150\1\u08a1\4\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\4\150\1\u08a2\11\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\1\u08a3\15\150\3\0\14\150\1\0"+ - "\5\150\53\0\1\u08a4\164\0\1\u08a5\35\0\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\2\150\1\u08a6"+ - "\1\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\3\150\1\u08a7"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\1\150\1\u08a8\2\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\3\150\1\u01d8\2\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\1\150"+ - "\1\u08a9\4\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\3\150\1\u08aa\12\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\1\u08ab\5\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\3\150\1\u0330\12\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\1\150\1\u08ac\4\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\150\1\u08ad"+ - "\2\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\4\150\1\u08ae\11\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\3\150\1\u01d8\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\2\150\1\u08af\3\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\1\u08b0\15\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\u08b1\3\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\1\150\1\u08b2\4\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\3\150\1\u08b3\2\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\102\0\1\u08b4\130\0\1\u069a\123\0"+ - "\1\u08b5\135\0\1\u08b6\117\0\1\u08b7\75\0\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\1\u08b8\3\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\3\150\1\u08b9\2\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\1\150\1\u08ba\4\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\1\u08bb\3\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\u08bc\3\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\1\u08bd\15\150\3\0\14\150\1\0\5\150\13\0\1\u08be"+ - "\123\0\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\3\150\1\u06c7\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\102\0\1\u08bf\34\0\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\2\150\1\u08c0\1\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\1\u08c1\15\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\11\150\1\u08c2\4\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\2\150\1\u052f\2\150\1\137\12\0\1\150\1\u08c3"+ - "\4\150\1\0\2\150\1\u0439\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\3\150\1\u08c4\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\2\150\1\u08c5\3\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\1\150\1\u08c6\2\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\1\u08c7\5\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\1\150\1\u08c8\14\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\1\u08c9\5\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\1\150\1\u08ad"+ - "\2\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\1\150\1\u08ca\4\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\2\150\1\u08cb\3\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\2\150\1\u08cc"+ - "\1\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\3\150\1\u08cd\2\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\7\150\1\u08ce\6\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\5\150"+ - "\1\u08cf\10\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\2\150"+ - "\1\u08d0\3\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\1\u08d1\3\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\3\150\1\u05ce\2\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\11\150\1\u08d2"+ - "\4\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\1\u08d3\5\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\3\150"+ - "\1\u08d4\2\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\44\0\1\u08d5\125\0\1\u08d6\103\0\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\5\150\1\u08d7\10\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\5\150\1\u08d8\10\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\3\150\1\u0330\2\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\63\0\1\u08d9\151\0\1\u08da\40\0"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\1\u08db\3\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\5\150\1\u04e7\10\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\2\150\1\u08dc\3\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\2\150\1\u08dd\1\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\1\150\1\u08de\4\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\3\150\1\u08df\2\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\2\150\1\u08e0\3\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\2\150\1\u0726\1\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\1\u06e3\5\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\1\150\1\u08e1\2\150\1\u08e2\1\150\1\0"+ - "\2\150\1\u0439\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\3\150\1\u08e3\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\2\150\1\u08e4\2\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\1\150\1\u08ae\4\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\1\150\1\u08e5\4\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\150\1\u08e6\2\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\u08e7\3\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\77\0"+ - "\1\u08e8\141\0\1\u08e9\75\0\1\u07a1\176\0\1\u08ea\35\0"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\1\u08eb\5\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\5\150\1\u08ec\10\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\4\150\1\u08ed\1\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\3\150\1\u08ee"+ - "\2\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\2\150\1\u0659\13\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\4\150\1\u0608\11\150\3\0"+ - "\14\150\1\0\5\150\101\0\1\u08ef\143\0\1\u08f0\30\0"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\1\150\1\u08f1\2\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\3\150\1\u08f2\2\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\150\1\u08f3\2\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\2\150\1\u08f4"+ - "\1\150\7\0\1\137\1\u08f5\15\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\5\150\1\u08f6\10\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\1\150\1\u08f7\4\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\2\150\1\u08f8\1\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\2\150\1\u08f9\3\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\1\u08fa\5\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\3\150\1\u08bd\2\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\2\150"+ - "\1\u0726\13\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\4\150\1\u08fb\2\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\2\150"+ - "\1\u08e4\2\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\1\150\1\u08fc\2\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\2\150"+ - "\1\u08fd\13\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\u08fe\3\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\3\150\1\u08ff\2\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\1\150\1\u04ec\4\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\3\150\1\u08e3\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\3\150\1\u0900\2\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\u057c\3\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\1\150\1\u0901\4\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\4\150\1\u0902\11\150\3\0"+ - "\14\150\1\0\5\150\16\0\1\u0903\1\u0904\3\0\1\u0905"+ - "\62\0\1\u0906\103\0\1\u0907\63\0\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\2\150\1\u054c"+ - "\3\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\4\150\1\u0908\1\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\60\0\1\u0909\152\0\1\u090a\42\0\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\1\0\1\u090b\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\5\150\1\u090c\10\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\1\150\1\u090d\2\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\1\u090e\3\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\4\150"+ - "\1\u082b\11\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\5\150\1\u090f\10\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\1\u0910\15\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\1\150\1\u0911\4\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\2\150\1\u0912\1\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\5\150\1\u0913\10\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\1\0\1\u0914"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\2\150\1\u0915\3\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\1\150\1\u082b\4\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\42\0\1\u0916\154\0\1\u0917"+ - "\121\0\1\u0918\73\0\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\3\150\1\u0919\2\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\2\150\1\u091a"+ - "\3\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\1\150\1\u091b\4\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\2\150\1\u091c\3\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\105\0\1\u091d\111\0\1\u091e\56\0"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\6\150\1\u076d\7\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\14\150\1\u091f\1\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\2\150\1\u0920\3\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\150\1\u0921"+ - "\2\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\3\150\1\u0922\2\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\1\u0923\3\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\1\u0924\3\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\5\150"+ - "\1\u0925\10\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\1\150"+ - "\1\u0926\4\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\5\150\1\u0927\10\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\1\150\1\u0767\4\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\3\150\1\u0928\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\1\u0929\15\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\1\150"+ - "\1\u092a\4\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\15\150\1\u0608\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\4\150\1\u092b\11\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\1\150\1\u051e\2\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\1\u04df\15\150\3\0\14\150\1\0\5\150\43\0\1\u0909"+ - "\134\0\1\u092c\171\0\1\u092d\136\0\1\u092e\125\0\1\u092f"+ - "\53\0\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\5\150\1\u0930\10\150\3\0"+ - "\14\150\1\0\5\150\42\0\1\u07a1\174\0\1\u0931\52\0"+ - "\1\u0932\122\0\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\3\150\1\u0933\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\3\150\1\u0934\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\150\1\u0935\2\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\u0936\3\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\3\150\1\u0646\2\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\4\150\1\u0937\11\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\1\u0938\3\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\150\1\u0939\2\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\4\150\1\u093a\11\150\3\0\14\150\1\0\5\150"+ - "\15\0\1\u093b\121\0\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\1\u093c\15\150"+ - "\3\0\14\150\1\0\5\150\24\0\1\u093d\127\0\1\u093e"+ - "\223\0\1\u093f\34\0\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\4\150\1\u04e7"+ - "\11\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\5\150\1\u0940\10\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\1\u0941\15\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\5\150\1\u0942\10\150\3\0\14\150"+ - "\1\0\5\150\103\0\1\u0943\131\0\1\u0944\40\0\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\1\u0945"+ - "\3\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\3\150\1\u08e3"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\3\150\1\u076d\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\3\150\1\u0946\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\2\150\1\u035f\1\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\1\150\1\u0947\2\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\4\150\1\u05d2\11\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\1\u0948\3\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\13\150"+ - "\1\u0726\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\3\150\1\u0949\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\4\150"+ - "\1\u094a\11\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\1\150\1\u094b"+ - "\2\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\1\150\1\u0433\2\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\101\0\1\u094c\100\0\1\u094d\133\0\1\u094e"+ - "\140\0\1\u094f\74\0\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\2\150\1\u092a"+ - "\13\150\3\0\14\150\1\0\5\150\60\0\1\u0950\152\0"+ - "\1\u0951\42\0\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\2\150\1\u0952\3\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\3\150\1\u0953\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\4\150\1\u0954\11\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\3\150"+ - "\1\u069c\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\1\u0955\3\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\2\150\1\u0956\13\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\6\150\1\u082b"+ - "\7\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\2\150\1\u0870"+ - "\3\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\60\0"+ - "\1\u0957\56\0\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\1\150\1\u0958\4\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\104\0\1\u0959\113\0\1\u095a"+ - "\174\0\1\u095b\17\0\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\1\150\1\u095c\2\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\10\150\1\u063c\5\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\1\150"+ - "\1\u095d\2\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\62\0\1\u095e\155\0\1\u095f\35\0\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\1\150"+ - "\1\u0960\4\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\2\150\1\u0961\3\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\11\150\1\u0962\4\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\1\150\1\u0963\2\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\7\150\1\u0964\4\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\5\150\1\u0965\10\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\2\150\1\u081e\3\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\105\0\1\u0966\133\0\1\u07a1"+ - "\107\0\1\u0967\124\0\1\u0968\110\0\1\u0969\36\0\1\u096a"+ - "\127\0\1\u096b\73\0\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\5\150\1\u096c"+ - "\10\150\3\0\14\150\1\0\5\150\1\137\12\0\1\150"+ - "\1\u096d\4\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\16\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\1\150\1\u0662\1\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\4\150\1\u096e\1\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\5\150\1\u07c3"+ - "\10\150\3\0\14\150\1\0\5\150\100\0\1\u096f\36\0"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\1\0"+ - "\1\u0970\4\150\7\0\1\137\16\150\3\0\14\150\1\0"+ - "\5\150\76\0\1\u0971\103\0\1\u0972\167\0\1\u0973\42\0"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\2\150\1\u0974\1\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\2\150\1\u0975\1\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\60\0\1\u0976\163\0\1\u0977"+ - "\31\0\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\3\150\1\u0978\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\1\150\1\u0979\2\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\1\0\1\u097a\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\1\137\12\0\6\150"+ - "\1\0\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\11\150\1\u097b\4\150\3\0\14\150\1\0\5\150\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\1\u097c"+ - "\3\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\1\137\12\0\6\150\1\0\3\150\2\0\7\150\1\0"+ - "\1\u015b\3\150\1\u097d\2\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\101\0\1\u097e\117\0\1\u0836\135\0\1\u097f"+ - "\153\0\1\u0980\122\0\1\u0981\116\0\1\u0982\74\0\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\2\150\1\u076d\13\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\4\150\7\0\1\137\3\150\1\u0983\12\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\1\u0984\15\150"+ - "\3\0\14\150\1\0\5\150\101\0\1\u0985\152\0\1\u0986"+ - "\101\0\1\u0987\160\0\1\u0836\134\0\1\u0836\36\0\1\137"+ - "\12\0\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b"+ - "\6\150\1\0\1\137\1\150\1\0\4\150\2\0\4\150"+ - "\7\0\1\137\5\150\1\u0988\10\150\3\0\14\150\1\0"+ - "\5\150\1\137\12\0\6\150\1\0\1\150\1\u05db\1\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\16\0\1\u0989\5\0\1\u0544\173\0"+ - "\1\u098a\55\0\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\5\150\1\u098b\10\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\3\150\1\u098c\2\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\121\0\1\u098d"+ - "\15\0\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\1\0\1\u098e\4\150\7\0\1\137\16\150\3\0\14\150"+ - "\1\0\5\150\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\1\150\1\u098f\4\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\6\150"+ - "\1\u0330\7\150\3\0\14\150\1\0\5\150\42\0\1\u0990"+ - "\172\0\1\u0991\101\0\1\u0992\171\0\1\u0993\103\0\1\u0994"+ - "\75\0\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0\4\150"+ - "\2\0\1\150\1\u0995\2\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\5\150\1\u0850"+ - "\10\150\3\0\14\150\1\0\5\150\41\0\1\u0996\141\0"+ - "\1\u0997\175\0\1\u0998\33\0\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137"+ - "\1\150\1\0\4\150\2\0\4\150\7\0\1\137\16\150"+ - "\3\0\13\150\1\u0999\1\0\5\150\105\0\1\u099a\113\0"+ - "\1\u099b\54\0\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\4\150\7\0\1\137\1\u099c\15\150\3\0"+ - "\14\150\1\0\5\150\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\2\150\1\u076d\3\150\1\0"+ - "\1\137\1\150\1\0\4\150\2\0\4\150\7\0\1\137"+ - "\16\150\3\0\14\150\1\0\5\150\60\0\1\u099d\75\0"+ - "\1\u099e\117\0\1\137\12\0\6\150\1\0\3\150\2\0"+ - "\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150\1\0"+ - "\4\150\2\0\3\150\1\u05df\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\101\0\1\u099f\77\0\1\u09a0\175\0"+ - "\1\u09a1\133\0\1\u09a2\134\0\1\u09a3\42\0\1\137\12\0"+ - "\6\150\1\0\3\150\2\0\7\150\1\0\1\u015b\3\150"+ - "\1\u0511\2\150\1\0\1\137\1\150\1\0\4\150\2\0"+ - "\4\150\7\0\1\137\16\150\3\0\14\150\1\0\5\150"+ - "\60\0\1\u09a4\74\0\1\u0903\4\0\1\u0905\62\0\1\u0906"+ - "\72\0\1\u09a5\74\0\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\1\u09a6\3\150\7\0\1\137\16\150"+ - "\3\0\14\150\1\0\5\150\105\0\1\u09a7\54\0\1\u09a8"+ - "\113\0\1\137\12\0\6\150\1\0\3\150\2\0\7\150"+ - "\1\0\1\u015b\3\150\1\u09a9\2\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\14\150\1\0\5\150\42\0\1\u09aa\134\0\1\u099d\206\0"+ - "\1\u0836\41\0\1\u09ab\2\0\1\u09ac\4\0\1\u09ad\62\0"+ - "\1\u09ae\133\0\1\u0909\144\0\1\u07a1\107\0\1\u07a1\152\0"+ - "\1\u09af\141\0\1\u09b0\35\0\1\137\12\0\6\150\1\0"+ - "\3\150\2\0\7\150\1\0\1\u015b\1\150\1\u0608\4\150"+ - "\1\0\1\137\1\150\1\0\4\150\2\0\4\150\7\0"+ - "\1\137\16\150\3\0\14\150\1\0\5\150\40\0\1\u09b1"+ - "\157\0\1\u09b2\55\0\1\137\12\0\6\150\1\0\3\150"+ - "\2\0\7\150\1\0\1\u015b\6\150\1\0\1\137\1\150"+ - "\1\0\4\150\2\0\4\150\7\0\1\137\16\150\3\0"+ - "\2\150\1\u05b9\11\150\1\0\5\150\55\0\1\u09b3\164\0"+ - "\1\u09b4\76\0\1\u09b5\167\0\1\u09b6\136\0\1\u09b7\104\0"+ - "\1\u09b8\170\0\1\u09b9\104\0\1\u09ba\171\0\1\u09bb\142\0"+ - "\1\u09bc\117\0\1\u09bd\116\0\1\u09be\137\0\1\u09bf\133\0"+ - "\1\u09c0\155\0\1\u09c1\122\0\1\u09c2\154\0\1\u09c3\151\0"+ - "\1\u09c4\122\0\1\u09c5\157\0\1\u09c6\50\0\1\u09ab\225\0"+ - "\1\u09be\107\0\1\u09c7\103\0\1\u09c8\243\0\1\u09c9\64\0"+ - "\1\u09ca\123\0\1\u09cb\160\0\1\u09cc\116\0\1\u09cd\156\0"+ - "\1\u09ce\151\0\1\u09cf\122\0\1\u09d0\137\0\1\u09d1\116\0"+ - "\1\u09d2\174\0\1\u07a1\116\0\1\u09d3\136\0\1\u09be\161\0"+ - "\1\u0836\76\0\1\u09d4\153\0\1\u045f\133\0\1\u09d5\122\0"+ - "\1\u09d6\175\0\1\u09d7\132\0\1\u09d8\123\0\1\u09d9\137\0"+ - "\1\u087d\115\0\1\u09da\137\0\1\u09db\201\0\1\u07a1\125\0"+ - "\1\u08b6\42\0"; - - private static int [] zzUnpackTrans() { - int [] result = new int[227145]; - int offset = 0; - offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); - offset = zzUnpackTrans(ZZ_TRANS_PACKED_1, offset, result); - return result; - } - - private static int zzUnpackTrans(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - value--; - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /* error codes */ - private static final int ZZ_UNKNOWN_ERROR = 0; - private static final int ZZ_NO_MATCH = 1; - private static final int ZZ_PUSHBACK_2BIG = 2; - - /* error messages for the codes above */ - private static final String ZZ_ERROR_MSG[] = { - "Unkown internal scanner error", - "Error: could not match input", - "Error: pushback value was too large" - }; - - /** - * ZZ_ATTRIBUTE[aState] contains the attributes of state aState - */ - private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); - - private static final String ZZ_ATTRIBUTE_PACKED_0 = - "\6\0\2\1\1\0\2\1\1\0\2\1\14\0\1\1"+ - "\3\0\2\1\1\11\4\1\1\11\5\1\1\11\2\1"+ - "\2\11\2\1\4\11\1\1\1\11\1\1\1\11\26\1"+ - "\1\11\2\1\2\11\1\1\5\11\1\1\1\11\2\1"+ - "\1\11\2\1\1\11\1\1\2\11\14\1\1\11\7\1"+ - "\1\11\12\1\2\11\2\1\2\11\2\1\1\11\6\1"+ - "\1\11\4\1\1\11\2\1\1\11\7\1\1\11\50\1"+ - "\1\11\5\1\2\11\4\1\2\11\1\1\2\11\5\1"+ - "\3\11\4\1\4\11\1\1\1\11\6\1\4\11\1\1"+ - "\3\11\6\1\2\11\5\0\1\11\105\1\1\11\2\0"+ - "\1\1\1\0\1\1\1\11\1\0\76\1\1\11\2\1"+ - "\3\0\1\11\12\0\1\11\2\0\1\11\16\0\1\1"+ - "\1\11\2\1\1\0\1\11\51\1\1\11\56\1\2\11"+ - "\3\1\1\0\1\11\1\1\15\0\1\1\1\0\1\11"+ - "\5\0\1\1\2\11\3\1\1\11\1\0\1\11\1\0"+ - "\1\11\4\0\101\1\1\11\1\0\1\1\1\0\3\1"+ - "\1\0\72\1\44\0\1\11\1\1\1\0\3\1\1\0"+ - "\164\1\25\0\2\1\2\11\2\0\44\1\1\0\1\11"+ - "\46\1\1\0\1\11\3\0\1\1\3\0\1\1\1\11"+ - "\11\0\1\11\11\0\1\1\5\0\155\1\1\0\17\1"+ - "\23\0\2\1\2\0\24\1\1\0\27\1\37\0\163\1"+ - "\1\0\15\1\16\0\14\1\1\0\21\1\24\0\156\1"+ - "\1\0\13\1\12\0\4\1\1\0\7\1\4\0\1\1"+ - "\6\0\66\1\1\0\3\1\1\0\21\1\1\0\40\1"+ - "\1\0\13\1\6\0\1\1\1\0\2\1\13\0\70\1"+ - "\2\0\2\1\4\0\16\1\2\0\34\1\1\0\12\1"+ - "\1\11\4\0\1\1\1\11\1\1\2\11\5\0\14\1"+ - "\1\0\44\1\2\0\1\1\4\0\15\1\1\0\32\1"+ - "\1\11\11\1\10\0\21\1\1\0\30\1\6\0\10\1"+ - "\1\0\2\1\1\0\35\1\3\0\1\11\2\0\15\1"+ - "\2\0\25\1\6\0\11\1\1\0\34\1\1\0\4\1"+ - "\2\0\21\1\5\0\6\1\1\0\1\1\1\0\27\1"+ - "\2\0\3\1\2\0\16\1\4\0\6\1\2\0\25\1"+ - "\2\0\2\1\2\0\15\1\3\0\4\1\2\0\22\1"+ - "\5\0\1\1\3\0\10\1\1\0\1\1\3\0\4\1"+ - "\2\0\15\1\4\0\1\1\2\0\10\1\1\0\1\1"+ - "\3\0\3\1\2\0\7\1\6\0\5\1\1\0\1\1"+ - "\3\0\2\1\2\0\6\1\6\0\3\1\5\0\2\1"+ - "\2\0\2\1\1\0\3\1\5\0\2\1\3\0\1\1"+ - "\2\0\2\1\2\0\1\1\5\0\1\1\3\0\1\1"+ - "\2\0\1\1\11\0\1\1\2\0\1\1\16\0\1\1"+ - "\43\0"; - - private static int [] zzUnpackAttribute() { - int [] result = new int[2523]; - int offset = 0; - offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAttribute(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - /** the input device */ - private java.io.Reader zzReader; - - /** the current state of the DFA */ - private int zzState; - - /** the current lexical state */ - private int zzLexicalState = YYINITIAL; - - /** this buffer contains the current text to be matched and is - the source of the yytext() string */ - private char zzBuffer[]; - - /** the textposition at the last accepting state */ - private int zzMarkedPos; - - /** the current text position in the buffer */ - private int zzCurrentPos; - - /** startRead marks the beginning of the yytext() string in the buffer */ - private int zzStartRead; - - /** endRead marks the last character in the buffer, that has been read - from input */ - private int zzEndRead; - - /** zzAtEOF == true <=> the scanner is at the EOF */ - private boolean zzAtEOF; - - /* user code: */ - - /** - * Type specific to JSPTokenMaker denoting a line ending with an unclosed - * double-quote attribute. - */ - private static final int INTERNAL_ATTR_DOUBLE = -1; - - - /** - * Type specific to JSPTokenMaker denoting a line ending with an unclosed - * single-quote attribute. - */ - private static final int INTERNAL_ATTR_SINGLE = -2; - - - /** - * Token type specific to JSPTokenMaker; this signals that the user has - * ended a line with an unclosed HTML tag; thus a new line is beginning - * still inside of the tag. - */ - private static final int INTERNAL_INTAG = -3; - - /** - * Token type specific to JSPTokenMaker; this signals that the user has - * ended a line with an unclosed <script> tag. - */ - private static final int INTERNAL_INTAG_SCRIPT = -4; - - /** - * Token type specifying we're in a double-qouted attribute in a - * script tag. - */ - private static final int INTERNAL_ATTR_DOUBLE_QUOTE_SCRIPT = -5; - - /** - * Token type specifying we're in a single-qouted attribute in a - * script tag. - */ - private static final int INTERNAL_ATTR_SINGLE_QUOTE_SCRIPT = -6; - - /** - * Token type specifying that the user has - * ended a line with an unclosed <style> tag. - */ - private static final int INTERNAL_INTAG_STYLE = -7; - - /** - * Token type specifying we're in a double-qouted attribute in a - * style tag. - */ - private static final int INTERNAL_ATTR_DOUBLE_QUOTE_STYLE = -8; - - /** - * Token type specifying we're in a single-qouted attribute in a - * style tag. - */ - private static final int INTERNAL_ATTR_SINGLE_QUOTE_STYLE = -9; - - /** - * Token type specifying we're in a JSP hidden comment ("<%-- ... --%>"). - */ - private static final int INTERNAL_IN_HIDDEN_COMMENT = -10; - - /** - * Token type specifying we're in a JSP directive (either include, page - * or taglib). - */ - private static final int INTERNAL_IN_JSP_DIRECTIVE = -11; - - /** - * Token type specifying we're in JavaScript. - */ - static final int INTERNAL_IN_JS = -12; - - /** - * Token type specifying we're in a JavaScript multi-line comment. - */ - private static final int INTERNAL_IN_JS_MLC = -13; - - /** - * Token type specifying we're in an invalid multi-line JS string. - */ - private static final int INTERNAL_IN_JS_STRING_INVALID = -14; - - /** - * Token type specifying we're in a valid multi-line JS string. - */ - private static final int INTERNAL_IN_JS_STRING_VALID = -15; - - /** - * Token type specifying we're in an invalid multi-line JS single-quoted string. - */ - private static final int INTERNAL_IN_JS_CHAR_INVALID = -16; - - /** - * Token type specifying we're in a valid multi-line JS single-quoted string. - */ - private static final int INTERNAL_IN_JS_CHAR_VALID = -17; - - /** - * Internal type denoting a line ending in CSS. - */ - private static final int INTERNAL_CSS = -18; - - /** - * Internal type denoting a line ending in a CSS property. - */ - private static final int INTERNAL_CSS_PROPERTY = -19; - - /** - * Internal type denoting a line ending in a CSS property value. - */ - private static final int INTERNAL_CSS_VALUE = -20; - - /** - * Internal type denoting line ending in a CSS double-quote string. - * The state to return to is embedded in the actual end token type. - */ - private static final int INTERNAL_CSS_STRING = -(1<<11); - - /** - * Internal type denoting line ending in a CSS single-quote string. - * The state to return to is embedded in the actual end token type. - */ - private static final int INTERNAL_CSS_CHAR = -(2<<11); - - /** - * Internal type denoting line ending in a CSS multi-line comment. - * The state to return to is embedded in the actual end token type. - */ - private static final int INTERNAL_CSS_MLC = -(3<<11); - - /** - * Token type specifying we're in a Java documentation comment. - */ - private static final int INTERNAL_IN_JAVA_DOCCOMMENT = -(4<<11); - - /** - * Token type specifying we're in Java code. - */ - static final int INTERNAL_IN_JAVA_EXPRESSION = -(5<<11); - - /** - * Token type specifying we're in Java multiline comment. - */ - private static final int INTERNAL_IN_JAVA_MLC = -(6<<11); - - /** - * The state previous CSS-related state we were in before going into a CSS - * string, multi-line comment, etc. - */ - private int cssPrevState; - - /** - * The state JSP was started in (YYINITIAL, INTERNAL_IN_JS, etc.). - */ - private int jspInState; - - /** - * Whether closing markup tags are automatically completed for JSP. - */ - private static boolean completeCloseTags; - - /** - * When in the JS_STRING state, whether the current string is valid. - */ - private boolean validJSString; - - /** - * Language state set on HTML tokens. Must be 0. - */ - private static final int LANG_INDEX_DEFAULT = 0; - - /** - * Language state set on JavaScript tokens. - */ - private static final int LANG_INDEX_JS = 1; - - /** - * Language state set on CSS tokens. - */ - private static final int LANG_INDEX_CSS = 2; - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public JSPTokenMaker() { - super(); - } - - - /** - * Adds the token specified to the current linked list of tokens as an - * "end token;" that is, at zzMarkedPos. - * - * @param tokenType The token's type. - */ - private void addEndToken(int tokenType) { - addToken(zzMarkedPos,zzMarkedPos, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addToken(int, int, int) - */ - private void addHyperlinkToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, true); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, int startOffset) { - super.addToken(array, start,end, tokenType, startOffset); - zzStartRead = zzMarkedPos; - } - - - /** - * {@inheritDoc} - */ - @Override - protected OccurrenceMarker createOccurrenceMarker() { - return new HtmlOccurrenceMarker(); - } - - - /** - * Sets whether markup close tags should be completed. You might not want - * this to be the case, since some tags in standard HTML aren't usually - * closed. - * - * @return Whether closing markup tags are completed. - * @see #setCompleteCloseTags(boolean) - */ - @Override - public boolean getCompleteCloseTags() { - return completeCloseTags; - } - - - @Override - public boolean getCurlyBracesDenoteCodeBlocks(int languageIndex) { - return languageIndex==LANG_INDEX_CSS || languageIndex==LANG_INDEX_JS; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - switch (languageIndex) { - case LANG_INDEX_JS: - return new String[] { "//", null }; - case LANG_INDEX_CSS: - return new String[] { "/*", "*/" }; - default: - return new String[] { "" }; - } - } - - - /** - * {@inheritDoc} - */ - @Override - public boolean getMarkOccurrencesOfTokenType(int type) { - return type==Token.FUNCTION || type==Token.VARIABLE || - type==Token.MARKUP_TAG_NAME; - } - - - /** - * Overridden to handle newlines in JS and CSS differently than those in - * markup. - */ - @Override - public boolean getShouldIndentNextLineAfter(Token token) { - int languageIndex = token==null ? 0 : token.getLanguageIndex(); - if (getCurlyBracesDenoteCodeBlocks(languageIndex)) { - if (token!=null && token.length()==1) { - char ch = token.charAt(0); - return ch=='{' || ch=='('; - } - } - return false; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - jspInState = YYINITIAL; // Shouldn't be necessary - cssPrevState = CSS; // Shouldn't be necessary - int languageIndex = 0; - - // Start off in the proper state. - int state = Token.NULL; - switch (initialTokenType) { - case Token.MARKUP_COMMENT: - state = COMMENT; - break; - case Token.PREPROCESSOR: - state = PI; - break; - case Token.VARIABLE: - state = DTD; - break; - case INTERNAL_INTAG: - state = INTAG; - break; - case INTERNAL_INTAG_SCRIPT: - state = INTAG_SCRIPT; - break; - case INTERNAL_INTAG_STYLE: - state = INTAG_STYLE; - break; - case INTERNAL_ATTR_DOUBLE: - state = INATTR_DOUBLE; - break; - case INTERNAL_ATTR_SINGLE: - state = INATTR_SINGLE; - break; - case INTERNAL_ATTR_DOUBLE_QUOTE_SCRIPT: - state = INATTR_DOUBLE_SCRIPT; - break; - case INTERNAL_ATTR_SINGLE_QUOTE_SCRIPT: - state = INATTR_SINGLE_SCRIPT; - break; - case INTERNAL_ATTR_DOUBLE_QUOTE_STYLE: - state = INATTR_DOUBLE_STYLE; - break; - case INTERNAL_ATTR_SINGLE_QUOTE_STYLE: - state = INATTR_SINGLE_STYLE; - break; - case INTERNAL_IN_HIDDEN_COMMENT: - state = HIDDEN_COMMENT; - break; - case INTERNAL_IN_JSP_DIRECTIVE: - state = JSP_DIRECTIVE; - break; - case INTERNAL_IN_JS: - state = JAVASCRIPT; - languageIndex = LANG_INDEX_JS; - break; - case INTERNAL_IN_JS_MLC: - state = JS_MLC; - languageIndex = LANG_INDEX_JS; - break; - case INTERNAL_IN_JS_STRING_INVALID: - state = JS_STRING; - languageIndex = LANG_INDEX_JS; - validJSString = false; - break; - case INTERNAL_IN_JS_STRING_VALID: - state = JS_STRING; - languageIndex = LANG_INDEX_JS; - validJSString = true; - break; - case INTERNAL_IN_JS_CHAR_INVALID: - state = JS_CHAR; - languageIndex = LANG_INDEX_JS; - validJSString = false; - break; - case INTERNAL_IN_JS_CHAR_VALID: - state = JS_CHAR; - languageIndex = LANG_INDEX_JS; - validJSString = true; - break; - case INTERNAL_CSS: - state = CSS; - languageIndex = LANG_INDEX_CSS; - break; - case INTERNAL_CSS_PROPERTY: - state = CSS_PROPERTY; - languageIndex = LANG_INDEX_CSS; - break; - case INTERNAL_CSS_VALUE: - state = CSS_VALUE; - languageIndex = LANG_INDEX_CSS; - break; - default: - if (initialTokenType<-1024) { - // INTERNAL_IN_JAVAxxx - jspInState or - // INTERNAL_IN_CSSxxx - cssPrevState - int main = -(-initialTokenType & 0xffffff00); - switch (main) { - default: // Should never happen - case INTERNAL_IN_JAVA_DOCCOMMENT: - state = JAVA_DOCCOMMENT; - jspInState = -initialTokenType&0xff; - break; - case INTERNAL_IN_JAVA_EXPRESSION: - state = JAVA_EXPRESSION; - jspInState = -initialTokenType&0xff; - break; - case INTERNAL_IN_JAVA_MLC: - state = JAVA_MLC; - jspInState = -initialTokenType&0xff; - break; - case INTERNAL_CSS_STRING: - state = CSS_STRING; - languageIndex = LANG_INDEX_CSS; - cssPrevState = -initialTokenType&0xff; - break; - case INTERNAL_CSS_CHAR: - state = CSS_CHAR_LITERAL; - languageIndex = LANG_INDEX_CSS; - cssPrevState = -initialTokenType&0xff; - break; - case INTERNAL_CSS_MLC: - state = CSS_C_STYLE_COMMENT; - languageIndex = LANG_INDEX_CSS; - cssPrevState = -initialTokenType&0xff; - break; - } - } - else { - state = Token.NULL; - } - break; - } - - setLanguageIndex(languageIndex); - start = text.offset; - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Sets whether markup close tags should be completed. You might not want - * this to be the case, since some tags in standard HTML aren't usually - * closed. - * - * @param complete Whether closing markup tags are completed. - * @see #getCompleteCloseTags() - */ - public static void setCompleteCloseTags(boolean complete) { - completeCloseTags = complete; - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtEOF = false; - } - - - - - /** - * Creates a new scanner - * There is also a java.io.InputStream version of this constructor. - * - * @param in the java.io.Reader to read input from. - */ - public JSPTokenMaker(java.io.Reader in) { - this.zzReader = in; - } - - /** - * Creates a new scanner. - * There is also java.io.Reader version of this constructor. - * - * @param in the java.io.Inputstream to read input from. - */ - public JSPTokenMaker(java.io.InputStream in) { - this(new java.io.InputStreamReader(in)); - } - - /** - * Unpacks the compressed character translation table. - * - * @param packed the packed character translation table - * @return the unpacked character translation table - */ - private static char [] zzUnpackCMap(String packed) { - char [] map = new char[0x10000]; - int i = 0; /* index in packed string */ - int j = 0; /* index in unpacked array */ - while (i < 202) { - int count = packed.charAt(i++); - char value = packed.charAt(i++); - do map[j++] = value; while (--count > 0); - } - return map; - } - - - /** - * Closes the input stream. - */ - public final void yyclose() throws java.io.IOException { - zzAtEOF = true; /* indicate end of file */ - zzEndRead = zzStartRead; /* invalidate buffer */ - - if (zzReader != null) - zzReader.close(); - } - - - /** - * Returns the current lexical state. - */ - public final int yystate() { - return zzLexicalState; - } - - - /** - * Enters a new lexical state - * - * @param newState the new lexical state - */ - @Override - public final void yybegin(int newState) { - zzLexicalState = newState; - } - - - /** - * Returns the text matched by the current regular expression. - */ - public final String yytext() { - return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead ); - } - - - /** - * Returns the character at position pos from the - * matched text. - * - * It is equivalent to yytext().charAt(pos), but faster - * - * @param pos the position of the character to fetch. - * A value from 0 to yylength()-1. - * - * @return the character at position pos - */ - public final char yycharat(int pos) { - return zzBuffer[zzStartRead+pos]; - } - - - /** - * Returns the length of the matched text region. - */ - public final int yylength() { - return zzMarkedPos-zzStartRead; - } - - - /** - * Reports an error that occured while scanning. - * - * In a wellformed scanner (no or only correct usage of - * yypushback(int) and a match-all fallback rule) this method - * will only be called with things that "Can't Possibly Happen". - * If this method is called, something is seriously wrong - * (e.g. a JFlex bug producing a faulty scanner etc.). - * - * Usual syntax/scanner level error handling should be done - * in error fallback rules. - * - * @param errorCode the code of the errormessage to display - */ - private void zzScanError(int errorCode) { - String message; - try { - message = ZZ_ERROR_MSG[errorCode]; - } - catch (ArrayIndexOutOfBoundsException e) { - message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; - } - - throw new Error(message); - } - - - /** - * Pushes the specified amount of characters back into the input stream. - * - * They will be read again by then next call of the scanning method - * - * @param number the number of characters to be read again. - * This number must not be greater than yylength()! - */ - public void yypushback(int number) { - if ( number > yylength() ) - zzScanError(ZZ_PUSHBACK_2BIG); - - zzMarkedPos -= number; - } - - - /** - * Resumes scanning until the next regular expression is matched, - * the end of input is encountered or an I/O-Error occurs. - * - * @return the next token - * @exception java.io.IOException if any I/O-Error occurs - */ - public org.fife.ui.rsyntaxtextarea.Token yylex() throws java.io.IOException { - int zzInput; - int zzAction; - - // cached fields: - int zzCurrentPosL; - int zzMarkedPosL; - int zzEndReadL = zzEndRead; - char [] zzBufferL = zzBuffer; - char [] zzCMapL = ZZ_CMAP; - - int [] zzTransL = ZZ_TRANS; - int [] zzRowMapL = ZZ_ROWMAP; - int [] zzAttrL = ZZ_ATTRIBUTE; - - while (true) { - zzMarkedPosL = zzMarkedPos; - - zzAction = -1; - - zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; - - zzState = zzLexicalState; - - - zzForAction: { - while (true) { - - if (zzCurrentPosL < zzEndReadL) - zzInput = zzBufferL[zzCurrentPosL++]; - else if (zzAtEOF) { - zzInput = YYEOF; - break zzForAction; - } - else { - // store back cached positions - zzCurrentPos = zzCurrentPosL; - zzMarkedPos = zzMarkedPosL; - boolean eof = zzRefill(); - // get translated positions and possibly new buffer - zzCurrentPosL = zzCurrentPos; - zzMarkedPosL = zzMarkedPos; - zzBufferL = zzBuffer; - zzEndReadL = zzEndRead; - if (eof) { - zzInput = YYEOF; - break zzForAction; - } - else { - zzInput = zzBufferL[zzCurrentPosL++]; - } - } - int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; - if (zzNext == -1) break zzForAction; - zzState = zzNext; - - int zzAttributes = zzAttrL[zzState]; - if ( (zzAttributes & 1) == 1 ) { - zzAction = zzState; - zzMarkedPosL = zzCurrentPosL; - if ( (zzAttributes & 8) == 8 ) break zzForAction; - } - - } - } - - // store back cached position - zzMarkedPos = zzMarkedPosL; - - switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { - case 65: - { addToken(Token.OPERATOR); yybegin(CSS_VALUE); - } - case 130: break; - case 86: - { addToken(Token.ERROR_NUMBER_FORMAT); - } - case 131: break; - case 74: - { addToken(start,zzStartRead-1, Token.LITERAL_CHAR); addEndToken(INTERNAL_CSS_CHAR - cssPrevState); return firstToken; - } - case 132: break; - case 23: - { start = zzMarkedPos-1; yybegin(INATTR_SINGLE_SCRIPT); - } - case 133: break; - case 10: - { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.MARKUP_DTD); - } - case 134: break; - case 61: - { addToken(Token.SEPARATOR); yybegin(CSS_PROPERTY); - } - case 135: break; - case 112: - { start = zzMarkedPos-4; yybegin(HIDDEN_COMMENT); - } - case 136: break; - case 4: - { addToken(Token.MARKUP_TAG_DELIMITER); yybegin(INTAG); - } - case 137: break; - case 124: - { addToken(Token.RESERVED_WORD_2); - } - case 138: break; - case 104: - { addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); yybegin(cssPrevState); - } - case 139: break; - case 101: - { start = zzMarkedPos-2; cssPrevState = zzLexicalState; yybegin(CSS_C_STYLE_COMMENT); - } - case 140: break; - case 41: - { /* Line ending in '\' => continue to next line. */ - if (validJSString) { - addToken(start,zzStartRead, Token.LITERAL_CHAR); - addEndToken(INTERNAL_IN_JS_CHAR_VALID); - } - else { - addToken(start,zzStartRead, Token.ERROR_CHAR); - addEndToken(INTERNAL_IN_JS_CHAR_INVALID); - } - return firstToken; - } - case 141: break; - case 5: - { addToken(Token.WHITESPACE); - } - case 142: break; - case 125: - { addToken(zzStartRead,zzStartRead, Token.MARKUP_TAG_DELIMITER); - addToken(zzMarkedPos-6,zzMarkedPos-1, Token.MARKUP_TAG_NAME); - start = zzMarkedPos; yybegin(INTAG_SCRIPT); - } - case 143: break; - case 103: - { addToken(Token.REGEX); - } - case 144: break; - case 42: - { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_IN_JS_MLC); return firstToken; - } - case 145: break; - case 129: - { int temp = zzStartRead; - addToken(start,zzStartRead-1, Token.COMMENT_EOL); - yybegin(YYINITIAL, LANG_INDEX_DEFAULT); - addToken(temp,temp+1, Token.MARKUP_TAG_DELIMITER); - addToken(zzMarkedPos-7,zzMarkedPos-2, Token.MARKUP_TAG_NAME); - addToken(zzMarkedPos-1,zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER); - } - case 146: break; - case 111: - { addToken(Token.FUNCTION); - } - case 147: break; - case 93: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addToken(temp,zzMarkedPos-1, Token.COMMENT_MARKUP); start = zzMarkedPos; - } - case 148: break; - case 8: - { addToken(start,zzStartRead-1, Token.MARKUP_PROCESSING_INSTRUCTION); return firstToken; - } - case 149: break; - case 36: - { addToken(start,zzStartRead-1, Token.ERROR_STRING_DOUBLE); addEndToken(INTERNAL_IN_JS); return firstToken; - } - case 150: break; - case 57: - { start = zzMarkedPos-1; cssPrevState = zzLexicalState; yybegin(CSS_STRING); - } - case 151: break; - case 52: - { addToken(Token.ERROR_CHAR); - } - case 152: break; - case 20: - { /* Allowing JSP expressions, etc. */ - } - case 153: break; - case 26: - { start = zzMarkedPos-1; yybegin(INATTR_DOUBLE_STYLE); - } - case 154: break; - case 120: - { yybegin(YYINITIAL); addToken(start,zzStartRead+3, Token.MARKUP_COMMENT); - } - case 155: break; - case 89: - { /* Skip all escaped chars. */ - } - case 156: break; - case 83: - { addToken(Token.MARKUP_TAG_DELIMITER); yybegin(YYINITIAL); - } - case 157: break; - case 29: - { yybegin(INTAG_STYLE); addToken(start,zzStartRead, Token.MARKUP_TAG_ATTRIBUTE_VALUE); - } - case 158: break; - case 117: - { if(JavaScriptTokenMaker.isJavaScriptCompatible("1.6")){ addToken(Token.RESERVED_WORD);} else {addToken(Token.IDENTIFIER);} - } - case 159: break; - case 109: - { if(JavaScriptTokenMaker.isJavaScriptCompatible("1.7")){ addToken(Token.RESERVED_WORD);} else {addToken(Token.IDENTIFIER);} - } - case 160: break; - case 66: - { /*System.out.println("css_value: " + yytext());*/ addToken(Token.IDENTIFIER); - } - case 161: break; - case 17: - { /* A non-recognized HTML tag name */ yypushback(yylength()); yybegin(INTAG); - } - case 162: break; - case 28: - { addToken(Token.MARKUP_TAG_DELIMITER); yybegin(CSS, LANG_INDEX_CSS); - } - case 163: break; - case 75: - { addToken(start,zzStartRead, Token.LITERAL_CHAR); yybegin(cssPrevState); - } - case 164: break; - case 27: - { start = zzMarkedPos-1; yybegin(INATTR_SINGLE_STYLE); - } - case 165: break; - case 54: - { addToken(Token.IDENTIFIER); /* Needed as InTagIdentifier ignores it. */ - } - case 166: break; - case 7: - { addToken(start,zzStartRead-1, Token.MARKUP_COMMENT); return firstToken; - } - case 167: break; - case 91: - { /* Invalid latin-1 character \xXX */ validJSString = false; - } - case 168: break; - case 25: - { yybegin(INTAG_SCRIPT); addToken(start,zzStartRead, Token.MARKUP_TAG_ATTRIBUTE_VALUE); - } - case 169: break; - case 37: - { int type = validJSString ? Token.LITERAL_STRING_DOUBLE_QUOTE : Token.ERROR_STRING_DOUBLE; addToken(start,zzStartRead, type); yybegin(JAVASCRIPT); - } - case 170: break; - case 115: - { addToken(Token.COMMENT_MULTILINE); - } - case 171: break; - case 47: - { addToken(Token.ERROR_STRING_DOUBLE); addEndToken(INTERNAL_IN_JAVA_EXPRESSION - jspInState); return firstToken; - } - case 172: break; - case 110: - { start = zzMarkedPos-3; yybegin(JAVA_DOCCOMMENT); - } - case 173: break; - case 80: - { start = zzMarkedPos-2; yybegin(PI); - } - case 174: break; - case 126: - { yybegin(YYINITIAL, LANG_INDEX_DEFAULT); - addToken(zzStartRead,zzStartRead+1, Token.MARKUP_TAG_DELIMITER); - addToken(zzMarkedPos-6,zzMarkedPos-2, Token.MARKUP_TAG_NAME); - addToken(zzMarkedPos-1,zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER); - } - case 175: break; - case 62: - { /*System.out.println("css_property: " + yytext());*/ addToken(Token.IDENTIFIER); - } - case 176: break; - case 9: - { addToken(start,zzStartRead-1, Token.MARKUP_DTD); return firstToken; - } - case 177: break; - case 77: - { int count = yylength(); - addToken(zzStartRead,zzStartRead, Token.MARKUP_TAG_DELIMITER); - zzMarkedPos -= (count-1); //yypushback(count-1); - yybegin(INTAG_CHECK_TAG_NAME); - } - case 178: break; - case 73: - { /* Skip escaped chars. */ - } - case 179: break; - case 90: - { /* Invalid Unicode character \\uXXXX */ validJSString = false; - } - case 180: break; - case 123: - { addToken(zzStartRead,zzStartRead, Token.MARKUP_TAG_DELIMITER); - addToken(zzMarkedPos-5,zzMarkedPos-1, Token.MARKUP_TAG_NAME); - start = zzMarkedPos; cssPrevState = zzLexicalState; yybegin(INTAG_STYLE); - } - case 181: break; - case 94: - { yybegin(JAVA_EXPRESSION); addToken(start,zzStartRead+1, Token.COMMENT_DOCUMENTATION); - } - case 182: break; - case 81: - { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.MARKUP_PROCESSING_INSTRUCTION); - } - case 183: break; - case 92: - { yybegin(JAVASCRIPT); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); - } - case 184: break; - case 78: - { addToken(Token.MARKUP_TAG_DELIMITER); jspInState = zzLexicalState; yybegin(JAVA_EXPRESSION); - } - case 185: break; - case 31: - { addEndToken(INTERNAL_IN_JS); return firstToken; - } - case 186: break; - case 39: - { addToken(start,zzStartRead-1, Token.ERROR_CHAR); addEndToken(INTERNAL_IN_JS); return firstToken; - } - case 187: break; - case 44: - { addToken(start,zzStartRead-1, Token.MARKUP_COMMENT); addEndToken(INTERNAL_IN_HIDDEN_COMMENT); return firstToken; - } - case 188: break; - case 12: - { addToken(Token.OPERATOR); - } - case 189: break; - case 68: - { addToken(Token.OPERATOR); yybegin(CSS_PROPERTY); - } - case 190: break; - case 48: - { addToken(Token.ERROR_CHAR); addEndToken(INTERNAL_IN_JAVA_EXPRESSION - jspInState); return firstToken; - } - case 191: break; - case 113: - { start = zzMarkedPos-4; yybegin(COMMENT); - } - case 192: break; - case 107: - { yybegin(YYINITIAL); addToken(start,zzStartRead+2, Token.MARKUP_COMMENT); - } - case 193: break; - case 102: - { addToken(Token.VARIABLE); - } - case 194: break; - case 55: - { /*System.out.println("CSS: " + yytext());*/ addToken(Token.IDENTIFIER); - } - case 195: break; - case 97: - { start = zzMarkedPos-2; yybegin(JAVA_MLC); - } - case 196: break; - case 2: - { addToken(Token.IDENTIFIER); - } - case 197: break; - case 118: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_MULTILINE); start = zzMarkedPos; - } - case 198: break; - case 24: - { addToken(Token.MARKUP_TAG_DELIMITER); yybegin(JAVASCRIPT, LANG_INDEX_JS); - } - case 199: break; - case 96: - { addToken(Token.COMMENT_EOL); addEndToken(INTERNAL_IN_JAVA_EXPRESSION - jspInState); return firstToken; - } - case 200: break; - case 119: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_EOL); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_EOL); start = zzMarkedPos; - } - case 201: break; - case 64: - { addToken(Token.SEPARATOR); yybegin(CSS); - } - case 202: break; - case 128: - { yybegin(YYINITIAL); - int temp = zzStartRead; - addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); - addToken(temp,temp+1, Token.MARKUP_TAG_DELIMITER); - addToken(zzMarkedPos-7,zzMarkedPos-2, Token.MARKUP_TAG_NAME); - addToken(zzMarkedPos-1,zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER); - } - case 203: break; - case 32: - { start = zzMarkedPos-1; validJSString = true; yybegin(JS_STRING); - } - case 204: break; - case 45: - { addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addEndToken(INTERNAL_IN_JAVA_DOCCOMMENT - jspInState); return firstToken; - } - case 205: break; - case 72: - { addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); yybegin(cssPrevState); - } - case 206: break; - case 63: - { addEndToken(INTERNAL_CSS_PROPERTY); return firstToken; - } - case 207: break; - case 51: - { addToken(Token.ERROR_STRING_DOUBLE); - } - case 208: break; - case 40: - { int type = validJSString ? Token.LITERAL_CHAR : Token.ERROR_CHAR; addToken(start,zzStartRead, type); yybegin(JAVASCRIPT); - } - case 209: break; - case 106: - { addToken(Token.MARKUP_TAG_DELIMITER); yybegin(JSP_DIRECTIVE); - } - case 210: break; - case 33: - { start = zzMarkedPos-1; validJSString = true; yybegin(JS_CHAR); - } - case 211: break; - case 122: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_DOCUMENTATION); start = zzMarkedPos; - } - case 212: break; - case 85: - { start = zzMarkedPos-2; yybegin(JS_MLC); - } - case 213: break; - case 88: - { addToken(Token.LITERAL_NUMBER_HEXADECIMAL); - } - case 214: break; - case 70: - { int temp = zzMarkedPos - 2; - addToken(zzStartRead, temp, Token.FUNCTION); - addToken(zzMarkedPos-1, zzMarkedPos-1, Token.SEPARATOR); - zzStartRead = zzCurrentPos = zzMarkedPos; - } - case 215: break; - case 99: - { yybegin(JAVA_EXPRESSION); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); - } - case 216: break; - case 50: - { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_IN_JAVA_MLC - jspInState); return firstToken; - } - case 217: break; - case 49: - { addToken(Token.ANNOTATION); - } - case 218: break; - case 30: - { addToken(Token.ERROR_IDENTIFIER); - } - case 219: break; - case 67: - { addEndToken(INTERNAL_CSS_VALUE); return firstToken; - } - case 220: break; - case 114: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.MARKUP_COMMENT); addHyperlinkToken(temp,zzMarkedPos-1, Token.MARKUP_COMMENT); start = zzMarkedPos; - } - case 221: break; - case 6: - { addToken(Token.MARKUP_ENTITY_REFERENCE); - } - case 222: break; - case 116: - { addToken(Token.LITERAL_BOOLEAN); - } - case 223: break; - case 18: - { /* Shouldn't happen */ yypushback(1); yybegin(INTAG); - } - case 224: break; - case 3: - { addNullToken(); return firstToken; - } - case 225: break; - case 56: - { addEndToken(INTERNAL_CSS); return firstToken; - } - case 226: break; - case 127: - { yybegin(YYINITIAL, LANG_INDEX_DEFAULT); - addToken(zzStartRead,zzStartRead+1, Token.MARKUP_TAG_DELIMITER); - addToken(zzMarkedPos-7,zzMarkedPos-2, Token.MARKUP_TAG_NAME); - addToken(zzMarkedPos-1,zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER); - } - case 227: break; - case 58: - { start = zzMarkedPos-1; cssPrevState = zzLexicalState; yybegin(CSS_CHAR_LITERAL); - } - case 228: break; - case 53: - { addToken(Token.RESERVED_WORD); - } - case 229: break; - case 98: - { addToken(Token.MARKUP_TAG_DELIMITER); start = zzMarkedPos; yybegin(jspInState); - } - case 230: break; - case 13: - { start = zzMarkedPos-1; yybegin(INATTR_DOUBLE); - } - case 231: break; - case 100: - { addToken(Token.LITERAL_CHAR); - } - case 232: break; - case 16: - { yybegin(YYINITIAL); addToken(Token.MARKUP_TAG_DELIMITER); - } - case 233: break; - case 59: - { addToken(Token.DATA_TYPE); - } - case 234: break; - case 46: - { addEndToken(INTERNAL_IN_JAVA_EXPRESSION - jspInState); return firstToken; - } - case 235: break; - case 35: - { addToken(Token.SEPARATOR); - } - case 236: break; - case 105: - { int count = yylength(); - addToken(zzStartRead,zzStartRead+1, Token.MARKUP_TAG_DELIMITER); - zzMarkedPos -= (count-2); //yypushback(count-2); - yybegin(INTAG_CHECK_TAG_NAME); - } - case 237: break; - case 71: - { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addEndToken(INTERNAL_CSS_STRING - cssPrevState); return firstToken; - } - case 238: break; - case 69: - { /* End of a function */ addToken(Token.SEPARATOR); - } - case 239: break; - case 19: - { addToken(Token.MARKUP_TAG_NAME); - } - case 240: break; - case 11: - { addToken(Token.MARKUP_TAG_ATTRIBUTE); - } - case 241: break; - case 121: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addToken(temp,zzMarkedPos-1, Token.COMMENT_KEYWORD); start = zzMarkedPos; - } - case 242: break; - case 84: - { start = zzMarkedPos-2; yybegin(JS_EOL_COMMENT); - } - case 243: break; - case 38: - { /* Line ending in '\' => continue to next line. */ - if (validJSString) { - addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); - addEndToken(INTERNAL_IN_JS_STRING_VALID); - } - else { - addToken(start,zzStartRead, Token.ERROR_STRING_DOUBLE); - addEndToken(INTERNAL_IN_JS_STRING_INVALID); - } - return firstToken; - } - case 244: break; - case 87: - { addToken(Token.LITERAL_NUMBER_FLOAT); - } - case 245: break; - case 14: - { start = zzMarkedPos-1; yybegin(INATTR_SINGLE); - } - case 246: break; - case 108: - { boolean highlightedAsRegex = false; - if (firstToken==null) { - addToken(Token.REGEX); - highlightedAsRegex = true; - } - else { - // If this is *likely* to be a regex, based on - // the previous token, highlight it as such. - Token t = firstToken.getLastNonCommentNonWhitespaceToken(); - if (RSyntaxUtilities.regexCanFollowInJavaScript(t)) { - addToken(Token.REGEX); - highlightedAsRegex = true; - } - } - // If it doesn't *appear* to be a regex, highlight it as - // individual tokens. - if (!highlightedAsRegex) { - int temp = zzStartRead + 1; - addToken(zzStartRead, zzStartRead, Token.OPERATOR); - zzStartRead = zzCurrentPos = zzMarkedPos = temp; - } - } - case 247: break; - case 95: - { addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); - } - case 248: break; - case 76: - { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_CSS_MLC - cssPrevState); return firstToken; - } - case 249: break; - case 15: - { addToken(Token.MARKUP_TAG_DELIMITER); - } - case 250: break; - case 34: - { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); - } - case 251: break; - case 79: - { start = zzMarkedPos-2; yybegin(DTD); - } - case 252: break; - case 82: - { int temp=zzStartRead; if (zzStartRead>start) addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addToken(temp, zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER); jspInState = zzLexicalState; yybegin(JAVA_EXPRESSION); - } - case 253: break; - case 21: - { addToken(start,zzStartRead, Token.MARKUP_TAG_ATTRIBUTE_VALUE); yybegin(INTAG); - } - case 254: break; - case 22: - { start = zzMarkedPos-1; yybegin(INATTR_DOUBLE_SCRIPT); - } - case 255: break; - case 43: - { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addEndToken(INTERNAL_IN_JS); return firstToken; - } - case 256: break; - case 60: - { /* Unknown pseudo class */ addToken(Token.DATA_TYPE); - } - case 257: break; - case 1: - { - } - case 258: break; - default: - if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { - zzAtEOF = true; - switch (zzLexicalState) { - case INATTR_SINGLE_SCRIPT: { - addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_SINGLE_QUOTE_SCRIPT); return firstToken; - } - case 2524: break; - case JS_CHAR: { - addToken(start,zzStartRead-1, Token.ERROR_CHAR); addEndToken(INTERNAL_IN_JS); return firstToken; - } - case 2525: break; - case JAVA_EXPRESSION: { - addEndToken(INTERNAL_IN_JAVA_EXPRESSION - jspInState); return firstToken; - } - case 2526: break; - case CSS_STRING: { - addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addEndToken(INTERNAL_CSS_STRING - cssPrevState); return firstToken; - } - case 2527: break; - case HIDDEN_COMMENT: { - addToken(start,zzStartRead-1, Token.MARKUP_COMMENT); addEndToken(INTERNAL_IN_HIDDEN_COMMENT); return firstToken; - } - case 2528: break; - case JS_MLC: { - addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_IN_JS_MLC); return firstToken; - } - case 2529: break; - case CSS_CHAR_LITERAL: { - addToken(start,zzStartRead-1, Token.LITERAL_CHAR); addEndToken(INTERNAL_CSS_CHAR - cssPrevState); return firstToken; - } - case 2530: break; - case JAVA_DOCCOMMENT: { - yybegin(JAVA_EXPRESSION); addToken(start,zzEndRead, Token.COMMENT_DOCUMENTATION); addEndToken(INTERNAL_IN_JAVA_DOCCOMMENT - jspInState); return firstToken; - } - case 2531: break; - case INTAG_SCRIPT: { - addToken(zzMarkedPos,zzMarkedPos, INTERNAL_INTAG_SCRIPT); return firstToken; - } - case 2532: break; - case CSS_PROPERTY: { - addEndToken(INTERNAL_CSS_PROPERTY); return firstToken; - } - case 2533: break; - case CSS_C_STYLE_COMMENT: { - addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_CSS_MLC - cssPrevState); return firstToken; - } - case 2534: break; - case CSS: { - addEndToken(INTERNAL_CSS); return firstToken; - } - case 2535: break; - case CSS_VALUE: { - addEndToken(INTERNAL_CSS_VALUE); return firstToken; - } - case 2536: break; - case JSP_DIRECTIVE: { - addToken(zzMarkedPos,zzMarkedPos, INTERNAL_IN_JSP_DIRECTIVE); return firstToken; - } - case 2537: break; - case COMMENT: { - addToken(start,zzStartRead-1, Token.MARKUP_COMMENT); return firstToken; - } - case 2538: break; - case INATTR_DOUBLE_SCRIPT: { - addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_DOUBLE_QUOTE_SCRIPT); return firstToken; - } - case 2539: break; - case PI: { - addToken(start,zzStartRead-1, Token.MARKUP_PROCESSING_INSTRUCTION); return firstToken; - } - case 2540: break; - case JAVASCRIPT: { - addEndToken(INTERNAL_IN_JS); return firstToken; - } - case 2541: break; - case INTAG: { - addToken(zzMarkedPos,zzMarkedPos, INTERNAL_INTAG); return firstToken; - } - case 2542: break; - case INTAG_CHECK_TAG_NAME: { - addToken(zzMarkedPos,zzMarkedPos, INTERNAL_INTAG); return firstToken; - } - case 2543: break; - case INATTR_SINGLE_STYLE: { - addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_SINGLE_QUOTE_STYLE); return firstToken; - } - case 2544: break; - case DTD: { - addToken(start,zzStartRead-1, Token.MARKUP_DTD); return firstToken; - } - case 2545: break; - case JS_EOL_COMMENT: { - addToken(start,zzStartRead-1, Token.COMMENT_EOL); addEndToken(INTERNAL_IN_JS); return firstToken; - } - case 2546: break; - case INATTR_DOUBLE_STYLE: { - addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_DOUBLE_QUOTE_STYLE); return firstToken; - } - case 2547: break; - case INATTR_SINGLE: { - addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_SINGLE); return firstToken; - } - case 2548: break; - case YYINITIAL: { - addNullToken(); return firstToken; - } - case 2549: break; - case INATTR_DOUBLE: { - addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_DOUBLE); return firstToken; - } - case 2550: break; - case JS_STRING: { - addToken(start,zzStartRead-1, Token.ERROR_STRING_DOUBLE); addEndToken(INTERNAL_IN_JS); return firstToken; - } - case 2551: break; - case JAVA_MLC: { - addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_IN_JAVA_MLC - jspInState); return firstToken; - } - case 2552: break; - case INTAG_STYLE: { - addToken(zzMarkedPos,zzMarkedPos, INTERNAL_INTAG_STYLE); return firstToken; - } - case 2553: break; - default: - return null; - } - } - else { - zzScanError(ZZ_NO_MATCH); - } - } - } - } - - -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/JavaScriptTokenMaker.flex b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/JavaScriptTokenMaker.flex deleted file mode 100644 index c76caf2..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/JavaScriptTokenMaker.flex +++ /dev/null @@ -1,890 +0,0 @@ -/* - * 02/05/2012 - * - * JavaScriptTokenMaker.java - Parses a document into JavaScript tokens. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * Scanner for JavaScript files. Its states could be simplified, but are - * kept the way they are to keep a degree of similarity (i.e. copy/paste) - * between it and HTML/JSP/PHPTokenMaker. This should cause no difference in - * performance.

- * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated JavaScriptTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.9 - */ -%% - -%public -%class JavaScriptTokenMaker -%extends AbstractJFlexCTokenMaker -%unicode -%type org.fife.ui.rsyntaxtextarea.Token - - -%{ - - /** - * Token type specifying we're in a JavaScript multiline comment. - */ - private static final int INTERNAL_IN_JS_MLC = -8; - - /** - * Token type specifying we're in a JavaScript documentation comment. - */ - private static final int INTERNAL_IN_JS_COMMENT_DOCUMENTATION = -9; - - /** - * Token type specifying we're in an invalid multi-line JS string. - */ - private static final int INTERNAL_IN_JS_STRING_INVALID = -10; - - /** - * Token type specifying we're in a valid multi-line JS string. - */ - private static final int INTERNAL_IN_JS_STRING_VALID = -11; - - /** - * Token type specifying we're in an invalid multi-line JS single-quoted string. - */ - private static final int INTERNAL_IN_JS_CHAR_INVALID = -12; - - /** - * Token type specifying we're in a valid multi-line JS single-quoted string. - */ - private static final int INTERNAL_IN_JS_CHAR_VALID = -13; - - private static final int INTERNAL_E4X = -14; - - private static final int INTERNAL_E4X_INTAG = -15; - - private static final int INTERNAL_E4X_MARKUP_PROCESSING_INSTRUCTION = -16; - - private static final int INTERNAL_IN_E4X_COMMENT = -17; - - private static final int INTERNAL_E4X_DTD = -18; - - private static final int INTERNAL_E4X_DTD_INTERNAL = -19; - - private static final int INTERNAL_E4X_ATTR_SINGLE = -20; - - private static final int INTERNAL_E4X_ATTR_DOUBLE = -21; - - private static final int INTERNAL_E4X_MARKUP_CDATA = -22; - - /** - * When in the JS_STRING state, whether the current string is valid. - */ - private boolean validJSString; - - /** - * Whether we're in an internal DTD. Only valid if in an e4x DTD. - */ - private boolean e4x_inInternalDtd; - - /** - * The previous e4x state. Only valid if in an e4x state. - */ - private int e4x_prevState; - - /** - * The version of JavaScript being highlighted. - */ - private static String jsVersion; - - /** - * Whether e4x is being highlighted. - */ - private static boolean e4xSupported; - - /** - * Language state set on JS tokens. Must be 0. - */ - private static final int LANG_INDEX_DEFAULT = 0; - - /** - * Language state set on E4X tokens. - */ - private static final int LANG_INDEX_E4X = 1; - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public JavaScriptTokenMaker() { - super(); - } - - - static { - jsVersion = "1.7"; // Many folks using JS tend to be bleeding edge - e4xSupported = true; - } - - - /** - * Adds the token specified to the current linked list of tokens as an - * "end token;" that is, at zzMarkedPos. - * - * @param tokenType The token's type. - */ - private void addEndToken(int tokenType) { - addToken(zzMarkedPos,zzMarkedPos, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addToken(int, int, int) - */ - private void addHyperlinkToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, true); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, int startOffset) { - super.addToken(array, start,end, tokenType, startOffset); - zzStartRead = zzMarkedPos; - } - - - /** - * Returns the closest {@link TokenTypes "standard" token type} for a given - * "internal" token type (e.g. one whose value is < 0). - */ - @Override - public int getClosestStandardTokenTypeForInternalType(int type) { - switch (type) { - case INTERNAL_IN_JS_MLC: - return TokenTypes.COMMENT_MULTILINE; - case INTERNAL_IN_JS_COMMENT_DOCUMENTATION: - return TokenTypes.COMMENT_DOCUMENTATION; - case INTERNAL_IN_JS_STRING_INVALID: - case INTERNAL_IN_JS_STRING_VALID: - case INTERNAL_IN_JS_CHAR_INVALID: - case INTERNAL_IN_JS_CHAR_VALID: - return TokenTypes.LITERAL_STRING_DOUBLE_QUOTE; - } - return type; - } - - - /** - * Returns the JavaScript version being highlighted. - * - * @return Supported JavaScript version. - * @see #isJavaScriptCompatible(String) - */ - public static String getJavaScriptVersion() { - return jsVersion; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { "//", null }; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - validJSString = true; - e4x_prevState = YYINITIAL; - e4x_inInternalDtd = false; - int languageIndex = LANG_INDEX_DEFAULT; - - // Start off in the proper state. - int state = YYINITIAL; - switch (initialTokenType) { - case INTERNAL_IN_JS_MLC: - state = JS_MLC; - break; - case INTERNAL_IN_JS_COMMENT_DOCUMENTATION: - state = JS_DOCCOMMENT; - start = text.offset; - break; - case INTERNAL_IN_JS_STRING_INVALID: - state = JS_STRING; - validJSString = false; - break; - case INTERNAL_IN_JS_STRING_VALID: - state = JS_STRING; - break; - case INTERNAL_IN_JS_CHAR_INVALID: - state = JS_CHAR; - validJSString = false; - break; - case INTERNAL_IN_JS_CHAR_VALID: - state = JS_CHAR; - break; - case INTERNAL_E4X: - state = E4X; - languageIndex = LANG_INDEX_E4X; - break; - case INTERNAL_E4X_INTAG: - state = E4X_INTAG; - languageIndex = LANG_INDEX_E4X; - break; - case INTERNAL_E4X_MARKUP_PROCESSING_INSTRUCTION: - state = E4X_PI; - languageIndex = LANG_INDEX_E4X; - break; - case INTERNAL_E4X_DTD: - state = E4X_DTD; - languageIndex = LANG_INDEX_E4X; - break; - case INTERNAL_E4X_DTD_INTERNAL: - state = E4X_DTD; - e4x_inInternalDtd = true; - languageIndex = LANG_INDEX_E4X; - break; - case INTERNAL_E4X_ATTR_SINGLE: - state = E4X_INATTR_SINGLE; - languageIndex = LANG_INDEX_E4X; - break; - case INTERNAL_E4X_ATTR_DOUBLE: - state = E4X_INATTR_DOUBLE; - languageIndex = LANG_INDEX_E4X; - break; - case INTERNAL_E4X_MARKUP_CDATA: - state = E4X_CDATA; - languageIndex = LANG_INDEX_E4X; - break; - default: - if (initialTokenType<-1024) { // INTERNAL_IN_E4X_COMMENT - prevState - int main = -(-initialTokenType & 0xffffff00); - switch (main) { - default: // Should never happen - case INTERNAL_IN_E4X_COMMENT: - state = E4X_COMMENT; - break; - } - e4x_prevState = -initialTokenType&0xff; - languageIndex = LANG_INDEX_E4X; - } - else { // Shouldn't happen - state = Token.NULL; - } - } - - setLanguageIndex(languageIndex); - start = text.offset; - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Returns whether e4x is being highlighted. - * - * @return Whether e4x is being highlighted. - * @see #setE4xSupported(boolean) - */ - public static boolean isE4xSupported() { - return e4xSupported; - } - - - /** - * Returns whether features for a specific JS version should be honored - * while highlighting. - * - * @param version JavaScript version required - * @return Whether the JavaScript version is the same or greater than - * version required. - */ - public static boolean isJavaScriptCompatible(String version) { - return jsVersion.compareTo(version) >= 0; - } - - - /** - * Sets whether e4x should be highlighted. A repaint should be forced on - * all RSyntaxTextAreas editing JavaScript if this property - * is changed to see the difference. - * - * @param supported Whether e4x should be highlighted. - * @see #isE4xSupported() - */ - public static void setE4xSupported(boolean supported) { - e4xSupported = supported; - } - - - /** - * Set the supported JavaScript version because some keywords were - * introduced on or after this version. - * - * @param javaScriptVersion The version of JavaScript to support, such as - * "1.5" or "1.6". - * @see #isJavaScriptCompatible(String) - * @see #getJavaScriptVersion() - */ - public static void setJavaScriptVersion(String javaScriptVersion) { - jsVersion = javaScriptVersion; - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(java.io.Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = zzPushbackPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtBOL = true; - zzAtEOF = false; - } - - -%} - -Whitespace = ([ \t\f]+) -LineTerminator = ([\n]) - -Letter = [A-Za-z] -NonzeroDigit = [1-9] -Digit = ("0"|{NonzeroDigit}) -HexDigit = ({Digit}|[A-Fa-f]) -OctalDigit = ([0-7]) -LetterOrDigit = ({Letter}|{Digit}) -EscapedSourceCharacter = ("u"{HexDigit}{HexDigit}{HexDigit}{HexDigit}) -NonSeparator = ([^\t\f\r\n\ \(\)\{\}\[\]\;\,\.\=\>\<\!\~\?\:\+\-\*\/\&\|\^\%\"\']|"#"|"\\") -IdentifierStart = ({Letter}|"_"|"$") -IdentifierPart = ({IdentifierStart}|{Digit}|("\\"{EscapedSourceCharacter})) -JS_MLCBegin = "/*" -JS_DocCommentBegin = "/**" -JS_MLCEnd = "*/" -JS_LineCommentBegin = "//" -JS_IntegerHelper1 = (({NonzeroDigit}{Digit}*)|"0") -JS_IntegerHelper2 = ("0"(([xX]{HexDigit}+)|({OctalDigit}*))) -JS_IntegerLiteral = ({JS_IntegerHelper1}[lL]?) -JS_HexLiteral = ({JS_IntegerHelper2}[lL]?) -JS_FloatHelper1 = ([fFdD]?) -JS_FloatHelper2 = ([eE][+-]?{Digit}+{JS_FloatHelper1}) -JS_FloatLiteral1 = ({Digit}+"."({JS_FloatHelper1}|{JS_FloatHelper2}|{Digit}+({JS_FloatHelper1}|{JS_FloatHelper2}))) -JS_FloatLiteral2 = ("."{Digit}+({JS_FloatHelper1}|{JS_FloatHelper2})) -JS_FloatLiteral3 = ({Digit}+{JS_FloatHelper2}) -JS_FloatLiteral = ({JS_FloatLiteral1}|{JS_FloatLiteral2}|{JS_FloatLiteral3}|({Digit}+[fFdD])) -JS_ErrorNumberFormat = (({JS_IntegerLiteral}|{JS_HexLiteral}|{JS_FloatLiteral}){NonSeparator}+) -JS_Separator = ([\(\)\{\}\[\]\]]) -JS_Separator2 = ([\;,.]) -JS_NonAssignmentOperator = ("+"|"-"|"<="|"^"|"++"|"<"|"*"|">="|"%"|"--"|">"|"/"|"!="|"?"|">>"|"!"|"&"|"=="|":"|">>"|"~"|"||"|"&&"|">>>") -JS_AssignmentOperator = ("="|"-="|"*="|"/="|"|="|"&="|"^="|"+="|"%="|"<<="|">>="|">>>=") -JS_Operator = ({JS_NonAssignmentOperator}|{JS_AssignmentOperator}) -JS_Identifier = ({IdentifierStart}{IdentifierPart}*) -JS_ErrorIdentifier = ({NonSeparator}+) -JS_Regex = ("/"([^\*\\/]|\\.)([^/\\]|\\.)*"/"[gim]*) -JS_E4xAttribute = ("@"{Letter}{LetterOrDigit}*) - -JS_BlockTag = ("abstract"|"access"|"alias"|"augments"|"author"|"borrows"| - "callback"|"classdesc"|"constant"|"constructor"|"constructs"| - "copyright"|"default"|"deprecated"|"desc"|"enum"|"event"| - "example"|"exports"|"external"|"file"|"fires"|"global"| - "ignore"|"inner"|"instance"|"kind"|"lends"|"license"| - "link"|"member"|"memberof"|"method"|"mixes"|"mixin"|"module"| - "name"|"namespace"|"param"|"private"|"property"|"protected"| - "public"|"readonly"|"requires"|"return"|"returns"|"see"|"since"| - "static"|"summary"|"this"|"throws"|"todo"| - "type"|"typedef"|"variation"|"version") -JS_InlineTag = ("link"|"linkplain"|"linkcode"|"tutorial") - -e4x_NameStartChar = ([\:A-Z_a-z]) -e4x_NameChar = ({e4x_NameStartChar}|[\-\.0-9]) -e4x_TagName = ({e4x_NameStartChar}{e4x_NameChar}*) -e4x_Identifier = ([^ \t\n<&;]+) -e4x_EndXml = ([;]) -e4x_EntityReference = ([&][^; \t]*[;]?) -e4x_InTagIdentifier = ([^ \t\n\"\'=\/>]+) -e4x_CDataBegin = ("") - -URLGenDelim = ([:\/\?#\[\]@]) -URLSubDelim = ([\!\$&'\(\)\*\+,;=]) -URLUnreserved = ({LetterOrDigit}|"_"|[\-\.\~]) -URLCharacter = ({URLGenDelim}|{URLSubDelim}|{URLUnreserved}|[%]) -URLCharacters = ({URLCharacter}*) -URLEndCharacter = ([\/\$]|{LetterOrDigit}) -URL = (((https?|f(tp|ile))"://"|"www.")({URLCharacters}{URLEndCharacter})?) - - -%state JS_STRING -%state JS_CHAR -%state JS_MLC -%state JS_DOCCOMMENT -%state JS_EOL_COMMENT -%state E4X -%state E4X_COMMENT -%state E4X_PI -%state E4X_DTD -%state E4X_INTAG -%state E4X_INATTR_DOUBLE -%state E4X_INATTR_SINGLE -%state E4X_CDATA - - -%% - - { - - // ECMA 3+ keywords. - "break" | - "continue" | - "delete" | - "else" | - "for" | - "function" | - "if" | - "in" | - "new" | - "this" | - "typeof" | - "var" | - "void" | - "while" | - "with" { addToken(Token.RESERVED_WORD); } - "return" { addToken(Token.RESERVED_WORD_2); } - - //e4X - "each" {if(e4xSupported){ addToken(Token.RESERVED_WORD);} else {addToken(Token.IDENTIFIER);} } - //JavaScript 1.7 - "let" {if(isJavaScriptCompatible("1.7")){ addToken(Token.RESERVED_WORD);} else {addToken(Token.IDENTIFIER);} } - // e4x miscellaneous - {JS_E4xAttribute} { addToken(isE4xSupported() ? Token.MARKUP_TAG_ATTRIBUTE : Token.ERROR_IDENTIFIER); } - - // Reserved (but not yet used) ECMA keywords. - "abstract" { addToken(Token.RESERVED_WORD); } - "boolean" { addToken(Token.DATA_TYPE); } - "byte" { addToken(Token.DATA_TYPE); } - "case" { addToken(Token.RESERVED_WORD); } - "catch" { addToken(Token.RESERVED_WORD); } - "char" { addToken(Token.DATA_TYPE); } - "class" { addToken(Token.RESERVED_WORD); } - "const" { addToken(Token.RESERVED_WORD); } - "debugger" { addToken(Token.RESERVED_WORD); } - "default" { addToken(Token.RESERVED_WORD); } - "do" { addToken(Token.RESERVED_WORD); } - "double" { addToken(Token.DATA_TYPE); } - "enum" { addToken(Token.RESERVED_WORD); } - "export" { addToken(Token.RESERVED_WORD); } - "extends" { addToken(Token.RESERVED_WORD); } - "final" { addToken(Token.RESERVED_WORD); } - "finally" { addToken(Token.RESERVED_WORD); } - "float" { addToken(Token.DATA_TYPE); } - "goto" { addToken(Token.RESERVED_WORD); } - "implements" { addToken(Token.RESERVED_WORD); } - "import" { addToken(Token.RESERVED_WORD); } - "instanceof" { addToken(Token.RESERVED_WORD); } - "int" { addToken(Token.DATA_TYPE); } - "interface" { addToken(Token.RESERVED_WORD); } - "long" { addToken(Token.DATA_TYPE); } - "native" { addToken(Token.RESERVED_WORD); } - "package" { addToken(Token.RESERVED_WORD); } - "private" { addToken(Token.RESERVED_WORD); } - "protected" { addToken(Token.RESERVED_WORD); } - "public" { addToken(Token.RESERVED_WORD); } - "short" { addToken(Token.DATA_TYPE); } - "static" { addToken(Token.RESERVED_WORD); } - "super" { addToken(Token.RESERVED_WORD); } - "switch" { addToken(Token.RESERVED_WORD); } - "synchronized" { addToken(Token.RESERVED_WORD); } - "throw" { addToken(Token.RESERVED_WORD); } - "throws" { addToken(Token.RESERVED_WORD); } - "transient" { addToken(Token.RESERVED_WORD); } - "try" { addToken(Token.RESERVED_WORD); } - "volatile" { addToken(Token.RESERVED_WORD); } - "null" { addToken(Token.RESERVED_WORD); } - - // Literals. - "false" | - "true" { addToken(Token.LITERAL_BOOLEAN); } - "NaN" { addToken(Token.RESERVED_WORD); } - "Infinity" { addToken(Token.RESERVED_WORD); } - - // Functions. - "eval" | - "parseInt" | - "parseFloat" | - "escape" | - "unescape" | - "isNaN" | - "isFinite" { addToken(Token.FUNCTION); } - - {LineTerminator} { addNullToken(); return firstToken; } - {JS_Identifier} { addToken(Token.IDENTIFIER); } - {Whitespace} { addToken(Token.WHITESPACE); } - - /* String/Character literals. */ - [\'] { start = zzMarkedPos-1; validJSString = true; yybegin(JS_CHAR); } - [\"] { start = zzMarkedPos-1; validJSString = true; yybegin(JS_STRING); } - - /* Comment literals. */ - "/**/" { addToken(Token.COMMENT_MULTILINE); } - {JS_MLCBegin} { start = zzMarkedPos-2; yybegin(JS_MLC); } - {JS_DocCommentBegin} { start = zzMarkedPos-3; yybegin(JS_DOCCOMMENT); } - {JS_LineCommentBegin} { start = zzMarkedPos-2; yybegin(JS_EOL_COMMENT); } - - /* Attempt to identify regular expressions (not foolproof) - do after comments! */ - {JS_Regex} { - boolean highlightedAsRegex = false; - if (firstToken==null) { - addToken(Token.REGEX); - highlightedAsRegex = true; - } - else { - // If this is *likely* to be a regex, based on - // the previous token, highlight it as such. - Token t = firstToken.getLastNonCommentNonWhitespaceToken(); - if (RSyntaxUtilities.regexCanFollowInJavaScript(t)) { - addToken(Token.REGEX); - highlightedAsRegex = true; - } - } - // If it doesn't *appear* to be a regex, highlight it as - // individual tokens. - if (!highlightedAsRegex) { - int temp = zzStartRead + 1; - addToken(zzStartRead, zzStartRead, Token.OPERATOR); - zzStartRead = zzCurrentPos = zzMarkedPos = temp; - } - } - - /* Separators. */ - {JS_Separator} { addToken(Token.SEPARATOR); } - {JS_Separator2} { addToken(Token.IDENTIFIER); } - - /* Operators. */ - [\+]?"="{Whitespace}*"<" { - int start = zzStartRead; - int operatorLen = yycharat(0)=='+' ? 2 : 1; - int yylen = yylength(); // Cache before first addToken() invalidates it - //System.out.println("'" + yytext() + "': " + yylength() + ", " + (operatorLen+1)); - addToken(zzStartRead,zzStartRead+operatorLen-1, Token.OPERATOR); - if (yylen>operatorLen+1) { - //System.out.println((start+operatorLen) + ", " + (zzMarkedPos-2)); - addToken(start+operatorLen,zzMarkedPos-2, Token.WHITESPACE); - } - zzStartRead = zzCurrentPos = zzMarkedPos = zzMarkedPos - 1; - if (isE4xSupported()) { - // Scanning will continue with "<" as markup tag start - yybegin(E4X, LANG_INDEX_E4X); - } - // Found e4x (or syntax error) but option not enabled; - // Scanning will continue at "<" as operator - } - {JS_Operator} { addToken(Token.OPERATOR); } - - /* Numbers */ - {JS_IntegerLiteral} { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); } - {JS_HexLiteral} { addToken(Token.LITERAL_NUMBER_HEXADECIMAL); } - {JS_FloatLiteral} { addToken(Token.LITERAL_NUMBER_FLOAT); } - {JS_ErrorNumberFormat} { addToken(Token.ERROR_NUMBER_FORMAT); } - - {JS_ErrorIdentifier} { addToken(Token.ERROR_IDENTIFIER); } - - /* Ended with a line not in a string or comment. */ - <> { addNullToken(); return firstToken; } - - /* Catch any other (unhandled) characters and flag them as bad. */ - . { addToken(Token.ERROR_IDENTIFIER); } - -} - - { - [^\n\\\"]+ {} - \\x{HexDigit}{2} {} - \\x { /* Invalid latin-1 character \xXX */ validJSString = false; } - \\u{HexDigit}{4} {} - \\u { /* Invalid Unicode character \\uXXXX */ validJSString = false; } - \\. { /* Skip all escaped chars. */ } - \\ { /* Line ending in '\' => continue to next line. */ - if (validJSString) { - addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); - addEndToken(INTERNAL_IN_JS_STRING_VALID); - } - else { - addToken(start,zzStartRead, Token.ERROR_STRING_DOUBLE); - addEndToken(INTERNAL_IN_JS_STRING_INVALID); - } - return firstToken; - } - \" { int type = validJSString ? Token.LITERAL_STRING_DOUBLE_QUOTE : Token.ERROR_STRING_DOUBLE; addToken(start,zzStartRead, type); yybegin(YYINITIAL); } - \n | - <> { addToken(start,zzStartRead-1, Token.ERROR_STRING_DOUBLE); addNullToken(); return firstToken; } -} - - { - [^\n\\\']+ {} - \\x{HexDigit}{2} {} - \\x { /* Invalid latin-1 character \xXX */ validJSString = false; } - \\u{HexDigit}{4} {} - \\u { /* Invalid Unicode character \\uXXXX */ validJSString = false; } - \\. { /* Skip all escaped chars. */ } - \\ { /* Line ending in '\' => continue to next line. */ - if (validJSString) { - addToken(start,zzStartRead, Token.LITERAL_CHAR); - addEndToken(INTERNAL_IN_JS_CHAR_VALID); - } - else { - addToken(start,zzStartRead, Token.ERROR_CHAR); - addEndToken(INTERNAL_IN_JS_CHAR_INVALID); - } - return firstToken; - } - \' { int type = validJSString ? Token.LITERAL_CHAR : Token.ERROR_CHAR; addToken(start,zzStartRead, type); yybegin(YYINITIAL); } - \n | - <> { addToken(start,zzStartRead-1, Token.ERROR_CHAR); addNullToken(); return firstToken; } -} - - { - // JavaScript MLC's. This state is essentially Java's MLC state. - [^hwf\n\*]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_MULTILINE); start = zzMarkedPos; } - [hwf] {} - {JS_MLCEnd} { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); } - \* {} - \n | - <> { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_IN_JS_MLC); return firstToken; } -} - - { - [^hwf\@\{\n\<\*]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_DOCUMENTATION); start = zzMarkedPos; } - [hwf] {} - - "@"{JS_BlockTag} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addToken(temp,zzMarkedPos-1, Token.COMMENT_KEYWORD); start = zzMarkedPos; } - "@" {} - "{@"{JS_InlineTag}[^\}]*"}" { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addToken(temp,zzMarkedPos-1, Token.COMMENT_KEYWORD); start = zzMarkedPos; } - "{" {} - \n { addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addEndToken(INTERNAL_IN_JS_COMMENT_DOCUMENTATION); return firstToken; } - "<"[/]?({Letter}[^\>]*)?">" { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addToken(temp,zzMarkedPos-1, Token.COMMENT_MARKUP); start = zzMarkedPos; } - \< {} - {JS_MLCEnd} { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.COMMENT_DOCUMENTATION); } - \* {} - <> { yybegin(YYINITIAL); addToken(start,zzEndRead, Token.COMMENT_DOCUMENTATION); addEndToken(INTERNAL_IN_JS_COMMENT_DOCUMENTATION); return firstToken; } -} - - { - [^hwf\n]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_EOL); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_EOL); start = zzMarkedPos; } - [hwf] {} - \n | - <> { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; } -} - - { - "" { int temp = zzMarkedPos; addToken(start,zzStartRead+2, Token.MARKUP_COMMENT); start = temp; yybegin(e4x_prevState); } - "-" {} - {LineTerminator} | - <> { addToken(start,zzStartRead-1, Token.MARKUP_COMMENT); addEndToken(INTERNAL_IN_E4X_COMMENT - e4x_prevState); return firstToken; } -} - - { - [^\n\?]+ {} - "?>" { yybegin(E4X); addToken(start,zzStartRead+1, Token.MARKUP_PROCESSING_INSTRUCTION); } - "?" {} - {LineTerminator} | - <> { addToken(start,zzStartRead-1, Token.MARKUP_PROCESSING_INSTRUCTION); addEndToken(INTERNAL_E4X_MARKUP_PROCESSING_INSTRUCTION); return firstToken; } -} - - { - [^\n\[\]<>]+ {} - "" { yybegin(YYINITIAL); addToken(start,zzStartRead+2, Token.MARKUP_COMMENT); } - "-" {} - {LineTerminator} | - <> { addToken(start,zzStartRead-1, Token.MARKUP_COMMENT); return firstToken; } -} - - { - [^\n\?]+ {} - {LineTerminator} { addToken(start,zzStartRead-1, Token.MARKUP_PROCESSING_INSTRUCTION); return firstToken; } - "?>" { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.MARKUP_PROCESSING_INSTRUCTION); } - "?" {} - <> { addToken(start,zzStartRead-1, Token.MARKUP_PROCESSING_INSTRUCTION); return firstToken; } -} - - { - [^\n>]+ {} - {LineTerminator} { addToken(start,zzStartRead-1, Token.MARKUP_DTD); return firstToken; } - ">" { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.MARKUP_DTD); } - <> { addToken(start,zzStartRead-1, Token.MARKUP_DTD); return firstToken; } -} - - { - {InTagIdentifier} { addToken(Token.MARKUP_TAG_ATTRIBUTE); } - {Whitespace}+ { addToken(Token.WHITESPACE); } - "=" { addToken(Token.OPERATOR); } - "/" { addToken(Token.MARKUP_TAG_DELIMITER); /* Not valid but we'll still accept it */ } - "/>" { yybegin(YYINITIAL); addToken(Token.MARKUP_TAG_DELIMITER); } - ">" { yybegin(YYINITIAL); addToken(Token.MARKUP_TAG_DELIMITER); } - [\"] { start = zzMarkedPos-1; yybegin(INATTR_DOUBLE); } - [\'] { start = zzMarkedPos-1; yybegin(INATTR_SINGLE); } - <> { addToken(start,zzStartRead-1, INTERNAL_INTAG); return firstToken; } -} - - { - [^\"]* {} - [\"] { yybegin(INTAG); addToken(start,zzStartRead, Token.MARKUP_TAG_ATTRIBUTE_VALUE); } - <> { addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_DOUBLE); return firstToken; } -} - - { - [^\']* {} - [\'] { yybegin(INTAG); addToken(start,zzStartRead, Token.MARKUP_TAG_ATTRIBUTE_VALUE); } - <> { addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_SINGLE); return firstToken; } -} - - { - {InTagIdentifier} { addToken(Token.MARKUP_TAG_ATTRIBUTE); } - {Whitespace}+ { addToken(Token.WHITESPACE); } - "=" { addToken(Token.OPERATOR); } - "/" { addToken(Token.MARKUP_TAG_DELIMITER); /* Not valid but we'll still accept it */ } - "/>" { yybegin(YYINITIAL); addToken(Token.MARKUP_TAG_DELIMITER); } - ">" { yybegin(AS); addToken(Token.MARKUP_TAG_DELIMITER); } - [\"] { start = zzMarkedPos-1; yybegin(INATTR_DOUBLE_SCRIPT); } - [\'] { start = zzMarkedPos-1; yybegin(INATTR_SINGLE_SCRIPT); } - <> { addToken(start,zzStartRead-1, INTERNAL_INTAG_SCRIPT); return firstToken; } -} - - { - [^\"]* {} - [\"] { yybegin(INTAG_SCRIPT); addToken(start,zzStartRead, Token.MARKUP_TAG_ATTRIBUTE_VALUE); } - <> { addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_DOUBLE_QUOTE_SCRIPT); return firstToken; } -} - - { - [^\']* {} - [\'] { yybegin(INTAG_SCRIPT); addToken(start,zzStartRead, Token.MARKUP_TAG_ATTRIBUTE_VALUE); } - <> { addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_SINGLE_QUOTE_SCRIPT); return firstToken; } -} - - { - [^\]]+ {} - {CDataEnd} { int temp=zzStartRead; yybegin(YYINITIAL); addToken(start,zzStartRead-1, Token.MARKUP_CDATA); addToken(temp,zzMarkedPos-1, Token.MARKUP_CDATA_DELIMITER); } - "]" {} - <> { addToken(start,zzStartRead-1, Token.MARKUP_CDATA); return firstToken; } -} - - { - - {AS_EndScriptTag} { - int origStart = zzStartRead; - String text = yytext(); - int tagNameEnd = text.length() - 2; // "-1" is '>' - while (Character.isWhitespace(text.charAt(tagNameEnd))) { - tagNameEnd--; - } - int tagNameLen = tagNameEnd - 1; - yybegin(YYINITIAL); - addToken(zzStartRead,zzStartRead+1, Token.MARKUP_TAG_DELIMITER); - addToken(origStart+2,origStart+2+tagNameLen-1, Token.MARKUP_TAG_NAME); - if (tagNameEnd> { addEndToken(INTERNAL_IN_AS); return firstToken; } - - /* Catch any other (unhandled) characters and flag them as bad. */ - . { addToken(Token.ERROR_IDENTIFIER); } - -} - - - { - - [^hwf\n\*]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_MULTILINE); start = zzMarkedPos; } - [hwf] {} - - \n { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_IN_AS_MLC); return firstToken; } - {AS_MLCEnd} { yybegin(AS); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); } - \* {} - <> { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_IN_AS_MLC); return firstToken; } - -} - - - { - [^hwf\n]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_EOL); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_EOL); start = zzMarkedPos; } - [hwf] {} - \n | - <> { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addEndToken(INTERNAL_IN_AS); return firstToken; } - -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/MxmlTokenMaker.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/MxmlTokenMaker.java deleted file mode 100644 index fce4b7c..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/MxmlTokenMaker.java +++ /dev/null @@ -1,2725 +0,0 @@ -/* The following code was generated by JFlex 1.4.1 on 6/18/15 6:41 PM */ - -/* - * 01/21/2011 - * - * MxmlTokenMaker.java - Generates tokens for MXML syntax highlighting. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * Scanner for MXML. - * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated MXMLTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.5 - * - */ - -public class MxmlTokenMaker extends AbstractMarkupTokenMaker { - - /** This character denotes the end of file */ - public static final int YYEOF = -1; - - /** lexical states */ - public static final int AS_EOL_COMMENT = 13; - public static final int AS_MLC = 12; - public static final int INTAG_SCRIPT = 7; - public static final int INATTR_DOUBLE_SCRIPT = 8; - public static final int CDATA = 10; - public static final int INATTR_SINGLE_SCRIPT = 9; - public static final int DTD = 3; - public static final int INATTR_SINGLE = 6; - public static final int INATTR_DOUBLE = 5; - public static final int YYINITIAL = 0; - public static final int AS = 11; - public static final int INTAG = 4; - public static final int COMMENT = 1; - public static final int PI = 2; - - /** - * Translates characters to character classes - */ - private static final String ZZ_CMAP_PACKED = - "\11\0\1\12\1\10\1\0\1\7\1\36\22\0\1\105\1\16\1\32"+ - "\1\37\1\40\1\63\1\13\1\31\2\73\1\42\1\51\1\61\1\50"+ - "\1\6\1\41\1\3\3\27\4\27\2\2\1\5\1\14\1\11\1\15"+ - "\1\25\1\64\1\72\1\22\1\26\1\20\1\21\1\47\1\45\1\1"+ - "\1\122\1\121\1\1\1\110\1\44\1\111\1\112\1\113\1\116\1\123"+ - "\1\120\1\66\1\23\1\117\1\115\1\1\1\43\2\1\1\17\1\30"+ - "\1\24\1\62\1\4\1\0\1\55\1\35\1\67\1\76\1\54\1\46"+ - "\1\106\1\74\1\70\1\114\1\77\1\56\1\102\1\34\1\100\1\71"+ - "\1\103\1\53\1\57\1\52\1\33\1\107\1\75\1\104\1\101\1\1"+ - "\1\60\1\62\1\60\1\65\uff81\0"; - - /** - * Translates characters to character classes - */ - private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); - - /** - * Translates DFA states to action switch labels. - */ - private static final int [] ZZ_ACTION = zzUnpackAction(); - - private static final String ZZ_ACTION_PACKED_0 = - "\5\0\2\1\1\0\2\1\4\0\2\2\1\3\1\4"+ - "\1\5\1\6\1\1\1\7\5\1\1\10\2\1\1\11"+ - "\1\12\2\13\1\14\1\15\1\16\1\17\1\20\1\1"+ - "\1\21\1\1\1\22\1\23\1\24\1\25\2\1\1\26"+ - "\1\2\2\27\1\2\1\30\2\14\1\2\1\14\1\31"+ - "\3\2\1\31\1\14\1\2\1\32\1\33\3\2\2\26"+ - "\1\14\3\2\2\14\25\2\1\1\1\34\5\1\1\35"+ - "\3\1\1\36\1\37\1\4\1\40\1\6\5\0\1\41"+ - "\1\0\1\26\1\42\2\43\1\27\2\42\1\44\1\42"+ - "\3\0\3\2\1\0\1\14\1\2\1\32\1\45\2\33"+ - "\1\46\5\2\1\47\3\2\1\26\1\50\1\51\21\2"+ - "\1\47\20\2\2\47\12\2\1\47\2\2\1\47\11\2"+ - "\1\52\12\0\1\53\2\0\1\54\2\0\1\55\1\26"+ - "\1\43\1\0\2\44\3\0\3\2\1\56\1\2\2\32"+ - "\1\33\1\57\1\33\6\2\1\47\4\2\1\26\1\0"+ - "\1\60\5\2\1\47\23\2\1\47\10\2\1\60\24\2"+ - "\1\47\1\2\1\60\7\2\11\0\1\61\2\0\1\62"+ - "\1\26\3\0\2\2\1\32\1\63\1\32\1\33\10\2"+ - "\1\26\1\64\6\2\1\0\1\65\13\2\1\66\3\2"+ - "\1\66\36\2\2\0\1\67\2\0\1\70\3\0\1\26"+ - "\2\0\1\2\1\32\1\33\7\2\1\26\5\2\1\47"+ - "\1\0\26\2\1\66\13\2\5\0\1\26\2\0\1\2"+ - "\1\32\1\33\6\2\1\26\5\2\1\0\30\2\3\0"+ - "\4\2\1\26\2\2\1\0\23\2\3\0\1\2\1\66"+ - "\1\2\1\47\21\2\1\71\1\0\1\72\4\2\1\66"+ - "\40\2"; - - private static int [] zzUnpackAction() { - int [] result = new int[624]; - int offset = 0; - offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAction(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /** - * Translates a state to a row index in the transition table - */ - private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); - - private static final String ZZ_ROWMAP_PACKED_0 = - "\0\0\0\124\0\250\0\374\0\u0150\0\u01a4\0\u01f8\0\u024c"+ - "\0\u02a0\0\u02f4\0\u0348\0\u039c\0\u03f0\0\u0444\0\u0498\0\u04ec"+ - "\0\u0540\0\u0594\0\u05e8\0\u063c\0\u0690\0\u0540\0\u06e4\0\u0738"+ - "\0\u078c\0\u07e0\0\u0834\0\u0540\0\u0888\0\u08dc\0\u0540\0\u0540"+ - "\0\u0930\0\u0984\0\u0540\0\u0540\0\u0540\0\u0540\0\u09d8\0\u0a2c"+ - "\0\u0540\0\u0a80\0\u0540\0\u0540\0\u0540\0\u0540\0\u0ad4\0\u0b28"+ - "\0\u0b7c\0\u0bd0\0\u0c24\0\u0c78\0\u0ccc\0\u0540\0\u0d20\0\u0d74"+ - "\0\u0540\0\u0dc8\0\u0540\0\u0e1c\0\u0e70\0\u0ec4\0\u0f18\0\u0f6c"+ - "\0\u0fc0\0\u1014\0\u1068\0\u10bc\0\u1110\0\u1164\0\u0540\0\u11b8"+ - "\0\u120c\0\u1260\0\u12b4\0\u1308\0\u135c\0\u13b0\0\u1404\0\u1458"+ - "\0\u14ac\0\u1500\0\u1554\0\u15a8\0\u15fc\0\u1650\0\u16a4\0\u16f8"+ - "\0\u174c\0\u17a0\0\u17f4\0\u1848\0\u189c\0\u18f0\0\u1944\0\u1998"+ - "\0\u19ec\0\u1a40\0\u1a94\0\u1ae8\0\u0540\0\u1b3c\0\u1b90\0\u1be4"+ - "\0\u1c38\0\u1c8c\0\u0540\0\u1ce0\0\u1d34\0\u1d88\0\u1ddc\0\u1e30"+ - "\0\u1e84\0\u0540\0\u0540\0\u1ed8\0\u1f2c\0\u1f80\0\u1fd4\0\u2028"+ - "\0\u0540\0\u207c\0\u20d0\0\u2124\0\u2178\0\u2124\0\u2124\0\u21cc"+ - "\0\u2220\0\u2274\0\u22c8\0\u0dc8\0\u231c\0\u2370\0\u23c4\0\u2418"+ - "\0\u246c\0\u24c0\0\u2514\0\u2568\0\u25bc\0\u0540\0\u2610\0\u2664"+ - "\0\u0540\0\u26b8\0\u270c\0\u2760\0\u27b4\0\u2808\0\u285c\0\u28b0"+ - "\0\u2904\0\u2958\0\u29ac\0\u0540\0\u2a00\0\u2a54\0\u2aa8\0\u2afc"+ - "\0\u2b50\0\u2ba4\0\u2bf8\0\u2c4c\0\u2ca0\0\u2cf4\0\u2d48\0\u2d9c"+ - "\0\u2df0\0\u2e44\0\u2e98\0\u2eec\0\u2f40\0\u2f94\0\u0bd0\0\u2fe8"+ - "\0\u303c\0\u3090\0\u30e4\0\u3138\0\u318c\0\u31e0\0\u3234\0\u3288"+ - "\0\u32dc\0\u3330\0\u3384\0\u33d8\0\u342c\0\u3480\0\u34d4\0\u3528"+ - "\0\u357c\0\u35d0\0\u3624\0\u3678\0\u36cc\0\u3720\0\u3774\0\u37c8"+ - "\0\u381c\0\u3870\0\u38c4\0\u3918\0\u396c\0\u39c0\0\u3a14\0\u3a68"+ - "\0\u3abc\0\u3b10\0\u3b64\0\u3bb8\0\u3c0c\0\u3c60\0\u3cb4\0\u3d08"+ - "\0\u0540\0\u3d5c\0\u3db0\0\u3e04\0\u3e58\0\u3eac\0\u3f00\0\u3f54"+ - "\0\u3fa8\0\u3ffc\0\u4050\0\u40a4\0\u40f8\0\u414c\0\u0540\0\u41a0"+ - "\0\u41f4\0\u0540\0\u4248\0\u429c\0\u42f0\0\u2124\0\u4344\0\u4398"+ - "\0\u43ec\0\u4440\0\u4494\0\u44e8\0\u453c\0\u0540\0\u4590\0\u45e4"+ - "\0\u4638\0\u468c\0\u0540\0\u46e0\0\u4734\0\u4788\0\u47dc\0\u4830"+ - "\0\u4884\0\u48d8\0\u492c\0\u4980\0\u49d4\0\u4a28\0\u4a7c\0\u4ad0"+ - "\0\u4b24\0\u4b78\0\u4bcc\0\u4c20\0\u4c74\0\u4cc8\0\u4d1c\0\u4d70"+ - "\0\u4dc4\0\u4e18\0\u4e6c\0\u4ec0\0\u4f14\0\u4f68\0\u4fbc\0\u5010"+ - "\0\u5064\0\u50b8\0\u510c\0\u5160\0\u51b4\0\u5208\0\u525c\0\u52b0"+ - "\0\u5304\0\u5358\0\u53ac\0\u5400\0\u5454\0\u54a8\0\u54fc\0\u5550"+ - "\0\u55a4\0\u55f8\0\u564c\0\u56a0\0\u56f4\0\u5748\0\u579c\0\u57f0"+ - "\0\u5844\0\u5898\0\u58ec\0\u5940\0\u5994\0\u59e8\0\u5a3c\0\u5a90"+ - "\0\u5ae4\0\u5b38\0\u5b8c\0\u5be0\0\u5c34\0\u5c88\0\u5cdc\0\u5d30"+ - "\0\u5d84\0\u5dd8\0\u5e2c\0\u0bd0\0\u5e80\0\u5ed4\0\u5f28\0\u5f7c"+ - "\0\u5fd0\0\u6024\0\u6078\0\u60cc\0\u6120\0\u6174\0\u61c8\0\u621c"+ - "\0\u6270\0\u62c4\0\u6318\0\u636c\0\u0540\0\u63c0\0\u6414\0\u6468"+ - "\0\u64bc\0\u6510\0\u6564\0\u65b8\0\u660c\0\u6660\0\u66b4\0\u0540"+ - "\0\u6708\0\u675c\0\u67b0\0\u6804\0\u6858\0\u68ac\0\u6900\0\u6954"+ - "\0\u69a8\0\u69fc\0\u6a50\0\u0540\0\u6aa4\0\u6af8\0\u6b4c\0\u6ba0"+ - "\0\u6bf4\0\u6c48\0\u6c9c\0\u0bd0\0\u6cf0\0\u6d44\0\u6d98\0\u6dec"+ - "\0\u6e40\0\u6e94\0\u6ee8\0\u6f3c\0\u6f90\0\u6fe4\0\u7038\0\u0bd0"+ - "\0\u708c\0\u70e0\0\u7134\0\u7188\0\u71dc\0\u7230\0\u7284\0\u72d8"+ - "\0\u732c\0\u7380\0\u73d4\0\u7428\0\u747c\0\u74d0\0\u7524\0\u7578"+ - "\0\u75cc\0\u7620\0\u7674\0\u76c8\0\u771c\0\u7770\0\u77c4\0\u7818"+ - "\0\u786c\0\u78c0\0\u7914\0\u7968\0\u79bc\0\u7a10\0\u7a64\0\u7ab8"+ - "\0\u7b0c\0\u7b60\0\u7bb4\0\u7c08\0\u7c5c\0\u7cb0\0\u7d04\0\u7d58"+ - "\0\u7dac\0\u7e00\0\u6468\0\u7e54\0\u7ea8\0\u7efc\0\u7f50\0\u7fa4"+ - "\0\u7ff8\0\u804c\0\u80a0\0\u80f4\0\u8148\0\u819c\0\u81f0\0\u8244"+ - "\0\u8298\0\u82ec\0\u8340\0\u8394\0\u83e8\0\u843c\0\u8490\0\u84e4"+ - "\0\u8538\0\u858c\0\u85e0\0\u8634\0\u8688\0\u86dc\0\u8730\0\u8784"+ - "\0\u87d8\0\u882c\0\u8880\0\u88d4\0\u8928\0\u897c\0\u89d0\0\u8a24"+ - "\0\u8a78\0\u8acc\0\u8b20\0\u8b74\0\u8bc8\0\u8c1c\0\u8c70\0\u8cc4"+ - "\0\u8d18\0\u8d6c\0\u8dc0\0\u8e14\0\u8e68\0\u8ebc\0\u8f10\0\u8f64"+ - "\0\u8fb8\0\u900c\0\u9060\0\u7c5c\0\u90b4\0\u7d58\0\u9108\0\u915c"+ - "\0\u91b0\0\u9204\0\u9258\0\u92ac\0\u9300\0\u9354\0\u93a8\0\u93fc"+ - "\0\u9450\0\u94a4\0\u94f8\0\u954c\0\u95a0\0\u95f4\0\u9648\0\u969c"+ - "\0\u96f0\0\u9744\0\u9798\0\u97ec\0\u9840\0\u9894\0\u98e8\0\u993c"+ - "\0\u9990\0\u99e4\0\u9a38\0\u9a8c\0\u9ae0\0\u9b34\0\u9b88\0\u9bdc"+ - "\0\u9c30\0\u9c84\0\u9cd8\0\u9d2c\0\u9d80\0\u9dd4\0\u9e28\0\u9e7c"+ - "\0\u9ed0\0\u9f24\0\u9f78\0\u9fcc\0\ua020\0\ua074\0\ua0c8\0\ua11c"+ - "\0\ua170\0\ua1c4\0\ua218\0\ua26c\0\ua2c0\0\ua314\0\ua368\0\ua3bc"+ - "\0\ua410\0\ua464\0\ua4b8\0\ua50c\0\ua560\0\ua5b4\0\ua608\0\ua65c"+ - "\0\ua6b0\0\ua704\0\ua758\0\ua7ac\0\ua800\0\ua854\0\ua8a8\0\ua8fc"+ - "\0\ua950\0\ua9a4\0\ua9f8\0\uaa4c\0\u0b7c\0\uaaa0\0\u0540\0\uaaf4"+ - "\0\uab48\0\uab9c\0\uabf0\0\uac44\0\uac98\0\uacec\0\uad40\0\uad94"+ - "\0\uade8\0\uae3c\0\uae90\0\uaee4\0\uaf38\0\uaf8c\0\uafe0\0\ub034"+ - "\0\u0540\0\ub088\0\u0540\0\ub0dc\0\ub130\0\ub184\0\ub1d8\0\ub22c"+ - "\0\ub280\0\ub2d4\0\ub328\0\ub37c\0\ub3d0\0\ub424\0\ub478\0\ub4cc"+ - "\0\ub520\0\ub574\0\ub5c8\0\ub61c\0\ub670\0\ub6c4\0\ub718\0\ub76c"+ - "\0\ub7c0\0\ub814\0\ub868\0\ub8bc\0\ub910\0\ub964\0\ub9b8\0\uba0c"+ - "\0\uba60\0\ubab4\0\ubb08\0\ubb5c\0\ubbb0\0\ubc04\0\ubc58\0\ubcac"; - - private static int [] zzUnpackRowMap() { - int [] result = new int[624]; - int offset = 0; - offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackRowMap(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int high = packed.charAt(i++) << 16; - result[j++] = high | packed.charAt(i++); - } - return j; - } - - /** - * The transition table of the DFA - */ - private static final int [] ZZ_TRANS = zzUnpackTrans(); - - private static final String ZZ_TRANS_PACKED_0 = - "\7\17\1\20\1\21\1\22\1\23\1\24\71\17\1\23"+ - "\16\17\10\25\1\26\35\25\1\27\1\25\1\30\23\25"+ - "\1\31\1\32\26\25\10\33\1\34\53\33\1\35\37\33"+ - "\10\36\1\37\14\36\1\40\76\36\7\41\1\42\1\0"+ - "\1\41\1\23\2\41\1\43\7\41\1\44\3\41\1\45"+ - "\1\46\6\41\1\47\43\41\1\23\16\41\32\50\1\51"+ - "\71\50\31\52\1\51\72\52\7\41\1\42\1\0\1\41"+ - "\1\23\2\41\1\43\7\41\1\53\3\41\1\54\1\55"+ - "\6\41\1\47\43\41\1\23\16\41\32\50\1\56\71\50"+ - "\31\52\1\56\72\52\24\57\1\60\77\57\1\61\1\62"+ - "\1\63\1\64\1\62\1\43\1\65\1\23\1\66\1\67"+ - "\1\23\1\70\1\71\2\72\1\73\1\74\1\75\1\76"+ - "\1\62\1\77\1\100\1\101\1\63\1\61\1\102\1\103"+ - "\1\104\1\105\1\106\1\107\1\110\1\62\1\111\1\72"+ - "\1\112\1\62\1\113\1\114\1\62\1\115\1\116\1\117"+ - "\1\120\1\121\1\122\1\123\1\124\1\73\1\71\2\72"+ - "\2\43\1\125\1\126\1\127\1\130\1\61\1\73\1\62"+ - "\1\131\1\132\1\62\1\133\1\62\1\134\2\62\1\23"+ - "\1\135\1\136\1\137\1\140\1\141\1\142\1\62\1\143"+ - "\6\62\10\144\1\145\31\144\1\146\3\144\1\147\25\144"+ - "\1\150\1\151\26\144\10\152\1\153\35\152\1\154\25\152"+ - "\1\155\1\156\26\152\10\17\4\0\71\17\1\0\25\17"+ - "\1\20\2\0\1\23\1\0\71\17\1\23\16\17\125\0"+ - "\1\157\3\0\1\157\10\0\1\160\1\0\4\157\2\0"+ - "\1\157\4\0\3\157\3\0\1\161\1\0\5\157\2\0"+ - "\6\157\4\0\1\162\1\0\4\157\2\0\11\157\1\0"+ - "\16\157\7\0\1\23\2\0\1\23\72\0\1\23\16\0"+ - "\12\24\1\0\1\24\1\163\70\24\1\0\16\24\10\25"+ - "\1\0\35\25\1\0\1\25\1\0\23\25\2\0\26\25"+ - "\52\0\1\164\15\0\1\165\103\0\1\166\125\0\1\167"+ - "\146\0\1\170\26\0\10\33\1\0\53\33\1\0\37\33"+ - "\25\0\1\171\76\0\10\36\1\0\14\36\1\0\76\36"+ - "\10\41\1\0\1\41\1\0\2\41\1\0\7\41\1\0"+ - "\3\41\2\0\6\41\1\0\43\41\1\0\25\41\1\42"+ - "\1\0\1\41\1\23\2\41\1\0\7\41\1\0\3\41"+ - "\2\0\6\41\1\0\43\41\1\23\16\41\25\0\1\44"+ - "\76\0\32\50\1\0\71\50\31\52\1\0\72\52\24\57"+ - "\1\0\77\57\24\0\1\172\77\0\5\61\13\0\4\61"+ - "\2\0\3\61\2\0\3\61\1\0\2\61\2\0\5\61"+ - "\2\0\6\61\6\0\5\61\1\0\11\61\1\0\17\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\6\62\6\0"+ - "\4\62\1\61\1\0\11\62\1\0\16\62\2\174\2\63"+ - "\1\174\1\0\1\175\11\0\1\174\1\176\2\174\2\0"+ - "\1\174\1\63\1\174\2\0\3\174\1\0\2\174\2\0"+ - "\1\174\1\177\2\176\1\200\2\0\2\174\1\200\1\174"+ - "\1\177\1\174\6\0\5\174\1\0\2\174\1\176\6\174"+ - "\1\0\20\174\1\201\1\202\1\174\1\0\1\175\11\0"+ - "\1\174\1\176\2\174\2\0\1\174\1\202\1\174\2\0"+ - "\3\174\1\0\2\174\2\0\1\203\1\177\2\176\1\200"+ - "\2\0\2\174\1\200\1\174\1\177\1\174\6\0\5\174"+ - "\1\0\2\174\1\176\5\174\1\203\1\0\16\174\2\0"+ - "\2\175\23\0\1\175\105\0\1\204\3\0\1\43\1\205"+ - "\22\0\1\206\75\0\1\43\1\0\1\43\123\0\1\43"+ - "\106\0\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\3\62\1\0\1\61\1\62\2\0\5\62\2\0"+ - "\6\62\6\0\4\62\1\61\1\0\4\62\1\207\4\62"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\3\62\1\210\2\62\6\0\4\62\1\61\1\0"+ - "\11\62\1\0\16\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\3\62\1\0\1\61\1\62\2\0"+ - "\5\62\2\0\1\62\1\211\4\62\6\0\4\62\1\61"+ - "\1\0\11\62\1\0\16\62\24\0\1\212\114\0\1\43"+ - "\7\0\1\213\76\0\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\3\62\1\0\1\61\1\62\2\0"+ - "\5\62\2\0\6\62\6\0\4\62\1\61\1\0\4\62"+ - "\1\214\4\62\1\0\16\62\30\102\1\215\1\216\72\102"+ - "\10\103\1\217\17\103\1\220\1\103\1\221\71\103\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\1\62"+ - "\1\222\1\62\1\0\1\61\1\62\2\0\5\62\2\0"+ - "\5\62\1\223\6\0\2\62\1\224\1\225\1\61\1\0"+ - "\11\62\1\0\16\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\1\226\2\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\2\62\1\227\1\230\2\62\6\0"+ - "\4\62\1\61\1\0\4\62\1\231\4\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\1\62"+ - "\1\232\4\62\6\0\4\62\1\61\1\0\11\62\1\0"+ - "\16\62\5\61\13\0\4\61\2\0\3\61\2\0\3\61"+ - "\1\0\2\61\2\0\5\61\2\0\6\61\6\0\2\61"+ - "\1\233\2\61\1\0\11\61\1\0\16\61\15\0\1\43"+ - "\23\0\1\234\1\235\61\0\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\3\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\6\62\6\0\4\62\1\61\1\0"+ - "\11\62\1\0\3\62\1\236\12\62\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\1\237\2\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\6\62\6\0\4\62"+ - "\1\61\1\0\11\62\1\0\16\62\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\1\240\2\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\3\62\1\241\1\62"+ - "\1\242\6\0\2\62\1\243\1\62\1\61\1\0\4\62"+ - "\1\244\4\62\1\0\16\62\15\0\1\43\32\0\1\43"+ - "\70\0\1\43\33\0\1\43\52\0\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\3\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\1\62\1\245\1\246\1\247"+ - "\2\62\6\0\4\62\1\61\1\0\1\250\3\62\1\251"+ - "\1\252\3\62\1\0\16\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\3\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\2\62\1\253\1\254\2\62\6\0"+ - "\4\62\1\61\1\0\11\62\1\0\16\62\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\4\62\1\255\1\256"+ - "\6\0\4\62\1\61\1\0\7\62\1\257\1\260\1\0"+ - "\1\62\1\261\14\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\1\62\1\262\1\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\6\62\6\0\4\62\1\61"+ - "\1\0\2\62\1\262\6\62\1\0\16\62\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\1\257\1\62\1\257"+ - "\1\263\2\62\6\0\4\62\1\61\1\0\4\62\1\264"+ - "\4\62\1\0\16\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\1\265\2\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\1\266\1\62\1\267\3\62\6\0"+ - "\1\62\1\270\2\62\1\61\1\0\1\62\1\271\7\62"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\1\272\1\62\1\273\3\62\6\0\4\62\1\61"+ - "\1\0\4\62\1\274\4\62\1\0\16\62\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\3\62\1\275\1\276"+ - "\1\62\6\0\4\62\1\61\1\0\4\62\1\277\4\62"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\1\62\1\300\1\62\1\0\1\61\1\62"+ - "\2\0\3\62\1\301\1\62\2\0\5\62\1\302\6\0"+ - "\4\62\1\61\1\0\6\62\1\303\2\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\1\304\2\62\1\0\1\61\1\62\2\0\5\62\2\0"+ - "\1\62\1\305\1\62\1\306\1\307\1\62\6\0\4\62"+ - "\1\61\1\0\11\62\1\0\16\62\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\3\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\6\62\6\0\2\62\1\310"+ - "\1\62\1\61\1\0\1\311\10\62\1\0\16\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\2\62\1\312"+ - "\3\62\6\0\4\62\1\61\1\0\4\62\1\257\1\313"+ - "\3\62\1\0\16\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\1\62\1\314\1\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\1\62\1\257\4\62\6\0"+ - "\4\62\1\61\1\0\11\62\1\0\1\62\1\315\14\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\3\62"+ - "\1\316\2\62\6\0\4\62\1\61\1\0\11\62\1\0"+ - "\16\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\3\62\1\0\1\61\1\62\2\0\5\62\2\0"+ - "\1\257\1\62\1\317\3\62\6\0\4\62\1\61\1\0"+ - "\4\62\1\320\4\62\1\0\16\62\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\3\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\3\62\1\321\2\62\6\0"+ - "\4\62\1\61\1\0\4\62\1\322\4\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\2\62"+ - "\1\323\3\62\6\0\4\62\1\61\1\0\11\62\1\0"+ - "\16\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\3\62\1\0\1\61\1\62\2\0\5\62\2\0"+ - "\3\62\1\324\2\62\6\0\4\62\1\61\1\0\4\62"+ - "\1\325\4\62\1\0\16\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\1\326\2\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\6\62\6\0\4\62\1\61"+ - "\1\0\11\62\1\0\16\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\2\62\1\327\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\6\62\6\0\4\62\1\61"+ - "\1\0\11\62\1\0\16\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\3\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\2\62\1\330\3\62\6\0\4\62"+ - "\1\61\1\0\11\62\1\0\16\62\10\144\1\0\31\144"+ - "\1\0\3\144\1\0\25\144\2\0\26\144\41\0\1\331"+ - "\134\0\1\332\15\0\1\333\105\0\1\334\146\0\1\335"+ - "\26\0\10\152\1\0\35\152\1\0\25\152\2\0\26\152"+ - "\52\0\1\336\15\0\1\337\105\0\1\340\146\0\1\341"+ - "\27\0\3\157\1\0\2\157\11\0\4\157\2\0\2\157"+ - "\3\0\3\157\5\0\6\157\1\0\6\157\6\0\4\157"+ - "\2\0\11\157\1\0\16\157\17\0\1\342\30\0\1\343"+ - "\54\0\1\344\3\0\1\344\12\0\4\344\2\0\1\344"+ - "\4\0\3\344\5\0\5\344\2\0\6\344\6\0\4\344"+ - "\2\0\11\344\1\0\16\344\71\0\1\345\110\0\1\346"+ - "\72\0\1\347\150\0\1\350\146\0\1\351\53\0\1\352"+ - "\76\0\5\61\13\0\4\61\2\0\3\61\2\0\1\353"+ - "\2\61\1\0\2\61\2\0\5\61\2\0\6\61\6\0"+ - "\5\61\1\0\11\61\1\0\16\61\5\174\13\0\4\174"+ - "\2\0\3\174\2\0\3\174\1\0\2\174\2\0\5\174"+ - "\2\0\6\174\6\0\5\174\1\0\11\174\1\0\20\174"+ - "\2\175\1\174\13\0\1\174\1\176\2\174\2\0\1\174"+ - "\1\175\1\174\2\0\3\174\1\0\2\174\2\0\2\174"+ - "\2\176\1\200\2\0\2\174\1\200\3\174\6\0\5\174"+ - "\1\0\2\174\1\176\6\174\1\0\20\174\2\354\1\174"+ - "\13\0\4\174\2\0\1\174\1\354\1\174\2\0\3\174"+ - "\1\0\2\174\2\0\5\174\2\355\6\174\6\0\5\174"+ - "\1\0\11\174\1\0\20\174\2\201\1\174\1\0\1\175"+ - "\11\0\1\174\1\176\2\174\2\0\1\174\1\201\1\174"+ - "\2\0\3\174\1\0\2\174\2\0\2\174\2\176\1\200"+ - "\2\0\2\174\1\200\3\174\6\0\5\174\1\0\2\174"+ - "\1\176\6\174\1\0\20\174\1\201\1\202\1\174\1\0"+ - "\1\175\11\0\1\174\1\176\2\174\2\0\1\174\1\202"+ - "\1\174\2\0\3\174\1\0\2\174\2\0\1\174\1\356"+ - "\2\176\1\200\2\0\2\174\1\200\1\174\1\356\1\174"+ - "\6\0\5\174\1\0\2\174\1\176\6\174\1\0\20\174"+ - "\2\357\1\174\13\0\3\357\1\174\2\0\2\357\1\174"+ - "\2\0\2\174\1\357\1\0\2\174\2\0\2\174\3\357"+ - "\2\0\2\174\2\357\2\174\6\0\1\174\1\357\3\174"+ - "\1\0\2\174\1\357\6\174\1\0\16\174\17\0\1\360"+ - "\105\0\1\361\3\0\1\361\12\0\4\361\2\0\1\361"+ - "\4\0\3\361\5\0\5\361\2\0\6\361\6\0\1\362"+ - "\3\361\2\0\11\361\1\0\16\361\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\3\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\4\62\1\363\1\62\6\0"+ - "\4\62\1\61\1\0\11\62\1\0\16\62\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\1\364\5\62\6\0"+ - "\4\62\1\61\1\0\11\62\1\0\16\62\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\1\62\1\365\4\62"+ - "\6\0\4\62\1\61\1\0\11\62\1\0\16\62\25\0"+ - "\1\366\113\0\1\43\7\0\1\72\76\0\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\6\62\6\0\4\62"+ - "\1\61\1\0\4\62\1\367\4\62\1\0\16\62\3\370"+ - "\1\102\4\370\1\0\16\370\4\102\1\371\2\102\10\370"+ - "\1\102\3\370\2\102\50\370\30\217\1\372\1\217\1\373"+ - "\74\217\1\103\4\217\1\0\16\217\4\103\1\374\2\103"+ - "\10\217\1\103\3\217\2\103\50\217\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\3\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\2\62\1\375\1\62\1\376"+ - "\1\62\6\0\4\62\1\61\1\0\2\62\1\377\6\62"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\2\62\1\257\3\62\6\0\4\62\1\61\1\0"+ - "\11\62\1\0\16\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\1\62\1\u0100\1\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\6\62\6\0\4\62\1\61"+ - "\1\0\11\62\1\0\16\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\3\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\6\62\6\0\4\62\1\61\1\0"+ - "\2\62\1\u0101\6\62\1\0\16\62\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\3\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\4\62\1\u0102\1\62\6\0"+ - "\4\62\1\61\1\0\11\62\1\0\16\62\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\6\62\6\0\4\62"+ - "\1\61\1\0\1\62\1\u0103\6\62\1\u0104\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\1\u0105"+ - "\5\62\6\0\4\62\1\61\1\0\6\62\1\u0106\2\62"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\1\257\5\62\6\0\4\62\1\61\1\0\11\62"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\2\62\1\u0107\3\62\6\0\4\62\1\61\1\0"+ - "\11\62\1\0\16\62\5\61\13\0\4\61\2\0\3\61"+ - "\2\0\1\61\1\u0108\1\61\1\0\2\61\2\0\5\61"+ - "\2\0\6\61\6\0\5\61\1\0\11\61\1\0\16\61"+ - "\42\0\1\u0109\61\0\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\3\62\1\0\1\61\1\62\2\0"+ - "\1\62\1\u010a\3\62\2\0\6\62\6\0\4\62\1\61"+ - "\1\0\11\62\1\0\16\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\1\62\1\u010b\1\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\6\62\6\0\4\62"+ - "\1\61\1\0\11\62\1\0\16\62\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\1\62\1\u010c\1\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\6\62\6\0"+ - "\4\62\1\61\1\0\11\62\1\0\16\62\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\4\62\1\u010d\1\62"+ - "\6\0\4\62\1\61\1\0\11\62\1\0\16\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\6\62\6\0"+ - "\1\62\1\u010e\2\62\1\61\1\0\11\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\1\62\1\u010f\1\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\6\62\6\0\4\62\1\61\1\0\11\62\1\0"+ - "\16\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\3\62\1\0\1\61\1\62\2\0\5\62\2\0"+ - "\1\62\1\u0110\4\62\6\0\4\62\1\61\1\0\11\62"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\1\u0111\2\62\1\0\1\61\1\62\2\0"+ - "\5\62\2\0\3\62\1\u0112\2\62\6\0\4\62\1\61"+ - "\1\0\5\62\1\257\3\62\1\0\16\62\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\4\62\1\u0113\1\62"+ - "\6\0\4\62\1\61\1\0\11\62\1\0\16\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\1\62\1\u0114"+ - "\4\62\6\0\4\62\1\61\1\0\11\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\1\62"+ - "\1\u0115\4\62\6\0\2\62\1\u0116\1\62\1\61\1\0"+ - "\11\62\1\0\16\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\3\62\1\0\1\61\1\62\2\0"+ - "\5\62\2\0\6\62\6\0\4\62\1\61\1\0\11\62"+ - "\1\0\1\u0117\15\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\3\62\1\0\1\61\1\62\2\0"+ - "\5\62\2\0\6\62\6\0\3\62\1\u0118\1\61\1\0"+ - "\11\62\1\0\16\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\3\62\1\0\1\61\1\62\2\0"+ - "\5\62\2\0\1\u0119\5\62\6\0\4\62\1\61\1\0"+ - "\6\62\1\u011a\2\62\1\0\16\62\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\1\62\1\u011b\1\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\6\62\6\0"+ - "\4\62\1\61\1\0\11\62\1\0\16\62\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\5\62\1\223\6\0"+ - "\4\62\1\61\1\0\11\62\1\0\16\62\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\6\62\6\0\1\62"+ - "\1\u011c\2\62\1\61\1\0\11\62\1\0\16\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\1\u011d\5\62"+ - "\6\0\4\62\1\61\1\0\11\62\1\0\16\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\3\62\1\u011e"+ - "\2\62\6\0\4\62\1\61\1\0\11\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\6\62"+ - "\6\0\4\62\1\61\1\0\2\62\1\257\6\62\1\0"+ - "\16\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\2\62\1\u011f\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\6\62\6\0\4\62\1\61\1\0\11\62\1\0"+ - "\16\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\3\62\1\0\1\61\1\62\2\0\5\62\2\0"+ - "\3\62\1\u0120\2\62\6\0\4\62\1\61\1\0\11\62"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\6\62\6\0\3\62\1\u0121\1\61\1\0\11\62"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\3\62\1\u0122\2\62\6\0\4\62\1\61\1\0"+ - "\4\62\1\u0123\4\62\1\0\16\62\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\3\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\1\u0124\5\62\6\0\4\62"+ - "\1\61\1\0\11\62\1\0\16\62\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\3\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\1\62\1\u0125\4\62\6\0"+ - "\4\62\1\61\1\0\11\62\1\0\16\62\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\6\62\6\0\2\62"+ - "\1\u0126\1\62\1\61\1\0\11\62\1\0\16\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\1\62\1\u0127"+ - "\4\62\6\0\4\62\1\61\1\0\11\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\4\62"+ - "\1\u0128\1\62\6\0\4\62\1\61\1\0\11\62\1\0"+ - "\16\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\1\u0129\2\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\6\62\6\0\4\62\1\61\1\0\11\62\1\0"+ - "\16\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\3\62\1\0\1\61\1\62\2\0\5\62\2\0"+ - "\1\u012a\3\62\1\u011e\1\223\6\0\4\62\1\61\1\0"+ - "\11\62\1\0\16\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\3\62\1\0\1\61\1\62\2\0"+ - "\5\62\2\0\3\62\1\u012b\2\62\6\0\4\62\1\61"+ - "\1\0\11\62\1\0\16\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\1\62\1\u012c\1\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\6\62\6\0\4\62"+ - "\1\61\1\0\11\62\1\0\16\62\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\3\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\1\u012d\5\62\6\0\1\62"+ - "\1\u012e\2\62\1\61\1\0\11\62\1\0\16\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\2\62\1\u012f\2\62\2\0"+ - "\6\62\6\0\4\62\1\61\1\0\11\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\2\62\1\u0130\2\62"+ - "\2\0\6\62\6\0\4\62\1\61\1\0\11\62\1\0"+ - "\4\62\1\u0131\11\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\3\62\1\0\1\61\1\62\2\0"+ - "\5\62\2\0\6\62\6\0\3\62\1\u0132\1\61\1\0"+ - "\11\62\1\0\16\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\2\62\1\u0133\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\6\62\6\0\4\62\1\61\1\0"+ - "\11\62\1\0\16\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\3\62\1\0\1\61\1\62\2\0"+ - "\5\62\2\0\2\62\1\u0134\3\62\6\0\2\62\1\u0135"+ - "\1\62\1\61\1\0\4\62\1\u0136\4\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\1\62"+ - "\1\u0137\4\62\6\0\1\62\1\u0138\2\62\1\61\1\0"+ - "\11\62\1\0\16\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\3\62\1\0\1\61\1\62\2\0"+ - "\5\62\2\0\3\62\1\u0139\2\62\6\0\4\62\1\61"+ - "\1\0\11\62\1\0\16\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\3\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\1\u013a\5\62\6\0\4\62\1\61"+ - "\1\0\11\62\1\0\16\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\3\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\6\62\6\0\2\62\1\u013b\1\62"+ - "\1\61\1\0\11\62\1\0\16\62\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\3\62\1\0\1\61"+ - "\1\62\2\0\3\62\1\u013c\1\62\2\0\4\62\1\u013d"+ - "\1\62\6\0\4\62\1\61\1\0\11\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\1\62\1\u013e\1\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\6\62\6\0\4\62\1\61\1\0\11\62\1\0"+ - "\16\62\1\61\4\62\13\0\1\u013f\3\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\6\62\6\0\4\62\1\61\1\0\11\62\1\0"+ - "\16\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\3\62\1\0\1\61\1\62\2\0\5\62\2\0"+ - "\2\62\1\u0140\3\62\6\0\4\62\1\61\1\0\11\62"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\6\62\6\0\4\62\1\61\1\0\10\62\1\u0141"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\1\u0142\5\62\6\0\4\62\1\61\1\0\11\62"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\1\u0143\5\62\6\0\4\62\1\61\1\0\11\62"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\1\62\1\257\4\62\6\0\4\62\1\61\1\0"+ - "\11\62\1\0\16\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\3\62\1\0\1\61\1\62\2\0"+ - "\5\62\2\0\6\62\6\0\2\62\1\262\1\62\1\61"+ - "\1\0\11\62\1\0\16\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\3\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\6\62\6\0\4\62\1\61\1\0"+ - "\5\62\1\u0144\3\62\1\0\16\62\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\3\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\1\u0145\5\62\6\0\4\62"+ - "\1\61\1\0\11\62\1\0\16\62\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\1\u0146\2\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\6\62\6\0\4\62"+ - "\1\61\1\0\11\62\1\0\1\62\1\u0147\14\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\4\62\1\u0148"+ - "\1\62\6\0\4\62\1\61\1\0\6\62\1\u0149\2\62"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\6\62\6\0\4\62\1\61\1\0\11\62\1\0"+ - "\6\62\1\u014a\7\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\3\62\1\0\1\61\1\62\2\0"+ - "\5\62\2\0\6\62\6\0\1\62\1\u014b\2\62\1\61"+ - "\1\0\11\62\1\0\16\62\71\0\1\u014c\110\0\1\u014d"+ - "\117\0\1\u014e\146\0\1\u014f\117\0\1\u0150\110\0\1\u0151"+ - "\117\0\1\u0152\146\0\1\u0153\46\0\1\u0154\153\0\1\u0155"+ - "\54\0\3\344\1\0\2\344\11\0\4\344\2\0\2\344"+ - "\3\0\3\344\5\0\6\344\1\0\6\344\6\0\4\344"+ - "\2\0\11\344\1\0\16\344\5\0\1\u0156\172\0\1\345"+ - "\140\0\1\u0157\40\0\1\u0158\115\0\2\61\2\u0159\1\61"+ - "\13\0\3\u0159\1\61\2\0\2\u0159\1\61\2\0\2\61"+ - "\1\u0159\1\0\2\61\2\0\2\61\3\u0159\2\0\2\61"+ - "\2\u0159\2\61\6\0\1\61\1\u0159\3\61\1\0\2\61"+ - "\1\u0159\6\61\1\0\16\61\2\174\2\354\1\174\13\0"+ - "\1\174\1\176\2\174\2\0\1\174\1\354\1\174\2\0"+ - "\3\174\1\0\2\174\2\0\2\174\2\176\1\174\2\0"+ - "\6\174\6\0\5\174\1\0\2\174\1\176\6\174\1\0"+ - "\16\174\2\0\2\354\23\0\1\354\74\0\2\174\2\357"+ - "\1\174\13\0\3\357\1\174\2\0\2\357\1\174\2\0"+ - "\2\174\1\357\1\0\2\174\2\0\1\174\1\356\3\357"+ - "\2\0\2\174\2\357\1\356\1\174\6\0\1\174\1\357"+ - "\3\174\1\0\2\174\1\357\6\174\1\0\16\174\20\0"+ - "\1\u015a\104\0\3\361\1\0\1\u015b\1\361\11\0\4\361"+ - "\2\0\2\361\3\0\3\361\5\0\6\361\1\0\6\361"+ - "\6\0\4\361\2\0\11\361\1\0\16\361\1\0\3\361"+ - "\1\0\1\u015b\1\361\11\0\4\361\2\0\2\361\3\0"+ - "\3\361\5\0\6\361\1\0\6\361\6\0\1\361\1\u015c"+ - "\2\361\2\0\11\361\1\0\16\361\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\3\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\6\62\6\0\4\62\1\61"+ - "\1\0\4\62\1\u015d\4\62\1\0\16\62\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\2\62\1\u0144\3\62"+ - "\6\0\4\62\1\61\1\0\11\62\1\0\16\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\3\62\1\323"+ - "\2\62\6\0\4\62\1\61\1\0\11\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\4\62"+ - "\1\u015e\1\62\6\0\4\62\1\61\1\0\11\62\1\0"+ - "\16\62\30\370\1\u015f\1\u0160\74\370\2\u0161\14\370\3\u0161"+ - "\3\370\2\u0161\1\u015f\1\u0160\3\370\1\u0161\7\370\3\u0161"+ - "\4\370\2\u0161\11\370\1\u0161\6\370\1\u0161\25\370\10\217"+ - "\1\0\115\217\2\u0162\14\217\3\u0162\3\217\2\u0162\1\372"+ - "\1\217\1\373\2\217\1\u0162\7\217\3\u0162\4\217\2\u0162"+ - "\11\217\1\u0162\6\217\1\u0162\25\217\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\3\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\5\62\1\256\6\0\4\62"+ - "\1\61\1\0\11\62\1\0\16\62\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\3\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\6\62\6\0\4\62\1\61"+ - "\1\0\4\62\1\u0163\4\62\1\0\16\62\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\2\62\1\u0164\3\62"+ - "\6\0\4\62\1\61\1\0\11\62\1\0\16\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\1\u0144\5\62"+ - "\6\0\4\62\1\61\1\0\11\62\1\0\16\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\3\62\1\u0165"+ - "\2\62\6\0\4\62\1\61\1\0\11\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\4\62"+ - "\1\257\1\62\6\0\4\62\1\61\1\0\11\62\1\0"+ - "\16\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\3\62\1\0\1\61\1\62\2\0\5\62\2\0"+ - "\4\62\1\u0166\1\62\6\0\4\62\1\61\1\0\11\62"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\1\u0167\5\62\6\0\4\62\1\61\1\0\11\62"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\6\62\6\0\2\62\1\u0168\1\62\1\61\1\0"+ - "\11\62\1\0\16\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\3\62\1\0\1\61\1\62\2\0"+ - "\5\62\2\0\2\62\1\u0169\3\62\6\0\4\62\1\61"+ - "\1\0\11\62\1\0\16\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\3\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\3\62\1\u016a\2\62\6\0\4\62"+ - "\1\61\1\0\11\62\1\0\16\62\5\61\13\0\4\61"+ - "\2\0\3\61\2\0\3\61\1\0\2\61\2\0\5\61"+ - "\2\0\6\61\6\0\1\61\1\u016b\3\61\1\0\11\61"+ - "\1\0\16\61\41\0\1\u016c\62\0\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\3\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\6\62\6\0\1\u016d\3\62"+ - "\1\61\1\0\11\62\1\0\4\62\1\u016e\11\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\6\62\6\0"+ - "\1\62\1\u016f\2\62\1\61\1\0\11\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\6\62"+ - "\6\0\1\62\1\u0170\2\62\1\61\1\0\11\62\1\0"+ - "\16\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\3\62\1\0\1\61\1\62\2\0\5\62\2\0"+ - "\5\62\1\u0111\6\0\4\62\1\61\1\0\11\62\1\0"+ - "\16\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\3\62\1\0\1\61\1\62\2\0\5\62\2\0"+ - "\6\62\6\0\4\62\1\61\1\0\4\62\1\u0171\4\62"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\3\62\1\u0172\2\62\6\0\4\62\1\61\1\0"+ - "\11\62\1\0\16\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\3\62\1\0\1\61\1\62\2\0"+ - "\5\62\2\0\6\62\6\0\4\62\1\61\1\0\11\62"+ - "\1\u0173\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\2\62\1\u0174\3\62\6\0\4\62\1\61\1\0"+ - "\11\62\1\0\16\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\3\62\1\0\1\61\1\62\2\0"+ - "\5\62\2\0\6\62\6\0\1\62\1\u0175\2\62\1\61"+ - "\1\0\11\62\1\0\16\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\3\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\4\62\1\u0176\1\62\6\0\4\62"+ - "\1\61\1\0\11\62\1\0\16\62\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\3\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\6\62\6\0\4\62\1\61"+ - "\1\0\11\62\1\0\1\u0177\15\62\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\3\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\6\62\6\0\4\62\1\61"+ - "\1\0\4\62\1\u0178\4\62\1\0\16\62\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\5\62\1\257\6\0"+ - "\4\62\1\61\1\0\11\62\1\0\16\62\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\6\62\6\0\4\62"+ - "\1\61\1\0\11\62\1\0\1\u0179\15\62\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\2\62\1\u017a\3\62"+ - "\6\0\4\62\1\61\1\0\11\62\1\0\16\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\1\u017b"+ - "\2\62\1\0\1\61\1\62\2\0\5\62\2\0\6\62"+ - "\6\0\4\62\1\61\1\0\11\62\1\0\16\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\6\62\6\0"+ - "\4\62\1\61\1\0\4\62\1\u017c\4\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\6\62"+ - "\6\0\4\62\1\61\1\0\2\62\1\u017d\6\62\1\0"+ - "\16\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\3\62\1\0\1\61\1\62\2\0\5\62\2\0"+ - "\3\62\1\u017e\2\62\6\0\4\62\1\61\1\0\11\62"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\2\62\1\u017f\3\62\6\0\4\62\1\61\1\0"+ - "\11\62\1\0\16\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\3\62\1\0\1\61\1\62\2\0"+ - "\5\62\2\0\4\62\1\u0180\1\62\6\0\4\62\1\61"+ - "\1\0\11\62\1\0\16\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\3\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\2\62\1\u0102\3\62\6\0\4\62"+ - "\1\61\1\0\11\62\1\0\16\62\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\3\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\6\62\6\0\4\62\1\61"+ - "\1\0\2\62\1\u0181\6\62\1\0\16\62\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\2\62\1\321\3\62"+ - "\6\0\4\62\1\61\1\0\11\62\1\0\16\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\1\u0182\1\u0183"+ - "\4\62\6\0\4\62\1\61\1\0\11\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\6\62"+ - "\6\0\3\62\1\u0184\1\61\1\0\11\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\6\62"+ - "\6\0\4\62\1\61\1\0\11\62\1\0\10\62\1\u0185"+ - "\5\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\3\62\1\0\1\61\1\62\2\0\5\62\2\0"+ - "\6\62\6\0\4\62\1\61\1\0\4\62\1\u0186\4\62"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\1\u012a\5\62\6\0\4\62\1\61\1\0\11\62"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\6\62\6\0\2\62\1\u0187\1\62\1\61\1\0"+ - "\11\62\1\0\16\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\3\62\1\0\1\61\1\62\2\0"+ - "\5\62\2\0\2\62\1\u010b\3\62\6\0\4\62\1\61"+ - "\1\0\11\62\1\0\16\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\1\62\1\u0188\1\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\6\62\6\0\4\62"+ - "\1\61\1\0\11\62\1\0\16\62\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\3\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\6\62\6\0\1\62\1\u013a"+ - "\2\62\1\61\1\0\11\62\1\0\16\62\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\5\62\1\u0116\6\0"+ - "\4\62\1\61\1\0\11\62\1\0\16\62\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\1\u0189\4\62\1\231"+ - "\6\0\4\62\1\61\1\0\11\62\1\0\16\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\2\62\1\u018a"+ - "\3\62\6\0\4\62\1\61\1\0\11\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\4\62"+ - "\1\u018b\1\62\6\0\4\62\1\61\1\0\11\62\1\0"+ - "\16\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\3\62\1\0\1\61\1\62\2\0\5\62\2\0"+ - "\1\62\1\u018c\4\62\6\0\4\62\1\61\1\0\11\62"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\6\62\6\0\2\62\1\u018d\1\62\1\61\1\0"+ - "\11\62\1\0\16\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\3\62\1\0\1\61\1\62\2\0"+ - "\5\62\2\0\3\62\1\u018e\2\62\6\0\4\62\1\61"+ - "\1\0\11\62\1\0\16\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\3\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\4\62\1\u018f\1\62\6\0\4\62"+ - "\1\61\1\0\4\62\1\u0190\4\62\1\0\16\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\4\62\1\u0182"+ - "\1\62\6\0\4\62\1\61\1\0\11\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\6\62"+ - "\6\0\4\62\1\61\1\0\11\62\1\0\1\62\1\u0167"+ - "\14\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\1\62\1\u0191\1\62\1\0\1\61\1\62\2\0"+ - "\5\62\2\0\6\62\6\0\4\62\1\61\1\0\11\62"+ - "\1\0\1\62\1\u0192\14\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\3\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\1\u0193\5\62\6\0\4\62\1\61"+ - "\1\0\11\62\1\0\16\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\3\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\5\62\1\u0194\6\0\4\62\1\61"+ - "\1\0\11\62\1\0\16\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\3\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\6\62\6\0\4\62\1\61\1\0"+ - "\3\62\1\u0195\5\62\1\0\16\62\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\3\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\6\62\6\0\4\62\1\61"+ - "\1\0\5\62\1\u0180\3\62\1\0\16\62\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\6\62\6\0\4\62"+ - "\1\61\1\0\1\257\10\62\1\0\16\62\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\4\62\1\223\1\62"+ - "\6\0\4\62\1\61\1\0\11\62\1\0\16\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\3\62\1\u0196"+ - "\2\62\6\0\4\62\1\61\1\0\11\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\2\62"+ - "\1\u0197\3\62\6\0\4\62\1\61\1\0\11\62\1\0"+ - "\16\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\3\62\1\0\1\61\1\62\2\0\5\62\2\0"+ - "\3\62\1\u0198\2\62\6\0\4\62\1\61\1\0\11\62"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\4\62\1\u0199\1\62\6\0\4\62\1\61\1\0"+ - "\11\62\1\0\16\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\3\62\1\0\1\61\1\62\2\0"+ - "\5\62\2\0\1\62\1\u019a\4\62\6\0\4\62\1\61"+ - "\1\0\11\62\1\0\16\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\3\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\5\62\1\u019b\6\0\4\62\1\61"+ - "\1\0\11\62\1\0\16\62\1\61\4\62\13\0\3\62"+ - "\1\u019c\2\0\2\62\1\173\2\0\3\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\6\62\6\0\4\62\1\61"+ - "\1\0\11\62\1\0\7\62\1\u019d\1\u0185\1\u019e\4\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\6\62"+ - "\6\0\4\62\1\61\1\0\4\62\1\u019f\4\62\1\0"+ - "\16\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\3\62\1\0\1\61\1\62\2\0\5\62\2\0"+ - "\6\62\6\0\4\62\1\61\1\0\1\u0144\10\62\1\0"+ - "\16\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\3\62\1\0\1\61\1\62\2\0\5\62\2\0"+ - "\5\62\1\364\6\0\4\62\1\61\1\0\11\62\1\0"+ - "\16\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\3\62\1\0\1\61\1\62\2\0\5\62\2\0"+ - "\6\62\6\0\2\62\1\u01a0\1\62\1\61\1\0\11\62"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\4\62\1\u0144\1\62\6\0\4\62\1\61\1\0"+ - "\11\62\1\0\16\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\2\62\1\u01a1\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\6\62\6\0\4\62\1\61\1\0"+ - "\11\62\1\0\16\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\3\62\1\0\1\61\1\62\2\0"+ - "\5\62\2\0\2\62\1\u01a2\3\62\6\0\4\62\1\61"+ - "\1\0\11\62\1\0\16\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\3\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\1\363\5\62\6\0\4\62\1\61"+ - "\1\0\11\62\1\0\16\62\5\0\1\u01a3\172\0\1\u014c"+ - "\140\0\1\u01a4\40\0\1\u01a5\122\0\1\u01a6\172\0\1\u0150"+ - "\140\0\1\u01a7\40\0\1\u01a8\136\0\1\u01a9\143\0\1\u01aa"+ - "\67\0\1\u0156\51\0\1\345\45\0\3\u0158\3\u01ab\4\0"+ - "\5\u01ab\4\u0158\1\u01ab\1\0\2\u0158\1\0\1\u01ab\1\0"+ - "\3\u0158\1\0\1\u01ab\2\u0158\1\u01ab\5\u0158\2\u01ab\6\u0158"+ - "\1\0\1\u01ab\1\0\3\u01ab\4\u0158\2\u01ab\11\u0158\1\0"+ - "\16\u0158\2\61\2\u01ac\1\61\13\0\3\u01ac\1\61\2\0"+ - "\2\u01ac\1\61\2\0\2\61\1\u01ac\1\0\2\61\2\0"+ - "\2\61\3\u01ac\2\0\2\61\2\u01ac\2\61\6\0\1\61"+ - "\1\u01ac\3\61\1\0\2\61\1\u01ac\6\61\1\0\16\61"+ - "\21\0\1\u01ad\103\0\3\361\1\0\1\u015b\1\361\11\0"+ - "\4\361\2\0\2\361\3\0\3\361\5\0\6\361\1\0"+ - "\6\361\6\0\1\362\3\361\2\0\11\361\1\0\16\361"+ - "\1\0\3\361\1\0\1\u015b\1\361\11\0\4\361\2\0"+ - "\2\361\3\0\3\361\5\0\6\361\1\0\1\361\1\u01ae"+ - "\4\361\6\0\4\361\2\0\11\361\1\0\16\361\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\1\62\1\u0144"+ - "\4\62\6\0\4\62\1\61\1\0\11\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\2\62"+ - "\1\u01af\3\62\6\0\4\62\1\61\1\0\11\62\1\0"+ - "\16\62\10\370\1\0\115\370\2\u01b0\14\370\3\u01b0\3\370"+ - "\2\u01b0\1\u015f\1\u0160\3\370\1\u01b0\7\370\3\u01b0\4\370"+ - "\2\u01b0\11\370\1\u01b0\6\370\1\u01b0\25\370\2\217\2\u01b1"+ - "\14\217\3\u01b1\3\217\2\u01b1\1\372\1\217\1\373\2\217"+ - "\1\u01b1\7\217\3\u01b1\4\217\2\u01b1\11\217\1\u01b1\6\217"+ - "\1\u01b1\25\217\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\3\62\1\u01b2\2\62\6\0\4\62\1\61\1\0"+ - "\11\62\1\0\16\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\3\62\1\0\1\61\1\62\2\0"+ - "\3\62\1\u01b3\1\62\2\0\6\62\6\0\4\62\1\61"+ - "\1\0\11\62\1\0\16\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\3\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\1\u01b4\5\62\6\0\4\62\1\61"+ - "\1\0\11\62\1\0\16\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\3\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\6\62\6\0\2\62\1\u01b5\1\62"+ - "\1\61\1\0\11\62\1\0\16\62\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\3\62\1\0\1\61"+ - "\1\62\2\0\2\62\1\u01b6\2\62\2\0\6\62\6\0"+ - "\1\u01b7\3\62\1\61\1\0\11\62\1\0\16\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\6\62\6\0"+ - "\4\62\1\61\1\0\11\62\1\0\1\62\1\223\14\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\5\62"+ - "\1\u01b8\6\0\4\62\1\61\1\0\11\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\6\62"+ - "\6\0\4\62\1\61\1\0\3\62\1\257\5\62\1\0"+ - "\16\62\5\61\13\0\4\61\2\0\3\61\2\0\3\61"+ - "\1\0\2\61\2\0\5\61\2\0\4\61\1\u01b9\1\61"+ - "\6\0\5\61\1\0\11\61\1\0\17\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\3\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\6\62\6\0\4\62\1\61"+ - "\1\0\4\62\1\u01ba\4\62\1\0\16\62\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\6\62\6\0\4\62"+ - "\1\61\1\0\4\62\1\u01bb\4\62\1\0\16\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\1\u01bc\5\62"+ - "\6\0\4\62\1\61\1\0\11\62\1\0\16\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\1\u01bd\5\62"+ - "\6\0\4\62\1\61\1\0\11\62\1\0\16\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\6\62\6\0"+ - "\4\62\1\61\1\0\6\62\1\u01be\2\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\4\62"+ - "\1\u01bf\1\62\6\0\4\62\1\61\1\0\11\62\1\0"+ - "\16\62\54\0\1\u01c0\47\0\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\3\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\2\62\1\u0180\3\62\6\0\4\62"+ - "\1\61\1\0\11\62\1\0\16\62\1\61\4\62\13\0"+ - "\3\62\1\u01c1\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\6\62\6\0\4\62"+ - "\1\61\1\0\11\62\1\0\16\62\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\3\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\2\62\1\u01c2\3\62\6\0"+ - "\4\62\1\61\1\0\11\62\1\0\16\62\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\6\62\6\0\4\62"+ - "\1\61\1\0\1\62\1\257\7\62\1\0\16\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\4\62\1\u01c3"+ - "\1\62\6\0\4\62\1\61\1\0\11\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\6\62"+ - "\6\0\4\62\1\61\1\0\4\62\1\u01c4\4\62\1\0"+ - "\16\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\3\62\1\0\1\61\1\62\2\0\5\62\2\0"+ - "\1\62\1\u01c5\4\62\6\0\4\62\1\61\1\0\11\62"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\6\62\6\0\4\62\1\61\1\0\11\62\1\0"+ - "\1\62\1\u01c6\14\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\3\62\1\0\1\61\1\62\2\0"+ - "\5\62\2\0\6\62\6\0\4\62\1\61\1\0\4\62"+ - "\1\u01c7\4\62\1\0\16\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\3\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\6\62\6\0\3\62\1\u0175\1\61"+ - "\1\0\11\62\1\0\16\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\1\62\1\u01c8\1\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\6\62\6\0\4\62"+ - "\1\61\1\0\11\62\1\0\16\62\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\3\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\6\62\6\0\4\62\1\61"+ - "\1\0\11\62\1\0\3\62\1\u01c9\3\62\1\u01ca\6\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\6\62"+ - "\6\0\2\62\1\u01cb\1\62\1\61\1\0\11\62\1\0"+ - "\16\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\3\62\1\0\1\61\1\62\2\0\5\62\2\0"+ - "\1\u01cc\5\62\6\0\4\62\1\61\1\0\11\62\1\0"+ - "\16\62\1\61\4\62\13\0\1\62\1\u01cd\1\u01ce\1\62"+ - "\2\0\2\62\1\173\2\0\3\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\6\62\6\0\4\62\1\61\1\0"+ - "\11\62\1\0\16\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\3\62\1\0\1\61\1\62\2\0"+ - "\5\62\2\0\1\62\1\u01cf\4\62\6\0\4\62\1\61"+ - "\1\0\11\62\1\0\16\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\3\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\4\62\1\u011e\1\62\6\0\4\62"+ - "\1\61\1\0\11\62\1\0\16\62\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\1\62\1\u01d0\1\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\6\62\6\0"+ - "\4\62\1\61\1\0\11\62\1\0\16\62\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\6\62\6\0\4\62"+ - "\1\61\1\0\2\62\1\u0144\6\62\1\0\16\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\6\62\6\0"+ - "\2\62\1\u01d1\1\62\1\61\1\0\11\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\1\62"+ - "\1\u01d2\4\62\6\0\4\62\1\61\1\0\11\62\1\0"+ - "\16\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\1\u01d3\2\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\6\62\6\0\4\62\1\61\1\0\11\62\1\0"+ - "\16\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\3\62\1\0\1\61\1\62\2\0\5\62\2\0"+ - "\3\62\1\u01d4\2\62\6\0\4\62\1\61\1\0\11\62"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\1\62\1\u01d5\1\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\6\62\6\0\4\62\1\61\1\0"+ - "\11\62\1\0\16\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\3\62\1\0\1\61\1\62\2\0"+ - "\5\62\2\0\6\62\6\0\4\62\1\61\1\0\11\62"+ - "\1\0\4\62\1\u0180\11\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\3\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\2\62\1\u01d6\3\62\6\0\4\62"+ - "\1\61\1\0\11\62\1\0\16\62\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\3\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\1\62\1\231\4\62\6\0"+ - "\4\62\1\61\1\0\11\62\1\0\16\62\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\1\u01d7\5\62\6\0"+ - "\4\62\1\61\1\0\11\62\1\0\16\62\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\3\62\1\u0197\2\62"+ - "\6\0\4\62\1\61\1\0\11\62\1\0\16\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\2\62\1\u01d8"+ - "\3\62\6\0\4\62\1\61\1\0\11\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\2\62"+ - "\1\u01d9\3\62\6\0\4\62\1\61\1\0\11\62\1\0"+ - "\16\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\3\62\1\0\1\61\1\62\2\0\5\62\2\0"+ - "\3\62\1\u01da\2\62\6\0\4\62\1\61\1\0\11\62"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\1\u01db\2\62\1\0\1\61\1\62\2\0"+ - "\5\62\2\0\6\62\6\0\4\62\1\61\1\0\11\62"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\1\223\5\62\6\0\4\62\1\61\1\0\11\62"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\6\62\6\0\4\62\1\61\1\0\6\62\1\u0182"+ - "\2\62\1\0\16\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\3\62\1\0\1\61\1\62\2\0"+ - "\5\62\2\0\6\62\6\0\2\62\1\u01dc\1\62\1\61"+ - "\1\0\11\62\1\0\16\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\3\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\1\62\1\u01dd\4\62\6\0\4\62"+ - "\1\61\1\0\11\62\1\0\16\62\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\3\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\6\62\6\0\1\62\1\270"+ - "\2\62\1\61\1\0\11\62\1\0\16\62\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\6\62\6\0\2\62"+ - "\1\u01de\1\62\1\61\1\0\11\62\1\0\16\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\2\62\1\u01df"+ - "\3\62\6\0\4\62\1\61\1\0\11\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\6\62"+ - "\6\0\4\62\1\61\1\0\11\62\1\0\12\62\1\u01e0"+ - "\3\62\1\61\4\62\13\0\2\62\1\u01e1\1\62\2\0"+ - "\2\62\1\173\2\0\3\62\1\0\1\61\1\62\2\0"+ - "\5\62\2\0\6\62\6\0\4\62\1\61\1\0\11\62"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\2\62\1\u01e2\3\62\6\0\4\62\1\61\1\0"+ - "\11\62\1\0\16\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\3\62\1\0\1\61\1\62\2\0"+ - "\5\62\2\0\2\62\1\u015d\3\62\6\0\4\62\1\61"+ - "\1\0\11\62\1\0\16\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\3\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\6\62\6\0\1\62\1\u0100\2\62"+ - "\1\61\1\0\11\62\1\0\16\62\41\0\1\u01e3\67\0"+ - "\1\u01a3\51\0\1\u014c\45\0\3\u01a5\3\u01e4\4\0\5\u01e4"+ - "\4\u01a5\1\u01e4\1\0\2\u01a5\1\0\1\u01e4\1\0\3\u01a5"+ - "\1\0\1\u01e4\2\u01a5\1\u01e4\5\u01a5\2\u01e4\6\u01a5\1\0"+ - "\1\u01e4\1\0\3\u01e4\4\u01a5\2\u01e4\11\u01a5\1\0\16\u01a5"+ - "\41\0\1\u01e5\67\0\1\u01a6\51\0\1\u0150\45\0\3\u01a8"+ - "\3\u01e6\4\0\5\u01e6\4\u01a8\1\u01e6\1\0\2\u01a8\1\0"+ - "\1\u01e6\1\0\3\u01a8\1\0\1\u01e6\2\u01a8\1\u01e6\5\u01a8"+ - "\2\u01e6\6\u01a8\1\0\1\u01e6\1\0\3\u01e6\4\u01a8\2\u01e6"+ - "\11\u01a8\1\0\16\u01a8\22\0\1\u01e7\142\0\1\u0158\62\0"+ - "\2\61\2\u01e8\1\61\13\0\3\u01e8\1\61\2\0\2\u01e8"+ - "\1\61\2\0\2\61\1\u01e8\1\0\2\61\2\0\2\61"+ - "\3\u01e8\2\0\2\61\2\u01e8\2\61\6\0\1\61\1\u01e8"+ - "\3\61\1\0\2\61\1\u01e8\6\61\1\0\16\61\22\0"+ - "\1\u01e9\102\0\3\361\1\0\1\u015b\1\361\11\0\4\361"+ - "\2\0\2\361\3\0\3\361\5\0\6\361\1\0\6\361"+ - "\6\0\2\361\1\u01ea\1\361\2\0\11\361\1\0\16\361"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\3\62"+ - "\1\u01eb\2\62\6\0\4\62\1\61\1\0\11\62\1\0"+ - "\16\62\2\370\2\u01ec\14\370\3\u01ec\3\370\2\u01ec\1\u015f"+ - "\1\u0160\3\370\1\u01ec\7\370\3\u01ec\4\370\2\u01ec\11\370"+ - "\1\u01ec\6\370\1\u01ec\25\370\2\217\2\u01ed\14\217\3\u01ed"+ - "\3\217\2\u01ed\1\372\1\217\1\373\2\217\1\u01ed\7\217"+ - "\3\u01ed\4\217\2\u01ed\11\217\1\u01ed\6\217\1\u01ed\25\217"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\6\62"+ - "\6\0\4\62\1\61\1\0\2\62\1\u01ee\6\62\1\0"+ - "\16\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\3\62\1\0\1\61\1\62\2\0\5\62\2\0"+ - "\6\62\6\0\2\62\1\u01ef\1\62\1\61\1\0\11\62"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\2\62\1\u01f0\3\62\6\0\4\62\1\61\1\0"+ - "\11\62\1\0\16\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\1\62\1\u0175\1\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\6\62\6\0\4\62\1\61"+ - "\1\0\11\62\1\0\16\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\3\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\1\62\1\u01f1\4\62\6\0\4\62"+ - "\1\61\1\0\11\62\1\0\16\62\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\3\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\6\62\6\0\1\62\1\u01f2"+ - "\2\62\1\61\1\0\11\62\1\0\16\62\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\6\62\6\0\3\62"+ - "\1\u01f3\1\61\1\0\11\62\1\0\16\62\5\61\13\0"+ - "\4\61\2\0\3\61\2\0\1\u01f4\2\61\1\0\2\61"+ - "\2\0\5\61\2\0\6\61\6\0\5\61\1\0\11\61"+ - "\1\0\17\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\3\62\1\0\1\61\1\62\2\0\5\62\2\0"+ - "\6\62\6\0\1\62\1\u01f5\2\62\1\61\1\0\11\62"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\6\62\6\0\4\62\1\61\1\0\2\62\1\364"+ - "\6\62\1\0\16\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\3\62\1\0\1\61\1\62\2\0"+ - "\5\62\2\0\6\62\6\0\2\62\1\u01f6\1\62\1\61"+ - "\1\0\11\62\1\0\16\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\3\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\6\62\6\0\2\62\1\u01f7\1\62"+ - "\1\61\1\0\11\62\1\0\16\62\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\3\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\6\62\6\0\4\62\1\61"+ - "\1\0\6\62\1\u01f8\2\62\1\0\16\62\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\4\62\1\u01f9\1\62"+ - "\6\0\4\62\1\61\1\0\11\62\1\0\16\62\55\0"+ - "\1\u01fa\46\0\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\3\62\1\u01fb\2\62\6\0\4\62\1\61\1\0"+ - "\11\62\1\0\16\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\3\62\1\0\1\61\1\62\2\0"+ - "\5\62\2\0\1\u01fc\5\62\6\0\4\62\1\61\1\0"+ - "\11\62\1\0\16\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\3\62\1\0\1\61\1\62\2\0"+ - "\5\62\2\0\2\62\1\u01fd\3\62\6\0\4\62\1\61"+ - "\1\0\11\62\1\0\16\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\3\62\1\0\1\61\1\62"+ - "\2\0\3\62\1\257\1\62\2\0\6\62\6\0\4\62"+ - "\1\61\1\0\11\62\1\0\16\62\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\1\62\1\257\1\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\6\62\6\0"+ - "\4\62\1\61\1\0\11\62\1\0\16\62\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\2\62\1\u01fe\3\62"+ - "\6\0\4\62\1\61\1\0\11\62\1\0\16\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\6\62\6\0"+ - "\4\62\1\61\1\0\6\62\1\u0180\2\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\6\62"+ - "\6\0\4\62\1\61\1\0\2\62\1\u0116\6\62\1\0"+ - "\16\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\3\62\1\0\1\61\1\62\2\0\5\62\2\0"+ - "\6\62\6\0\4\62\1\61\1\0\4\62\1\u01ff\4\62"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\3\62\1\u0200\2\62\6\0\4\62\1\61\1\0"+ - "\11\62\1\0\16\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\3\62\1\0\1\61\1\62\2\0"+ - "\5\62\2\0\6\62\6\0\1\62\1\257\2\62\1\61"+ - "\1\0\11\62\1\0\16\62\1\61\4\62\13\0\1\62"+ - "\1\u01cd\2\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\6\62\6\0\4\62"+ - "\1\61\1\0\11\62\1\0\16\62\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\3\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\1\62\1\u0201\4\62\6\0"+ - "\4\62\1\61\1\0\11\62\1\0\16\62\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\4\62\1\u0202\1\62"+ - "\6\0\4\62\1\61\1\0\11\62\1\0\16\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\6\62\6\0"+ - "\4\62\1\61\1\0\4\62\1\u0203\4\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\6\62"+ - "\6\0\4\62\1\61\1\0\11\62\1\0\1\u0144\15\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\1\62\1\u0204\1\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\6\62\6\0\4\62\1\61\1\0\11\62\1\0"+ - "\16\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\1\62\1\u0205\1\62\1\0\1\61\1\62\2\0"+ - "\3\62\1\u01f3\1\62\2\0\6\62\6\0\4\62\1\61"+ - "\1\0\11\62\1\0\16\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\3\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\6\62\6\0\4\62\1\61\1\0"+ - "\2\62\1\223\6\62\1\0\16\62\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\3\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\6\62\6\0\4\62\1\61"+ - "\1\0\6\62\1\u0206\2\62\1\0\16\62\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\6\62\6\0\2\62"+ - "\1\u0207\1\62\1\61\1\0\11\62\1\0\16\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\6\62\6\0"+ - "\4\62\1\61\1\0\6\62\1\u0208\2\62\1\0\16\62"+ - "\1\61\4\62\13\0\2\62\1\u0209\1\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\6\62\6\0\4\62\1\61\1\0\11\62\1\0"+ - "\4\62\1\u020a\11\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\3\62\1\0\1\61\1\62\2\0"+ - "\5\62\2\0\6\62\6\0\1\62\1\u020b\2\62\1\61"+ - "\1\0\11\62\1\0\16\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\3\62\1\0\1\61\1\62"+ - "\2\0\2\62\1\u020c\2\62\2\0\6\62\6\0\4\62"+ - "\1\61\1\0\11\62\1\0\13\62\1\u020d\2\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\6\62\6\0"+ - "\4\62\1\61\1\0\11\62\1\0\1\223\15\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\4\62\1\231"+ - "\1\62\6\0\4\62\1\61\1\0\11\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\6\62"+ - "\6\0\3\62\1\u020e\1\61\1\0\11\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\6\62"+ - "\6\0\2\62\1\u01d3\1\62\1\61\1\0\11\62\1\0"+ - "\16\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\3\62\1\0\1\61\1\62\2\0\5\62\2\0"+ - "\6\62\6\0\4\62\1\61\1\0\6\62\1\u020f\2\62"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\1\62\1\u0210\4\62\6\0\4\62\1\61\1\0"+ - "\11\62\1\0\16\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\3\62\1\0\1\61\1\62\2\0"+ - "\1\62\1\u0180\3\62\2\0\6\62\6\0\4\62\1\61"+ - "\1\0\11\62\1\0\16\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\1\62\1\u0211\1\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\6\62\6\0\4\62"+ - "\1\61\1\0\11\62\1\0\16\62\1\61\4\62\13\0"+ - "\1\u0212\3\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\6\62\6\0\4\62"+ - "\1\61\1\0\11\62\1\0\16\62\41\0\1\u01a5\123\0"+ - "\1\u01a8\105\0\1\u0213\100\0\2\61\2\62\1\61\13\0"+ - "\3\62\1\61\2\0\2\62\1\61\2\0\2\61\1\62"+ - "\1\0\2\61\2\0\2\61\3\62\2\0\2\61\2\62"+ - "\2\61\6\0\1\61\1\62\3\61\1\0\2\61\1\62"+ - "\6\61\1\0\16\61\23\0\1\u0214\101\0\3\361\1\0"+ - "\1\u015b\1\361\11\0\4\361\2\0\2\361\3\0\3\361"+ - "\5\0\6\361\1\0\6\361\6\0\3\361\1\u0215\2\0"+ - "\11\361\1\0\16\361\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\1\62\1\u0144\1\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\6\62\6\0\4\62\1\61"+ - "\1\0\11\62\1\0\16\62\2\370\2\102\14\370\3\102"+ - "\3\370\2\102\1\u015f\1\u0160\3\370\1\102\7\370\3\102"+ - "\4\370\2\102\11\370\1\102\6\370\1\102\25\370\2\217"+ - "\2\103\14\217\3\103\3\217\2\103\1\372\1\217\1\373"+ - "\2\217\1\103\7\217\3\103\4\217\2\103\11\217\1\103"+ - "\6\217\1\103\25\217\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\3\62\1\0\1\61\1\62\2\0"+ - "\5\62\2\0\6\62\6\0\4\62\1\61\1\0\11\62"+ - "\1\0\3\62\1\u01c9\12\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\1\62\1\u0216\1\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\6\62\6\0\4\62"+ - "\1\61\1\0\11\62\1\0\16\62\1\61\4\62\13\0"+ - "\2\62\1\u0217\1\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\6\62\6\0"+ - "\4\62\1\61\1\0\11\62\1\0\16\62\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\3\62\1\u0218\2\62"+ - "\6\0\4\62\1\61\1\0\11\62\1\0\16\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\2\62\1\u01b5"+ - "\3\62\6\0\4\62\1\61\1\0\11\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\3\62"+ - "\1\u0219\2\62\6\0\4\62\1\61\1\0\11\62\1\0"+ - "\16\62\5\61\13\0\4\61\2\0\3\61\2\0\3\61"+ - "\1\0\2\61\2\0\5\61\2\0\6\61\6\0\5\61"+ - "\1\0\2\61\1\u021a\6\61\1\0\17\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\3\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\6\62\6\0\4\62\1\61"+ - "\1\0\3\62\1\u021b\5\62\1\0\16\62\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\6\62\6\0\4\62"+ - "\1\61\1\0\4\62\1\u01eb\4\62\1\0\16\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\6\62\6\0"+ - "\4\62\1\61\1\0\4\62\1\u01c5\4\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\3\62"+ - "\1\u021c\2\62\6\0\4\62\1\61\1\0\11\62\1\0"+ - "\16\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\3\62\1\0\1\61\1\62\2\0\5\62\2\0"+ - "\6\62\6\0\4\62\1\61\1\0\5\62\1\257\3\62"+ - "\1\0\16\62\67\0\1\u021d\34\0\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\3\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\1\62\1\u021e\4\62\6\0"+ - "\4\62\1\61\1\0\11\62\1\0\16\62\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\6\62\6\0\4\62"+ - "\1\61\1\0\11\62\1\0\10\62\1\u021f\5\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\6\62\6\0"+ - "\4\62\1\61\1\0\11\62\1\0\14\62\1\u0220\1\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\6\62"+ - "\6\0\4\62\1\61\1\0\11\62\1\0\3\62\1\u0221"+ - "\12\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\3\62\1\0\1\61\1\62\2\0\5\62\2\0"+ - "\6\62\6\0\4\62\1\61\1\0\11\62\1\0\1\62"+ - "\1\u0222\14\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\1\62\1\u0223\4\62\6\0\4\62\1\61\1\0"+ - "\11\62\1\0\16\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\3\62\1\0\1\61\1\62\2\0"+ - "\5\62\2\0\3\62\1\u0224\2\62\6\0\4\62\1\61"+ - "\1\0\11\62\1\0\16\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\3\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\4\62\1\u0225\1\62\6\0\4\62"+ - "\1\61\1\0\11\62\1\0\16\62\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\3\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\6\62\6\0\3\62\1\u0226"+ - "\1\61\1\0\11\62\1\0\16\62\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\1\223\2\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\6\62\6\0\4\62"+ - "\1\61\1\0\11\62\1\0\16\62\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\3\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\3\62\1\u0102\2\62\6\0"+ - "\4\62\1\61\1\0\11\62\1\0\16\62\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\2\62\1\u0227\3\62"+ - "\6\0\4\62\1\61\1\0\11\62\1\0\16\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\1\u0175\5\62"+ - "\6\0\4\62\1\61\1\0\11\62\1\0\16\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\2\62\1\u0228"+ - "\3\62\6\0\4\62\1\61\1\0\11\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\5\62"+ - "\1\u0229\6\0\4\62\1\61\1\0\11\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\1\u01c7\2\62\1\0\1\61\1\62\2\0\5\62\2\0"+ - "\6\62\6\0\4\62\1\61\1\0\11\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\1\u0216"+ - "\5\62\6\0\4\62\1\61\1\0\11\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\4\62"+ - "\1\u022a\1\62\6\0\4\62\1\61\1\0\11\62\1\0"+ - "\16\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\1\62\1\u022b\1\62\1\0\1\61\1\62\2\0"+ - "\5\62\2\0\6\62\6\0\4\62\1\61\1\0\11\62"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\4\62"+ - "\1\u022c\2\0\6\62\6\0\4\62\1\61\1\0\11\62"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\2\62\1\u022d\3\62\6\0\4\62\1\61\1\0"+ - "\11\62\1\0\16\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\3\62\1\0\1\61\1\62\2\0"+ - "\5\62\2\0\5\62\1\u022e\6\0\4\62\1\61\1\0"+ - "\11\62\1\0\16\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\3\62\1\0\1\61\1\62\2\0"+ - "\5\62\2\0\6\62\6\0\4\62\1\61\1\0\2\62"+ - "\1\u022f\6\62\1\0\16\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\3\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\4\62\1\u0230\1\62\6\0\4\62"+ - "\1\61\1\0\11\62\1\0\16\62\22\0\1\u0231\123\0"+ - "\1\u0232\102\0\3\361\1\0\1\u015b\1\361\11\0\4\361"+ - "\2\0\2\361\3\0\3\361\5\0\6\361\1\0\1\u0233"+ - "\5\361\6\0\4\361\2\0\11\361\1\0\16\361\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\2\62\1\262"+ - "\3\62\6\0\4\62\1\61\1\0\11\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\3\62\1\u0234\1\62"+ - "\2\0\6\62\6\0\4\62\1\61\1\0\11\62\1\0"+ - "\16\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\3\62\1\0\1\61\1\62\2\0\5\62\2\0"+ - "\6\62\6\0\4\62\1\61\1\0\6\62\1\u0175\2\62"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\6\62\6\0\1\62\1\223\2\62\1\61\1\0"+ - "\11\62\1\0\16\62\5\61\13\0\4\61\2\0\3\61"+ - "\2\0\3\61\1\0\2\61\2\0\5\61\2\0\2\61"+ - "\1\u0235\3\61\6\0\5\61\1\0\11\61\1\0\17\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\2\62\1\u0100"+ - "\3\62\6\0\4\62\1\61\1\0\11\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\1\62\1\u0236\1\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\6\62\6\0\4\62\1\61\1\0\11\62\1\0"+ - "\16\62\74\0\1\u0237\27\0\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\3\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\6\62\6\0\4\62\1\61\1\0"+ - "\11\62\1\0\1\u0238\15\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\3\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\3\62\1\u0239\2\62\6\0\4\62"+ - "\1\61\1\0\11\62\1\0\16\62\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\3\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\6\62\6\0\2\62\1\u023a"+ - "\1\62\1\61\1\0\11\62\1\0\16\62\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\6\62\6\0\4\62"+ - "\1\61\1\0\4\62\1\u023b\4\62\1\0\16\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\6\62\6\0"+ - "\2\62\1\u023c\1\62\1\61\1\0\11\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\6\62"+ - "\6\0\2\62\1\u023d\1\62\1\61\1\0\11\62\1\0"+ - "\16\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\3\62\1\0\1\61\1\62\2\0\5\62\2\0"+ - "\6\62\6\0\4\62\1\61\1\0\11\62\1\0\1\u0180"+ - "\15\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\3\62\1\0\1\61\1\62\2\0\5\62\2\0"+ - "\6\62\6\0\1\u023e\3\62\1\61\1\0\11\62\1\0"+ - "\16\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\3\62\1\0\1\61\1\62\2\0\5\62\2\0"+ - "\2\62\1\u023f\3\62\6\0\4\62\1\61\1\0\11\62"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\1\62"+ - "\1\u0240\3\62\2\0\6\62\6\0\4\62\1\61\1\0"+ - "\11\62\1\0\16\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\1\62\1\u0241\1\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\6\62\6\0\4\62\1\61"+ - "\1\0\11\62\1\0\16\62\1\61\4\62\13\0\4\62"+ - "\2\0\1\u0242\1\62\1\173\2\0\3\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\6\62\6\0\4\62\1\61"+ - "\1\0\11\62\1\0\16\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\3\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\6\62\6\0\4\62\1\61\1\0"+ - "\4\62\1\u0243\4\62\1\0\16\62\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\3\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\1\u0180\5\62\6\0\4\62"+ - "\1\61\1\0\11\62\1\0\16\62\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\3\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\6\62\6\0\4\62\1\61"+ - "\1\0\11\62\1\0\1\62\1\u0244\14\62\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\1\62\1\u0180\4\62"+ - "\6\0\4\62\1\61\1\0\11\62\1\0\16\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\6\62\6\0"+ - "\2\62\1\u0245\1\62\1\61\1\0\11\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\6\62"+ - "\6\0\1\u0246\3\62\1\61\1\0\11\62\1\0\10\62"+ - "\1\u0247\5\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\6\62\6\0\2\62\1\u0248\1\62\1\61\1\0"+ - "\11\62\1\0\16\62\17\0\1\u0249\123\0\1\366\105\0"+ - "\3\361\1\0\1\u015b\1\361\1\u024a\2\0\1\u024a\5\0"+ - "\4\361\1\0\1\u024b\2\361\3\0\3\361\5\0\6\361"+ - "\1\0\6\361\6\0\4\361\2\0\11\361\1\u024a\16\361"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\1\u024c"+ - "\5\62\6\0\4\62\1\61\1\0\11\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\6\62"+ - "\6\0\4\62\1\61\1\0\2\62\1\u0180\6\62\1\0"+ - "\16\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\3\62\1\0\1\61\1\62\2\0\5\62\2\0"+ - "\2\62\1\231\3\62\6\0\4\62\1\61\1\0\11\62"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\1\u024d\5\62\6\0\4\62\1\61\1\0\11\62"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\6\62\6\0\4\62\1\61\1\0\11\62\1\0"+ - "\1\u024e\15\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\6\62\6\0\4\62\1\61\1\0\11\62\1\0"+ - "\1\62\1\u024f\14\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\3\62\1\0\1\61\1\62\2\0"+ - "\5\62\2\0\2\62\1\u0250\3\62\6\0\4\62\1\61"+ - "\1\0\11\62\1\0\16\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\3\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\3\62\1\u0251\2\62\6\0\4\62"+ - "\1\61\1\0\11\62\1\0\16\62\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\3\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\6\62\6\0\4\62\1\61"+ - "\1\0\4\62\1\u0252\4\62\1\0\16\62\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\1\62\1\u0253\4\62"+ - "\6\0\4\62\1\61\1\0\11\62\1\0\16\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\6\62\6\0"+ - "\4\62\1\61\1\0\4\62\1\u0254\4\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\1\u0116"+ - "\5\62\6\0\4\62\1\61\1\0\11\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\6\62"+ - "\6\0\2\62\1\u0255\1\62\1\61\1\0\11\62\1\0"+ - "\16\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\3\62\1\0\1\61\1\62\2\0\5\62\2\0"+ - "\3\62\1\u022b\2\62\6\0\4\62\1\61\1\0\11\62"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\2\62\1\u0256\3\62\6\0\4\62\1\61\1\0"+ - "\11\62\1\0\16\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\3\62\1\0\1\61\1\62\2\0"+ - "\5\62\2\0\6\62\6\0\4\62\1\61\1\0\4\62"+ - "\1\u0257\4\62\1\0\16\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\3\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\1\u0258\5\62\6\0\4\62\1\61"+ - "\1\0\11\62\1\0\16\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\3\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\4\62\1\307\1\62\6\0\4\62"+ - "\1\61\1\0\11\62\1\0\16\62\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\3\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\6\62\6\0\3\62\1\u0144"+ - "\1\61\1\0\11\62\1\0\16\62\7\0\1\u024a\2\0"+ - "\1\u024a\12\0\1\u024b\57\0\1\u024a\16\0\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\2\62\1\u0259\3\62"+ - "\6\0\4\62\1\61\1\0\11\62\1\0\16\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\6\62\6\0"+ - "\4\62\1\61\1\0\1\u0180\10\62\1\0\16\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\6\62\6\0"+ - "\4\62\1\61\1\0\1\u025a\10\62\1\0\16\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\6\62\6\0"+ - "\2\62\1\u025b\1\62\1\61\1\0\11\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\6\62"+ - "\6\0\4\62\1\61\1\0\11\62\1\0\4\62\1\u020a"+ - "\11\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\2\62\1\u025c\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\6\62\6\0\4\62\1\61\1\0\11\62\1\0"+ - "\16\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\1\u025d\2\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\6\62\6\0\4\62\1\61\1\0\11\62\1\0"+ - "\16\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\3\62\1\0\1\61\1\62\2\0\5\62\2\0"+ - "\1\u0139\5\62\6\0\4\62\1\61\1\0\11\62\1\0"+ - "\16\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\3\62\1\0\1\61\1\62\2\0\5\62\2\0"+ - "\3\62\1\u025e\2\62\6\0\4\62\1\61\1\0\11\62"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\1\u025f\5\62\6\0\4\62\1\61\1\0\11\62"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\1\62\1\231\1\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\6\62\6\0\4\62\1\61\1\0"+ - "\11\62\1\0\16\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\1\62\1\u0180\1\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\6\62\6\0\4\62\1\61"+ - "\1\0\11\62\1\0\16\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\3\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\6\62\6\0\4\62\1\61\1\0"+ - "\4\62\1\u0260\4\62\1\0\16\62\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\3\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\1\62\1\u0261\4\62\6\0"+ - "\4\62\1\61\1\0\11\62\1\0\16\62\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\6\62\6\0\4\62"+ - "\1\61\1\0\11\62\1\0\15\62\1\u0262\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\2\62\1\u0263\3\62"+ - "\6\0\4\62\1\61\1\0\11\62\1\0\16\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\4\62\1\u0264"+ - "\1\62\6\0\4\62\1\61\1\0\11\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\1\62\1\u0265\1\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\6\62\6\0\4\62\1\61\1\0\11\62\1\0"+ - "\16\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\3\62\1\0\1\61\1\62\2\0\5\62\2\0"+ - "\6\62\6\0\4\62\1\61\1\0\2\62\1\u0216\6\62"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\6\62\6\0\4\62\1\61\1\0\6\62\1\u0266"+ - "\2\62\1\0\16\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\3\62\1\0\1\61\1\62\2\0"+ - "\5\62\2\0\6\62\6\0\3\62\1\u0180\1\61\1\0"+ - "\11\62\1\0\16\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\3\62\1\0\1\61\1\62\2\0"+ - "\4\62\1\u0267\2\0\6\62\6\0\4\62\1\61\1\0"+ - "\11\62\1\0\16\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\1\u0268\2\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\6\62\6\0\4\62\1\61\1\0"+ - "\11\62\1\0\16\62\1\61\4\62\13\0\1\u0269\3\62"+ - "\2\0\2\62\1\173\2\0\3\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\6\62\6\0\4\62\1\61\1\0"+ - "\11\62\1\0\16\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\3\62\1\0\1\61\1\62\2\0"+ - "\5\62\2\0\2\62\1\u026a\3\62\6\0\4\62\1\61"+ - "\1\0\11\62\1\0\16\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\3\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\6\62\6\0\4\62\1\61\1\0"+ - "\2\62\1\u026b\6\62\1\0\16\62\1\61\4\62\13\0"+ - "\4\62\2\0\2\62\1\173\2\0\3\62\1\0\1\61"+ - "\1\62\2\0\5\62\2\0\3\62\1\u026c\2\62\6\0"+ - "\4\62\1\61\1\0\11\62\1\0\16\62\1\61\4\62"+ - "\13\0\4\62\2\0\2\62\1\173\2\0\3\62\1\0"+ - "\1\61\1\62\2\0\5\62\2\0\6\62\6\0\4\62"+ - "\1\61\1\0\11\62\1\0\1\62\1\u026d\14\62\1\61"+ - "\4\62\13\0\4\62\2\0\2\62\1\173\2\0\3\62"+ - "\1\0\1\61\1\62\2\0\5\62\2\0\3\62\1\u026e"+ - "\2\62\6\0\4\62\1\61\1\0\11\62\1\0\16\62"+ - "\1\61\4\62\13\0\4\62\2\0\2\62\1\173\2\0"+ - "\3\62\1\0\1\61\1\62\2\0\5\62\2\0\4\62"+ - "\1\u026f\1\62\6\0\4\62\1\61\1\0\11\62\1\0"+ - "\16\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\3\62\1\0\1\61\1\62\2\0\5\62\2\0"+ - "\5\62\1\u0250\6\0\4\62\1\61\1\0\11\62\1\0"+ - "\16\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\3\62\1\0\1\61\1\62\2\0\5\62\2\0"+ - "\5\62\1\u0180\6\0\4\62\1\61\1\0\11\62\1\0"+ - "\16\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\3\62\1\0\1\61\1\62\2\0\5\62\2\0"+ - "\6\62\6\0\3\62\1\u0250\1\61\1\0\11\62\1\0"+ - "\16\62\1\61\4\62\13\0\4\62\2\0\2\62\1\173"+ - "\2\0\3\62\1\0\1\61\1\62\2\0\5\62\2\0"+ - "\2\62\1\u020d\3\62\6\0\4\62\1\61\1\0\11\62"+ - "\1\0\16\62\1\61\4\62\13\0\4\62\2\0\2\62"+ - "\1\173\2\0\3\62\1\0\1\61\1\62\2\0\5\62"+ - "\2\0\4\62\1\u0270\1\62\6\0\4\62\1\61\1\0"+ - "\11\62\1\0\16\62\1\61\4\62\13\0\4\62\2\0"+ - "\2\62\1\173\2\0\3\62\1\0\1\61\1\62\2\0"+ - "\5\62\2\0\6\62\6\0\2\62\1\u0260\1\62\1\61"+ - "\1\0\11\62\1\0\16\62\1\61\4\62\13\0\4\62"+ - "\2\0\2\62\1\173\2\0\3\62\1\0\1\61\1\62"+ - "\2\0\5\62\2\0\6\62\6\0\2\62\1\u0253\1\62"+ - "\1\61\1\0\11\62\1\0\16\62"; - - private static int [] zzUnpackTrans() { - int [] result = new int[48384]; - int offset = 0; - offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackTrans(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - value--; - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /* error codes */ - private static final int ZZ_UNKNOWN_ERROR = 0; - private static final int ZZ_NO_MATCH = 1; - private static final int ZZ_PUSHBACK_2BIG = 2; - - /* error messages for the codes above */ - private static final String ZZ_ERROR_MSG[] = { - "Unkown internal scanner error", - "Error: could not match input", - "Error: pushback value was too large" - }; - - /** - * ZZ_ATTRIBUTE[aState] contains the attributes of state aState - */ - private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); - - private static final String ZZ_ATTRIBUTE_PACKED_0 = - "\5\0\2\1\1\0\2\1\4\0\2\1\1\11\4\1"+ - "\1\11\5\1\1\11\2\1\2\11\2\1\4\11\2\1"+ - "\1\11\1\1\4\11\7\1\1\11\2\1\1\11\1\1"+ - "\1\11\13\1\1\11\35\1\1\11\5\1\1\11\6\1"+ - "\2\11\5\0\1\11\1\0\11\1\3\0\3\1\1\0"+ - "\3\1\1\11\2\1\1\11\12\1\1\11\74\1\1\11"+ - "\12\0\1\1\2\0\1\11\2\0\1\11\2\1\1\0"+ - "\2\1\3\0\3\1\1\11\4\1\1\11\15\1\1\0"+ - "\102\1\11\0\1\11\2\0\2\1\3\0\3\1\1\11"+ - "\13\1\1\11\6\1\1\0\57\1\2\0\1\1\2\0"+ - "\1\1\3\0\1\1\2\0\21\1\1\0\42\1\5\0"+ - "\1\1\2\0\17\1\1\0\30\1\3\0\7\1\1\0"+ - "\23\1\3\0\3\1\1\11\21\1\1\11\1\0\1\11"+ - "\45\1"; - - private static int [] zzUnpackAttribute() { - int [] result = new int[624]; - int offset = 0; - offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAttribute(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - /** the input device */ - private java.io.Reader zzReader; - - /** the current state of the DFA */ - private int zzState; - - /** the current lexical state */ - private int zzLexicalState = YYINITIAL; - - /** this buffer contains the current text to be matched and is - the source of the yytext() string */ - private char zzBuffer[]; - - /** the textposition at the last accepting state */ - private int zzMarkedPos; - - /** the current text position in the buffer */ - private int zzCurrentPos; - - /** startRead marks the beginning of the yytext() string in the buffer */ - private int zzStartRead; - - /** endRead marks the last character in the buffer, that has been read - from input */ - private int zzEndRead; - - /** zzAtEOF == true <=> the scanner is at the EOF */ - private boolean zzAtEOF; - - /* user code: */ - - /** - * Type specific to JSPTokenMaker denoting a line ending with an unclosed - * double-quote attribute. - */ - public static final int INTERNAL_ATTR_DOUBLE = -1; - - - /** - * Type specific to JSPTokenMaker denoting a line ending with an unclosed - * single-quote attribute. - */ - public static final int INTERNAL_ATTR_SINGLE = -2; - - - /** - * Token type specific to this class; this signals that the user has - * ended a line with an unclosed XML tag; thus a new line is beginning - * still inside of the tag. - */ - public static final int INTERNAL_INTAG = -3; - - /** - * Token type specific to this class; this signals that the user has - * ended a line with an unclosed Script tag; thus a new line is beginning - * still inside of the tag. - */ - public static final int INTERNAL_INTAG_SCRIPT = -4; - - /** - * Token type specific to this class; this signals that the user has - * ended a line in the middle of a double-quoted attribute in a Script - * tag. - */ - public static final int INTERNAL_ATTR_DOUBLE_QUOTE_SCRIPT = -5; - - /** - * Token type specific to this class; this signals that the user has - * ended a line in the middle of a single-quoted attribute in a Script - * tag. - */ - public static final int INTERNAL_ATTR_SINGLE_QUOTE_SCRIPT = -6; - - /** - * Token type specific to this class; this signals that the user has - * ended a line in an ActionScript code block (text content inside a - * Script tag). - */ - public static final int INTERNAL_IN_AS = -7; - - /** - * Token type specific to this class; this signals that the user has - * ended a line in an MLC in an ActionScript code block (text content - * inside a Script tag). - */ - public static final int INTERNAL_IN_AS_MLC = -8; - - /** - * Whether closing markup tags are automatically completed for HTML. - */ - private static boolean completeCloseTags; - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public MxmlTokenMaker() { - } - - - static { - completeCloseTags = true; - } - - - /** - * Adds the token specified to the current linked list of tokens as an - * "end token;" that is, at zzMarkedPos. - * - * @param tokenType The token's type. - */ - private void addEndToken(int tokenType) { - addToken(zzMarkedPos,zzMarkedPos, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addToken(int, int, int) - */ - private void addHyperlinkToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, true); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - * @param hyperlink Whether this token is a hyperlink. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, - int startOffset, boolean hyperlink) { - super.addToken(array, start,end, tokenType, startOffset, hyperlink); - zzStartRead = zzMarkedPos; - } - - - /** - * Returns whether markup close tags should be completed. For XML, the - * default value is true. - * - * @return Whether closing markup tags are completed. - * @see #setCompleteCloseTags(boolean) - */ - @Override - public boolean getCompleteCloseTags() { - return completeCloseTags; - } - - - /** - * Static version of {@link #getCompleteCloseTags()}. This hack is - * unfortunately needed for applications to be able to query this value - * without instantiating this class. - * - * @return Whether closing markup tags are completed. - * @see #setCompleteCloseTags(boolean) - */ - public static boolean getCompleteCloseMarkupTags() { - return completeCloseTags; - } - - - /** - * Always returns false, as you never want "mark occurrences" - * working in XML files. - * - * @param type The token type. - * @return Whether tokens of this type should have "mark occurrences" - * enabled. - */ - @Override - public boolean getMarkOccurrencesOfTokenType(int type) { - return false; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - - // Start off in the proper state. - int state = Token.NULL; - switch (initialTokenType) { - case Token.MARKUP_COMMENT: - state = COMMENT; - start = text.offset; - break; - case Token.MARKUP_DTD: - state = DTD; - start = text.offset; - break; - case INTERNAL_ATTR_DOUBLE: - state = INATTR_DOUBLE; - start = text.offset; - break; - case INTERNAL_ATTR_SINGLE: - state = INATTR_SINGLE; - start = text.offset; - break; - case Token.MARKUP_PROCESSING_INSTRUCTION: - state = PI; - start = text.offset; - break; - case INTERNAL_INTAG: - state = INTAG; - start = text.offset; - break; - case INTERNAL_INTAG_SCRIPT: - state = INTAG_SCRIPT; - start = text.offset; - break; - case INTERNAL_ATTR_DOUBLE_QUOTE_SCRIPT: - state = INATTR_DOUBLE_SCRIPT; - start = text.offset; - break; - case INTERNAL_ATTR_SINGLE_QUOTE_SCRIPT: - state = INATTR_SINGLE_SCRIPT; - start = text.offset; - break; - case INTERNAL_IN_AS: - state = AS; - start = text.offset; - break; - case INTERNAL_IN_AS_MLC: - state = AS_MLC; - start = text.offset; - break; - case Token.MARKUP_CDATA: - state = CDATA; - start = text.offset; - break; - default: - state = Token.NULL; - } - - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Sets whether markup close tags should be completed. - * - * @param complete Whether closing markup tags are completed. - * @see #getCompleteCloseTags() - */ - public static void setCompleteCloseTags(boolean complete) { - completeCloseTags = complete; - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(java.io.Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtEOF = false; - } - - - - - /** - * Creates a new scanner - * There is also a java.io.InputStream version of this constructor. - * - * @param in the java.io.Reader to read input from. - */ - public MxmlTokenMaker(java.io.Reader in) { - this.zzReader = in; - } - - /** - * Creates a new scanner. - * There is also java.io.Reader version of this constructor. - * - * @param in the java.io.Inputstream to read input from. - */ - public MxmlTokenMaker(java.io.InputStream in) { - this(new java.io.InputStreamReader(in)); - } - - /** - * Unpacks the compressed character translation table. - * - * @param packed the packed character translation table - * @return the unpacked character translation table - */ - private static char [] zzUnpackCMap(String packed) { - char [] map = new char[0x10000]; - int i = 0; /* index in packed string */ - int j = 0; /* index in unpacked array */ - while (i < 190) { - int count = packed.charAt(i++); - char value = packed.charAt(i++); - do map[j++] = value; while (--count > 0); - } - return map; - } - - - /** - * Closes the input stream. - */ - public final void yyclose() throws java.io.IOException { - zzAtEOF = true; /* indicate end of file */ - zzEndRead = zzStartRead; /* invalidate buffer */ - - if (zzReader != null) - zzReader.close(); - } - - - /** - * Returns the current lexical state. - */ - public final int yystate() { - return zzLexicalState; - } - - - /** - * Enters a new lexical state - * - * @param newState the new lexical state - */ - @Override - public final void yybegin(int newState) { - zzLexicalState = newState; - } - - - /** - * Returns the text matched by the current regular expression. - */ - public final String yytext() { - return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead ); - } - - - /** - * Returns the character at position pos from the - * matched text. - * - * It is equivalent to yytext().charAt(pos), but faster - * - * @param pos the position of the character to fetch. - * A value from 0 to yylength()-1. - * - * @return the character at position pos - */ - public final char yycharat(int pos) { - return zzBuffer[zzStartRead+pos]; - } - - - /** - * Returns the length of the matched text region. - */ - public final int yylength() { - return zzMarkedPos-zzStartRead; - } - - - /** - * Reports an error that occured while scanning. - * - * In a wellformed scanner (no or only correct usage of - * yypushback(int) and a match-all fallback rule) this method - * will only be called with things that "Can't Possibly Happen". - * If this method is called, something is seriously wrong - * (e.g. a JFlex bug producing a faulty scanner etc.). - * - * Usual syntax/scanner level error handling should be done - * in error fallback rules. - * - * @param errorCode the code of the errormessage to display - */ - private void zzScanError(int errorCode) { - String message; - try { - message = ZZ_ERROR_MSG[errorCode]; - } - catch (ArrayIndexOutOfBoundsException e) { - message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; - } - - throw new Error(message); - } - - - /** - * Pushes the specified amount of characters back into the input stream. - * - * They will be read again by then next call of the scanning method - * - * @param number the number of characters to be read again. - * This number must not be greater than yylength()! - */ - public void yypushback(int number) { - if ( number > yylength() ) - zzScanError(ZZ_PUSHBACK_2BIG); - - zzMarkedPos -= number; - } - - - /** - * Resumes scanning until the next regular expression is matched, - * the end of input is encountered or an I/O-Error occurs. - * - * @return the next token - * @exception java.io.IOException if any I/O-Error occurs - */ - public org.fife.ui.rsyntaxtextarea.Token yylex() throws java.io.IOException { - int zzInput; - int zzAction; - - // cached fields: - int zzCurrentPosL; - int zzMarkedPosL; - int zzEndReadL = zzEndRead; - char [] zzBufferL = zzBuffer; - char [] zzCMapL = ZZ_CMAP; - - int [] zzTransL = ZZ_TRANS; - int [] zzRowMapL = ZZ_ROWMAP; - int [] zzAttrL = ZZ_ATTRIBUTE; - - while (true) { - zzMarkedPosL = zzMarkedPos; - - zzAction = -1; - - zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; - - zzState = zzLexicalState; - - - zzForAction: { - while (true) { - - if (zzCurrentPosL < zzEndReadL) - zzInput = zzBufferL[zzCurrentPosL++]; - else if (zzAtEOF) { - zzInput = YYEOF; - break zzForAction; - } - else { - // store back cached positions - zzCurrentPos = zzCurrentPosL; - zzMarkedPos = zzMarkedPosL; - boolean eof = zzRefill(); - // get translated positions and possibly new buffer - zzCurrentPosL = zzCurrentPos; - zzMarkedPosL = zzMarkedPos; - zzBufferL = zzBuffer; - zzEndReadL = zzEndRead; - if (eof) { - zzInput = YYEOF; - break zzForAction; - } - else { - zzInput = zzBufferL[zzCurrentPosL++]; - } - } - int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; - if (zzNext == -1) break zzForAction; - zzState = zzNext; - - int zzAttributes = zzAttrL[zzState]; - if ( (zzAttributes & 1) == 1 ) { - zzAction = zzState; - zzMarkedPosL = zzCurrentPosL; - if ( (zzAttributes & 8) == 8 ) break zzForAction; - } - - } - } - - // store back cached position - zzMarkedPos = zzMarkedPosL; - - switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { - case 2: - { addToken(Token.IDENTIFIER); - } - case 59: break; - case 53: - { addToken(Token.LITERAL_BOOLEAN); - } - case 60: break; - case 29: - { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addEndToken(INTERNAL_IN_AS); return firstToken; - } - case 61: break; - case 50: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.MARKUP_COMMENT); addHyperlinkToken(temp,zzMarkedPos-1, Token.MARKUP_COMMENT); start = zzMarkedPos; - } - case 62: break; - case 51: - { addToken(Token.ERROR_CHAR); - } - case 63: break; - case 34: - { addToken(Token.ERROR_NUMBER_FORMAT); - } - case 64: break; - case 24: - { addEndToken(INTERNAL_IN_AS); return firstToken; - } - case 65: break; - case 19: - { start = zzMarkedPos-1; yybegin(INATTR_SINGLE_SCRIPT); - } - case 66: break; - case 13: - { yybegin(YYINITIAL); addToken(Token.MARKUP_TAG_DELIMITER); - } - case 67: break; - case 26: - { addToken(Token.ERROR_CHAR); addNullToken(); return firstToken; - } - case 68: break; - case 38: - { addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); - } - case 69: break; - case 54: - { addToken(Token.FUNCTION); - } - case 70: break; - case 43: - { int count = yylength(); - addToken(zzStartRead,zzStartRead+1, Token.MARKUP_TAG_DELIMITER); - addToken(zzMarkedPos-(count-2), zzMarkedPos-1, Token.MARKUP_TAG_NAME); - yybegin(INTAG); - } - case 71: break; - case 31: - { start = zzMarkedPos-2; yybegin(DTD); - } - case 72: break; - case 27: - { addToken(Token.ERROR_STRING_DOUBLE); addNullToken(); return firstToken; - } - case 73: break; - case 21: - { yybegin(INTAG_SCRIPT); addToken(start,zzStartRead, Token.MARKUP_TAG_ATTRIBUTE_VALUE); - } - case 74: break; - case 57: - { addToken(Token.MARKUP_CDATA_DELIMITER); start = zzMarkedPos; yybegin(CDATA); - } - case 75: break; - case 22: - { addToken(Token.ERROR_IDENTIFIER); - } - case 76: break; - case 4: - { addToken(Token.MARKUP_TAG_DELIMITER); yybegin(INTAG); - } - case 77: break; - case 28: - { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_IN_AS_MLC); return firstToken; - } - case 78: break; - case 46: - { addToken(Token.MARKUP_CDATA_DELIMITER); - } - case 79: break; - case 45: - { int temp=zzStartRead; yybegin(YYINITIAL); addToken(start,zzStartRead-1, Token.MARKUP_CDATA); addToken(temp,zzMarkedPos-1, Token.MARKUP_CDATA_DELIMITER); - } - case 80: break; - case 17: - { yybegin(INTAG); addToken(start,zzStartRead, Token.MARKUP_TAG_ATTRIBUTE_VALUE); - } - case 81: break; - case 37: - { addToken(Token.LITERAL_CHAR); - } - case 82: break; - case 32: - { start = zzMarkedPos-2; yybegin(PI); - } - case 83: break; - case 15: - { start = zzMarkedPos-1; yybegin(INATTR_DOUBLE); - } - case 84: break; - case 42: - { yybegin(AS); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); - } - case 85: break; - case 7: - { addToken(start,zzStartRead-1, Token.MARKUP_COMMENT); return firstToken; - } - case 86: break; - case 9: - { addToken(start,zzStartRead-1, Token.MARKUP_DTD); return firstToken; - } - case 87: break; - case 36: - { addToken(Token.LITERAL_NUMBER_HEXADECIMAL); - } - case 88: break; - case 8: - { addToken(start,zzStartRead-1, Token.MARKUP_PROCESSING_INSTRUCTION); return firstToken; - } - case 89: break; - case 20: - { start = zzMarkedPos-1; yybegin(INATTR_DOUBLE_SCRIPT); - } - case 90: break; - case 41: - { start = zzMarkedPos-2; yybegin(AS_MLC); - } - case 91: break; - case 16: - { addToken(Token.MARKUP_TAG_DELIMITER); /* Not valid but we'll still accept it */ - } - case 92: break; - case 5: - { addToken(Token.WHITESPACE); - } - case 93: break; - case 30: - { int count = yylength(); - String tag = yytext(); // Get before addToken calls - addToken(zzStartRead,zzStartRead, Token.MARKUP_TAG_DELIMITER); - addToken(zzMarkedPos-(count-1), zzMarkedPos-1, Token.MARKUP_TAG_NAME); - if (tag.endsWith(":Script") || tag.equals("' - while (Character.isWhitespace(text.charAt(tagNameEnd))) { - tagNameEnd--; - } - int tagNameLen = tagNameEnd - 1; - yybegin(YYINITIAL); - addToken(zzStartRead,zzStartRead+1, Token.MARKUP_TAG_DELIMITER); - addToken(origStart+2,origStart+2+tagNameLen-1, Token.MARKUP_TAG_NAME); - if (tagNameEnd - * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated NSISTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 1.0 - * - */ -%% - -%public -%class NSISTokenMaker -%extends AbstractJFlexCTokenMaker -%unicode -%ignorecase -%type org.fife.ui.rsyntaxtextarea.Token - - -%{ - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public NSISTokenMaker() { - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addToken(int, int, int) - */ - private void addHyperlinkToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, true); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addHyperlinkToken(int, int, int) - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, false); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - * @param hyperlink Whether this token is a hyperlink. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, - int startOffset, boolean hyperlink) { - super.addToken(array, start,end, tokenType, startOffset, hyperlink); - zzStartRead = zzMarkedPos; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { "//", null }; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - - // Start off in the proper state. - int state = YYINITIAL; - switch (initialTokenType) { - case Token.LITERAL_STRING_DOUBLE_QUOTE: - state = STRING; - break; - case Token.LITERAL_CHAR: - state = CHAR_LITERAL; - break; - case Token.LITERAL_BACKQUOTE: - state = BACKTICKS; - break; - case Token.COMMENT_MULTILINE: - state = MLC; - break; - } - - start = text.offset; - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = zzPushbackPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtBOL = true; - zzAtEOF = false; - } - - -%} - -Letter = ([A-Za-z]) -LetterOrUnderscore = ({Letter}|"_") -NonzeroDigit = ([1-9]) -Digit = ("0"|{NonzeroDigit}) -HexDigit = ({Digit}|[A-Fa-f]) -OctalDigit = ([0-7]) -EscapedSourceCharacter = ("u"{HexDigit}{HexDigit}{HexDigit}{HexDigit}) -NonSeparator = ([^\t\f\r\n\ \(\)\{\}\[\]\;\,\.\=\>\<\!\~\?\:\+\-\*\/\&\|\^\%\"\']|"#"|"\\") -IdentifierStart = ({LetterOrUnderscore}|[$/]) -IdentifierPart = ({IdentifierStart}|{Digit}|("\\"{EscapedSourceCharacter})) - -LineTerminator = (\n) -WhiteSpace = ([ \t\f]) - -MLCBegin = ("/*") -MLCEnd = ("*/") -LineCommentBegin = ([;#]) - -IntegerLiteral = (({NonzeroDigit}{Digit}*)|"0") -HexLiteral = ("0"(([xX]{HexDigit}+)|({OctalDigit}*))) -ErrorNumberFormat = (({IntegerLiteral}|{HexLiteral}){NonSeparator}+) -BooleanLiteral = ("true"|"false") - -Separator = ([\(\)\{\}\[\]]) -Separator2 = ([\;,.]) - -NonAssignmentOperator = ("+"|"-"|"<="|"^"|"++"|"<"|"*"|">="|"%"|"--"|">"|"/"|"!="|"?"|">>"|"!"|"&"|"=="|":"|">>"|"~"|"|"|"&&"|">>>") -AssignmentOperator = ("="|"-="|"*="|"/="|"|="|"&="|"^="|"+="|"%="|"<<="|">>="|">>>=") -Operator = ({NonAssignmentOperator}|{AssignmentOperator}) - -Identifier = ({IdentifierStart}{IdentifierPart}*) -VariableStart = ("$") -Variable = ({VariableStart}({Identifier}|"{"{Identifier}"}")) - -URLGenDelim = ([:\/\?#\[\]@]) -URLSubDelim = ([\!\$&'\(\)\*\+,;=]) -URLUnreserved = ({LetterOrUnderscore}|{Digit}|[\-\.\~]) -URLCharacter = ({URLGenDelim}|{URLSubDelim}|{URLUnreserved}|[%]) -URLCharacters = ({URLCharacter}*) -URLEndCharacter = ([\/\$]|{Letter}|{Digit}) -URL = (((https?|f(tp|ile))"://"|"www.")({URLCharacters}{URLEndCharacter})?) - - -%state STRING -%state CHAR_LITERAL -%state BACKTICKS -%state MLC -%state EOL_COMMENT - -%% - - { - - /* Keywords */ - "function" | - "functionend" | - "section" | - "sectionend" | - "subsection" | - "subsectionend" { addToken(Token.RESERVED_WORD); } - - /* Instructions */ - "addbrandingimage" | - "addsize" | - "allowrootdirinstall" | - "allowskipfiles" | - "autoclosewindow" | - "bggradient" | - "brandingtext" | - "bringtofront" | - "callinstdll" | - "caption" | - "changeui" | - "checkbitmap" | - "completedtext" | - "componenttext" | - "copyfiles" | - "crccheck" | - "createdirectory" | - "createfont" | - "createshortcut" | - "delete" | - "deleteinisec" | - "deleteinistr" | - "deleteregkey" | - "deleteregvalue" | - "detailprint" | - "detailsbuttontext" | - "dirshow" | - "dirtext" | - "enumregkey" | - "enumregvalue" | - "exch" | - "exec" | - "execshell" | - "execwait" | - "expandenvstrings" | - "file" | - "fileclose" | - "fileerrortext" | - "fileopen" | - "fileread" | - "filereadbyte" | - "fileseek" | - "filewrite" | - "filewritebyte" | - "findclose" | - "findfirst" | - "findnext" | - "findwindow" | - "flushini" | - "getcurinsttype" | - "getcurrentaddress" | - "getdlgitem" | - "getdllversion" | - "getdllversionlocal" | - "getfiletime" | - "getfiletimelocal" | - "getfullpathname" | - "getfunctionaddress" | - "getlabeladdress" | - "gettempfilename" | - "getwindowtext" | - "hidewindow" | - "icon" | - "initpluginsdir" | - "installbuttontext" | - "installcolors" | - "installdir" | - "installdirregkey" | - "instprogressflags" | - "insttype" | - "insttypegettext" | - "insttypesettext" | - "intfmt" | - "intop" | - "langstring" | - "langstringup" | - "licensebkcolor" | - "licensedata" | - "licenseforceselection" | - "licensetext" | - "loadlanguagefile" | - "loadlanguagefile" | - "logset" | - "logtext" | - "miscbuttontext" | - "name" | - "nop" | - "outfile" | - "page" | - "plugindir" | - "pop" | - "push" | - "readenvstr" | - "readinistr" | - "readregdword" | - "readregstr" | - "regdll" | - "rename" | - "requestexecutionlevel" | - "reservefile" | - "rmdir" | - "searchpath" | - "sectiongetflags" | - "sectiongetinsttypes" | - "sectiongetsize" | - "sectiongettext" | - "sectionin" | - "sectionsetflags" | - "sectionsetinsttypes" | - "sectionsetsize" | - "sectionsettext" | - "sendmessage" | - "setautoclose" | - "setbkcolor" | - "setbrandingimage" | - "setcompress" | - "setcompressor" | - "setcurinsttype" | - "setdatablockoptimize" | - "setdatesave" | - "setdetailsprint" | - "setdetailsview" | - "setfileattributes" | - "setfont" | - "setoutpath" | - "setoverwrite" | - "setpluginunload" | - "setrebootflag" | - "setshellvarcontext" | - "setstaticbkcolor" | - "setwindowlong" | - "showinstdetails" | - "showuninstdetails" | - "showwindow" | - "silentinstall" | - "silentuninstall" | - "sleep" | - "spacetexts" | - "strcpy" | - "strlen" | - "subcaption" | - "uninstallbuttontext" | - "uninstallcaption" | - "uninstallicon" | - "uninstallsubcaption" | - "uninstalltext" | - "uninstpage" | - "unregdll" | - "var" | - "viaddversionkey" | - "videscription" | - "vicompanyname" | - "vicomments" | - "vilegalcopyrights" | - "vilegaltrademarks" | - "viproductname" | - "viproductversion" | - "windowicon" | - "writeinistr" | - "writeregbin" | - "writeregdword" | - "writeregexpandstr" | - "writeregstr" | - "writeuninstaller" | - "xpstyle" | - - /* Flow control instructions */ - "abort" | - "call" | - "clearerrors" | - "goto" | - "ifabort" | - "iferrors" | - "iffileexists" | - "ifrebootflag" | - "intcmp" | - "intcmpu" | - "iswindow" | - "messagebox" | - "reboot" | - "return" | - "quit" | - "seterrors" | - "strcmp" | - "strcmps" { addToken(Token.FUNCTION); } - - /* Compiler utility commands */ - "!addincludedir" | - "!addplugindir" | - "!define" | - "!include" | - "!cd" | - "!echo" | - "!error" | - "!insertmacro" | - "!packhdr" | - "!system" | - "!warning" | - "!undef" | - "!verbose" | - - /* Conditional compilation */ - "!ifdef" | - "!ifndef" | - "!if" | - "!else" | - "!endif" | - "!macro" | - "!macroend" { addToken(Token.RESERVED_WORD); } - - /* Global variables */ - "$0" | - "$1" | - "$2" | - "$3" | - "$4" | - "$5" | - "$6" | - "$7" | - "$8" | - "$9" | - "$INSTDIR" | - "$OUTDIR" | - "$CMDLINE" | - "$LANGUAGE" | - - /* Local variables */ - ("$R0"{Digit}) | - - /* Constants */ - "ARCHIVE" | - "CENTER" | - "CONTROL" | - "CUR" | - "EXT" | - ("F"{NonzeroDigit}) | - ("F1"{Digit}) | - ("F2"[0-4]) | - "FILE_ATTRIBUTE_ARCHIVE" | - "MB_ABORTRETRYIGNORE" | - "RIGHT" | - "RO" | - "SET" | - "SHIFT" | - "SW_SHOWMAXIMIZED" | - "SW_SHOWMINIMIZED" | - "SW_SHOWNORMAL" | - "a" | - "admin" | - "all" | - "alwaysoff" | - "auto" | - "both" | - "bottom" | - "bzip2" | - "checkbox" | - "colored" | - "components" | - "current" | - "custom" | - "directory" | - "force" | - "hide" | - "highest" | - "ifnewer" | - "instfiles" | - "license" | - "listonly" | - "manual" | - "nevershow" | - "none" | - "off" | - "on" | - "r" | - "radiobuttons" | - "show" | - "silent" | - "silentlog" | - "smooth" | - "textonly" | - "top" | - "try" | - "uninstConfirm" | - "user" | - "w" | - "zlib" | - "$$" | - "$DESKTOP" | - "$EXEDIR" | - "$HWNDPARENT" | - "$PLUGINSDIR" | - "$PROGRAMFILES" | - "$QUICKLAUNCH" | - "$SMPROGRAMS" | - "$SMSTARTUP" | - "$STARTMENU" | - "$SYSDIR" | - "$TEMP" | - "$WINDIR" | - "$\n" | - "$\r" | - "${NSISDIR}" | - "ALT" | - "END" | - "FILE_ATTRIBUTE_HIDDEN" | - "FILE_ATTRIBUTE_NORMAL" | - "FILE_ATTRIBUTE_OFFLINE" | - "FILE_ATTRIBUTE_READONLY" | - "FILE_ATTRIBUTE_SYSTEM" | - "FILE_ATTRIBUTE_TEMPORARY" | - "HIDDEN" | - "HKCC" | - "HKCR" | - "HKCU" | - "HKDD" | - "HKLM" | - "HKPD" | - "HKU" | - "SHCTX" | - "IDABORT" | - "IDCANCEL" | - "IDIGNORE" | - "IDNO" | - "IDOK" | - "IDRETRY" | - "IDYES" | - "LEFT" | - "MB_DEFBUTTON1" | - "MB_DEFBUTTON2" | - "MB_DEFBUTTON3" | - "MB_DEFBUTTON4" | - "MB_ICONEXCLAMATION" | - "MB_ICONINFORMATION" | - "MB_ICONQUESTION" | - "MB_ICONSTOP" | - "MB_OK" | - "MB_OKCANCEL" | - "MB_RETRYCANCEL" | - "MB_RIGHT" | - "MB_SETFOREGROUND" | - "MB_TOPMOST" | - "MB_YESNO" | - "MB_YESNOCANCEL" | - "NORMAL" | - "OFFLINE" | - "READONLY" | - "SYSTEM" | - "TEMPORARY" { addToken(Token.VARIABLE); } - - {LineTerminator} { addNullToken(); return firstToken; } - - {BooleanLiteral} { addToken(Token.LITERAL_BOOLEAN); } - {Identifier} { addToken(Token.IDENTIFIER); } - {Variable} { addToken(Token.VARIABLE); } - - {WhiteSpace}+ { addToken(Token.WHITESPACE); } - - /* String/Character literals. */ - \" { start = zzMarkedPos-1; yybegin(STRING); } - \' { start = zzMarkedPos-1; yybegin(CHAR_LITERAL); } - \` { start = zzMarkedPos-1; yybegin(BACKTICKS); } - - /* Comment literals. */ - "/**/" { addToken(Token.COMMENT_MULTILINE); } - {MLCBegin} { start = zzMarkedPos-2; yybegin(MLC); } - {LineCommentBegin} { start = zzMarkedPos-1; yybegin(EOL_COMMENT); } - - /* Separators. */ - {Separator} { addToken(Token.SEPARATOR); } - {Separator2} { addToken(Token.IDENTIFIER); } - - /* Operators. */ - {Operator} { addToken(Token.OPERATOR); } - - /* Numbers */ - {IntegerLiteral} { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); } - {HexLiteral} { addToken(Token.LITERAL_NUMBER_HEXADECIMAL); } - {ErrorNumberFormat} { addToken(Token.ERROR_NUMBER_FORMAT); } - - /* Ended with a line not in a string or comment. */ - <> { addNullToken(); return firstToken; } - - /* Catch any other (unhandled) characters and flag them as identifiers. */ - . { addToken(Token.IDENTIFIER); } - -} - - - { - [^\n\\\$\"]+ {} - \\. { /* Skip all escaped chars. */ } - \\ { /* Line ending in '\' => continue to next line. */ - addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); - return firstToken; - } - {Variable} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addToken(temp,zzMarkedPos-1, Token.VARIABLE); start = zzMarkedPos; } - {VariableStart} {} - \" { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); } - \n | - <> { addToken(start,zzStartRead-1, Token.ERROR_STRING_DOUBLE); return firstToken; } -} - - - { - [^\n\\\$\']+ {} - \\. { /* Skip all escaped chars. */ } - \\ { /* Line ending in '\' => continue to next line. */ - addToken(start,zzStartRead, Token.LITERAL_CHAR); - return firstToken; - } - {Variable} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addToken(temp,zzMarkedPos-1, Token.VARIABLE); start = zzMarkedPos; } - {VariableStart} {} - \' { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_CHAR); } - \n | - <> { addToken(start,zzStartRead-1, Token.ERROR_CHAR); return firstToken; } -} - - - { - [^\n\\\$\`]+ {} - \\. { /* Skip all escaped chars. */ } - \\ { /* Line ending in '\' => continue to next line. */ - addToken(start,zzStartRead, Token.LITERAL_BACKQUOTE); - return firstToken; - } - {Variable} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.LITERAL_BACKQUOTE); addToken(temp,zzMarkedPos-1, Token.VARIABLE); start = zzMarkedPos; } - {VariableStart} {} - \` { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_BACKQUOTE); } - \n | - <> { addToken(start,zzStartRead-1, Token.LITERAL_BACKQUOTE); return firstToken; } -} - - - { - [^hwf\n\*]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_MULTILINE); start = zzMarkedPos; } - [hwf] {} - - \n { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; } - {MLCEnd} { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); } - \* {} - <> { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; } -} - - - { - [^hwf\n]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_EOL); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_EOL); start = zzMarkedPos; } - [hwf] {} - \n | - <> { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; } -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/NSISTokenMaker.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/NSISTokenMaker.java deleted file mode 100644 index 7160788..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/NSISTokenMaker.java +++ /dev/null @@ -1,2977 +0,0 @@ -/* The following code was generated by JFlex 1.4.1 on 10/7/12 12:43 AM */ - -/* - * 07/14/2014 - * - * NSISTokenMaker.java - Scanner for NSIS installer scripts. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * Scanner for NSIS installer scripts.

- * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated NSISTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 1.0 - * - */ - -public class NSISTokenMaker extends AbstractJFlexCTokenMaker { - - /** This character denotes the end of file */ - public static final int YYEOF = -1; - - /** lexical states */ - public static final int EOL_COMMENT = 5; - public static final int STRING = 1; - public static final int CHAR_LITERAL = 2; - public static final int YYINITIAL = 0; - public static final int MLC = 4; - public static final int BACKTICKS = 3; - - /** - * Translates characters to character classes - */ - private static final String ZZ_CMAP_PACKED = - "\11\0\1\16\1\15\1\0\1\16\1\75\22\0\1\16\1\42\1\10"+ - "\1\11\1\13\1\41\1\44\1\51\2\31\1\17\1\33\1\52\1\34"+ - "\1\32\1\14\1\4\1\72\1\73\1\74\1\74\1\6\1\6\1\6"+ - "\1\3\1\3\1\45\1\20\1\35\1\36\1\40\1\43\1\50\1\26"+ - "\1\5\1\60\1\62\1\24\1\25\1\63\1\53\1\55\1\1\1\66"+ - "\1\27\1\64\1\57\1\61\1\54\1\71\1\23\1\30\1\22\1\7"+ - "\1\70\1\56\1\21\1\67\1\65\1\31\1\12\1\31\1\37\1\2"+ - "\1\76\1\26\1\5\1\60\1\62\1\24\1\77\1\63\1\100\1\55"+ - "\1\1\1\66\1\27\1\64\1\57\1\61\1\54\1\71\1\23\1\30"+ - "\1\22\1\7\1\70\1\101\1\21\1\67\1\65\1\46\1\37\1\47"+ - "\1\43\uff81\0"; - - /** - * Translates characters to character classes - */ - private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); - - /** - * Translates DFA states to action switch labels. - */ - private static final int [] ZZ_ACTION = zzUnpackAction(); - - private static final String ZZ_ACTION_PACKED_0 = - "\6\0\2\1\2\2\2\1\1\3\1\4\2\1\1\5"+ - "\1\6\1\7\2\1\1\10\2\1\1\10\2\1\1\11"+ - "\7\7\1\12\3\1\1\10\11\1\1\13\1\14\1\15"+ - "\1\16\1\14\1\17\1\14\1\20\1\21\1\22\1\14"+ - "\1\23\1\14\1\24\1\25\1\14\1\26\10\14\1\27"+ - "\6\14\1\0\1\30\1\31\1\30\6\1\2\10\5\1"+ - "\1\0\10\1\1\32\17\1\2\10\23\1\1\0\1\7"+ - "\13\0\45\1\1\33\1\34\1\0\1\35\1\0\1\36"+ - "\4\14\4\0\4\14\5\0\1\31\17\1\1\0\11\1"+ - "\1\0\33\1\1\10\12\1\1\10\13\1\10\0\1\37"+ - "\2\0\1\37\3\0\7\1\1\40\26\1\1\10\16\1"+ - "\1\10\20\1\4\0\4\14\4\0\4\14\5\0\14\1"+ - "\1\0\6\1\1\41\1\1\1\42\11\1\1\40\4\1"+ - "\1\40\1\1\1\10\34\1\1\10\5\1\16\0\1\10"+ - "\30\1\1\40\43\1\2\0\1\34\2\0\1\35\3\14"+ - "\1\43\2\0\3\14\1\44\3\0\11\1\1\0\101\1"+ - "\14\0\61\1\1\10\11\1\4\0\1\14\2\0\1\14"+ - "\3\0\10\1\1\0\41\1\1\40\22\1\1\10\1\1"+ - "\7\0\1\37\3\1\1\40\25\1\1\40\32\1\4\0"+ - "\12\1\1\0\30\1\1\10\20\1\1\37\6\1\5\0"+ - "\55\1\4\0\7\1\1\0\11\1\1\37\1\1\1\40"+ - "\42\1\3\0\2\1\1\40\45\1\2\0\44\1\3\0"+ - "\60\1\1\40\13\1\1\37\4\1\3\0\2\1\1\40"+ - "\45\1\1\40\6\1\1\0\10\1\1\40\147\1"; - - private static int [] zzUnpackAction() { - int [] result = new int[1322]; - int offset = 0; - offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAction(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /** - * Translates a state to a row index in the transition table - */ - private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); - - private static final String ZZ_ROWMAP_PACKED_0 = - "\0\0\0\102\0\204\0\306\0\u0108\0\u014a\0\u018c\0\u01ce"+ - "\0\u0210\0\u0252\0\u0294\0\u02d6\0\u018c\0\u018c\0\u0318\0\u035a"+ - "\0\u018c\0\u039c\0\u03de\0\u0420\0\u0462\0\u04a4\0\u04e6\0\u0528"+ - "\0\u056a\0\u05ac\0\u05ee\0\u018c\0\u0630\0\u0672\0\u06b4\0\u06f6"+ - "\0\u0738\0\u018c\0\u077a\0\u018c\0\u07bc\0\u07fe\0\u0840\0\u0882"+ - "\0\u08c4\0\u0906\0\u0948\0\u098a\0\u09cc\0\u0a0e\0\u0a50\0\u0a92"+ - "\0\u0ad4\0\u018c\0\u0b16\0\u018c\0\u0b58\0\u0b9a\0\u018c\0\u0bdc"+ - "\0\u0b58\0\u018c\0\u018c\0\u0c1e\0\u0b58\0\u0c60\0\u018c\0\u018c"+ - "\0\u0ca2\0\u018c\0\u0ce4\0\u0d26\0\u0d68\0\u0daa\0\u0dec\0\u0e2e"+ - "\0\u0e70\0\u0eb2\0\u018c\0\u0ef4\0\u0f36\0\u0f78\0\u0fba\0\u0ffc"+ - "\0\u103e\0\u1080\0\u10c2\0\u1104\0\u1146\0\u1188\0\u11ca\0\u120c"+ - "\0\u124e\0\u1290\0\u12d2\0\u01ce\0\u018c\0\u1314\0\u1356\0\u1398"+ - "\0\u13da\0\u141c\0\u145e\0\u14a0\0\u14e2\0\u1524\0\u1566\0\u15a8"+ - "\0\u15ea\0\u162c\0\u166e\0\u16b0\0\u16f2\0\u1734\0\u1776\0\u17b8"+ - "\0\u17fa\0\u183c\0\u187e\0\u18c0\0\u1902\0\u1944\0\u1986\0\u19c8"+ - "\0\u1a0a\0\u1a4c\0\u1a8e\0\u1ad0\0\u1b12\0\u1b54\0\u1b96\0\u1bd8"+ - "\0\u1c1a\0\u1c5c\0\u1c9e\0\u1ce0\0\u1d22\0\u1d64\0\u1da6\0\u1de8"+ - "\0\u1e2a\0\u1e6c\0\u1eae\0\u1ef0\0\u1f32\0\u1f74\0\u1fb6\0\u1ff8"+ - "\0\u03de\0\u203a\0\u207c\0\u20be\0\u2100\0\u2142\0\u2184\0\u21c6"+ - "\0\u2208\0\u224a\0\u228c\0\u22ce\0\u2310\0\u2352\0\u2394\0\u23d6"+ - "\0\u2418\0\u245a\0\u249c\0\u24de\0\u2520\0\u2562\0\u25a4\0\u25e6"+ - "\0\u2628\0\u266a\0\u26ac\0\u26ee\0\u2730\0\u2772\0\u27b4\0\u27f6"+ - "\0\u2838\0\u287a\0\u28bc\0\u28fe\0\u2940\0\u2982\0\u29c4\0\u2a06"+ - "\0\u2a48\0\u2a8a\0\u2acc\0\u2b0e\0\u2b50\0\u2b92\0\u2bd4\0\u2c16"+ - "\0\u2c58\0\u2c9a\0\u018c\0\u2cdc\0\u2d1e\0\u2d60\0\u2da2\0\u018c"+ - "\0\u2de4\0\u2e26\0\u2e68\0\u2eaa\0\u2eec\0\u2f2e\0\u2f70\0\u2fb2"+ - "\0\u2ff4\0\u3036\0\u3078\0\u30ba\0\u30fc\0\u313e\0\u3180\0\u31c2"+ - "\0\u3204\0\u1146\0\u3246\0\u3288\0\u32ca\0\u330c\0\u334e\0\u3390"+ - "\0\u33d2\0\u3414\0\u3456\0\u1ad0\0\u3498\0\u34da\0\u351c\0\u355e"+ - "\0\u35a0\0\u35e2\0\u3624\0\u3666\0\u36a8\0\u36ea\0\u372c\0\u376e"+ - "\0\u37b0\0\u37f2\0\u3834\0\u3876\0\u38b8\0\u38fa\0\u393c\0\u397e"+ - "\0\u39c0\0\u3a02\0\u3a44\0\u3a86\0\u3ac8\0\u3b0a\0\u3b4c\0\u3b8e"+ - "\0\u3bd0\0\u3c12\0\u3c54\0\u3c96\0\u3cd8\0\u3d1a\0\u3d5c\0\u3d9e"+ - "\0\u3de0\0\u3e22\0\u3e64\0\u3ea6\0\u3ee8\0\u3f2a\0\u3f6c\0\u3fae"+ - "\0\u3ff0\0\u4032\0\u4074\0\u40b6\0\u40f8\0\u413a\0\u417c\0\u41be"+ - "\0\u4200\0\u4242\0\u4284\0\u42c6\0\u4308\0\u434a\0\u438c\0\u43ce"+ - "\0\u4410\0\u4452\0\u4494\0\u44d6\0\u4518\0\u455a\0\u459c\0\u45de"+ - "\0\u4620\0\u4662\0\u46a4\0\u46e6\0\u4728\0\u476a\0\u47ac\0\u47ee"+ - "\0\u4830\0\u018c\0\u4872\0\u48b4\0\u48f6\0\u4938\0\u497a\0\u49bc"+ - "\0\u49fe\0\u4a40\0\u4a82\0\u4ac4\0\u01ce\0\u4b06\0\u4b48\0\u4b8a"+ - "\0\u4bcc\0\u4c0e\0\u4c50\0\u4c92\0\u4cd4\0\u4d16\0\u4d58\0\u4d9a"+ - "\0\u4ddc\0\u4e1e\0\u4e60\0\u4ea2\0\u4ee4\0\u4f26\0\u4f68\0\u4faa"+ - "\0\u4fec\0\u502e\0\u5070\0\u50b2\0\u50f4\0\u5136\0\u5178\0\u51ba"+ - "\0\u51fc\0\u523e\0\u5280\0\u52c2\0\u5304\0\u5346\0\u5388\0\u53ca"+ - "\0\u540c\0\u544e\0\u5490\0\u54d2\0\u5514\0\u5556\0\u5598\0\u55da"+ - "\0\u561c\0\u565e\0\u56a0\0\u56e2\0\u5724\0\u5766\0\u57a8\0\u57ea"+ - "\0\u582c\0\u586e\0\u58b0\0\u58f2\0\u5934\0\u5976\0\u59b8\0\u59fa"+ - "\0\u5a3c\0\u5a7e\0\u5ac0\0\u5b02\0\u5b44\0\u5b86\0\u5bc8\0\u5c0a"+ - "\0\u5c4c\0\u5c8e\0\u5cd0\0\u5d12\0\u5d54\0\u5d96\0\u5dd8\0\u5e1a"+ - "\0\u5e5c\0\u5e9e\0\u5ee0\0\u5f22\0\u5f64\0\u5fa6\0\u5fe8\0\u602a"+ - "\0\u606c\0\u60ae\0\u60f0\0\u6132\0\u6174\0\u61b6\0\u61f8\0\u623a"+ - "\0\u5490\0\u627c\0\u62be\0\u018c\0\u6300\0\u01ce\0\u6342\0\u6384"+ - "\0\u63c6\0\u6408\0\u644a\0\u648c\0\u64ce\0\u6510\0\u6552\0\u6594"+ - "\0\u65d6\0\u6618\0\u665a\0\u669c\0\u66de\0\u6720\0\u6762\0\u67a4"+ - "\0\u67e6\0\u6828\0\u686a\0\u68ac\0\u68ee\0\u6930\0\u6972\0\u69b4"+ - "\0\u69f6\0\u6a38\0\u6a7a\0\u6abc\0\u6afe\0\u6b40\0\u6b82\0\u6bc4"+ - "\0\u6c06\0\u6c48\0\u6c8a\0\u6ccc\0\u6d0e\0\u6d50\0\u6d92\0\u6dd4"+ - "\0\u6e16\0\u6e58\0\u6e9a\0\u6edc\0\u6f1e\0\u6f60\0\u6fa2\0\u6fe4"+ - "\0\u7026\0\u7068\0\u70aa\0\u70ec\0\u712e\0\u7170\0\u71b2\0\u71f4"+ - "\0\u7236\0\u7278\0\u72ba\0\u72fc\0\u733e\0\u7380\0\u73c2\0\u2520"+ - "\0\u7404\0\u7446\0\u7488\0\u74ca\0\u750c\0\u754e\0\u7590\0\u75d2"+ - "\0\u7614\0\u7656\0\u7698\0\u76da\0\u771c\0\u775e\0\u77a0\0\u77e2"+ - "\0\u7824\0\u7866\0\u78a8\0\u78ea\0\u792c\0\u796e\0\u79b0\0\u79f2"+ - "\0\u7a34\0\u7a76\0\u7ab8\0\u7afa\0\u7b3c\0\u7b7e\0\u7bc0\0\u7c02"+ - "\0\u7c44\0\u7c86\0\u7cc8\0\u7d0a\0\u7d4c\0\u7d8e\0\u7dd0\0\u7e12"+ - "\0\u7e54\0\u7e96\0\u7ed8\0\u7f1a\0\u7f5c\0\u7f9e\0\u7fe0\0\u8022"+ - "\0\u8064\0\u80a6\0\u80e8\0\u812a\0\u816c\0\u81ae\0\u81f0\0\u8232"+ - "\0\u8274\0\u82b6\0\u82f8\0\u833a\0\u837c\0\u83be\0\u018c\0\u8400"+ - "\0\u8442\0\u018c\0\u8484\0\u84c6\0\u8508\0\u854a\0\u858c\0\u85ce"+ - "\0\u8610\0\u8652\0\u8694\0\u86d6\0\u8718\0\u875a\0\u879c\0\u87de"+ - "\0\u8820\0\u8862\0\u88a4\0\u88e6\0\u8928\0\u896a\0\u89ac\0\u89ee"+ - "\0\u8a30\0\u8a72\0\u8ab4\0\u8af6\0\u8b38\0\u8b7a\0\u8bbc\0\u8bfe"+ - "\0\u8c40\0\u8c82\0\u8cc4\0\u8d06\0\u8d48\0\u8d8a\0\u8dcc\0\u8e0e"+ - "\0\u8e50\0\u8e92\0\u8ed4\0\u8f16\0\u8f58\0\u8f9a\0\u8fdc\0\u901e"+ - "\0\u9060\0\u90a2\0\u90e4\0\u9126\0\u9168\0\u91aa\0\u91ec\0\u922e"+ - "\0\u9270\0\u92b2\0\u92f4\0\u9336\0\u9378\0\u93ba\0\u93fc\0\u943e"+ - "\0\u9480\0\u94c2\0\u9504\0\u9546\0\u9588\0\u95ca\0\u960c\0\u964e"+ - "\0\u9690\0\u96d2\0\u9714\0\u9756\0\u9798\0\u97da\0\u981c\0\u985e"+ - "\0\u98a0\0\u98e2\0\u9924\0\u9966\0\u99a8\0\u99ea\0\u9a2c\0\u9a6e"+ - "\0\u9ab0\0\u9af2\0\u9b34\0\u9b76\0\u9bb8\0\u9bfa\0\u9c3c\0\u9c7e"+ - "\0\u9cc0\0\u9d02\0\u9d44\0\u9d86\0\u9dc8\0\u9e0a\0\u9e4c\0\u9e8e"+ - "\0\u9ed0\0\u9f12\0\u9f54\0\u9f96\0\u9fd8\0\ua01a\0\ua05c\0\ua09e"+ - "\0\ua0e0\0\ua122\0\ua164\0\ua1a6\0\ua1e8\0\ua22a\0\ua26c\0\ua2ae"+ - "\0\ua2f0\0\ua332\0\ua374\0\ua3b6\0\ua3f8\0\ua43a\0\ua47c\0\ua4be"+ - "\0\ua500\0\ua542\0\ua584\0\ua5c6\0\ua608\0\ua64a\0\ua68c\0\ua6ce"+ - "\0\ua710\0\ua752\0\ua794\0\ua7d6\0\ua818\0\ua85a\0\ua89c\0\ua8de"+ - "\0\ua920\0\ua962\0\ua9a4\0\ua9e6\0\uaa28\0\uaa6a\0\uaaac\0\uaaee"+ - "\0\uab30\0\uab72\0\uabb4\0\uabf6\0\uac38\0\uac7a\0\uacbc\0\uacfe"+ - "\0\uad40\0\uad82\0\uadc4\0\uae06\0\uae48\0\uae8a\0\u854a\0\uaecc"+ - "\0\uaf0e\0\u86d6\0\uaf50\0\uaf92\0\uafd4\0\ub016\0\ub058\0\ub09a"+ - "\0\ub0dc\0\ub11e\0\ub160\0\ub1a2\0\ub1e4\0\ub226\0\ub268\0\ub2aa"+ - "\0\ub2ec\0\ub32e\0\ub370\0\ub3b2\0\ub3f4\0\ub436\0\ub478\0\ub4ba"+ - "\0\ub4fc\0\ub53e\0\ub580\0\ub5c2\0\ub604\0\ub646\0\ub688\0\ub6ca"+ - "\0\ub70c\0\ub74e\0\ub790\0\ub7d2\0\ub814\0\ub856\0\ub898\0\ub8da"+ - "\0\ub91c\0\ub95e\0\ub9a0\0\ub9e2\0\uba24\0\uba66\0\ubaa8\0\ubaea"+ - "\0\ubb2c\0\ubb6e\0\ubbb0\0\ubbf2\0\ubc34\0\ubc76\0\ubcb8\0\ubcfa"+ - "\0\ubd3c\0\ubd7e\0\ubdc0\0\ube02\0\ube44\0\ube86\0\ubec8\0\ubf0a"+ - "\0\ubf4c\0\ubf8e\0\ubfd0\0\uc012\0\uc054\0\uc096\0\uc0d8\0\uc11a"+ - "\0\uc15c\0\uc19e\0\uc1e0\0\uc222\0\uc264\0\uc2a6\0\uc2e8\0\uc32a"+ - "\0\uc36c\0\uc3ae\0\uc3f0\0\uc432\0\uc474\0\uc4b6\0\uc4f8\0\uc53a"+ - "\0\uc57c\0\uc5be\0\uc600\0\uc642\0\uc684\0\uc6c6\0\uc708\0\uc74a"+ - "\0\uc78c\0\uc7ce\0\uc810\0\uc852\0\uc894\0\uc8d6\0\uc918\0\uc95a"+ - "\0\uc99c\0\uc9de\0\uca20\0\uca62\0\ucaa4\0\ucae6\0\ucb28\0\ucb6a"+ - "\0\ucbac\0\ucbee\0\ucc30\0\ucc72\0\uccb4\0\uccf6\0\ucd38\0\ucd7a"+ - "\0\ucdbc\0\ucdfe\0\uce40\0\uce82\0\ucec4\0\ucf06\0\ucf48\0\ucf8a"+ - "\0\ucfcc\0\ud00e\0\ud050\0\ud092\0\ud0d4\0\ud116\0\ud158\0\ud19a"+ - "\0\ud1dc\0\ud21e\0\ud260\0\ud2a2\0\ud2e4\0\ud326\0\u50b2\0\ud368"+ - "\0\ud3aa\0\ud3ec\0\ud42e\0\ud470\0\ud4b2\0\ud4f4\0\ud536\0\ud578"+ - "\0\ud5ba\0\ud5fc\0\ud63e\0\ud680\0\ud6c2\0\ud704\0\ud746\0\ud788"+ - "\0\ud7ca\0\ud80c\0\ud84e\0\ud890\0\ud8d2\0\ud914\0\ud956\0\ud998"+ - "\0\ud9da\0\uda1c\0\uda5e\0\udaa0\0\udae2\0\udb24\0\udb66\0\udba8"+ - "\0\udbea\0\udc2c\0\udc6e\0\udcb0\0\udcf2\0\udd34\0\udd76\0\uddb8"+ - "\0\uddfa\0\ude3c\0\ude7e\0\udec0\0\udf02\0\udf44\0\udf86\0\udfc8"+ - "\0\ue00a\0\ue04c\0\ue08e\0\ue0d0\0\ubaa8\0\ue112\0\ue154\0\ue196"+ - "\0\ue1d8\0\ue21a\0\ue25c\0\ue29e\0\ue2e0\0\ue322\0\ue364\0\ue3a6"+ - "\0\ue3e8\0\ue42a\0\ue46c\0\ue4ae\0\ue4f0\0\ue532\0\ue574\0\ue5b6"+ - "\0\ue5f8\0\ue63a\0\ue67c\0\ue6be\0\ue700\0\ue742\0\ue784\0\ue7c6"+ - "\0\ue808\0\ue84a\0\ue88c\0\ue8ce\0\ue910\0\ue952\0\ue994\0\ue9d6"+ - "\0\uea18\0\uea5a\0\uea9c\0\ueade\0\ueb20\0\ueb62\0\ueba4\0\uebe6"+ - "\0\uec28\0\uec6a\0\uecac\0\uecee\0\ued30\0\ued72\0\uedb4\0\uedf6"+ - "\0\uee38\0\uee7a\0\ueebc\0\ueefe\0\uef40\0\uef82\0\uefc4\0\uf006"+ - "\0\uf048\0\uf08a\0\uf0cc\0\uf10e\0\uf150\0\uf192\0\uf1d4\0\uf216"+ - "\0\uf258\0\uf29a\0\uf2dc\0\uf31e\0\uf360\0\uf3a2\0\uf3e4\0\uf426"+ - "\0\uf468\0\uf4aa\0\uf4ec\0\uf52e\0\uf570\0\uf5b2\0\uf5f4\0\uf636"+ - "\0\uf678\0\uf6ba\0\uf6fc\0\uf73e\0\uf780\0\uf7c2\0\uf804\0\uf846"+ - "\0\uf888\0\uf8ca\0\uf90c\0\uf94e\0\uf990\0\uf9d2\0\ufa14\0\ufa56"+ - "\0\ufa98\0\ufada\0\ufb1c\0\ufb5e\0\ufba0\0\ufbe2\0\ufc24\0\ufc66"+ - "\0\ufca8\0\ufcea\0\ufd2c\0\ufd6e\0\ufdb0\0\ufdf2\0\ufe34\0\ufe76"+ - "\0\ufeb8\0\ufefa\0\uff3c\0\uff7e\0\uffc0\1\2\1\104\1\206"+ - "\1\310\1\u010a\1\u014c\1\u018e\1\u01d0\1\u0212\1\u0254\0\uaaee"+ - "\1\u0296\1\u02d8\1\u031a\1\u035c\1\u039e\1\u03e0\1\u0422\1\u0464"+ - "\1\u04a6\1\u04e8\1\u052a\1\u056c\1\u05ae\1\u05f0\1\u0632\1\u0674"+ - "\1\u06b6\1\u06f8\1\u073a\1\u077c\1\u07be\1\u0800\1\u0842\1\u0884"+ - "\1\u08c6\1\u0908\1\u094a\1\u098c\1\u09ce\1\u0a10\1\u0a52\1\u0a94"+ - "\1\u0ad6\1\u0b18\1\u0b5a\1\u0b9c\1\u0bde\1\u0c20\1\u0c62\1\u0ca4"+ - "\1\u0ce6\1\u0d28\1\u0d6a\1\u0dac\1\u0dee\1\u0e30\1\u0e72\1\u0eb4"+ - "\1\u0ef6\1\u0f38\1\u0f7a\1\u0fbc\1\u0ffe\1\u1040\1\u1082\1\u10c4"+ - "\1\u1106\1\u1148\1\u118a\1\u11cc\1\u120e\1\u1250\1\u1292\1\u12d4"+ - "\1\u1316\1\u1358\1\u139a\1\u13dc\1\u141e\1\u1460\1\u14a2\1\u14e4"+ - "\1\u1526\1\u1568\1\u15aa\1\u15ec\1\u162e\1\u1670\1\u16b2\1\u16f4"+ - "\1\u1736\1\u1778\1\u17ba\1\u17fc\1\u183e\1\u1880\1\u18c2\1\u1904"+ - "\1\u1946\1\u1988\1\u19ca\1\u1a0c\1\u1a4e\1\u1a90\1\u1ad2\1\u1b14"+ - "\1\u1b56\1\u1b98\1\u1bda\1\u1c1c\1\u1c5e\1\u1ca0\1\u1ce2\1\u1d24"+ - "\1\u1d66\1\u1da8\1\u1dea\1\u1e2c\1\u1e6e\1\u1eb0\1\u1ef2\1\u1f34"+ - "\1\u1f76\1\u1fb8\0\u01ce\1\u1ffa\1\u203c\1\u207e\1\u20c0\1\u2102"+ - "\1\u2144\1\u2186\1\u21c8\1\u220a\1\u224c\1\u228e\1\u22d0\1\u2312"+ - "\1\u2354\1\u2396\1\u23d8\1\u241a\1\u245c\1\u249e\1\u24e0\1\u2522"+ - "\1\u2564\1\u25a6\1\u25e8\1\u262a\1\u266c\1\u26ae\1\u26f0\1\u2732"+ - "\1\u2774\1\u27b6\1\u27f8\1\u283a\1\u287c\1\u28be\1\u2900\1\u2942"+ - "\1\u2984\1\u29c6\1\u2a08\1\u2a4a\1\u2a8c\1\u2ace\1\u2b10\1\u2b52"+ - "\1\u2b94\1\u2bd6\0\uf570\1\u2c18\1\u2c5a\1\u2c9c\1\u2cde\1\u2d20"+ - "\1\u2d62\1\u2da4\1\u2de6\1\u2e28\1\u2e6a\1\u2eac\1\u2eee\1\u2f30"+ - "\1\u2f72\1\u2fb4\1\u2ff6\1\u3038\1\u307a\1\u30bc\1\u30fe\1\u3140"+ - "\1\u3182\1\u31c4\1\u3206\1\u3248\1\u328a\1\u32cc\1\u330e\1\u3350"+ - "\1\u3392\1\u33d4\1\u3416\1\u3458\1\u349a\1\u34dc\1\u351e\1\u3560"+ - "\1\u35a2\1\u35e4\1\u3626\1\u3668\1\u36aa\1\u36ec\1\u372e\1\u3770"+ - "\1\u37b2\1\u37f4\1\u3836\1\u3878\1\u38ba\1\u38fc\1\u393e\1\u3980"+ - "\1\u39c2\1\u3a04\1\u3a46\1\u3a88\1\u3aca\1\u3b0c\1\u3b4e\1\u3b90"+ - "\1\u3bd2\1\u3c14\1\u3c56\1\u3c98\1\u3cda\1\u3d1c\1\u3d5e\1\u3da0"+ - "\1\u3de2\1\u3e24\1\u3e66\1\u3ea8\1\u3eea\1\u3f2c\1\u3f6e\1\u3fb0"+ - "\1\u3ff2\1\u4034\1\u4076\1\u40b8\1\u40fa\1\u413c\1\u417e\1\u41c0"+ - "\1\u4202\1\u4244\1\u4286\1\u42c8\1\u430a\1\u434c\1\u438e\1\u43d0"+ - "\1\u4412\1\u4454\1\u4496\1\u44d8\1\u451a\1\u455c\1\u459e\1\u45e0"+ - "\1\u4622\1\u4664\1\u46a6\1\u46e8\1\u472a\1\u476c\1\u47ae\1\u47f0"+ - "\1\u4832\1\u4874\1\u48b6\1\u48f8\1\u493a\1\u497c\1\u49be\1\u4a00"+ - "\1\u4a42\1\u4a84"; - - private static int [] zzUnpackRowMap() { - int [] result = new int[1322]; - int offset = 0; - offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackRowMap(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int high = packed.charAt(i++) << 16; - result[j++] = high | packed.charAt(i++); - } - return j; - } - - /** - * The transition table of the DFA - */ - private static final int [] ZZ_TRANS = zzUnpackTrans(); - - private static final String ZZ_TRANS_PACKED_0 = - "\1\7\2\10\1\11\1\12\1\13\1\11\1\14\1\15"+ - "\1\16\1\7\1\17\1\20\1\21\1\22\1\23\1\16"+ - "\1\24\1\25\1\26\1\27\1\30\1\31\1\32\1\33"+ - "\1\34\1\7\1\35\1\36\1\37\2\23\1\40\1\23"+ - "\1\41\1\42\1\43\1\42\2\34\1\7\1\44\1\7"+ - "\1\45\1\46\1\47\1\50\1\51\1\52\1\53\1\54"+ - "\1\55\1\56\1\57\2\10\1\60\1\61\3\11\1\7"+ - "\1\62\1\30\1\45\1\50\10\63\1\64\1\63\1\65"+ - "\1\66\1\63\1\67\64\63\12\70\1\71\1\66\1\70"+ - "\1\72\33\70\1\73\30\70\12\74\1\75\1\76\1\74"+ - "\1\77\60\74\1\100\3\74\15\101\1\102\1\101\1\103"+ - "\5\101\1\104\25\101\1\105\2\101\1\106\20\101\1\107"+ - "\1\110\1\111\15\112\1\113\7\112\1\114\25\112\1\115"+ - "\2\112\1\116\20\112\1\117\1\120\1\121\103\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\22\10\2\0"+ - "\3\10\3\123\2\11\1\123\1\11\1\123\1\0\3\123"+ - "\5\0\10\123\17\0\1\123\2\0\17\123\3\11\1\0"+ - "\10\123\1\124\1\123\1\124\1\123\1\0\3\123\5\0"+ - "\1\125\7\123\17\0\1\123\2\0\17\123\3\124\1\0"+ - "\4\123\1\0\7\10\2\0\1\122\2\10\4\0\2\10"+ - "\1\126\5\10\22\0\6\10\1\127\1\10\1\130\1\10"+ - "\1\131\7\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\7\10\1\132\22\0\4\10\1\133\15\10"+ - "\2\0\3\10\1\0\2\10\2\134\1\10\1\134\1\10"+ - "\2\0\1\122\1\134\1\10\1\135\3\0\1\10\1\136"+ - "\1\137\1\140\2\10\1\141\1\142\15\0\1\143\4\0"+ - "\1\144\1\145\1\146\1\147\1\10\1\150\1\151\1\152"+ - "\6\10\1\153\3\134\1\135\1\0\1\10\1\144\1\147"+ - "\1\0\7\10\2\0\1\122\2\10\2\0\1\154\1\0"+ - "\10\10\5\0\1\42\14\0\22\10\2\0\3\10\16\0"+ - "\1\22\121\0\1\42\44\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\1\10\1\155\20\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\2\10\1\156"+ - "\1\157\4\10\22\0\6\10\1\160\13\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\3\10\1\161"+ - "\1\10\1\162\2\10\22\0\2\10\1\163\3\10\1\134"+ - "\2\10\1\164\10\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\1\165\7\10\22\0\4\10\1\166"+ - "\15\10\2\0\3\10\1\0\2\10\1\134\2\10\1\134"+ - "\1\167\2\0\1\122\2\10\4\0\5\10\1\170\1\171"+ - "\1\10\22\0\2\10\1\172\3\10\1\173\10\10\1\174"+ - "\1\175\1\134\2\0\3\10\1\0\4\10\1\176\1\10"+ - "\1\177\2\0\1\122\2\10\4\0\2\10\1\200\3\10"+ - "\1\201\1\10\22\0\7\10\1\202\12\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\3\10\1\203"+ - "\1\10\1\204\2\10\22\0\2\10\1\205\3\10\1\206"+ - "\13\10\2\0\3\10\1\0\6\10\1\207\2\0\1\122"+ - "\2\10\4\0\1\10\1\210\1\10\1\211\2\10\1\212"+ - "\1\10\22\0\1\213\1\214\1\215\1\216\5\10\1\217"+ - "\2\10\1\220\5\10\2\0\1\10\1\213\1\216\33\0"+ - "\1\42\2\0\1\42\77\0\1\42\1\0\1\42\100\0"+ - "\1\221\1\42\101\0\1\42\1\0\1\222\50\0\1\223"+ - "\14\0\1\224\1\0\1\225\1\0\1\226\5\0\1\42"+ - "\15\0\1\227\1\230\1\231\1\0\1\232\1\0\1\233"+ - "\1\0\1\234\3\0\1\235\10\0\1\231\36\0\1\42"+ - "\5\0\1\42\36\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\2\10\1\236\10\10\1\237\6\10\2\0"+ - "\3\10\1\0\6\10\1\240\2\0\1\122\2\10\4\0"+ - "\5\10\1\241\1\242\1\10\22\0\6\10\1\243\13\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\4\10\1\244\2\10\1\245\22\0\4\10\1\246\1\247"+ - "\1\10\1\250\12\10\2\0\1\244\2\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\2\10\1\251\5\10\22\0"+ - "\2\10\1\252\17\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\3\10\1\253\1\10\1\254\2\10"+ - "\22\0\6\10\1\255\13\10\2\0\3\10\1\0\6\10"+ - "\1\256\2\0\1\122\2\10\4\0\2\10\1\257\1\260"+ - "\1\10\1\261\1\262\1\10\22\0\1\263\5\10\1\264"+ - "\13\10\2\0\1\10\1\263\1\10\1\0\6\10\1\265"+ - "\2\0\1\122\2\10\4\0\4\10\1\266\3\10\22\0"+ - "\4\10\1\134\15\10\2\0\1\266\2\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\3\10\1\267\4\10\22\0"+ - "\2\10\1\270\17\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\3\10\1\271\4\10\22\0\6\10"+ - "\1\272\13\10\2\0\3\10\1\0\4\10\1\273\2\10"+ - "\2\0\1\122\2\10\4\0\3\10\1\274\1\10\1\275"+ - "\2\10\22\0\2\10\1\276\17\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\6\10\1\277\1\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\5\10\1\300\2\10\22\0\2\10\1\301"+ - "\17\10\2\0\3\10\1\0\6\10\1\302\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\22\10\2\0\3\10\10\63"+ - "\1\0\1\63\2\0\1\63\1\0\64\63\15\303\1\0"+ - "\64\303\1\0\2\304\2\0\1\304\1\0\1\304\3\0"+ - "\2\304\4\0\10\304\15\0\1\305\4\0\17\304\5\0"+ - "\3\304\12\70\2\0\1\70\1\0\33\70\1\0\30\70"+ - "\12\74\2\0\1\74\1\0\60\74\1\0\3\74\1\0"+ - "\2\306\2\0\1\306\1\0\1\306\3\0\2\306\4\0"+ - "\10\306\15\0\1\307\4\0\17\306\5\0\3\306\15\101"+ - "\1\0\1\101\1\0\57\101\17\0\1\310\65\0\15\101"+ - "\1\0\1\101\1\0\2\101\1\311\32\101\1\312\21\101"+ - "\3\0\15\101\1\0\1\101\1\0\2\101\1\313\54\101"+ - "\3\0\15\101\1\0\1\101\1\0\36\101\1\314\20\101"+ - "\2\0\1\315\22\0\1\316\32\0\1\317\46\0\1\320"+ - "\135\0\1\315\22\0\1\315\15\112\1\0\61\112\3\0"+ - "\15\112\1\0\4\112\1\321\32\112\1\322\21\112\3\0"+ - "\15\112\1\0\4\112\1\323\54\112\3\0\15\112\1\0"+ - "\40\112\1\324\20\112\2\0\1\325\22\0\1\326\32\0"+ - "\1\327\46\0\1\330\135\0\1\325\22\0\1\325\7\0"+ - "\1\331\72\0\10\123\1\0\3\123\5\0\10\123\17\0"+ - "\1\123\2\0\22\123\1\0\10\123\1\124\1\123\1\124"+ - "\1\123\1\0\3\123\5\0\10\123\17\0\1\123\2\0"+ - "\17\123\3\124\1\0\7\123\4\332\1\123\1\0\3\123"+ - "\5\0\3\123\3\332\2\123\17\0\1\123\2\0\5\123"+ - "\1\332\1\123\1\332\7\123\3\332\1\0\1\123\1\332"+ - "\2\123\1\0\7\10\2\0\1\122\2\10\4\0\5\10"+ - "\1\333\2\10\22\0\2\10\1\334\17\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\1\10\1\335"+ - "\6\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\10\10\1\336\11\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\2\10\1\337\17\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\3\10\1\340\4\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\2\10\1\341\5\10\22\0\2\10\1\342"+ - "\17\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\3\10\1\343\4\10\22\0\22\10\2\0\3\10"+ - "\1\0\3\10\1\344\3\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\1\345\7\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\5\10"+ - "\1\346\2\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\1\10\1\347\6\10\22\0"+ - "\11\10\1\350\2\10\1\351\5\10\2\0\3\10\1\0"+ - "\2\352\2\0\1\352\1\0\1\352\3\0\2\352\4\0"+ - "\10\352\22\0\17\352\5\0\3\352\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\3\10\1\353\16\10"+ - "\2\0\2\10\1\353\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\2\10\1\354\3\10\1\355\1\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\4\10\1\356\15\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\2\10"+ - "\1\357\17\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\11\10\1\360\10\10\2\0"+ - "\3\10\1\0\6\10\1\361\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\3\10\1\362\4\10\22\0\22\10"+ - "\2\0\3\10\1\0\6\10\1\363\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\22\10\2\0\3\10\17\0\1\364"+ - "\63\0\7\10\2\0\1\122\2\10\4\0\7\10\1\365"+ - "\22\0\22\10\2\0\3\10\1\0\6\10\1\366\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\14\10\1\134\5\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\1\367\7\10\22\0\11\10\1\370\10\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\1\10\1\134\20\10\2\0\3\10\1\0\4\10\1\371"+ - "\2\10\2\0\1\122\2\10\4\0\1\10\1\372\3\10"+ - "\1\373\1\10\1\374\22\0\4\10\1\375\3\10\1\376"+ - "\5\10\1\377\3\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\7\10\1\u0100\12\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\10\10\1\u0101\11\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\7\10"+ - "\1\u0102\12\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\1\10\1\134\1\10\1\u0103\4\10\22\0"+ - "\1\10\1\u0104\3\10\1\u0105\14\10\2\0\3\10\1\0"+ - "\6\10\1\u0106\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\7\10\1\134\12\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\4\10\1\u0107\15\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\6\10\1\u0108\1\10\22\0\22\10\2\0\3\10\1\0"+ - "\6\10\1\u0109\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\6\10\1\u010a\1\10\22\0\4\10\1\u010b\15\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\2\10\1\u010c\5\10\22\0\22\10\2\0\3\10\1\0"+ - "\2\10\2\134\1\10\1\134\1\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\17\10\3\134\2\0\3\10\1\0"+ - "\3\10\1\134\3\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\17\10\3\134\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\6\10\1\u010d\13\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\1\10\1\u010e\6\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\5\10"+ - "\1\u010f\14\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\1\10\1\134\4\10\1\u0110\1\10\22\0"+ - "\3\10\1\u0111\16\10\2\0\2\10\1\u0111\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\7\10\1\u0112"+ - "\1\10\1\u0113\10\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\4\10\1\u0114\3\10\22\0\22\10"+ - "\2\0\1\u0114\2\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\4\10\1\u0115\15\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\7\10\1\367"+ - "\22\0\5\10\1\u0116\14\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\5\10\1\u0117\2\10\22\0"+ - "\10\10\1\u0118\11\10\2\0\3\10\1\0\4\10\1\u0119"+ - "\2\10\2\0\1\122\2\10\4\0\10\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\2\10\1\u011a\5\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\1\10\1\u011b\3\10"+ - "\1\u011c\2\10\22\0\4\10\1\u011d\1\u011e\14\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\3\10"+ - "\1\u011f\4\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\2\10\1\203"+ - "\2\10\1\u0120\1\u0121\13\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\5\10\1\u0122\2\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\6\10\1\u0123\1\10\22\0\22\10\2\0\3\10"+ - "\1\0\1\10\1\u0124\5\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\6\10\1\u0125\13\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\7\10\1\u0126\22\0\22\10\2\0\3\10\36\0\1\42"+ - "\1\0\1\23\120\0\1\u0127\45\0\1\u0128\3\0\1\u0129"+ - "\27\0\1\u012a\1\u012b\103\0\1\u012c\106\0\1\u012d\40\0"+ - "\1\u012e\100\0\1\u012f\31\0\1\u0130\17\0\1\u012f\30\0"+ - "\1\u0131\135\0\1\u0132\43\0\1\u0133\103\0\1\u0134\77\0"+ - "\1\u0135\56\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\7\10\1\u0136\1\u0137\11\10\2\0\3\10\1\0"+ - "\6\10\1\134\2\0\1\122\2\10\4\0\6\10\1\u0138"+ - "\1\10\22\0\1\10\1\u0139\3\10\1\u013a\1\10\1\u0139"+ - "\12\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\7\10\1\u0105\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\10\10"+ - "\1\u013b\11\10\2\0\3\10\1\0\6\10\1\u013c\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\1\10\1\u013d\20\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\2\10\1\u013e\1\u013f\1\u0140\1\u0141"+ - "\2\10\22\0\4\10\1\u0142\15\10\2\0\1\u0140\2\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\3\10\1\u0143\16\10\2\0\2\10\1\u0143\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\1\10\1\u0144\5\10\1\u0145"+ - "\22\0\2\10\1\u0146\17\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\6\10\1\u0147"+ - "\13\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\2\10\1\u0148\2\10\1\u0149\2\10\22\0\2\10"+ - "\1\u014a\1\10\1\u014b\1\u014c\1\u014d\5\10\1\u014e\5\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\2\10\1\u014f\17\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\4\10"+ - "\1\u0150\15\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\15\10\1\u0151\4\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\11\10\1\u013b\10\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\2\10\1\u0152\5\10\22\0"+ - "\1\10\1\u013d\2\10\1\u0153\15\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\2\10\1\u0154\4\10"+ - "\1\u0155\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\3\10\1\u0156\4\10\22\0\5\10"+ - "\1\u0157\14\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\4\10\1\u0158\15\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\6\10"+ - "\1\u0159\1\10\22\0\1\10\1\u015a\20\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\3\10\1\u015b"+ - "\4\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\3\10\1\u015c\1\10\1\u015d\2\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\6\10\1\u015e\1\10\22\0\1\10\1\u015f"+ - "\2\10\1\u0160\4\10\1\u0161\10\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\1\10\1\u0162\6\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\4\10\1\u0163\3\10\22\0\22\10\2\0"+ - "\1\u0163\2\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\1\10\1\u0164\4\10\1\u0165\1\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\2\10"+ - "\1\u0166\5\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\1\10\1\u0167\6\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\1\10\1\u0168\6\10\22\0\22\10\2\0\3\10"+ - "\1\0\1\10\1\u0169\5\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\7\10\1\u016a\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\4\10\1\u016b\15\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\7\10\1\u016c\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\2\10\1\u016d\17\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\2\10\1\u013d\5\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\5\10\1\u016e\1\u016f\1\10\22\0\1\10"+ - "\1\u0170\3\10\1\u0171\1\10\1\u0172\12\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\2\10\1\u0173\17\10\2\0\3\10\1\0\7\304\2\0"+ - "\1\u0174\2\304\4\0\10\304\22\0\22\304\2\0\3\304"+ - "\1\0\2\u0175\2\0\1\u0175\1\0\1\u0175\3\0\2\u0175"+ - "\4\0\10\u0175\22\0\17\u0175\5\0\3\u0175\1\0\7\306"+ - "\2\0\1\u0176\2\306\4\0\10\306\22\0\22\306\2\0"+ - "\3\306\1\0\2\u0177\2\0\1\u0177\1\0\1\u0177\3\0"+ - "\2\u0177\4\0\10\u0177\22\0\17\u0177\5\0\3\u0177\15\101"+ - "\1\0\1\101\1\0\34\101\1\u0178\22\101\3\0\15\101"+ - "\1\0\1\101\1\0\7\101\1\u0179\47\101\3\0\15\101"+ - "\1\0\1\101\1\0\2\101\1\u017a\54\101\3\0\15\101"+ - "\1\0\1\101\1\0\36\101\1\u017b\20\101\2\0\1\u017c"+ - "\56\0\1\u017c\22\0\1\u017c\54\0\1\u017d\54\0\1\u017e"+ - "\74\0\1\u017f\57\0\15\112\1\0\36\112\1\u0180\22\112"+ - "\3\0\15\112\1\0\11\112\1\u0181\47\112\3\0\15\112"+ - "\1\0\4\112\1\u0182\54\112\3\0\15\112\1\0\40\112"+ - "\1\u0183\20\112\2\0\1\u0184\56\0\1\u0184\22\0\1\u0184"+ - "\54\0\1\u0185\54\0\1\u0186\74\0\1\u0187\62\0\4\u0188"+ - "\15\0\3\u0188\31\0\1\u0188\1\0\1\u0188\7\0\3\u0188"+ - "\2\0\1\u0188\3\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\4\10\1\u0189\15\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\4\10"+ - "\1\u018a\15\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\1\10\1\u018b\6\10\22\0\1\134\21\10"+ - "\2\0\1\10\1\134\1\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\2\10\1\u018c\5\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\1\10\1\u018d\20\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\2\10\1\134\5\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\3\10\1\u018e\4\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\4\10\1\u018f\15\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\11\10\1\160\10\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\3\10\1\u0190\4\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\4\10"+ - "\1\u0191\15\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\5\10\1\u0192\2\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\7\10"+ - "\1\u0193\22\0\1\10\1\u0194\20\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\7\10\1\u0190\22\0"+ - "\22\10\2\0\3\10\1\0\7\352\2\0\1\u0195\2\352"+ - "\4\0\10\352\16\0\1\135\3\0\22\352\2\0\3\352"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\4\10\1\u0196\15\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\6\10\1\u0197\13\10"+ - "\2\0\3\10\1\0\6\10\1\u0198\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\7\10\1\361\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\4\10\1\u0190\15\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\7\10"+ - "\1\u0199\12\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\1\10\1\u0190\6\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\7\10"+ - "\1\u019a\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\2\10\1\u019b\17\10"+ - "\2\0\3\10\14\0\1\u019c\66\0\7\10\2\0\1\122"+ - "\2\10\4\0\1\10\1\u019d\6\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\3\10"+ - "\1\u019e\4\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\1\10\1\u019f\6\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\1\10\1\u01a0\20\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\6\10\1\u01a1\13\10\2\0\3\10\1\0\6\10\1\u01a2"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\7\10\1\u01a3\12\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\3\10\1\u01a4\4\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\5\10\1\254\2\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\7\10\1\u01a5\12\10\2\0\3\10\1\0\6\10\1\u01a6"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\2\10\1\u01a7\17\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\1\u0114\21\10"+ - "\2\0\1\10\1\u0114\1\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\2\10\1\300\17\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\5\10\1\u01a8\14\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\5\10\1\u01a9\2\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\1\u013d\21\10\2\0\1\10\1\u013d"+ - "\1\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\11\10\1\u01aa\10\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\5\10\1\u01ab"+ - "\14\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\7\10\1\366\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\7\10\1\u01ac\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\3\10\1\u01ad\4\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\7\10\1\u01ae\12\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\5\10\1\u0153\14\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\2\10\1\u0173\5\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\6\10"+ - "\1\u01af\13\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\1\u01b0\21\10\2\0\1\10"+ - "\1\u01b0\1\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\6\10\1\u01b1\13\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\5\10\1\u01b2\2\10"+ - "\22\0\22\10\2\0\3\10\1\0\4\10\1\u01b3\2\10"+ - "\2\0\1\122\2\10\4\0\7\10\1\u01b4\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\2\10\1\u01b5\17\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\1\10\1\134\6\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\10\10\1\u01b6\11\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\3\10"+ - "\1\u01b7\4\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\7\10\1\u01b8"+ - "\12\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\1\10\1\u01b9\5\10\1\u01ba\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\7\10"+ - "\1\u01bb\22\0\5\10\1\u01bc\14\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\6\10\1\u01bd\1\10"+ - "\22\0\5\10\1\u01be\14\10\2\0\3\10\1\0\4\10"+ - "\1\u01bf\2\10\2\0\1\122\2\10\4\0\2\10\1\u013e"+ - "\1\u013f\1\u01c0\1\u01c1\1\10\1\u01c2\22\0\1\10\1\u01c3"+ - "\1\10\1\u01c4\1\10\1\u01c5\1\u01c6\1\u01c7\12\10\2\0"+ - "\1\u01c0\1\10\1\u01c4\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\2\10\1\u01c8\5\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\7\10\1\u01c9\12\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\1\10\1\u01ca\6\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\3\10\1\243\4\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\1\10\1\u01cb\6\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\3\10\1\u01cc\16\10\2\0"+ - "\2\10\1\u01cc\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\5\10\1\u01cd\14\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\3\10\1\u01ce\4\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\7\10\1\u01cf\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\6\10\1\u01d0\13\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\1\10\1\u01d1\6\10\22\0\22\10"+ - "\2\0\3\10\62\0\1\u01d2\42\0\1\u01d3\106\0\1\u01d4"+ - "\133\0\1\u01d5\72\0\1\u01d6\24\0\1\u01d6\63\0\1\u01d7"+ - "\47\0\1\u01d8\131\0\1\u01d9\100\0\1\u0127\2\0\1\u01d2"+ - "\47\0\1\u01da\27\0\1\u01db\44\0\1\u01dc\103\0\1\u01dd"+ - "\51\0\1\u01dd\62\0\1\u01de\44\0\1\u01df\57\0\7\10"+ - "\2\0\1\122\2\10\4\0\3\10\1\u01e0\4\10\22\0"+ - "\7\10\1\u01e1\12\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\1\u01e2\21\10\2\0"+ - "\1\10\1\u01e2\1\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\11\10\1\134\10\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\7\10\1\134\12\10\2\0\3\10\1\0\6\10\1\134"+ - "\2\0\1\122\2\10\4\0\2\10\1\134\5\10\22\0"+ - "\5\10\1\134\14\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\3\10\1\u013d\4\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\10\10\1\u01e3\11\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\3\10\1\u01e4\4\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\2\10\1\u01e5\5\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\2\10\1\u01e6\17\10\2\0\3\10\1\0\4\10"+ - "\1\176\2\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\3\10\1\u01e7\4\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\2\10\1\u01e8\17\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\4\10\1\u01e9\3\10\22\0\5\10"+ - "\1\u01ea\1\243\13\10\2\0\1\u01e9\2\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\1\10\1\u01eb\6\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\1\10\1\u01ec\6\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\4\10\1\u013d\15\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\3\10\1\u01ed\4\10\22\0\22\10"+ - "\2\0\3\10\1\0\4\10\1\u01ee\2\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\10\10"+ - "\1\u01ef\11\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\6\10\1\134\13\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\5\10"+ - "\1\u01f0\2\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\13\10\1\134"+ - "\6\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\3\10\1\u01f1\4\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\1\10\1\u01f2"+ - "\6\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\7\10\1\u01f3\12\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\3\10\1\u01f4\4\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\11\10"+ - "\1\u01f5\10\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\3\10\1\134\4\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\2\10"+ - "\1\u01f6\5\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\1\10\1\u018b\6\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\5\10\1\u01f7\2\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\5\10\1\u01f8\14\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\1\10\1\132\6\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\6\10\1\u01f9\1\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\1\10\1\u01fa\6\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\5\10\1\u01fb\2\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\5\10\1\u01fc\14\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\4\10\1\u01fd"+ - "\15\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\6\10\1\u01fe\13\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\14\10\1\u01ff\5\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\1\10\1\u0200\6\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\1\10\1\u0201\20\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\4\10\1\u0202\3\10"+ - "\22\0\22\10\2\0\1\u0202\2\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\6\10\1\u0203\1\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\5\10\1\u0204\2\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\3\10\1\u0205\4\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\1\10\1\u01b9\1\10\1\u0206\3\10\1\u0207"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\1\10\1\u0208\2\10\1\u0209\1\10\1\u020a"+ - "\1\10\22\0\3\10\1\u020b\1\10\1\u020c\1\10\1\u020d"+ - "\12\10\2\0\1\u0209\1\10\1\u020b\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\6\10\1\u013d\13\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\1\10\1\u020e\1\u020f\2\10\1\u0210\1\10\1\u0211\22\0"+ - "\2\10\1\u0212\3\10\1\u0213\1\u0214\4\10\1\u0215\5\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\7\10\1\u0216\22\0\22\10\2\0\3\10\1\0\6\10"+ - "\1\u01f5\2\0\1\122\2\10\4\0\10\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\5\10\1\u0217\14\10\2\0\3\10\1\0"+ - "\4\10\1\134\2\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\7\10\1\u0218\12\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\3\10"+ - "\1\u0219\4\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\2\10\1\u021a\5\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\6\10\1\u021b\13\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\3\10\1\u021c"+ - "\4\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\1\10\1\u013d\6\10\22\0\22\10"+ - "\2\0\3\10\7\0\1\u021d\73\0\7\u0175\2\0\1\u021e"+ - "\2\u0175\4\0\10\u0175\16\0\1\u021f\3\0\22\u0175\2\0"+ - "\3\u0175\7\0\1\u0220\73\0\7\u0177\2\0\1\u0221\2\u0177"+ - "\4\0\10\u0177\16\0\1\u0222\3\0\22\u0177\2\0\3\u0177"+ - "\15\101\1\0\1\101\1\0\25\101\1\u0223\31\101\3\0"+ - "\15\101\1\0\1\101\1\0\4\101\1\u0178\52\101\3\0"+ - "\15\101\1\0\1\101\1\0\34\101\1\u0224\22\101\3\0"+ - "\15\101\1\0\1\101\1\0\12\101\1\u0225\44\101\35\0"+ - "\1\u0226\114\0\1\u0227\60\0\1\u017d\131\0\1\u0228\25\0"+ - "\15\112\1\0\27\112\1\u0229\31\112\3\0\15\112\1\0"+ - "\6\112\1\u0180\52\112\3\0\15\112\1\0\36\112\1\u022a"+ - "\22\112\3\0\15\112\1\0\14\112\1\u022b\44\112\35\0"+ - "\1\u022c\114\0\1\u022d\60\0\1\u0185\131\0\1\u022e\30\0"+ - "\4\u022f\15\0\3\u022f\31\0\1\u022f\1\0\1\u022f\7\0"+ - "\3\u022f\2\0\1\u022f\3\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\7\10\1\u0230\12\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\10\10\1\u0231\11\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\6\10\1\u0138\13\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\5\10\1\u0232\2\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\20\10"+ - "\1\134\1\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\10\10\1\376\11\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\7\10"+ - "\1\u0233\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\7\10\1\u0234\12\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\10\10\1\u0235\11\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\2\10\1\u0236\5\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\1\10\1\u0237\6\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\2\10"+ - "\1\u0238\5\10\22\0\22\10\2\0\3\10\7\0\1\u0239"+ - "\73\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\7\10\1\u023a\12\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\10\10\1\u023b\11\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\10\10\1\u023c\11\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\13\10"+ - "\1\u023d\6\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\5\10\1\u023e\14\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\14\10\1\u023f\5\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\6\10\1\u0240"+ - "\13\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\6\10\1\u0241\13\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\6\10\1\u0173\13\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\2\10\1\u0147\5\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\2\10\1\u0242\1\u0243\4\10\22\0\2\10\1\u0244\3\10"+ - "\1\u0240\13\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\2\10\1\u0245\5\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\6\10"+ - "\1\u0246\1\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\3\10\1\u0247\4\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\6\10\1\u0248\13\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\7\10\1\u0249"+ - "\22\0\3\10\1\u024a\16\10\2\0\2\10\1\u024a\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\4\10"+ - "\1\u024b\15\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\2\10\1\u024c\5\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\1\10"+ - "\1\u024d\6\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\1\u024e\21\10"+ - "\2\0\1\10\1\u024e\1\10\1\0\1\10\1\u024f\5\10"+ - "\2\0\1\122\2\10\4\0\2\10\1\u0250\1\u0251\3\10"+ - "\1\u0252\22\0\3\10\1\u0253\1\10\1\u0254\1\u0255\13\10"+ - "\2\0\2\10\1\u0253\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\4\10\1\u0256\3\10\22\0\3\10\1\u0143\1\u01b9"+ - "\1\u0254\14\10\2\0\1\u0256\1\10\1\u0143\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\5\10\1\u0257"+ - "\14\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\2\10\1\u0258\17\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\3\10\1\u0259\16\10\2\0\2\10\1\u0259\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\14\10\1\u025a"+ - "\5\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\2\10\1\u025b\5\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\2\10\1\u025c\17\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\4\10\1\134\15\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\7\10\1\u025d\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\4\10\1\u025e"+ - "\15\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\6\10\1\u025f\1\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\3\10\1\u0260"+ - "\4\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\3\10\1\u0173\4\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\3\10\1\u0107\4\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\5\10\1\u0261\2\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\3\10\1\u0147\4\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\1\10\1\u0262\7\10\1\u0263\10\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\2\10\1\u025b"+ - "\5\10\22\0\13\10\1\u0264\6\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\2\10"+ - "\1\u0265\3\10\1\u0266\13\10\2\0\3\10\1\0\6\10"+ - "\1\u0267\2\0\1\122\2\10\4\0\10\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\1\10\1\u0268\6\10\22\0\1\u0269\21\10\2\0\1\10"+ - "\1\u0269\1\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\6\10\1\u026a\1\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\2\10"+ - "\1\u026b\17\10\2\0\3\10\1\0\6\10\1\u026c\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\6\10\1\u026d\13\10"+ - "\2\0\3\10\1\0\6\10\1\u026e\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\15\10\1\u026f\4\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\3\10\1\u0270"+ - "\1\10\1\u0271\2\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\5\10"+ - "\1\u0272\14\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\11\10\1\u0273\10\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\2\10\1\u0274\17\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\1\134\7\10\22\0\22\10"+ - "\2\0\3\10\1\0\6\10\1\u0275\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\2\10\1\u0276\1\u0143\16\10\2\0"+ - "\2\10\1\u0143\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\3\10\1\u0277\4\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\4\10"+ - "\1\u0278\15\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\1\u0279\21\10\2\0\1\10"+ - "\1\u0279\1\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\1\10\1\u027a\6\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\3\10\1\u0138\4\10"+ - "\22\0\22\10\2\0\3\10\24\0\1\u027b\136\0\1\u027c"+ - "\44\0\1\u0132\132\0\1\u027b\105\0\1\u0132\74\0\1\u027d"+ - "\1\u027e\46\0\1\u027f\145\0\1\u0280\37\0\1\u0281\104\0"+ - "\1\u0282\131\0\1\u0283\77\0\1\u0284\47\0\1\u0285\63\0"+ - "\1\u0286\75\0\7\10\2\0\1\122\2\10\4\0\3\10"+ - "\1\u01b5\4\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\3\10\1\u0287\4\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\2\10\1\u0288\17\10\2\0\3\10"+ - "\1\0\4\10\1\u0289\2\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\2\10\1\u028a\5\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\6\10\1\u028b\1\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\3\10"+ - "\1\132\16\10\2\0\2\10\1\132\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\4\10\1\u028c\15\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\11\10\1\u0173\10\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\11\10"+ - "\1\u028d\10\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\1\10\1\u028e\2\10\1\u028f\1\u0290\2\10"+ - "\22\0\1\10\1\u0291\20\10\2\0\1\u028f\2\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\1\10"+ - "\1\u0292\20\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\1\10\1\u0293\6\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\6\10\1\u0294\13\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\4\10\1\u0295"+ - "\15\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\4\10\1\u0296\15\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\7\10\1\134"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\3\10\1\u0297\4\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\6\10\1\u0298\13\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\2\10\1\u0299\5\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\5\10\1\u029a\2\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\3\10\1\u029b"+ - "\4\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\1\10\1\u029c\6\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\1\u029d\21\10\2\0\1\10\1\u029d\1\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\2\10\1\u029e\17\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\2\10\1\247\17\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\2\10\1\u029f\5\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\13\10"+ - "\1\u02a0\6\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\10\10\1\u02a1\11\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\2\10"+ - "\1\u02a2\5\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\4\10\1\u02a3\3\10\22\0"+ - "\22\10\2\0\1\u02a3\2\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\2\10\1\u02a4\5\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\6\10"+ - "\1\u02a5\1\10\22\0\6\10\1\u02a6\13\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\2\10\1\u023f\17\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\2\10\1\u02a7\17\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\2\10\1\u02a8\17\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\1\10\1\u02a9\6\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\5\10\1\u02aa\14\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\1\u02ab\21\10\2\0\1\10\1\u02ab\1\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\3\10\1\u02ac\4\10"+ - "\22\0\22\10\2\0\3\10\1\0\6\10\1\u02ad\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\2\10\1\u02ae\17\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\5\10\1\u02af\2\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\2\10"+ - "\1\u02b0\17\10\2\0\3\10\1\0\6\10\1\u02b1\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\6\10\1\u02b2"+ - "\1\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\6\10\1\u02b3\13\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\3\10\1\u02b4\4\10\22\0\2\10\1\163\17\10\2\0"+ - "\3\10\1\0\4\10\1\u02b5\2\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\3\10\1\u02b6\4\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\5\10\1\u02b7\14\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\13\10\1\u02b8\6\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\3\10\1\u02b9\4\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\3\10\1\u02ba\4\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\5\10\1\u02bb\2\10"+ - "\22\0\22\10\2\0\3\10\1\0\4\10\1\u02bc\2\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\7\10\1\u02bd\12\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\10\10\1\u02be"+ - "\11\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\6\10\1\u02bf\13\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\11\10\1\u02c0\10\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\7\10\1\u02c1\22\0\22\10\2\0"+ - "\3\10\3\0\4\u02c2\15\0\3\u02c2\31\0\1\u02c2\1\0"+ - "\1\u02c2\7\0\3\u02c2\2\0\1\u02c2\11\0\1\u02c3\75\0"+ - "\4\u02c4\15\0\3\u02c4\31\0\1\u02c4\1\0\1\u02c4\7\0"+ - "\3\u02c4\2\0\1\u02c4\11\0\1\u02c5\72\0\14\101\1\u02c6"+ - "\1\0\1\101\1\0\57\101\3\0\15\101\1\0\1\101"+ - "\1\0\10\101\1\u0178\14\101\1\u0223\31\101\3\0\1\101"+ - "\7\u0225\1\101\1\u0225\1\101\2\u0225\1\0\1\101\1\u02c7"+ - "\15\u0225\1\101\1\u0225\2\101\5\u0225\2\101\25\u0225\2\101"+ - "\3\u0226\1\0\1\u0226\1\u02c7\5\u0226\1\0\1\u02c7\1\0"+ - "\2\u0226\2\0\2\u02c7\10\u0226\4\u02c7\1\0\1\u02c7\2\0"+ - "\5\u02c7\2\0\3\u02c7\22\u0226\2\0\3\u0226\14\0\1\u02c8"+ - "\115\0\1\u017d\14\0\1\u0227\34\0\14\112\1\u02c9\1\0"+ - "\61\112\3\0\15\112\1\0\12\112\1\u0180\14\112\1\u0229"+ - "\31\112\3\0\1\112\7\u022b\1\112\1\u022b\1\112\2\u022b"+ - "\1\0\1\112\16\u022b\1\112\1\u022b\2\112\5\u022b\2\112"+ - "\25\u022b\2\112\3\u022c\1\0\1\u022c\1\u02ca\5\u022c\1\0"+ - "\1\u02ca\1\0\2\u022c\2\0\2\u02ca\10\u022c\4\u02ca\1\0"+ - "\1\u02ca\2\0\5\u02ca\2\0\3\u02ca\22\u022c\2\0\3\u022c"+ - "\14\0\1\u02cb\115\0\1\u0185\14\0\1\u022d\37\0\4\u02cc"+ - "\15\0\3\u02cc\31\0\1\u02cc\1\0\1\u02cc\7\0\3\u02cc"+ - "\2\0\1\u02cc\3\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\2\10\1\u02cd\17\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\1\10\1\u02ce\6\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\7\10\1\u02cf\12\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\1\10"+ - "\1\u02d0\6\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\2\10\1\340"+ - "\17\10\2\0\3\10\1\0\6\10\1\u02d1\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\1\10\1\u02d2\6\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\5\10\1\u02d3\2\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\6\10\1\u02d4\13\10\2\0\3\10\3\0\4\u02d5"+ - "\15\0\3\u02d5\31\0\1\u02d5\1\0\1\u02d5\7\0\3\u02d5"+ - "\2\0\1\u02d5\3\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\1\10\1\u02d6\20\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\2\10\1\u02d7\5\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\2\10\1\u02d8\17\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\1\10"+ - "\1\u02d9\6\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\13\10\1\u02da"+ - "\6\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\6\10\1\u013b\1\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\4\10\1\u02db\15\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\2\10\1\u02dc\5\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\3\10\1\u02dd\4\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\4\10"+ - "\1\u02de\15\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\4\10\1\u02df\15\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\15\10\1\u02e0\4\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\6\10\1\u013d\1\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\7\10\1\u02e1\22\0\22\10\2\0\3\10\1\0"+ - "\4\10\1\u02e2\2\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\1\u02e3\21\10\2\0\1\10"+ - "\1\u02e3\1\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\5\10\1\302\2\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\7\10"+ - "\1\u02e4\12\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\3\10\1\u02e5\4\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\2\10\1\u02e6\17\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\2\10\1\u02e7"+ - "\17\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\5\10\1\u02e8\2\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\3\10\1\u02e9"+ - "\4\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\2\10\1\u02ea\5\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\3\10\1\u02eb\4\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\2\10\1\u02ec\5\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\6\10\1\u02ed\1\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\1\10\1\u01bd\20\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\2\10\1\u02ee"+ - "\17\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\6\10\1\u02ef\1\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\15\10\1\u0153\4\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\2\10\1\u02f0\4\10\1\u02f1\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\7\10\1\u02f2\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\5\10\1\u02f3\2\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\12\10\1\u013b\7\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\1\10"+ - "\1\u02f4\6\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\7\10\1\u02f5\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\5\10\1\u02f6\2\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\1\u0173\7\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\1\10\1\u015a\20\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\14\10\1\u013d\5\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\1\10\1\u02f7\20\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\5\10\1\u02f8\14\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\6\10\1\u02f9\1\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\4\10\1\u0173\15\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\1\10"+ - "\1\u02fa\6\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\5\10\1\u02fb\2\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\3\10\1\u02fc\4\10\22\0\22\10\2\0\3\10"+ - "\1\0\6\10\1\u02fd\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\4\10\1\u02fe\15\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\2\10"+ - "\1\u02ff\5\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\11\10\1\u0300"+ - "\10\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\1\10\1\u0301\6\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\3\10\1\u0302"+ - "\4\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\1\10\1\u0303\6\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\1\10\1\u0304\6\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\1\u0301"+ - "\21\10\2\0\1\10\1\u0301\1\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\3\10\1\u0305\4\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\6\10\1\u0306\13\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\4\10"+ - "\1\u0307\15\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\4\10\1\u0308\15\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\1\10"+ - "\1\u0309\6\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\1\10\1\u030a\6\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\6\10\1\u030b\13\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\1\134\21\10\2\0\1\10\1\134\1\10\25\0\1\u0132"+ - "\51\0\1\u0132\25\0\1\u0132\105\0\1\u030c\131\0\1\u030d"+ - "\46\0\1\u030e\130\0\1\u030f\24\0\1\u030f\24\0\1\u0310"+ - "\65\0\1\u0311\147\0\1\u0312\103\0\1\u01d4\103\0\1\u0313"+ - "\101\0\1\u0129\21\0\7\10\2\0\1\122\2\10\4\0"+ - "\7\10\1\u0114\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\4\10\1\164"+ - "\15\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\6\10\1\u0314\13\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\6\10\1\u0315\13\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\3\10\1\u0316\4\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\7\10\1\u02ab\12\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\1\10"+ - "\1\u0317\20\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\14\10\1\u0318\5\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\2\10\1\u0319\17\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\6\10\1\u031a\1\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\2\10\1\u031b\5\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\6\10\1\u031c"+ - "\1\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\2\10\1\u031d\5\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\2\10\1\u0114\5\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\6\10"+ - "\1\u031e\13\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\5\10\1\u031f\14\10\2\0"+ - "\3\10\1\0\6\10\1\u0320\2\0\1\122\2\10\4\0"+ - "\2\10\1\u0321\5\10\22\0\2\10\1\u0244\17\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\3\10\1\u0322\16\10\2\0\2\10\1\u0322\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\7\10\1\u0323\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\6\10\1\134\1\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\4\10\1\u0114\15\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\3\10\1\u0324\4\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\3\10\1\u0325\4\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\4\10"+ - "\1\u0326\15\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\3\10\1\u013f\4\10\22\0\22\10\2\0"+ - "\3\10\1\0\4\10\1\u0327\2\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\3\10\1\u0328\4\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\3\10\1\u0139\4\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\2\10\1\u0329\17\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\6\10\1\u029a\13\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\3\10\1\u032a\4\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\4\10"+ - "\1\u032b\15\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\4\10\1\u0153\15\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\6\10"+ - "\1\u032c\1\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\3\10\1\u032d\4\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\1\10\1\u032e\6\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\6\10\1\u032f\13\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\11\10\1\u0330\10\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\6\10\1\u0331\1\10\22\0\4\10\1\u0332\15\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\6\10"+ - "\1\u0333\1\10\22\0\22\10\2\0\3\10\1\0\4\10"+ - "\1\u0334\2\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\4\10\1\u0335\15\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\2\10\1\u0336"+ - "\5\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\6\10\1\u0337\1\10\22\0\10\10"+ - "\1\u0338\11\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\1\10\1\u0339\20\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\1\10"+ - "\1\u033a\6\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\6\10\1\u033b"+ - "\13\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\1\10\1\u033c\6\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\6\10\1\u033d\13\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\5\10\1\u014c\14\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\4\10\1\u033e\3\10\22\0\22\10\2\0\1\u033e\2\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\7\10\1\u033f"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\10\10\1\u0340\11\10\2\0"+ - "\3\10\1\0\6\10\1\u0341\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\15\10\1\u0342\4\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\5\10\1\u0343\2\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\7\10"+ - "\1\u0344\12\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\1\10\1\u0345\7\10\1\u0346"+ - "\10\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\5\10\1\u0347\14\10\2\0\3\10"+ - "\3\0\4\u0348\15\0\3\u0348\31\0\1\u0348\1\0\1\u0348"+ - "\7\0\3\u0348\2\0\1\u0348\5\0\4\u0349\15\0\3\u0349"+ - "\31\0\1\u0349\1\0\1\u0349\7\0\3\u0349\2\0\1\u0349"+ - "\5\0\4\u034a\15\0\3\u034a\31\0\1\u034a\1\0\1\u034a"+ - "\7\0\3\u034a\2\0\1\u034a\5\0\4\u034b\15\0\3\u034b"+ - "\31\0\1\u034b\1\0\1\u034b\7\0\3\u034b\2\0\1\u034b"+ - "\2\0\14\101\1\u0225\1\0\1\101\1\0\57\101\17\0"+ - "\1\u0226\65\0\14\112\1\u022b\1\0\61\112\17\0\1\u022c"+ - "\70\0\4\10\15\0\3\10\31\0\1\10\1\0\1\10"+ - "\7\0\3\10\2\0\1\10\3\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\4\10\1\u034c\15\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\6\10\1\u034d\13\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\2\10\1\u034e"+ - "\17\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\5\10\1\u034f\2\10\22\0\1\10\1\u0350\3\10"+ - "\1\u0351\14\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\5\10\1\u0352\2\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\11\10\1\u0353\10\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\2\10\1\u0354\5\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\10\10\1\u0355\11\10\2\0\3\10"+ - "\3\0\4\u0356\15\0\3\u0356\31\0\1\u0356\1\0\1\u0356"+ - "\7\0\3\u0356\2\0\1\u0356\3\0\7\10\2\0\1\122"+ - "\2\10\4\0\5\10\1\u0357\2\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\5\10"+ - "\1\u0358\2\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\4\10\1\351"+ - "\15\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\6\10\1\160\13\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\6\10\1\u0359"+ - "\1\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\6\10\1\u031d\1\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\5\10\1\u0293\2\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\10\10"+ - "\1\u035a\11\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\15\10\1\u035b\4\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\2\10\1\u035b\17\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\3\10\1\u0162\4\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\1\10\1\u035c\6\10\22\0\22\10\2\0\3\10"+ - "\1\0\6\10\1\u035d\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\3\10\1\u01a5\4\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\3\10"+ - "\1\u035e\4\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\10\10\1\u035f"+ - "\11\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\6\10\1\u0360\13\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\4\10\1\u0361\15\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\1\10\1\u0362\6\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\5\10\1\u0363\2\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\2\10\1\u0364\5\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\3\10\1\u0365\4\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\2\10\1\u0366\17\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\6\10\1\u0367"+ - "\13\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\2\10\1\u0368\5\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\6\10\1\u0369\13\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\6\10\1\u036a\13\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\13\10\1\u036b\6\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\6\10"+ - "\1\u036c\13\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\4\10\1\u036d\15\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\2\10"+ - "\1\u036e\5\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\3\10\1\u036f\4\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\4\10\1\u0370\15\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\7\10\1\u013d"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\6\10\1\u0371\13\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\3\10"+ - "\1\u0372\4\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\6\10\1\u0373"+ - "\13\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\1\10\1\u0374\6\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\6\10\1\u0375"+ - "\1\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\10\10\1\u0376\11\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\7\10\1\u0377\12\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\2\10"+ - "\1\u0378\17\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\1\10\1\u0379\20\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\1\10\1\u037a\20\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\2\10\1\u037b\5\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\5\10\1\u037c\2\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\3\10\1\u037d"+ - "\1\10\1\u037e\2\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\7\10\1\u037f\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\4\10\1\u0380\15\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\2\10\1\u0276\17\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\7\10\1\u0381\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\3\10"+ - "\1\u0382\4\10\22\0\22\10\2\0\3\10\1\0\6\10"+ - "\1\u0383\2\0\1\122\2\10\4\0\6\10\1\u0384\1\10"+ - "\22\0\2\10\1\u0385\17\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\3\10\1\u0386"+ - "\16\10\2\0\2\10\1\u0386\7\0\1\u0387\152\0\1\u0388"+ - "\105\0\1\u0132\77\0\1\u027c\41\0\1\u0389\141\0\1\u01d4"+ - "\76\0\1\u038a\46\0\1\u038b\56\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\6\10\1\u038c\13\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\2\10"+ - "\1\u038d\5\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\3\10\1\u038e\4\10\22\0"+ - "\22\10\2\0\3\10\1\0\6\10\1\u013d\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\1\10"+ - "\1\u038f\20\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\6\10\1\u014e\1\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\6\10"+ - "\1\u0390\1\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\6\10\1\u0391"+ - "\13\10\2\0\3\10\1\0\6\10\1\u0392\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\14\10"+ - "\1\134\5\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\2\10\1\u0153\5\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\3\10"+ - "\1\u029a\4\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\4\10\1\u0393"+ - "\15\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\3\10\1\u0394\4\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\2\10\1\u0395\17\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\1\u0396\21\10\2\0"+ - "\1\10\1\u0396\1\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\4\10\1\u0397\2\10\1\u0398\22\0\7\10\1\u0399"+ - "\12\10\2\0\1\u0397\2\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\5\10\1\u0365\14\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\7\10"+ - "\1\u039a\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\2\10\1\u039b\3\10"+ - "\1\u01cb\13\10\2\0\3\10\1\0\6\10\1\u0361\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\6\10\1\u039c"+ - "\1\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\1\10\1\u039d\6\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\3\10\1\u039e\4\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\7\10\1\u0217\22\0"+ - "\1\10\1\u039f\20\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\2\10\1\u024c\5\10\22\0\2\10"+ - "\1\u03a0\17\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\6\10\1\u0293\13\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\3\10\1\u013d\16\10\2\0\2\10\1\u013d\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\1\10"+ - "\1\u03a1\20\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\6\10\1\u03a2\1\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\5\10\1\u03a3\14\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\3\10\1\u03a4\4\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\3\10\1\u03a5\4\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\7\10\1\u03a6\12\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\2\10\1\u03a7\5\10\22\0\2\10"+ - "\1\u0378\17\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\15\10\1\u03a8\4\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\2\10\1\u03a9\17\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\11\10\1\u03aa"+ - "\10\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\2\10\1\u03ab\5\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\2\10\1\u03ac"+ - "\5\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\4\10\1\u03ad\3\10\22\0\22\10"+ - "\2\0\1\u03ad\2\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\4\10\1\u03ae\15\10\2\0\3\10"+ - "\1\0\4\10\1\u03af\2\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\4\10\1\u03b0\15\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\3\10\1\u03b1\4\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\1\10\1\u03b2\6\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\3\10\1\u03b3\4\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\6\10"+ - "\1\u03b4\1\10\22\0\22\10\2\0\3\10\1\0\6\10"+ - "\1\u03b5\2\0\1\122\2\10\4\0\10\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\5\10\1\u03b6\2\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\3\10\1\u03b7\4\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\2\10\1\u03b8\5\10\22\0\22\10\2\0"+ - "\3\10\3\0\4\u03b9\15\0\3\u03b9\31\0\1\u03b9\1\0"+ - "\1\u03b9\7\0\3\u03b9\2\0\1\u03b9\5\0\4\u03ba\15\0"+ - "\3\u03ba\31\0\1\u03ba\1\0\1\u03ba\7\0\3\u03ba\2\0"+ - "\1\u03ba\5\0\4\u03bb\15\0\3\u03bb\31\0\1\u03bb\1\0"+ - "\1\u03bb\7\0\3\u03bb\2\0\1\u03bb\5\0\4\u03bc\15\0"+ - "\3\u03bc\31\0\1\u03bc\1\0\1\u03bc\7\0\3\u03bc\2\0"+ - "\1\u03bc\3\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\10\10\1\u03bd\11\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\4\10\1\u03be\3\10\22\0"+ - "\22\10\2\0\1\u03be\2\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\3\10\1\u0266\4\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\6\10"+ - "\1\u03bf\1\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\5\10\1\241\2\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\6\10\1\u03c0\13\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\10\10\1\u0153\11\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\3\10\1\u03c1\4\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\1\10\1\u03c2\6\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\2\10\1\u03c3\5\10"+ - "\22\0\22\10\2\0\3\10\3\0\4\u03c4\15\0\3\u03c4"+ - "\31\0\1\u03c4\1\0\1\u03c4\7\0\3\u03c4\2\0\1\u03c4"+ - "\3\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\11\10\1\u03c5\10\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\5\10\1\u03c6\2\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\7\10\1\u03c7\22\0\7\10\1\u03c8\12\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\7\10\1\u03c7"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\3\10\1\u03c9\4\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\1\10"+ - "\1\u03ca\6\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\4\10\1\u03cb"+ - "\15\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\13\10\1\u03cc\1\10\1\u03cd\4\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\4\10\1\u03ce\15\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\2\10"+ - "\1\u013d\17\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\1\10\1\u03cf\6\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\7\10\1\u03d0\12\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\6\10\1\u03d1"+ - "\13\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\13\10\1\u013d\6\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\1\10\1\u03d2"+ - "\6\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\7\10\1\u013b\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\7\10"+ - "\1\u0173\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\7\10\1\u03d3\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\6\10\1\u03d4\13\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\2\10\1\u03d5"+ - "\17\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\4\10\1\u03d6\3\10\22\0\22\10\2\0\1\u03d6"+ - "\2\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\7\10\1\u03d7\12\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\2\10\1\u03d8"+ - "\17\10\2\0\3\10\1\0\4\10\1\u03d9\2\10\2\0"+ - "\1\122\2\10\4\0\1\10\1\u01b9\2\10\1\u03da\3\10"+ - "\22\0\7\10\1\u03db\12\10\2\0\1\u03da\2\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\10\10"+ - "\1\u03dc\11\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\6\10\1\u03dd\1\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\5\10"+ - "\1\u03de\2\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\5\10\1\u0254"+ - "\14\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\2\10\1\u03df\17\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\6\10\1\u03e0"+ - "\1\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\2\10\1\u03e1\17\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\6\10\1\u03e2\13\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\4\10"+ - "\1\u03e3\15\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\2\10\1\u03e4\5\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\5\10"+ - "\1\u03e5\2\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\3\10\1\u03e6"+ - "\16\10\2\0\2\10\1\u03e6\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\2\10\1\u03e7\17\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\7\10"+ - "\1\u03e8\22\0\22\10\2\0\3\10\1\0\4\10\1\u03e9"+ - "\2\10\2\0\1\122\2\10\4\0\10\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\7\10\1\u0350\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\3\10\1\u03ea\3\10\1\u03eb"+ - "\22\0\2\10\1\u0147\5\10\1\u03eb\11\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\1\10\1\u03ec"+ - "\6\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\1\u03ed\7\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\4\10\1\u03ee\15\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\6\10\1\u03ef"+ - "\13\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\4\10\1\u03f0\15\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\4\10\1\u03f1\4\10\1\u03f2\10\10\2\0\3\10\63\0"+ - "\1\u03f3\45\0\1\u03f4\136\0\1\u03f5\100\0\1\u0132\75\0"+ - "\1\232\23\0\7\10\2\0\1\122\2\10\4\0\1\10"+ - "\1\u03f6\6\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\1\u03f7\7\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\3\10\1\u03f8\4\10\22\0\22\10\2\0\3\10\1\0"+ - "\4\10\1\u02bc\2\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\5\10\1\u03f9\1\10\1\u03fa\12\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\10\10\1\u03fb\11\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\10\10\1\u03fc\11\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\2\10\1\u03fd\17\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\10\10"+ - "\1\u03fe\11\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\5\10\1\247\14\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\6\10\1\u03ff\13\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\6\10\1\u0266"+ - "\13\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\1\u0400\21\10\2\0\1\10\1\u0400"+ - "\1\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\2\10\1\u0401\17\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\1\10\1\376\6\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\1\10\1\u0402\6\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\3\10\1\u038d"+ - "\4\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\3\10\1\u0403\4\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\4\10\1\u0404\15\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\2\10\1\u0405\5\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\4\10\1\u0406\15\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\4\10"+ - "\1\u0407\3\10\22\0\22\10\2\0\1\u0407\2\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\1\10"+ - "\1\u0408\20\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\1\10\1\u0409\6\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\1\10"+ - "\1\u040a\6\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\6\10\1\u040b\1\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\6\10\1\u040c\13\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\3\10\1\u040d"+ - "\4\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\3\10\1\u040e\4\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\1\10\1\u040f\6\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\6\10"+ - "\1\u0287\13\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\14\10\1\u0410\5\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\1\10"+ - "\1\u0411\6\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\6\10\1\u0412"+ - "\13\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\3\10\1\u0413\3\10\1\u023d\22\0\2\10\1\u0414"+ - "\13\10\1\u0415\3\10\2\0\3\10\1\0\6\10\1\u0416"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\6\10\1\u02b8\13\10\2\0\3\10\1\0\4\10"+ - "\1\u0417\2\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\1\10\1\u0418\6\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\2\10\1\u0419"+ - "\5\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\1\10\1\u041a\6\10\22\0\5\10"+ - "\1\u041b\14\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\5\10\1\u041c\14\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\4\10\1\u041d\15\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\4\10\1\u03ed"+ - "\15\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\2\10\1\u0261\17\10\2\0\3\10"+ - "\3\0\4\304\15\0\3\304\31\0\1\304\1\0\1\304"+ - "\7\0\3\304\2\0\1\304\5\0\4\u041e\15\0\3\u041e"+ - "\31\0\1\u041e\1\0\1\u041e\7\0\3\u041e\2\0\1\u041e"+ - "\5\0\4\306\15\0\3\306\31\0\1\306\1\0\1\306"+ - "\7\0\3\306\2\0\1\306\5\0\4\u041f\15\0\3\u041f"+ - "\31\0\1\u041f\1\0\1\u041f\7\0\3\u041f\2\0\1\u041f"+ - "\3\0\7\10\2\0\1\122\2\10\4\0\1\10\1\u01b9"+ - "\6\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\2\10\1\u0397\5\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\6\10\1\u0420\1\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\4\10"+ - "\1\u0421\15\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\4\10\1\u0422\15\10\2\0"+ - "\3\10\1\0\6\10\1\160\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\5\10\1\u0423\2\10\22\0\22\10"+ - "\2\0\3\10\3\0\4\352\15\0\3\352\31\0\1\352"+ - "\1\0\1\352\7\0\3\352\2\0\1\352\3\0\7\10"+ - "\2\0\1\122\2\10\4\0\4\10\1\u028f\3\10\22\0"+ - "\22\10\2\0\1\u028f\2\10\1\0\6\10\1\u0424\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\1\10\1\300"+ - "\6\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\3\10\1\u0425\16\10"+ - "\2\0\2\10\1\u0425\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\1\u0426\7\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\1\10\1\u0427\6\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\15\10\1\u0428\4\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\3\10"+ - "\1\u0262\4\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\5\10\1\u0429\2\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\3\10\1\u03ea\4\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\2\10\1\u042a"+ - "\5\10\22\0\22\10\2\0\3\10\1\0\4\10\1\u042b"+ - "\2\10\2\0\1\122\2\10\4\0\10\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\2\10\1\u03bd\5\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\3\10\1\u03d0\4\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\3\10\1\245\4\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\1\10"+ - "\1\u042c\6\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\1\10\1\u01ff"+ - "\20\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\4\10\1\134\3\10\22\0\22\10\2\0\1\134"+ - "\2\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\2\10\1\u042d\17\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\4\10\1\u042e"+ - "\15\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\13\10\1\u0264\6\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\6\10\1\u042f\13\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\5\10\1\u0430\2\10\22\0\22\10"+ - "\2\0\3\10\1\0\6\10\1\u0431\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\6\10\1\300"+ - "\13\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\1\10\1\u0432\6\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\5\10\1\u0433\14\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\15\10\1\u0434\4\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\4\10\1\u0435\15\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\3\10"+ - "\1\u0436\16\10\2\0\2\10\1\u0436\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\7\10\1\u0437\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\3\10"+ - "\1\u0438\4\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\1\10\1\u0105\6\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\2\10\1\u0439\5\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\6\10\1\u043a"+ - "\1\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\5\10\1\u043b\2\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\6\10\1\u043c\1\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\4\10"+ - "\1\u043d\15\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\3\10\1\u043e\4\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\7\10\1\u043f\12\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\1\10\1\u038d\6\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\2\10\1\u0385\17\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\10\10\1\134\11\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\7\10\1\u0440\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\6\10\1\u0441\13\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\5\10\1\u0442\2\10\22\0"+ - "\2\10\1\u0443\17\10\2\0\3\10\55\0\1\u0444\33\0"+ - "\1\u0445\120\0\1\u0446\54\0\7\10\2\0\1\122\2\10"+ - "\4\0\4\10\1\u0447\3\10\22\0\22\10\2\0\1\u0447"+ - "\2\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\2\10\1\u0448\17\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\7\10\1\u0449\22\0\10\10"+ - "\1\u0449\11\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\6\10\1\u044a\13\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\2\10\1\u044b\17\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\2\10\1\u044c\5\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\2\10\1\u044d\17\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\4\10\1\u044e\15\10\2\0\3\10\1\0\4\10\1\u044f"+ - "\2\10\2\0\1\122\2\10\4\0\3\10\1\u0450\3\10"+ - "\1\u03c7\22\0\7\10\1\u03c8\12\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\3\10"+ - "\1\134\16\10\2\0\2\10\1\134\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\6\10\1\u0451\13\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\2\10\1\u0452\5\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\11\10"+ - "\1\u0453\10\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\7\10\1\u03bd\12\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\1\10"+ - "\1\u0454\6\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\2\10\1\u0266"+ - "\17\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\2\10\1\u0455\17\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\2\10\1\u0456\17\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\5\10\1\u0457\2\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\2\10\1\u0458\17\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\2\10"+ - "\1\u0459\17\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\5\10\1\u045a\2\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\3\10\1\u03bd\16\10\2\0\2\10\1\u03bd\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\4\10"+ - "\1\u045b\15\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\2\10\1\u045c\5\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\3\10"+ - "\1\u045d\4\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\2\10\1\u045e\5\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\2\10\1\u045f\5\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\1\u0460\7\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\4\10\1\u0461\15\10\2\0"+ - "\3\10\1\0\6\10\1\u0462\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\1\10\1\u0463\6\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\6\10\1\u0464\13\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\6\10"+ - "\1\u0465\13\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\7\10\1\u0466\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\2\10\1\u0467"+ - "\5\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\6\10\1\u0468\13\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\1\10\1\u0469\6\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\14\10"+ - "\1\u046a\5\10\2\0\3\10\3\0\4\u0175\15\0\3\u0175"+ - "\31\0\1\u0175\1\0\1\u0175\7\0\3\u0175\2\0\1\u0175"+ - "\5\0\4\u0177\15\0\3\u0177\31\0\1\u0177\1\0\1\u0177"+ - "\7\0\3\u0177\2\0\1\u0177\3\0\4\10\1\u02bc\2\10"+ - "\2\0\1\122\2\10\4\0\1\10\1\u01b9\5\10\1\u046b"+ - "\22\0\2\10\1\u0395\2\10\1\u01bc\14\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\4\10\1\u046c"+ - "\3\10\22\0\22\10\2\0\1\u046c\2\10\1\0\6\10"+ - "\1\134\2\0\1\122\2\10\4\0\10\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\11\10\1\u01f1\10\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\4\10"+ - "\1\u046d\15\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\6\10\1\u046e\13\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\3\10"+ - "\1\u046f\4\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\6\10\1\u0470"+ - "\13\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\7\10\1\u0471\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\6\10\1\u0472\1\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\2\10\1\u0473\17\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\14\10\1\u0474\5\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\7\10\1\u0475"+ - "\12\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\4\10\1\u0476\15\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\10\10\1\u0477\11\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\2\10\1\u0478\5\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\1\10\1\u0479\6\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\5\10\1\u047a\2\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\1\10\1\u047b\6\10\22\0\22\10\2\0"+ - "\3\10\1\0\4\10\1\u03d9\2\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\5\10\1\u047c\2\10\22\0"+ - "\22\10\2\0\3\10\1\0\6\10\1\u047d\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\6\10\1\u047e\1\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\1\10\1\u047f\6\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\7\10"+ - "\1\u0480\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\2\10\1\u0474\17\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\7\10\1\u0481\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\15\10\1\u013b"+ - "\4\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\6\10\1\u0482\13\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\7\10\1\u0483\12\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\1\10\1\u0484\6\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\3\10\1\u0485\4\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\1\10\1\u0486\6\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\2\10\1\u0152\5\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\1\u0487"+ - "\7\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\4\10\1\u0487\15\10"+ - "\2\0\3\10\57\0\1\u0488\104\0\1\u0489\77\0\1\u048a"+ - "\22\0\7\10\2\0\1\122\2\10\4\0\6\10\1\u048b"+ - "\1\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\7\10\1\u03ed\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\3\10"+ - "\1\u048c\4\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\6\10\1\u028a\1\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\2\10\1\u048d\5\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\3\10\1\u048e"+ - "\4\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\4\10\1\u048f\15\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\7\10\1\u0490\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\2\10\1\u0147"+ - "\17\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\1\u0491\7\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\2\10\1\u0492\5\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\3\10\1\u0493\4\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\5\10"+ - "\1\243\2\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\1\10\1\u01b9\5\10\1\134"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\7\10\1\u0494\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\6\10\1\u0495"+ - "\1\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\1\10\1\u0496\6\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\6\10\1\u0497\13\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\11\10"+ - "\1\u0498\10\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\7\10\1\u0499\12\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\1\10"+ - "\1\u040b\6\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\7\10\1\u049a\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\11\10\1\u013d\10\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\3\10\1\u049b\4\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\3\10\1\u049c\4\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\5\10\1\u049d\14\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\4\10\1\u049e\3\10\22\0"+ - "\22\10\2\0\1\u049e\2\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\3\10\1\u049f\4\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\1\10"+ - "\1\u04a0\6\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\1\u013d\7\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\4\10\1\u03bd\15\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\2\10"+ - "\1\u04a1\17\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\5\10\1\u04a2\2\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\1\10\1\u04a3\20\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\4\10\1\375"+ - "\10\10\1\u04a4\4\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\4\10\1\375\15\10"+ - "\2\0\3\10\1\0\6\10\1\u04a5\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\2\10\1\u04a6"+ - "\17\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\5\10\1\u027a\14\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\2\10\1\u04a7"+ - "\5\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\5\10\1\u04a8\14\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\4\10\1\u01f1\15\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\1\10\1\u04a9\6\10"+ - "\22\0\22\10\2\0\3\10\1\0\6\10\1\u013b\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\22\10\2\0\3\10"+ - "\1\0\4\10\1\u04aa\2\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\1\10\1\u013b\6\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\2\10\1\u04ab\17\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\10\10"+ - "\1\u04ac\11\10\2\0\3\10\1\0\6\10\1\243\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\5\10\1\u04ad\14\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\5\10\1\u013d\2\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\10\10\1\u02e0\11\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\2\10\1\u04ae\5\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\2\10\1\u04af\5\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\4\10\1\u04b0\15\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\6\10\1\u04b1"+ - "\13\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\1\10\1\u04b2\6\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\7\10\1\u04b3"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\1\10\1\u039f\13\10\1\u04b4"+ - "\4\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\5\10\1\u04b5\14\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\1\10\1\u01b9"+ - "\2\10\1\u04b6\2\10\1\u01b4\22\0\2\10\1\u04b7\17\10"+ - "\2\0\1\u04b6\2\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\1\10\1\u04b8\6\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\5\10\1\u01a5"+ - "\2\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\2\10\1\u04b9\17\10"+ - "\2\0\3\10\62\0\1\u04ba\43\0\1\u0488\100\0\1\u01d6"+ - "\57\0\7\10\2\0\1\122\2\10\4\0\5\10\1\u04bb"+ - "\2\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\1\10\1\u03bd\6\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\2\10\1\u04bc\5\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\7\10\1\u04bd\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\7\10\1\164\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\1\10\1\u04be\6\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\1\10\1\u04bf\20\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\1\10"+ - "\1\u04c0\6\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\5\10\1\u04c1"+ - "\14\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\1\10\1\300\1\10\1\u04c2\4\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\3\10\1\u046a\4\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\1\u046a"+ - "\21\10\2\0\1\10\1\u046a\1\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\4\10\1\u040b\15\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\3\10\1\u04c3\4\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\7\10"+ - "\1\u04c4\12\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\2\10\1\u04c5\17\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\1\10"+ - "\1\u04c6\6\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\10\10\1\u04c7"+ - "\11\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\6\10\1\u04c8\1\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\6\10\1\u04c9\13\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\7\10\1\u04ca\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\6\10\1\u04cb\13\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\6\10\1\u04cc"+ - "\13\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\7\10\1\u04cd\12\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\14\10\1\u04ce\5\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\3\10\1\u04cf\4\10\22\0\22\10"+ - "\2\0\3\10\1\0\4\10\1\u04d0\2\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\2\10\1\u0138\5\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\7\10\1\u013d\12\10\2\0"+ - "\3\10\1\0\6\10\1\u04d1\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\2\10\1\u04d2\5\10\22\0\22\10"+ - "\2\0\3\10\1\0\6\10\1\u04d3\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\2\10\1\u03ee\5\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\2\10\1\u04d4\17\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\3\10\1\u04d5"+ - "\4\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\2\10\1\u04d6\17\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\5\10\1\u0418\14\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\6\10\1\u04d7\1\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\4\10\1\u04bb\15\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\14\10\1\u04d8\5\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\2\10\1\u04d9"+ - "\17\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\13\10\1\u04da\6\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\6\10\1\u04db"+ - "\1\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\4\10\1\u04dc\15\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\5\10\1\u04dd\2\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\11\10"+ - "\1\u04de\10\10\2\0\3\10\55\0\1\u027c\25\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\10\10\1\u013d"+ - "\11\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\3\10\1\u04df\4\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\7\10\1\u04e0"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\5\10\1\u04e1\2\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\5\10"+ - "\1\u04e2\2\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\5\10\1\u04e3"+ - "\14\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\1\10\1\u04e4\6\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\5\10\1\u013d\14\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\6\10\1\u04e5\1\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\2\10\1\u04e6\5\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\6\10"+ - "\1\u04e7\13\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\2\10\1\u04e8\5\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\2\10"+ - "\1\u04e9\5\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\5\10\1\u04ea\2\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\2\10\1\u04ea\5\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\1\10\1\u04eb"+ - "\6\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\4\10\1\u04ec\15\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\4\10\1\u04ed\15\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\3\10\1\u04ee\4\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\2\10\1\u04ef\5\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\2\10"+ - "\1\u04f0\5\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\5\10\1\u01bc"+ - "\14\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\1\10\1\u04f1\6\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\2\10\1\u04f2\17\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\1\10\1\u04f3\6\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\11\10\1\u0350\10\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\7\10\1\u04f4\22\0"+ - "\22\10\2\0\3\10\1\0\4\10\1\u04f5\2\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\6\10\1\u04f6\13\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\1\10\1\u013b\20\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\3\10\1\u032f\4\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\6\10"+ - "\1\u04f7\13\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\5\10\1\u04f8\2\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\7\10"+ - "\1\u04f9\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\2\10\1\u04fa\17\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\2\10\1\u04fb\17\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\10\10"+ - "\1\u04ed\11\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\4\10\1\u04b6\3\10\22\0\22\10\2\0"+ - "\1\u04b6\2\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\6\10\1\u04fc\1\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\4\10"+ - "\1\u04fd\15\10\2\0\3\10\1\0\6\10\1\u0173\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\6\10\1\u04fe\13\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\6\10\1\u04ff\13\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\3\10\1\u0500\4\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\4\10"+ - "\1\u04c3\15\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\14\10\1\u0501\5\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\6\10\1\u0502\13\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\11\10\1\u0503"+ - "\10\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\2\10\1\u0504\17\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\17\10\3\134\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\13\10\1\u03cc\6\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\11\10\1\u0505\10\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\2\10\1\u0506"+ - "\17\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\7\10\1\u01fa\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\2\10"+ - "\1\u0507\17\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\4\10\1\u04f8\15\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\3\10"+ - "\1\u0508\4\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\3\10\1\u0509\4\10\22\0"+ - "\22\10\2\0\3\10\1\0\6\10\1\u050a\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\5\10\1\u04a7\2\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\1\10\1\u050b\20\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\10\10\1\u038d\11\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\1\10\1\u050c\6\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\6\10\1\u038d\1\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\12\10\1\u02a2\7\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\6\10\1\u050d\1\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\7\10\1\u035b\12\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\2\10\1\u0262\5\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\5\10\1\u050e\14\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\7\10"+ - "\1\u038d\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\2\10\1\u014a\17\10"+ - "\2\0\3\10\1\0\6\10\1\u050f\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\5\10\1\u04ca\2\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\6\10\1\u01b5\13\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\5\10\1\u0510"+ - "\2\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\10\10\1\u0511\11\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\6\10\1\u0512\13\10\2\0\3\10\1\0"+ - "\1\10\1\u0513\5\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\6\10\1\u0514\1\10\22\0\22\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\1\10"+ - "\1\u039c\6\10\22\0\22\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\1\10\1\u0515\6\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\1\10\1\u0516\6\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\3\10\1\300"+ - "\4\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\5\10\1\u0246\2\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\4\10\1\u0139\15\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\2\10\1\u0517\5\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\1\u03ed\21\10\2\0\1\10"+ - "\1\u03ed\1\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\4\10\1\u0518\15\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\1\10\1\u0519\1\u051a"+ - "\2\10\1\u051b\1\10\1\u051c\22\0\1\u051d\3\10\1\u03f1"+ - "\1\10\1\u051e\13\10\2\0\1\10\1\u051d\1\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\3\10\1\u051f\4\10"+ - "\22\0\22\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\2\10\1\u0520\17\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\14\10\1\u0521\5\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\10\10\22\0\13\10\1\u038d"+ - "\6\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\6\10\1\u0522\1\10\22\0\22\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\3\10\1\u0523"+ - "\4\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\3\10\1\u0524\4\10\22\0\22\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\2\10\1\200\5\10\22\0\22\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\14\10"+ - "\1\220\5\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\2\10\1\u0525\17\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\4\10"+ - "\1\u0526\3\10\22\0\22\10\2\0\1\u0526\2\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\10\10\22\0\5\10"+ - "\1\u015a\14\10\2\0\3\10\1\0\7\10\2\0\1\122"+ - "\2\10\4\0\10\10\22\0\11\10\1\u01b4\10\10\2\0"+ - "\3\10\1\0\7\10\2\0\1\122\2\10\4\0\10\10"+ - "\22\0\1\10\1\u039c\20\10\2\0\3\10\1\0\7\10"+ - "\2\0\1\122\2\10\4\0\3\10\1\u0527\4\10\22\0"+ - "\22\10\2\0\3\10\1\0\7\10\2\0\1\122\2\10"+ - "\4\0\10\10\22\0\11\10\1\370\10\10\2\0\3\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\5\10\1\u0528"+ - "\2\10\22\0\22\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\7\10\1\u0529\12\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\4\10\1\u0199\3\10\22\0\22\10\2\0\1\u0199\2\10"+ - "\1\0\7\10\2\0\1\122\2\10\4\0\10\10\22\0"+ - "\15\10\1\u052a\4\10\2\0\3\10\1\0\7\10\2\0"+ - "\1\122\2\10\4\0\10\10\22\0\7\10\1\u019f\12\10"+ - "\2\0\3\10\1\0\7\10\2\0\1\122\2\10\4\0"+ - "\10\10\22\0\7\10\1\u01e1\12\10\2\0\3\10\1\0"+ - "\7\10\2\0\1\122\2\10\4\0\3\10\1\u0246\4\10"+ - "\22\0\22\10\2\0\3\10"; - - private static int [] zzUnpackTrans() { - int [] result = new int[84678]; - int offset = 0; - offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackTrans(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - value--; - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /* error codes */ - private static final int ZZ_UNKNOWN_ERROR = 0; - private static final int ZZ_NO_MATCH = 1; - private static final int ZZ_PUSHBACK_2BIG = 2; - - /* error messages for the codes above */ - private static final String ZZ_ERROR_MSG[] = { - "Unkown internal scanner error", - "Error: could not match input", - "Error: pushback value was too large" - }; - - /** - * ZZ_ATTRIBUTE[aState] contains the attributes of state aState - */ - private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); - - private static final String ZZ_ATTRIBUTE_PACKED_0 = - "\6\0\1\11\5\1\2\11\2\1\1\11\12\1\1\11"+ - "\5\1\1\11\1\1\1\11\15\1\1\11\1\1\1\11"+ - "\2\1\1\11\2\1\2\11\3\1\2\11\1\1\1\11"+ - "\10\1\1\11\6\1\1\0\12\1\1\11\5\1\1\0"+ - "\55\1\1\0\1\1\13\0\45\1\1\11\1\1\1\0"+ - "\1\1\1\0\1\11\4\1\4\0\4\1\5\0\20\1"+ - "\1\0\11\1\1\0\62\1\10\0\1\1\2\0\1\11"+ - "\3\0\76\1\4\0\4\1\4\0\4\1\5\0\14\1"+ - "\1\0\6\1\1\11\65\1\16\0\75\1\2\0\1\11"+ - "\2\0\1\11\4\1\2\0\4\1\3\0\11\1\1\0"+ - "\101\1\14\0\73\1\4\0\1\1\2\0\1\1\3\0"+ - "\10\1\1\0\66\1\7\0\65\1\4\0\12\1\1\0"+ - "\60\1\5\0\55\1\4\0\7\1\1\0\56\1\3\0"+ - "\50\1\2\0\44\1\3\0\101\1\3\0\57\1\1\0"+ - "\160\1"; - - private static int [] zzUnpackAttribute() { - int [] result = new int[1322]; - int offset = 0; - offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAttribute(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - /** the input device */ - private java.io.Reader zzReader; - - /** the current state of the DFA */ - private int zzState; - - /** the current lexical state */ - private int zzLexicalState = YYINITIAL; - - /** this buffer contains the current text to be matched and is - the source of the yytext() string */ - private char zzBuffer[]; - - /** the textposition at the last accepting state */ - private int zzMarkedPos; - - /** the current text position in the buffer */ - private int zzCurrentPos; - - /** startRead marks the beginning of the yytext() string in the buffer */ - private int zzStartRead; - - /** endRead marks the last character in the buffer, that has been read - from input */ - private int zzEndRead; - - /** zzAtEOF == true <=> the scanner is at the EOF */ - private boolean zzAtEOF; - - /* user code: */ - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public NSISTokenMaker() { - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addToken(int, int, int) - */ - private void addHyperlinkToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, true); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addHyperlinkToken(int, int, int) - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, false); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - * @param hyperlink Whether this token is a hyperlink. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, - int startOffset, boolean hyperlink) { - super.addToken(array, start,end, tokenType, startOffset, hyperlink); - zzStartRead = zzMarkedPos; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { "//", null }; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - - // Start off in the proper state. - int state = YYINITIAL; - switch (initialTokenType) { - case Token.LITERAL_STRING_DOUBLE_QUOTE: - state = STRING; - break; - case Token.LITERAL_CHAR: - state = CHAR_LITERAL; - break; - case Token.LITERAL_BACKQUOTE: - state = BACKTICKS; - break; - case Token.COMMENT_MULTILINE: - state = MLC; - break; - } - - start = text.offset; - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtEOF = false; - } - - - - - /** - * Creates a new scanner - * There is also a java.io.InputStream version of this constructor. - * - * @param in the java.io.Reader to read input from. - */ - public NSISTokenMaker(java.io.Reader in) { - this.zzReader = in; - } - - /** - * Creates a new scanner. - * There is also java.io.Reader version of this constructor. - * - * @param in the java.io.Inputstream to read input from. - */ - public NSISTokenMaker(java.io.InputStream in) { - this(new java.io.InputStreamReader(in)); - } - - /** - * Unpacks the compressed character translation table. - * - * @param packed the packed character translation table - * @return the unpacked character translation table - */ - private static char [] zzUnpackCMap(String packed) { - char [] map = new char[0x10000]; - int i = 0; /* index in packed string */ - int j = 0; /* index in unpacked array */ - while (i < 204) { - int count = packed.charAt(i++); - char value = packed.charAt(i++); - do map[j++] = value; while (--count > 0); - } - return map; - } - - - /** - * Closes the input stream. - */ - public final void yyclose() throws java.io.IOException { - zzAtEOF = true; /* indicate end of file */ - zzEndRead = zzStartRead; /* invalidate buffer */ - - if (zzReader != null) - zzReader.close(); - } - - - /** - * Returns the current lexical state. - */ - public final int yystate() { - return zzLexicalState; - } - - - /** - * Enters a new lexical state - * - * @param newState the new lexical state - */ - @Override -public final void yybegin(int newState) { - zzLexicalState = newState; - } - - - /** - * Returns the text matched by the current regular expression. - */ - public final String yytext() { - return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead ); - } - - - /** - * Returns the character at position pos from the - * matched text. - * - * It is equivalent to yytext().charAt(pos), but faster - * - * @param pos the position of the character to fetch. - * A value from 0 to yylength()-1. - * - * @return the character at position pos - */ - public final char yycharat(int pos) { - return zzBuffer[zzStartRead+pos]; - } - - - /** - * Returns the length of the matched text region. - */ - public final int yylength() { - return zzMarkedPos-zzStartRead; - } - - - /** - * Reports an error that occured while scanning. - * - * In a wellformed scanner (no or only correct usage of - * yypushback(int) and a match-all fallback rule) this method - * will only be called with things that "Can't Possibly Happen". - * If this method is called, something is seriously wrong - * (e.g. a JFlex bug producing a faulty scanner etc.). - * - * Usual syntax/scanner level error handling should be done - * in error fallback rules. - * - * @param errorCode the code of the errormessage to display - */ - private void zzScanError(int errorCode) { - String message; - try { - message = ZZ_ERROR_MSG[errorCode]; - } - catch (ArrayIndexOutOfBoundsException e) { - message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; - } - - throw new Error(message); - } - - - /** - * Pushes the specified amount of characters back into the input stream. - * - * They will be read again by then next call of the scanning method - * - * @param number the number of characters to be read again. - * This number must not be greater than yylength()! - */ - public void yypushback(int number) { - if ( number > yylength() ) - zzScanError(ZZ_PUSHBACK_2BIG); - - zzMarkedPos -= number; - } - - - /** - * Resumes scanning until the next regular expression is matched, - * the end of input is encountered or an I/O-Error occurs. - * - * @return the next token - * @exception java.io.IOException if any I/O-Error occurs - */ - public org.fife.ui.rsyntaxtextarea.Token yylex() throws java.io.IOException { - int zzInput; - int zzAction; - - // cached fields: - int zzCurrentPosL; - int zzMarkedPosL; - int zzEndReadL = zzEndRead; - char [] zzBufferL = zzBuffer; - char [] zzCMapL = ZZ_CMAP; - - int [] zzTransL = ZZ_TRANS; - int [] zzRowMapL = ZZ_ROWMAP; - int [] zzAttrL = ZZ_ATTRIBUTE; - - while (true) { - zzMarkedPosL = zzMarkedPos; - - zzAction = -1; - - zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; - - zzState = zzLexicalState; - - - zzForAction: { - while (true) { - - if (zzCurrentPosL < zzEndReadL) - zzInput = zzBufferL[zzCurrentPosL++]; - else if (zzAtEOF) { - zzInput = YYEOF; - break zzForAction; - } - else { - // store back cached positions - zzCurrentPos = zzCurrentPosL; - zzMarkedPos = zzMarkedPosL; - boolean eof = zzRefill(); - // get translated positions and possibly new buffer - zzCurrentPosL = zzCurrentPos; - zzMarkedPosL = zzMarkedPos; - zzBufferL = zzBuffer; - zzEndReadL = zzEndRead; - if (eof) { - zzInput = YYEOF; - break zzForAction; - } - else { - zzInput = zzBufferL[zzCurrentPosL++]; - } - } - int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; - if (zzNext == -1) break zzForAction; - zzState = zzNext; - - int zzAttributes = zzAttrL[zzState]; - if ( (zzAttributes & 1) == 1 ) { - zzAction = zzState; - zzMarkedPosL = zzCurrentPosL; - if ( (zzAttributes & 8) == 8 ) break zzForAction; - } - - } - } - - // store back cached position - zzMarkedPos = zzMarkedPosL; - - switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { - case 1: - { addToken(Token.IDENTIFIER); - } - case 37: break; - case 34: - { addToken(Token.LITERAL_BOOLEAN); - } - case 38: break; - case 29: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.LITERAL_BACKQUOTE); addToken(temp,zzMarkedPos-1, Token.VARIABLE); start = zzMarkedPos; - } - case 39: break; - case 19: - { /* Line ending in '\' => continue to next line. */ - addToken(start,zzStartRead, Token.LITERAL_BACKQUOTE); - return firstToken; - } - case 40: break; - case 27: - { /* Skip all escaped chars. */ - } - case 41: break; - case 24: - { addToken(Token.ERROR_NUMBER_FORMAT); - } - case 42: break; - case 3: - { start = zzMarkedPos-1; yybegin(STRING); - } - case 43: break; - case 32: - { addToken(Token.FUNCTION); - } - case 44: break; - case 8: - { addToken(Token.VARIABLE); - } - case 45: break; - case 16: - { /* Line ending in '\' => continue to next line. */ - addToken(start,zzStartRead, Token.LITERAL_CHAR); - return firstToken; - } - case 46: break; - case 14: - { /* Line ending in '\' => continue to next line. */ - addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); - return firstToken; - } - case 47: break; - case 17: - { addToken(start,zzStartRead-1, Token.ERROR_CHAR); return firstToken; - } - case 48: break; - case 18: - { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_CHAR); - } - case 49: break; - case 25: - { addToken(Token.LITERAL_NUMBER_HEXADECIMAL); - } - case 50: break; - case 26: - { start = zzMarkedPos-2; yybegin(MLC); - } - case 51: break; - case 6: - { addToken(Token.WHITESPACE); - } - case 52: break; - case 30: - { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); - } - case 53: break; - case 10: - { start = zzMarkedPos-1; yybegin(CHAR_LITERAL); - } - case 54: break; - case 2: - { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); - } - case 55: break; - case 28: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addToken(temp,zzMarkedPos-1, Token.VARIABLE); start = zzMarkedPos; - } - case 56: break; - case 4: - { start = zzMarkedPos-1; yybegin(EOL_COMMENT); - } - case 57: break; - case 21: - { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_BACKQUOTE); - } - case 58: break; - case 13: - { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); - } - case 59: break; - case 15: - { addToken(start,zzStartRead-1, Token.ERROR_STRING_DOUBLE); return firstToken; - } - case 60: break; - case 31: - { addToken(Token.RESERVED_WORD); - } - case 61: break; - case 35: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_MULTILINE); start = zzMarkedPos; - } - case 62: break; - case 20: - { addToken(start,zzStartRead-1, Token.LITERAL_BACKQUOTE); return firstToken; - } - case 63: break; - case 23: - { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; - } - case 64: break; - case 9: - { addToken(Token.SEPARATOR); - } - case 65: break; - case 5: - { addNullToken(); return firstToken; - } - case 66: break; - case 22: - { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; - } - case 67: break; - case 7: - { addToken(Token.OPERATOR); - } - case 68: break; - case 36: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_EOL); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_EOL); start = zzMarkedPos; - } - case 69: break; - case 33: - { addToken(Token.COMMENT_MULTILINE); - } - case 70: break; - case 11: - { start = zzMarkedPos-1; yybegin(BACKTICKS); - } - case 71: break; - case 12: - { - } - case 72: break; - default: - if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { - zzAtEOF = true; - switch (zzLexicalState) { - case EOL_COMMENT: { - addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; - } - case 1323: break; - case STRING: { - addToken(start,zzStartRead-1, Token.ERROR_STRING_DOUBLE); return firstToken; - } - case 1324: break; - case CHAR_LITERAL: { - addToken(start,zzStartRead-1, Token.ERROR_CHAR); return firstToken; - } - case 1325: break; - case YYINITIAL: { - addNullToken(); return firstToken; - } - case 1326: break; - case MLC: { - addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; - } - case 1327: break; - case BACKTICKS: { - addToken(start,zzStartRead-1, Token.LITERAL_BACKQUOTE); return firstToken; - } - case 1328: break; - default: - return null; - } - } - else { - zzScanError(ZZ_NO_MATCH); - } - } - } - } - - -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/PHPTokenMaker.flex b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/PHPTokenMaker.flex deleted file mode 100644 index 422c75a..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/PHPTokenMaker.flex +++ /dev/null @@ -1,2434 +0,0 @@ -/* - * 01/28/2009 - * - * PHPTokenMaker.java - Generates tokens for PHP syntax highlighting. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * Scanner for PHP files. - * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated PHPTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.9 - */ -%% - -%public -%class PHPTokenMaker -%extends AbstractMarkupTokenMaker -%unicode -%type org.fife.ui.rsyntaxtextarea.Token - - -%{ - - /** - * Type specific to PHPTokenMaker denoting a line ending with an unclosed - * double-quote attribute. - */ - private static final int INTERNAL_ATTR_DOUBLE = -1; - - - /** - * Type specific to PHPTokenMaker denoting a line ending with an unclosed - * single-quote attribute. - */ - private static final int INTERNAL_ATTR_SINGLE = -2; - - - /** - * Token type specific to PHPTokenMaker; this signals that the user has - * ended a line with an unclosed HTML tag; thus a new line is beginning - * still inside of the tag. - */ - private static final int INTERNAL_INTAG = -3; - - /** - * Token type specific to PHPTokenMaker; this signals that the user has - * ended a line with an unclosed <script> tag. - */ - private static final int INTERNAL_INTAG_SCRIPT = -4; - - /** - * Token type specifying we're in a double-qouted attribute in a - * script tag. - */ - private static final int INTERNAL_ATTR_DOUBLE_QUOTE_SCRIPT = -5; - - /** - * Token type specifying we're in a single-qouted attribute in a - * script tag. - */ - private static final int INTERNAL_ATTR_SINGLE_QUOTE_SCRIPT = -6; - - /** - * Token type specifying that the user has - * ended a line with an unclosed <style> tag. - */ - private static final int INTERNAL_INTAG_STYLE = -7; - - /** - * Token type specifying we're in a double-qouted attribute in a - * style tag. - */ - private static final int INTERNAL_ATTR_DOUBLE_QUOTE_STYLE = -8; - - /** - * Token type specifying we're in a single-qouted attribute in a - * style tag. - */ - private static final int INTERNAL_ATTR_SINGLE_QUOTE_STYLE = -9; - - /** - * Token type specifying we're in JavaScript. - */ - private static final int INTERNAL_IN_JS = -10; - - /** - * Token type specifying we're in a JavaScript multiline comment. - */ - private static final int INTERNAL_IN_JS_MLC = -11; - - /** - * Token type specifying we're in an invalid multi-line JS string. - */ - private static final int INTERNAL_IN_JS_STRING_INVALID = -12; - - /** - * Token type specifying we're in a valid multi-line JS string. - */ - private static final int INTERNAL_IN_JS_STRING_VALID = -13; - - /** - * Token type specifying we're in an invalid multi-line JS single-quoted string. - */ - private static final int INTERNAL_IN_JS_CHAR_INVALID = -14; - - /** - * Token type specifying we're in a valid multi-line JS single-quoted string. - */ - private static final int INTERNAL_IN_JS_CHAR_VALID = -15; - - /** - * Internal type denoting a line ending in CSS. - */ - private static final int INTERNAL_CSS = -16; - - /** - * Internal type denoting a line ending in a CSS property. - */ - private static final int INTERNAL_CSS_PROPERTY = -17; - - /** - * Internal type denoting a line ending in a CSS property value. - */ - private static final int INTERNAL_CSS_VALUE = -18; - - /** - * Internal type denoting line ending in a CSS double-quote string. - * The state to return to is embedded in the actual end token type. - */ - private static final int INTERNAL_CSS_STRING = -(1<<11); - - /** - * Internal type denoting line ending in a CSS single-quote string. - * The state to return to is embedded in the actual end token type. - */ - private static final int INTERNAL_CSS_CHAR = -(2<<11); - - /** - * Internal type denoting line ending in a CSS multi-line comment. - * The state to return to is embedded in the actual end token type. - */ - private static final int INTERNAL_CSS_MLC = -(3<<11); - - /** - * Token type specifying we're in PHP. This particular field is public so - * that we can hack and key off of it for code completion. - */ - public static final int INTERNAL_IN_PHP = -(4<<11); - - /** - * Token type specifying we're in a PHP multiline comment. - */ - private static final int INTERNAL_IN_PHP_MLC = -(5<<11); - - /** - * Token type specifying we're in a PHP multiline string. - */ - private static final int INTERNAL_IN_PHP_STRING = -(6<<11); - - /** - * Token type specifying we're in a PHP multiline char. - */ - private static final int INTERNAL_IN_PHP_CHAR = -(7<<11); - - /** - * The state previous CSS-related state we were in before going into a CSS - * string, multi-line comment, etc. - */ - private int cssPrevState; - - /** - * Whether closing markup tags are automatically completed for PHP. - */ - private static boolean completeCloseTags; - - /** - * The state PHP was started in (YYINITIAL, INTERNAL_IN_JS, etc.). - */ - private int phpInState; - - /** - * The language index we were in when PHP was started. - */ - private int phpInLangIndex; - - /** - * When in the JS_STRING state, whether the current string is valid. - */ - private boolean validJSString; - - /** - * Language state set on HTML tokens. Must be 0. - */ - private static final int LANG_INDEX_DEFAULT = 0; - - /** - * Language state set on JavaScript tokens. - */ - private static final int LANG_INDEX_JS = 1; - - /** - * Language state set on CSS tokens. - */ - private static final int LANG_INDEX_CSS = 2; - - - /** - * Language state set on PHP. - */ - private static final int LANG_INDEX_PHP = 3; - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public PHPTokenMaker() { - super(); - } - - - /** - * Adds the token specified to the current linked list of tokens as an - * "end token;" that is, at zzMarkedPos. - * - * @param tokenType The token's type. - */ - private void addEndToken(int tokenType) { - addToken(zzMarkedPos,zzMarkedPos, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addToken(int, int, int) - */ - private void addHyperlinkToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, true); - } - - - /** - * Adds an end token that encodes the information necessary to return - * to the pre-PHP state and language index. - * - * @param endTokenState The PHP-related end-token state. - */ - private void addPhpEndToken(int endTokenState) { - addEndToken(endTokenState - phpInState - (phpInLangIndex<<16)); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, int startOffset) { - super.addToken(array, start,end, tokenType, startOffset); - zzStartRead = zzMarkedPos; - } - - - /** - * {@inheritDoc} - */ - @Override - protected OccurrenceMarker createOccurrenceMarker() { - return new HtmlOccurrenceMarker(); - } - - - /** - * Sets whether markup close tags should be completed. You might not want - * this to be the case, since some tags in standard HTML aren't usually - * closed. - * - * @return Whether closing markup tags are completed. - * @see #setCompleteCloseTags(boolean) - */ - @Override - public boolean getCompleteCloseTags() { - return completeCloseTags; - } - - - @Override - public boolean getCurlyBracesDenoteCodeBlocks(int languageIndex) { - return languageIndex==LANG_INDEX_CSS || languageIndex==LANG_INDEX_JS || - languageIndex==LANG_INDEX_PHP; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - switch (languageIndex) { - case LANG_INDEX_JS: - case LANG_INDEX_PHP: - return new String[] { "//", null }; - case LANG_INDEX_CSS: - return new String[] { "/*", "*/" }; - default: - return new String[] { "" }; - } - } - - - /** - * {@inheritDoc} - */ - @Override - public boolean getMarkOccurrencesOfTokenType(int type) { - return type==Token.FUNCTION || type==Token.VARIABLE || - type==Token.MARKUP_TAG_NAME; - } - - - /** - * Overridden to handle newlines in JS and CSS differently than those in - * markup. - */ - @Override - public boolean getShouldIndentNextLineAfter(Token token) { - int languageIndex = token==null ? 0 : token.getLanguageIndex(); - if (getCurlyBracesDenoteCodeBlocks(languageIndex)) { - if (token!=null && token.length()==1) { - char ch = token.charAt(0); - return ch=='{' || ch=='('; - } - } - return false; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - phpInState = YYINITIAL; // Shouldn't be necessary - cssPrevState = CSS; // Shouldn't be necessary - int languageIndex = LANG_INDEX_DEFAULT; - - // Start off in the proper state. - int state = Token.NULL; - switch (initialTokenType) { - case Token.MARKUP_COMMENT: - state = COMMENT; - break; - case Token.VARIABLE: - state = DTD; - break; - case INTERNAL_INTAG: - state = INTAG; - break; - case INTERNAL_INTAG_SCRIPT: - state = INTAG_SCRIPT; - break; - case INTERNAL_INTAG_STYLE: - state = INTAG_STYLE; - break; - case INTERNAL_ATTR_DOUBLE: - state = INATTR_DOUBLE; - break; - case INTERNAL_ATTR_SINGLE: - state = INATTR_SINGLE; - break; - case INTERNAL_ATTR_DOUBLE_QUOTE_SCRIPT: - state = INATTR_DOUBLE_SCRIPT; - break; - case INTERNAL_ATTR_SINGLE_QUOTE_SCRIPT: - state = INATTR_SINGLE_SCRIPT; - break; - case INTERNAL_ATTR_DOUBLE_QUOTE_STYLE: - state = INATTR_DOUBLE_STYLE; - break; - case INTERNAL_ATTR_SINGLE_QUOTE_STYLE: - state = INATTR_SINGLE_STYLE; - break; - case INTERNAL_IN_JS: - state = JAVASCRIPT; - languageIndex = LANG_INDEX_JS; - break; - case INTERNAL_IN_JS_MLC: - state = JS_MLC; - languageIndex = LANG_INDEX_JS; - break; - case INTERNAL_IN_JS_STRING_INVALID: - state = JS_STRING; - languageIndex = LANG_INDEX_JS; - validJSString = false; - break; - case INTERNAL_IN_JS_STRING_VALID: - state = JS_STRING; - languageIndex = LANG_INDEX_JS; - validJSString = true; - break; - case INTERNAL_IN_JS_CHAR_INVALID: - state = JS_CHAR; - languageIndex = LANG_INDEX_JS; - validJSString = false; - break; - case INTERNAL_IN_JS_CHAR_VALID: - state = JS_CHAR; - languageIndex = LANG_INDEX_JS; - validJSString = true; - break; - case INTERNAL_CSS: - state = CSS; - languageIndex = LANG_INDEX_CSS; - break; - case INTERNAL_CSS_PROPERTY: - state = CSS_PROPERTY; - languageIndex = LANG_INDEX_CSS; - break; - case INTERNAL_CSS_VALUE: - state = CSS_VALUE; - languageIndex = LANG_INDEX_CSS; - break; - default: - if (initialTokenType<-1024) { // INTERNAL_IN_PHPxxx - phpInState - int main = -(-initialTokenType & 0x0000ff00); - switch (main) { - default: // Should never happen - case INTERNAL_IN_PHP: - state = PHP; - languageIndex = LANG_INDEX_PHP; - phpInState = -initialTokenType&0xff; - phpInLangIndex = (-initialTokenType&0x00ff0000)>>16; - break; - case INTERNAL_IN_PHP_MLC: - state = PHP_MLC; - languageIndex = LANG_INDEX_PHP; - phpInState = -initialTokenType&0xff; - phpInLangIndex = (-initialTokenType&0x00ff0000)>>16; - break; - case INTERNAL_IN_PHP_STRING: - state = PHP_STRING; - languageIndex = LANG_INDEX_PHP; - phpInState = -initialTokenType&0xff; - phpInLangIndex = (-initialTokenType&0x00ff0000)>>16; - break; - case INTERNAL_IN_PHP_CHAR: - state = PHP_CHAR; - languageIndex = LANG_INDEX_PHP; - phpInState = -initialTokenType&0xff; - phpInLangIndex = (-initialTokenType&0x00ff0000)>>16; - break; - case INTERNAL_CSS_STRING: - state = CSS_STRING; - languageIndex = LANG_INDEX_CSS; - cssPrevState = -initialTokenType&0xff; - break; - case INTERNAL_CSS_CHAR: - state = CSS_CHAR_LITERAL; - languageIndex = LANG_INDEX_CSS; - cssPrevState = -initialTokenType&0xff; - break; - case INTERNAL_CSS_MLC: - state = CSS_C_STYLE_COMMENT; - languageIndex = LANG_INDEX_CSS; - cssPrevState = -initialTokenType&0xff; - break; - } - } - else { - state = YYINITIAL; - } - break; - } - - setLanguageIndex(languageIndex); - start = text.offset; - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Sets whether markup close tags should be completed. You might not want - * this to be the case, since some tags in standard HTML aren't usually - * closed. - * - * @param complete Whether closing markup tags are completed. - * @see #getCompleteCloseTags() - */ - public static void setCompleteCloseTags(boolean complete) { - completeCloseTags = complete; - } - - - /** - * Overridden to remember the language index we're leaving. - */ - @Override - protected void yybegin(int state, int languageIndex) { - phpInLangIndex = getLanguageIndex(); - yybegin(state); - setLanguageIndex(languageIndex); - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = zzPushbackPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtBOL = true; - zzAtEOF = false; - } - - -%} - -// HTML-specific stuff. -Whitespace = ([ \t\f]+) -LineTerminator = ([\n]) -Identifier = ([^ \t\n<&]+) -EntityReference = ([&][^; \t]*[;]?) -InTagIdentifier = ([^ \t\n\"\'/=>]+) -EndScriptTag = ("") -EndStyleTag = ("") - - -// General stuff. -Letter = [A-Za-z] -NonzeroDigit = [1-9] -Digit = ("0"|{NonzeroDigit}) -HexDigit = ({Digit}|[A-Fa-f]) -OctalDigit = ([0-7]) -LetterOrUnderscore = ({Letter}|"_") -LetterOrUnderscoreOrDash = ({LetterOrUnderscore}|[\-]) - - -// JavaScript stuff. -EscapedSourceCharacter = ("u"{HexDigit}{HexDigit}{HexDigit}{HexDigit}) -NonSeparator = ([^\t\f\r\n\ \(\)\{\}\[\]\;\,\.\=\>\<\!\~\?\:\+\-\*\/\&\|\^\%\"\']|"#"|"\\") -IdentifierStart = ({Letter}|"_"|"$") -IdentifierPart = ({IdentifierStart}|{Digit}|("\\"{EscapedSourceCharacter})) -JS_MLCBegin = "/*" -JS_MLCEnd = "*/" -JS_LineCommentBegin = "//" -JS_IntegerHelper1 = (({NonzeroDigit}{Digit}*)|"0") -JS_IntegerHelper2 = ("0"(([xX]{HexDigit}+)|({OctalDigit}*))) -JS_IntegerLiteral = ({JS_IntegerHelper1}[lL]?) -JS_HexLiteral = ({JS_IntegerHelper2}[lL]?) -JS_FloatHelper1 = ([fFdD]?) -JS_FloatHelper2 = ([eE][+-]?{Digit}+{JS_FloatHelper1}) -JS_FloatLiteral1 = ({Digit}+"."({JS_FloatHelper1}|{JS_FloatHelper2}|{Digit}+({JS_FloatHelper1}|{JS_FloatHelper2}))) -JS_FloatLiteral2 = ("."{Digit}+({JS_FloatHelper1}|{JS_FloatHelper2})) -JS_FloatLiteral3 = ({Digit}+{JS_FloatHelper2}) -JS_FloatLiteral = ({JS_FloatLiteral1}|{JS_FloatLiteral2}|{JS_FloatLiteral3}|({Digit}+[fFdD])) -JS_ErrorNumberFormat = (({JS_IntegerLiteral}|{JS_HexLiteral}|{JS_FloatLiteral}){NonSeparator}+) -JS_Separator = ([\(\)\{\}\[\]\]]) -JS_Separator2 = ([\;,.]) -JS_NonAssignmentOperator = ("+"|"-"|"<="|"^"|"++"|"<"|"*"|">="|"%"|"--"|">"|"/"|"!="|"?"|">>"|"!"|"&"|"=="|":"|">>"|"~"|"||"|"&&"|">>>") -JS_AssignmentOperator = ("="|"-="|"*="|"/="|"|="|"&="|"^="|"+="|"%="|"<<="|">>="|">>>=") -JS_Operator = ({JS_NonAssignmentOperator}|{JS_AssignmentOperator}) -JS_Identifier = ({IdentifierStart}{IdentifierPart}*) -JS_ErrorIdentifier = ({NonSeparator}+) -JS_Regex = ("/"([^\*\\/]|\\.)([^/\\]|\\.)*"/"[gim]*) -JS_BooleanLiteral = ("true"|"false") - - -// PHP stuff (most PHP stuff is shared with JS for simplicity) -PHP_Start = (" { - "" { yybegin(YYINITIAL); addToken(start,zzStartRead+2, Token.MARKUP_COMMENT); } - "-" {} - {LineTerminator} | - <> { addToken(start,zzStartRead-1, Token.MARKUP_COMMENT); return firstToken; } -} - - { - [^\n>]+ {} - ">" { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.MARKUP_DTD); } - {LineTerminator} | - <> { addToken(start,zzStartRead-1, Token.MARKUP_DTD); return firstToken; } -} - - { - [Aa] | - [aA][bB][bB][rR] | - [aA][cC][rR][oO][nN][yY][mM] | - [aA][dD][dD][rR][eE][sS][sS] | - [aA][pP][pP][lL][eE][tT] | - [aA][rR][eE][aA] | - [aA][rR][tT][iI][cC][lL][eE] | - [aA][sS][iI][dD][eE] | - [aA][uU][dD][iI][oO] | - [bB] | - [bB][aA][sS][eE] | - [bB][aA][sS][eE][fF][oO][nN][tT] | - [bB][dD][oO] | - [bB][gG][sS][oO][uU][nN][dD] | - [bB][iI][gG] | - [bB][lL][iI][nN][kK] | - [bB][lL][oO][cC][kK][qQ][uU][oO][tT][eE] | - [bB][oO][dD][yY] | - [bB][rR] | - [bB][uU][tT][tT][oO][nN] | - [cC][aA][nN][vV][aA][sS] | - [cC][aA][pP][tT][iI][oO][nN] | - [cC][eE][nN][tT][eE][rR] | - [cC][iI][tT][eE] | - [cC][oO][dD][eE] | - [cC][oO][lL] | - [cC][oO][lL][gG][rR][oO][uU][pP] | - [cC][oO][mM][mM][aA][nN][dD] | - [cC][oO][mM][mM][eE][nN][tT] | - [dD][dD] | - [dD][aA][tT][aA][gG][rR][iI][dD] | - [dD][aA][tT][aA][lL][iI][sS][tT] | - [dD][aA][tT][aA][tT][eE][mM][pP][lL][aA][tT][eE] | - [dD][eE][lL] | - [dD][eE][tT][aA][iI][lL][sS] | - [dD][fF][nN] | - [dD][iI][aA][lL][oO][gG] | - [dD][iI][rR] | - [dD][iI][vV] | - [dD][lL] | - [dD][tT] | - [eE][mM] | - [eE][mM][bB][eE][dD] | - [eE][vV][eE][nN][tT][sS][oO][uU][rR][cC][eE] | - [fF][iI][eE][lL][dD][sS][eE][tT] | - [fF][iI][gG][uU][rR][eE] | - [fF][oO][nN][tT] | - [fF][oO][oO][tT][eE][rR] | - [fF][oO][rR][mM] | - [fF][rR][aA][mM][eE] | - [fF][rR][aA][mM][eE][sS][eE][tT] | - [hH][123456] | - [hH][eE][aA][dD] | - [hH][eE][aA][dD][eE][rR] | - [hH][rR] | - [hH][tT][mM][lL] | - [iI] | - [iI][fF][rR][aA][mM][eE] | - [iI][lL][aA][yY][eE][rR] | - [iI][mM][gG] | - [iI][nN][pP][uU][tT] | - [iI][nN][sS] | - [iI][sS][iI][nN][dD][eE][xX] | - [kK][bB][dD] | - [kK][eE][yY][gG][eE][nN] | - [lL][aA][bB][eE][lL] | - [lL][aA][yY][eE][rR] | - [lL][eE][gG][eE][nN][dD] | - [lL][iI] | - [lL][iI][nN][kK] | - [mM][aA][pP] | - [mM][aA][rR][kK] | - [mM][aA][rR][qQ][uU][eE][eE] | - [mM][eE][nN][uU] | - [mM][eE][tT][aA] | - [mM][eE][tT][eE][rR] | - [mM][uU][lL][tT][iI][cC][oO][lL] | - [nN][aA][vV] | - [nN][eE][sS][tT] | - [nN][oO][bB][rR] | - [nN][oO][eE][mM][bB][eE][dD] | - [nN][oO][fF][rR][aA][mM][eE][sS] | - [nN][oO][lL][aA][yY][eE][rR] | - [nN][oO][sS][cC][rR][iI][pP][tT] | - [oO][bB][jJ][eE][cC][tT] | - [oO][lL] | - [oO][pP][tT][gG][rR][oO][uU][pP] | - [oO][pP][tT][iI][oO][nN] | - [oO][uU][tT][pP][uU][tT] | - [pP] | - [pP][aA][rR][aA][mM] | - [pP][lL][aA][iI][nN][tT][eE][xX][tT] | - [pP][rR][eE] | - [pP][rR][oO][gG][rR][eE][sS][sS] | - [qQ] | - [rR][uU][lL][eE] | - [sS] | - [sS][aA][mM][pP] | - [sS][cC][rR][iI][pP][tT] | - [sS][eE][cC][tT][iI][oO][nN] | - [sS][eE][lL][eE][cC][tT] | - [sS][eE][rR][vV][eE][rR] | - [sS][mM][aA][lL][lL] | - [sS][oO][uU][rR][cC][eE] | - [sS][pP][aA][cC][eE][rR] | - [sS][pP][aA][nN] | - [sS][tT][rR][iI][kK][eE] | - [sS][tT][rR][oO][nN][gG] | - [sS][tT][yY][lL][eE] | - [sS][uU][bB] | - [sS][uU][pP] | - [tT][aA][bB][lL][eE] | - [tT][bB][oO][dD][yY] | - [tT][dD] | - [tT][eE][xX][tT][aA][rR][eE][aA] | - [tT][fF][oO][oO][tT] | - [tT][hH] | - [tT][hH][eE][aA][dD] | - [tT][iI][mM][eE] | - [tT][iI][tT][lL][eE] | - [tT][rR] | - [tT][tT] | - [uU] | - [uU][lL] | - [vV][aA][rR] | - [vV][iI][dD][eE][oO] { addToken(Token.MARKUP_TAG_NAME); } - {InTagIdentifier} { /* A non-recognized HTML tag name */ yypushback(yylength()); yybegin(INTAG); } - . { /* Shouldn't happen */ yypushback(1); yybegin(INTAG); } - <> { addToken(zzMarkedPos,zzMarkedPos, INTERNAL_INTAG); return firstToken; } -} - - { - {PHP_Start} { addToken(Token.SEPARATOR); phpInState = zzLexicalState; yybegin(PHP, LANG_INDEX_PHP); } - "/" { addToken(Token.MARKUP_TAG_DELIMITER); } - {InTagIdentifier} { addToken(Token.MARKUP_TAG_ATTRIBUTE); } - {Whitespace} { addToken(Token.WHITESPACE); } - "=" { addToken(Token.OPERATOR); } - "/>" { yybegin(YYINITIAL); addToken(Token.MARKUP_TAG_DELIMITER); } - ">" { yybegin(YYINITIAL); addToken(Token.MARKUP_TAG_DELIMITER); } - [\"] { start = zzMarkedPos-1; yybegin(INATTR_DOUBLE); } - [\'] { start = zzMarkedPos-1; yybegin(INATTR_SINGLE); } - <> { addToken(zzMarkedPos,zzMarkedPos, INTERNAL_INTAG); return firstToken; } -} - - { - {PHP_Start} { int temp=zzStartRead; if (zzStartRead>start) addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addToken(temp, zzMarkedPos-1, Token.SEPARATOR); phpInState = zzLexicalState; yybegin(PHP, LANG_INDEX_PHP); } - [^\"<]* {} - "<" { /* Allowing "> { addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_DOUBLE); return firstToken; } -} - - { - {PHP_Start} { int temp=zzStartRead; if (zzStartRead>start) addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addToken(temp, zzMarkedPos-1, Token.SEPARATOR); phpInState = zzLexicalState; yybegin(PHP, LANG_INDEX_PHP); } - [^\'<]* {} - "<" { /* Allowing "> { addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_SINGLE); return firstToken; } -} - - { - {PHP_Start} { addToken(Token.SEPARATOR); phpInState = zzLexicalState; yybegin(PHP, LANG_INDEX_PHP); } - {InTagIdentifier} { addToken(Token.MARKUP_TAG_ATTRIBUTE); } - "/>" { addToken(Token.MARKUP_TAG_DELIMITER); yybegin(YYINITIAL); } - "/" { addToken(Token.MARKUP_TAG_DELIMITER); } // Won't appear in valid HTML. - {Whitespace} { addToken(Token.WHITESPACE); } - "=" { addToken(Token.OPERATOR); } - ">" { addToken(Token.MARKUP_TAG_DELIMITER); yybegin(JAVASCRIPT, LANG_INDEX_JS); } - [\"] { start = zzMarkedPos-1; yybegin(INATTR_DOUBLE_SCRIPT); } - [\'] { start = zzMarkedPos-1; yybegin(INATTR_SINGLE_SCRIPT); } - <> { addToken(zzMarkedPos,zzMarkedPos, INTERNAL_INTAG_SCRIPT); return firstToken; } -} - - { - {PHP_Start} { int temp=zzStartRead; if (zzStartRead>start) addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addToken(temp, zzMarkedPos-1, Token.SEPARATOR); phpInState = zzLexicalState; yybegin(PHP, LANG_INDEX_PHP); } - [^\"<]* {} - "<" { /* Allowing "> { addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_DOUBLE_QUOTE_SCRIPT); return firstToken; } -} - - { - {PHP_Start} { int temp=zzStartRead; if (zzStartRead>start) addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addToken(temp, zzMarkedPos-1, Token.SEPARATOR); phpInState = zzLexicalState; yybegin(PHP, LANG_INDEX_PHP); } - [^\'<]* {} - "<" { /* Allowing "> { addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_SINGLE_QUOTE_SCRIPT); return firstToken; } -} - - { - {PHP_Start} { addToken(Token.SEPARATOR); phpInState = zzLexicalState; yybegin(PHP, LANG_INDEX_PHP); } - {InTagIdentifier} { addToken(Token.MARKUP_TAG_ATTRIBUTE); } - "/>" { addToken(Token.MARKUP_TAG_DELIMITER); yybegin(YYINITIAL); } - "/" { addToken(Token.MARKUP_TAG_DELIMITER); } // Won't appear in valid HTML. - {Whitespace} { addToken(Token.WHITESPACE); } - "=" { addToken(Token.OPERATOR); } - ">" { addToken(Token.MARKUP_TAG_DELIMITER); yybegin(CSS, LANG_INDEX_CSS); } - [\"] { start = zzMarkedPos-1; yybegin(INATTR_DOUBLE_STYLE); } - [\'] { start = zzMarkedPos-1; yybegin(INATTR_SINGLE_STYLE); } - <> { addToken(zzMarkedPos,zzMarkedPos, INTERNAL_INTAG_STYLE); return firstToken; } -} - - { - {PHP_Start} { int temp=zzStartRead; if (zzStartRead>start) addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addToken(temp, zzMarkedPos-1, Token.SEPARATOR); phpInState = zzLexicalState; yybegin(PHP, LANG_INDEX_PHP); } - [^\"<]* {} - "<" { /* Allowing "> { addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_DOUBLE_QUOTE_STYLE); return firstToken; } -} - - { - {PHP_Start} { int temp=zzStartRead; if (zzStartRead>start) addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addToken(temp, zzMarkedPos-1, Token.SEPARATOR); phpInState = zzLexicalState; yybegin(PHP, LANG_INDEX_PHP); } - [^\'<]* {} - "<" { /* Allowing "> { addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_SINGLE_QUOTE_STYLE); return firstToken; } -} - - { - - {EndScriptTag} { - yybegin(YYINITIAL, LANG_INDEX_DEFAULT); - addToken(zzStartRead,zzStartRead+1, Token.MARKUP_TAG_DELIMITER); - addToken(zzMarkedPos-7,zzMarkedPos-2, Token.MARKUP_TAG_NAME); - addToken(zzMarkedPos-1,zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER); - } - - // ECMA 3+ keywords. - "break" | - "continue" | - "delete" | - "else" | - "for" | - "function" | - "if" | - "in" | - "new" | - "this" | - "typeof" | - "var" | - "void" | - "while" | - "with" { addToken(Token.RESERVED_WORD); } - "return" { addToken(Token.RESERVED_WORD_2); } - - //JavaScript 1.6 - "each" {if(JavaScriptTokenMaker.isJavaScriptCompatible("1.6")){ addToken(Token.RESERVED_WORD);} else {addToken(Token.IDENTIFIER);} } - //JavaScript 1.7 - "let" {if(JavaScriptTokenMaker.isJavaScriptCompatible("1.7")){ addToken(Token.RESERVED_WORD);} else {addToken(Token.IDENTIFIER);} } - - // Reserved (but not yet used) ECMA keywords. - "abstract" { addToken(Token.RESERVED_WORD); } - "boolean" { addToken(Token.DATA_TYPE); } - "byte" { addToken(Token.DATA_TYPE); } - "case" { addToken(Token.RESERVED_WORD); } - "catch" { addToken(Token.RESERVED_WORD); } - "char" { addToken(Token.DATA_TYPE); } - "class" { addToken(Token.RESERVED_WORD); } - "const" { addToken(Token.RESERVED_WORD); } - "debugger" { addToken(Token.RESERVED_WORD); } - "default" { addToken(Token.RESERVED_WORD); } - "do" { addToken(Token.RESERVED_WORD); } - "double" { addToken(Token.DATA_TYPE); } - "enum" { addToken(Token.RESERVED_WORD); } - "export" { addToken(Token.RESERVED_WORD); } - "extends" { addToken(Token.RESERVED_WORD); } - "final" { addToken(Token.RESERVED_WORD); } - "finally" { addToken(Token.RESERVED_WORD); } - "float" { addToken(Token.DATA_TYPE); } - "goto" { addToken(Token.RESERVED_WORD); } - "implements" { addToken(Token.RESERVED_WORD); } - "import" { addToken(Token.RESERVED_WORD); } - "instanceof" { addToken(Token.RESERVED_WORD); } - "int" { addToken(Token.DATA_TYPE); } - "interface" { addToken(Token.RESERVED_WORD); } - "long" { addToken(Token.DATA_TYPE); } - "native" { addToken(Token.RESERVED_WORD); } - "package" { addToken(Token.RESERVED_WORD); } - "private" { addToken(Token.RESERVED_WORD); } - "protected" { addToken(Token.RESERVED_WORD); } - "public" { addToken(Token.RESERVED_WORD); } - "short" { addToken(Token.DATA_TYPE); } - "static" { addToken(Token.RESERVED_WORD); } - "super" { addToken(Token.RESERVED_WORD); } - "switch" { addToken(Token.RESERVED_WORD); } - "synchronized" { addToken(Token.RESERVED_WORD); } - "throw" { addToken(Token.RESERVED_WORD); } - "throws" { addToken(Token.RESERVED_WORD); } - "transient" { addToken(Token.RESERVED_WORD); } - "try" { addToken(Token.RESERVED_WORD); } - "volatile" { addToken(Token.RESERVED_WORD); } - "null" { addToken(Token.RESERVED_WORD); } - - // Literals. - {JS_BooleanLiteral} { addToken(Token.LITERAL_BOOLEAN); } - "NaN" { addToken(Token.RESERVED_WORD); } - "Infinity" { addToken(Token.RESERVED_WORD); } - - // Functions. - "eval" | - "parseInt" | - "parseFloat" | - "escape" | - "unescape" | - "isNaN" | - "isFinite" { addToken(Token.FUNCTION); } - - {LineTerminator} { addEndToken(INTERNAL_IN_JS); return firstToken; } - {JS_Identifier} { addToken(Token.IDENTIFIER); } - {Whitespace} { addToken(Token.WHITESPACE); } - - /* String/Character literals. */ - [\'] { start = zzMarkedPos-1; validJSString = true; yybegin(JS_CHAR); } - [\"] { start = zzMarkedPos-1; validJSString = true; yybegin(JS_STRING); } - - - /* Comment literals. */ - "/**/" { addToken(Token.COMMENT_MULTILINE); } - {JS_MLCBegin} { start = zzMarkedPos-2; yybegin(JS_MLC); } - {JS_LineCommentBegin} { start = zzMarkedPos-2; yybegin(JS_EOL_COMMENT); } - - /* Attempt to identify regular expressions (not foolproof) - do after comments! */ - {JS_Regex} { - boolean highlightedAsRegex = false; - if (firstToken==null) { - addToken(Token.REGEX); - highlightedAsRegex = true; - } - else { - // If this is *likely* to be a regex, based on - // the previous token, highlight it as such. - Token t = firstToken.getLastNonCommentNonWhitespaceToken(); - if (RSyntaxUtilities.regexCanFollowInJavaScript(t)) { - addToken(Token.REGEX); - highlightedAsRegex = true; - } - } - // If it doesn't *appear* to be a regex, highlight it as - // individual tokens. - if (!highlightedAsRegex) { - int temp = zzStartRead + 1; - addToken(zzStartRead, zzStartRead, Token.OPERATOR); - zzStartRead = zzCurrentPos = zzMarkedPos = temp; - } - } - - /* Separators. */ - {JS_Separator} { addToken(Token.SEPARATOR); } - {JS_Separator2} { addToken(Token.IDENTIFIER); } - - {PHP_Start} { addToken(Token.SEPARATOR); phpInState = zzLexicalState; yybegin(PHP, LANG_INDEX_PHP); } - - /* Operators. */ - {JS_Operator} { addToken(Token.OPERATOR); } - - /* Numbers */ - {JS_IntegerLiteral} { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); } - {JS_HexLiteral} { addToken(Token.LITERAL_NUMBER_HEXADECIMAL); } - {JS_FloatLiteral} { addToken(Token.LITERAL_NUMBER_FLOAT); } - {JS_ErrorNumberFormat} { addToken(Token.ERROR_NUMBER_FORMAT); } - - {JS_ErrorIdentifier} { addToken(Token.ERROR_IDENTIFIER); } - - /* Ended with a line not in a string or comment. */ - <> { addEndToken(INTERNAL_IN_JS); return firstToken; } - - /* Catch any other (unhandled) characters and flag them as bad. */ - . { addToken(Token.ERROR_IDENTIFIER); } - -} - - - { - {PHP_Start} { int temp=zzStartRead; if (zzStartRead>start) addToken(start,zzStartRead-1, validJSString ? Token.LITERAL_STRING_DOUBLE_QUOTE : Token.ERROR_STRING_DOUBLE); validJSString = true; addToken(temp, zzMarkedPos-1, Token.SEPARATOR); phpInState = zzLexicalState; yybegin(PHP, LANG_INDEX_PHP); } - [^\n\\\"<]+ {} - "<" { /* Allowing " continue to next line. */ - if (validJSString) { - addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); - addEndToken(INTERNAL_IN_JS_STRING_VALID); - } - else { - addToken(start,zzStartRead, Token.ERROR_STRING_DOUBLE); - addEndToken(INTERNAL_IN_JS_STRING_INVALID); - } - return firstToken; - } - \" { int type = validJSString ? Token.LITERAL_STRING_DOUBLE_QUOTE : Token.ERROR_STRING_DOUBLE; addToken(start,zzStartRead, type); yybegin(JAVASCRIPT); } - <> { addToken(start,zzStartRead-1, Token.ERROR_STRING_DOUBLE); addEndToken(INTERNAL_IN_JS); return firstToken; } -} - - { - {PHP_Start} { int temp=zzStartRead; if (zzStartRead>start) addToken(start,zzStartRead-1, validJSString ? Token.LITERAL_CHAR : Token.ERROR_CHAR); validJSString = true; addToken(temp, zzMarkedPos-1, Token.SEPARATOR); phpInState = zzLexicalState; yybegin(PHP, LANG_INDEX_PHP); } - [^\n\\\'<]+ {} - "<" { /* Allowing " continue to next line. */ - if (validJSString) { - addToken(start,zzStartRead, Token.LITERAL_CHAR); - addEndToken(INTERNAL_IN_JS_CHAR_VALID); - } - else { - addToken(start,zzStartRead, Token.ERROR_CHAR); - addEndToken(INTERNAL_IN_JS_CHAR_INVALID); - } - return firstToken; - } - \' { int type = validJSString ? Token.LITERAL_CHAR : Token.ERROR_CHAR; addToken(start,zzStartRead, type); yybegin(JAVASCRIPT); } - <> { addToken(start,zzStartRead-1, Token.ERROR_CHAR); addEndToken(INTERNAL_IN_JS); return firstToken; } -} - - { - // JavaScript MLC's. This state is essentially Java's MLC state. - [^hwf<\n\*]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_MULTILINE); start = zzMarkedPos; } - [hwf] {} - {EndScriptTag} { - yybegin(YYINITIAL); - int temp = zzStartRead; - addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); - addToken(temp,temp+1, Token.MARKUP_TAG_DELIMITER); - addToken(zzMarkedPos-7,zzMarkedPos-2, Token.MARKUP_TAG_NAME); - addToken(zzMarkedPos-1,zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER); - } - "<" {} - \n { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_IN_JS_MLC); return firstToken; } - {JS_MLCEnd} { yybegin(JAVASCRIPT); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); } - \* {} - <> { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_IN_JS_MLC); return firstToken; } -} - - - { - [^hwf<\n]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_EOL); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_EOL); start = zzMarkedPos; } - [hwf] {} - {EndScriptTag} { - int temp = zzStartRead; - addToken(start,zzStartRead-1, Token.COMMENT_EOL); - yybegin(YYINITIAL, LANG_INDEX_DEFAULT); - addToken(temp,temp+1, Token.MARKUP_TAG_DELIMITER); - addToken(zzMarkedPos-7,zzMarkedPos-2, Token.MARKUP_TAG_NAME); - addToken(zzMarkedPos-1,zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER); - } - "<" {} - \n { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addEndToken(INTERNAL_IN_JS); return firstToken; } - <> { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addEndToken(INTERNAL_IN_JS); return firstToken; } - -} - - - { - {PHP_Start} { addToken(Token.SEPARATOR); phpInState = zzLexicalState; yybegin(PHP, LANG_INDEX_PHP); } - {EndStyleTag} { - yybegin(YYINITIAL, LANG_INDEX_DEFAULT); - addToken(zzStartRead,zzStartRead+1, Token.MARKUP_TAG_DELIMITER); - addToken(zzMarkedPos-6,zzMarkedPos-2, Token.MARKUP_TAG_NAME); - addToken(zzMarkedPos-1,zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER); - } - {CSS_SelectorPiece} { addToken(Token.DATA_TYPE); } - {CSS_PseudoClass} { addToken(Token.RESERVED_WORD); } - ":" { /* Unknown pseudo class */ addToken(Token.DATA_TYPE); } - {CSS_AtKeyword} { addToken(Token.REGEX); } - {CSS_Id} { addToken(Token.VARIABLE); } - "{" { addToken(Token.SEPARATOR); yybegin(CSS_PROPERTY); } - [,] { addToken(Token.IDENTIFIER); } - \" { start = zzMarkedPos-1; cssPrevState = zzLexicalState; yybegin(CSS_STRING); } - \' { start = zzMarkedPos-1; cssPrevState = zzLexicalState; yybegin(CSS_CHAR_LITERAL); } - [+>~\^$\|=] { addToken(Token.OPERATOR); } - {CSS_Separator} { addToken(Token.SEPARATOR); } - {Whitespace} { addToken(Token.WHITESPACE); } - {CSS_MlcStart} { start = zzMarkedPos-2; cssPrevState = zzLexicalState; yybegin(CSS_C_STYLE_COMMENT); } - . { /*System.out.println("CSS: " + yytext());*/ addToken(Token.IDENTIFIER); } - "\n" | - <> { addEndToken(INTERNAL_CSS); return firstToken; } -} - - { - {PHP_Start} { addToken(Token.SEPARATOR); phpInState = zzLexicalState; yybegin(PHP, LANG_INDEX_PHP); } - {EndStyleTag} { - yybegin(YYINITIAL, LANG_INDEX_DEFAULT); - addToken(zzStartRead,zzStartRead+1, Token.MARKUP_TAG_DELIMITER); - addToken(zzMarkedPos-6,zzMarkedPos-2, Token.MARKUP_TAG_NAME); - addToken(zzMarkedPos-1,zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER); - } - {CSS_Property} { addToken(Token.RESERVED_WORD); } - "}" { addToken(Token.SEPARATOR); yybegin(CSS); } - ":" { addToken(Token.OPERATOR); yybegin(CSS_VALUE); } - {Whitespace} { addToken(Token.WHITESPACE); } - {CSS_MlcStart} { start = zzMarkedPos-2; cssPrevState = zzLexicalState; yybegin(CSS_C_STYLE_COMMENT); } - . { /*System.out.println("css_property: " + yytext());*/ addToken(Token.IDENTIFIER); } - "\n" | - <> { addEndToken(INTERNAL_CSS_PROPERTY); return firstToken; } -} - - { - {PHP_Start} { addToken(Token.SEPARATOR); phpInState = zzLexicalState; yybegin(PHP, LANG_INDEX_PHP); } - {EndStyleTag} { - yybegin(YYINITIAL, LANG_INDEX_DEFAULT); - addToken(zzStartRead,zzStartRead+1, Token.MARKUP_TAG_DELIMITER); - addToken(zzMarkedPos-6,zzMarkedPos-2, Token.MARKUP_TAG_NAME); - addToken(zzMarkedPos-1,zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER); - } - {CSS_Value} { addToken(Token.IDENTIFIER); } - "!important" { addToken(Token.ANNOTATION); } - {CSS_Function} { int temp = zzMarkedPos - 2; - addToken(zzStartRead, temp, Token.FUNCTION); - addToken(zzMarkedPos-1, zzMarkedPos-1, Token.SEPARATOR); - zzStartRead = zzCurrentPos = zzMarkedPos; - } - {CSS_Number} { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); } - \" { start = zzMarkedPos-1; cssPrevState = zzLexicalState; yybegin(CSS_STRING); } - \' { start = zzMarkedPos-1; cssPrevState = zzLexicalState; yybegin(CSS_CHAR_LITERAL); } - ")" { /* End of a function */ addToken(Token.SEPARATOR); } - [;] { addToken(Token.OPERATOR); yybegin(CSS_PROPERTY); } - [,\.] { addToken(Token.IDENTIFIER); } - "}" { addToken(Token.SEPARATOR); yybegin(CSS); } - {Whitespace} { addToken(Token.WHITESPACE); } - {CSS_MlcStart} { start = zzMarkedPos-2; cssPrevState = zzLexicalState; yybegin(CSS_C_STYLE_COMMENT); } - . { /*System.out.println("css_value: " + yytext());*/ addToken(Token.IDENTIFIER); } - "\n" | - <> { addEndToken(INTERNAL_CSS_VALUE); return firstToken; } -} - - { - {PHP_Start} { int temp=zzStartRead; if (zzStartRead>start) addToken(start,zzStartRead-1, validJSString ? Token.LITERAL_CHAR : Token.ERROR_CHAR); validJSString = true; addToken(temp, zzMarkedPos-1, Token.SEPARATOR); phpInState = zzLexicalState; yybegin(PHP, LANG_INDEX_PHP); } - [^\n\\\"<]+ {} - "<" { /* Allowing "> { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addEndToken(INTERNAL_CSS_STRING - cssPrevState); return firstToken; } -} - - { - {PHP_Start} { int temp=zzStartRead; if (zzStartRead>start) addToken(start,zzStartRead-1, validJSString ? Token.LITERAL_CHAR : Token.ERROR_CHAR); validJSString = true; addToken(temp, zzMarkedPos-1, Token.SEPARATOR); phpInState = zzLexicalState; yybegin(PHP, LANG_INDEX_PHP); } - [^\n\\\'<]+ {} - "<" { /* Allowing "> { addToken(start,zzStartRead-1, Token.LITERAL_CHAR); addEndToken(INTERNAL_CSS_CHAR - cssPrevState); return firstToken; } -} - - { - {PHP_Start} { int temp=zzStartRead; if (zzStartRead>start) addToken(start,zzStartRead-1, validJSString ? Token.LITERAL_CHAR : Token.ERROR_CHAR); validJSString = true; addToken(temp, zzMarkedPos-1, Token.SEPARATOR); phpInState = zzLexicalState; yybegin(PHP, LANG_INDEX_PHP); } - [^hwf\n\*<]+ {} - "<" { /* Allowing "> { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_CSS_MLC - cssPrevState); return firstToken; } -} - - - { - - "?>" { yybegin(phpInState, phpInLangIndex); addToken(Token.MARKUP_TAG_DELIMITER); start = zzMarkedPos; } - - /* Error control operator */ - ("@"{JS_Identifier}) { - int count = yylength(); - addToken(zzStartRead,zzStartRead, Token.FUNCTION); - zzMarkedPos -= (count-1); //yypushback(count-1); - } - - /* Keywords */ - "__CLASS__" | - "__DIR__" | - "__FILE__" | - "__FUNCTION__" | - "__METHOD__" | - "__NAMESPACE__" | - "abstract" | - "and" | - "array" | - "as" | - "break" | - "case" | - "catch" | - "cfunction" | - "class" | - "clone" | - "const" | - "continue" | - "declare" | - "default" | - "die" | - "do" | - "echo" | - "else" | - "elseif" | - "empty" | - "enddeclare" | - "endfor" | - "endforeach" | - "endif" | - "endswitch" | - "endwhile" | - "eval" | - "extends" | - "final" | - "for" | - "foreach" | - "function" | - "global" | - "goto" | - "if" | - "implements" | - "include" | - "include_once" | - "interface" | - "instanceof" | - "isset" | - "list" | - "namespace" | - "new" | - "old_function" | - "or" | - "print" | - "private" | - "protected" | - "public" | - "require" | - "require_once" | - "static" | - "switch" | - "throw" | - "try" | - "unset" | - "use" | - "var" | - "while" | - "xor" | - - "parent" | - "self" | - "stdClass" { addToken(Token.RESERVED_WORD); } - - "exit" | - "return" { addToken(Token.RESERVED_WORD_2); } - - /* Functions */ - "__call" | - "__construct" | - "__getfunctions" | - "__getlastrequest" | - "__getlastresponse" | - "__gettypes" | - "__tostring" | - "abs" | - "acos" | - "acosh" | - "add" | - ("add"("_namespace"|"_root"|"action"|"color"|"cslashes"|"entry"|"fill"|"function"|"shape"|"slashes"|"string")) | - "aggregate" | - "aggregate_info" | - "aggregate_methods" | - "aggregate_methods_by_list" | - "aggregate_methods_by_regexp" | - "aggregate_properties" | - "aggregate_properties_by_list" | - "aggregate_properties_by_regexp" | - "aggregation_info" | - "align" | - ("apd_"("breakpoint"|"callstack"|"clunk"|"continue"|"croak"|"dump_function_table"|"dump_persistent_resources"|"dump_regular_resources"|"echo"|"get_active_symbols"|"set_pprof_trace"|"set_session"|"set_session_trace"|"set_socket_session_trace")) | - "append" | - "append_child" | - "append_sibling" | - "appendchild" | - "appenddata" | - ("array_"("change_key_case"|"chunk"|"combine"|"count_values"|"diff"|"diff_assoc"|"diff_key"|"diff_uassoc"|"diff_ukey"|"fill"|"filter"|"flip"|"intersect"|"intersect_assoc"|"intersect_key"|"intersect_uassoc"|"intersect_ukey"|"key_exists"|"keys"|"map"|"merge"|"merge_recursive"|"multisort"|"pad"|"pop"|"push"|"rand"|"reduce"|"reverse"|"search"|"shift"|"slice"|"splice"|"sum"|"udiff"|"udiff_assoc"|"udiff_uassoc"|"uintersect"|"uintersect_assoc"|"uintersect_uassoc"|"unique"|"unshift"|"values"|"walk"|"walk_recursive")) | - "arsort" | - "ascii2ebcdic" | - "asin" | - "asinh" | - "asort" | - "assert" | - "assert_options" | - "assign" | - "assignelem" | - "asxml" | - "atan" | - "atan2" | - "atanh" | - "attreditable" | - "attributes" | - "base64_decode" | - "base64_encode" | - "base_convert" | - "basename" | - "bcadd" | - "bccomp" | - "bcdiv" | - "bcmod" | - "bcmul" | - "bcpow" | - "bcpowmod" | - "bcscale" | - "bcsqrt" | - "bcsub" | - "begintransaction" | - "bin2hex" | - "bind_textdomain_codeset" | - "bindcolumn" | - "bindec" | - "bindparam" | - "bindtextdomain" | - "bzclose" | - "bzcompress" | - "bzdecompress" | - "bzerrno" | - "bzerror" | - "bzerrstr" | - "bzflush" | - "bzopen" | - "bzread" | - "bzwrite" | - "cal_days_in_month" | - "cal_from_jd" | - "cal_info" | - "cal_to_jd" | - "call_user_func" | - "call_user_func_array" | - "call_user_method" | - "call_user_method_array" | - ("ccvs_"("add"|"auth"|"command"|"count"|"delete"|"done"|"init"|"lookup"|"new"|"report"|"return"|"reverse"|"sale"|"status"|"textvalue"|"void")) | - "ceil" | - "chdir" | - "checkdate" | - "checkdnsrr" | - "checkin" | - "checkout" | - "chgrp" | - "child_nodes" | - "children" | - "chmod" | - "chop" | - "chown" | - "chr" | - "chroot" | - "chunk_split" | - "class_exists" | - "class_implements" | - "class_parents" | - "classkit_import" | - "classkit_method_add" | - "classkit_method_copy" | - "classkit_method_redefine" | - "classkit_method_remove" | - "classkit_method_rename" | - "clearstatcache" | - "clone_node" | - "clonenode" | - "close" | - "closedir" | - "closelog" | - "com" | - "commit" | - "compact" | - "connect" | - "connection_aborted" | - "connection_status" | - "connection_timeout" | - "constant" | - "content" | - "convert_cyr_string" | - "convert_uudecode" | - "convert_uuencode" | - "copy" | - "cos" | - "cosh" | - "count" | - "count_chars" | - "crack_check" | - "crack_closedict" | - "crack_getlastmessage" | - "crack_opendict" | - "crc32" | - ("create"("_attribute"|"_cdata_section"|"_comment"|"_element"|"_element_ns"|"_entity_reference"|"_function"|"_processing_instruction"|"_text_node"|"attribute"|"attributens"|"cdatasection"|"comment"|"document"|"documentfragment"|"documenttype"|"element"|"elementns"|"entityreference"|"processinginstruction"|"textnode")) | - "crypt" | - ("curl_"("close"|"copy_handle"|"errno"|"error"|"exec"|"getinfo"|"init"|"multi_add_handle"|"multi_close"|"multi_exec"|"multi_getcontent"|"multi_info_read"|"multi_init"|"multi_remove_handle"|"multi_select"|"setopt"|"version")) | - "current" | - "cybercash_base64_decode" | - "cybercash_base64_encode" | - "cybercash_decr" | - "cybercash_encr" | - "cyrus_authenticate" | - "cyrus_bind" | - "cyrus_close" | - "cyrus_connect" | - "cyrus_query" | - "cyrus_unbind" | - "data" | - "date" | - "date_sunrise" | - "date_sunset" | - "dblist" | - "dbmclose" | - "dbmdelete" | - "dbmexists" | - "dbmfetch" | - "dbmfirstkey" | - "dbminsert" | - "dbmnextkey" | - "dbmopen" | - "dbmreplace" | - "dbstat" | - "dcgettext" | - "dcngettext" | - "dcstat" | - "deaggregate" | - "debug_backtrace" | - "debug_print_backtrace" | - "debug_zval_dump" | - "debugger_off" | - "debugger_on" | - "decbin" | - "dechex" | - "decoct" | - "decrement" | - "define" | - "define_syslog_variables" | - "defined" | - "deg2rad" | - "delete" | - "deletedata" | - "description" | - "dgettext" | - ("dio_"("close"|"fcntl"|"open"|"read"|"seek"|"stat"|"tcsetattr"|"truncate"|"write")) | - "dir" | - "dirname" | - "disk_free_space" | - "disk_total_space" | - "diskfreespace" | - "dl" | - "dngettext" | - "dns_check_record" | - "dns_get_mx" | - "dns_get_record" | - "doctype" | - "document_element" | - "dom_import_simplexml" | - ("domxml_"("new_doc"|"open_file"|"open_mem"|"version"|"xmltree"|"xslt_stylesheet"|"xslt_stylesheet_doc"|"xslt_stylesheet_file")) | - "dotnet" | - "dotnet_load" | - "doubleval" | - "drawcurve" | - "drawcurveto" | - "drawline" | - "drawlineto" | - "dstanchors" | - "dstofsrcanchors" | - "dump_file" | - "dump_mem" | - "dump_node" | - "each" | - "easter_date" | - "easter_days" | - "ebcdic2ascii" | - "end" | - "entities" | - "eof" | - "erase" | - "ereg" | - "ereg_replace" | - "eregi" | - "eregi_replace" | - "error_log" | - "error_reporting" | - "errorcode" | - "errorinfo" | - "escapeshellarg" | - "escapeshellcmd" | - "exec" | - "execute" | - "exif_imagetype" | - "exif_read_data" | - "exif_tagname" | - "exif_thumbnail" | - "exp" | - "explode" | - "expm1" | - "export" | - "extension_loaded" | - "extract" | - "ezmlm_hash" | - "fclose" | - "feof" | - "fetch" | - "fetchall" | - "fetchsingle" | - "fflush" | - "fgetc" | - "fgetcsv" | - "fgets" | - "fgetss" | - "file" | - ("file"("_exists"|"_get_contents"|"_put_contents"|"atime"|"ctime"|"group"|"inode"|"mtime"|"owner"|"perms"|"pro"|"pro_fieldcount"|"pro_fieldname"|"pro_fieldtype"|"pro_fieldwidth"|"pro_retrieve"|"pro_rowcount"|"size"|"type")) | - "find" | - "first_child" | - "floatval" | - "flock" | - "floor" | - "flush" | - "fmod" | - "fnmatch" | - "fopen" | - "fpassthru" | - "fprintf" | - "fputcsv" | - "fputs" | - "fread" | - "free" | - "frenchtojd" | - "fribidi_log2vis" | - "fscanf" | - "fseek" | - "fsockopen" | - "fstat" | - "ftell" | - "ftok" | - ("ftp_"("alloc"|"cdup"|"chdir"|"chmod"|"close"|"connect"|"delete"|"exec"|"fget"|"fput"|"get"|"get_option"|"login"|"mdtm"|"mkdir"|"nb_continue"|"nb_fget"|"nb_fput"|"nb_get"|"nb_put"|"nlist"|"pasv"|"put"|"pwd"|"quit"|"raw"|"rawlist"|"rename"|"rmdir"|"set_option"|"site"|"size"|"ssl_connect"|"systype")) | - "ftruncate" | - "ftstat" | - "func_get_arg" | - "func_get_args" | - "func_num_args" | - "function_exists" | - "fwrite" | - "gd_info" | - "get" | - ("get"("_attr"|"_attribute"|"_attribute_node"|"_browser"|"_cfg_var"|"_class"|"_class_methods"|"_class_vars"|"_content"|"_current_user"|"_declared_classes"|"_declared_interfaces"|"_defined_constants"|"_defined_functions"|"_defined_vars"|"_element_by_id"|"_elements_by_tagname"|"_extension_funcs"|"_headers"|"_html_translation_table"|"_include_path"|"_included_files"|"_loaded_extensions"|"_magic_quotes_gpc"|"_magic_quotes_runtime"|"_meta_tags"|"_nodes"|"_object_vars"|"_parent_class"|"_required_files"|"_resource_type"|"allheaders"|"atime"|"attr"|"attribute"|"attributenode"|"attributenodens"|"attributens"|"buffering"|"children"|"crc"|"ctime"|"cwd"|"date"|"depth"|"elem"|"elementbyid"|"elementsbytagname"|"elementsbytagnamens"|"env"|"filename"|"filetime"|"functions"|"group"|"height"|"hostbyaddr"|"hostbyname"|"hostbynamel"|"hostos"|"imagesize"|"inneriterator"|"inode"|"iterator"|"lastmod"|"method"|"mtime"|"mxrr"|"mygid"|"myinode"|"mypid"|"myuid"|"name"|"nameditem"|"nameditemns"|"opt"|"owner"|"packedsize"|"path"|"pathname"|"perms"|"position"|"protobyname"|"protobynumber"|"randmax"|"rusage"|"servbyname"|"servbyport"|"shape1"|"shape2"|"size"|"stats"|"subiterator"|"text"|"timeofday"|"type"|"unpackedsize"|"version"|"width")) | - "glob" | - "gmdate" | - "gmmktime" | - ("gmp_"("abs"|"add"|"and"|"clrbit"|"cmp"|"com"|"div"|"div_q"|"div_qr"|"div_r"|"divexact"|"fact"|"gcd"|"gcdext"|"hamdist"|"init"|"intval"|"invert"|"jacobi"|"legendre"|"mod"|"mul"|"neg"|"or"|"perfect_square"|"popcount"|"pow"|"powm"|"prob_prime"|"random"|"scan0"|"scan1"|"setbit"|"sign"|"sqrt"|"sqrtrem"|"strval"|"sub"|"xor")) | - "gmstrftime" | - "gregoriantojd" | - ("gz"("close"|"compress"|"deflate"|"encode"|"eof"|"file"|"getc"|"gets"|"getss"|"inflate"|"open"|"passthru"|"puts"|"read"|"rewind"|"seek"|"tell"|"uncompress"|"write")) | - "handle" | - ("has"("_attribute"|"_attributes"|"_child_nodes"|"attribute"|"attributens"|"attributes"|"childnodes"|"children"|"feature"|"next"|"siblings")) | - "header" | - "headers_list" | - "headers_sent" | - "hebrev" | - "hebrevc" | - "hexdec" | - "highlight_file" | - "highlight_string" | - "html_dump_mem" | - "html_entity_decode" | - "htmlentities" | - "htmlspecialchars" | - ("http_"("build_query"|"response_code")) | - ("hw_"("array2objrec"|"changeobject"|"children"|"childrenobj"|"close"|"connect"|"connection_info"|"cp"|"deleteobject"|"docbyanchor"|"docbyanchorobj"|"document_attributes"|"document_bodytag"|"document_content"|"document_setcontent"|"document_size"|"dummy"|"edittext"|"error"|"errormsg"|"free_document"|"getanchors"|"getanchorsobj"|"getandlock"|"getchildcoll"|"getchildcollobj"|"getchilddoccoll"|"getchilddoccollobj"|"getobject"|"getobjectbyquery"|"getobjectbyquerycoll"|"getobjectbyquerycollobj"|"getobjectbyqueryobj"|"getparents"|"getparentsobj"|"getrellink"|"getremote"|"getremotechildren"|"getsrcbydestobj"|"gettext"|"getusername"|"identify"|"incollections"|"info"|"inscoll"|"insdoc"|"insertanchors"|"insertdocument"|"insertobject"|"mapid"|"modifyobject"|"mv"|"new_document"|"objrec2array"|"output_document"|"pconnect"|"pipedocument"|"root"|"setlinkroot"|"stat"|"unlock"|"who")) | - "hwapi_hgcsp" | - "hwstat" | - "hypot" | - ("ibase_"("add_user"|"affected_rows"|"backup"|"blob_add"|"blob_cancel"|"blob_close"|"blob_create"|"blob_echo"|"blob_get"|"blob_import"|"blob_info"|"blob_open"|"close"|"commit"|"commit_ret"|"connect"|"db_info"|"delete_user"|"drop_db"|"errcode"|"errmsg"|"execute"|"fetch_assoc"|"fetch_object"|"fetch_row"|"field_info"|"free_event_handler"|"free_query"|"free_result"|"gen_id"|"maintain_db"|"modify_user"|"name_result"|"num_fields"|"num_params"|"param_info"|"pconnect"|"prepare"|"query"|"restore"|"rollback"|"rollback_ret"|"server_info"|"service_attach"|"service_detach"|"set_event_handler"|"timefmt"|"trans"|"wait_event")) | - "iconv" | - ("iconv_"("get_encoding"|"mime_decode"|"mime_decode_headers"|"mime_encode"|"set_encoding"|"strlen"|"strpos"|"strrpos"|"substr")) | - "identify" | - "ignore_user_abort" | - ("image"("2wbmp"|"_type_to_extension"|"_type_to_mime_type"|"alphablending"|"antialias"|"arc"|"char"|"charup"|"colorallocate"|"colorallocatealpha"|"colorat"|"colorclosest"|"colorclosestalpha"|"colorclosesthwb"|"colordeallocate"|"colorexact"|"colorexactalpha"|"colormatch"|"colorresolve"|"colorresolvealpha"|"colorset"|"colorsforindex"|"colorstotal"|"colortransparent"|"copy"|"copymerge"|"copymergegray"|"copyresampled"|"copyresized"|"create"|"createfromgd"|"createfromgd2"|"createfromgd2part"|"createfromgif"|"createfromjpeg"|"createfrompng"|"createfromstring"|"createfromwbmp"|"createfromxbm"|"createfromxpm"|"createtruecolor"|"dashedline"|"destroy"|"ellipse"|"fill"|"filledarc"|"filledellipse"|"filledpolygon"|"filledrectangle"|"filltoborder"|"filter"|"fontheight"|"fontwidth"|"ftbbox"|"fttext"|"gammacorrect"|"gd"|"gd2"|"gif"|"interlace"|"istruecolor"|"jpeg"|"layereffect"|"line"|"loadfont"|"palettecopy"|"png"|"polygon"|"psbbox"|"pscopyfont"|"psencodefont"|"psextendfont"|"psfreefont"|"psloadfont"|"psslantfont"|"pstext"|"rectangle"|"rotate"|"savealpha"|"setbrush"|"setpixel"|"setstyle"|"setthickness"|"settile"|"string"|"stringup"|"sx"|"sy"|"truecolortopalette"|"ttfbbox"|"ttftext"|"types"|"wbmp"|"xbm")) | - ("imap_"("8bit"|"alerts"|"append"|"base64"|"binary"|"body"|"bodystruct"|"check"|"clearflag_full"|"close"|"createmailbox"|"delete"|"deletemailbox"|"errors"|"expunge"|"fetch_overview"|"fetchbody"|"fetchheader"|"fetchstructure"|"get_quota"|"get_quotaroot"|"getacl"|"getmailboxes"|"getsubscribed"|"header"|"headerinfo"|"headers"|"last_error"|"list"|"listmailbox"|"listscan"|"listsubscribed"|"lsub"|"mail"|"mail_compose"|"mail_copy"|"mail_move"|"mailboxmsginfo"|"mime_header_decode"|"msgno"|"num_msg"|"num_recent"|"open"|"ping"|"qprint"|"renamemailbox"|"reopen"|"rfc822_parse_adrlist"|"rfc822_parse_headers"|"rfc822_write_address"|"scanmailbox"|"search"|"set_quota"|"setacl"|"setflag_full"|"sort"|"status"|"subscribe"|"thread"|"timeout"|"uid"|"undelete"|"unsubscribe"|"utf7_decode"|"utf7_encode"|"utf8")) | - "implode" | - "import" | - "import_request_variables" | - "importnode" | - "in_array" | - "increment" | - "inet_ntop" | - "inet_pton" | - "info" | - ("ini_"("alter"|"get"|"get_all"|"restore"|"set")) | - "insert" | - "insert_before" | - "insertanchor" | - "insertbefore" | - "insertcollection" | - "insertdata" | - "insertdocument" | - "interface_exists" | - "internal_subset" | - "intval" | - "ip2long" | - "iptcembed" | - "iptcparse" | - ("is_"("a"|"array"|"blank_node"|"bool"|"callable"|"dir"|"double"|"executable"|"file"|"finite"|"float"|"infinite"|"int"|"integer"|"link"|"long"|"nan"|"null"|"numeric"|"object"|"readable"|"real"|"resource"|"scalar"|"soap_fault"|"string"|"subclass_of"|"uploaded_file"|"writable"|"writeable")) | - ("is"("asp"|"comment"|"dir"|"dot"|"executable"|"file"|"html"|"id"|"jste"|"link"|"php"|"readable"|"samenode"|"supported"|"text"|"whitespaceinelementcontent"|"writable"|"xhtml"|"xml")) | - "item" | - "iterator_count" | - "iterator_to_array" | - "java_last_exception_clear" | - "java_last_exception_get" | - "jddayofweek" | - "jdmonthname" | - "jdtofrench" | - "jdtogregorian" | - "jdtojewish" | - "jdtojulian" | - "jdtounix" | - "jewishtojd" | - "join" | - "jpeg2wbmp" | - ("json_"("decode"|"encode"|"last_error"("_msg")?)) | - "juliantojd" | - "key" | - "krsort" | - "ksort" | - "langdepvalue" | - "last_child" | - "lastinsertid" | - "lcg_value" | - ("ldap_"("8859_to_t61"|"add"|"bind"|"close"|"compare"|"connect"|"count_entries"|"delete"|"dn2ufn"|"err2str"|"errno"|"error"|"explode_dn"|"first_attribute"|"first_entry"|"first_reference"|"free_result"|"get_attributes"|"get_dn"|"get_entries"|"get_option"|"get_values"|"get_values_len"|"list"|"mod_add"|"mod_del"|"mod_replace"|"modify"|"next_attribute"|"next_entry"|"next_reference"|"parse_reference"|"parse_result"|"read"|"rename"|"sasl_bind"|"search"|"set_option"|"set_rebind_proc"|"sort"|"start_tls"|"t61_to_8859"|"unbind")) | - "levenshtein" | - "link" | - "linkinfo" | - "load" | - "loadhtml" | - "loadhtmlfile" | - "loadxml" | - "localeconv" | - "localtime" | - "lock" | - "log" | - "log10" | - "log1p" | - "long2ip" | - "lookupnamespaceuri" | - "lookupprefix" | - "lstat" | - "ltrim" | - "lzf_compress" | - "lzf_decompress" | - "lzf_optimized_for" | - "mail" | - "main" | - "max" | - ("mb_"("convert_case"|"convert_encoding"|"convert_kana"|"convert_variables"|"decode_mimeheader"|"decode_numericentity"|"detect_encoding"|"detect_order"|"encode_mimeheader"|"encode_numericentity"|"ereg"|"ereg_match"|"ereg_replace"|"ereg_search"|"ereg_search_getpos"|"ereg_search_getregs"|"ereg_search_init"|"ereg_search_pos"|"ereg_search_regs"|"ereg_search_setpos"|"eregi"|"eregi_replace"|"get_info"|"http_input"|"http_output"|"internal_encoding"|"language"|"list_encodings"|"output_handler"|"parse_str"|"preferred_mime_name"|"regex_encoding"|"regex_set_options"|"send_mail"|"split"|"strcut"|"strimwidth"|"strlen"|"strpos"|"strrpos"|"strtolower"|"strtoupper"|"strwidth"|"substitute_character"|"substr"|"substr_count")) | - ("mcal_"("append_event"|"close"|"create_calendar"|"date_compare"|"date_valid"|"day_of_week"|"day_of_year"|"days_in_month"|"delete_calendar"|"delete_event"|"event_add_attribute"|"event_init"|"event_set_alarm"|"event_set_category"|"event_set_class"|"event_set_description"|"event_set_end"|"event_set_recur_daily"|"event_set_recur_monthly_mday"|"event_set_recur_monthly_wday"|"event_set_recur_none"|"event_set_recur_weekly"|"event_set_recur_yearly"|"event_set_start"|"event_set_title"|"expunge"|"fetch_current_stream_event"|"fetch_event"|"is_leap_year"|"list_alarms"|"list_events"|"next_recurrence"|"open"|"popen"|"rename_calendar"|"reopen"|"snooze"|"store_event"|"time_valid"|"week_of_year")) | - ("mcrypt_"("cbc"|"cfb"|"create_iv"|"decrypt"|"ecb"|"enc_get_algorithms_name"|"enc_get_block_size"|"enc_get_iv_size"|"enc_get_key_size"|"enc_get_modes_name"|"enc_get_supported_key_sizes"|"enc_is_block_algorithm"|"enc_is_block_algorithm_mode"|"enc_is_block_mode"|"enc_self_test"|"encrypt"|"generic"|"generic_deinit"|"generic_end"|"generic_init"|"get_block_size"|"get_cipher_name"|"get_iv_size"|"get_key_size"|"list_algorithms"|"list_modes"|"module_close"|"module_get_algo_block_size"|"module_get_algo_key_size"|"module_get_supported_key_sizes"|"module_is_block_algorithm"|"module_is_block_algorithm_mode"|"module_is_block_mode"|"module_open"|"module_self_test"|"ofb")) | - "md5" | - "md5_file" | - "mdecrypt_generic" | - "memcache_debug" | - "memory_get_usage" | - "metaphone" | - "method_exists" | - "mhash" | - "mhash_count" | - "mhash_get_block_size" | - "mhash_get_hash_name" | - "mhash_keygen_s2k" | - "microtime" | - "mime_content_type" | - "mimetype" | - "min" | - "ming_setcubicthreshold" | - "ming_setscale" | - "ming_useswfversion" | - "mkdir" | - "mktime" | - "money_format" | - "move" | - "move_uploaded_file" | - "movepen" | - "movepento" | - "moveto" | - ("msession_"("connect"|"count"|"create"|"destroy"|"disconnect"|"find"|"get"|"get_array"|"get_data"|"inc"|"list"|"listvar"|"lock"|"plugin"|"randstr"|"set"|"set_array"|"set_data"|"timeout"|"uniq"|"unlock")) | - "msg_get_queue" | - "msg_receive" | - "msg_remove_queue" | - "msg_send" | - "msg_set_queue" | - "msg_stat_queue" | - "msql" | - "mt_getrandmax" | - "mt_rand" | - "mt_srand" | - "name" | - "natcasesort" | - "natsort" | - "next" | - "next_sibling" | - "nextframe" | - "ngettext" | - "nl2br" | - "nl_langinfo" | - ("node_"("name"|"type"|"value")) | - "normalize" | - "notations" | - ("notes_"("body"|"copy_db"|"create_db"|"create_note"|"drop_db"|"find_note"|"header_info"|"list_msgs"|"mark_read"|"mark_unread"|"nav_create"|"search"|"unread"|"version")) | - ("nsapi_"("request_headers"|"response_headers"|"virtual")) | - "number_format" | - ("ob_"("clean"|"end_clean"|"end_flush"|"flush"|"get_clean"|"get_contents"|"get_flush"|"get_length"|"get_level"|"get_status"|"gzhandler"|"iconv_handler"|"implicit_flush"|"list_handlers"|"start"|"tidyhandler")) | - "object" | - "objectbyanchor" | - ("oci"("_bind_by_name"|"_cancel"|"_close"|"_commit"|"_connect"|"_define_by_name"|"_error"|"_execute"|"_fetch"|"_fetch_all"|"_fetch_array"|"_fetch_assoc"|"_fetch_object"|"_fetch_row"|"_field_is_null"|"_field_name"|"_field_precision"|"_field_scale"|"_field_size"|"_field_type"|"_field_type_raw"|"_free_statement"|"_internal_debug"|"_lob_copy"|"_lob_is_equal"|"_new_collection"|"_new_connect"|"_new_cursor"|"_new_descriptor"|"_num_fields"|"_num_rows"|"_parse"|"_password_change"|"_pconnect"|"_result"|"_rollback"|"_server_version"|"_set_prefetch"|"_statement_type"|"bindbyname"|"cancel"|"closelob"|"collappend"|"collassign"|"collassignelem"|"collgetelem"|"collmax"|"collsize"|"colltrim"|"columnisnull"|"columnname"|"columnprecision"|"columnscale"|"columnsize"|"columntype"|"columntyperaw"|"commit"|"definebyname"|"error"|"execute"|"fetch"|"fetchinto"|"fetchstatement"|"freecollection"|"freecursor"|"freedesc"|"freestatement"|"internaldebug"|"loadlob"|"logoff"|"logon"|"newcollection"|"newcursor"|"newdescriptor"|"nlogon"|"numcols"|"parse"|"plogon"|"result"|"rollback"|"rowcount"|"savelob"|"savelobfile"|"serverversion"|"setprefetch"|"statementtype"|"writelobtofile"|"writetemporarylob")) | - "octdec" | - ("odbc_"("autocommit"|"binmode"|"close"|"close_all"|"columnprivileges"|"columns"|"commit"|"connect"|"cursor"|"data_source"|"do"|"error"|"errormsg"|"exec"|"execute"|"fetch_array"|"fetch_into"|"fetch_object"|"fetch_row"|"field_len"|"field_name"|"field_num"|"field_precision"|"field_scale"|"field_type"|"foreignkeys"|"free_result"|"gettypeinfo"|"longreadlen"|"next_result"|"num_fields"|"num_rows"|"pconnect"|"prepare"|"primarykeys"|"procedurecolumns"|"procedures"|"result"|"result_all"|"rollback"|"setoption"|"specialcolumns"|"statistics"|"tableprivileges"|"tables")) | - "offsetexists" | - "offsetget" | - "offsetset" | - "offsetunset" | - "opendir" | - "openlog" | - ("openssl_"("csr_export"|"csr_export_to_file"|"csr_new"|"csr_sign"|"error_string"|"free_key"|"get_privatekey"|"get_publickey"|"open"|"pkcs7_decrypt"|"pkcs7_encrypt"|"pkcs7_sign"|"pkcs7_verify"|"pkey_export"|"pkey_export_to_file"|"pkey_get_private"|"pkey_get_public"|"pkey_new"|"private_decrypt"|"private_encrypt"|"public_decrypt"|"public_encrypt"|"seal"|"sign"|"verify"|"x509_check_private_key"|"x509_checkpurpose"|"x509_export"|"x509_export_to_file"|"x509_free"|"x509_parse"|"x509_read")) | - ("ora_"("bind"|"close"|"columnname"|"columnsize"|"columntype"|"commit"|"commitoff"|"commiton"|"do"|"error"|"errorcode"|"exec"|"fetch"|"fetch_into"|"getcolumn"|"logoff"|"logon"|"numcols"|"numrows"|"open"|"parse"|"plogon"|"rollback")) | - "ord" | - "output" | - "output_add_rewrite_var" | - "output_reset_rewrite_vars" | - "overload" | - "override_function" | - "owner_document" | - "pack" | - "parent_node" | - "parents" | - "parse_ini_file" | - "parse_str" | - "parse_url" | - "parsekit_compile_file" | - "parsekit_compile_string" | - "parsekit_func_arginfo" | - "passthru" | - "pathinfo" | - "pclose" | - ("pcntl_"("alarm"|"exec"|"fork"|"getpriority"|"setpriority"|"signal"|"wait"|"waitpid"|"wexitstatus"|"wifexited"|"wifsignaled"|"wifstopped"|"wstopsig"|"wtermsig")) | - "pconnect" | - ("pdf_"("add_annotation"|"add_bookmark"|"add_launchlink"|"add_locallink"|"add_note"|"add_outline"|"add_pdflink"|"add_thumbnail"|"add_weblink"|"arc"|"arcn"|"attach_file"|"begin_page"|"begin_pattern"|"begin_template"|"circle"|"clip"|"close"|"close_image"|"close_pdi"|"close_pdi_page"|"closepath"|"closepath_fill_stroke"|"closepath_stroke"|"concat"|"continue_text"|"curveto"|"delete"|"end_page"|"end_pattern"|"end_template"|"endpath"|"fill"|"fill_stroke"|"findfont"|"fit_pdi_page"|"get_buffer"|"get_font"|"get_fontname"|"get_fontsize"|"get_image_height"|"get_image_width"|"get_majorversion"|"get_minorversion"|"get_parameter"|"get_pdi_parameter"|"get_pdi_value"|"get_value"|"initgraphics"|"lineto"|"load_font"|"makespotcolor"|"moveto"|"new"|"open"|"open_ccitt"|"open_file"|"open_gif"|"open_image"|"open_image_file"|"open_jpeg"|"open_memory_image"|"open_pdi"|"open_pdi_page"|"open_png"|"open_tiff"|"place_image"|"place_pdi_page"|"rect"|"restore"|"rotate"|"save"|"scale"|"set_border_color"|"set_border_dash"|"set_border_style"|"set_char_spacing"|"set_duration"|"set_font"|"set_horiz_scaling"|"set_info"|"set_info_author"|"set_info_creator"|"set_info_keywords"|"set_info_subject"|"set_info_title"|"set_leading"|"set_parameter"|"set_text_matrix"|"set_text_pos"|"set_text_rendering"|"set_text_rise"|"set_value"|"set_word_spacing"|"setcolor"|"setdash"|"setflat"|"setfont"|"setgray"|"setgray_fill"|"setgray_stroke"|"setlinecap"|"setlinejoin"|"setlinewidth"|"setmatrix"|"setmiterlimit"|"setpolydash"|"setrgbcolor"|"setrgbcolor_fill"|"setrgbcolor_stroke"|"show"|"show_boxed"|"show_xy"|"skew"|"stringwidth"|"stroke"|"translate")) | - "pfpro_cleanup" | - "pfpro_init" | - "pfpro_process" | - "pfpro_process_raw" | - "pfpro_version" | - "pfsockopen" | - ("pg_"("affected_rows"|"cancel_query"|"client_encoding"|"close"|"connect"|"connection_busy"|"connection_reset"|"connection_status"|"convert"|"copy_from"|"copy_to"|"dbname"|"delete"|"end_copy"|"escape_bytea"|"escape_string"|"fetch_all"|"fetch_array"|"fetch_assoc"|"fetch_object"|"fetch_result"|"fetch_row"|"field_is_null"|"field_name"|"field_num"|"field_prtlen"|"field_size"|"field_type"|"free_result"|"get_notify"|"get_pid"|"get_result"|"host"|"insert"|"last_error"|"last_notice"|"last_oid"|"lo_close"|"lo_create"|"lo_export"|"lo_import"|"lo_open"|"lo_read"|"lo_read_all"|"lo_seek"|"lo_tell"|"lo_unlink"|"lo_write"|"meta_data"|"num_fields"|"num_rows"|"options"|"parameter_status"|"pconnect"|"ping"|"port"|"put_line"|"query"|"result_error"|"result_seek"|"result_status"|"select"|"send_query"|"set_client_encoding"|"trace"|"tty"|"unescape_bytea"|"untrace"|"update"|"version")) | - "php_check_syntax" | - "php_ini_scanned_files" | - "php_logo_guid" | - "php_sapi_name" | - "php_strip_whitespace" | - "php_uname" | - "phpcredits" | - "phpinfo" | - "phpversion" | - "pi" | - "png2wbmp" | - "popen" | - "pos" | - ("posix_"("ctermid"|"get_last_error"|"getcwd"|"getegid"|"geteuid"|"getgid"|"getgrgid"|"getgrnam"|"getgroups"|"getlogin"|"getpgid"|"getpgrp"|"getpid"|"getppid"|"getpwnam"|"getpwuid"|"getrlimit"|"getsid"|"getuid"|"isatty"|"kill"|"mkfifo"|"setegid"|"seteuid"|"setgid"|"setpgid"|"setsid"|"setuid"|"strerror"|"times"|"ttyname"|"uname")) | - "pow" | - "prefix" | - "preg_grep" | - "preg_match" | - "preg_match_all" | - "preg_quote" | - "preg_replace" | - "preg_replace_callback" | - "preg_split" | - "prepare" | - "prev" | - "previous_sibling" | - "print_r" | - ("printer_"("abort"|"close"|"create_brush"|"create_dc"|"create_font"|"create_pen"|"delete_brush"|"delete_dc"|"delete_font"|"delete_pen"|"draw_bmp"|"draw_chord"|"draw_elipse"|"draw_line"|"draw_pie"|"draw_rectangle"|"draw_roundrect"|"draw_text"|"end_doc"|"end_page"|"get_option"|"list"|"logical_fontheight"|"open"|"select_brush"|"select_font"|"select_pen"|"set_option"|"start_doc"|"start_page"|"write")) | - "printf" | - "proc_close" | - "proc_get_status" | - "proc_nice" | - "proc_open" | - "proc_terminate" | - "process" | - "public_id" | - "putenv" | - "qdom_error" | - "qdom_tree" | - "query" | - "quoted_printable_decode" | - "quotemeta" | - "rad2deg" | - "rand" | - "range" | - "rar_close" | - "rar_entry_get" | - "rar_list" | - "rar_open" | - "rawurldecode" | - "rawurlencode" | - "read" | - "read_exif_data" | - "readdir" | - "readfile" | - "readgzfile" | - "readline" | - ("readline_"("add_history"|"callback_handler_install"|"callback_handler_remove"|"callback_read_char"|"clear_history"|"completion_function"|"info"|"list_history"|"on_new_line"|"read_history"|"redisplay"|"write_history")) | - "readlink" | - "realpath" | - "reason" | - "recode" | - "recode_file" | - "recode_string" | - "register_shutdown_function" | - "register_tick_function" | - "registernamespace" | - "relaxngvalidate" | - "relaxngvalidatesource" | - "remove" | - "remove_attribute" | - "remove_child" | - "removeattribute" | - "removeattributenode" | - "removeattributens" | - "removechild" | - "rename" | - "rename_function" | - "replace" | - "replace_child" | - "replace_node" | - "replacechild" | - "replacedata" | - "reset" | - "restore_error_handler" | - "restore_exception_handler" | - "restore_include_path" | - "result_dump_file" | - "result_dump_mem" | - "rewind" | - "rewinddir" | - "rmdir" | - "rollback" | - "rotate" | - "rotateto" | - "round" | - "rowcount" | - "rsort" | - "rtrim" | - "save" | - "savehtml" | - "savehtmlfile" | - "savexml" | - "scale" | - "scaleto" | - "scandir" | - "schemavalidate" | - "schemavalidatesource" | - "seek" | - "sem_acquire" | - "sem_get" | - "sem_release" | - "sem_remove" | - "serialize" | - ("sesam_"("affected_rows"|"commit"|"connect"|"diagnostic"|"disconnect"|"errormsg"|"execimm"|"fetch_array"|"fetch_result"|"fetch_row"|"field_array"|"field_name"|"free_result"|"num_fields"|"query"|"rollback"|"seek_row"|"sesam_settransaction")) | - ("session_"("cache_expire"|"cache_limiter"|"commit"|"decode"|"destroy"|"encode"|"get_cookie_params"|"id"|"is_registered"|"module_name"|"name"|"regenerate_id"|"register"|"save_path"|"set_cookie_params"|"set_save_handler"|"start"|"unregister"|"unset"|"write_close")) | - "set" | - ("set"("_attribute"|"_content"|"_error_handler"|"_exception_handler"|"_file_buffer"|"_include_path"|"_magic_quotes_runtime"|"_name"|"_namespace"|"_time_limit"|"action"|"attribute"|"attributenode"|"attributenodens"|"attributens"|"background"|"bounds"|"buffering"|"class"|"color"|"commitedversion"|"cookie"|"depth"|"dimension"|"down"|"font"|"frames"|"height"|"hit"|"indentation"|"leftfill"|"leftmargin"|"line"|"linespacing"|"locale"|"margins"|"name"|"over"|"persistence"|"rate"|"ratio"|"rawcookie"|"rightfill"|"rightmargin"|"spacing"|"type"|"up")) | - "sha1" | - "sha1_file" | - "shell_exec" | - "shm_attach" | - "shm_detach" | - "shm_get_var" | - "shm_put_var" | - "shm_remove" | - "shm_remove_var" | - "shmop_close" | - "shmop_delete" | - "shmop_open" | - "shmop_read" | - "shmop_size" | - "shmop_write" | - "show_source" | - "shuffle" | - "similar_text" | - "simplexml_import_dom" | - "simplexml_load_file" | - "simplexml_load_string" | - "sin" | - "sinh" | - "size" | - "sizeof" | - "skewx" | - "skewxto" | - "skewy" | - "skewyto" | - "sleep" | - ("socket_"("accept"|"bind"|"clear_error"|"close"|"connect"|"create"|"create_listen"|"create_pair"|"get_option"|"get_status"|"getpeername"|"getsockname"|"last_error"|"listen"|"read"|"recv"|"recvfrom"|"select"|"send"|"sendto"|"set_block"|"set_blocking"|"set_nonblock"|"set_option"|"set_timeout"|"shutdown"|"strerror"|"write")) | - "sort" | - "soundex" | - "specified" | - "spl_classes" | - "split" | - "spliti" | - "splittext" | - "sprintf" | - "sql_regcase" | - "sqrt" | - "srand" | - "srcanchors" | - "srcsofdst" | - "sscanf" | - "stat" | - ("str_"("ireplace"|"pad"|"repeat"|"replace"|"rot13"|"shuffle"|"split"|"word_count")) | - "strcasecmp" | - "strchr" | - "strcmp" | - "strcoll" | - "strcspn" | - ("stream_"("context_create"|"context_get_default"|"context_get_options"|"context_set_option"|"context_set_params"|"copy_to_stream"|"filter_append"|"filter_prepend"|"filter_register"|"filter_remove"|"get_contents"|"get_filters"|"get_line"|"get_meta_data"|"get_transports"|"get_wrappers"|"register_wrapper"|"select"|"set_blocking"|"set_timeout"|"set_write_buffer"|"socket_accept"|"socket_client"|"socket_enable_crypto"|"socket_get_name"|"socket_recvfrom"|"socket_sendto"|"socket_server"|"wrapper_register"|"wrapper_restore"|"wrapper_unregister")) | - ("str"("eammp3"|"ftime"|"ip_tags"|"ipcslashes"|"ipos"|"ipslashes"|"istr"|"len"|"natcasecmp"|"natcmp"|"ncasecmp"|"ncmp"|"pbrk"|"pos"|"ptime"|"rchr"|"rev"|"ripos"|"rpos"|"spn"|"str"|"tok"|"tolower"|"totime"|"toupper"|"tr"|"val")) | - "substr" | - "substr_compare" | - "substr_count" | - "substr_replace" | - "substringdata" | - ("swf_"("actiongeturl"|"actiongotoframe"|"actiongotolabel"|"actionnextframe"|"actionplay"|"actionprevframe"|"actionsettarget"|"actionstop"|"actiontogglequality"|"actionwaitforframe"|"addbuttonrecord"|"addcolor"|"closefile"|"definebitmap"|"definefont"|"defineline"|"definepoly"|"definerect"|"definetext"|"endbutton"|"enddoaction"|"endshape"|"endsymbol"|"fontsize"|"fontslant"|"fonttracking"|"getbitmapinfo"|"getfontinfo"|"getframe"|"labelframe"|"lookat"|"modifyobject"|"mulcolor"|"nextid"|"oncondition"|"openfile"|"ortho"|"ortho2"|"perspective"|"placeobject"|"polarview"|"popmatrix"|"posround"|"pushmatrix"|"removeobject"|"rotate"|"scale"|"setfont"|"setframe"|"shapearc"|"shapecurveto"|"shapecurveto3"|"shapefillbitmapclip"|"shapefillbitmaptile"|"shapefilloff"|"shapefillsolid"|"shapelinesolid"|"shapelineto"|"shapemoveto"|"showframe"|"startbutton"|"startdoaction"|"startshape"|"startsymbol"|"textwidth"|"translate"|"viewport")) | - "swfbutton_keypress" | - "symlink" | - "syslog" | - "system" | - "system_id" | - "tagname" | - "tan" | - "tanh" | - "target" | - "tcpwrap_check" | - "tell" | - "tempnam" | - "textdomain" | - ("tidy_"("access_count"|"clean_repair"|"config_count"|"diagnose"|"error_count"|"get_body"|"get_config"|"get_error_buffer"|"get_head"|"get_html"|"get_html_ver"|"get_output"|"get_release"|"get_root"|"get_status"|"getopt"|"is_xhtml"|"is_xml"|"load_config"|"parse_file"|"parse_string"|"repair_file"|"repair_string"|"reset_config"|"save_config"|"set_encoding"|"setopt"|"warning_count")) | - "time" | - "time_nanosleep" | - "title" | - "tmpfile" | - "token_get_all" | - "token_name" | - "touch" | - "trigger_error" | - "trim" | - "truncate" | - "type" | - "uasort" | - "ucfirst" | - "ucwords" | - "uksort" | - "umask" | - "uniqid" | - "unixtojd" | - "unlink" | - "unlink_node" | - "unlock" | - "unpack" | - "unregister_tick_function" | - "unserialize" | - "urldecode" | - "urlencode" | - "user" | - "user_error" | - "userlist" | - "usleep" | - "usort" | - "utf8_"("decode"|"encode") | - "valid" | - "validate" | - "value" | - "values" | - "var_"("dump"|"export") | - ("variant_"("abs"|"add"|"and"|"cast"|"cat"|"cmp"|"date_from_timestamp"|"date_to_timestamp"|"div"|"eqv"|"fix"|"get_type"|"idiv"|"imp"|"int"|"mod"|"mul"|"neg"|"not"|"or"|"pow"|"round"|"set"|"set_type"|"sub"|"xor")) | - "version_compare" | - "vfprintf" | - "virtual" | - ("vpopmail_"("add_alias_domain"|"add_alias_domain_ex"|"add_domain"|"add_domain_ex"|"add_user"|"alias_add"|"alias_del"|"alias_del_domain"|"alias_get"|"alias_get_all"|"auth_user"|"del_domain"|"del_domain_ex"|"del_user"|"error"|"passwd"|"set_user_quota")) | - "vprintf" | - "vsprintf" | - ("w32api_"("deftype"|"init_dtype"|"invoke_function"|"register_function"|"set_call_method")) | - "wddx_add_vars" | - "wddx_deserialize" | - "wddx_packet_end" | - "wddx_packet_start" | - "wddx_serialize_value" | - "wddx_serialize_vars" | - "wordwrap" | - "write" | - "writetemporary" | - "xattr_get" | - "xattr_list" | - "xattr_remove" | - "xattr_set" | - "xattr_supported" | - "xinclude" | - ("xml"("_error_string"|"_get_current_byte_index"|"_get_current_column_number"|"_get_current_line_number"|"_get_error_code"|"_parse"|"_parse_into_struct"|"_parser_create"|"_parser_create_ns"|"_parser_free"|"_parser_get_option"|"_parser_set_option"|"_set_character_data_handler"|"_set_default_handler"|"_set_element_handler"|"_set_end_namespace_decl_handler"|"_set_external_entity_ref_handler"|"_set_notation_decl_handler"|"_set_object"|"_set_processing_instruction_handler"|"_set_start_namespace_decl_handler"|"_set_unparsed_entity_decl_handler"|"rpc_decode"|"rpc_decode_request"|"rpc_encode"|"rpc_encode_request"|"rpc_get_type"|"rpc_is_fault"|"rpc_parse_method_descriptions"|"rpc_server_add_introspection_data"|"rpc_server_call_method"|"rpc_server_create"|"rpc_server_destroy"|"rpc_server_register_introspection_callback"|"rpc_server_register_method"|"rpc_set_type")) | - "xpath" | - "xpath_eval" | - "xpath_eval_expression" | - "xpath_new_context" | - "xptr_eval" | - "xptr_new_context" | - ("xsl_xsltprocessor_"("get_parameter"|"has_exslt_support"|"import_stylesheet"|"register_php_functions"|"remove_parameter"|"set_parameter"|"transform_to_doc"|"transform_to_uri"|"transform_to_xml"|"xslt_backend_info")) | - ("xslt_"("backend_name"|"backend_version"|"create"|"errno"|"error"|"free"|"getopt"|"process"|"set_base"|"set_encoding"|"set_error_handler"|"set_log"|"set_object"|"set_sax_handler"|"set_sax_handlers"|"set_scheme_handler"|"set_scheme_handlers"|"setopt")) | - ("yp_"("all"|"cat"|"err_string"|"errno"|"first"|"get_default_domain"|"master"|"match"|"next"|"yp_order")) | - "zend_logo_guid" | - "zend_version" | - ("zip_"("close"|"entry_close"|"entry_compressedsize"|"entry_compressionmethod"|"entry_filesize"|"entry_name"|"entry_open"|"entry_read"|"open"|"read")) | - "zlib_get_coding_type" | - - /* mysql functions */ - ("mysql_"("affected_rows"|"client_encoding"|"close"|"connect"|"create_db"|"data_seek"|"db_"("name"|"query")|"drop_db"|"errno"|"error"|"escape_string"|"fetch_"("array"|"assoc"|"field"|"lengths"|"object"|"row")|"field_"("flags"|"len"|"name"|"seek"|"table"|"type")|"free_result"|"get_"("client_info"|"host_info"|"proto_info"|"server_info")|"info"|"insert_id"|"list_"("dbs"|"fields"|"processes"|"tables")|"num_"("fields"|"rows")|"pconnect"|"ping"|"query"|"real_escape_string"|"result"|"select_db"|"set_charset"|"stat"|"tablename"|"thread_id"|"unbuffered_query")) | - - /* Function aliases */ - "apache_request_headers" | - "apache_response_headers" | - "attr_get" | - "attr_set" | - "autocommit" | - "bind_param" | - "bind_result" | - "bzclose" | - "bzflush" | - "bzwrite" | - "change_user" | - "character_set_name" | - "checkdnsrr" | - "chop" | - "client_encoding" | - "close" | - "commit" | - "connect" | - "data_seek" | - "debug" | - "disable_reads_from_master" | - "disable_rpl_parse" | - "diskfreespace" | - "doubleval" | - "dump_debug_info" | - "enable_reads_from_master" | - "enable_rpl_parse" | - "escape_string" | - "execute" | - "fbsql" | - "fbsql_tablename" | - "fetch" | - "fetch_array" | - "fetch_assoc" | - "fetch_field" | - "fetch_field_direct" | - "fetch_fields" | - "fetch_object" | - "fetch_row" | - "field_count" | - "field_seek" | - "fputs" | - "free" | - "free_result" | - "ftp_quit" | - "get_client_info" | - "get_required_files" | - "get_server_info" | - "getallheaders" | - "getmxrr" | - "gmp_div" | - ("gz"("close"|"eof"|"getc"|"gets"|"getss"|"passthru"|"puts"|"read"|"rewind"|"seek"|"tell"|"gzwrite")) | - "imap_create" | - "imap_fetchtext" | - "imap_header" | - "imap_listmailbox" | - "imap_listsubscribed" | - "imap_rename" | - "ini_alter" | - "init" | - "is_double" | - "is_int" | - "is_integer" | - "is_real" | - "is_writeable" | - "join" | - "key_exists" | - "kill" | - "ldap_close" | - "ldap_modify" | - "magic_quotes_runtime" | - "master_query" | - "ming_keypress" | - "ming_setcubicthreshold" | - "ming_setscale" | - "ming_useconstants" | - "ming_useswfversion" | - "more_results" | - "next_result" | - "num_rows" | - ("oci"("_free_cursor"|"bindbyname"|"cancel"|"collappend"|"collassignelem"|"collgetelem"|"collmax"|"collsize"|"colltrim"|"columnisnull"|"columnname"|"columnprecision"|"columnscale"|"columnsize"|"columntype"|"columntyperaw"|"commit"|"definebyname"|"error"|"execute"|"fetch"|"fetchstatement"|"freecollection"|"freecursor"|"freedesc"|"freestatement"|"internaldebug"|"loadlob"|"logoff"|"logon"|"newcollection"|"newcursor"|"newdescriptor"|"nlogon"|"numcols"|"parse"|"passwordchange"|"plogon"|"result"|"rollback"|"rowcount"|"savelob"|"savelobfile"|"serverversion"|"setprefetch"|"statementtype"|"writelobtofile")) | - "odbc_do" | - "odbc_field_precision" | - "openssl_free_key" | - "openssl_get_privatekey" | - "openssl_get_publickey" | - "options" | - ("pg_"("clientencoding"|"cmdtuples"|"errormessage"|"exec"|"fieldisnull"|"fieldname"|"fieldnum"|"fieldprtlen"|"fieldsize"|"fieldtype"|"freeresult"|"getlastoid"|"loclose"|"locreate"|"loexport"|"loimport"|"loopen"|"loread"|"loreadall"|"lounlink"|"lowrite"|"numfields"|"numrows"|"result"|"setclientencoding")) | - "ping" | - "pos" | - "posix_errno" | - "prepare" | - "query" | - "read_exif_data" | - "real_connect" | - "real_escape_string" | - "real_query" | - "recode" | - "reset" | - "result_metadata" | - "rollback" | - "rpl_parse_enabled" | - "rpl_probe" | - "rpl_query_type" | - "select_db" | - "send_long_data" | - "session_commit" | - "set_file_buffer" | - "set_local_infile_default" | - "set_local_infile_handler" | - "set_opt" | - "show_source" | - "sizeof" | - "slave_query" | - "snmpwalkoid" | - "socket_get_status" | - "socket_getopt" | - "socket_set_blocking" | - "socket_set_timeout" | - "socket_setopt" | - "sqlite_fetch_string" | - "sqlite_has_more" | - "ssl_set" | - "stat" | - "stmt" | - "stmt_init" | - "store_result" | - "strchr" | - "stream_register_wrapper" | - "thread_safe" | - "use_result" | - "user_error" | - ("velocis_"("autocommit"|"close"|"commit"|"connect"|"exec"|"fetch"|"fieldname"|"fieldnum"|"freeresult"|"off_autocommit"|"result"|"rollback")) | - "virtual" { addToken(Token.FUNCTION); } - - {PHP_BooleanLiteral} { addToken(Token.LITERAL_BOOLEAN); } - {PHP_Null} { addToken(Token.RESERVED_WORD); } - {PHP_Variable} { addToken(Token.VARIABLE); } - - {LineTerminator} { addPhpEndToken(INTERNAL_IN_PHP); return firstToken; } - {JS_Identifier} { addToken(Token.IDENTIFIER); } - {Whitespace} { addToken(Token.WHITESPACE); } - - /* String/Character literals. */ - [\"] { start = zzMarkedPos-1; yybegin(PHP_STRING); } - [\'] { start = zzMarkedPos-1; yybegin(PHP_CHAR); } - - /* Comment literals. */ - "/**/" { addToken(Token.COMMENT_MULTILINE); } - {JS_MLCBegin} { start = zzMarkedPos-2; yybegin(PHP_MLC); } - {PHP_LineCommentBegin}.* { addToken(Token.COMMENT_EOL); addPhpEndToken(INTERNAL_IN_PHP); return firstToken; } - - /* Separators. */ - {JS_Separator} { addToken(Token.SEPARATOR); } - {JS_Separator2} { addToken(Token.IDENTIFIER); } - - /* Operators. */ - {JS_Operator} { addToken(Token.OPERATOR); } - - /* Numbers */ - {JS_IntegerLiteral} { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); } - {JS_HexLiteral} { addToken(Token.LITERAL_NUMBER_HEXADECIMAL); } - {JS_FloatLiteral} { addToken(Token.LITERAL_NUMBER_FLOAT); } - {JS_ErrorNumberFormat} { addToken(Token.ERROR_NUMBER_FORMAT); } - - {JS_ErrorIdentifier} { addToken(Token.ERROR_IDENTIFIER); } - - /* Ended with a line not in a string or comment. */ - <> { addPhpEndToken(INTERNAL_IN_PHP); return firstToken; } - - /* Catch any other (unhandled) characters and assume they are okay. */ - . { addToken(Token.IDENTIFIER); } - -} - - - { - // PHP MLC's. This state is essentially Java's MLC state. - [^hwf\n\*]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_MULTILINE); start = zzMarkedPos; } - [hwf] {} - \n { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addPhpEndToken(INTERNAL_IN_PHP_MLC); return firstToken; } - {JS_MLCEnd} { yybegin(PHP); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); } - \* {} - <> { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addPhpEndToken(INTERNAL_IN_PHP_MLC); return firstToken; } -} - - - { - [^\n\\\$\"]+ {} - \n { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addPhpEndToken(INTERNAL_IN_PHP_STRING); return firstToken; } - \\.? { /* Skip escaped chars. */ } - {PHP_Variable} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addToken(temp,zzMarkedPos-1, Token.VARIABLE); start = zzMarkedPos; } - "$" {} - \" { yybegin(PHP); addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); } - <> { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addPhpEndToken(INTERNAL_IN_PHP_STRING); return firstToken; } -} - - - { - [^\n\\\']+ {} - \\.? { /* Skip escaped single quotes only, but this should still work. */ } - \n { addToken(start,zzStartRead-1, Token.LITERAL_CHAR); addPhpEndToken(INTERNAL_IN_PHP_CHAR); return firstToken; } - \' { yybegin(PHP); addToken(start,zzStartRead, Token.LITERAL_CHAR); } - <> { addToken(start,zzStartRead-1, Token.LITERAL_CHAR); addPhpEndToken(INTERNAL_IN_PHP_CHAR); return firstToken; } -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/PHPTokenMaker.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/PHPTokenMaker.java deleted file mode 100644 index 12b18d2..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/PHPTokenMaker.java +++ /dev/null @@ -1,25633 +0,0 @@ -/* The following code was generated by JFlex 1.4.1 on 5/7/14 11:03 PM */ - -/* - * 01/28/2009 - * - * PHPTokenMaker.java - Generates tokens for PHP syntax highlighting. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * Scanner for PHP files. - * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated PHPTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.9 - */ - -public class PHPTokenMaker extends AbstractMarkupTokenMaker { - - /** This character denotes the end of file */ - public static final int YYEOF = -1; - - /** lexical states */ - public static final int PHP = 18; - public static final int INATTR_SINGLE_SCRIPT = 9; - public static final int JS_CHAR = 14; - public static final int CSS_STRING = 25; - public static final int JS_MLC = 16; - public static final int CSS_CHAR_LITERAL = 26; - public static final int INTAG_SCRIPT = 7; - public static final int CSS_PROPERTY = 23; - public static final int CSS_C_STYLE_COMMENT = 27; - public static final int PHP_MLC = 19; - public static final int CSS = 22; - public static final int CSS_VALUE = 24; - public static final int COMMENT = 1; - public static final int INATTR_DOUBLE_SCRIPT = 8; - public static final int PHP_STRING = 20; - public static final int JAVASCRIPT = 13; - public static final int INTAG = 3; - public static final int INTAG_CHECK_TAG_NAME = 4; - public static final int INATTR_SINGLE_STYLE = 12; - public static final int DTD = 2; - public static final int PHP_CHAR = 21; - public static final int JS_EOL_COMMENT = 17; - public static final int INATTR_DOUBLE_STYLE = 11; - public static final int INATTR_SINGLE = 6; - public static final int YYINITIAL = 0; - public static final int INATTR_DOUBLE = 5; - public static final int JS_STRING = 15; - public static final int INTAG_STYLE = 10; - - /** - * Translates characters to character classes - */ - private static final String ZZ_CMAP_PACKED = - "\11\0\1\4\1\2\1\0\1\1\1\33\22\0\1\4\1\51\1\7"+ - "\1\34\1\36\1\50\1\5\1\113\1\110\1\107\1\37\1\42\1\45"+ - "\1\31\1\43\1\10\1\25\1\136\1\131\1\135\1\133\1\124\1\132"+ - "\1\27\1\137\1\24\1\53\1\6\1\3\1\46\1\17\1\52\1\106"+ - "\1\73\1\26\1\12\1\41\1\22\1\72\1\117\1\123\1\14\1\125"+ - "\1\120\1\21\1\116\1\75\1\115\1\15\1\121\1\13\1\11\1\16"+ - "\1\71\1\122\1\23\1\40\1\20\1\23\1\112\1\35\1\112\1\47"+ - "\1\30\1\0\1\64\1\105\1\77\1\100\1\62\1\63\1\57\1\70"+ - "\1\56\1\134\1\103\1\65\1\102\1\74\1\76\1\67\1\130\1\61"+ - "\1\66\1\60\1\32\1\104\1\114\1\111\1\101\1\126\1\127\1\55"+ - "\1\44\1\54\uff81\0"; - - /** - * Translates characters to character classes - */ - private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); - - /** - * Translates DFA states to action switch labels. - */ - private static final int [] ZZ_ACTION = zzUnpackAction(); - - private static final String ZZ_ACTION_PACKED_0 = - "\5\0\2\1\1\0\2\1\1\0\2\1\13\0\1\2"+ - "\3\0\2\2\1\3\1\4\1\5\1\6\1\1\1\7"+ - "\5\1\1\10\1\11\3\12\1\13\1\14\1\15\1\16"+ - "\1\17\1\20\1\21\1\22\2\20\2\22\3\20\2\22"+ - "\2\20\1\22\6\20\1\22\1\1\1\23\1\24\1\1"+ - "\1\25\1\14\1\26\1\27\1\30\1\31\1\32\1\33"+ - "\1\34\1\35\1\36\2\16\1\2\1\37\1\16\2\2"+ - "\1\16\2\40\1\16\1\2\1\35\2\16\1\2\1\41"+ - "\1\35\20\2\1\42\1\2\1\1\1\43\1\23\1\44"+ - "\1\45\1\1\1\46\1\23\1\47\1\50\1\1\1\51"+ - "\6\1\1\52\4\1\1\53\1\16\1\54\1\16\3\2"+ - "\1\55\1\2\1\16\27\2\1\35\1\2\1\56\4\2"+ - "\1\1\1\57\2\1\1\60\1\61\1\62\2\1\1\63"+ - "\1\64\1\65\1\66\1\67\1\66\1\70\1\66\1\71"+ - "\1\66\1\72\1\66\1\73\1\74\1\75\1\76\2\75"+ - "\1\77\1\75\1\100\1\101\1\102\1\103\1\102\1\104"+ - "\2\2\1\40\1\2\2\102\1\105\1\106\1\107\1\110"+ - "\1\111\1\112\1\113\1\1\1\4\2\114\1\115\1\116"+ - "\1\6\5\0\1\117\32\20\2\22\2\20\1\22\44\20"+ - "\1\120\1\121\2\0\1\117\1\0\1\122\1\0\1\123"+ - "\1\16\1\35\1\2\1\16\1\124\1\40\1\124\2\125"+ - "\1\124\1\126\1\124\1\2\1\77\1\2\1\77\45\2"+ - "\1\77\6\2\1\127\1\130\1\131\1\132\1\133\1\0"+ - "\1\134\11\0\1\135\11\2\1\136\1\137\100\2\1\77"+ - "\37\2\1\140\31\2\1\77\27\2\1\140\2\2\1\77"+ - "\33\2\1\141\25\2\1\142\1\62\1\143\1\64\1\0"+ - "\1\144\1\136\15\0\1\145\1\40\5\0\1\40\1\0"+ - "\1\146\1\147\2\114\2\0\1\150\4\0\1\12\14\20"+ - "\1\22\63\20\3\0\1\151\1\0\1\35\1\2\1\125"+ - "\1\0\2\126\3\2\1\71\25\2\1\152\33\2\16\0"+ - "\13\2\1\77\53\2\1\140\32\2\1\140\44\2\1\140"+ - "\5\2\1\140\30\2\1\77\22\2\2\140\5\2\1\140"+ - "\20\2\1\140\51\2\1\140\64\2\1\140\6\2\1\140"+ - "\4\2\1\140\25\2\1\140\21\2\1\140\3\2\1\140"+ - "\4\2\1\77\16\2\1\35\30\2\25\0\2\114\1\153"+ - "\3\0\1\154\1\12\22\20\1\22\12\20\1\22\5\20"+ - "\3\0\1\155\1\35\7\2\1\156\4\2\1\157\5\2"+ - "\1\71\17\2\2\0\1\1\4\0\1\160\3\0\1\161"+ - "\15\2\1\140\16\2\1\140\72\2\1\140\15\2\1\140"+ - "\15\2\1\140\21\2\1\140\1\2\1\77\12\2\1\162"+ - "\3\2\1\140\6\2\1\140\4\2\1\140\15\2\1\140"+ - "\15\2\1\140\4\2\1\140\11\2\1\140\11\2\1\140"+ - "\2\2\1\140\105\2\1\140\52\2\1\140\1\2\1\140"+ - "\112\2\2\140\42\2\1\140\44\2\1\35\30\2\17\0"+ - "\1\77\4\0\2\114\1\116\2\0\1\117\15\20\1\22"+ - "\6\20\1\120\1\0\1\117\1\35\5\2\1\77\3\2"+ - "\1\77\12\2\1\127\1\133\6\0\63\2\1\140\153\2"+ - "\1\140\23\2\2\140\16\2\1\140\4\2\1\140\5\2"+ - "\1\77\131\2\1\140\12\2\1\140\60\2\1\77\217\2"+ - "\1\77\1\140\1\77\5\2\1\140\1\77\22\2\1\140"+ - "\37\2\1\140\36\2\1\140\10\2\1\140\1\2\1\35"+ - "\5\2\1\140\5\2\1\140\21\2\16\0\1\114\1\163"+ - "\12\20\1\0\1\35\13\2\2\0\14\2\1\140\3\2"+ - "\1\140\31\2\1\140\43\2\1\140\134\2\4\140\53\2"+ - "\2\140\2\2\1\140\41\2\1\140\72\2\1\140\35\2"+ - "\1\77\52\2\1\77\52\2\2\140\37\2\1\140\102\2"+ - "\1\140\53\2\1\140\1\2\1\140\7\2\1\140\106\2"+ - "\1\35\42\2\12\0\1\164\3\20\1\0\6\2\2\0"+ - "\25\2\1\140\11\2\1\77\7\2\1\140\143\2\1\140"+ - "\1\2\1\140\11\2\1\140\2\2\1\140\6\2\1\140"+ - "\1\2\1\140\33\2\1\140\27\2\3\140\133\2\1\140"+ - "\172\2\1\140\240\2\1\140\116\2\1\140\25\2\1\35"+ - "\37\2\6\0\1\20\1\0\2\2\2\0\161\2\1\140"+ - "\37\2\1\140\32\2\1\140\24\2\1\77\47\2\1\140"+ - "\46\2\1\140\161\2\1\140\16\2\1\140\1\2\1\140"+ - "\31\2\1\140\51\2\1\140\311\2\1\165\4\0\1\20"+ - "\1\166\1\2\1\167\1\170\31\2\1\140\22\2\1\140"+ - "\1\2\1\140\13\2\1\140\12\2\1\140\1\2\1\140"+ - "\37\2\1\140\15\2\1\140\53\2\1\140\155\2\1\140"+ - "\13\2\1\140\116\2\1\140\47\2\2\140\14\2\1\140"+ - "\217\2\1\140\42\2\1\140\23\2\3\0\214\2\1\140"+ - "\2\2\1\140\66\2\1\140\51\2\1\140\36\2\1\140"+ - "\74\2\1\140\15\2\1\140\244\2\1\140\34\2\3\0"+ - "\1\171\26\2\1\140\14\2\1\140\10\2\1\140\101\2"+ - "\1\140\3\2\1\140\71\2\1\140\114\2\1\140\32\2"+ - "\1\140\204\2\1\140\127\2\1\140\22\2\1\140\2\2"+ - "\1\140\160\2\1\140\15\2\1\140\10\2\1\140\10\2"+ - "\1\140\5\2\2\140\2\2\1\140\112\2\1\140\210\2"+ - "\1\140\2\2\1\140\104\2\1\140\23\2\1\140\24\2"+ - "\1\140\30\2\1\140\40\2\1\140\72\2\1\140\30\2"+ - "\2\140\105\2\1\140\65\2\1\140\3\2\1\140\1\2"+ - "\1\140\14\2\1\140\17\2\1\140\54\2\1\140\22\2"+ - "\1\140\7\2\1\140\5\2\1\140\167\2\1\140\70\2"+ - "\1\140\4\2\1\140\113\2\1\140\1\2\1\140\1\2"+ - "\1\140\13\2\1\140\125\2\1\140\37\2\1\140\22\2"+ - "\1\140\45\2\1\140\27\2\1\140\154\2\1\140\171\2"+ - "\1\140\32\2"; - - private static int [] zzUnpackAction() { - int [] result = new int[7962]; - int offset = 0; - offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAction(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /** - * Translates a state to a row index in the transition table - */ - private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); - - private static final String ZZ_ROWMAP_PACKED_0 = - "\0\0\0\140\0\300\0\u0120\0\u0180\0\u01e0\0\u0240\0\u02a0"+ - "\0\u0300\0\u0360\0\u03c0\0\u0420\0\u0480\0\u04e0\0\u0540\0\u05a0"+ - "\0\u0600\0\u0660\0\u06c0\0\u0720\0\u0780\0\u07e0\0\u0840\0\u08a0"+ - "\0\u0900\0\u0960\0\u09c0\0\u0a20\0\u0a80\0\u0ae0\0\u0b40\0\u0ba0"+ - "\0\u0c00\0\u0c60\0\u0cc0\0\u0b40\0\u0d20\0\u0d80\0\u0de0\0\u0e40"+ - "\0\u0ea0\0\u0b40\0\u0b40\0\u0f00\0\u0f60\0\u0fc0\0\u0b40\0\u1020"+ - "\0\u0b40\0\u0b40\0\u0b40\0\u1080\0\u0b40\0\u10e0\0\u1140\0\u11a0"+ - "\0\u1200\0\u1260\0\u12c0\0\u1320\0\u1380\0\u13e0\0\u1440\0\u14a0"+ - "\0\u1500\0\u1560\0\u15c0\0\u1620\0\u1680\0\u16e0\0\u1740\0\u17a0"+ - "\0\u1080\0\u1800\0\u1860\0\u0b40\0\u18c0\0\u0b40\0\u1920\0\u0b40"+ - "\0\u0b40\0\u0b40\0\u0b40\0\u0b40\0\u0b40\0\u0b40\0\u1980\0\u0b40"+ - "\0\u19e0\0\u1a40\0\u0b40\0\u0b40\0\u1aa0\0\u1b00\0\u1b60\0\u1bc0"+ - "\0\u1c20\0\u1c80\0\u1ce0\0\u1d40\0\u0b40\0\u1da0\0\u1e00\0\u1e60"+ - "\0\u0b40\0\u1ec0\0\u1f20\0\u1f80\0\u1fe0\0\u2040\0\u20a0\0\u2100"+ - "\0\u2160\0\u21c0\0\u2220\0\u2280\0\u22e0\0\u2340\0\u23a0\0\u2400"+ - "\0\u2460\0\u24c0\0\u0b40\0\u2520\0\u2580\0\u0b40\0\u25e0\0\u2640"+ - "\0\u0b40\0\u26a0\0\u0b40\0\u2700\0\u0b40\0\u2640\0\u2760\0\u0b40"+ - "\0\u27c0\0\u2820\0\u2880\0\u28e0\0\u2940\0\u29a0\0\u0b40\0\u2a00"+ - "\0\u2a60\0\u2ac0\0\u2b20\0\u0b40\0\u2b80\0\u0b40\0\u2be0\0\u2c40"+ - "\0\u2ca0\0\u2d00\0\u2d60\0\u2dc0\0\u2e20\0\u1ec0\0\u2e80\0\u2ee0"+ - "\0\u2f40\0\u2fa0\0\u3000\0\u3060\0\u30c0\0\u3120\0\u3180\0\u31e0"+ - "\0\u3240\0\u32a0\0\u3300\0\u3360\0\u33c0\0\u3420\0\u3480\0\u34e0"+ - "\0\u3540\0\u35a0\0\u3600\0\u3660\0\u36c0\0\u3720\0\u0b40\0\u3780"+ - "\0\u37e0\0\u3840\0\u38a0\0\u3900\0\u0b40\0\u3960\0\u39c0\0\u0b40"+ - "\0\u0b40\0\u3a20\0\u3a80\0\u3ae0\0\u0b40\0\u3b40\0\u0b40\0\u0b40"+ - "\0\u0b40\0\u3ba0\0\u0b40\0\u3c00\0\u3c60\0\u3cc0\0\u3d20\0\u3d80"+ - "\0\u0b40\0\u0b40\0\u0b40\0\u0b40\0\u3ba0\0\u3c00\0\u3de0\0\u3e40"+ - "\0\u0b40\0\u0b40\0\u0b40\0\u0b40\0\u3ba0\0\u0b40\0\u3ea0\0\u3f00"+ - "\0\u3f60\0\u3fc0\0\u4020\0\u4080\0\u0b40\0\u0b40\0\u0b40\0\u0b40"+ - "\0\u0b40\0\u0b40\0\u0b40\0\u40e0\0\u4140\0\u41a0\0\u4200\0\u4260"+ - "\0\u42c0\0\u0b40\0\u4320\0\u4380\0\u43e0\0\u4440\0\u44a0\0\u4500"+ - "\0\u4560\0\u45c0\0\u4620\0\u4680\0\u46e0\0\u4740\0\u47a0\0\u4800"+ - "\0\u4860\0\u48c0\0\u4920\0\u4980\0\u49e0\0\u4a40\0\u4aa0\0\u4b00"+ - "\0\u4b60\0\u4bc0\0\u4c20\0\u4c80\0\u4ce0\0\u4d40\0\u4da0\0\u4e00"+ - "\0\u4e60\0\u4ec0\0\u4f20\0\u4f80\0\u4fe0\0\u5040\0\u50a0\0\u5100"+ - "\0\u5160\0\u51c0\0\u5220\0\u5280\0\u52e0\0\u5340\0\u53a0\0\u5400"+ - "\0\u5460\0\u54c0\0\u5520\0\u5580\0\u55e0\0\u5640\0\u56a0\0\u5700"+ - "\0\u5760\0\u57c0\0\u5820\0\u5880\0\u58e0\0\u5940\0\u59a0\0\u5a00"+ - "\0\u5a60\0\u5ac0\0\u5b20\0\u5b80\0\u5be0\0\u5c40\0\u5ca0\0\u5d00"+ - "\0\u5d60\0\u5dc0\0\u5e20\0\u5e80\0\u0b40\0\u1da0\0\u5ee0\0\u5f40"+ - "\0\u5fa0\0\u0b40\0\u6000\0\u6060\0\u5fa0\0\u60c0\0\u6120\0\u6180"+ - "\0\u61e0\0\u61e0\0\u6240\0\u61e0\0\u62a0\0\u6300\0\u6360\0\u63c0"+ - "\0\u6420\0\u1b00\0\u6480\0\u64e0\0\u6540\0\u65a0\0\u6600\0\u6660"+ - "\0\u66c0\0\u6720\0\u6780\0\u67e0\0\u6840\0\u68a0\0\u6900\0\u6960"+ - "\0\u69c0\0\u6a20\0\u6a80\0\u6ae0\0\u6b40\0\u6ba0\0\u6c00\0\u6c60"+ - "\0\u6cc0\0\u6d20\0\u6d80\0\u6de0\0\u6e40\0\u6ea0\0\u6f00\0\u6f60"+ - "\0\u6fc0\0\u7020\0\u7080\0\u70e0\0\u7140\0\u71a0\0\u7200\0\u7260"+ - "\0\u72c0\0\u7320\0\u7380\0\u73e0\0\u7440\0\u74a0\0\u7500\0\u7560"+ - "\0\u75c0\0\u0b40\0\u7620\0\u7680\0\u76e0\0\u7740\0\u0b40\0\u77a0"+ - "\0\u7800\0\u7860\0\u78c0\0\u7920\0\u7980\0\u79e0\0\u7a40\0\u7aa0"+ - "\0\u6060\0\u7b00\0\u7b60\0\u7bc0\0\u7c20\0\u7c80\0\u7ce0\0\u7d40"+ - "\0\u7da0\0\u7e00\0\u7e60\0\u0b40\0\u7ec0\0\u7f20\0\u7f80\0\u7fe0"+ - "\0\u8040\0\u80a0\0\u8100\0\u8160\0\u81c0\0\u8220\0\u8280\0\u82e0"+ - "\0\u8340\0\u83a0\0\u8400\0\u8460\0\u84c0\0\u8520\0\u8580\0\u85e0"+ - "\0\u8640\0\u86a0\0\u8700\0\u8760\0\u87c0\0\u8820\0\u8880\0\u88e0"+ - "\0\u8940\0\u89a0\0\u8a00\0\u8a60\0\u8ac0\0\u8b20\0\u8b80\0\u8be0"+ - "\0\u8c40\0\u8ca0\0\u8d00\0\u8d60\0\u8dc0\0\u8e20\0\u8e80\0\u8ee0"+ - "\0\u8f40\0\u8fa0\0\u9000\0\u9060\0\u90c0\0\u9120\0\u9180\0\u91e0"+ - "\0\u9240\0\u92a0\0\u9300\0\u9360\0\u93c0\0\u9420\0\u9480\0\u94e0"+ - "\0\u9540\0\u95a0\0\u9600\0\u9660\0\u96c0\0\u9720\0\u9780\0\u97e0"+ - "\0\u9840\0\u98a0\0\u9900\0\u9960\0\u99c0\0\u9a20\0\u9a80\0\u9ae0"+ - "\0\u9b40\0\u9ba0\0\u9c00\0\u9c60\0\u9cc0\0\u9d20\0\u9d80\0\u9de0"+ - "\0\u9e40\0\u9ea0\0\u9f00\0\u9f60\0\u9fc0\0\ua020\0\ua080\0\ua0e0"+ - "\0\ua140\0\ua1a0\0\ua200\0\ua260\0\ua2c0\0\ua320\0\ua380\0\ua3e0"+ - "\0\ua440\0\ua4a0\0\ua500\0\ua560\0\ua5c0\0\ua620\0\ua680\0\ua6e0"+ - "\0\ua740\0\ua7a0\0\ua800\0\ua860\0\ua8c0\0\ua920\0\ua980\0\ua9e0"+ - "\0\uaa40\0\uaaa0\0\uab00\0\uab60\0\uabc0\0\uac20\0\uac80\0\uace0"+ - "\0\uad40\0\uada0\0\uae00\0\uae60\0\uaec0\0\uaf20\0\uaf80\0\uafe0"+ - "\0\ub040\0\ub0a0\0\ub100\0\ub160\0\ub1c0\0\ub220\0\ub280\0\ub2e0"+ - "\0\ub340\0\ub3a0\0\ub400\0\ub460\0\ub4c0\0\ub520\0\u1b00\0\ub580"+ - "\0\ub5e0\0\ub640\0\ub6a0\0\ub700\0\ub760\0\ub7c0\0\ub820\0\ub880"+ - "\0\ub8e0\0\ub940\0\ub9a0\0\uba00\0\uba60\0\ubac0\0\ubb20\0\ubb80"+ - "\0\ubbe0\0\ubc40\0\ubca0\0\ubd00\0\ubd60\0\ubdc0\0\ube20\0\ube80"+ - "\0\ubee0\0\ubf40\0\ubfa0\0\uc000\0\uc060\0\uc0c0\0\uc120\0\uc180"+ - "\0\uc1e0\0\uc240\0\uc2a0\0\uc300\0\uc360\0\uc3c0\0\uc420\0\uc480"+ - "\0\uc4e0\0\uc540\0\uc5a0\0\uc600\0\uc660\0\uc6c0\0\uc720\0\uc780"+ - "\0\uc7e0\0\uc840\0\uc8a0\0\u0b40\0\u0b40\0\uc900\0\u0b40\0\uc960"+ - "\0\u0b40\0\uc9c0\0\uca20\0\uca80\0\ucae0\0\ucb40\0\ucba0\0\ucc00"+ - "\0\ucc60\0\uccc0\0\ucd20\0\ucd80\0\ucde0\0\uce40\0\ucea0\0\ucf00"+ - "\0\u0b40\0\ucf60\0\ucfc0\0\ud020\0\ud080\0\ud0e0\0\u4020\0\ud140"+ - "\0\u0b40\0\u4140\0\ud1a0\0\ud200\0\ud260\0\ud2c0\0\u0b40\0\ud320"+ - "\0\ud380\0\ud3e0\0\ud440\0\ud4a0\0\ud500\0\ud560\0\ud5c0\0\ud620"+ - "\0\ud680\0\ud6e0\0\ud740\0\ud7a0\0\ud800\0\ud860\0\ud8c0\0\ud920"+ - "\0\ud980\0\ud9e0\0\uda40\0\udaa0\0\udb00\0\udb60\0\udbc0\0\udc20"+ - "\0\udc80\0\udce0\0\udd40\0\udda0\0\ude00\0\ude60\0\udec0\0\udf20"+ - "\0\udf80\0\udfe0\0\u4f80\0\ue040\0\ue0a0\0\ue100\0\ue160\0\ue1c0"+ - "\0\ue220\0\ue280\0\ue2e0\0\ue340\0\ue3a0\0\ue400\0\ue460\0\ue4c0"+ - "\0\ue520\0\ue580\0\ue5e0\0\ue640\0\ue6a0\0\ue700\0\ue760\0\u1440"+ - "\0\ue7c0\0\ue820\0\ue880\0\ue8e0\0\ue940\0\ue9a0\0\uea00\0\uea60"+ - "\0\ueac0\0\ueb20\0\ueb80\0\uebe0\0\uec40\0\ueca0\0\ued00\0\ued60"+ - "\0\uedc0\0\uee20\0\uee80\0\ueee0\0\uef40\0\u61e0\0\uefa0\0\uf000"+ - "\0\uf060\0\uf0c0\0\uf120\0\uf180\0\uf1e0\0\uf240\0\uf2a0\0\uf300"+ - "\0\uf360\0\uf3c0\0\uf420\0\uf480\0\uf4e0\0\uf540\0\uf5a0\0\uf600"+ - "\0\uf660\0\uf6c0\0\uf720\0\uf780\0\uf7e0\0\uf840\0\uf8a0\0\uf900"+ - "\0\u1b00\0\uf960\0\uf9c0\0\ufa20\0\ufa80\0\ufae0\0\ufb40\0\ufba0"+ - "\0\ufc00\0\ufc60\0\ufcc0\0\ufd20\0\ufd80\0\ufde0\0\ufe40\0\ufea0"+ - "\0\uff00\0\uff60\0\uffc0\1\40\1\200\1\340\1\u0140\1\u01a0"+ - "\1\u0200\1\u0260\1\u02c0\1\u0320\1\u0380\1\u03e0\1\u0440\1\u04a0"+ - "\1\u0500\1\u0560\1\u05c0\1\u0620\1\u0680\1\u06e0\1\u0740\1\u07a0"+ - "\1\u0800\1\u0860\1\u08c0\1\u0920\1\u0980\1\u09e0\1\u0a40\1\u0aa0"+ - "\1\u0b00\1\u0b60\1\u0bc0\1\u0c20\1\u0c80\1\u0ce0\1\u0d40\1\u0da0"+ - "\1\u0e00\1\u0e60\1\u0ec0\1\u0f20\1\u0f80\1\u0fe0\1\u1040\1\u10a0"+ - "\1\u1100\1\u1160\1\u11c0\1\u1220\1\u1280\1\u12e0\1\u1340\1\u13a0"+ - "\1\u1400\1\u1460\1\u14c0\1\u1520\1\u1580\1\u15e0\1\u1640\1\u16a0"+ - "\1\u1700\1\u1760\1\u17c0\1\u1820\1\u1880\1\u18e0\1\u1940\1\u19a0"+ - "\1\u1a00\1\u1a60\1\u1ac0\1\u1b20\1\u1b80\1\u1be0\1\u1c40\1\u1ca0"+ - "\1\u1d00\1\u1d60\1\u1dc0\1\u1e20\1\u1e80\1\u1ee0\1\u1f40\1\u1fa0"+ - "\1\u2000\1\u2060\1\u20c0\1\u2120\1\u2180\1\u21e0\1\u2240\1\u22a0"+ - "\1\u2300\1\u2360\1\u23c0\1\u2420\1\u2480\1\u24e0\1\u2540\1\u25a0"+ - "\1\u2600\1\u2660\1\u26c0\1\u2720\1\u2780\1\u27e0\1\u2840\1\u28a0"+ - "\1\u2900\1\u2960\1\u29c0\1\u2a20\1\u2a80\1\u2ae0\1\u2b40\1\u2ba0"+ - "\1\u2c00\1\u2c60\1\u2cc0\1\u2d20\1\u2d80\1\u2de0\1\u2e40\1\u2ea0"+ - "\1\u2f00\1\u2f60\1\u2fc0\1\u3020\1\u3080\1\u30e0\1\u3140\1\u31a0"+ - "\1\u3200\1\u3260\1\u32c0\1\u3320\1\u2780\1\u3380\1\u33e0\1\u3440"+ - "\1\u34a0\1\u3500\1\u3560\1\u35c0\1\u3620\1\u3680\1\u36e0\1\u3740"+ - "\1\u37a0\1\u3800\1\u3860\1\u38c0\1\u3920\1\u3980\1\u39e0\1\u3a40"+ - "\1\u3aa0\1\u3b00\1\u3b60\1\u3bc0\1\u3c20\1\u3c80\1\u3ce0\1\u3d40"+ - "\1\u3da0\1\u3e00\1\u3e60\1\u3ec0\1\u3f20\1\u3f80\1\u3fe0\1\u4040"+ - "\1\u40a0\1\u4100\1\u4160\1\u41c0\1\u4220\1\u4280\1\u42e0\1\u4340"+ - "\1\u43a0\1\u4400\1\u4460\1\u44c0\1\u4520\1\u4580\1\u45e0\1\u4640"+ - "\1\u46a0\1\u4700\1\u4760\1\u47c0\0\uf900\1\u4820\1\u4880\1\u48e0"+ - "\1\u4940\1\u49a0\1\u4a00\1\u4a60\1\u4ac0\1\u4b20\1\u4b80\1\u4be0"+ - "\1\u4c40\1\u4ca0\1\u4d00\1\u4d60\1\u4dc0\1\u4e20\1\u4e80\1\u4ee0"+ - "\1\u4f40\1\u4fa0\1\u5000\1\u5060\1\u50c0\1\u5120\1\u5180\1\u51e0"+ - "\1\u5240\1\u52a0\1\u5300\1\u5360\1\u53c0\1\u5420\1\u5480\1\u54e0"+ - "\1\u5540\1\u55a0\1\u5600\1\u5660\1\u56c0\1\u5720\1\u5780\1\u57e0"+ - "\1\u5840\1\u58a0\1\u5900\1\u5960\1\u59c0\1\u5a20\1\u5a80\1\u5ae0"+ - "\1\u5b40\1\u5ba0\1\u5c00\1\u5c60\1\u5cc0\1\u5d20\1\u5d80\1\u5de0"+ - "\1\u5e40\1\u5ea0\1\u5f00\1\u5f60\1\u5fc0\1\u6020\1\u6080\1\u60e0"+ - "\1\u6140\1\u61a0\1\u6200\1\u6260\1\u62c0\1\u6320\1\u6380\1\u63e0"+ - "\1\u6440\1\u64a0\1\u6500\1\u6560\1\u65c0\1\u6620\1\u6680\1\u66e0"+ - "\1\u6740\1\u67a0\1\u6800\1\u6860\1\u68c0\1\u6920\1\u6980\1\u69e0"+ - "\1\u6a40\1\u6aa0\1\u6b00\1\u6b60\1\u6bc0\1\u6c20\1\u6c80\1\u6ce0"+ - "\1\u6d40\1\u6da0\1\u6e00\1\u6e60\1\u6ec0\1\u6f20\1\u6f80\1\u6fe0"+ - "\1\u7040\1\u70a0\1\u7100\1\u7160\1\u71c0\1\u7220\1\u7280\1\u72e0"+ - "\1\u7340\1\u73a0\1\u7400\1\u7460\1\u74c0\1\u7520\1\u7580\1\u75e0"+ - "\1\u7640\1\u76a0\1\u7700\1\u7760\1\u77c0\1\u7820\1\u26c0\1\u7880"+ - "\1\u78e0\1\u7940\1\u79a0\1\u7a00\1\u7a60\1\u7ac0\1\u7b20\1\u7b80"+ - "\1\u7be0\1\u7c40\1\u7ca0\1\u7d00\1\u7d60\1\u7dc0\1\u7e20\1\u7e80"+ - "\1\u7ee0\1\u7f40\1\u7fa0\1\u8000\1\u8060\1\u80c0\1\u8120\1\u8180"+ - "\1\u81e0\1\u8240\1\u82a0\1\u8300\1\u8360\1\u83c0\1\u8420\1\u8480"+ - "\1\u84e0\1\u8540\1\u85a0\1\u8600\1\u8660\1\u86c0\1\u8720\1\u8780"+ - "\1\u87e0\1\u8840\1\u88a0\1\u8900\1\u8960\1\u89c0\1\u8a20\1\u8a80"+ - "\1\u8ae0\1\u8b40\1\u8ba0\1\u8c00\1\u8c60\1\u8cc0\1\u8d20\1\u8d80"+ - "\1\u8de0\1\u8e40\1\u8ea0\1\u8f00\1\u8f60\1\u8fc0\1\u9020\1\u9080"+ - "\1\u90e0\1\u9140\1\u91a0\1\u9200\1\u9260\1\u92c0\1\u9320\1\u9380"+ - "\1\u93e0\1\u9440\1\u94a0\1\u9500\1\u9560\1\u95c0\1\u9620\1\u9680"+ - "\1\u96e0\1\u9740\1\u97a0\1\u9800\1\u9860\1\u98c0\1\u9920\1\u9980"+ - "\1\u99e0\1\u9a40\1\u9aa0\1\u9b00\1\u9b60\1\u9bc0\1\u9c20\1\u9c80"+ - "\1\u9ce0\1\u9d40\1\u9da0\1\u9e00\1\u9e60\1\u9ec0\1\u9f20\1\u9f80"+ - "\1\u9fe0\1\ua040\1\ua0a0\1\ua100\1\ua160\1\ua1c0\0\u0b40\1\ua220"+ - "\1\ua280\1\ua2e0\1\ua340\1\ua3a0\1\ua400\1\ua460\1\ua4c0\1\ua520"+ - "\1\ua580\1\ua5e0\1\ua640\1\ua6a0\1\ua700\1\ua760\1\ua7c0\1\ua820"+ - "\1\ua880\1\ua8e0\1\ua940\1\ua9a0\1\uaa00\1\uaa60\1\uaac0\1\uab20"+ - "\1\uab80\1\uabe0\1\uac40\1\uaca0\1\uad00\1\uad60\1\uadc0\1\uae20"+ - "\1\uae80\0\udec0\0\u50a0\1\uaee0\1\uaf40\1\uafa0\1\ub000\1\ub060"+ - "\1\ub0c0\1\ub120\0\u0b40\1\ub180\1\ub1e0\1\ub240\1\ub2a0\1\ub300"+ - "\1\ub360\1\ub3c0\1\ub420\0\u1b00\1\ub480\1\ub4e0\1\ub540\1\ub5a0"+ - "\0\u1b00\1\ub600\1\ub660\1\ub6c0\1\ub720\1\ub780\0\u1b00\1\ub7e0"+ - "\1\ub840\1\ub8a0\1\ub900\1\ub960\1\ub9c0\1\uba20\1\uba80\1\ubae0"+ - "\1\ubb40\1\ubba0\1\ubc00\1\ubc60\1\ubcc0\1\ubd20\1\ubd80\0\u7680"+ - "\0\u0b40\1\ubde0\1\ube40\1\ubea0\1\ubf00\1\ubf60\1\ubfc0\1\uc020"+ - "\1\uc080\1\uc0e0\1\uc140\1\uc1a0\1\uc200\1\uc260\1\uc2c0\1\uc320"+ - "\1\uc380\1\uc3e0\1\uc440\1\uc4a0\1\uc500\1\uc560\1\uc5c0\1\uc620"+ - "\1\uc680\1\uc6e0\1\uc740\1\uc7a0\1\uc800\1\uc860\1\uc8c0\1\uc920"+ - "\1\uc980\1\uc9e0\1\uca40\1\ucaa0\1\ucb00\1\ucb60\1\ucbc0\1\ucc20"+ - "\1\ucc80\1\ucce0\1\ucd40\1\ucda0\1\uce00\1\uce60\1\ucec0\1\ucf20"+ - "\1\ucf80\1\ucfe0\1\ud040\1\ud0a0\1\ud100\1\ud160\1\ud1c0\1\ud220"+ - "\1\ud280\1\ud2e0\1\ud340\1\ud3a0\1\ud400\1\ucbc0\1\ud460\1\ud4c0"+ - "\1\ud520\1\ud580\1\ud5e0\1\ud640\1\ud6a0\1\ud700\1\ud760\1\ud7c0"+ - "\1\ud820\1\ud880\1\ud8e0\1\ud940\1\ud9a0\1\uda00\1\uda60\1\udac0"+ - "\1\udb20\1\udb80\1\udbe0\1\udc40\1\udca0\1\udd00\1\udd60\1\uddc0"+ - "\1\ude20\1\ude80\1\udee0\1\udf40\1\udfa0\1\ue000\1\ue060\1\ue0c0"+ - "\1\ue120\0\u8d60\1\ue180\1\ue1e0\1\ue240\1\ue2a0\1\ue300\1\ue360"+ - "\1\ue3c0\1\ue420\1\ue480\1\ue4e0\1\ue540\1\ue5a0\1\ue600\1\ue660"+ - "\1\ue6c0\1\ue720\1\ue780\1\ue7e0\1\ue840\1\ue8a0\1\ue900\1\ue960"+ - "\1\ue9c0\1\uea20\1\uea80\1\ueae0\1\ueb40\1\ueba0\1\uec00\1\uec60"+ - "\1\uecc0\1\ued20\1\ued80\1\uede0\1\uee40\1\ueea0\1\uef00\1\uef60"+ - "\1\uefc0\1\uf020\1\uf080\1\uf0e0\1\uf140\1\uf1a0\1\uf200\1\uf260"+ - "\1\uf2c0\1\uf320\1\uf380\1\uf3e0\1\uf440\1\uf4a0\1\uf500\1\uf560"+ - "\1\uf5c0\1\uf620\1\uf680\1\uf6e0\0\u1b00\1\uf740\1\uf7a0\1\uf800"+ - "\1\uf860\1\uf8c0\1\uf920\1\uf980\1\uf9e0\1\ufa40\1\ufaa0\1\ufb00"+ - "\1\ufb60\1\ufbc0\1\ufc20\1\ufc80\1\ufce0\1\ufd40\1\ufda0\1\ufe00"+ - "\1\ufe60\1\ufec0\1\uff20\1\uff80\1\uffe0\2\100\2\240\2\u0100"+ - "\2\u0160\2\u01c0\2\u0220\2\u0280\2\u02e0\2\u0340\2\u03a0\2\u0400"+ - "\2\u0460\2\u04c0\2\u0520\2\u0580\2\u05e0\2\u0640\2\u06a0\2\u0700"+ - "\1\u1e20\2\u0760\2\u07c0\2\u0820\2\u0880\2\u08e0\2\u0940\2\u09a0"+ - "\2\u0a00\2\u0a60\2\u0ac0\2\u0b20\2\u0b80\2\u0be0\2\u0c40\2\u0ca0"+ - "\2\u0d00\2\u0d60\2\u0dc0\2\u0e20\2\u0e80\2\u0ee0\2\u0f40\2\u0fa0"+ - "\2\u1000\1\ub7e0\2\u1060\2\u10c0\2\u1120\2\u1180\2\u11e0\2\u1240"+ - "\2\u12a0\2\u1300\2\u1360\2\u13c0\2\u1420\2\u1480\2\u14e0\2\u1540"+ - "\2\u15a0\2\u1600\2\u1660\2\u16c0\2\u1720\2\u1780\2\u17e0\2\u1840"+ - "\2\u18a0\2\u1900\2\u1960\2\u19c0\2\u1a20\2\u1a80\2\u1ae0\2\u1b40"+ - "\2\u1ba0\2\u1c00\2\u1c60\2\u1cc0\2\u1d20\2\u1d80\2\u1de0\2\u1e40"+ - "\2\u1ea0\2\u1f00\2\u1f60\2\u1fc0\2\u2020\2\u2080\2\u20e0\2\u2140"+ - "\2\u21a0\2\u2200\2\u2260\2\u22c0\2\u2320\2\u2380\2\u23e0\2\u2440"+ - "\2\u24a0\2\u2500\2\u2560\2\u25c0\2\u2620\2\u2680\2\u26e0\2\u2740"+ - "\2\u27a0\2\u2800\2\u2860\2\u28c0\2\u2920\2\u2980\2\u29e0\2\u2a40"+ - "\2\u2aa0\2\u2b00\2\u2b60\2\u2bc0\2\u2c20\2\u2c80\2\u2ce0\2\u2d40"+ - "\2\u2da0\2\u2e00\2\u2e60\2\u2ec0\2\u2f20\2\u2f80\2\u2fe0\2\u3040"+ - "\2\u30a0\2\u3100\2\u3160\2\u31c0\2\u3220\2\u3280\2\u32e0\2\u3340"+ - "\2\u33a0\2\u3400\2\u3460\2\u34c0\2\u3520\1\u7400\2\u3580\2\u35e0"+ - "\2\u3640\2\u36a0\2\u3700\2\u3760\2\u37c0\2\u3820\2\u3880\2\u38e0"+ - "\2\u3940\2\u39a0\2\u3a00\2\u3a60\2\u3ac0\2\u3b20\2\u3b80\2\u3be0"+ - "\2\u3c40\2\u3ca0\2\u3d00\2\u3d60\2\u3dc0\2\u3e20\2\u3e80\2\u3ee0"+ - "\2\u3f40\2\u3fa0\2\u4000\2\u4060\2\u40c0\2\u4120\2\u4180\2\u41e0"+ - "\2\u4240\2\u42a0\2\u4300\2\u4360\2\u43c0\2\u4420\2\u4480\2\u44e0"+ - "\2\u4540\2\u45a0\2\u4600\2\u4660\2\u46c0\2\u4720\2\u4780\2\u47e0"+ - "\2\u4840\2\u48a0\2\u4900\2\u4960\2\u49c0\2\u4a20\2\u4a80\2\u4ae0"+ - "\2\u4b40\2\u4ba0\2\u4c00\2\u4c60\2\u4cc0\2\u4d20\2\u4d80\2\u4de0"+ - "\2\u4e40\2\u4ea0\2\u4f00\2\u4f60\2\u4fc0\2\u5020\2\u5080\2\u50e0"+ - "\2\u5140\2\u51a0\2\u5200\2\u5260\2\u52c0\2\u5320\2\u5380\2\u53e0"+ - "\2\u5440\2\u54a0\2\u5500\2\u5560\2\u55c0\2\u5620\2\u5680\2\u56e0"+ - "\2\u5740\2\u57a0\2\u5800\2\u5860\2\u58c0\2\u5920\2\u5980\2\u59e0"+ - "\2\u5a40\2\u5aa0\2\u5b00\2\u5b60\2\u5bc0\2\u5c20\2\u5c80\2\u5ce0"+ - "\2\u5d40\2\u5da0\2\u5e00\2\u5e60\2\u5ec0\2\u5f20\2\u5f80\2\u5fe0"+ - "\2\u6040\2\u60a0\2\u6100\2\u6160\2\u61c0\2\u6220\2\u6280\2\u62e0"+ - "\2\u6340\2\u63a0\2\u6400\2\u6460\2\u64c0\2\u6520\2\u6580\2\u65e0"+ - "\2\u6640\2\u66a0\2\u6700\2\u6760\2\u67c0\2\u6820\2\u6880\2\u68e0"+ - "\2\u6940\2\u69a0\2\u6a00\2\u6a60\2\u6ac0\2\u6b20\2\u6b80\2\u6be0"+ - "\2\u6c40\2\u6ca0\2\u6d00\2\u6d60\2\u6dc0\2\u6e20\2\u6e80\2\u6ee0"+ - "\2\u6f40\2\u6fa0\2\u7000\2\u7060\2\u70c0\2\u7120\2\u7180\2\u71e0"+ - "\2\u7240\2\u72a0\2\u7300\2\u7360\2\u73c0\2\u7420\2\u7480\2\u74e0"+ - "\2\u7540\2\u75a0\2\u7600\2\u7660\2\u76c0\2\u7720\2\u7780\2\u77e0"+ - "\2\u7840\2\u78a0\2\u7900\2\u7960\2\u79c0\2\u7a20\2\u7a80\2\u7ae0"+ - "\2\u7b40\2\u7ba0\2\u7c00\2\u7c60\2\u7cc0\2\u7d20\2\u7d80\2\u7de0"+ - "\2\u7e40\2\u7ea0\2\u7f00\2\u7f60\2\u7fc0\2\u8020\2\u8080\2\u80e0"+ - "\2\u8140\2\u81a0\2\u8200\0\u0b40\2\u8260\2\u82c0\2\u8320\2\u8380"+ - "\2\u83e0\2\u8440\0\u0b40\2\u84a0\1\ua340\0\u0f00\2\u8500\2\u8560"+ - "\2\u85c0\2\u8620\2\u8680\2\u86e0\2\u8740\2\u87a0\2\u8800\2\u8860"+ - "\2\u88c0\2\u8920\2\u8980\2\u89e0\2\u89e0\2\u8a40\2\u8aa0\2\u8b00"+ - "\2\u8b60\2\u8bc0\0\u0b40\2\u8c20\0\u0b40\2\u8c80\2\u8ce0\2\u8d40"+ - "\2\u8da0\2\u8e00\2\u8e60\0\uf360\2\u8ec0\2\u8f20\2\u8f80\2\u8fe0"+ - "\2\u9040\2\u90a0\2\u9100\2\u9160\2\u91c0\2\u9220\2\u9280\2\u92e0"+ - "\2\u9340\2\u93a0\0\u0b40\0\u0b40\2\u9400\2\u9460\1\ubf60\2\u94c0"+ - "\2\u9520\1\uc0e0\2\u9580\2\u95e0\2\u9640\2\u96a0\2\u9700\2\u9760"+ - "\2\u97c0\2\u9820\2\u9880\2\u98e0\2\u9940\2\u99a0\2\u9a00\2\u9a60"+ - "\2\u9ac0\2\u9b20\2\u9b80\2\u9be0\2\u9c40\2\u9ca0\2\u9d00\2\u9d60"+ - "\2\u9dc0\0\ua2c0\2\u9e20\2\u9e80\2\u9ee0\2\u9f40\2\u9fa0\2\ua000"+ - "\2\ua060\2\ua0c0\2\ua120\2\ua180\2\ua1e0\2\ua240\2\ua2a0\2\ua300"+ - "\2\ua360\2\ua3c0\2\ua420\2\ua480\2\ua4e0\2\ua540\2\ua5a0\2\ua600"+ - "\2\ua660\2\ua6c0\2\ua720\2\ua780\2\ua7e0\2\ua840\2\ua8a0\2\ua900"+ - "\2\ua960\2\ua9c0\2\uaa20\2\uaa80\2\uaae0\2\uab40\2\uaba0\2\uac00"+ - "\2\uac60\2\uacc0\2\uad20\2\uad80\2\uade0\2\uae40\2\uaea0\2\uaf00"+ - "\2\uaf60\2\uafc0\2\ub020\2\ub080\2\ub0e0\2\ub140\2\ub1a0\2\ub200"+ - "\2\ub260\2\ub2c0\2\ub320\2\ub380\2\ub3e0\2\ub440\2\ub4a0\2\ub500"+ - "\2\ub560\2\ub5c0\2\ub620\2\ub680\2\ub6e0\2\ub740\2\ub7a0\2\ub800"+ - "\2\ub860\2\ub8c0\2\ub920\2\ub980\2\ub9e0\2\uba40\2\ubaa0\2\ubb00"+ - "\2\ubb60\2\ubbc0\2\ubc20\2\ubc80\2\ubce0\2\ubd40\2\ubda0\2\ube00"+ - "\2\ube60\2\ubec0\2\ubf20\2\ubf80\2\ubfe0\2\uc040\2\uc0a0\2\uc100"+ - "\2\uc160\2\uc1c0\2\uc220\2\uc280\2\uc2e0\2\uc340\2\uc3a0\2\uc400"+ - "\2\uc460\2\uc4c0\2\uc520\2\uc580\2\uc5e0\2\uc640\2\uc6a0\2\uc700"+ - "\2\uc760\2\uc7c0\2\uc820\2\uc880\2\uc8e0\2\uc940\2\uc9a0\2\uca00"+ - "\2\uca60\2\ucac0\2\ucb20\2\ucb80\2\ucbe0\2\ucc40\2\ucca0\2\ucd00"+ - "\2\ucd60\2\ucdc0\2\uce20\2\uce80\2\ucee0\2\ucf40\2\ucfa0\2\ud000"+ - "\2\ud060\2\ud0c0\2\ud120\2\ud180\2\ud1e0\2\ud240\2\ud2a0\2\ud300"+ - "\2\ud360\2\ud3c0\2\ud420\2\ud480\2\ud4e0\2\ud540\2\ud5a0\2\ud600"+ - "\2\ud660\2\ud6c0\2\ud720\2\ud780\2\ud7e0\2\uc520\2\ud840\2\ud8a0"+ - "\2\ud900\2\ud960\2\ud9c0\2\uda20\2\uda80\2\udae0\2\udb40\2\udba0"+ - "\2\udc00\2\udc60\2\udcc0\2\udd20\2\udd80\2\udde0\2\ude40\2\udea0"+ - "\2\ud840\2\udf00\2\udf60\2\udfc0\2\ue020\2\ue080\2\ue0e0\2\ue140"+ - "\2\ue1a0\2\ue200\2\ue260\2\ue2c0\2\ue320\2\ue380\2\ue3e0\2\ue440"+ - "\2\ue4a0\2\ue500\2\ue560\2\ue5c0\2\ue620\2\ue680\2\ue6e0\2\ue740"+ - "\2\ue7a0\2\ue800\2\ue860\2\ue8c0\2\ue920\2\ue980\2\ue9e0\2\uea40"+ - "\2\ueaa0\2\ueb00\2\ueb60\2\uebc0\2\uec20\2\uec80\2\uece0\2\ued40"+ - "\2\ueda0\2\uee00\2\uee60\2\ueec0\2\uef20\2\uef80\2\uefe0\2\uf040"+ - "\2\uf0a0\2\uf100\2\uf160\2\uf1c0\2\uf220\2\uf280\2\uf2e0\2\uf340"+ - "\1\ufce0\2\uf3a0\2\uf400\2\uf460\2\uf4c0\2\uf520\2\uf580\2\uf5e0"+ - "\2\uf640\2\uf6a0\2\uf700\2\uf760\2\uf7c0\2\uf820\2\uf880\2\uf8e0"+ - "\2\uf940\2\uf9a0\2\ufa00\2\ufa60\2\ufac0\2\ufb20\2\ufb80\2\ufbe0"+ - "\2\ufc40\2\ufca0\2\ufd00\2\ufd60\2\ufdc0\2\ufe20\2\ufe80\2\ufee0"+ - "\2\uff40\2\uffa0\3\0\3\140\3\300\3\u0120\3\u0180\3\u01e0"+ - "\3\u0240\3\u02a0\3\u0300\3\u0360\3\u03c0\3\u0420\3\u0480\3\u04e0"+ - "\3\u0540\3\u05a0\3\u0600\3\u0660\3\u06c0\3\u0720\3\u0780\3\u07e0"+ - "\3\u0840\3\u08a0\3\u0900\3\u0960\3\u09c0\3\u0a20\3\u0a80\3\u0ae0"+ - "\3\u0b40\3\u0ba0\3\u0c00\3\u0c60\3\u0cc0\3\u0d20\3\u0d80\3\u0de0"+ - "\3\u0e40\3\u0ea0\3\u0f00\3\u0f60\3\u0fc0\3\u1020\3\u1080\3\u10e0"+ - "\3\u1140\3\u11a0\3\u1200\3\u1260\3\u12c0\3\u1320\3\u1380\3\u13e0"+ - "\3\u1440\3\u14a0\3\u1500\3\u1560\3\u15c0\3\u1620\3\u1680\3\u16e0"+ - "\3\u1740\3\u17a0\3\u1800\3\u1860\3\u18c0\3\u1920\3\u1980\3\u19e0"+ - "\3\u1a40\3\u1aa0\3\u1b00\3\u1b60\3\u1bc0\3\u1c20\3\u1c80\3\u1ce0"+ - "\3\u1d40\3\u1da0\3\u1e00\3\u1e60\3\u1ec0\3\u1f20\3\u1f80\3\u1fe0"+ - "\3\u2040\3\u20a0\3\u2100\3\u2160\3\u21c0\3\u2220\3\u2280\3\u22e0"+ - "\3\u2340\3\u23a0\3\u2400\3\u2460\3\u24c0\3\u2520\3\u2580\3\u25e0"+ - "\3\u2640\3\u26a0\3\u2700\3\u2760\3\u27c0\3\u2820\3\u2880\3\u28e0"+ - "\3\u2940\3\u29a0\3\u2a00\3\u2a60\3\u2ac0\3\u2b20\3\u2b80\3\u2be0"+ - "\3\u2c40\3\u2ca0\3\u2d00\3\u2d60\3\u2dc0\3\u2e20\3\u2e80\3\u2ee0"+ - "\3\u2f40\3\u2fa0\3\u3000\3\u3060\3\u30c0\3\u3120\3\u3180\3\u31e0"+ - "\3\u3240\3\u32a0\3\u3300\3\u3360\3\u33c0\3\u3420\3\u3480\3\u34e0"+ - "\3\u3540\3\u35a0\3\u3600\3\u3660\3\u36c0\3\u3720\3\u3780\3\u37e0"+ - "\3\u3840\3\u38a0\3\u3900\3\u3960\3\u39c0\3\u3a20\3\u3a80\3\u3ae0"+ - "\3\u3b40\3\u3ba0\3\u3c00\3\u3c60\3\u3cc0\3\u3d20\3\u3d80\3\u3de0"+ - "\3\u3e40\3\u3ea0\3\u3f00\3\u3f60\3\u3fc0\3\u4020\3\u4080\3\u40e0"+ - "\3\u4140\3\u41a0\3\u4200\3\u4260\3\u42c0\3\u4320\3\u4380\3\u43e0"+ - "\3\u4440\3\u44a0\3\u4500\3\u4560\3\u45c0\3\u4620\3\u4680\3\u46e0"+ - "\3\u4740\3\u47a0\3\u4800\3\u4860\3\u48c0\3\u4920\3\u4980\3\u49e0"+ - "\3\u4a40\3\u4aa0\3\u4b00\3\u4b60\3\u4bc0\3\u4c20\3\u4c80\3\u4ce0"+ - "\3\u4d40\3\u4da0\3\u4e00\3\u4e60\3\u4ec0\3\u4f20\3\u4f80\3\u4fe0"+ - "\3\u5040\3\u50a0\3\u5100\3\u5160\3\u51c0\3\u5220\3\u5280\3\u52e0"+ - "\3\u5340\3\u53a0\3\u5400\3\u5460\3\u54c0\3\u5520\3\u5580\3\u55e0"+ - "\3\u5640\3\u56a0\3\u5700\3\u5760\3\u57c0\3\u5820\3\u5880\3\u58e0"+ - "\3\u5940\3\u59a0\3\u5a00\3\u5a60\3\u5ac0\3\u5b20\3\u5b80\3\u5be0"+ - "\3\u5c40\3\u5ca0\3\u5d00\3\u5d60\3\u5dc0\3\u5e20\3\u5e80\3\u5ee0"+ - "\3\u5f40\3\u5fa0\3\u6000\3\u6060\3\u60c0\3\u6120\3\u6180\3\u61e0"+ - "\3\u6240\3\u62a0\3\u6300\3\u6360\3\u63c0\3\u6420\3\u6480\3\u64e0"+ - "\3\u6540\3\u65a0\3\u6600\3\u6660\3\u66c0\3\u6720\3\u6780\3\u67e0"+ - "\3\u6840\3\u68a0\3\u6900\3\u6960\3\u69c0\3\u6a20\3\u6a80\3\u6ae0"+ - "\3\u6b40\3\u6ba0\3\u6c00\3\u6c60\3\u6cc0\3\u6d20\3\u6d80\3\u6de0"+ - "\3\u6e40\3\u6ea0\3\u6f00\3\u6f60\3\u6fc0\3\u7020\3\u7080\3\u70e0"+ - "\3\u7140\1\u1f40\3\u71a0\3\u7200\3\u7260\3\u72c0\3\u7320\3\u7380"+ - "\3\u73e0\3\u7440\3\u74a0\3\u7500\3\u7560\3\u75c0\3\u7620\3\u7680"+ - "\3\u76e0\3\u7740\3\u77a0\3\u7800\3\u7860\3\u78c0\3\u7920\3\u7980"+ - "\3\u79e0\3\u7a40\3\u7aa0\3\u7b00\3\u7b60\3\u7bc0\3\u7c20\3\u7c80"+ - "\3\u7ce0\3\u7d40\3\u7da0\3\u7e00\3\u7e60\3\u7ec0\3\u7f20\3\u7f80"+ - "\3\u7fe0\3\u8040\3\u80a0\3\u8100\3\u8160\3\u81c0\3\u8220\3\u8280"+ - "\3\u82e0\3\u8340\3\u83a0\3\u8400\3\u8460\3\u84c0\3\u8520\3\u8580"+ - "\3\u85e0\0\u4200\3\u8640\3\u86a0\3\u8700\3\u8760\3\u87c0\3\u8820"+ - "\3\u8880\3\u88e0\3\u8940\3\u89a0\3\u8a00\3\u8a60\3\u8ac0\3\u8b20"+ - "\3\u8b80\3\u8be0\3\u8c40\3\u8ca0\3\u8d00\3\u8d60\3\u8dc0\3\u8e20"+ - "\3\u8e80\3\u8ee0\3\u8f40\3\u8fa0\3\u9000\3\u9060\3\u90c0\3\u9120"+ - "\3\u9180\3\u91e0\3\u9240\3\u92a0\3\u9300\3\u9360\3\u93c0\3\u9420"+ - "\3\u9480\3\u94e0\3\u9540\3\u95a0\3\u9600\3\u9660\3\u96c0\3\u9720"+ - "\3\u9780\3\u97e0\3\u9840\3\u98a0\3\u9900\3\u9960\3\u99c0\3\u9a20"+ - "\3\u9a80\3\u9ae0\3\u9b40\3\u9ba0\3\u9c00\3\u9c60\3\u9cc0\3\u9d20"+ - "\3\u9d80\3\u9de0\3\u9e40\3\u9ea0\3\u9f00\3\u9f60\3\u9fc0\3\ua020"+ - "\3\ua080\3\ua0e0\3\ua140\3\ua1a0\3\ua200\3\ua260\3\ua2c0\3\ua320"+ - "\3\ua380\3\ua3e0\3\ua440\3\ua4a0\3\ua500\3\ua560\3\ua5c0\3\ua620"+ - "\3\ua680\3\ua6e0\3\ua740\3\ua7a0\3\ua800\3\ua860\3\ua8c0\3\ua920"+ - "\3\ua980\3\ua9e0\3\uaa40\3\uaaa0\3\uab00\3\uab60\3\uabc0\3\uac20"+ - "\3\uac80\3\uace0\3\uad40\3\uada0\3\uae00\3\uae60\3\uaec0\3\uaf20"+ - "\3\uaf80\3\uafe0\3\ub040\3\ub0a0\3\ub100\3\ub160\3\ub1c0\3\ub220"+ - "\3\ub280\3\ub2e0\3\ub340\3\ub3a0\3\ub400\3\ub460\3\ub4c0\3\ub520"+ - "\3\ub580\3\ub5e0\3\ub640\3\ub6a0\3\ub700\3\ub760\3\ub7c0\3\ub820"+ - "\3\ub880\3\ub8e0\3\ub940\3\ub9a0\3\uba00\3\uba60\3\ubac0\3\ubb20"+ - "\3\ubb80\3\ubbe0\3\ubc40\3\ubca0\3\ubd00\3\ubd60\3\ubdc0\3\ube20"+ - "\3\ube80\3\ubee0\3\ubf40\3\ubfa0\3\uc000\3\uc060\3\uc0c0\3\uc120"+ - "\3\uc180\3\uc1e0\3\uc240\3\uc2a0\3\uc300\3\uc360\3\uc3c0\3\uc420"+ - "\3\uc480\3\uc4e0\3\uc540\3\uc5a0\3\uc600\3\uc660\3\uc6c0\3\uc720"+ - "\3\uc780\3\uc7e0\3\uc840\3\uc8a0\3\uc900\3\uc960\3\uc9c0\3\uca20"+ - "\3\uca80\3\ucae0\3\ucb40\3\ucba0\3\ucc00\3\ucc60\3\uccc0\3\ucd20"+ - "\3\ucd80\3\ucde0\3\uce40\3\ucea0\3\ucf00\3\ucf60\3\ucfc0\3\ud020"+ - "\3\ud080\0\u8a00\3\ud0e0\3\ud140\3\ud1a0\3\ud200\3\ud260\3\ud2c0"+ - "\3\ud320\3\ud380\3\ud3e0\3\ud440\3\ud4a0\3\ud500\3\ud560\3\ud5c0"+ - "\3\ud620\3\ud680\3\ud6e0\3\ud740\3\ud7a0\3\ud800\3\ud860\3\ud8c0"+ - "\3\ud920\3\ud980\3\ud9e0\3\uda40\3\udaa0\3\udb00\3\udb60\3\udbc0"+ - "\3\udc20\3\udc80\3\udce0\3\udd40\3\udda0\3\ude00\3\ude60\3\udec0"+ - "\3\udf20\3\udf80\3\udfe0\3\ue040\3\ue0a0\3\ue100\3\ue160\3\ue1c0"+ - "\3\ue220\3\ue280\3\ue2e0\3\ue340\3\ue3a0\3\ue400\3\ue460\3\ue4c0"+ - "\3\ue520\3\ue580\3\ue5e0\3\ue640\3\ue6a0\3\ue700\3\ue760\3\ue7c0"+ - "\3\ue820\3\ue880\3\ue8e0\3\ue940\3\ue9a0\3\uea00\3\uea60\3\ueac0"+ - "\3\ueb20\3\ueb80\3\uebe0\3\uec40\3\ueca0\3\ued00\3\ued60\3\uedc0"+ - "\3\uee20\3\uee80\3\ueee0\3\uef40\3\uefa0\3\uf000\3\uf060\3\uf0c0"+ - "\3\uf120\3\uf180\3\uf1e0\3\uf240\3\uf2a0\3\uf300\3\uf360\3\uf3c0"+ - "\3\uf420\3\uf480\3\uf4e0\3\uf540\3\uf5a0\3\uf600\3\uf660\3\uf6c0"+ - "\3\uf720\3\uf780\3\uf7e0\3\uf840\3\uf8a0\3\uf900\3\uf960\3\uf9c0"+ - "\3\ufa20\3\ufa80\3\ufae0\3\ufb40\3\ufba0\3\ufc00\3\ufc60\3\ufcc0"+ - "\3\ufd20\3\ufd80\3\ufde0\3\ufe40\3\ufea0\3\uff00\3\uff60\3\uffc0"+ - "\4\40\4\200\4\340\4\u0140\4\u01a0\4\u0200\4\u0260\4\u02c0"+ - "\4\u0320\4\u0380\4\u03e0\4\u0440\4\u04a0\4\u0500\4\u0560\4\u05c0"+ - "\4\u0620\4\u0680\4\u06e0\4\u0740\4\u07a0\4\u0800\4\u0860\4\u08c0"+ - "\4\u0920\4\u0980\4\u09e0\4\u0a40\4\u0aa0\4\u0b00\4\u0b60\4\u0bc0"+ - "\4\u0c20\4\u0c80\4\u0ce0\4\u0d40\4\u0da0\4\u0e00\4\u0e60\4\u0ec0"+ - "\4\u0f20\4\u0f80\4\u0fe0\4\u1040\4\u0560\4\u10a0\4\u1100\4\u1160"+ - "\4\u11c0\4\u1220\4\u1280\4\u12e0\4\u1340\4\u13a0\4\u1400\4\u1460"+ - "\4\u14c0\4\u1520\4\u1580\4\u15e0\4\u1640\4\u16a0\4\u1700\4\u1760"+ - "\4\u17c0\4\u1820\4\u1880\4\u18e0\4\u1940\4\u19a0\4\u1a00\4\u1a60"+ - "\4\u1ac0\4\u1b20\4\u1b80\4\u1be0\4\u1c40\4\u1ca0\4\u1d00\4\u1d60"+ - "\4\u1dc0\4\u1e20\4\u1e80\4\u1ee0\4\u1f40\4\u1fa0\4\u2000\4\u2060"+ - "\4\u20c0\4\u2120\4\u2180\4\u21e0\4\u2240\4\u22a0\4\u2300\4\u2360"+ - "\4\u23c0\4\u2420\4\u2480\4\u24e0\4\u2540\4\u25a0\4\u2600\4\u2660"+ - "\4\u26c0\4\u2720\4\u2780\4\u27e0\4\u2840\4\u28a0\4\u2900\4\u2960"+ - "\4\u29c0\4\u2a20\4\u2a80\4\u2ae0\4\u2b40\4\u2ba0\4\u2c00\4\u2c60"+ - "\4\u2cc0\4\u2d20\4\u2d80\4\u2de0\4\u2e40\4\u2ea0\4\u2f00\4\u2f60"+ - "\4\u2fc0\4\u3020\4\u3080\2\ubaa0\4\u30e0\4\u3140\4\u31a0\4\u3200"+ - "\4\u3260\4\u32c0\4\u3320\4\u3380\4\u33e0\4\u3440\4\u34a0\4\u3500"+ - "\4\u3560\4\u35c0\4\u3620\4\u3680\4\u36e0\4\u3740\4\u37a0\4\u3800"+ - "\4\u3860\4\u38c0\4\u3920\4\u3980\4\u39e0\4\u3a40\4\u3aa0\4\u3b00"+ - "\4\u3b60\4\u3bc0\4\u3c20\4\u3c80\4\u3ce0\4\u3d40\4\u3da0\4\u3e00"+ - "\4\u3e60\4\u3ec0\4\u3f20\4\u3f80\4\u3fe0\4\u4040\4\u40a0\4\u4100"+ - "\4\u4160\4\u41c0\4\u4220\4\u4280\4\u42e0\4\u4340\4\u43a0\4\u4400"+ - "\4\u4460\4\u44c0\4\u4520\4\u4580\4\u45e0\4\u4640\4\u46a0\4\u4700"+ - "\4\u4760\4\u47c0\4\u4820\4\u4880\4\u48e0\4\u4940\4\u49a0\4\u4a00"+ - "\4\u4a60\4\u4ac0\4\u4b20\4\u4b80\4\u4be0\4\u4c40\4\u4ca0\4\u4d00"+ - "\4\u4d60\4\u4dc0\4\u4e20\4\u4e80\4\u4ee0\4\u4f40\4\u4fa0\4\u5000"+ - "\4\u5060\4\u50c0\4\u5120\4\u5180\4\u51e0\4\u5240\4\u52a0\4\u5300"+ - "\4\u5360\4\u53c0\4\u5420\4\u5480\4\u54e0\4\u5540\4\u55a0\4\u5600"+ - "\4\u5660\4\u56c0\4\u5720\4\u5780\4\u57e0\4\u5840\4\u58a0\4\u5900"+ - "\4\u5960\4\u59c0\4\u5a20\4\u5a80\4\u5ae0\4\u5b40\4\u5ba0\4\u5c00"+ - "\4\u5c60\4\u5cc0\4\u5d20\4\u5d80\4\u5de0\4\u5e40\4\u5ea0\4\u5f00"+ - "\4\u5f60\4\u5fc0\4\u6020\4\u6080\4\u60e0\4\u6140\4\u61a0\4\u6200"+ - "\4\u6260\4\u62c0\4\u6320\4\u6380\4\u63e0\4\u6440\4\u64a0\4\u6500"+ - "\4\u6560\4\u65c0\4\u6620\4\u6680\4\u66e0\4\u6740\4\u67a0\4\u6800"+ - "\4\u6860\4\u68c0\4\u6920\4\u6980\4\u69e0\4\u6a40\4\u6aa0\4\u6b00"+ - "\4\u6b60\4\u6bc0\4\u6c20\4\u6c80\4\u6ce0\4\u6d40\4\u6da0\4\u6e00"+ - "\4\u6e60\4\u6ec0\4\u6f20\4\u6f80\4\u6fe0\1\u88a0\4\u7040\4\u70a0"+ - "\4\u7100\4\u7160\4\u71c0\4\u7220\4\u7280\4\u72e0\4\u7340\4\u73a0"+ - "\4\u7400\4\u7460\4\u74c0\4\u7520\4\u7580\4\u75e0\4\u7640\4\u76a0"+ - "\4\u7700\4\u7760\4\u77c0\4\u7820\4\u7880\4\u78e0\4\u7940\4\u79a0"+ - "\4\u7a00\4\u7a60\4\u7ac0\4\u7b20\4\u7b80\4\u7be0\4\u7c40\4\u7ca0"+ - "\4\u7d00\4\u7d60\4\u7dc0\4\u7e20\4\u7e80\4\u7ee0\4\u7f40\4\u7fa0"+ - "\4\u8000\4\u8060\4\u80c0\4\u8120\4\u8180\4\u81e0\4\u8240\4\u82a0"+ - "\4\u8300\4\u8360\4\u83c0\4\u8420\4\u8480\4\u84e0\4\u8540\4\u85a0"+ - "\4\u8600\4\u8660\4\u86c0\4\u8720\4\u8780\4\u87e0\4\u8840\4\u88a0"+ - "\4\u8900\4\u8960\4\u89c0\4\u8a20\4\u8a80\4\u8ae0\4\u8b40\4\u8ba0"+ - "\4\u8c00\4\u8c60\4\u8cc0\4\u8d20\4\u8d80\4\u8de0\4\u8e40\4\u8ea0"+ - "\4\u8f00\4\u8f60\4\u8fc0\4\u9020\4\u9080\4\u90e0\4\u9140\4\u91a0"+ - "\4\u9200\4\u9260\4\u92c0\4\u9320\4\u9380\4\u93e0\4\u9440\4\u94a0"+ - "\0\u4200\4\u9500\4\u9560\4\u95c0\4\u9620\4\u9680\4\u96e0\4\u9740"+ - "\4\u97a0\4\u9800\4\u9860\4\u98c0\4\u9920\4\u9980\4\u99e0\4\u9a40"+ - "\4\u9aa0\4\u9b00\4\u9b60\4\u9bc0\4\u9c20\4\u9c80\4\u9ce0\4\u9d40"+ - "\4\u9da0\4\u9e00\4\u9e60\4\u9ec0\4\u9f20\4\u9f80\4\u9fe0\4\ua040"+ - "\4\ua0a0\4\ua100\4\ua160\4\ua1c0\4\ua220\4\ua280\4\ua2e0\4\ua340"+ - "\4\ua3a0\4\ua400\4\ua460\4\ua4c0\4\ua520\4\ua580\4\ua5e0\4\ua640"+ - "\4\ua6a0\4\ua700\4\ua760\4\ua7c0\2\u4ae0\4\ua820\4\ua880\4\ua8e0"+ - "\4\ua940\4\ua9a0\4\uaa00\4\uaa60\4\uaac0\4\uab20\4\uab80\4\uabe0"+ - "\4\uac40\4\uaca0\4\uad00\4\uad60\4\uadc0\4\uae20\4\uae80\4\uaee0"+ - "\4\uaf40\4\uafa0\4\ub000\4\ub060\4\ub0c0\4\ub120\4\ub180\4\ub1e0"+ - "\4\ub240\4\ub2a0\4\ub300\4\ub360\4\ub3c0\4\ub420\4\ub480\4\ub4e0"+ - "\4\ub540\4\ub5a0\4\ub600\4\ub660\4\ub6c0\4\ub720\4\ub780\4\ub7e0"+ - "\4\ub840\4\ub8a0\4\ub900\4\ub960\4\ub9c0\4\uba20\4\uba80\4\ubae0"+ - "\4\ubb40\4\ubba0\4\ubc00\4\ubc60\4\ubcc0\4\ubd20\4\ubd80\4\ubde0"+ - "\4\ube40\4\ubea0\4\ubf00\4\ubf60\4\ubfc0\4\uc020\4\uc080\4\uc0e0"+ - "\4\uc140\4\uc1a0\4\uc200\4\uc260\4\uc2c0\4\uc320\4\uc380\4\uc3e0"+ - "\4\uc440\4\uc4a0\4\uc500\4\uc560\4\uc5c0\4\uc620\4\uc680\4\uc6e0"+ - "\4\uc740\4\uc7a0\4\uc800\4\uc860\4\uc8c0\4\uc920\4\uc980\4\uc9e0"+ - "\4\uca40\4\ucaa0\4\ucb00\4\ucb60\4\ucbc0\4\ucc20\4\ucc80\4\ucce0"+ - "\4\ucd40\4\ucda0\4\uce00\4\uce60\3\u74a0\4\ucec0\4\ucf20\4\ucf80"+ - "\4\ucfe0\4\ud040\4\ud0a0\4\ud100\4\ud160\4\ud1c0\4\ud220\1\u1280"+ - "\4\ud280\4\ud2e0\4\ud340\4\ud3a0\4\ud400\4\ud460\1\uea20\4\ud4c0"+ - "\4\ud520\4\ud580\4\ud5e0\4\ud640\4\ud6a0\4\ud700\4\ud760\4\ud7c0"+ - "\4\ud820\4\ud880\4\ud8e0\4\ud940\4\ud9a0\4\uda00\4\uda60\4\udac0"+ - "\4\udb20\4\udb80\4\udbe0\4\udc40\4\udca0\4\udd00\4\udd60\4\uddc0"+ - "\4\ude20\4\ude80\4\udee0\4\udf40\4\udfa0\4\ue000\4\ue060\4\ue0c0"+ - "\4\ue120\4\ue180\4\ue1e0\4\ue240\4\ue2a0\4\ue300\4\ue360\4\ue3c0"+ - "\4\ue420\4\ue480\4\ue4e0\4\ue540\4\ue5a0\4\ue600\4\ue660\4\ue6c0"+ - "\4\ue720\4\ue780\4\ue7e0\4\ue840\4\ue8a0\4\ue900\4\ue960\4\ue9c0"+ - "\4\ue900\4\uea20\4\uea80\4\ueae0\4\ueb40\4\ueba0\4\uec00\4\uec60"+ - "\4\uecc0\4\ued20\4\ued80\4\uede0\4\uee40\4\ueea0\4\uef00\4\uef60"+ - "\4\uefc0\4\uf020\4\uf080\4\uf0e0\4\uf140\4\uf1a0\4\uf200\4\uf260"+ - "\4\uf2c0\4\uf320\4\uf380\4\uf3e0\4\uf440\4\uf4a0\4\uf500\4\uf560"+ - "\4\uf5c0\4\uf620\4\uf680\4\uf6e0\4\uf740\4\uf7a0\4\uf800\4\uf860"+ - "\4\uf8c0\4\uf920\4\uf980\4\uf9e0\4\ufa40\4\ufaa0\4\ufb00\4\ufb60"+ - "\4\ufbc0\4\ufc20\4\ufc80\4\ufce0\4\ufd40\4\ufda0\4\ufe00\4\ufe60"+ - "\4\ufec0\4\uff20\4\uff80\4\uffe0\5\100\5\240\5\u0100\5\u0160"+ - "\5\u01c0\5\u0220\5\u0280\5\u02e0\5\u0340\5\u03a0\5\u0400\5\u0460"+ - "\5\u04c0\5\u0520\5\u0580\5\u05e0\5\u0640\5\u06a0\5\u0700\5\u0760"+ - "\5\u07c0\5\u0820\5\u0880\5\u08e0\5\u0940\5\u09a0\5\u0a00\5\u0a60"+ - "\5\u0ac0\4\uce00\5\u0b20\5\u0b80\5\u0be0\5\u0c40\5\u0ca0\5\u0d00"+ - "\5\u0d60\5\u0dc0\5\u0e20\5\u0e80\5\u0ee0\5\u0f40\5\u0fa0\5\u1000"+ - "\5\u1060\5\u10c0\5\u1120\5\u1180\5\u11e0\5\u1240\5\u12a0\5\u1300"+ - "\5\u1360\5\u13c0\5\u1420\5\u1480\5\u14e0\5\u1540\5\u15a0\5\u1600"+ - "\5\u1660\5\u16c0\5\u1720\5\u1780\5\u17e0\5\u1840\5\u18a0\5\u1900"+ - "\5\u1960\5\u19c0\5\u1a20\5\u1a80\5\u1ae0\5\u1b40\5\u1ba0\5\u1c00"+ - "\5\u1c60\5\u1cc0\5\u1d20\5\u1d80\5\u1de0\5\u1e40\5\u1ea0\5\u1f00"+ - "\5\u1f60\5\u1fc0\5\u2020\5\u2080\5\u20e0\5\u2140\5\u21a0\5\u2200"+ - "\5\u2260\5\u22c0\5\u2320\5\u2380\5\u23e0\5\u2440\5\u24a0\5\u2500"+ - "\5\u2560\5\u25c0\5\u2620\5\u2680\5\u26e0\5\u2740\5\u27a0\5\u2800"+ - "\5\u2860\5\u28c0\5\u2920\5\u2980\5\u29e0\5\u2a40\5\u2aa0\5\u2b00"+ - "\5\u2b60\5\u2bc0\5\u2c20\5\u2c80\5\u2ce0\5\u2d40\5\u2da0\5\u2e00"+ - "\5\u2e60\5\u2ec0\5\u2f20\5\u2f80\5\u2fe0\5\u3040\5\u30a0\5\u3100"+ - "\5\u3160\5\u31c0\5\u3220\5\u3280\5\u32e0\5\u3340\5\u33a0\5\u3400"+ - "\5\u3460\5\u34c0\5\u3520\5\u3580\5\u35e0\5\u3640\5\u36a0\5\u3700"+ - "\5\u3760\5\u37c0\5\u3820\5\u3880\5\u38e0\1\u9800\5\u3940\5\u39a0"+ - "\5\u3a00\5\u3a60\5\u3ac0\5\u3b20\5\u3b80\5\u3be0\5\u3c40\5\u3ca0"+ - "\5\u3d00\5\u3d60\5\u3dc0\5\u3e20\5\u3e80\5\u3ee0\5\u3f40\5\u3fa0"+ - "\5\u4000\5\u4060\5\u40c0\5\u4120\5\u4180\5\u41e0\5\u4240\5\u42a0"+ - "\5\u4300\5\u4360\5\u43c0\5\u4420\5\u4480\5\u44e0\5\u4540\5\u45a0"+ - "\5\u4600\5\u4660\5\u46c0\5\u4720\5\u4780\5\u47e0\5\u4840\5\u48a0"+ - "\5\u4900\5\u4960\5\u49c0\5\u4a20\5\u4a80\5\u4ae0\5\u4b40\5\u4ba0"+ - "\5\u4c00\5\u4c60\5\u4cc0\5\u4d20\5\u4d80\5\u4de0\5\u4e40\5\u4ea0"+ - "\5\u4f00\5\u4f60\5\u4fc0\5\u5020\5\u5080\5\u50e0\5\u5140\5\u51a0"+ - "\5\u5200\5\u5260\5\u52c0\5\u5320\5\u5380\5\u53e0\5\u5440\5\u54a0"+ - "\5\u5500\5\u5560\5\u55c0\5\u5620\5\u5680\5\u56e0\5\u5740\5\u57a0"+ - "\5\u5800\5\u5860\5\u58c0\5\u5920\1\uf860\5\u5980\5\u59e0\5\u5a40"+ - "\5\u5aa0\5\u5b00\5\u5b60\5\u5bc0\5\u5c20\5\u5c80\5\u5ce0\5\u5d40"+ - "\5\u5da0\5\u5e00\5\u5e60\5\u5ec0\5\u5f20\5\u5f80\5\u5fe0\5\u6040"+ - "\5\u60a0\5\u6100\5\u6160\5\u61c0\5\u6220\5\u6280\5\u62e0\5\u6340"+ - "\5\u63a0\5\u6400\5\u6460\5\u64c0\5\u6520\5\u6580\5\u65e0\5\u6640"+ - "\5\u66a0\5\u6700\5\u6760\5\u67c0\5\u6820\5\u6880\5\u68e0\5\u6940"+ - "\5\u69a0\5\u6a00\5\u6a60\5\u6ac0\5\u6b20\5\u6b80\5\u6be0\5\u6c40"+ - "\5\u6ca0\5\u6d00\5\u6d60\5\u6dc0\5\u6e20\5\u6e80\5\u6ee0\5\u6f40"+ - "\5\u6fa0\5\u7000\5\u7060\5\u70c0\5\u7120\5\u7180\5\u71e0\5\u7240"+ - "\5\u72a0\5\u7300\5\u7360\5\u73c0\5\u7420\5\u7480\5\u74e0\5\u7540"+ - "\5\u75a0\5\u7600\5\u7660\5\u76c0\5\u7720\5\u7780\5\u77e0\5\u7840"+ - "\5\u78a0\5\u7900\5\u7960\5\u79c0\5\u7a20\5\u7a80\5\u7ae0\5\u7b40"+ - "\5\u7ba0\5\u7c00\5\u7c60\5\u7cc0\5\u7d20\5\u7d80\5\u7de0\5\u7e40"+ - "\5\u7ea0\5\u7f00\5\u7f60\5\u7fc0\5\u8020\5\u8080\5\u80e0\5\u8140"+ - "\5\u81a0\5\u8200\5\u8260\5\u82c0\5\u8320\5\u8380\5\u83e0\5\u8440"+ - "\5\u84a0\5\u8500\5\u8560\5\u85c0\5\u8620\5\u8680\5\u86e0\5\u8740"+ - "\5\u87a0\5\u8800\5\u8860\5\u88c0\5\u8920\5\u8980\5\u89e0\5\u8a40"+ - "\5\u8aa0\5\u8b00\5\u8b60\5\u8bc0\5\u8c20\5\u8c80\5\u8ce0\5\u8d40"+ - "\5\u8da0\5\u8e00\5\u8e60\5\u8ec0\5\u8f20\5\u8f80\5\u8fe0\5\u9040"+ - "\5\u90a0\5\u9100\5\u9160\5\u91c0\5\u9220\5\u9280\5\u92e0\5\u9340"+ - "\5\u93a0\5\u9400\5\u9460\5\u94c0\5\u9520\5\u9580\5\u95e0\5\u9640"+ - "\5\u96a0\5\u9700\5\u9760\5\u97c0\5\u9820\5\u9880\5\u98e0\5\u9940"+ - "\5\u99a0\5\u9a00\5\u9a60\5\u9ac0\5\u9b20\5\u9b80\5\u9be0\5\u9c40"+ - "\5\u9ca0\5\u9d00\5\u9d60\5\u9dc0\5\u9e20\5\u9e80\5\u9ee0\5\u9f40"+ - "\5\u9fa0\5\ua000\5\ua060\5\ua0c0\5\ua120\5\ua180\5\ua1e0\5\ua240"+ - "\5\ua2a0\5\ua300\5\ua360\5\ua3c0\5\ua420\5\ua480\5\ua4e0\5\ua540"+ - "\5\ua5a0\5\ua600\5\ua660\5\ua6c0\5\ua720\5\ua780\5\ua7e0\5\ua840"+ - "\5\ua8a0\5\ua900\5\ua960\5\ua9c0\5\uaa20\5\uaa80\5\uaae0\5\uab40"+ - "\5\uaba0\5\uac00\5\uac60\5\uacc0\5\uad20\5\uad80\5\uade0\5\uae40"+ - "\5\uaea0\5\uaf00\5\uaf60\3\u9420\5\uafc0\5\ub020\5\ub080\5\ub0e0"+ - "\5\ub140\5\ub1a0\5\ub200\5\ub260\5\ub2c0\5\ub320\5\ub380\5\ub3e0"+ - "\5\ub440\5\ub4a0\5\ub500\5\ub560\5\ub5c0\5\ub620\5\ub680\5\ub6e0"+ - "\5\ub740\5\ub7a0\5\ub800\5\ub860\5\ub8c0\5\ub920\5\ub980\5\ub9e0"+ - "\5\uba40\5\ubaa0\5\ubb00\5\ubb60\5\ubbc0\5\ubc20\5\ubc80\5\ubce0"+ - "\5\ubd40\5\ubda0\5\ube00\5\ube60\5\ubec0\5\ubf20\5\ubf80\5\ubfe0"+ - "\5\uc040\5\uc0a0\5\uc100\5\uc160\5\uc1c0\5\uc220\5\uc280\5\uc2e0"+ - "\5\uc340\5\uc3a0\5\uc400\5\uc460\5\uc4c0\5\uc520\5\uc580\5\uc5e0"+ - "\5\uc640\5\uc6a0\5\uc700\5\uc760\5\uc7c0\5\uc820\5\uc880\5\uc8e0"+ - "\5\uc940\5\uc9a0\5\uca00\5\uca60\5\ucac0\5\ucb20\5\ucb80\5\ucbe0"+ - "\5\ucc40\5\ucca0\5\ucd00\5\ucd60\5\ucdc0\5\uce20\5\uce80\5\ucee0"+ - "\5\ucf40\5\ucfa0\5\ud000\5\ud060\5\ud0c0\5\ud120\5\ud180\5\ud1e0"+ - "\5\ud240\5\ud2a0\5\ud300\5\ud360\5\ud3c0\5\ud420\5\ud480\5\ud4e0"+ - "\5\ud540\5\ud5a0\5\ud600\5\ud660\5\ud6c0\5\ud720\5\ud780\5\ud7e0"+ - "\5\ud840\5\ud8a0\5\ud900\5\ud960\5\ud9c0\5\uda20\5\uda80\5\udae0"+ - "\5\udb40\5\udba0\5\udc00\5\udc60\5\udcc0\5\udd20\5\udd80\5\udde0"+ - "\5\ude40\5\udea0\5\udf00\5\udf60\5\udfc0\5\ue020\5\ue080\5\ue0e0"+ - "\5\ue140\5\ue1a0\5\ue200\5\ue260\5\ue2c0\5\ue320\5\ue380\5\ue3e0"+ - "\5\ue440\5\ue4a0\5\ue500\5\ue560\5\ue5c0\5\ue620\5\ue680\5\ue6e0"+ - "\5\ue740\5\ue7a0\5\ue800\5\ue860\5\ue8c0\5\ue920\5\ue980\5\ue9e0"+ - "\5\uea40\5\ueaa0\5\ueb00\5\ueb60\5\uebc0\5\uec20\5\uec80\5\uece0"+ - "\5\ued40\5\ueda0\5\uee00\5\uee60\5\ueec0\5\uef20\5\uef80\5\uefe0"+ - "\5\uf040\5\uf0a0\5\uf100\5\uf160\5\uf1c0\5\uf220\5\uf280\5\uf2e0"+ - "\1\u88a0\5\uf340\5\uf3a0\5\uf400\5\uf460\5\uf4c0\5\uf520\5\uf580"+ - "\5\uf5e0\5\uf640\5\uf6a0\5\uf700\5\uf760\5\uf7c0\5\uf820\5\uf880"+ - "\5\uf8e0\5\uf940\5\uf9a0\5\ufa00\5\ufa60\5\ufac0\5\ufb20\5\ufb80"+ - "\5\ufbe0\5\ufc40\5\ufca0\5\ufd00\5\ufd60\5\ufdc0\5\ufe20\5\ufe80"+ - "\5\ufee0\5\uff40\5\uffa0\6\0\6\140\6\300\6\u0120\6\u0180"+ - "\1\u29c0\6\u01e0\6\u0240\6\u02a0\6\u0300\6\u0360\6\u03c0\6\u0420"+ - "\6\u0480\6\u04e0\6\u0540\6\u05a0\6\u0600\6\u0660\6\u06c0\6\u0720"+ - "\6\u0780\6\u07e0\6\u0840\6\u08a0\6\u0900\6\u0960\6\u09c0\6\u0a20"+ - "\6\u0a80\6\u0ae0\6\u0b40\6\u0ba0\6\u0c00\6\u0c60\6\u0cc0\6\u0d20"+ - "\6\u0d80\6\u0de0\6\u0e40\6\u0ea0\6\u0f00\6\u0f60\6\u0fc0\6\140"+ - "\6\u1020\6\u1080\6\u10e0\6\u1140\6\u11a0\6\u1200\6\u1260\6\u12c0"+ - "\6\u1320\6\u1380\6\u13e0\6\u1440\6\u14a0\6\u1500\6\u1560\6\u15c0"+ - "\6\u1620\6\u1680\6\u16e0\6\u1740\6\u17a0\6\u1800\6\u1860\6\u18c0"+ - "\6\u1920\6\u1980\6\u19e0\6\u1a40\6\u1aa0\6\u1b00\6\u1b60\6\u1bc0"+ - "\6\u1c20\6\u1c80\6\u1ce0\6\u1d40\6\u1da0\6\u1e00\6\u1e60\6\u1ec0"+ - "\6\u1f20\6\u1f80\6\u1fe0\6\u2040\6\u20a0\6\u2100\6\u2160\6\u21c0"+ - "\6\u2220\6\u2280\6\u22e0\6\u2340\6\u23a0\6\u2400\6\u2460\6\u24c0"+ - "\6\u2520\6\u2580\6\u25e0\6\u2640\6\u26a0\6\u2700\6\u2760\6\u27c0"+ - "\6\u2820\6\u2880\6\u28e0\6\u2940\6\u29a0\6\u2a00\6\u2a60\6\u2ac0"+ - "\6\u2b20\6\u2b80\6\u2be0\6\u2c40\6\u2ca0\4\u66e0\6\u2d00\6\u2d60"+ - "\6\u2dc0\6\u2e20\6\u2e80\6\u2ee0\6\u2f40\6\u2fa0\6\u3000\6\u3060"+ - "\6\u30c0\6\u3120\6\u3180\6\u31e0\6\u3240\6\u32a0\6\u3300\6\u3360"+ - "\6\u33c0\6\u3420\6\u3480\6\u34e0\6\u3540\6\u35a0\6\u3600\6\u3660"+ - "\6\u36c0\6\u3720\6\u3780\6\u37e0\6\u3840\6\u38a0\6\u3900\6\u3960"+ - "\6\u39c0\6\u3a20\6\u3a80\6\u3ae0\6\u3b40\3\u0720\6\u3ba0\6\u3c00"+ - "\6\u3c60\6\u3cc0\6\u3d20\6\u3d80\6\u3de0\6\u3e40\6\u3ea0\6\u3f00"+ - "\6\u3f60\6\u3fc0\6\u4020\6\u4080\6\u40e0\6\u4140\6\u41a0\6\u4200"+ - "\6\u4260\6\u42c0\6\u4320\6\u4380\6\u43e0\6\u4440\6\u44a0\6\u4500"+ - "\6\u4560\6\u45c0\6\u4620\6\u4680\6\u46e0\6\u4740\6\u47a0\6\u4800"+ - "\6\u4860\6\u48c0\6\u4920\6\u4980\6\u49e0\6\u4a40\6\u4aa0\6\u4b00"+ - "\6\u4b60\6\u4bc0\6\u4c20\6\u4c80\6\u4ce0\6\u4d40\6\u4da0\6\u4e00"+ - "\6\u4e60\6\u4ec0\6\u4f20\6\u4f80\6\u4fe0\6\u5040\6\u50a0\6\u5100"+ - "\6\u5160\6\u51c0\6\u5220\6\u5280\6\u52e0\6\u5340\6\u53a0\6\u5400"+ - "\6\u5460\6\u54c0\6\u5520\6\u5580\6\u55e0\6\u5640\6\u56a0\6\u5700"+ - "\6\u5760\6\u57c0\6\u5820\6\u5880\6\u58e0\6\u5940\6\u59a0\6\u5a00"+ - "\6\u5a60\6\u5ac0\6\u5b20\6\u5b80\6\u5be0\6\u5c40\6\u5ca0\6\u5d00"+ - "\6\u5d60\6\u5dc0\6\u5e20\6\u5e80\6\u5ee0\6\u5f40\6\u5fa0\6\u6000"+ - "\6\u6060\6\u60c0\6\u6120\6\u6180\6\u61e0\6\u6240\6\u62a0\6\u6300"+ - "\6\u6360\6\u63c0\6\u6420\6\u6480\6\u64e0\3\ucfc0\6\u6540\6\u65a0"+ - "\6\u6600\6\u6660\6\u66c0\6\u6720\6\u6780\6\u67e0\6\u6840\6\u68a0"+ - "\6\u6900\6\u6960\6\u69c0\6\u6a20\6\u6a80\6\u6ae0\6\u6b40\6\u6ba0"+ - "\6\u6c00\6\u6c60\6\u6cc0\6\u6d20\6\u6d80\6\u6de0\6\u6e40\6\u6ea0"+ - "\6\u6f00\6\u6f60\6\u6fc0\6\u7020\6\u7080\6\u70e0\6\u7140\6\u71a0"+ - "\6\u7200\6\u7260\6\u72c0\6\u7320\6\u7380\6\u73e0\6\u7440\6\u74a0"+ - "\6\u7500\6\u7560\6\u75c0\6\u7620\6\u7680\6\u76e0\6\u7740\6\u77a0"+ - "\6\u7800\6\u7860\6\u78c0\6\u7920\6\u7980\6\u79e0\6\u7a40\6\u7aa0"+ - "\6\u7b00\6\u7b60\6\u7bc0\6\u7c20\6\u7c80\6\u7ce0\6\u7d40\6\u7da0"+ - "\6\u7e00\6\u7e60\6\u7ec0\6\u7f20\6\u7f80\6\u7fe0\6\u8040\6\u80a0"+ - "\6\u8100\6\u8160\6\u81c0\6\u8220\6\u8280\6\u82e0\6\u8340\6\u83a0"+ - "\6\u8400\6\u8460\6\u84c0\6\u8520\6\u8580\6\u85e0\6\u8640\6\u86a0"+ - "\6\u8700\6\u8760\6\u87c0\6\u8820\6\u8880\6\u88e0\6\u8940\6\u89a0"+ - "\6\u8a00\6\u8a60\6\u8ac0\6\u8b20\6\u8b80\6\u8be0\6\u8c40\6\u8ca0"+ - "\6\u8d00\6\u8d60\6\u8dc0\6\u8e20\6\u8e80\6\u8ee0\6\u8f40\6\u8fa0"+ - "\6\u9000\6\u9060\6\u90c0\6\u9120\6\u9180\6\u91e0\6\u9240\6\u92a0"+ - "\6\u9300\6\u9360\6\u93c0\6\u9420\6\u9480\6\u94e0\6\u9540\6\u95a0"+ - "\6\u9600\6\u9660\6\u96c0\6\u9720\6\u9780\6\u97e0\6\u9840\6\u98a0"+ - "\6\u9900\6\u9960\6\u99c0\6\u9a20\6\u9a80\6\u9ae0\6\u9b40\6\u9ba0"+ - "\6\u9c00\6\u9c60\6\u9cc0\6\u9d20\6\u9d80\6\u9de0\6\u9e40\6\u9ea0"+ - "\6\u9f00\6\u9f60\6\u9fc0\6\ua020\6\ua080\6\ua0e0\6\ua140\6\ua1a0"+ - "\6\ua200\6\ua260\6\ua2c0\6\ua320\6\ua380\6\ua3e0\6\ua440\6\ua4a0"+ - "\0\u0b40\6\ua500\6\ua560\6\ua5c0\6\ua620\6\ua680\0\u0b40\6\ua6e0"+ - "\0\u0b40\0\u0b40\6\ua740\6\ua7a0\6\ua800\6\ua860\6\ua8c0\6\ua920"+ - "\6\ua980\6\ua9e0\6\uaa40\6\uaaa0\6\uab00\6\uab60\6\uabc0\6\uac20"+ - "\6\uac80\6\uace0\6\uad40\6\uada0\6\uae00\6\uae60\6\uaec0\6\uaf20"+ - "\6\uaf80\6\uafe0\6\ub040\6\ub0a0\6\ub100\6\ub160\6\ub1c0\6\ub220"+ - "\6\ub280\6\ub2e0\6\ub340\6\ub3a0\6\ub400\6\ub460\6\ub4c0\6\ub520"+ - "\6\ub580\6\ub5e0\6\ub640\6\ub6a0\6\ub700\6\ub760\3\ub6a0\6\ub7c0"+ - "\6\ub820\6\ub880\6\ub8e0\6\ub940\6\ub9a0\6\uba00\6\uba60\6\ubac0"+ - "\6\ubb20\6\ubb80\6\ubbe0\6\ubc40\6\ubca0\6\ubd00\6\ubd60\6\ubdc0"+ - "\6\ube20\6\ube80\6\ubee0\6\ubf40\6\ubfa0\6\uc000\6\uc060\6\uc0c0"+ - "\6\uc120\2\u9820\6\uc180\4\u0560\6\uc1e0\6\uc240\6\uc2a0\6\uc300"+ - "\6\uc360\6\uc3c0\6\uc420\6\uc480\6\uc4e0\6\uc540\6\uc5a0\6\uc600"+ - "\6\uc660\6\uc6c0\6\uc720\6\uc780\6\uc7e0\6\uc840\6\uc8a0\6\uc900"+ - "\6\uc960\6\uc9c0\6\uca20\6\uca80\6\ucae0\6\ucb40\6\ucba0\6\ucc00"+ - "\6\ucc60\6\uccc0\6\ucd20\6\ucd80\6\ucde0\6\uce40\6\ucea0\6\ucf00"+ - "\6\ucf60\6\ucfc0\6\ud020\6\ud080\6\ud0e0\6\ud140\6\ud1a0\1\ud220"+ - "\6\ud200\6\ud260\6\ud2c0\6\ud320\6\ud380\6\ud3e0\6\ud440\6\ud4a0"+ - "\6\ud500\6\ud560\6\ud5c0\6\ud620\6\ud680\6\ud6e0\4\ua160\6\ud740"+ - "\6\ud7a0\6\ud800\6\ud860\6\ud8c0\6\ud920\6\ud980\6\ud9e0\6\uda40"+ - "\6\udaa0\6\udb00\6\udb60\6\udbc0\6\udc20\6\udc80\6\udce0\6\udd40"+ - "\6\udda0\6\ude00\6\ude60\6\udec0\6\udf20\6\udf80\6\udfe0\6\ue040"+ - "\6\ue0a0\6\ue100\6\ue160\6\ue1c0\6\ue220\6\ue280\6\ue2e0\6\ue340"+ - "\6\ue3a0\6\ue400\6\ue460\6\ue4c0\6\ue520\6\ue580\6\ue5e0\6\ue640"+ - "\6\ue6a0\6\ue700\6\ue760\6\ue7c0\6\ue820\6\ue880\6\ue8e0\6\ue940"+ - "\6\ue9a0\6\uea00\6\uea60\6\ueac0\6\ueb20\6\ueb80\6\uebe0\6\uec40"+ - "\6\ueca0\6\ued00\6\ued60\6\uedc0\6\uee20\6\uee80\6\ueee0\6\uef40"+ - "\6\uefa0\6\uf000\6\uf060\6\uf0c0\6\uf120\6\uf180\6\uf1e0\6\uf240"+ - "\6\uf2a0\6\uf300\6\uf360\6\uf3c0\6\uf420\6\uf480\6\uf4e0\6\uf540"+ - "\6\uf5a0\6\uf600\6\uf660\6\uf6c0\6\uf720\6\uf780\6\uf7e0\6\uf840"+ - "\6\uf8a0\6\uf900\6\uf960\6\uf9c0\6\ufa20\6\ufa80\6\ufae0\6\ufb40"+ - "\6\ufba0\6\ufc00\6\ufc60\6\ufcc0\6\ufd20\6\ufd80\6\ufde0\6\ufe40"+ - "\6\ufea0\6\uff00\6\uff60\6\uffc0\7\40\7\200\7\340\7\u0140"+ - "\7\u01a0\7\u0200\7\u0260\7\u02c0\7\u0320\7\u0380\7\u03e0\7\u0440"+ - "\7\u04a0\7\u0500\7\u0560\7\u05c0\7\u0620\7\u0680\7\u06e0\7\u0740"+ - "\7\u07a0\7\u0800\7\u0860\7\u08c0\7\u0920\7\u0980\7\u09e0\7\u0a40"+ - "\7\u0aa0\7\u0b00\7\u0b60\7\u0bc0\7\u0c20\7\u0c80\7\u0ce0\7\u0d40"+ - "\7\u0da0\7\u0e00\7\u0e60\7\u0ec0\7\u0f20\5\ub080\7\u0f80\7\u0fe0"+ - "\7\u1040\7\u10a0\7\u1100\7\u1160\7\u11c0\7\u1220\7\u1280\7\u12e0"+ - "\7\u1340\7\u13a0\7\u1400\7\u1460\7\u14c0\7\u1520\7\u1580\7\u15e0"+ - "\7\u1640\7\u16a0\7\u1700\7\u1760\1\u8720\7\u17c0\7\u1820\7\u1880"+ - "\7\u18e0\7\u1940\7\u19a0\7\u1a00\7\u1a60\7\u1ac0\7\u1b20\7\u1b80"+ - "\7\u1be0\7\u1c40\7\u1ca0\7\u1d00\7\u1d60\7\u1dc0\7\u1e20\7\u1e80"+ - "\7\u1ee0\7\u1f40\7\u1fa0\7\u2000\7\u2060\7\u20c0\7\u2120\7\u2180"+ - "\7\u21e0\7\u2240\7\u22a0\7\u2300\7\u2360\7\u23c0\7\u2420\7\u2480"+ - "\7\u24e0\7\u2540\7\u25a0\7\u2600\7\u2660\7\u26c0\7\u2720\7\u2780"+ - "\7\u27e0\7\u2840\7\u28a0\7\u2900\7\u2960\7\u29c0\7\u2a20\7\u2a80"+ - "\7\u2ae0\7\u2b40\7\u2ba0\7\u2c00\7\u2c60\7\u2cc0\7\u2d20\7\u2d80"+ - "\3\ud020\7\u2de0\7\u2e40\7\u2ea0\7\u2f00\7\u2f60\7\u2fc0\7\u3020"+ - "\7\u3080\7\u30e0\7\u3140\7\u31a0\7\u3200\7\u3260\7\u32c0\7\u3320"+ - "\7\u3380\7\u33e0\7\u3440\7\u34a0\7\u3500\7\u3560\7\u35c0\7\u3620"+ - "\7\u3680\7\u36e0\7\u3740\7\u37a0\7\u3800\7\u3860\7\u38c0\7\u3920"+ - "\7\u3980\7\u39e0\7\u3a40\7\u3aa0\1\ue4e0\7\u3b00\7\u3b60\7\u3bc0"+ - "\7\u3c20\7\u3c80\7\u3ce0\7\u3d40\7\u3da0\7\u3e00\7\u3e60\7\u3ec0"+ - "\7\u3f20\7\u3f80\7\u3fe0\7\u4040\7\u40a0\7\u4100\7\u4160\7\u41c0"+ - "\7\u4220\7\u4280\7\u42e0\7\u4340\7\u43a0\7\u4400\7\u4460\7\u44c0"+ - "\7\u4520\7\u4580\7\u45e0\7\u4640\7\u46a0\7\u4700\7\u4760\7\u47c0"+ - "\7\u4820\7\u4880\7\u48e0\7\u4940\7\u49a0\7\u4a00\7\u4a60\7\u4ac0"+ - "\7\u4b20\7\u4b80\7\u4be0\7\u4c40\7\u4ca0\7\u4d00\7\u4d60\7\u4dc0"+ - "\7\u4e20\7\u4e80\7\u4ee0\7\u4f40\7\u4fa0\7\u5000\7\u5060\7\u50c0"+ - "\7\u5120\7\u5180\7\u51e0\7\u5240\7\u52a0\7\u5300\7\u5360\7\u53c0"+ - "\7\u5420\7\u5480\7\u54e0\7\u5540\7\u55a0\7\u5600\7\u5660\7\u56c0"+ - "\7\u5720\7\u5780\7\u57e0\7\u5840\7\u58a0\7\u5900\7\u5960\7\u59c0"+ - "\7\u5a20\7\u5a80\7\u5ae0\7\u5b40\7\u5ba0\7\u5c00\7\u5c60\7\u5cc0"+ - "\7\u5d20\7\u5d80\7\u5de0\7\u5e40\7\u5ea0\7\u5f00\7\u5f60\7\u5fc0"+ - "\7\u6020\7\u6080\7\u60e0\7\u6140\7\u61a0\7\u6200\7\u6260\7\u62c0"+ - "\7\u6320\7\u6380\7\u63e0\7\u6440\7\u64a0\7\u6500\7\u6560\7\u65c0"+ - "\7\u6620\7\u6680\7\u66e0\7\u6740\7\u67a0\7\u6800\7\u6860\7\u68c0"+ - "\7\u6920\7\u6980\7\u69e0\7\u6a40\7\u6aa0\7\u6b00\7\u6b60\7\u6bc0"+ - "\7\u6c20\7\u6c80\7\u6ce0\7\u6d40\7\u6da0\7\u6e00\7\u6e60\7\u6ec0"+ - "\7\u6f20\7\u6f80\7\u6fe0\7\u7040\7\u70a0\7\u7100\7\u7160\7\u71c0"+ - "\7\u7220\7\u7280\7\u72e0\7\u7340\7\u73a0\7\u7400\7\u7460\7\u74c0"+ - "\7\u7520\7\u7580\6\u0a20\7\u75e0\7\u7640\7\u76a0\7\u7700\7\u7760"+ - "\7\u77c0\7\u7820\7\u7880\7\u78e0\7\u7940\7\u79a0\7\u7a00\7\u7a60"+ - "\7\u7ac0\7\u7b20\7\u7b80\7\u7be0\7\u7c40\7\u7ca0\7\u7d00\7\u7d60"+ - "\7\u7dc0\7\u7e20\7\u7e80\7\u7ee0\7\u7f40\7\u7fa0\7\u8000\7\u8060"+ - "\7\u80c0\7\u8120\7\u8180\7\u81e0\7\u8240\7\u82a0\7\u8300\7\u8360"+ - "\7\u83c0\7\u8420\7\u8480\7\u84e0\7\u8540\7\u85a0\7\u8600\7\u8660"+ - "\7\u86c0\7\u8720\7\u8780\7\u87e0\7\u8840\7\u88a0\7\u8900\7\u8960"+ - "\7\u89c0\7\u8a20\7\u8a80\7\u8ae0\7\u8b40\7\u8ba0\7\u8c00\7\u8c60"+ - "\7\u8cc0\7\u8d20\7\u8d80\7\u8de0\7\u8e40\7\u8ea0\7\u8f00\7\u8f60"+ - "\7\u8fc0\7\u9020\7\u9080\7\u90e0\7\u9140\7\u91a0\7\u9200\7\u9260"+ - "\7\u92c0\7\u9320\7\u9380\7\u93e0\7\u9440\7\u94a0\7\u9500\7\u9560"+ - "\7\u95c0\7\u9620\7\u9680\7\u96e0\7\u9740\7\u97a0\7\u9800\7\u9860"+ - "\7\u98c0\7\u9920\7\u9980\7\u99e0\7\u9a40\7\u9aa0\7\u9b00\7\u9b60"+ - "\7\u9bc0\7\u9c20\7\u9c80\7\u9ce0\7\u9d40\7\u9da0\7\u9e00\7\u9e60"+ - "\7\u9ec0\7\u9f20\7\u9f80\7\u9fe0\7\ua040\7\ua0a0\7\ua100\7\ua160"+ - "\7\ua1c0\7\ua220\7\ua280\7\ua2e0\7\ua340\7\ua3a0\7\ua400\7\ua460"+ - "\7\ua4c0\7\ua520\7\ua580\7\ua5e0\7\ua640\7\ua6a0\7\ua700\7\ua760"+ - "\7\ua7c0\7\ua820\7\ua880\7\ua8e0\7\ua940\7\ua9a0\7\uaa00\7\uaa60"+ - "\7\uaac0\7\uab20\7\uab80\7\uabe0\7\uac40\7\uaca0\7\uad00\7\uad60"+ - "\7\uadc0\7\uae20\7\uae80\7\uaee0\7\uaf40\7\uafa0\7\ub000\7\ub060"+ - "\7\ub0c0\7\ub120\7\ub180\7\ub1e0\7\ub240\7\ub2a0\7\ub300\7\ub360"+ - "\7\ub3c0\7\ub420\7\ub480\7\ub4e0\7\ub540\7\ub5a0\7\ub600\7\ub660"+ - "\7\ub6c0\7\ub720\7\ub780\7\ub7e0\7\ub840\7\ub8a0\7\ub900\7\ub960"+ - "\7\ub9c0\7\uba20\7\uba80\7\ubae0\7\ubb40\7\ubba0\7\ubc00\7\ubc60"+ - "\7\ubcc0\7\ubd20\7\ubd80\7\ubde0\7\ube40\7\ubea0\7\ubf00\7\ubf60"+ - "\7\ubfc0\7\uc020\7\uc080\7\uc0e0\7\uc140\7\uc1a0\7\uc200\7\uc260"+ - "\7\uc2c0\7\uc320\7\uc380\7\uc3e0\7\uc440\7\uc4a0\7\uc500\7\uc560"+ - "\7\uc5c0\7\uc620\7\uc680\7\uc6e0\7\uc740\7\uc7a0\7\uc800\7\uc860"+ - "\7\uc8c0\7\uc920\7\uc980\7\uc9e0\7\uca40\7\ucaa0\7\ucb00\7\ucb60"+ - "\7\ucbc0\7\ucc20\7\ucc80\7\ucce0\7\ucd40\7\ucda0\7\uce00\7\uce60"+ - "\7\ucec0\7\ucf20\7\ucf80\7\ucfe0\7\ud040\7\ud0a0\7\ud100\7\ud160"+ - "\7\ud1c0\7\ud220\7\ud280\7\ud2e0\7\ud340\7\ud3a0\7\ud400\7\ud460"+ - "\7\ud4c0\7\ud520\4\uc740\7\ud580\7\ud5e0\7\ud640\7\ud6a0\7\ud700"+ - "\7\ud760\7\ud7c0\7\ud820\7\ud880\7\ud8e0\7\ud940\7\ud9a0\7\uda00"+ - "\3\u52e0\7\uda60\7\udac0\7\udb20\7\udb80\7\udbe0\7\udc40\7\udca0"+ - "\7\udd00\7\udd60\7\uddc0\7\ude20\7\ude80\7\udee0\7\udf40\7\udfa0"+ - "\7\ue000\7\ue060\7\ue0c0\7\ue120\7\ue180\7\ue1e0\7\ue240\7\ue2a0"+ - "\7\ue300\7\ue360\7\ue3c0\7\ue420\7\ue480\7\ue4e0\7\ue540\7\ue5a0"+ - "\7\ue600\7\ue660\7\ue6c0\7\ue720\7\ue780\7\ue7e0\7\ue840\7\ue8a0"+ - "\7\ue900\7\ue960\7\ue9c0\7\uea20\7\uea80\7\ueae0\7\ueb40\7\ueba0"+ - "\7\uec00\7\uec60\7\uecc0\7\ued20\7\ued80\7\uede0\7\uee40\7\ueea0"+ - "\7\uef00\7\uef60\7\uefc0\3\u31e0\7\uf020\7\uf080\7\uf0e0\7\uf140"+ - "\7\uf1a0\7\uf200\7\uf260\7\uf2c0\7\uf320\7\uf380\7\uf3e0\7\uf440"+ - "\7\uf4a0\7\uf500\7\uf560\7\uf5c0\7\uf620\7\uf680\7\uf6e0\7\uf740"+ - "\7\uf7a0\7\uf800\7\uf860\7\uf8c0\7\uf920\7\uf980\7\uf9e0\7\ufa40"+ - "\7\ufaa0\7\ufb00\7\ufb60\7\ufbc0\7\ufc20\7\ufc80\7\ufce0\7\ufd40"+ - "\7\ufda0\7\ufe00\7\ufe60\7\ufec0\7\uff20\7\uff80\7\uffe0\10\100"+ - "\10\240\10\u0100\10\u0160\10\u01c0\10\u0220\10\u0280\10\u02e0\10\u0340"+ - "\10\u03a0\10\u0400\10\u0460\10\u04c0\10\u0520\10\u0580\10\u05e0\10\u0640"+ - "\10\u06a0\10\u0700\10\u0760\10\u07c0\10\u0820\10\u0880\10\u08e0\10\u0940"+ - "\10\u09a0\10\u0a00\10\u0a60\10\u0ac0\10\u0b20\10\u0b80\4\u4700\10\u0be0"+ - "\10\u0c40\10\u0ca0\10\u0d00\10\u0d60\10\u0dc0\10\u0e20\10\u0e80\10\u0ee0"+ - "\10\u0f40\10\u0fa0\10\u1000\10\u1060\10\u10c0\10\u1120\10\u1180\10\u11e0"+ - "\10\u1240\10\u12a0\10\u1300\10\u1360\10\u13c0\10\u1420\10\u1480\10\u14e0"+ - "\10\u1540\3\ue100\10\u15a0\10\u1600\10\u1660\10\u16c0\10\u1720\10\u1780"+ - "\10\u17e0\10\u1840\10\u18a0\10\u1900\10\u1960\10\u19c0\10\u1a20\10\u1a80"+ - "\10\u1ae0\10\u1b40\10\u1ba0\10\u1c00\10\u1c60\10\u1cc0\10\u1d20\10\u1d80"+ - "\10\u1de0\10\u1e40\10\u1ea0\10\u1f00\10\u1f60\10\u1fc0\10\u2020\10\u2080"+ - "\10\u20e0\10\u2140\10\u21a0\10\u2200\10\u2260\10\u22c0\10\u2320\10\u2380"+ - "\10\u23e0\10\u2440\10\u24a0\10\u2500\10\u2560\10\u25c0\10\u2620\10\u2680"+ - "\10\u26e0\10\u2740\10\u27a0\10\u2800\10\u2860\10\u28c0\10\u2920\10\u2980"+ - "\10\u29e0\10\u2a40\10\u2aa0\10\u2b00\10\u2b60\10\u2bc0\10\u2c20\10\u2c80"+ - "\10\u2ce0\10\u2d40\10\u2da0\10\u2e00\10\u2e60\10\u2ec0\10\u2f20\10\u2f80"+ - "\10\u2fe0\10\u3040\10\u30a0\10\u3100\10\u3160\10\u31c0\10\u3220\10\u3280"+ - "\10\u32e0\10\u3340\10\u33a0\10\u3400\10\u3460\10\u34c0\10\u3520\10\u3580"+ - "\10\u35e0\10\u3640\10\u36a0\10\u3700\10\u3760\10\u37c0\10\u3820\10\u3880"+ - "\10\u38e0\10\u3940\10\u39a0\10\u3a00\10\u3a60\10\u3ac0\10\u3b20\10\u3b80"+ - "\10\u3be0\10\u3c40\10\u3ca0\10\u3d00\10\u3d60\10\u3dc0\2\u5860\10\u3e20"+ - "\10\u3e80\10\u3ee0\10\u3f40\10\u3fa0\10\u4000\10\u4060\10\u40c0\10\u4120"+ - "\10\u4180\10\u41e0\10\u4240\10\u42a0\10\u4300\10\u4360\10\u43c0\10\u4420"+ - "\10\u4480\10\u44e0\10\u4540\10\u45a0\10\u4600\10\u4660\10\u46c0\10\u4720"+ - "\10\u4780\10\u47e0\10\u4840\10\u48a0\10\u4900\10\u4960\10\u49c0\10\u4a20"+ - "\10\u4a80\10\u4ae0\10\u4b40\10\u4ba0\10\u4c00\10\u4c60\10\u4cc0\10\u4d20"+ - "\10\u4d80\10\u4de0\10\u4e40\10\u4ea0\10\u4f00\10\u4f60\10\u4fc0\10\u5020"+ - "\10\u5080\10\u50e0\10\u5140\10\u51a0\10\u5200\10\u5260\10\u52c0\10\u5320"+ - "\10\u5380\10\u53e0\10\u5440\0\u0b40\10\u54a0\10\u5500\10\u5560\10\u55c0"+ - "\10\u5620\10\u5680\10\u56e0\10\u5740\10\u57a0\10\u5800\10\u5860\10\u58c0"+ - "\10\u5920\10\u5980\10\u59e0\10\u5a40\10\u5aa0\10\u5b00\10\u5b60\10\u5bc0"+ - "\10\u5c20\10\u5c80\10\u5ce0\10\u5d40\10\u5da0\10\u5e00\10\u5e60\10\u5ec0"+ - "\10\u5f20\10\u5f80\10\u5fe0\10\u6040\10\u60a0\10\u6100\10\u6160\6\ube80"+ - "\10\u61c0\10\u6220\10\u6280\10\u62e0\10\u6340\10\u63a0\10\u6400\10\u6460"+ - "\10\u64c0\10\u6520\10\u6580\10\u65e0\10\u6640\10\u66a0\10\u6700\10\u6760"+ - "\10\u67c0\10\u6820\10\u6880\10\u68e0\10\u6940\10\u69a0\10\u6a00\10\u6a60"+ - "\10\u6ac0\10\u6b20\10\u6b80\10\u6be0\10\u6c40\10\u6ca0\10\u6d00\10\u6d60"+ - "\10\u6dc0\10\u6e20\10\u6e80\10\u6ee0\10\u6f40\10\u6fa0\10\u7000\10\u7060"+ - "\10\u70c0\10\u7120\10\u7180\10\u71e0\10\u7240\10\u72a0\10\u7300\10\u7360"+ - "\10\u73c0\10\u7420\10\u7480\10\u74e0\10\u7540\10\u75a0\10\u7600\10\u7660"+ - "\10\u76c0\10\u7720\10\u7780\10\u77e0\10\u7840\10\u78a0\10\u7900\10\u7960"+ - "\10\u79c0\10\u7a20\10\u7a80\10\u7ae0\10\u7b40\10\u7ba0\10\u7c00\10\u7c60"+ - "\10\u7cc0\10\u7d20\10\u7d80\10\u7de0\10\u7e40\10\u7ea0\10\u7f00\10\u7f60"+ - "\10\u7fc0\10\u8020\10\u8080\10\u80e0\10\u8140\10\u81a0\10\u8200\10\u8260"+ - "\10\u82c0\10\u8320\10\u8380\10\u83e0\10\u8440\10\u84a0\10\u8500\10\u8560"+ - "\10\u85c0\10\u8620\10\u8680\10\u86e0\10\u8740\10\u87a0\10\u8800\10\u8860"+ - "\10\u88c0\10\u8920\10\u8980\10\u89e0\10\u8a40\10\u8aa0\10\u8b00\10\u8b60"+ - "\10\u8bc0\10\u8c20\10\u8c80\10\u8ce0\10\u8d40\10\u8da0\6\u49e0\10\u8e00"+ - "\10\u8e60\10\u8ec0\10\u8f20\10\u8f80\10\u8fe0\10\u9040\10\u90a0\10\u9100"+ - "\10\u9160\10\u91c0\10\u9220\10\u9280\10\u92e0\10\u9340\10\u93a0\10\u9400"+ - "\10\u9460\10\u94c0\10\u9520\10\u9580\10\u95e0\10\u9640\10\u96a0\10\u9700"+ - "\10\u9760\10\u97c0\10\u9820\10\u9880\10\u98e0\10\u9940\10\u99a0\10\u9a00"+ - "\10\u9a60\10\u9ac0\10\u9b20\10\u9b80\10\u9be0\10\u9c40\10\u9ca0\10\u9d00"+ - "\10\u9d60\10\u9dc0\10\u9e20\10\u9e80\10\u9ee0\10\u9f40\10\u9fa0\10\ua000"+ - "\10\ua060\10\ua0c0\10\ua120\10\ua180\10\ua1e0\10\ua240\10\ua2a0\10\ua300"+ - "\10\ua360\10\ua3c0\10\ua420\10\ua480\10\ua4e0\10\ua540\10\ua5a0\10\ua600"+ - "\10\ua660\10\ua6c0\10\ua720\10\ua780\10\ua7e0\10\ua840\10\ua8a0\10\ua900"+ - "\10\ua960\10\ua9c0\10\uaa20\10\uaa80\10\uaae0\10\uab40\10\uaba0\10\uac00"+ - "\10\uac60\10\uacc0\10\uad20\10\uad80\10\uade0\10\uae40\10\uaea0\10\uaf00"+ - "\10\uaf60\10\uafc0\10\ub020\10\ub080\10\ub0e0\10\ub140\10\ub1a0\10\ub200"+ - "\10\ub260\10\ub2c0\10\ub320\10\ub380\10\ub3e0\10\ub440\10\ub4a0\10\ub500"+ - "\10\ub560\10\ub5c0\10\ub620\10\ub680\10\ub6e0\10\ub740\10\ub7a0\10\ub800"+ - "\10\ub860\10\ub8c0\10\ub920\10\ub980\10\ub9e0\10\uba40\10\ubaa0\10\ubb00"+ - "\10\ubb60\10\ubbc0\10\ubc20\10\ubc80\10\ubce0\10\ubd40\10\ubda0\10\ube00"+ - "\10\ube60\10\ubec0\10\ubf20\10\ubf80\10\ubfe0\10\uc040\10\uc0a0\10\uc100"+ - "\10\uc160\10\uc1c0\10\uc220\10\uc280\10\uc2e0\10\uc340\10\uc3a0\10\uc400"+ - "\10\uc460\10\uc4c0\10\uc520\10\uc580\10\uc5e0\10\uc640\10\uc6a0\10\uc700"+ - "\10\uc760\10\uc7c0\10\uc820\10\uc880\10\uc8e0\10\uc940\10\uc9a0\10\uca00"+ - "\10\uca60\10\ucac0\10\ucb20\10\ucb80\10\ucbe0\10\ucc40\10\ucca0\10\ucd00"+ - "\10\ucd60\10\ucdc0\10\uce20\10\uce80\10\ucee0\10\ucf40\10\ucfa0\10\ud000"+ - "\10\ud060\10\ud0c0\10\ud120\10\ud180\10\ud1e0\10\ud240\10\ud2a0\10\ud300"+ - "\10\ud360\10\ud3c0\10\ud420\10\ud480\10\ud4e0\10\ud540\10\ud5a0\10\ud600"+ - "\10\ud660\10\ud6c0\10\ud720\10\ud780\10\ud7e0\10\ud840\10\ud8a0\10\ud900"+ - "\10\ud960\10\ud9c0\10\uda20\10\uda80\10\udae0\10\udb40\10\udba0\10\udc00"+ - "\10\udc60\10\udcc0\10\udd20\10\udd80\10\udde0\10\ude40\10\udea0\10\udf00"+ - "\10\udf60\10\udfc0\10\ue020\10\ue080\10\ue0e0\10\ue140\10\ue1a0\10\ue200"+ - "\10\ue260\10\ue2c0\10\ue320\10\ue380\10\ue3e0\10\ue440\10\ue4a0\10\ue500"+ - "\10\ue560\10\ue5c0\10\ue620\10\ue680\10\ue6e0\10\ue740\10\ue7a0\10\ue800"+ - "\10\ue860\10\ue8c0\10\ue920\10\ue980\10\ue9e0\10\uea40\10\ueaa0\10\ueb00"+ - "\10\ueb60\10\uebc0\10\uec20\10\uec80\10\uece0\6\udaa0\10\ued40\10\ueda0"+ - "\10\uee00\10\uee60\10\ueec0\10\uef20\10\uef80\10\uefe0\10\uf040\10\uf0a0"+ - "\10\uf100\10\uf160\10\uf1c0\10\uf220\10\uf280\10\uf2e0\10\uf340\10\uf3a0"+ - "\10\uf400\10\uf460\10\uf4c0\10\uf520\10\uf580\10\uf5e0\10\uf640\10\uf6a0"+ - "\10\uf700\10\uf760\10\uf7c0\10\uf820\10\uf880\10\uf8e0\10\uf940\10\uf9a0"+ - "\10\ufa00\10\ufa60\10\ufac0\10\ufb20\10\ufb80\10\ufbe0\10\ufc40\10\ufca0"+ - "\10\ufd00\10\ufd60\10\ufdc0\2\u0ca0\10\ufe20\10\ufe80\10\ufee0\10\uff40"+ - "\10\uffa0\11\0\11\140\11\300\11\u0120\11\u0180\11\u01e0\11\u0240"+ - "\11\u02a0\11\u0300\11\u0360\11\u03c0\11\u0420\11\u0480\11\u04e0\11\u0540"+ - "\11\u05a0\11\u0600\11\u0660\11\u06c0\11\u0720\11\u0780\11\u07e0\11\u0840"+ - "\11\u08a0\11\u0900\11\u0960\11\u09c0\11\u0a20\11\u0a80\11\u0ae0\11\u0b40"+ - "\11\u0ba0\11\u0c00\11\u0c60\11\u0cc0\11\u0d20\11\u0d80\11\u0de0\11\u0e40"+ - "\11\u0ea0\11\u0f00\11\u0f60\11\u0fc0\11\u1020\11\u1080\11\u10e0\11\u1140"+ - "\11\u11a0\11\u1200\11\u1260\11\u12c0\11\u1320\11\u1380\11\u13e0\11\u1440"+ - "\11\u14a0\11\u1500\11\u1560\3\u3a80\11\u15c0\11\u1620\11\u1680\11\u16e0"+ - "\11\u1740\11\u17a0\11\u1800\11\u1860\11\u18c0\11\u1920\11\u1980\11\u19e0"+ - "\11\u1a40\11\u1aa0\11\u1b00\11\u1b60\11\u1bc0\11\u1c20\11\u1c80\11\u1ce0"+ - "\11\u1d40\11\u1da0\11\u1e00\11\u1e60\11\u1ec0\11\u1f20\11\u1f80\11\u1fe0"+ - "\11\u2040\11\u20a0\11\u2100\11\u2160\11\u21c0\11\u2220\11\u2280\11\u22e0"+ - "\11\u2340\11\u23a0\11\u2400\11\u2460\11\u24c0\11\u2520\11\u2580\11\u25e0"+ - "\11\u2640\11\u26a0\11\u2700\11\u2760\11\u27c0\11\u2820\11\u2880\11\u28e0"+ - "\11\u2940\11\u29a0\11\u2a00\11\u2a60\11\u2ac0\11\u2b20\11\u2b80\11\u2be0"+ - "\11\u2c40\11\u2ca0\11\u2d00\11\u2d60\11\u2dc0\11\u2e20\11\u2e80\11\u2ee0"+ - "\11\u2f40\11\u2fa0\11\u3000\11\u3060\11\u30c0\11\u3120\11\u3180\11\u31e0"+ - "\11\u3240\11\u32a0\11\u3300\11\u3360\11\u33c0\11\u3420\11\u3480\11\u34e0"+ - "\11\u3540\11\u35a0\11\u3600\11\u3660\11\u36c0\11\u3720\11\u3780\11\u37e0"+ - "\11\u3840\11\u38a0\11\u3900\11\u3960\11\u39c0\11\u3a20\11\u3a80\11\u3ae0"+ - "\11\u3b40\11\u3ba0\11\u3c00\11\u3c60\11\u3cc0\11\u3d20\11\u3d80\11\u3de0"+ - "\11\u3e40\11\u3ea0\11\u3f00\11\u3f60\11\u3fc0\11\u4020\11\u4080\11\u40e0"+ - "\11\u4140\11\u41a0\11\u4200\11\u4260\11\u42c0\11\u4320\11\u4380\11\u43e0"+ - "\11\u4440\11\u44a0\11\u4500\11\u4560\11\u45c0\11\u4620\11\u4680\11\u46e0"+ - "\11\u4740\11\u47a0\11\u4800\11\u4860\11\u48c0\11\u4920\11\u4980\11\u49e0"+ - "\11\u4a40\11\u4aa0\11\u4b00\11\u4b60\10\uac60\11\u4bc0\11\u4c20\11\u4c80"+ - "\11\u4ce0\11\u4d40\11\u4da0\11\u4e00\11\u4e60\11\u4ec0\11\u4f20\11\u4f80"+ - "\11\u4fe0\11\u5040\11\u50a0\11\u5100\11\u5160\11\u51c0\11\u5220\11\u5280"+ - "\11\u52e0\11\u5340\11\u53a0\11\u5400\11\u5460\11\u54c0\11\u5520\11\u5580"+ - "\11\u55e0\11\u5640\11\u56a0\11\u5700\11\u5760\11\u57c0\11\u5820\11\u5880"+ - "\11\u58e0\11\u5940\11\u59a0\11\u5a00\11\u5a60\11\u5ac0\11\u5b20\11\u5b80"+ - "\11\u5be0\11\u5c40\11\u5ca0\11\u5d00\11\u5d60\11\u5dc0\11\u5e20\11\u5e80"+ - "\11\u5ee0\11\u5f40\11\u5fa0\11\u6000\11\u6060\11\u60c0\11\u6120\11\u6180"+ - "\11\u61e0\11\u6240\11\u62a0\11\u6300\11\u6360\11\u63c0\11\u6420\11\u6480"+ - "\11\u64e0\11\u6540\11\u65a0\11\u6600\11\u6660\11\u66c0\11\u6720\11\u6780"+ - "\11\u67e0\11\u6840\11\u68a0\11\u6900\11\u6960\11\u69c0\11\u6a20\11\u6a80"+ - "\11\u6ae0\11\u6b40\11\u6ba0\11\u6c00\11\u6c60\11\u6cc0\11\u6d20\11\u6d80"+ - "\11\u6de0\11\u6e40\11\u6ea0\11\u6f00\11\u6f60\11\u6fc0\11\u7020\11\u7080"+ - "\11\u70e0\11\u7140\11\u71a0\11\u7200\11\u7260\11\u72c0\11\u7320\11\u7380"+ - "\11\u73e0\11\u7440\11\u74a0\11\u7500\11\u7560\11\u75c0\11\u7620\11\u7680"+ - "\11\u76e0\11\u7740\11\u77a0\11\u7800\11\u7860\3\ue160\11\u78c0\11\u7920"+ - "\11\u7980\11\u79e0\11\u7a40\11\u7aa0\11\u7b00\11\u7b60\11\u7bc0\11\u7c20"+ - "\11\u7c80\11\u7ce0\11\u7d40\11\u7da0\11\u7e00\11\u7e60\11\u7ec0\11\u7f20"+ - "\11\u7f80\11\u7fe0\11\u8040\11\u80a0\11\u8100\11\u8160\11\u81c0\11\u8220"+ - "\11\u8280\11\u82e0\11\u8340\11\u83a0\11\u8400\11\u8460\11\u84c0\11\u8520"+ - "\11\u8580\11\u85e0\11\u8640\11\u86a0\11\u8700\11\u8760\11\u87c0\11\u8820"+ - "\11\u8880\11\u88e0\11\u8940\11\u89a0\11\u8a00\11\u8a60\11\u8ac0\11\u8b20"+ - "\11\u8b80\11\u8be0\11\u8c40\11\u8ca0\11\u8d00\11\u8d60\11\u8dc0\11\u8e20"+ - "\11\u8e80\11\u8ee0\11\u8f40\11\u8fa0\11\u9000\11\u9060\11\u90c0\11\u9120"+ - "\11\u9180\11\u91e0\11\u9240\11\u92a0\11\u9300\11\u9360\11\u93c0\11\u9420"+ - "\11\u9480\11\u94e0\11\u9540\11\u95a0\11\u9600\11\u9660\11\u96c0\11\u9720"+ - "\11\u9780\11\u97e0\11\u9840\11\u98a0\11\u9900\11\u9960\11\u99c0\11\u9a20"+ - "\11\u9a80\11\u9ae0\11\u9b40\11\u9ba0\11\u9c00\11\u9c60\11\u9cc0\11\u9d20"+ - "\11\u9d80\11\u9de0\0\uf660\11\u9e40\11\u9ea0\11\u9f00\11\u9f60\11\u9fc0"+ - "\11\ua020\11\ua080\11\ua0e0\11\ua140\11\ua1a0\11\ua200\11\ua260\11\ua2c0"+ - "\11\ua320\11\ua380\11\ua3e0\11\ua440\11\ua4a0\11\ua500\11\ua560\11\ua5c0"+ - "\11\ua620\11\ua680\11\ua6e0\11\ua740\11\ua7a0\11\ua800\11\ua860\11\ua8c0"+ - "\11\ua920\11\ua980\11\ua9e0\11\uaa40\11\uaaa0\11\uab00\11\uab60\11\uabc0"+ - "\11\uac20\11\uac80\11\uace0\11\uad40\11\uada0\11\uae00\11\uae60\11\uaec0"+ - "\11\uaf20\11\uaf80\11\uafe0\11\ub040\11\ub0a0\11\ub100\11\ub160\11\ub1c0"+ - "\11\ub220\11\ub280\11\ub2e0\11\ub340\11\ub3a0\11\ub400\11\ub460\11\ub4c0"+ - "\11\ub520\11\ub580\11\ub5e0\11\ub640\11\ub6a0\11\ub700\11\ub760\11\ub7c0"+ - "\11\ub820\11\ub880\11\ub8e0\11\ub940\11\ub9a0\11\uba00\11\uba60\11\ubac0"+ - "\11\ubb20\11\ubb80\11\ubbe0\11\ubc40\11\ubca0\11\ubd00\11\ubd60\11\ubdc0"+ - "\11\ube20\11\ube80\11\ubee0\11\ubf40\11\ubfa0\11\uc000\11\uc060\11\uc0c0"+ - "\11\uc120\11\uc180\11\uc1e0\11\uc240\11\uc2a0\11\uc300\11\uc360\11\uc3c0"+ - "\11\uc420\11\uc480\11\uc4e0\11\uc540\11\uc5a0\11\uc600\5\u0b20\11\uc660"+ - "\11\uc6c0\11\uc720\11\uc780\11\uc7e0\11\uc840\11\uc8a0\11\uc900\11\uc960"+ - "\11\uc9c0\11\uca20\11\uca80\11\ucae0\11\ucb40\11\ucba0\11\ucc00\11\ucc60"+ - "\11\uccc0\11\ucd20\11\ucd80\11\ucde0\11\uce40\11\ucea0\11\ucf00\11\ucf60"+ - "\11\ucfc0\11\ud020\11\ud080\11\ud0e0\11\ud140\11\ud1a0\11\ud200\11\ud260"+ - "\11\ud2c0\11\ud320\11\ud380\11\ud3e0\11\ud440\11\ud4a0\11\ud500\11\ud560"+ - "\11\ud5c0\11\ud620\11\ud680\11\ud6e0\11\ud740\11\ud7a0\11\ud800\11\ud860"+ - "\11\ud8c0\11\ud920\11\ud980\11\ud9e0\11\uda40\11\udaa0\11\udb00\11\udb60"+ - "\11\udbc0\11\udc20\11\udc80\11\udce0\11\udd40\5\ud840\11\udda0\11\ude00"+ - "\11\ude60\11\udec0\11\udf20\11\udf80\11\udfe0\11\ue040\11\ue0a0\11\ue100"+ - "\11\ue160\11\ue1c0\11\ue220\11\ue280\11\ue2e0\11\ue340\11\ue3a0\11\ue400"+ - "\11\ue460\11\ue4c0\11\ue520\11\ue580\11\ue5e0\11\ue640\11\ue6a0\11\ue700"+ - "\11\ue760\11\ue7c0\11\ue820\11\ue880\11\ue8e0\11\ue940\11\ue9a0\11\uea00"+ - "\11\uea60\11\ueac0\11\ueb20\11\ueb80\11\uebe0\11\uec40\11\ueca0\11\ued00"+ - "\11\ued60\11\uedc0\11\uee20\11\uee80\11\ueee0\11\uef40\11\uefa0\11\uf000"+ - "\11\uf060\11\uf0c0\11\uf120\11\uf180\11\uf1e0\11\uf240\11\uf2a0\11\uf300"+ - "\11\uf360\11\uf3c0\11\uf420\11\uf480\11\uf4e0\11\uf540\11\uf5a0\11\uf600"+ - "\11\uf660\11\uf6c0\11\uf720\11\uf780\11\uf7e0\11\uf840\11\uf8a0\11\uf900"+ - "\11\uf960\11\uf9c0\11\ufa20\11\ufa80\11\ufae0\11\ufb40\11\ufba0\11\ufc00"+ - "\11\ufc60\11\ufcc0\10\u05e0\11\ufd20\11\ufd80\11\ufde0\11\ufe40\11\ufea0"+ - "\11\uff00\11\uff60\11\uffc0\12\40\12\200\12\340\12\u0140\12\u01a0"+ - "\12\u0200\12\u0260\12\u02c0\12\u0320\12\u0380\12\u03e0\12\u0440\12\u04a0"+ - "\12\u0500\12\u0560\12\u05c0\12\u0620\12\u0680\12\u06e0\12\u0740\12\u07a0"+ - "\12\u0800\12\u0860\12\u08c0\12\u0920\12\u0980\12\u09e0\12\u0a40\12\u0aa0"+ - "\12\u0b00\12\u0b60\12\u0bc0\12\u0c20\12\u0c80\12\u0ce0\12\u0d40\12\u0da0"+ - "\12\u0e00\12\u0e60\12\u0ec0\12\u0f20\12\u0f80\12\u0fe0\12\u1040\12\u10a0"+ - "\12\u1100\12\u1160\12\u11c0\12\u1220\12\u1280\12\u12e0\12\u1340\12\u13a0"+ - "\12\u1400\12\u1460\12\u14c0\12\u1520\12\u1580\12\u15e0\12\u1640\12\u16a0"+ - "\3\u03c0\12\u1700\12\u1760\12\u17c0\12\u1820\12\u1880\12\u18e0\12\u1940"+ - "\12\u19a0\12\u1a00\12\u1a60\12\u1ac0\12\u1b20\12\u1b80\12\u1be0\11\ud140"+ - "\12\u1c40\12\u1ca0\12\u1d00\12\u1d60\12\u1dc0\12\u1e20\12\u1e80\12\u1ee0"+ - "\12\u1f40\12\u1fa0\12\u2000\12\u2060\12\u20c0\12\u2120\12\u2180\12\u21e0"+ - "\12\u2240\12\u22a0\12\u2300\12\u2360\12\u23c0\12\u2420\12\u2480\12\u24e0"+ - "\12\u2540\12\u25a0\12\u2600\12\u2660\12\u26c0\12\u2720\12\u2780\12\u27e0"+ - "\12\u2840\12\u28a0\12\u2900\12\u2960\12\u29c0\12\u2a20\12\u2a80\12\u2ae0"+ - "\12\u2b40\12\u2ba0\12\u2c00\12\u2c60\10\u55c0\12\u2cc0\12\u2d20\12\u2d80"+ - "\12\u2de0\12\u2e40\12\u2ea0\12\u2f00\12\u2f60\12\u2fc0\12\u3020\12\u3080"+ - "\12\u30e0\12\u3140\12\u31a0\12\u3200\12\u3260\12\u32c0\12\u3320\12\u3380"+ - "\12\u33e0\12\u3440\12\u34a0\12\u3500\12\u3560\12\u35c0\12\u3620\12\u3680"+ - "\12\u36e0\12\u3740\12\u37a0\12\u3800\12\u3860\12\u38c0\12\u3920\12\u3980"+ - "\12\u39e0\12\u3a40\12\u3aa0\12\u3b00\12\u3b60\12\u3bc0\12\u3c20\12\u3c80"+ - "\12\u3ce0\12\u3d40\12\u3da0\12\u3e00\12\u3e60\12\u3ec0\12\u3f20\12\u3f80"+ - "\12\u3fe0\12\u4040\12\u40a0\12\u4100\12\u4160\12\u41c0\12\u4220\12\u4280"+ - "\12\u42e0\12\u4340\12\u43a0\12\u4400\12\u4460\12\u44c0\12\u4520\12\u4580"+ - "\12\u45e0\12\u4640\12\u46a0\12\u4700\12\u4760\12\u47c0\6\ub4c0\12\u4820"+ - "\12\u4880\12\u48e0\12\u4940\12\u49a0\12\u4a00\12\u4a60\12\u4ac0\12\u4b20"+ - "\12\u4b80\12\u4be0\12\u4c40\12\u4ca0\12\u4d00\12\u4d60\12\u4dc0\12\u4e20"+ - "\12\u4e80\12\u4ee0\12\u4f40\12\u4fa0\12\u5000\12\u5060\12\u50c0\12\u5120"+ - "\12\u5180\11\ua980\12\u51e0\12\u5240\12\u52a0\12\u5300\12\u5360\12\u53c0"+ - "\12\u5420\12\u5480\12\u54e0\12\u5540\12\u55a0\12\u5600\12\u5660\12\u56c0"+ - "\12\u5720\12\u5780\12\u57e0\12\u5840\12\u58a0\12\u5900\12\u5960\12\u59c0"+ - "\12\u5a20\12\u5a80\12\u5ae0\12\u5b40\12\u5ba0\12\u5c00\12\u5c60\12\u5cc0"+ - "\12\u5d20\12\u5d80\12\u5de0\12\u5e40\12\u5ea0\12\u5f00\12\u5f60\12\u5fc0"+ - "\12\u6020\12\u6080\12\u60e0\12\u6140\12\u61a0\12\u6200\12\u6260\12\u62c0"+ - "\12\u6320\12\u6380\12\u63e0\12\u6440\12\u64a0\12\u6500\12\u6560\10\ubb60"+ - "\12\u65c0\12\u6620\12\u6680\12\u66e0\12\u6740\12\u67a0\12\u6800\12\u6860"+ - "\12\u68c0\12\u6920\12\u6980\12\u69e0\12\u6a40\12\u6aa0\12\u6b00\12\u6b60"+ - "\12\u6bc0\12\u6c20\12\u6c80\12\u6ce0\12\u6d40\12\u6da0\12\u6e00\12\u6e60"+ - "\12\u6ec0\12\u6f20\12\u6f80\12\u6fe0\12\u7040\12\u70a0\12\u7100\12\u7160"+ - "\12\u71c0\12\u7220\12\u7280\12\u72e0\12\u7340\12\u73a0\12\u7400\12\u7460"+ - "\12\u74c0\12\u7520\12\u7580\12\u75e0\12\u7640\12\u76a0\12\u7700\12\u7760"+ - "\12\u77c0\12\u7820\12\u7880\12\u78e0\12\u7940\12\u79a0\12\u7a00\12\u7a60"+ - "\12\u7ac0\12\u7b20\12\u7b80\12\u7be0\12\u7c40\12\u7ca0\12\u7d00\12\u7d60"+ - "\12\u7dc0\12\u7e20\12\u7e80\12\u7ee0\12\u7f40\12\u7fa0\12\u8000\12\u8060"+ - "\12\u80c0\12\u8120\12\u8180\12\u81e0\12\u8240\12\u82a0\12\u8300\12\u8360"+ - "\12\u83c0\12\u8420\12\u8480\12\u84e0\12\u8540\12\u85a0\12\u8600\12\u8660"+ - "\12\u86c0\12\u8720\12\u8780\12\u87e0\12\u8840\12\u88a0\12\u8900\12\u8960"+ - "\12\u89c0\12\u8a20\12\u8a80\12\u8ae0\12\u8b40\12\u8ba0\12\u8c00\12\u8c60"+ - "\12\u8cc0\12\u8d20\12\u8d80\12\u8de0\12\u8e40\12\u8ea0\12\u8f00\12\u8f60"+ - "\12\u8fc0\12\u9020\12\u9080\12\u90e0\12\u9140\12\u91a0\12\u9200\12\u9260"+ - "\12\u92c0\12\u9320\12\u9380\12\u93e0\12\u9440\12\u94a0\12\u9500\12\u9560"+ - "\3\u9780\12\u95c0\12\u9620\12\u9680\12\u96e0\6\u09c0\12\u9740\12\u97a0"+ - "\12\u9800\12\u9860\12\u98c0\12\u9920\12\u9980\12\u99e0\12\u9a40\12\u9aa0"+ - "\12\u9b00\12\u9b60\12\u9bc0\12\u9c20\12\u9c80\12\u9ce0\12\u9d40\12\u9da0"+ - "\12\u9e00\12\u9e60\12\u9ec0\12\u9f20\12\u9f80\12\u9fe0\12\ua040\12\ua0a0"+ - "\12\ua100\12\ua160\12\ua1c0\12\ua220\12\ua280\12\ua2e0\12\ua340\12\ua3a0"+ - "\12\ua400\12\ua460\12\ua4c0\12\ua520\12\ua580\12\ua5e0\12\ua640\12\ua6a0"+ - "\12\ua700\12\ua760\12\ua7c0\12\ua820\12\ua880\12\ua8e0\12\ua940\12\ua9a0"+ - "\12\uaa00\12\uaa60\12\uaac0\12\uab20\12\uab80\12\uabe0\12\uac40\12\uaca0"+ - "\12\uad00\12\uad60\12\uadc0\12\uae20\12\uae80\12\uaee0\12\uaf40\12\uafa0"+ - "\12\ub000\12\ub060\12\ub0c0\12\ub120\12\ub180\12\ub1e0\12\ub240\12\ub2a0"+ - "\12\ub300\11\ucc60\12\ub360\12\ub3c0\12\ub420\12\ub480\12\ub4e0\12\ub540"+ - "\12\ub5a0\12\ub600\12\ub660\12\ub6c0\12\ub720\12\ub780\12\ub7e0\12\ub840"+ - "\12\ub8a0\12\ub900\12\ub960\12\ub9c0\12\uba20\12\uba80\12\ubae0\12\ubb40"+ - "\12\ubba0\12\ubc00\12\ubc60\12\ubcc0\12\ubd20\12\ubd80\12\ubde0\12\ube40"+ - "\12\ubea0\12\ubf00\12\ubf60\12\ubfc0\12\uc020\12\uc080\12\uc0e0\12\uc140"+ - "\12\uc1a0\12\uc200\12\uc260\12\uc2c0\12\uc320\12\uc380\12\uc3e0\12\uc440"+ - "\12\uc4a0\12\uc500\12\uc560\12\uc5c0\12\uc620\12\uc680\12\uc6e0\12\uc740"+ - "\12\uc7a0\12\uc800\12\uc860\12\uc8c0\12\uc920\12\uc980\12\uc9e0\12\uca40"+ - "\12\ucaa0\12\ucb00\12\ucb60\12\ucbc0\12\ucc20\12\ucc80\12\ucce0\12\ucd40"+ - "\12\ucda0\12\uce00\12\uce60\12\ucec0\12\ucf20\12\ucf80\12\ucfe0\12\ud040"+ - "\12\ud0a0\12\ud100\12\ud160\12\ud1c0\12\ud220\12\ud280\12\ud2e0\12\ud340"+ - "\12\ud3a0\12\ud400\12\ud460\12\ud4c0\12\ud520\12\ud580\12\ud5e0\12\ud640"+ - "\12\ud6a0\12\ud700\12\ud760\12\ud7c0\12\ud820\12\ud880\12\ud8e0\12\ud940"+ - "\12\ud9a0\12\uda00\12\uda60\12\udac0\12\udb20\12\udb80\12\udbe0\12\udc40"+ - "\12\udca0\12\udd00\12\udd60\12\uddc0\12\ude20\12\ude80\12\udee0\10\u9460"+ - "\12\udf40\12\udfa0\12\ue000\12\ue060\12\ue0c0\12\ue120\12\ue180\12\ue1e0"+ - "\12\ue240\12\ue2a0\6\u3a20\12\ue300\12\ue360\12\ue3c0\12\ue420\12\ue480"+ - "\12\ue4e0\12\ue540\12\ue5a0\12\ue600\12\ue660\12\ue6c0\12\ue720\12\ue780"+ - "\12\ue7e0\12\ue840\12\ue8a0\12\ue900\12\ue960\12\ue9c0\12\uea20\12\uea80"+ - "\12\ueae0\12\ueb40\12\u2f00\12\ueba0\12\uec00\12\uec60\12\uecc0\12\ued20"+ - "\12\ued80\12\uede0\12\uee40\12\ueea0\12\uef00\12\uef60\12\uefc0\12\uf020"+ - "\12\uf080\12\uf0e0\12\uf140\12\uf1a0\12\uf200\12\uf260\12\uf2c0\12\uf320"+ - "\12\uf380\12\uf3e0\12\uf440\12\uf4a0\12\uf500\12\uf560\12\uf5c0\12\uf620"+ - "\12\uf680\12\uf6e0\12\uf740\12\uf7a0\12\uf800\12\uf860\12\uf8c0\12\uf920"+ - "\12\uf980\12\uf9e0\12\ufa40\12\ufaa0\12\ufb00\12\ufb60\12\ufbc0\12\ufc20"+ - "\12\ufc80\12\ufce0\12\ufd40\12\ufda0\12\ufe00\12\ufe60\12\ufec0\12\uff20"+ - "\12\uff80\12\uffe0\13\100\13\240\13\u0100\13\u0160\13\u01c0\13\u0220"+ - "\13\u0280\13\u02e0\13\u0340\13\u03a0\13\u0400\13\u0460\13\u04c0\13\u0520"+ - "\13\u0580\13\u05e0\13\u0640\13\u06a0\13\u0700\13\u0760\13\u07c0\13\u0820"+ - "\13\u0880\13\u08e0\13\u0940\13\u09a0\13\u0a00\13\u0a60\13\u0ac0\13\u0b20"+ - "\13\u0b80\13\u0be0\13\u0c40\13\u0ca0\13\u0d00\13\u0d60\13\u0dc0\13\u0e20"+ - "\13\u0e80\13\u0ee0\13\u0f40\13\u0fa0\13\u1000\13\u1060\13\u10c0\13\u1120"+ - "\13\u1180\13\u11e0\13\u1240\13\u12a0\13\u1300\13\u1360\13\u13c0\13\u1420"+ - "\13\u1480\13\u14e0\13\u1540\13\u15a0\13\u1600\13\u1660\13\u16c0\13\u1720"+ - "\13\u1780\13\u17e0\13\u1840\13\u18a0\13\u1900\13\u1960\13\u19c0\13\u1a20"+ - "\13\u1a80\13\u1ae0\13\u1b40\13\u1ba0\13\u1c00\4\ue960\13\u1c60\13\u1cc0"+ - "\13\u1d20\13\u1d80\13\u1de0\13\u1e40\13\u1ea0\13\u1f00\13\u1f60\13\u1fc0"+ - "\13\u2020\13\u2080\13\u20e0\13\u2140\13\u21a0\13\u2200\13\u2260\13\u22c0"+ - "\13\u2320\13\u2380\13\u23e0\13\u2440\13\u24a0\13\u2500\13\u2560\13\u25c0"+ - "\13\u2620\13\u2680\13\u26e0\13\u2740\13\u27a0\13\u2800\13\u2860\13\u28c0"+ - "\13\u2920\13\u2980\13\u29e0\13\u2a40\13\u2aa0\13\u2b00\13\u2b60\13\u2bc0"+ - "\13\u2c20\13\u2c80\13\u2ce0\13\u2d40\13\u2da0\13\u2e00\13\u2e60\13\u2ec0"+ - "\13\u2f20\13\u2f80\13\u2fe0\13\u3040\13\u30a0\13\u3100\13\u3160\13\u31c0"+ - "\13\u3220\13\u3280\13\u32e0\13\u3340\13\u33a0\13\u3400\13\u3460\13\u34c0"+ - "\13\u3520\13\u3580\13\u35e0\13\u3640\13\u36a0\13\u3700\13\u3760\13\u37c0"+ - "\13\u3820\13\u3880\13\u38e0\13\u3940\13\u39a0\13\u3a00\13\u3a60\13\u3ac0"+ - "\13\u3b20\13\u3b80\13\u3be0\13\u3c40\13\u3ca0\13\u3d00\13\u3d60\13\u3dc0"+ - "\13\u3e20\13\u3e80\13\u3ee0\13\u3f40\13\u3fa0\13\u4000\13\u4060\13\u40c0"+ - "\13\u4120\13\u4180\13\u41e0\13\u4240\13\u42a0\13\u4300\13\u4360\13\u43c0"+ - "\13\u4420\13\u4480\13\u44e0\13\u4540\13\u45a0\13\u4600\13\u4660\13\u46c0"+ - "\13\u4720\13\u4780\13\u47e0\13\u4840\13\u48a0\13\u4900\13\u4960\13\u49c0"+ - "\13\u4a20\13\u4a80\13\u4ae0\13\u4b40\13\u4ba0\13\u4c00\13\u4c60\13\u4cc0"+ - "\13\u4d20\13\u4d80\13\u4de0\13\u4e40\13\u4ea0\13\u4f00\13\u4f60\13\u4fc0"+ - "\13\u5020\13\u5080\13\u50e0\13\u5140\13\u51a0\13\u5200\13\u5260\13\u52c0"+ - "\13\u5320\13\u5380\13\u53e0\13\u5440\13\u54a0\13\u5500\13\u5560\13\u55c0"+ - "\13\u5620\13\u5680\13\u56e0\13\u5740\13\u57a0\13\u5800\13\u5860\13\u58c0"+ - "\13\u5920\13\u5980\13\u59e0\13\u5a40\13\u5aa0\13\u5b00\13\u5b60\13\u5bc0"+ - "\13\u5c20\13\u5c80\13\u5ce0\13\u5d40\13\u5da0\13\u5e00\13\u5e60\13\u5ec0"+ - "\13\u5f20\13\u5f80\13\u5fe0\13\u6040\13\u60a0\13\u6100\13\u6160\13\u61c0"+ - "\13\u6220\11\u3fc0"; - - private static int [] zzUnpackRowMap() { - int [] result = new int[7962]; - int offset = 0; - offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackRowMap(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int high = packed.charAt(i++) << 16; - result[j++] = high | packed.charAt(i++); - } - return j; - } - - /** - * The transition table of the DFA - */ - private static final int [] ZZ_TRANS = zzUnpackTrans(); - - private static final String ZZ_TRANS_PACKED_0 = - "\1\35\1\36\1\37\1\40\1\41\1\42\132\35\2\43"+ - "\1\44\26\43\1\45\31\43\1\46\4\43\1\47\23\43"+ - "\1\50\23\43\2\51\1\52\14\51\1\53\120\51\1\54"+ - "\1\55\1\0\1\56\1\41\2\54\1\57\1\60\6\54"+ - "\1\61\26\54\1\62\44\54\1\63\24\54\2\64\1\0"+ - "\1\64\1\65\2\64\2\65\1\66\1\67\1\70\1\71"+ - "\1\72\1\73\1\65\1\64\1\74\1\75\3\64\1\76"+ - "\3\64\1\77\6\64\1\100\4\64\1\65\7\64\1\71"+ - "\1\64\1\73\1\70\1\75\1\101\1\102\1\74\1\66"+ - "\1\72\1\103\1\77\1\101\1\102\2\104\1\105\1\67"+ - "\1\100\1\64\1\106\1\107\1\110\1\76\5\64\1\65"+ - "\1\64\1\105\1\106\1\64\1\107\1\111\1\110\1\103"+ - "\4\64\1\111\7\64\3\112\1\113\3\112\1\114\130\112"+ - "\3\115\1\113\107\115\1\114\24\115\1\54\1\55\1\0"+ - "\1\56\1\41\2\54\1\116\1\117\6\54\1\120\26\54"+ - "\1\62\44\54\1\121\24\54\3\112\1\113\3\112\1\122"+ - "\130\112\3\115\1\113\107\115\1\122\24\115\1\54\1\55"+ - "\1\0\1\56\1\41\2\54\1\123\1\117\6\54\1\124"+ - "\26\54\1\62\44\54\1\125\24\54\3\112\1\113\3\112"+ - "\1\126\130\112\3\115\1\113\107\115\1\126\24\115\1\127"+ - "\1\41\1\130\1\131\1\41\1\132\1\133\1\134\1\135"+ - "\3\136\1\137\2\136\1\140\4\136\1\141\1\142\1\136"+ - "\1\141\1\136\1\143\1\144\1\145\2\127\1\136\1\146"+ - "\2\136\1\147\1\150\1\151\1\133\4\146\3\62\1\152"+ - "\1\153\1\154\1\155\1\156\1\157\1\160\1\161\1\162"+ - "\1\163\1\164\4\136\1\165\1\166\1\136\1\167\1\170"+ - "\3\136\1\171\1\172\1\127\2\151\1\136\1\151\1\173"+ - "\1\174\7\136\1\141\2\136\1\151\1\136\3\141\1\136"+ - "\3\141\2\175\1\176\1\177\31\175\1\200\55\175\1\201"+ - "\24\175\2\202\1\203\1\204\3\202\1\205\25\202\1\206"+ - "\102\202\2\207\1\210\1\211\33\207\1\212\23\207\1\213"+ - "\4\207\1\214\23\207\1\215\23\207\2\216\1\217\1\220"+ - "\57\216\1\221\4\216\1\222\23\216\1\223\23\216\1\127"+ - "\1\41\1\224\1\225\1\41\1\132\1\133\1\226\1\227"+ - "\5\136\1\230\1\140\4\136\1\141\1\142\1\136\1\141"+ - "\1\231\1\143\1\232\1\133\1\233\1\127\1\234\1\146"+ - "\2\136\1\147\1\150\1\151\1\133\4\146\1\235\2\62"+ - "\1\236\1\237\1\240\1\241\1\242\1\243\1\244\1\245"+ - "\1\246\1\247\1\250\1\251\1\136\1\252\1\136\1\253"+ - "\1\254\1\255\1\256\1\257\1\260\1\261\1\262\1\263"+ - "\1\264\1\265\2\151\1\266\1\151\1\267\1\270\7\136"+ - "\1\141\1\136\1\271\1\151\1\272\3\141\1\273\3\141"+ - "\2\274\1\275\34\274\1\276\23\274\1\213\4\274\1\214"+ - "\23\274\1\215\23\274\2\277\1\300\4\277\1\301\25\277"+ - "\1\302\1\303\101\277\2\304\1\305\32\304\1\306\55\304"+ - "\1\307\24\304\1\310\1\41\1\311\1\312\1\41\1\310"+ - "\1\151\1\313\1\314\6\315\1\62\4\315\2\310\1\315"+ - "\1\310\3\315\1\310\1\316\1\310\1\62\3\315\1\62"+ - "\1\315\1\310\1\133\2\62\3\310\1\317\2\62\30\315"+ - "\1\320\2\151\1\315\1\151\1\321\10\315\1\310\2\315"+ - "\1\322\1\315\3\310\1\315\3\310\1\323\1\41\1\324"+ - "\1\325\1\41\3\323\1\326\6\327\1\323\4\327\2\323"+ - "\1\327\1\323\3\327\4\323\1\330\2\327\2\323\1\331"+ - "\6\323\1\332\2\323\30\327\3\323\1\327\2\323\10\327"+ - "\1\323\2\327\1\323\1\327\3\323\1\327\3\323\1\333"+ - "\1\41\1\334\1\335\1\41\1\333\1\336\1\313\1\337"+ - "\6\340\1\333\4\340\2\341\1\340\1\341\1\340\1\342"+ - "\1\340\1\333\1\343\1\340\2\333\2\340\1\333\1\133"+ - "\1\331\1\133\3\333\1\344\4\333\30\340\1\333\1\345"+ - "\1\346\1\340\1\333\1\321\10\340\1\341\2\340\1\333"+ - "\1\340\3\341\1\340\3\341\2\202\1\347\1\177\3\202"+ - "\1\350\25\202\1\302\102\202\2\175\1\351\1\177\31\175"+ - "\1\302\55\175\1\352\24\175\2\207\1\353\1\177\33\207"+ - "\1\354\23\207\1\213\4\207\1\214\23\207\1\215\23\207"+ - "\2\35\4\0\133\35\1\36\2\0\1\41\1\0\132\35"+ - "\150\0\1\355\1\356\5\357\1\0\10\357\2\0\1\357"+ - "\5\0\2\357\7\0\1\360\1\361\3\0\10\357\1\356"+ - "\17\357\3\0\1\357\2\0\13\357\1\0\10\357\1\0"+ - "\1\41\2\0\1\41\133\0\4\42\1\0\1\42\1\362"+ - "\131\42\2\43\1\0\26\43\1\0\31\43\1\0\4\43"+ - "\1\0\23\43\1\0\23\43\31\0\1\363\164\0\1\364"+ - "\1\0\1\365\137\0\1\366\173\0\1\367\23\0\2\51"+ - "\1\0\14\51\1\0\120\51\2\54\1\0\1\54\1\0"+ - "\2\54\2\0\6\54\1\0\26\54\1\0\44\54\1\0"+ - "\25\54\1\55\1\0\1\54\1\41\2\54\2\0\6\54"+ - "\1\0\26\54\1\0\44\54\1\0\26\54\1\0\1\54"+ - "\1\0\2\54\2\0\6\54\1\0\26\54\1\0\3\54"+ - "\1\370\40\54\1\0\24\54\17\0\1\61\120\0\2\64"+ - "\1\0\1\64\1\0\2\64\2\0\6\64\1\0\26\64"+ - "\1\0\44\64\1\0\26\64\1\0\1\64\1\0\2\64"+ - "\2\0\1\64\1\371\2\64\1\372\1\373\1\0\2\64"+ - "\1\374\7\64\1\375\13\64\1\0\11\64\1\373\1\64"+ - "\1\374\1\64\1\376\2\64\1\372\1\64\1\375\1\64"+ - "\1\376\2\64\1\377\1\371\2\64\1\u0100\10\64\1\0"+ - "\1\64\1\377\1\u0100\23\64\1\0\1\64\1\0\2\64"+ - "\2\0\3\64\1\u0101\2\64\1\0\2\64\1\u0102\23\64"+ - "\1\0\7\64\1\u0101\3\64\1\u0102\1\64\1\u0103\6\64"+ - "\1\u0103\2\64\1\u0104\14\64\1\0\1\64\1\u0104\24\64"+ - "\1\0\1\64\1\0\2\64\2\0\6\64\1\0\12\64"+ - "\1\u0105\13\64\1\0\22\64\1\u0105\21\64\1\0\26\64"+ - "\1\0\1\64\1\0\2\64\2\0\1\u0106\5\64\1\0"+ - "\1\64\1\u0107\24\64\1\0\14\64\1\u0108\1\64\1\u0107"+ - "\1\u0106\3\64\1\u0108\1\64\2\u0109\4\64\1\u010a\10\64"+ - "\1\0\2\64\1\u010a\23\64\1\0\1\64\1\0\2\64"+ - "\2\0\2\64\1\u010b\3\64\1\0\1\64\1\u010c\24\64"+ - "\1\0\12\64\1\u010b\2\64\1\u010d\1\u010c\5\64\1\u010d"+ - "\17\64\1\0\26\64\1\0\1\64\1\0\2\64\2\0"+ - "\2\64\1\111\1\u010e\1\64\1\111\1\0\2\64\1\u010f"+ - "\3\64\1\u0110\12\64\1\111\4\64\1\0\7\64\1\u010e"+ - "\1\64\2\111\1\u010f\1\u0111\1\u0112\3\64\1\u0113\1\64"+ - "\1\u0111\1\u0112\4\64\1\111\4\64\1\u0110\5\64\1\0"+ - "\7\64\1\u0113\16\64\1\0\1\64\1\0\2\64\2\0"+ - "\3\64\1\u0114\2\64\1\0\2\64\1\u0115\23\64\1\0"+ - "\7\64\1\u0114\3\64\1\u0115\1\64\1\u0116\6\64\1\u0116"+ - "\17\64\1\0\26\64\1\0\1\64\1\0\2\64\2\0"+ - "\6\64\1\0\26\64\1\0\33\64\1\u0117\1\64\1\u0118"+ - "\6\64\1\0\2\64\1\u0117\3\64\1\u0118\17\64\1\0"+ - "\1\64\1\0\2\64\2\0\2\64\1\111\1\u010a\2\64"+ - "\1\0\1\64\1\u0119\10\64\1\u011a\6\64\1\u011b\4\64"+ - "\1\0\7\64\1\u010a\1\u011c\1\64\1\111\2\64\1\u011d"+ - "\1\u0119\3\64\1\u011a\1\64\1\u011d\2\64\1\u011e\1\64"+ - "\1\u011b\12\64\1\0\1\64\1\u011e\1\64\1\u011c\22\64"+ - "\1\0\1\64\1\0\2\64\2\0\6\64\1\0\1\64"+ - "\1\111\24\64\1\0\16\64\1\111\25\64\1\0\26\64"+ - "\1\0\1\64\1\0\2\64\2\0\3\64\1\u011f\1\64"+ - "\1\111\1\0\1\64\1\111\1\u0120\16\64\1\111\4\64"+ - "\1\0\7\64\1\u011f\1\64\1\111\1\64\1\u0120\1\u0121"+ - "\1\u0122\1\111\4\64\1\u0121\1\u0122\4\64\1\111\12\64"+ - "\1\0\26\64\1\0\1\64\1\0\2\64\2\0\2\64"+ - "\1\u0123\1\u0124\2\64\1\0\26\64\1\0\7\64\1\u0124"+ - "\2\64\1\u0123\14\64\1\u0125\14\64\1\0\1\64\1\u0125"+ - "\24\64\1\0\1\64\1\0\2\64\2\0\1\u0126\1\u0127"+ - "\1\u0128\1\64\1\u0129\1\64\1\0\6\64\1\u012a\3\64"+ - "\1\u012b\6\64\1\u012c\4\64\1\0\12\64\1\u0128\4\64"+ - "\1\u0126\1\u0129\1\64\1\u012b\5\64\1\u0127\1\u012c\4\64"+ - "\1\u012a\5\64\1\0\26\64\1\0\1\64\1\0\2\64"+ - "\2\0\2\64\1\111\2\64\1\u012d\1\0\2\64\1\u012e"+ - "\23\64\1\0\11\64\1\u012d\1\111\1\u012e\30\64\1\0"+ - "\10\64\1\111\4\64\3\111\1\64\2\111\3\64\1\0"+ - "\1\64\1\0\2\64\2\0\6\64\1\0\2\64\1\u012f"+ - "\23\64\1\0\13\64\1\u012f\1\64\1\u0130\6\64\1\u0130"+ - "\2\64\1\u0131\14\64\1\0\1\64\1\u0131\24\64\1\0"+ - "\1\64\1\0\2\64\2\0\4\64\1\u0132\1\64\1\0"+ - "\1\64\1\111\4\64\1\u0133\3\64\1\u0134\13\64\1\0"+ - "\16\64\1\111\1\64\1\u0132\1\64\1\u0134\13\64\1\u0133"+ - "\5\64\1\0\26\64\1\0\1\64\1\0\2\64\2\0"+ - "\6\64\1\0\2\64\1\u0135\7\64\1\u0136\13\64\1\0"+ - "\13\64\1\u0135\1\64\1\u0137\4\64\1\u0136\1\64\1\u0137"+ - "\17\64\1\0\26\64\1\0\1\64\1\0\2\64\2\0"+ - "\6\64\1\0\2\64\1\u0138\3\64\1\u0139\17\64\1\0"+ - "\13\64\1\u0138\22\64\1\u0139\5\64\1\0\26\64\1\0"+ - "\1\64\1\0\2\64\2\0\3\64\1\u013a\2\64\1\0"+ - "\26\64\1\0\7\64\1\u013a\5\64\1\u013b\6\64\1\u013b"+ - "\17\64\1\0\24\64\3\112\1\0\3\112\1\0\130\112"+ - "\52\0\1\u013c\65\0\3\115\1\0\107\115\1\0\24\115"+ - "\17\0\1\u013d\120\0\1\127\10\0\6\127\1\0\11\127"+ - "\1\0\1\127\1\0\3\127\1\0\2\127\14\0\31\127"+ - "\2\0\1\127\2\0\13\127\1\0\10\127\3\0\1\u013e"+ - "\4\0\1\u013f\35\0\1\62\3\0\1\u0140\72\0\1\62"+ - "\40\0\1\62\71\0\10\u0141\1\u0142\24\u0141\1\u0143\1\u0141"+ - "\1\u0144\6\u0141\1\u0145\71\u0141\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u0147\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\17\0\1\u0148\26\0\1\62\71\0\1\u0149"+ - "\10\0\6\u0149\1\0\1\u0149\1\u014a\1\u014b\1\u0149\2\141"+ - "\1\u0149\1\141\1\u0149\1\0\1\u0149\1\0\3\u0149\1\0"+ - "\1\u0149\1\u014c\1\0\1\u014d\12\0\4\u0149\1\u014b\1\u014c"+ - "\1\u0149\1\u014a\4\u0149\1\u014c\5\u0149\1\u014c\6\u0149\2\0"+ - "\1\u0149\2\0\10\u0149\1\141\2\u0149\1\0\1\u0149\3\141"+ - "\1\u0149\3\141\1\u0149\10\0\6\u0149\1\0\1\u0149\1\u014a"+ - "\1\u014b\1\u0149\1\u014e\1\u014f\1\u0149\1\u014f\1\u0149\1\0"+ - "\1\u0149\1\0\3\u0149\1\0\1\u0150\1\u014c\1\0\1\u014d"+ - "\12\0\4\u0149\1\u014b\1\u014c\1\u0149\1\u014a\4\u0149\1\u014c"+ - "\5\u0149\1\u014c\6\u0149\2\0\1\u0150\2\0\10\u0149\1\u014f"+ - "\2\u0149\1\0\1\u0149\3\u014f\1\u0149\2\u014f\1\u014e\31\0"+ - "\1\62\14\0\1\62\71\0\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u0151\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\46\0\1\62\133\0\1\62"+ - "\3\0\1\62\115\0\2\u014d\1\0\1\u014d\74\0\1\u014d"+ - "\4\0\3\u014d\1\0\3\u014d\46\0\1\62\6\0\1\62"+ - "\62\0\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\5\136"+ - "\1\u0152\2\136\1\u0153\5\136\1\u0154\5\136\1\u0155\3\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u0156\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u0157\6\136"+ - "\1\u0158\10\136\1\u0159\4\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u015a\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u015b\1\u015c\1\u015d\5\136\1\u015e\7\136"+ - "\1\u015f\1\136\1\127\2\0\1\u0160\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\u0161"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u0162"+ - "\5\136\1\u0163\1\u0164\10\136\1\u0165\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\27\136\1\u0166\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u0167\13\136\1\u0168\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\u0169\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u016a\7\136\1\u016b"+ - "\10\136\1\u016c\4\136\1\127\2\0\1\136\2\0\1\u016d"+ - "\12\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\u016e\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u016f\2\136\1\u0170\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\u0171\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0172\1\136\1\u0173\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u0174\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u0175\1\u0176"+ - "\2\136\1\u0177\5\136\1\u0178\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u0179\13\136\1\u017a\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u0165\11\136\1\u017b"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u017c"+ - "\14\136\1\u017d\2\136\1\u017e\4\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u017f\11\136\1\u0180\15\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\2\175\2\0\31\175"+ - "\1\0\55\175\1\0\24\175\52\0\1\u0181\65\0\2\u0182"+ - "\1\0\27\u0182\1\u0183\56\u0182\1\u0184\26\u0182\2\202\2\0"+ - "\3\202\1\0\25\202\1\0\102\202\52\0\1\u0185\65\0"+ - "\2\207\2\0\33\207\1\0\23\207\1\0\4\207\1\0"+ - "\23\207\1\0\23\207\10\0\1\u0186\137\0\1\u0187\205\0"+ - "\1\u0188\1\0\1\u0189\137\0\1\u018a\173\0\1\u018b\23\0"+ - "\2\216\2\0\57\216\1\0\4\216\1\0\23\216\1\0"+ - "\23\216\10\0\1\u018c\205\0\1\u018d\1\0\1\u018e\137\0"+ - "\1\u018f\173\0\1\u0190\26\0\1\u013e\42\0\1\62\101\0"+ - "\1\233\26\0\1\u0191\6\0\1\62\71\0\1\127\10\0"+ - "\2\136\1\u0192\3\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u0193\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0194\1\u0195\2\136\1\u0196"+ - "\1\136\1\u0197\5\136\1\u0198\2\136\1\u0199\2\136\1\u019a"+ - "\1\u0196\2\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\2\233\1\0\135\233\1\127\10\0\6\u019b\1\0"+ - "\4\u019b\2\136\1\u019b\1\136\1\u019b\1\0\1\u019b\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\u019b\14\0\30\u019b\1\127"+ - "\2\0\1\u019b\2\0\10\u019b\1\136\2\u019b\1\0\1\u019b"+ - "\3\136\1\u019b\3\136\17\0\1\u019c\120\0\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\136\1\u019d\1\u019e\2\136"+ - "\1\u0152\2\136\1\u019f\1\u01a0\4\136\1\u01a1\2\136\1\u01a2"+ - "\1\u01a3\1\136\1\u01a4\2\136\1\u01a5\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u01a6\1\u01a7\2\136\1\u01a8\10\136"+ - "\1\u0156\1\136\1\u01a9\1\136\1\u01aa\3\136\1\127\2\0"+ - "\1\136\2\0\12\136\1\u01ab\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u01ac\2\136\1\u01ad\1\u01ae"+ - "\1\136\1\u01af\3\136\1\u01b0\5\136\1\u01b1\1\u01b2\1\136"+ - "\1\u01b3\1\u01b4\3\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u01b5\1\136\1\u01b6\1\136\1\u01b7\1\136\1\u01b8"+ - "\1\u01b9\6\136\1\u01ba\3\136\1\u01bb\3\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u01bc\2\136\1\u01bd\1\u01be"+ - "\1\u01bf\5\136\1\u01c0\1\136\1\u01c1\1\u01c2\2\136\1\u01c3"+ - "\1\136\1\u01c4\1\u01c5\1\127\2\0\1\u01c6\2\0\12\136"+ - "\1\u01c7\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\u01c8\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u01c9\1\u01ca\1\u01cb\1\u01cc\1\u01cd\1\u01ce\1\u0163"+ - "\1\u01cf\1\u01d0\1\u01d1\4\136\1\u01d2\1\136\1\u01d3\1\u01d4"+ - "\2\136\1\u01d5\2\136\1\u01d6\1\127\2\0\1\136\2\0"+ - "\1\u01d7\12\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\u01d8\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\136\1\u01d9\1\u01da\1\u01db\3\136\1\u01dc"+ - "\1\u01dd\1\u01de\4\136\1\u01df\2\136\1\u01e0\1\u01e1\4\136"+ - "\1\u01e2\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u01e3\1\136"+ - "\1\u01b5\1\136\1\u01e4\1\136\1\u01e5\1\136\1\u01e6\7\136"+ - "\1\u01e7\1\u01e8\1\u01e9\5\136\1\127\2\0\1\136\2\0"+ - "\12\136\1\u01ea\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\u01eb\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u01ec\1\136\1\u01ed\1\u01ee\1\u01ef\1\136"+ - "\1\u01f0\1\u01f1\1\u01f2\1\u01f3\1\u01f4\3\136\1\u01f5\1\136"+ - "\1\u01f6\1\u01f7\1\136\1\u01f8\1\136\1\u01f9\2\136\1\127"+ - "\2\0\1\136\2\0\1\u01fa\12\136\1\0\1\u01fb\7\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\u01fc\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u01fd\1\u01fe"+ - "\1\136\1\u01ff\1\136\1\u0200\1\u0201\3\136\1\u0202\3\136"+ - "\1\u0203\1\136\1\u0204\1\u0205\1\u0206\5\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u0207\1\136\1\u0208\1\136\1\u0209"+ - "\1\136\1\u020a\14\136\1\u020b\4\136\1\127\2\0\1\136"+ - "\2\0\1\u020c\12\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\15\136\1\u020d\12\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\u020e\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\136\1\u020f\2\136\1\u0210\1\136"+ - "\1\u0211\1\u0212\1\u0213\7\136\1\u0214\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\13\136\1\u0215\14\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\u0216\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u0217\1\136\1\u0218\1\136"+ - "\1\u0219\1\136\1\u021a\7\136\1\u021b\1\u021c\3\136\1\u021d"+ - "\1\u021e\1\127\2\0\1\136\2\0\1\u021f\12\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\u0220"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u0221\1\u0222\1\u0223\1\u0224\1\u0225\2\136\1\u0226\5\136"+ - "\1\u0227\1\u0228\1\136\1\u0229\4\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\u022a\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u022b\1\u020f\1\136\1\u022c\1\u022d\1\136"+ - "\1\u022e\1\u022f\1\u0230\5\136\1\u0231\1\136\1\u0232\1\u0233"+ - "\5\136\1\u0234\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136"+ - "\1\u0235\16\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u0236"+ - "\1\136\1\u0237\1\136\1\u0238\1\136\1\u0239\1\136\1\u023a"+ - "\1\136\1\u023b\5\136\1\u023c\1\u023d\1\u023e\1\u023f\1\136"+ - "\1\u0240\1\136\1\u0241\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u0242\2\136\1\u0196\1\u0243\3\136\1\u01b8\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u0244\3\136\1\u0245\1\u0246"+ - "\1\u0247\1\136\1\u0246\1\u0248\16\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u0249\2\136\1\u017c\1\u024a\1\136\1\u024b"+ - "\12\136\1\u024c\6\136\1\127\2\0\1\136\2\0\12\136"+ - "\1\u024d\1\0\10\136\1\127\10\0\6\u024e\1\0\4\u024e"+ - "\2\127\1\u024e\1\127\1\u024e\1\0\1\u024e\1\0\2\127"+ - "\1\u024e\1\0\2\u024e\14\0\30\u024e\1\127\2\0\1\u024e"+ - "\2\0\10\u024e\1\127\2\u024e\1\0\1\u024e\3\127\1\u024e"+ - "\4\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u024f\5\136"+ - "\1\u0250\1\136\1\u0251\1\u0252\6\136\1\u0165\3\136\1\u0253"+ - "\3\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u0254"+ - "\6\136\1\u0180\5\136\1\u0255\1\136\1\u0256\5\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\5\136\1\u0257\2\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u0258\3\136"+ - "\1\u0259\2\136\1\u025a\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\u025b\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\22\136\1\u025c\5\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\u025d\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u025e\1\136\1\u025f\1\136\1\u0260\1\u0261"+ - "\6\136\1\u0262\1\136\1\u0263\5\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\2\274\1\0\34\274\1\0"+ - "\23\274\1\0\4\274\1\0\23\274\1\0\23\274\10\0"+ - "\1\u0264\127\0\2\277\1\0\4\277\1\0\25\277\2\0"+ - "\101\277\2\u0265\1\0\135\u0265\11\0\6\u0266\1\0\4\u0266"+ - "\2\0\1\u0266\1\0\1\u0266\1\0\1\u0266\5\0\2\u0266"+ - "\14\0\30\u0266\3\0\1\u0266\2\0\10\u0266\1\0\2\u0266"+ - "\1\0\1\u0266\3\0\1\u0266\3\0\2\304\1\0\32\304"+ - "\1\0\55\304\1\0\24\304\2\u0267\1\0\135\u0267\10\0"+ - "\1\u0268\41\0\1\u0140\124\0\1\u0269\111\0\6\315\1\0"+ - "\13\315\5\0\2\315\1\0\1\315\12\0\30\315\3\0"+ - "\1\315\2\0\13\315\1\0\10\315\11\0\6\u026a\1\0"+ - "\4\u026a\2\0\1\u026a\1\0\3\u026a\4\0\3\u026a\1\0"+ - "\1\u026a\12\0\30\u026a\3\0\1\u026a\2\0\10\u026a\1\0"+ - "\2\u026a\1\0\1\u026a\3\0\1\u026a\56\0\1\u026b\4\0"+ - "\1\u026c\1\u026d\1\u026e\1\u026f\1\u0270\1\u0271\2\0\1\u0272"+ - "\3\0\1\u0273\1\0\1\u0274\1\u0275\1\u0276\3\0\1\u0277"+ - "\44\0\6\u0278\1\0\4\u0278\2\0\1\u0278\1\0\3\u0278"+ - "\4\0\3\u0278\1\0\1\u0278\12\0\30\u0278\3\0\1\u0278"+ - "\2\0\10\u0278\1\0\2\u0278\1\0\1\u0278\3\0\1\u0278"+ - "\14\0\6\327\1\0\13\327\5\0\2\327\14\0\30\327"+ - "\3\0\1\327\2\0\13\327\1\0\10\327\11\0\6\327"+ - "\1\0\4\327\2\0\1\327\1\0\3\327\5\0\2\327"+ - "\14\0\30\327\3\0\1\327\2\0\10\327\1\0\2\327"+ - "\1\0\1\327\3\0\1\327\13\0\7\340\1\0\4\340"+ - "\2\0\1\340\1\0\3\340\2\0\1\340\1\0\1\u0269"+ - "\2\340\14\0\30\340\2\0\1\346\1\340\2\0\10\340"+ - "\1\0\2\340\1\0\1\340\3\0\1\340\13\0\7\340"+ - "\1\0\4\340\2\0\1\340\1\0\3\340\2\0\1\340"+ - "\2\0\2\340\14\0\30\340\2\0\1\346\1\340\2\0"+ - "\10\340\1\0\2\340\1\0\1\340\3\0\1\340\27\0"+ - "\2\341\1\0\1\341\13\0\1\341\4\0\1\u0279\5\0"+ - "\1\u027a\3\0\1\u027b\3\0\1\u0279\1\u027c\7\0\1\u027d"+ - "\2\0\1\u027e\21\0\1\341\4\0\3\341\1\0\3\341"+ - "\10\0\7\340\1\0\4\340\2\341\1\340\1\341\3\340"+ - "\2\0\1\340\2\0\2\340\14\0\30\340\2\0\1\346"+ - "\1\340\2\0\10\340\1\341\2\340\1\0\1\340\3\341"+ - "\1\340\3\341\12\0\1\u027f\7\0\1\u027f\1\0\4\u027f"+ - "\11\0\1\u027f\20\0\3\u027f\5\0\2\u027f\3\0\2\u027f"+ - "\4\0\1\u027f\16\0\1\u027f\4\0\3\u027f\1\0\3\u027f"+ - "\56\0\1\u0280\71\0\1\u0281\140\0\6\u0282\1\0\10\u0282"+ - "\2\0\1\u0282\5\0\2\u0282\14\0\30\u0282\3\0\1\u0282"+ - "\2\0\13\u0282\1\0\10\u0282\11\0\1\357\1\u0283\3\357"+ - "\1\u0284\1\0\10\357\2\0\1\357\5\0\2\357\14\0"+ - "\2\357\1\u0284\16\357\1\u0283\6\357\3\0\1\357\2\0"+ - "\13\357\1\0\10\357\11\0\6\357\1\0\10\357\2\0"+ - "\1\357\5\0\2\357\14\0\30\357\3\0\1\357\2\0"+ - "\13\357\1\0\10\357\31\0\1\u0285\175\0\1\u0286\67\0"+ - "\1\u0287\205\0\1\u0288\141\0\1\u0289\130\0\1\u028a\173\0"+ - "\1\u028b\23\0\2\54\1\0\1\54\1\0\2\54\2\0"+ - "\6\54\1\0\26\54\1\0\20\54\1\u028c\23\54\1\0"+ - "\24\54\2\64\1\0\1\64\1\0\2\64\2\0\2\64"+ - "\1\u028d\3\64\1\0\26\64\1\0\12\64\1\u028d\31\64"+ - "\1\0\26\64\1\0\1\64\1\0\2\64\2\0\6\64"+ - "\1\0\26\64\1\0\15\64\1\u028e\6\64\1\u028e\17\64"+ - "\1\0\26\64\1\0\1\64\1\0\2\64\2\0\2\64"+ - "\1\u028f\3\64\1\0\1\u0105\25\64\1\0\12\64\1\u028f"+ - "\17\64\1\u0105\11\64\1\0\26\64\1\0\1\64\1\0"+ - "\2\64\2\0\1\64\1\u0290\1\u0291\3\64\1\0\1\64"+ - "\1\u0292\24\64\1\0\12\64\1\u0291\3\64\1\u0292\11\64"+ - "\1\u0290\13\64\1\0\26\64\1\0\1\64\1\0\2\64"+ - "\2\0\4\64\1\111\1\64\1\0\6\64\1\111\17\64"+ - "\1\0\20\64\1\111\15\64\1\111\5\64\1\0\26\64"+ - "\1\0\1\64\1\0\2\64\2\0\6\64\1\0\26\64"+ - "\1\0\33\64\1\u0293\10\64\1\0\2\64\1\u0293\23\64"+ - "\1\0\1\64\1\0\2\64\2\0\6\64\1\0\12\64"+ - "\1\u0294\13\64\1\0\22\64\1\u0294\21\64\1\0\26\64"+ - "\1\0\1\64\1\0\2\64\2\0\6\64\1\0\26\64"+ - "\1\0\15\64\1\u0295\6\64\1\u0295\17\64\1\0\26\64"+ - "\1\0\1\64\1\0\2\64\2\0\5\64\1\u0296\1\0"+ - "\26\64\1\0\11\64\1\u0296\32\64\1\0\26\64\1\0"+ - "\1\64\1\0\2\64\2\0\6\64\1\0\26\64\1\0"+ - "\25\64\2\u0297\15\64\1\0\26\64\1\0\1\64\1\0"+ - "\2\64\2\0\4\64\1\u0290\1\64\1\0\26\64\1\0"+ - "\20\64\1\u0290\4\64\2\u0298\15\64\1\0\26\64\1\0"+ - "\1\64\1\0\2\64\2\0\6\64\1\0\1\64\1\u0299"+ - "\17\64\1\u0296\4\64\1\0\16\64\1\u0299\12\64\1\u0296"+ - "\1\64\1\u029a\10\64\1\0\2\64\1\u029a\23\64\1\0"+ - "\1\64\1\0\2\64\2\0\6\64\1\0\1\64\1\u0296"+ - "\24\64\1\0\16\64\1\u0296\25\64\1\0\26\64\1\0"+ - "\1\64\1\0\2\64\2\0\3\64\1\u029b\2\64\1\0"+ - "\26\64\1\0\7\64\1\u029b\34\64\1\0\26\64\1\0"+ - "\1\64\1\0\2\64\2\0\6\64\1\0\26\64\1\0"+ - "\15\64\1\u029c\6\64\1\u029c\17\64\1\0\26\64\1\0"+ - "\1\64\1\0\2\64\2\0\2\64\1\u029d\3\64\1\0"+ - "\26\64\1\0\12\64\1\u029d\31\64\1\0\26\64\1\0"+ - "\1\64\1\0\2\64\2\0\1\111\3\64\1\u029e\1\64"+ - "\1\0\26\64\1\0\17\64\1\111\1\u029e\23\64\1\0"+ - "\26\64\1\0\1\64\1\0\2\64\2\0\6\64\1\0"+ - "\26\64\1\0\10\64\1\111\33\64\1\0\3\64\1\111"+ - "\22\64\1\0\1\64\1\0\2\64\2\0\6\64\1\0"+ - "\2\64\1\111\23\64\1\0\13\64\1\111\13\64\1\u029f"+ - "\14\64\1\0\1\64\1\u029f\24\64\1\0\1\64\1\0"+ - "\2\64\2\0\6\64\1\0\26\64\1\0\15\64\1\u02a0"+ - "\6\64\1\u02a0\17\64\1\0\26\64\1\0\1\64\1\0"+ - "\2\64\2\0\2\64\1\u02a1\3\64\1\0\26\64\1\0"+ - "\12\64\1\u02a1\31\64\1\0\26\64\1\0\1\64\1\0"+ - "\2\64\2\0\5\64\1\u0105\1\0\26\64\1\0\11\64"+ - "\1\u0105\21\64\1\u0296\10\64\1\0\2\64\1\u0296\23\64"+ - "\1\0\1\64\1\0\2\64\2\0\6\64\1\0\20\64"+ - "\1\u02a2\5\64\1\0\42\64\1\u02a2\1\64\1\0\26\64"+ - "\1\0\1\64\1\0\2\64\2\0\6\64\1\0\26\64"+ - "\1\0\27\64\1\u011e\14\64\1\0\1\64\1\u011e\24\64"+ - "\1\0\1\64\1\0\2\64\2\0\6\64\1\0\26\64"+ - "\1\0\27\64\1\u02a3\14\64\1\0\1\64\1\u02a3\24\64"+ - "\1\0\1\64\1\0\2\64\2\0\6\64\1\0\6\64"+ - "\1\u0105\17\64\1\0\36\64\1\u0105\5\64\1\0\26\64"+ - "\1\0\1\64\1\0\2\64\2\0\6\64\1\0\2\64"+ - "\1\u02a4\23\64\1\0\13\64\1\u02a4\30\64\1\0\26\64"+ - "\1\0\1\64\1\0\2\64\2\0\6\64\1\0\26\64"+ - "\1\0\25\64\2\u02a5\15\64\1\0\26\64\1\0\1\64"+ - "\1\0\2\64\2\0\6\64\1\0\26\64\1\0\10\64"+ - "\1\u02a6\33\64\1\0\3\64\1\u02a6\22\64\1\0\1\64"+ - "\1\0\2\64\2\0\6\64\1\0\1\u02a7\5\64\1\u02a8"+ - "\17\64\1\0\32\64\1\u02a7\3\64\1\u02a8\5\64\1\0"+ - "\26\64\1\0\1\64\1\0\2\64\2\0\6\64\1\0"+ - "\6\64\1\u02a9\17\64\1\0\36\64\1\u02a9\5\64\1\0"+ - "\26\64\1\0\1\64\1\0\2\64\2\0\6\64\1\0"+ - "\2\64\1\u02aa\23\64\1\0\13\64\1\u02aa\30\64\1\0"+ - "\26\64\1\0\1\64\1\0\2\64\2\0\3\64\1\u02ab"+ - "\2\64\1\0\26\64\1\0\7\64\1\u02ab\17\64\1\u02ac"+ - "\14\64\1\0\1\64\1\u02ac\24\64\1\0\1\64\1\0"+ - "\2\64\2\0\5\64\1\u02ad\1\0\26\64\1\0\11\64"+ - "\1\u02ad\32\64\1\0\26\64\1\0\1\64\1\0\2\64"+ - "\2\0\6\64\1\0\26\64\1\0\27\64\1\111\14\64"+ - "\1\0\1\64\1\111\24\64\1\0\1\64\1\0\2\64"+ - "\2\0\1\u02ae\5\64\1\0\26\64\1\0\17\64\1\u02ae"+ - "\24\64\1\0\26\64\1\0\1\64\1\0\2\64\2\0"+ - "\1\u02af\5\64\1\0\26\64\1\0\17\64\1\u02af\24\64"+ - "\1\0\26\64\1\0\1\64\1\0\2\64\2\0\6\64"+ - "\1\0\21\64\1\u02b0\4\64\1\0\31\64\1\u02b0\12\64"+ - "\1\0\26\64\1\0\1\64\1\0\2\64\2\0\2\64"+ - "\1\111\3\64\1\0\26\64\1\0\12\64\1\111\2\64"+ - "\1\u02b1\6\64\1\u02b1\10\64\1\111\6\64\1\0\6\64"+ - "\1\111\17\64\1\0\1\64\1\0\2\64\2\0\5\64"+ - "\1\u02b2\1\0\1\64\1\111\24\64\1\0\11\64\1\u02b2"+ - "\4\64\1\111\25\64\1\0\26\64\1\0\1\64\1\0"+ - "\2\64\2\0\6\64\1\0\26\64\1\0\25\64\2\111"+ - "\15\64\1\0\26\64\1\0\1\64\1\0\2\64\2\0"+ - "\5\64\1\u02b3\1\0\26\64\1\0\11\64\1\u02b3\32\64"+ - "\1\0\26\64\1\0\1\64\1\0\2\64\2\0\6\64"+ - "\1\0\26\64\1\0\15\64\1\u02b4\6\64\1\u02b4\17\64"+ - "\1\0\26\64\1\0\1\64\1\0\2\64\2\0\6\64"+ - "\1\0\2\64\1\u02b5\23\64\1\0\10\64\1\u02b6\2\64"+ - "\1\u02b5\30\64\1\0\3\64\1\u02b6\22\64\1\0\1\64"+ - "\1\0\2\64\2\0\2\64\1\u02b7\3\64\1\0\26\64"+ - "\1\0\12\64\1\u02b7\12\64\2\u02b8\1\u0297\14\64\1\0"+ - "\1\64\1\u0297\24\64\1\0\1\64\1\0\2\64\2\0"+ - "\3\64\1\u02b9\2\64\1\0\26\64\1\0\7\64\1\u02b9"+ - "\34\64\1\0\26\64\1\0\1\64\1\0\2\64\2\0"+ - "\2\64\1\u02ba\3\64\1\0\26\64\1\0\12\64\1\u02ba"+ - "\31\64\1\0\26\64\1\0\1\64\1\0\2\64\2\0"+ - "\5\64\1\u02bb\1\0\2\64\1\u02bc\23\64\1\0\11\64"+ - "\1\u02bb\1\64\1\u02bc\30\64\1\0\26\64\1\0\1\64"+ - "\1\0\2\64\2\0\4\64\1\u02bd\1\64\1\0\26\64"+ - "\1\0\20\64\1\u02bd\23\64\1\0\26\64\1\0\1\64"+ - "\1\0\2\64\2\0\6\64\1\0\6\64\1\u013b\17\64"+ - "\1\0\36\64\1\u013b\5\64\1\0\26\64\1\0\1\64"+ - "\1\0\2\64\2\0\6\64\1\0\21\64\1\u02be\4\64"+ - "\1\0\31\64\1\u02be\12\64\1\0\26\64\1\0\1\64"+ - "\1\0\2\64\2\0\6\64\1\0\21\64\1\u02bf\4\64"+ - "\1\0\31\64\1\u02bf\12\64\1\0\26\64\1\0\1\64"+ - "\1\0\2\64\2\0\6\64\1\0\26\64\1\0\33\64"+ - "\1\u02c0\10\64\1\0\2\64\1\u02c0\23\64\1\0\1\64"+ - "\1\0\2\64\2\0\6\64\1\0\26\64\1\0\15\64"+ - "\1\u02c1\6\64\1\u02c1\17\64\1\0\26\64\1\0\1\64"+ - "\1\0\2\64\2\0\1\u02b8\5\64\1\0\26\64\1\0"+ - "\17\64\1\u02b8\24\64\1\0\26\64\1\0\1\64\1\0"+ - "\2\64\2\0\6\64\1\0\26\64\1\0\35\64\1\111"+ - "\6\64\1\0\6\64\1\111\17\64\1\0\1\64\1\0"+ - "\2\64\2\0\1\u02c2\5\64\1\0\1\64\1\u0107\1\u02c3"+ - "\3\64\1\u013b\17\64\1\0\13\64\1\u02c3\1\u02c4\1\64"+ - "\1\u0107\1\u02c2\3\64\1\u02c4\12\64\1\u013b\5\64\1\0"+ - "\26\64\1\0\1\64\1\0\2\64\2\0\5\64\1\u02c5"+ - "\1\0\26\64\1\0\11\64\1\u02c5\32\64\1\0\26\64"+ - "\1\0\1\64\1\0\2\64\2\0\6\64\1\0\26\64"+ - "\1\0\44\64\1\0\11\64\1\u0292\6\64\1\u0292\5\64"+ - "\1\0\1\64\1\0\2\64\2\0\5\64\1\u02c6\1\0"+ - "\26\64\1\0\11\64\1\u02c6\32\64\1\0\26\64\1\0"+ - "\1\64\1\0\2\64\2\0\5\64\1\u02c7\1\0\26\64"+ - "\1\0\11\64\1\u02c7\13\64\2\u02c8\15\64\1\0\26\64"+ - "\1\0\1\64\1\0\2\64\2\0\6\64\1\0\1\64"+ - "\1\u02c9\24\64\1\0\16\64\1\u02c9\25\64\1\0\26\64"+ - "\1\0\1\64\1\0\2\64\2\0\2\64\1\u02ca\1\64"+ - "\1\111\1\64\1\0\26\64\1\0\12\64\1\u02ca\5\64"+ - "\1\111\23\64\1\0\26\64\1\0\1\64\1\0\2\64"+ - "\2\0\6\64\1\0\1\u02cb\25\64\1\0\32\64\1\u02cb"+ - "\11\64\1\0\26\64\1\0\1\64\1\0\2\64\2\0"+ - "\6\64\1\0\21\64\1\111\4\64\1\0\31\64\1\111"+ - "\12\64\1\0\26\64\1\0\1\64\1\0\2\64\2\0"+ - "\6\64\1\0\21\64\1\u02cc\4\64\1\0\31\64\1\u02cc"+ - "\12\64\1\0\26\64\1\0\1\64\1\0\2\64\2\0"+ - "\2\64\1\111\3\64\1\0\26\64\1\0\12\64\1\111"+ - "\31\64\1\0\24\64\67\0\1\u02cd\61\0\1\u02ce\54\0"+ - "\1\u02ce\140\0\1\u02cf\50\0\10\u0141\1\u02d0\24\u0141\1\u0143"+ - "\104\u0141\1\0\135\u0141\37\0\1\u02d1\100\0\1\127\10\0"+ - "\6\127\1\0\11\127\1\0\1\u02d2\1\0\3\127\1\0"+ - "\2\127\14\0\31\127\2\0\1\127\2\0\13\127\1\0"+ - "\11\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\5\136\1\u02d3"+ - "\22\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\17\0\1\146\26\0\1\62\71\0\1\u0149\10\0\6\u0149"+ - "\1\0\11\u0149\1\0\1\u0149\1\0\3\u0149\1\0\2\u0149"+ - "\14\0\31\u0149\2\0\1\u0149\2\0\13\u0149\1\0\11\u0149"+ - "\10\0\6\u0149\1\0\4\u0149\2\u02d4\1\u0149\1\u02d4\1\u0149"+ - "\1\u02d5\1\u0149\1\0\3\u0149\1\0\2\u0149\1\u02d5\13\0"+ - "\31\u0149\2\0\1\u0149\2\0\10\u0149\1\u02d4\2\u0149\1\0"+ - "\1\u0149\3\u02d4\1\u0149\3\u02d4\1\u0149\10\0\6\u0149\1\0"+ - "\2\u0149\1\u014b\1\u0149\2\u014d\1\u0149\1\u014d\1\u0149\1\0"+ - "\1\u0149\1\0\3\u0149\1\0\1\u0149\1\u014c\14\0\4\u0149"+ - "\1\u014b\1\u014c\6\u0149\1\u014c\5\u0149\1\u014c\6\u0149\2\0"+ - "\1\u0149\2\0\10\u0149\1\u014d\2\u0149\1\0\1\u0149\3\u014d"+ - "\1\u0149\3\u014d\1\u0149\10\0\6\u0149\1\0\2\u0149\1\u014b"+ - "\1\u0149\2\u014e\1\u0149\1\u014e\1\u0149\1\0\1\u0149\1\0"+ - "\3\u0149\1\0\1\u0149\1\u014c\1\0\1\u014d\12\0\4\u0149"+ - "\1\u014b\1\u014c\6\u0149\1\u014c\5\u0149\1\u014c\6\u0149\2\0"+ - "\1\u0149\2\0\10\u0149\1\u014e\2\u0149\1\0\1\u0149\3\u014e"+ - "\1\u0149\3\u014e\1\u0149\10\0\6\u0149\1\0\1\u0149\1\u02d6"+ - "\1\u014b\1\u0149\1\u014e\1\u014f\1\u0149\1\u014f\1\u0149\1\0"+ - "\1\u0149\1\0\3\u0149\1\0\1\u0149\1\u014c\1\0\1\u014d"+ - "\12\0\4\u0149\1\u014b\1\u014c\1\u0149\1\u02d6\4\u0149\1\u014c"+ - "\5\u0149\1\u014c\6\u0149\2\0\1\u0149\2\0\10\u0149\1\u014f"+ - "\2\u0149\1\0\1\u0149\3\u014f\1\u0149\2\u014f\1\u014e\1\u0149"+ - "\10\0\1\u0149\1\u02d7\4\u0149\1\0\2\u0149\1\u02d7\1\u0149"+ - "\4\u02d7\1\u0149\1\0\1\u0149\1\0\3\u0149\1\0\1\u0149"+ - "\1\u02d7\14\0\4\u0149\3\u02d7\5\u0149\2\u02d7\3\u0149\2\u02d7"+ - "\4\u0149\1\u02d7\1\u0149\2\0\1\u0149\2\0\10\u0149\1\u02d7"+ - "\2\u0149\1\0\1\u0149\3\u02d7\1\u0149\3\u02d7\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u02d8\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\14\136\1\u02d9\2\136\1\u02da"+ - "\10\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u02db"+ - "\5\136\1\u02dc\17\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\11\136\1\u02dd\16\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u02de\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\u02df\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u02e0\14\136\1\u0152\4\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u02e1\2\136\1\u02e2\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\11\136\1\u02e3\16\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u02e4\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\21\136\1\u02e5\6\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\10\136\1\u02e6\17\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\21\136\1\u02e7\6\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\u02e8\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u02e9\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u02ea\6\136\1\u02eb\16\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u02ec\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u02ed\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u02ee\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u02ef\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u0152\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\10\136\1\u02f0\17\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u02f1\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u02f2\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\11\136\1\u02f3\16\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u02f4\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u02f5\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u02f6\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u02f7\27\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\27\136\1\u02f8\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u02f9\17\136\1\u02fa\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u02fb\15\136\1\u02fc\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u02fd\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\1\u0152\12\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u02fe\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\17\136\1\u0152\10\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u02ff\5\136\1\u02e6\17\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u0300\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u0301\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u0302\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\5\136\1\u0303\1\136"+ - "\1\u0304\17\136\1\u0305\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\u0306\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u01df\6\136"+ - "\1\u0307\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u0308\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u0309\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u030a\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u030b\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u030c"+ - "\27\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\67\0\1\u030d\62\0\1\u030e\7\0\1\u030e\1\0\4\u030e"+ - "\11\0\1\u030e\20\0\3\u030e\5\0\2\u030e\3\0\2\u030e"+ - "\4\0\1\u030e\16\0\1\u030e\4\0\3\u030e\1\0\3\u030e"+ - "\12\0\1\u030f\7\0\1\u030f\1\0\4\u030f\11\0\1\u030f"+ - "\20\0\3\u030f\5\0\2\u030f\3\0\2\u030f\4\0\1\u030f"+ - "\16\0\1\u030f\4\0\3\u030f\1\0\3\u030f\67\0\1\u0310"+ - "\61\0\1\u0311\54\0\1\u0311\136\0\1\u0312\141\0\1\u0313"+ - "\130\0\1\u0314\173\0\1\u0315\34\0\1\u0316\54\0\1\u0316"+ - "\136\0\1\u0317\141\0\1\u0318\130\0\1\u0319\173\0\1\u031a"+ - "\23\0\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\13\136"+ - "\1\u031b\14\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\1\136\1\u031c\4\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\1\136"+ - "\1\u031d\14\0\1\136\1\u031e\1\u031f\11\136\1\u0320\2\136"+ - "\1\u0321\1\136\1\u0322\6\136\1\127\2\0\1\136\2\0"+ - "\2\136\1\u0323\10\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\5\136\1\u0324\22\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u0325\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\10\136\1\u01b8\17\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0326\2\136\1\u0327\10\136"+ - "\1\u0328\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u0329"+ - "\2\136\1\u032a\3\136\1\u032b\1\u032c\1\u032d\16\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\5\136\1\u032e\22\136\1\127"+ - "\2\0\1\136\2\0\1\u032f\12\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u0330\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\u019b\1\0\11\u019b\1\0\1\u019b\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\u019b\14\0\30\u019b\1\127\2\0"+ - "\1\u019b\2\0\13\u019b\1\0\10\u019b\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u0331\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0332\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u0333\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u0334\1\136\1\u0335\1\u0336"+ - "\1\u0337\1\u0338\1\u0339\1\u033a\1\u033b\1\u033c\1\u033d\6\136"+ - "\1\u033e\1\u033f\5\136\1\127\2\0\1\u0340\2\0\1\u0341"+ - "\12\136\1\0\4\136\1\u0342\3\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0343\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\1\136\1\u0344\6\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u0345\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u0346\1\136"+ - "\1\u0347\1\136\1\u0348\1\u0349\2\136\1\u034a\10\136\1\u034b"+ - "\6\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u034c"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u034d"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u034e"+ - "\2\136\1\u034f\16\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u0350\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u0351\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u0352\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u0353\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u0354"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136"+ - "\1\u0355\1\u0356\10\136\1\u0357\1\136\1\u0358\3\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\u0359\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u035a\1\u035b\1\u035c\1\u035d"+ - "\1\u035e\1\u0338\2\136\1\u035f\1\u0360\6\136\1\u0361\1\u0362"+ - "\1\u0363\5\136\1\127\2\0\1\136\2\0\1\u01d7\12\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u0364\17\136\1\u0365\1\136\1\u0366\3\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\u0367\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u0368\22\136\1\u0152\4\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u02e9\14\136"+ - "\1\u0369\3\136\1\127\2\0\1\u036a\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136"+ - "\1\u036b\1\136\1\u036c\12\136\1\u036d\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u036e\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\u036f\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\25\136\1\u0370\2\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\11\136\1\u0371\16\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\11\136\1\u0372\16\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\11\136\1\u0373\16\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u0374\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\136\1\u0375\1\u02e4\3\136\1\u0376"+ - "\1\u0377\1\u0378\1\u0379\4\136\1\u037a\2\136\1\u037b\2\136"+ - "\1\u037c\3\136\1\127\2\0\1\136\2\0\1\u037d\12\136"+ - "\1\0\1\u037e\7\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u037f\12\136\1\u0380\3\136\1\u0381\5\136"+ - "\1\127\2\0\1\136\2\0\1\u0382\12\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u0328"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u0383"+ - "\20\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\u0384\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0385"+ - "\4\136\1\u0386\20\136\1\127\2\0\1\136\2\0\1\u0387"+ - "\12\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\22\136\1\u0388\5\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u0389\1\u038a\1\136\1\u038b\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u038c\10\136\1\u038d"+ - "\6\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u038e"+ - "\17\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u038f"+ - "\6\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0390"+ - "\3\136\1\u0391\13\136\1\u0392\5\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\5\136\1\u022f\22\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\12\136\1\u02de\15\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\11\136\1\u0393\16\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u02fd\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\21\136\1\u0394\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u0395\1\136\1\u0396\1\136\1\u0397\4\136"+ - "\1\u0398\16\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\24\136"+ - "\1\u0399\3\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u039a\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u039b\1\u039c\2\136\1\u039d\6\136\1\u039e\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u039f\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u03a0\1\u0242\3\136"+ - "\1\u01e6\1\u03a1\6\136\1\u03a2\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u03a3\3\136\1\u03a4\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u03a5\15\136\1\u01c1\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u03a6\20\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u03a7\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u03a8\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u03a9\1\136"+ - "\1\u03aa\13\136\1\u03ab\1\u03ac\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\u03ad\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u03ae\2\136\1\u03af\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\24\136\1\u03b0\3\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u03b1\5\136\1\u03b2"+ - "\16\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u03b3"+ - "\20\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u0334"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u03b4"+ - "\17\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u03b5"+ - "\24\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u03b6"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u03b7"+ - "\26\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u03b8"+ - "\3\136\1\u03b9\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u03ba\4\136\1\u01b8\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u03bb\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u03bc\7\136\1\u03bd\7\136\1\u0328\1\u03be\6\136"+ - "\1\127\2\0\1\u03bf\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u03c0\2\136"+ - "\1\u03c1\10\136\1\u03c2\5\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\22\136\1\u0152\5\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u03c3\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\22\136\1\u03c4\5\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u03c5\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u03c6\5\136\1\u03c7\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\26\136\1\u03c8\1\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\10\136\1\u03c9\5\136\1\u03ca\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u03a9\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u03cb\4\136"+ - "\1\u03cc\7\136\1\u03cd\1\136\1\u03ce\1\u03cf\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\136\1\u03d0\26\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u03d1\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\5\136\1\u03d2\22\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\27\136\1\u03d3\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u036d\5\136\1\u03d4\3\136"+ - "\1\127\2\0\1\136\2\0\12\136\1\u03d5\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u03d6"+ - "\2\136\1\u03d7\11\136\1\u03d8\1\136\1\u03d9\1\136\1\u03da"+ - "\3\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u0384"+ - "\12\136\1\u03db\6\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u03dc\1\u03dd\1\u03a2\2\136\1\u03de\1\u03df\5\136"+ - "\1\u03e0\5\136\1\u03e1\3\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\26\136\1\u03e2\1\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u03e3\1\136\1\u03e4\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u03e5\11\136\1\u03ac\6\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u03ae\1\u03e6"+ - "\2\136\1\u03e7\20\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\u03e8\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u03e9\1\136\1\u03ea\11\136\1\u03eb\3\136\1\u03ec"+ - "\3\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\24\136\1\u03ed"+ - "\3\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\u03ee\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u03ef"+ - "\15\136\1\u03f0\6\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u03f1\3\136\1\u03f2\15\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u03f3\13\136\1\u03f4\3\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u03f5\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u02f7\4\136\1\u03f6\22\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u03ef\3\136"+ - "\1\u03f7\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u03f8\24\136\1\u03f9\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u03fa\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u03fb"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u03fc"+ - "\3\136\1\u03fd\13\136\1\u03fe\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u03ff\1\u0400\16\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0401\1\u0402\4\136\1\u0403"+ - "\10\136\1\u03a2\6\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\11\136\1\u0404\16\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\136\1\u0405\26\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\10\136\1\u0406\1\u03b2\16\136\1\127\2\0\1\136\2\0"+ - "\1\u022f\12\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u03b3\6\136\1\u0407\1\136\1\u0408"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\5\136\1\u0409"+ - "\22\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u040a"+ - "\26\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u040b"+ - "\21\136\1\u040c\3\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u040d\20\136\1\u040e\1\127\2\0\1\u040f\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u0410\5\136\1\u0411\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\11\136\1\u0412\16\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u0413\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u0414\1\136\1\u01e6"+ - "\17\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\1\136\1\u0415\7\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u02fd"+ - "\14\136\1\u0416\3\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u0417\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\u0418\2\0\1\u0152\12\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u0419\21\136\1\u041a\3\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u041b\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\1\136\1\u041c\6\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u041d\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u041e\1\u041f\16\136\1\u0420\5\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\1\136\1\u0421\7\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0422\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u0423\13\136"+ - "\1\u022f\5\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\5\136"+ - "\1\u0424\22\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136"+ - "\1\u0425\5\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u0426\1\136\1\u0427\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u0428\1\136\1\u040f\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\27\136\1\u0429\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u042a\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u042b\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\4\136\1\u042c\3\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u042d\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u042e\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u042f\1\136\1\u0430\12\136\1\u0431"+ - "\1\136\1\u0432\4\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u02e9\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\u0161"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u02ff\4\136"+ - "\1\u0433\1\u02e6\17\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u0434\3\136\1\u0435\1\136\1\u0436\11\136\1\u0437\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u0438\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u0439\1\u043a\1\136"+ - "\1\u043b\1\u043c\1\136\1\u043d\11\136\1\u043e\1\136\1\u0388"+ - "\1\136\1\u01d5\3\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\u043f\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\10\136\1\u036d\1\u0440\4\136\1\u0441\5\136\1\u0442\3\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\26\136\1\u0443\1\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u0444\23\136"+ - "\1\u0445\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\24\136\1\u0446"+ - "\3\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u0447"+ - "\1\u0152\3\136\1\u0448\7\136\1\u0449\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u044a\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\136\1\u044b\3\136\1\u044c\1\u044d"+ - "\1\u044e\1\u044f\10\136\1\u0450\5\136\1\u0451\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0452\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0453\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\136\1\u020f\6\136\1\u0454\17\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u0455\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0456\16\136"+ - "\1\u0457\2\136\1\u0458\3\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\136\1\u020f\6\136\1\u01e6\5\136\1\u0459\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u045a\1\u01e6"+ - "\13\136\1\u045b\3\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u045c"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u045d\2\136\1\u045e\2\136\1\u045f\3\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u0460\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u0461\21\136\1\u0462\3\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u0463\1\u0464\6\136\1\u0465"+ - "\17\136\1\127\2\0\1\u022f\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u0466"+ - "\2\136\1\u0467\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\1\u02e9\7\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u0468\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u0469\12\136\1\u046a\7\136\1\u046b\1\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u046c\2\136"+ - "\1\u046d\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u046e\23\136\1\127\2\0\1\136\2\0\10\136\1\u046f"+ - "\2\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u0470\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u0471\17\136\1\u0388\5\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u0472\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u02e9\20\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\23\136\1\u0473\4\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u0474\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u0475\3\136\1\u0476\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\11\136\1\u0477\16\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u0478\3\136\1\u0479"+ - "\20\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u03ae"+ - "\14\136\1\u047a\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u047b\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\136\1\u047c\26\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\10\136\1\u047d\17\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u047e\1\136\1\u047f\1\u0480\7\136\1\u0481\1\u0482"+ - "\1\136\1\u0483\3\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u0484\1\u0485\1\u01ce\12\136\1\u0361\1\u0362\1\u0486"+ - "\5\136\1\127\2\0\1\136\2\0\1\u01d7\12\136\1\0"+ - "\10\136\1\127\10\0\6\u024e\1\0\11\u024e\1\0\1\u024e"+ - "\1\0\1\127\1\u0487\1\u024e\1\0\2\u024e\14\0\30\u024e"+ - "\1\127\2\0\1\u024e\2\0\13\u024e\1\0\10\u024e\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u0488\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0489\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u048a\20\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u048b\3\136"+ - "\1\u048c\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136"+ - "\1\u048d\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u048e"+ - "\27\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u048f"+ - "\24\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u0490"+ - "\5\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\1\136\1\u0491\6\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136\1\u0492"+ - "\16\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u0493"+ - "\11\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u0494\27\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0495\13\136"+ - "\1\u0496\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u0497\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136"+ - "\1\u0498\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\1\u0499\12\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\26\136\1\u049a"+ - "\1\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u049b"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0203"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u049c\27\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u049d\17\136"+ - "\1\u049e\1\136\1\u049f\3\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\11\0\6\u0266\1\0\11\u0266\1\0"+ - "\1\u0266\5\0\2\u0266\14\0\30\u0266\3\0\1\u0266\2\0"+ - "\13\u0266\1\0\10\u0266\11\0\1\u04a0\54\0\1\u04a0\62\0"+ - "\6\u026a\1\0\13\u026a\5\0\2\u026a\1\0\1\u026a\12\0"+ - "\30\u026a\3\0\1\u026a\2\0\13\u026a\1\0\10\u026a\63\0"+ - "\1\u04a1\1\u04a2\20\0\1\u04a3\116\0\1\u04a4\151\0\1\u04a5"+ - "\135\0\1\u04a6\5\0\1\u04a7\113\0\1\u04a8\17\0\1\u04a9"+ - "\140\0\1\u04aa\116\0\1\u04ab\5\0\1\u04ac\151\0\1\u04ad"+ - "\121\0\1\u04ae\15\0\1\u04af\135\0\1\u04b0\133\0\1\u04b1"+ - "\125\0\1\u04b2\137\0\1\u04b3\72\0\6\u0278\1\0\13\u0278"+ - "\5\0\2\u0278\1\0\1\u0278\12\0\30\u0278\3\0\1\u0278"+ - "\2\0\13\u0278\1\0\10\u0278\74\0\1\u0279\145\0\1\u0279"+ - "\6\0\1\u0279\106\0\1\u0279\16\0\1\u0279\11\0\1\u0279"+ - "\130\0\1\u0279\123\0\1\u0279\13\0\1\u0279\137\0\1\u04b4"+ - "\46\0\2\357\1\u04b5\3\357\1\0\10\357\2\0\1\357"+ - "\5\0\2\357\14\0\3\357\1\u04b5\24\357\3\0\1\357"+ - "\2\0\13\357\1\0\10\357\11\0\6\357\1\0\1\u04b6"+ - "\7\357\2\0\1\357\5\0\2\357\14\0\23\357\1\u04b6"+ - "\4\357\3\0\1\357\2\0\13\357\1\0\10\357\31\0"+ - "\1\u04b7\176\0\1\u04b8\131\0\1\u0289\130\0\1\u04b9\153\0"+ - "\1\u04ba\113\0\1\u04bb\74\0\2\54\1\0\1\54\1\0"+ - "\2\54\2\0\6\54\1\0\26\54\1\0\21\54\1\u04bc"+ - "\22\54\1\0\24\54\2\64\1\0\1\64\1\0\2\64"+ - "\2\0\3\64\1\u04bd\2\64\1\0\26\64\1\0\7\64"+ - "\1\u04bd\34\64\1\0\26\64\1\0\1\64\1\0\2\64"+ - "\2\0\1\64\1\u02a7\4\64\1\0\26\64\1\0\25\64"+ - "\2\111\1\64\1\u02a7\13\64\1\0\26\64\1\0\1\64"+ - "\1\0\2\64\2\0\3\64\1\u04be\2\64\1\0\26\64"+ - "\1\0\7\64\1\u04be\17\64\1\u04bf\14\64\1\0\1\64"+ - "\1\u04bf\24\64\1\0\1\64\1\0\2\64\2\0\5\64"+ - "\1\u04c0\1\0\26\64\1\0\11\64\1\u04c0\32\64\1\0"+ - "\26\64\1\0\1\64\1\0\2\64\2\0\6\64\1\0"+ - "\26\64\1\0\35\64\1\u02a7\6\64\1\0\6\64\1\u02a7"+ - "\17\64\1\0\1\64\1\0\2\64\2\0\6\64\1\0"+ - "\2\64\1\u04c1\23\64\1\0\13\64\1\u04c1\30\64\1\0"+ - "\26\64\1\0\1\64\1\0\2\64\2\0\4\64\1\111"+ - "\1\64\1\0\26\64\1\0\20\64\1\111\23\64\1\0"+ - "\26\64\1\0\1\64\1\0\2\64\2\0\2\64\1\u04c2"+ - "\3\64\1\0\26\64\1\0\12\64\1\u04c2\31\64\1\0"+ - "\26\64\1\0\1\64\1\0\2\64\2\0\6\64\1\0"+ - "\1\64\1\u02c0\24\64\1\0\16\64\1\u02c0\25\64\1\0"+ - "\26\64\1\0\1\64\1\0\2\64\2\0\6\64\1\0"+ - "\2\64\1\111\23\64\1\0\13\64\1\111\30\64\1\0"+ - "\26\64\1\0\1\64\1\0\2\64\2\0\5\64\1\u02a7"+ - "\1\0\26\64\1\0\11\64\1\u02a7\32\64\1\0\26\64"+ - "\1\0\1\64\1\0\2\64\2\0\6\64\1\0\26\64"+ - "\1\0\35\64\1\u04c3\6\64\1\0\6\64\1\u04c3\17\64"+ - "\1\0\1\64\1\0\2\64\2\0\6\64\1\0\26\64"+ - "\1\0\10\64\1\u04c4\33\64\1\0\3\64\1\u04c4\22\64"+ - "\1\0\1\64\1\0\2\64\2\0\6\64\1\0\26\64"+ - "\1\0\33\64\1\u04c5\10\64\1\0\2\64\1\u04c5\23\64"+ - "\1\0\1\64\1\0\2\64\2\0\6\64\1\0\26\64"+ - "\1\0\25\64\2\u04c6\15\64\1\0\26\64\1\0\1\64"+ - "\1\0\2\64\2\0\6\64\1\0\1\u02a7\25\64\1\0"+ - "\32\64\1\u02a7\11\64\1\0\26\64\1\0\1\64\1\0"+ - "\2\64\2\0\6\64\1\0\26\64\1\0\15\64\1\u04c7"+ - "\6\64\1\u04c7\17\64\1\0\26\64\1\0\1\64\1\0"+ - "\2\64\2\0\6\64\1\0\12\64\1\u02b8\13\64\1\0"+ - "\22\64\1\u02b8\21\64\1\0\26\64\1\0\1\64\1\0"+ - "\2\64\2\0\6\64\1\0\26\64\1\0\10\64\1\u02bf"+ - "\33\64\1\0\3\64\1\u02bf\22\64\1\0\1\64\1\0"+ - "\2\64\2\0\3\64\1\u04c8\2\64\1\0\26\64\1\0"+ - "\7\64\1\u04c8\34\64\1\0\26\64\1\0\1\64\1\0"+ - "\2\64\2\0\6\64\1\0\26\64\1\0\15\64\1\u02b7"+ - "\6\64\1\u02b7\17\64\1\0\26\64\1\0\1\64\1\0"+ - "\2\64\2\0\5\64\1\u04c9\1\0\26\64\1\0\11\64"+ - "\1\u04c9\32\64\1\0\26\64\1\0\1\64\1\0\2\64"+ - "\2\0\6\64\1\0\26\64\1\0\27\64\1\u02b8\14\64"+ - "\1\0\1\64\1\u02b8\24\64\1\0\1\64\1\0\2\64"+ - "\2\0\6\64\1\0\26\64\1\0\15\64\1\u0139\6\64"+ - "\1\u0139\17\64\1\0\26\64\1\0\1\64\1\0\2\64"+ - "\2\0\6\64\1\0\26\64\1\0\34\64\1\111\7\64"+ - "\1\0\4\64\1\111\21\64\1\0\1\64\1\0\2\64"+ - "\2\0\6\64\1\0\2\64\1\u04ca\23\64\1\0\13\64"+ - "\1\u04ca\30\64\1\0\26\64\1\0\1\64\1\0\2\64"+ - "\2\0\6\64\1\0\2\64\1\u013b\23\64\1\0\13\64"+ - "\1\u013b\30\64\1\0\26\64\1\0\1\64\1\0\2\64"+ - "\2\0\6\64\1\0\2\64\1\u02c0\23\64\1\0\13\64"+ - "\1\u02c0\30\64\1\0\26\64\1\0\1\64\1\0\2\64"+ - "\2\0\6\64\1\0\2\64\1\u0139\23\64\1\0\13\64"+ - "\1\u0139\30\64\1\0\26\64\1\0\1\64\1\0\2\64"+ - "\2\0\6\64\1\0\26\64\1\0\25\64\2\u04cb\15\64"+ - "\1\0\26\64\1\0\1\64\1\0\2\64\2\0\1\64"+ - "\1\u04cc\4\64\1\0\26\64\1\0\30\64\1\u04cc\13\64"+ - "\1\0\26\64\1\0\1\64\1\0\2\64\2\0\5\64"+ - "\1\u04cd\1\0\26\64\1\0\11\64\1\u04cd\32\64\1\0"+ - "\26\64\1\0\1\64\1\0\2\64\2\0\6\64\1\0"+ - "\26\64\1\0\27\64\1\u04ce\14\64\1\0\1\64\1\u04ce"+ - "\24\64\1\0\1\64\1\0\2\64\2\0\6\64\1\0"+ - "\2\64\1\u04cf\23\64\1\0\13\64\1\u04cf\30\64\1\0"+ - "\26\64\1\0\1\64\1\0\2\64\2\0\6\64\1\0"+ - "\1\111\25\64\1\0\32\64\1\111\11\64\1\0\26\64"+ - "\1\0\1\64\1\0\2\64\2\0\6\64\1\0\1\64"+ - "\1\u04d0\24\64\1\0\16\64\1\u04d0\25\64\1\0\26\64"+ - "\1\0\1\64\1\0\2\64\2\0\6\64\1\0\26\64"+ - "\1\0\15\64\1\u04d1\6\64\1\u04d1\17\64\1\0\26\64"+ - "\1\0\1\64\1\0\2\64\2\0\6\64\1\0\26\64"+ - "\1\0\15\64\1\u04d2\6\64\1\u04d2\17\64\1\0\26\64"+ - "\1\0\1\64\1\0\2\64\2\0\6\64\1\0\26\64"+ - "\1\0\33\64\1\u04d3\10\64\1\0\2\64\1\u04d3\23\64"+ - "\1\0\1\64\1\0\2\64\2\0\6\64\1\0\1\64"+ - "\1\u04d4\24\64\1\0\16\64\1\u04d4\25\64\1\0\26\64"+ - "\1\0\1\64\1\0\2\64\2\0\6\64\1\0\12\64"+ - "\1\u04d5\13\64\1\0\22\64\1\u04d5\21\64\1\0\26\64"+ - "\1\0\1\64\1\0\2\64\2\0\6\64\1\0\26\64"+ - "\1\0\33\64\1\111\10\64\1\0\2\64\1\111\23\64"+ - "\1\0\1\64\1\0\2\64\2\0\5\64\1\111\1\0"+ - "\26\64\1\0\11\64\1\111\32\64\1\0\26\64\1\0"+ - "\1\64\1\0\2\64\2\0\6\64\1\0\21\64\1\u0296"+ - "\4\64\1\0\31\64\1\u0296\12\64\1\0\26\64\1\0"+ - "\1\64\1\0\2\64\2\0\6\64\1\0\26\64\1\0"+ - "\27\64\1\u04d6\14\64\1\0\1\64\1\u04d6\24\64\1\0"+ - "\1\64\1\0\2\64\2\0\3\64\1\u04d7\2\64\1\0"+ - "\26\64\1\0\7\64\1\u04d7\34\64\1\0\26\64\1\0"+ - "\1\64\1\0\2\64\2\0\6\64\1\0\26\64\1\0"+ - "\15\64\1\111\6\64\1\111\17\64\1\0\26\64\1\0"+ - "\1\64\1\0\2\64\2\0\6\64\1\0\1\64\1\u04d8"+ - "\24\64\1\0\16\64\1\u04d8\25\64\1\0\26\64\1\0"+ - "\1\64\1\0\2\64\2\0\3\64\1\u011b\2\64\1\0"+ - "\26\64\1\0\7\64\1\u011b\34\64\1\0\26\64\1\0"+ - "\1\64\1\0\2\64\2\0\2\64\1\u04d9\3\64\1\0"+ - "\26\64\1\0\12\64\1\u04d9\31\64\1\0\26\64\1\0"+ - "\1\64\1\0\2\64\2\0\6\64\1\0\21\64\1\u04da"+ - "\4\64\1\0\31\64\1\u04da\12\64\1\0\26\64\1\0"+ - "\1\64\1\0\2\64\2\0\1\64\1\371\4\64\1\0"+ - "\26\64\1\0\30\64\1\371\13\64\1\0\26\64\1\0"+ - "\1\64\1\0\2\64\2\0\6\64\1\0\26\64\1\0"+ - "\33\64\1\u04db\10\64\1\0\2\64\1\u04db\23\64\1\0"+ - "\1\64\1\0\2\64\2\0\2\64\1\u04dc\3\64\1\0"+ - "\26\64\1\0\12\64\1\u04dc\31\64\1\0\26\64\1\0"+ - "\1\64\1\0\2\64\2\0\3\64\1\u04cd\2\64\1\0"+ - "\26\64\1\0\7\64\1\u04cd\1\u04c4\33\64\1\0\3\64"+ - "\1\u04c4\22\64\1\0\1\64\1\0\2\64\2\0\4\64"+ - "\1\u029e\1\64\1\0\26\64\1\0\20\64\1\u029e\23\64"+ - "\1\0\26\64\1\0\1\64\1\0\2\64\2\0\6\64"+ - "\1\0\2\64\1\u013b\23\64\1\0\13\64\1\u013b\1\64"+ - "\1\111\6\64\1\111\17\64\1\0\26\64\1\0\1\64"+ - "\1\0\2\64\2\0\6\64\1\0\12\64\1\111\13\64"+ - "\1\0\22\64\1\111\21\64\1\0\26\64\1\0\1\64"+ - "\1\0\2\64\2\0\5\64\1\u04dd\1\0\26\64\1\0"+ - "\11\64\1\u04dd\32\64\1\0\26\64\1\0\1\64\1\0"+ - "\2\64\2\0\6\64\1\0\26\64\1\0\34\64\1\111"+ - "\7\64\1\0\4\64\1\111\1\u04de\6\64\1\u04de\11\64"+ - "\1\0\1\64\1\0\2\64\2\0\6\64\1\0\26\64"+ - "\1\0\10\64\1\u04df\33\64\1\0\3\64\1\u04df\22\64"+ - "\1\0\1\64\1\0\2\64\2\0\6\64\1\0\2\64"+ - "\1\u011b\23\64\1\0\13\64\1\u011b\30\64\1\0\24\64"+ - "\70\0\1\u04e0\61\0\1\u04e1\64\0\1\u04e1\130\0\1\u04e2"+ - "\125\0\2\u02d0\22\0\1\u02d0\45\0\1\u04e3\127\0\1\127"+ - "\10\0\1\127\1\u04e4\4\127\1\0\2\127\1\u04e4\1\127"+ - "\4\u04e4\1\127\1\0\1\127\1\0\3\127\1\0\1\127"+ - "\1\u04e4\14\0\4\127\3\u04e4\5\127\2\u04e4\3\127\2\u04e4"+ - "\4\127\1\u04e4\1\127\2\0\1\127\2\0\10\127\1\u04e4"+ - "\2\127\1\0\1\127\3\u04e4\1\127\3\u04e4\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u04e5\27\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\u0149\10\0\6\u0149"+ - "\1\0\4\u0149\2\u02d4\1\u0149\1\u02d4\1\u0149\1\0\1\u0149"+ - "\1\0\3\u0149\1\0\1\u0149\1\u014c\14\0\5\u0149\1\u014c"+ - "\6\u0149\1\u014c\5\u0149\1\u014c\6\u0149\2\0\1\u0149\2\0"+ - "\10\u0149\1\u02d4\2\u0149\1\0\1\u0149\3\u02d4\1\u0149\3\u02d4"+ - "\24\0\2\u02d4\1\0\1\u02d4\74\0\1\u02d4\4\0\3\u02d4"+ - "\1\0\3\u02d4\1\u0149\10\0\1\u0149\1\u02d7\4\u0149\1\0"+ - "\1\u0149\1\u02d6\1\u02d7\1\u0149\4\u02d7\1\u0149\1\0\1\u0149"+ - "\1\0\3\u0149\1\0\1\u0149\1\u02d7\14\0\4\u0149\3\u02d7"+ - "\1\u02d6\4\u0149\2\u02d7\3\u0149\2\u02d7\4\u0149\1\u02d7\1\u0149"+ - "\2\0\1\u0149\2\0\10\u0149\1\u02d7\2\u0149\1\0\1\u0149"+ - "\3\u02d7\1\u0149\3\u02d7\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u015d\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u04e6\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u04e7\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u04e8\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u04e9\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\7\136\1\u04ea\10\136\1\u04eb\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u0152\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u04ec\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u04ed\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u0152\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u04ee\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u04ef\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\u04f0\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\12\136\1\u04f1\15\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u0152\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u01b3\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\24\136\1\u0152\3\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\7\136\1\u022f\20\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u04f2\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u04eb\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\21\136\1\u04f3\6\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u04f4\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\10\136\1\u02df\17\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u04f5\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u04f6\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\136\1\u04f7\26\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u0165\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u04f8\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u04f5\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\21\136\1\u04f9\6\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u02ff\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\7\136\1\u04f8\20\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\26\136\1\u04fa\1\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u04fb\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\10\136\1\u04fc\17\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\25\136\1\u04fd\2\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\7\136\1\u0152\20\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u04fe\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136"+ - "\1\u030b\6\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136"+ - "\1\u02e1\17\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u04f7\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u04ff\5\136\1\u03c6\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u0500\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u0501\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\u0502\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\27\136"+ - "\1\u0503\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u0504"+ - "\21\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u0505"+ - "\21\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u0506"+ - "\20\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u04f7"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\12\136\1\u0152"+ - "\15\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u02e6"+ - "\20\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\70\0\1\u0507\61\0\1\u0508\7\0\1\u0508\1\0\4\u0508"+ - "\11\0\1\u0508\20\0\3\u0508\5\0\2\u0508\3\0\2\u0508"+ - "\4\0\1\u0508\16\0\1\u0508\4\0\3\u0508\1\0\3\u0508"+ - "\12\0\1\u0509\7\0\1\u0509\1\0\4\u0509\11\0\1\u0509"+ - "\20\0\3\u0509\5\0\2\u0509\3\0\2\u0509\4\0\1\u0509"+ - "\16\0\1\u0509\4\0\3\u0509\1\0\3\u0509\70\0\1\u050a"+ - "\61\0\1\u050b\64\0\1\u050b\122\0\1\u0313\130\0\1\u050c"+ - "\153\0\1\u050d\113\0\1\u050e\106\0\1\u050f\64\0\1\u050f"+ - "\122\0\1\u0318\130\0\1\u0510\153\0\1\u0511\113\0\1\u0512"+ - "\74\0\1\127\10\0\6\136\1\0\2\136\1\u04ec\6\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\1\136\1\u0513\7\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\3\136\1\u0514\2\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u0515\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u0516\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\3\136\1\u0517\2\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\13\136\1\u0518\14\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\15\136\1\u0519\12\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u0242\11\136\1\u051a\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\2\136\1\u051b\6\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\7\136\1\u051c\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u051d\15\136\1\u051e\5\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u051f\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u0520\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u03e3\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u03ef\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\u0521\2\0\13\136\1\0\1\u0522\7\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u0523\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u0524\17\136\1\u0525\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0526\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u0525\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u0527\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\20\136\1\u0528\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u03a2\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\20\136\1\u0529\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u052a\20\136\1\u022f"+ - "\3\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\u052b\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u052c\2\136"+ - "\1\u052d\1\u0337\1\u052e\1\u052f\1\u0530\1\u0531\5\136\1\u0532"+ - "\1\136\1\u0533\1\u0534\1\u0535\4\136\1\u0536\1\127\2\0"+ - "\1\136\2\0\1\u0537\12\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\22\136\1\u022f\5\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u0538\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u0539\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\u053a"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u0364\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u053b\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u053c\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\u053d\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u03c6\1\136\1\u053e\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\12\136\1\u053b\15\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u03bf\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u053f\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u0540\17\136\1\u03ef\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\12\136\1\u033d\11\136\1\u02e9\3\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u0541\6\136"+ - "\1\u0542\15\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136"+ - "\1\u0543\17\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136"+ - "\1\u0544\6\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136"+ - "\1\u0545\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u0546\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u0547\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u022f\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u0548\21\136\1\u015f\1\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u0549\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u022f\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u04e9\1\136\1\u054a\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u054b\3\136\1\u054c"+ - "\20\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u054d"+ - "\11\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u054e"+ - "\11\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u054f"+ - "\7\136\1\u0550\16\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\7\136\1\u0551\10\136\1\u0552\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u0553\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\136\1\u0554\26\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u0555\1\0\1\u0556\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u0557\1\u0558\1\u0559\1\u055a\1\u055b"+ - "\1\u055c\1\u055d\1\u055e\1\u055f\1\u0560\1\u0561\3\136\1\u0562"+ - "\1\136\1\u0563\1\u0564\1\u0565\1\136\1\u0566\1\136\1\u0567"+ - "\1\u0568\1\127\2\0\1\136\2\0\1\u0569\12\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\27\136"+ - "\1\u056a\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u056b\27\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u056c\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u056d\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u0543\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\25\136\1\u056e\2\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\16\136\1\u056f\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\16\136\1\u0570\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u0571\23\136\1\127"+ - "\2\0\1\136\2\0\12\136\1\u0572\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0242\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0573\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u0574\1\136"+ - "\1\u01c1\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u03aa\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\u0575"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u03af\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136"+ - "\1\u03b2\16\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136"+ - "\1\u03b3\10\136\1\u0576\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u0570\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u0372\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\23\136\1\u0577\4\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u0578\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u04ec\11\136\1\u0579\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\136\1\u057a\22\136\1\u022f\3\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\11\136\1\u057b\16\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u057c\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u057d\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u057e\26\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\12\136\1\u022f\15\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u057f\13\136"+ - "\1\u0172\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136"+ - "\1\u038d\6\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u0580\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\1\u0581\12\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u022f"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\5\136\1\u0338"+ - "\22\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u0582\27\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u0583\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u0584\1\u0585\11\136"+ - "\1\u0586\5\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u0587\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\u0588"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u0589\1\136\1\u03ef\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u058a\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u058b\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u058c\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u058d\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u058e\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\u058f\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u0590\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u0372\20\136"+ - "\1\u022f\5\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\1\136\1\u0591"+ - "\6\136\1\127\10\0\6\136\1\0\11\136\1\0\1\u0592"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u0593\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\16\136\1\u0334\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u0594\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u0595\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\21\136\1\u0596\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u0540\27\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u0597\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\136\1\u0598\26\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\10\136\1\u0372\17\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0599\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u059a\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u059b\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u059c\27\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\27\136\1\u059d\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u059e\4\136\1\u059f\2\136\1\u05a0\11\136\1\u05a1"+ - "\5\136\1\127\2\0\1\136\2\0\1\u05a2\12\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u05a3\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136"+ - "\1\u05a4\5\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u05a5\2\136\1\u05a6\22\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u05a7\1\u05a8\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\21\136\1\u05a9\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u05aa\10\136\1\u0328\3\136\1\u05ab"+ - "\3\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u05ac"+ - "\20\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u05ad"+ - "\6\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u05ae"+ - "\17\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u05af"+ - "\20\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u05b0"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u02fd"+ - "\13\136\1\u022f\5\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u05b1\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\u05b2\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u05b3\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\25\136\1\u022f\2\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\27\136\1\u05b4\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u05b5\1\136\1\u0334"+ - "\7\136\1\u05b6\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\21\136\1\u05b7\6\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\u03a7\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u038d"+ - "\17\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u05b8"+ - "\11\136\1\u0540\1\u03a2\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u03ef\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u03a2\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u05b9\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u05ba\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u05bb\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u05bc\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\10\136\1\u0403\17\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u05bd\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u05be\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u049c\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u038b\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\1\u05bf"+ - "\7\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u0543"+ - "\27\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u05c0"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u05c1"+ - "\24\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u05c2"+ - "\24\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u05c3"+ - "\11\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u05c4"+ - "\21\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u049c"+ - "\26\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u036d"+ - "\11\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u05c5\3\136"+ - "\1\u05c6\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u05c7"+ - "\27\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\24\136\1\u02e9"+ - "\3\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u05c8"+ - "\6\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u05c9"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u05ca\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u036d\17\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u05cb\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u05cc"+ - "\1\u05cd\1\u05ce\1\136\1\u05cf\10\136\1\u05d0\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u0152\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\25\136\1\u05d1\2\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u05d2\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u05d3\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\136\1\u05d4\26\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\6\136\1\u05d5\1\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\22\136\1\u05d6\5\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\136\1\u05d7\26\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\25\136\1\u05d8\2\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u05d9\16\136\1\u022f"+ - "\2\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u05da\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\11\136\1\u05db\16\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u05dc\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u05dd\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u05de\10\136\1\u05df\16\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u05e0\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u05e1\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u05e2\1\136"+ - "\1\u05e3\1\u05e4\1\u05e5\1\u056e\1\136\1\u03b2\1\u05e6\1\u05e7"+ - "\4\136\1\u05e8\2\136\1\u05e9\4\136\1\u015f\1\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u05ea\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u05eb\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\1\136\1\u05ec\4\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u05ed\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u05ee\1\136\1\u05ef"+ - "\17\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u05f0\1\0\1\u053b"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u05f1"+ - "\1\136\1\u05f2\1\u05f3\1\136\1\u05f4\1\u05f5\1\u05f6\1\u05f7"+ - "\1\u05f8\1\u05f9\3\136\1\u057d\1\136\1\u05fa\1\u05fb\1\u05fc"+ - "\1\136\1\u05fd\2\136\1\u05fe\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u05ff\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u0600\1\u0152\22\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u0601\1\136\1\u0602\17\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\22\136\1\u0603\5\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u0604\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u05d6\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u053b\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\26\136\1\u0605\1\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u0606\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u0607\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u0608\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u0609\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\5\136\1\u060a\22\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u060b\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\6\136\1\u046f\1\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\1\u060c\12\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u060d"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u060e\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\11\136\1\u060f\16\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u0610\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u022f\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\25\136\1\u0611\2\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u0612\6\136\1\u01bb\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0613\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0614\4\136\1\u0615\20\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u033a\20\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\1\u0616\12\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u0617\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\27\136\1\u0618\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u0619\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u061a\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u061b\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u061c\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\136\1\u022f\26\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\u061d\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u061e\1\u061f\1\u0620\1\u0621"+ - "\1\u0622\1\u0623\1\u0624\1\u0625\1\u0626\1\u0627\1\u0628\3\136"+ - "\1\u0629\1\136\1\u062a\1\u062b\1\u062c\1\136\1\u062d\1\136"+ - "\1\u0567\1\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\1\u062e\7\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u062f\7\136\1\u04fa\1\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\136\1\u0630\3\136\1\u0631\3\136\1\u0632"+ - "\14\136\1\u0633\1\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u04fb\16\136\1\u0634\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u03ab\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u0635\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\12\136\1\u0354\15\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u0636\3\136\1\u0637\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u0638\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u0639\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u056b\20\136\1\u063a"+ - "\4\136\1\u0567\1\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\1\136"+ - "\1\u063b\6\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u063c\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u063d\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u063e\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u063f\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\12\136\1\u0640"+ - "\15\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136\1\u0641"+ - "\16\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u0642"+ - "\20\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u0643"+ - "\5\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u0644"+ - "\24\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u0645"+ - "\5\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u0646\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\5\136"+ - "\1\u0647\1\u0648\1\136\1\u0649\5\136\1\u0335\2\136\1\u064a"+ - "\6\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u0364"+ - "\5\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u03ef"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\u064b\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u064c\1\u064d"+ - "\1\136\1\u064e\1\u064f\1\u0650\1\u0651\1\136\1\u0652\1\u0653"+ - "\4\136\1\u0654\1\136\1\u0655\1\u0656\1\u0657\1\136\1\u0658"+ - "\3\136\1\127\2\0\1\136\2\0\1\u0659\12\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136"+ - "\1\u065a\16\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\1\u031b\5\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u065b\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\27\136"+ - "\1\u065c\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u065d"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u065e"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u01b8"+ - "\10\136\1\u065f\6\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u0660\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\7\136\1\u0661\20\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\27\136\1\u0540\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136"+ - "\1\u0662\16\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u0663\1\136\1\u0664\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\24\136\1\u05ff\3\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u0665\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\1\136"+ - "\1\u0152\7\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\11\136\1\u0666\16\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u0667\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\10\136\1\u0668\17\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u0669"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u066a"+ - "\27\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u066b"+ - "\11\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u066c\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u066d"+ - "\2\136\1\u066e\1\u066f\1\u0670\1\136\1\u0671\1\u0672\1\u0673"+ - "\4\136\1\u0674\2\136\1\u0675\1\u0676\4\136\1\u0677\1\127"+ - "\2\0\1\136\2\0\1\u0678\12\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u0679\6\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u067a\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u067b\1\u067c\1\u067d"+ - "\1\136\1\u067e\1\u01ce\1\136\1\u067f\1\u0680\10\136\1\u0681"+ - "\6\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0682"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0683"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u0684"+ - "\3\136\1\u0685\20\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u0686\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\21\136\1\u0687\6\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\5\136"+ - "\1\u0688\2\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\11\136\1\u03ef\16\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u0689"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u068a\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u068b\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u068c\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u068d\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u068e\5\136\1\u068f\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u0690\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u0691\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u053b\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u0412\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\21\136\1\u0692\6\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u0693\12\136\1\u0694\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\11\136\1\u022f\16\136"+ - "\1\127\2\0\1\136\2\0\1\u049c\12\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u0695"+ - "\11\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\23\136\1\u022f"+ - "\4\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0696"+ - "\5\136\1\u0697\5\136\1\u0698\7\136\1\u0699\1\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\11\136\1\u05a7\12\136\1\u069a"+ - "\3\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u069b"+ - "\17\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\u069c\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u069d\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\11\136\1\u069e\16\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u0391\16\136\1\u069f"+ - "\2\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u06a0\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\1\u06a1\12\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\1\136\1\u06a2\6\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u06a3\5\136\1\u0500\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u06a4\26\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u06a5\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u06a6\6\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u054b\3\136"+ - "\1\u06a7\2\136\1\u06a8\5\136\1\u06a9\6\136\1\u0262\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\u06aa\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u06ab\1\136\1\u06ac\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u05ee\11\136\1\u06ad"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u06ae\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\27\136\1\u06af\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\16\136\1\u06b0\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\u06b1\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u05f2\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u06b2\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\u06b3\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\136\1\u020f\26\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u06b4\27\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u061e\2\136\1\u06b5\1\u06b6\1\u06b7\10\136"+ - "\1\u06b8\1\136\1\u0361\1\u01d4\1\u06b9\5\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\136\1\u06ba\2\136\1\u06bb\1\u032e"+ - "\1\u0242\7\136\1\u0335\2\136\1\u03a9\1\136\1\u06bc\1\u06bd"+ - "\3\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u06be"+ - "\26\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u06bf"+ - "\24\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u06c0"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u06c1"+ - "\1\136\1\u06c2\4\136\1\u06c3\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u06c4\3\136\1\u06c5\15\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\20\136\1\u06c6\1\u06c7\6\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u022f\6\136"+ - "\1\u022f\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u06c8"+ - "\27\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u06c9"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u06ca\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u06cb\17\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u06cc\17\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u06cd\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u06ce\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u06cf\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\23\136\1\u06d0\4\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u06d1\20\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u06d2\6\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u0373\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\1\u06d3\7\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u06d4\27\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u06d5\1\u06d6\1\136\1\u06d7\1\u06d8\2\136"+ - "\1\u06d9\1\u06da\1\u06db\1\u06dc\5\136\1\u06dd\1\u06de\1\u06df"+ - "\5\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u06e0\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u06e1\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u06e2\17\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u06e3\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u03ae\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u06e4\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u06e5\27\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u06e6\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u06e7\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\11\136\1\u06e8\16\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\22\136\1\u06e9\5\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\1\136\1\u06ea\6\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u06eb\27\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u06ec\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u0334\5\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u06ed\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u06ee\6\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\1\u0328\7\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u06ef"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u06f0"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u06f1\27\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u02e9\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u0334\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u06f2\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u06f3\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u056f\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\127\1\0\11\127\1\0\1\u06f4\1\0\3\127"+ - "\1\0\2\127\14\0\31\127\2\0\1\127\2\0\13\127"+ - "\1\0\11\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136"+ - "\1\u06f5\6\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u06f6\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u06f7\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u06f8\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u06f9\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u06fa\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u06fb"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u06fc\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u06fd\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\22\136\1\u06fe\5\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\u06ff\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u0700\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u0701\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u0702"+ - "\5\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\27\136\1\u0703"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u0440\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0704\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\24\136\1\u0705\3\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u0706\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u0707\27\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u0708\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u0709\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u022f\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u070a\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u070b\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u070c\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\16\0\1\u070d\41\0"+ - "\1\u070d\135\0\1\u070e\144\0\1\u070f\136\0\1\u0710\136\0"+ - "\1\u0711\154\0\1\u04af\125\0\1\u0712\142\0\1\u0713\131\0"+ - "\1\u0714\155\0\1\u0715\120\0\1\u0716\153\0\1\u0717\131\0"+ - "\1\u0718\5\0\1\u0719\147\0\1\u071a\123\0\1\u071b\127\0"+ - "\1\u071c\144\0\1\u071d\134\0\1\u071e\143\0\1\u04a6\137\0"+ - "\1\u071f\140\0\1\u0720\61\0\3\357\1\u0721\2\357\1\0"+ - "\10\357\2\0\1\357\5\0\2\357\14\0\1\u0721\27\357"+ - "\3\0\1\357\2\0\13\357\1\0\10\357\11\0\6\357"+ - "\1\0\1\357\1\u0722\6\357\2\0\1\357\5\0\2\357"+ - "\14\0\7\357\1\u0722\20\357\3\0\1\357\2\0\13\357"+ - "\1\0\10\357\67\0\1\u0723\60\0\1\u0724\202\0\1\u04b9"+ - "\12\0\1\u0289\56\0\2\u0725\1\0\7\u04bb\1\0\10\u04bb"+ - "\2\u0725\1\u04bb\1\0\1\u0725\1\0\1\u04bb\1\u0725\2\u04bb"+ - "\2\u0725\1\0\2\u0725\1\0\5\u0725\1\0\30\u04bb\3\u0725"+ - "\1\u04bb\2\u0725\13\u04bb\1\0\10\u04bb\2\54\1\0\1\54"+ - "\1\0\2\54\2\0\6\54\1\0\26\54\1\0\20\54"+ - "\1\u0726\23\54\1\0\24\54\2\64\1\0\1\64\1\0"+ - "\2\64\2\0\4\64\1\u02b8\1\64\1\0\26\64\1\0"+ - "\20\64\1\u02b8\23\64\1\0\26\64\1\0\1\64\1\0"+ - "\2\64\2\0\6\64\1\0\26\64\1\0\34\64\1\u0296"+ - "\7\64\1\0\4\64\1\u0296\21\64\1\0\1\64\1\0"+ - "\2\64\2\0\6\64\1\0\26\64\1\0\25\64\2\u010a"+ - "\15\64\1\0\26\64\1\0\1\64\1\0\2\64\2\0"+ - "\3\64\1\u04cd\2\64\1\0\26\64\1\0\7\64\1\u04cd"+ - "\34\64\1\0\26\64\1\0\1\64\1\0\2\64\2\0"+ - "\1\64\1\u02b8\4\64\1\0\26\64\1\0\30\64\1\u02b8"+ - "\13\64\1\0\26\64\1\0\1\64\1\0\2\64\2\0"+ - "\1\64\1\u0296\4\64\1\0\26\64\1\0\30\64\1\u0296"+ - "\13\64\1\0\26\64\1\0\1\64\1\0\2\64\2\0"+ - "\6\64\1\0\26\64\1\0\15\64\1\u0727\6\64\1\u0727"+ - "\17\64\1\0\26\64\1\0\1\64\1\0\2\64\2\0"+ - "\2\64\1\u0728\3\64\1\0\26\64\1\0\12\64\1\u0728"+ - "\31\64\1\0\26\64\1\0\1\64\1\0\2\64\2\0"+ - "\6\64\1\0\2\64\1\u0729\23\64\1\0\13\64\1\u0729"+ - "\1\64\1\u04ca\6\64\1\u04ca\17\64\1\0\26\64\1\0"+ - "\1\64\1\0\2\64\2\0\6\64\1\0\21\64\1\u072a"+ - "\4\64\1\0\31\64\1\u072a\12\64\1\0\26\64\1\0"+ - "\1\64\1\0\2\64\2\0\6\64\1\0\26\64\1\0"+ - "\33\64\1\u0296\10\64\1\0\2\64\1\u0296\23\64\1\0"+ - "\1\64\1\0\2\64\2\0\6\64\1\0\26\64\1\0"+ - "\25\64\2\u072b\15\64\1\0\26\64\1\0\1\64\1\0"+ - "\2\64\2\0\6\64\1\0\26\64\1\0\15\64\1\u072c"+ - "\6\64\1\u072c\17\64\1\0\26\64\1\0\1\64\1\0"+ - "\2\64\2\0\6\64\1\0\26\64\1\0\25\64\2\u0139"+ - "\15\64\1\0\26\64\1\0\1\64\1\0\2\64\2\0"+ - "\5\64\1\u072d\1\0\26\64\1\0\11\64\1\u072d\32\64"+ - "\1\0\26\64\1\0\1\64\1\0\2\64\2\0\6\64"+ - "\1\0\26\64\1\0\34\64\1\u072e\7\64\1\0\4\64"+ - "\1\u072e\21\64\1\0\1\64\1\0\2\64\2\0\6\64"+ - "\1\0\26\64\1\0\27\64\1\u0121\14\64\1\0\1\64"+ - "\1\u0121\24\64\1\0\1\64\1\0\2\64\2\0\6\64"+ - "\1\0\12\64\1\u04ca\13\64\1\0\22\64\1\u04ca\21\64"+ - "\1\0\26\64\1\0\1\64\1\0\2\64\2\0\6\64"+ - "\1\0\26\64\1\0\14\64\1\u072f\6\64\1\u072f\20\64"+ - "\1\0\26\64\1\0\1\64\1\0\2\64\2\0\6\64"+ - "\1\0\26\64\1\0\27\64\1\u010a\14\64\1\0\1\64"+ - "\1\u010a\24\64\1\0\1\64\1\0\2\64\2\0\3\64"+ - "\1\u0730\2\64\1\0\26\64\1\0\7\64\1\u0730\34\64"+ - "\1\0\26\64\1\0\1\64\1\0\2\64\2\0\5\64"+ - "\1\u0731\1\0\1\64\1\u0732\24\64\1\0\10\64\1\u0733"+ - "\1\u0731\4\64\1\u0732\25\64\1\0\3\64\1\u0733\22\64"+ - "\1\0\1\64\1\0\2\64\2\0\6\64\1\0\2\64"+ - "\1\u0734\23\64\1\0\13\64\1\u0734\30\64\1\0\26\64"+ - "\1\0\1\64\1\0\2\64\2\0\6\64\1\0\21\64"+ - "\1\u0735\4\64\1\0\31\64\1\u0735\12\64\1\0\26\64"+ - "\1\0\1\64\1\0\2\64\2\0\2\64\1\u0296\3\64"+ - "\1\0\26\64\1\0\12\64\1\u0296\31\64\1\0\26\64"+ - "\1\0\1\64\1\0\2\64\2\0\6\64\1\0\26\64"+ - "\1\0\25\64\2\u0736\15\64\1\0\26\64\1\0\1\64"+ - "\1\0\2\64\2\0\1\64\1\u0105\4\64\1\0\26\64"+ - "\1\0\30\64\1\u0105\13\64\1\0\26\64\1\0\1\64"+ - "\1\0\2\64\2\0\6\64\1\0\2\64\1\u02b8\23\64"+ - "\1\0\13\64\1\u02b8\30\64\1\0\26\64\1\0\1\64"+ - "\1\0\2\64\2\0\6\64\1\0\2\64\1\u0737\23\64"+ - "\1\0\13\64\1\u0737\30\64\1\0\26\64\1\0\1\64"+ - "\1\0\2\64\2\0\6\64\1\0\26\64\1\0\15\64"+ - "\1\u0738\6\64\1\u0738\17\64\1\0\26\64\1\0\1\64"+ - "\1\0\2\64\2\0\3\64\1\u0739\2\64\1\0\26\64"+ - "\1\0\7\64\1\u0739\34\64\1\0\26\64\1\0\1\64"+ - "\1\0\2\64\2\0\6\64\1\0\12\64\1\u073a\13\64"+ - "\1\0\22\64\1\u073a\21\64\1\0\26\64\1\0\1\64"+ - "\1\0\2\64\2\0\6\64\1\0\2\64\1\u0121\23\64"+ - "\1\0\13\64\1\u0121\30\64\1\0\24\64\67\0\1\u073b"+ - "\63\0\1\u073c\45\0\1\u073c\145\0\1\u073d\50\0\1\127"+ - "\10\0\1\127\1\u073e\4\127\1\0\2\127\1\u073e\1\127"+ - "\4\u073e\1\127\1\0\1\127\1\0\3\127\1\0\1\127"+ - "\1\u073e\14\0\4\127\3\u073e\5\127\2\u073e\3\127\2\u073e"+ - "\4\127\1\u073e\1\127\2\0\1\127\2\0\10\127\1\u073e"+ - "\2\127\1\0\1\127\3\u073e\1\127\3\u073e\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\16\136\1\u073f\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\16\136\1\u03b5\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\17\136\1\u022f\10\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u0740\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u0741\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u0742\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u03c6\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u0743\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\1\u0744\12\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u059e\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u0745\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u0746\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0747\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u0748\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u04f7\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u0749\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u074a\27\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\12\136\1\u074b\15\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u0501\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u074c\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u074d\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u074e\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\26\136\1\u02e6\1\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u074f\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\u0750\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u02e6\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136"+ - "\1\u0751\26\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136"+ - "\1\u030a\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u0180\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\25\136"+ - "\1\u0152\2\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u0752\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\67\0\1\u0753\137\0\1\u0754\63\0\1\u0755\45\0"+ - "\1\u0755\66\0\1\u0756\202\0\1\u050c\12\0\1\u0313\56\0"+ - "\2\u0757\1\0\7\u050e\1\0\10\u050e\2\u0757\1\u050e\1\0"+ - "\1\u0757\1\0\1\u050e\1\u0757\2\u050e\2\u0757\1\0\2\u0757"+ - "\1\0\5\u0757\1\0\30\u050e\3\u0757\1\u050e\2\u0757\13\u050e"+ - "\1\0\10\u050e\13\0\1\u0758\45\0\1\u0758\66\0\1\u0759"+ - "\202\0\1\u0510\12\0\1\u0318\56\0\2\u075a\1\0\7\u0512"+ - "\1\0\10\u0512\2\u075a\1\u0512\1\0\1\u075a\1\0\1\u0512"+ - "\1\u075a\2\u0512\2\u075a\1\0\2\u075a\1\0\5\u075a\1\0"+ - "\30\u0512\3\u075a\1\u0512\2\u075a\13\u0512\1\0\10\u0512\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\15\136\1\u075b\12\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\2\136\1\u075c\3\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u075d\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u075e\17\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\1\136\1\u075f\7\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\17\136\1\u0760\10\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\2\136\1\u0761\10\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u0762\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\5\136\1\u0763\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u0325\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u0574\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0574\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u0764\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u0765\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u045a\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u0766\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u0334\27\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\136\1\u0767\26\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u0768\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\21\136\1\u03a2\6\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0152\1\u03dd\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u06b4\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u0769\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u076a\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u076b\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\11\136\1\u076c\16\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\16\136\1\u076d\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u076e\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u076f\6\136\1\u0770\20\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u0771\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0"; - - private static final String ZZ_TRANS_PACKED_1 = - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u053c\17\136\1\u0772\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\u0773\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0774\15\136\1\u0775\1\u0776"+ - "\6\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\u0777\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u049c"+ - "\21\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\27\136\1\u0778"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u0779\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u0540\17\136\1\u077a"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u077b"+ - "\10\136\1\u077c\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u077d\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\u03ef\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u077e"+ - "\21\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u077f"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136\1\u022f"+ - "\16\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u03a2"+ - "\11\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136\1\u0780"+ - "\16\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\24\136\1\u0781"+ - "\3\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\24\136\1\u0782"+ - "\3\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u022f"+ - "\24\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u0783\27\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u0784\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u0372\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u0785\4\136\1\u0786"+ - "\16\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u0772"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u0787"+ - "\1\136\1\u0788\2\136\1\u0789\1\136\1\u057e\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u078a\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u078b\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u078c\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0782\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\u078d\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\26\136\1\u078e\1\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u078f\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u0790\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u0791\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u0742\13\136\1\u0792\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u0793\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u0794\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u0795\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u0796\2\136\1\u0797\1\u0798\1\136\1\u0799"+ - "\1\u079a\1\u079b\1\u079c\1\u079d\3\136\1\u079e\1\136\1\u079f"+ - "\1\u07a0\1\u07a1\1\136\1\u07a2\2\136\1\u07a3\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u07a4\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u07a5\13\136\1\u07a6\5\136"+ - "\1\u07a7\3\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u07a8\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u07a9"+ - "\3\136\1\u0538\16\136\1\u01b3\4\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\u07aa\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u07ab\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u07ac\6\136\1\u06f1\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\u07ad\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u07ae\27\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u07af\4\136\1\u07b0\20\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u07b1\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u07b2\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u07b3\1\136\1\u07b4"+ - "\1\136\1\u07b5\5\136\1\u07b6\15\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u07b7\1\u07b8\1\136\1\u07b9\11\136"+ - "\1\u07ba\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u07bb\13\136\1\u07bc\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u07bd\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\11\136\1\u03ef\16\136\1\127\2\0\1\136\2\0"+ - "\1\u07be\12\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u0471\1\u07bf\6\136\1\u07c0\15\136"+ - "\1\127\2\0\1\136\2\0\1\u0334\12\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u07c1"+ - "\1\136\1\u0543\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u0471\1\136\1\u07c2\16\136\1\u07c3\4\136\1\127"+ - "\2\0\1\u07c4\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u07c5\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\u07c6\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u07c7\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u07c8\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u07c9\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u07ca\1\u07cb\1\136\1\u07cc\1\136\1\u05a7\1\u07cd"+ - "\1\u07ce\1\u07cf\1\u07d0\1\u07d1\3\136\1\u07d2\1\136\1\u0540"+ - "\1\u07d3\1\u07d4\1\136\1\u0483\3\136\1\127\2\0\1\u07d5"+ - "\2\0\13\136\1\0\4\136\1\u07d6\3\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u0471\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\21\136\1\u07d7\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\5\136\1\u07d8\22\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u07d9\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\1\u01d7\12\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u0334\21\136\1\127\2\0"+ - "\1\136\2\0\1\u07da\12\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\21\136\1\u05aa\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u07db\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\24\136\1\u07dc\3\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u07dd\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u07de\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\21\136\1\u0357\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\136\1\u07df\26\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u07e0\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\22\136\1\u07e1\5\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u06d4\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u03ef\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u07e2\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u07e3\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u07e4\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\24\136\1\u022f\3\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u07e5\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u07e6\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\11\136\1\u07e7\16\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u049c\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u07e8\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\136\1\u07e9\3\136\1\u0338"+ - "\1\136\1\u07ea\12\136\1\u0388\5\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\u07eb\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\7\136\1\u07ec\20\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u07ed\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u07ee\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\24\136\1\u07ef\3\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\22\136\1\u07f0\5\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\26\136\1\u07f1\1\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u07f2\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u07f3\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u07f4\2\136\1\u045a\10\136\1\u0361\1\u01d4\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\22\136\1\u07d2\5\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u0195\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\11\136\1\u07f5\16\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\1\u07f6\7\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0612\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\27\136\1\u032d\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\20\136\1\u07f7\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u07f8\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u07f9\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u07fa\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u07fb\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u059e\27\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\11\136\1\u07fc\16\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u07fd\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u07fe\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\5\136\1\u0152\22\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u07ff\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\1\u016d\12\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u0800\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\12\136\1\u0180\15\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\23\136\1\u0152\4\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u0801\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u0802\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u06a9\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u0803\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\u0543\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u0792"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\6\136\1\u022f\1\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\24\136\1\u0804"+ - "\3\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u0805\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u0806\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u0807\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136"+ - "\1\u0808\5\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u0809\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u080a\1\u0558\1\u05f2\3\136\1\u056e\1\136\1\u080b\1\u080c"+ - "\6\136\1\u080d\1\u056e\2\136\1\u056e\3\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\10\136\1\u080e\10\136\1\u080f\6\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u0579\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u0810\1\136"+ - "\1\u0811\1\u0812\1\u0813\1\u0814\1\u0815\1\u0816\1\u0817\4\136"+ - "\1\u0818\2\136\1\u0819\1\u06b9\1\136\1\u081a\3\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\1\u081b\7\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u081c\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u051f\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\21\136\1\u081d\6\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\12\136\1\u081e\15\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u081f\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\25\136\1\u0820\2\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u01c1\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\10\136\1\u022f\10\136\1\u0821\6\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u0822\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u036f\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u02ff\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u0823\20\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u0824\6\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0825\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u0826\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u0827\3\136"+ - "\1\u0828\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\12\136"+ - "\1\u022f\15\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\1\136\1\u022f\6\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\23\136\1\u0829\4\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\136\1\u082a\26\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u082b\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u082c\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\12\136\1\u082d\15\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u082e\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\136\1\u082f\2\136\1\u0830\3\136\1\u0831\10\136\1\u0832"+ - "\1\u0833\4\136\1\u0834\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u064e\12\136\1\u0835\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u0836\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\u0837\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u0242\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u0838\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u0774\4\136\1\u0839\2\136\1\u02e7\15\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u083a\7\136"+ - "\1\u083b\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u083c\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u083d\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u083e\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136"+ - "\1\u083f\5\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\5\136\1\u022f\3\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\11\136\1\u022f\16\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\12\136\1\u0840\15\136\1\127\2\0\1\u03bf\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\1\136\1\u0841\6\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\u0842\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136"+ - "\1\u0843\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\26\136"+ - "\1\u0844\1\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u0845\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u0846"+ - "\1\u07d7\1\u0486\5\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u0847\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\7\136\1\u0848\20\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\7\136\1\u0849\20\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u01c1\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u07f9\2\136\1\u084a\4\136\1\u084b\1\u06f2\16\136\1\127"+ - "\2\0\1\136\2\0\1\u084c\12\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u084d\1\u084e"+ - "\16\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u022f"+ - "\14\136\1\u084f\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u0850\3\136\1\u06f1\4\136\1\u0851\7\136\1\u0852\6\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u0853\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0540\6\136"+ - "\1\u049c\16\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u0471\15\136\1\u07db\6\136\1\u0854\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u0855\12\136\1\u0856\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u0857\1\136\1\u0858"+ - "\1\136\1\u0540\5\136\1\u0242\3\136\1\u053b\3\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u0859\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u0176\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u085a\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u085b\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u085c\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u085d\1\136\1\u085e\1\136\1\u085f"+ - "\1\u0860\1\u0861\1\u0862\6\136\1\u0863\1\136\1\u0432\1\u0864"+ - "\2\136\1\u0865\3\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u0866\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\23\136\1\u01b3\4\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u0867\5\136\1\u0868\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u0869\14\136\1\u086a\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u086b\16\136\1\u0838\6\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u086c\3\136\1\u086d"+ - "\13\136\1\u086e\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\11\136\1\u086f\16\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u0870\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u03ef\3\136\1\u07bb\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\26\136\1\u0871\1\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u0872\10\136\1\u0873\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u0874\3\136\1\u07c1\13\136\1\u0875"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u0876"+ - "\21\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\u07c6\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u0877"+ - "\11\136\1\u0878\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u0879\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\21\136\1\u087a\6\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\24\136\1\u087b\3\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u087c\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u087d\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u057e"+ - "\1\136\1\u087e\2\136\1\u087f\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u0880\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u057e\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u0881\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u0882\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u0883\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\5\136\1\u0364\22\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u0884\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u0885\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\136\1\u0886\1\136\1\u0887\2\136\1\u0888\2\136\1\u0889"+ - "\10\136\1\u088a\5\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\11\136\1\u088b\16\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\1\u088c\12\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136"+ - "\1\u06a8\5\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u088d\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u088e\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\24\136"+ - "\1\u088f\3\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u0890\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u03fa\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\23\136"+ - "\1\u088e\4\136\1\127\2\0\1\u088e\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136"+ - "\1\u0891\1\u0892\1\u0893\1\u0894\1\u0895\1\u0896\1\u0897\1\u0898"+ - "\1\u0899\4\136\1\u089a\1\136\1\u089b\1\u089c\1\u089d\1\136"+ - "\1\u089e\1\136\1\u089f\1\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\u08a0\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u08a1\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u08a2\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u06f1\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u08a3"+ - "\27\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136\1\u08a4"+ - "\4\136\1\u08a5\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u08a6\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u08a7\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u0440\1\u08a8\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u08a9\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u08aa\4\136\1\u08ab\5\136\1\u08ac\11\136"+ - "\1\127\2\0\1\u0645\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u08ad\2\136\1\u08ae"+ - "\1\u08af\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\5\136"+ - "\1\u08b0\22\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u08b1\11\136\1\u08b2\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u08b3\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\u08b4\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u0772\5\136\1\u08b5\11\136\1\u0328\1\u08b6\6\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u06b4\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u08b7\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\11\136\1\u0664\16\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u08b8\1\u08b9\10\136\1\u08ba"+ - "\3\136\1\u08bb\3\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u08bc\22\136\1\u036b\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u08bd\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\u08be\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u08bf\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u08c0\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u08c1\27\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u08c2\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u08c3\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u08c4\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u08c5\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u08c6\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u08c7\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u08c8\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u08c9\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u036b\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u08ca\6\136\1\u08cb"+ - "\1\u08cc\10\136\1\u08cd\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u08ce\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\1\u08cf\12\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\u08d0\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u08d1"+ - "\20\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u08d2"+ - "\11\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u08d3\1\u08d4"+ - "\1\u08d5\1\u08d6\1\u08d7\1\u08d8\1\u08d9\1\u08da\1\u08db\1\u08dc"+ - "\4\136\1\u08dd\1\136\1\u08de\1\u08df\1\u06b9\1\136\1\u08e0"+ - "\2\136\1\u08e1\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136"+ - "\1\u08e2\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u08e3\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u08e4\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u08e5\3\136\1\u08e6\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u08e7\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u08e8\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u07bf\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u08e9\12\136\1\u08ea\6\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u08eb\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u08ec\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u08ed\27\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\12\136\1\u08ee\15\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u08ef\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u08f0\3\136\1\u01a3\5\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u08f1\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u08f2\16\136\1\u08f3"+ - "\5\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u08f4"+ - "\24\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u08f5"+ - "\24\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u03a9"+ - "\1\136\1\u08f6\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u08f7\20\136\1\u08b6\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u08f8\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\u08f9\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\27\136\1\u08fa\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\7\136\1\u03b3\1\136\1\u022f\1\u08fb\5\136\1\u08fc\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u08fd\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u08fe\13\136"+ - "\1\u08ff\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u0900\11\136\1\u0901\5\136\1\u022f\1\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\12\136\1\u0349\15\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u0902\27\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u0903\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u0904\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u0335\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u0905\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\5\136\1\u0906\22\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u0907\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\10\136\1\u0908\17\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u0909\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u090a\27\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u090b\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u0426\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u090c\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\u090d\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136"+ - "\1\u090e\1\136\1\u090f\1\u0910\1\u0911\1\136\1\u0912\1\136"+ - "\1\u0913\4\136\1\u0914\1\136\1\u0361\1\u0915\1\u0349\4\136"+ - "\1\u07da\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0916"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\5\136\1\u0223"+ - "\22\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u0917"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u0615"+ - "\1\u0918\11\136\1\u0388\5\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u0919\2\136\1\u091a\1\u066f\1\u091b\1\136\1\u091c"+ - "\1\u091d\1\u091e\4\136\1\u091f\2\136\1\u0920\1\u0921\4\136"+ - "\1\u0922\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u0923"+ - "\11\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0924"+ - "\13\136\1\u0925\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u0926\24\136\1\127\2\0\1\u0927\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u0928\1\u0929\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u092a\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u092b\1\136\1\u092c\1\136\1\u092d\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u092e\1\u092f"+ - "\20\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\u0930\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0931"+ - "\2\136\1\u092f\20\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u0932\1\u0933\10\136\1\u0934\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0935\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u0936\27\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u0937\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u0938\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u0939\3\136\1\u093a\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\21\136\1\u093b\2\136\1\u093c\3\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u093d\23\136"+ - "\1\127\2\0\1\136\2\0\12\136\1\u093e\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u093f\27\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u0940\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u0941\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u0942\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u0943\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\21\136\1\u0944\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u0945\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u086a\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u0946\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0947\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\25\136\1\u0948\2\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\1\136\1\u022f\6\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u056b\1\136\1\u0949\2\136\1\u094a"+ - "\14\136\1\u094b\5\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u094c"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u094d\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u094e\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136"+ - "\1\u094f\17\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u0950\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u0951\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\25\136"+ - "\1\u0952\2\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136"+ - "\1\u0953\5\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\25\136"+ - "\1\u0954\2\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u0955\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136"+ - "\1\u0956\26\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u0957\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u074f"+ - "\3\136\1\u086a\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u0958\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u0959\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u095a\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u03ef\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u095b\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u095c"+ - "\17\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u095d"+ - "\24\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u095e\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u095f\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\5\136\1\u0960"+ - "\22\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0961"+ - "\1\u0484\1\136\1\u0962\2\136\1\u0963\7\136\1\u0361\1\u01d4"+ - "\6\136\1\127\2\0\1\136\2\0\1\u01d7\12\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136"+ - "\1\u0964\11\136\1\u0965\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u06f2\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u0966\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\136\1\u0967\26\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u0968\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u0969\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u096a\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u08c1\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u03ef\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\136\1\u096b\26\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u096c\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u096d"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\5\136"+ - "\1\u096e\22\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136"+ - "\1\u096f\17\136\1\u0970\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u0971\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u0972\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\24\136\1\u0973\3\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u0974\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\24\136\1\u0975\3\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\10\136\1\u03ef\17\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u0976\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\u0977\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u0978\3\136"+ - "\1\u05bd\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u0979\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u08bc\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u097a\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u097b\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136"+ - "\1\u097c\16\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u097d\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u097e\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u056e"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u097f\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u05f2\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u0980\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u0384\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u06c2\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136"+ - "\1\u0981\16\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u0982\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u0983\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u0984\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136"+ - "\1\u0985\6\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u0986\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136"+ - "\1\u0987\1\136\1\u0988\4\136\1\u0989\17\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\10\136\1\u098a\17\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\12\136\1\u098b\15\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u098c\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\23\136\1\u098d\4\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u098e\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0349\6\136\1\u098f\16\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\11\136\1\u0990\16\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u0991\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u0992\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u0993\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\24\136\1\u0372\3\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\16\136\1\u0994\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u0995\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u0996\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u0997\12\136\1\u0998"+ - "\11\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u0999\5\136"+ - "\1\u099a\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\u099b"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u099c\1\136\1\u099d\4\136\1\u099e\16\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u099f\2\136\1\u09a0\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u09a1\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u09a2\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u09a3\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u09a4\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u06b6\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\u015f\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u09a5\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\21\136\1\u09a6\6\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u09a7\15\136\1\u09a8\5\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u09a9\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u080e\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\22\136\1\u09aa\5\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\24\136\1\u09ab\3\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u09ac\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u09ad\1\136\1\u07bf\4\136"+ - "\1\u09ae\7\136\1\u09af\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\12\136\1\u06a8\15\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u09b0\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u09b1\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u057d\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\2\136\1\u09b2\5\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\27\136\1\u022f\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u0364\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\1\u09b3\12\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\24\136\1\u053b\3\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\26\136\1\u022f\1\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u0334\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u09b4\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\1\127\1\u09b5"+ - "\4\127\1\0\2\127\1\u09b5\1\127\4\u09b5\1\127\1\0"+ - "\1\127\1\0\3\127\1\0\1\127\1\u09b5\14\0\4\127"+ - "\3\u09b5\5\127\2\u09b5\3\127\2\u09b5\4\127\1\u09b5\1\127"+ - "\2\0\1\127\2\0\10\127\1\u09b5\2\127\1\0\1\127"+ - "\3\u09b5\1\127\3\u09b5\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u09b6\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u09b7\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\u09b8\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u09b9\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u09ba\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\12\136\1\u09bb\15\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u09bc\2\136"+ - "\1\u09bd\3\136\1\u09be\1\u09bf\16\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\11\136\1\u09c0\16\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u09c1\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\1\u09c2"+ - "\12\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u09c3\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\11\136\1\u09c4\16\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u0484\1\u09c5\13\136\1\u0361\1\u01d4\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u09c6\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u09c7\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u09c8\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u09c9\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u09ca\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u081d\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u09cb\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u09cc"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\u09cd"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136"+ - "\1\u09ce\3\136\1\u09cf\22\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\4\136\1\u09d0\3\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\23\136\1\u09d1\4\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u09d2\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\20\0\1\u09d3\60\0"+ - "\1\u09d3\117\0\1\u09d4\136\0\1\u071a\142\0\1\u09d5\133\0"+ - "\1\u09d6\165\0\1\u09d7\112\0\1\u09d8\145\0\1\u0718\103\0"+ - "\1\u09d9\163\0\1\u09da\164\0\1\u071c\114\0\1\u09db\136\0"+ - "\1\u071c\142\0\1\u09dc\106\0\1\u09dd\207\0\1\u09db\135\0"+ - "\1\u09de\116\0\1\u09df\157\0\1\u09e0\52\0\4\357\1\u09e1"+ - "\1\357\1\0\10\357\2\0\1\357\5\0\2\357\14\0"+ - "\11\357\1\u09e1\16\357\3\0\1\357\2\0\13\357\1\0"+ - "\10\357\11\0\6\357\1\0\2\357\1\u09e2\5\357\2\0"+ - "\1\357\5\0\2\357\14\0\4\357\1\u09e2\23\357\3\0"+ - "\1\357\2\0\13\357\1\0\10\357\10\0\1\u04bb\127\0"+ - "\2\64\1\0\1\64\1\0\2\64\2\0\1\111\5\64"+ - "\1\0\26\64\1\0\17\64\1\111\24\64\1\0\26\64"+ - "\1\0\1\64\1\0\2\64\2\0\6\64\1\0\26\64"+ - "\1\0\27\64\1\u09e3\14\64\1\0\1\64\1\u09e3\24\64"+ - "\1\0\1\64\1\0\2\64\2\0\6\64\1\0\26\64"+ - "\1\0\25\64\2\u02b8\15\64\1\0\26\64\1\0\1\64"+ - "\1\0\2\64\2\0\6\64\1\0\2\64\1\u09e4\23\64"+ - "\1\0\13\64\1\u09e4\30\64\1\0\26\64\1\0\1\64"+ - "\1\0\2\64\2\0\5\64\1\u09e5\1\0\26\64\1\0"+ - "\11\64\1\u09e5\32\64\1\0\26\64\1\0\1\64\1\0"+ - "\2\64\2\0\2\64\1\u09e6\3\64\1\0\26\64\1\0"+ - "\12\64\1\u09e6\31\64\1\0\26\64\1\0\1\64\1\0"+ - "\2\64\2\0\1\u09e7\5\64\1\0\26\64\1\0\17\64"+ - "\1\u09e7\24\64\1\0\26\64\1\0\1\64\1\0\2\64"+ - "\2\0\6\64\1\0\26\64\1\0\44\64\1\0\5\64"+ - "\1\u09e8\6\64\1\u09e8\11\64\1\0\1\64\1\0\2\64"+ - "\2\0\6\64\1\0\26\64\1\0\27\64\1\u0729\14\64"+ - "\1\0\1\64\1\u0729\24\64\1\0\1\64\1\0\2\64"+ - "\2\0\6\64\1\0\1\64\1\u0727\24\64\1\0\16\64"+ - "\1\u0727\25\64\1\0\26\64\1\0\1\64\1\0\2\64"+ - "\2\0\6\64\1\0\2\64\1\u09e9\23\64\1\0\13\64"+ - "\1\u09e9\30\64\1\0\26\64\1\0\1\64\1\0\2\64"+ - "\2\0\3\64\1\u012f\2\64\1\0\26\64\1\0\7\64"+ - "\1\u012f\34\64\1\0\26\64\1\0\1\64\1\0\2\64"+ - "\2\0\2\64\1\u09ea\3\64\1\0\26\64\1\0\12\64"+ - "\1\u09ea\31\64\1\0\26\64\1\0\1\64\1\0\2\64"+ - "\2\0\1\u04d8\5\64\1\0\26\64\1\0\17\64\1\u04d8"+ - "\24\64\1\0\26\64\1\0\1\64\1\0\2\64\2\0"+ - "\6\64\1\0\1\u02b7\25\64\1\0\32\64\1\u02b7\11\64"+ - "\1\0\26\64\1\0\1\64\1\0\2\64\2\0\1\u0727"+ - "\5\64\1\0\26\64\1\0\17\64\1\u0727\24\64\1\0"+ - "\26\64\1\0\1\64\1\0\2\64\2\0\6\64\1\0"+ - "\26\64\1\0\33\64\1\u09eb\10\64\1\0\2\64\1\u09eb"+ - "\23\64\1\0\1\64\1\0\2\64\2\0\1\64\1\u09ec"+ - "\4\64\1\0\26\64\1\0\30\64\1\u09ec\13\64\1\0"+ - "\26\64\1\0\1\64\1\0\2\64\2\0\6\64\1\0"+ - "\2\64\1\u0296\23\64\1\0\13\64\1\u0296\30\64\1\0"+ - "\24\64\14\0\1\u09ed\41\0\1\u09ed\61\0\1\127\10\0"+ - "\1\127\1\u09ee\4\127\1\0\2\127\1\u09ee\1\127\4\u09ee"+ - "\1\127\1\0\1\127\1\0\3\127\1\0\1\127\1\u09ee"+ - "\14\0\4\127\3\u09ee\5\127\2\u09ee\3\127\2\u09ee\4\127"+ - "\1\u09ee\1\127\2\0\1\127\2\0\10\127\1\u09ee\2\127"+ - "\1\0\1\127\3\u09ee\1\127\3\u09ee\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u0393\27\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\5\136\1\u09ef\22\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u09f0\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\24\136\1\u09f1\3\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u09f2\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u05a5\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\22\136\1\u02e1\5\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u09f3\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\7\136\1\u05a3\20\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u09f4\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\21\136\1\u0152\6\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u09f5\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\21\136\1\u09f6\6\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\3\136\1\u086a\2\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\14\136\1\u09f7\13\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\136\1\u02e6\26\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u09f8\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u03c6\20\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\136\1\u02f3\26\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u09f9\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\14\0\1\u09fa\41\0\1\u09fa"+ - "\71\0\1\u050e\143\0\1\u09fb\41\0\1\u09fb\71\0\1\u0512"+ - "\127\0\1\127\10\0\1\u09fc\5\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u09fd\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u09fe\2\136"+ - "\1\u09ff\1\136\1\u0a00\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u0774\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\2\136"+ - "\1\u075c\6\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\1\136\1\u0a01\4\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\2\136"+ - "\1\u0a02\6\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u0a03\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\7\136\1\u0a04"+ - "\3\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u0924\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u0a05\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u0a06\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u0a07\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\25\136\1\u0a08\2\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\22\136\1\u07db\5\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u0a09\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u0a0a\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\7\136\1\u0a0b\20\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u0a0c\2\136\1\u02d9\22\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u0a0d\1\136\1\u0a0e\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u0372\6\136\1\u03b5"+ - "\11\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u03a9"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u0a0f"+ - "\24\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\27\136\1\u0a10"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u0a11\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u0a12\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u0a13\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u02e9\14\136"+ - "\1\u0a14\3\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\4\136\1\u08d2"+ - "\3\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136"+ - "\1\u0a15\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\u0a16"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u0a17\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u02e9\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u0a18\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\22\136\1\u0a19\5\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\21\136\1\u0a1a\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\11\136\1\u0a1b\16\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u080a\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\24\136\1\u0684\3\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u0a19\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u0a1c\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\24\136\1\u0a1d\3\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u0a1e\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u0a1f\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u0a20\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u0a21\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\5\136\1\u0a22\10\136\1\u0a23"+ - "\11\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136\1\u0a24"+ - "\4\136\1\u0a25\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u0a26\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\22\136\1\u0a27\5\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u0a28"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u0a29"+ - "\27\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u0a2a\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u0a2b"+ - "\1\u0a2c\1\u0a2d\1\u0a2e\1\u0a2f\1\u0a30\1\u0a31\1\u0a32\1\u0a33"+ - "\1\u0a34\7\136\1\u0a35\1\u0a36\5\136\1\127\2\0\1\u0a37"+ - "\2\0\1\u08cf\12\136\1\0\1\136\1\u063b\2\136\1\u0a38"+ - "\3\136\1\127\10\0\6\136\1\0\11\136\1\0\1\u0a39"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136"+ - "\1\u0a3a\1\u0a3b\1\u0a3c\1\u0a3d\1\u0a3e\1\u0a3f\1\u0a40\1\u0a41"+ - "\1\u0a11\1\u0a42\3\136\1\u0a43\1\136\1\u0361\1\u0a44\1\u0a45"+ - "\1\136\1\u0a46\2\136\1\u0a47\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\1\u0a48\6\136\1\u0a49\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\22\136\1\u0372\5\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0a4a\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u0a4b\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u0498\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u0a4c\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u0a4d\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u0a4e\20\136\1\127\2\0\1\u0a4f"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u0a50\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u0a51\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u0a52\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u0a53\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u0a54\1\136\1\u0a55\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\20\136\1\u0a56\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\27\136\1\u0a57\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\u0a58\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\5\136\1\u0a59\1\136\1\u0a5a\10\136"+ - "\1\u0a5b\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u0a5c\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u0a5d\1\136\1\u0a5e\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u0a5f\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\11\136\1\u0a60\16\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u0a61\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u0a62\1\136\1\u0792\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u0a63\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u0a64\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\24\136\1\u0a65\3\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\10\136\1\u0a66\17\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u0a67\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0a68\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u0a69\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u0a6a\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u06d4\1\136\1\u0a6b\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u0a6c\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u0a6d\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\27\136\1\u0a6e\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\12\136\1\u0372\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u0575\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u0a6f\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u0a70\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u0a71\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u0a72\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u0a73\16\136\1\u0a74\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u0a75\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u0a76\27\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\10\136\1\u0a77\17\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\24\136\1\u0a78\3\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u0871\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\21\136\1\u022f\6\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u0a79\27\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\11\136\1\u0a7a\16\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u0a7b\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\u0522\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u080a\1\u0522\7\136\1\u0522\16\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u0540\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u0a7c\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\5\136\1\u0a7d\22\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\22\136\1\u0a7a\5\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\5\136\1\u0349\22\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\5\136\1\u056e\22\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\16\136\1\u0a7e\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\21\136\1\u0a7f\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u0a80\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\16\136\1\u0334\3\136\1\u0334"+ - "\4\136\1\u07db\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u0a81\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\u06ed"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u03bb"+ - "\1\136\1\u0a82\1\136\1\u0a83\14\136\1\u0a84\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\1\u0a85\7\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u0a86\1\u0a87"+ - "\13\136\1\u0a88\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u0a89\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u03fa\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\7\136\1\u0a8a\10\136\1\u0582\3\136\1\u053b\3\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u0a8b\27\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u0540\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u0a8c\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u0576\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u0357\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\10\136\1\u080e\10\136\1\u022f\6\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u0384\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u022f\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\11\136\1\u0a8d\16\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u0a8e\1\u0a8f\1\136\1\u0a90"+ - "\1\u0a91\1\136\1\u0a92\1\u0a93\1\u0a94\1\u0a95\7\136\1\u0a96"+ - "\1\u0a97\5\136\1\127\2\0\1\136\2\0\1\u0a98\12\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u0a99\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u0a9a\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u0582\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u0a9b\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\22\136\1\u0a9c\5\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u0a9d"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u0a9e\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u0a9f\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u0aa0\14\136\1\u08b6\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\1\u062e\7\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u0a7a\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u0aa1\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\12\136"+ - "\1\u0373\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u0aa2\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u0aa3\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u0aa4\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u0aa5\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\21\136\1\u0aa6\6\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u0aa7\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u0aa8\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u0aa9\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\22\136\1\u0aaa\5\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u0a27\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u0aab\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u0aac\2\136\1\u0aad\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\u0aae\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\u086a\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u0aaf\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u056b"+ - "\20\136\1\u05aa\6\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u06b5\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u07f9"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u0ab0\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u0ab1\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u0ab2"+ - "\27\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0ab3"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u03b1"+ - "\24\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u0ab4"+ - "\6\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u0ab5"+ - "\6\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u0ab6\1\136"+ - "\1\u0ab7\1\u0ab8\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\10\136\1\u0ab9\11\136\1\u02e1\5\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u0aba\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\136\1\u0abb\14\136\1\u0abc\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u0abd\27\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u083d\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u0abe\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\136\1\u0abf\2\136\1\u06b6\4\136\1\u0ac0\16\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\16\136\1\u05aa\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u07b3\27\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u0ac1\1\u07b8\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\1\u07be\12\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\10\136\1\u06f1\17\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0ac2\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u036b\1\136\1\u0ac3\15\136"+ - "\1\u01bb\3\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\u0645\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u057e\7\136"+ - "\1\u0ac4\16\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136"+ - "\1\u0ac5\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u0ac6\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u0ac7"+ - "\3\136\1\u0ac8\3\136\1\u0ac9\12\136\1\u0aca\4\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\u03ef\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u0821\21\136\1\127"+ - "\2\0\1\136\2\0\1\u0334\12\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u045a\17\136"+ - "\1\u0acb\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u03b3"+ - "\2\136\1\u0acc\5\136\1\u0408\1\136\1\u0a64\5\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\22\136\1\u0acd\2\136\1\u01bb"+ - "\2\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\u069a\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\22\136\1\u0ace\5\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\12\136\1\u0521\15\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u0acf\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u0242\1\136"+ - "\1\u0ad0\17\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\26\136"+ - "\1\u015f\1\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u0361\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u01c1\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u0ad1\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u0ad2"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u0ad3"+ - "\26\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u057e"+ - "\6\136\1\u057e\17\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\27\136\1\u0ad4\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136"+ - "\1\u0541\5\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u0ad5\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u0ad6"+ - "\11\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0ad7"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\1\136\1\u0ad8\6\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0ad9"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u0ada"+ - "\5\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0adb"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u0659"+ - "\6\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0adc"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u0add"+ - "\2\136\1\u0ade\1\u0adf\10\136\1\u0ae0\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\u0ae1\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u0ae2\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u0ae3\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u0495\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u05ce\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u0ae4\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u0ae5\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u0839\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u07d5\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u0ae6\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u0ae7\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u0ae8\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u0ae9\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u0aea\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u053b\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\11\136\1\u0aeb\16\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u0471\1\136\1\u0aec\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u0aed\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\u0aee\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\136\1\u0aef\1\u0af0\1\u0af1\1\u0af2\1\u0af3"+ - "\1\u047e\1\u045a\1\u0af4\1\u0af5\4\136\1\u0af6\2\136\1\u0af7"+ - "\1\u0af8\1\136\1\u0af9\2\136\1\u07da\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\7\136\1\u0afa\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\11\136\1\u0afb\16\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u0afc\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u0afd\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0afe\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0aff\13\136\1\u0b00\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\11\136\1\u099e\1\u0b01"+ - "\15\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u0b02"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0540"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u0b03\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136"+ - "\1\u083a\7\136\1\u07db\1\u0b04\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\u0b05\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u0471\4\136\1\u0b06\15\136\1\u022f"+ - "\2\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136\1\u0851"+ - "\16\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u07db"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\12\136\1\u0540"+ - "\15\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\24\136\1\u0b07"+ - "\3\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u03a2"+ - "\24\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0b08"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u0857"+ - "\15\136\1\u053b\3\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\10\136\1\u0b09\17\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\11\136\1\u049c\16\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u0b0a\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136"+ - "\1\u0b0b\6\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\5\136"+ - "\1\u0b0c\22\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u0b0d\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u0b0e"+ - "\27\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u0b0f"+ - "\24\136\1\127\2\0\1\u0b10\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u0b11\27\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0b12\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u0b13\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u0b14\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u0a5b\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u0b15\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u0b16\5\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u0b17\26\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0b18\25\136"+ - "\1\127\2\0\1\136\2\0\1\u0b19\12\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u0b1a"+ - "\21\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u03ef"+ - "\11\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0b1b"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u0b1c"+ - "\11\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\5\136\1\u0b1d"+ - "\22\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u06ee"+ - "\6\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u0b1e"+ - "\21\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u0b1f"+ - "\24\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0540"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u08c5"+ - "\21\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u07d5"+ - "\10\136\1\u0b20\3\136\1\u0b21\3\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\24\136\1\u0b22\3\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\1\u049c"+ - "\12\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u0b23\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u0b24\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\u0b25\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136"+ - "\1\u080b\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u0b26\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u0b27\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u0b28"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u0b29"+ - "\20\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0b2a"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u0b2b"+ - "\6\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u0b2c\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\5\136\1\u0b2d\22\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u0b2e\20\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u022f\1\136\1\u0335"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u0b2f\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u0a0e\17\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0b30\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0b31\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0b32\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u0b30\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0b32\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u0b33\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u0b34\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u0b35\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u0349\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u0b36\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\24\136\1\u0b37\3\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u0b38\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u0b39\1\u0b3a\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0b3b\13\136\1\u0b3c\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u0b3d\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u0b3e\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u0b3f\1\u0b40"+ - "\5\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u0b41"+ - "\11\136\1\u0b42\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u0b43\1\136\1\u0b44\5\136\1\u0b45\6\136\1\u06ee"+ - "\6\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\u0b46\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0b47"+ - "\2\136\1\u0b48\10\136\1\u0b49\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u0b4a\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u0b4b\5\136\1\u0b4c\4\136\1\u0b4d"+ - "\11\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u0b4e"+ - "\20\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0b4f"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\u0b50\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u0901"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u0b51\27\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0b52\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0b53\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0b54\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u0b55\6\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u0357\5\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0b56\1\136"+ - "\1\u0b57\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136"+ - "\1\u0b58\17\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u0b59\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u0b5a\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136"+ - "\1\u0b5b\17\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u0b5c\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136"+ - "\1\u0b5d\6\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136"+ - "\1\u0b5e\5\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u0b5f\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u0b60\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u0b61\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\5\136"+ - "\1\u0b62\22\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136"+ - "\1\u0b63\17\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u0b64\1\0"+ - "\1\u0b65\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u0b66\2\136\1\u0b67\1\u09a7\13\136\1\u0361\1\u0b68\6\136"+ - "\1\127\2\0\1\136\2\0\1\u01d7\12\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0b69"+ - "\4\136\1\u08d2\6\136\1\u0b6a\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u0b6b\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u0b6c\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u0408\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\24\136\1\u0b6d\3\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u0b6e\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u0b6f\17\136\1\u038b\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\11\136\1\u0b70\4\136\1\u0b71\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u0b72\5\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u0b73\20\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0b74\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0495\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u0540\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0b75"+ - "\1\u022f\22\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136"+ - "\1\u0b76\1\136\1\u0b77\4\136\1\u0b78\13\136\1\u0b79\3\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\1\u0b7a\7\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\u022f\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u0372\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\20\136\1\u0b7b\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\136\1\u0b7c\1\u0b7d\13\136"+ - "\1\u0b7e\1\136\1\u0361\1\u01d4\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u07db\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u0b7f\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u0b80\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u0b81\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\25\136\1\u0b82\2\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\12\136\1\u0b83\15\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u0b84\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u0b85\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u0b86\3\136\1\u0b87\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\12\136\1\u0b88\15\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u0b89\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\27\136\1\u06f0\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u0b8a\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u0b8b\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u06a9\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u0b8c\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u0b8d\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u0b39\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u0b8e\13\136\1\u0b3c\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u0b8f\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u0b90\27\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u0b91\1\u0b92\16\136\1\u0b93\5\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u0b94\17\136\1\u0b95"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0b96"+ - "\1\136\1\u0b97\1\136\1\u0b98\3\136\1\u0b99\6\136\1\u06ee"+ - "\3\136\1\u08dd\2\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\7\136\1\u0b9a\20\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u0b9b\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\11\136\1\u0b9c\16\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\u0b9d\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u0b9e\6\136\1\u0b9f\10\136\1\u0ba0\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u0ba1\11\136\1\u0ba2\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0ba3\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u0ba4\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u0ba5\23\136\1\u0ba6"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0ba7\15\136"+ - "\1\u0ba8\5\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u0ba9\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136"+ - "\1\u0baa\16\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u0bab\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\26\136"+ - "\1\u0bac\1\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u0bad\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\12\136"+ - "\1\u0bae\15\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u0baf\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u0bb0\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\27\136"+ - "\1\u0bb1\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u0bb2\27\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u0bb3\20\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\5\136\1\u0349\2\136"+ - "\1\u0bb4\10\136\1\u0bb5\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u0bb6\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u0bb7\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u0417\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u0bb8\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u0bb9\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u0bba\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\11\136\1\u0bbb\16\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\1\u0945\12\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u0bbc\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\4\136\1\u0bbd"+ - "\3\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u0bbe"+ - "\5\136\1\u0bbf\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u0bc0\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\24\136\1\u0bc1\3\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\7\136\1\u0bc2\20\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\21\136\1\u0bc3\6\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\11\136\1\u0522\16\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\22\136\1\u0bc4\5\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u0bc5"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u0bc6\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u098d\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u0764\4\136\1\u0bc7\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u057d\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u0bc8\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\11\136\1\u09ef\16\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u0bc9\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u0bca\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u0bcb"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u05f2\13\136\1\u057d\7\136\1\u0844\1\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0bcc\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0bcd\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u0bce\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u0bcf\24\136\1\127\2\0"+ - "\1\u0645\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0bd0\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u0bd1\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u0a1e\1\u092f\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\u0bd2\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u03b3\10\136\1\u0bd3\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u0bd4\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\16\136\1\u07db\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u0bd5\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\16\136\1\u0bd6\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u0924\13\136\1\u0bce"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u0bd7\2\136"+ - "\1\u0bd8\1\u0bd9\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u0bda\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u0bdb\1\136\1\u0bdc\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u0bdd\12\136\1\u08b6\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\u0bde\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u0bdf\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u0932\1\u03b3\10\136"+ - "\1\u0be0\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u0be1\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u0be2"+ - "\27\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0be3"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u0be4"+ - "\17\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u0386"+ - "\20\136\1\127\2\0\1\136\2\0\1\u0387\12\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u07d5\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u0be5\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u0be6\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u0be7\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136"+ - "\1\u0be8\4\136\1\u0be9\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u0bea\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u0beb\1\u0bec\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\26\136\1\u0bed\1\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u038b\4\136\1\u0bee\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\20\136\1\u0bef\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\24\136\1\u0bf0\3\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\1\u0bf1\12\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u0bf2\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u0bf3\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u0bf4\14\136\1\u0bf5\3\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\5\136\1\u0bf6\22\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u0bf7\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u0bf8\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\136\1\u0bf9\1\u0bfa\1\u0bfb"+ - "\1\u0bfc\1\u0bfd\1\u0bfe\1\u0bff\1\u0c00\1\u0c01\4\136\1\u0c02"+ - "\2\136\1\u0c03\1\u0c04\4\136\1\u0c05\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u0c06\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u06f2\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u0c07\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\11\136\1\u0c08\16\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u0c09\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\12\136\1\u0c0a\15\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\22\136\1\u0c0b\5\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\22\136\1\u0c0c\5\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u0c0d\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u0328\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u0c0e\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u0c0f\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u0c10\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u0b0a\1\u0c11\2\136\1\u0c12\3\136\1\u0c13\10\136\1\u0c14"+ - "\2\136\1\u0c15\1\136\1\u0567\1\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u0c16\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u0c17\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u0c18\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u0c19\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u0c1a\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\u0c1b\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u0c1c\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136"+ - "\1\u0c1d\17\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u0c1e\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\25\136\1\u0c1f\2\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\7\136\1\u0615\12\136\1\u0388\5\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u080a\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u05aa\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u0c20\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u0c21\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u03b2\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u049c\17\136\1\u0ac4\1\136\1\u0c22"+ - "\5\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u0c23"+ - "\6\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0c24"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u0c25\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u086a\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u0c26\6\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u0c27\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u0b0a\1\136\1\u0c28"+ - "\1\u0c29\2\136\1\u0c2a\1\u0c2b\1\u0c2c\5\136\1\u08dd\2\136"+ - "\1\u0c2d\1\u0c2e\3\136\1\u0c2f\1\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u0c30\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u0c31\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\5\136\1\u0338\10\136\1\u05aa\3\136\1\u0c32\1\136"+ - "\1\u0c33\3\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u0c34\2\136\1\u0c35\22\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u0c36\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u03a0\15\136\1\u0c37\6\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\21\136\1\u0c38\6\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u03a9\1\136\1\u03aa\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u0c39\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\u0c3a\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u0c3b\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u0c3c\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u0c3d\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u0c3e\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u02e6\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u0c3f\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\136\1\u0c40\26\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u0c41\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u035f\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u0c42\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u0c43\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\12\136\1\u0c44\15\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u081f\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u0c45\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u0c46\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\24\136\1\u0c47\3\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u0c48\20\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\11\136\1\u0c49\16\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u0c4a\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u0c4b\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\u0c4c\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u0c4d\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u0c4e\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u0c4f\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u036f"+ - "\5\136\1\u0a21\17\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\u0c50\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\10\136\1\u0c51\14\136\1\u0c52\2\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\21\136\1\u0c53\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"; - - private static final String ZZ_TRANS_PACKED_2 = - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u0c54\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\12\136\1\u0c55\15\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\22\136\1\u0c56\5\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\23\136\1\u0c57\4\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\21\136\1\u0c58\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u0c59\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u0880\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u0c5a\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u0c5b\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u0c5c\1\136\1\u0c5d\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u0c5e\27\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u0c5f\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u0c60\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u0c61\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\u052b\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0c62"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0c63"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u0c64\1\136"+ - "\1\u0c65\1\u0c66\1\u0c67\1\u0c68\1\u0c69\1\u0c6a\1\u0c6b\1\u0820"+ - "\4\136\1\u0c6c\1\136\1\u0361\1\u0c6d\1\u0c6e\5\136\1\127"+ - "\2\0\1\136\2\0\1\u0c6f\12\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\23\136\1\u0c70\4\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u0c71\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u0c72\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u01a9\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\136\1\u0c73\26\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u0c74\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\21\136\1\u0c75\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u0c76\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\16\136\1\u0c77\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\27\136\1\u0c78\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u0c79\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u0c7a\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u069a\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0c7b\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u0c7c\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0c7d\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0c7e\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u0c7f\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0c80\16\136\1\u0c75\6\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u0c81\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u0c82\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\u0c83"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\u06f0\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u0c84\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u0c85\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u0c86\1\u0764\5\136\1\u09ae\16\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0c87\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u0c88\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u0c89\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0c8a\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\21\136\1\u0c8b\6\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\3\136\1\u051c\4\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\24\136\1\u01d5\3\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\10\136\1\u084d\5\136\1\u0349\1\136"+ - "\1\u0540\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\1\127\1\u0c8c\4\127\1\0\2\127"+ - "\1\u0c8c\1\127\4\u0c8c\1\127\1\0\1\127\1\0\3\127"+ - "\1\0\1\127\1\u0c8c\14\0\4\127\3\u0c8c\5\127\2\u0c8c"+ - "\3\127\2\u0c8c\4\127\1\u0c8c\1\127\2\0\1\127\2\0"+ - "\10\127\1\u0c8c\2\127\1\0\1\127\3\u0c8c\1\127\3\u0c8c"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\u0792\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u0c8d\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\10\136\1\u0c8e\17\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\136\1\u0c13\2\136\1\u0c8f\1\u0c90"+ - "\2\136\1\u0c91\1\u0c92\7\136\1\u0c93\5\136\1\u0c94\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u081f\11\136\1\u0c95"+ - "\11\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u0c96\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0c97\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u0c98\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0c99\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u0c9a\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u0c9b\6\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0c9c\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u0c9d\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u0c9e\1\136"+ - "\1\u0c9f\1\u0ca0\10\136\1\u0ca1\5\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u0ca2\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u0ca3\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u08cb\16\136\1\u0567\1\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\136\1\u0ca4\26\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\22\136\1\u0ca5\1\136\1\u0ca6\3\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0c90\1\136"+ - "\1\u0a05\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u0521\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136"+ - "\1\u0ca7\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u051d\2\136\1\u0ca8\12\136\1\u051e\5\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u0631\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u0ca9\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u0caa\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\u0cab\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0cac\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u0cad\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0cae\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\21\0\1\u0caf\43\0"+ - "\1\u0caf\140\0\1\u0cb0\147\0\1\u0cb1\123\0\1\u04af\142\0"+ - "\1\u0cb2\153\0\1\u071c\124\0\1\u071c\155\0\1\u0cb3\64\0"+ - "\1\u0cb4\167\0\1\u071c\143\0\1\u0cb5\10\0\1\u0cb6\1\u0cb7"+ - "\143\0\1\u0cb2\114\0\1\u0cb2\140\0\1\u0cb8\67\0\5\357"+ - "\1\u0cb9\1\0\10\357\2\0\1\357\5\0\2\357\14\0"+ - "\2\357\1\u0cb9\25\357\3\0\1\357\2\0\13\357\1\0"+ - "\10\357\2\64\1\0\1\64\1\0\2\64\2\0\6\64"+ - "\1\0\12\64\1\u0293\13\64\1\0\22\64\1\u0293\21\64"+ - "\1\0\26\64\1\0\1\64\1\0\2\64\2\0\6\64"+ - "\1\0\20\64\1\111\5\64\1\0\42\64\1\111\1\64"+ - "\1\0\26\64\1\0\1\64\1\0\2\64\2\0\6\64"+ - "\1\0\2\64\1\u0cba\23\64\1\0\13\64\1\u0cba\30\64"+ - "\1\0\26\64\1\0\1\64\1\0\2\64\2\0\6\64"+ - "\1\0\2\64\1\u02bc\23\64\1\0\13\64\1\u02bc\30\64"+ - "\1\0\26\64\1\0\1\64\1\0\2\64\2\0\6\64"+ - "\1\0\26\64\1\0\27\64\1\377\14\64\1\0\1\64"+ - "\1\377\24\64\1\0\1\64\1\0\2\64\2\0\6\64"+ - "\1\0\12\64\1\u0cbb\13\64\1\0\22\64\1\u0cbb\21\64"+ - "\1\0\26\64\1\0\1\64\1\0\2\64\2\0\6\64"+ - "\1\0\26\64\1\0\33\64\1\u0cbc\10\64\1\0\2\64"+ - "\1\u0cbc\23\64\1\0\1\64\1\0\2\64\2\0\3\64"+ - "\1\u0139\2\64\1\0\26\64\1\0\7\64\1\u0139\34\64"+ - "\1\0\26\64\1\0\1\64\1\0\2\64\2\0\6\64"+ - "\1\0\2\64\1\u0727\23\64\1\0\13\64\1\u0727\30\64"+ - "\1\0\26\64\1\0\1\64\1\0\2\64\2\0\6\64"+ - "\1\0\26\64\1\0\27\64\1\u02c0\14\64\1\0\1\64"+ - "\1\u02c0\22\64\15\0\1\u0cbd\51\0\1\u0cbd\50\0\1\127"+ - "\10\0\1\127\1\136\4\127\1\0\2\127\1\136\1\127"+ - "\4\136\1\127\1\0\1\127\1\0\3\127\1\0\1\127"+ - "\1\136\14\0\4\127\3\136\5\127\2\136\3\127\2\136"+ - "\4\127\1\136\1\127\2\0\1\127\2\0\10\127\1\136"+ - "\2\127\1\0\1\127\3\136\1\127\3\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u0cbe\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\21\136\1\u02e3\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u0cbf\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u0cc0\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\20\136\1\u0cc1\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\21\136\1\u03c6\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\20\136\1\u0cc2\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u0cc3\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u0770\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\u02e6\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u04f7\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\15\0\1\u0cc4\51\0\1\u0cc4"+ - "\65\0\1\u0cc5\51\0\1\u0cc5\50\0\1\127\10\0\1\u075c"+ - "\5\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u0152\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\23\136\1\u0cc6\4\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\u07ad\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u0cc7\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\5\136\1\u0cc8\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\1\u0cc9\5\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0cca\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\1\136\1\u0ccb\11\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u0926\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\4\136\1\u0334\3\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u0ccc\17\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u080a\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u0ccd\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u0cce\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u0ccf\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0cd0\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u022f\12\136\1\u0a19\5\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u0cd1\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u0440\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u0cd2\6\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u0772\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\11\136\1\u0cd3\16\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u0cd4\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u0cd5\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u0a19\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\27\136\1\u0364\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u0cd6\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0cd7\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u0a16\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\u0783\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u0cd8\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u0cd9\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\27\136\1\u0cda\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u038b\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u0cdb\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\10\136\1\u0cdc\17\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u0871\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u0cdd\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u0cde\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u0585\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u0cdf\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u0ce0"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u0ce1\12\136\1\u0ce2\1\u0ce3\4\136\1\u0ce4"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0ce5\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u0ce6\6\136"+ - "\1\u0ce7\13\136\1\u0ce8\3\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\5\136\1\u0440\22\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u0ce9\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u0cea\5\136\1\u0ceb\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u01c1\5\136\1\u0cec\13\136\1\u0ced"+ - "\5\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0cee"+ - "\1\u0cef\17\136\1\u0cc6\4\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u0cf0\13\136\1\u0b3c\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u0cf1\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u0cf2\1\136\1\u0cf3\15\136\1\u0cf4"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u07bf"+ - "\3\136\1\u0cf5\6\136\1\u0cf6\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u0cf7\5\136\1\u0cf8\11\136\1\u0cf9\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0cfa\1\136"+ - "\1\u0cfb\1\136\1\u0cfc\14\136\1\u022f\4\136\1\127\2\0"+ - "\1\u022f\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u0cfd\1\136\1\u0cfe\5\136"+ - "\1\u03fa\1\136\1\u0cff\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u0d00\6\136\1\u0d01\5\136\1\u0d02\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0d03\1\136"+ - "\1\u0d04\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\27\136"+ - "\1\u0582\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136\1\u07d2"+ - "\16\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u0334\1\136"+ - "\1\u0d05\13\136\1\u0d06\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u0d07\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u0d08\11\136\1\u0d09\15\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u0d0a\1\u0d0b\22\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u0d0c\24\136\1\127\2\0"+ - "\1\u0d0d\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0d0e\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u0d0f\1\136\1\u0d10\16\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u0d11\5\136\1\u0d12"+ - "\1\136\1\u0d13\17\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\u0d14\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u0d15\1\136\1\u0d16\13\136\1\u0328\1\u0d17\6\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0d18\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u0d19\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u0d1a\3\136\1\u0d1b\2\136"+ - "\1\u0d1c\15\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u0d1d\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u0d1e"+ - "\5\136\1\u0d1f\1\136\1\u0d20\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u0d21\5\136\1\u0d22\11\136\1\u0d23\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\11\136\1\u0d24\16\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\27\136\1\u069a\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u0d25\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u05aa\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u0d26\1\u0d27"+ - "\1\u0d28\1\u0d29\1\u0d2a\1\u0d2b\1\136\1\u0d2c\1\u0d2d\4\136"+ - "\1\u0d2e\2\136\1\u0d2f\1\u0d30\1\136\1\u0d31\2\136\1\u0d32"+ - "\1\127\2\0\1\136\2\0\1\u0d33\12\136\1\0\1\u062e"+ - "\7\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136"+ - "\1\u0d34\6\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136"+ - "\1\u0d35\17\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\1\u0d36\7\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u0d37\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u0d38\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u0d39\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u0d3a\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u0d3b\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u0d3c\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\24\136\1\u0d3d\3\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u0d3e\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\22\136\1\u0ab2\5\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\4\136"+ - "\1\u0d3f\3\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u0d40\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\136\1\u0d41\26\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u0d42\5\136\1\u0d43\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u0d44\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\5\136\1\u0d45\13\136\1\u0d46\6\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0d47\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\136\1\u0d48\26\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u0d49\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u0d4a\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u0d4b\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0d4c\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\136\1\u0d4d\26\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\u053b\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u0d4e\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u0d4f\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\22\136\1\u0d50\5\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\24\136\1\u0d51\3\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u0664\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u0d52\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u0d53\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\12\136\1\u0d54\15\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u0d55\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u0d56\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\26\136\1\u0d57\1\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\11\136\1\u0d58\16\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u0d59\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\24\136\1\u07db\3\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\12\136\1\u0447\15\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\25\136\1\u0d5a\2\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u0838\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136"+ - "\1\u0d5b\26\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u0d5c\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u0d5d\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136"+ - "\1\u0d5e\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u038d\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\12\136"+ - "\1\u01d5\15\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136"+ - "\1\u0ae4\17\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\5\136"+ - "\1\u0d5f\22\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u03ef"+ - "\1\136\1\u081f\23\136\1\u0b58\1\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\22\136\1\u0d60\5\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u0d61\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\136\1\u0d62\26\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u081f\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u0a49\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u0d63\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u0d64\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u0d65\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u0d66\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\11\136\1\u0387\16\136\1\127\2\0\1\136"+ - "\2\0\1\u0d67\12\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\24\136\1\u0d68\3\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u0a49\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\26\136\1\u0d69\1\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\21\136\1\u0d6a\6\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u0d6b\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\10\136\1\u0d6c\17\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0d6d\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0d6e\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u0d6f\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\21\136\1\u0d70\6\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u0d71\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0d72\1\136\1\u0d73\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u0d74\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u0d75\10\136"+ - "\1\u0d76\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u0d77"+ - "\27\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u0d78"+ - "\21\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u0d79"+ - "\21\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u0d7a"+ - "\24\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\24\136\1\u0d7b"+ - "\3\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u0d7c\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u0d7d\14\136"+ - "\1\u057d\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136"+ - "\1\u0d7e\16\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u0d7f\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136"+ - "\1\u0d80\17\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\u0d81\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u0d82\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u0b36\26\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u0d83\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u0d84\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u0d85\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u0d86\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u0d87\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u0d88\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u0d89\12\136\1\u0ae7\6\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0d8a\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u0d8b\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u0d8c\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0d8d\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u0d8e\3\136"+ - "\1\u0615\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u0d8f\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u0516\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136"+ - "\1\u0d90\17\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u07db\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u0d91\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u06a7"+ - "\20\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\1\136\1\u0d92\6\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\24\136\1\u0d93"+ - "\3\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u0d94"+ - "\3\136\1\u0d95\15\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u0d96\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u0d97\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\12\136"+ - "\1\u0d98\15\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u0d99\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\u0d9a"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u0d9b\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u035f\10\136"+ - "\1\u0596\6\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u0d9c\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\u0d9c"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u0d9d\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0d9e\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\1\u0d9f\12\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\u03ef\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u0da0\20\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\136\1\u0262\26\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u0372\25\136\1\127\2\0\1\136"+ - "\2\0\12\136\1\u0372\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0da1\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u0da2\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\10\136\1\u0da3\17\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u0da4\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\22\136\1\u0388\1\136\1\u01d5\3\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u0582\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u0da5\27\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u0da6\1\136\1\u0da7\1\u0da8"+ - "\11\136\1\u0533\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u0da9\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u0daa\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\24\136"+ - "\1\u0bf5\3\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u0dab\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\u0dac"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u0dad\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u0dae\2\136\1\u0daf"+ - "\1\136\1\u0db0\2\136\1\u0db1\1\u0db2\7\136\1\u0db3\1\u0db4"+ - "\1\136\1\u0db5\1\u0db6\1\u0db7\1\136\1\127\2\0\1\136"+ - "\2\0\1\u0db8\12\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0db9\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u0dba\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u0dbb\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u0dbc\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u0dbd\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\21\136\1\u0ae7\1\u0dbe\5\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0dbf\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0dc0\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u0dc1\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u0dc2\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\u053c\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u0dc3\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\24\136\1\u0dc4\3\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u0dc5\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\24\136\1\u0dc6\3\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u0585\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\10\136\1\u0dc7\17\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\12\136\1\u0dc8\15\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\12\136\1\u0dc9\15\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\10\136\1\u0dca\17\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\11\136\1\u05da\16\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\24\136\1\u0dcb\3\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\11\136\1\u0dcc\4\136\1\u0dcd\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\21\136\1\u0dce\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u0dcf\20\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u0dd0\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u0dd1\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\2\136\1\u0dd2\5\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u0dd3\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u0dd4\24\136\1\127\2\0\1\u0dd5"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u0dd6\2\136\1\u0dd7\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0dd8\1\136\1\u0dd9\1\136"+ - "\1\u0dda\11\136\1\u0328\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u0ddb\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u0ddc\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u03b3\10\136\1\u0ddd\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u08bc\11\136\1\u0dde\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u0ddf\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\7\136\1\u0de0\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u0de1\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u0de2\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u0de3\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u0de4\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\u0de5"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\11\136\1\u0de6\16\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u0de7\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\u03e8\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u0de8\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u0de9\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\10\136\1\u083a\17\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\11\136\1\u0dea\16\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u0deb\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u0dec"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\24\136\1\u0ded\3\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u0856\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u0dee\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u069a\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\12\136\1\u0def\15\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\22\136\1\u06b4\5\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u0df0\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\24\136\1\u0df1\3\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u0df2\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u0df3\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u0df4\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u0df5\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u0df6\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\24\136\1\u0df7\3\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\136\1\u0464\26\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u0df8\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\12\136\1\u0b1d\15\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u0349\3\136\1\u022f\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\21\136\1\u0df9\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\24\136\1\u0ab2\3\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u0dfa\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u0dfb\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u0dfc\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\21\136\1\u0a11\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u0dfd\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\25\136\1\u0dfe\2\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\24\136\1\u0dff\3\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u0e00\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\136\1\u0e01\26\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\25\136\1\u0e02\2\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u0769\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u0e03\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u090f\1\u0e04\1\u0e05\1\u0624\1\136\1\u0e06"+ - "\5\136\1\u0e07\2\136\1\u0e08\1\u0e09\5\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\1\u062e\7\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\16\136\1\u0e0a\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\20\136\1\u0e0b\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u0e0c\14\136\1\u0e0d"+ - "\3\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\1\u0e0e\7\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\1\u062e\7\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u0cda\27\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u0e0f\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0812\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0d41\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\24\136\1\u0e10\3\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0e11\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u0484\4\136\1\u080b\7\136"+ - "\1\u0361\1\u01d4\1\u06b9\5\136\1\127\2\0\1\136\2\0"+ - "\1\u01d7\12\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u0e12\20\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u0e13\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\26\136\1\u0e14\1\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u0522\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u0e15\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u0e16\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\u0e17\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\24\136\1\u0e18"+ - "\3\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0357"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u0e19"+ - "\5\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u0e1a"+ - "\11\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0e1b"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u0e1c"+ - "\5\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\27\136\1\u0e1d"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u0e1e\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u0e1f\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0e20\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u0e21\11\136"+ - "\1\u0e22\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136"+ - "\1\u0e23\17\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u0e24\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u0e25\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136"+ - "\1\u0e26\1\u0e27\1\u0e28\16\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\u0e29\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u0e2a\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u0e2b\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136"+ - "\1\u0e2c\6\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u0e2d\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\5\136"+ - "\1\u0e2e\22\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136"+ - "\1\u0e2f\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u0e30\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u0e31\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136"+ - "\1\u0e32\26\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u0e33\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u08a8"+ - "\24\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u0e34"+ - "\17\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0328"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u0e35\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136"+ - "\1\u0e36\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136"+ - "\1\u0372\6\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\u0e37"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u0e38\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u0e39\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u0e3a\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u0e3b\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u0e3c\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\21\136\1\u0e3d\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u0e3e\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u0e3f\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\u0b65\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u0b66\1\136\1\u035c\1\u0e40"+ - "\1\u09a7\3\136\1\u035f\7\136\1\u0361\1\u0b68\6\136\1\127"+ - "\2\0\1\136\2\0\1\u01d7\12\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u03f4\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\24\136\1\u0c83\3\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0e41\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u0e42\3\136"+ - "\1\u03b3\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u0e43\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\21\136\1\u0e44\6\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\22\136\1\u0880\5\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u0e45"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u0e46\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u0e47\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u0903\1\136\1\u0e48\22\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\21\136\1\u0e49\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u0e4a\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\23\136\1\u0e4b\4\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u0e4c\7\136\1\u0b58\1\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u0e4d\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u0543\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u0e4e\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u0e4f\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u03e3\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u0e50\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\11\136\1\u099e\16\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u0e51\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\u0e52\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\u0e53\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u0e54\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u0e55\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u0b5a\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u0b0a"+ - "\10\136\1\u0e56\7\136\1\u0e57\4\136\1\u0567\1\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u080a\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u022f\17\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u0e58\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u0e59\7\136\1\u084d"+ - "\17\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u0e5a\27\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u0e5b\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u0e5c\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\136\1\u0e5d\26\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u0e5e\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\11\136\1\u0e5f\16\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u0e60\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\22\136\1\u0e61\5\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\u036b\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u0e62\1\u0e63\1\u0e64\1\136"+ - "\1\u0e65\3\136\1\u0e66\10\136\1\u0e67\2\136\1\u0e68\1\u0e69"+ - "\2\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u0e6a"+ - "\2\136\1\u0812\1\u0e6b\1\u0e6c\1\136\1\u0e6d\17\136\1\127"+ - "\2\0\1\136\2\0\1\u0e6e\12\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u0e6f\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u0e70\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u0cdc\10\136\1\u03ef"+ - "\6\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u0e71"+ - "\5\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0e72"+ - "\4\136\1\u0e73\6\136\1\u0e74\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u0e75\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\21\136\1\u0e76\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\22\136\1\u0e77\5\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u0e78\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u0e79\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u0e7a\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u0e7b\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\26\136\1\u0372\1\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u0e7c\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u0e7d\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\1\u022f"+ - "\12\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u0e7e\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u0ba2\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u0e7f\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u053b\17\136\1\u0e80\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u0e81\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\25\136\1\u0e82\2\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\26\136\1\u0e78\1\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\136\1\u0e83\26\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\136\1\u0e84\26\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u0e85\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\u0e86\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u0e87\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\u0e88\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0390"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0e89"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u0e8a"+ - "\17\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0e8b"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u0e8c\27\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0e8d\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u0e8e\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u0e8f\20\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u0e90\20\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u0525\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0e91\14\136"+ - "\1\u0e92\1\u0da0\5\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u0e93\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\u0e94\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u0335\1\u0e95\2\136\1\u0e96\1\136\1\u0e97\1\u0e98"+ - "\6\136\1\u0e99\1\u0e9a\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u0e9b\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u0945\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u0e9c\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u0e9d\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u0c10\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\11\136\1\u0e9e\16\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u0e9f\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u0ea0\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u0ea1\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u0ea2\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\24\136\1\u0440\3\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u0ea3\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\u0ea4\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\27\136\1\u0ea5\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u0ea6\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\12\136"+ - "\1\u0ea7\15\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\1\u07db\12\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u0ea8\27\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0196\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u0354\26\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u0ea9\22\136"+ - "\1\u0eaa\1\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\u0eab"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\5\136"+ - "\1\u0eac\1\136\1\u0ead\1\u0eae\1\136\1\u0eaf\3\136\1\u0eb0"+ - "\2\136\1\u0eb1\1\u0eb2\1\136\1\u0eb3\1\136\1\u0567\1\u0eb4"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u0eb5\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u0eb6\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u0386\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u0eb7\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u0eb8\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\136\1\u0be8\26\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\24\136\1\u0eb9\3\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u0eba\14\136\1\u0ebb"+ - "\3\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\u0ebc\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u057e"+ - "\2\136\1\u06b6\3\136\1\u057e\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u0ebd\20\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u0ebe\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u0ebf\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u0ec0\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u0ec1\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\27\136\1\u0ec2\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u0ec3\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u0ec4\1\u0ec5\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u038b\4\136\1\u0ec6\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\24\136\1\u0ec7\3\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\1\u0ec8\12\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u063e\5\136\1\u0bf5\3\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\5\136\1\u0ec9\22\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u0eca\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0ecb\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u0ecc\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\21\136\1\u0ecd\6\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0ece\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\21\136\1\u0ecf\6\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u0ed0\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\22\136\1\u0ed1\5\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0ed2\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\11\136\1\u0ed3\16\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\26\136\1\u0ed4\1\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0ed5\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\10\136\1\u0ed6\17\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\136\1\u0585\26\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\21\136\1\u0ed7\6\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\21\136\1\u0ed8\1\u0ed9\5\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\21\136\1\u0eda\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u0edb\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\u0edc\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u0edd\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\24\136\1\u069a\3\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u0ede\27\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\22\136\1\u0edf\5\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0ee0\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0ee1\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u0ee2\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0ee3\13\136\1\u0bce\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u08f2\24\136"+ - "\1\127\2\0\1\u0ee4\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u0ee5\2\136\1\u0dd7"+ - "\1\u0ee6\13\136\1\u0ee7\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\u01d8\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u0ee8\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u0ee9\1\136\1\u0eea\4\136\1\u0eeb\16\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u0eec\15\136\1\u08b6\6\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u0bde\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0eed\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u0eee\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u0eef\10\136"+ - "\1\u0ef0\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u0ef1\11\136\1\u022f\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u0ef2\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\22\136\1\u0ef3\5\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u0ef4\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\7\136\1\u0ef5\20\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u0ef6"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u0ef7\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\23\136"+ - "\1\u093e\4\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u0ef8\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0ef9"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u049c"+ - "\21\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\27\136\1\u0efa"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u0efb\5\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0efc\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u0efd\24\136"+ - "\1\127\2\0\1\u0645\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0efe\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u03b3\10\136"+ - "\1\u0eff\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\u0f00"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u0f01\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0f02"+ - "\1\136\1\u0f03\1\136\1\u0f04\2\136\1\u0f05\7\136\1\u0f06"+ - "\1\u0f07\5\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136"+ - "\1\u0f08\16\136\1\u0f09\1\u0f0a\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u0a06\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u0f0b\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\23\136\1\u0f0c\4\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u0f0d\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u0f0e\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u0f0f\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u0f10\3\136\1\u06b6\4\136\1\u0f11\16\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u0f12\27\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u0b78\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u079e\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u0543\7\136\1\u0f13\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u0f14\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u0f15\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\21\136\1\u0f16\6\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0f17\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0f18\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0f19\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0f1a\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\u0a7a\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\22\136\1\u0334\5\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u0f1b\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0d15\3\136\1\u0364\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u0f1c\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u08bc\13\136"+ - "\1\u0cf7\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u0522\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\u0aee"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u0f1d\12\136\1\u0f1e\5\136\1\u07da\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\1\u062e\7\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u0f1f\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0f20\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0582\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u0f21\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u0f22\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0dc6\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\10\136\1\u0f23\17\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u0f24\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u0612\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u0f25\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u0f26\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\22\136\1\u022f\5\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u0f27\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\22\136\1\u0dbe\5\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\11\136\1\u0838\16\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\11\136\1\u0f28\15\136\1\u0f29"+ - "\1\127\2\0\1\136\2\0\12\136\1\u0f2a\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0f2b"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\u0f2c\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u0f2d\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u0f2e\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u0f2f\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u0f30\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u0f31\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\11\136\1\u0f32\16\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u0f33\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u08a8\20\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u0575\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u0c4c\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u0f34\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u0f35\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u0516\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u0349\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u0f36\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u0f37\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u0f38\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u0f39\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u0f3a\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u0f3b\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u0cf7\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u0f3c\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\12\136\1\u0f3d\15\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\1\u0f3e\7\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u0f3f\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\21\136\1\u0f40\2\136\1\u0f41\3\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u0c5a\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u0f3f\13\136\1\u0334\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\20\136\1\u0f42\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\136\1\u0f43\17\136\1\u0596"+ - "\3\136\1\u0f44\2\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u0f45\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\5\136\1\u0f46\22\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u088e\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u0f47"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136"+ - "\1\u0f48\17\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u0f49"+ - "\27\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0f4a"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\26\136\1\u0f4b"+ - "\1\136\1\127\2\0\1\u0d0d\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0f4c"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136\1\u0f4d"+ - "\16\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u0f4e\27\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0f4f\13\136"+ - "\1\u0f50\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u0f51\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u0f52\3\136\1\u03b3\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u0f53\1\136\1\u0f54\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0f55\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\11\136\1\u0f56\16\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\u0f57\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u0f58\1\u0f59\1\u0f5a\1\u0f5b\1\u0f5c"+ - "\1\u0f5d\1\u0624\1\u0f5e\1\u0f5f\1\u0f60\4\136\1\u0f61\2\136"+ - "\1\u0f62\1\u0f63\5\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\1\u062e\7\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u0f64\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u0f65\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\136\1\u0f66\26\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u0f67\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u0f68\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\136\1\u0f69\26\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u0f6a\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u0f6b\1\136\1\u0f6c\1\u0850\3\136\1\u03b2\1\136"+ - "\1\u0851\7\136\1\u0ac4\6\136\1\127\2\0\1\136\2\0"+ - "\1\u0569\12\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\22\136\1\u0f6d\5\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\5\136\1\u0f6e\22\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u0f6f\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\11\136\1\u0f70\16\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\11\136\1\u0f71\16\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\26\136\1\u0f72\1\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u0f73\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u0f74\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u0f75\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\11\136\1\u01b8\16\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u0f76\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u0f77\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u0f78\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\u036a\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u07e0\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136"+ - "\1\u0f79\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u0f7a\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u0f7b\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\1\127\1\u0f7c\4\127\1\0\2\127"+ - "\1\u0f7c\1\127\4\u0f7c\1\127\1\0\1\127\1\0\3\127"+ - "\1\0\1\127\1\u0f7c\14\0\4\127\3\u0f7c\5\127\2\u0f7c"+ - "\3\127\2\u0f7c\4\127\1\u0f7c\1\127\2\0\1\127\2\0"+ - "\10\127\1\u0f7c\2\127\1\0\1\127\3\u0f7c\1\127\3\u0f7c"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u057e"+ - "\1\136\1\u0f7d\3\136\1\u045a\1\u0f7e\17\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u0f7f\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u0efd\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u0f80\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0f81\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u0f82\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u0e42\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u0f83\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0f84\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0f85\11\136\1\u0c95\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0f86\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u0f87\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0f88\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u0f89\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u0f8a\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u0f8b\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u053b\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\22\136\1\u0f8c\5\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u0f8d\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u0f8e\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u0f8f\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u0f90\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0f91\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0f92\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u0f93\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u0f94\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u0f95\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u0f96\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u0f97\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u0f98\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u0f99\20\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\1\u0f9a"+ - "\12\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\5\136\1\u0f9b\22\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\12\136\1\u036b\15\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\22\0\1\u0f9c\37\0\1\u0f9c\135\0"+ - "\1\u0f9d\140\0\1\u0cb3\140\0\1\u0f9e\137\0\1\u071c\153\0"+ - "\1\u0cb6\1\u0cb7\124\0\1\u0714\136\0\1\u0f9f\144\0\1\u0fa0"+ - "\127\0\1\u0fa1\57\0\2\64\1\0\1\64\1\0\2\64"+ - "\2\0\6\64\1\0\20\64\1\u02b8\5\64\1\0\42\64"+ - "\1\u02b8\1\64\1\0\26\64\1\0\1\64\1\0\2\64"+ - "\2\0\6\64\1\0\26\64\1\0\27\64\1\u0101\14\64"+ - "\1\0\1\64\1\u0101\24\64\1\0\1\64\1\0\2\64"+ - "\2\0\4\64\1\u0fa2\1\64\1\0\26\64\1\0\20\64"+ - "\1\u0fa2\23\64\1\0\24\64\16\0\1\u0fa3\41\0\1\u0fa3"+ - "\57\0\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136"+ - "\1\u02e6\6\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u0fa4\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u03c6\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u0152\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u0fa5\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u01df\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\16\0\1\u0fa6\41\0\1\u0fa6\75\0\1\u0fa7\41\0"+ - "\1\u0fa7\57\0\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\11\136\1\u0ab2\16\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\10\136\1\u0fa8\17\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\3\136\1\u0fa9\2\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\4\136\1\u0faa\1\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u0fab\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\1\136\1\u075c"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u0fac\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\u0fad"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u0fae\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u0faf\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u0871\26\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u0fb0\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u0fb1\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u0fb2\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u0540\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u0fb3\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\25\136\1\u0fb4\2\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u0a19\1\136\1\u0a16\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u0fb5\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u0fb6\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u0334\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u0fb7\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0fb8\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\21\136\1\u0fb9\6\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u0fba\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u053b\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\27\136\1\u0ce4\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u0fbb\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u0fbc\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u0f94\11\136\1\u0fbd\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u0fbe\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u0fbf\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u094d\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\u0fc0\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0fc1\1\136\1\u094d\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u0fc2\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\23\136\1\u0fc3\4\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u0fc4\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u0fc5\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\24\136\1\u0fc6\3\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\5\136\1\u0cf3\22\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\u0fc7\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\21\136\1\u0fc8\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u0fc9\20\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u0fca\20\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u0335\24\136\1\u0fcb\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u0fcc\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\11\136\1\u0fcd\16\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0fce\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u0372\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\23\136\1\u0fcf\4\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u0e74\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u0fd0\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0fd1\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\26\136\1\u0fd2\1\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u0fd3\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0335\1\136\1\u0fd4\1\u0fd5"+ - "\1\136\1\u0fd6\1\u0fd7\10\136\1\u0fd8\5\136\1\u0fcb\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u0fd9\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u0fda\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u0fdb\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u0fdc\1\136\1\u0fdd"+ - "\16\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u0fde"+ - "\17\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u0fdf"+ - "\17\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\5\136\1\u0fe0"+ - "\22\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u0fe1"+ - "\11\136\1\u06b9\5\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u0fe2\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\24\136\1\u0fe3\3\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u0484\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u0fe4\1\136\1\u0361\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\21\136\1\u0fe5\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u0def\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\11\136\1\u0fe6\16\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u0fe7\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u0fe8\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\11\136\1\u0fe9\16\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u0fea\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u0feb\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\u06ed\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\27\136\1\u0fec\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u0fed\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u0fee\3\136\1\u0fef\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u0ff0\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u0ff1\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\24\136\1\u0ff2\3\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u0ff3\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u0ff4\13\136\1\u038b\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0525\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u0ff5\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\24\136\1\u0ff6\3\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u0ff7\27\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\136\1\u0ff8\26\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u0ff9\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u0ffa\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\22\136\1\u0ffb\5\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u0ffc\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u0ffd\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u0ffe\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u0fff\2\136\1\u1000\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0a20\13\136\1\u1001\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u1002\24\136"+ - "\1\127\2\0\1\u0927\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u1003\2\136\1\u1004"+ - "\1\u1005\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\5\136"+ - "\1\u08b0\14\136\1\u1006\5\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u1007\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u1008\2\136\1\u1009\12\136\1\u08b6\6\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u100a\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u100b\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u03b3\10\136"+ - "\1\u100c\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u100d\1\u100e\22\136\1\u01a9\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u100f\11\136\1\u1010\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u1011\1\u1012\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u1013\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u1014\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\20\136\1\u1015\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\u1016\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\24\136\1\u1017\3\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u1018\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u1019\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\22\136\1\u101a\5\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\26\136\1\u101b\1\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u101c\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u101d\20\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\22\136\1\u101e\5\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u101f\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u1020\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u1021\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u1022\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u1023\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u0684\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u1024\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\7\136\1\u1025\20\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u1026\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u1027\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\1\u1028\12\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u0a74"+ - "\6\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u1029"+ - "\21\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u0a6e"+ - "\24\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u102a"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u102b"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u0372"+ - "\26\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\24\136\1\u102c"+ - "\3\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u102d"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0471"+ - "\13\136\1\u057d\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u102e\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u0a55\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u07a5\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\27\136"+ - "\1\u102f\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1030"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u1031"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1032"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\12\136\1\u03ef"+ - "\15\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u07db"+ - "\6\136\1\u1033\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136"+ - "\1\u1034\5\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136"+ - "\1\u1035\5\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u0774\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136"+ - "\1\u1036\5\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u1037\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u1038\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u1039\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\27\136"+ - "\1\u103a\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\5\136\1\u103b"+ - "\22\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u045a"+ - "\5\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u103c\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u103d\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u103e\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u08c5\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u103f\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1040"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u1041"+ - "\1\u1042\16\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u1043\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136"+ - "\1\u1044\6\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u1045\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u1046\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\26\136"+ - "\1\u1047\1\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u1048\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u1049\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u104a\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u104b\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u104c\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u104d\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u0765\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u0262"+ - "\21\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u104e"+ - "\17\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u104f"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u1050\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u1051\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u1052\6\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u1053\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u1054\20\136\1\u022f"+ - "\2\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u1055"+ - "\1\136\1\u1056\3\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u1057"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u1058\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\21\136\1\u0ae7\1\u0dbe\5\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\5\136\1\u1059\22\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\5\136\1\u0338\2\136\1\u075e\17\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u0861\12\136\1\u0ae7\6\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u105a\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u105b\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\27\136\1\u0372\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u105c\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u105d\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u105e\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\22\136\1\u105f\5\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\12\136\1\u1060\15\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u1061\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u1062\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u1063\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\136\1\u036b\26\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\u1064\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u1065\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u1066\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u03a7\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u1067\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\24\136\1\u1068\3\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u1069\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u106a\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u106b\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u106c\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\7\136\1\u045a\20\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u07bf\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u106d"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u05f2\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136"+ - "\1\u057e\3\136\1\u0813\3\136\1\u0ac4\7\136\1\u106e\6\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u106f\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\20\136\1\u0b9b\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u1070\27\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u0771\4\136\1\u1071\17\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u1072\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u1073\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1074\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0ab2\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u1075\15\136\1\u1076"+ - "\3\136\1\u1077\5\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u1078\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1079\1\136\1\u0384\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u107a\6\136\1\u0841\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\u0582\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u107b\2\136\1\u0b7e\1\136"+ - "\1\u107c\1\u107d\15\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\u03a7\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u0334\11\136\1\u053b\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\12\136\1\u107e\5\136\1\u107f\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u1080\27\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\u1081\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u1082\1\136\1\u053b\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1083\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u1084\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u1085\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u0c33\20\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u062a\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\27\136\1\u1086\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u0ea9\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u0bc7\10\136\1\u0ae7"+ - "\6\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u0f94"+ - "\21\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u1087\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u1088\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u03a2\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u1089\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u108a\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\11\136\1\u108b\16\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u108c\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u108d\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\12\136\1\u0ab2\15\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u108e\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u108f\27\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u1090\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u1091\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u1092\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u1093\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u061b\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\u0372\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\27\136\1\u07da\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u1094\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\6\136"+ - "\1\u1095\1\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u0334\7\136\1\u057d\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u1096\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\11\136\1\u1097\16\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u1098\24\136\1\127\2\0\1\136"+ - "\2\0\13\136"; - - private static final String ZZ_TRANS_PACKED_3 = - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u05eb\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u1099\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u109a\3\136\1\u0fef\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u109b\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u109c\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\u109d\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\u109e\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u063e\5\136\1\u109f\3\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\1\136\1\u10a0\6\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\22\136\1\u10a1\5\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\10\136"+ - "\1\u10a2\2\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u10a3\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u06b5\15\136\1\u10a4\6\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u10a5\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u065d\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\24\136\1\u10a6\3\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u03a9\2\136\1\u08a8\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\6\136\1\u10a7\1\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\22\136\1\u10a8\5\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u10a9\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\11\136\1\u0871\16\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\1\u0871\12\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\136\1\u10aa\1\136\1\u10ab\1\136"+ - "\1\u10ac\2\136\1\u10ad\10\136\1\u10ae\6\136\1\127\2\0"+ - "\1\136\2\0\1\u10af\12\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\11\136\1\u10a7\16\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\21\136\1\u06f0\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\20\136\1\u10b0\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u10b1\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u10b2\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\20\136\1\u10b3\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u10b4\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u10b5\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u10b6\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u10b7\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u10b8\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\16\136\1\u10b9\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\20\136\1\u10ba\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u05f7\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\5\136\1\u0e69\16\136\1\u10bb"+ - "\3\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u10bc\27\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u0372\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u10bd\27\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u0a7c\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u0917\27\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\136\1\u0e27\26\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\22\136\1\u06ed\5\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u10be\24\136\1\127\2\0\1\u10bf"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u10c0\2\136\1\u0dd7\1\u10c1\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u10c2\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\u10c3\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u0be0\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u10c4\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u10c5\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u10c6\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u10c7\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u0b98\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\u10c8\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u10c9"+ - "\17\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u10ca"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u036f"+ - "\21\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\25\136\1\u0c2f"+ - "\2\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u10cb"+ - "\1\136\1\u10cc\2\136\1\u10cd\1\u10ce\1\u10cf\10\136\1\u10d0"+ - "\5\136\1\u07da\1\127\2\0\1\136\2\0\1\u01d7\12\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u10d1\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\5\136\1\u10d2\21\136\1\u10d3\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u10d4\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u10d5\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u10d6\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u10d7\11\136\1\u10d8\4\136\1\u10d9\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u10da\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u10db\27\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\21\136\1\u10dc\5\136\1\u10dd\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u10de\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\25\136\1\u03a9\2\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u10df\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\5\136\1\u10e0\22\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\11\136\1\u10e1\16\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\1\u10e2\12\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\12\136\1\u0e28\15\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\10\136\1\u10e3\17\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\21\136\1\u10e4\6\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u10e5\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u10e6\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\24\136\1\u10e7\3\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0522\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\12\136\1\u10e8\15\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u0373\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u10e9\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\10\136\1\u10ea\17\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u10eb\27\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\21\136\1\u10dc\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\1\u0c83"+ - "\12\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u10ec\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u10c7\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\5\136\1\u10ed\4\136\1\u10ee\15\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\21\136\1\u10ef\6\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u0764\5\136\1\u0522\4\136"+ - "\1\u10f0\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u10f1\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136"+ - "\1\u10f2\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u10f3\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136"+ - "\1\u10f4\16\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136"+ - "\1\u10f5\6\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136"+ - "\1\u10f6\5\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u051f\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u0764\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\12\136\1\u10f7\15\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\21\136\1\u10f8\6\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u10f9"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u10fa\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u10fb\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u0357\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136"+ - "\1\u10fc\6\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136"+ - "\1\u10fd\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136"+ - "\1\u10fe\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\24\136"+ - "\1\u10ff\3\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u0903\1\136\1\u0e48\22\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u1100\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1101\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u1102\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u1103"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u1104\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\u1105"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u1106\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u1107\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\11\136\1\u1108\16\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u1109\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u0543\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\10\136\1\u110a\17\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u110b\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u110c\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u110d\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u110e\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u02e9\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u110f\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u1110\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\u022f\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u1111\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u1112\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u1113\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u1114"+ - "\27\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u1115"+ - "\6\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u0575\27\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u1116\17\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1117\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u0b1a\1\136\1\u1118"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u1119"+ - "\24\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u111a"+ - "\1\136\1\u111b\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u111c\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\25\136\1\u111d\2\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u0242\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u111e\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u0854\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136"+ - "\1\u111f\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u1120"+ - "\3\136\1\u111e\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u1121\1\136\1\u1122\1\136\1\u1123\1\136\1\u1124\1\136"+ - "\1\u1125\17\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u1126\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u1127\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u1128\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136"+ - "\1\u07e7\16\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u1129\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u112a"+ - "\20\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u112b"+ - "\5\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u112c"+ - "\21\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u112d\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u112e\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u112f\5\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u1130\17\136\1\u1131"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u1132\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136"+ - "\1\u1133\1\136\1\u1134\1\136\1\u1135\1\136\1\u1136\1\136"+ - "\1\u1137\7\136\1\u10dc\1\u0d98\1\136\1\u1138\3\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\1\u1139\12\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\21\136\1\u113a\6\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u113b\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\21\136\1\u0364\6\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\10\136\1\u113c\17\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u113d\16\136\1\u03a9\6\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u113e\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u113f\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\12\136\1\u1140\15\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u1141\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u1142\27\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u1143\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\24\136\1\u1144\3\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\21\136\1\u1145\6\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u1146\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u1147\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u1148\20\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\u08c2\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u1149\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u114a"+ - "\27\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u114b"+ - "\5\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u114c"+ - "\24\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u0242"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u114d"+ - "\20\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u114e"+ - "\17\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u114f"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u1150"+ - "\11\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u1151"+ - "\24\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u1152"+ - "\21\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\27\136\1\u1153"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\12\136\1\u1154\15\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u1155\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\23\136\1\u1156\4\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u1157\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\u1158\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u1159\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\22\136\1\u115a\5\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\136\1\u10e4\26\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u115b\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u10e4\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\24\136\1\u115c\3\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\23\136\1\u115d\4\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\5\136\1\u115e\22\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\136\1\u115f\26\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\27\136\1\u1160\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u1161\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u0244\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u0d09\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u1162\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u1163"+ - "\27\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u107b"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1164"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u1165"+ - "\21\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u1166"+ - "\14\136\1\u1167\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u100d\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u1168\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u1169\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u116a\2\136\1\u116b\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\21\136\1\u09af\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u116c\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\21\136\1\u116d\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u0903\15\136\1\u0ed7\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\u116e\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\24\136\1\u116f\3\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u0606\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u1170\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u1171\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u1172\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u1173\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u1174\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u1175\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u1176\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u0beb"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\26\136"+ - "\1\u1177\1\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136"+ - "\1\u1178\17\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u0e47\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u1179\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u117a\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\22\136\1\u117b\5\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u117c\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u03ef\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u117d\10\136\1\u0ed8"+ - "\1\u117e\5\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\12\136"+ - "\1\u117f\15\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\5\136"+ - "\1\u01c1\10\136\1\u022f\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u1180\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u1181\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u1182\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u1183\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u1184\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\1\u1185\12\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u1186\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\u0eee\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u0fbc\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1187\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u02e9\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u0ed1\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\24\136\1\u1188\3\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\136\1\u1189\1\u01b5\3\136\1\u118a\1\136\1\u080b\13\136"+ - "\1\u102c\3\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u118b\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\27\136"+ - "\1\u1118\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u118c"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u118d"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\27\136\1\u118e"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u118f\17\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0397\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1190\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1191\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u1192\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u1193\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u1194\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u106c\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1195\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u1196\3\136\1\u109f"+ - "\13\136\1\u1197\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\u1198\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u1199"+ - "\24\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u119a"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u119b"+ - "\6\136\1\u063e\5\136\1\u0bf5\3\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u119c\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u119d\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u119e\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\26\136\1\u119f\1\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u11a0\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\5\136\1\u01ce\1\136\1\u11a1\1\u11a2\10\136\1\u11a3"+ - "\6\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u11a4"+ - "\11\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\5\136\1\u01ce"+ - "\13\136\1\u0681\6\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u11a5"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\23\136"+ - "\1\u11a6\4\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u0fbd\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u0354\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u11a7\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u11a8\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136"+ - "\1\u11a9\16\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136"+ - "\1\u11aa\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u11ab\1\136\1\u11ac\1\u1059\1\u0861\2\136\1\u11ad\7\136"+ - "\1\u11ae\6\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u11af\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136"+ - "\1\u11b0\6\136\1\u11b1\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u11b2\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u11b3\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u053f\1\136\1\u11b4\5\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u11b5\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u11b6\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\11\136\1\u11b7\16\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u11b8\2\136\1\u0d1c\15\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\24\136\1\u0c18\3\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u11b9\17\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u11ba\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u11bb\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u11bc\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\24\136\1\u11bd\3\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u11be\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u11bf\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u07c4\17\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u11c0\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u1028\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\12\136\1\u11c1\15\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u11c2\27\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u11c3\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\u11c4\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u11c5\6\136\1\u01b8\14\136\1\u11c6\1\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u11c7\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\u086a\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\24\136\1\u11c8\3\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\u11c9\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u03b3\10\136\1\u0408\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\10\136\1\u11ca\17\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\27\136\1\u11cb\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u11cc\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u11cd\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u11ce\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u02e9\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\26\136\1\u0612\1\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u11cf\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\136\1\u0357\26\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u11d0\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u11d1\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\26\136\1\u11d2\1\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u11d3\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u11d4\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\21\136\1\u11d5\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u11d6\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u11d7\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u093a\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u11d8\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u11d9\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u11da\1\136\1\u11db\5\136\1\u0567\1\136"+ - "\1\127\2\0\1\u11dc\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\25\136\1\u11dd\2\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u11de\5\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u11df\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u11e0\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u11e1\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\23\136\1\u07dc\4\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u11e2\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u07ab\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u11e3\26\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u11e4\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u11e5\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u11e6\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u11e7\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u11e8\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u11e9\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u11ea\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u11eb\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u11ec\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u11ed\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\136\1\u11ee\2\136\1\u11ef\2\136\1\u11f0"+ - "\10\136\1\u11f1\1\u11f2\1\u11f3\1\136\1\u11f4\3\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u11f5\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\24\136\1\u11f6\3\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u11f7\1\136\1\u0361\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u11f8\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u11f9\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\11\136\1\u11fa\16\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u11fb\17\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u11fc\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u11fd\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\u11fe\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u11ff\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u1200\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u1201\20\136\1\u1202\4\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1203\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1204\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u1205\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u1206\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1207\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u1073\3\136"+ - "\1\u1208\15\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u1209\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u0efd\4\136\1\u0d80\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u120a\2\136\1\u0dd7\1\u120b\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u120c\27\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u03a9\1\136\1\u120d\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u0772\20\136\1\u08b6\6\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u0bde\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u120e\3\136\1\u120f\10\136"+ - "\1\u0408\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u100d\2\136\1\u1210\20\136\1\u1211\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u1212\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\u1213\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u1214"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u07fa\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\22\136\1\u1215\5\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u1216"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\u0a66"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1217\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\24\136\1\u10d5\3\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u1218\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u1219\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u121a\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u121b\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u121c\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\u121d\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u121e\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u121f\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u1220\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u1221"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u1222\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u1223"+ - "\20\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\u1224\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\u1225\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u1226\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u1227\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\1\127\1\u024e"+ - "\4\127\1\0\2\127\1\u024e\1\127\4\u024e\1\127\1\0"+ - "\1\127\1\0\3\127\1\0\1\127\1\u024e\14\0\4\127"+ - "\3\u024e\5\127\2\u024e\3\127\2\u024e\4\127\1\u024e\1\127"+ - "\2\0\1\127\2\0\10\127\1\u024e\2\127\1\0\1\127"+ - "\3\u024e\1\127\3\u024e\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u1228\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\u053d\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u03ef\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u1229\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u0372\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u122a\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u122b\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u122c\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\1\u122d\12\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\26\136\1\u122e\1\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u122f"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u1230\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u1231\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u1232"+ - "\17\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u1233\1\u1234"+ - "\2\136\1\u1235\3\136\1\u1236\1\u1237\10\136\1\u1238\5\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\24\136\1\u1239\3\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u123a\5\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u123b\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u123c\6\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u123d\17\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u123e\2\136\1\u123f"+ - "\4\136\1\u1240\11\136\1\u1241\5\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u1242\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u1243\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\11\136\1\u1244\16\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u1245\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u1246\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u1247\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\136\1\u1248\26\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u036f\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u0c0e\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u03a7\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\1\u035f\12\136\1\0"+ - "\10\136\17\0\1\u1249\151\0\1\u124a\206\0\1\u071c\70\0"+ - "\1\u124b\164\0\1\u124c\145\0\1\u124d\53\0\2\64\1\0"+ - "\1\64\1\0\2\64\2\0\6\64\1\0\1\64\1\u124e"+ - "\24\64\1\0\16\64\1\u124e\25\64\1\0\24\64\17\0"+ - "\1\u124f\120\0\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u02e1\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u1250\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\17\0\1\u1251\137\0\1\u1252\120\0\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u1253\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\1\136\1\u1254\11\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\15\136\1\u1255\12\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\u06a9\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u1256\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u1257\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u1258\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\22\136\1\u1259\5\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u0b5a\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u125a\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\5\136\1\u125b\22\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u07bf\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u0cda\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\11\136\1\u125c\16\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u0242\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u08c2\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1069\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u125d"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136"+ - "\1\u125e\6\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136"+ - "\1\u125f\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136"+ - "\1\u1260\6\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\5\136"+ - "\1\u0fb8\22\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u1261\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\27\136"+ - "\1\u1262\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u1263"+ - "\24\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\24\136\1\u1264"+ - "\3\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136\1\u1265"+ - "\16\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u1266"+ - "\24\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1267"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\24\136\1\u1268"+ - "\3\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1269"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u126a"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u126b\27\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0871\4\136"+ - "\1\u126c\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\27\136"+ - "\1\u126d\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u126e"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\12\136\1\u126f"+ - "\15\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u1270\27\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1271\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u1272\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u1273\5\136\1\u1274"+ - "\1\u1275\15\136\1\u1276\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1277\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1278\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u1279\11\136\1\127\2\0\1\u127a\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u127b\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u0cf9\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\7\136\1\u127c\20\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u127d\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\23\136\1\u0bef\4\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u127e\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u127f\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u1280\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\23\136\1\u1281\4\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u1282\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\12\136\1\u1283\15\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\7\136\1\u051c"+ - "\1\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\7\136\1\u022f\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\u0d14\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u1284\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u1285\1\136\1\u1286\13\136\1\u1287\3\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u1288\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u1289\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\7\136\1\u128a\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\u128b\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u128c\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u0575\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u0384\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u128d\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u0d7a\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u128e\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u128f\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u1290\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\5\136\1\u1291\1\u1285\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u036f\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u1292\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\22\136\1\u1293\5\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u1294\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u1295\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u1296\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u1295\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u1297\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u1298\20\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u0349\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u0495\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u1299\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\23\136\1\u129a\4\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u086a\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u129b\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u129c\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\24\136\1\u129d\3\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u0917\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u129e\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u129f\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u12a0\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u12a1\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u12a2\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\22\136\1\u0c24\5\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u12a3\1\u12a4\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u109f\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u12a5\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\24\136\1\u12a6\3\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\24\136\1\u05eb\3\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u063e\5\136\1\u12a7\3\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\20\136\1\u12a8\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u12a9\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u12aa\27\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\22\136\1\u12ab\5\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\21\136\1\u11c7\6\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u12ac\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u12ad\27\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\u12ae\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\u12af\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u12b0\27\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u12b1\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u12b2\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u12b3\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u12b4\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u12b5\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\16\136\1\u12b6\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u12b7\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u10b0\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\21\136\1\u12b8\6\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u12b9\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\26\136\1\u0cd4\1\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u0995\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\10\136\1\u12ba\17\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u12bb\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u12bc\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u0b03\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\21\136\1\u12bd\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u0871\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u07d5\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u080b\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\5\136\1\u12be\22\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u08c1\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u12bf\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\27\136\1\u12c0\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\23\136\1\u12c1\4\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\1\136\1\u022f\4\136\1\u022f\1\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\27\136\1\u12c2\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\22\136\1\u102a\5\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\23\136\1\u12c3\4\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u12c4\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u03b2\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u0582\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u12c5\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\5\136"+ - "\1\u022f\3\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\6\136\1\u022f\1\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u0c33\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u12c6\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u12c7\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u022f\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\1\u12c8\7\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\u05a7\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\27\136\1\u12c9\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\u0340\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u12ca\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u0432\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u12cb\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u12cc\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u12cd\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u12ce\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136"+ - "\1\u12cf\5\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u0f0e\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u0432\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u12cf\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\10\136\1\u12d0\17\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u12d1\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\5\136\1\u12d2\22\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\136\1\u12d3\26\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u12d4\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u12d5\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u12d6\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u12d7\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\21\136\1\u12d8\6\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u12d9"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u0835\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u12da\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\5\136\1\u0e4e\22\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u12db\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\u12dc\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u12dd"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u085d\3\136"+ - "\1\u085f\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u05aa\2\136\1\u0ae7\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\u0837\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u12de\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\23\136"+ - "\1\u12df\4\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u12e0\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\23\136"+ - "\1\u12e1\4\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136"+ - "\1\u12e2\16\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u12e3\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u12e4\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u12e5\4\136\1\u12e6\16\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u12e7\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\136\1\u12e8\26\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\24\136\1\u12e9\3\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\22\136\1\u0e4e\5\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u12ea\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u12eb\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u12ec"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u12ed\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u12ee"+ - "\1\136\1\u12ef\22\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u0c3e\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\21\136\1\u08b6\6\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u0ae0\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\7\136\1\u12f0\20\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u12f1\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\10\136\1\u0da0\17\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\136\1\u0364\26\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\27\136\1\u12f2\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u12f3"+ - "\3\136\1\u12f4\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u12f5\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u12f6\7\136\1\u12f7\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u12f8\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u12f9\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\22\136\1\u12fa\3\136\1\u11c6\1\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u12fb\20\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u0fef\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u0b7e\20\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u12fc\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\u053c\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u12fd\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\u12fe\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\24\136\1\u12ff\3\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\5\136\1\u1300\22\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u1301\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u1302\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\23\136\1\u1303\4\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u1304\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u1305\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u1306\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u1307\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u1308\1\u1309\16\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u130a\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u130b\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u130c\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\25\136\1\u130d\2\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\10\136\1\u130e\17\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u0262\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\7\136\1\u0334\20\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u0e29\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u130f\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\24\136\1\u1310\3\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u1311"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u1312\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u0349"+ - "\1\136\1\u0540\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\1\136\1\u1262\6\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u1313\20\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u109d\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u1314\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u1315\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u1316\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u1317\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u1318\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u1319\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\11\136\1\u0632\16\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\u131a\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u131b\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u0a29\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\4\136\1\u131c\4\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\24\136"+ - "\1\u131d\3\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u131e\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136"+ - "\1\u1106\26\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136"+ - "\1\u131f\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\5\136\1\u022f"+ - "\2\136\1\127\10\0\6\136\1\0\10\136\1\u0387\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u07db"+ - "\26\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1320"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1321"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u1322\27\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1323\13\136"+ - "\1\u1324\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u1325\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u1326\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u07db\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\u1327"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u1328\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u119f\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\11\136\1\u1329\16\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u132a\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u132b\27\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u132c\20\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u132d\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u0b20\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u132e\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u132f\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u1330\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u1331\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u1332\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u1333\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u1334\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u1335\3\136\1\u1336\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\24\136\1\u1337\3\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u1338\1\136\1\u106d"+ - "\17\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\u1339\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u133a\1\u133b"+ - "\1\136\1\u133c\1\u051d\3\136\1\u133d\5\136\1\u057d\2\136"+ - "\1\u133e\1\u133f\1\136\1\u1340\3\136\1\127\2\0\1\136"+ - "\2\0\1\u1341\12\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\136\1\u0e4e\26\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u038b\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u08c2\27\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u0ab2\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\26\136\1\u1342\1\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u1343\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u1344\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\21\136\1\u1345\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u1346\5\136\1\u0d12\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u111a\1\136\1\u1347\5\136"+ - "\1\u1348\15\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u1349\3\136\1\u134a\10\136\1\u0408\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u134b\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u057d\14\136\1\u134c\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u134d\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u07d8\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\1\u0569\12\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\26\136\1\u10e4\1\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\12\136\1\u02e7\10\136\1\u134e\4\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u134f\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u1350\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u1351\5\136\1\u1352\17\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u1353\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u083b\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u1354\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u10e2\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0e19\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u057d\14\136\1\u086a\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1355\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\5\136\1\u0906\22\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\11\136\1\u1356\16\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1357\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u1358\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u1359\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u135a\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u0ced\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u135b\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0373\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u135c\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u135d\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u135e\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u135f\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u1360\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u054e\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u1361\17\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1362\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\24\136\1\u1363\3\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1364\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u1365\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u1366\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u1367\1\136"+ - "\1\u05f2\5\136\1\u080b\1\u1368\4\136\1\u1369\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u136a\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u136b\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0a05\11\136\1\u136c\1\136"+ - "\1\u0522\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u136d\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136"+ - "\1\u136e\5\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136"+ - "\1\u136f\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u1370"+ - "\27\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u0cf7\27\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1371\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1372\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u0880\20\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1373\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0349\2\136"+ - "\1\u1374\22\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136"+ - "\1\u1375\6\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136"+ - "\1\u1376\16\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136"+ - "\1\u1377\2\136\1\u1378\1\136\1\u1379\1\u137a\1\u137b\7\136"+ - "\1\u0361\1\u137c\1\u137d\5\136\1\127\2\0\1\136\2\0"+ - "\1\u01d7\12\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u137e\20\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\21\136\1\u137f\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u1380\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u1381\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\24\136\1\u1382\3\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u1383\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1384\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u1385\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u1386\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u1387"+ - "\17\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u1388\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\11\136\1\u1389\16\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u036b\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\25\136\1\u138a\2\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u138b\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u138c\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\23\136\1\u036b\4\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u0ff8\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u0765\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u138d\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u138e\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\5\136\1\u138f\22\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u1390\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u1391\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\136\1\u1392\26\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\5\136\1\u1393\22\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u1394\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\u1395"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u1396\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u1397\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\136\1\u1398\26\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u1399\4\136\1\u139a\3\136\1\u139b\12\136\1\u139c"+ - "\1\136\1\u0844\1\u139d\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u139e\6\136\1\u139f\16\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\11\136\1\u13a0\16\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u13a1\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\5\136\1\u13a2\22\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u13a3\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u13a4\3\136\1\u13a5\1\u13a6\1\136\1\u13a7"+ - "\4\136\1\u0e52\1\136\1\u13a8\6\136\1\u13a9\1\127\2\0"+ - "\1\136\2\0\1\u13aa\12\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u112b\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u13ab\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\25\136\1\u0372\2\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u13ac\1\136\1\u13ad\2\136\1\u13a2"+ - "\1\136\1\u13ae\1\136\1\u13af\1\u13b0\6\136\1\u13b1\1\u13b2"+ - "\3\136\1\u0844\1\u13b3\1\127\2\0\1\136\2\0\1\u13b4"+ - "\12\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u13b5\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\136\1\u13b6\26\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u03a9\10\136\1\u086a\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u13b7\27\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u13b8\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u13b9\5\136\1\u135a\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u13ba\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u13bb\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u13bc\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u13bd\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u13be\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\10\136\1\u13bf\17\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u13c0\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u13c1\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\11\136\1\u13c2\16\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\7\136\1\u0b6a\20\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u13c3\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136"+ - "\1\u13c4\16\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u13c5"+ - "\27\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u045a"+ - "\1\u0684\17\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u13c6"+ - "\27\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u13c7"+ - "\5\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\27\136\1\u13c8"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u10a9\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u03b2\12\136"+ - "\1\u079e\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u13c9\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136"+ - "\1\u13ca\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u13cb\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136"+ - "\1\u03f4\14\136\1\u13cc\3\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u13cd\1\u08ef\5\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\21\136\1\u13ce\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u13cf\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\4\136\1\u13d0\3\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u13d1\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\24\136\1\u13d2\3\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\1\136\1\u13d3\6\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u13d4\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u0945\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u13d5\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u13d6\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u13d7\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u13d8\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u13d9\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\23\136\1\u1357\4\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u0339\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u0a11\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u13da\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\1\u13db\7\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u13dc\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u13dd\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u13de\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\26\136\1\u13df\1\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u13e0\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\11\136\1\u13e1\16\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u13e2\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\22\136\1\u0440\5\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u13e3\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\22\136\1\u13e4\5\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u13e5\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\12\136\1\u13e6\15\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\24\136\1\u13e7\3\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u13e8\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\136\1\u13e9\2\136\1\u09bd\1\u13ea\2\136\1\u13eb"+ - "\1\u13ec\6\136\1\u0361\1\u13ed\4\136\1\u13ee\1\136\1\127"+ - "\2\0\1\u13ef\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u13f0\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\22\136\1\u13f1\5\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u13f2\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\12\136\1\u13f3\15\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u13f4\20\136\1\u10f5\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u13f5\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u13f6\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\1\u13f7\12\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\21\136\1\u13f8\1\u0ed9\5\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\16\136\1\u13f9\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u13fa\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u13fb\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u13fc\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u13fd\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u13fe\7\136\1\u117d\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\20\136\1\u06ed\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\24\136\1\u13ff\3\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u1400\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u1401\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\20\136\1\u1402\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\20\136\1\u1403\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u07db\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u1404\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\16\136\1\u1405\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u1406\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u1407\1\u0d10\16\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0edf\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1408\4\136"+ - "\1\u1409\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u140a\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136"+ - "\1\u140b\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\u140c"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u140d\20\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u140e\6\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u140f\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u1410\26\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1411\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u1412\6\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\24\136\1\u1413\3\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u1414\6\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0859\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u07d5\17\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u1415\17\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u1416\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u060c\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\24\136\1\u05aa\3\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u093e\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\21\136\1\u1417\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u1418\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u0d15\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u0943\10\136\1\u1419\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\22\136\1\u141a\5\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\12\136\1\u141b\15\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u0ce1\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\16\136\1\u0349\1\136\1\u0540"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u0432"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\23\136\1\u141c"+ - "\4\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u141d"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u141e"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u141f"+ - "\6\136\1\u1420\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u1421\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u053f\1\136\1\u1422\5\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\u1423\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1424\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u1425\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u1426\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u1427\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u1428\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\21\136\1\u1429\6\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u142a\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u142b\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u142c\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u142d"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u142e\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u142f\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u1430\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136"+ - "\1\u1431\16\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u1432\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u1433\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u1434"+ - "\24\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u10b0"+ - "\21\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u1435"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\u1436\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u1437"+ - "\6\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u05da"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\u1438\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u0a1e\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\25\136\1\u0a64\2\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\24\136\1\u06c2\3\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u1439\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\12\136\1\u143a\15\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\u143b\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u143c\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u143d\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u143e\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\23\136\1\u143f\4\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u1440\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u1441\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u1442\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u0be8\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u1443\4\136\1\u057e\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u05ee\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u1444\20\136\1\u08c1\3\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\25\136\1\u1445\2\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u1446\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u1447\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u1448\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\11\136\1\u1449\16\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\10\136\1\u144a\13\136\1\u144b\3\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0440\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u144c\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u0871\5\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u144d\10\136"+ - "\1\u144e\6\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136"+ - "\1\u086e\10\136\1\u144f\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u1450\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u1451\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u1452\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u1453\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\1\u1454"+ - "\7\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u0b98"+ - "\27\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\26\136\1\u1455"+ - "\1\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u1456\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1457\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\23\136\1\u1458\4\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u1459\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u145a\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u145b\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u145c\2\136\1\u06ed\6\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u145d\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\5\136\1\u06ed\22\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u145e\1\136\1\u06ed"+ - "\21\136\1\u07bf\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u145f\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u1460\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136"+ - "\1\u1461\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u1462\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u1463\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u1464\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136"+ - "\1\u1465\6\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u1466\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u1467\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u1468\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u07b3\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u1469\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u146a\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u146b\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u146c\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u146d\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\10\136\1\u11b9\17\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\25\136\1\u146e\2\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u146f"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\27\136"+ - "\1\u1470\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\5\136\1\u0349"+ - "\2\136\1\u1471\17\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u1472\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u1473\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u1474\1\136\1\u0be4\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u1475\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u1476\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u1477\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u1478\4\136\1\u1479\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u147a\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u0434\17\136\1\u038b\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u147b\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u147c\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\16\136\1\u147d\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u147e\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u06b5\4\136\1\u147f\13\136"+ - "\1\u03b0\3\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u1480\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u1481\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u1482"+ - "\2\136\1\u1483\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\u0b05\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\7\136\1\u0b06\20\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\24\136\1\u1484\3\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u1485\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u1262"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u1486"+ - "\17\136\1\u1487\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u119f\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u1488\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u1489\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\21\136\1\u148a\6\136\1\127\2\0\1\136"; - - private static final String ZZ_TRANS_PACKED_4 = - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u091a\1\u0812\1\u148b\1\u0bfe\11\136"+ - "\1\u148c\1\u148d\6\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u148e\1\u1234\1\136\1\u10e6\1\u148f\1\u0631\1\u07cd\1\136"+ - "\1\u1490\1\u0da6\4\136\1\u1491\1\136\1\u0540\1\u1492\1\u1493"+ - "\1\136\1\u0483\3\136\1\127\2\0\1\u07d5\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u1494"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u1495\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\24\136"+ - "\1\u049c\3\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u1496\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\26\136"+ - "\1\u0b58\1\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\24\136"+ - "\1\u0e0d\3\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136"+ - "\1\u1497\16\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u1498\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u0432\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\21\136\1\u0d6b\6\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\25\136\1\u1499\2\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u149a"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u149b\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u149c\14\136\1\u149d\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u149e\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\u149f\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u14a0\3\136\1\u14a1\1\u14a2\4\136\1\u14a3"+ - "\1\136\1\u0533\1\u14a4\1\u14a5\5\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u14a6\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u0cd3\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u14a7\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u14a8\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u14a9\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u14aa\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u14a8\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\11\136\1\u14ab\16\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u14ac\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u14ad\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\25\136\1\u14ae\2\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u14af\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u14b0\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u14b1\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u14b2\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u14b3\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\23\136\1\u14b4\4\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u14b5"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u14b6\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u022f\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u14b7\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u14b8\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u14b9\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\65\0\1\u14ba\132\0\1\u14bb\144\0\1\u0f9e\146\0"+ - "\1\u14bc\43\0\2\64\1\0\1\64\1\0\2\64\2\0"+ - "\6\64\1\0\26\64\1\0\15\64\1\u0101\6\64\1\u0101"+ - "\17\64\1\0\24\64\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\12\136\1\u0cc3"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u14bd\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\17\136\1\u075c\10\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\1\136\1\u075f\4\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u14be\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u14bf\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u14c0\16\136\1\u0596\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u14c1\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u14c2\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u0be4\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u14c3\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u14c4\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\12\136\1\u07d5\15\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u14c5\20\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\u0782\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u0cbe\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\10\136\1\u084d\17\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u0850\3\136\1\u03b2\1\136\1\u0851\16\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u14c6\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u14c7\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\u14c8\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u0c49\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u14c9\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\21\136\1\u14ca\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u0da9\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\11\136\1\u038b\16\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u14cb\1\136\1\u14cc\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\20\136\1\u08c1\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\12\136\1\u14cd\15\136\1\127"+ - "\2\0\1\136\2\0\1\u0569\12\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u14ce\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u14cf\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u14d0\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u14d1\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u0364\11\136\1\u14d2"+ - "\15\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u14d3"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u14d4\27\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u03a6\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u14d5\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u14d6\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u14d7\6\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u14d8\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u14d9\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u14da\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\11\136\1\u14db\16\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u14dc\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u14dd\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u14de\20\136"+ - "\1\u14df\3\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u14e0\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u14e1\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\1\u14e2\7\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u02e9"+ - "\6\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\u14e3\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u14e4\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\20\136\1\u0ac4\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\24\136\1\u14e5\3\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\1\136\1\u14e6\6\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\16\136\1\u0d4f\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\12\136\1\u14e7\15\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u14e8\13\136\1\u14e9"+ - "\3\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u14ea"+ - "\6\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\u07db\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\1\u14eb\7\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u14ec\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\24\136\1\u14e9\3\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u14ed\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u14ee\20\136\1\u13d2\3\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u14e5\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u14ef\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u14f0\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u14f1\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\27\136\1\u14f2\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\2\136\1\u14f3\5\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\1\u14f4\7\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u14f5\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u14f6\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\21\136\1\u05aa\2\136\1\u13d2\3\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u14f7\20\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u14f8\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u14f9\6\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u14fa\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\26\136\1\u14fb\1\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u14fc\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u14fd\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\24\136\1\u14fe\3\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\11\136\1\u0b26\16\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u14ff\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u1500\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u1501\27\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\27\136\1\u1502\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u1503\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\22\136\1\u1504\5\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u1505\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u1506\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u1507\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u1508\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\27\136\1\u1509\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\22\136\1\u150a\5\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u01a9\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u150b\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u150c\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u123a\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u150d\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u150e"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u150f\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u1510\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u1511\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u0a0f"+ - "\5\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1512"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\u1513\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\11\136\1\u01b8\4\136\1\u057d"+ - "\11\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\23\136\1\u1514"+ - "\4\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u1515"+ - "\7\136\1\u1516\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u1517\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\22\136\1\u08c2\5\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\11\136\1\u1518\16\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\21\136\1\u1519\6\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u022f\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u151a\1\u151b\3\136\1\u11a2\1\136\1\u151c\5\136\1\u1487"+ - "\1\u151d\5\136\1\u0eb4\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u12cf\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u151e\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u10a8\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136"+ - "\1\u151f\17\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u1520\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u13c1"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u1521"+ - "\11\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u1522\27\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u03b3\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u1523\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u1524\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\5\136\1\u0372\22\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\12\136\1\u0d1c\15\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u1525\5\136\1\u1526"+ - "\17\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136\1\u1527"+ - "\16\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u056b\2\136"+ - "\1\u1528\2\136\1\u1529\1\u152a\10\136\1\u152b\1\u152c\6\136"+ - "\1\127\2\0\1\136\2\0\1\u152d\12\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\24\136\1\u152e"+ - "\3\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u152f"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u1530"+ - "\24\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u036c\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u1531\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u0da3\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u1532\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0372\20\136\1\u07db\4\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u1533\20\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u1534\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u1535\20\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u1536\6\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0da3\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\27\136\1\u1537\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u1538\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u1539\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u153a\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\21\136\1\u153b\6\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u153c\13\136\1\u153d\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u153e\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\20\136\1\u153f\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u1540\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u1541\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\20\136\1\u1542\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u1543\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u1544\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\1\u0dcf\7\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\12\136\1\u107d\15\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\5\136\1\u1545\22\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u1546\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\u0b5a\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u0871\4\136\1\u022f\20\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\5\136\1\u03ef\22\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u1547\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u1548\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\27\136\1\u10fe\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\5\136\1\u1549\22\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u154a\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\136\1\u154b\26\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u06e0\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u022f\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\u0ab2\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\25\136\1\u154c\2\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\22\136\1\u0fb3\5\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\21\136\1\u154d\6\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u154e\13\136\1\u154f\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\11\136\1\u1550\16\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u032d\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u0dcf\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u1551\1\136\1\u1552\3\136\1\u1553"+ - "\16\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136\1\u1554"+ - "\16\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136\1\u08a8"+ - "\16\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\5\136\1\u0631"+ - "\22\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1555"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1556"+ - "\1\136\1\u1557\11\136\1\u0c3e\1\136\1\u049c\3\136\1\u1558"+ - "\1\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1559"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u155a"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u155b"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u155c"+ - "\14\136\1\u0c3e\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u0dd0"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u155d\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u155e\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u155f"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\5\136\1\u049c"+ - "\22\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u06b5"+ - "\2\136\1\u047e\13\136\1\u0eda\5\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u1560\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u1561\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\u086a\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\24\136\1\u109f\3\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u1562"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u1563\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136"+ - "\1\u1564\26\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136"+ - "\1\u1565\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u1566\4\136\1\u08d2\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u1567\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\11\136\1\u1568\4\136\1\u1569\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u156a\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\22\136\1\u156b\5\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u156c\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u156d\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\27\136\1\u139d\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\27\136\1\u0ecd\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u156e\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u0838\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u0ac6\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u156f\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1570\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u1571\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\21\136\1\u1572\6\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\7\136\1\u1573\20\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\21\136\1\u1574\6\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\25\136\1\u1575\2\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u1576\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u1577"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136"+ - "\1\u1578\26\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u1579\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136"+ - "\1\u157a\11\136\1\u022f\5\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u157b\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u157c\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u0942\1\136\1\u157d\1\136\1\u157e\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u157f\11\136"+ - "\1\u0ad2\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u1580\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u1581\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u1582\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u1583\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u1584\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u0334\12\136\1\u1585\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u1586\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u1587\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u1588\4\136\1\u08d2\6\136\1\u1589\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u158a\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u158b\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u158c\13\136\1\u038b\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u158d\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\16\136\1\u0efc\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u158e\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\24\136\1\u158f\3\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u05ce\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u0a24\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u1590\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u07b3\6\136\1\u1591\20\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u1592\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1593\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\5\136\1\u1594\1\u1595"+ - "\1\u1596\11\136\1\u1597\2\136\1\u1598\3\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u1599\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u0533\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\26\136\1\u159a\1\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\u0384\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u159b\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\22\136\1\u0a75\5\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u159c\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u159d\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u159e\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\10\136\1\u159f\17\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\11\136\1\u15a0\16\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u0c2f\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u15a1"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u15a2\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u15a3\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136\1\u0440"+ - "\16\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u15a4\1\136"+ - "\1\u05f2\5\136\1\u080b\1\u1368\4\136\1\u1369\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u15a5\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u15a6\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\u0582\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u06d4\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u15a7\2\136\1\u15a8"+ - "\11\136\1\u0533\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u15a9\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u15aa\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\22\136\1\u0cdb\5\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u0434\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u15ab\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u15ac\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136"+ - "\1\u0769\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u0f0e\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u11bb\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u1036\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u15ad\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\7\136\1\u0ab2\20\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u0ac8\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u15ae\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\27\136\1\u01b8\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u06b4"+ - "\17\136\1\u15af\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u15b0\1\136\1\u15b1\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u15b2\3\136\1\u03b3\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u15b3\1\u15b4\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u15b5\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\12\136\1\u0cdb\15\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u0bc7\17\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u11a2\17\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u15b6\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\21\136\1\u15b7\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u15b8\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\5\136\1\u15b9\13\136\1\u15ba"+ - "\6\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u15bb"+ - "\6\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u15bc"+ - "\26\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u15bd\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u15be\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u15bf\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u15c0\1\0\1\u0522\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u15c1\1\136"+ - "\1\u1328\1\u15c2\2\136\1\u0815\1\u0522\1\u15c3\7\136\1\u15c4"+ - "\6\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\u0522\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u0522"+ - "\2\136\1\u15c2\3\136\1\u0522\1\u15c5\16\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u15c6\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u07c8\27\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\11\136\1\u15c7\16\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u0582\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u015f\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u15c8\3\136\1\u15c9\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u15ca\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u15cb\27\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u15cc\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u15cd\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u15ce\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\24\136\1\u15cf\3\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u15d0\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u15d1\13\136\1\u15d2\5\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u15d3\5\136\1\u15d4"+ - "\21\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\u15d5\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u15d6\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u15d7\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\22\136\1\u15d8\5\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u15d9\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\20\136\1\u086a\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\12\136\1\u1385\15\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\12\136\1\u0d95\15\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\16\136\1\u15da\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u15db\11\136\1\u15dc"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u15dd"+ - "\5\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\u15de\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\20\136\1\u15df\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u15e0\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\136\1\u10d5\26\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\16\136\1\u15e1\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u15e2\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u15e3\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u15d1\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\20\136\1\u15e4\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\12\136\1\u15e5\15\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\u15e6\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u15e7\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u15e8\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u15e9\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\27\136\1\u15ea\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u15eb\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u15ec\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u15ed\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\27\136\1\u15ee\1\127\2\0\1\u0440\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u15ef"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u15f0"+ - "\1\u15f1\1\u15f2\2\136\1\u0338\3\136\1\u15f3\7\136\1\u15f4"+ - "\2\136\1\u15f5\3\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\4\136\1\u0a38\3\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u15f6\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\11\136\1\u15f7\16\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u15f8\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\11\136\1\u15f9\16\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u1128\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u15fa\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u15fb\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u15fc\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u15fd\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\27\136\1\u15fe\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u0c21"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\u15ff"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u05ee\11\136"+ - "\1\u0533\1\136\1\u0efb\5\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u0a69\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u036b\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u1600\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\12\136\1\u1601\15\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\27\136\1\u1602\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1603\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1604\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\7\136\1\u1605\20\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\10\136\1\u03fa\17\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u1606\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\25\136\1\u1607\2\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\1\136"+ - "\1\u0345\6\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1608\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u1609\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u160a\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u160b\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\11\136\1\u160c\16\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\u160d\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u160e"+ - "\5\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u160f"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u101b"+ - "\5\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u1610\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u1611\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\23\136\1\u0b26\4\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\25\136\1\u1612\2\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u1613\17\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u1614\5\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u1615\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\16\136\1\u1616\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u1617\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u1618\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u1619\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u03bb\3\136\1\u015f\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u161a\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u161b\21\136"+ - "\1\u161c\2\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136"+ - "\1\u161d\17\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u161e\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\10\136\1\u161f\2\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u1620\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u1621\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u117d"+ - "\10\136\1\u1622\6\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u1623"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136"+ - "\1\u1624\17\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\24\136"+ - "\1\u1450\3\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u1625\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u1626\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\u0eee"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u1627\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u117b\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\27\136"+ - "\1\u1628\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u1629"+ - "\21\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u162a"+ - "\21\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u07bf"+ - "\17\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u112e"+ - "\11\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u162b"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\5\136\1\u162c"+ - "\22\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\26\136\1\u0567"+ - "\1\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\27\136\1\u1091"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u162d\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u162e\6\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u1367\1\136\1\u162f"+ - "\5\136\1\u1630\1\u1631\4\136\1\u057d\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u1632\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\10\136\1\u1633\17\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u1634\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u1635\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\23\136\1\u1636\4\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u1637\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u0a1f\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\22\136\1\u1638\5\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\12\136\1\u1639\15\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u163a\27\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u163b\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u163c\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u163d\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u163e\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u163f\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u0cdb\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\24\136\1\u1640\3\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u1641\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u1642\7\136\1\u0eda\1\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u1643\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u0871\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u1644\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u1645\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u1646\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\u1647\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1648\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1649\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u164a\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u164b\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u080a\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\24\136\1\u164c\3\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u164d\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u164e\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\21\136\1\u164f\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u1650\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\u1651\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u1652\20\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u1653\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u1654\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u1655\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u1656\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\21\136\1\u1657\6\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\21\136\1\u1658\6\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\7\136\1\u1659\20\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u165a\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u0b66\23\136\1\u165b\3\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u165c\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u165d\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\u0325\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\23\136\1\u1230"+ - "\4\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u049c"+ - "\24\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\12\136\1\u165e"+ - "\15\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u165f\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u01a9\26\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u143d\20\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u108d\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u1660\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u1661\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\16\136\1\u1662\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\25\136\1\u1663\2\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u1664\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u038b\27\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u1665\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u1666\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u1667\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u1668\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\1\u1669"+ - "\12\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u166a\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u166b\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u166c\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\5\136\1\u166d\22\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\1\u166e\12\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u166f\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\u1670\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1671"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1672"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u1673"+ - "\5\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1674"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\u1675\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u0f3f\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\u1676\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u1677\1\u1678\1\u1679\1\u167a"+ - "\1\136\1\u07da\1\136\1\u167b\1\u1678\1\u167c\7\136\1\u167d"+ - "\1\u167e\5\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u167f\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u1680"+ - "\26\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u0575"+ - "\20\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\24\136\1\u03a9"+ - "\3\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1681"+ - "\13\136\1\u1682\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\21\136\1\u1683\6\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\10\136\1\u1684\17\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1685\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\21\136\1\u1686\6\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\22\136\1\u1687\5\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1688\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u1689"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\24\136"+ - "\1\u168a\3\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u168b\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\12\136"+ - "\1\u168c\15\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u168d\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u168e\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1503"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u168f\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u168a\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1690\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u1691\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\20\136\1\u1692\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u1693\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\136\1\u1694\26\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\u1695\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u1696\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u1697\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1698\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\7\136\1\u1699\20\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\7\136\1\u169a\20\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\21\136\1\u169b\6\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u169c\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u169d"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u0600\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u169e\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u169f\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u057d\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\1\u062e\7\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u16a0\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u11bb\3\136\1\u16a1\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u16a2\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u16a3\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u16a4\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u16a5\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u0222\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u16a6\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u16a7\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\u16a8\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u16a9\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u16aa\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u16ab"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u16ac\2\136"+ - "\1\u16ad\1\u05bd\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\5\136\1\u16ae\22\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\7\136\1\u03b3\10\136\1\u0be0\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u03ef\3\136\1\u0482\1\136\1\u053b"+ - "\3\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\1\u06f1\7\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u06ed\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u16af\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u03fa\13\136"+ - "\1\u03ef\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u16b0\15\136\1\u053b\3\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u06f1\5\136\1\u16b1\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u0a05\1\136\1\u16b2\1\136\1\u16b3"+ - "\1\u16b4\10\136\1\u16b5\5\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\22\136\1\u16b6\5\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u134f\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u16b7\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u16b8\2\136\1\u0615\1\u16b9\7\136\1\u0533"+ - "\6\136\1\u10c7\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u16ba\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136"+ - "\1\u16bb\6\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136"+ - "\1\u16bc\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u16bd\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\u16be"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u0516\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\16\136\1\u16bf\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u16c0\6\136\1\u16c1"+ - "\11\136\1\127\2\0\1\u16c2\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u16c3"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u16c4"+ - "\24\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u16c5"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\12\136\1\u16c6"+ - "\15\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u16c7"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u16c8\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u16c9\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u12e1\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136"+ - "\1\u16ca\6\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u12e1\1\u16cb\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u16cc\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u16cd\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\26\136\1\u11c1\1\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u16ce\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u16cf\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u03dd\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u16d0\25\136\1\u16d1\1\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\136\1\u16d2\26\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u16d3\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\5\136\1\u0da3\22\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u16d4\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\21\136\1\u16d5\6\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u16d6\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u16d7\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u16d8\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u0f99\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\56\0"+ - "\1\u16d9\3\0\1\u16da\156\0\1\u16db\116\0\1\u16dc\57\0"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u16dd"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u16de\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u16df\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u16e0\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u1385\5\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u16e1\17\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u16e2\6\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u16e3\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u05ce\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u16e4\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u16e5\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u0e2f\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u16e6\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u16e7\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u16e8\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\22\136\1\u16e9\5\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u07bb\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\27\136\1\u16ea\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\7\136\1\u16eb\20\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u16ec\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\136\1\u127f\26\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u16ed\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\23\136"+ - "\1\u0364\4\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\u0eda\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u16ee\20\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u16ef\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u16f0\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u16f1\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u112b\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u16f2\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\23\136\1\u112b\4\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u16f3\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u16f4\1\u16f5"+ - "\1\u16f6\1\136\1\u16f7\1\136\1\u16f8\10\136\1\u16f9\1\u16fa"+ - "\1\136\1\u03b0\3\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u16fb\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u16fc\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u0440\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\22\136\1\u0e45\5\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\u16fd\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\27\136\1\u16fe"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u16ff\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u1700\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\1\136\1\u1701\6\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u1702\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0335\5\136"+ - "\1\u1703\1\136\1\u1704\14\136\1\u0eb4\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\u14e3\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\21\136\1\u0c0e\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u1705\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u1706\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\u1707\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u1708\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u1709\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u170a\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\5\136\1\u1291\22\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\12\136\1\u170b\15\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\21\136\1\u170c\2\136\1\u0e0d\3\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u170d\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\3\136\1\u022f\4\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\u170e\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\5\136\1\u170f\22\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\27\136\1\u1710\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136"+ - "\1\u01a9\5\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u1711\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\12\136\1\u1712"+ - "\15\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1713"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u1714\3\136"+ - "\1\u12b5\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\24\136"+ - "\1\u01a9\3\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\5\136"+ - "\1\u0e48\3\136\1\u1715\16\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u1716\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u0956\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u1717\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\5\136\1\u1718\22\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u1719"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u171a\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u171b"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u171c"+ - "\6\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u171d"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u171e"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u171f\27\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u1720\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u1721\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u1722\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u1723\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u0c24\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\24\136\1\u1724\1\136\1\u11c1\1\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\22\136\1\u1725\5\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u1726\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\1\u1727\7\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u1728\16\136\1\u1729\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u172a\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u172b\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\22\136\1\u172c\5\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u172d\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u172e\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u0471\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u172f\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u1730\13\136\1\u0412\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u1731\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1732\1\136"+ - "\1\u06f2\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u1733\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u13c1\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136"+ - "\1\u10a8\17\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136"+ - "\1\u151d\6\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u1734\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u10a8"+ - "\26\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u1522"+ - "\11\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u0327"+ - "\20\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u1735\27\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\12\136\1\u1736\15\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u149e\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1737\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u1738\5\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u1739\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\16\136\1\u173a\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u173b\1\u173c\10\136"+ - "\1\u173d\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u173e\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136"+ - "\1\u173f\16\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u1106\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u1740"+ - "\27\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1741"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u1742"+ - "\24\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u1743"+ - "\20\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u1744"+ - "\5\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u1745\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u12c9\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\16\136\1\u1484\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u1746\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u1747\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u10a9\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\20\136\1\u1419\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u1748\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\1\u0387\12\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u1749\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\136\1\u174a\26\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\22\136\1\u174b\5\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u036b\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u01a9\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u056b\10\136\1\u174c\12\136\1\u174d"+ - "\3\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u174e"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\5\136\1\u174f"+ - "\22\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u1750"+ - "\24\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u1751"+ - "\26\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1752"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u1753\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u0196\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u154c\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u1754\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u1755\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\10\136\1\u1756\17\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\21\136\1\u1757\6\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u1758\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u1759\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\u175a\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u175b\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u0ffc\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u175c\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u175d\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u175e\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u175f\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u1760\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\22\136\1\u1761\5\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u1762\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1763\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u1764"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u1765\1\u05cc\1\136\1\u0861\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u1766\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u1767\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\12\136\1\u1768"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u1769\6\136\1\u176a\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u176b\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u176c\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u176d\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u176e\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\25\136\1\u176f"+ - "\2\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\23\136\1\u1770"+ - "\4\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1771"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136\1\u1772"+ - "\16\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1773"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u0bf5\27\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u1774\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u1775\27\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u1776\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\22\136\1\u1401\5\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u1777\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u1778\27\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\22\136\1\u1779\5\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\12\136\1\u177a\15\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u177b\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\24\136\1\u177c\3\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\5\136\1\u0e48\22\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u177d\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u177e\4\136\1\u057e\17\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u177f\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u1780\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\136\1\u1781\26\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u1782\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\26\136\1\u156b\1\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\21\136\1\u1783\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u0fde\10\136\1\u05aa\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\22\136\1\u1784\5\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u1785\27\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u1786\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u1787\1\u1788\6\136"+ - "\1\u0432\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\26\136"+ - "\1\u1789\1\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u0432\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u03b2\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u178a\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u0432\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\22\136\1\u088e\5\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u178b\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u178c\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u0a9a\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\22\136\1\u178d\5\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\24\136\1\u178e\3\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\27\136\1\u077c\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u178f\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136"+ - "\1\u1790\1\u1791\5\136\1\u1792\1\u1793\4\136\1\u1794\11\136"+ - "\1\127\2\0\1\136\2\0\1\u1795\12\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1796"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u1797\27\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u07bf\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u1798\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\u1799\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u0ba2\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\21\136\1\u179a\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u08dd\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u0631\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u0335\1\u08d2\1\136\1\u13a2\1\136\1\u10fe"+ - "\1\136\1\u179b\15\136\1\u179c\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\25\136\1\u0c52\2\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u179d\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u179e\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u179f\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u0a05\3\136\1\u17a0\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u07aa\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u075e\16\136\1\u17a1\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\10\136\1\u17a2\17\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u17a3\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u17a4\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0924\13\136\1\u0b9b\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u0771\3\136"+ - "\1\u02e9\1\u1071\17\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\22\136\1\u17a5\5\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u0b7e\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u17a6\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u17a7\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u17a8\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136"+ - "\1\u17a9\5\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136"+ - "\1\u17aa\26\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u17ab\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u0da1\4\136\1\u17ac\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u17ad\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u17ae\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u17af\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u17b0\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u0357\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u17b1\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u0a64\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\u17b2\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u17b3\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u17b4\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\u0522"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\1\u17b5\12\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u17b6\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u0440\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u17b7\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u0334\2\136\1\u17b8\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u0522\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u0522\26\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u0334\1\u17b9\7\136"+ - "\1\u0522\16\136\1\127\2\0\1\136\2\0\1\u17ba\12\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\1\u0334\12\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136"+ - "\1\u0522\26\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\24\136"+ - "\1\u0522\3\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u17bb\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\u17bc\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u17bd\1\136\1\u17be"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\24\136\1\u17bf"+ - "\3\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1381"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136\1\u17bf"+ - "\16\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u17c0"+ - "\21\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u17c1"+ - "\21\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u17c2"+ - "\11\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u17c3"+ - "\24\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u17c4\27\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u17c5\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\4\136\1\u17c5\3\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\5\136\1\u17c6\22\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\24\136\1\u17c7\3\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u0372\1\u17c8"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u17c9\27\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u17ca\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u17cb\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u17cc\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\21\136\1\u17cd\6\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\5\136\1\u03f4\22\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0e45\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u17ce\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\27\136\1\u03f4\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\5\136\1\u17cf\22\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\u17d0\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u17d1\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u17d2\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u17d3\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u132d\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u17d4\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u17d5\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\23\136\1\u17d6\4\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\21\136\1\u17d7\6\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u17d8\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\23\136\1\u17d9\4\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u17da\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u17db\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u17dc\10\136\1\u13a0\16\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\24\136\1\u17dd\3\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u01c1\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u17de\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u03fa\3\136\1\u17df\5\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u17e0\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u17e1\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u17dc\10\136\1\u17e2\16\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u17e3\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\u17e4\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u17e5\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u17e6\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\23\136\1\u17e7\4\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\24\136\1\u0c33\3\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\7\136\1\u0c25\20\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\u17e8\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u17e9"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u17ea"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u17eb"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\23\136\1\u17ec"+ - "\4\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u17ed"+ - "\11\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u17ee"+ - "\6\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u17ef"+ - "\5\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\27\136\1\u17f0"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u064e\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u17f1\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u12f3\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u17f2\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\21\136\1\u17f3\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\20\136\1\u17f4\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u17f5\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u17f6\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u17f7\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\21\136\1\u0c93\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u17f8\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u17f9\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u17fa\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u17fb\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u13fe\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u05f2\5\136\1\u080b\5\136\1\u057d\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u17fc\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u17fd\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\27\136\1\u17fe\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u17ff\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u1800\14\136\1\u1801\6\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u1802\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u078f\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\5\136\1\u1803\3\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u1804\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u15a4\1\136\1\u1805\5\136\1\u1630"+ - "\1\u1631\4\136\1\u057d\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\u0eee\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u0da6\2\136\1\u15a8\11\136\1\u0533\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u1806\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u1401\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u1807\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u125f\6\136\1\u063e\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\23\136\1\u1114\4\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u1452\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u054b\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u1808\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u05bd\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\22\136\1\u1809\5\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u180a\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\23\136\1\u180b\4\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u07b3\20\136\1\u06ee\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u180c\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u05c5\27\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\24\136\1\u180d\3\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\27\136\1\u180e\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\11\136\1\u180f\16\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u022f\1\u1810\16\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u1811\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u1812\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\136\1\u1813\26\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u1814\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u1815\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u1816\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u1817\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\22\136\1\u1818\5\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u1637\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u1819\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\136\1\u0a7a\26\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u1432\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u181a\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\12\136\1\u181b\15\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u181c\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u0fb4\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\24\136\1\u181d\3\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u181e\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136"+ - "\1\u181f\6\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u1820\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u1821\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u1822\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u1823"+ - "\27\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1824"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u1825"+ - "\21\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\24\136\1\u1826"+ - "\3\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u1827"+ - "\21\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u1828"+ - "\5\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1653"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u1829"+ - "\11\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\5\136\1\u182a"+ - "\16\136\1\u182b\3\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u17d1\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u182c\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u182d\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u0575\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u182e\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\10\136\1\u182f\17\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u1830"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u1831\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u1832\15\136\1\u1833\4\136\1\u1834\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u084d\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u1835\20\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u1836\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u0b56\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u1837\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u1838\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u1444\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u054b\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u1839\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u183a"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u173f\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u183b\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u0c90\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u183c\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\5\136"+ - "\1\u1401\22\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u183d\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\27\136"+ - "\1\u183e\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u14a7"+ - "\11\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u183f\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1840\23\136"+ - "\1\127\2\0"; - - private static final String ZZ_TRANS_PACKED_5 = - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u1841\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0dcf\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u1842\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u07bf\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u1843\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u0d08\27\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u1844\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u1845\17\136\1\u0525\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u1846\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u0e42\14\136\1\u1847\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u1848\3\136\1\u0d03"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\12\136\1\u1849"+ - "\14\136\1\u184a\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u184b\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u184c\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u184d"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u184e\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u184f\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u1850\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u1851\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u184f\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\u1852"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u1853\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\26\136\1\u1854\1\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1855\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u1856\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u1857\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\22\136\1\u1503\5\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u1858\1\136\1\u1859\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u185a\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u185b\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u148a\4\136"+ - "\1\u1854\1\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\5\136"+ - "\1\u185c\22\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u185d\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u185e\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\5\136"+ - "\1\u185f\22\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u1860\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136"+ - "\1\u079b\1\u1861\1\u1862\6\136\1\u1863\6\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u1864\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u1865\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\22\136\1\u1866\5\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\12\136\1\u1867\15\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u1868\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u1869\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u186a\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u0c1c\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u186b\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u186c\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u186d\5\136\1\u186e\3\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\21\136\1\u186f\6\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\u1870\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u1871\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\11\136\1\u0ac4\16\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u16a7\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u1872\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u11bb\13\136\1\u0f36\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\24\136\1\u109f\3\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u1873\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u1874\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\5\136\1\u1875\22\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u1876\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u022f\5\136\1\u03ef\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u1877\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\u1878\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u1879\12\136\1\u187a"+ - "\5\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u187b"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u187c"+ - "\21\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u187d"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u187e"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u187f"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u0b0f"+ - "\12\136\1\u142f\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u1880\12\136\1\u1881\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u1882\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u1883\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u1884\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u1885\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u1886\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\11\136\1\u1887\16\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u1888\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\22\136\1\u1889\5\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u188a\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u188b\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u188c\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u188d\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u188e\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\5\136\1\u188f\22\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u1890\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u1891"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u1892\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\26\136"+ - "\1\u1893\1\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136"+ - "\1\u1894\17\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u0ff9\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136"+ - "\1\u1895\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u1896\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u1897\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u1898\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u1899"+ - "\27\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u189a\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u0484\1\136"+ - "\1\u189b\10\136\1\u057d\1\136\1\u0361\1\u189c\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\20\136\1\u189d\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\16\136\1\u189e\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u189f\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u18a0\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\74\0\1\u0cb3"+ - "\123\0\1\u070f\146\0\1\u0cb3\50\0\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\10\136\1\u18a1\17\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\1\u18a2\7\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u1525\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u18a3\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u0345\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u18a4\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u18a5\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\27\136\1\u0606\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u051d\15\136\1\u18a6\5\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u18a7\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u18a8\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u18a9\20\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\27\136\1\u0c4f\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u18aa\1\u0a2f\1\136\1\u1595\2\136\1\u18ab"+ - "\16\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u18ac"+ - "\20\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u18ad\27\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\5\136\1\u18ae\22\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u18af\6\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\11\136\1\u18b0\16\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0e3a\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u14d9\5\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u0e74\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u112b\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0fc4\2\136"+ - "\1\u18b1\22\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u18b2\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u18b3\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\u18b4\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u022f\4\136"+ - "\1\u18b5\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u18b6\1\136\1\u03ef\1\u18b7\22\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u18b8\20\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u18b9\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u18ba\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u18bb\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u18bc\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u18bd\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u18be\20\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u18bf\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u18c0\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u18c1\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u18c2\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u18c3\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u0d8b\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u0f94\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136"+ - "\1\u18c4\26\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u056b"+ - "\7\136\1\u022f\17\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\21\136\1\u0684\6\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u18c5\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u18c6\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\u18c7\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u18c8"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\24\136\1\u03ef"+ - "\3\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u18c9"+ - "\21\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u0764"+ - "\1\u1713\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\1\u062e\7\136\1\127\10\0\6\136\1\0\10\136\1\u18ca"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\26\136"+ - "\1\u18cb\1\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136"+ - "\1\u18cc\6\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u18cd\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u18ce\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u18cf\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\23\136"+ - "\1\u0c24\4\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u18d0"+ - "\1\u057e\2\136\1\u0830\1\136\1\u047e\11\136\1\u0361\1\u18d1"+ - "\6\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u18d2"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u18d3\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136"+ - "\1\u18d4\5\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u12e1\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136"+ - "\1\u18d4\5\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u18d5\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\10\136\1\u18d6\17\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u18d7\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u18d8\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u18d9\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\21\136\1\u18da\6\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u18db\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u18dc\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u18dd"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136"+ - "\1\u18de\5\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\u18df"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\27\136\1\u18e0\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\23\136\1\u0522\4\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u18e1\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\u18e2\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u06d4\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\22\136\1\u0540\5\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\24\136\1\u18e3\3\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\24\136\1\u18e4\3\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u18e5\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u0e0c\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u18e6\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\24\136\1\u18e7\3\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u18e8\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u18e9\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\21\136\1\u18ea\6\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\u18eb\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u1738\13\136\1\u18ec\5\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\22\136\1\u18ed\5\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\10\136\1\u18ee\17\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u18ef\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u18f0\20\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u18f1\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\24\136\1\u18f2\3\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u18f3\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u18f4\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\27\136\1\u18f5\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u18f6\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u0a11\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u18f7\12\136\1\u18f8\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u18f9\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\11\136\1\u0786\16\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u18fa\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\136\1\u080e\26\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u18fb\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u18fc\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\1\136\1\u18fd\6\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u18fe\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u022f\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u18ff\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u1900\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u1901\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u1902\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u1903\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u1904\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u1905\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\u1906\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u1907\16\136\1\u11dd\2\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u1908\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u1909\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u190a\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\25\136\1\u190b\2\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u190c\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\136\1\u190d\26\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u190e\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u190f\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\11\136\1\u1910\16\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u1911\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u1912\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u1913\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u1914\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1915\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u1186\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\27\136\1\u1916\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u1917\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u1918\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u1556\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u1919\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u191a\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\24\136"+ - "\1\u191b\3\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u191c\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u191d\2\136\1\u191e\1\136\1\u10fe\11\136\1\u153b\2\136"+ - "\1\u062d\3\136\1\127\2\0\1\136\2\0\1\u191f\12\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\10\136\1\u1920\17\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1921\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u1679\24\136\1\u1922\1\127\2\0\1\136\2\0"+ - "\1\u1923\12\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u1924\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u1925\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u1926\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\11\136\1\u1927\16\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u18d3\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u1928\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u1929\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u0b5a\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\24\136\1\u0582\3\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u192a"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u192b\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u0da6"+ - "\24\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u192c\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u192d\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u192e\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u192f\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u1930\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u1931\3\136\1\u1932\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u1933\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\12\136\1\u1934\15\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\u1935\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u1936\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u11a2\7\136\1\u0c3e\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\20\136\1\u1937\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u114e\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\5\136\1\u1374\22\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u1679\13\136\1\u1938"+ - "\1\136\1\u0c3e\6\136\1\u1939\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\22\136\1\u193a\5\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u193b\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u193c\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u193d\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u193e\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u193f\13\136\1\u1940\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u1941\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0cdf\1\136\1\u1942\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u1943\3\136"+ - "\1\u0a0f\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u1944\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u1945\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u1946\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136"+ - "\1\u1947\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u1948\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u1949\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u11e7\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u194a\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u194b"+ - "\27\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\12\136\1\u149e"+ - "\15\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\24\136\1\u0fb8"+ - "\3\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u194c\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0d15\1\136"+ - "\1\u03aa\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\23\136"+ - "\1\u194d\4\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u15a5\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\u0242\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u03b2\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u065b\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0f0e\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u110b\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u194e\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u194f\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u1950\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u1951\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u1952\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u1953\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\1\u1954\12\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1953\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1955\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\10\136\1\u1956\17\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u1957\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\24\136\1\u1958\3\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u1959\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\12\136\1\u195a\15\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\23\136\1\u195b\4\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u0d12\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\136\1\u0522\14\136\1\u07e0\1\136\1\u195c\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u0334\2\136\1\u053b\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u0522\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u07e0\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u195d\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u0fb5\27\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\136\1\u195e\26\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u195f\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\10\136\1\u1960\17\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\11\136\1\u1961\16\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\136\1\u1962\26\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u1963\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u1964\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u1965\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u1183\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\5\136\1\u0871\22\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\11\136\1\u07d8\16\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u1966\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u1967\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u1968\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u10b9\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u1969\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u196a\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\25\136\1\u196b\2\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u196c\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u196d\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\22\136\1\u0a11\5\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u196e\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u196f\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\22\136\1\u1970\5\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\22\136\1\u196f\5\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u1971"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u1972\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136"+ - "\1\u0c9d\6\136\1\127\2\0\1\136\2\0\1\u0569\12\136"+ - "\1\0\4\136\1\u1973\3\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\22\136\1\u0d98\5\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u1328\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\u0cda\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\24\136\1\u0a66\3\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u1974\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\5\136\1\u01c1\22\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u1975\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u1976"+ - "\27\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\24\136\1\u1977"+ - "\3\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u17df"+ - "\5\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1978"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0de4"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0e2f"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u1979"+ - "\17\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u197a\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u06e6\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u197b\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u197c\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u197d\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u197e\5\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u197d\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u197f\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u1980\1\u1981"+ - "\5\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\4\136\1\u1982\3\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u1983"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u1984\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\12\136\1\u1985\15\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u1986\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u1987\17\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u0e52\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\24\136\1\u1988\3\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1989\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u0eab\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u0484\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u198a\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u198b\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u198c\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u198d\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u198e\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\26\136\1\u198f\1\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\23\136\1\u1990\4\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u1991\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u1992\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\4\136\1\u1993\4\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u11e4\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\23\136\1\u1994\4\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u1995\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\22\136\1\u1996\5\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0da3\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\21\136\1\u1997\6\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u1998\27\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\11\136\1\u1999\16\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u199a\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\11\136\1\u199b\16\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u199c\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u0354\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u199d\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u05f2\4\136\1\u03b2\1\u086e\1\u1631"+ - "\4\136\1\u1369\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u13fe\2\136\1\u0da6\2\136\1\u0546\11\136\1\u0533\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u199e\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u199f\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u19a0\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u19a1\20\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\23\136\1\u199e\4\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u19a2\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u19a3\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\22\136\1\u19a4\5\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u19a5\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u19a6\1\u19a7\1\136\1\u19a8\1\u0812\1\136"+ - "\1\u19a9\1\136\1\u19aa\10\136\1\u01d4\6\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u19ab\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u19ac\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u19ad\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u19ae\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u19af\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\23\136\1\u19b0\4\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\27\136\1\u19b1\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u19b2\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u14c5\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u19b3\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u19b4\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u06a9\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u19b5\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\u19b6\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u19b7"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u19b8"+ - "\6\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\24\136\1\u1432"+ - "\3\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u19b9"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u19ba"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1679"+ - "\3\136\1\u19bb\1\136\1\u11a2\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u19bc\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u19bd\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u19bd\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u19be\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u19bf\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u19c0\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\22\136\1\u09a8\5\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u19c1\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u19c2\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\22\136\1\u0da0\5\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u19c3\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\u19c4\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u19c5"+ - "\17\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u19c6\27\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u07aa\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\27\136\1\u19c7\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u19c8\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u19c9\6\136\1\u0bb3\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u19ca\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u19cb\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\10\136\1\u19cc\17\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\u0ac6\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\u086a\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u063e\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u106d\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u19cd\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u19ce\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u19cf\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u19d0\20\136\1\u19d1\3\136\1\u19d2\1\136\1\u184a"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u19d3\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u19d4\1\u19d5\6\136"+ - "\1\u19d6\17\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\23\136"+ - "\1\u0432\4\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u19d7\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u19d8"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u19d9"+ - "\20\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136\1\u19da"+ - "\16\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u19db"+ - "\21\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u19dc\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u0b0a\5\136\1\u19dd"+ - "\1\136\1\u19de\17\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u18d2\14\136\1\u19df\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\26\136\1\u1432\1\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u19e0\20\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u19e1\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u19e2\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u19e3\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\5\136\1\u19da\22\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u0a14\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\5\136\1\u19e4\22\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u129c\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u19e5\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u19e6\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\7\136\1\u19e7\20\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\22\136\1\u129c\5\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u0aa0\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u19e8"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u19e9\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u19ea"+ - "\2\136\1\u0e48\3\136\1\u19eb\10\136\1\u19ec\5\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\12\136\1\u19ed\15\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u0b26\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u19ee\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u19ef\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\u19f0\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u19f1\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u19f2\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u19f3\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\22\136\1\u19f4\5\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u11bb\14\136\1\u10c7\3\136\1\u19f5\1\u19f6"+ - "\1\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u19f7"+ - "\20\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u051f"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u19f8\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u19f9\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u19fa\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u19fb\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\22\136\1\u19fc\5\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u19fd\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u19fe\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u19ff\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\24\136\1\u1a00\3\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\21\136\1\u1a01\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\u1a02"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\12\136\1\u1a03\15\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\22\136\1\u1a04\5\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u065d\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u1a05\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u1a06\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u1a07\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u1a08\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\24\136\1\u18cb\3\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u1a09\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u1a0a\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u1a0b\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u1a0c\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u1a0d\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u1a0e\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u1a0f\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u1a10\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\136\1\u1377\3\136\1\u0c90\2\136\1\u1377\10\136"+ - "\1\u1a11\6\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136"+ - "\1\u1a12\5\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u1a13\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u1a14\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u1a15"+ - "\27\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u1a16\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u1a17\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\25\136\1\u0ef3\2\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u1a18\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\21\136\1\u1a19\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u1a1a\27\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u03b3\10\136\1\u1a1b\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u1a1c\5\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1a1d\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\u1a1e\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u1a1f\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\11\136\1\u1a20\16\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\u1a21\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u1379\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u1a22\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1a23\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u1a24\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u1a25\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u1a26\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u0cf0\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u0cff\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1a27\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u07db\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\5\136\1\u08d2\22\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\25\136\1\u1a28\2\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\12\136\1\u1245\15\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u1a29\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u1a2a\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\10\136\1\u1a2b\17\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u1a2c\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\7\136\1\u1a2d\20\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u1a2e\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u1a2f\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u1a30\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u1a31\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u1a32\5\136\1\u1a33\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\136\1\u1a34\26\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u1a35\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u1a36\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\27\136\1\u1a37\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\11\136\1\u1a38\16\136\1\127\2\0\1\136\2\0\1\u1a39"+ - "\12\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\26\136\1\u1a3a\1\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u1a3b\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u11df\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u0fcb\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u1a3c\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u1a3d\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\11\136\1\u0440\12\136\1\u1a3e\3\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\24\136\1\u1a3f\3\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u1a40\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\21\136\1\u1a41\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u0da6\2\136\1\u1907\11\136\1\u0533"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1a42"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1a43"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u1a44"+ - "\24\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u1a45\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u1a46\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\16\136\1\u07c8\5\136\1\u0c83"+ - "\3\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u0e42"+ - "\2\136\1\u0932\1\u03b3\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\26\136\1\u0684\1\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\11\136\1\u07e7\16\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u1a47\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\27\136\1\u1a48\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u1a49\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u1a4a"+ - "\11\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0a08"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\u1a4b\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u0872\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\16\136\1\u1a4c\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u1a4d\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\5\136\1\u09ff\13\136\1\u144e"+ - "\4\136\1\u11c1\1\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u1a4e"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u1a4f\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\23\136"+ - "\1\u1a50\4\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u1a51\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\24\136"+ - "\1\u1a52\3\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u1a53\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136"+ - "\1\u1a54\17\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u1a55\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136"+ - "\1\u1a56\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\5\136"+ - "\1\u1960\22\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u1a57\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\25\136"+ - "\1\u119e\2\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u1a58\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u1a59"+ - "\27\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u1a5a\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u18ed\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u1a5b\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u1a5c\20\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u1a5d\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\11\136\1\u1a5e\16\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1a5f\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\5\136\1\u0338\16\136"+ - "\1\u0c33\3\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\u1a60"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u1a61\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u03fa\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\24\136\1\u0334\3\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u1a62\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u1a63\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u1a64\27\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\22\136\1\u1a65\5\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\26\136\1\u1a66\1\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\22\136\1\u1a67\5\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u1a68\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u1a69\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\10\136\1\u1a6a\17\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\u1a6b\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u1907\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u1a6c\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u1a6d\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\26\136\1\u0db7\1\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u1907\16\136\1\u11dd\2\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u1071\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u1a6e\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\26\136\1\u1a6f\1\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u1a70\27\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u1a71\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\5\136\1\u1a72\22\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\u1a73\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u1a74\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u1a75\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u1a76\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u07fd\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u1a77\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\u1a78\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\7\136\1\u1a79"+ - "\1\127\10\0\6\136\1\0\10\136\1\u1a7a\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u1a7b\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u1a7c\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\5\136\1\u1a7d\22\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u1a7e\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\22\136\1\u1a7f\5\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\11\136\1\u1a80\16\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u1a81\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u1a82\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u1a83\27\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u1a84\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u1a85\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u1a86\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u1a87\20\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u1a88\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u1a89\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u1a8a\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\u1a8b\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1a8c\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u119f\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\5\136\1\u1a8d\22\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u0546\7\136\1\u057d\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u15a7\2\136\1\u0546\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u1a8e\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u1a8f\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\136\1\u1a90\26\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u1a91\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\21\136\1\u1a92\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u0a21\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\16\136\1\u1a93\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u1a94\10\136\1\u1a92"+ - "\6\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1a95"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u1a96"+ - "\20\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1a97"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u1a98"+ - "\6\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u1a99"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u1a9a"+ - "\20\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u0875"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1a9b"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1a9c"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136\1\u0354"+ - "\16\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\25\136\1\u0a11"+ - "\2\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1a9d"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1a9e"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u1a9f"+ - "\26\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1aa0"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1aa1"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\u1aa2\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u1aa3\27\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u1666\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u1aa4\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u1aa5\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\26\136\1\u1aa6\1\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u0440\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u1aa7\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\27\136\1\u17a1\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u1aa8\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u1aa9\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\11\136\1\u0a66\10\136\1\u0da0\5\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\21\136\1\u1aaa\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u17a9\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\21\136\1\u1aab\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u1aac\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u1aad\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u1aae\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u1aaf\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\21\136\1\u1ab0\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\11\136\1\u1ab1\16\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u1506\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u1ab2\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u1ab3\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\u1ab4\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u1ab5\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u1ab6\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136"+ - "\1\u1ab7\16\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u03fa"+ - "\27\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\12\136\1\u19a0"+ - "\15\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1ab8"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u080b"+ - "\5\136\1\u057d\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\24\136\1\u1ab9\3\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\11\136\1\u13af\14\136\1\u0844\1\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u1438\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\11\136\1\u0a66\16\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u1131\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\21\136\1\u1aba\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u03f4\20\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\24\136\1\u1abb\3\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u1abc\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u1abd\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\12\136\1\u1abe\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u1abf\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1ac0"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\5\136\1\u0e69"+ - "\2\136\1\u15d9\17\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\7\136\1\u1ac1\20\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u0262\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\136\1\u1ac2\26\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u03ef\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u1ac3\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\12\136\1\u1ac4\15\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1ac5\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\22\136\1\u051e\5\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\10\136\1\u022f\5\136\1\u07db\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\21\136\1\u1ac6\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u17f1\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u1ac7\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\27\136\1\u1ac8\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u1ac9\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u1aca\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u0645\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\27\136\1\u1acb\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u1557\1\136\1\u1acc\10\136\1\u0864\5\136\1\u1acd"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u1ace\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u1acf\17\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1ad0\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u10a9\17\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u1ad1\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u1ad2\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u1ad3\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\11\136\1\u1ad4\16\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u0f34\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u1ad5\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u1ad6\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u1ad7\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\7\136\1\u1ad8"+ - "\1\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1ad9\3\136\1\u01dc\5\136\1\u08dd\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u1ada\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\11\136\1\u1adb\16\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\1\u06e1\7\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u1809\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\12\136\1\u1adc\15\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\11\136\1\u1029\16\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u1add\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u1ade\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u1adf\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u0373\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u1ae0\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\25\136\1\u1ae1\2\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\22\136\1\u17a4\5\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u1ae2\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136"+ - "\1\u1ae3\6\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u1ae4\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\5\136"+ - "\1\u01ce\22\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136"+ - "\1\u101e\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u0411\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u1ae5\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u1ae6\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u1ae7\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136"+ - "\1\u1ae8\5\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u1ae9\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u1aea\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\23\136"+ - "\1\u1aeb\4\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136"+ - "\1\u1aec\17\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u1825\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u18e4"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u1765"+ - "\24\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\u1aed\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u1aee\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\16\136\1\u1aef\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u10f3\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\24\136\1\u1af0\3\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\16\136\1\u1af1\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u1af2\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\12\136\1\u0372\15\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\12\136\1\u1af3\15\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u1114\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\27\136\1\u0a1b\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u1af4\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\21\136\1\u0540\6\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\10\136\1\u1af5\17\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\136\1\u1af6\26\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\27\136\1\u0f29\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u0334\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u1af7\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u1af8\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u1af9\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u1afa\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u1afb\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\u03fa\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u1afc\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\1\u022f\7\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u1afd\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\22\136\1\u1262\5\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u1afe\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u1aff\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\20\136\1\u1b00\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u1b01\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\26\136\1\u1b02\1\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u1b03\27\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u1b04\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u1b05\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u1b06\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u1b07\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u1b08\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u1b09\15\136\1\u079e\3\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u1b0a\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u1b0b\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u1b0c\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u0522\20\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\21\136\1\u1b0d\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\22\136\1\u1b0e\5\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u1b0f\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\u1b10\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u07b8\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\21\136\1\u1b11\6\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u18d2\14\136\1\u1b0d\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\23\136\1\u1b12\4\136\1\127\2\0\1\136"+ - "\2\0\1\u035f\12\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u1b13\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u1b14\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\10\136\1\u0995\17\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u0d42\27\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u1b15\2\136\1\u1b16\1\136\1\u03b2"+ - "\1\u035f\5\136\1\u057d\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u0da6\1\136\1\u1b17\1\u0da8\1\u1b18\10\136"+ - "\1\u0533\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u1b19\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u1b1a\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\27\136"+ - "\1\u07db\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u1b1b"+ - "\21\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u1b1c"+ - "\6\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\24\136\1\u1b1d"+ - "\3\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\24\136\1\u1b1e"+ - "\3\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u0e8f"+ - "\5\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1b1f"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u1b20\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u1b21\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u1b22\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u1b23\5\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u0bfe\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u1b24\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\12\136\1\u0c24\15\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u1b25\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u1b26\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u1b27\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u15c4\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u1b28\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u1b29\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u1b2a\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u1b2b\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1b2c\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u1b2d"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\u1b2e\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u1ac5\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1b2f\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u1b30\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u1b31\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u1b32\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1889\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1b33\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1b34\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u1b35\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u1b36\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u1b37\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u1b38\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u1b39\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u1b3a\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u1b3b\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\12\136"+ - "\1\u1b3c\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u0384\3\136\1\u0680\17\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\22\136\1\u0da3\5\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u1b3d\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u1b3e\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u0d4d\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\24\136\1\u1b3f\3\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u1b40\27\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u1b41\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\21\136\1\u1b42\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u1b43\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u1b44\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u06b4\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u1b45\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\21\136\1\u1b46\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u1b47\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u08d2\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u1b48\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u17d1\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u0d6b\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u1b49\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u1b4a\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u1b4b\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u1b4c\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u1b4d\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u015f\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u1b4e\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u1b4f\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u1b50\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\12\136\1\u0cda"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\24\136\1\u1b51\3\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1b52\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u1b53\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u1b54\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u1b55\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u1b56\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u1b57\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u10e5\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\u1b58\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\5\136\1\u17a3"+ - "\22\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u1b59"+ - "\5\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136\1\u03b3"+ - "\16\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u0bc9"+ - "\17\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1af6"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\25\136\1\u18ce"+ - "\2\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u121d"+ - "\11\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u1b5a\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u0a72\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u057e\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u0b26\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\5\136\1\u1b5b\22\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\23\136\1\u129c\4\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\27\136\1\u1b5c\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u1b5d\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u1b5e\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\10\136\1\u1b5f\17\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\12\136\1\u1b60\15\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u1b61\20\136\1\u0882\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u1b62\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u1b63\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u022f\7\136\1\u1b64"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\27\136\1\u0871"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\1\u1b65\7\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u10b5\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u05fa\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\11\136\1\u1b66\16\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\22\136\1\u1b67\5\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\10\136\1\u1b68\17\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\12\136\1\u1b69\15\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u1b6a\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\27\136\1\u1b6b\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u18ed\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u1b6c\20\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u18ed\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u1b6d\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\27\136\1\u1b6e\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\5\136\1\u1b6f\22\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\22\136\1\u0cda\5\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u0b98\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u05f2\13\136\1\u057d\2\136\1\u0596\6\136"+ - "\1\127\2\0\1\136\2\0\1\u0569\12\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u07db\27\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u1a25\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\11\136\1\u1b70\16\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\12\136\1\u1b71\15\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u1b72\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u1907\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\21\136\1\u1b73\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\25\136\1\u1b74\2\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\21\136\1\u1b75\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u1b76\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\20\136\1\u1b77\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u1b78\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u1663\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u1b79\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u1b7a\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u1b7b\27\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\21\136\1\u1b7c\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u0827\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u1b7d\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\7\136\1\u1b7e\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\22\136\1\u049c\5\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u1b7f\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\5\136\1\u1a7d\2\136\1\u0be4\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u1b80\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u1b81\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u1b82\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u1b83\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\22\136\1\u13c1\5\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u1b84\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u1b85\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u1b86\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u1b87\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u1b88\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u178f\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u1b89\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u1b8a\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u1b8b"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1b8c"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u1b8d"+ - "\24\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u1b8e\27\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1b8f\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u0fb3\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u1931\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\136\1\u1b90\26\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\20\136\1\u1b91\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u1b92\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u1b93\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u1b94\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u1114\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u1b95\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\25\136\1\u036b\2\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u1b96\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u1b97\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u1b98\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u1b99\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\u0e58\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u1b9a\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136"+ - "\1\u1b9b\26\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u1b9c\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\26\136"+ - "\1\u10e2\1\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u10e2\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u1b9d\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136"+ - "\1\u1b9e\7\136\1\u17de\6\136\1\u1b9f\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u0349\5\136\1\u1b9e\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u1ba0\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\24\136\1\u0c9d\3\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u1245\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u1ba1\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u1ba2\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u1ba3\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u1ba4\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0335\1\u1ba5\1\u0cf1\2\136"+ - "\1\u10fe\1\136\1\u0dfe\7\136\1\u1ba6\5\136\1\u06f0\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\21\136\1\u1ba7\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u1ba8\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u1ba9\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u1baa\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u0dc6\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u102c\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\11\136\1\u07db\16\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u1bab\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u1b6e\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\11\136\1\u0cda\16\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u126e\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u0a21\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\12\136\1\u03f4\15\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u0854\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u1bac\3\136\1\u1bad\1\136\1\u1bae\10\136\1\u1baf"+ - "\3\136\1\u1bb0\2\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u1bb1\5\136\1\u0851\12\136\1\u10e7\3\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u1bb2\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0"; - - private static final String ZZ_TRANS_PACKED_6 = - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u1bb3"+ - "\24\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u1bb4"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u046f"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u1bb5"+ - "\24\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u1bb6\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u0574\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\12\136\1\u07c0\15\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u1bb7\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\23\136\1\u1bb8\4\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u1bb9\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\21\136\1\u1bba\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\4\136\1\u022f\3\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u07b3\3\136\1\u1ae6\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u1bbb\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u17f1\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1ad0\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u0a6c\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\16\136\1\u0e52\3\136\1\u06ed"+ - "\5\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u1bbc"+ - "\24\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\1\u1bbd\12\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u1bbe\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u1bbf\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u1bc0\6\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1bc1\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u1bc2\2\136"+ - "\1\u1ad9\11\136\1\u08dd\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u1bc3\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\u1bc4\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u0484"+ - "\1\u1ad9\1\u0c90\3\136\1\u0786\7\136\1\u1bc5\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u1aaf\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u128b\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u1bc6\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u0a7c\27\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u1bc7\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\26\136\1\u1bc8\1\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u1bc9\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\21\136\1\u07db\6\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u1bca\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u1bcb\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u03ef\4\136\1\u1bcc\22\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u1bcd\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\24\136\1\u1bce\3\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\22\136\1\u141c\5\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u08d2\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u1bcf\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u19b0\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\10\136\1\u1bd0\17\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u1bd1\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u1bd2\27\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u1bd3\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u1bd4\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\21\136\1\u1bd5\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\12\136\1\u1bd6\15\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u1bd7\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u0579\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u1bd8\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u1bd9\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\24\136\1\u1bda\3\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u1bdb\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u1bdc\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u165a\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u1bdd\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u1bde\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u0546\13\136\1\u0dbe\5\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\12\136\1\u1114\15\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\21\136\1\u1bdf\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u1be0\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u102a\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\11\136\1\u1be1\16\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\23\136\1\u1b02\4\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u1be2\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u1be3\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u1be4\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\7\136\1\u1be5\20\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\7\136\1\u1be6\20\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u0482"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u1be7\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\23\136\1\u1b12"+ - "\4\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u1be8"+ - "\21\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u1be9"+ - "\5\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1bea"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u1beb"+ - "\24\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\u1bec\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u0cd4\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u1bed\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u1bee\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u0a16\14\136\1\u01b3"+ - "\4\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u0de9"+ - "\20\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u1bef\27\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1bf0\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\27\136\1\u1376\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\20\136\1\u1bf1\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u0606\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\12\136\1\u1bf2\15\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u1bf3\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u1bf4\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u1bf5\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\24\136\1\u1bf6\3\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u1245\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u1bf7\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u1369\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u1bf8\2\136\1\u1bf9\22\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u1bfa\17\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u1028\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u1bfb\13\136"+ - "\1\u1bfc\5\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\u1bfd"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u1028\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u1bfc\5\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u1bfe\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u1bff\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\12\136\1\u1c00\15\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\24\136\1\u1c01\3\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\16\136\1\u057d\7\136\1\u0567"+ - "\1\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136\1\u1c02"+ - "\16\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u1c03"+ - "\11\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u1c04"+ - "\17\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u1c05"+ - "\21\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u1c06"+ - "\11\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u1c07"+ - "\17\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u1c08\27\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u1c09\6\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u121d\20\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u1c0a\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1c0b\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u1c0c\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u1c0d\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\24\136\1\u1c0e\3\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u1c0f\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u1c10\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u1c11\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\11\136\1\u1c12\16\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u1c13\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\27\136\1\u1c14\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u1c15\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u1c16\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u038b\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u1c17\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u1c18\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u1c19\17\136\1\u1c1a\3\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u1c1b\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\24\136\1\u1c1c\3\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u1c1d\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u1c1e\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u1c1f\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\21\136\1\u1c20\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u03ee\27\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u1c21\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u1c22\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\11\136\1\u1b6e\16\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\136\1\u0771\26\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u0a1d\27\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\u0ab2\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u1c23\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u1c24\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136"+ - "\1\u0baf\6\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u1c25\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u0888\13\136\1\u088a\5\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u1376\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\23\136\1\u1c26\4\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\5\136\1\u1c27\22\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1c28\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\7\136\1\u1c29\20\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u0769\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u1c2a\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1c2b\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u1c2c\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\22\136\1\u1bd1\5\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\u0632\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u0388"+ - "\21\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u1c2d"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136\1\u1c2e"+ - "\16\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u1c2f\27\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\1\u0b6b\12\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u1c30\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u1c31\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u1c32\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u0cda\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u1c33\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u1c34\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\20\136\1\u1c35\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\21\136\1\u1c36\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u1549\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u1c37\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\u1c38\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u1c39\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u1c3a\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u1c3b\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u1c3c\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u1c3d\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136"+ - "\1\u1c3e\17\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u1c3f\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136"+ - "\1\u1c40\17\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\10\136\1\u1c41\2\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136"+ - "\1\u1c42\5\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u156f\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\2\136\1\u05ab"+ - "\5\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\5\136"+ - "\1\u07d5\22\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u1c43\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u1c44\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u101e\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136"+ - "\1\u1c45\16\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u1c46\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u1c47\2\136\1\u1c48\2\136\1\u1c49\16\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0df4\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\136\1\u182f\1\136\1\u1c4a\1\u1c4b"+ - "\1\136\1\u10cd\1\136\1\u1c4c\10\136\1\u1c4d\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u1c4e\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u1c4f\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u1c50\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u1c51\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u09b0\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u1c52\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u1c53\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u1c54\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\26\136\1\u1c55\1\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1c56\2\136\1\u1c57\20\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\21\136\1\u01d4\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\27\136\1\u08ef\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u1c58\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u1c59\1\136\1\u1b66\16\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\5\136\1\u0906\1\136\1\u1c5a\20\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u1c5b\20\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u1c5c\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\5\136\1\u1c5d\22\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u19db\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u1c5e\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u1c5f\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u1c60\4\136\1\u11a2"+ - "\16\136\1\u1c61\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136"+ - "\1\u1c62\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u1c63\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u1c64\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u0cf0\13\136"+ - "\1\u1c65\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\12\136"+ - "\1\u1838\15\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u0bce\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u1c66\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136"+ - "\1\u12d0\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u15bf"+ - "\27\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u1c67\27\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u1c68\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\u0533\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u1c69\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u1c6a\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u038b\3\136\1\u1c6b\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u1c6c\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u1c6d\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u17d6\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\23\136\1\u1c6e\4\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\5\136\1\u1c6f\2\136\1\u15d9\17\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u1c70\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\1\u1c71\7\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u17f1\20\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\21\136\1\u1980\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\22\136\1\u1c72\5\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u1c73\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u1c74\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\27\136\1\u1c75\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u1c76\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u1c77"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u1bc0\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u1c78\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u1c79\3\136\1\u01dc\11\136\1\u11f3\3\136\1\u13ee\1\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\11\136\1\u1c7a\16\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\12\136\1\u1c7b\15\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u0b9b\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u1c7c\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u1c7d\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\23\136\1\u07db\4\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u1c7e\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u022f\10\136\1\u1ae3"+ - "\6\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u1c7f"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u0864"+ - "\6\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u1c80"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u0917\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u1c81\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u18e4\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\16\136\1\u1c82\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u05f2\2\136\1\u1c83"+ - "\22\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u0a7a"+ - "\11\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u1c84"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u1c85"+ - "\5\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\2\136\1\u09b2\5\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\26\136\1\u19f6"+ - "\1\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136\1\u1c86"+ - "\16\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\23\136\1\u1c87"+ - "\4\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u057c\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\12\136\1\u1c88\15\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u1c89\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\25\136\1\u1b02\2\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\1\136\1\u03a2\6\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\12\136\1\u1c8a\15\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u1c8b\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\27\136\1\u1c8c\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u1c8d\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\5\136\1\u1c8e\22\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\136\1\u1c8f\26\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u19d4\1\u1c90\6\136\1\u19d6\7\136\1\u0361\1\u01d4\6\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u1c91\20\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u1c92\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u1c93\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u1c94\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u1b80\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u0b6a\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u01a9\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u108f\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u1c95\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\21\136\1\u1c96\6\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u1c97\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u1c98\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\12\136\1\u1704\15\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\21\136\1\u1c99\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u1c9a\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u19ea\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u1c9b\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u1c9c\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u1c9d"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136"+ - "\1\u1c9e\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u1c9f\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136"+ - "\1\u1ca0\17\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u1ca1\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136"+ - "\1\u1ca2\17\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u1ca3\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u1a02\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u1ca4\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u1ca5\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u1ca6\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\24\136"+ - "\1\u1ca7\3\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u1ca8\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136"+ - "\1\u1ca9\17\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u1caa\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u1cab\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u0762\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u1cac"+ - "\21\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u1cad"+ - "\24\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u1cae"+ - "\2\136\1\u1caf\12\136\1\u1cb0\1\u1cb1\5\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u1cb2\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u1cb3\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u119e\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u1cb4\20\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u1cb5\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\136\1\u12e1\26\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u1cb6\20\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\11\136\1\u1cb7\16\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u1cb8\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u1cb9\20\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\22\136\1\u1cba\5\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\u1cbb\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u1cbc\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u1cbd\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136"+ - "\1\u1cbe\6\136\1\u075e\1\u0772\16\136\1\127\2\0\1\u1cbf"+ - "\2\0\1\u08cf\12\136\1\0\4\136\1\u0a38\3\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\11\136\1\u1cc0\16\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\26\136\1\u1cc1\1\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u1cc2\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u1cc3\17\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u0579\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u1cc4\17\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1cc5\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u17e7\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u1cc6\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\u1cc7\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u1cc8\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u1a74\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u1cc9\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u1cca\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\136\1\u1ccb\26\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\1\u1ccc"+ - "\12\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u0a0f\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u1ccd\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u1cce\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u1ccf\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u1cd0\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u1cd1\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u1cd2\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\22\136\1\u1cd3\5\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u174f\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\23\136\1\u1cd4\4\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u1cd5\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u1cd6\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u1cd7\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u1cd8\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u1cd9\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u1cda\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\u1cdb\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u17a4\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\4\136\1\u022f\4\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u1cdc\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1cdd\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u1cde\17\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\11\136\1\u101e\16\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u1cdf\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u1ce0\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\11\136\1\u0d10\16\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u1ce1\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u1ce2\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\16\136\1\u1ce3\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u1ce4\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u1ce5\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u1ce6\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\136\1\u1ce7\6\136\1\u1ce8"+ - "\10\136\1\u0c93\6\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\u1ce9\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u1cea\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1ceb\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\10\136\1\u1cec\17\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\25\136\1\u1ced\2\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u1cee\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u119f\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\u1cef\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u1cf0\27\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\25\136\1\u1cf1\2\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u1346\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u1cf2\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u1cf3\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u036c\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\20\136\1\u1cf4\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u1cf5\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\20\136\1\u1cf6\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u0606\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\u1cf7\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u1cf8\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\5\136\1\u13a2\3\136\1\u03b2\15\136\1\u1276\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\5\136\1\u13a2\3\136\1\u03b2"+ - "\10\136\1\u07bf\4\136\1\u1276\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\u1cf9\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u0bc9\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u0364\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u125e\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u0d4b\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\23\136"+ - "\1\u1cfa\4\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u1cfb\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136"+ - "\1\u1cfc\6\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136"+ - "\1\u1274\10\136\1\u10dc\1\u0d98\5\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u1cfd\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u1cfe\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\u1cff\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\23\136\1\u1d00"+ - "\4\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\1\u1d01\12\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u1d02\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\7\136\1\u1d03\20\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\26\136\1\u1d04\1\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u1c79\15\136\1\u11f3"+ - "\5\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1d05"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u145f"+ - "\11\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u1d06"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1d07"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u1d08"+ - "\24\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u1d09"+ - "\20\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\u1d0a\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u0d09\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\26\136\1\u1d0b\1\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u1d0c\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\136\1\u1d0d\26\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u1d0e\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\22\136\1\u1bd5\5\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u1d0f\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u1d10\20\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u1d11\20\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u1d12\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u056e\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u1d13\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u0b0a\3\136\1\u0384\15\136\1\u1d14\5\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u1d15\20\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u19d0\5\136\1\u1d16"+ - "\1\136\1\u1d17\13\136\1\u1d18\1\u19d2\1\136\1\u184a\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u1d19\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u1d1a\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u1d1b\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u1d1c\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u0861\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u1bac\1\u1d1d\1\u0384\1\136"+ - "\1\u0e6c\1\136\1\u0680\10\136\1\u1d1e\1\u1d1f\5\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u1d20\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\136\1\u1d21\26\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u0e0f\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u0b0a\1\u1d22\1\136\1\u1d23"+ - "\4\136\1\u1d24\1\u0851\16\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u1d25\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\12\136\1\u1d26\15\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\24\136\1\u1a96\3\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u1d27"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u1d28\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136"+ - "\1\u0787\4\136\1\u047e\13\136\1\u1d29\5\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u1d2a\27\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\24\136\1\u1d2b\3\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u1d2c\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u1d2d\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u1d2e\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u1d2f\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u1d30\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u1d31\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\22\136\1\u1d32\5\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1d33\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\7\136\1\u1d34\20\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u1d35\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u1d36\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u1d37\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u1d38\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u1d39\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u1d3a\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136"+ - "\1\u1d3b\5\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u0e42\2\136\1\u1b3e\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u0d03\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u1d3c\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\26\136\1\u1d3d\1\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u1d3e\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1d3f\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u17e7\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u1d40\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u1777"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u1d41\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u1d42\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u0b22\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\24\136"+ - "\1\u171c\3\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136"+ - "\1\u1d43\16\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u01c1"+ - "\21\136\1\u1d44\5\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\11\136\1\u0582\15\136\1\u0582\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u1d45\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u1c1f\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u1cc1\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u1d46\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u1d47\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u1d48\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u1d49\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u1ae2\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u0426\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u1d4a\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u1d4b\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u1d4c\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u119e\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u1d4d\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\25\136\1\u1d4e\2\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u1d4f\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136"+ - "\1\u022f\7\136\1\u0792\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\24\136\1\u1d50\3\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u1d51\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u1d52\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u0e32\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\10\136\1\u11e7\17\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\23\136\1\u1d53\4\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1d54\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u1d55"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u1d56\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u1d57\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u12c9\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136"+ - "\1\u1d58\16\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u0d61\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136\1\u1d59"+ - "\16\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\1\u1d5a\12\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u1a90\22\136"+ - "\1\u0e0d\3\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u0d10\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136"+ - "\1\u1d5b\6\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u1d5c\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u05fa\12\136\1\u1d5d\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u0684\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u1d5e\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1d5f\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1d60\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u1d61\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1d62\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u1d63"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u1d64\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u1d65"+ - "\27\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1d66"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136\1\u10c8"+ - "\16\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\24\136\1\u1d67"+ - "\3\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\27\136\1\u0eda"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\1\u1d68\7\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u10e2\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\24\136\1\u1d69\3\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u0440\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\5\136\1\u1d6a\22\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\16\136\1\u1d6b\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\1\u032f\12\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\22\136\1\u0d5f\5\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u1160\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u17dc\27\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u1d6c\20\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u1d6d\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u1d6e\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u1d6f\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u1d70\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u1d71\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u1d72\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u1d73\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u1d74\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\21\136\1\u1d75\6\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\23\136\1\u0ed1\4\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1d76\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\24\136\1\u0917\3\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u141c\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\136\1\u1d77\26\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u1d78\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u1d79\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u1d7a\2\136\1\u047e\12\136\1\u10f5\6\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u1d7b\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u1d7c\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u1d7d\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u1114\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u085a\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u1d7e\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u1d7f\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\u1d80\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u1d81\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u1a21\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u1d82\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u1d83\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u1d84\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u1d85\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u1d86\1\u0872\20\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u1d87\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u1d88\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u1d89\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u1d8a\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u10a9\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u1d8b\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\21\136\1\u1d8c\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u1d8d\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u1d8e\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\24\136\1\u1c9b\3\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u1d8f\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u1d90\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u1d91\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u1d92\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\21\136\1\u1d93\6\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u1d94\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\22\136\1\u1d95\5\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u0a7c\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u1d96\11\136\1\u1d97\5\136\1\u1d98"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u1d99\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\10\136\1\u1d9a\17\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u1d9b\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u1d9c\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u1d9d\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u1d9e\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u1bcf\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\1\u18a2\7\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\136\1\u1d9f\26\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\22\136\1\u1da0\5\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\12\136\1\u1da1\15\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u1da2\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\24\136\1\u1da3\3\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u1da4\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u1da5\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\24\136\1\u1da6\3\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u1da7\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\1\136"+ - "\1\u1da8\6\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u0684\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u14d5\3\136\1\u1da9\15\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u1daa\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u1dab\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u0d94\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u1dac\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\136\1\u1dad\1\136\1\u1bde\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u1dae\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u0495\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u1daf\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u1ccc\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u1db0\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u1db1\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u1db2\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\24\136\1\u1db3"+ - "\3\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u1db4"+ - "\17\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u1db5"+ - "\24\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u0783\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u1db6\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u0da0\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u0fe8\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u1db7\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\26\136\1\u1db8\1\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\27\136\1\u1db9\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\22\136\1\u112e\5\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u1dba\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u1dbb\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u1dbc\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u177e\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\136\1\u1a90\6\136\1\u0cdc"+ - "\17\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\12\136\1\u0c0a"+ - "\7\136\1\u1dbd\5\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1dbe\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1dbf\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u129c\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u0a21\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\u1dc0"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u1dc1\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u1dc2\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\22\136\1\u1a25\5\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u1dc3\20\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u1dc4\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u03fa\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u1dc5\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u0d41\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\21\136\1\u0f34\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u1dc6\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\11\136\1\u1dc7\16\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u1dc8\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\25\136\1\u1dc9\2\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\136\1\u0ab2\26\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u1d0d\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u1dca\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\136\1\u0782\26\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u1dcb\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\u03bf\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u1dcc\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u1dcd\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u1dce\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\136\1\u1dcf\26\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\11\136\1\u1dd0\16\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\22\136\1\u1dd1\5\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u1dd2\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u1dd3"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136"+ - "\1\u0cd4\5\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136"+ - "\1\u1dd4\6\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u1dd5\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136"+ - "\1\u044f\17\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u1dd6\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\12\136"+ - "\1\u07db\15\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u1dd7\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u0850\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u1dd8\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u1dd9\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u1dda"+ - "\27\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u1ddb"+ - "\20\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u1ddc"+ - "\17\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u1ddd\27\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u1290\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\20\136\1\u1dde\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u1ddf\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u1de0\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u1de1\27\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u1de2\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\23\136\1\u1de3\4\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u1de4\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\11\136\1\u1de5\16\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u1de6\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\136\1\u1de7\26\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\22\136\1\u1de8\5\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u1de9\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u1dea\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u1deb"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u1dec\7\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u07db\3\136\1\u0dcf\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u07c2\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u1ded\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u1dee\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u1def\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u1df0\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\11\136\1\u0942\16\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\1\u06ed\12\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u1df1\3\136\1\u0d54\15\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u1df2\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\5\136\1\u1df3\22\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\11\136\1\u07bf\16\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\24\136\1\u1bd1\3\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u1df4\6\136\1\u1df5\15\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\24\136\1\u1df6\3\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u1cd3\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\27\136\1\u1df7\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\27\136\1\u0ed7\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\10\136\1\u1df8\17\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u1df9\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u1cd8\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\6\136\1\u0b05\21\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\7\136\1\u1dfa\20\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u07e0\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u1dfb\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u1dfc\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u0fb2\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u0cda\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u1dfd"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136"+ - "\1\u1dfe\21\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136"+ - "\1\u1dff\16\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u1e00\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\23\136"+ - "\1\u1e01\4\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u1e02\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u0f34\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\u1e03"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u1e04\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u1e05\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u1e06\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136"+ - "\1\u1e07\16\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136"+ - "\1\u1e08\17\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u057d\3\136\1\u1e09\1\136\1\u0e0d\3\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\12\136\1\u1e0a\15\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\12\136\1\u1e0b\15\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\25\136\1\u1e0c\2\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u1e0d\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\11\136\1\u1e0e\16\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u1e0f\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u1e10\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u1e11\1\136\1\u1d17\17\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\u1e12\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u1e13\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u1e14\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u1d23\5\136\1\u0851\16\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\16\136\1\u1e15\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\6\136\1\u1e16\21\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\24\136\1\u1e17\3\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u1e18\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u1e19\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\22\136\1\u1c60\5\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u1e1a\1\u1e1b\1\u1e1c\1\u1e1d\4\136"+ - "\1\u1e1b\1\136\1\u1e1e\15\136\1\127\2\0\1\u1e1f\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u1e20\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u1e21\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u1e22\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u1e23\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u1e24\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u1e25\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\16\136\1\u1e26\11\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u1e27\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1e28\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\22\136\1\u1e29\5\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\10\136\1\u1e2a\17\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u1e2b\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136"+ - "\1\u1e2c\5\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u1e2d"+ - "\3\136\1\u1032\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u1e2e\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u1ae6\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1e2f\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\22\136\1\u1e30\5\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\22\136\1\u1e31\5\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u1e32\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1e33\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u1e34\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u1931\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\23\136\1\u1e35\4\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u1e36\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136"+ - "\1\u1e37\17\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u1e38\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136"+ - "\1\u062a\1\136\1\u1dbd\5\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\11\136\1\u1715\6\136\1\u0c3e\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\11\136\1\u1715\16\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u1bab\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0338\16\136\1\u1e39\6\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1e3a\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u1983\1\u1980"+ - "\6\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u123a"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\27\136\1\u1e3b"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\1\u1e3c\27\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u1e3d\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\11\136\1\u1e3e\16\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\u1e3f\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u1e40\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u1e41\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u1e42\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u108f\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u1e43\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u1e44\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u1e45\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u1114\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\12\136\1\u0a72\15\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u1e46\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u1e47\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\136\1\u1d4d\26\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u1e48\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u1bab\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u0a21\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u1e49\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\22\136\1\u1bfc\5\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u06a8\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\24\136\1\u1e4a\3\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1e4b\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u1e4c\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1e4d\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u1e4e\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\10\136\1\u1e4f\17\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u080e\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1e50\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\u1e51\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1e52"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1e53"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u1e54"+ - "\6\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1e55"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u1e56\27\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\21\136\1\u1e57\6\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u1e58\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1e59\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u1e5a\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u1e5b\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\20\136\1\u1e5c\7\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u1e5d\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u0543\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u1e5e\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\22\136\1\u0a8d\5\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\21\136\1\u0ab2\6\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u1e5f\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u1e60\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u1e61\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u1e62\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u1e63\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u1e64\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u0841\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\12\136\1\u14cd\15\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\7\136\1\u0fb3\20\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\26\136\1\u0357\1\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u1385\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u1e65\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u1a3e\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u1e66\24\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\5\136\1\u10fe\22\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u1e67\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u1e68\15\136\1\u05aa\3\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u1e69\27\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\3\136\1\u1e6a\24\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\136\1\u1e6b\26\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u1e6c\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u1e6d\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u1e6e\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\11\136\1\u1e6f\16\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\2\136\1\u1e70\25\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u1e71\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\136\1\u1e72\22\136\1\u1e73\3\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\10\136\1\u1e74\17\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u1e75\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u1e76\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\24\136\1\u1e77\3\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u1b4e\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u1e78\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1d36\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u1e79\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u1e7a\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136"+ - "\1\u119f\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u1e7b\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u1e7c\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u1e7d\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\22\136"+ - "\1\u1e7e\5\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u1d3e\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136"+ - "\1\u057e\17\136\1\u1e7f\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\22\136\1\u1e80\5\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\22\136\1\u1e81\5\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\3\136\1\u1e82\3\136\1\u045a\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u1a72\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\u1e83\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u1e84\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u1e85\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\u05ce\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1e86"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136\1\u1e87"+ - "\20\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1e88"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1e89"+ - "\25\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u1e8a"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u0c55"+ - "\3\136\1\u1e8b\1\u1e8c\1\u1e8d\3\136\1\127\2\0\1\136"+ - "\2\0\1\u1e8e\12\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\3\136\1\u1e8f\24\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u1e90\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u1e91\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\10\136\1\u1e92\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\16\136\1\u1e93\11\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\1\u1e94\27\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u1e95\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\10\136"+ - "\1\u1e96\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u1e97\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u1e98\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\16\136\1\u1e50\11\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u1e99\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u1e9a\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\10\136\1\u1e9b\17\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\6\136\1\u119f\21\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u1e9c\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u1e9d\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1e9e\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\7\136\1\u1b12\20\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u1e9f"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\7\136"+ - "\1\u1ea0\20\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136"+ - "\1\u1ea1\23\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u1e32\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u1ea2\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\26\136"+ - "\1\u1ea3\1\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u1ea4\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\1\136\1\u1ea5"+ - "\26\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\12\136\1\u1ea6"+ - "\15\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1ea7"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u1ea8\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u1ea9\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1eaa\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u1eab\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1eac\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1ead\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u06f0\21\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u1eae\24\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\11\136\1\u13af\16\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u1eaf\17\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u1eb0\17\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\26\136\1\u1eb1\1\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1eb2\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u1eb3\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\u18e2\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\30\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\23\136\1\u1d36\4\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\23\136\1\u1eb4\4\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u1eb5\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u1eb6\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\20\136\1\u1eb7\7\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u1eb8\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\21\136\1\u1eb9\6\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\4\136\1\u1eba\23\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\136\1\u1ebb\26\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\23\136\1\u1ebc\4\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\6\136\1\u1ebd\21\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\5\136\1\u0338\14\136\1\u0da0\5\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u1ebe\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\24\136\1\u1e0f\3\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\22\136\1\u1ebf\5\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\25\136\1\u19d2\1\136\1\u184a\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u194a\27\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u1ec0\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u1ec1\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u1ec2\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\6\136\1\u1ec3\21\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u1ec4\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\5\136\1\u1ec5\22\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u1ec6\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\4\136\1\u1e70\23\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\u1ec7\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\27\136\1\u1ec8\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u1ec9"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u1eca\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u1ecb"+ - "\23\136\1\u1da3\3\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\10\136\1\u1ecc\17\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\21\136\1\u1ecd\6\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\12\136\1\u0cd4\15\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u1ece\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1ecf\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\11\136\1\u112e\16\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u17fd\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u1ed0\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u1ed1"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u194a\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u1ed2\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\25\136"+ - "\1\u194a\2\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\24\136"+ - "\1\u1503\3\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u1ed3\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u1ed4"+ - "\7\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1ed5"+ - "\23\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u1ed6"+ - "\17\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\6\136\1\u1ed7"+ - "\21\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136\1\u1ed8"+ - "\24\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\u1ed9\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\16\136\1\u1eda\11\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\11\136\1\u1edb\16\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\3\136\1\u1edc\24\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u1edd\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\u053b\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\1\u1ede\27\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\25\136\1\u1edf\2\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\12\136\1\u1ee0\15\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\10\136\1\u1ee1\17\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u1ee2\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\3\136\1\u1ee3\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\7\136\1\u1ee4\20\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\21\136\1\u1ee5\6\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1ee6\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\21\136\1\u1329\6\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u1ee7\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1ee8\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u062a\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\1\u1ee9"+ - "\2\136\1\u0f7d\24\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u1eea\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\4\136\1\u1eeb\23\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\7\136\1\u1eec\20\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\2\136\1\u1eed\25\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\24\136\1\u1eee\3\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\10\136\1\u1eef"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\30\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\2\136"+ - "\1\u1ef0\25\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\25\136"+ - "\1\u1ef1\2\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\5\136"+ - "\1\u119f\22\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\3\136"+ - "\1\u1ef2\24\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\21\136"+ - "\1\u1ef3\6\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\16\136"+ - "\1\u1ef4\11\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\12\136"+ - "\1\u1ef5\15\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\23\136"+ - "\1\u1ef6\4\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\23\136"+ - "\1\u1ef7\4\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\23\136"+ - "\1\u1ef8\4\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u1ef9\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\11\136\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\11\136\1\u1efa"+ - "\16\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u1efb\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1efc\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\20\136\1\u1efd\7\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\2\136\1\u1efe\25\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\10\136\1\u1eff\17\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\24\136\1\u1f00\3\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\10\136\1\u1f01\1\0\1\136\1\0"+ - "\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\10\136\1\u1f02\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\7\136\1\u1f03\20\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\2\136\1\u1f04\25\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\12\136\1\u1f05\15\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\10\136\1\u1f06\17\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u14f7\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\10\136\1\u1f07\17\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\1\u1f08\27\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\2\136\1\u0fb7\25\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\10\136\1\u119d\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\30\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\10\136\1\u1f09\17\136\1\127\2\0\1\136\2\0"+ - "\13\136\1\0\10\136\1\127\10\0\6\136\1\0\11\136"+ - "\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136"+ - "\14\0\24\136\1\u12be\3\136\1\127\2\0\1\136\2\0"+ - "\1\u12be\12\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\4\136\1\u1f0a\23\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\20\136\1\u1f0b\7\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\11\136\1\u1f0c\16\136\1\127\2\0\1\136"+ - "\2\0\13\136\1\0\10\136\1\127\10\0\6\136\1\0"+ - "\11\136\1\0\1\u1f0d\1\0\1\127\1\u0146\1\136\1\0"+ - "\2\136\14\0\30\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\11\136\1\u1f0e\16\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\20\136\1\u1f0f\7\136\1\127\2\0\1\136\2\0\13\136"+ - "\1\0\10\136\1\127\10\0\6\136\1\0\11\136\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\1\u1f10\27\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\11\136\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\10\136"+ - "\1\u1f11\17\136\1\127\2\0\1\136\2\0\13\136\1\0"+ - "\10\136\1\127\10\0\6\136\1\0\10\136\1\u1f12\1\0"+ - "\1\136\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0"+ - "\30\136\1\127\2\0\1\136\2\0\13\136\1\0\10\136"+ - "\1\127\10\0\6\136\1\0\10\136\1\u1f13\1\0\1\136"+ - "\1\0\1\127\1\u0146\1\136\1\0\2\136\14\0\30\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\11\136\1\u0c83\16\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\4\136\1\u1f14\23\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\16\136\1\u0e4e\11\136"+ - "\1\127\2\0\1\136\2\0\13\136\1\0\10\136\1\127"+ - "\10\0\6\136\1\0\11\136\1\0\1\136\1\0\1\127"+ - "\1\u0146\1\136\1\0\2\136\14\0\30\136\1\127\2\0"+ - "\1\136\2\0\12\136\1\u0ab2\1\0\10\136\1\127\10\0"; - - private static final String ZZ_TRANS_PACKED_7 = - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\12\136\1\u1f15\15\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\u1cdb\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\22\136\1\u0da0\5\136\1\127"+ - "\2\0\1\u03bf\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\5\136\1\u09ff\22\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\21\136\1\u1f16\6\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\4\136\1\u057e\23\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\2\136\1\u1f17\25\136\1\127"+ - "\2\0\1\136\2\0\13\136\1\0\10\136\1\127\10\0"+ - "\6\136\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146"+ - "\1\136\1\0\2\136\14\0\1\u1f18\27\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\20\136\1\u1f19\7\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136\1\127\10\0\6\136"+ - "\1\0\11\136\1\0\1\136\1\0\1\127\1\u0146\1\136"+ - "\1\0\2\136\14\0\16\136\1\u1f1a\11\136\1\127\2\0"+ - "\1\136\2\0\13\136\1\0\10\136"; - - private static int [] zzUnpackTrans() { - int [] result = new int[746112]; - int offset = 0; - offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); - offset = zzUnpackTrans(ZZ_TRANS_PACKED_1, offset, result); - offset = zzUnpackTrans(ZZ_TRANS_PACKED_2, offset, result); - offset = zzUnpackTrans(ZZ_TRANS_PACKED_3, offset, result); - offset = zzUnpackTrans(ZZ_TRANS_PACKED_4, offset, result); - offset = zzUnpackTrans(ZZ_TRANS_PACKED_5, offset, result); - offset = zzUnpackTrans(ZZ_TRANS_PACKED_6, offset, result); - offset = zzUnpackTrans(ZZ_TRANS_PACKED_7, offset, result); - return result; - } - - private static int zzUnpackTrans(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - value--; - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /* error codes */ - private static final int ZZ_UNKNOWN_ERROR = 0; - private static final int ZZ_NO_MATCH = 1; - private static final int ZZ_PUSHBACK_2BIG = 2; - - /* error messages for the codes above */ - private static final String ZZ_ERROR_MSG[] = { - "Unkown internal scanner error", - "Error: could not match input", - "Error: pushback value was too large" - }; - - /** - * ZZ_ATTRIBUTE[aState] contains the attributes of state aState - */ - private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); - - private static final String ZZ_ATTRIBUTE_PACKED_0 = - "\5\0\2\1\1\0\2\1\1\0\2\1\13\0\1\1"+ - "\3\0\2\1\1\11\4\1\1\11\5\1\2\11\3\1"+ - "\1\11\1\1\3\11\1\1\1\11\26\1\1\11\1\1"+ - "\1\11\1\1\7\11\1\1\1\11\2\1\2\11\10\1"+ - "\1\11\3\1\1\11\21\1\1\11\2\1\1\11\2\1"+ - "\1\11\1\1\1\11\1\1\1\11\2\1\1\11\6\1"+ - "\1\11\4\1\1\11\1\1\1\11\40\1\1\11\5\1"+ - "\1\11\2\1\2\11\3\1\1\11\1\1\3\11\1\1"+ - "\1\11\5\1\4\11\4\1\4\11\1\1\1\11\6\1"+ - "\7\11\6\1\1\11\5\0\105\1\1\11\2\0\1\1"+ - "\1\0\1\11\1\0\76\1\1\11\3\1\1\0\1\11"+ - "\11\0\13\1\1\11\307\1\2\11\1\1\1\11\1\0"+ - "\1\11\1\1\15\0\1\1\1\11\5\0\1\1\1\0"+ - "\1\11\3\1\2\0\1\11\4\0\101\1\3\0\1\1"+ - "\1\0\3\1\1\0\67\1\16\0\u0185\1\25\0\2\1"+ - "\1\11\3\0\45\1\3\0\1\11\43\1\2\0\1\11"+ - "\4\0\1\1\3\0\u01fb\1\17\0\1\11\4\0\2\1"+ - "\1\11\2\0\25\1\1\11\1\0\1\11\25\1\2\11"+ - "\6\0\u0278\1\16\0\14\1\1\0\14\1\2\0\u02b3\1"+ - "\12\0\4\1\1\0\6\1\2\0\u02d6\1\6\0\1\1"+ - "\1\0\2\1\2\0\u02a1\1\1\11\4\0\1\1\1\11"+ - "\1\1\2\11\u0267\1\3\0\u021c\1\3\0\1\11\u083e\1"; - - private static int [] zzUnpackAttribute() { - int [] result = new int[7962]; - int offset = 0; - offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAttribute(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - /** the input device */ - private java.io.Reader zzReader; - - /** the current state of the DFA */ - private int zzState; - - /** the current lexical state */ - private int zzLexicalState = YYINITIAL; - - /** this buffer contains the current text to be matched and is - the source of the yytext() string */ - private char zzBuffer[]; - - /** the textposition at the last accepting state */ - private int zzMarkedPos; - - /** the current text position in the buffer */ - private int zzCurrentPos; - - /** startRead marks the beginning of the yytext() string in the buffer */ - private int zzStartRead; - - /** endRead marks the last character in the buffer, that has been read - from input */ - private int zzEndRead; - - /** zzAtEOF == true <=> the scanner is at the EOF */ - private boolean zzAtEOF; - - /* user code: */ - - /** - * Type specific to PHPTokenMaker denoting a line ending with an unclosed - * double-quote attribute. - */ - private static final int INTERNAL_ATTR_DOUBLE = -1; - - - /** - * Type specific to PHPTokenMaker denoting a line ending with an unclosed - * single-quote attribute. - */ - private static final int INTERNAL_ATTR_SINGLE = -2; - - - /** - * Token type specific to PHPTokenMaker; this signals that the user has - * ended a line with an unclosed HTML tag; thus a new line is beginning - * still inside of the tag. - */ - private static final int INTERNAL_INTAG = -3; - - /** - * Token type specific to PHPTokenMaker; this signals that the user has - * ended a line with an unclosed <script> tag. - */ - private static final int INTERNAL_INTAG_SCRIPT = -4; - - /** - * Token type specifying we're in a double-qouted attribute in a - * script tag. - */ - private static final int INTERNAL_ATTR_DOUBLE_QUOTE_SCRIPT = -5; - - /** - * Token type specifying we're in a single-qouted attribute in a - * script tag. - */ - private static final int INTERNAL_ATTR_SINGLE_QUOTE_SCRIPT = -6; - - /** - * Token type specifying that the user has - * ended a line with an unclosed <style> tag. - */ - private static final int INTERNAL_INTAG_STYLE = -7; - - /** - * Token type specifying we're in a double-qouted attribute in a - * style tag. - */ - private static final int INTERNAL_ATTR_DOUBLE_QUOTE_STYLE = -8; - - /** - * Token type specifying we're in a single-qouted attribute in a - * style tag. - */ - private static final int INTERNAL_ATTR_SINGLE_QUOTE_STYLE = -9; - - /** - * Token type specifying we're in JavaScript. - */ - private static final int INTERNAL_IN_JS = -10; - - /** - * Token type specifying we're in a JavaScript multiline comment. - */ - private static final int INTERNAL_IN_JS_MLC = -11; - - /** - * Token type specifying we're in an invalid multi-line JS string. - */ - private static final int INTERNAL_IN_JS_STRING_INVALID = -12; - - /** - * Token type specifying we're in a valid multi-line JS string. - */ - private static final int INTERNAL_IN_JS_STRING_VALID = -13; - - /** - * Token type specifying we're in an invalid multi-line JS single-quoted string. - */ - private static final int INTERNAL_IN_JS_CHAR_INVALID = -14; - - /** - * Token type specifying we're in a valid multi-line JS single-quoted string. - */ - private static final int INTERNAL_IN_JS_CHAR_VALID = -15; - - /** - * Internal type denoting a line ending in CSS. - */ - private static final int INTERNAL_CSS = -16; - - /** - * Internal type denoting a line ending in a CSS property. - */ - private static final int INTERNAL_CSS_PROPERTY = -17; - - /** - * Internal type denoting a line ending in a CSS property value. - */ - private static final int INTERNAL_CSS_VALUE = -18; - - /** - * Internal type denoting line ending in a CSS double-quote string. - * The state to return to is embedded in the actual end token type. - */ - private static final int INTERNAL_CSS_STRING = -(1<<11); - - /** - * Internal type denoting line ending in a CSS single-quote string. - * The state to return to is embedded in the actual end token type. - */ - private static final int INTERNAL_CSS_CHAR = -(2<<11); - - /** - * Internal type denoting line ending in a CSS multi-line comment. - * The state to return to is embedded in the actual end token type. - */ - private static final int INTERNAL_CSS_MLC = -(3<<11); - - /** - * Token type specifying we're in PHP. This particular field is public so - * that we can hack and key off of it for code completion. - */ - public static final int INTERNAL_IN_PHP = -(4<<11); - - /** - * Token type specifying we're in a PHP multiline comment. - */ - private static final int INTERNAL_IN_PHP_MLC = -(5<<11); - - /** - * Token type specifying we're in a PHP multiline string. - */ - private static final int INTERNAL_IN_PHP_STRING = -(6<<11); - - /** - * Token type specifying we're in a PHP multiline char. - */ - private static final int INTERNAL_IN_PHP_CHAR = -(7<<11); - - /** - * The state previous CSS-related state we were in before going into a CSS - * string, multi-line comment, etc. - */ - private int cssPrevState; - - /** - * Whether closing markup tags are automatically completed for PHP. - */ - private static boolean completeCloseTags; - - /** - * The state PHP was started in (YYINITIAL, INTERNAL_IN_JS, etc.). - */ - private int phpInState; - - /** - * The language index we were in when PHP was started. - */ - private int phpInLangIndex; - - /** - * When in the JS_STRING state, whether the current string is valid. - */ - private boolean validJSString; - - /** - * Language state set on HTML tokens. Must be 0. - */ - private static final int LANG_INDEX_DEFAULT = 0; - - /** - * Language state set on JavaScript tokens. - */ - private static final int LANG_INDEX_JS = 1; - - /** - * Language state set on CSS tokens. - */ - private static final int LANG_INDEX_CSS = 2; - - - /** - * Language state set on PHP. - */ - private static final int LANG_INDEX_PHP = 3; - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public PHPTokenMaker() { - super(); - } - - - /** - * Adds the token specified to the current linked list of tokens as an - * "end token;" that is, at zzMarkedPos. - * - * @param tokenType The token's type. - */ - private void addEndToken(int tokenType) { - addToken(zzMarkedPos,zzMarkedPos, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addToken(int, int, int) - */ - private void addHyperlinkToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, true); - } - - - /** - * Adds an end token that encodes the information necessary to return - * to the pre-PHP state and language index. - * - * @param endTokenState The PHP-related end-token state. - */ - private void addPhpEndToken(int endTokenState) { - addEndToken(endTokenState - phpInState - (phpInLangIndex<<16)); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, int startOffset) { - super.addToken(array, start,end, tokenType, startOffset); - zzStartRead = zzMarkedPos; - } - - - /** - * {@inheritDoc} - */ - @Override - protected OccurrenceMarker createOccurrenceMarker() { - return new HtmlOccurrenceMarker(); - } - - - /** - * Sets whether markup close tags should be completed. You might not want - * this to be the case, since some tags in standard HTML aren't usually - * closed. - * - * @return Whether closing markup tags are completed. - * @see #setCompleteCloseTags(boolean) - */ - @Override - public boolean getCompleteCloseTags() { - return completeCloseTags; - } - - - @Override - public boolean getCurlyBracesDenoteCodeBlocks(int languageIndex) { - return languageIndex==LANG_INDEX_CSS || languageIndex==LANG_INDEX_JS || - languageIndex==LANG_INDEX_PHP; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - switch (languageIndex) { - case LANG_INDEX_JS: - case LANG_INDEX_PHP: - return new String[] { "//", null }; - case LANG_INDEX_CSS: - return new String[] { "/*", "*/" }; - default: - return new String[] { "" }; - } - } - - - /** - * {@inheritDoc} - */ - @Override - public boolean getMarkOccurrencesOfTokenType(int type) { - return type==Token.FUNCTION || type==Token.VARIABLE || - type==Token.MARKUP_TAG_NAME; - } - - - /** - * Overridden to handle newlines in JS and CSS differently than those in - * markup. - */ - @Override - public boolean getShouldIndentNextLineAfter(Token token) { - int languageIndex = token==null ? 0 : token.getLanguageIndex(); - if (getCurlyBracesDenoteCodeBlocks(languageIndex)) { - if (token!=null && token.length()==1) { - char ch = token.charAt(0); - return ch=='{' || ch=='('; - } - } - return false; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - phpInState = YYINITIAL; // Shouldn't be necessary - cssPrevState = CSS; // Shouldn't be necessary - int languageIndex = LANG_INDEX_DEFAULT; - - // Start off in the proper state. - int state = Token.NULL; - switch (initialTokenType) { - case Token.MARKUP_COMMENT: - state = COMMENT; - break; - case Token.VARIABLE: - state = DTD; - break; - case INTERNAL_INTAG: - state = INTAG; - break; - case INTERNAL_INTAG_SCRIPT: - state = INTAG_SCRIPT; - break; - case INTERNAL_INTAG_STYLE: - state = INTAG_STYLE; - break; - case INTERNAL_ATTR_DOUBLE: - state = INATTR_DOUBLE; - break; - case INTERNAL_ATTR_SINGLE: - state = INATTR_SINGLE; - break; - case INTERNAL_ATTR_DOUBLE_QUOTE_SCRIPT: - state = INATTR_DOUBLE_SCRIPT; - break; - case INTERNAL_ATTR_SINGLE_QUOTE_SCRIPT: - state = INATTR_SINGLE_SCRIPT; - break; - case INTERNAL_ATTR_DOUBLE_QUOTE_STYLE: - state = INATTR_DOUBLE_STYLE; - break; - case INTERNAL_ATTR_SINGLE_QUOTE_STYLE: - state = INATTR_SINGLE_STYLE; - break; - case INTERNAL_IN_JS: - state = JAVASCRIPT; - languageIndex = LANG_INDEX_JS; - break; - case INTERNAL_IN_JS_MLC: - state = JS_MLC; - languageIndex = LANG_INDEX_JS; - break; - case INTERNAL_IN_JS_STRING_INVALID: - state = JS_STRING; - languageIndex = LANG_INDEX_JS; - validJSString = false; - break; - case INTERNAL_IN_JS_STRING_VALID: - state = JS_STRING; - languageIndex = LANG_INDEX_JS; - validJSString = true; - break; - case INTERNAL_IN_JS_CHAR_INVALID: - state = JS_CHAR; - languageIndex = LANG_INDEX_JS; - validJSString = false; - break; - case INTERNAL_IN_JS_CHAR_VALID: - state = JS_CHAR; - languageIndex = LANG_INDEX_JS; - validJSString = true; - break; - case INTERNAL_CSS: - state = CSS; - languageIndex = LANG_INDEX_CSS; - break; - case INTERNAL_CSS_PROPERTY: - state = CSS_PROPERTY; - languageIndex = LANG_INDEX_CSS; - break; - case INTERNAL_CSS_VALUE: - state = CSS_VALUE; - languageIndex = LANG_INDEX_CSS; - break; - default: - if (initialTokenType<-1024) { // INTERNAL_IN_PHPxxx - phpInState - int main = -(-initialTokenType & 0x0000ff00); - switch (main) { - default: // Should never happen - case INTERNAL_IN_PHP: - state = PHP; - languageIndex = LANG_INDEX_PHP; - phpInState = -initialTokenType&0xff; - phpInLangIndex = (-initialTokenType&0x00ff0000)>>16; - break; - case INTERNAL_IN_PHP_MLC: - state = PHP_MLC; - languageIndex = LANG_INDEX_PHP; - phpInState = -initialTokenType&0xff; - phpInLangIndex = (-initialTokenType&0x00ff0000)>>16; - break; - case INTERNAL_IN_PHP_STRING: - state = PHP_STRING; - languageIndex = LANG_INDEX_PHP; - phpInState = -initialTokenType&0xff; - phpInLangIndex = (-initialTokenType&0x00ff0000)>>16; - break; - case INTERNAL_IN_PHP_CHAR: - state = PHP_CHAR; - languageIndex = LANG_INDEX_PHP; - phpInState = -initialTokenType&0xff; - phpInLangIndex = (-initialTokenType&0x00ff0000)>>16; - break; - case INTERNAL_CSS_STRING: - state = CSS_STRING; - languageIndex = LANG_INDEX_CSS; - cssPrevState = -initialTokenType&0xff; - break; - case INTERNAL_CSS_CHAR: - state = CSS_CHAR_LITERAL; - languageIndex = LANG_INDEX_CSS; - cssPrevState = -initialTokenType&0xff; - break; - case INTERNAL_CSS_MLC: - state = CSS_C_STYLE_COMMENT; - languageIndex = LANG_INDEX_CSS; - cssPrevState = -initialTokenType&0xff; - break; - } - } - else { - state = YYINITIAL; - } - break; - } - - setLanguageIndex(languageIndex); - start = text.offset; - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Sets whether markup close tags should be completed. You might not want - * this to be the case, since some tags in standard HTML aren't usually - * closed. - * - * @param complete Whether closing markup tags are completed. - * @see #getCompleteCloseTags() - */ - public static void setCompleteCloseTags(boolean complete) { - completeCloseTags = complete; - } - - - /** - * Overridden to remember the language index we're leaving. - */ - @Override - protected void yybegin(int state, int languageIndex) { - phpInLangIndex = getLanguageIndex(); - yybegin(state); - setLanguageIndex(languageIndex); - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtEOF = false; - } - - - - - /** - * Creates a new scanner - * There is also a java.io.InputStream version of this constructor. - * - * @param in the java.io.Reader to read input from. - */ - public PHPTokenMaker(java.io.Reader in) { - this.zzReader = in; - } - - /** - * Creates a new scanner. - * There is also java.io.Reader version of this constructor. - * - * @param in the java.io.Inputstream to read input from. - */ - public PHPTokenMaker(java.io.InputStream in) { - this(new java.io.InputStreamReader(in)); - } - - /** - * Unpacks the compressed character translation table. - * - * @param packed the packed character translation table - * @return the unpacked character translation table - */ - private static char [] zzUnpackCMap(String packed) { - char [] map = new char[0x10000]; - int i = 0; /* index in packed string */ - int j = 0; /* index in unpacked array */ - while (i < 206) { - int count = packed.charAt(i++); - char value = packed.charAt(i++); - do map[j++] = value; while (--count > 0); - } - return map; - } - - - /** - * Closes the input stream. - */ - public final void yyclose() throws java.io.IOException { - zzAtEOF = true; /* indicate end of file */ - zzEndRead = zzStartRead; /* invalidate buffer */ - - if (zzReader != null) - zzReader.close(); - } - - - /** - * Returns the current lexical state. - */ - public final int yystate() { - return zzLexicalState; - } - - - /** - * Enters a new lexical state - * - * @param newState the new lexical state - */ - @Override - public final void yybegin(int newState) { - zzLexicalState = newState; - } - - - /** - * Returns the text matched by the current regular expression. - */ - public final String yytext() { - return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead ); - } - - - /** - * Returns the character at position pos from the - * matched text. - * - * It is equivalent to yytext().charAt(pos), but faster - * - * @param pos the position of the character to fetch. - * A value from 0 to yylength()-1. - * - * @return the character at position pos - */ - public final char yycharat(int pos) { - return zzBuffer[zzStartRead+pos]; - } - - - /** - * Returns the length of the matched text region. - */ - public final int yylength() { - return zzMarkedPos-zzStartRead; - } - - - /** - * Reports an error that occured while scanning. - * - * In a wellformed scanner (no or only correct usage of - * yypushback(int) and a match-all fallback rule) this method - * will only be called with things that "Can't Possibly Happen". - * If this method is called, something is seriously wrong - * (e.g. a JFlex bug producing a faulty scanner etc.). - * - * Usual syntax/scanner level error handling should be done - * in error fallback rules. - * - * @param errorCode the code of the errormessage to display - */ - private void zzScanError(int errorCode) { - String message; - try { - message = ZZ_ERROR_MSG[errorCode]; - } - catch (ArrayIndexOutOfBoundsException e) { - message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; - } - - throw new Error(message); - } - - - /** - * Pushes the specified amount of characters back into the input stream. - * - * They will be read again by then next call of the scanning method - * - * @param number the number of characters to be read again. - * This number must not be greater than yylength()! - */ - public void yypushback(int number) { - if ( number > yylength() ) - zzScanError(ZZ_PUSHBACK_2BIG); - - zzMarkedPos -= number; - } - - - /** - * Resumes scanning until the next regular expression is matched, - * the end of input is encountered or an I/O-Error occurs. - * - * @return the next token - * @exception java.io.IOException if any I/O-Error occurs - */ - public org.fife.ui.rsyntaxtextarea.Token yylex() throws java.io.IOException { - int zzInput; - int zzAction; - - // cached fields: - int zzCurrentPosL; - int zzMarkedPosL; - int zzEndReadL = zzEndRead; - char [] zzBufferL = zzBuffer; - char [] zzCMapL = ZZ_CMAP; - - int [] zzTransL = ZZ_TRANS; - int [] zzRowMapL = ZZ_ROWMAP; - int [] zzAttrL = ZZ_ATTRIBUTE; - - while (true) { - zzMarkedPosL = zzMarkedPos; - - zzAction = -1; - - zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; - - zzState = zzLexicalState; - - - zzForAction: { - while (true) { - - if (zzCurrentPosL < zzEndReadL) - zzInput = zzBufferL[zzCurrentPosL++]; - else if (zzAtEOF) { - zzInput = YYEOF; - break zzForAction; - } - else { - // store back cached positions - zzCurrentPos = zzCurrentPosL; - zzMarkedPos = zzMarkedPosL; - boolean eof = zzRefill(); - // get translated positions and possibly new buffer - zzCurrentPosL = zzCurrentPos; - zzMarkedPosL = zzMarkedPos; - zzBufferL = zzBuffer; - zzEndReadL = zzEndRead; - if (eof) { - zzInput = YYEOF; - break zzForAction; - } - else { - zzInput = zzBufferL[zzCurrentPosL++]; - } - } - int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; - if (zzNext == -1) break zzForAction; - zzState = zzNext; - - int zzAttributes = zzAttrL[zzState]; - if ( (zzAttributes & 1) == 1 ) { - zzAction = zzState; - zzMarkedPosL = zzCurrentPosL; - if ( (zzAttributes & 8) == 8 ) break zzForAction; - } - - } - } - - // store back cached position - zzMarkedPos = zzMarkedPosL; - - switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { - case 99: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addToken(temp,zzMarkedPos-1, Token.VARIABLE); start = zzMarkedPos; - } - case 122: break; - case 65: - { addToken(Token.OPERATOR); yybegin(CSS_VALUE); - } - case 123: break; - case 84: - { addToken(Token.ERROR_NUMBER_FORMAT); - } - case 124: break; - case 73: - { addToken(start,zzStartRead-1, Token.LITERAL_CHAR); addEndToken(INTERNAL_CSS_CHAR - cssPrevState); return firstToken; - } - case 125: break; - case 23: - { start = zzMarkedPos-1; yybegin(INATTR_SINGLE_SCRIPT); - } - case 126: break; - case 9: - { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.MARKUP_DTD); - } - case 127: break; - case 60: - { addToken(Token.SEPARATOR); yybegin(CSS_PROPERTY); - } - case 128: break; - case 4: - { addToken(Token.MARKUP_TAG_DELIMITER); yybegin(INTAG); - } - case 129: break; - case 114: - { addToken(Token.RESERVED_WORD_2); - } - case 130: break; - case 102: - { addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); yybegin(cssPrevState); - } - case 131: break; - case 100: - { start = zzMarkedPos-2; cssPrevState = zzLexicalState; yybegin(CSS_C_STYLE_COMMENT); - } - case 132: break; - case 36: - { /* Line ending in '\' => continue to next line. */ - if (validJSString) { - addToken(start,zzStartRead, Token.LITERAL_CHAR); - addEndToken(INTERNAL_IN_JS_CHAR_VALID); - } - else { - addToken(start,zzStartRead, Token.ERROR_CHAR); - addEndToken(INTERNAL_IN_JS_CHAR_INVALID); - } - return firstToken; - } - case 133: break; - case 5: - { addToken(Token.WHITESPACE); - } - case 134: break; - case 116: - { addToken(zzStartRead,zzStartRead, Token.MARKUP_TAG_DELIMITER); - addToken(zzMarkedPos-6,zzMarkedPos-1, Token.MARKUP_TAG_NAME); - start = zzMarkedPos; yybegin(INTAG_SCRIPT); - } - case 135: break; - case 101: - { addToken(Token.REGEX); - } - case 136: break; - case 41: - { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_IN_JS_MLC); return firstToken; - } - case 137: break; - case 120: - { int temp = zzStartRead; - addToken(start,zzStartRead-1, Token.COMMENT_EOL); - yybegin(YYINITIAL, LANG_INDEX_DEFAULT); - addToken(temp,temp+1, Token.MARKUP_TAG_DELIMITER); - addToken(zzMarkedPos-7,zzMarkedPos-2, Token.MARKUP_TAG_NAME); - addToken(zzMarkedPos-1,zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER); - } - case 138: break; - case 96: - { addToken(Token.FUNCTION); - } - case 139: break; - case 38: - { addToken(start,zzStartRead-1, Token.ERROR_STRING_DOUBLE); addEndToken(INTERNAL_IN_JS); return firstToken; - } - case 140: break; - case 56: - { start = zzMarkedPos-1; cssPrevState = zzLexicalState; yybegin(CSS_STRING); - } - case 141: break; - case 25: - { start = zzMarkedPos-1; yybegin(INATTR_DOUBLE_STYLE); - } - case 142: break; - case 88: - { /* Skip all escaped chars. */ - } - case 143: break; - case 81: - { addToken(Token.MARKUP_TAG_DELIMITER); yybegin(YYINITIAL); - } - case 144: break; - case 28: - { yybegin(INTAG_STYLE); addToken(start,zzStartRead, Token.MARKUP_TAG_ATTRIBUTE_VALUE); - } - case 145: break; - case 111: - { if(JavaScriptTokenMaker.isJavaScriptCompatible("1.6")){ addToken(Token.RESERVED_WORD);} else {addToken(Token.IDENTIFIER);} - } - case 146: break; - case 106: - { if(JavaScriptTokenMaker.isJavaScriptCompatible("1.7")){ addToken(Token.RESERVED_WORD);} else {addToken(Token.IDENTIFIER);} - } - case 147: break; - case 44: - { start = zzMarkedPos-1; yybegin(PHP_STRING); - } - case 148: break; - case 66: - { /*System.out.println("css_value: " + yytext());*/ addToken(Token.IDENTIFIER); - } - case 149: break; - case 91: - { int temp=zzStartRead; if (zzStartRead>start) addToken(start,zzStartRead-1, validJSString ? Token.LITERAL_STRING_DOUBLE_QUOTE : Token.ERROR_STRING_DOUBLE); validJSString = true; addToken(temp, zzMarkedPos-1, Token.SEPARATOR); phpInState = zzLexicalState; yybegin(PHP, LANG_INDEX_PHP); - } - case 150: break; - case 16: - { /* A non-recognized HTML tag name */ yypushback(yylength()); yybegin(INTAG); - } - case 151: break; - case 26: - { addToken(Token.MARKUP_TAG_DELIMITER); yybegin(CSS, LANG_INDEX_CSS); - } - case 152: break; - case 74: - { addToken(start,zzStartRead, Token.LITERAL_CHAR); yybegin(cssPrevState); - } - case 153: break; - case 87: - { int temp=zzStartRead; if (zzStartRead>start) addToken(start,zzStartRead-1, validJSString ? Token.LITERAL_CHAR : Token.ERROR_CHAR); validJSString = true; addToken(temp, zzMarkedPos-1, Token.SEPARATOR); phpInState = zzLexicalState; yybegin(PHP, LANG_INDEX_PHP); - } - case 154: break; - case 79: - { addToken(Token.SEPARATOR); phpInState = zzLexicalState; yybegin(PHP, LANG_INDEX_PHP); - } - case 155: break; - case 27: - { start = zzMarkedPos-1; yybegin(INATTR_SINGLE_STYLE); - } - case 156: break; - case 19: - { /* Allowing "start) addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addToken(temp, zzMarkedPos-1, Token.SEPARATOR); phpInState = zzLexicalState; yybegin(PHP, LANG_INDEX_PHP); - } - case 181: break; - case 113: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_EOL); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_EOL); start = zzMarkedPos; - } - case 182: break; - case 93: - { start = zzMarkedPos-2; yybegin(PHP_MLC); - } - case 183: break; - case 52: - { /* Skip escaped single quotes only, but this should still work. */ - } - case 184: break; - case 64: - { addToken(Token.SEPARATOR); yybegin(CSS); - } - case 185: break; - case 119: - { yybegin(YYINITIAL); - int temp = zzStartRead; - addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); - addToken(temp,temp+1, Token.MARKUP_TAG_DELIMITER); - addToken(zzMarkedPos-7,zzMarkedPos-2, Token.MARKUP_TAG_NAME); - addToken(zzMarkedPos-1,zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER); - } - case 186: break; - case 31: - { start = zzMarkedPos-1; validJSString = true; yybegin(JS_STRING); - } - case 187: break; - case 72: - { addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); yybegin(cssPrevState); - } - case 188: break; - case 62: - { addEndToken(INTERNAL_CSS_PROPERTY); return firstToken; - } - case 189: break; - case 43: - { addPhpEndToken(INTERNAL_IN_PHP); return firstToken; - } - case 190: break; - case 37: - { int type = validJSString ? Token.LITERAL_CHAR : Token.ERROR_CHAR; addToken(start,zzStartRead, type); yybegin(JAVASCRIPT); - } - case 191: break; - case 97: - { int count = yylength(); - addToken(zzStartRead,zzStartRead, Token.FUNCTION); - zzMarkedPos -= (count-1); //yypushback(count-1); - } - case 192: break; - case 34: - { start = zzMarkedPos-1; validJSString = true; yybegin(JS_CHAR); - } - case 193: break; - case 24: - { addToken(start,zzStartRead, Token.MARKUP_TAG_ATTRIBUTE_VALUE); yybegin(INTAG_SCRIPT); - } - case 194: break; - case 83: - { start = zzMarkedPos-2; yybegin(JS_MLC); - } - case 195: break; - case 86: - { addToken(Token.LITERAL_NUMBER_HEXADECIMAL); - } - case 196: break; - case 70: - { int temp = zzMarkedPos - 2; - addToken(zzStartRead, temp, Token.FUNCTION); - addToken(zzMarkedPos-1, zzMarkedPos-1, Token.SEPARATOR); - zzStartRead = zzCurrentPos = zzMarkedPos; - } - case 197: break; - case 48: - { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addPhpEndToken(INTERNAL_IN_PHP_STRING); return firstToken; - } - case 198: break; - case 121: - { addToken(Token.ANNOTATION); - } - case 199: break; - case 98: - { yybegin(PHP); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); - } - case 200: break; - case 49: - { yybegin(PHP); addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); - } - case 201: break; - case 29: - { addToken(Token.ERROR_IDENTIFIER); - } - case 202: break; - case 67: - { addEndToken(INTERNAL_CSS_VALUE); return firstToken; - } - case 203: break; - case 108: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.MARKUP_COMMENT); addHyperlinkToken(temp,zzMarkedPos-1, Token.MARKUP_COMMENT); start = zzMarkedPos; - } - case 204: break; - case 6: - { addToken(Token.MARKUP_ENTITY_REFERENCE); - } - case 205: break; - case 110: - { addToken(Token.LITERAL_BOOLEAN); - } - case 206: break; - case 17: - { /* Shouldn't happen */ yypushback(1); yybegin(INTAG); - } - case 207: break; - case 3: - { addNullToken(); return firstToken; - } - case 208: break; - case 55: - { addEndToken(INTERNAL_CSS); return firstToken; - } - case 209: break; - case 118: - { yybegin(YYINITIAL, LANG_INDEX_DEFAULT); - addToken(zzStartRead,zzStartRead+1, Token.MARKUP_TAG_DELIMITER); - addToken(zzMarkedPos-7,zzMarkedPos-2, Token.MARKUP_TAG_NAME); - addToken(zzMarkedPos-1,zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER); - } - case 210: break; - case 59: - { start = zzMarkedPos-1; cssPrevState = zzLexicalState; yybegin(CSS_CHAR_LITERAL); - } - case 211: break; - case 78: - { addToken(Token.MARKUP_TAG_DELIMITER); phpInState = zzLexicalState; yybegin(PHP, LANG_INDEX_PHP); - } - case 212: break; - case 63: - { addToken(Token.RESERVED_WORD); - } - case 213: break; - case 11: - { start = zzMarkedPos-1; yybegin(INATTR_DOUBLE); - } - case 214: break; - case 45: - { addToken(Token.COMMENT_EOL); addPhpEndToken(INTERNAL_IN_PHP); return firstToken; - } - case 215: break; - case 13: - { yybegin(YYINITIAL); addToken(Token.MARKUP_TAG_DELIMITER); - } - case 216: break; - case 57: - { addToken(Token.DATA_TYPE); - } - case 217: break; - case 51: - { addToken(start,zzStartRead-1, Token.LITERAL_CHAR); addPhpEndToken(INTERNAL_IN_PHP_CHAR); return firstToken; - } - case 218: break; - case 53: - { yybegin(PHP); addToken(start,zzStartRead, Token.LITERAL_CHAR); - } - case 219: break; - case 33: - { addToken(Token.SEPARATOR); - } - case 220: break; - case 103: - { int count = yylength(); - addToken(zzStartRead,zzStartRead+1, Token.MARKUP_TAG_DELIMITER); - zzMarkedPos -= (count-2); //yypushback(count-2); - yybegin(INTAG_CHECK_TAG_NAME); - } - case 221: break; - case 71: - { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addEndToken(INTERNAL_CSS_STRING - cssPrevState); return firstToken; - } - case 222: break; - case 69: - { /* End of a function */ addToken(Token.SEPARATOR); - } - case 223: break; - case 18: - { addToken(Token.MARKUP_TAG_NAME); - } - case 224: break; - case 10: - { addToken(Token.MARKUP_TAG_ATTRIBUTE); - } - case 225: break; - case 46: - { start = zzMarkedPos-1; yybegin(PHP_CHAR); - } - case 226: break; - case 95: - { yybegin(phpInState, phpInLangIndex); addToken(Token.MARKUP_TAG_DELIMITER); start = zzMarkedPos; - } - case 227: break; - case 82: - { start = zzMarkedPos-2; yybegin(JS_EOL_COMMENT); - } - case 228: break; - case 40: - { /* Line ending in '\' => continue to next line. */ - if (validJSString) { - addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); - addEndToken(INTERNAL_IN_JS_STRING_VALID); - } - else { - addToken(start,zzStartRead, Token.ERROR_STRING_DOUBLE); - addEndToken(INTERNAL_IN_JS_STRING_INVALID); - } - return firstToken; - } - case 229: break; - case 85: - { addToken(Token.LITERAL_NUMBER_FLOAT); - } - case 230: break; - case 15: - { start = zzMarkedPos-1; yybegin(INATTR_SINGLE); - } - case 231: break; - case 105: - { boolean highlightedAsRegex = false; - if (firstToken==null) { - addToken(Token.REGEX); - highlightedAsRegex = true; - } - else { - // If this is *likely* to be a regex, based on - // the previous token, highlight it as such. - Token t = firstToken.getLastNonCommentNonWhitespaceToken(); - if (RSyntaxUtilities.regexCanFollowInJavaScript(t)) { - addToken(Token.REGEX); - highlightedAsRegex = true; - } - } - // If it doesn't *appear* to be a regex, highlight it as - // individual tokens. - if (!highlightedAsRegex) { - int temp = zzStartRead + 1; - addToken(zzStartRead, zzStartRead, Token.OPERATOR); - zzStartRead = zzCurrentPos = zzMarkedPos = temp; - } - } - case 232: break; - case 75: - { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_CSS_MLC - cssPrevState); return firstToken; - } - case 233: break; - case 12: - { addToken(Token.MARKUP_TAG_DELIMITER); - } - case 234: break; - case 32: - { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); - } - case 235: break; - case 77: - { start = zzMarkedPos-2; yybegin(DTD); - } - case 236: break; - case 20: - { addToken(start,zzStartRead, Token.MARKUP_TAG_ATTRIBUTE_VALUE); yybegin(INTAG); - } - case 237: break; - case 47: - { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addPhpEndToken(INTERNAL_IN_PHP_MLC); return firstToken; - } - case 238: break; - case 21: - { start = zzMarkedPos-1; yybegin(INATTR_DOUBLE_SCRIPT); - } - case 239: break; - case 42: - { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addEndToken(INTERNAL_IN_JS); return firstToken; - } - case 240: break; - case 58: - { /* Unknown pseudo class */ addToken(Token.DATA_TYPE); - } - case 241: break; - case 1: - { - } - case 242: break; - default: - if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { - zzAtEOF = true; - switch (zzLexicalState) { - case PHP: { - addPhpEndToken(INTERNAL_IN_PHP); return firstToken; - } - case 7963: break; - case INATTR_SINGLE_SCRIPT: { - addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_SINGLE_QUOTE_SCRIPT); return firstToken; - } - case 7964: break; - case JS_CHAR: { - addToken(start,zzStartRead-1, Token.ERROR_CHAR); addEndToken(INTERNAL_IN_JS); return firstToken; - } - case 7965: break; - case CSS_STRING: { - addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addEndToken(INTERNAL_CSS_STRING - cssPrevState); return firstToken; - } - case 7966: break; - case JS_MLC: { - addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_IN_JS_MLC); return firstToken; - } - case 7967: break; - case CSS_CHAR_LITERAL: { - addToken(start,zzStartRead-1, Token.LITERAL_CHAR); addEndToken(INTERNAL_CSS_CHAR - cssPrevState); return firstToken; - } - case 7968: break; - case INTAG_SCRIPT: { - addToken(zzMarkedPos,zzMarkedPos, INTERNAL_INTAG_SCRIPT); return firstToken; - } - case 7969: break; - case CSS_PROPERTY: { - addEndToken(INTERNAL_CSS_PROPERTY); return firstToken; - } - case 7970: break; - case CSS_C_STYLE_COMMENT: { - addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_CSS_MLC - cssPrevState); return firstToken; - } - case 7971: break; - case PHP_MLC: { - addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addPhpEndToken(INTERNAL_IN_PHP_MLC); return firstToken; - } - case 7972: break; - case CSS: { - addEndToken(INTERNAL_CSS); return firstToken; - } - case 7973: break; - case CSS_VALUE: { - addEndToken(INTERNAL_CSS_VALUE); return firstToken; - } - case 7974: break; - case COMMENT: { - addToken(start,zzStartRead-1, Token.MARKUP_COMMENT); return firstToken; - } - case 7975: break; - case INATTR_DOUBLE_SCRIPT: { - addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_DOUBLE_QUOTE_SCRIPT); return firstToken; - } - case 7976: break; - case PHP_STRING: { - addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addPhpEndToken(INTERNAL_IN_PHP_STRING); return firstToken; - } - case 7977: break; - case JAVASCRIPT: { - addEndToken(INTERNAL_IN_JS); return firstToken; - } - case 7978: break; - case INTAG: { - addToken(zzMarkedPos,zzMarkedPos, INTERNAL_INTAG); return firstToken; - } - case 7979: break; - case INTAG_CHECK_TAG_NAME: { - addToken(zzMarkedPos,zzMarkedPos, INTERNAL_INTAG); return firstToken; - } - case 7980: break; - case INATTR_SINGLE_STYLE: { - addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_SINGLE_QUOTE_STYLE); return firstToken; - } - case 7981: break; - case DTD: { - addToken(start,zzStartRead-1, Token.MARKUP_DTD); return firstToken; - } - case 7982: break; - case PHP_CHAR: { - addToken(start,zzStartRead-1, Token.LITERAL_CHAR); addPhpEndToken(INTERNAL_IN_PHP_CHAR); return firstToken; - } - case 7983: break; - case JS_EOL_COMMENT: { - addToken(start,zzStartRead-1, Token.COMMENT_EOL); addEndToken(INTERNAL_IN_JS); return firstToken; - } - case 7984: break; - case INATTR_DOUBLE_STYLE: { - addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_DOUBLE_QUOTE_STYLE); return firstToken; - } - case 7985: break; - case INATTR_SINGLE: { - addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_SINGLE); return firstToken; - } - case 7986: break; - case YYINITIAL: { - addNullToken(); return firstToken; - } - case 7987: break; - case INATTR_DOUBLE: { - addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_DOUBLE); return firstToken; - } - case 7988: break; - case JS_STRING: { - addToken(start,zzStartRead-1, Token.ERROR_STRING_DOUBLE); addEndToken(INTERNAL_IN_JS); return firstToken; - } - case 7989: break; - case INTAG_STYLE: { - addToken(zzMarkedPos,zzMarkedPos, INTERNAL_INTAG_STYLE); return firstToken; - } - case 7990: break; - default: - return null; - } - } - else { - zzScanError(ZZ_NO_MATCH); - } - } - } - } - - -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/PerlTokenMaker.flex b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/PerlTokenMaker.flex deleted file mode 100644 index 1601f98..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/PerlTokenMaker.flex +++ /dev/null @@ -1,808 +0,0 @@ -/* - * 01/26/2008 - * - * PerlTokenMaker.java - Scanner for Perl - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * Scanner for Perl.

- * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated PerlTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.5 - * - */ -%% - -%public -%class PerlTokenMaker -%extends AbstractJFlexCTokenMaker -%unicode -%type org.fife.ui.rsyntaxtextarea.Token - - -%{ - - /** - * Token type specific to PerlTokenMaker; this signals that we are inside - * an unquoted/double quoted/backtick EOF heredoc. - */ - public static final int INTERNAL_HEREDOC_EOF_UNQUOTED = -1; - - /** - * Token type specific to PerlTokenMaker; this signals that we are inside - * an single quoted EOF heredoc. - */ - public static final int INTERNAL_HEREDOC_EOF_SINGLE_QUOTED = -2; - - /** - * Token type specific to PerlTokenMaker; this signals that we are inside - * an unquoted/double quoted/backtick EOT heredoc. - */ - public static final int INTERNAL_HEREDOC_EOT_UNQUOTED = -3; - - /** - * Token type specific to PerlTokenMaker; this signals that we are inside - * an single quoted EOT heredoc. - */ - public static final int INTERNAL_HEREDOC_EOT_SINGLE_QUOTED = -4; - - /** - * Token type specific to PerlTokenMaker; this signals we are in a POD - * block. - */ - public static final int INTERNAL_POD = -5; - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public PerlTokenMaker() { - } - - - /** - * Adds the token specified to the current linked list of tokens as an - * "end token;" that is, at zzMarkedPos. - * - * @param tokenType The token's type. - */ - private void addEndToken(int tokenType) { - addToken(zzMarkedPos,zzMarkedPos, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, int startOffset) { - super.addToken(array, start,end, tokenType, startOffset); - zzStartRead = zzMarkedPos; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { "#", null }; - } - - - /** - * {@inheritDoc} - */ - public boolean getMarkOccurrencesOfTokenType(int type) { - return super.getMarkOccurrencesOfTokenType(type) || type==Token.VARIABLE; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - - // Start off in the proper state. - int state = Token.NULL; - switch (initialTokenType) { - case Token.LITERAL_STRING_DOUBLE_QUOTE: - state = STRING; - start = text.offset; - break; - case Token.LITERAL_CHAR: - state = CHAR_LITERAL; - start = text.offset; - break; - case Token.LITERAL_BACKQUOTE: - state = BACKTICKS; - start = text.offset; - break; - case INTERNAL_HEREDOC_EOF_UNQUOTED: - state = HEREDOC_EOF_UNQUOTED; - start = text.offset; - break; - case INTERNAL_HEREDOC_EOF_SINGLE_QUOTED: - state = HEREDOC_EOF_SINGLE_QUOTED; - start = text.offset; - break; - case INTERNAL_HEREDOC_EOT_UNQUOTED: - state = HEREDOC_EOT_UNQUOTED; - start = text.offset; - break; - case INTERNAL_HEREDOC_EOT_SINGLE_QUOTED: - state = HEREDOC_EOT_SINGLE_QUOTED; - start = text.offset; - break; - case INTERNAL_POD: - state = POD; - start = text.offset; - break; - default: - state = Token.NULL; - } - - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Returns whether a regular expression token can follow the specified - * token. - * - * @param t The token to check, which may be null. - * @return Whether a regular expression token may follow this one. - */ - private static final boolean regexCanFollow(Token t) { - char ch; - // We basically try to mimic Eclipse's JS editor's behavior here. - return t==null || - //t.isOperator() || - (t.length()==1 && ( - (ch=t.charAt(0))=='=' || - ch=='(' || - ch==',' || - ch=='?' || - ch==':' || - ch=='[' || - ch=='!' || - ch=='&' - )) || - /* Operators "==", "===", "!=", "!==", etc. */ - (t.getType()==Token.OPERATOR && - ((ch=t.charAt(t.length()-1))=='=' || ch=='~')); - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(java.io.Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = zzPushbackPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtBOL = true; - zzAtEOF = false; - } - - -%} - -Letter = [A-Za-z] -NonzeroDigit = [1-9] -Digit = ("0"|{NonzeroDigit}) -HexDigit = ({Digit}|[A-Fa-f]) -OctalDigit = ([0-7]) -/*Escape = ("\\"(([btnfr\"'\\])|([0123]{OctalDigit}?{OctalDigit}?)|({OctalDigit}{OctalDigit}?)))*/ -NonSeparator = ([^\t\f\r\n\ \(\)\{\}\[\]\;\,\.\=\>\<\!\~\?\:\+\-\*\/\&\|\^\%\"\'\`]|"#"|"\\") -IdentifierStart = ({Letter}|"_") -IdentifierPart = ({IdentifierStart}|{Digit}) - -LineTerminator = (\n) -WhiteSpace = ([ \t\f]) - -LineCommentBegin = "#" - -IntegerHelper1 = (({NonzeroDigit}{Digit}*)|"0") -IntegerHelper2 = ("0"(([xX]{HexDigit}+)|({OctalDigit}*))) -IntegerLiteral = ({IntegerHelper1}[lL]?) -HexLiteral = ({IntegerHelper2}[lL]?) -FloatHelper1 = ([fFdD]?) -FloatHelper2 = ([eE][+-]?{Digit}+{FloatHelper1}) -FloatLiteral1 = ({Digit}+"."({FloatHelper1}|{FloatHelper2}|{Digit}+({FloatHelper1}|{FloatHelper2}))) -FloatLiteral2 = ("."{Digit}+({FloatHelper1}|{FloatHelper2})) -FloatLiteral3 = ({Digit}+{FloatHelper2}) -FloatLiteral = ({FloatLiteral1}|{FloatLiteral2}|{FloatLiteral3}|({Digit}+[fFdD])) -ErrorNumberFormat = (({IntegerLiteral}|{HexLiteral}|{FloatLiteral}){NonSeparator}+) - -Separator = ([\(\)\{\}\[\]]) -Separator2 = ([\;:,.]) - -VariableStart = ([\$\@\%)]"$"?) -BracedVariable = ({VariableStart}\{{Identifier}\}) -UnbracedVariable = ({VariableStart}{Identifier}) -BracedShellVariable = ([\$]\{[\&\`\'\+\*\.\/\|\,\\\"\;\#\%\=\-\~\^\:\?\!\@\$\<\>\)\(\[\]\)\}]) -UnbracedShellVariable = ([\$][\&\`\'\+\*\.\/\|\,\\\"\;\#\%\=\-\~\^\:\?\!\@\$\<\>\)\(\[\]\)]) -MatchVariable = ([\$]{Digit}) -Variable = ({BracedVariable}|{UnbracedVariable}|{BracedShellVariable}|{UnbracedShellVariable}|{MatchVariable}) -Regex = ("/"([^\*\\/]|\\.)([^/\\]|\\.)*"/"[msixpogcadlu]*) - -NonAssignmentOperator = ("+"|"-"|"<="|"^"|"++"|"<"|"*"|">="|"%"|"--"|">"|"/"|"!="|"?"|">>"|"!"|"&"|"=="|":"|">>"|"~"|"|"|"&&"|">>>"|"->") -AssignmentOperator = ("="|"-="|"*="|"/="|"|="|"&="|"^="|"+="|"%="|"<<="|">>="|">>>=") -BindingOperator = ("=~"|"!~") -FunnyOperator = (([\*][\'\"])|([\&][\'\"])) -Operator = ({NonAssignmentOperator}|{AssignmentOperator}|{BindingOperator}|{FunnyOperator}) - -PodCommandsExceptCut = ("="("pod"|"head1"|"head2"|"head3"|"head4"|"over"|"item"|"back"|"begin"|"end"|"for"|"encoding")) - -Identifier = ({IdentifierStart}{IdentifierPart}*) -ErrorIdentifier = ({NonSeparator}+) - - -%state STRING -%state CHAR_LITERAL -%state BACKTICKS -%state HEREDOC_EOF_UNQUOTED -%state HEREDOC_EOF_SINGLE_QUOTED -%state HEREDOC_EOT_UNQUOTED -%state HEREDOC_EOT_SINGLE_QUOTED -%state POD - -%% - - { - - /* Keywords */ - "and" | - "cmp" | - "continue" | - "do" | - "else" | - "elsif" | - "eq" | - "esac" | - "for" | - "foreach" | - "ge" | - "if" | - "last" | - "le" | - "ne" | - "next" | - "not" | - "or" | - "redo" | - "sub" | - "unless" | - "until" | - "while" | - "xor" { addToken(Token.RESERVED_WORD); } - - /* Standard Functions */ - "abs" | - "accept" | - "alarm" | - "atan2" | - "bind" | - "binmode" | - "bless" | - "caller" | - "chdir" | - "chmod" | - "chomp" | - "chop" | - "chown" | - "chr" | - "chroot" | - "close" | - "closedir" | - "connect" | - "cos" | - "crypt" | - "dbmclose" | - "dbmopen" | - "defined" | - "delete" | - "die" | - "dump" | - "each" | - "endgrent" | - "endhostent" | - "endnetent" | - "endprotoent" | - "endpwent" | - "endservent" | - "eof" | - "eval" | - "exec" | - "exists" | - "exit" | - "exp" | - "fcntl" | - "fileno" | - "flock" | - "fork" | - "formline" | - "getc" | - "getgrent" | - "getgrgid" | - "getgrnam" | - "gethostbyaddr" | - "gethostbyname" | - "gethostent" | - "getlogin" | - "getnetbyaddr" | - "getnetbyname" | - "getnetent" | - "getpeername" | - "getpgrp" | - "getppid" | - "getpriority" | - "getprotobyname" | - "getprotobynumber" | - "getprotoent" | - "getpwent" | - "getpwnam" | - "getpwuid" | - "getservbyname" | - "getservbyport" | - "getservent" | - "getsockname" | - "getsockopt" | - "glob" | - "gmtime" | - "goto" | - "grep" | - "hex" | - "index" | - "int" | - "ioctl" | - "join" | - "keys" | - "kill" | - "last" | - "lc" | - "lcfirst" | - "length" | - "link" | - "listen" | - "local" | - "localtime" | - "log" | - "lstat" | - "map" | - "mkdir" | - "msgctl" | - "msgget" | - "msgrcv" | - "msgsnd" | - "my" | - "next" | - "no" | - "oct" | - "open" | - "opendir" | - "ord" | - "our" | - "pack" | - "package" | - "pipe" | - "pop" | - "pos" | - "print" | - "printf" | - "prototype" | - "push" | - "quotemeta" | - "rand" | - "read" | - "readdir" | - "readline" | - "readlink" | - "readpipe" | - "recv" | - "redo" | - "ref" | - "rename" | - "require" | - "reset" | - "return" | - "reverse" | - "rewinddir" | - "rindex" | - "rmdir" | - "scalar" | - "seek" | - "seekdir" | - "select" | - "semctl" | - "semget" | - "semop" | - "send" | - "sethostent" | - "setgrent" | - "setnetent" | - "setpgrp" | - "setpriority" | - "setprotoent" | - "setpwent" | - "setservent" | - "setsockopt" | - "shift" | - "shmctl" | - "shmget" | - "shmread" | - "shmwrite" | - "shutdown" | - "sin" | - "sleep" | - "socket" | - "socketpair" | - "sort" | - "splice" | - "split" | - "sprintf" | - "sqrt" | - "srand" | - "stat" | - "study" | - "sub" | - "substr" | - "symlink" | - "syscall" | - "sysopen" | - "sysread" | - "sysseek" | - "system" | - "syswrite" | - "tell" | - "telldir" | - "tie" | - "tied" | - "time" | - "times" | - "truncate" | - "uc" | - "ucfirst" | - "umask" | - "undef" | - "unlink" | - "unpack" | - "unshift" | - "untie" | - "use" | - "utime" | - "values" | - "vec" | - "wait" | - "waitpid" | - "wantarray" | - "warn" | - "write" { addToken(Token.FUNCTION); } - -} - - { - - {LineTerminator} { addNullToken(); return firstToken; } - {Identifier} { addToken(Token.IDENTIFIER); } - {WhiteSpace}+ { addToken(Token.WHITESPACE); } - {Variable} { addToken(Token.VARIABLE); } - - /* String/Character literals. */ - \" { start = zzMarkedPos-1; yybegin(STRING); } - \' { start = zzMarkedPos-1; yybegin(CHAR_LITERAL); } - \` { start = zzMarkedPos-1; yybegin(BACKTICKS); } - - /* Comment literals. */ - {LineCommentBegin}"!".* { addToken(Token.PREPROCESSOR); addNullToken(); return firstToken; } - {LineCommentBegin}.* { addToken(Token.COMMENT_EOL); addNullToken(); return firstToken; } - - /* Easily identifiable regexes of the form "/.../". This is not foolproof. */ - {Regex} { - boolean highlightedAsRegex = false; - if (firstToken==null) { - addToken(Token.REGEX); - highlightedAsRegex = true; - } - else { - // If this is *likely* to be a regex, based on - // the previous token, highlight it as such. - Token t = firstToken.getLastNonCommentNonWhitespaceToken(); - if (regexCanFollow(t)) { - addToken(Token.REGEX); - highlightedAsRegex = true; - } - } - // If it doesn't *appear* to be a regex, highlight it as - // individual tokens. - if (!highlightedAsRegex) { - int temp = zzStartRead + 1; - addToken(zzStartRead, zzStartRead, Token.OPERATOR); - zzStartRead = zzCurrentPos = zzMarkedPos = temp; - } - } - - /* More regexes (m/.../, s!...!!, etc.). This is nowhere near */ - /* exhaustive, but is rather just the common ones. */ - m"/"[^/]*"/"[msixpodualgc]* { addToken(Token.REGEX); } - m"!"[^!]*"!"[msixpodualgc]* { addToken(Token.REGEX); } - m"|"[^\|]*"|"[msixpodualgc]* { addToken(Token.REGEX); } - m\\[^\\]*\\[msixpodualgc]* { addToken(Token.REGEX); } - s"/"[^/]*"/"[^/]*"/"[msixpodualgcer]* { addToken(Token.REGEX); } - s"!"[^!]*"!"[^!]*"!"[msixpodualgcer]* { addToken(Token.REGEX); } - s"|"[^\|]*"|"[^\|]*"|"[msixpodualgcer]* { addToken(Token.REGEX); } - (tr|y)"/"[^/]*"/"[^/]*"/"[cdsr]* { addToken(Token.REGEX); } - (tr|y)"!"[^!]*"!"[^!]*"!"[cdsr]* { addToken(Token.REGEX); } - (tr|y)"|"[^\|]*"|"[^\|]*"|"[cdsr]* { addToken(Token.REGEX); } - (tr|y)\\[^\\]*\\[^\\]*\\[cdsr]* { addToken(Token.REGEX); } - qr"/"[^/]*"/"[msixpodual]* { addToken(Token.REGEX); } - qr"!"[^/]*"!"[msixpodual]* { addToken(Token.REGEX); } - qr"|"[^/]*"|"[msixpodual]* { addToken(Token.REGEX); } - qr\\[^/]*\\[msixpodual]* { addToken(Token.REGEX); } - - /* "Here-document" syntax. This is only implemented for the common */ - /* cases. */ - "<> { addNullToken(); return firstToken; } - - /* Catch any other (unhandled) characters and flag them as bad. */ - . { addToken(Token.ERROR_IDENTIFIER); } - -} - - - { - [^\n\\\$\@\%\"]+ {} - \n { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); return firstToken; } - \\.? { /* Skip escaped chars. */ } - {Variable} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addToken(temp,zzMarkedPos-1, Token.VARIABLE); start = zzMarkedPos; } - {VariableStart} {} - \" { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); } - <> { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); return firstToken; } -} - - - { - [^\n\\\']+ {} - \\.? { /* Skip escaped single quotes only, but this should still work. */ } - \n { addToken(start,zzStartRead-1, Token.LITERAL_CHAR); return firstToken; } - \' { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_CHAR); } - <> { addToken(start,zzStartRead-1, Token.LITERAL_CHAR); return firstToken; } -} - - - { - [^\n\\\$\@\%\`]+ {} - \n { addToken(start,zzStartRead-1, Token.LITERAL_BACKQUOTE); return firstToken; } - \\.? { /* Skip escaped chars. */ } - {Variable} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.LITERAL_BACKQUOTE); addToken(temp,zzMarkedPos-1, Token.VARIABLE); start = zzMarkedPos; } - {VariableStart} {} - \` { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_BACKQUOTE); } - <> { addToken(start,zzStartRead-1, Token.LITERAL_BACKQUOTE); return firstToken; } -} - - - { - /* NOTE: The closing "EOF" is supposed to be on a line by itself - */ - /* no surrounding whitespace or other chars. However, the way */ - /* we're hacking the JFLex scanning, something like ^"EOF"$ doesn't */ - /* work. Fortunately we don't need the start- and end-line anchors */ - /* since the production after "EOF" will match any line containing */ - /* EOF and any other chars. */ - /* NOTE2: This case is used for unquoted <> { addToken(start,zzStartRead-1, Token.PREPROCESSOR); addEndToken(INTERNAL_HEREDOC_EOF_UNQUOTED); return firstToken; } -} - - - { - /* NOTE: The closing "EOF" is supposed to be on a line by itself - */ - /* no surrounding whitespace or other chars. However, the way */ - /* we're hacking the JFLex scanning, something like ^"EOF"$ doesn't */ - /* work. Fortunately we don't need the start- and end-line anchors */ - /* since the production after "EOF" will match any line containing */ - /* EOF and any other chars. */ - "EOF" { if (start==zzStartRead) { addToken(Token.PREPROCESSOR); addNullToken(); return firstToken; } } - [^\n\\]+ {} - \n { addToken(start,zzStartRead-1, Token.PREPROCESSOR); addEndToken(INTERNAL_HEREDOC_EOF_SINGLE_QUOTED); return firstToken; } - \\.? { /* Skip escaped chars. */ } - <> { addToken(start,zzStartRead-1, Token.PREPROCESSOR); addEndToken(INTERNAL_HEREDOC_EOF_SINGLE_QUOTED); return firstToken; } -} - - - { - /* NOTE: The closing "EOT" is supposed to be on a line by itself - */ - /* no surrounding whitespace or other chars. However, the way */ - /* we're hacking the JFLex scanning, something like ^"EOT"$ doesn't */ - /* work. Fortunately we don't need the start- and end-line anchors */ - /* since the production after "EOT" will match any line containing */ - /* EOF and any other chars. */ - /* NOTE2: This case is used for unquoted <> { addToken(start,zzStartRead-1, Token.PREPROCESSOR); addEndToken(INTERNAL_HEREDOC_EOT_UNQUOTED); return firstToken; } -} - - - { - /* NOTE: The closing "EOT" is supposed to be on a line by itself - */ - /* no surrounding whitespace or other chars. However, the way */ - /* we're hacking the JFLex scanning, something like ^"EOT"$ doesn't */ - /* work. Fortunately we don't need the start- and end-line anchors */ - /* since the production after "EOT" will match any line containing */ - /* EOT and any other chars. */ - "EOT" { if (start==zzStartRead) { addToken(Token.PREPROCESSOR); addNullToken(); return firstToken; } } - [^\n\\]+ {} - \n { addToken(start,zzStartRead-1, Token.PREPROCESSOR); addEndToken(INTERNAL_HEREDOC_EOT_SINGLE_QUOTED); return firstToken; } - \\.? { /* Skip escaped chars. */ } - <> { addToken(start,zzStartRead-1, Token.PREPROCESSOR); addEndToken(INTERNAL_HEREDOC_EOT_SINGLE_QUOTED); return firstToken; } -} - - - { - [^\n\=]+ {} - "=cut" { if (start==zzStartRead) { addToken(Token.COMMENT_DOCUMENTATION); yybegin(YYINITIAL); } } - {PodCommandsExceptCut} { if (start==zzStartRead) { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addToken(temp,zzMarkedPos-1, Token.COMMENT_EOL); start = zzMarkedPos; } } - = {} - \n | - <> { addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addEndToken(INTERNAL_POD); return firstToken; } -} - diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/PerlTokenMaker.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/PerlTokenMaker.java deleted file mode 100644 index cda480f..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/PerlTokenMaker.java +++ /dev/null @@ -1,2106 +0,0 @@ -/* The following code was generated by JFlex 1.4.1 on 3/11/12 12:58 AM */ - -/* - * 01/26/2008 - * - * PerlTokenMaker.java - Scanner for Perl - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * Scanner for Perl.

- * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated PerlTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.5 - * - */ - -public class PerlTokenMaker extends AbstractJFlexCTokenMaker { - - /** This character denotes the end of file */ - public static final int YYEOF = -1; - - /** lexical states */ - public static final int HEREDOC_EOF_SINGLE_QUOTED = 5; - public static final int HEREDOC_EOT_SINGLE_QUOTED = 7; - public static final int HEREDOC_EOT_UNQUOTED = 6; - public static final int STRING = 1; - public static final int BACKTICKS = 3; - public static final int YYINITIAL = 0; - public static final int HEREDOC_EOF_UNQUOTED = 4; - public static final int CHAR_LITERAL = 2; - public static final int POD = 8; - - /** - * Translates characters to character classes - */ - private static final String ZZ_CMAP_PACKED = - "\11\0\1\12\1\11\1\0\1\12\1\6\22\0\1\12\1\46\1\102"+ - "\1\7\1\26\1\24\1\50\1\53\1\21\1\25\1\33\1\41\1\22"+ - "\1\17\1\20\1\32\1\3\1\61\1\62\1\61\1\61\3\5\2\2"+ - "\1\22\1\22\1\42\1\43\1\45\1\47\1\23\3\4\1\15\1\16"+ - "\1\104\5\1\1\14\2\1\1\103\4\1\1\105\3\1\1\13\2\1"+ - "\1\21\1\10\1\21\1\44\1\1\1\31\1\60\1\70\1\35\1\40"+ - "\1\57\1\74\1\72\1\56\1\65\1\101\1\71\1\37\1\67\1\73"+ - "\1\55\1\54\1\76\1\64\1\34\1\66\1\75\1\63\1\77\1\36"+ - "\1\100\1\1\1\27\1\52\1\30\1\51\uff81\0"; - - /** - * Translates characters to character classes - */ - private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); - - /** - * Translates DFA states to action switch labels. - */ - private static final int [] ZZ_ACTION = zzUnpackAction(); - - private static final String ZZ_ACTION_PACKED_0 = - "\11\0\1\1\1\2\2\3\1\1\1\4\1\5\1\6"+ - "\1\7\1\2\1\10\1\2\1\1\1\7\1\10\1\1"+ - "\1\11\2\7\5\2\10\7\1\12\24\2\1\13\1\14"+ - "\1\15\1\16\3\14\1\17\1\14\1\20\1\21\1\22"+ - "\1\14\1\23\3\14\1\24\1\14\1\25\5\14\1\26"+ - "\1\14\1\27\1\14\1\30\2\14\1\31\1\14\1\32"+ - "\1\3\1\33\1\32\1\33\1\32\1\34\1\32\1\4"+ - "\1\35\1\36\1\1\1\0\1\36\1\0\3\36\3\0"+ - "\1\7\1\0\2\2\2\0\22\2\1\37\1\2\1\40"+ - "\2\2\1\40\4\2\10\0\1\7\7\2\1\40\31\2"+ - "\1\1\1\0\1\2\2\0\1\2\1\37\6\2\1\40"+ - "\2\2\1\37\1\40\14\2\1\1\3\0\1\2\1\15"+ - "\1\41\1\14\1\0\2\41\1\0\1\20\1\42\1\14"+ - "\1\0\2\42\1\0\1\14\1\43\1\14\1\0\2\43"+ - "\1\0\3\14\10\0\1\33\1\0\2\34\1\0\1\44"+ - "\1\0\1\2\2\0\14\2\1\40\6\2\1\37\15\2"+ - "\15\0\33\2\1\37\1\2\1\0\2\45\7\2\1\40"+ - "\10\2\1\1\3\0\5\2\1\0\1\1\5\0\1\46"+ - "\1\0\1\46\11\0\1\45\10\2\1\37\26\2\4\0"+ - "\1\47\5\0\1\37\11\2\1\37\5\2\1\37\17\2"+ - "\1\0\4\45\2\2\1\37\1\2\1\0\2\45\1\50"+ - "\1\51\5\0\16\2\1\37\2\2\1\52\1\53\6\0"+ - "\2\2\1\37\25\2\1\45\2\2\3\0\1\37\7\2"+ - "\7\0\14\2\1\0\4\2\1\54\1\55\1\0\10\2"+ - "\1\0\1\2\1\0\4\2\1\0\12\2"; - - private static int [] zzUnpackAction() { - int [] result = new int[601]; - int offset = 0; - offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAction(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /** - * Translates a state to a row index in the transition table - */ - private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); - - private static final String ZZ_ROWMAP_PACKED_0 = - "\0\0\0\106\0\214\0\322\0\u0118\0\u015e\0\u01a4\0\u01ea"+ - "\0\u0230\0\u0276\0\u02bc\0\u0302\0\u0348\0\u038e\0\u03d4\0\u038e"+ - "\0\u041a\0\u0460\0\u04a6\0\u038e\0\u038e\0\u04ec\0\u0532\0\u0578"+ - "\0\u05be\0\u038e\0\u0604\0\u064a\0\u0690\0\u06d6\0\u071c\0\u0762"+ - "\0\u07a8\0\u07ee\0\u0834\0\u087a\0\u08c0\0\u0906\0\u094c\0\u038e"+ - "\0\u0992\0\u038e\0\u09d8\0\u0a1e\0\u0a64\0\u0aaa\0\u0af0\0\u0b36"+ - "\0\u0b7c\0\u0bc2\0\u0c08\0\u0c4e\0\u0c94\0\u0cda\0\u0d20\0\u0d66"+ - "\0\u0dac\0\u0df2\0\u0e38\0\u0e7e\0\u0ec4\0\u0f0a\0\u038e\0\u0f50"+ - "\0\u0f96\0\u038e\0\u0fdc\0\u1022\0\u1068\0\u038e\0\u10ae\0\u10f4"+ - "\0\u038e\0\u038e\0\u113a\0\u038e\0\u1180\0\u11c6\0\u120c\0\u038e"+ - "\0\u1252\0\u038e\0\u1298\0\u12de\0\u1324\0\u136a\0\u13b0\0\u038e"+ - "\0\u13f6\0\u038e\0\u143c\0\u038e\0\u1482\0\u14c8\0\u038e\0\u150e"+ - "\0\u1554\0\u1554\0\u1554\0\u159a\0\u15e0\0\u1626\0\u166c\0\u16b2"+ - "\0\u16f8\0\u173e\0\u1784\0\u17ca\0\u1810\0\u1856\0\u189c\0\u0276"+ - "\0\u038e\0\u17ca\0\u18e2\0\u1928\0\u196e\0\u1928\0\u19b4\0\u19fa"+ - "\0\u1a40\0\u1a86\0\u1acc\0\u1b12\0\u1b58\0\u1b9e\0\u1be4\0\u1c2a"+ - "\0\u1c70\0\u1cb6\0\u1cfc\0\u1d42\0\u1d88\0\u1dce\0\u1e14\0\u1e5a"+ - "\0\u1ea0\0\u1ee6\0\u1f2c\0\u1f72\0\u1fb8\0\u1ffe\0\u2044\0\u208a"+ - "\0\u20d0\0\u2116\0\u02bc\0\u215c\0\u21a2\0\u21e8\0\u222e\0\u2274"+ - "\0\u22ba\0\u2300\0\u2346\0\u238c\0\u23d2\0\u2418\0\u245e\0\u24a4"+ - "\0\u24ea\0\u2530\0\u2576\0\u25bc\0\u2602\0\u2648\0\u268e\0\u26d4"+ - "\0\u271a\0\u2760\0\u27a6\0\u27ec\0\u2832\0\u2878\0\u28be\0\u2904"+ - "\0\u294a\0\u2990\0\u29d6\0\u2a1c\0\u2a62\0\u2aa8\0\u2aee\0\u2b34"+ - "\0\u2b7a\0\u2bc0\0\u2c06\0\u2c4c\0\u2c92\0\u2cd8\0\u2d1e\0\u2d64"+ - "\0\u2daa\0\u2df0\0\u2e36\0\u2e7c\0\u2ec2\0\u2f08\0\u2f4e\0\u02bc"+ - "\0\u2f94\0\u2fda\0\u3020\0\u3066\0\u30ac\0\u30f2\0\u3138\0\u317e"+ - "\0\u31c4\0\u320a\0\u3250\0\u3296\0\u32dc\0\u3322\0\u3368\0\u33ae"+ - "\0\u33f4\0\u343a\0\u3480\0\u34c6\0\u350c\0\u3552\0\u3598\0\u35de"+ - "\0\u3624\0\u366a\0\u36b0\0\u36f6\0\u038e\0\u373c\0\u3782\0\u37c8"+ - "\0\u038e\0\u3782\0\u380e\0\u038e\0\u3854\0\u389a\0\u38e0\0\u038e"+ - "\0\u389a\0\u3926\0\u396c\0\u39b2\0\u39f8\0\u3a3e\0\u038e\0\u39f8"+ - "\0\u3a84\0\u3aca\0\u3b10\0\u3b56\0\u3b9c\0\u3be2\0\u3c28\0\u3c6e"+ - "\0\u3cb4\0\u3cfa\0\u3d40\0\u3d86\0\u3dcc\0\u3e12\0\u1554\0\u3e58"+ - "\0\u3e9e\0\u3ee4\0\u3f2a\0\u3f70\0\u3fb6\0\u3ffc\0\u4042\0\u4088"+ - "\0\u40ce\0\u4114\0\u415a\0\u41a0\0\u41e6\0\u422c\0\u4272\0\u42b8"+ - "\0\u26d4\0\u42fe\0\u4344\0\u438a\0\u43d0\0\u4416\0\u445c\0\u44a2"+ - "\0\u44e8\0\u452e\0\u4574\0\u45ba\0\u4600\0\u4646\0\u468c\0\u46d2"+ - "\0\u4718\0\u320a\0\u475e\0\u47a4\0\u47ea\0\u4830\0\u4876\0\u48bc"+ - "\0\u4902\0\u4948\0\u498e\0\u49d4\0\u4a1a\0\u4a60\0\u4aa6\0\u4aec"+ - "\0\u4b32\0\u4b78\0\u4bbe\0\u4c04\0\u4c4a\0\u4c90\0\u4cd6\0\u4d1c"+ - "\0\u4d62\0\u4da8\0\u4dee\0\u4e34\0\u4e7a\0\u4ec0\0\u4f06\0\u4f4c"+ - "\0\u4f92\0\u4fd8\0\u501e\0\u5064\0\u50aa\0\u50f0\0\u5136\0\u517c"+ - "\0\u51c2\0\u5208\0\u524e\0\u5294\0\u52da\0\u5320\0\u5366\0\u26d4"+ - "\0\u53ac\0\u53f2\0\u5438\0\u547e\0\u54c4\0\u550a\0\u5550\0\u5596"+ - "\0\u55dc\0\u5622\0\u5668\0\u56ae\0\u56f4\0\u573a\0\u5780\0\u57c6"+ - "\0\u580c\0\u5852\0\u5898\0\u58de\0\u5924\0\u596a\0\u59b0\0\u59f6"+ - "\0\u5a3c\0\u5a82\0\u5ac8\0\u5b0e\0\u5b54\0\u5b9a\0\u5be0\0\u5c26"+ - "\0\u5c6c\0\u5cb2\0\u5cf8\0\u5d3e\0\u1252\0\u5d84\0\u13b0\0\u5dca"+ - "\0\u5e10\0\u5e56\0\u5e9c\0\u5ee2\0\u5f28\0\u5f6e\0\u5fb4\0\u5ffa"+ - "\0\u6040\0\u6086\0\u60cc\0\u6112\0\u6158\0\u619e\0\u61e4\0\u622a"+ - "\0\u6270\0\u2c4c\0\u62b6\0\u62fc\0\u6342\0\u6388\0\u63ce\0\u6414"+ - "\0\u645a\0\u64a0\0\u64e6\0\u652c\0\u6572\0\u65b8\0\u65fe\0\u6644"+ - "\0\u668a\0\u66d0\0\u6716\0\u675c\0\u67a2\0\u67e8\0\u682e\0\u6874"+ - "\0\u68ba\0\u6900\0\u6946\0\u698c\0\u038e\0\u69d2\0\u6a18\0\u6a5e"+ - "\0\u6aa4\0\u6aea\0\u6b30\0\u6b76\0\u6bbc\0\u6c02\0\u6c48\0\u6c8e"+ - "\0\u6cd4\0\u6d1a\0\u6d60\0\u6da6\0\u6dec\0\u6e32\0\u6e78\0\u6ebe"+ - "\0\u6f04\0\u6f4a\0\u2a62\0\u6f90\0\u6fd6\0\u701c\0\u7062\0\u70a8"+ - "\0\u70ee\0\u7134\0\u717a\0\u71c0\0\u7206\0\u724c\0\u7292\0\u72d8"+ - "\0\u731e\0\u7364\0\u73aa\0\u73f0\0\u7436\0\u747c\0\u74c2\0\u7508"+ - "\0\u754e\0\u7594\0\u75da\0\u7620\0\u7666\0\u76ac\0\u038e\0\u038e"+ - "\0\u76f2\0\u7738\0\u777e\0\u77c4\0\u780a\0\u7850\0\u7896\0\u78dc"+ - "\0\u7922\0\u7968\0\u79ae\0\u79f4\0\u7a3a\0\u7a80\0\u7ac6\0\u7b0c"+ - "\0\u7b52\0\u7b98\0\u7bde\0\u31c4\0\u7c24\0\u7c6a\0\u038e\0\u038e"+ - "\0\u7cb0\0\u7cf6\0\u7d3c\0\u7d82\0\u7dc8\0\u7e0e\0\u7e54\0\u7e9a"+ - "\0\u2878\0\u7ee0\0\u7f26\0\u7f6c\0\u7fb2\0\u7ff8\0\u803e\0\u8084"+ - "\0\u80ca\0\u8110\0\u8156\0\u819c\0\u81e2\0\u8228\0\u826e\0\u82b4"+ - "\0\u82fa\0\u8340\0\u8386\0\u83cc\0\u8412\0\u8458\0\u849e\0\u84e4"+ - "\0\u852a\0\u8570\0\u85b6\0\u85fc\0\u8642\0\u8688\0\u86ce\0\u8714"+ - "\0\u875a\0\u87a0\0\u87e6\0\u882c\0\u8872\0\u88b8\0\u88fe\0\u8944"+ - "\0\u898a\0\u89d0\0\u8a16\0\u8a5c\0\u8aa2\0\u8ae8\0\u8b2e\0\u8b74"+ - "\0\u8bba\0\u8c00\0\u8c46\0\u8c8c\0\u8cd2\0\u8d18\0\u8d5e\0\u8da4"+ - "\0\u8dea\0\u8e30\0\u8e76\0\u8ebc\0\u038e\0\u038e\0\u8f02\0\u8f48"+ - "\0\u8f8e\0\u8fd4\0\u901a\0\u9060\0\u90a6\0\u90ec\0\u9132\0\u9178"+ - "\0\u91be\0\u9204\0\u924a\0\u9290\0\u92d6\0\u931c\0\u9362\0\u93a8"+ - "\0\u93ee\0\u9434\0\u947a\0\u94c0\0\u9506\0\u954c\0\u9592\0\u95d8"+ - "\0\u961e"; - - private static int [] zzUnpackRowMap() { - int [] result = new int[601]; - int offset = 0; - offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackRowMap(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int high = packed.charAt(i++) << 16; - result[j++] = high | packed.charAt(i++); - } - return j; - } - - /** - * The transition table of the DFA - */ - private static final int [] ZZ_TRANS = zzUnpackTrans(); - - private static final String ZZ_TRANS_PACKED_0 = - "\1\12\1\13\1\14\1\15\1\13\1\14\1\16\1\17"+ - "\1\12\1\20\1\21\4\13\1\22\1\23\1\24\1\25"+ - "\1\26\1\27\1\30\1\31\2\24\1\32\1\33\1\34"+ - "\1\35\1\36\1\37\1\40\1\41\1\42\1\43\1\44"+ - "\1\45\1\46\1\47\1\50\1\51\1\50\1\45\1\52"+ - "\1\53\1\54\1\55\1\56\1\57\2\14\1\60\1\61"+ - "\1\62\1\63\1\64\1\65\1\66\1\67\1\70\1\71"+ - "\1\72\1\73\1\74\1\75\1\76\1\77\3\13\10\100"+ - "\1\101\1\102\11\100\2\103\1\104\1\105\53\100\1\106"+ - "\3\100\10\107\1\110\1\111\41\107\1\112\32\107\10\113"+ - "\1\101\1\114\11\113\2\115\1\116\1\117\2\113\1\120"+ - "\54\113\10\121\1\101\1\122\4\121\1\123\4\121\2\124"+ - "\1\125\1\126\57\121\10\127\1\101\1\130\4\127\1\131"+ - "\67\127\10\121\1\101\1\132\4\121\1\133\4\121\2\124"+ - "\1\125\1\126\57\121\10\127\1\101\1\134\4\127\1\135"+ - "\67\127\11\136\1\137\31\136\1\140\42\136\6\12\1\0"+ - "\2\12\2\0\4\12\4\0\1\12\2\0\1\12\5\0"+ - "\5\12\13\0\26\12\1\0\4\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\5\13"+ - "\13\0\26\13\1\0\3\13\2\141\2\14\1\141\1\14"+ - "\1\0\2\141\2\0\1\141\1\142\1\143\1\144\1\0"+ - "\1\145\2\0\1\141\2\0\1\141\5\0\3\141\1\142"+ - "\1\143\13\0\3\141\1\144\1\141\2\14\11\141\1\143"+ - "\5\141\1\0\1\141\1\143\3\141\1\146\1\147\1\141"+ - "\1\147\1\0\2\141\2\0\1\150\1\142\1\143\1\144"+ - "\1\0\1\145\2\0\1\141\2\0\1\141\5\0\2\141"+ - "\1\150\1\142\1\143\13\0\3\141\1\144\1\141\2\147"+ - "\11\141\1\143\5\141\1\0\1\141\1\143\1\141\106\0"+ - "\11\151\1\0\34\151\1\152\37\151\12\0\1\21\112\0"+ - "\1\50\23\0\1\50\1\0\1\50\42\0\2\145\1\0"+ - "\1\145\53\0\2\145\23\0\1\12\1\153\2\12\1\153"+ - "\1\12\1\0\2\12\2\0\4\153\4\0\1\12\2\0"+ - "\1\154\1\155\4\0\5\153\13\0\5\153\2\12\17\153"+ - "\1\0\3\153\1\0\1\156\2\0\1\156\6\0\4\156"+ - "\7\0\1\157\1\155\4\0\5\156\2\0\1\50\10\0"+ - "\5\156\2\0\17\156\1\0\3\156\1\0\1\156\2\0"+ - "\1\156\6\0\4\156\7\0\1\157\1\155\4\0\5\156"+ - "\13\0\5\156\2\0\17\156\1\0\3\156\1\12\1\153"+ - "\2\160\1\153\1\160\1\0\2\160\2\0\4\153\4\161"+ - "\1\160\2\161\1\162\1\163\1\0\3\161\5\153\13\161"+ - "\5\153\2\160\17\153\1\161\3\153\10\164\1\165\21\164"+ - "\2\0\7\164\1\166\42\164\43\0\1\50\7\0\1\50"+ - "\26\0\1\50\3\0\1\12\5\13\1\0\2\12\2\0"+ - "\4\13\4\0\1\12\2\0\1\12\3\0\1\167\1\0"+ - "\1\13\1\170\1\13\1\171\1\13\5\0\1\172\3\0"+ - "\1\173\1\0\1\174\1\175\1\176\1\177\4\13\1\200"+ - "\1\201\1\202\6\13\1\203\1\204\1\13\1\205\1\13"+ - "\1\0\3\13\1\12\5\13\1\0\2\12\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\5\0\3\13\1\206\1\13"+ - "\13\0\1\13\1\207\1\210\1\13\1\211\3\13\1\212"+ - "\2\13\1\213\12\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\5\13\13\0\1\13\1\214\24\13\1\0\3\13\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\1\215\1\216\3\13\13\0\1\13\1\217"+ - "\1\13\1\220\1\221\4\13\1\222\14\13\1\0\3\13"+ - "\1\12\5\13\1\0\2\12\2\0\4\13\4\0\1\12"+ - "\2\0\1\12\5\0\5\13\13\0\1\13\1\223\1\13"+ - "\1\224\5\13\1\225\2\13\1\226\4\13\1\227\4\13"+ - "\1\0\3\13\41\0\1\50\1\0\1\50\104\0\1\230"+ - "\1\50\105\0\1\50\5\0\1\50\2\0\1\231\1\232"+ - "\1\233\1\234\5\0\1\235\2\0\1\236\3\0\1\237"+ - "\54\0\1\50\105\0\1\50\1\0\1\240\103\0\1\50"+ - "\5\0\1\50\77\0\1\50\4\0\1\50\2\0\1\50"+ - "\26\0\1\50\3\0\1\12\5\13\1\0\2\12\2\0"+ - "\4\13\4\0\1\12\2\0\1\12\5\0\5\13\13\0"+ - "\1\13\1\241\2\13\1\242\3\13\1\243\1\244\7\13"+ - "\1\245\4\13\1\0\3\13\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\1\13"+ - "\1\246\3\13\13\0\1\247\7\13\1\250\10\13\1\251"+ - "\4\13\1\0\3\13\1\12\5\13\1\0\2\12\2\0"+ - "\4\13\4\0\1\12\2\0\1\12\5\0\5\13\13\0"+ - "\3\13\1\252\22\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\1\253\1\13\1\254\1\255\1\13\13\0\1\13\1\256"+ - "\2\13\1\257\2\13\1\260\7\13\1\261\2\13\1\223"+ - "\3\13\1\0\3\13\1\12\5\13\1\0\2\12\2\0"+ - "\4\13\4\0\1\12\2\0\1\12\5\0\1\13\1\262"+ - "\1\13\1\263\1\13\13\0\12\13\1\264\1\13\1\265"+ - "\2\13\1\266\6\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\5\13\13\0\3\13\1\267\1\270\21\13\1\0\3\13"+ - "\1\12\5\13\1\0\2\12\2\0\4\13\4\0\1\12"+ - "\2\0\1\12\5\0\5\13\13\0\3\13\1\271\1\272"+ - "\4\13\1\273\1\13\1\274\12\13\1\0\3\13\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\5\13\13\0\1\13\1\275\15\13\1\276"+ - "\1\223\5\13\1\0\3\13\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\5\13"+ - "\13\0\3\13\1\277\4\13\1\300\1\301\14\13\1\0"+ - "\3\13\1\12\5\13\1\0\1\12\1\302\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\3\0\1\303\1\0\1\304"+ - "\4\13\5\0\1\305\3\0\1\306\1\0\4\13\1\307"+ - "\10\13\1\274\6\13\1\310\1\13\1\0\3\13\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\3\13\1\311\1\13\13\0\11\13\1\312"+ - "\14\13\1\0\3\13\1\12\5\13\1\0\2\12\2\0"+ - "\4\13\4\0\1\12\2\0\1\12\5\0\5\13\13\0"+ - "\3\13\1\313\5\13\1\314\14\13\1\0\3\13\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\3\13\1\315\1\13\13\0\1\13\1\316"+ - "\1\13\1\317\4\13\1\320\2\13\1\321\12\13\1\0"+ - "\3\13\1\12\5\13\1\0\2\12\2\0\4\13\4\0"+ - "\1\12\2\0\1\12\5\0\5\13\13\0\1\13\1\322"+ - "\1\13\1\323\22\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\1\13\1\324\1\13\1\325\1\13\13\0\1\13\1\326"+ - "\7\13\1\327\14\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\1\225\1\216\3\13\13\0\12\13\1\330\1\331\3\13"+ - "\1\332\6\13\1\0\3\13\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\5\13"+ - "\13\0\10\13\1\333\10\13\1\334\4\13\1\0\3\13"+ - "\1\12\5\13\1\0\2\12\2\0\4\13\4\0\1\12"+ - "\2\0\1\12\5\0\5\13\13\0\2\13\1\335\1\13"+ - "\1\336\3\13\1\337\15\13\1\0\3\13\1\12\5\13"+ - "\1\0\1\12\1\340\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\3\0\1\341\1\0\5\13\5\0\1\342\3\0"+ - "\1\343\1\0\26\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\5\13\13\0\1\13\1\344\24\13\1\0\3\13\10\100"+ - "\2\0\11\100\2\0\1\100\1\0\53\100\1\0\3\100"+ - "\11\345\1\0\74\345\1\0\1\346\2\0\1\346\6\0"+ - "\4\346\7\0\1\347\1\350\4\0\5\346\13\0\5\346"+ - "\2\0\17\346\1\0\3\346\10\100\2\0\11\100\2\0"+ - "\1\100\1\347\53\100\1\0\3\100\1\0\1\346\2\351"+ - "\1\346\1\351\1\0\2\351\2\0\4\346\7\351\1\352"+ - "\1\353\1\0\3\351\5\346\13\351\5\346\2\351\17\346"+ - "\1\351\3\346\10\107\2\0\41\107\1\0\32\107\11\354"+ - "\1\0\74\354\10\113\2\0\11\113\2\0\1\113\1\0"+ - "\2\113\1\0\54\113\1\0\1\355\2\0\1\355\6\0"+ - "\4\355\7\0\1\356\1\357\4\0\5\355\13\0\5\355"+ - "\2\0\17\355\1\0\3\355\10\113\2\0\11\113\2\0"+ - "\1\113\1\356\2\113\1\0\54\113\1\0\1\355\2\360"+ - "\1\355\1\360\1\0\2\360\2\0\4\355\7\360\1\361"+ - "\1\362\1\0\3\360\5\355\13\360\5\355\2\360\17\355"+ - "\1\360\3\355\10\121\2\0\11\121\2\0\1\121\1\0"+ - "\67\121\2\0\11\121\2\0\1\121\1\0\54\121\1\363"+ - "\2\121\1\0\1\364\2\0\1\364\6\0\4\364\7\0"+ - "\1\365\1\366\4\0\5\364\13\0\5\364\2\0\17\364"+ - "\1\0\3\364\10\121\2\0\11\121\2\0\1\121\1\365"+ - "\57\121\1\0\1\364\2\367\1\364\1\367\1\0\2\367"+ - "\2\0\4\364\7\367\1\370\1\371\1\0\3\367\5\364"+ - "\13\367\5\364\2\367\17\364\1\367\3\364\10\127\2\0"+ - "\104\127\2\0\71\127\1\372\2\127\10\121\2\0\11\121"+ - "\2\0\1\121\1\0\54\121\1\373\2\121\10\127\2\0"+ - "\71\127\1\374\2\127\11\136\1\0\31\136\1\0\42\136"+ - "\35\0\1\375\16\0\1\376\1\377\1\u0100\1\u0101\5\0"+ - "\1\u0102\2\0\1\u0103\3\0\1\u0104\11\0\6\141\1\0"+ - "\2\141\2\0\4\141\4\0\1\141\2\0\1\141\5\0"+ - "\5\141\13\0\26\141\1\0\5\141\2\u0105\1\141\1\u0105"+ - "\1\0\2\141\2\0\4\141\1\u0106\3\0\1\141\2\0"+ - "\1\141\5\0\5\141\1\u0106\12\0\5\141\2\u0105\17\141"+ - "\1\0\5\141\2\145\1\141\1\145\1\0\2\141\2\0"+ - "\2\141\1\143\1\144\4\0\1\141\2\0\1\141\5\0"+ - "\4\141\1\143\13\0\3\141\1\144\1\141\2\145\11\141"+ - "\1\143\5\141\1\0\1\141\1\143\3\141\2\146\1\141"+ - "\1\146\1\0\2\141\2\0\2\141\1\143\1\144\1\0"+ - "\1\145\2\0\1\141\2\0\1\141\5\0\4\141\1\143"+ - "\13\0\3\141\1\144\1\141\2\146\11\141\1\143\5\141"+ - "\1\0\1\141\1\143\3\141\1\146\1\147\1\141\1\147"+ - "\1\0\2\141\2\0\1\141\1\u0107\1\143\1\144\1\0"+ - "\1\145\2\0\1\141\2\0\1\141\5\0\3\141\1\u0107"+ - "\1\143\13\0\3\141\1\144\1\141\2\147\11\141\1\143"+ - "\5\141\1\0\1\141\1\143\3\141\4\u0108\1\0\2\141"+ - "\2\0\2\141\2\u0108\4\0\1\141\2\0\1\141\5\0"+ - "\1\141\1\u0108\2\141\1\u0108\13\0\3\141\4\u0108\5\141"+ - "\1\u0108\3\141\1\u0108\5\141\1\0\1\141\1\u0108\1\141"+ - "\11\151\1\0\74\151\11\152\1\0\74\152\1\12\5\153"+ - "\1\0\2\12\2\0\4\153\4\0\1\12\2\0\1\12"+ - "\5\0\5\153\13\0\26\153\1\0\3\153\1\12\1\153"+ - "\2\12\1\153\1\12\1\0\2\12\2\0\4\153\4\0"+ - "\1\12\2\0\1\12\1\155\4\0\5\153\13\0\5\153"+ - "\2\12\17\153\1\0\3\153\1\0\1\u0109\2\0\1\u0109"+ - "\6\0\4\u0109\15\0\5\u0109\13\0\5\u0109\2\0\17\u0109"+ - "\1\0\3\u0109\1\0\5\156\5\0\4\156\15\0\5\156"+ - "\13\0\26\156\1\0\3\156\1\0\1\156\2\0\1\156"+ - "\6\0\4\156\10\0\1\155\4\0\5\156\13\0\5\156"+ - "\2\0\17\156\1\0\3\156\1\0\1\u0109\2\0\1\u0109"+ - "\2\0\2\161\2\0\4\u0109\10\161\1\0\4\161\5\u0109"+ - "\13\161\5\u0109\2\0\17\u0109\1\161\3\u0109\10\164\1\165"+ - "\21\164\1\u010a\64\164\1\0\74\164\32\167\1\u010b\53\167"+ - "\1\12\5\13\1\0\2\12\2\0\4\13\4\0\1\12"+ - "\2\0\1\12\5\0\5\13\13\0\4\13\1\u010c\21\13"+ - "\1\0\3\13\1\12\5\13\1\0\2\12\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\5\0\5\13\13\0\3\13"+ - "\1\320\22\13\1\0\3\13\46\172\1\u010d\37\172\52\173"+ - "\1\u010e\33\173\1\12\5\13\1\0\2\12\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\5\0\3\13\1\u010f\1\13"+ - "\13\0\10\13\1\u0110\15\13\1\0\3\13\1\12\5\13"+ - "\1\0\2\12\2\0\4\13\4\0\1\12\2\0\1\12"+ - "\5\0\1\13\1\u0111\3\13\13\0\10\13\1\246\15\13"+ - "\1\0\3\13\1\12\5\13\1\0\2\12\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\5\0\5\13\13\0\11\13"+ - "\1\u0112\1\13\1\u0113\5\13\1\u0114\4\13\1\0\3\13"+ - "\1\12\5\13\1\0\2\12\2\0\4\13\4\0\1\12"+ - "\2\0\1\12\5\0\3\13\1\u0115\1\13\13\0\3\13"+ - "\1\u0116\6\13\1\u0117\1\u0118\3\13\1\u0119\6\13\1\0"+ - "\3\13\1\12\5\13\1\0\2\12\2\0\4\13\4\0"+ - "\1\12\2\0\1\12\5\0\5\13\13\0\4\13\1\272"+ - "\21\13\1\0\3\13\1\12\5\13\1\0\2\12\2\0"+ - "\4\13\4\0\1\12\2\0\1\12\5\0\5\13\13\0"+ - "\17\13\1\310\6\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\5\13\13\0\4\13\1\246\14\13\1\u011a\4\13\1\0"+ - "\3\13\1\12\5\13\1\0\2\12\2\0\4\13\4\0"+ - "\1\12\2\0\1\12\5\0\5\13\13\0\14\13\1\u011b"+ - "\11\13\1\0\3\13\1\12\5\13\1\0\2\12\2\0"+ - "\4\13\4\0\1\12\2\0\1\12\5\0\5\13\13\0"+ - "\10\13\1\246\15\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\1\u011c\4\13\13\0\13\13\1\u011d\12\13\1\0\3\13"+ - "\1\12\5\13\1\0\2\12\2\0\4\13\4\0\1\12"+ - "\2\0\1\12\5\0\5\13\13\0\1\13\1\u011e\24\13"+ - "\1\0\3\13\1\12\5\13\1\0\2\12\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\5\0\1\310\4\13\13\0"+ - "\17\13\1\u011f\6\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\4\13\1\u0120\13\0\1\13\1\u0121\6\13\1\u0122\2\13"+ - "\1\u0123\12\13\1\0\3\13\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\3\13"+ - "\1\u0124\1\13\13\0\26\13\1\0\3\13\1\12\5\13"+ - "\1\0\2\12\2\0\4\13\4\0\1\12\2\0\1\12"+ - "\5\0\5\13\13\0\24\13\1\u0125\1\13\1\0\3\13"+ - "\1\12\5\13\1\0\2\12\2\0\4\13\4\0\1\12"+ - "\2\0\1\12\5\0\5\13\13\0\1\223\25\13\1\0"+ - "\3\13\1\12\5\13\1\0\2\12\2\0\4\13\4\0"+ - "\1\12\2\0\1\12\5\0\5\13\13\0\10\13\1\223"+ - "\15\13\1\0\3\13\1\12\5\13\1\0\2\12\2\0"+ - "\4\13\4\0\1\12\2\0\1\12\5\0\5\13\13\0"+ - "\12\13\1\u0126\13\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\5\13\13\0\20\13\1\u0127\5\13\1\0\3\13\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\1\13\1\u0128\3\13\13\0\16\13\1\310"+ - "\7\13\1\0\3\13\1\12\5\13\1\0\2\12\2\0"+ - "\4\13\4\0\1\12\2\0\1\12\5\0\5\13\13\0"+ - "\17\13\1\u0129\6\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\1\u012a\4\13\13\0\26\13\1\0\3\13\1\12\5\13"+ - "\1\0\2\12\2\0\4\13\4\0\1\12\2\0\1\12"+ - "\5\0\1\u012b\4\13\13\0\17\13\1\u012c\6\13\1\0"+ - "\3\13\1\12\5\13\1\0\2\12\2\0\4\13\4\0"+ - "\1\12\2\0\1\12\5\0\3\13\1\u012d\1\13\13\0"+ - "\20\13\1\u012e\5\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\5\13\13\0\3\13\1\310\22\13\1\0\3\13\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\5\13\13\0\13\13\1\u012f\12\13\1\0"+ - "\3\13\1\12\5\13\1\0\2\12\2\0\4\13\4\0"+ - "\1\12\2\0\1\12\5\0\5\13\13\0\13\13\1\307"+ - "\12\13\1\0\3\13\12\0\1\u0130\3\0\1\u0131\12\0"+ - "\1\u0132\11\0\1\50\7\0\1\u0133\26\0\1\u0134\60\0"+ - "\1\u0135\113\0\1\u0136\101\0\1\u0137\121\0\1\u0138\100\0"+ - "\1\u0139\76\0\1\u013a\1\u013b\102\0\1\u013c\73\0\1\50"+ - "\1\0\1\45\40\0\1\12\5\13\1\0\2\12\2\0"+ - "\4\13\4\0\1\12\2\0\1\12\5\0\1\310\4\13"+ - "\13\0\1\310\25\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\1\13\1\u013d\3\13\13\0\26\13\1\0\3\13\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\5\13\13\0\1\13\1\u013e\7\13\1\u013f"+ - "\14\13\1\0\3\13\1\12\5\13\1\0\2\12\2\0"+ - "\4\13\4\0\1\12\2\0\1\12\5\0\5\13\13\0"+ - "\1\225\25\13\1\0\3\13\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\1\u0140"+ - "\4\13\13\0\26\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\5\13\13\0\12\13\1\310\13\13\1\0\3\13\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\5\13\13\0\3\13\1\u0141\22\13\1\0"+ - "\3\13\1\12\5\13\1\0\2\12\2\0\4\13\4\0"+ - "\1\12\2\0\1\12\5\0\4\13\1\310\13\0\26\13"+ - "\1\0\3\13\1\12\5\13\1\0\2\12\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\5\0\5\13\13\0\10\13"+ - "\1\310\15\13\1\0\3\13\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\2\13"+ - "\1\310\2\13\13\0\26\13\1\0\3\13\1\12\5\13"+ - "\1\0\2\12\2\0\4\13\4\0\1\12\2\0\1\12"+ - "\5\0\5\13\13\0\4\13\1\u0142\21\13\1\0\3\13"+ - "\1\12\5\13\1\0\2\12\2\0\4\13\4\0\1\12"+ - "\2\0\1\12\5\0\5\13\13\0\1\310\2\13\1\267"+ - "\5\13\1\u0143\14\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\1\u0144\4\13\13\0\26\13\1\0\3\13\1\12\5\13"+ - "\1\0\2\12\2\0\4\13\4\0\1\12\2\0\1\12"+ - "\5\0\5\13\13\0\20\13\1\310\5\13\1\0\3\13"+ - "\1\12\5\13\1\0\2\12\2\0\4\13\4\0\1\12"+ - "\2\0\1\12\5\0\1\13\1\u0140\3\13\13\0\26\13"+ - "\1\0\3\13\1\12\5\13\1\0\2\12\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\5\0\5\13\13\0\4\13"+ - "\1\u0145\21\13\1\0\3\13\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\4\13"+ - "\1\u0146\13\0\26\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\1\13\1\u0147\3\13\13\0\26\13\1\0\3\13\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\5\13\13\0\4\13\1\u0148\21\13\1\0"+ - "\3\13\1\12\5\13\1\0\2\12\2\0\4\13\4\0"+ - "\1\12\2\0\1\12\5\0\5\13\13\0\4\13\1\u0149"+ - "\21\13\1\0\3\13\1\12\5\13\1\0\2\12\2\0"+ - "\4\13\4\0\1\12\2\0\1\12\5\0\1\310\4\13"+ - "\13\0\26\13\1\0\3\13\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\4\13"+ - "\1\223\13\0\26\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\1\13\1\310\3\13\13\0\26\13\1\0\3\13\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\3\13\1\u014a\1\13\13\0\26\13\1\0"+ - "\3\13\1\12\5\13\1\0\2\12\2\0\4\13\4\0"+ - "\1\12\2\0\1\12\5\0\1\u014b\1\u014c\2\13\1\u014d"+ - "\13\0\4\13\1\u014e\2\13\1\u014f\2\13\1\u0150\4\13"+ - "\1\u0151\1\310\1\13\1\u0152\1\u0153\2\13\1\0\3\13"+ - "\1\12\5\13\1\0\2\12\2\0\4\13\4\0\1\12"+ - "\2\0\1\12\5\0\5\13\13\0\17\13\1\u0119\6\13"+ - "\1\0\3\13\1\12\5\13\1\0\2\12\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\5\0\5\13\13\0\17\13"+ - "\1\u0154\6\13\1\0\3\13\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\4\13"+ - "\1\u0120\13\0\26\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\1\13\1\u0155\3\13\13\0\26\13\1\0\3\13\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\4\13\1\55\13\0\12\13\1\310\13\13"+ - "\1\0\3\13\1\12\5\13\1\0\2\12\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\5\0\3\13\1\u0156\1\13"+ - "\13\0\26\13\1\0\3\13\1\12\5\13\1\0\1\12"+ - "\1\340\2\0\4\13\4\0\1\12\2\0\1\12\3\0"+ - "\1\341\1\0\5\13\5\0\1\342\3\0\1\343\1\0"+ - "\21\13\1\u0157\4\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\5\13\13\0\3\13\1\u0158\7\13\1\u0159\12\13\1\0"+ - "\3\13\6\302\1\u015a\1\302\1\u015b\2\u015a\4\302\4\u015a"+ - "\1\302\2\u015a\1\302\5\u015a\5\302\13\u015a\26\302\1\u015a"+ - "\3\302\32\303\1\u015c\53\303\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\5\13"+ - "\13\0\16\13\1\u015d\7\13\1\0\3\13\46\305\1\u015c"+ - "\37\305\52\306\1\u015c\33\306\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\5\13"+ - "\13\0\1\310\25\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\5\13\13\0\3\13\1\u015e\22\13\1\0\3\13\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\5\13\13\0\17\13\1\u015f\6\13\1\0"+ - "\3\13\1\12\5\13\1\0\2\12\2\0\4\13\4\0"+ - "\1\12\2\0\1\12\5\0\5\13\13\0\24\13\1\265"+ - "\1\13\1\0\3\13\1\12\5\13\1\0\2\12\2\0"+ - "\4\13\4\0\1\12\2\0\1\12\5\0\3\13\1\u0145"+ - "\1\13\13\0\26\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\5\13\13\0\1\13\1\u0160\24\13\1\0\3\13\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\5\13\13\0\12\13\1\u0161\13\13\1\0"+ - "\3\13\1\12\5\13\1\0\2\12\2\0\4\13\4\0"+ - "\1\12\2\0\1\12\5\0\5\13\13\0\12\13\1\u0162"+ - "\13\13\1\0\3\13\1\12\5\13\1\0\2\12\2\0"+ - "\4\13\4\0\1\12\2\0\1\12\5\0\5\13\13\0"+ - "\3\13\1\307\22\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\5\13\13\0\12\13\1\330\13\13\1\0\3\13\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\5\13\13\0\12\13\1\223\13\13\1\0"+ - "\3\13\1\12\5\13\1\0\2\12\2\0\4\13\4\0"+ - "\1\12\2\0\1\12\5\0\2\13\1\u012a\2\13\13\0"+ - "\26\13\1\0\3\13\1\12\5\13\1\0\2\12\2\0"+ - "\4\13\4\0\1\12\2\0\1\12\5\0\5\13\13\0"+ - "\17\13\1\u0155\6\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\5\13\13\0\1\13\1\u0163\24\13\1\0\3\13\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\5\13\13\0\10\13\1\u0164\15\13\1\0"+ - "\3\13\1\12\5\13\1\0\2\12\2\0\4\13\4\0"+ - "\1\12\2\0\1\12\5\0\3\13\1\u0165\1\13\13\0"+ - "\26\13\1\0\3\13\1\12\5\13\1\0\2\12\2\0"+ - "\4\13\4\0\1\12\2\0\1\12\5\0\5\13\13\0"+ - "\11\13\1\u0166\14\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\5\13\13\0\4\13\1\u0167\21\13\1\0\3\13\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\1\u0168\2\13\1\u0169\1\u016a\13\0\1\u016b"+ - "\11\13\1\u016c\13\13\1\0\3\13\1\12\5\13\1\0"+ - "\1\12\1\u016d\2\0\4\13\4\0\1\12\2\0\1\12"+ - "\3\0\1\u016e\1\0\5\13\5\0\1\u016f\3\0\1\u0170"+ - "\1\0\26\13\1\0\3\13\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\5\13"+ - "\13\0\1\13\1\u0171\24\13\1\0\3\13\1\12\5\13"+ - "\1\0\2\12\2\0\4\13\4\0\1\12\2\0\1\12"+ - "\5\0\5\13\13\0\11\13\1\u0172\14\13\1\0\3\13"+ - "\1\12\5\13\1\0\2\12\2\0\4\13\4\0\1\12"+ - "\2\0\1\12\5\0\5\13\13\0\10\13\1\201\1\u0173"+ - "\5\13\1\u0174\6\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\5\13\13\0\11\13\1\u0175\14\13\1\0\3\13\6\340"+ - "\1\u0176\1\340\1\u0177\2\u0176\4\340\4\u0176\1\340\2\u0176"+ - "\1\340\5\u0176\5\340\13\u0176\26\340\1\u0176\3\340\32\341"+ - "\1\u0178\53\341\46\342\1\u0179\37\342\52\343\1\u017a\33\343"+ - "\1\12\5\13\1\0\2\12\2\0\4\13\4\0\1\12"+ - "\2\0\1\12\5\0\5\13\13\0\11\13\1\201\14\13"+ - "\1\0\3\13\1\0\5\346\5\0\4\346\15\0\5\346"+ - "\13\0\26\346\1\0\3\346\1\0\1\346\2\0\1\346"+ - "\6\0\4\346\10\0\1\350\4\0\5\346\13\0\5\346"+ - "\2\0\17\346\1\0\3\346\1\0\1\u017b\2\0\1\u017b"+ - "\6\0\4\u017b\15\0\5\u017b\13\0\5\u017b\2\0\17\u017b"+ - "\1\0\3\u017b\1\0\1\u017b\2\0\1\u017b\2\0\2\351"+ - "\2\0\4\u017b\10\351\1\0\4\351\5\u017b\13\351\5\u017b"+ - "\2\0\17\u017b\1\351\3\u017b\1\0\5\355\5\0\4\355"+ - "\15\0\5\355\13\0\26\355\1\0\3\355\1\0\1\355"+ - "\2\0\1\355\6\0\4\355\10\0\1\357\4\0\5\355"+ - "\13\0\5\355\2\0\17\355\1\0\3\355\1\0\1\u017c"+ - "\2\0\1\u017c\6\0\4\u017c\15\0\5\u017c\13\0\5\u017c"+ - "\2\0\17\u017c\1\0\3\u017c\1\0\1\u017c\2\0\1\u017c"+ - "\2\0\2\360\2\0\4\u017c\10\360\1\0\4\360\5\u017c"+ - "\13\360\5\u017c\2\0\17\u017c\1\360\3\u017c\10\121\2\0"+ - "\11\121\2\0\1\121\1\0\55\121\1\u017d\1\121\1\0"+ - "\5\364\5\0\4\364\15\0\5\364\13\0\26\364\1\0"+ - "\3\364\1\0\1\364\2\0\1\364\6\0\4\364\10\0"+ - "\1\366\4\0\5\364\13\0\5\364\2\0\17\364\1\0"+ - "\3\364\1\0\1\u017e\2\0\1\u017e\6\0\4\u017e\15\0"+ - "\5\u017e\13\0\5\u017e\2\0\17\u017e\1\0\3\u017e\1\0"+ - "\1\u017e\2\0\1\u017e\2\0\2\367\2\0\4\u017e\10\367"+ - "\1\0\4\367\5\u017e\13\367\5\u017e\2\0\17\u017e\1\367"+ - "\3\u017e\10\127\2\0\72\127\1\u017f\1\127\10\121\2\0"+ - "\11\121\2\0\1\121\1\0\56\121\1\u017d\10\127\2\0"+ - "\73\127\1\u017f\75\0\1\u0180\65\0\1\u0181\113\0\1\u0182"+ - "\101\0\1\u0183\121\0\1\u0184\100\0\1\u0185\76\0\1\u0186"+ - "\1\u0187\102\0\1\u0188\30\0\2\141\2\u0105\1\141\1\u0105"+ - "\1\0\2\141\2\0\2\141\1\143\1\141\4\0\1\141"+ - "\2\0\1\141\5\0\4\141\1\143\13\0\5\141\2\u0105"+ - "\11\141\1\143\5\141\1\0\1\141\1\143\1\141\2\0"+ - "\2\u0105\1\0\1\u0105\53\0\2\u0105\23\0\2\141\4\u0108"+ - "\1\0\2\141\2\0\1\141\1\u0107\2\u0108\4\0\1\141"+ - "\2\0\1\141\5\0\1\141\1\u0108\1\141\1\u0107\1\u0108"+ - "\13\0\3\141\4\u0108\5\141\1\u0108\3\141\1\u0108\5\141"+ - "\1\0\1\141\1\u0108\1\141\1\0\5\u0109\5\0\4\u0109"+ - "\11\0\1\161\3\0\5\u0109\13\0\26\u0109\1\0\3\u0109"+ - "\34\0\5\u010a\13\0\2\u010a\2\0\1\u010a\4\0\1\u010a"+ - "\1\0\1\u010a\2\0\1\u010a\2\0\1\u010a\10\0\32\u010b"+ - "\1\u0189\53\u010b\1\12\5\13\1\0\2\12\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\5\0\3\13\1\u018a\1\13"+ - "\13\0\26\13\1\0\3\13\46\u010d\1\u0189\37\u010d\52\u010e"+ - "\1\u0189\33\u010e\1\12\5\13\1\0\2\12\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\5\0\5\13\13\0\11\13"+ - "\1\u018b\14\13\1\0\3\13\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\5\13"+ - "\13\0\11\13\1\u018c\14\13\1\0\3\13\1\12\5\13"+ - "\1\0\2\12\2\0\4\13\4\0\1\12\2\0\1\12"+ - "\5\0\5\13\13\0\15\13\1\u018d\10\13\1\0\3\13"+ - "\1\12\5\13\1\0\2\12\2\0\4\13\4\0\1\12"+ - "\2\0\1\12\5\0\5\13\13\0\20\13\1\246\5\13"+ - "\1\0\3\13\1\12\5\13\1\0\2\12\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\5\0\1\13\1\u0155\3\13"+ - "\13\0\10\13\1\u018e\5\13\1\u014b\4\13\1\u018f\2\13"+ - "\1\0\3\13\1\12\5\13\1\0\2\12\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\5\0\5\13\13\0\12\13"+ - "\1\u0190\13\13\1\0\3\13\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\5\13"+ - "\13\0\3\13\1\u0191\22\13\1\0\3\13\1\12\5\13"+ - "\1\0\2\12\2\0\4\13\4\0\1\12\2\0\1\12"+ - "\5\0\5\13\13\0\15\13\1\u0192\10\13\1\0\3\13"+ - "\1\12\5\13\1\0\2\12\2\0\4\13\4\0\1\12"+ - "\2\0\1\12\5\0\1\u0193\4\13\13\0\1\u0194\1\13"+ - "\1\u0195\13\13\1\u0196\1\u0197\6\13\1\0\3\13\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\1\13\1\u0155\3\13\13\0\1\13\1\307"+ - "\14\13\1\u014b\7\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\4\13\1\u0198\13\0\26\13\1\0\3\13\1\12\5\13"+ - "\1\0\2\12\2\0\4\13\4\0\1\12\2\0\1\12"+ - "\5\0\1\u0199\4\13\13\0\26\13\1\0\3\13\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\1\u019a\1\u019b\3\13\13\0\1\13\1\u019c"+ - "\6\13\1\u018e\1\13\1\u019d\10\13\1\u018f\2\13\1\0"+ - "\3\13\1\12\5\13\1\0\2\12\2\0\4\13\4\0"+ - "\1\12\2\0\1\12\5\0\3\13\1\u019e\1\13\13\0"+ - "\26\13\1\0\3\13\1\12\5\13\1\0\2\12\2\0"+ - "\4\13\4\0\1\12\2\0\1\12\5\0\1\u019f\4\13"+ - "\13\0\26\13\1\0\3\13\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\5\13"+ - "\13\0\12\13\1\u01a0\4\13\1\u0115\6\13\1\0\3\13"+ - "\1\12\5\13\1\0\2\12\2\0\4\13\4\0\1\12"+ - "\2\0\1\12\5\0\5\13\13\0\11\13\1\251\14\13"+ - "\1\0\3\13\1\12\5\13\1\0\2\12\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\5\0\5\13\13\0\1\310"+ - "\12\13\1\307\7\13\1\201\2\13\1\0\3\13\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\5\13\13\0\1\13\1\u01a1\24\13\1\0"+ - "\3\13\1\12\5\13\1\0\2\12\2\0\4\13\4\0"+ - "\1\12\2\0\1\12\5\0\5\13\13\0\1\13\1\u0119"+ - "\24\13\1\0\3\13\1\12\5\13\1\0\2\12\2\0"+ - "\4\13\4\0\1\12\2\0\1\12\5\0\3\13\1\u01a2"+ - "\1\13\13\0\26\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\5\13\13\0\1\246\25\13\1\0\3\13\1\12\5\13"+ - "\1\0\2\12\2\0\4\13\4\0\1\12\2\0\1\12"+ - "\5\0\5\13\13\0\4\13\1\246\21\13\1\0\3\13"+ - "\1\12\5\13\1\0\2\12\2\0\4\13\4\0\1\12"+ - "\2\0\1\12\5\0\5\13\13\0\11\13\1\u01a3\14\13"+ - "\1\0\3\13\1\12\5\13\1\0\2\12\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\5\0\5\13\13\0\4\13"+ - "\1\u01a4\21\13\1\0\3\13\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\5\13"+ - "\13\0\16\13\1\u01a5\7\13\1\0\3\13\1\12\5\13"+ - "\1\0\2\12\2\0\4\13\4\0\1\12\2\0\1\12"+ - "\5\0\5\13\13\0\12\13\1\u01a6\13\13\1\0\3\13"+ - "\1\12\5\13\1\0\2\12\2\0\4\13\4\0\1\12"+ - "\2\0\1\12\5\0\5\13\13\0\15\13\1\310\10\13"+ - "\1\0\3\13\1\12\5\13\1\0\2\12\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\5\0\5\13\13\0\3\13"+ - "\1\u0175\22\13\1\0\3\13\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\5\13"+ - "\13\0\11\13\1\u01a7\14\13\1\0\3\13\1\12\5\13"+ - "\1\0\2\12\2\0\4\13\4\0\1\12\2\0\1\12"+ - "\5\0\1\13\1\u01a8\3\13\13\0\1\13\1\u019c\24\13"+ - "\1\0\3\13\12\0\1\u0130\16\0\1\u0132\21\0\1\u0133"+ - "\26\0\1\u0134\106\0\1\u01a9\20\0\1\u01aa\105\0\1\u01ab"+ - "\105\0\1\u01ac\127\0\1\u01ad\124\0\1\u013c\106\0\1\u01ae"+ - "\62\0\1\u01af\2\0\1\u01ad\124\0\1\u01b0\120\0\1\u01b1"+ - "\50\0\1\u01b2\134\0\1\u01ad\21\0\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\5\13\13\0\15\13\1\u01b3\10\13\1\0\3\13\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\5\13\13\0\12\13\1\u01b4\13\13\1\0"+ - "\3\13\1\12\5\13\1\0\2\12\2\0\4\13\4\0"+ - "\1\12\2\0\1\12\5\0\5\13\13\0\17\13\1\u01b5"+ - "\6\13\1\0\3\13\1\12\5\13\1\0\2\12\2\0"+ - "\4\13\4\0\1\12\2\0\1\12\5\0\5\13\13\0"+ - "\2\13\1\310\23\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\5\13\13\0\17\13\1\u0192\6\13\1\0\3\13\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\1\13\1\223\3\13\13\0\26\13\1\0"+ - "\3\13\1\12\5\13\1\0\2\12\2\0\4\13\4\0"+ - "\1\12\2\0\1\12\5\0\1\u01b6\4\13\13\0\12\13"+ - "\1\310\13\13\1\0\3\13\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\5\13"+ - "\13\0\3\13\1\223\5\13\1\u01b7\14\13\1\0\3\13"+ - "\1\12\5\13\1\0\2\12\2\0\4\13\4\0\1\12"+ - "\2\0\1\12\5\0\3\13\1\310\1\13\13\0\26\13"+ - "\1\0\3\13\1\12\5\13\1\0\2\12\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\5\0\1\u01b8\4\13\13\0"+ - "\1\u01b9\1\13\1\u0195\13\13\1\u0196\1\u0197\6\13\1\0"+ - "\3\13\1\12\5\13\1\0\2\12\2\0\4\13\4\0"+ - "\1\12\2\0\1\12\5\0\5\13\13\0\3\13\1\u0125"+ - "\22\13\1\0\3\13\1\12\5\13\1\0\2\12\2\0"+ - "\4\13\4\0\1\12\2\0\1\12\5\0\5\13\13\0"+ - "\10\13\1\u01ba\15\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\5\13\13\0\17\13\1\u01bb\6\13\1\0\3\13\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\5\13\13\0\21\13\1\u01bc\4\13\1\0"+ - "\3\13\1\12\5\13\1\0\2\12\2\0\4\13\4\0"+ - "\1\12\2\0\1\12\5\0\5\13\13\0\3\13\1\246"+ - "\22\13\1\0\3\13\1\12\5\13\1\0\2\12\2\0"+ - "\4\13\4\0\1\12\2\0\1\12\5\0\5\13\13\0"+ - "\7\13\1\310\16\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\5\13\13\0\1\13\1\223\24\13\1\0\3\13\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\4\13\1\u01bd\13\0\26\13\1\0\3\13"+ - "\1\12\5\13\1\0\2\12\2\0\4\13\4\0\1\12"+ - "\2\0\1\12\5\0\5\13\13\0\3\13\1\u01be\22\13"+ - "\1\0\3\13\1\12\5\13\1\0\2\12\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\5\0\5\13\13\0\21\13"+ - "\1\u01bf\4\13\1\0\3\13\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\5\13"+ - "\13\0\4\13\1\u0166\21\13\1\0\3\13\1\12\5\13"+ - "\1\0\2\12\2\0\4\13\4\0\1\12\2\0\1\12"+ - "\5\0\5\13\13\0\21\13\1\u01c0\4\13\1\0\3\13"+ - "\1\12\5\13\1\0\2\12\2\0\4\13\4\0\1\12"+ - "\2\0\1\12\5\0\5\13\13\0\11\13\1\u01c1\14\13"+ - "\1\0\3\13\1\12\5\13\1\0\2\12\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\5\0\4\13\1\55\13\0"+ - "\26\13\1\0\3\13\1\12\5\13\1\0\2\12\2\0"+ - "\4\13\4\0\1\12\2\0\1\12\5\0\5\13\13\0"+ - "\12\13\1\u0145\13\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\3\13\1\u0192\1\13\13\0\26\13\1\0\3\13\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\5\13\13\0\17\13\1\u01c2\6\13\1\0"+ - "\3\13\1\12\5\13\1\0\2\12\2\0\4\13\4\0"+ - "\1\12\2\0\1\12\5\0\5\13\13\0\3\13\1\u01c3"+ - "\22\13\1\0\3\13\10\u015a\1\u015c\75\u015a\6\12\1\0"+ - "\2\12\2\0\4\12\4\0\1\12\2\0\1\12\5\0"+ - "\5\u015b\13\0\2\u015b\2\12\1\u015b\4\12\1\u015b\1\12"+ - "\1\u015b\2\12\1\u015b\2\12\1\u015b\4\12\1\0\3\12"+ - "\34\0\5\u015c\13\0\2\u015c\2\0\1\u015c\4\0\1\u015c"+ - "\1\0\1\u015c\2\0\1\u015c\2\0\1\u015c\10\0\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\1\272\1\u0155\3\13\13\0\10\13\1\u01c4"+ - "\5\13\1\u014b\7\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\1\265\4\13\13\0\26\13\1\0\3\13\1\12\5\13"+ - "\1\0\2\12\2\0\4\13\4\0\1\12\2\0\1\12"+ - "\5\0\4\13\1\310\13\0\13\13\1\u01c5\12\13\1\0"+ - "\3\13\1\12\5\13\1\0\2\12\2\0\4\13\4\0"+ - "\1\12\2\0\1\12\5\0\5\13\13\0\14\13\1\310"+ - "\11\13\1\0\3\13\1\12\5\13\1\0\2\12\2\0"+ - "\4\13\4\0\1\12\2\0\1\12\5\0\5\13\13\0"+ - "\1\13\1\310\24\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\1\u01c6\1\310\1\13\1\u01c7\1\13\13\0\1\u01c8\1\13"+ - "\1\u01c9\13\13\1\u01ca\1\u01cb\6\13\1\0\3\13\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\1\13\1\u012c\3\13\13\0\26\13\1\0"+ - "\3\13\1\12\5\13\1\0\2\12\2\0\4\13\4\0"+ - "\1\12\2\0\1\12\5\0\5\13\13\0\3\13\1\u01cc"+ - "\7\13\1\u01cd\1\13\1\310\10\13\1\0\3\13\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\5\13\13\0\3\13\1\u01ce\22\13\1\0"+ - "\3\13\1\12\5\13\1\0\2\12\2\0\4\13\4\0"+ - "\1\12\2\0\1\12\5\0\5\13\13\0\13\13\1\225"+ - "\12\13\1\0\3\13\1\12\5\13\1\0\2\12\2\0"+ - "\4\13\4\0\1\12\2\0\1\12\5\0\1\u012c\4\13"+ - "\13\0\26\13\1\0\3\13\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\5\13"+ - "\13\0\2\13\1\u01cf\23\13\1\0\3\13\1\12\5\13"+ - "\1\0\2\12\2\0\4\13\4\0\1\12\2\0\1\12"+ - "\5\0\5\13\13\0\3\13\1\u01d0\5\13\1\u01d1\14\13"+ - "\1\0\3\13\1\12\5\13\1\0\2\12\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\5\0\5\13\13\0\3\13"+ - "\1\256\22\13\1\0\3\13\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\5\13"+ - "\13\0\4\13\1\u0163\21\13\1\0\3\13\1\12\5\13"+ - "\1\0\2\12\2\0\4\13\4\0\1\12\2\0\1\12"+ - "\5\0\5\13\13\0\11\13\1\u01d2\14\13\1\0\3\13"+ - "\6\u016d\1\u01d3\1\u016d\1\u01d4\2\u01d3\4\u016d\4\u01d3\1\u016d"+ - "\2\u01d3\1\u016d\3\u01d3\1\0\1\u01d3\5\u016d\13\u01d3\26\u016d"+ - "\1\u01d3\3\u016d\32\u016e\1\u01d5\53\u016e\32\u016f\1\0\13\u016f"+ - "\1\u01d6\37\u016f\32\u0170\1\0\17\u0170\1\u01d7\33\u0170\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\5\13\13\0\12\13\1\u01d8\13\13\1\0"+ - "\3\13\1\12\5\13\1\0\2\12\2\0\4\13\4\0"+ - "\1\12\2\0\1\12\5\0\3\13\1\u01d9\1\13\13\0"+ - "\26\13\1\0\3\13\1\12\5\13\1\0\2\12\2\0"+ - "\4\13\4\0\1\12\2\0\1\12\5\0\5\13\13\0"+ - "\12\13\1\u01da\13\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\5\13\13\0\12\13\1\u01db\13\13\1\0\3\13\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\5\13\13\0\12\13\1\225\13\13\1\0"+ - "\3\13\10\u0176\1\u01dc\75\u0176\6\u0177\1\u01dc\1\u0177\1\u01dd"+ - "\2\u01dc\4\u0177\4\u01dc\1\u0177\2\u01dc\1\u0177\5\u01dc\5\u0177"+ - "\13\u01dc\26\u0177\1\u01dc\3\u0177\32\u0178\1\u01de\53\u0178\46\u0179"+ - "\1\u01de\37\u0179\52\u017a\1\u01de\33\u017a\1\0\5\u017b\5\0"+ - "\4\u017b\11\0\1\351\3\0\5\u017b\13\0\26\u017b\1\0"+ - "\3\u017b\1\0\5\u017c\5\0\4\u017c\11\0\1\360\3\0"+ - "\5\u017c\13\0\26\u017c\1\0\3\u017c\1\0\5\u017e\5\0"+ - "\4\u017e\11\0\1\367\3\0\5\u017e\13\0\26\u017e\1\0"+ - "\3\u017e\66\0\1\u01df\57\0\1\u01e0\124\0\1\u0188\106\0"+ - "\1\u01e1\62\0\1\u01e2\2\0\1\u01e0\124\0\1\u01e3\120\0"+ - "\1\u01e4\50\0\1\u01e5\134\0\1\u01e0\55\0\5\u0189\13\0"+ - "\2\u0189\1\0\2\u0189\3\0\2\u0189\1\0\1\u0189\2\0"+ - "\1\u0189\2\0\1\u0189\10\0\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\5\13"+ - "\13\0\4\13\1\251\21\13\1\0\3\13\1\12\5\13"+ - "\1\0\2\12\2\0\4\13\4\0\1\12\2\0\1\12"+ - "\5\0\1\13\1\225\3\13\13\0\12\13\1\310\13\13"+ - "\1\0\3\13\1\12\5\13\1\0\2\12\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\5\0\5\13\13\0\17\13"+ - "\1\u01e6\6\13\1\0\3\13\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\5\13"+ - "\13\0\3\13\1\u01e7\22\13\1\0\3\13\1\12\5\13"+ - "\1\0\2\12\2\0\4\13\4\0\1\12\2\0\1\12"+ - "\5\0\5\13\13\0\3\13\1\u01e8\22\13\1\0\3\13"+ - "\1\12\5\13\1\0\2\12\2\0\4\13\4\0\1\12"+ - "\2\0\1\12\5\0\5\13\13\0\10\13\1\337\15\13"+ - "\1\0\3\13\1\12\5\13\1\0\2\12\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\5\0\4\13\1\u01e9\13\0"+ - "\26\13\1\0\3\13\1\12\5\13\1\0\2\12\2\0"+ - "\4\13\4\0\1\12\2\0\1\12\5\0\1\13\1\246"+ - "\3\13\13\0\26\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\5\13\13\0\1\13\1\u01ea\1\13\1\u01eb\22\13\1\0"+ - "\3\13\1\12\5\13\1\0\2\12\2\0\4\13\4\0"+ - "\1\12\2\0\1\12\5\0\5\13\13\0\10\13\1\u01ec"+ - "\5\13\1\u01ed\4\13\1\u01ee\2\13\1\0\3\13\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\5\13\13\0\1\13\1\u01ef\24\13\1\0"+ - "\3\13\1\12\5\13\1\0\2\12\2\0\4\13\4\0"+ - "\1\12\2\0\1\12\5\0\5\13\13\0\10\13\1\u01ee"+ - "\15\13\1\0\3\13\1\12\5\13\1\0\2\12\2\0"+ - "\4\13\4\0\1\12\2\0\1\12\5\0\5\13\13\0"+ - "\3\13\1\u01f0\22\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\5\13\13\0\24\13\1\310\1\13\1\0\3\13\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\5\13\13\0\12\13\1\251\13\13\1\0"+ - "\3\13\1\12\5\13\1\0\2\12\2\0\4\13\4\0"+ - "\1\12\2\0\1\12\5\0\5\13\13\0\3\13\1\u01f1"+ - "\22\13\1\0\3\13\1\12\5\13\1\0\2\12\2\0"+ - "\4\13\4\0\1\12\2\0\1\12\5\0\5\13\13\0"+ - "\4\13\1\314\21\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\5\13\13\0\1\u01a6\25\13\1\0\3\13\1\12\5\13"+ - "\1\0\2\12\2\0\4\13\4\0\1\12\2\0\1\12"+ - "\5\0\5\13\13\0\3\13\1\u01ba\22\13\1\0\3\13"+ - "\1\12\5\13\1\0\2\12\2\0\4\13\4\0\1\12"+ - "\2\0\1\12\5\0\5\13\13\0\11\13\1\u01d1\14\13"+ - "\1\0\3\13\1\12\5\13\1\0\2\12\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\5\0\5\13\13\0\3\13"+ - "\1\u0192\22\13\1\0\3\13\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\5\13"+ - "\13\0\11\13\1\u01f2\14\13\1\0\3\13\1\12\5\13"+ - "\1\0\2\12\2\0\4\13\4\0\1\12\2\0\1\12"+ - "\5\0\5\13\13\0\1\13\1\246\24\13\1\0\3\13"+ - "\1\12\5\13\1\0\2\12\2\0\4\13\4\0\1\12"+ - "\2\0\1\12\5\0\5\13\13\0\3\13\1\251\22\13"+ - "\1\0\3\13\1\12\5\13\1\0\2\12\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\5\0\5\13\13\0\10\13"+ - "\1\u01f3\15\13\1\0\3\13\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\3\13"+ - "\1\u01f4\1\13\13\0\26\13\1\0\3\13\1\12\5\13"+ - "\1\0\2\12\2\0\4\13\4\0\1\12\2\0\1\12"+ - "\5\0\5\13\13\0\12\13\1\u0140\13\13\1\0\3\13"+ - "\1\12\5\13\1\0\2\12\2\0\4\13\4\0\1\12"+ - "\2\0\1\12\5\0\5\13\13\0\3\13\1\201\22\13"+ - "\1\0\3\13\1\12\5\13\1\0\2\12\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\5\0\5\13\13\0\17\13"+ - "\1\u01f5\6\13\1\0\3\13\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\3\13"+ - "\1\u01f6\1\13\13\0\26\13\1\0\3\13\104\0\1\u01f7"+ - "\1\u01f8\103\0\1\u01f9\105\0\1\u01fa\105\0\1\u01fb\42\0"+ - "\1\u01fc\122\0\1\u01fd\117\0\1\u01ad\103\0\1\u01fe\111\0"+ - "\1\u01ad\14\0\1\12\5\13\1\0\2\12\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\5\0\5\13\13\0\4\13"+ - "\1\u01ff\21\13\1\0\3\13\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\5\13"+ - "\13\0\1\13\1\u0200\24\13\1\0\3\13\1\12\5\13"+ - "\1\0\2\12\2\0\4\13\4\0\1\12\2\0\1\12"+ - "\5\0\5\13\13\0\12\13\1\u0201\13\13\1\0\3\13"+ - "\1\12\5\13\1\0\2\12\2\0\4\13\4\0\1\12"+ - "\2\0\1\12\5\0\5\13\13\0\12\13\1\265\13\13"+ - "\1\0\3\13\1\12\5\13\1\0\2\12\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\5\0\5\13\13\0\20\13"+ - "\1\223\5\13\1\0\3\13\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\5\13"+ - "\13\0\3\13\1\u01eb\22\13\1\0\3\13\1\12\5\13"+ - "\1\0\2\12\2\0\4\13\4\0\1\12\2\0\1\12"+ - "\5\0\5\13\13\0\10\13\1\u0202\12\13\1\u01ee\2\13"+ - "\1\0\3\13\1\12\5\13\1\0\2\12\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\5\0\5\13\13\0\13\13"+ - "\1\310\12\13\1\0\3\13\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\5\13"+ - "\13\0\6\13\1\310\17\13\1\0\3\13\1\12\5\13"+ - "\1\0\2\12\2\0\4\13\4\0\1\12\2\0\1\12"+ - "\5\0\5\13\13\0\3\13\1\265\22\13\1\0\3\13"+ - "\1\12\5\13\1\0\2\12\2\0\4\13\4\0\1\12"+ - "\2\0\1\12\5\0\3\13\1\u0203\1\u0120\13\0\1\u0204"+ - "\25\13\1\0\3\13\1\12\5\13\1\0\2\12\2\0"+ - "\4\13\4\0\1\12\2\0\1\12\5\0\5\13\13\0"+ - "\10\13\1\u0205\15\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\5\13\13\0\10\13\1\201\15\13\1\0\3\13\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\5\13\13\0\11\13\1\u0206\14\13\1\0"+ - "\3\13\1\12\5\13\1\0\2\12\2\0\4\13\4\0"+ - "\1\12\2\0\1\12\5\0\5\13\13\0\17\13\1\u0207"+ - "\6\13\1\0\3\13\1\12\5\13\1\0\2\12\2\0"+ - "\4\13\4\0\1\12\2\0\1\12\5\0\1\13\1\u0208"+ - "\3\13\13\0\26\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\1\13\1\u014c\3\13\13\0\26\13\1\0\3\13\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\5\13\13\0\1\13\1\u0209\24\13\1\0"+ - "\3\13\1\12\5\13\1\0\2\12\2\0\4\13\4\0"+ - "\1\12\2\0\1\12\5\0\5\13\13\0\1\13\1\u020a"+ - "\1\13\1\u020b\22\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\5\13\13\0\1\13\1\u020c\24\13\1\0\3\13\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\5\13\13\0\1\u020d\2\13\1\u020e\4\13"+ - "\1\u020f\5\13\1\u01ed\4\13\1\u0210\2\13\1\0\3\13"+ - "\1\12\5\13\1\0\2\12\2\0\4\13\4\0\1\12"+ - "\2\0\1\12\5\0\5\13\13\0\1\13\1\u0211\24\13"+ - "\1\0\3\13\1\12\5\13\1\0\2\12\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\5\0\5\13\13\0\10\13"+ - "\1\u0212\15\13\1\0\3\13\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\5\13"+ - "\13\0\3\13\1\u0213\22\13\1\0\3\13\1\12\5\13"+ - "\1\0\2\12\2\0\4\13\4\0\1\12\2\0\1\12"+ - "\5\0\5\13\13\0\4\13\1\u0214\21\13\1\0\3\13"+ - "\1\12\5\13\1\0\2\12\2\0\4\13\4\0\1\12"+ - "\2\0\1\12\5\0\3\13\1\u0215\1\13\13\0\26\13"+ - "\1\0\3\13\1\12\5\13\1\0\2\12\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\5\0\5\13\13\0\17\13"+ - "\1\u0161\6\13\1\0\3\13\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\5\13"+ - "\13\0\11\13\1\u0112\14\13\1\0\3\13\1\12\5\13"+ - "\1\0\2\12\2\0\4\13\4\0\1\12\2\0\1\12"+ - "\5\0\1\u0216\4\13\13\0\26\13\1\0\3\13\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\5\13\13\0\17\13\1\u012c\6\13\1\0"+ - "\3\13\1\12\5\13\1\0\2\12\2\0\4\13\4\0"+ - "\1\12\2\0\1\12\5\0\3\13\1\223\1\13\13\0"+ - "\3\13\1\310\22\13\1\0\3\13\10\u01d3\1\u0217\21\u01d3"+ - "\1\0\53\u01d3\6\u016d\1\u01d3\1\u016d\1\u01d4\2\u01d3\4\u016d"+ - "\4\u01d3\1\u016d\2\u01d3\1\u016d\3\u01d3\1\0\1\u01d3\1\u01d4"+ - "\1\u016d\3\u01d4\13\u01d3\2\u01d4\2\u016d\1\u01d4\4\u016d\1\u01d4"+ - "\1\u016d\1\u01d4\5\u016d\1\u01d4\4\u016d\1\u01d3\3\u016d\34\0"+ - "\1\u01d5\1\0\3\u01d5\13\0\2\u01d5\2\0\1\u01d5\4\0"+ - "\1\u01d5\1\0\1\u01d5\5\0\1\u01d5\10\0\32\u016f\1\0"+ - "\1\u016f\1\u01d6\1\u016f\3\u01d6\5\u016f\1\u01d6\5\u016f\2\u01d6"+ - "\2\u016f\1\u01d6\4\u016f\1\u01d6\1\u016f\1\u01d6\5\u016f\1\u01d6"+ - "\10\u016f\32\u0170\1\0\1\u0170\1\u01d7\1\u0170\3\u01d7\11\u0170"+ - "\1\u01d7\1\u0170\2\u01d7\2\u0170\1\u01d7\4\u0170\1\u01d7\1\u0170"+ - "\1\u01d7\5\u0170\1\u01d7\10\u0170\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\5\13"+ - "\13\0\3\13\1\u0218\22\13\1\0\3\13\1\12\5\13"+ - "\1\0\2\12\2\0\4\13\4\0\1\12\2\0\1\12"+ - "\5\0\5\13\13\0\3\13\1\223\22\13\1\0\3\13"+ - "\1\12\5\13\1\0\2\12\2\0\4\13\4\0\1\12"+ - "\2\0\1\12\5\0\5\13\13\0\1\u020d\25\13\1\0"+ - "\3\13\1\12\5\13\1\0\2\12\2\0\4\13\4\0"+ - "\1\12\2\0\1\12\5\0\5\13\13\0\4\13\1\u0219"+ - "\21\13\1\0\3\13\10\u01dc\1\u01de\75\u01dc\6\12\1\0"+ - "\2\12\2\0\4\12\4\0\1\12\2\0\1\12\5\0"+ - "\2\u01dd\2\12\1\u01dd\13\0\10\12\1\u01dd\15\12\1\0"+ - "\3\12\34\0\2\u01de\2\0\1\u01de\23\0\1\u01de\61\0"+ - "\1\u021a\122\0\1\u021b\117\0\1\u01e0\103\0\1\u021c\111\0"+ - "\1\u01e0\14\0\1\12\5\13\1\0\2\12\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\5\0\5\13\13\0\12\13"+ - "\1\256\13\13\1\0\3\13\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\5\13"+ - "\13\0\12\13\1\u021d\13\13\1\0\3\13\1\12\5\13"+ - "\1\0\2\12\2\0\4\13\4\0\1\12\2\0\1\12"+ - "\5\0\5\13\13\0\4\13\1\u0119\21\13\1\0\3\13"+ - "\1\12\5\13\1\0\2\12\2\0\4\13\4\0\1\12"+ - "\2\0\1\12\5\0\5\13\13\0\1\13\1\u021e\24\13"+ - "\1\0\3\13\1\12\5\13\1\0\2\12\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\5\0\1\13\1\u021f\3\13"+ - "\13\0\26\13\1\0\3\13\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\5\13"+ - "\13\0\10\13\1\u0220\15\13\1\0\3\13\1\12\5\13"+ - "\1\0\2\12\2\0\4\13\4\0\1\12\2\0\1\12"+ - "\5\0\5\13\13\0\1\13\1\u0221\7\13\1\u0222\14\13"+ - "\1\0\3\13\1\12\5\13\1\0\2\12\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\5\0\5\13\13\0\10\13"+ - "\1\307\15\13\1\0\3\13\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\5\13"+ - "\13\0\3\13\1\u0223\22\13\1\0\3\13\1\12\5\13"+ - "\1\0\2\12\2\0\4\13\4\0\1\12\2\0\1\12"+ - "\5\0\1\u01f0\4\13\13\0\26\13\1\0\3\13\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\5\13\13\0\12\13\1\u01ee\13\13\1\0"+ - "\3\13\1\12\5\13\1\0\2\12\2\0\4\13\4\0"+ - "\1\12\2\0\1\12\5\0\5\13\13\0\3\13\1\u012c"+ - "\22\13\1\0\3\13\1\12\5\13\1\0\2\12\2\0"+ - "\4\13\4\0\1\12\2\0\1\12\5\0\5\13\13\0"+ - "\17\13\1\u0224\6\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\1\246\4\13\13\0\26\13\1\0\3\13\1\12\5\13"+ - "\1\0\2\12\2\0\4\13\4\0\1\12\2\0\1\12"+ - "\5\0\5\13\13\0\3\13\1\u0119\22\13\1\0\3\13"+ - "\1\12\5\13\1\0\2\12\2\0\4\13\4\0\1\12"+ - "\2\0\1\12\5\0\5\13\13\0\1\13\1\u0205\24\13"+ - "\1\0\3\13\104\0\1\u0225\1\u0226\104\0\1\u0227\1\u0228"+ - "\104\0\1\u0229\1\u022a\61\0\2\u01ad\63\0\1\u022b\140\0"+ - "\1\u01ad\12\0\1\12\5\13\1\0\2\12\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\5\0\5\13\13\0\16\13"+ - "\1\225\7\13\1\0\3\13\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\5\13"+ - "\13\0\12\13\1\u022c\13\13\1\0\3\13\1\12\5\13"+ - "\1\0\2\12\2\0\4\13\4\0\1\12\2\0\1\12"+ - "\5\0\5\13\13\0\1\13\1\u0221\24\13\1\0\3\13"+ - "\1\12\5\13\1\0\2\12\2\0\4\13\4\0\1\12"+ - "\2\0\1\12\5\0\5\13\13\0\11\13\1\u022d\14\13"+ - "\1\0\3\13\1\12\5\13\1\0\2\12\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\5\0\5\13\13\0\11\13"+ - "\1\244\14\13\1\0\3\13\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\1\225"+ - "\4\13\13\0\26\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\5\13\13\0\10\13\1\225\15\13\1\0\3\13\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\4\13\1\274\13\0\26\13\1\0\3\13"+ - "\1\12\5\13\1\0\2\12\2\0\4\13\4\0\1\12"+ - "\2\0\1\12\5\0\5\13\13\0\4\13\1\u0175\21\13"+ - "\1\0\3\13\1\12\5\13\1\0\2\12\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\5\0\4\13\1\225\13\0"+ - "\26\13\1\0\3\13\1\12\5\13\1\0\2\12\2\0"+ - "\4\13\4\0\1\12\2\0\1\12\5\0\1\13\1\u022e"+ - "\3\13\13\0\26\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\5\13\13\0\10\13\1\u022f\15\13\1\0\3\13\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\5\13\13\0\16\13\1\344\7\13\1\0"+ - "\3\13\1\12\5\13\1\0\2\12\2\0\4\13\4\0"+ - "\1\12\2\0\1\12\5\0\5\13\13\0\11\13\1\u0119"+ - "\14\13\1\0\3\13\1\12\5\13\1\0\2\12\2\0"+ - "\4\13\4\0\1\12\2\0\1\12\5\0\5\13\13\0"+ - "\3\13\1\u0230\22\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\5\13\13\0\1\13\1\u0231\7\13\1\u0222\14\13\1\0"+ - "\3\13\1\12\5\13\1\0\2\12\2\0\4\13\4\0"+ - "\1\12\2\0\1\12\5\0\5\13\13\0\3\13\1\u0223"+ - "\13\13\1\u0232\1\13\1\u020d\4\13\1\0\3\13\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\1\u0213\4\13\13\0\26\13\1\0\3\13"+ - "\1\12\5\13\1\0\2\12\2\0\4\13\4\0\1\12"+ - "\2\0\1\12\5\0\5\13\13\0\3\13\1\u0223\12\13"+ - "\1\u020d\1\u0232\6\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\5\13\13\0\12\13\1\u0233\13\13\1\0\3\13\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\1\13\1\u0234\3\13\13\0\26\13\1\0"+ - "\3\13\1\12\5\13\1\0\2\12\2\0\4\13\4\0"+ - "\1\12\2\0\1\12\5\0\5\13\13\0\11\13\1\u0235"+ - "\14\13\1\0\3\13\1\12\5\13\1\0\2\12\2\0"+ - "\4\13\4\0\1\12\2\0\1\12\5\0\1\223\4\13"+ - "\13\0\26\13\1\0\3\13\10\u01d3\1\u0217\21\u01d3\1\0"+ - "\1\u01d3\1\u0217\1\u01d3\3\u0217\13\u01d3\2\u0217\2\u01d3\1\u0217"+ - "\4\u01d3\1\u0217\1\u01d3\1\u0217\5\u01d3\1\u0217\10\u01d3\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\5\13\13\0\13\13\1\u0236\12\13\1\0"+ - "\3\13\1\12\5\13\1\0\2\12\2\0\4\13\4\0"+ - "\1\12\2\0\1\12\5\0\5\13\13\0\10\13\1\u0237"+ - "\15\13\1\0\3\13\61\0\2\u01e0\63\0\1\u0238\140\0"+ - "\1\u01e0\12\0\1\12\5\13\1\0\2\12\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\5\0\5\13\13\0\1\u0239"+ - "\25\13\1\0\3\13\1\12\5\13\1\0\2\12\2\0"+ - "\4\13\4\0\1\12\2\0\1\12\5\0\5\13\13\0"+ - "\23\13\1\201\2\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\5\13\13\0\15\13\1\u023a\10\13\1\0\3\13\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\5\13\13\0\7\13\1\u01ee\16\13\1\0"+ - "\3\13\1\12\5\13\1\0\2\12\2\0\4\13\4\0"+ - "\1\12\2\0\1\12\5\0\5\13\13\0\12\13\1\u023b"+ - "\13\13\1\0\3\13\1\12\5\13\1\0\2\12\2\0"+ - "\4\13\4\0\1\12\2\0\1\12\5\0\5\13\13\0"+ - "\1\13\1\u023c\24\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\5\13\13\0\17\13\1\246\6\13\1\0\3\13\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\5\13\13\0\21\13\1\u01d9\4\13\1\0"+ - "\3\13\31\0\1\u01f7\105\0\1\u01f8\127\0\1\u023d\105\0"+ - "\1\u023e\134\0\1\u01f7\105\0\1\u01f8\70\0\1\u023f\20\0"+ - "\1\12\5\13\1\0\2\12\2\0\4\13\4\0\1\12"+ - "\2\0\1\12\5\0\5\13\13\0\24\13\1\244\1\13"+ - "\1\0\3\13\1\12\5\13\1\0\2\12\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\5\0\5\13\13\0\17\13"+ - "\1\u0240\6\13\1\0\3\13\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\5\13"+ - "\13\0\15\13\1\u0241\10\13\1\0\3\13\1\12\5\13"+ - "\1\0\2\12\2\0\4\13\4\0\1\12\2\0\1\12"+ - "\5\0\5\13\13\0\7\13\1\u0242\16\13\1\0\3\13"+ - "\1\12\5\13\1\0\2\12\2\0\4\13\4\0\1\12"+ - "\2\0\1\12\5\0\5\13\13\0\10\13\1\u0243\15\13"+ - "\1\0\3\13\1\12\5\13\1\0\2\12\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\5\0\5\13\13\0\12\13"+ - "\1\u0244\13\13\1\0\3\13\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\5\13"+ - "\13\0\4\13\1\u01ba\21\13\1\0\3\13\1\12\5\13"+ - "\1\0\2\12\2\0\4\13\4\0\1\12\2\0\1\12"+ - "\5\0\5\13\13\0\3\13\1\u0223\10\13\1\u0245\11\13"+ - "\1\0\3\13\1\12\5\13\1\0\2\12\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\5\0\5\13\13\0\2\13"+ - "\1\223\23\13\1\0\3\13\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\5\13"+ - "\13\0\17\13\1\225\6\13\1\0\3\13\1\12\5\13"+ - "\1\0\2\12\2\0\4\13\4\0\1\12\2\0\1\12"+ - "\5\0\5\13\13\0\3\13\1\u0246\22\13\1\0\3\13"+ - "\1\12\5\13\1\0\2\12\2\0\4\13\4\0\1\12"+ - "\2\0\1\12\5\0\5\13\13\0\10\13\1\u0247\15\13"+ - "\1\0\3\13\65\0\1\u0248\20\0\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\5\13\13\0\4\13\1\u0120\21\13\1\0\3\13\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\5\13\13\0\1\13\1\u0125\24\13\1\0"+ - "\3\13\1\12\5\13\1\0\2\12\2\0\4\13\4\0"+ - "\1\12\2\0\1\12\5\0\5\13\13\0\1\13\1\u01ee"+ - "\24\13\1\0\3\13\1\12\5\13\1\0\2\12\2\0"+ - "\4\13\4\0\1\12\2\0\1\12\5\0\5\13\13\0"+ - "\10\13\1\u0249\15\13\1\0\3\13\73\0\1\u024a\12\0"+ - "\1\12\5\13\1\0\2\12\2\0\4\13\4\0\1\12"+ - "\2\0\1\12\5\0\5\13\13\0\3\13\1\310\11\13"+ - "\1\310\10\13\1\0\3\13\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\5\13"+ - "\13\0\1\13\1\u0125\15\13\1\u0151\6\13\1\0\3\13"+ - "\1\12\5\13\1\0\2\12\2\0\4\13\4\0\1\12"+ - "\2\0\1\12\5\0\5\13\13\0\3\13\1\u0223\10\13"+ - "\1\u024b\11\13\1\0\3\13\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\5\13"+ - "\13\0\17\13\1\u0151\6\13\1\0\3\13\1\12\5\13"+ - "\1\0\2\12\2\0\4\13\4\0\1\12\2\0\1\12"+ - "\5\0\5\13\13\0\1\13\1\u024c\24\13\1\0\3\13"+ - "\1\12\5\13\1\0\2\12\2\0\4\13\4\0\1\12"+ - "\2\0\1\12\5\0\5\13\13\0\24\13\1\u024d\1\13"+ - "\1\0\3\13\1\12\5\13\1\0\2\12\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\5\0\5\13\13\0\12\13"+ - "\1\u024e\13\13\1\0\3\13\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\5\13"+ - "\13\0\4\13\1\u0198\21\13\1\0\3\13\73\0\1\u024f"+ - "\12\0\1\12\5\13\1\0\2\12\2\0\4\13\4\0"+ - "\1\12\2\0\1\12\5\0\5\13\13\0\11\13\1\u0250"+ - "\14\13\1\0\3\13\72\0\1\u01ad\13\0\1\12\5\13"+ - "\1\0\2\12\2\0\4\13\4\0\1\12\2\0\1\12"+ - "\5\0\5\13\13\0\24\13\1\u0251\1\13\1\0\3\13"+ - "\1\12\5\13\1\0\2\12\2\0\4\13\4\0\1\12"+ - "\2\0\1\12\5\0\5\13\13\0\3\13\1\u0223\10\13"+ - "\1\u0252\11\13\1\0\3\13\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\5\13"+ - "\13\0\4\13\1\u0253\12\13\1\u0151\6\13\1\0\3\13"+ - "\1\12\5\13\1\0\2\12\2\0\4\13\4\0\1\12"+ - "\2\0\1\12\5\0\5\13\13\0\4\13\1\310\21\13"+ - "\1\0\3\13\72\0\1\u01e0\13\0\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\5\13\13\0\12\13\1\u0198\13\13\1\0\3\13\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\5\13\13\0\1\u0254\16\13\1\u0151\6\13"+ - "\1\0\3\13\1\12\5\13\1\0\2\12\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\5\0\5\13\13\0\24\13"+ - "\1\u0255\1\13\1\0\3\13\1\12\5\13\1\0\2\12"+ - "\2\0\4\13\4\0\1\12\2\0\1\12\5\0\4\13"+ - "\1\u0256\13\0\26\13\1\0\3\13\1\12\5\13\1\0"+ - "\2\12\2\0\4\13\4\0\1\12\2\0\1\12\5\0"+ - "\5\13\13\0\1\13\1\204\24\13\1\0\3\13\1\12"+ - "\5\13\1\0\2\12\2\0\4\13\4\0\1\12\2\0"+ - "\1\12\5\0\5\13\13\0\17\13\1\u0257\6\13\1\0"+ - "\3\13\1\12\5\13\1\0\2\12\2\0\4\13\4\0"+ - "\1\12\2\0\1\12\5\0\4\13\1\251\13\0\26\13"+ - "\1\0\3\13\1\12\5\13\1\0\2\12\2\0\4\13"+ - "\4\0\1\12\2\0\1\12\5\0\5\13\13\0\4\13"+ - "\1\u0166\14\13\1\u0258\4\13\1\0\3\13\1\12\5\13"+ - "\1\0\2\12\2\0\4\13\4\0\1\12\2\0\1\12"+ - "\5\0\5\13\13\0\13\13\1\u0259\12\13\1\0\3\13"+ - "\1\12\5\13\1\0\2\12\2\0\4\13\4\0\1\12"+ - "\2\0\1\12\5\0\5\13\13\0\14\13\1\u01a2\11\13"+ - "\1\0\3\13"; - - private static int [] zzUnpackTrans() { - int [] result = new int[38500]; - int offset = 0; - offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackTrans(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - value--; - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /* error codes */ - private static final int ZZ_UNKNOWN_ERROR = 0; - private static final int ZZ_NO_MATCH = 1; - private static final int ZZ_PUSHBACK_2BIG = 2; - - /* error messages for the codes above */ - private static final String ZZ_ERROR_MSG[] = { - "Unkown internal scanner error", - "Error: could not match input", - "Error: pushback value was too large" - }; - - /** - * ZZ_ATTRIBUTE[aState] contains the attributes of state aState - */ - private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); - - private static final String ZZ_ATTRIBUTE_PACKED_0 = - "\11\0\4\1\1\11\1\1\1\11\3\1\2\11\4\1"+ - "\1\11\15\1\1\11\1\1\1\11\24\1\1\11\2\1"+ - "\1\11\3\1\1\11\2\1\2\11\1\1\1\11\3\1"+ - "\1\11\1\1\1\11\5\1\1\11\1\1\1\11\1\1"+ - "\1\11\2\1\1\11\15\1\1\0\1\1\1\0\1\1"+ - "\1\11\1\1\3\0\1\1\1\0\2\1\2\0\34\1"+ - "\10\0\43\1\1\0\1\1\2\0\32\1\3\0\1\1"+ - "\1\11\2\1\1\0\1\11\1\1\1\0\1\11\2\1"+ - "\1\0\1\11\1\1\1\0\3\1\1\0\1\11\1\1"+ - "\1\0\3\1\10\0\1\1\1\0\2\1\1\0\1\1"+ - "\1\0\1\1\2\0\41\1\15\0\35\1\1\0\23\1"+ - "\3\0\5\1\1\0\1\1\5\0\1\1\1\0\1\1"+ - "\11\0\40\1\4\0\1\11\5\0\40\1\1\0\10\1"+ - "\1\0\2\1\2\11\5\0\21\1\2\11\6\0\33\1"+ - "\3\0\10\1\7\0\14\1\1\0\4\1\2\11\1\0"+ - "\10\1\1\0\1\1\1\0\4\1\1\0\12\1"; - - private static int [] zzUnpackAttribute() { - int [] result = new int[601]; - int offset = 0; - offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAttribute(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - /** the input device */ - private java.io.Reader zzReader; - - /** the current state of the DFA */ - private int zzState; - - /** the current lexical state */ - private int zzLexicalState = YYINITIAL; - - /** this buffer contains the current text to be matched and is - the source of the yytext() string */ - private char zzBuffer[]; - - /** the textposition at the last accepting state */ - private int zzMarkedPos; - - /** the current text position in the buffer */ - private int zzCurrentPos; - - /** startRead marks the beginning of the yytext() string in the buffer */ - private int zzStartRead; - - /** endRead marks the last character in the buffer, that has been read - from input */ - private int zzEndRead; - - /** zzAtEOF == true <=> the scanner is at the EOF */ - private boolean zzAtEOF; - - /* user code: */ - - /** - * Token type specific to PerlTokenMaker; this signals that we are inside - * an unquoted/double quoted/backtick EOF heredoc. - */ - public static final int INTERNAL_HEREDOC_EOF_UNQUOTED = -1; - - /** - * Token type specific to PerlTokenMaker; this signals that we are inside - * an single quoted EOF heredoc. - */ - public static final int INTERNAL_HEREDOC_EOF_SINGLE_QUOTED = -2; - - /** - * Token type specific to PerlTokenMaker; this signals that we are inside - * an unquoted/double quoted/backtick EOT heredoc. - */ - public static final int INTERNAL_HEREDOC_EOT_UNQUOTED = -3; - - /** - * Token type specific to PerlTokenMaker; this signals that we are inside - * an single quoted EOT heredoc. - */ - public static final int INTERNAL_HEREDOC_EOT_SINGLE_QUOTED = -4; - - /** - * Token type specific to PerlTokenMaker; this signals we are in a POD - * block. - */ - public static final int INTERNAL_POD = -5; - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public PerlTokenMaker() { - } - - - /** - * Adds the token specified to the current linked list of tokens as an - * "end token;" that is, at zzMarkedPos. - * - * @param tokenType The token's type. - */ - private void addEndToken(int tokenType) { - addToken(zzMarkedPos,zzMarkedPos, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, int startOffset) { - super.addToken(array, start,end, tokenType, startOffset); - zzStartRead = zzMarkedPos; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { "#", null }; - } - - - /** - * {@inheritDoc} - */ - @Override - public boolean getMarkOccurrencesOfTokenType(int type) { - return super.getMarkOccurrencesOfTokenType(type) || type==Token.VARIABLE; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - - // Start off in the proper state. - int state = Token.NULL; - switch (initialTokenType) { - case Token.LITERAL_STRING_DOUBLE_QUOTE: - state = STRING; - start = text.offset; - break; - case Token.LITERAL_CHAR: - state = CHAR_LITERAL; - start = text.offset; - break; - case Token.LITERAL_BACKQUOTE: - state = BACKTICKS; - start = text.offset; - break; - case INTERNAL_HEREDOC_EOF_UNQUOTED: - state = HEREDOC_EOF_UNQUOTED; - start = text.offset; - break; - case INTERNAL_HEREDOC_EOF_SINGLE_QUOTED: - state = HEREDOC_EOF_SINGLE_QUOTED; - start = text.offset; - break; - case INTERNAL_HEREDOC_EOT_UNQUOTED: - state = HEREDOC_EOT_UNQUOTED; - start = text.offset; - break; - case INTERNAL_HEREDOC_EOT_SINGLE_QUOTED: - state = HEREDOC_EOT_SINGLE_QUOTED; - start = text.offset; - break; - case INTERNAL_POD: - state = POD; - start = text.offset; - break; - default: - state = Token.NULL; - } - - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Returns whether a regular expression token can follow the specified - * token. - * - * @param t The token to check, which may be null. - * @return Whether a regular expression token may follow this one. - */ - private static final boolean regexCanFollow(Token t) { - char ch; - // We basically try to mimic Eclipse's JS editor's behavior here. - return t==null || - //t.isOperator() || - (t.length()==1 && ( - (ch=t.charAt(0))=='=' || - ch=='(' || - ch==',' || - ch=='?' || - ch==':' || - ch=='[' || - ch=='!' || - ch=='&' - )) || - /* Operators "==", "===", "!=", "!==", etc. */ - (t.getType()==Token.OPERATOR && - ((ch=t.charAt(t.length()-1))=='=' || ch=='~')); - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(java.io.Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtEOF = false; - } - - - - - /** - * Creates a new scanner - * There is also a java.io.InputStream version of this constructor. - * - * @param in the java.io.Reader to read input from. - */ - public PerlTokenMaker(java.io.Reader in) { - this.zzReader = in; - } - - /** - * Creates a new scanner. - * There is also java.io.Reader version of this constructor. - * - * @param in the java.io.Inputstream to read input from. - */ - public PerlTokenMaker(java.io.InputStream in) { - this(new java.io.InputStreamReader(in)); - } - - /** - * Unpacks the compressed character translation table. - * - * @param packed the packed character translation table - * @return the unpacked character translation table - */ - private static char [] zzUnpackCMap(String packed) { - char [] map = new char[0x10000]; - int i = 0; /* index in packed string */ - int j = 0; /* index in unpacked array */ - while (i < 174) { - int count = packed.charAt(i++); - char value = packed.charAt(i++); - do map[j++] = value; while (--count > 0); - } - return map; - } - - - /** - * Closes the input stream. - */ - public final void yyclose() throws java.io.IOException { - zzAtEOF = true; /* indicate end of file */ - zzEndRead = zzStartRead; /* invalidate buffer */ - - if (zzReader != null) - zzReader.close(); - } - - - /** - * Returns the current lexical state. - */ - public final int yystate() { - return zzLexicalState; - } - - - /** - * Enters a new lexical state - * - * @param newState the new lexical state - */ - @Override -public final void yybegin(int newState) { - zzLexicalState = newState; - } - - - /** - * Returns the text matched by the current regular expression. - */ - public final String yytext() { - return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead ); - } - - - /** - * Returns the character at position pos from the - * matched text. - * - * It is equivalent to yytext().charAt(pos), but faster - * - * @param pos the position of the character to fetch. - * A value from 0 to yylength()-1. - * - * @return the character at position pos - */ - public final char yycharat(int pos) { - return zzBuffer[zzStartRead+pos]; - } - - - /** - * Returns the length of the matched text region. - */ - public final int yylength() { - return zzMarkedPos-zzStartRead; - } - - - /** - * Reports an error that occured while scanning. - * - * In a wellformed scanner (no or only correct usage of - * yypushback(int) and a match-all fallback rule) this method - * will only be called with things that "Can't Possibly Happen". - * If this method is called, something is seriously wrong - * (e.g. a JFlex bug producing a faulty scanner etc.). - * - * Usual syntax/scanner level error handling should be done - * in error fallback rules. - * - * @param errorCode the code of the errormessage to display - */ - private void zzScanError(int errorCode) { - String message; - try { - message = ZZ_ERROR_MSG[errorCode]; - } - catch (ArrayIndexOutOfBoundsException e) { - message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; - } - - throw new Error(message); - } - - - /** - * Pushes the specified amount of characters back into the input stream. - * - * They will be read again by then next call of the scanning method - * - * @param number the number of characters to be read again. - * This number must not be greater than yylength()! - */ - public void yypushback(int number) { - if ( number > yylength() ) - zzScanError(ZZ_PUSHBACK_2BIG); - - zzMarkedPos -= number; - } - - - /** - * Resumes scanning until the next regular expression is matched, - * the end of input is encountered or an I/O-Error occurs. - * - * @return the next token - * @exception java.io.IOException if any I/O-Error occurs - */ - public org.fife.ui.rsyntaxtextarea.Token yylex() throws java.io.IOException { - int zzInput; - int zzAction; - - // cached fields: - int zzCurrentPosL; - int zzMarkedPosL; - int zzEndReadL = zzEndRead; - char [] zzBufferL = zzBuffer; - char [] zzCMapL = ZZ_CMAP; - - int [] zzTransL = ZZ_TRANS; - int [] zzRowMapL = ZZ_ROWMAP; - int [] zzAttrL = ZZ_ATTRIBUTE; - - while (true) { - zzMarkedPosL = zzMarkedPos; - - zzAction = -1; - - zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; - - zzState = zzLexicalState; - - - zzForAction: { - while (true) { - - if (zzCurrentPosL < zzEndReadL) - zzInput = zzBufferL[zzCurrentPosL++]; - else if (zzAtEOF) { - zzInput = YYEOF; - break zzForAction; - } - else { - // store back cached positions - zzCurrentPos = zzCurrentPosL; - zzMarkedPos = zzMarkedPosL; - boolean eof = zzRefill(); - // get translated positions and possibly new buffer - zzCurrentPosL = zzCurrentPos; - zzMarkedPosL = zzMarkedPos; - zzBufferL = zzBuffer; - zzEndReadL = zzEndRead; - if (eof) { - zzInput = YYEOF; - break zzForAction; - } - else { - zzInput = zzBufferL[zzCurrentPosL++]; - } - } - int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; - if (zzNext == -1) break zzForAction; - zzState = zzNext; - - int zzAttributes = zzAttrL[zzState]; - if ( (zzAttributes & 1) == 1 ) { - zzAction = zzState; - zzMarkedPosL = zzCurrentPosL; - if ( (zzAttributes & 8) == 8 ) break zzForAction; - } - - } - } - - // store back cached position - zzMarkedPos = zzMarkedPosL; - - switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { - case 2: - { addToken(Token.IDENTIFIER); - } - case 46: break; - case 34: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.LITERAL_BACKQUOTE); addToken(temp,zzMarkedPos-1, Token.VARIABLE); start = zzMarkedPos; - } - case 47: break; - case 40: - { if (start==zzStartRead) { addToken(Token.COMMENT_DOCUMENTATION); yybegin(YYINITIAL); } - } - case 48: break; - case 26: - { addToken(Token.ERROR_NUMBER_FORMAT); - } - case 49: break; - case 11: - { start = zzMarkedPos-1; yybegin(STRING); - } - case 50: break; - case 38: - { if (start==zzStartRead) { addToken(Token.PREPROCESSOR); addNullToken(); return firstToken; } - } - case 51: break; - case 31: - { addToken(Token.FUNCTION); - } - case 52: break; - case 36: - { boolean highlightedAsRegex = false; - if (firstToken==null) { - addToken(Token.REGEX); - highlightedAsRegex = true; - } - else { - // If this is *likely* to be a regex, based on - // the previous token, highlight it as such. - Token t = firstToken.getLastNonCommentNonWhitespaceToken(); - if (regexCanFollow(t)) { - addToken(Token.REGEX); - highlightedAsRegex = true; - } - } - // If it doesn't *appear* to be a regex, highlight it as - // individual tokens. - if (!highlightedAsRegex) { - int temp = zzStartRead + 1; - addToken(zzStartRead, zzStartRead, Token.OPERATOR); - zzStartRead = zzCurrentPos = zzMarkedPos = temp; - } - } - case 53: break; - case 30: - { addToken(Token.VARIABLE); - } - case 54: break; - case 1: - { addToken(Token.ERROR_IDENTIFIER); - } - case 55: break; - case 24: - { addToken(start,zzStartRead-1, Token.PREPROCESSOR); addEndToken(INTERNAL_HEREDOC_EOT_SINGLE_QUOTED); return firstToken; - } - case 56: break; - case 4: - { addToken(Token.COMMENT_EOL); addNullToken(); return firstToken; - } - case 57: break; - case 29: - { addToken(Token.PREPROCESSOR); addNullToken(); return firstToken; - } - case 58: break; - case 41: - { if (start==zzStartRead) { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addToken(temp,zzMarkedPos-1, Token.COMMENT_EOL); start = zzMarkedPos; } - } - case 59: break; - case 44: - { start = zzStartRead; yybegin(HEREDOC_EOF_SINGLE_QUOTED); - } - case 60: break; - case 45: - { start = zzStartRead; yybegin(HEREDOC_EOT_SINGLE_QUOTED); - } - case 61: break; - case 42: - { start = zzStartRead; yybegin(HEREDOC_EOF_UNQUOTED); - } - case 62: break; - case 13: - { /* Skip escaped chars. */ - } - case 63: break; - case 37: - { addToken(Token.REGEX); - } - case 64: break; - case 18: - { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_CHAR); - } - case 65: break; - case 28: - { addToken(Token.LITERAL_NUMBER_HEXADECIMAL); - } - case 66: break; - case 21: - { addToken(start,zzStartRead-1, Token.PREPROCESSOR); addEndToken(INTERNAL_HEREDOC_EOF_UNQUOTED); return firstToken; - } - case 67: break; - case 6: - { addToken(Token.WHITESPACE); - } - case 68: break; - case 10: - { start = zzMarkedPos-1; yybegin(CHAR_LITERAL); - } - case 69: break; - case 3: - { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); - } - case 70: break; - case 33: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addToken(temp,zzMarkedPos-1, Token.VARIABLE); start = zzMarkedPos; - } - case 71: break; - case 20: - { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_BACKQUOTE); - } - case 72: break; - case 15: - { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); - } - case 73: break; - case 16: - { /* Skip escaped single quotes only, but this should still work. */ - } - case 74: break; - case 23: - { addToken(start,zzStartRead-1, Token.PREPROCESSOR); addEndToken(INTERNAL_HEREDOC_EOT_UNQUOTED); return firstToken; - } - case 75: break; - case 35: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.PREPROCESSOR); addToken(temp,zzMarkedPos-1, Token.VARIABLE); start = zzMarkedPos; - } - case 76: break; - case 39: - { addToken(Token.COMMENT_EOL); start = zzMarkedPos; yybegin(POD); - } - case 77: break; - case 32: - { addToken(Token.RESERVED_WORD); - } - case 78: break; - case 19: - { addToken(start,zzStartRead-1, Token.LITERAL_BACKQUOTE); return firstToken; - } - case 79: break; - case 8: - { addToken(Token.SEPARATOR); - } - case 80: break; - case 5: - { addNullToken(); return firstToken; - } - case 81: break; - case 7: - { addToken(Token.OPERATOR); - } - case 82: break; - case 17: - { addToken(start,zzStartRead-1, Token.LITERAL_CHAR); return firstToken; - } - case 83: break; - case 25: - { addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addEndToken(INTERNAL_POD); return firstToken; - } - case 84: break; - case 27: - { addToken(Token.LITERAL_NUMBER_FLOAT); - } - case 85: break; - case 43: - { start = zzStartRead; yybegin(HEREDOC_EOT_UNQUOTED); - } - case 86: break; - case 9: - { start = zzMarkedPos-1; yybegin(BACKTICKS); - } - case 87: break; - case 12: - { - } - case 88: break; - case 14: - { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); return firstToken; - } - case 89: break; - case 22: - { addToken(start,zzStartRead-1, Token.PREPROCESSOR); addEndToken(INTERNAL_HEREDOC_EOF_SINGLE_QUOTED); return firstToken; - } - case 90: break; - default: - if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { - zzAtEOF = true; - switch (zzLexicalState) { - case HEREDOC_EOF_SINGLE_QUOTED: { - addToken(start,zzStartRead-1, Token.PREPROCESSOR); addEndToken(INTERNAL_HEREDOC_EOF_SINGLE_QUOTED); return firstToken; - } - case 602: break; - case HEREDOC_EOT_SINGLE_QUOTED: { - addToken(start,zzStartRead-1, Token.PREPROCESSOR); addEndToken(INTERNAL_HEREDOC_EOT_SINGLE_QUOTED); return firstToken; - } - case 603: break; - case HEREDOC_EOT_UNQUOTED: { - addToken(start,zzStartRead-1, Token.PREPROCESSOR); addEndToken(INTERNAL_HEREDOC_EOT_UNQUOTED); return firstToken; - } - case 604: break; - case STRING: { - addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); return firstToken; - } - case 605: break; - case BACKTICKS: { - addToken(start,zzStartRead-1, Token.LITERAL_BACKQUOTE); return firstToken; - } - case 606: break; - case YYINITIAL: { - addNullToken(); return firstToken; - } - case 607: break; - case HEREDOC_EOF_UNQUOTED: { - addToken(start,zzStartRead-1, Token.PREPROCESSOR); addEndToken(INTERNAL_HEREDOC_EOF_UNQUOTED); return firstToken; - } - case 608: break; - case CHAR_LITERAL: { - addToken(start,zzStartRead-1, Token.LITERAL_CHAR); return firstToken; - } - case 609: break; - case POD: { - addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); addEndToken(INTERNAL_POD); return firstToken; - } - case 610: break; - default: - return null; - } - } - else { - zzScanError(ZZ_NO_MATCH); - } - } - } - } - - -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/PlainTextTokenMaker.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/PlainTextTokenMaker.java deleted file mode 100644 index 7c0f522..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/PlainTextTokenMaker.java +++ /dev/null @@ -1,647 +0,0 @@ -/* The following code was generated by JFlex 1.4.1 on 12/9/11 6:40 PM */ - -/* - * 11/07/2008 - * - * PlainTextTokenMaker.flex - Scanner for plain text files. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * Scanner for plain text files. - * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker), so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated PlainTextTokenMaker.java file will contain - * two definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.5 - * - */ - -public class PlainTextTokenMaker extends AbstractJFlexTokenMaker { - - /** This character denotes the end of file */ - public static final int YYEOF = -1; - - /** lexical states */ - public static final int YYINITIAL = 0; - - /** - * Translates characters to character classes - */ - private static final String ZZ_CMAP_PACKED = - "\11\0\1\3\1\2\25\0\1\3\1\4\1\0\1\4\1\6\1\4"+ - "\7\4\1\4\1\21\1\5\12\1\1\17\1\4\1\0\1\4\1\0"+ - "\2\4\32\1\1\4\1\0\1\4\1\0\1\4\1\0\4\1\1\16"+ - "\1\13\1\1\1\7\1\14\2\1\1\15\3\1\1\11\2\1\1\12"+ - "\1\10\2\1\1\20\3\1\3\0\1\4\uff81\0"; - - /** - * Translates characters to character classes - */ - private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); - - /** - * Translates DFA states to action switch labels. - */ - private static final int [] ZZ_ACTION = zzUnpackAction(); - - private static final String ZZ_ACTION_PACKED_0 = - "\1\0\2\1\1\2\1\3\14\1\1\0\1\4\2\0"; - - private static int [] zzUnpackAction() { - int [] result = new int[21]; - int offset = 0; - offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAction(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /** - * Translates a state to a row index in the transition table - */ - private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); - - private static final String ZZ_ROWMAP_PACKED_0 = - "\0\0\0\22\0\44\0\22\0\66\0\110\0\132\0\154"+ - "\0\176\0\220\0\242\0\264\0\306\0\330\0\352\0\374"+ - "\0\u010e\0\u0120\0\u0132\0\u0144\0\u0132"; - - private static int [] zzUnpackRowMap() { - int [] result = new int[21]; - int offset = 0; - offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackRowMap(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int high = packed.charAt(i++) << 16; - result[j++] = high | packed.charAt(i++); - } - return j; - } - - /** - * The transition table of the DFA - */ - private static final int [] ZZ_TRANS = zzUnpackTrans(); - - private static final String ZZ_TRANS_PACKED_0 = - "\1\2\1\3\1\4\1\5\3\2\1\6\3\3\1\7"+ - "\3\3\1\2\1\10\1\2\23\0\1\3\5\0\10\3"+ - "\1\0\1\3\4\0\1\5\17\0\1\3\5\0\1\3"+ - "\1\11\6\3\1\0\1\3\2\0\1\3\5\0\1\3"+ - "\1\12\3\3\1\13\2\3\1\0\1\3\2\0\1\3"+ - "\5\0\10\3\1\0\1\14\2\0\1\3\5\0\1\3"+ - "\1\15\6\3\1\0\1\3\2\0\1\3\5\0\2\3"+ - "\1\16\5\3\1\0\1\3\2\0\1\3\5\0\6\3"+ - "\1\17\1\3\1\0\1\3\2\0\1\3\5\0\10\3"+ - "\1\0\1\20\2\0\1\3\5\0\2\3\1\21\5\3"+ - "\1\0\1\3\2\0\1\3\5\0\10\3\1\22\1\3"+ - "\2\0\1\3\5\0\7\3\1\16\1\0\1\3\2\0"+ - "\1\3\5\0\10\3\1\0\1\3\1\23\1\0\1\3"+ - "\5\0\3\3\1\16\4\3\1\22\1\3\6\0\1\24"+ - "\15\0\1\23\2\0\1\25\12\23\1\25\1\23\1\25"+ - "\5\0\1\23\14\0"; - - private static int [] zzUnpackTrans() { - int [] result = new int[342]; - int offset = 0; - offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackTrans(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - value--; - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /* error codes */ - private static final int ZZ_UNKNOWN_ERROR = 0; - private static final int ZZ_NO_MATCH = 1; - private static final int ZZ_PUSHBACK_2BIG = 2; - - /* error messages for the codes above */ - private static final String ZZ_ERROR_MSG[] = { - "Unkown internal scanner error", - "Error: could not match input", - "Error: pushback value was too large" - }; - - /** - * ZZ_ATTRIBUTE[aState] contains the attributes of state aState - */ - private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); - - private static final String ZZ_ATTRIBUTE_PACKED_0 = - "\1\0\1\11\1\1\1\11\15\1\1\0\1\1\2\0"; - - private static int [] zzUnpackAttribute() { - int [] result = new int[21]; - int offset = 0; - offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAttribute(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - /** the input device */ - private java.io.Reader zzReader; - - /** the current state of the DFA */ - private int zzState; - - /** the current lexical state */ - private int zzLexicalState = YYINITIAL; - - /** this buffer contains the current text to be matched and is - the source of the yytext() string */ - private char zzBuffer[]; - - /** the textposition at the last accepting state */ - private int zzMarkedPos; - - /** the current text position in the buffer */ - private int zzCurrentPos; - - /** startRead marks the beginning of the yytext() string in the buffer */ - private int zzStartRead; - - /** endRead marks the last character in the buffer, that has been read - from input */ - private int zzEndRead; - - /** zzAtEOF == true <=> the scanner is at the EOF */ - private boolean zzAtEOF; - - /* user code: */ - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public PlainTextTokenMaker() { - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @param link Whether this token is a hyperlink. - */ - private void addToken(int tokenType, boolean link) { - int so = zzStartRead + offsetShift; - super.addToken(zzBuffer, zzStartRead,zzMarkedPos-1, tokenType, so, link); - zzStartRead = zzMarkedPos; - } - - - /** - * Always returns Token.NULL, as there are no multiline - * tokens in properties files. - * - * @param text The line of tokens to examine. - * @param initialTokenType The token type to start with (i.e., the value - * of getLastTokenTypeOnLine for the line before - * text). - * @return Token.NULL. - */ - @Override - public int getLastTokenTypeOnLine(Segment text, int initialTokenType) { - return Token.NULL; - } - - - /** - * Returns the text to place at the beginning and end of a - * line to "comment" it in a this programming language. - * - * @return null, as there are no comments in plain text. - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return null; - } - - - /** - * Always returns false, as you never want "mark occurrences" - * working in plain text files. - * - * @param type The token type. - * @return Whether tokens of this type should have "mark occurrences" - * enabled. - */ - @Override - public boolean getMarkOccurrencesOfTokenType(int type) { - return false; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - - // Start off in the proper state. - s = text; - try { - yyreset(zzReader); - yybegin(YYINITIAL); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - * @exception IOException if any I/O-Error occurs. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(java.io.Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtEOF = false; - } - - - - - /** - * Creates a new scanner - * There is also a java.io.InputStream version of this constructor. - * - * @param in the java.io.Reader to read input from. - */ - public PlainTextTokenMaker(java.io.Reader in) { - this.zzReader = in; - } - - /** - * Creates a new scanner. - * There is also java.io.Reader version of this constructor. - * - * @param in the java.io.Inputstream to read input from. - */ - public PlainTextTokenMaker(java.io.InputStream in) { - this(new java.io.InputStreamReader(in)); - } - - /** - * Unpacks the compressed character translation table. - * - * @param packed the packed character translation table - * @return the unpacked character translation table - */ - private static char [] zzUnpackCMap(String packed) { - char [] map = new char[0x10000]; - int i = 0; /* index in packed string */ - int j = 0; /* index in unpacked array */ - while (i < 94) { - int count = packed.charAt(i++); - char value = packed.charAt(i++); - do map[j++] = value; while (--count > 0); - } - return map; - } - - - /** - * Closes the input stream. - */ - public final void yyclose() throws java.io.IOException { - zzAtEOF = true; /* indicate end of file */ - zzEndRead = zzStartRead; /* invalidate buffer */ - - if (zzReader != null) - zzReader.close(); - } - - - /** - * Returns the current lexical state. - */ - public final int yystate() { - return zzLexicalState; - } - - - /** - * Enters a new lexical state - * - * @param newState the new lexical state - */ - @Override -public final void yybegin(int newState) { - zzLexicalState = newState; - } - - - /** - * Returns the text matched by the current regular expression. - */ - public final String yytext() { - return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead ); - } - - - /** - * Returns the character at position pos from the - * matched text. - * - * It is equivalent to yytext().charAt(pos), but faster - * - * @param pos the position of the character to fetch. - * A value from 0 to yylength()-1. - * - * @return the character at position pos - */ - public final char yycharat(int pos) { - return zzBuffer[zzStartRead+pos]; - } - - - /** - * Returns the length of the matched text region. - */ - public final int yylength() { - return zzMarkedPos-zzStartRead; - } - - - /** - * Reports an error that occured while scanning. - * - * In a wellformed scanner (no or only correct usage of - * yypushback(int) and a match-all fallback rule) this method - * will only be called with things that "Can't Possibly Happen". - * If this method is called, something is seriously wrong - * (e.g. a JFlex bug producing a faulty scanner etc.). - * - * Usual syntax/scanner level error handling should be done - * in error fallback rules. - * - * @param errorCode the code of the errormessage to display - */ - private void zzScanError(int errorCode) { - String message; - try { - message = ZZ_ERROR_MSG[errorCode]; - } - catch (ArrayIndexOutOfBoundsException e) { - message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; - } - - throw new Error(message); - } - - - /** - * Pushes the specified amount of characters back into the input stream. - * - * They will be read again by then next call of the scanning method - * - * @param number the number of characters to be read again. - * This number must not be greater than yylength()! - */ - public void yypushback(int number) { - if ( number > yylength() ) - zzScanError(ZZ_PUSHBACK_2BIG); - - zzMarkedPos -= number; - } - - - /** - * Resumes scanning until the next regular expression is matched, - * the end of input is encountered or an I/O-Error occurs. - * - * @return the next token - * @exception java.io.IOException if any I/O-Error occurs - */ - public org.fife.ui.rsyntaxtextarea.Token yylex() throws java.io.IOException { - int zzInput; - int zzAction; - - // cached fields: - int zzCurrentPosL; - int zzMarkedPosL; - int zzEndReadL = zzEndRead; - char [] zzBufferL = zzBuffer; - char [] zzCMapL = ZZ_CMAP; - - int [] zzTransL = ZZ_TRANS; - int [] zzRowMapL = ZZ_ROWMAP; - int [] zzAttrL = ZZ_ATTRIBUTE; - - while (true) { - zzMarkedPosL = zzMarkedPos; - - zzAction = -1; - - zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; - - zzState = zzLexicalState; - - - zzForAction: { - while (true) { - - if (zzCurrentPosL < zzEndReadL) - zzInput = zzBufferL[zzCurrentPosL++]; - else if (zzAtEOF) { - zzInput = YYEOF; - break zzForAction; - } - else { - // store back cached positions - zzCurrentPos = zzCurrentPosL; - zzMarkedPos = zzMarkedPosL; - boolean eof = zzRefill(); - // get translated positions and possibly new buffer - zzCurrentPosL = zzCurrentPos; - zzMarkedPosL = zzMarkedPos; - zzBufferL = zzBuffer; - zzEndReadL = zzEndRead; - if (eof) { - zzInput = YYEOF; - break zzForAction; - } - else { - zzInput = zzBufferL[zzCurrentPosL++]; - } - } - int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; - if (zzNext == -1) break zzForAction; - zzState = zzNext; - - int zzAttributes = zzAttrL[zzState]; - if ( (zzAttributes & 1) == 1 ) { - zzAction = zzState; - zzMarkedPosL = zzCurrentPosL; - if ( (zzAttributes & 8) == 8 ) break zzForAction; - } - - } - } - - // store back cached position - zzMarkedPos = zzMarkedPosL; - - switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { - case 3: - { addToken(Token.WHITESPACE, false); - } - case 5: break; - case 2: - { addNullToken(); return firstToken; - } - case 6: break; - case 4: - { addToken(Token.IDENTIFIER, true); - } - case 7: break; - case 1: - { addToken(Token.IDENTIFIER, false); - } - case 8: break; - default: - if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { - zzAtEOF = true; - switch (zzLexicalState) { - case YYINITIAL: { - addNullToken(); return firstToken; - } - case 22: break; - default: - return null; - } - } - else { - zzScanError(ZZ_NO_MATCH); - } - } - } - } - - -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/PythonTokenMaker.flex b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/PythonTokenMaker.flex deleted file mode 100644 index 0c1b41b..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/PythonTokenMaker.flex +++ /dev/null @@ -1,438 +0,0 @@ -/* - * 12/06/2005 - * - * PythonTokenMaker.java - Token maker for the Python programming language. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.AbstractJFlexTokenMaker; -import org.fife.ui.rsyntaxtextarea.Token; -import org.fife.ui.rsyntaxtextarea.TokenMaker; - - -/** - * Scanner for the Python programming language. - * - * @author Robert Futrell - * @version 0.3 - */ -%% - -%public -%class PythonTokenMaker -%extends AbstractJFlexTokenMaker -%unicode -%type org.fife.ui.rsyntaxtextarea.Token - - -%{ - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public PythonTokenMaker() { - super(); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, int startOffset) { - super.addToken(array, start,end, tokenType, startOffset); - zzStartRead = zzMarkedPos; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { "#", null }; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - - // Start off in the proper state. - int state = Token.NULL; - switch (initialTokenType) { - case Token.LITERAL_STRING_DOUBLE_QUOTE: - state = LONG_STRING_2; - break; - case Token.LITERAL_CHAR: - state = LONG_STRING_1; - break; - default: - state = Token.NULL; - } - - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = zzPushbackPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtBOL = true; - zzAtEOF = false; - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - -%} - -/* This part is taken from http://www.python.org/doc/2.2.3/ref/grammar.txt */ -identifier = (({letter}|"_")({letter}|{digit}|"_")*) -letter = ({lowercase}|{uppercase}) -lowercase = ([a-z]) -uppercase = ([A-Z]) -digit = ([0-9]) -stringliteral = ({stringprefix}?{shortstring}) -stringprefix = ("r"|"u"[rR]?|"R"|"U"[rR]?) -shortstring1 = ([\']{shortstring1item}*[\']?) -shortstring2 = ([\"]{shortstring2item}*[\"]?) -shortstring = ({shortstring1}|{shortstring2}) -shortstring1item = ({shortstring1char}|{escapeseq}) -shortstring2item = ({shortstring2char}|{escapeseq}) -shortstring1char = ([^\\\n\']) -shortstring2char = ([^\\\n\"]) -escapeseq = ([\\].) -longinteger = ({integer}[lL]) -integer = ({decimalinteger}|{octinteger}|{hexinteger}) -decimalinteger = ({nonzerodigit}{digit}*|"0") -octinteger = ("0"{octdigit}+) -hexinteger = ("0"[xX]{hexdigit}+) -nonzerodigit = ([1-9]) -octdigit = ([0-7]) -hexdigit = ({digit}|[a-f]|[A-F]) -floatnumber = ({pointfloat}|{exponentfloat}) -pointfloat = ({intpart}?{fraction}|{intpart}".") -exponentfloat = (({intpart}|{pointfloat}){exponent}) -intpart = ({digit}+) -fraction = ("."{digit}+) -exponent = ([eE][\+\-]?{digit}+) -imagnumber = (({floatnumber}|{intpart})[jJ]) - -ErrorNumberFormat = ({digit}{NonSeparator}+) -NonSeparator = ([^\t\f\r\n\ \(\)\{\}\[\]\;\,\.\=\>\<\!\~\?\:\+\-\*\/\&\|\^\%\"\']|"#") - -LongStringStart1 = ({stringprefix}?\'\'\') -LongStringStart2 = ({stringprefix}?\"\"\") - -LineTerminator = (\n) -WhiteSpace = ([ \t\f]) - -LineComment = ("#".*) - - -%state LONG_STRING_1 -%state LONG_STRING_2 - - -%% - -/* Keywords */ - "and" { addToken(Token.RESERVED_WORD); } - "as" { addToken(Token.RESERVED_WORD); } - "assert" { addToken(Token.RESERVED_WORD); } - "break" { addToken(Token.RESERVED_WORD); } - "class" { addToken(Token.RESERVED_WORD); } - "continue" { addToken(Token.RESERVED_WORD); } - "def" { addToken(Token.RESERVED_WORD); } - "del" { addToken(Token.RESERVED_WORD); } - "elif" { addToken(Token.RESERVED_WORD); } - "else" { addToken(Token.RESERVED_WORD); } - "except" { addToken(Token.RESERVED_WORD); } - "exec" { addToken(Token.RESERVED_WORD); } - "finally" { addToken(Token.RESERVED_WORD); } - "for" { addToken(Token.RESERVED_WORD); } - "from" { addToken(Token.RESERVED_WORD); } - "global" { addToken(Token.RESERVED_WORD); } - "if" { addToken(Token.RESERVED_WORD); } - "import" { addToken(Token.RESERVED_WORD); } - "in" { addToken(Token.RESERVED_WORD); } - "is" { addToken(Token.RESERVED_WORD); } - "lambda" { addToken(Token.RESERVED_WORD); } - "not" { addToken(Token.RESERVED_WORD); } - "or" { addToken(Token.RESERVED_WORD); } - "pass" { addToken(Token.RESERVED_WORD); } - "print" { addToken(Token.RESERVED_WORD); } - "raise" { addToken(Token.RESERVED_WORD); } - "return" { addToken(Token.RESERVED_WORD); } - "try" { addToken(Token.RESERVED_WORD); } - "while" { addToken(Token.RESERVED_WORD); } - "yield" { addToken(Token.RESERVED_WORD); } - -/* Data types. */ - "char" { addToken(Token.DATA_TYPE); } - "double" { addToken(Token.DATA_TYPE); } - "float" { addToken(Token.DATA_TYPE); } - "int" { addToken(Token.DATA_TYPE); } - "long" { addToken(Token.DATA_TYPE); } - "short" { addToken(Token.DATA_TYPE); } - "signed" { addToken(Token.DATA_TYPE); } - "unsigned" { addToken(Token.DATA_TYPE); } - "void" { addToken(Token.DATA_TYPE); } - -/* Standard functions */ - "abs" { addToken(Token.FUNCTION); } - "apply" { addToken(Token.FUNCTION); } - "bool" { addToken(Token.FUNCTION); } - "buffer" { addToken(Token.FUNCTION); } - "callable" { addToken(Token.FUNCTION); } - "chr" { addToken(Token.FUNCTION); } - "classmethod" { addToken(Token.FUNCTION); } - "cmp" { addToken(Token.FUNCTION); } - "coerce" { addToken(Token.FUNCTION); } - "compile" { addToken(Token.FUNCTION); } - "complex" { addToken(Token.FUNCTION); } - "delattr" { addToken(Token.FUNCTION); } - "dict" { addToken(Token.FUNCTION); } - "dir" { addToken(Token.FUNCTION); } - "divmod" { addToken(Token.FUNCTION); } - "enumerate" { addToken(Token.FUNCTION); } - "eval" { addToken(Token.FUNCTION); } - "execfile" { addToken(Token.FUNCTION); } - "file" { addToken(Token.FUNCTION); } - "filter" { addToken(Token.FUNCTION); } - "float" { addToken(Token.FUNCTION); } - "getattr" { addToken(Token.FUNCTION); } - "globals" { addToken(Token.FUNCTION); } - "hasattr" { addToken(Token.FUNCTION); } - "hash" { addToken(Token.FUNCTION); } - "hex" { addToken(Token.FUNCTION); } - "id" { addToken(Token.FUNCTION); } - "input" { addToken(Token.FUNCTION); } - "int" { addToken(Token.FUNCTION); } - "intern" { addToken(Token.FUNCTION); } - "isinstance" { addToken(Token.FUNCTION); } - "issubclass" { addToken(Token.FUNCTION); } - "iter" { addToken(Token.FUNCTION); } - "len" { addToken(Token.FUNCTION); } - "list" { addToken(Token.FUNCTION); } - "locals" { addToken(Token.FUNCTION); } - "long" { addToken(Token.FUNCTION); } - "map" { addToken(Token.FUNCTION); } - "max" { addToken(Token.FUNCTION); } - "min" { addToken(Token.FUNCTION); } - "object" { addToken(Token.FUNCTION); } - "oct" { addToken(Token.FUNCTION); } - "open" { addToken(Token.FUNCTION); } - "ord" { addToken(Token.FUNCTION); } - "pow" { addToken(Token.FUNCTION); } - "property" { addToken(Token.FUNCTION); } - "range" { addToken(Token.FUNCTION); } - "raw_input" { addToken(Token.FUNCTION); } - "reduce" { addToken(Token.FUNCTION); } - "reload" { addToken(Token.FUNCTION); } - "repr" { addToken(Token.FUNCTION); } - "round" { addToken(Token.FUNCTION); } - "setattr" { addToken(Token.FUNCTION); } - "slice" { addToken(Token.FUNCTION); } - "staticmethod" { addToken(Token.FUNCTION); } - "str" { addToken(Token.FUNCTION); } - "sum" { addToken(Token.FUNCTION); } - "super" { addToken(Token.FUNCTION); } - "tuple" { addToken(Token.FUNCTION); } - "type" { addToken(Token.FUNCTION); } - "unichr" { addToken(Token.FUNCTION); } - "unicode" { addToken(Token.FUNCTION); } - "vars" { addToken(Token.FUNCTION); } - "xrange" { addToken(Token.FUNCTION); } - "zip" { addToken(Token.FUNCTION); } - - - { - - {LineTerminator} { addNullToken(); return firstToken; } - - {identifier} { addToken(Token.IDENTIFIER); } - - {WhiteSpace}+ { addToken(Token.WHITESPACE); } - - /* String/Character Literals. */ - {stringliteral} { addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); } - {LongStringStart1} { yybegin(LONG_STRING_1); addToken(Token.LITERAL_CHAR); } - {LongStringStart2} { yybegin(LONG_STRING_2); addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); } - - /* Comment Literals. */ - {LineComment} { addToken(Token.COMMENT_EOL); } - - /* Separators. */ - "(" { addToken(Token.SEPARATOR); } - ")" { addToken(Token.SEPARATOR); } - "[" { addToken(Token.SEPARATOR); } - "]" { addToken(Token.SEPARATOR); } - "{" { addToken(Token.SEPARATOR); } - "}" { addToken(Token.SEPARATOR); } - - /* Operators. */ - "=" { addToken(Token.OPERATOR); } - "+" { addToken(Token.OPERATOR); } - "-" { addToken(Token.OPERATOR); } - "*" { addToken(Token.OPERATOR); } - "/" { addToken(Token.OPERATOR); } - "%" { addToken(Token.OPERATOR); } - "**" { addToken(Token.OPERATOR); } - "~" { addToken(Token.OPERATOR); } - "<" { addToken(Token.OPERATOR); } - ">" { addToken(Token.OPERATOR); } - "<<" { addToken(Token.OPERATOR); } - ">>" { addToken(Token.OPERATOR); } - "==" { addToken(Token.OPERATOR); } - "+=" { addToken(Token.OPERATOR); } - "-=" { addToken(Token.OPERATOR); } - "*=" { addToken(Token.OPERATOR); } - "/=" { addToken(Token.OPERATOR); } - "%=" { addToken(Token.OPERATOR); } - ">>=" { addToken(Token.OPERATOR); } - "<<=" { addToken(Token.OPERATOR); } - "^" { addToken(Token.OPERATOR); } - "&" { addToken(Token.OPERATOR); } - "&&" { addToken(Token.OPERATOR); } - "|" { addToken(Token.OPERATOR); } - "||" { addToken(Token.OPERATOR); } - "?" { addToken(Token.OPERATOR); } - ":" { addToken(Token.OPERATOR); } - "," { addToken(Token.OPERATOR); } - "!" { addToken(Token.OPERATOR); } - "++" { addToken(Token.OPERATOR); } - "--" { addToken(Token.OPERATOR); } - "." { addToken(Token.OPERATOR); } - "," { addToken(Token.OPERATOR); } - - /* Numbers */ - {longinteger}|{integer} { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); } - {floatnumber}|{imagnumber} { addToken(Token.LITERAL_NUMBER_FLOAT); } - {ErrorNumberFormat} { addToken(Token.ERROR_NUMBER_FORMAT); } - - /* Other punctuation, we'll highlight it as "identifiers." */ - "@" { addToken(Token.IDENTIFIER); } - ";" { addToken(Token.IDENTIFIER); } - - /* Ended with a line not in a string or comment. */ - <> { addNullToken(); return firstToken; } - - /* Catch any other (unhandled) characters and flag them as bad. */ - . { addToken(Token.ERROR_IDENTIFIER); } - -} - - { - [^\']+ { addToken(Token.LITERAL_CHAR); } - "'''" { yybegin(YYINITIAL); addToken(Token.LITERAL_CHAR); } - "'" { addToken(Token.LITERAL_CHAR); } - <> { - if (firstToken==null) { - addToken(Token.LITERAL_CHAR); - } - return firstToken; - } -} - - { - [^\"]+ { addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); } - \"\"\" { yybegin(YYINITIAL); addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); } - \" { addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); } - <> { - if (firstToken==null) { - addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); - } - return firstToken; - } -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/PythonTokenMaker.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/PythonTokenMaker.java deleted file mode 100644 index ea5074b..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/PythonTokenMaker.java +++ /dev/null @@ -1,1087 +0,0 @@ -/* The following code was generated by JFlex 1.4.1 on 10/16/06 10:31 AM */ - -/* - * 12/06/2005 - * - * PythonTokenMaker.java - Token maker for the Python programming language. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.AbstractJFlexTokenMaker; -import org.fife.ui.rsyntaxtextarea.Token; -import org.fife.ui.rsyntaxtextarea.TokenImpl; - - -/** - * Scanner for the Python programming language. - * - * @author Robert Futrell - * @version 0.3 - */ - -public class PythonTokenMaker extends AbstractJFlexTokenMaker { - - /** This character denotes the end of file */ - public static final int YYEOF = -1; - - /** lexical states */ - public static final int YYINITIAL = 0; - public static final int LONG_STRING_2 = 2; - public static final int LONG_STRING_1 = 1; - - /** - * Translates characters to character classes - */ - private static final String ZZ_CMAP_PACKED = - "\11\0\1\34\1\12\1\0\1\34\1\32\22\0\1\34\1\64\1\11"+ - "\1\33\1\0\1\63\1\67\1\10\1\57\1\57\1\62\1\61\1\64"+ - "\1\27\1\24\1\63\1\16\7\21\2\3\1\64\1\72\1\65\1\60"+ - "\1\66\1\64\1\71\4\23\1\26\1\23\3\2\1\31\1\2\1\15"+ - "\5\2\1\6\2\2\1\7\2\2\1\20\2\2\1\57\1\13\1\57"+ - "\1\64\1\1\1\0\1\35\1\42\1\44\1\37\1\25\1\22\1\52"+ - "\1\54\1\46\1\30\1\43\1\14\1\51\1\36\1\45\1\47\1\2"+ - "\1\4\1\40\1\41\1\5\1\55\1\53\1\17\1\50\1\56\1\57"+ - "\1\70\1\57\1\64\uff81\0"; - - /** - * Translates characters to character classes - */ - private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); - - /** - * Translates DFA states to action switch labels. - */ - private static final int [] ZZ_ACTION = zzUnpackAction(); - - private static final String ZZ_ACTION_PACKED_0 = - "\3\0\1\1\1\2\1\3\4\2\2\4\1\5\1\2"+ - "\1\3\2\2\1\6\1\2\1\6\1\7\1\10\21\2"+ - "\1\11\10\6\1\2\2\12\2\4\1\13\1\3\1\14"+ - "\1\13\1\14\4\2\2\4\1\0\2\4\1\0\4\2"+ - "\1\13\1\3\1\13\12\2\1\15\27\2\1\15\3\2"+ - "\2\15\1\16\1\15\15\2\3\0\2\14\1\0\12\2"+ - "\1\4\1\17\1\20\3\2\1\3\15\2\1\15\22\2"+ - "\1\21\14\2\1\22\1\23\1\14\6\2\1\21\3\2"+ - "\1\15\36\2\1\15\17\2\1\15\6\2"; - - private static int [] zzUnpackAction() { - int [] result = new int[265]; - int offset = 0; - offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAction(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /** - * Translates a state to a row index in the transition table - */ - private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); - - private static final String ZZ_ROWMAP_PACKED_0 = - "\0\0\0\73\0\166\0\261\0\354\0\u0127\0\u0162\0\u019d"+ - "\0\u01d8\0\u0213\0\u024e\0\u0289\0\261\0\u02c4\0\u02ff\0\u033a"+ - "\0\u0375\0\u03b0\0\u03eb\0\u0426\0\u0461\0\u049c\0\u04d7\0\u0512"+ - "\0\u054d\0\u0588\0\u05c3\0\u05fe\0\u0639\0\u0674\0\u06af\0\u06ea"+ - "\0\u0725\0\u0760\0\u079b\0\u07d6\0\u0811\0\u084c\0\u0887\0\261"+ - "\0\u08c2\0\u08fd\0\u0938\0\261\0\u0973\0\u09ae\0\u09e9\0\u0a24"+ - "\0\261\0\u0a5f\0\u0a9a\0\u0ad5\0\u0b10\0\u0b4b\0\u0b4b\0\u0b86"+ - "\0\u0bc1\0\u0b4b\0\u0bfc\0\u0c37\0\u0c72\0\u0cad\0\u0ce8\0\u0d23"+ - "\0\u0d5e\0\u0d99\0\u0dd4\0\u0e0f\0\u0e4a\0\u0e85\0\u0ec0\0\u0efb"+ - "\0\u0f36\0\u0f71\0\u0fac\0\u0fe7\0\u1022\0\u105d\0\u1098\0\u10d3"+ - "\0\u110e\0\u1149\0\u1184\0\u11bf\0\u11fa\0\u1235\0\u1270\0\u12ab"+ - "\0\u12e6\0\u1321\0\u135c\0\u1397\0\u13d2\0\u140d\0\u1448\0\u1483"+ - "\0\u14be\0\u14f9\0\u1534\0\u156f\0\u15aa\0\u15e5\0\u1620\0\u165b"+ - "\0\u1696\0\u16d1\0\u170c\0\u1747\0\u1782\0\u17bd\0\u17f8\0\u1833"+ - "\0\u186e\0\354\0\u18a9\0\354\0\u18e4\0\u191f\0\u195a\0\u1995"+ - "\0\u19d0\0\u1a0b\0\u1a46\0\u1a81\0\u1abc\0\u1af7\0\u1b32\0\u1b6d"+ - "\0\u1ba8\0\u1be3\0\u1c1e\0\u1c59\0\u1c94\0\261\0\u1ccf\0\u1d0a"+ - "\0\u1d45\0\u1d80\0\u1dbb\0\u1df6\0\u1e31\0\u1e6c\0\u1ea7\0\u1ee2"+ - "\0\u1f1d\0\u1f58\0\261\0\261\0\261\0\u1f93\0\u1fce\0\u2009"+ - "\0\u2044\0\u207f\0\u20ba\0\u20f5\0\u2130\0\u216b\0\u21a6\0\u21e1"+ - "\0\u221c\0\u2257\0\u2292\0\u22cd\0\u2308\0\u2343\0\u237e\0\u23b9"+ - "\0\u23f4\0\u242f\0\u237e\0\u246a\0\u24a5\0\u24e0\0\u251b\0\u2556"+ - "\0\u2591\0\u25cc\0\u2607\0\u2642\0\u267d\0\u26b8\0\u26f3\0\u272e"+ - "\0\u2769\0\u27a4\0\u27df\0\u281a\0\u2855\0\u2890\0\u28cb\0\u2906"+ - "\0\u2941\0\u297c\0\u29b7\0\u29f2\0\u2a2d\0\u2a68\0\261\0\261"+ - "\0\u2aa3\0\u2ade\0\u2b19\0\u2b54\0\u17bd\0\u2b8f\0\u2bca\0\354"+ - "\0\u2c05\0\u2c40\0\u2c7b\0\u2cb6\0\u2cf1\0\u2d2c\0\u2d67\0\u2da2"+ - "\0\u2ddd\0\u2e18\0\u2e53\0\u2e8e\0\u2ec9\0\u2f04\0\u2f3f\0\u2f7a"+ - "\0\u2fb5\0\u2ff0\0\u302b\0\u3066\0\u30a1\0\u30dc\0\u3117\0\u3152"+ - "\0\u318d\0\u31c8\0\u3203\0\u323e\0\u3279\0\u32b4\0\u32ef\0\u332a"+ - "\0\u3365\0\u33a0\0\u33db\0\u3416\0\u3451\0\u348c\0\u34c7\0\u3502"+ - "\0\u353d\0\u3578\0\u35b3\0\u35ee\0\u33db\0\u3629\0\u3664\0\u369f"+ - "\0\u36da\0\u3715\0\u1270\0\u3750\0\u378b\0\u37c6\0\u3801\0\u383c"+ - "\0\u3877"; - - private static int [] zzUnpackRowMap() { - int [] result = new int[265]; - int offset = 0; - offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackRowMap(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int high = packed.charAt(i++) << 16; - result[j++] = high | packed.charAt(i++); - } - return j; - } - - /** - * The transition table of the DFA - */ - private static final int [] ZZ_TRANS = zzUnpackTrans(); - - private static final String ZZ_TRANS_PACKED_0 = - "\1\4\2\5\1\6\1\7\1\10\1\11\1\12\1\13"+ - "\1\14\1\15\1\4\1\16\1\5\1\17\1\20\1\5"+ - "\1\6\1\21\1\5\1\22\1\23\1\5\1\24\2\5"+ - "\1\4\1\25\1\26\1\27\1\30\1\31\1\32\1\33"+ - "\1\34\1\5\1\35\1\36\1\37\1\40\1\41\1\42"+ - "\1\43\1\44\1\45\1\46\1\47\1\50\1\51\1\52"+ - "\1\53\1\51\1\54\1\55\1\56\1\57\1\60\2\61"+ - "\10\62\1\63\62\62\11\64\1\65\61\64\74\0\7\5"+ - "\4\0\10\5\1\0\2\5\1\0\2\5\3\0\22\5"+ - "\14\0\3\66\1\6\4\66\3\0\1\66\2\67\1\6"+ - "\2\66\1\6\2\66\1\70\2\71\1\0\2\72\1\0"+ - "\1\66\1\0\22\66\12\0\1\66\2\0\7\5\1\13"+ - "\1\14\2\0\10\5\1\0\1\73\1\5\1\0\2\5"+ - "\3\0\1\74\7\5\1\75\11\5\15\0\3\5\1\11"+ - "\1\5\1\11\1\5\1\13\1\14\2\0\10\5\1\0"+ - "\2\5\1\0\2\5\3\0\1\5\1\76\20\5\15\0"+ - "\7\5\1\13\1\14\2\0\10\5\1\0\2\5\1\0"+ - "\2\5\3\0\22\5\15\0\3\5\1\11\1\5\1\11"+ - "\1\5\1\13\1\14\2\0\10\5\1\0\2\5\1\0"+ - "\2\5\3\0\22\5\14\0\10\77\1\100\1\77\1\0"+ - "\1\101\57\77\11\102\1\103\1\0\1\104\57\102\1\0"+ - "\7\5\4\0\10\5\1\0\1\105\1\5\1\0\2\5"+ - "\3\0\1\106\7\5\1\107\1\110\10\5\14\0\3\66"+ - "\1\111\4\66\3\0\1\66\2\67\1\112\2\113\1\112"+ - "\2\66\1\70\2\71\1\0\2\72\1\0\1\66\1\0"+ - "\22\66\12\0\1\66\2\0\3\5\1\114\3\5\4\0"+ - "\10\5\1\0\2\5\1\0\2\5\3\0\22\5\15\0"+ - "\3\5\1\115\3\5\4\0\1\116\7\5\1\0\2\5"+ - "\1\0\2\5\3\0\10\5\1\117\1\120\10\5\17\0"+ - "\1\70\12\0\1\70\2\0\1\70\52\0\7\5\4\0"+ - "\1\121\2\5\1\122\4\5\1\0\2\5\1\0\2\5"+ - "\3\0\1\5\1\123\16\5\1\124\1\5\43\0\1\54"+ - "\30\0\1\54\12\0\12\25\1\0\60\25\34\0\1\26"+ - "\37\0\7\5\4\0\10\5\1\0\2\5\1\0\2\5"+ - "\3\0\1\5\1\125\1\5\1\126\1\5\1\127\4\5"+ - "\1\130\7\5\15\0\7\5\4\0\10\5\1\0\2\5"+ - "\1\0\2\5\3\0\10\5\1\131\11\5\15\0\7\5"+ - "\4\0\10\5\1\0\1\132\1\5\1\0\2\5\3\0"+ - "\10\5\1\133\1\134\10\5\15\0\4\5\1\135\2\5"+ - "\4\0\1\136\7\5\1\0\1\137\1\5\1\0\2\5"+ - "\3\0\4\5\1\140\4\5\1\141\5\5\1\142\2\5"+ - "\15\0\3\5\1\143\1\144\2\5\4\0\10\5\1\0"+ - "\2\5\1\0\2\5\3\0\13\5\1\145\6\5\15\0"+ - "\3\5\1\146\1\147\2\5\4\0\10\5\1\0\2\5"+ - "\1\0\2\5\3\0\10\5\1\150\11\5\15\0\7\5"+ - "\4\0\1\151\7\5\1\0\2\5\1\0\2\5\3\0"+ - "\1\152\7\5\1\153\3\5\1\154\2\5\1\155\2\5"+ - "\15\0\3\5\1\156\3\5\4\0\10\5\1\0\2\5"+ - "\1\0\2\5\3\0\5\5\1\157\1\5\1\160\2\5"+ - "\1\161\7\5\15\0\7\5\4\0\6\5\1\162\1\5"+ - "\1\0\2\5\1\0\2\5\3\0\1\5\1\163\1\164"+ - "\1\165\1\166\7\5\1\167\5\5\15\0\3\5\1\170"+ - "\3\5\4\0\10\5\1\0\2\5\1\0\2\5\3\0"+ - "\1\171\7\5\1\172\11\5\15\0\7\5\4\0\10\5"+ - "\1\0\2\5\1\0\2\5\3\0\11\5\1\173\10\5"+ - "\15\0\7\5\4\0\10\5\1\0\2\5\1\0\2\5"+ - "\3\0\1\174\10\5\1\105\10\5\15\0\7\5\4\0"+ - "\1\175\7\5\1\0\1\137\1\5\1\0\2\5\3\0"+ - "\22\5\15\0\7\5\4\0\10\5\1\0\2\5\1\0"+ - "\2\5\3\0\17\5\1\176\2\5\15\0\7\5\4\0"+ - "\10\5\1\0\1\177\1\5\1\0\2\5\3\0\1\200"+ - "\21\5\15\0\7\5\4\0\10\5\1\0\2\5\1\0"+ - "\2\5\3\0\1\201\7\5\1\202\11\5\15\0\7\5"+ - "\4\0\10\5\1\0\2\5\1\0\2\5\3\0\11\5"+ - "\1\154\10\5\74\0\1\54\72\0\2\54\71\0\1\54"+ - "\1\0\1\54\75\0\1\51\73\0\1\51\73\0\1\54"+ - "\73\0\1\54\2\0\10\62\1\0\62\62\10\0\1\203"+ - "\62\0\11\64\1\0\61\64\11\0\1\204\61\0\10\66"+ - "\3\0\11\66\1\0\2\66\1\0\2\66\1\0\1\66"+ - "\1\0\22\66\12\0\1\66\4\0\1\70\12\0\1\70"+ - "\2\0\1\70\3\0\2\205\1\0\2\206\41\0\3\66"+ - "\1\207\4\66\3\0\3\66\1\207\2\66\1\207\2\66"+ - "\1\0\2\66\1\210\2\66\1\0\1\66\1\0\22\66"+ - "\2\0\1\210\7\0\1\66\2\0\7\5\4\0\1\211"+ - "\7\5\1\0\2\5\1\0\2\5\3\0\2\5\1\212"+ - "\1\5\1\213\5\5\1\214\7\5\15\0\7\5\4\0"+ - "\10\5\1\0\2\5\1\0\2\5\3\0\1\5\1\215"+ - "\7\5\1\216\4\5\1\217\3\5\15\0\4\5\1\220"+ - "\2\5\4\0\10\5\1\0\2\5\1\0\2\5\3\0"+ - "\22\5\15\0\7\5\4\0\10\5\1\0\2\5\1\0"+ - "\2\5\3\0\3\5\1\221\5\5\1\222\10\5\14\0"+ - "\10\77\1\223\1\77\1\0\1\101\57\77\10\0\1\224"+ - "\62\0\12\77\1\0\60\77\11\102\1\223\1\0\1\104"+ - "\57\102\11\0\1\225\61\0\12\102\1\0\60\102\1\0"+ - "\7\5\4\0\10\5\1\0\2\5\1\0\2\5\3\0"+ - "\1\5\1\164\20\5\15\0\7\5\4\0\10\5\1\0"+ - "\2\5\1\0\2\5\3\0\14\5\1\226\5\5\15\0"+ - "\7\5\4\0\10\5\1\0\2\5\1\0\2\5\3\0"+ - "\1\5\1\227\5\5\1\230\12\5\15\0\7\5\4\0"+ - "\10\5\1\0\2\5\1\0\2\5\3\0\3\5\1\160"+ - "\16\5\14\0\3\66\1\111\4\66\3\0\3\66\1\111"+ - "\2\66\1\111\2\66\1\70\2\71\1\0\2\72\1\0"+ - "\1\66\1\0\22\66\12\0\1\66\1\0\3\66\1\111"+ - "\4\66\3\0\1\66\2\67\1\112\2\66\1\112\2\66"+ - "\1\70\2\71\1\0\2\72\1\0\1\66\1\0\22\66"+ - "\12\0\1\66\1\0\3\66\1\231\4\66\3\0\3\66"+ - "\1\231\2\66\3\231\1\0\2\231\1\0\2\66\1\0"+ - "\1\66\1\0\1\231\1\66\1\231\2\66\1\231\1\66"+ - "\1\231\12\66\12\0\1\66\2\0\7\5\4\0\10\5"+ - "\1\0\2\5\1\0\2\5\3\0\1\232\21\5\15\0"+ - "\7\5\4\0\10\5\1\0\2\5\1\0\2\5\3\0"+ - "\10\5\1\233\11\5\15\0\7\5\4\0\10\5\1\0"+ - "\2\5\1\0\2\5\3\0\10\5\1\234\11\5\15\0"+ - "\3\5\1\162\3\5\4\0\10\5\1\0\2\5\1\0"+ - "\2\5\3\0\22\5\15\0\7\5\4\0\1\235\7\5"+ - "\1\0\2\5\1\0\2\5\3\0\1\5\1\236\20\5"+ - "\15\0\7\5\4\0\10\5\1\0\2\5\1\0\2\5"+ - "\3\0\3\5\1\237\5\5\1\240\10\5\15\0\7\5"+ - "\4\0\10\5\1\0\1\241\1\5\1\0\2\5\3\0"+ - "\7\5\1\242\12\5\15\0\4\5\1\243\2\5\4\0"+ - "\10\5\1\0\2\5\1\0\2\5\3\0\22\5\15\0"+ - "\7\5\4\0\10\5\1\0\2\5\1\0\2\5\3\0"+ - "\1\244\21\5\15\0\7\5\4\0\10\5\1\0\2\5"+ - "\1\0\2\5\3\0\2\5\1\162\17\5\15\0\7\5"+ - "\4\0\10\5\1\0\2\5\1\0\2\5\3\0\3\5"+ - "\1\245\16\5\15\0\7\5\4\0\10\5\1\0\2\5"+ - "\1\0\2\5\3\0\3\5\1\164\16\5\15\0\7\5"+ - "\4\0\10\5\1\0\2\5\1\0\2\5\3\0\12\5"+ - "\1\246\7\5\15\0\7\5\4\0\10\5\1\0\2\5"+ - "\1\0\2\5\3\0\4\5\1\162\15\5\15\0\7\5"+ - "\4\0\1\247\5\5\1\162\1\5\1\0\2\5\1\0"+ - "\2\5\3\0\22\5\15\0\4\5\1\250\2\5\4\0"+ - "\10\5\1\0\2\5\1\0\2\5\3\0\22\5\15\0"+ - "\3\5\1\164\3\5\4\0\10\5\1\0\2\5\1\0"+ - "\2\5\3\0\7\5\1\160\10\5\1\251\1\5\15\0"+ - "\7\5\4\0\10\5\1\0\2\5\1\0\2\5\3\0"+ - "\12\5\1\166\1\5\1\164\5\5\15\0\7\5\4\0"+ - "\10\5\1\0\2\5\1\0\2\5\3\0\11\5\1\252"+ - "\10\5\15\0\7\5\4\0\10\5\1\0\2\5\1\0"+ - "\2\5\3\0\4\5\1\253\15\5\15\0\3\5\1\164"+ - "\3\5\4\0\10\5\1\0\2\5\1\0\2\5\3\0"+ - "\1\254\21\5\15\0\7\5\4\0\10\5\1\0\2\5"+ - "\1\0\2\5\3\0\15\5\1\255\4\5\15\0\7\5"+ - "\4\0\10\5\1\0\2\5\1\0\2\5\3\0\10\5"+ - "\1\256\11\5\15\0\7\5\4\0\10\5\1\0\2\5"+ - "\1\0\2\5\3\0\13\5\1\162\6\5\15\0\7\5"+ - "\4\0\10\5\1\0\2\5\1\0\2\5\3\0\12\5"+ - "\1\257\7\5\15\0\7\5\4\0\10\5\1\0\2\5"+ - "\1\0\2\5\3\0\12\5\1\260\7\5\15\0\7\5"+ - "\4\0\10\5\1\0\1\261\1\5\1\0\2\5\3\0"+ - "\22\5\15\0\7\5\4\0\6\5\1\262\1\5\1\0"+ - "\2\5\1\0\2\5\3\0\22\5\15\0\7\5\4\0"+ - "\10\5\1\0\2\5\1\0\2\5\3\0\10\5\1\244"+ - "\11\5\15\0\7\5\4\0\10\5\1\0\2\5\1\0"+ - "\2\5\3\0\1\263\21\5\15\0\7\5\4\0\1\264"+ - "\7\5\1\0\2\5\1\0\2\5\3\0\22\5\15\0"+ - "\7\5\4\0\10\5\1\0\1\265\1\5\1\0\2\5"+ - "\3\0\1\5\1\266\12\5\1\267\5\5\15\0\7\5"+ - "\4\0\10\5\1\0\2\5\1\0\2\5\3\0\12\5"+ - "\1\164\7\5\15\0\3\5\1\164\3\5\4\0\10\5"+ - "\1\0\2\5\1\0\2\5\3\0\1\270\21\5\15\0"+ - "\7\5\4\0\10\5\1\0\2\5\1\0\2\5\3\0"+ - "\2\5\1\164\17\5\15\0\7\5\4\0\10\5\1\0"+ - "\2\5\1\0\1\271\1\5\3\0\22\5\15\0\7\5"+ - "\4\0\10\5\1\0\2\5\1\0\2\5\3\0\4\5"+ - "\1\164\15\5\15\0\7\5\4\0\10\5\1\0\1\105"+ - "\1\5\1\0\2\5\3\0\22\5\15\0\7\5\4\0"+ - "\10\5\1\0\2\5\1\0\2\5\3\0\4\5\1\272"+ - "\5\5\1\273\7\5\15\0\7\5\4\0\10\5\1\0"+ - "\2\5\1\0\2\5\3\0\3\5\1\274\5\5\1\275"+ - "\10\5\15\0\7\5\4\0\10\5\1\0\1\214\1\5"+ - "\1\0\2\5\3\0\22\5\15\0\7\5\4\0\10\5"+ - "\1\0\2\5\1\0\2\5\3\0\12\5\1\276\7\5"+ - "\15\0\7\5\4\0\10\5\1\0\2\5\1\0\2\5"+ - "\3\0\10\5\1\277\1\300\10\5\15\0\7\5\4\0"+ - "\10\5\1\0\2\5\1\0\2\5\3\0\3\5\1\301"+ - "\16\5\15\0\7\5\4\0\10\5\1\0\2\5\1\0"+ - "\2\5\3\0\16\5\1\164\3\5\15\0\7\5\4\0"+ - "\10\5\1\0\1\302\1\5\1\0\2\5\3\0\22\5"+ - "\15\0\7\5\4\0\3\5\1\164\4\5\1\0\2\5"+ - "\1\0\2\5\3\0\12\5\1\164\7\5\15\0\7\5"+ - "\4\0\10\5\1\0\2\5\1\0\2\5\3\0\10\5"+ - "\1\303\11\5\15\0\7\5\4\0\10\5\1\0\2\5"+ - "\1\0\2\5\3\0\11\5\1\304\10\5\15\0\7\5"+ - "\4\0\3\5\1\164\4\5\1\0\2\5\1\0\2\5"+ - "\3\0\22\5\15\0\7\5\4\0\10\5\1\0\2\5"+ - "\1\0\2\5\3\0\3\5\1\305\16\5\15\0\3\5"+ - "\1\127\3\5\4\0\10\5\1\0\2\5\1\0\2\5"+ - "\3\0\22\5\15\0\7\5\4\0\10\5\1\0\2\5"+ - "\1\0\2\5\3\0\11\5\1\306\10\5\24\0\1\307"+ - "\73\0\1\310\64\0\1\311\12\0\1\311\2\0\1\311"+ - "\5\0\1\210\31\0\1\210\11\0\3\66\1\207\4\66"+ - "\3\0\3\66\1\207\2\66\1\207\2\66\1\0\2\66"+ - "\1\0\2\72\1\0\1\66\1\0\22\66\12\0\1\66"+ - "\4\0\1\311\12\0\1\311\2\0\1\311\52\0\7\5"+ - "\4\0\10\5\1\0\2\5\1\0\2\5\3\0\10\5"+ - "\1\312\11\5\15\0\4\5\1\252\2\5\4\0\10\5"+ - "\1\0\2\5\1\0\2\5\3\0\22\5\15\0\4\5"+ - "\1\313\2\5\4\0\10\5\1\0\2\5\1\0\2\5"+ - "\3\0\22\5\15\0\3\5\1\164\3\5\4\0\10\5"+ - "\1\0\2\5\1\0\2\5\3\0\22\5\15\0\7\5"+ - "\4\0\10\5\1\0\2\5\1\0\2\5\3\0\15\5"+ - "\1\260\4\5\15\0\7\5\4\0\10\5\1\0\2\5"+ - "\1\0\2\5\3\0\3\5\1\237\16\5\15\0\1\314"+ - "\6\5\4\0\10\5\1\0\2\5\1\0\2\5\3\0"+ - "\22\5\15\0\7\5\4\0\10\5\1\0\2\5\1\0"+ - "\2\5\3\0\1\5\1\315\20\5\15\0\7\5\4\0"+ - "\10\5\1\0\2\5\1\0\2\5\3\0\11\5\1\141"+ - "\10\5\15\0\7\5\4\0\10\5\1\0\2\5\1\0"+ - "\2\5\3\0\7\5\1\316\12\5\15\0\7\5\4\0"+ - "\10\5\1\0\2\5\1\0\2\5\3\0\5\5\1\317"+ - "\14\5\15\0\7\5\4\0\10\5\1\0\2\5\1\0"+ - "\2\5\3\0\15\5\1\320\4\5\15\0\7\5\4\0"+ - "\10\5\1\0\2\5\1\0\2\5\3\0\1\321\21\5"+ - "\14\0\3\66\1\231\4\66\3\0\1\66\2\67\1\231"+ - "\2\66\3\231\1\0\2\231\1\0\2\66\1\0\1\66"+ - "\1\0\1\231\1\66\1\231\2\66\1\231\1\66\1\231"+ - "\12\66\12\0\1\66\2\0\7\5\4\0\10\5\1\0"+ - "\2\5\1\0\2\5\3\0\1\5\1\215\20\5\15\0"+ - "\7\5\4\0\10\5\1\0\2\5\1\0\2\5\3\0"+ - "\14\5\1\162\5\5\15\0\7\5\4\0\10\5\1\0"+ - "\2\5\1\0\2\5\3\0\1\322\21\5\15\0\7\5"+ - "\4\0\10\5\1\0\1\164\1\5\1\0\2\5\3\0"+ - "\4\5\1\166\15\5\15\0\7\5\4\0\10\5\1\0"+ - "\2\5\1\0\2\5\3\0\1\323\21\5\15\0\7\5"+ - "\4\0\10\5\1\0\1\162\1\5\1\0\2\5\3\0"+ - "\22\5\15\0\7\5\4\0\6\5\1\162\1\5\1\0"+ - "\2\5\1\0\2\5\3\0\22\5\15\0\7\5\4\0"+ - "\10\5\1\0\2\5\1\0\2\5\3\0\7\5\1\324"+ - "\12\5\15\0\7\5\4\0\10\5\1\0\1\325\1\5"+ - "\1\0\2\5\3\0\22\5\15\0\7\5\4\0\10\5"+ - "\1\0\2\5\1\0\2\5\3\0\14\5\1\326\5\5"+ - "\15\0\7\5\4\0\1\164\7\5\1\0\2\5\1\0"+ - "\2\5\3\0\22\5\15\0\7\5\4\0\10\5\1\0"+ - "\1\327\1\5\1\0\2\5\3\0\22\5\15\0\7\5"+ - "\4\0\1\330\7\5\1\0\2\5\1\0\2\5\3\0"+ - "\22\5\15\0\7\5\4\0\10\5\1\0\2\5\1\0"+ - "\2\5\3\0\1\331\21\5\15\0\7\5\4\0\10\5"+ - "\1\0\2\5\1\0\2\5\3\0\5\5\1\332\14\5"+ - "\15\0\7\5\4\0\10\5\1\0\2\5\1\0\2\5"+ - "\3\0\14\5\1\333\5\5\15\0\7\5\4\0\10\5"+ - "\1\0\2\5\1\0\2\5\3\0\7\5\1\260\12\5"+ - "\15\0\7\5\4\0\10\5\1\0\2\5\1\0\2\5"+ - "\3\0\4\5\1\334\15\5\15\0\7\5\4\0\10\5"+ - "\1\0\2\5\1\0\2\5\3\0\1\5\1\335\20\5"+ - "\15\0\3\5\1\322\3\5\4\0\10\5\1\0\2\5"+ - "\1\0\2\5\3\0\22\5\15\0\7\5\4\0\1\260"+ - "\7\5\1\0\2\5\1\0\2\5\3\0\22\5\15\0"+ - "\7\5\4\0\10\5\1\0\1\164\1\5\1\0\2\5"+ - "\3\0\22\5\15\0\7\5\4\0\10\5\1\0\2\5"+ - "\1\0\2\5\3\0\1\336\21\5\15\0\7\5\4\0"+ - "\6\5\1\166\1\5\1\0\2\5\1\0\2\5\3\0"+ - "\22\5\15\0\7\5\4\0\10\5\1\0\2\5\1\0"+ - "\2\5\3\0\3\5\1\337\16\5\15\0\7\5\4\0"+ - "\1\340\7\5\1\0\2\5\1\0\2\5\3\0\22\5"+ - "\15\0\3\5\1\252\3\5\4\0\10\5\1\0\2\5"+ - "\1\0\2\5\3\0\22\5\15\0\7\5\4\0\10\5"+ - "\1\0\2\5\1\0\2\5\3\0\4\5\1\341\15\5"+ - "\15\0\7\5\4\0\10\5\1\0\2\5\1\0\2\5"+ - "\3\0\12\5\1\342\7\5\15\0\3\5\1\320\3\5"+ - "\4\0\10\5\1\0\2\5\1\0\2\5\3\0\22\5"+ - "\15\0\7\5\4\0\10\5\1\0\1\343\1\5\1\0"+ - "\2\5\3\0\22\5\15\0\7\5\4\0\10\5\1\0"+ - "\1\344\1\5\1\0\2\5\3\0\22\5\15\0\4\5"+ - "\1\160\2\5\4\0\10\5\1\0\2\5\1\0\2\5"+ - "\3\0\22\5\15\0\4\5\1\345\2\5\4\0\10\5"+ - "\1\0\2\5\1\0\2\5\3\0\22\5\15\0\7\5"+ - "\4\0\10\5\1\0\2\5\1\0\2\5\3\0\1\5"+ - "\1\346\20\5\15\0\7\5\4\0\10\5\1\0\2\5"+ - "\1\0\2\5\3\0\10\5\1\327\11\5\15\0\7\5"+ - "\4\0\10\5\1\0\2\5\1\0\2\5\3\0\12\5"+ - "\1\347\7\5\15\0\7\5\4\0\10\5\1\0\2\5"+ - "\1\0\2\5\3\0\1\5\1\131\20\5\15\0\7\5"+ - "\4\0\10\5\1\0\2\5\1\0\2\5\3\0\3\5"+ - "\1\162\16\5\15\0\7\5\4\0\1\125\7\5\1\0"+ - "\2\5\1\0\2\5\3\0\22\5\15\0\7\5\4\0"+ - "\10\5\1\0\2\5\1\0\2\5\3\0\5\5\1\350"+ - "\14\5\15\0\7\5\4\0\1\237\7\5\1\0\2\5"+ - "\1\0\2\5\3\0\22\5\15\0\7\5\4\0\10\5"+ - "\1\0\2\5\1\0\2\5\3\0\1\331\16\5\1\164"+ - "\2\5\15\0\7\5\4\0\10\5\1\0\2\5\1\0"+ - "\2\5\3\0\2\5\1\320\17\5\17\0\1\311\12\0"+ - "\1\311\2\0\1\311\6\0\2\206\42\0\7\5\4\0"+ - "\10\5\1\0\2\5\1\0\2\5\3\0\1\315\21\5"+ - "\15\0\3\5\1\351\3\5\4\0\10\5\1\0\2\5"+ - "\1\0\2\5\3\0\22\5\15\0\7\5\4\0\10\5"+ - "\1\0\2\5\1\0\2\5\3\0\11\5\1\352\10\5"+ - "\15\0\7\5\4\0\10\5\1\0\2\5\1\0\2\5"+ - "\3\0\10\5\1\353\6\5\1\214\2\5\15\0\7\5"+ - "\4\0\10\5\1\0\2\5\1\0\2\5\3\0\2\5"+ - "\1\354\17\5\15\0\7\5\4\0\1\127\7\5\1\0"+ - "\2\5\1\0\2\5\3\0\22\5\15\0\7\5\4\0"+ - "\10\5\1\0\2\5\1\0\2\5\3\0\4\5\1\320"+ - "\15\5\15\0\7\5\4\0\1\355\7\5\1\0\2\5"+ - "\1\0\2\5\3\0\22\5\15\0\7\5\4\0\6\5"+ - "\1\356\1\5\1\0\2\5\1\0\2\5\3\0\22\5"+ - "\15\0\7\5\4\0\10\5\1\0\2\5\1\0\2\5"+ - "\3\0\12\5\1\131\7\5\15\0\7\5\4\0\10\5"+ - "\1\0\1\357\1\5\1\0\2\5\3\0\22\5\15\0"+ - "\3\5\1\131\3\5\4\0\10\5\1\0\2\5\1\0"+ - "\2\5\3\0\22\5\15\0\7\5\4\0\10\5\1\0"+ - "\2\5\1\0\2\5\3\0\13\5\1\164\6\5\15\0"+ - "\7\5\4\0\10\5\1\0\2\5\1\0\2\5\3\0"+ - "\4\5\1\360\15\5\15\0\7\5\4\0\1\361\7\5"+ - "\1\0\2\5\1\0\2\5\3\0\22\5\15\0\7\5"+ - "\4\0\10\5\1\0\2\5\1\0\2\5\3\0\10\5"+ - "\1\315\11\5\15\0\7\5\4\0\10\5\1\0\2\5"+ - "\1\0\2\5\3\0\11\5\1\362\10\5\15\0\7\5"+ - "\4\0\10\5\1\0\1\306\1\5\1\0\2\5\3\0"+ - "\22\5\15\0\7\5\4\0\10\5\1\0\2\5\1\0"+ - "\2\5\3\0\6\5\1\162\13\5\15\0\7\5\4\0"+ - "\10\5\1\0\2\5\1\0\2\5\3\0\3\5\1\363"+ - "\16\5\15\0\7\5\4\0\10\5\1\0\2\5\1\0"+ - "\2\5\3\0\1\364\21\5\15\0\7\5\4\0\10\5"+ - "\1\0\2\5\1\0\2\5\3\0\11\5\1\365\10\5"+ - "\15\0\7\5\4\0\1\366\7\5\1\0\2\5\1\0"+ - "\2\5\3\0\11\5\1\257\10\5\15\0\7\5\4\0"+ - "\10\5\1\0\2\5\1\0\2\5\3\0\7\5\1\160"+ - "\12\5\15\0\3\5\1\105\3\5\4\0\10\5\1\0"+ - "\2\5\1\0\2\5\3\0\22\5\15\0\7\5\4\0"+ - "\10\5\1\0\2\5\1\0\2\5\3\0\5\5\1\367"+ - "\14\5\15\0\7\5\4\0\10\5\1\0\2\5\1\0"+ - "\2\5\3\0\3\5\1\370\16\5\15\0\7\5\4\0"+ - "\10\5\1\0\1\371\1\5\1\0\2\5\3\0\22\5"+ - "\15\0\7\5\4\0\10\5\1\0\2\5\1\0\2\5"+ - "\3\0\1\372\21\5\15\0\7\5\4\0\10\5\1\0"+ - "\2\5\1\0\2\5\3\0\1\5\1\162\20\5\15\0"+ - "\7\5\4\0\10\5\1\0\2\5\1\0\2\5\3\0"+ - "\1\5\1\373\20\5\15\0\7\5\4\0\10\5\1\0"+ - "\2\5\1\0\2\5\3\0\2\5\1\260\17\5\15\0"+ - "\7\5\4\0\10\5\1\0\2\5\1\0\2\5\3\0"+ - "\1\162\21\5\15\0\7\5\4\0\1\143\7\5\1\0"+ - "\2\5\1\0\2\5\3\0\22\5\15\0\7\5\4\0"+ - "\10\5\1\0\2\5\1\0\2\5\3\0\11\5\1\257"+ - "\10\5\15\0\3\5\1\374\3\5\4\0\10\5\1\0"+ - "\2\5\1\0\2\5\3\0\22\5\15\0\7\5\4\0"+ - "\10\5\1\0\2\5\1\0\2\5\3\0\4\5\1\214"+ - "\15\5\15\0\7\5\4\0\10\5\1\0\1\320\1\5"+ - "\1\0\2\5\3\0\22\5\15\0\7\5\4\0\10\5"+ - "\1\0\2\5\1\0\2\5\3\0\7\5\1\375\12\5"+ - "\15\0\7\5\4\0\10\5\1\0\2\5\1\0\2\5"+ - "\3\0\14\5\1\376\5\5\15\0\7\5\4\0\10\5"+ - "\1\0\2\5\1\0\2\5\3\0\5\5\1\257\14\5"+ - "\15\0\7\5\4\0\10\5\1\0\2\5\1\0\2\5"+ - "\3\0\1\5\1\377\20\5\15\0\7\5\4\0\10\5"+ - "\1\0\1\177\1\5\1\0\2\5\3\0\22\5\15\0"+ - "\7\5\4\0\10\5\1\0\2\5\1\0\2\5\3\0"+ - "\7\5\1\u0100\12\5\15\0\7\5\4\0\10\5\1\0"+ - "\2\5\1\0\2\5\3\0\4\5\1\u0101\15\5\15\0"+ - "\3\5\1\u0102\3\5\4\0\10\5\1\0\2\5\1\0"+ - "\2\5\3\0\22\5\15\0\7\5\4\0\1\u0103\7\5"+ - "\1\0\2\5\1\0\2\5\3\0\22\5\15\0\7\5"+ - "\4\0\10\5\1\0\2\5\1\0\2\5\3\0\12\5"+ - "\1\273\7\5\15\0\7\5\4\0\10\5\1\0\2\5"+ - "\1\0\2\5\3\0\1\u0104\21\5\15\0\7\5\4\0"+ - "\10\5\1\0\1\u0105\1\5\1\0\2\5\3\0\22\5"+ - "\15\0\4\5\1\237\2\5\4\0\10\5\1\0\2\5"+ - "\1\0\2\5\3\0\22\5\15\0\7\5\4\0\1\u0106"+ - "\7\5\1\0\2\5\1\0\2\5\3\0\22\5\15\0"+ - "\7\5\4\0\10\5\1\0\2\5\1\0\2\5\3\0"+ - "\1\u0107\21\5\15\0\7\5\4\0\10\5\1\0\2\5"+ - "\1\0\2\5\3\0\4\5\1\330\15\5\15\0\7\5"+ - "\4\0\10\5\1\0\2\5\1\0\2\5\3\0\4\5"+ - "\1\260\15\5\15\0\7\5\4\0\10\5\1\0\2\5"+ - "\1\0\2\5\3\0\4\5\1\u0108\15\5\15\0\7\5"+ - "\4\0\10\5\1\0\2\5\1\0\2\5\3\0\1\u0109"+ - "\21\5\15\0\7\5\4\0\10\5\1\0\2\5\1\0"+ - "\2\5\3\0\1\5\1\252\20\5\15\0\7\5\4\0"+ - "\10\5\1\0\2\5\1\0\2\5\3\0\17\5\1\333"+ - "\2\5\15\0\7\5\4\0\10\5\1\0\2\5\1\0"+ - "\2\5\3\0\3\5\1\127\16\5\14\0"; - - private static int [] zzUnpackTrans() { - int [] result = new int[14514]; - int offset = 0; - offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackTrans(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - value--; - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /* error codes */ - private static final int ZZ_UNKNOWN_ERROR = 0; - private static final int ZZ_NO_MATCH = 1; - private static final int ZZ_PUSHBACK_2BIG = 2; - - /* error messages for the codes above */ - private static final String ZZ_ERROR_MSG[] = { - "Unkown internal scanner error", - "Error: could not match input", - "Error: pushback value was too large" - }; - - /** - * ZZ_ATTRIBUTE[aState] contains the attributes of state aState - */ - private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); - - private static final String ZZ_ATTRIBUTE_PACKED_0 = - "\3\0\1\11\10\1\1\11\32\1\1\11\3\1\1\11"+ - "\4\1\1\11\17\1\1\0\2\1\1\0\76\1\3\0"+ - "\1\11\1\1\1\0\12\1\3\11\61\1\2\11\101\1"; - - private static int [] zzUnpackAttribute() { - int [] result = new int[265]; - int offset = 0; - offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAttribute(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - /** the input device */ - private java.io.Reader zzReader; - - /** the current state of the DFA */ - private int zzState; - - /** the current lexical state */ - private int zzLexicalState = YYINITIAL; - - /** this buffer contains the current text to be matched and is - the source of the yytext() string */ - private char zzBuffer[]; - - /** the textposition at the last accepting state */ - private int zzMarkedPos; - - /** the current text position in the buffer */ - private int zzCurrentPos; - - /** startRead marks the beginning of the yytext() string in the buffer */ - private int zzStartRead; - - /** endRead marks the last character in the buffer, that has been read - from input */ - private int zzEndRead; - - /** zzAtEOF == true <=> the scanner is at the EOF */ - private boolean zzAtEOF; - - /* user code: */ - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public PythonTokenMaker() { - super(); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, int startOffset) { - super.addToken(array, start,end, tokenType, startOffset); - zzStartRead = zzMarkedPos; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { "#", null }; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - - // Start off in the proper state. - int state = Token.NULL; - switch (initialTokenType) { - case Token.LITERAL_STRING_DOUBLE_QUOTE: - state = LONG_STRING_2; - break; - case Token.LITERAL_CHAR: - state = LONG_STRING_1; - break; - default: - state = Token.NULL; - } - - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtEOF = false; - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - - - /** - * Creates a new scanner - * There is also a java.io.InputStream version of this constructor. - * - * @param in the java.io.Reader to read input from. - */ - public PythonTokenMaker(java.io.Reader in) { - this.zzReader = in; - } - - /** - * Creates a new scanner. - * There is also java.io.Reader version of this constructor. - * - * @param in the java.io.Inputstream to read input from. - */ - public PythonTokenMaker(java.io.InputStream in) { - this(new java.io.InputStreamReader(in)); - } - - /** - * Unpacks the compressed character translation table. - * - * @param packed the packed character translation table - * @return the unpacked character translation table - */ - private static char [] zzUnpackCMap(String packed) { - char [] map = new char[0x10000]; - int i = 0; /* index in packed string */ - int j = 0; /* index in unpacked array */ - while (i < 168) { - int count = packed.charAt(i++); - char value = packed.charAt(i++); - do map[j++] = value; while (--count > 0); - } - return map; - } - - - /** - * Closes the input stream. - */ - public final void yyclose() throws java.io.IOException { - zzAtEOF = true; /* indicate end of file */ - zzEndRead = zzStartRead; /* invalidate buffer */ - - if (zzReader != null) - zzReader.close(); - } - - - /** - * Returns the current lexical state. - */ - public final int yystate() { - return zzLexicalState; - } - - - /** - * Enters a new lexical state - * - * @param newState the new lexical state - */ - @Override -public final void yybegin(int newState) { - zzLexicalState = newState; - } - - - /** - * Returns the text matched by the current regular expression. - */ - public final String yytext() { - return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead ); - } - - - /** - * Returns the character at position pos from the - * matched text. - * - * It is equivalent to yytext().charAt(pos), but faster - * - * @param pos the position of the character to fetch. - * A value from 0 to yylength()-1. - * - * @return the character at position pos - */ - public final char yycharat(int pos) { - return zzBuffer[zzStartRead+pos]; - } - - - /** - * Returns the length of the matched text region. - */ - public final int yylength() { - return zzMarkedPos-zzStartRead; - } - - - /** - * Reports an error that occured while scanning. - * - * In a wellformed scanner (no or only correct usage of - * yypushback(int) and a match-all fallback rule) this method - * will only be called with things that "Can't Possibly Happen". - * If this method is called, something is seriously wrong - * (e.g. a JFlex bug producing a faulty scanner etc.). - * - * Usual syntax/scanner level error handling should be done - * in error fallback rules. - * - * @param errorCode the code of the errormessage to display - */ - private void zzScanError(int errorCode) { - String message; - try { - message = ZZ_ERROR_MSG[errorCode]; - } - catch (ArrayIndexOutOfBoundsException e) { - message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; - } - - throw new Error(message); - } - - - /** - * Pushes the specified amount of characters back into the input stream. - * - * They will be read again by then next call of the scanning method - * - * @param number the number of characters to be read again. - * This number must not be greater than yylength()! - */ - public void yypushback(int number) { - if ( number > yylength() ) - zzScanError(ZZ_PUSHBACK_2BIG); - - zzMarkedPos -= number; - } - - - /** - * Resumes scanning until the next regular expression is matched, - * the end of input is encountered or an I/O-Error occurs. - * - * @return the next token - * @exception java.io.IOException if any I/O-Error occurs - */ - public org.fife.ui.rsyntaxtextarea.Token yylex() throws java.io.IOException { - int zzInput; - int zzAction; - - // cached fields: - int zzCurrentPosL; - int zzMarkedPosL; - int zzEndReadL = zzEndRead; - char [] zzBufferL = zzBuffer; - char [] zzCMapL = ZZ_CMAP; - - int [] zzTransL = ZZ_TRANS; - int [] zzRowMapL = ZZ_ROWMAP; - int [] zzAttrL = ZZ_ATTRIBUTE; - - while (true) { - zzMarkedPosL = zzMarkedPos; - - zzAction = -1; - - zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; - - zzState = zzLexicalState; - - - zzForAction: { - while (true) { - - if (zzCurrentPosL < zzEndReadL) - zzInput = zzBufferL[zzCurrentPosL++]; - else if (zzAtEOF) { - zzInput = YYEOF; - break zzForAction; - } - else { - // store back cached positions - zzCurrentPos = zzCurrentPosL; - zzMarkedPos = zzMarkedPosL; - boolean eof = zzRefill(); - // get translated positions and possibly new buffer - zzCurrentPosL = zzCurrentPos; - zzMarkedPosL = zzMarkedPos; - zzBufferL = zzBuffer; - zzEndReadL = zzEndRead; - if (eof) { - zzInput = YYEOF; - break zzForAction; - } - else { - zzInput = zzBufferL[zzCurrentPosL++]; - } - } - int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; - if (zzNext == -1) break zzForAction; - zzState = zzNext; - - int zzAttributes = zzAttrL[zzState]; - if ( (zzAttributes & 1) == 1 ) { - zzAction = zzState; - zzMarkedPosL = zzCurrentPosL; - if ( (zzAttributes & 8) == 8 ) break zzForAction; - } - - } - } - - // store back cached position - zzMarkedPos = zzMarkedPosL; - - switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { - case 5: - { addNullToken(); return firstToken; - } - case 20: break; - case 10: - { addToken(Token.LITERAL_CHAR); - } - case 21: break; - case 8: - { addToken(Token.WHITESPACE); - } - case 22: break; - case 12: - { addToken(Token.LITERAL_NUMBER_FLOAT); - } - case 23: break; - case 13: - { addToken(Token.RESERVED_WORD); - } - case 24: break; - case 9: - { addToken(Token.SEPARATOR); - } - case 25: break; - case 15: - { yybegin(LONG_STRING_1); addToken(Token.LITERAL_CHAR); - } - case 26: break; - case 2: - { addToken(Token.IDENTIFIER); - } - case 27: break; - case 14: - { addToken(Token.FUNCTION); - } - case 28: break; - case 1: - { addToken(Token.ERROR_IDENTIFIER); - } - case 29: break; - case 17: - { addToken(Token.DATA_TYPE); - } - case 30: break; - case 4: - { addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); - } - case 31: break; - case 7: - { addToken(Token.COMMENT_EOL); - } - case 32: break; - case 11: - { addToken(Token.ERROR_NUMBER_FORMAT); - } - case 33: break; - case 3: - { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); - } - case 34: break; - case 6: - { addToken(Token.OPERATOR); - } - case 35: break; - case 19: - { yybegin(YYINITIAL); addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); - } - case 36: break; - case 16: - { yybegin(LONG_STRING_2); addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); - } - case 37: break; - case 18: - { yybegin(YYINITIAL); addToken(Token.LITERAL_CHAR); - } - case 38: break; - default: - if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { - zzAtEOF = true; - switch (zzLexicalState) { - case YYINITIAL: { - addNullToken(); return firstToken; - } - case 266: break; - case LONG_STRING_2: { - if (firstToken==null) { - addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); - } - return firstToken; - } - case 267: break; - case LONG_STRING_1: { - if (firstToken==null) { - addToken(Token.LITERAL_CHAR); - } - return firstToken; - } - case 268: break; - default: - return null; - } - } - else { - zzScanError(ZZ_NO_MATCH); - } - } - } - } - - -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/RubyTokenMaker.flex b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/RubyTokenMaker.flex deleted file mode 100644 index c9a9a8c..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/RubyTokenMaker.flex +++ /dev/null @@ -1,760 +0,0 @@ -/* - * 09/11/2008 - * - * RubyTokenMaker.java - Scanner for Ruby - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * Scanner for Ruby.

- * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated RubyTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.5 - * - */ -%% - -%public -%class RubyTokenMaker -%extends AbstractJFlexTokenMaker -%unicode -%type org.fife.ui.rsyntaxtextarea.Token - - -%{ - - /** - * Token type specific to RubyTokenMaker; this signals that we are inside - * an unquoted/double quoted/backtick EOF heredoc. - */ - public static final int INTERNAL_HEREDOC_EOF_UNQUOTED = -1; - - /** - * Token type specific to RubyTokenMaker; this signals that we are inside - * an single quoted EOF heredoc. - */ - public static final int INTERNAL_HEREDOC_EOF_SINGLE_QUOTED = -2; - - /** - * Token type specific to RubyTokenMaker; this signals that we are inside - * an double quoted EOF heredoc. - */ - public static final int INTERNAL_HEREDOC_EOF_DOUBLE_QUOTED = -3; - - /** - * Token type specific to RubyTokenMaker; this signals that we are inside - * an unquoted/double quoted/backtick EOT heredoc. - */ - public static final int INTERNAL_HEREDOC_EOT_UNQUOTED = -4; - - /** - * Token type specific to RubyTokenMaker; this signals that we are inside - * an single quoted EOT heredoc. - */ - public static final int INTERNAL_HEREDOC_EOT_SINGLE_QUOTED = -5; - - /** - * Token type specific to RubyTokenMaker; this signals that we are inside - * an double quoted EOT heredoc. - */ - public static final int INTERNAL_HEREDOC_EOT_DOUBLE_QUOTED = -6; - - /** - * Token type specific to RubyTokenMaker; this signals that we are inside - * a %Q!...! style double quoted string. - */ - public static final int INTERNAL_STRING_Q_BANG = -7; - - /** - * Token type specific to RubyTokenMaker; this signals that we are inside - * a %Q{...} style double quoted string. - */ - public static final int INTERNAL_STRING_Q_CURLY_BRACE = -8; - - /** - * Token type specific to RubyTokenMaker; this signals that we are inside - * a %Q<...> style double quoted string. - */ - public static final int INTERNAL_STRING_Q_LT = -9; - - - /** - * Token type specific to RubyTokenMaker; this signals that we are inside - * a %Q(...) style double quoted string. - */ - public static final int INTERNAL_STRING_Q_PAREN = -10; - - - /** - * Token type specific to RubyTokenMaker; this signals that we are inside - * a %Q/.../ style double quoted string. - */ - public static final int INTERNAL_STRING_Q_SLASH = -11; - - /** - * Token type specific to RubyTokenMaker; this signals that we are inside - * a %Q[...] style double quoted string. - */ - public static final int INTERNAL_STRING_Q_SQUARE_BRACKET = -12; - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public RubyTokenMaker() { - } - - - /** - * Adds the token specified to the current linked list of tokens as an - * "end token;" that is, at zzMarkedPos. - * - * @param tokenType The token's type. - */ - private void addEndToken(int tokenType) { - addToken(zzMarkedPos,zzMarkedPos, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, int startOffset) { - super.addToken(array, start,end, tokenType, startOffset); - zzStartRead = zzMarkedPos; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { "#", null }; - } - - - /** - * Returns whether tokens of the specified type should have "mark - * occurrences" enabled for the current programming language. - * - * @param type The token type. - * @return Whether tokens of this type should have "mark occurrences" - * enabled. - */ - public boolean getMarkOccurrencesOfTokenType(int type) { - return type==Token.IDENTIFIER || type==Token.VARIABLE; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - - // Start off in the proper state. - int state = Token.NULL; - switch (initialTokenType) { - case Token.COMMENT_DOCUMENTATION: - state = DOCCOMMENT; - start = text.offset; - break; - case Token.LITERAL_STRING_DOUBLE_QUOTE: - state = STRING; - start = text.offset; - break; - case Token.LITERAL_CHAR: - state = CHAR_LITERAL; - start = text.offset; - break; - case Token.LITERAL_BACKQUOTE: - state = BACKTICKS; - start = text.offset; - break; - case INTERNAL_HEREDOC_EOF_UNQUOTED: - state = HEREDOC_EOF_UNQUOTED; - start = text.offset; - break; - case INTERNAL_HEREDOC_EOF_SINGLE_QUOTED: - state = HEREDOC_EOF_SINGLE_QUOTED; - start = text.offset; - break; - case INTERNAL_HEREDOC_EOF_DOUBLE_QUOTED: - state = HEREDOC_EOF_DOUBLE_QUOTED; - start = text.offset; - break; - case INTERNAL_HEREDOC_EOT_UNQUOTED: - state = HEREDOC_EOT_UNQUOTED; - start = text.offset; - break; - case INTERNAL_HEREDOC_EOT_SINGLE_QUOTED: - state = HEREDOC_EOT_SINGLE_QUOTED; - start = text.offset; - break; - case INTERNAL_HEREDOC_EOT_DOUBLE_QUOTED: - state = HEREDOC_EOT_DOUBLE_QUOTED; - start = text.offset; - break; - case INTERNAL_STRING_Q_BANG: - state = STRING_Q_BANG; - start = text.offset; - break; - case INTERNAL_STRING_Q_CURLY_BRACE: - state = STRING_Q_CURLY_BRACE; - start = text.offset; - break; - case INTERNAL_STRING_Q_LT: - state = STRING_Q_LT; - start = text.offset; - break; - case INTERNAL_STRING_Q_PAREN: - state = STRING_Q_PAREN; - start = text.offset; - break; - case INTERNAL_STRING_Q_SLASH: - state = STRING_Q_SLASH; - start = text.offset; - break; - case INTERNAL_STRING_Q_SQUARE_BRACKET: - state = STRING_Q_SQUARE_BRACKET; - start = text.offset; - break; - default: - state = Token.NULL; - } - - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = zzPushbackPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtBOL = true; - zzAtEOF = false; - } - - -%} - -Letter = [A-Za-z] -NonzeroDigit = [1-9] -Digit = ("0"|{NonzeroDigit}) -BinaryDigit = ([01]) -HexDigit = ({Digit}|[A-Fa-f]) -OctalDigit = ([0-7]) -NonSeparator = ([^\t\f\r\n\ \(\)\{\}\[\]\;\,\.\=\>\<\!\~\?\:\+\-\*\/\&\|\^\%\"\'\`]|"#"|"\\") - -IdentifierStart = ({Letter}|"_") -IdentifierPart = ({IdentifierStart}|{Digit}) -BooleanLiteral = ("true"|"false") - -LineTerminator = (\n) -WhiteSpace = ([ \t\f]) - -LineCommentBegin = "#" -DocCommentBegin = "=begin" -DocCommentEnd = "=end" - -DigitOrUnderscore = ({Digit}|[_]) -BinaryIntLiteral = ("0b"{BinaryDigit}([01_]*{BinaryDigit})?) -OctalLiteral = ("0"([0-7_]*{OctalDigit})?) -DecimalLiteral1 = ("0d"{Digit}({DigitOrUnderscore}*{Digit})?) -DecimalLiteral2 = ({NonzeroDigit}({DigitOrUnderscore}*{Digit})?) -DecimalLiteral = ({BinaryIntLiteral}|{OctalLiteral}|{DecimalLiteral1}|{DecimalLiteral2}) -HexLiteral = ("0x"{HexDigit}([0-9a-zA-Z_]*{HexDigit})?) -FloatLiteral = ({NonzeroDigit}({DigitOrUnderscore}*{Digit})?[Ee][+-]?({Digit}({DigitOrUnderscore}*{Digit})?)?) - -Separator = ([\(\)\{\}]) -Operator1 = ("::"|"."|"["|"]"|"-"|"+"|"!"|"~"|"*"|"/"|"%"|"<<"|">>"|"&"|"|"|"^") -Operator2 = (">"|">="|"<"|"<="|"<=>"|"=="|"==="|"!="|"=~"|"!~"|"&&"|"||") -Operator3 = (".."|"..."|"="|"+="|"-="|"*="|"/="|"%=") -Operator = ({Operator1}|{Operator2}|{Operator3}) - -Identifier = ({IdentifierStart}{IdentifierPart}*) -Symbol = ([:]{Identifier}) -ErrorIdentifier = ({NonSeparator}+) - -PreDefinedVariable = ("$"([!@&`\'+0-9~=/\,;.<>_*$?:\"]|"DEBUG"|"FILENAME"|"LOAD_PATH"|"stderr"|"stdin"|"stdout"|"VERBOSE"|([\-][0adFiIlpwv]))) -Variable = ({PreDefinedVariable}|([@][@]?|[$]){Identifier}) - -%state STRING -%state STRING_Q_BANG -%state STRING_Q_CURLY_BRACE -%state STRING_Q_PAREN -%state STRING_Q_SLASH -%state STRING_Q_SQUARE_BRACKET -%state STRING_Q_LT -%state CHAR_LITERAL -%state BACKTICKS -%state HEREDOC_EOF_UNQUOTED -%state HEREDOC_EOF_SINGLE_QUOTED -%state HEREDOC_EOF_DOUBLE_QUOTED -%state HEREDOC_EOT_UNQUOTED -%state HEREDOC_EOT_SINGLE_QUOTED -%state HEREDOC_EOT_DOUBLE_QUOTED -%state DOCCOMMENT - -%% - - { - - /* Keywords */ - "alias" | - "BEGIN" | - "begin" | - "break" | - "case" | - "class" | - "def" | - "defined" | - "do" | - "else" | - "elsif" | - "END" | - "end" | - "ensure" | - "for" | - "if" | - "in" | - "module" | - "next" | - "nil" | - "redo" | - "rescue" | - "retry" | - "return" | - "self" | - "super" | - "then" | - "undef" | - "unless" | - "until" | - "when" | - "while" | - "yield" { addToken(Token.RESERVED_WORD); } - - "Array" | - "Float" | - "Integer" | - "String" | - "at_exit" | - "autoload" | - "binding" | - "caller" | - "catch" | - "chop" | - "chop!" | - "chomp" | - "chomp!" | - "eval" | - "exec" | - "exit" | - "exit!" | - "fail" | - "fork" | - "format" | - "gets" | - "global_variables" | - "gsub" | - "gsub!" | - "iterator?" | - "lambda" | - "load" | - "local_variables" | - "loop" | - "open" | - "p" | - "print" | - "printf" | - "proc" | - "putc" | - "puts" | - "raise" | - "rand" | - "readline" | - "readlines" | - "require" | - "select" | - "sleep" | - "split" | - "sprintf" | - "srand" | - "sub" | - "sub!" | - "syscall" | - "system" | - "test" | - "trace_var" | - "trap" | - "untrace_var" { addToken(Token.FUNCTION); } - - "and" | - "or" | - "not" { addToken(Token.OPERATOR); } - - {BooleanLiteral} { addToken(Token.LITERAL_BOOLEAN); } - - {Variable} { addToken(Token.VARIABLE); } - {Symbol} { addToken(Token.PREPROCESSOR); } - - {LineTerminator} { addNullToken(); return firstToken; } - {Identifier} { addToken(Token.IDENTIFIER); } - {WhiteSpace}+ { addToken(Token.WHITESPACE); } - - /* String/Character literals. */ - \" { start = zzMarkedPos-1; yybegin(STRING); } - \' { start = zzMarkedPos-1; yybegin(CHAR_LITERAL); } - [\%][QqWwx]?[\(] { start = zzMarkedPos-yylength(); yybegin(STRING_Q_PAREN); } - [\%][QqWwx]?[\{] { start = zzMarkedPos-yylength(); yybegin(STRING_Q_CURLY_BRACE); } - [\%][QqWwx]?[\[] { start = zzMarkedPos-yylength(); yybegin(STRING_Q_SQUARE_BRACKET); } - [\%][QqWwx]?[\<] { start = zzMarkedPos-yylength(); yybegin(STRING_Q_LT); } - [\%][QqWwx]?[\!] { start = zzMarkedPos-yylength(); yybegin(STRING_Q_BANG); } - [\%][QqWwx]?[\/] { start = zzMarkedPos-yylength(); yybegin(STRING_Q_SLASH); } - \` { start = zzMarkedPos-1; yybegin(BACKTICKS); } - - /* Comment literals. */ - {LineCommentBegin}.* { addToken(Token.COMMENT_EOL); addNullToken(); return firstToken; } - {DocCommentBegin} { start = zzMarkedPos-6; yybegin(DOCCOMMENT); } - - /* "Here-document" syntax. This is only implemented for the common */ - /* cases. */ - "<> { addNullToken(); return firstToken; } - - /* Catch any other (unhandled) characters. */ - . { addToken(Token.IDENTIFIER); } - -} - - - { - [^\n\\\"]+ {} - \n { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); return firstToken; } - \\.? { /* Skip escaped chars. */ } - \" { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); } - <> { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); return firstToken; } -} - - - { - [^\n\\\!]+ {} - \n { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addEndToken(INTERNAL_STRING_Q_BANG); return firstToken; } - \\.? { /* Skip escaped chars. */ } - \! { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); } - <> { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addEndToken(INTERNAL_STRING_Q_BANG); return firstToken; } -} - - - { - [^\n\\\}]+ {} - \n { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addEndToken(INTERNAL_STRING_Q_CURLY_BRACE); return firstToken; } - \\.? { /* Skip escaped chars. */ } - \} { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); } - <> { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addEndToken(INTERNAL_STRING_Q_CURLY_BRACE); return firstToken; } -} - - - { - [^\n\\\>]+ {} - \n { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addEndToken(INTERNAL_STRING_Q_LT); return firstToken; } - \\.? { /* Skip escaped chars. */ } - \> { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); } - <> { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addEndToken(INTERNAL_STRING_Q_LT); return firstToken; } -} - - - { - [^\n\\\)]+ {} - \n { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addEndToken(INTERNAL_STRING_Q_PAREN); return firstToken; } - \\.? { /* Skip escaped chars. */ } - \) { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); } - <> { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addEndToken(INTERNAL_STRING_Q_PAREN); return firstToken; } -} - - - { - [^\n\\\/]+ {} - \n { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addEndToken(INTERNAL_STRING_Q_SLASH); return firstToken; } - \\.? { /* Skip escaped chars. */ } - \/ { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); } - <> { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addEndToken(INTERNAL_STRING_Q_SLASH); return firstToken; } -} - - - { - [^\n\\\]]+ {} - \n { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addEndToken(INTERNAL_STRING_Q_SQUARE_BRACKET); return firstToken; } - \\.? { /* Skip escaped chars. */ } - \] { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); } - <> { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addEndToken(INTERNAL_STRING_Q_SQUARE_BRACKET); return firstToken; } -} - - - { - [^\n\\\']+ {} - \\.? { /* Skip escaped single quotes only, but this should still work. */ } - \n { addToken(start,zzStartRead-1, Token.LITERAL_CHAR); return firstToken; } - \' { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_CHAR); } - <> { addToken(start,zzStartRead-1, Token.LITERAL_CHAR); return firstToken; } -} - - - { - [^\n\\\`]+ {} - \n { addToken(start,zzStartRead-1, Token.LITERAL_BACKQUOTE); return firstToken; } - \\.? { /* Skip escaped chars. */ } - \` { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_BACKQUOTE); } - <> { addToken(start,zzStartRead-1, Token.LITERAL_BACKQUOTE); return firstToken; } -} - - - { - /* NOTE: The closing "EOF" is supposed to be on a line by itself - */ - /* no surrounding whitespace or other chars. However, the way */ - /* we're hacking the JFLex scanning, something like ^"EOF"$ doesn't */ - /* work. Fortunately we don't need the start- and end-line anchors */ - /* since the production after "EOF" will match any line containing */ - /* EOF and any other chars. */ - /* NOTE2: This case is used for unquoted <> { addToken(start,zzStartRead-1, Token.PREPROCESSOR); addEndToken(INTERNAL_HEREDOC_EOF_UNQUOTED); return firstToken; } -} - - - { - /* NOTE: The closing "EOF" is supposed to be on a line by itself - */ - /* no surrounding whitespace or other chars. However, the way */ - /* we're hacking the JFLex scanning, something like ^"EOF"$ doesn't */ - /* work. Fortunately we don't need the start- and end-line anchors */ - /* since the production after "EOF" will match any line containing */ - /* EOF and any other chars. */ - "EOF" { if (start==zzStartRead) { addToken(Token.PREPROCESSOR); addNullToken(); return firstToken; } } - [^\n\\]+ {} - \n { addToken(start,zzStartRead-1, Token.PREPROCESSOR); addEndToken(INTERNAL_HEREDOC_EOF_SINGLE_QUOTED); return firstToken; } - \\.? { /* Skip escaped chars. */ } - <> { addToken(start,zzStartRead-1, Token.PREPROCESSOR); addEndToken(INTERNAL_HEREDOC_EOF_SINGLE_QUOTED); return firstToken; } -} - - - { - /* NOTE: The closing "EOF" is supposed to be on a line by itself - */ - /* no surrounding whitespace or other chars. However, the way */ - /* we're hacking the JFLex scanning, something like ^"EOF"$ doesn't */ - /* work. Fortunately we don't need the start- and end-line anchors */ - /* since the production after "EOF" will match any line containing */ - /* EOF and any other chars. */ - "EOF" { if (start==zzStartRead) { addToken(Token.PREPROCESSOR); addNullToken(); return firstToken; } } - [^\n\\]+ {} - \n { addToken(start,zzStartRead-1, Token.PREPROCESSOR); addEndToken(INTERNAL_HEREDOC_EOF_SINGLE_QUOTED); return firstToken; } - \\.? { /* Skip escaped chars. */ } - <> { addToken(start,zzStartRead-1, Token.PREPROCESSOR); addEndToken(INTERNAL_HEREDOC_EOF_SINGLE_QUOTED); return firstToken; } -} - - - { - /* NOTE: The closing "EOT" is supposed to be on a line by itself - */ - /* no surrounding whitespace or other chars. However, the way */ - /* we're hacking the JFLex scanning, something like ^"EOT"$ doesn't */ - /* work. Fortunately we don't need the start- and end-line anchors */ - /* since the production after "EOT" will match any line containing */ - /* EOF and any other chars. */ - /* NOTE2: This case is used for unquoted <> { addToken(start,zzStartRead-1, Token.PREPROCESSOR); addEndToken(INTERNAL_HEREDOC_EOT_UNQUOTED); return firstToken; } -} - - - { - /* NOTE: The closing "EOT" is supposed to be on a line by itself - */ - /* no surrounding whitespace or other chars. However, the way */ - /* we're hacking the JFLex scanning, something like ^"EOT"$ doesn't */ - /* work. Fortunately we don't need the start- and end-line anchors */ - /* since the production after "EOT" will match any line containing */ - /* EOT and any other chars. */ - "EOT" { if (start==zzStartRead) { addToken(Token.PREPROCESSOR); addNullToken(); return firstToken; } } - [^\n\\]+ {} - \n { addToken(start,zzStartRead-1, Token.PREPROCESSOR); addEndToken(INTERNAL_HEREDOC_EOT_SINGLE_QUOTED); return firstToken; } - \\.? { /* Skip escaped chars. */ } - <> { addToken(start,zzStartRead-1, Token.PREPROCESSOR); addEndToken(INTERNAL_HEREDOC_EOT_SINGLE_QUOTED); return firstToken; } -} - - - { - /* NOTE: The closing "EOT" is supposed to be on a line by itself - */ - /* no surrounding whitespace or other chars. However, the way */ - /* we're hacking the JFLex scanning, something like ^"EOT"$ doesn't */ - /* work. Fortunately we don't need the start- and end-line anchors */ - /* since the production after "EOT" will match any line containing */ - /* EOT and any other chars. */ - "EOT" { if (start==zzStartRead) { addToken(Token.PREPROCESSOR); addNullToken(); return firstToken; } } - [^\n\\]+ {} - \n { addToken(start,zzStartRead-1, Token.PREPROCESSOR); addEndToken(INTERNAL_HEREDOC_EOT_SINGLE_QUOTED); return firstToken; } - \\.? { /* Skip escaped chars. */ } - <> { addToken(start,zzStartRead-1, Token.PREPROCESSOR); addEndToken(INTERNAL_HEREDOC_EOT_SINGLE_QUOTED); return firstToken; } -} - - - { - - [^\n\=]+ {} - {DocCommentEnd} { yybegin(YYINITIAL); addToken(start,zzStartRead+3, Token.COMMENT_DOCUMENTATION); } - = {} - \n { addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); return firstToken; } - <> { yybegin(YYINITIAL); addToken(start,zzEndRead, Token.COMMENT_DOCUMENTATION); return firstToken; } - -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/RubyTokenMaker.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/RubyTokenMaker.java deleted file mode 100644 index c3356dd..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/RubyTokenMaker.java +++ /dev/null @@ -1,1681 +0,0 @@ -/* The following code was generated by JFlex 1.4.1 on 6/21/15 11:19 AM */ - -/* - * 09/11/2008 - * - * RubyTokenMaker.java - Scanner for Ruby - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * Scanner for Ruby.

- * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated RubyTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.5 - * - */ - -public class RubyTokenMaker extends AbstractJFlexTokenMaker { - - /** This character denotes the end of file */ - public static final int YYEOF = -1; - - /** lexical states */ - public static final int HEREDOC_EOF_SINGLE_QUOTED = 11; - public static final int DOCCOMMENT = 14; - public static final int HEREDOC_EOT_SINGLE_QUOTED = 13; - public static final int HEREDOC_EOT_UNQUOTED = 12; - public static final int STRING_Q_SLASH = 5; - public static final int STRING_Q_BANG = 2; - public static final int STRING_Q_LT = 7; - public static final int STRING = 1; - public static final int BACKTICKS = 9; - public static final int YYINITIAL = 0; - public static final int HEREDOC_EOF_UNQUOTED = 10; - public static final int STRING_Q_CURLY_BRACE = 3; - public static final int STRING_Q_PAREN = 4; - public static final int HEREDOC_EOF_DOUBLE_QUOTED = 11; - public static final int CHAR_LITERAL = 8; - public static final int HEREDOC_EOT_DOUBLE_QUOTED = 13; - public static final int STRING_Q_SQUARE_BRACKET = 6; - - /** - * Translates characters to character classes - */ - private static final String ZZ_CMAP_PACKED = - "\11\0\1\24\1\23\1\0\1\24\1\7\22\0\1\24\1\44\1\106"+ - "\1\10\1\56\1\50\1\53\1\107\1\111\1\36\1\46\1\35\1\60"+ - "\1\43\1\40\1\47\1\3\1\4\6\6\2\2\1\37\1\60\1\51"+ - "\1\25\1\52\1\104\1\57\1\67\1\62\1\5\1\61\1\34\1\64"+ - "\1\63\1\1\1\65\2\1\1\1\1\1\1\66\1\70\1\1\1\110"+ - "\1\1\1\73\1\71\1\1\1\1\1\110\3\1\1\41\1\11\1\42"+ - "\1\55\1\12\1\113\1\20\1\26\1\76\1\32\1\16\1\17\1\27"+ - "\1\102\1\30\1\1\1\75\1\21\1\77\1\31\1\72\1\101\1\105"+ - "\1\14\1\22\1\13\1\15\1\74\1\103\1\33\1\100\1\1\1\112"+ - "\1\54\1\114\1\45\uff81\0"; - - /** - * Translates characters to character classes - */ - private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); - - /** - * Translates DFA states to action switch labels. - */ - private static final int [] ZZ_ACTION = zzUnpackAction(); - - private static final String ZZ_ACTION_PACKED_0 = - "\17\0\1\1\1\2\2\3\1\2\1\4\10\2\1\5"+ - "\1\6\1\7\6\2\1\7\1\10\1\2\10\7\2\1"+ - "\11\2\1\11\1\2\1\12\1\13\1\14\1\15\1\16"+ - "\1\17\1\20\1\15\1\21\1\15\1\22\1\15\1\23"+ - "\1\15\1\24\1\15\1\25\1\15\1\26\1\15\1\27"+ - "\1\30\1\31\1\15\1\32\1\33\1\15\1\34\1\15"+ - "\1\35\1\36\1\15\1\37\1\15\1\40\1\15\1\1"+ - "\1\41\1\3\4\1\30\2\1\0\7\2\1\42\5\2"+ - "\1\43\1\7\1\0\1\44\1\45\1\46\1\47\1\50"+ - "\1\51\2\7\3\52\1\0\1\1\4\2\1\7\12\2"+ - "\1\16\1\27\2\15\1\0\2\41\2\3\1\53\24\2"+ - "\1\42\7\2\1\11\6\2\1\0\10\2\1\42\5\0"+ - "\20\2\1\54\1\0\1\1\1\41\3\1\1\55\1\2"+ - "\1\11\16\2\1\11\5\2\1\0\3\2\4\0\11\2"+ - "\1\56\1\0\12\2\1\0\2\2\1\57\1\60\3\0"+ - "\2\2\1\11\5\2\1\61\1\2\6\0\4\2\1\62"+ - "\1\63\1\11\7\2"; - - private static int [] zzUnpackAction() { - int [] result = new int[347]; - int offset = 0; - offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAction(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /** - * Translates a state to a row index in the transition table - */ - private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); - - private static final String ZZ_ROWMAP_PACKED_0 = - "\0\0\0\115\0\232\0\347\0\u0134\0\u0181\0\u01ce\0\u021b"+ - "\0\u0268\0\u02b5\0\u0302\0\u034f\0\u039c\0\u03e9\0\u0436\0\u0483"+ - "\0\u04d0\0\u051d\0\u056a\0\u05b7\0\u0604\0\u0651\0\u069e\0\u06eb"+ - "\0\u0738\0\u0785\0\u07d2\0\u081f\0\u086c\0\u05b7\0\u08b9\0\u0906"+ - "\0\u0953\0\u09a0\0\u09ed\0\u0a3a\0\u0a87\0\u0ad4\0\u0b21\0\u05b7"+ - "\0\u0b6e\0\u0bbb\0\u05b7\0\u0c08\0\u0c55\0\u0ca2\0\u0cef\0\u0d3c"+ - "\0\u0d89\0\u0dd6\0\u0e23\0\u0e70\0\u0ebd\0\u0f0a\0\u0f57\0\u0fa4"+ - "\0\u0ff1\0\u103e\0\u108b\0\u10d8\0\u1125\0\u1172\0\u05b7\0\u05b7"+ - "\0\u05b7\0\u11bf\0\u120c\0\u05b7\0\u05b7\0\u1259\0\u05b7\0\u12a6"+ - "\0\u05b7\0\u12f3\0\u05b7\0\u1340\0\u05b7\0\u138d\0\u05b7\0\u13da"+ - "\0\u05b7\0\u1427\0\u1474\0\u05b7\0\u05b7\0\u14c1\0\u05b7\0\u05b7"+ - "\0\u150e\0\u05b7\0\u155b\0\u05b7\0\u05b7\0\u15a8\0\u05b7\0\u15f5"+ - "\0\u05b7\0\u1642\0\u168f\0\u16dc\0\u1729\0\u1729\0\u1776\0\u17c3"+ - "\0\u1810\0\u185d\0\u18aa\0\u18f7\0\u1944\0\u1991\0\u19de\0\u1a2b"+ - "\0\u1a78\0\u1ac5\0\u1b12\0\u1b5f\0\u1bac\0\u1bf9\0\u1c46\0\u1c93"+ - "\0\u1ce0\0\u1d2d\0\u1d7a\0\u1dc7\0\u1e14\0\u1e61\0\u1eae\0\u1efb"+ - "\0\u1f48\0\u1f95\0\u1fe2\0\u202f\0\u207c\0\u20c9\0\u2116\0\u2163"+ - "\0\u21b0\0\u04d0\0\u21fd\0\u224a\0\u2297\0\u22e4\0\u2331\0\u237e"+ - "\0\u23cb\0\u2418\0\u05b7\0\u05b7\0\u05b7\0\u05b7\0\u05b7\0\u05b7"+ - "\0\u2465\0\u24b2\0\u24ff\0\u0483\0\u05b7\0\u254c\0\u2599\0\u25e6"+ - "\0\u2633\0\u2680\0\u26cd\0\u04d0\0\u271a\0\u2767\0\u27b4\0\u2801"+ - "\0\u284e\0\u289b\0\u28e8\0\u2935\0\u2982\0\u29cf\0\u05b7\0\u05b7"+ - "\0\u2a1c\0\u2a69\0\u2ab6\0\u2b03\0\u2b50\0\u2b9d\0\u2bea\0\u2c37"+ - "\0\u2c84\0\u2cd1\0\u2d1e\0\u2d6b\0\u2db8\0\u2e05\0\u2e52\0\u2e9f"+ - "\0\u2eec\0\u2f39\0\u2f86\0\u2fd3\0\u3020\0\u306d\0\u30ba\0\u3107"+ - "\0\u3154\0\u31a1\0\u31ee\0\u323b\0\u3288\0\u32d5\0\u3322\0\u336f"+ - "\0\u33bc\0\u3409\0\u3456\0\u34a3\0\u34f0\0\u353d\0\u358a\0\u35d7"+ - "\0\u3624\0\u3671\0\u36be\0\u370b\0\u3758\0\u37a5\0\u37f2\0\u383f"+ - "\0\u388c\0\u38d9\0\u3926\0\u3973\0\u39c0\0\u3a0d\0\u3a5a\0\u3aa7"+ - "\0\u3af4\0\u3b41\0\u3b8e\0\u3bdb\0\u3c28\0\u3c75\0\u3cc2\0\u3d0f"+ - "\0\u3d5c\0\u3da9\0\u3df6\0\u3e43\0\u3e90\0\u3edd\0\u3f2a\0\u3f77"+ - "\0\u3fc4\0\u4011\0\u150e\0\u405e\0\u2b03\0\u40ab\0\u2b9d\0\u2bea"+ - "\0\u2c37\0\u04d0\0\u40f8\0\u04d0\0\u4145\0\u4192\0\u41df\0\u422c"+ - "\0\u4279\0\u42c6\0\u4313\0\u4360\0\u43ad\0\u43fa\0\u4447\0\u4494"+ - "\0\u44e1\0\u452e\0\u05b7\0\u457b\0\u45c8\0\u4615\0\u4662\0\u46af"+ - "\0\u46fc\0\u4749\0\u4796\0\u47e3\0\u4830\0\u487d\0\u48ca\0\u4917"+ - "\0\u4964\0\u49b1\0\u49fe\0\u4a4b\0\u4a98\0\u4ae5\0\u4b32\0\u4b7f"+ - "\0\u4bcc\0\u05b7\0\u40ab\0\u4c19\0\u4c66\0\u4cb3\0\u4d00\0\u4d4d"+ - "\0\u4d9a\0\u4de7\0\u4e34\0\u4e81\0\u4ece\0\u4f1b\0\u4f68\0\u4fb5"+ - "\0\u05b7\0\u05b7\0\u5002\0\u504f\0\u509c\0\u50e9\0\u5136\0\u5183"+ - "\0\u51d0\0\u521d\0\u526a\0\u52b7\0\u5183\0\u05b7\0\u5304\0\u5351"+ - "\0\u539e\0\u53eb\0\u5438\0\u5485\0\u54d2\0\u551f\0\u556c\0\u55b9"+ - "\0\u5606\0\u05b7\0\u05b7\0\u383f\0\u5653\0\u56a0\0\u56ed\0\u573a"+ - "\0\u5787\0\u57d4\0\u5821"; - - private static int [] zzUnpackRowMap() { - int [] result = new int[347]; - int offset = 0; - offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackRowMap(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int high = packed.charAt(i++) << 16; - result[j++] = high | packed.charAt(i++); - } - return j; - } - - /** - * The transition table of the DFA - */ - private static final int [] ZZ_TRANS = zzUnpackTrans(); - - private static final String ZZ_TRANS_PACKED_0 = - "\1\20\1\21\1\22\1\23\1\22\1\21\1\22\1\24"+ - "\1\25\1\20\1\21\1\26\1\27\1\30\1\31\1\32"+ - "\1\33\1\34\1\35\1\36\1\37\1\40\1\41\1\42"+ - "\1\43\1\44\1\45\1\21\1\46\1\47\1\50\1\51"+ - "\1\52\2\53\1\47\1\54\1\53\2\47\1\55\1\56"+ - "\1\57\1\60\1\61\1\53\1\62\1\63\1\24\1\21"+ - "\1\64\1\21\1\65\1\66\1\21\1\67\2\21\1\70"+ - "\1\71\2\21\1\72\1\73\1\74\1\75\1\21\1\76"+ - "\1\24\1\21\1\77\1\100\1\21\2\50\1\101\1\50"+ - "\11\102\1\103\11\102\1\104\62\102\1\105\6\102\11\106"+ - "\1\103\11\106\1\107\20\106\1\105\50\106\11\110\1\103"+ - "\11\110\1\111\70\110\1\105\11\112\1\103\11\112\1\113"+ - "\12\112\1\105\56\112\11\114\1\103\11\114\1\115\23\114"+ - "\1\105\45\114\11\116\1\103\11\116\1\117\16\116\1\105"+ - "\52\116\11\120\1\103\11\120\1\121\26\120\1\105\42\120"+ - "\11\122\1\123\11\122\1\124\63\122\1\125\5\122\11\126"+ - "\1\103\11\126\1\127\67\126\1\130\1\126\11\131\1\103"+ - "\11\131\1\132\10\131\1\133\71\131\1\103\11\131\1\134"+ - "\10\131\1\133\71\131\1\103\11\131\1\135\10\131\1\136"+ - "\71\131\1\103\11\131\1\137\10\131\1\136\60\131\23\140"+ - "\1\141\1\140\1\142\67\140\7\20\1\0\13\20\3\0"+ - "\7\20\21\0\2\20\1\0\23\20\1\0\1\20\2\0"+ - "\1\20\4\0\1\20\6\21\1\0\2\20\11\21\3\0"+ - "\7\21\21\0\2\20\1\0\23\21\1\0\1\21\2\0"+ - "\1\21\4\0\2\20\3\22\1\20\1\22\1\0\2\20"+ - "\1\143\3\20\1\144\4\20\3\0\6\20\1\144\21\0"+ - "\2\20\1\0\23\20\1\0\1\20\2\0\1\20\4\0"+ - "\3\20\2\145\1\20\1\145\1\0\2\20\1\146\10\20"+ - "\3\0\1\147\3\20\1\150\1\151\1\20\21\0\2\20"+ - "\1\0\23\20\1\0\1\20\2\0\1\20\121\0\23\25"+ - "\1\0\71\25\1\20\6\21\1\0\2\20\2\21\1\152"+ - "\1\21\1\153\4\21\3\0\7\21\21\0\2\20\1\0"+ - "\21\21\1\154\1\21\1\0\1\21\2\0\1\21\4\0"+ - "\1\20\6\21\1\0\2\20\4\21\1\155\1\21\1\156"+ - "\2\21\3\0\7\21\21\0\2\20\1\0\23\21\1\0"+ - "\1\21\2\0\1\21\4\0\1\20\6\21\1\0\2\20"+ - "\11\21\3\0\3\21\1\157\3\21\21\0\2\20\1\0"+ - "\23\21\1\0\1\21\2\0\1\21\4\0\1\20\6\21"+ - "\1\0\2\20\7\21\1\160\1\21\3\0\3\21\1\161"+ - "\1\21\1\162\1\21\21\0\2\20\1\0\13\21\1\163"+ - "\7\21\1\0\1\21\2\0\1\21\4\0\1\20\6\21"+ - "\1\0\2\20\6\21\1\164\2\21\3\0\7\21\21\0"+ - "\2\20\1\0\11\21\1\165\11\21\1\0\1\21\2\0"+ - "\1\21\4\0\1\20\6\21\1\0\2\20\1\21\1\166"+ - "\1\21\1\167\3\21\1\170\1\21\3\0\3\21\1\171"+ - "\3\21\21\0\2\20\1\0\23\21\1\0\1\21\2\0"+ - "\1\21\4\0\1\20\6\21\1\0\2\20\6\21\1\172"+ - "\2\21\3\0\7\21\21\0\2\20\1\0\11\21\1\173"+ - "\11\21\1\0\1\21\2\0\1\21\4\0\1\20\6\21"+ - "\1\0\2\20\2\21\1\174\1\175\1\176\2\21\1\177"+ - "\1\21\3\0\7\21\21\0\2\20\1\0\17\21\1\200"+ - "\1\201\2\21\1\0\1\21\2\0\1\21\30\0\1\37"+ - "\115\0\1\47\1\202\16\0\1\53\47\0\1\20\6\21"+ - "\1\0\2\20\2\21\1\203\1\21\1\204\4\21\3\0"+ - "\2\21\1\205\4\21\21\0\2\20\1\0\23\21\1\0"+ - "\1\21\2\0\1\21\4\0\1\20\6\21\1\0\2\20"+ - "\4\21\1\206\2\21\1\207\1\210\3\0\7\21\21\0"+ - "\2\20\1\0\23\21\1\0\1\21\2\0\1\21\4\0"+ - "\1\20\6\21\1\0\2\20\1\21\1\211\3\21\1\212"+ - "\3\21\3\0\3\21\1\212\3\21\21\0\2\20\1\0"+ - "\23\21\1\0\1\21\2\0\1\21\4\0\1\20\6\21"+ - "\1\0\2\20\4\21\1\213\4\21\3\0\2\21\1\214"+ - "\4\21\21\0\2\20\1\0\11\21\1\215\11\21\1\0"+ - "\1\21\2\0\1\21\4\0\1\20\6\21\1\0\2\20"+ - "\4\21\1\216\4\21\3\0\7\21\21\0\2\20\1\0"+ - "\11\21\1\212\11\21\1\0\1\21\2\0\1\21\4\0"+ - "\1\20\6\21\1\0\2\20\11\21\3\0\7\21\21\0"+ - "\2\20\1\0\5\21\1\217\15\21\1\0\1\21\2\0"+ - "\1\21\31\0\1\53\70\0\1\220\3\0\1\220\4\0"+ - "\11\220\3\0\7\220\2\0\1\53\21\0\23\220\1\0"+ - "\1\220\2\0\1\220\44\0\1\221\101\0\1\53\17\0"+ - "\1\53\74\0\1\53\5\0\1\222\5\0\1\223\2\0"+ - "\1\224\2\0\1\225\1\0\1\226\31\0\1\222\1\0"+ - "\1\222\2\0\1\222\1\227\1\230\27\0\1\231\23\0"+ - "\1\232\70\0\1\53\24\0\1\53\115\0\1\53\115\0"+ - "\1\53\40\0\1\20\1\233\3\234\1\233\1\234\1\0"+ - "\2\20\11\233\2\0\1\235\7\233\1\235\1\0\2\235"+ - "\2\0\1\236\4\235\1\0\3\235\2\0\2\234\1\235"+ - "\23\233\1\235\1\233\2\235\1\233\2\0\1\235\1\0"+ - "\1\20\1\233\3\20\1\233\1\20\1\0\2\20\11\233"+ - "\3\0\7\233\21\0\1\20\1\237\1\0\23\233\1\0"+ - "\1\233\2\0\1\233\4\0\1\20\6\21\1\0\2\20"+ - "\11\21\3\0\6\21\1\240\21\0\2\20\1\0\23\21"+ - "\1\0\1\21\2\0\1\21\4\0\1\20\6\21\1\0"+ - "\2\20\7\21\1\241\1\21\3\0\7\21\21\0\2\20"+ - "\1\0\23\21\1\0\1\21\2\0\1\21\4\0\1\20"+ - "\6\21\1\0\2\20\11\21\3\0\3\21\1\242\3\21"+ - "\21\0\2\20\1\0\23\21\1\0\1\21\2\0\1\21"+ - "\4\0\1\20\6\21\1\0\2\20\2\21\1\243\6\21"+ - "\3\0\7\21\21\0\2\20\1\0\23\21\1\0\1\21"+ - "\2\0\1\21\4\0\1\20\6\21\1\0\2\20\2\21"+ - "\1\244\6\21\3\0\7\21\21\0\2\20\1\0\20\21"+ - "\1\245\2\21\1\0\1\21\2\0\1\21\4\0\1\20"+ - "\6\21\1\0\2\20\1\21\1\246\7\21\3\0\7\21"+ - "\21\0\2\20\1\0\23\21\1\0\1\21\2\0\1\21"+ - "\4\0\1\20\6\21\1\0\2\20\6\21\1\247\1\250"+ - "\1\21\3\0\7\21\21\0\2\20\1\0\21\21\1\251"+ - "\1\21\1\0\1\21\2\0\1\21\4\0\1\20\6\21"+ - "\1\0\2\20\11\21\3\0\7\21\21\0\2\20\1\0"+ - "\11\21\1\252\11\21\1\0\1\21\2\0\1\21\4\0"+ - "\1\20\6\21\1\0\2\20\11\21\3\0\2\21\1\253"+ - "\4\21\21\0\2\20\1\0\23\21\1\0\1\21\2\0"+ - "\1\21\4\0\1\20\6\21\1\0\2\20\2\21\1\254"+ - "\1\255\5\21\3\0\7\21\21\0\2\20\1\0\23\21"+ - "\1\0\1\21\2\0\1\21\4\0\1\20\6\21\1\0"+ - "\2\20\11\21\3\0\7\21\21\0\2\20\1\0\21\21"+ - "\1\256\1\21\1\0\1\21\2\0\1\21\4\0\11\102"+ - "\1\0\11\102\1\0\62\102\1\0\6\102\23\257\1\0"+ - "\71\257\11\106\1\0\11\106\1\0\20\106\1\0\50\106"+ - "\11\110\1\0\11\110\1\0\70\110\1\0\11\112\1\0"+ - "\11\112\1\0\12\112\1\0\56\112\11\114\1\0\11\114"+ - "\1\0\23\114\1\0\45\114\11\116\1\0\11\116\1\0"+ - "\16\116\1\0\52\116\11\120\1\0\11\120\1\0\26\120"+ - "\1\0\42\120\11\122\1\0\11\122\1\0\63\122\1\0"+ - "\5\122\23\260\1\0\71\260\11\126\1\0\11\126\1\0"+ - "\67\126\1\0\1\126\11\131\1\0\11\131\1\0\102\131"+ - "\1\0\11\131\1\0\44\131\1\261\35\131\1\0\11\131"+ - "\1\0\44\131\1\262\24\131\23\140\1\0\1\140\1\0"+ - "\67\140\16\0\1\263\76\0\2\20\3\22\1\20\1\22"+ - "\1\0\2\20\1\143\10\20\3\0\7\20\21\0\2\20"+ - "\1\0\23\20\1\0\1\20\2\0\1\20\4\0\2\20"+ - "\3\264\1\20\1\264\1\0\13\20\3\0\7\20\1\265"+ - "\5\0\1\265\12\0\2\20\1\0\23\20\1\0\1\20"+ - "\2\0\1\20\4\0\3\20\2\145\1\20\1\145\1\0"+ - "\2\20\1\146\10\20\3\0\7\20\21\0\2\20\1\0"+ - "\23\20\1\0\1\20\2\0\1\20\4\0\3\20\2\266"+ - "\2\20\1\0\13\20\3\0\7\20\21\0\2\20\1\0"+ - "\23\20\1\0\1\20\2\0\1\20\4\0\2\20\3\267"+ - "\1\20\1\267\1\0\13\20\3\0\7\20\21\0\2\20"+ - "\1\0\23\20\1\0\1\20\2\0\1\20\4\0\2\20"+ - "\5\270\1\0\6\20\3\270\2\20\3\0\1\270\3\20"+ - "\1\270\1\20\1\270\21\0\2\20\1\0\2\270\1\20"+ - "\1\270\2\20\1\270\6\20\1\270\5\20\1\0\1\20"+ - "\2\0\1\20\4\0\1\20\6\21\1\0\2\20\3\21"+ - "\1\271\2\21\1\272\2\21\3\0\7\21\21\0\2\20"+ - "\1\0\23\21\1\0\1\21\2\0\1\21\4\0\1\20"+ - "\6\21\1\0\2\20\10\21\1\273\3\0\7\21\21\0"+ - "\2\20\1\0\23\21\1\0\1\21\2\0\1\21\4\0"+ - "\1\20\6\21\1\0\2\20\4\21\1\274\4\21\3\0"+ - "\7\21\21\0\2\20\1\0\23\21\1\0\1\21\2\0"+ - "\1\21\4\0\1\20\6\21\1\0\2\20\1\21\1\275"+ - "\4\21\1\276\1\21\1\277\3\0\4\21\1\300\2\21"+ - "\21\0\2\20\1\0\23\21\1\0\1\301\2\0\1\21"+ - "\4\0\1\20\6\21\1\0\2\20\11\21\3\0\2\21"+ - "\1\302\1\303\3\21\21\0\2\20\1\0\23\21\1\0"+ - "\1\21\2\0\1\21\4\0\1\20\6\21\1\0\2\20"+ - "\1\21\1\304\5\21\1\305\1\21\3\0\4\21\1\306"+ - "\2\21\21\0\2\20\1\0\23\21\1\0\1\21\2\0"+ - "\1\21\4\0\1\20\6\21\1\0\2\20\10\21\1\307"+ - "\3\0\7\21\21\0\2\20\1\0\23\21\1\0\1\21"+ - "\2\0\1\21\4\0\1\20\6\21\1\0\2\20\10\21"+ - "\1\310\3\0\4\21\1\212\2\21\21\0\2\20\1\0"+ - "\23\21\1\0\1\21\2\0\1\21\4\0\1\20\6\21"+ - "\1\0\2\20\4\21\1\311\4\21\3\0\2\21\1\312"+ - "\4\21\21\0\2\20\1\0\23\21\1\0\1\21\2\0"+ - "\1\21\4\0\1\20\6\21\1\0\2\20\6\21\1\313"+ - "\2\21\3\0\7\21\21\0\2\20\1\0\23\21\1\0"+ - "\1\21\2\0\1\21\4\0\1\20\6\21\1\0\2\20"+ - "\7\21\1\314\1\21\3\0\2\21\1\313\4\21\21\0"+ - "\2\20\1\0\23\21\1\0\1\21\2\0\1\21\4\0"+ - "\1\20\6\21\1\0\2\20\2\21\1\315\6\21\3\0"+ - "\7\21\21\0\2\20\1\0\23\21\1\0\1\21\2\0"+ - "\1\21\4\0\1\20\6\21\1\0\2\20\1\316\10\21"+ - "\3\0\7\21\21\0\2\20\1\0\23\21\1\0\1\21"+ - "\2\0\1\21\4\0\1\20\6\21\1\0\2\20\1\21"+ - "\1\317\7\21\3\0\7\21\21\0\2\20\1\0\23\21"+ - "\1\0\1\21\2\0\1\21\4\0\1\20\6\21\1\0"+ - "\2\20\11\21\3\0\2\21\1\320\4\21\21\0\2\20"+ - "\1\0\23\21\1\0\1\21\2\0\1\21\4\0\1\20"+ - "\6\21\1\0\2\20\11\21\3\0\4\21\1\244\2\21"+ - "\21\0\2\20\1\0\23\21\1\0\1\21\2\0\1\21"+ - "\4\0\1\20\6\21\1\0\2\20\11\21\3\0\7\21"+ - "\21\0\2\20\1\0\16\21\1\321\4\21\1\0\1\21"+ - "\2\0\1\21\4\0\1\20\6\21\1\0\2\20\6\21"+ - "\1\303\2\21\3\0\7\21\21\0\2\20\1\0\11\21"+ - "\1\322\3\21\1\323\5\21\1\0\1\21\2\0\1\21"+ - "\4\0\1\20\6\21\1\0\2\20\6\21\1\324\2\21"+ - "\3\0\7\21\21\0\2\20\1\0\23\21\1\0\1\21"+ - "\2\0\1\21\4\0\1\20\6\21\1\0\2\20\11\21"+ - "\3\0\1\325\6\21\21\0\2\20\1\0\20\21\1\326"+ - "\2\21\1\0\1\21\2\0\1\21\4\0\1\20\6\21"+ - "\1\0\2\20\7\21\1\327\1\21\3\0\7\21\21\0"+ - "\2\20\1\0\23\21\1\0\1\21\2\0\1\21\4\0"+ - "\1\20\6\21\1\0\2\20\4\21\1\330\4\21\3\0"+ - "\7\21\21\0\2\20\1\0\23\21\1\0\1\21\2\0"+ - "\1\21\4\0\1\20\6\21\1\0\2\20\10\21\1\331"+ - "\3\0\7\21\21\0\2\20\1\0\23\21\1\0\1\21"+ - "\2\0\1\21\4\0\1\20\6\21\1\0\2\20\2\21"+ - "\1\332\4\21\1\333\1\21\3\0\7\21\21\0\2\20"+ - "\1\0\23\21\1\0\1\21\2\0\1\21\22\0\1\334"+ - "\76\0\1\20\6\21\1\0\2\20\4\21\1\335\4\21"+ - "\3\0\7\21\21\0\2\20\1\0\23\21\1\0\1\21"+ - "\2\0\1\21\4\0\1\20\6\21\1\0\2\20\11\21"+ - "\3\0\1\21\1\336\5\21\21\0\2\20\1\0\23\21"+ - "\1\0\1\21\2\0\1\21\4\0\1\20\6\21\1\0"+ - "\2\20\11\21\3\0\3\21\1\337\3\21\21\0\2\20"+ - "\1\0\23\21\1\0\1\21\2\0\1\21\4\0\1\20"+ - "\6\21\1\0\2\20\1\21\1\340\7\21\3\0\7\21"+ - "\21\0\2\20\1\0\23\21\1\0\1\21\2\0\1\21"+ - "\4\0\1\20\6\21\1\0\2\20\11\21\3\0\7\21"+ - "\21\0\2\20\1\0\11\21\1\341\11\21\1\0\1\21"+ - "\2\0\1\21\4\0\1\20\6\21\1\0\2\20\3\21"+ - "\1\342\5\21\3\0\7\21\21\0\2\20\1\0\23\21"+ - "\1\0\1\21\2\0\1\21\4\0\1\20\6\21\1\0"+ - "\2\20\4\21\1\343\4\21\3\0\7\21\21\0\2\20"+ - "\1\0\23\21\1\0\1\21\2\0\1\21\4\0\1\20"+ - "\6\21\1\0\2\20\11\21\3\0\5\21\1\344\1\21"+ - "\21\0\2\20\1\0\23\21\1\0\1\21\2\0\1\21"+ - "\4\0\1\20\6\21\1\0\2\20\7\21\1\212\1\21"+ - "\3\0\7\21\21\0\2\20\1\0\23\21\1\0\1\21"+ - "\2\0\1\21\4\0\1\20\6\21\1\0\2\20\1\21"+ - "\1\244\7\21\3\0\7\21\21\0\2\20\1\0\23\21"+ - "\1\0\1\21\2\0\1\21\4\0\1\20\6\21\1\0"+ - "\2\20\5\21\1\345\3\21\3\0\7\21\21\0\2\20"+ - "\1\0\23\21\1\0\1\21\2\0\1\21\4\0\1\20"+ - "\6\21\1\0\2\20\11\21\3\0\7\21\21\0\2\20"+ - "\1\0\1\212\22\21\1\0\1\21\2\0\1\21\5\0"+ - "\6\220\3\0\11\220\3\0\7\220\24\0\23\220\1\0"+ - "\1\220\2\0\1\220\44\0\1\53\115\0\1\223\2\0"+ - "\1\224\2\0\1\225\1\0\1\226\37\0\1\227\1\230"+ - "\54\0\1\53\66\0\1\346\7\0\1\347\51\0\1\350"+ - "\1\351\3\0\1\352\1\0\1\20\6\233\1\0\2\20"+ - "\11\233\3\0\7\233\21\0\2\20\1\0\23\233\1\0"+ - "\1\233\2\0\1\233\7\0\1\235\14\0\2\235\6\0"+ - "\1\235\1\0\1\235\31\0\2\235\6\0\1\235\4\0"+ - "\1\235\1\0\1\235\11\0\1\20\1\233\3\20\1\233"+ - "\1\20\1\0\2\20\11\233\3\0\7\233\21\0\2\20"+ - "\1\0\23\233\1\0\1\233\2\0\1\233\4\0\1\20"+ - "\6\21\1\0\2\20\11\21\3\0\7\21\21\0\2\20"+ - "\1\0\2\21\1\353\20\21\1\0\1\21\2\0\1\21"+ - "\4\0\1\20\6\21\1\0\2\20\11\21\3\0\7\21"+ - "\21\0\2\20\1\0\11\21\1\354\11\21\1\0\1\21"+ - "\2\0\1\21\4\0\1\20\6\21\1\0\2\20\1\21"+ - "\1\355\7\21\3\0\7\21\21\0\2\20\1\0\23\21"+ - "\1\0\1\21\2\0\1\21\4\0\1\20\6\21\1\0"+ - "\2\20\2\21\1\356\6\21\3\0\7\21\21\0\2\20"+ - "\1\0\23\21\1\0\1\21\2\0\1\21\4\0\1\20"+ - "\6\21\1\0\2\20\4\21\1\357\4\21\3\0\7\21"+ - "\21\0\2\20\1\0\23\21\1\0\1\21\2\0\1\21"+ - "\4\0\1\20\6\21\1\0\2\20\2\21\1\360\6\21"+ - "\3\0\7\21\21\0\2\20\1\0\23\21\1\0\1\21"+ - "\2\0\1\21\4\0\1\20\6\21\1\0\2\20\1\21"+ - "\1\361\5\21\1\362\1\363\3\0\7\21\21\0\2\20"+ - "\1\0\23\21\1\0\1\21\2\0\1\21\4\0\1\20"+ - "\6\21\1\0\2\20\6\21\1\364\2\21\3\0\7\21"+ - "\21\0\2\20\1\0\23\21\1\0\1\21\2\0\1\21"+ - "\4\0\1\20\6\21\1\0\2\20\11\21\3\0\7\21"+ - "\21\0\2\20\1\0\11\21\1\365\11\21\1\0\1\21"+ - "\2\0\1\21\4\0\1\20\6\21\1\0\2\20\11\21"+ - "\3\0\4\21\1\366\2\21\21\0\2\20\1\0\23\21"+ - "\1\0\1\21\2\0\1\21\4\0\1\20\6\21\1\0"+ - "\2\20\4\21\1\367\4\21\3\0\7\21\21\0\2\20"+ - "\1\0\23\21\1\0\1\21\2\0\1\21\4\0\1\20"+ - "\6\21\1\0\2\20\11\21\3\0\2\21\1\370\4\21"+ - "\21\0\2\20\1\0\11\21\1\311\11\21\1\0\1\21"+ - "\2\0\1\21\4\0\1\20\6\21\1\0\2\20\1\21"+ - "\1\371\7\21\3\0\7\21\21\0\2\20\1\0\23\21"+ - "\1\0\1\21\2\0\1\21\4\0\1\20\6\21\1\0"+ - "\2\20\4\21\1\274\4\21\3\0\2\21\1\372\4\21"+ - "\21\0\2\20\1\0\23\21\1\0\1\21\2\0\1\21"+ - "\4\0\11\131\1\0\11\131\1\0\40\131\1\373\41\131"+ - "\1\0\11\131\1\0\45\131\1\373\23\131\31\0\1\374"+ - "\63\0\2\20\3\264\1\20\1\264\1\0\2\20\1\375"+ - "\10\20\3\0\7\20\21\0\2\20\1\0\23\20\1\0"+ - "\1\20\2\0\1\20\6\0\3\376\1\0\1\376\106\0"+ - "\3\20\2\266\2\20\1\0\2\20\1\377\10\20\3\0"+ - "\7\20\21\0\2\20\1\0\23\20\1\0\1\20\2\0"+ - "\1\20\4\0\2\20\3\267\1\20\1\267\1\0\2\20"+ - "\1\u0100\10\20\3\0\7\20\21\0\2\20\1\0\23\20"+ - "\1\0\1\20\2\0\1\20\4\0\1\20\1\u0101\5\270"+ - "\1\0\2\20\4\u0101\3\270\2\u0101\3\0\1\270\3\u0101"+ - "\1\270\1\u0101\1\270\21\0\2\20\1\0\2\270\1\u0101"+ - "\1\270\2\u0101\1\270\6\u0101\1\270\5\u0101\1\0\1\u0101"+ - "\2\0\1\u0101\4\0\1\20\6\21\1\0\2\20\4\21"+ - "\1\u0102\4\21\3\0\7\21\21\0\2\20\1\0\23\21"+ - "\1\0\1\21\2\0\1\21\4\0\1\20\6\21\1\0"+ - "\2\20\11\21\3\0\7\21\21\0\2\20\1\0\15\21"+ - "\1\u0103\2\21\1\u0104\2\21\1\0\1\21\2\0\1\21"+ - "\4\0\1\20\6\21\1\0\2\20\1\21\1\u0104\7\21"+ - "\3\0\7\21\21\0\2\20\1\0\23\21\1\0\1\21"+ - "\2\0\1\21\4\0\1\20\6\21\1\0\2\20\11\21"+ - "\3\0\3\21\1\212\3\21\21\0\2\20\1\0\23\21"+ - "\1\0\1\21\2\0\1\21\4\0\1\20\6\21\1\0"+ - "\2\20\2\21\1\u0105\1\u0106\5\21\3\0\7\21\21\0"+ - "\2\20\1\0\23\21\1\0\1\21\2\0\1\21\4\0"+ - "\1\20\6\21\1\0\2\20\11\21\3\0\4\21\1\u0107"+ - "\2\21\21\0\2\20\1\0\23\21\1\0\1\21\2\0"+ - "\1\21\4\0\1\20\6\21\1\0\2\20\11\21\3\0"+ - "\7\21\21\0\2\20\1\0\15\21\1\u0108\5\21\1\0"+ - "\1\21\2\0\1\21\4\0\1\20\6\21\1\0\2\20"+ - "\11\21\3\0\7\21\21\0\2\20\1\0\11\21\1\212"+ - "\11\21\1\0\1\21\2\0\1\21\4\0\1\20\6\21"+ - "\1\0\2\20\3\21\1\u0109\5\21\3\0\7\21\21\0"+ - "\2\20\1\0\23\21\1\0\1\21\2\0\1\21\4\0"+ - "\1\20\6\21\1\0\2\20\10\21\1\u010a\3\0\7\21"+ - "\21\0\2\20\1\0\23\21\1\0\1\21\2\0\1\21"+ - "\4\0\1\20\6\21\1\0\2\20\11\21\3\0\4\21"+ - "\1\u0104\2\21\21\0\2\20\1\0\23\21\1\0\1\21"+ - "\2\0\1\21\4\0\1\20\6\21\1\0\2\20\2\21"+ - "\1\u010b\6\21\3\0\2\21\1\214\4\21\21\0\2\20"+ - "\1\0\23\21\1\0\1\21\2\0\1\21\4\0\1\20"+ - "\6\21\1\0\2\20\4\21\1\364\4\21\3\0\7\21"+ - "\21\0\2\20\1\0\23\21\1\0\1\21\2\0\1\21"+ - "\4\0\1\20\6\21\1\0\2\20\4\21\1\u010c\4\21"+ - "\3\0\7\21\21\0\2\20\1\0\23\21\1\0\1\21"+ - "\2\0\1\21\4\0\1\20\6\21\1\0\2\20\4\21"+ - "\1\212\4\21\3\0\2\21\1\u010c\4\21\21\0\2\20"+ - "\1\0\23\21\1\0\1\21\2\0\1\21\4\0\1\20"+ - "\6\21\1\0\2\20\3\21\1\u010d\5\21\3\0\7\21"+ - "\21\0\2\20\1\0\23\21\1\0\1\21\2\0\1\21"+ - "\4\0\1\20\6\21\1\0\2\20\11\21\3\0\7\21"+ - "\21\0\2\20\1\0\15\21\1\u0104\5\21\1\0\1\21"+ - "\2\0\1\21\4\0\1\20\6\21\1\0\2\20\1\21"+ - "\1\325\7\21\3\0\7\21\21\0\2\20\1\0\23\21"+ - "\1\0\1\21\2\0\1\21\4\0\1\20\6\21\1\0"+ - "\2\20\7\21\1\u0104\1\21\3\0\7\21\21\0\2\20"+ - "\1\0\23\21\1\0\1\21\2\0\1\21\4\0\1\20"+ - "\6\21\1\0\2\20\10\21\1\271\3\0\7\21\21\0"+ - "\2\20\1\0\23\21\1\0\1\21\2\0\1\21\4\0"+ - "\1\20\6\21\1\0\2\20\11\21\3\0\7\21\21\0"+ - "\2\20\1\0\14\21\1\u0104\1\21\1\354\4\21\1\0"+ - "\1\21\2\0\1\21\4\0\1\20\6\21\1\0\2\20"+ - "\4\21\1\u010e\4\21\3\0\7\21\21\0\2\20\1\0"+ - "\23\21\1\0\1\21\2\0\1\21\4\0\1\20\6\21"+ - "\1\0\2\20\11\21\3\0\7\21\21\0\2\20\1\0"+ - "\11\21\1\u010f\11\21\1\0\1\21\2\0\1\21\4\0"+ - "\1\20\6\21\1\0\2\20\6\21\1\u0110\2\21\3\0"+ - "\7\21\21\0\2\20\1\0\23\21\1\0\1\21\2\0"+ - "\1\21\4\0\1\20\6\21\1\0\2\20\11\21\3\0"+ - "\1\u0111\6\21\21\0\2\20\1\0\23\21\1\0\1\21"+ - "\2\0\1\21\4\0\1\20\6\21\1\0\2\20\11\21"+ - "\3\0\7\21\21\0\2\20\1\0\20\21\1\u0104\2\21"+ - "\1\0\1\21\2\0\1\21\4\0\1\20\6\21\1\0"+ - "\2\20\6\21\1\u0112\2\21\3\0\7\21\21\0\2\20"+ - "\1\0\23\21\1\0\1\21\2\0\1\21\4\0\1\20"+ - "\6\21\1\0\2\20\11\21\3\0\3\21\1\303\3\21"+ - "\21\0\2\20\1\0\23\21\1\0\1\21\2\0\1\21"+ - "\4\0\1\20\6\21\1\0\2\20\11\21\3\0\7\21"+ - "\7\0\1\u0113\11\0\2\20\1\0\23\21\1\0\1\21"+ - "\2\0\1\21\4\0\1\20\6\21\1\0\2\20\4\21"+ - "\1\u0114\4\21\3\0\7\21\21\0\2\20\1\0\23\21"+ - "\1\0\1\21\2\0\1\21\4\0\1\20\6\21\1\0"+ - "\2\20\4\21\1\u0115\1\212\3\21\3\0\7\21\21\0"+ - "\2\20\1\0\23\21\1\0\1\21\2\0\1\21\4\0"+ - "\1\20\6\21\1\0\2\20\4\21\1\322\4\21\3\0"+ - "\7\21\21\0\2\20\1\0\23\21\1\0\1\21\2\0"+ - "\1\21\4\0\1\20\6\21\1\0\2\20\1\21\1\u0116"+ - "\7\21\3\0\7\21\21\0\2\20\1\0\15\21\1\u0117"+ - "\5\21\1\0\1\21\2\0\1\21\4\0\1\20\6\21"+ - "\1\0\2\20\11\21\3\0\2\21\1\u0118\4\21\21\0"+ - "\2\20\1\0\23\21\1\0\1\21\2\0\1\21\4\0"+ - "\1\20\6\21\1\0\2\20\11\21\3\0\2\21\1\273"+ - "\4\21\21\0\2\20\1\0\23\21\1\0\1\21\2\0"+ - "\1\21\33\0\1\u0119\65\0\1\20\6\21\1\0\2\20"+ - "\6\21\1\u011a\2\21\3\0\7\21\21\0\2\20\1\0"+ - "\23\21\1\0\1\21\2\0\1\21\4\0\1\20\6\21"+ - "\1\0\2\20\11\21\3\0\2\21\1\274\4\21\21\0"+ - "\2\20\1\0\23\21\1\0\1\21\2\0\1\21\4\0"+ - "\1\20\6\21\1\0\2\20\11\21\3\0\4\21\1\360"+ - "\2\21\21\0\2\20\1\0\23\21\1\0\1\21\2\0"+ - "\1\21\4\0\1\20\6\21\1\0\2\20\10\21\1\u0104"+ - "\3\0\7\21\21\0\2\20\1\0\23\21\1\0\1\21"+ - "\2\0\1\21\4\0\1\20\6\21\1\0\2\20\11\21"+ - "\3\0\1\323\6\21\21\0\2\20\1\0\23\21\1\0"+ - "\1\21\2\0\1\21\4\0\1\20\6\21\1\0\2\20"+ - "\11\21\3\0\1\325\6\21\21\0\2\20\1\0\23\21"+ - "\1\0\1\21\2\0\1\21\4\0\1\20\6\21\1\0"+ - "\2\20\2\21\1\u011b\6\21\3\0\7\21\21\0\2\20"+ - "\1\0\23\21\1\0\1\21\2\0\1\21\4\0\1\20"+ - "\6\21\1\0\2\20\1\21\1\212\7\21\3\0\7\21"+ - "\21\0\2\20\1\0\23\21\1\0\1\21\2\0\1\21"+ - "\4\0\1\20\6\21\1\0\2\20\11\21\3\0\2\21"+ - "\1\u011c\4\21\21\0\2\20\1\0\23\21\1\0\1\21"+ - "\2\0\1\21\30\0\1\346\61\0\1\350\1\351\3\0"+ - "\1\352\71\0\1\u011d\60\0\1\u011e\114\0\1\u011f\114\0"+ - "\1\u0120\60\0\1\20\6\21\1\0\2\20\11\21\3\0"+ - "\7\21\21\0\2\20\1\0\4\21\1\u0121\16\21\1\0"+ - "\1\21\2\0\1\21\4\0\1\20\6\21\1\0\2\20"+ - "\6\21\1\273\2\21\3\0\7\21\21\0\2\20\1\0"+ - "\23\21\1\0\1\21\2\0\1\21\4\0\1\20\6\21"+ - "\1\0\2\20\4\21\1\u0122\4\21\3\0\7\21\21\0"+ - "\2\20\1\0\23\21\1\0\1\21\2\0\1\21\4\0"+ - "\1\20\6\21\1\0\2\20\6\21\1\u0123\2\21\3\0"+ - "\7\21\21\0\2\20\1\0\23\21\1\0\1\21\2\0"+ - "\1\21\4\0\1\20\6\21\1\0\2\20\11\21\3\0"+ - "\3\21\1\u0104\3\21\21\0\2\20\1\0\23\21\1\0"+ - "\1\21\2\0\1\21\4\0\1\20\6\21\1\0\2\20"+ - "\11\21\3\0\2\21\1\u0124\4\21\21\0\2\20\1\0"+ - "\23\21\1\0\1\21\2\0\1\21\4\0\1\20\6\21"+ - "\1\0\2\20\11\21\3\0\7\21\21\0\2\20\1\0"+ - "\15\21\1\u0125\5\21\1\0\1\21\2\0\1\21\4\0"+ - "\1\20\6\21\1\0\2\20\7\21\1\u0126\1\21\3\0"+ - "\7\21\21\0\2\20\1\0\23\21\1\0\1\21\2\0"+ - "\1\21\4\0\1\20\6\21\1\0\2\20\4\21\1\212"+ - "\4\21\3\0\7\21\21\0\2\20\1\0\23\21\1\0"+ - "\1\21\2\0\1\21\4\0\1\20\6\21\1\0\2\20"+ - "\10\21\1\u0110\3\0\7\21\21\0\2\20\1\0\23\21"+ - "\1\0\1\21\2\0\1\21\4\0\1\20\6\21\1\0"+ - "\2\20\11\21\3\0\7\21\21\0\2\20\1\0\16\21"+ - "\1\u0127\1\21\1\325\2\21\1\0\1\21\2\0\1\21"+ - "\4\0\1\20\6\21\1\0\2\20\3\21\1\372\5\21"+ - "\3\0\7\21\21\0\2\20\1\0\23\21\1\0\1\21"+ - "\2\0\1\21\4\0\1\20\6\21\1\0\2\20\7\21"+ - "\1\u0128\1\21\3\0\7\21\21\0\2\20\1\0\23\21"+ - "\1\0\1\21\2\0\1\21\4\0\1\20\6\21\1\0"+ - "\2\20\11\21\3\0\3\21\1\u0129\3\21\21\0\2\20"+ - "\1\0\23\21\1\0\1\21\2\0\1\21\4\0\1\20"+ - "\6\21\1\0\2\20\10\21\1\u0104\3\0\7\21\21\0"+ - "\2\20\1\0\15\21\1\u0104\5\21\1\0\1\21\2\0"+ - "\1\21\4\0\1\20\6\21\1\0\2\20\7\21\1\363"+ - "\1\21\3\0\7\21\21\0\2\20\1\0\23\21\1\0"+ - "\1\21\2\0\1\21\36\0\1\u012a\64\0\3\376\1\0"+ - "\1\376\3\0\1\u012b\102\0\1\20\6\21\1\0\2\20"+ - "\4\21\1\u012c\4\21\3\0\7\21\21\0\2\20\1\0"+ - "\23\21\1\0\1\21\2\0\1\21\4\0\1\20\6\21"+ - "\1\0\2\20\11\21\3\0\7\21\21\0\2\20\1\0"+ - "\17\21\1\212\3\21\1\0\1\21\2\0\1\21\4\0"+ - "\1\20\6\21\1\0\2\20\2\21\1\274\6\21\3\0"+ - "\7\21\21\0\2\20\1\0\23\21\1\0\1\21\2\0"+ - "\1\21\4\0\1\20\6\21\1\0\2\20\7\21\1\u012d"+ - "\1\21\3\0\7\21\21\0\2\20\1\0\23\21\1\0"+ - "\1\21\2\0\1\21\4\0\1\20\6\21\1\0\2\20"+ - "\3\21\1\363\5\21\3\0\7\21\21\0\2\20\1\0"+ - "\23\21\1\0\1\21\2\0\1\21\4\0\1\20\6\21"+ - "\1\0\2\20\11\21\3\0\2\21\1\u012e\4\21\21\0"+ - "\2\20\1\0\23\21\1\0\1\21\2\0\1\21\4\0"+ - "\1\20\6\21\1\0\2\20\4\21\1\u0104\4\21\3\0"+ - "\7\21\21\0\2\20\1\0\23\21\1\0\1\21\2\0"+ - "\1\21\4\0\1\20\6\21\1\0\2\20\6\21\1\u012f"+ - "\2\21\3\0\7\21\21\0\2\20\1\0\23\21\1\0"+ - "\1\21\2\0\1\21\4\0\1\20\6\21\1\0\2\20"+ - "\5\21\1\212\3\21\3\0\7\21\21\0\2\20\1\0"+ - "\23\21\1\0\1\21\2\0\1\21\4\0\1\20\6\21"+ - "\1\0\2\20\2\21\1\363\6\21\3\0\7\21\21\0"+ - "\2\20\1\0\23\21\1\0\1\21\2\0\1\21\4\0"+ - "\1\20\6\21\1\0\2\20\11\21\3\0\5\21\1\333"+ - "\1\21\21\0\2\20\1\0\23\21\1\0\1\21\2\0"+ - "\1\21\4\0\1\20\6\21\1\0\2\20\7\21\1\u0130"+ - "\1\21\3\0\7\21\21\0\2\20\1\0\23\21\1\0"+ - "\1\21\2\0\1\21\4\0\1\20\6\21\1\0\2\20"+ - "\10\21\1\212\3\0\7\21\21\0\2\20\1\0\23\21"+ - "\1\0\1\21\2\0\1\21\4\0\1\20\6\21\1\0"+ - "\2\20\11\21\3\0\4\21\1\u0131\2\21\21\0\2\20"+ - "\1\0\23\21\1\0\1\21\2\0\1\21\4\0\1\20"+ - "\6\21\1\0\2\20\7\21\1\u0132\1\21\3\0\7\21"+ - "\21\0\2\20\1\0\23\21\1\0\1\21\2\0\1\21"+ - "\4\0\1\20\6\21\1\0\2\20\2\21\1\212\6\21"+ - "\3\0\7\21\21\0\2\20\1\0\23\21\1\0\1\21"+ - "\2\0\1\21\4\0\1\20\6\21\1\0\2\20\11\21"+ - "\3\0\7\21\21\0\2\20\1\0\15\21\1\273\5\21"+ - "\1\0\1\21\2\0\1\21\4\0\1\20\6\21\1\0"+ - "\2\20\4\21\1\u0133\4\21\3\0\7\21\21\0\2\20"+ - "\1\0\23\21\1\0\1\21\2\0\1\21\4\0\1\20"+ - "\6\21\1\0\2\20\6\21\1\u0134\2\21\3\0\7\21"+ - "\21\0\2\20\1\0\23\21\1\0\1\21\2\0\1\21"+ - "\4\0\1\20\6\21\1\0\2\20\11\21\3\0\3\21"+ - "\1\u0135\3\21\21\0\2\20\1\0\23\21\1\0\1\21"+ - "\2\0\1\21\34\0\1\u0136\64\0\1\20\6\21\1\0"+ - "\2\20\11\21\3\0\7\21\21\0\2\20\1\0\14\21"+ - "\1\212\6\21\1\0\1\21\2\0\1\21\4\0\1\20"+ - "\6\21\1\0\2\20\6\21\1\u0137\2\21\3\0\7\21"+ - "\21\0\2\20\1\0\23\21\1\0\1\21\2\0\1\21"+ - "\4\0\1\20\6\21\1\0\2\20\11\21\3\0\3\21"+ - "\1\u0138\3\21\21\0\2\20\1\0\23\21\1\0\1\21"+ - "\2\0\1\21\70\0\1\u0139\4\0\1\u013a\113\0\1\u013b"+ - "\114\0\1\u013c\114\0\1\u013d\24\0\1\20\6\21\1\0"+ - "\2\20\11\21\3\0\7\21\21\0\2\20\1\0\5\21"+ - "\1\212\15\21\1\0\1\21\2\0\1\21\4\0\1\20"+ - "\6\21\1\0\2\20\11\21\3\0\1\21\1\u0126\5\21"+ - "\21\0\2\20\1\0\23\21\1\0\1\21\2\0\1\21"+ - "\4\0\1\20\6\21\1\0\2\20\11\21\3\0\7\21"+ - "\21\0\2\20\1\0\17\21\1\u0104\3\21\1\0\1\21"+ - "\2\0\1\21\4\0\1\20\6\21\1\0\2\20\11\21"+ - "\3\0\3\21\1\u013e\3\21\21\0\2\20\1\0\23\21"+ - "\1\0\1\21\2\0\1\21\4\0\1\20\6\21\1\0"+ - "\2\20\11\21\3\0\7\21\21\0\2\20\1\0\21\21"+ - "\1\u0104\1\21\1\0\1\21\2\0\1\21\4\0\1\20"+ - "\6\21\1\0\2\20\4\21\1\u013f\4\21\3\0\7\21"+ - "\21\0\2\20\1\0\23\21\1\0\1\21\2\0\1\21"+ - "\4\0\1\20\6\21\1\0\2\20\11\21\3\0\7\21"+ - "\21\0\2\20\1\0\20\21\1\325\2\21\1\0\1\21"+ - "\2\0\1\21\4\0\1\20\6\21\1\0\2\20\11\21"+ - "\3\0\4\21\1\212\2\21\21\0\2\20\1\0\23\21"+ - "\1\0\1\21\2\0\1\21\4\0\1\20\6\21\1\0"+ - "\2\20\1\21\1\u0140\7\21\3\0\7\21\21\0\2\20"+ - "\1\0\23\21\1\0\1\21\2\0\1\21\4\0\1\20"+ - "\6\21\1\0\2\20\1\u0141\10\21\3\0\7\21\21\0"+ - "\2\20\1\0\23\21\1\0\1\21\2\0\1\21\4\0"+ - "\1\20\6\21\1\0\2\20\11\21\3\0\2\21\1\u0142"+ - "\4\21\21\0\2\20\1\0\23\21\1\0\1\21\2\0"+ - "\1\21\4\0\1\20\6\21\1\0\2\20\2\21\1\u010a"+ - "\6\21\3\0\7\21\21\0\2\20\1\0\23\21\1\0"+ - "\1\21\2\0\1\21\4\0\1\20\6\21\1\0\2\20"+ - "\11\21\3\0\7\21\21\0\2\20\1\0\15\21\1\u0103"+ - "\5\21\1\0\1\21\2\0\1\21\4\0\1\20\6\21"+ - "\1\0\2\20\11\21\3\0\7\21\21\0\2\20\1\0"+ - "\11\21\1\u0143\11\21\1\0\1\21\2\0\1\21\4\0"+ - "\1\20\6\21\1\0\2\20\6\21\1\u0104\2\21\3\0"+ - "\7\21\21\0\2\20\1\0\23\21\1\0\1\21\2\0"+ - "\1\21\4\0\1\20\6\21\1\0\2\20\1\u0144\10\21"+ - "\3\0\7\21\21\0\2\20\1\0\23\21\1\0\1\21"+ - "\2\0\1\21\4\0\1\20\6\21\1\0\2\20\11\21"+ - "\3\0\7\21\21\0\2\20\1\0\16\21\1\u0104\4\21"+ - "\1\0\1\21\2\0\1\21\4\0\1\20\6\21\1\0"+ - "\2\20\7\21\1\313\1\21\3\0\7\21\21\0\2\20"+ - "\1\0\23\21\1\0\1\21\2\0\1\21\4\0\1\20"+ - "\6\21\1\0\2\20\1\21\1\u0145\7\21\3\0\7\21"+ - "\21\0\2\20\1\0\23\21\1\0\1\21\2\0\1\21"+ - "\35\0\1\u0146\63\0\1\20\6\21\1\0\2\20\1\21"+ - "\1\u0147\7\21\3\0\7\21\21\0\2\20\1\0\23\21"+ - "\1\0\1\21\2\0\1\21\4\0\1\20\6\21\1\0"+ - "\2\20\4\21\1\u0128\4\21\3\0\7\21\21\0\2\20"+ - "\1\0\23\21\1\0\1\21\2\0\1\21\70\0\1\u0148"+ - "\4\0\1\u0149\107\0\1\u014a\4\0\1\u014b\107\0\1\u014c"+ - "\4\0\1\u014d\23\0\1\20\6\21\1\0\2\20\11\21"+ - "\3\0\1\21\1\u0104\5\21\21\0\2\20\1\0\23\21"+ - "\1\0\1\21\2\0\1\21\4\0\1\20\6\21\1\0"+ - "\2\20\2\21\1\u0104\6\21\3\0\7\21\21\0\2\20"+ - "\1\0\23\21\1\0\1\21\2\0\1\21\4\0\1\20"+ - "\6\21\1\0\2\20\5\21\1\u0104\3\21\3\0\7\21"+ - "\21\0\2\20\1\0\23\21\1\0\1\21\2\0\1\21"+ - "\4\0\1\20\6\21\1\0\2\20\11\21\3\0\7\21"+ - "\21\0\2\20\1\0\13\21\1\u014e\7\21\1\0\1\21"+ - "\2\0\1\21\4\0\1\20\6\21\1\0\2\20\11\21"+ - "\3\0\3\21\1\u014f\3\21\21\0\2\20\1\0\23\21"+ - "\1\0\1\21\2\0\1\21\4\0\1\20\6\21\1\0"+ - "\2\20\6\21\1\303\2\21\3\0\7\21\21\0\2\20"+ - "\1\0\23\21\1\0\1\21\2\0\1\21\4\0\1\20"+ - "\6\21\1\0\2\20\11\21\3\0\7\21\21\0\2\20"+ - "\1\0\13\21\1\u0150\7\21\1\0\1\21\2\0\1\21"+ - "\4\0\1\20\6\21\1\0\2\20\11\21\3\0\7\21"+ - "\21\0\2\20\1\0\11\21\1\u0151\11\21\1\0\1\21"+ - "\2\0\1\21\112\0\1\u0139\114\0\1\u013a\115\0\1\u0152"+ - "\114\0\1\u0153\120\0\1\u0139\114\0\1\u013a\1\0\1\20"+ - "\6\21\1\0\2\20\6\21\1\u013f\2\21\3\0\7\21"+ - "\21\0\2\20\1\0\23\21\1\0\1\21\2\0\1\21"+ - "\4\0\1\20\6\21\1\0\2\20\4\21\1\u0154\4\21"+ - "\3\0\7\21\21\0\2\20\1\0\23\21\1\0\1\21"+ - "\2\0\1\21\4\0\1\20\6\21\1\0\2\20\6\21"+ - "\1\u0155\2\21\3\0\7\21\21\0\2\20\1\0\23\21"+ - "\1\0\1\21\2\0\1\21\4\0\1\20\6\21\1\0"+ - "\2\20\2\21\1\u0156\6\21\3\0\7\21\21\0\2\20"+ - "\1\0\23\21\1\0\1\21\2\0\1\21\4\0\1\20"+ - "\6\21\1\0\2\20\2\21\1\u0157\6\21\3\0\7\21"+ - "\21\0\2\20\1\0\23\21\1\0\1\21\2\0\1\21"+ - "\4\0\1\20\6\21\1\0\2\20\11\21\3\0\7\21"+ - "\21\0\2\20\1\0\23\21\1\u0113\1\21\2\0\1\21"+ - "\4\0\1\20\6\21\1\0\2\20\11\21\3\0\2\21"+ - "\1\u0158\4\21\21\0\2\20\1\0\23\21\1\0\1\21"+ - "\2\0\1\21\4\0\1\20\6\21\1\0\2\20\6\21"+ - "\1\u0159\2\21\3\0\7\21\21\0\2\20\1\0\23\21"+ - "\1\0\1\21\2\0\1\21\4\0\1\20\6\21\1\0"+ - "\2\20\11\21\3\0\1\u015a\6\21\21\0\2\20\1\0"+ - "\23\21\1\0\1\21\2\0\1\21\4\0\1\20\6\21"+ - "\1\0\2\20\7\21\1\u015b\1\21\3\0\7\21\21\0"+ - "\2\20\1\0\23\21\1\0\1\21\2\0\1\21\4\0"+ - "\1\20\6\21\1\0\2\20\4\21\1\340\4\21\3\0"+ - "\7\21\21\0\2\20\1\0\23\21\1\0\1\21\2\0"+ - "\1\21\4\0"; - - private static int [] zzUnpackTrans() { - int [] result = new int[22638]; - int offset = 0; - offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackTrans(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - value--; - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /* error codes */ - private static final int ZZ_UNKNOWN_ERROR = 0; - private static final int ZZ_NO_MATCH = 1; - private static final int ZZ_PUSHBACK_2BIG = 2; - - /* error messages for the codes above */ - private static final String ZZ_ERROR_MSG[] = { - "Unkown internal scanner error", - "Error: could not match input", - "Error: pushback value was too large" - }; - - /** - * ZZ_ATTRIBUTE[aState] contains the attributes of state aState - */ - private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); - - private static final String ZZ_ATTRIBUTE_PACKED_0 = - "\17\0\4\1\1\11\11\1\1\11\11\1\1\11\2\1"+ - "\1\11\23\1\3\11\2\1\2\11\1\1\1\11\1\1"+ - "\1\11\1\1\1\11\1\1\1\11\1\1\1\11\1\1"+ - "\1\11\2\1\2\11\1\1\2\11\1\1\1\11\1\1"+ - "\2\11\1\1\1\11\1\1\1\11\40\1\1\0\17\1"+ - "\1\0\6\11\4\1\1\11\1\0\20\1\2\11\2\1"+ - "\1\0\50\1\1\0\11\1\5\0\21\1\1\0\26\1"+ - "\1\11\5\1\1\0\3\1\4\0\11\1\1\11\1\0"+ - "\12\1\1\0\2\1\2\11\3\0\10\1\1\11\1\1"+ - "\6\0\4\1\2\11\10\1"; - - private static int [] zzUnpackAttribute() { - int [] result = new int[347]; - int offset = 0; - offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAttribute(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - /** the input device */ - private java.io.Reader zzReader; - - /** the current state of the DFA */ - private int zzState; - - /** the current lexical state */ - private int zzLexicalState = YYINITIAL; - - /** this buffer contains the current text to be matched and is - the source of the yytext() string */ - private char zzBuffer[]; - - /** the textposition at the last accepting state */ - private int zzMarkedPos; - - /** the current text position in the buffer */ - private int zzCurrentPos; - - /** startRead marks the beginning of the yytext() string in the buffer */ - private int zzStartRead; - - /** endRead marks the last character in the buffer, that has been read - from input */ - private int zzEndRead; - - /** zzAtEOF == true <=> the scanner is at the EOF */ - private boolean zzAtEOF; - - /* user code: */ - - /** - * Token type specific to RubyTokenMaker; this signals that we are inside - * an unquoted/double quoted/backtick EOF heredoc. - */ - public static final int INTERNAL_HEREDOC_EOF_UNQUOTED = -1; - - /** - * Token type specific to RubyTokenMaker; this signals that we are inside - * an single quoted EOF heredoc. - */ - public static final int INTERNAL_HEREDOC_EOF_SINGLE_QUOTED = -2; - - /** - * Token type specific to RubyTokenMaker; this signals that we are inside - * an double quoted EOF heredoc. - */ - public static final int INTERNAL_HEREDOC_EOF_DOUBLE_QUOTED = -3; - - /** - * Token type specific to RubyTokenMaker; this signals that we are inside - * an unquoted/double quoted/backtick EOT heredoc. - */ - public static final int INTERNAL_HEREDOC_EOT_UNQUOTED = -4; - - /** - * Token type specific to RubyTokenMaker; this signals that we are inside - * an single quoted EOT heredoc. - */ - public static final int INTERNAL_HEREDOC_EOT_SINGLE_QUOTED = -5; - - /** - * Token type specific to RubyTokenMaker; this signals that we are inside - * an double quoted EOT heredoc. - */ - public static final int INTERNAL_HEREDOC_EOT_DOUBLE_QUOTED = -6; - - /** - * Token type specific to RubyTokenMaker; this signals that we are inside - * a %Q!...! style double quoted string. - */ - public static final int INTERNAL_STRING_Q_BANG = -7; - - /** - * Token type specific to RubyTokenMaker; this signals that we are inside - * a %Q{...} style double quoted string. - */ - public static final int INTERNAL_STRING_Q_CURLY_BRACE = -8; - - /** - * Token type specific to RubyTokenMaker; this signals that we are inside - * a %Q<...> style double quoted string. - */ - public static final int INTERNAL_STRING_Q_LT = -9; - - - /** - * Token type specific to RubyTokenMaker; this signals that we are inside - * a %Q(...) style double quoted string. - */ - public static final int INTERNAL_STRING_Q_PAREN = -10; - - - /** - * Token type specific to RubyTokenMaker; this signals that we are inside - * a %Q/.../ style double quoted string. - */ - public static final int INTERNAL_STRING_Q_SLASH = -11; - - /** - * Token type specific to RubyTokenMaker; this signals that we are inside - * a %Q[...] style double quoted string. - */ - public static final int INTERNAL_STRING_Q_SQUARE_BRACKET = -12; - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public RubyTokenMaker() { - } - - - /** - * Adds the token specified to the current linked list of tokens as an - * "end token;" that is, at zzMarkedPos. - * - * @param tokenType The token's type. - */ - private void addEndToken(int tokenType) { - addToken(zzMarkedPos,zzMarkedPos, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, int startOffset) { - super.addToken(array, start,end, tokenType, startOffset); - zzStartRead = zzMarkedPos; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { "#", null }; - } - - - /** - * Returns whether tokens of the specified type should have "mark - * occurrences" enabled for the current programming language. - * - * @param type The token type. - * @return Whether tokens of this type should have "mark occurrences" - * enabled. - */ - @Override - public boolean getMarkOccurrencesOfTokenType(int type) { - return type==Token.IDENTIFIER || type==Token.VARIABLE; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - - // Start off in the proper state. - int state = Token.NULL; - switch (initialTokenType) { - case Token.COMMENT_DOCUMENTATION: - state = DOCCOMMENT; - start = text.offset; - break; - case Token.LITERAL_STRING_DOUBLE_QUOTE: - state = STRING; - start = text.offset; - break; - case Token.LITERAL_CHAR: - state = CHAR_LITERAL; - start = text.offset; - break; - case Token.LITERAL_BACKQUOTE: - state = BACKTICKS; - start = text.offset; - break; - case INTERNAL_HEREDOC_EOF_UNQUOTED: - state = HEREDOC_EOF_UNQUOTED; - start = text.offset; - break; - case INTERNAL_HEREDOC_EOF_SINGLE_QUOTED: - state = HEREDOC_EOF_SINGLE_QUOTED; - start = text.offset; - break; - case INTERNAL_HEREDOC_EOF_DOUBLE_QUOTED: - state = HEREDOC_EOF_DOUBLE_QUOTED; - start = text.offset; - break; - case INTERNAL_HEREDOC_EOT_UNQUOTED: - state = HEREDOC_EOT_UNQUOTED; - start = text.offset; - break; - case INTERNAL_HEREDOC_EOT_SINGLE_QUOTED: - state = HEREDOC_EOT_SINGLE_QUOTED; - start = text.offset; - break; - case INTERNAL_HEREDOC_EOT_DOUBLE_QUOTED: - state = HEREDOC_EOT_DOUBLE_QUOTED; - start = text.offset; - break; - case INTERNAL_STRING_Q_BANG: - state = STRING_Q_BANG; - start = text.offset; - break; - case INTERNAL_STRING_Q_CURLY_BRACE: - state = STRING_Q_CURLY_BRACE; - start = text.offset; - break; - case INTERNAL_STRING_Q_LT: - state = STRING_Q_LT; - start = text.offset; - break; - case INTERNAL_STRING_Q_PAREN: - state = STRING_Q_PAREN; - start = text.offset; - break; - case INTERNAL_STRING_Q_SLASH: - state = STRING_Q_SLASH; - start = text.offset; - break; - case INTERNAL_STRING_Q_SQUARE_BRACKET: - state = STRING_Q_SQUARE_BRACKET; - start = text.offset; - break; - default: - state = Token.NULL; - } - - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtEOF = false; - } - - - - - /** - * Creates a new scanner - * There is also a java.io.InputStream version of this constructor. - * - * @param in the java.io.Reader to read input from. - */ - public RubyTokenMaker(java.io.Reader in) { - this.zzReader = in; - } - - /** - * Creates a new scanner. - * There is also java.io.Reader version of this constructor. - * - * @param in the java.io.Inputstream to read input from. - */ - public RubyTokenMaker(java.io.InputStream in) { - this(new java.io.InputStreamReader(in)); - } - - /** - * Unpacks the compressed character translation table. - * - * @param packed the packed character translation table - * @return the unpacked character translation table - */ - private static char [] zzUnpackCMap(String packed) { - char [] map = new char[0x10000]; - int i = 0; /* index in packed string */ - int j = 0; /* index in unpacked array */ - while (i < 188) { - int count = packed.charAt(i++); - char value = packed.charAt(i++); - do map[j++] = value; while (--count > 0); - } - return map; - } - - - /** - * Closes the input stream. - */ - public final void yyclose() throws java.io.IOException { - zzAtEOF = true; /* indicate end of file */ - zzEndRead = zzStartRead; /* invalidate buffer */ - - if (zzReader != null) - zzReader.close(); - } - - - /** - * Returns the current lexical state. - */ - public final int yystate() { - return zzLexicalState; - } - - - /** - * Enters a new lexical state - * - * @param newState the new lexical state - */ - @Override - public final void yybegin(int newState) { - zzLexicalState = newState; - } - - - /** - * Returns the text matched by the current regular expression. - */ - public final String yytext() { - return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead ); - } - - - /** - * Returns the character at position pos from the - * matched text. - * - * It is equivalent to yytext().charAt(pos), but faster - * - * @param pos the position of the character to fetch. - * A value from 0 to yylength()-1. - * - * @return the character at position pos - */ - public final char yycharat(int pos) { - return zzBuffer[zzStartRead+pos]; - } - - - /** - * Returns the length of the matched text region. - */ - public final int yylength() { - return zzMarkedPos-zzStartRead; - } - - - /** - * Reports an error that occured while scanning. - * - * In a wellformed scanner (no or only correct usage of - * yypushback(int) and a match-all fallback rule) this method - * will only be called with things that "Can't Possibly Happen". - * If this method is called, something is seriously wrong - * (e.g. a JFlex bug producing a faulty scanner etc.). - * - * Usual syntax/scanner level error handling should be done - * in error fallback rules. - * - * @param errorCode the code of the errormessage to display - */ - private void zzScanError(int errorCode) { - String message; - try { - message = ZZ_ERROR_MSG[errorCode]; - } - catch (ArrayIndexOutOfBoundsException e) { - message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; - } - - throw new Error(message); - } - - - /** - * Pushes the specified amount of characters back into the input stream. - * - * They will be read again by then next call of the scanning method - * - * @param number the number of characters to be read again. - * This number must not be greater than yylength()! - */ - public void yypushback(int number) { - if ( number > yylength() ) - zzScanError(ZZ_PUSHBACK_2BIG); - - zzMarkedPos -= number; - } - - - /** - * Resumes scanning until the next regular expression is matched, - * the end of input is encountered or an I/O-Error occurs. - * - * @return the next token - * @exception java.io.IOException if any I/O-Error occurs - */ - public org.fife.ui.rsyntaxtextarea.Token yylex() throws java.io.IOException { - int zzInput; - int zzAction; - - // cached fields: - int zzCurrentPosL; - int zzMarkedPosL; - int zzEndReadL = zzEndRead; - char [] zzBufferL = zzBuffer; - char [] zzCMapL = ZZ_CMAP; - - int [] zzTransL = ZZ_TRANS; - int [] zzRowMapL = ZZ_ROWMAP; - int [] zzAttrL = ZZ_ATTRIBUTE; - - while (true) { - zzMarkedPosL = zzMarkedPos; - - zzAction = -1; - - zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; - - zzState = zzLexicalState; - - - zzForAction: { - while (true) { - - if (zzCurrentPosL < zzEndReadL) - zzInput = zzBufferL[zzCurrentPosL++]; - else if (zzAtEOF) { - zzInput = YYEOF; - break zzForAction; - } - else { - // store back cached positions - zzCurrentPos = zzCurrentPosL; - zzMarkedPos = zzMarkedPosL; - boolean eof = zzRefill(); - // get translated positions and possibly new buffer - zzCurrentPosL = zzCurrentPos; - zzMarkedPosL = zzMarkedPos; - zzBufferL = zzBuffer; - zzEndReadL = zzEndRead; - if (eof) { - zzInput = YYEOF; - break zzForAction; - } - else { - zzInput = zzBufferL[zzCurrentPosL++]; - } - } - int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; - if (zzNext == -1) break zzForAction; - zzState = zzNext; - - int zzAttributes = zzAttrL[zzState]; - if ( (zzAttributes & 1) == 1 ) { - zzAction = zzState; - zzMarkedPosL = zzCurrentPosL; - if ( (zzAttributes & 8) == 8 ) break zzForAction; - } - - } - } - - // store back cached position - zzMarkedPos = zzMarkedPosL; - - switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { - case 39: - { start = zzMarkedPos-yylength(); yybegin(STRING_Q_LT); - } - case 52: break; - case 2: - { addToken(Token.IDENTIFIER); - } - case 53: break; - case 45: - { addToken(Token.LITERAL_BOOLEAN); - } - case 54: break; - case 32: - { addToken(start,zzStartRead-1, Token.COMMENT_DOCUMENTATION); return firstToken; - } - case 55: break; - case 19: - { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addEndToken(INTERNAL_STRING_Q_PAREN); return firstToken; - } - case 56: break; - case 18: - { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addEndToken(INTERNAL_STRING_Q_CURLY_BRACE); return firstToken; - } - case 57: break; - case 20: - { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addEndToken(INTERNAL_STRING_Q_SLASH); return firstToken; - } - case 58: break; - case 46: - { yybegin(YYINITIAL); addToken(start,zzStartRead+3, Token.COMMENT_DOCUMENTATION); - } - case 59: break; - case 10: - { start = zzMarkedPos-1; yybegin(STRING); - } - case 60: break; - case 44: - { if (start==zzStartRead) { addToken(Token.PREPROCESSOR); addNullToken(); return firstToken; } - } - case 61: break; - case 9: - { addToken(Token.FUNCTION); - } - case 62: break; - case 22: - { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addEndToken(INTERNAL_STRING_Q_LT); return firstToken; - } - case 63: break; - case 42: - { addToken(Token.VARIABLE); - } - case 64: break; - case 1: - { addToken(Token.ERROR_IDENTIFIER); - } - case 65: break; - case 31: - { addToken(start,zzStartRead-1, Token.PREPROCESSOR); addEndToken(INTERNAL_HEREDOC_EOT_SINGLE_QUOTED); return firstToken; - } - case 66: break; - case 4: - { addToken(Token.COMMENT_EOL); addNullToken(); return firstToken; - } - case 67: break; - case 41: - { start = zzMarkedPos-yylength(); yybegin(STRING_Q_CURLY_BRACE); - } - case 68: break; - case 50: - { start = zzStartRead; yybegin(HEREDOC_EOF_SINGLE_QUOTED); - } - case 69: break; - case 51: - { start = zzStartRead; yybegin(HEREDOC_EOT_SINGLE_QUOTED); - } - case 70: break; - case 47: - { start = zzStartRead; yybegin(HEREDOC_EOF_UNQUOTED); - } - case 71: break; - case 14: - { /* Skip escaped chars. */ - } - case 72: break; - case 25: - { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_CHAR); - } - case 73: break; - case 43: - { addToken(Token.LITERAL_NUMBER_HEXADECIMAL); - } - case 74: break; - case 28: - { addToken(start,zzStartRead-1, Token.PREPROCESSOR); addEndToken(INTERNAL_HEREDOC_EOF_UNQUOTED); return firstToken; - } - case 75: break; - case 6: - { addToken(Token.WHITESPACE); - } - case 76: break; - case 17: - { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addEndToken(INTERNAL_STRING_Q_BANG); return firstToken; - } - case 77: break; - case 35: - { addToken(Token.PREPROCESSOR); - } - case 78: break; - case 11: - { start = zzMarkedPos-1; yybegin(CHAR_LITERAL); - } - case 79: break; - case 3: - { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); - } - case 80: break; - case 38: - { start = zzMarkedPos-yylength(); yybegin(STRING_Q_SLASH); - } - case 81: break; - case 27: - { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_BACKQUOTE); - } - case 82: break; - case 16: - { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); - } - case 83: break; - case 37: - { start = zzMarkedPos-yylength(); yybegin(STRING_Q_BANG); - } - case 84: break; - case 23: - { /* Skip escaped single quotes only, but this should still work. */ - } - case 85: break; - case 30: - { addToken(start,zzStartRead-1, Token.PREPROCESSOR); addEndToken(INTERNAL_HEREDOC_EOT_UNQUOTED); return firstToken; - } - case 86: break; - case 49: - { start = zzMarkedPos-6; yybegin(DOCCOMMENT); - } - case 87: break; - case 34: - { addToken(Token.RESERVED_WORD); - } - case 88: break; - case 26: - { addToken(start,zzStartRead-1, Token.LITERAL_BACKQUOTE); return firstToken; - } - case 89: break; - case 36: - { start = zzMarkedPos-yylength(); yybegin(STRING_Q_SQUARE_BRACKET); - } - case 90: break; - case 8: - { addToken(Token.SEPARATOR); - } - case 91: break; - case 5: - { addNullToken(); return firstToken; - } - case 92: break; - case 21: - { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addEndToken(INTERNAL_STRING_Q_SQUARE_BRACKET); return firstToken; - } - case 93: break; - case 40: - { start = zzMarkedPos-yylength(); yybegin(STRING_Q_PAREN); - } - case 94: break; - case 7: - { addToken(Token.OPERATOR); - } - case 95: break; - case 24: - { addToken(start,zzStartRead-1, Token.LITERAL_CHAR); return firstToken; - } - case 96: break; - case 33: - { addToken(Token.LITERAL_NUMBER_FLOAT); - } - case 97: break; - case 48: - { start = zzStartRead; yybegin(HEREDOC_EOT_UNQUOTED); - } - case 98: break; - case 12: - { start = zzMarkedPos-1; yybegin(BACKTICKS); - } - case 99: break; - case 13: - { - } - case 100: break; - case 15: - { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); return firstToken; - } - case 101: break; - case 29: - { addToken(start,zzStartRead-1, Token.PREPROCESSOR); addEndToken(INTERNAL_HEREDOC_EOF_SINGLE_QUOTED); return firstToken; - } - case 102: break; - default: - if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { - zzAtEOF = true; - switch (zzLexicalState) { - case HEREDOC_EOF_SINGLE_QUOTED: { - addToken(start,zzStartRead-1, Token.PREPROCESSOR); addEndToken(INTERNAL_HEREDOC_EOF_SINGLE_QUOTED); return firstToken; - } - case 348: break; - case DOCCOMMENT: { - yybegin(YYINITIAL); addToken(start,zzEndRead, Token.COMMENT_DOCUMENTATION); return firstToken; - } - case 349: break; - case HEREDOC_EOT_SINGLE_QUOTED: { - addToken(start,zzStartRead-1, Token.PREPROCESSOR); addEndToken(INTERNAL_HEREDOC_EOT_SINGLE_QUOTED); return firstToken; - } - case 350: break; - case HEREDOC_EOT_UNQUOTED: { - addToken(start,zzStartRead-1, Token.PREPROCESSOR); addEndToken(INTERNAL_HEREDOC_EOT_UNQUOTED); return firstToken; - } - case 351: break; - case STRING_Q_SLASH: { - addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addEndToken(INTERNAL_STRING_Q_SLASH); return firstToken; - } - case 352: break; - case STRING_Q_BANG: { - addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addEndToken(INTERNAL_STRING_Q_BANG); return firstToken; - } - case 353: break; - case STRING_Q_LT: { - addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addEndToken(INTERNAL_STRING_Q_LT); return firstToken; - } - case 354: break; - case STRING: { - addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); return firstToken; - } - case 355: break; - case BACKTICKS: { - addToken(start,zzStartRead-1, Token.LITERAL_BACKQUOTE); return firstToken; - } - case 356: break; - case YYINITIAL: { - addNullToken(); return firstToken; - } - case 357: break; - case HEREDOC_EOF_UNQUOTED: { - addToken(start,zzStartRead-1, Token.PREPROCESSOR); addEndToken(INTERNAL_HEREDOC_EOF_UNQUOTED); return firstToken; - } - case 358: break; - case STRING_Q_CURLY_BRACE: { - addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addEndToken(INTERNAL_STRING_Q_CURLY_BRACE); return firstToken; - } - case 359: break; - case STRING_Q_PAREN: { - addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addEndToken(INTERNAL_STRING_Q_PAREN); return firstToken; - } - case 360: break; - case CHAR_LITERAL: { - addToken(start,zzStartRead-1, Token.LITERAL_CHAR); return firstToken; - } - case 361: break; - case STRING_Q_SQUARE_BRACKET: { - addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); addEndToken(INTERNAL_STRING_Q_SQUARE_BRACKET); return firstToken; - } - case 362: break; - default: - return null; - } - } - else { - zzScanError(ZZ_NO_MATCH); - } - } - } - } - - -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/SASTokenMaker.flex b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/SASTokenMaker.flex deleted file mode 100644 index 6e8bafb..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/SASTokenMaker.flex +++ /dev/null @@ -1,672 +0,0 @@ -/* - * 02/25/2005 - * - * SASTokenMaker.java - Scanner for SAS files. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * This class generates tokens representing a text stream as SAS.

- * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated SASTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.5 - * - */ -%% - -%public -%class SASTokenMaker -%extends AbstractJFlexTokenMaker -%unicode -%ignorecase -%type org.fife.ui.rsyntaxtextarea.Token - - -%{ - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public SASTokenMaker() { - super(); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, int startOffset) { - super.addToken(array, start,end, tokenType, startOffset); - zzStartRead = zzMarkedPos; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { "*", null }; - } - - - /** - * Returns whether tokens of the specified type should have "mark - * occurrences" enabled for the current programming language. - * - * @param type The token type. - * @return Whether tokens of this type should have "mark occurrences" - * enabled. - */ - public boolean getMarkOccurrencesOfTokenType(int type) { - return type==Token.IDENTIFIER || type==Token.VARIABLE; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - - // Start off in the proper state. - int state = Token.NULL; - switch (initialTokenType) { - case Token.LITERAL_STRING_DOUBLE_QUOTE: - state = STRING; - start = text.offset; - break; - case Token.LITERAL_CHAR: - state = CHAR; - start = text.offset; - break; - case Token.COMMENT_MULTILINE: - state = MLC; - start = text.offset; - break; - default: - state = Token.NULL; - } - - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = zzPushbackPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtBOL = true; - zzAtEOF = false; - } - - -%} - -LineTerminator = ([\n]) -Letter = ([A-Za-z_]) -Digit = ([0-9]) -Whitespace = ([ \t]+) -Semicolon = ([;]) - -Identifier = (({Letter}|{Digit})+) -MacroVariable = (&{Identifier}) - -Operators1 = ("+"|"-"|"*"|"/"|"^"|"|") -Operators2 = (([\^\~]?=)|(">"[=]?)|("<"[=]?)) -Operators3 = ("eq"|"ne"|"gt"|"lt"|"ge"|"le"|"in") -Operator = ({Operators1}|{Operators2}|{Operators3}) -Separator = ([\(\)]) - -StringBoundary = (\") -CharBoundary = (\') - -LineCommentBegin = ("*") -MLCBegin = ("/*") -MLCEnd = ("*/") - -%state STRING -%state CHAR -%state MLC - -%% - - { - - /* Keywords */ - "_all_" | - "_character_" | - "_data_" | - "_infile_" | - "_last_" | - "_null_" | - "_numeric_" | - "_page_" | - "_temporary_" | - "abend" | - "abort" | - "all" | - "alter" | - "and" | - "array" | - "as" | - "ascending" | - "attrib" | - "axis" | - "bell" | - "blank" | - "border" | - "bounds" | - "by" | - "call" | - "cancel" | - "cards" | - "cards4" | - "choro" | - "class" | - "classes" | - "clear" | - "close" | - "compute" | - "contrast" | - "coord" | - "coordinates" | - "cov" | - "create" | - "data" | - "datalines" | - "datalines4" | - "delete" | - "descending" | - "describe" | - "discrete" | - "disk" | - "display" | - "dm" | - "do" | - "drop" | - "dummy" | - "else" | - "end" | - "endrsubmit" | - "endsas" | - "error" | - "except" | - "expandtabs" | - "factors" | - "file" | - "filename" | - "flowover" | - "footnote" | - "frame" | - "freq" | - "from" | - "go" | - "goption" | - "goptions" | - "goto" | - "grid" | - "group" | - "groupby" | - "groupformat" | - "having" | - "haxis" | - "hbar" | - "heading" | - "high" | - "html" | - "id" | - "if" | - "infile" | - "informat" | - "inner" | - "input" | - "insert" | - "intersect" | - "keep" | - "keylabel" | - "label" | - "lable" | - "legend" | - "length" | - "libname" | - "lineqs" | - "link" | - "list" | - "listing" | - "log" | - "lostcard" | - "low" | - "mark" | - "matings" | - "mean" | - "merge" | - "missing" | - "missover" | - "mod" | - "model" | - "modify" | - "n" | - "nocell" | - "nocharacters" | - "nodupkey" | - "noexpandtabs" | - "noframe" | - "noheading" | - "noinput" | - "nolegend" | - "nopad" | - "noprint" | - "nosharebuffers" | - "not" | - "note" | - "notitle" | - "notitles" | - "notsorted" | - "ods" | - "old" | - "option" | - "or" | - "order" | - "orderby" | - "other" | - "otherwise" | - "outer" | - "output" | - "over" | - "overlay" | - "overprint" | - "pad" | - "pageby" | - "pagesize" | - "parmcards" | - "parmcards4" | - "parms" | - "pattern" | - "pct" | - "pctn" | - "pctsum" | - "picture" | - "pie" | - "pie3d" | - "plotter" | - "predict" | - "prefix" | - "printer" | - "proc" | - "ps" | - "put" | - "quit" | - "random" | - "range" | - "remove" | - "rename" | - "response" | - "replace" | - "reset" | - "retain" | - "return" | - "rsubmit" | - "run" | - "s2" | - "select" | - "set" | - "sharebuffers" | - "signoff" | - "signon" | - "sim" | - "skip" | - "source2" | - "startsas" | - "std" | - "stop" | - "stopover" | - "strata" | - "sum" | - "sumby" | - "supvar" | - "symbol" | - "table" | - "tables" | - "tape" | - "terminal" | - "test" | - "then" | - "time" | - "title" | - "to" | - "transform" | - "treatments" | - "truncover" | - "unbuf" | - "unbuffered" | - "union" | - "until" | - "update" | - "validate" | - "value" | - "var" | - "variables" | - "vaxis" | - "vbar" | - "weight" | - "when" | - "where" | - "while" | - "with" | - "window" | - "x" { addToken(Token.RESERVED_WORD); } - - /* Base SAS procs. */ - "append" | - "calendar" | - "catalog" | - "chart" | - "cimport" | - "compare" | - "contents" | - "copy" | - "cpm" | - "cport" | - "datasets" | - "display" | - "explode" | - "export" | - "fontreg" | - "format" | - "forms" | - "fslist" | - "import" | - "means" | - "migrate" | - "options" | - "optload" | - "optsave" | - "plot" | - "pmenu" | - "print" | - "printto" | - "proto" | - "prtdef" | - "prtexp" | - "pwencode" | - "rank" | - "registry" | - "report" | - "sort" | - "sql" | - "standard" | - "summary" | - "tabulate" | - "template" | - "timeplot" | - "transpose" { addToken(Token.DATA_TYPE); } - - /* SAS/STAT procs. */ - "corr" | - "freq" | - "univariate" { addToken(Token.DATA_TYPE); } - - /* Macros. */ - "%abort" | - "%bquote" | - "%by" | - "%cms" | - "%copy" | - "%display" | - "%do" | - "%else" | - "%end" | - "%eval" | - "%global" | - "%go" | - "%goto" | - "%if" | - "%inc" | - "%include" | - "%index" | - "%input" | - "%keydef" | - "%length" | - "%let" | - "%local" | - "%macro" | - "%mend" | - "%nrbquote" | - "%nrquote" | - "%nrstr" | - "%put" | - "%qscan" | - "%qsubstr" | - "%qsysfunc" | - "%quote" | - "%qupcase" | - "%scan" | - "%str" | - "%substr" | - "%superq" | - "%syscall" | - "%sysevalf" | - "%sysexec" | - "%sysfunc" | - "%sysget" | - "%sysprod" | - "%sysrput" | - "%then" | - "%to" | - "%tso" | - "%unquote" | - "%until" | - "%upcase" | - "%while" | - "%window" { addToken(Token.FUNCTION); } - -} - - { - - {LineTerminator} { addNullToken(); return firstToken; } - - /* Comments. */ - /* Do comments before operators as "*" can signify a line comment as */ - /* well as an operator. */ - ^[ \t]*{LineCommentBegin} { - // We must do this because of how we - // abuse JFlex; since we return an entire - // list of tokens at once instead of a - // single token at a time, the "^" regex - // character doesn't really work, so we must - // check that we're at the beginning of a - // line ourselves. - start = zzStartRead; - // Might not be any whitespace. - if (yylength()>1) { - addToken(zzStartRead,zzMarkedPos-2, Token.WHITESPACE); - zzStartRead = zzMarkedPos-1; - } - // Remember: zzStartRead may now be updated, - // so we must check against 'start'. - if (start==s.offset) { - addToken(zzStartRead,zzEndRead, Token.COMMENT_EOL); - addNullToken(); - return firstToken; - } - else { - addToken(zzStartRead,zzStartRead, Token.OPERATOR); - } - } - {MLCBegin} { start = zzMarkedPos-2; yybegin(MLC); } - - /* Do operators before identifiers since some of them are words. */ - {Operator} { addToken(Token.OPERATOR); } - {Separator} { addToken(Token.SEPARATOR); } - - {Identifier} { addToken(Token.IDENTIFIER); } - {MacroVariable} { addToken(Token.VARIABLE); } - {Semicolon} { addToken(Token.IDENTIFIER); } - - {Whitespace} { addToken(Token.WHITESPACE); } - - {StringBoundary} { start = zzMarkedPos-1; yybegin(STRING); } - {CharBoundary} { start = zzMarkedPos-1; yybegin(CHAR); } - - <> { addNullToken(); return firstToken; } - - /* Catch any other (unhandled) characters and flag them as OK; */ - /* This will include "." from statements like "from lib.dataset". */ - . { addToken(Token.IDENTIFIER); } - -} - - { - - [^\n\"]+ {} - {LineTerminator} { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); return firstToken; } -/* {StringBoundary}{StringBoundary} {} */ - {StringBoundary} { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); } - <> { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); return firstToken; } - -} - - { - - [^\n\']+ {} - {LineTerminator} { yybegin(YYINITIAL); addToken(start,zzStartRead-1, Token.LITERAL_CHAR); return firstToken; } -/* {CharBoundary}{CharBoundary} {} */ - {CharBoundary} { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_CHAR); } - <> { addToken(start,zzStartRead-1, Token.LITERAL_CHAR); return firstToken; } - -} - - { - - [^\n\*]+ {} - {LineTerminator} { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; } - {MLCEnd} { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); } - \* {} - <> { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; } - -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/SASTokenMaker.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/SASTokenMaker.java deleted file mode 100644 index d3d5630..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/SASTokenMaker.java +++ /dev/null @@ -1,1487 +0,0 @@ -/* The following code was generated by JFlex 1.4.1 on 1/20/09 10:04 AM */ - -/* - * 02/25/2005 - * - * SASTokenMaker.java - Scanner for SAS files. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * This class generates tokens representing a text stream as SAS.

- * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated SASTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.5 - * - */ - -public class SASTokenMaker extends AbstractJFlexTokenMaker { - - /** This character denotes the end of file */ - public static final int YYEOF = -1; - - /** lexical states */ - public static final int STRING = 2; - public static final int YYINITIAL = 0; - public static final int MLC = 6; - public static final int CHAR = 4; - - /** - * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l - * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l - * at the beginning of a line - * l is of the form l = 2*k, k a non negative integer - */ - private static final int ZZ_LEXSTATE[] = { - 0, 1, 2, 2, 3, 3, 4, 4 - }; - - /** - * Translates characters to character classes - */ - private static final String ZZ_CMAP_PACKED = - "\11\0\1\3\1\1\25\0\1\3\1\0\1\23\2\0\1\53\1\4"+ - "\1\24\2\22\1\6\1\5\1\0\1\5\1\0\1\7\2\2\1\52"+ - "\1\51\1\45\5\2\1\0\1\0\1\10\1\12\1\10\2\0\1\26"+ - "\1\42\1\27\1\32\1\13\1\33\1\16\1\30\1\21\1\2\1\44"+ - "\1\20\1\36\1\15\1\40\1\37\1\14\1\31\1\34\1\17\1\35"+ - "\1\46\1\47\1\43\1\41\1\50\3\0\1\10\1\25\1\0\1\26"+ - "\1\42\1\27\1\32\1\13\1\33\1\16\1\30\1\21\1\2\1\44"+ - "\1\20\1\36\1\15\1\40\1\37\1\14\1\31\1\34\1\17\1\35"+ - "\1\46\1\47\1\43\1\41\1\50\1\0\1\5\1\0\1\11\uff81\0"; - - /** - * Translates characters to character classes - */ - private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); - - /** - * Translates DFA states to action switch labels. - */ - private static final int [] ZZ_ACTION = zzUnpackAction(); - - private static final String ZZ_ACTION_PACKED_0 = - "\5\0\1\1\1\2\1\1\1\3\1\1\3\4\3\1"+ - "\1\5\4\1\1\6\1\7\1\10\15\1\1\5\4\1"+ - "\1\3\1\11\1\12\1\13\1\14\1\12\1\15\1\16"+ - "\1\12\1\17\1\12\1\20\1\21\1\4\7\1\1\5"+ - "\5\1\1\4\3\1\1\4\15\1\1\5\66\1\1\5"+ - "\14\1\21\0\1\22\1\5\5\1\1\5\66\1\1\23"+ - "\50\1\1\5\15\1\1\5\1\1\1\5\4\1\1\5"+ - "\20\1\1\5\3\1\7\0\1\24\2\0\1\24\24\0"+ - "\21\1\1\5\6\1\1\5\44\1\1\5\1\1\1\5"+ - "\11\1\1\5\7\1\1\5\4\1\1\23\22\1\1\5"+ - "\5\1\12\0\1\24\16\0\10\1\1\5\3\1\1\5"+ - "\13\1\1\5\2\1\1\5\3\1\1\5\23\1\1\5"+ - "\10\1\1\23\2\5\6\1\16\0\42\1\13\0\17\1"+ - "\2\0\12\1"; - - private static int [] zzUnpackAction() { - int [] result = new int[639]; - int offset = 0; - offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAction(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /** - * Translates a state to a row index in the transition table - */ - private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); - - private static final String ZZ_ROWMAP_PACKED_0 = - "\0\0\0\54\0\130\0\204\0\260\0\334\0\334\0\u0108"+ - "\0\u0134\0\u0160\0\334\0\u018c\0\u01b8\0\u01b8\0\u01e4\0\u0210"+ - "\0\u023c\0\u0268\0\u0294\0\u02c0\0\u02ec\0\334\0\334\0\334"+ - "\0\u0318\0\u0344\0\u0370\0\u039c\0\u03c8\0\u03f4\0\u0420\0\u044c"+ - "\0\u0478\0\u04a4\0\u04d0\0\u04fc\0\u0528\0\u0108\0\u0554\0\u0580"+ - "\0\u05ac\0\u05d8\0\u0604\0\334\0\u0630\0\334\0\334\0\u065c"+ - "\0\334\0\334\0\u0688\0\334\0\u06b4\0\u0160\0\334\0\u0108"+ - "\0\u06e0\0\u070c\0\u0738\0\u0764\0\u0790\0\u07bc\0\u07e8\0\u0814"+ - "\0\u0840\0\u086c\0\u0898\0\u08c4\0\u08f0\0\u091c\0\u0948\0\u0974"+ - "\0\u09a0\0\u09cc\0\u09f8\0\u0a24\0\u0a50\0\u0a7c\0\u0aa8\0\u0ad4"+ - "\0\u0b00\0\u0b2c\0\u0b58\0\u0b84\0\u0bb0\0\u0bdc\0\u0c08\0\u0c34"+ - "\0\u0c60\0\u0c8c\0\u0cb8\0\u0ce4\0\u0d10\0\u0d3c\0\u0d68\0\u0d94"+ - "\0\u0dc0\0\u0dec\0\u0e18\0\u0e44\0\u0e70\0\u0e9c\0\u0ec8\0\u0ef4"+ - "\0\u0f20\0\u0f4c\0\u0f78\0\u0fa4\0\u0fd0\0\u0ffc\0\u1028\0\u1054"+ - "\0\u1080\0\u10ac\0\u10d8\0\u1104\0\u1130\0\u115c\0\u1188\0\u11b4"+ - "\0\u11e0\0\u120c\0\u1238\0\u1264\0\u1290\0\u12bc\0\u12e8\0\u1314"+ - "\0\u1340\0\u136c\0\u1398\0\u13c4\0\u13f0\0\u141c\0\u1448\0\u1474"+ - "\0\u14a0\0\u14cc\0\u14f8\0\u1524\0\u1550\0\u157c\0\u15a8\0\u15d4"+ - "\0\u1600\0\u162c\0\u1658\0\u1684\0\u16b0\0\u16dc\0\u1708\0\u1734"+ - "\0\u1760\0\u178c\0\u17b8\0\u17e4\0\u1810\0\u183c\0\u1868\0\u1894"+ - "\0\u18c0\0\u18ec\0\u1918\0\u1944\0\u1970\0\u199c\0\u19c8\0\u19f4"+ - "\0\u1a20\0\u1a4c\0\u1a78\0\u1aa4\0\334\0\u1ad0\0\u1afc\0\u1b28"+ - "\0\u1b54\0\u1b80\0\u1bac\0\u1bd8\0\u1c04\0\u1c30\0\u1c5c\0\u1c88"+ - "\0\u1cb4\0\u1ce0\0\u1d0c\0\u1d38\0\u1d64\0\u1d90\0\u1dbc\0\u1de8"+ - "\0\u1e14\0\u1e40\0\u1e6c\0\u1e98\0\u1ec4\0\u1ef0\0\u1f1c\0\u1f48"+ - "\0\u1f74\0\u1fa0\0\u1fcc\0\u1ff8\0\u2024\0\u2050\0\u207c\0\u20a8"+ - "\0\u20d4\0\u2100\0\u212c\0\u2158\0\u2184\0\u21b0\0\u21dc\0\u2208"+ - "\0\u2234\0\u2260\0\u228c\0\u22b8\0\u22e4\0\u2310\0\u233c\0\u2368"+ - "\0\u2394\0\u23c0\0\u23ec\0\u2418\0\u2444\0\u2470\0\u249c\0\u24c8"+ - "\0\u24f4\0\u2520\0\u0108\0\u254c\0\u2578\0\u25a4\0\u25d0\0\u25fc"+ - "\0\u2628\0\u2654\0\u2680\0\u26ac\0\u26d8\0\u2704\0\u2730\0\u275c"+ - "\0\u2788\0\u27b4\0\u27e0\0\u280c\0\u2838\0\u2864\0\u2890\0\u28bc"+ - "\0\u28e8\0\u2914\0\u2940\0\u296c\0\u2998\0\u29c4\0\u29f0\0\u2a1c"+ - "\0\u2a48\0\u2a74\0\u2aa0\0\u2acc\0\u2af8\0\u2b24\0\u2b50\0\u2b7c"+ - "\0\u2ba8\0\u2bd4\0\u2c00\0\u2c2c\0\u2c58\0\u2c84\0\u2cb0\0\u2cdc"+ - "\0\u2d08\0\u2d34\0\u2d60\0\u2d8c\0\u2db8\0\u2de4\0\u2e10\0\u2e3c"+ - "\0\u2e68\0\u2e94\0\u2ec0\0\u2eec\0\u2f18\0\u2f44\0\u2f70\0\u2f9c"+ - "\0\u2fc8\0\u2ff4\0\u3020\0\u304c\0\u3078\0\u30a4\0\u30d0\0\u30fc"+ - "\0\u3128\0\u3154\0\u3180\0\u31ac\0\u31d8\0\u3204\0\u3230\0\u325c"+ - "\0\u3288\0\u32b4\0\u32e0\0\u330c\0\u3338\0\u3364\0\u3390\0\u33bc"+ - "\0\u33e8\0\u3414\0\u3440\0\u346c\0\u3498\0\u34c4\0\u34f0\0\334"+ - "\0\u351c\0\u3548\0\u3574\0\u35a0\0\u35cc\0\u35f8\0\u3624\0\u3650"+ - "\0\u367c\0\u36a8\0\u36d4\0\u3700\0\u372c\0\u3758\0\u3784\0\u37b0"+ - "\0\u37dc\0\u3808\0\u3834\0\u3860\0\u388c\0\u38b8\0\u38e4\0\u3910"+ - "\0\u393c\0\u3968\0\u3994\0\u39c0\0\u39ec\0\u3a18\0\u3a44\0\u3a70"+ - "\0\u3a9c\0\u3ac8\0\u3af4\0\u3b20\0\u3b4c\0\u3b78\0\u3ba4\0\u3bd0"+ - "\0\u3bfc\0\u3c28\0\u3c54\0\u3c80\0\u26ac\0\u3cac\0\u3cd8\0\u3d04"+ - "\0\u3d30\0\u3d5c\0\u3d88\0\u3db4\0\u3de0\0\u3e0c\0\u3e38\0\u3e64"+ - "\0\u3e90\0\u3ebc\0\u3ee8\0\u3f14\0\u3f40\0\u3f6c\0\u3f98\0\u3fc4"+ - "\0\u3ff0\0\u401c\0\u4048\0\u4074\0\u40a0\0\u40cc\0\u40f8\0\u4124"+ - "\0\u4150\0\u417c\0\u41a8\0\u41d4\0\u4200\0\u422c\0\u4258\0\u4284"+ - "\0\u42b0\0\u42dc\0\u4308\0\u1ff8\0\u4334\0\u4360\0\u438c\0\u43b8"+ - "\0\u43e4\0\u4410\0\u443c\0\u4468\0\u4494\0\u4308\0\u44c0\0\u44ec"+ - "\0\u4518\0\u4544\0\u4570\0\u459c\0\u45c8\0\u45f4\0\u4620\0\u464c"+ - "\0\u4678\0\u46a4\0\u46d0\0\u46fc\0\u4728\0\u4754\0\u4780\0\u47ac"+ - "\0\u47d8\0\u4804\0\u4830\0\u485c\0\u4888\0\u48b4\0\u48e0\0\u490c"+ - "\0\u4938\0\u4964\0\u4990\0\u49bc\0\u49e8\0\u4a14\0\u4a40\0\u4a6c"+ - "\0\u4a98\0\u4ac4\0\u4af0\0\u4b1c\0\u4b48\0\u4b74\0\u4ba0\0\u4bcc"+ - "\0\u4bf8\0\u4c24\0\u4c50\0\u4c7c\0\u4ca8\0\u4cd4\0\u4d00\0\u4d2c"+ - "\0\u4d58\0\u4d84\0\u4db0\0\u4ddc\0\u4e08\0\u4e34\0\u4e60\0\u4e8c"+ - "\0\u4eb8\0\u4ee4\0\u4f10\0\u4f3c\0\u4f68\0\u4f94\0\u4fc0\0\u4fec"+ - "\0\u5018\0\u5044\0\u5070\0\u509c\0\u50c8\0\u50f4\0\u5120\0\u514c"+ - "\0\u15d4\0\u5178\0\u51a4\0\u51d0\0\u51fc\0\u5228\0\u5254\0\u5280"+ - "\0\u52ac\0\u52d8\0\u5304\0\u5330\0\u535c\0\u5388\0\u53b4\0\u53e0"+ - "\0\u540c\0\u5438\0\u5464\0\u5490\0\u54bc\0\u54e8\0\u5514\0\u5540"+ - "\0\u556c\0\u5598\0\u55c4\0\u55f0\0\u561c\0\u5648\0\u5674\0\u56a0"+ - "\0\u56cc\0\u56f8\0\u5724\0\u5750\0\u577c\0\u57a8\0\u57d4\0\u5800"+ - "\0\u582c\0\u5858\0\u5884\0\u58b0\0\u58dc\0\u5908\0\u5934\0\u5960"+ - "\0\u598c\0\u59b8\0\u59e4\0\u5a10\0\u5a3c\0\u5a68\0\u5a94\0\u5ac0"+ - "\0\u5aec\0\u5b18\0\u5b44\0\u5b70\0\u5b9c\0\u5bc8\0\u5bf4\0\u5c20"+ - "\0\u5c4c\0\u5c78\0\u5ca4\0\u5cd0\0\u5cfc\0\u5d28\0\u5d54\0\u5d80"+ - "\0\u5dac\0\u5dd8\0\u5e04\0\u5e30\0\u5e5c\0\u5e88\0\u5eb4\0\u5ee0"+ - "\0\u5f0c\0\u5f38\0\u5f64\0\u5f90\0\u5fbc\0\u5fe8\0\u6014\0\u6040"+ - "\0\u606c\0\u6098\0\u60c4\0\u60f0\0\u611c\0\u6148\0\u6174\0\u61a0"+ - "\0\u61cc\0\u61f8\0\u6224\0\u6250\0\u627c\0\u62a8\0\u62d4\0\u6300"+ - "\0\u632c\0\u6358\0\u6384\0\u63b0\0\u63dc\0\u6408\0\u6434\0\u6460"+ - "\0\u648c\0\u64b8\0\u64e4\0\u6510\0\u653c\0\u6568\0\u6594\0\u65c0"+ - "\0\u65ec\0\u6618\0\u6644\0\u6670\0\u669c\0\u45f4\0\u66c8\0\u66f4"+ - "\0\u6720\0\u674c\0\u535c\0\u6778\0\u67a4\0\u67d0\0\u67fc\0\u6828"+ - "\0\u6854\0\u6880\0\u68ac\0\u68d8\0\u6904\0\u6930\0\u695c"; - - private static int [] zzUnpackRowMap() { - int [] result = new int[639]; - int offset = 0; - offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackRowMap(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int high = packed.charAt(i++) << 16; - result[j++] = high | packed.charAt(i++); - } - return j; - } - - /** - * The transition table of the DFA - */ - private static final int [] ZZ_TRANS = zzUnpackTrans(); - - private static final String ZZ_TRANS_PACKED_0 = - "\1\6\1\7\1\10\1\11\1\12\2\13\1\14\1\15"+ - "\1\16\1\13\1\17\1\20\1\21\1\22\1\23\1\24"+ - "\1\25\1\26\1\27\1\30\1\31\1\32\1\33\1\34"+ - "\1\35\1\36\1\37\1\40\1\41\1\42\1\43\1\44"+ - "\1\10\1\45\1\46\1\47\1\10\1\50\1\51\3\10"+ - "\1\52\1\6\1\7\1\10\1\53\1\12\1\13\1\54"+ - "\1\14\1\15\1\16\1\13\1\17\1\20\1\21\1\22"+ - "\1\23\1\24\1\25\1\26\1\27\1\30\1\31\1\32"+ - "\1\33\1\34\1\35\1\36\1\37\1\40\1\41\1\42"+ - "\1\43\1\44\1\10\1\45\1\46\1\47\1\10\1\50"+ - "\1\51\3\10\1\52\1\55\1\56\21\55\1\57\30\55"+ - "\1\60\1\61\22\60\1\62\27\60\1\63\1\64\4\63"+ - "\1\65\45\63\56\0\1\10\10\0\7\10\3\0\26\10"+ - "\4\0\1\11\52\0\1\66\10\0\7\66\3\0\26\66"+ - "\7\0\1\67\57\0\1\13\43\0\1\10\10\0\1\10"+ - "\1\70\1\71\2\10\1\72\1\10\3\0\4\10\1\73"+ - "\11\10\1\74\7\10\3\0\1\10\10\0\7\10\3\0"+ - "\10\10\1\75\15\10\3\0\1\10\10\0\1\70\6\10"+ - "\3\0\13\10\1\76\12\10\3\0\1\10\10\0\1\70"+ - "\3\10\1\70\2\10\3\0\4\10\1\77\6\10\1\100"+ - "\12\10\3\0\1\10\10\0\1\101\5\10\1\102\3\0"+ - "\1\10\1\103\1\10\1\104\1\105\6\10\1\46\12\10"+ - "\3\0\1\10\10\0\1\106\3\10\1\70\1\10\1\107"+ - "\3\0\1\10\1\110\11\10\1\111\12\10\3\0\1\10"+ - "\10\0\2\10\1\112\4\10\3\0\5\10\2\46\2\10"+ - "\1\113\14\10\3\0\1\10\10\0\2\10\1\114\1\10"+ - "\1\115\1\116\1\117\3\0\1\10\1\120\1\121\2\10"+ - "\1\122\4\10\1\123\13\10\3\0\1\10\10\0\2\10"+ - "\1\124\1\10\1\125\1\126\1\10\3\0\4\10\1\127"+ - "\2\10\1\130\2\10\1\131\2\10\1\132\1\133\7\10"+ - "\3\0\1\10\10\0\5\10\1\134\1\135\3\0\1\10"+ - "\1\136\1\10\1\137\1\140\5\10\1\141\1\142\12\10"+ - "\3\0\1\10\10\0\1\143\3\10\1\144\1\10\1\145"+ - "\3\0\1\10\1\146\13\10\1\147\10\10\3\0\1\10"+ - "\10\0\1\150\6\10\3\0\1\10\1\151\5\10\1\152"+ - "\1\153\15\10\3\0\1\10\10\0\1\154\5\10\1\155"+ - "\3\0\1\10\1\156\2\10\1\157\3\10\1\160\1\46"+ - "\1\10\1\46\12\10\3\0\1\10\10\0\5\10\1\161"+ - "\1\162\3\0\1\10\1\163\2\10\1\164\2\10\1\165"+ - "\3\10\1\166\12\10\3\0\1\10\10\0\1\167\1\170"+ - "\2\10\1\171\1\10\1\172\3\0\3\10\1\173\4\10"+ - "\1\174\2\10\1\175\1\176\2\10\1\177\5\10\1\46"+ - "\3\0\1\10\10\0\2\10\1\200\4\10\3\0\12\10"+ - "\1\201\13\10\3\0\1\10\10\0\1\202\5\10\1\203"+ - "\3\0\1\10\1\204\11\10\1\205\12\10\3\0\1\10"+ - "\10\0\5\10\1\206\1\207\3\0\1\10\1\210\1\211"+ - "\1\10\1\212\2\10\1\46\1\213\1\214\10\10\1\215"+ - "\3\10\3\0\1\10\10\0\4\10\1\216\1\124\1\10"+ - "\3\0\4\10\1\217\1\220\2\10\1\221\1\10\1\222"+ - "\6\10\1\223\4\10\3\0\1\10\10\0\1\224\4\10"+ - "\1\225\1\10\3\0\13\10\1\226\1\46\11\10\3\0"+ - "\1\10\10\0\1\227\6\10\3\0\26\10\3\0\1\10"+ - "\10\0\7\10\3\0\1\10\1\230\13\10\1\147\10\10"+ - "\3\0\1\10\10\0\1\231\5\10\1\232\3\0\3\10"+ - "\1\233\22\10\14\0\1\234\1\235\1\236\1\237\1\240"+ - "\1\241\1\242\4\0\1\243\1\244\2\0\1\245\1\0"+ - "\1\246\1\247\1\250\1\251\2\0\1\252\1\0\1\253"+ - "\2\0\1\254\7\0\1\53\2\0\1\54\45\0\1\55"+ - "\1\0\21\55\1\0\30\55\1\60\1\0\22\60\1\0"+ - "\27\60\1\63\1\0\4\63\1\0\45\63\7\0\1\255"+ - "\46\0\1\10\10\0\7\10\3\0\5\10\1\256\20\10"+ - "\3\0\1\10\10\0\7\10\3\0\7\10\1\257\16\10"+ - "\3\0\1\10\10\0\7\10\3\0\4\10\1\260\21\10"+ - "\3\0\1\10\10\0\7\10\3\0\2\10\1\261\7\10"+ - "\1\262\13\10\3\0\1\10\10\0\6\10\1\213\3\0"+ - "\26\10\3\0\1\10\10\0\1\263\3\10\1\264\1\265"+ - "\1\266\3\0\2\10\1\267\1\270\1\10\1\271\1\272"+ - "\1\273\2\10\1\274\13\10\3\0\1\10\10\0\6\10"+ - "\1\124\3\0\13\10\1\275\12\10\3\0\1\10\10\0"+ - "\4\10\1\276\2\10\3\0\12\10\1\277\13\10\3\0"+ - "\1\10\10\0\7\10\3\0\4\10\1\300\2\10\1\213"+ - "\1\10\1\301\14\10\3\0\1\10\10\0\4\10\1\302"+ - "\2\10\3\0\11\10\1\303\14\10\3\0\1\10\10\0"+ - "\7\10\3\0\12\10\1\257\2\10\1\304\10\10\3\0"+ - "\1\10\10\0\1\153\6\10\3\0\26\10\3\0\1\10"+ - "\10\0\1\305\6\10\3\0\1\10\1\306\6\10\1\307"+ - "\15\10\3\0\1\10\10\0\2\10\1\310\1\311\3\10"+ - "\3\0\26\10\3\0\1\10\10\0\2\10\1\312\4\10"+ - "\3\0\7\10\1\313\5\10\1\314\10\10\3\0\1\10"+ - "\10\0\7\10\3\0\15\10\1\315\10\10\3\0\1\10"+ - "\10\0\3\10\1\46\3\10\3\0\7\10\1\316\12\10"+ - "\1\46\3\10\3\0\1\10\10\0\2\10\1\317\1\10"+ - "\1\320\2\10\3\0\6\10\1\321\1\322\2\10\1\323"+ - "\13\10\3\0\1\10\10\0\7\10\3\0\12\10\1\324"+ - "\13\10\3\0\1\10\10\0\7\10\3\0\10\10\1\325"+ - "\15\10\3\0\1\10\10\0\1\326\6\10\3\0\26\10"+ - "\3\0\1\10\10\0\7\10\3\0\1\10\1\327\24\10"+ - "\3\0\1\10\10\0\2\10\1\330\4\10\3\0\26\10"+ - "\3\0\1\10\10\0\5\10\1\331\1\10\3\0\26\10"+ - "\3\0\1\10\10\0\7\10\3\0\3\10\1\332\22\10"+ - "\3\0\1\10\10\0\7\10\3\0\1\10\1\333\24\10"+ - "\3\0\1\10\10\0\7\10\3\0\1\10\1\334\24\10"+ - "\3\0\1\10\10\0\7\10\3\0\5\10\1\46\20\10"+ - "\3\0\1\10\10\0\4\10\1\335\2\10\3\0\26\10"+ - "\3\0\1\10\10\0\4\10\1\317\1\46\1\10\3\0"+ - "\26\10\3\0\1\10\10\0\7\10\3\0\4\10\1\336"+ - "\21\10\3\0\1\10\10\0\7\10\3\0\2\10\1\337"+ - "\23\10\3\0\1\10\10\0\7\10\3\0\12\10\1\340"+ - "\13\10\3\0\1\10\10\0\1\341\6\10\3\0\13\10"+ - "\1\342\12\10\3\0\1\10\10\0\6\10\1\220\3\0"+ - "\26\10\3\0\1\10\10\0\1\147\6\10\3\0\1\10"+ - "\1\343\11\10\1\72\12\10\3\0\1\10\10\0\7\10"+ - "\3\0\11\10\1\113\14\10\3\0\1\10\10\0\2\10"+ - "\1\344\1\10\1\345\1\346\1\10\3\0\4\10\1\347"+ - "\21\10\3\0\1\10\10\0\7\10\3\0\1\10\1\350"+ - "\11\10\1\351\12\10\3\0\1\10\10\0\1\352\6\10"+ - "\3\0\26\10\3\0\1\10\10\0\7\10\3\0\11\10"+ - "\1\353\1\10\1\350\12\10\3\0\1\10\10\0\2\10"+ - "\1\354\4\10\3\0\4\10\1\355\4\10\1\356\1\357"+ - "\1\360\5\10\1\46\4\10\3\0\1\10\10\0\7\10"+ - "\3\0\1\10\1\361\24\10\3\0\1\10\10\0\7\10"+ - "\3\0\11\10\1\362\14\10\3\0\1\10\10\0\3\10"+ - "\1\363\3\10\3\0\26\10\3\0\1\10\10\0\7\10"+ - "\3\0\16\10\1\133\2\10\1\364\4\10\3\0\1\10"+ - "\10\0\7\10\3\0\1\10\1\365\24\10\3\0\1\10"+ - "\10\0\2\10\1\366\1\367\1\370\2\10\3\0\7\10"+ - "\1\371\1\10\1\372\1\373\13\10\3\0\1\10\10\0"+ - "\2\10\1\374\4\10\3\0\26\10\3\0\1\10\10\0"+ - "\7\10\3\0\10\10\1\375\15\10\3\0\1\10\10\0"+ - "\2\10\1\46\4\10\3\0\26\10\3\0\1\10\10\0"+ - "\5\10\1\376\1\10\3\0\7\10\1\377\16\10\3\0"+ - "\1\10\10\0\7\10\3\0\7\10\1\u0100\16\10\3\0"+ - "\1\10\10\0\4\10\1\u0101\2\10\3\0\26\10\3\0"+ - "\1\10\10\0\7\10\3\0\13\10\1\u0102\12\10\3\0"+ - "\1\10\10\0\7\10\3\0\11\10\1\u0103\14\10\3\0"+ - "\1\10\10\0\7\10\3\0\13\10\1\u0104\12\10\3\0"+ - "\1\10\10\0\5\10\1\u0105\1\10\3\0\26\10\3\0"+ - "\1\10\10\0\7\10\3\0\2\10\1\u0106\23\10\3\0"+ - "\1\10\10\0\1\u0107\6\10\3\0\1\10\1\u0108\11\10"+ - "\1\u0109\12\10\3\0\1\10\10\0\5\10\1\u010a\1\10"+ - "\3\0\26\10\3\0\1\10\10\0\2\10\1\u010b\4\10"+ - "\3\0\4\10\1\u010c\6\10\1\u010d\12\10\3\0\1\10"+ - "\10\0\4\10\1\46\1\u010e\1\10\3\0\26\10\3\0"+ - "\1\10\10\0\5\10\1\353\1\10\3\0\26\10\3\0"+ - "\1\10\10\0\7\10\3\0\1\10\1\u010f\2\10\1\u0110"+ - "\1\46\5\10\1\u0111\12\10\3\0\1\10\10\0\3\10"+ - "\1\u0112\3\10\3\0\11\10\1\46\14\10\3\0\1\10"+ - "\10\0\7\10\3\0\1\10\1\u0113\24\10\3\0\1\10"+ - "\10\0\7\10\3\0\11\10\1\u0114\1\u0115\13\10\3\0"+ - "\1\10\10\0\7\10\3\0\4\10\1\u0116\3\10\1\u0117"+ - "\15\10\3\0\1\10\10\0\7\10\3\0\11\10\1\u0118"+ - "\14\10\3\0\1\10\10\0\6\10\1\u0102\3\0\26\10"+ - "\3\0\1\10\10\0\4\10\1\u0119\1\10\1\u011a\3\0"+ - "\15\10\1\u011b\10\10\3\0\1\10\10\0\7\10\3\0"+ - "\5\10\1\352\20\10\3\0\1\10\10\0\7\10\3\0"+ - "\1\10\1\u011c\2\10\1\u011d\21\10\3\0\1\10\10\0"+ - "\3\10\1\u011e\3\10\3\0\7\10\1\u011f\16\10\3\0"+ - "\1\10\10\0\4\10\1\u0120\2\10\3\0\4\10\1\u0121"+ - "\21\10\3\0\1\10\10\0\7\10\3\0\5\10\1\u0122"+ - "\20\10\3\0\1\10\10\0\7\10\3\0\13\10\1\u0123"+ - "\12\10\3\0\1\10\10\0\1\u0124\6\10\3\0\2\10"+ - "\1\u0125\23\10\3\0\1\10\10\0\3\10\1\u0126\1\u0127"+ - "\2\10\3\0\4\10\1\u0128\1\46\20\10\3\0\1\10"+ - "\10\0\4\10\1\u0129\2\10\3\0\26\10\3\0\1\10"+ - "\10\0\1\u012a\3\10\1\u012b\1\10\1\u012c\3\0\13\10"+ - "\1\u012d\12\10\3\0\1\10\10\0\4\10\1\46\2\10"+ - "\3\0\26\10\3\0\1\10\10\0\1\u012e\6\10\3\0"+ - "\26\10\3\0\1\10\10\0\1\u012f\6\10\3\0\26\10"+ - "\3\0\1\10\10\0\7\10\3\0\3\10\1\u0130\22\10"+ - "\3\0\1\10\10\0\7\10\3\0\5\10\1\u0131\20\10"+ - "\3\0\1\10\10\0\7\10\3\0\7\10\1\46\16\10"+ - "\3\0\1\10\10\0\4\10\1\u0132\2\10\3\0\26\10"+ - "\3\0\1\10\10\0\4\10\1\u0133\2\10\3\0\26\10"+ - "\3\0\1\10\10\0\1\u0134\6\10\3\0\26\10\3\0"+ - "\1\10\10\0\5\10\1\362\1\10\3\0\26\10\3\0"+ - "\1\10\10\0\7\10\3\0\1\10\1\u0135\24\10\3\0"+ - "\1\10\10\0\7\10\3\0\4\10\1\u0136\3\10\1\u0137"+ - "\15\10\3\0\1\10\10\0\1\u0102\6\10\3\0\14\10"+ - "\1\u0138\11\10\3\0\1\10\10\0\5\10\1\u0139\1\10"+ - "\3\0\4\10\1\u013a\11\10\1\133\7\10\3\0\1\10"+ - "\10\0\6\10\1\u013b\3\0\26\10\3\0\1\10\10\0"+ - "\2\10\1\u013c\1\10\1\363\2\10\3\0\26\10\3\0"+ - "\1\10\10\0\1\u013d\5\10\1\302\3\0\26\10\16\0"+ - "\1\u013e\2\0\1\u013f\25\0\1\u0140\41\0\1\u0141\1\u0142"+ - "\47\0\1\u0143\42\0\1\u0144\17\0\1\u0145\43\0\1\u0146"+ - "\3\0\1\u0147\3\0\1\u0148\26\0\1\u0149\24\0\1\u014a"+ - "\30\0\1\u014b\15\0\1\u0148\62\0\1\u014c\47\0\1\u014d"+ - "\1\0\1\u014e\34\0\1\u014f\16\0\1\u0148\32\0\1\u0150"+ - "\7\0\1\u0151\5\0\1\u0152\3\0\1\u0153\27\0\1\u0154"+ - "\21\0\1\u0155\27\0\1\u0156\12\0\1\u0157\62\0\1\u0158"+ - "\32\0\1\u0159\24\0\1\u0148\25\0\1\u015a\61\0\1\u015b"+ - "\6\0\1\u015c\25\0\1\10\10\0\7\10\3\0\4\10"+ - "\1\u015d\2\10\1\u015e\16\10\3\0\1\10\10\0\1\46"+ - "\6\10\3\0\26\10\3\0\1\10\10\0\7\10\3\0"+ - "\13\10\1\365\12\10\3\0\1\10\10\0\1\u015f\6\10"+ - "\3\0\26\10\3\0\1\10\10\0\5\10\1\u0160\1\10"+ - "\3\0\1\10\1\u0161\11\10\1\350\12\10\3\0\1\10"+ - "\10\0\7\10\3\0\16\10\1\u0162\7\10\3\0\1\10"+ - "\10\0\1\46\5\10\1\u0163\3\0\7\10\1\u0164\16\10"+ - "\3\0\1\10\10\0\1\u0165\6\10\3\0\26\10\3\0"+ - "\1\10\10\0\2\10\1\u0166\4\10\3\0\26\10\3\0"+ - "\1\10\10\0\1\224\6\10\3\0\3\10\1\u0167\22\10"+ - "\3\0\1\10\10\0\1\143\6\10\3\0\26\10\3\0"+ - "\1\10\10\0\7\10\3\0\10\10\1\u0168\15\10\3\0"+ - "\1\10\10\0\7\10\3\0\4\10\1\366\21\10\3\0"+ - "\1\10\10\0\7\10\3\0\3\10\1\173\22\10\3\0"+ - "\1\10\10\0\7\10\3\0\1\10\1\124\2\10\1\u0169"+ - "\21\10\3\0\1\10\10\0\7\10\3\0\10\10\1\u016a"+ - "\15\10\3\0\1\10\10\0\7\10\3\0\13\10\1\46"+ - "\12\10\3\0\1\10\10\0\4\10\1\u016b\2\10\3\0"+ - "\26\10\3\0\1\10\10\0\7\10\3\0\11\10\1\u016c"+ - "\14\10\3\0\1\10\10\0\7\10\3\0\12\10\1\u016d"+ - "\13\10\3\0\1\10\10\0\5\10\1\257\1\10\3\0"+ - "\26\10\3\0\1\10\10\0\1\u016e\6\10\3\0\26\10"+ - "\3\0\1\10\10\0\5\10\1\u016f\1\10\3\0\10\10"+ - "\1\u016d\15\10\3\0\1\10\10\0\7\10\3\0\1\10"+ - "\1\u0170\24\10\3\0\1\10\10\0\2\10\1\u0171\4\10"+ - "\3\0\26\10\3\0\1\10\10\0\2\10\1\u0172\4\10"+ - "\3\0\26\10\3\0\1\10\10\0\3\10\1\u0173\3\10"+ - "\3\0\26\10\3\0\1\10\10\0\1\341\6\10\3\0"+ - "\26\10\3\0\1\10\10\0\1\u0174\6\10\3\0\17\10"+ - "\1\46\6\10\3\0\1\10\10\0\4\10\1\u0175\2\10"+ - "\3\0\26\10\3\0\1\10\10\0\2\10\1\366\4\10"+ - "\3\0\26\10\3\0\1\10\10\0\1\362\4\10\1\257"+ - "\1\10\3\0\26\10\3\0\1\10\10\0\4\10\1\u0176"+ - "\2\10\3\0\26\10\3\0\1\10\10\0\1\365\6\10"+ - "\3\0\26\10\3\0\1\10\10\0\1\u0177\6\10\3\0"+ - "\26\10\3\0\1\10\10\0\6\10\1\302\3\0\13\10"+ - "\1\u0178\12\10\3\0\1\10\10\0\1\342\6\10\3\0"+ - "\26\10\3\0\1\10\10\0\7\10\3\0\10\10\1\213"+ - "\15\10\3\0\1\10\10\0\7\10\3\0\13\10\1\350"+ - "\12\10\3\0\1\10\10\0\5\10\1\331\1\10\3\0"+ - "\11\10\1\u0179\14\10\3\0\1\10\10\0\7\10\3\0"+ - "\11\10\1\u017a\14\10\3\0\1\10\10\0\7\10\3\0"+ - "\7\10\1\u017b\16\10\3\0\1\10\10\0\7\10\3\0"+ - "\6\10\1\u017c\17\10\3\0\1\10\10\0\5\10\1\u017d"+ - "\1\10\3\0\26\10\3\0\1\10\10\0\7\10\3\0"+ - "\1\10\1\u017e\24\10\3\0\1\10\10\0\4\10\1\u017f"+ - "\2\10\3\0\26\10\3\0\1\10\10\0\3\10\1\u0180"+ - "\3\10\3\0\26\10\3\0\1\10\10\0\7\10\3\0"+ - "\4\10\1\u0181\21\10\3\0\1\10\10\0\7\10\3\0"+ - "\1\10\1\u0182\24\10\3\0\1\10\10\0\1\u0183\6\10"+ - "\3\0\26\10\3\0\1\10\10\0\1\u0184\6\10\3\0"+ - "\26\10\3\0\1\10\10\0\2\10\1\124\4\10\3\0"+ - "\26\10\3\0\1\10\10\0\7\10\3\0\4\10\1\213"+ - "\21\10\3\0\1\10\10\0\7\10\3\0\7\10\1\u0185"+ - "\16\10\3\0\1\10\10\0\7\10\3\0\2\10\1\u0186"+ - "\23\10\3\0\1\10\10\0\7\10\3\0\1\10\1\u0187"+ - "\24\10\3\0\1\10\10\0\1\u0188\4\10\1\46\1\10"+ - "\3\0\26\10\3\0\1\10\10\0\7\10\3\0\5\10"+ - "\1\u0189\20\10\3\0\1\10\10\0\7\10\3\0\4\10"+ - "\1\u0116\21\10\3\0\1\10\10\0\7\10\3\0\4\10"+ - "\1\276\21\10\3\0\1\10\10\0\7\10\3\0\1\10"+ - "\1\u018a\24\10\3\0\1\10\10\0\4\10\1\u018b\2\10"+ - "\3\0\26\10\3\0\1\10\10\0\7\10\3\0\4\10"+ - "\1\353\21\10\3\0\1\10\10\0\7\10\3\0\12\10"+ - "\1\u018c\13\10\3\0\1\10\10\0\7\10\3\0\14\10"+ - "\1\353\11\10\3\0\1\10\10\0\7\10\3\0\4\10"+ - "\1\u018d\21\10\3\0\1\10\10\0\7\10\3\0\5\10"+ - "\1\364\20\10\3\0\1\10\10\0\5\10\1\46\1\10"+ - "\3\0\26\10\3\0\1\10\10\0\7\10\3\0\3\10"+ - "\1\46\22\10\3\0\1\10\10\0\6\10\1\u018e\3\0"+ - "\26\10\3\0\1\10\10\0\7\10\3\0\4\10\1\46"+ - "\21\10\3\0\1\10\10\0\7\10\3\0\1\10\1\u0108"+ - "\24\10\3\0\1\10\10\0\6\10\1\u018f\3\0\26\10"+ - "\3\0\1\10\10\0\7\10\3\0\1\10\1\u0190\6\10"+ - "\1\u0191\15\10\3\0\1\10\10\0\1\213\6\10\3\0"+ - "\12\10\1\u0192\13\10\3\0\1\10\10\0\7\10\3\0"+ - "\13\10\1\u0193\12\10\3\0\1\10\10\0\5\10\1\u0194"+ - "\1\10\3\0\13\10\1\350\12\10\3\0\1\10\10\0"+ - "\3\10\1\257\3\10\3\0\5\10\1\u0195\11\10\1\353"+ - "\6\10\3\0\1\10\10\0\7\10\3\0\15\10\1\u0196"+ - "\10\10\3\0\1\10\10\0\1\u018a\6\10\3\0\26\10"+ - "\3\0\1\10\10\0\7\10\3\0\2\10\1\u0197\23\10"+ - "\3\0\1\10\10\0\7\10\3\0\2\10\1\u0198\7\10"+ - "\1\u0199\4\10\1\46\6\10\3\0\1\10\10\0\7\10"+ - "\3\0\1\10\1\u019a\24\10\3\0\1\10\10\0\7\10"+ - "\3\0\12\10\1\46\13\10\3\0\1\10\10\0\7\10"+ - "\3\0\11\10\1\u0182\14\10\3\0\1\10\10\0\7\10"+ - "\3\0\22\10\1\u019b\3\10\3\0\1\10\10\0\1\u019c"+ - "\6\10\3\0\26\10\3\0\1\10\10\0\4\10\1\u019d"+ - "\2\10\3\0\26\10\3\0\1\10\10\0\1\10\1\46"+ - "\5\10\3\0\26\10\3\0\1\10\10\0\7\10\3\0"+ - "\11\10\1\257\14\10\3\0\1\10\10\0\7\10\3\0"+ - "\11\10\1\46\14\10\3\0\1\10\10\0\6\10\1\u019e"+ - "\3\0\26\10\3\0\1\10\10\0\4\10\1\u019f\2\10"+ - "\3\0\26\10\3\0\1\10\10\0\7\10\3\0\11\10"+ - "\1\u01a0\14\10\3\0\1\10\10\0\4\10\1\u01a1\2\10"+ - "\3\0\26\10\3\0\1\10\10\0\1\u01a2\6\10\3\0"+ - "\26\10\3\0\1\10\10\0\2\10\1\u01a3\4\10\3\0"+ - "\4\10\1\u01a4\21\10\3\0\1\10\10\0\7\10\3\0"+ - "\1\10\1\u01a5\24\10\3\0\1\10\10\0\7\10\3\0"+ - "\12\10\1\u01a6\13\10\3\0\1\10\10\0\2\10\1\u01a7"+ - "\4\10\3\0\26\10\3\0\1\10\10\0\7\10\3\0"+ - "\4\10\1\u01a8\21\10\3\0\1\10\10\0\7\10\3\0"+ - "\11\10\1\u01a9\3\10\1\u0182\10\10\3\0\1\10\10\0"+ - "\7\10\3\0\21\10\1\147\4\10\3\0\1\10\10\0"+ - "\4\10\1\353\2\10\3\0\26\10\3\0\1\10\10\0"+ - "\7\10\3\0\4\10\1\u01aa\21\10\3\0\1\10\10\0"+ - "\7\10\3\0\15\10\1\u01ab\10\10\3\0\1\10\10\0"+ - "\6\10\1\362\3\0\26\10\3\0\1\10\10\0\7\10"+ - "\3\0\13\10\1\153\5\10\1\u01ac\4\10\3\0\1\10"+ - "\10\0\7\10\3\0\10\10\1\u01ad\15\10\3\0\1\10"+ - "\10\0\2\10\1\u01ae\4\10\3\0\26\10\3\0\1\10"+ - "\10\0\3\10\1\257\3\10\3\0\26\10\3\0\1\10"+ - "\10\0\7\10\3\0\4\10\1\u01af\21\10\3\0\1\10"+ - "\10\0\7\10\3\0\7\10\1\u01b0\16\10\3\0\1\10"+ - "\10\0\6\10\1\u01b1\3\0\26\10\3\0\1\10\10\0"+ - "\7\10\3\0\17\10\1\46\6\10\3\0\1\10\10\0"+ - "\1\362\5\10\1\u01b2\3\0\26\10\3\0\1\10\10\0"+ - "\4\10\1\u01b3\2\10\3\0\26\10\3\0\1\10\10\0"+ - "\7\10\3\0\24\10\1\124\1\10\3\0\1\10\10\0"+ - "\4\10\1\u01b4\2\10\3\0\26\10\3\0\1\10\10\0"+ - "\1\u01b5\6\10\3\0\26\10\3\0\1\10\10\0\4\10"+ - "\1\u01b6\2\10\3\0\26\10\3\0\1\10\10\0\7\10"+ - "\3\0\11\10\1\u01b7\14\10\3\0\1\10\10\0\2\10"+ - "\1\46\4\10\3\0\7\10\1\u01b8\16\10\3\0\1\10"+ - "\10\0\7\10\3\0\5\10\1\u01b9\1\u01ba\17\10\3\0"+ - "\1\10\10\0\1\u01bb\6\10\3\0\5\10\1\u01bc\20\10"+ - "\3\0\1\10\10\0\2\10\1\u01bd\4\10\3\0\26\10"+ - "\3\0\1\10\10\0\4\10\1\u01be\2\10\3\0\2\10"+ - "\1\46\23\10\3\0\1\10\10\0\2\10\1\u01bf\4\10"+ - "\3\0\26\10\3\0\1\10\10\0\2\10\1\u01c0\4\10"+ - "\3\0\26\10\3\0\1\10\10\0\1\u01c1\6\10\3\0"+ - "\26\10\3\0\1\10\10\0\1\u01c2\6\10\3\0\26\10"+ - "\3\0\1\10\10\0\1\365\6\10\3\0\12\10\1\323"+ - "\13\10\3\0\1\10\10\0\5\10\1\u01c3\1\u01c4\3\0"+ - "\7\10\1\u01c5\16\10\3\0\1\10\10\0\7\10\3\0"+ - "\4\10\1\u01c6\21\10\3\0\1\10\10\0\2\10\1\u0121"+ - "\4\10\3\0\26\10\3\0\1\10\10\0\7\10\3\0"+ - "\5\10\1\317\20\10\3\0\1\10\10\0\2\10\1\u01c7"+ - "\4\10\3\0\26\10\3\0\1\10\10\0\5\10\1\u01c8"+ - "\1\10\3\0\26\10\3\0\1\10\10\0\6\10\1\201"+ - "\3\0\10\10\1\257\15\10\3\0\1\10\10\0\6\10"+ - "\1\u01c9\3\0\26\10\3\0\1\10\10\0\3\10\1\u01ca"+ - "\3\10\3\0\26\10\3\0\1\10\10\0\7\10\3\0"+ - "\5\10\1\u01cb\20\10\3\0\1\10\10\0\2\10\1\46"+ - "\4\10\3\0\4\10\1\257\21\10\33\0\1\u0148\55\0"+ - "\1\u01cc\45\0\1\u01cd\54\0\1\u0151\5\0\1\u01ce\3\0"+ - "\1\u01cf\51\0\1\u0155\1\u01d0\27\0\1\u0159\17\0\1\u01d1"+ - "\5\0\1\u01d2\51\0\1\u01d3\32\0\1\u0147\47\0\1\u01d4"+ - "\100\0\1\u0148\30\0\1\u01d5\1\0\1\u0148\63\0\1\u0140"+ - "\53\0\1\u01d6\2\0\1\u01d7\4\0\1\251\54\0\1\u01d8"+ - "\47\0\1\u0148\56\0\1\u01d9\50\0\1\u01da\50\0\1\u0148"+ - "\50\0\1\u01d4\64\0\1\u01db\2\0\1\u01dc\45\0\1\u01dd"+ - "\33\0\1\u0159\2\0\1\u01de\63\0\1\u01df\41\0\1\u013e"+ - "\65\0\1\u01e0\43\0\1\u0148\71\0\1\u01e1\57\0\1\u01e2"+ - "\27\0\1\u01e3\57\0\1\u01e4\34\0\1\10\10\0\7\10"+ - "\3\0\7\10\1\152\16\10\3\0\1\10\10\0\7\10"+ - "\3\0\1\10\1\220\24\10\3\0\1\10\10\0\7\10"+ - "\3\0\12\10\1\213\13\10\3\0\1\10\10\0\7\10"+ - "\3\0\13\10\1\u01e5\12\10\3\0\1\10\10\0\2\10"+ - "\1\u01e6\4\10\3\0\26\10\3\0\1\10\10\0\7\10"+ - "\3\0\12\10\1\u01e7\13\10\3\0\1\10\10\0\4\10"+ - "\1\u01e8\2\10\3\0\26\10\3\0\1\10\10\0\7\10"+ - "\3\0\13\10\1\u01e9\12\10\3\0\1\10\10\0\3\10"+ - "\1\311\3\10\3\0\26\10\3\0\1\10\10\0\7\10"+ - "\3\0\12\10\1\323\13\10\3\0\1\10\10\0\7\10"+ - "\3\0\1\10\1\u01ea\24\10\3\0\1\10\10\0\7\10"+ - "\3\0\12\10\1\u01eb\13\10\3\0\1\10\10\0\6\10"+ - "\1\u01ec\3\0\26\10\3\0\1\10\10\0\7\10\3\0"+ - "\12\10\1\u01ed\13\10\3\0\1\10\10\0\6\10\1\u01ee"+ - "\3\0\26\10\3\0\1\10\10\0\6\10\1\u01ef\3\0"+ - "\26\10\3\0\1\10\10\0\5\10\1\u01af\1\10\3\0"+ - "\26\10\3\0\1\10\10\0\7\10\3\0\12\10\1\u01f0"+ - "\13\10\3\0\1\10\10\0\1\u01f1\6\10\3\0\26\10"+ - "\3\0\1\10\10\0\4\10\1\u01f2\2\10\3\0\26\10"+ - "\3\0\1\10\10\0\7\10\3\0\7\10\1\u01f3\16\10"+ - "\3\0\1\10\10\0\7\10\3\0\2\10\1\u019b\23\10"+ - "\3\0\1\10\10\0\4\10\1\363\2\10\3\0\26\10"+ - "\3\0\1\10\10\0\1\10\1\220\5\10\3\0\26\10"+ - "\3\0\1\10\10\0\7\10\3\0\2\10\1\u01f4\23\10"+ - "\3\0\1\10\10\0\7\10\3\0\4\10\1\u01f5\21\10"+ - "\3\0\1\10\10\0\7\10\3\0\4\10\1\u01f6\21\10"+ - "\3\0\1\10\10\0\1\u01f7\6\10\3\0\26\10\3\0"+ - "\1\10\10\0\7\10\3\0\12\10\1\u01f8\13\10\3\0"+ - "\1\10\10\0\4\10\1\u017d\2\10\3\0\26\10\3\0"+ - "\1\10\10\0\6\10\1\u01f9\3\0\26\10\3\0\1\10"+ - "\10\0\7\10\3\0\1\46\25\10\3\0\1\10\10\0"+ - "\7\10\3\0\4\10\1\u01fa\21\10\3\0\1\10\10\0"+ - "\7\10\3\0\1\10\1\u017d\24\10\3\0\1\10\10\0"+ - "\1\u017d\6\10\3\0\26\10\3\0\1\10\10\0\6\10"+ - "\1\u01fb\3\0\26\10\3\0\1\10\10\0\7\10\3\0"+ - "\14\10\1\46\11\10\3\0\1\10\10\0\2\10\1\361"+ - "\4\10\3\0\26\10\3\0\1\10\10\0\2\10\1\u01fc"+ - "\4\10\3\0\26\10\3\0\1\10\10\0\7\10\3\0"+ - "\7\10\1\u01fd\16\10\3\0\1\10\10\0\1\362\6\10"+ - "\3\0\26\10\3\0\1\10\10\0\5\10\1\u01fe\1\10"+ - "\3\0\26\10\3\0\1\10\10\0\2\10\1\u01ff\4\10"+ - "\3\0\26\10\3\0\1\10\10\0\7\10\3\0\7\10"+ - "\1\u0200\16\10\3\0\1\10\10\0\4\10\1\257\2\10"+ - "\3\0\26\10\3\0\1\10\10\0\1\u0201\6\10\3\0"+ - "\4\10\1\u0202\21\10\3\0\1\10\10\0\7\10\3\0"+ - "\1\10\1\u0203\6\10\1\u018a\15\10\3\0\1\10\10\0"+ - "\7\10\3\0\5\10\1\u0204\20\10\3\0\1\10\10\0"+ - "\2\10\1\u0205\4\10\3\0\26\10\3\0\1\10\10\0"+ - "\7\10\3\0\7\10\1\u0206\16\10\3\0\1\10\10\0"+ - "\6\10\1\153\3\0\26\10\3\0\1\10\10\0\7\10"+ - "\3\0\4\10\1\153\21\10\3\0\1\10\10\0\7\10"+ - "\3\0\13\10\1\u0207\12\10\3\0\1\10\10\0\7\10"+ - "\3\0\21\10\1\257\4\10\3\0\1\10\10\0\7\10"+ - "\3\0\1\10\1\u0208\24\10\3\0\1\10\10\0\7\10"+ - "\3\0\13\10\1\u0109\12\10\3\0\1\10\10\0\7\10"+ - "\3\0\11\10\1\75\14\10\3\0\1\10\10\0\1\u0183"+ - "\6\10\3\0\4\10\1\u0209\21\10\3\0\1\10\10\0"+ - "\7\10\3\0\4\10\1\376\21\10\3\0\1\10\10\0"+ - "\5\10\1\336\1\10\3\0\26\10\3\0\1\10\10\0"+ - "\5\10\1\u020a\1\10\3\0\7\10\1\u020b\16\10\3\0"+ - "\1\10\10\0\7\10\3\0\13\10\1\u020c\12\10\3\0"+ - "\1\10\10\0\7\10\3\0\13\10\1\u020d\12\10\3\0"+ - "\1\10\10\0\7\10\3\0\7\10\1\u0116\16\10\3\0"+ - "\1\10\10\0\7\10\3\0\4\10\1\u020e\21\10\3\0"+ - "\1\10\10\0\7\10\3\0\1\10\1\u0116\5\10\1\353"+ - "\16\10\3\0\1\10\10\0\2\10\1\u020f\4\10\3\0"+ - "\26\10\3\0\1\10\10\0\7\10\3\0\2\10\1\213"+ - "\23\10\3\0\1\10\10\0\7\10\3\0\5\10\1\u0210"+ - "\20\10\3\0\1\10\10\0\4\10\1\u0211\2\10\3\0"+ - "\26\10\3\0\1\10\10\0\4\10\1\u0212\2\10\3\0"+ - "\26\10\3\0\1\10\10\0\7\10\3\0\13\10\1\u0213"+ - "\12\10\3\0\1\10\10\0\1\u0214\6\10\3\0\26\10"+ - "\3\0\1\10\10\0\7\10\3\0\1\10\1\u0215\24\10"+ - "\3\0\1\10\10\0\7\10\3\0\2\10\1\u0216\23\10"+ - "\3\0\1\10\10\0\7\10\3\0\13\10\1\362\12\10"+ - "\3\0\1\10\10\0\7\10\3\0\1\10\1\u0217\24\10"+ - "\3\0\1\10\10\0\7\10\3\0\6\10\1\u0218\17\10"+ - "\3\0\1\10\10\0\7\10\3\0\7\10\1\353\16\10"+ - "\3\0\1\10\10\0\7\10\3\0\1\10\1\u0219\24\10"+ - "\3\0\1\10\10\0\6\10\1\u018e\3\0\13\10\1\u020c"+ - "\12\10\3\0\1\10\10\0\2\10\1\u021a\4\10\3\0"+ - "\26\10\3\0\1\10\10\0\7\10\3\0\6\10\1\u0182"+ - "\17\10\3\0\1\10\10\0\4\10\1\317\2\10\3\0"+ - "\26\10\3\0\1\10\10\0\7\10\3\0\10\10\1\u021b"+ - "\15\10\3\0\1\10\10\0\7\10\3\0\7\10\1\u021c"+ - "\5\10\1\u0182\10\10\3\0\1\10\10\0\1\u0191\6\10"+ - "\3\0\26\10\3\0\1\10\10\0\7\10\3\0\2\10"+ - "\1\u021d\4\10\1\46\16\10\3\0\1\10\10\0\7\10"+ - "\3\0\10\10\1\u0109\15\10\3\0\1\10\10\0\6\10"+ - "\1\u01a2\3\0\26\10\3\0\1\10\10\0\6\10\1\u021e"+ - "\3\0\26\10\3\0\1\10\10\0\7\10\3\0\16\10"+ - "\1\u021f\7\10\3\0\1\10\10\0\1\u0220\6\10\3\0"+ - "\26\10\3\0\1\10\10\0\4\10\1\u0221\2\10\3\0"+ - "\26\10\3\0\1\10\10\0\7\10\3\0\13\10\1\353"+ - "\12\10\3\0\1\10\10\0\7\10\3\0\10\10\1\353"+ - "\15\10\3\0\1\10\10\0\7\10\3\0\2\10\1\u0160"+ - "\23\10\3\0\1\10\10\0\7\10\3\0\4\10\1\u0222"+ - "\21\10\3\0\1\10\10\0\7\10\3\0\4\10\1\u0223"+ - "\21\10\3\0\1\10\10\0\7\10\3\0\13\10\1\u0224"+ - "\12\10\3\0\1\10\10\0\7\10\3\0\13\10\1\u011c"+ - "\12\10\3\0\1\10\10\0\7\10\3\0\1\10\1\u0225"+ - "\24\10\3\0\1\10\10\0\5\10\1\336\1\10\3\0"+ - "\12\10\1\u0226\13\10\3\0\1\10\10\0\7\10\3\0"+ - "\5\10\1\220\20\10\3\0\1\10\10\0\7\10\3\0"+ - "\1\10\1\u0227\24\10\3\0\1\10\10\0\7\10\3\0"+ - "\1\10\1\u0228\24\10\3\0\1\10\10\0\7\10\3\0"+ - "\3\10\1\213\22\10\3\0\1\10\10\0\7\10\3\0"+ - "\13\10\1\u0229\12\10\14\0\1\u0148\60\0\1\u0148\75\0"+ - "\1\u01dc\45\0\1\u022a\36\0\1\u01cc\53\0\1\u0150\50\0"+ - "\1\u0159\101\0\1\u0140\26\0\1\u0148\54\0\1\u022b\55\0"+ - "\1\u022c\46\0\1\u022d\71\0\1\u0158\63\0\1\u0148\51\0"+ - "\1\u022e\27\0\1\u022f\74\0\1\u01d1\32\0\1\u0230\2\0"+ - "\1\u0231\10\0\1\u0232\1\0\1\u0233\1\0\1\u0234\3\0"+ - "\1\u0235\35\0\1\u01cd\60\0\1\u013f\56\0\1\u0147\62\0"+ - "\1\u01d0\45\0\1\u0236\53\0\1\u0237\41\0\1\u01cc\35\0"+ - "\1\10\10\0\7\10\3\0\5\10\1\u0238\20\10\3\0"+ - "\1\10\10\0\7\10\3\0\5\10\1\u0239\20\10\3\0"+ - "\1\10\10\0\7\10\3\0\1\10\1\u0161\24\10\3\0"+ - "\1\10\10\0\5\10\1\u016f\1\10\3\0\26\10\3\0"+ - "\1\10\10\0\7\10\3\0\4\10\1\u023a\21\10\3\0"+ - "\1\10\10\0\7\10\3\0\4\10\1\u023b\21\10\3\0"+ - "\1\10\10\0\7\10\3\0\17\10\1\u023c\6\10\3\0"+ - "\1\10\10\0\2\10\1\213\4\10\3\0\26\10\3\0"+ - "\1\10\10\0\7\10\3\0\6\10\1\u023d\6\10\1\u0182"+ - "\10\10\3\0\1\10\10\0\7\10\3\0\13\10\1\u023e"+ - "\12\10\3\0\1\10\10\0\2\10\1\u023f\4\10\3\0"+ - "\26\10\3\0\1\10\10\0\5\10\1\u0240\1\10\3\0"+ - "\26\10\3\0\1\10\10\0\7\10\3\0\11\10\1\u0241"+ - "\14\10\3\0\1\10\10\0\7\10\3\0\6\10\1\u0242"+ - "\3\10\1\u0243\13\10\3\0\1\10\10\0\7\10\3\0"+ - "\1\10\1\u0244\24\10\3\0\1\10\10\0\7\10\3\0"+ - "\7\10\1\u010e\16\10\3\0\1\10\10\0\7\10\3\0"+ - "\11\10\1\u0245\14\10\3\0\1\10\10\0\7\10\3\0"+ - "\4\10\1\u0246\21\10\3\0\1\10\10\0\7\10\3\0"+ - "\13\10\1\u0247\12\10\3\0\1\10\10\0\5\10\1\u0180"+ - "\1\10\3\0\26\10\3\0\1\10\10\0\7\10\3\0"+ - "\1\10\1\u0248\24\10\3\0\1\10\10\0\7\10\3\0"+ - "\15\10\1\46\10\10\3\0\1\10\10\0\7\10\3\0"+ - "\5\10\1\353\20\10\3\0\1\10\10\0\1\220\6\10"+ - "\3\0\26\10\3\0\1\10\10\0\7\10\3\0\13\10"+ - "\1\u0249\12\10\3\0\1\10\10\0\7\10\3\0\5\10"+ - "\1\u024a\20\10\3\0\1\10\10\0\7\10\3\0\20\10"+ - "\1\46\5\10\3\0\1\10\10\0\2\10\1\u024b\4\10"+ - "\3\0\26\10\3\0\1\10\10\0\7\10\3\0\1\10"+ - "\1\u024c\24\10\3\0\1\10\10\0\7\10\3\0\4\10"+ - "\1\u0238\21\10\3\0\1\10\10\0\6\10\1\u024d\3\0"+ - "\26\10\3\0\1\10\10\0\3\10\1\46\3\10\3\0"+ - "\26\10\3\0\1\10\10\0\4\10\1\u0215\2\10\3\0"+ - "\26\10\3\0\1\10\10\0\2\10\1\72\4\10\3\0"+ - "\26\10\3\0\1\10\10\0\7\10\3\0\2\10\1\257"+ - "\23\10\3\0\1\10\10\0\6\10\1\u024e\3\0\26\10"+ - "\3\0\1\10\10\0\6\10\1\u024f\3\0\26\10\3\0"+ - "\1\10\10\0\1\u024b\6\10\3\0\26\10\3\0\1\10"+ - "\10\0\7\10\3\0\21\10\1\317\4\10\3\0\1\10"+ - "\10\0\7\10\3\0\4\10\1\220\21\10\3\0\1\10"+ - "\10\0\1\u0249\6\10\3\0\26\10\3\0\1\10\10\0"+ - "\7\10\3\0\13\10\1\u018a\12\10\3\0\1\10\10\0"+ - "\7\10\3\0\1\10\1\u0250\24\10\3\0\1\10\10\0"+ - "\7\10\3\0\7\10\1\u015e\16\10\3\0\1\10\10\0"+ - "\7\10\3\0\1\10\1\46\24\10\3\0\1\10\10\0"+ - "\2\10\1\46\4\10\3\0\6\10\1\u0251\17\10\3\0"+ - "\1\10\10\0\7\10\3\0\15\10\1\u0252\10\10\3\0"+ - "\1\10\10\0\7\10\3\0\4\10\1\357\21\10\3\0"+ - "\1\10\10\0\1\u0253\6\10\3\0\26\10\3\0\1\10"+ - "\10\0\7\10\3\0\4\10\1\u0254\21\10\3\0\1\10"+ - "\10\0\7\10\3\0\6\10\1\u0255\17\10\3\0\1\10"+ - "\10\0\4\10\1\u0238\2\10\3\0\26\10\3\0\1\10"+ - "\10\0\3\10\1\220\3\10\3\0\26\10\3\0\1\10"+ - "\10\0\7\10\3\0\4\10\1\257\21\10\3\0\1\10"+ - "\10\0\6\10\1\u0256\3\0\26\10\3\0\1\10\10\0"+ - "\7\10\3\0\1\10\1\u0257\24\10\3\0\1\10\10\0"+ - "\7\10\3\0\16\10\1\46\7\10\3\0\1\10\10\0"+ - "\7\10\3\0\12\10\1\353\13\10\3\0\1\10\10\0"+ - "\7\10\3\0\6\10\1\353\17\10\3\0\1\10\10\0"+ - "\1\365\3\10\1\u01be\2\10\3\0\26\10\3\0\1\10"+ - "\10\0\7\10\3\0\22\10\1\u0258\3\10\3\0\1\10"+ - "\10\0\7\10\3\0\15\10\1\u0182\10\10\3\0\1\10"+ - "\10\0\7\10\3\0\1\10\1\u01fc\24\10\3\0\1\10"+ - "\10\0\7\10\3\0\21\10\1\u0238\4\10\3\0\1\10"+ - "\10\0\7\10\3\0\4\10\1\u0169\21\10\3\0\1\10"+ - "\10\0\7\10\3\0\15\10\1\u0186\10\10\3\0\1\10"+ - "\10\0\7\10\3\0\15\10\1\u0259\10\10\3\0\1\10"+ - "\10\0\7\10\3\0\22\10\1\46\3\10\34\0\1\u0234"+ - "\37\0\1\u025a\71\0\1\u025b\61\0\1\u0148\30\0\1\u025c"+ - "\64\0\1\u025d\65\0\1\u025e\2\0\1\u025f\20\0\1\u0158"+ - "\66\0\1\u0260\64\0\1\251\51\0\1\u0261\47\0\1\u0262"+ - "\35\0\1\u0263\100\0\1\u0264\15\0\1\10\10\0\1\353"+ - "\6\10\3\0\26\10\3\0\1\10\10\0\4\10\1\u0265"+ - "\2\10\3\0\26\10\3\0\1\10\10\0\4\10\1\u0266"+ - "\2\10\3\0\26\10\3\0\1\10\10\0\7\10\3\0"+ - "\1\10\1\u0267\24\10\3\0\1\10\10\0\1\u0182\6\10"+ - "\3\0\26\10\3\0\1\10\10\0\7\10\3\0\13\10"+ - "\1\u0178\12\10\3\0\1\10\10\0\2\10\1\u01f1\4\10"+ - "\3\0\26\10\3\0\1\10\10\0\7\10\3\0\1\10"+ - "\1\362\24\10\3\0\1\10\10\0\7\10\3\0\13\10"+ - "\1\u0116\12\10\3\0\1\10\10\0\1\u0268\6\10\3\0"+ - "\26\10\3\0\1\10\10\0\7\10\3\0\13\10\1\u0269"+ - "\12\10\3\0\1\10\10\0\7\10\3\0\13\10\1\u026a"+ - "\12\10\3\0\1\10\10\0\7\10\3\0\4\10\1\124"+ - "\21\10\3\0\1\10\10\0\7\10\3\0\1\10\1\213"+ - "\24\10\3\0\1\10\10\0\6\10\1\u026b\3\0\26\10"+ - "\3\0\1\10\10\0\7\10\3\0\4\10\1\u026c\21\10"+ - "\3\0\1\10\10\0\7\10\3\0\2\10\1\u026d\23\10"+ - "\3\0\1\10\10\0\3\10\1\353\3\10\3\0\26\10"+ - "\3\0\1\10\10\0\7\10\3\0\1\10\1\355\24\10"+ - "\3\0\1\10\10\0\4\10\1\u026e\2\10\3\0\26\10"+ - "\3\0\1\10\10\0\7\10\3\0\7\10\1\213\16\10"+ - "\3\0\1\10\10\0\2\10\1\u026f\4\10\3\0\26\10"+ - "\3\0\1\10\10\0\7\10\3\0\15\10\1\257\10\10"+ - "\3\0\1\10\10\0\2\10\1\u0270\4\10\3\0\26\10"+ - "\3\0\1\10\10\0\7\10\3\0\4\10\1\u01fc\21\10"+ - "\3\0\1\10\10\0\7\10\3\0\6\10\1\46\17\10"+ - "\3\0\1\10\10\0\7\10\3\0\10\10\1\u0271\15\10"+ - "\3\0\1\10\10\0\7\10\3\0\25\10\1\46\3\0"+ - "\1\10\10\0\6\10\1\u01af\3\0\26\10\3\0\1\10"+ - "\10\0\1\u0272\6\10\3\0\26\10\3\0\1\10\10\0"+ - "\7\10\3\0\23\10\1\257\2\10\3\0\1\10\10\0"+ - "\7\10\3\0\4\10\1\347\21\10\3\0\1\10\10\0"+ - "\6\10\1\72\3\0\26\10\3\0\1\10\10\0\5\10"+ - "\1\u0273\1\10\3\0\26\10\31\0\1\u0148\55\0\1\u01cc"+ - "\47\0\1\u01d9\41\0\1\u0148\52\0\1\u0274\66\0\1\u0275"+ - "\45\0\1\u01cd\50\0\1\u0274\76\0\1\u013e\46\0\1\u0148"+ - "\67\0\1\u0148\6\0\1\10\10\0\7\10\3\0\1\10"+ - "\1\u0276\24\10\3\0\1\10\10\0\1\124\6\10\3\0"+ - "\26\10\3\0\1\10\10\0\7\10\3\0\2\10\1\u0277"+ - "\23\10\3\0\1\10\10\0\2\10\1\u0278\4\10\3\0"+ - "\26\10\3\0\1\10\10\0\7\10\3\0\4\10\1\u0109"+ - "\21\10\3\0\1\10\10\0\7\10\3\0\7\10\1\u0238"+ - "\16\10\3\0\1\10\10\0\7\10\3\0\2\10\1\u017d"+ - "\23\10\3\0\1\10\10\0\7\10\3\0\1\10\1\u0279"+ - "\24\10\3\0\1\10\10\0\4\10\1\u027a\2\10\3\0"+ - "\26\10\3\0\1\10\10\0\7\10\3\0\1\10\1\u027b"+ - "\24\10\3\0\1\10\10\0\1\u0189\6\10\3\0\26\10"+ - "\3\0\1\10\10\0\7\10\3\0\6\10\1\u027c\17\10"+ - "\3\0\1\10\10\0\7\10\3\0\4\10\1\u0266\21\10"+ - "\30\0\1\u0148\44\0\1\u0263\35\0\1\10\10\0\7\10"+ - "\3\0\15\10\1\220\10\10\3\0\1\10\10\0\4\10"+ - "\1\u027d\2\10\3\0\26\10\3\0\1\10\10\0\4\10"+ - "\1\220\2\10\3\0\26\10\3\0\1\10\10\0\7\10"+ - "\3\0\4\10\1\u027e\21\10\3\0\1\10\10\0\1\u027f"+ - "\6\10\3\0\26\10\3\0\1\10\10\0\4\10\1\u0273"+ - "\2\10\3\0\26\10\3\0\1\10\10\0\7\10\3\0"+ - "\6\10\1\u027d\17\10\3\0\1\10\10\0\1\u020d\6\10"+ - "\3\0\26\10\3\0\1\10\10\0\7\10\3\0\14\10"+ - "\1\u017d\11\10\3\0\1\10\10\0\7\10\3\0\4\10"+ - "\1\u017d\21\10\1\0"; - - private static int [] zzUnpackTrans() { - int [] result = new int[27016]; - int offset = 0; - offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackTrans(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - value--; - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /* error codes */ - private static final int ZZ_UNKNOWN_ERROR = 0; - private static final int ZZ_NO_MATCH = 1; - private static final int ZZ_PUSHBACK_2BIG = 2; - - /* error messages for the codes above */ - private static final String ZZ_ERROR_MSG[] = { - "Unkown internal scanner error", - "Error: could not match input", - "Error: pushback value was too large" - }; - - /** - * ZZ_ATTRIBUTE[aState] contains the attributes of state aState - */ - private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); - - private static final String ZZ_ATTRIBUTE_PACKED_0 = - "\5\0\2\11\3\1\1\11\12\1\3\11\23\1\1\11"+ - "\1\1\2\11\1\1\2\11\1\1\1\11\2\1\1\11"+ - "\144\1\21\0\1\11\220\1\7\0\1\1\2\0\1\11"+ - "\24\0\157\1\12\0\1\1\16\0\105\1\16\0\42\1"+ - "\13\0\17\1\2\0\12\1"; - - private static int [] zzUnpackAttribute() { - int [] result = new int[639]; - int offset = 0; - offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAttribute(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - /** the input device */ - private java.io.Reader zzReader; - - /** the current state of the DFA */ - private int zzState; - - /** the current lexical state */ - private int zzLexicalState = YYINITIAL; - - /** this buffer contains the current text to be matched and is - the source of the yytext() string */ - private char zzBuffer[]; - - /** the textposition at the last accepting state */ - private int zzMarkedPos; - - /** the current text position in the buffer */ - private int zzCurrentPos; - - /** startRead marks the beginning of the yytext() string in the buffer */ - private int zzStartRead; - - /** endRead marks the last character in the buffer, that has been read - from input */ - private int zzEndRead; - - /** - * zzAtBOL == true <=> the scanner is currently at the beginning of a line - */ - private boolean zzAtBOL = true; - - /** zzAtEOF == true <=> the scanner is at the EOF */ - private boolean zzAtEOF; - - /* user code: */ - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public SASTokenMaker() { - super(); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, int startOffset) { - super.addToken(array, start,end, tokenType, startOffset); - zzStartRead = zzMarkedPos; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { "*", null }; - } - - - /** - * Returns whether tokens of the specified type should have "mark - * occurrences" enabled for the current programming language. - * - * @param type The token type. - * @return Whether tokens of this type should have "mark occurrences" - * enabled. - */ - @Override - public boolean getMarkOccurrencesOfTokenType(int type) { - return type==Token.IDENTIFIER || type==Token.VARIABLE; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - - // Start off in the proper state. - int state = Token.NULL; - switch (initialTokenType) { - case Token.LITERAL_STRING_DOUBLE_QUOTE: - state = STRING; - start = text.offset; - break; - case Token.LITERAL_CHAR: - state = CHAR; - start = text.offset; - break; - case Token.COMMENT_MULTILINE: - state = MLC; - start = text.offset; - break; - default: - state = Token.NULL; - } - - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtBOL = true; - zzAtEOF = false; - } - - - - - /** - * Creates a new scanner - * There is also a java.io.InputStream version of this constructor. - * - * @param in the java.io.Reader to read input from. - */ - public SASTokenMaker(java.io.Reader in) { - this.zzReader = in; - } - - /** - * Creates a new scanner. - * There is also java.io.Reader version of this constructor. - * - * @param in the java.io.Inputstream to read input from. - */ - public SASTokenMaker(java.io.InputStream in) { - this(new java.io.InputStreamReader(in)); - } - - /** - * Unpacks the compressed character translation table. - * - * @param packed the packed character translation table - * @return the unpacked character translation table - */ - private static char [] zzUnpackCMap(String packed) { - char [] map = new char[0x10000]; - int i = 0; /* index in packed string */ - int j = 0; /* index in unpacked array */ - while (i < 180) { - int count = packed.charAt(i++); - char value = packed.charAt(i++); - do map[j++] = value; while (--count > 0); - } - return map; - } - - - /** - * Closes the input stream. - */ - public final void yyclose() throws java.io.IOException { - zzAtEOF = true; /* indicate end of file */ - zzEndRead = zzStartRead; /* invalidate buffer */ - - if (zzReader != null) - zzReader.close(); - } - - - /** - * Returns the current lexical state. - */ - public final int yystate() { - return zzLexicalState; - } - - - /** - * Enters a new lexical state - * - * @param newState the new lexical state - */ - @Override -public final void yybegin(int newState) { - zzLexicalState = newState; - } - - - /** - * Returns the text matched by the current regular expression. - */ - public final String yytext() { - return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead ); - } - - - /** - * Returns the character at position pos from the - * matched text. - * - * It is equivalent to yytext().charAt(pos), but faster - * - * @param pos the position of the character to fetch. - * A value from 0 to yylength()-1. - * - * @return the character at position pos - */ - public final char yycharat(int pos) { - return zzBuffer[zzStartRead+pos]; - } - - - /** - * Returns the length of the matched text region. - */ - public final int yylength() { - return zzMarkedPos-zzStartRead; - } - - - /** - * Reports an error that occured while scanning. - * - * In a wellformed scanner (no or only correct usage of - * yypushback(int) and a match-all fallback rule) this method - * will only be called with things that "Can't Possibly Happen". - * If this method is called, something is seriously wrong - * (e.g. a JFlex bug producing a faulty scanner etc.). - * - * Usual syntax/scanner level error handling should be done - * in error fallback rules. - * - * @param errorCode the code of the errormessage to display - */ - private void zzScanError(int errorCode) { - String message; - try { - message = ZZ_ERROR_MSG[errorCode]; - } - catch (ArrayIndexOutOfBoundsException e) { - message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; - } - - throw new Error(message); - } - - - /** - * Pushes the specified amount of characters back into the input stream. - * - * They will be read again by then next call of the scanning method - * - * @param number the number of characters to be read again. - * This number must not be greater than yylength()! - */ - public void yypushback(int number) { - if ( number > yylength() ) - zzScanError(ZZ_PUSHBACK_2BIG); - - zzMarkedPos -= number; - } - - - /** - * Resumes scanning until the next regular expression is matched, - * the end of input is encountered or an I/O-Error occurs. - * - * @return the next token - * @exception java.io.IOException if any I/O-Error occurs - */ - public org.fife.ui.rsyntaxtextarea.Token yylex() throws java.io.IOException { - int zzInput; - int zzAction; - - // cached fields: - int zzCurrentPosL; - int zzMarkedPosL; - int zzEndReadL = zzEndRead; - char [] zzBufferL = zzBuffer; - char [] zzCMapL = ZZ_CMAP; - - int [] zzTransL = ZZ_TRANS; - int [] zzRowMapL = ZZ_ROWMAP; - int [] zzAttrL = ZZ_ATTRIBUTE; - - while (true) { - zzMarkedPosL = zzMarkedPos; - - if (zzMarkedPosL > zzStartRead) { - switch (zzBufferL[zzMarkedPosL-1]) { - case '\n': - case '\u000B': - case '\u000C': - case '\u0085': - case '\u2028': - case '\u2029': - zzAtBOL = true; - break; - case '\r': - if (zzMarkedPosL < zzEndReadL) - zzAtBOL = zzBufferL[zzMarkedPosL] != '\n'; - else if (zzAtEOF) - zzAtBOL = false; - else { - boolean eof = zzRefill(); - zzMarkedPosL = zzMarkedPos; - zzEndReadL = zzEndRead; - zzBufferL = zzBuffer; - if (eof) - zzAtBOL = false; - else - zzAtBOL = zzBufferL[zzMarkedPosL] != '\n'; - } - break; - default: - zzAtBOL = false; - } - } - zzAction = -1; - - zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; - - if (zzAtBOL) - zzState = ZZ_LEXSTATE[zzLexicalState+1]; - else - zzState = ZZ_LEXSTATE[zzLexicalState]; - - - zzForAction: { - while (true) { - - if (zzCurrentPosL < zzEndReadL) - zzInput = zzBufferL[zzCurrentPosL++]; - else if (zzAtEOF) { - zzInput = YYEOF; - break zzForAction; - } - else { - // store back cached positions - zzCurrentPos = zzCurrentPosL; - zzMarkedPos = zzMarkedPosL; - boolean eof = zzRefill(); - // get translated positions and possibly new buffer - zzCurrentPosL = zzCurrentPos; - zzMarkedPosL = zzMarkedPos; - zzBufferL = zzBuffer; - zzEndReadL = zzEndRead; - if (eof) { - zzInput = YYEOF; - break zzForAction; - } - else { - zzInput = zzBufferL[zzCurrentPosL++]; - } - } - int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; - if (zzNext == -1) break zzForAction; - zzState = zzNext; - - int zzAttributes = zzAttrL[zzState]; - if ( (zzAttributes & 1) == 1 ) { - zzAction = zzState; - zzMarkedPosL = zzCurrentPosL; - if ( (zzAttributes & 8) == 8 ) break zzForAction; - } - - } - } - - // store back cached position - zzMarkedPos = zzMarkedPosL; - - switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { - case 13: - { yybegin(YYINITIAL); addToken(start,zzStartRead-1, Token.LITERAL_CHAR); return firstToken; - } - case 21: break; - case 2: - { addNullToken(); return firstToken; - } - case 22: break; - case 18: - { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); - } - case 23: break; - case 17: - { start = zzMarkedPos-2; yybegin(MLC); - } - case 24: break; - case 3: - { addToken(Token.WHITESPACE); - } - case 25: break; - case 8: - { start = zzMarkedPos-1; yybegin(CHAR); - } - case 26: break; - case 5: - { addToken(Token.RESERVED_WORD); - } - case 27: break; - case 6: - { addToken(Token.SEPARATOR); - } - case 28: break; - case 16: - { addToken(Token.VARIABLE); - } - case 29: break; - case 14: - { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_CHAR); - } - case 30: break; - case 1: - { addToken(Token.IDENTIFIER); - } - case 31: break; - case 20: - { addToken(Token.FUNCTION); - } - case 32: break; - case 19: - { addToken(Token.DATA_TYPE); - } - case 33: break; - case 11: - { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); return firstToken; - } - case 34: break; - case 9: - { // We must do this because of how we - // abuse JFlex; since we return an entire - // list of tokens at once instead of a - // single token at a time, the "^" regex - // character doesn't really work, so we must - // check that we're at the beginning of a - // line ourselves. - start = zzStartRead; - // Might not be any whitespace. - if (yylength()>1) { - addToken(zzStartRead,zzMarkedPos-2, Token.WHITESPACE); - zzStartRead = zzMarkedPos-1; - } - // Remember: zzStartRead may now be updated, - // so we must check against 'start'. - if (start==s.offset) { - addToken(zzStartRead,zzEndRead, Token.COMMENT_EOL); - addNullToken(); - return firstToken; - } - else { - addToken(zzStartRead,zzStartRead, Token.OPERATOR); - } - } - case 35: break; - case 7: - { start = zzMarkedPos-1; yybegin(STRING); - } - case 36: break; - case 4: - { addToken(Token.OPERATOR); - } - case 37: break; - case 12: - { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); - } - case 38: break; - case 10: - { - } - case 39: break; - case 15: - { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; - } - case 40: break; - default: - if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { - zzAtEOF = true; - switch (zzLexicalState) { - case STRING: { - addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); return firstToken; - } - case 640: break; - case YYINITIAL: { - addNullToken(); return firstToken; - } - case 641: break; - case MLC: { - addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; - } - case 642: break; - case CHAR: { - addToken(start,zzStartRead-1, Token.LITERAL_CHAR); return firstToken; - } - case 643: break; - default: - return null; - } - } - else { - zzScanError(ZZ_NO_MATCH); - } - } - } - } - - -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/SQLTokenMaker.flex b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/SQLTokenMaker.flex deleted file mode 100644 index 414ca88..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/SQLTokenMaker.flex +++ /dev/null @@ -1,473 +0,0 @@ -/* - * 02/15/2005 - * - * SQLTokenMaker.java - Scanner for SQL. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * This class generates tokens representing a text stream as SQL.

- * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated SQLTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.5 - * - */ -%% - -%public -%class SQLTokenMaker -%extends AbstractJFlexTokenMaker -%unicode -%ignorecase -%type org.fife.ui.rsyntaxtextarea.Token - - -%{ - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public SQLTokenMaker() { - super(); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, int startOffset) { - super.addToken(array, start,end, tokenType, startOffset); - zzStartRead = zzMarkedPos; - } - - - /** - * Overridden to return true so paren matching occurs for - * SQL. - * - * @return true always. - */ - @Override - public boolean getCurlyBracesDenoteCodeBlocks(int languageIndex) { - return true; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { "--", null }; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - - // Start off in the proper state. - int state = Token.NULL; - switch (initialTokenType) { - case Token.LITERAL_STRING_DOUBLE_QUOTE: - state = STRING; - start = text.offset; - break; - case Token.LITERAL_CHAR: - state = CHAR; - start = text.offset; - break; - case Token.COMMENT_MULTILINE: - state = MLC; - start = text.offset; - break; - default: - state = Token.NULL; - } - - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(java.io.Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = zzPushbackPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtBOL = true; - zzAtEOF = false; - } - - -%} - -LineTerminator = ([\n]) -Letter = ([A-Za-z]) -Digit = ([0-9]) -Whitespace = ([ \t]+) - -IdentifierStart = ({Letter}) -IdentifierPart = ({IdentifierStart}|{Digit}|[_]) -Identifier = ({IdentifierStart}{IdentifierPart}*) - -Operator = (">="|"<="|"<>"|">"|"<"|"="|"+"|"-"|"*"|"/") -Separator = ([\(\)]) - -Parameter = ([:]{Identifier}) - -Integer = ({Digit}+) -Float = (({Digit}+[.]{Digit}*)|([.]{Digit}*)) -ApproxNum = (({Digit}+[eE][+-]?{Digit}+)|({Digit}+[.]{Digit}*[eE][+-]?[0-9]+)|([.][0-9]*[eE][+-]?[0-9]+)) - -CommentBegin = ("--") -Comment = ({CommentBegin}.*) -MLCBegin = "/*" -MLCEnd = "*/" - -%state STRING -%state CHAR -%state MLC - -%% - - { - - /* Keywords */ - "ADD" | - "ALL" | - "ALTER" | - "AND" | - "ANY" | - "AS" | - "ASC" | - "AUTOINCREMENT" | - "AVA" | - "BETWEEN" | - "BINARY" | - "BIT" | - "BOOLEAN" | - "BY" | - "BYTE" | - "CHAR" | - "CHARACTER" | - "COLUMN" | - "CONSTRAINT" | - "COUNT" | - "COUNTER" | - "CREATE" | - "CURRENCY" | - "DATABASE" | - "DATE" | - "DATETIME" | - "DELETE" | - "DESC" | - "DISALLOW" | - "DISTINCT" | - "DISTINCTROW" | - "DOUBLE" | - "DROP" | - "EXISTS" | - "FLOAT" | - "FLOAT4" | - "FLOAT8" | - "FOREIGN" | - "FROM" | - "GENERAL" | - "GROUP" | - "GUID" | - "HAVING" | - "INNER" | - "INSERT" | - "IGNORE" | - "IMP" | - "IN" | - "INDEX" | - "INT" | - "INTEGER" | - "INTEGER1" | - "INTEGER2" | - "INTEGER4" | - "INTO" | - "IS" | - "JOIN" | - "KEY" | - "LEFT" | - "LEVEL" | - "LIKE" | - "LOGICAL" | - "LONG" | - "LONGBINARY" | - "LONGTEXT" | - "MAX" | - "MEMO" | - "MIN" | - "MOD" | - "MONEY" | - "NOT" | - "NULL" | - "NUMBER" | - "NUMERIC" | - "OLEOBJECT" | - "ON" | - "OPTION" | - "OR" | - "ORDER" | - "OUTER" | - "OWNERACCESS" | - "PARAMETERS" | - "PASSWORD" | - "PERCENT" | - "PIVOT" | - "PRIMARY" | - "REAL" | - "REFERENCES" | - "RIGHT" | - "SELECT" | - "SET" | - "SHORT" | - "SINGLE" | - "SMALLINT" | - "SOME" | - "STDEV" | - "STDEVP" | - "STRING" | - "SUM" | - "TABLE" | - "TABLEID" | - "TEXT" | - "TIME" | - "TIMESTAMP" | - "TOP" | - "TRANSFORM" | - "TYPE" | - "UNION" | - "UNIQUE" | - "UPDATE" | - "USER" | - "VALUE" | - "VALUES" | - "VAR" | - "VARBINARY" | - "VARCHAR" | - "VARP" | - "WHERE" | - "WITH" | - "YESNO" { addToken(Token.RESERVED_WORD); } - - /* SQL99 aggregate functions */ - "AVG" | - "COUNT" | - "MIN" | - "MAX" | - "SUM" { addToken(Token.FUNCTION); } - - /* SQL99 built-in scalar functions */ - "CURRENT_DATE" | - "CURRENT_TIME" | - "CURRENT_TIMESTAMP" | - "CURRENT_USER" | - "SESSION_USER" | - "SYSTEM_USER" { addToken(Token.FUNCTION); } - - /* SQL99 numeric scalar functions */ - "BIT_LENGTH" | - "CHAR_LENGTH" | - "EXTRACT" | - "OCTET_LENGTH" | - "POSITION" { addToken(Token.FUNCTION); } - - /* SQL99 string functions */ - "CONCATENATE" | - "CONVERT" | - "LOWER" | - "SUBSTRING" | - "TRANSLATE" | - "TRIM" | - "UPPER" { addToken(Token.FUNCTION); } - - {LineTerminator} { addNullToken(); return firstToken; } - - {Identifier} { addToken(Token.IDENTIFIER); } - ";" { addToken(Token.IDENTIFIER); } - - {Parameter} { addToken(Token.IDENTIFIER); } - - {Comment} { addToken(Token.COMMENT_EOL); } - {MLCBegin} { start = zzMarkedPos-2; yybegin(MLC); } - - {Whitespace} { addToken(Token.WHITESPACE); } - - {Operator} { addToken(Token.OPERATOR); } - {Separator} { addToken(Token.SEPARATOR); } - - {Integer} { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); } - {Float} { addToken(Token.LITERAL_NUMBER_FLOAT); } - {ApproxNum} { addToken(Token.LITERAL_NUMBER_FLOAT); } - - "\"" { start = zzMarkedPos-1; yybegin(STRING); } - "\'" { start = zzMarkedPos-1; yybegin(CHAR); } - - "["[^\]]*"]" { addToken(Token.PREPROCESSOR); } - "["[^\]]* { addToken(Token.ERROR_IDENTIFIER); addNullToken(); return firstToken; } - - <> { addNullToken(); return firstToken; } - - /* Catch any other (unhandled) characters and flag them as OK; */ - /* I don't know enough about SQL to know what's really invalid. */ - . { addToken(Token.IDENTIFIER); } - -} - - { - - [^\n\"]+ {} - \n { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); return firstToken; } - "\"\"" {} - "\"" { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); } - <> { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); return firstToken; } - -} - - { - - [^\n\']+ {} - \n { addToken(start,zzStartRead-1, Token.LITERAL_CHAR); return firstToken; } - "\'\'" {} - "\'" { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_CHAR); } - <> { addToken(start,zzStartRead-1, Token.LITERAL_CHAR); return firstToken; } - -} - - { - - [^\n\*]+ {} - \n { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; } - {MLCEnd} { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); } - \* {} - <> { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; } - -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/SQLTokenMaker.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/SQLTokenMaker.java deleted file mode 100644 index 7592526..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/SQLTokenMaker.java +++ /dev/null @@ -1,1137 +0,0 @@ -/* The following code was generated by JFlex 1.4.1 on 6/29/14 12:25 AM */ - -/* - * 02/15/2005 - * - * SQLTokenMaker.java - Scanner for SQL. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * This class generates tokens representing a text stream as SQL.

- * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated SQLTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.5 - * - */ - -public class SQLTokenMaker extends AbstractJFlexTokenMaker { - - /** This character denotes the end of file */ - public static final int YYEOF = -1; - - /** lexical states */ - public static final int STRING = 1; - public static final int YYINITIAL = 0; - public static final int MLC = 3; - public static final int CHAR = 2; - - /** - * Translates characters to character classes - */ - private static final String ZZ_CMAP_PACKED = - "\11\0\1\4\1\1\25\0\1\4\1\0\1\54\4\0\1\55\2\15"+ - "\1\13\1\11\1\0\1\12\1\17\1\14\1\3\1\50\1\50\1\3"+ - "\1\45\3\3\1\46\1\3\1\16\1\0\1\10\1\7\1\6\2\0"+ - "\1\21\1\37\1\31\1\22\1\20\1\44\1\47\1\41\1\34\1\51"+ - "\1\52\1\23\1\35\1\26\1\33\1\42\1\53\1\25\1\30\1\24"+ - "\1\32\1\36\1\40\1\43\1\27\1\2\1\56\1\0\1\57\1\0"+ - "\1\5\1\0\1\21\1\37\1\31\1\22\1\20\1\44\1\47\1\41"+ - "\1\34\1\51\1\52\1\23\1\35\1\26\1\33\1\42\1\53\1\25"+ - "\1\30\1\24\1\32\1\36\1\40\1\43\1\27\1\2\uff85\0"; - - /** - * Translates characters to character classes - */ - private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); - - /** - * Translates DFA states to action switch labels. - */ - private static final int [] ZZ_ACTION = zzUnpackAction(); - - private static final String ZZ_ACTION_PACKED_0 = - "\4\0\1\1\1\2\1\1\1\3\1\4\5\5\1\6"+ - "\1\1\1\7\27\1\1\10\1\11\1\12\1\13\1\14"+ - "\1\15\1\13\1\16\1\17\1\13\1\20\1\13\1\0"+ - "\1\21\1\22\4\1\1\23\45\1\2\23\4\1\1\23"+ - "\7\1\1\23\22\1\1\24\1\13\1\25\1\7\1\0"+ - "\3\1\1\26\51\1\1\23\4\1\1\23\2\1\1\23"+ - "\22\1\1\23\4\1\1\23\4\1\1\23\17\1\1\23"+ - "\35\1\1\23\5\1\1\23\10\1\1\23\5\1\1\23"+ - "\11\1\1\23\42\1\1\23\4\1\1\23\16\1\1\26"+ - "\4\1"; - - private static int [] zzUnpackAction() { - int [] result = new int[354]; - int offset = 0; - offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAction(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /** - * Translates a state to a row index in the transition table - */ - private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); - - private static final String ZZ_ROWMAP_PACKED_0 = - "\0\0\0\60\0\140\0\220\0\300\0\300\0\360\0\u0120"+ - "\0\u0150\0\u0180\0\300\0\u01b0\0\u01e0\0\u0210\0\300\0\u0240"+ - "\0\u0270\0\u02a0\0\u02d0\0\u0300\0\u0330\0\u0360\0\u0390\0\u03c0"+ - "\0\u03f0\0\u0420\0\u0450\0\u0480\0\u04b0\0\u04e0\0\u0510\0\u0540"+ - "\0\u0570\0\u05a0\0\u05d0\0\u0600\0\u0630\0\u0660\0\u0690\0\u06c0"+ - "\0\300\0\300\0\u06f0\0\u0720\0\300\0\u0750\0\u0780\0\300"+ - "\0\u07b0\0\u07e0\0\300\0\u0810\0\u0840\0\u0870\0\300\0\u08a0"+ - "\0\u08d0\0\u0900\0\u0930\0\u0960\0\u0990\0\u09c0\0\u09f0\0\u0a20"+ - "\0\u0a50\0\u0a80\0\u0ab0\0\u0ae0\0\u0b10\0\u0b40\0\u0b70\0\u0ba0"+ - "\0\u0bd0\0\u0c00\0\u0c30\0\u0c60\0\u0c90\0\u0cc0\0\u0cf0\0\u0d20"+ - "\0\u0d50\0\u0d80\0\u0db0\0\u0de0\0\u0e10\0\u0e40\0\u0e70\0\u0ea0"+ - "\0\u0ed0\0\u0f00\0\u0f30\0\u0f60\0\u0f90\0\u0fc0\0\u0ff0\0\u1020"+ - "\0\u1050\0\u1080\0\360\0\u10b0\0\u10e0\0\u1110\0\u1140\0\u1170"+ - "\0\u11a0\0\u11d0\0\u1200\0\u1230\0\u1260\0\u1290\0\u12c0\0\u12f0"+ - "\0\u1320\0\u1350\0\u1380\0\u13b0\0\u13e0\0\u1410\0\u1440\0\u1470"+ - "\0\u14a0\0\u14d0\0\u1500\0\u1530\0\u1560\0\u1590\0\u15c0\0\u15f0"+ - "\0\u1620\0\u1650\0\300\0\300\0\300\0\u1680\0\u1680\0\u16b0"+ - "\0\u16e0\0\u1710\0\360\0\u1740\0\u0960\0\u1770\0\u17a0\0\u17d0"+ - "\0\u1800\0\u1830\0\u1860\0\u1890\0\u18c0\0\u18f0\0\u1920\0\u1950"+ - "\0\u1980\0\u19b0\0\u19e0\0\u1a10\0\u1a40\0\u1a70\0\u1aa0\0\u1ad0"+ - "\0\u1b00\0\u1b30\0\u1b60\0\u1b90\0\u1bc0\0\u1bf0\0\u1c20\0\u1c50"+ - "\0\u1c80\0\u1cb0\0\u1ce0\0\u1d10\0\u1d40\0\u1d70\0\u1da0\0\u1dd0"+ - "\0\u1e00\0\u1e30\0\u1e60\0\u1e90\0\u1ec0\0\u1ef0\0\u1f20\0\u1f50"+ - "\0\u1f80\0\u1fb0\0\u1fe0\0\u2010\0\u2040\0\u2070\0\u20a0\0\u20d0"+ - "\0\u2100\0\u2130\0\u2160\0\u2190\0\u21c0\0\u21f0\0\u2220\0\u2250"+ - "\0\u2280\0\u22b0\0\u22e0\0\u2310\0\u2340\0\u2370\0\u12f0\0\u23a0"+ - "\0\u23d0\0\u2400\0\u2430\0\u2460\0\u2490\0\u24c0\0\u24f0\0\u2520"+ - "\0\u2550\0\u2580\0\u25b0\0\u25e0\0\u2610\0\u2640\0\u2670\0\u26a0"+ - "\0\u26d0\0\u2700\0\u2730\0\u2760\0\u2790\0\u27c0\0\u27f0\0\u2820"+ - "\0\u2850\0\u2880\0\u28b0\0\u28e0\0\u2910\0\u2940\0\u2970\0\u29a0"+ - "\0\u29d0\0\u2a00\0\u2a30\0\u2a60\0\u2a90\0\u2ac0\0\u2af0\0\u2b20"+ - "\0\u2b50\0\u2b80\0\u2bb0\0\u2be0\0\u2c10\0\u2c40\0\u2c70\0\u2ca0"+ - "\0\u2cd0\0\u2d00\0\u2d30\0\u2d60\0\u2d90\0\u2dc0\0\u2df0\0\u15f0"+ - "\0\u2e20\0\u2e50\0\u2e80\0\u2eb0\0\u2ee0\0\u0c30\0\u2f10\0\u2f40"+ - "\0\u2f70\0\u2fa0\0\u2fd0\0\u3000\0\u3030\0\u3060\0\u0ff0\0\u3090"+ - "\0\u30c0\0\u2040\0\u30f0\0\u3120\0\u2ca0\0\u3150\0\u3180\0\u31b0"+ - "\0\u31e0\0\u3210\0\u3240\0\u3270\0\u32a0\0\u32d0\0\u3300\0\u3330"+ - "\0\u3360\0\u3390\0\u33c0\0\u33f0\0\u3420\0\u3450\0\u3480\0\u34b0"+ - "\0\u34e0\0\u3510\0\u3540\0\u3570\0\u35a0\0\u35d0\0\u3600\0\u3630"+ - "\0\u3660\0\u3690\0\u36c0\0\u36f0\0\u3720\0\u3750\0\u3780\0\u37b0"+ - "\0\u37e0\0\u3810\0\u3840\0\u3870\0\u38a0\0\u38d0\0\u3900\0\u3930"+ - "\0\u3960\0\u3990\0\u39c0\0\u39f0\0\u3a20\0\u3a50\0\u3a80\0\u3ab0"+ - "\0\u3ae0\0\u3b10\0\u3b40\0\u3b70\0\u3ba0\0\u3bd0\0\u3c00\0\u3c30"+ - "\0\u3c60\0\u3c90\0\u3cc0\0\u3cf0\0\u3d20\0\u3d50\0\u3d80\0\u3db0"+ - "\0\u3de0\0\u3e10"; - - private static int [] zzUnpackRowMap() { - int [] result = new int[354]; - int offset = 0; - offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackRowMap(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int high = packed.charAt(i++) << 16; - result[j++] = high | packed.charAt(i++); - } - return j; - } - - /** - * The transition table of the DFA - */ - private static final int [] ZZ_TRANS = zzUnpackTrans(); - - private static final String ZZ_TRANS_PACKED_0 = - "\1\5\1\6\1\7\1\10\1\11\1\5\1\12\1\13"+ - "\1\14\1\13\1\15\1\13\1\16\1\17\1\20\1\21"+ - "\1\22\1\23\1\24\1\25\1\26\1\27\1\30\1\31"+ - "\1\32\1\33\1\34\1\35\1\36\1\37\1\40\1\41"+ - "\1\42\1\43\1\44\1\7\1\45\2\10\1\46\1\10"+ - "\1\47\1\50\1\7\1\51\1\52\1\53\1\5\1\54"+ - "\1\55\52\54\1\56\3\54\1\57\1\60\53\57\1\61"+ - "\2\57\1\62\1\63\11\62\1\64\44\62\62\0\2\7"+ - "\1\0\1\7\12\0\34\7\7\0\1\10\13\0\1\21"+ - "\1\65\24\0\2\10\1\0\1\10\13\0\1\11\62\0"+ - "\1\13\56\0\2\13\62\0\1\66\60\0\1\67\46\0"+ - "\1\7\15\0\25\7\2\0\1\7\1\0\3\7\7\0"+ - "\1\21\14\0\1\65\24\0\2\21\1\0\1\21\11\0"+ - "\2\7\1\0\1\7\12\0\23\7\1\70\10\7\6\0"+ - "\2\7\1\0\1\7\12\0\2\7\1\71\1\72\2\7"+ - "\1\73\1\7\1\74\1\7\1\75\3\7\1\76\15\7"+ - "\6\0\2\7\1\0\1\7\12\0\1\77\1\100\3\7"+ - "\1\101\5\7\1\102\1\103\17\7\6\0\2\7\1\0"+ - "\1\7\12\0\1\104\12\7\1\105\1\106\17\7\6\0"+ - "\2\7\1\0\1\7\12\0\1\107\1\110\3\7\1\111"+ - "\1\7\1\112\3\7\1\113\1\114\17\7\6\0\2\7"+ - "\1\0\1\7\12\0\1\115\13\7\1\116\17\7\6\0"+ - "\2\7\1\0\1\7\12\0\12\7\1\117\1\120\20\7"+ - "\6\0\2\7\1\0\1\7\12\0\1\121\33\7\6\0"+ - "\2\7\1\0\1\7\12\0\1\122\3\7\1\123\2\7"+ - "\1\124\2\7\1\125\1\126\1\127\1\130\3\7\1\131"+ - "\12\7\6\0\2\7\1\0\1\7\12\0\5\7\1\132"+ - "\4\7\1\133\1\134\5\7\1\135\12\7\6\0\2\7"+ - "\1\0\1\7\12\0\6\7\1\136\1\7\1\137\11\7"+ - "\1\140\11\7\6\0\2\7\1\0\1\7\12\0\3\7"+ - "\1\141\1\7\1\142\1\143\2\7\1\144\1\145\5\7"+ - "\1\146\1\7\1\147\11\7\6\0\2\7\1\0\1\7"+ - "\12\0\6\7\1\150\1\7\1\143\4\7\1\113\11\7"+ - "\1\151\4\7\6\0\2\7\1\0\1\7\12\0\1\152"+ - "\1\153\11\7\1\154\1\155\17\7\6\0\2\7\1\0"+ - "\1\7\12\0\1\7\1\156\32\7\6\0\2\7\1\0"+ - "\1\7\12\0\1\157\6\7\1\160\3\7\1\161\1\162"+ - "\17\7\6\0\2\7\1\0\1\7\12\0\14\7\1\163"+ - "\4\7\1\164\12\7\6\0\2\7\1\0\1\7\12\0"+ - "\1\7\1\165\32\7\6\0\2\7\1\0\1\7\12\0"+ - "\1\166\1\167\3\7\1\170\5\7\1\171\1\172\17\7"+ - "\6\0\2\7\1\0\1\7\12\0\3\7\1\173\1\7"+ - "\1\174\5\7\1\175\20\7\6\0\2\7\1\0\1\7"+ - "\12\0\1\176\4\7\1\177\4\7\1\200\21\7\6\0"+ - "\2\7\1\0\1\7\12\0\13\7\1\201\20\7\6\0"+ - "\2\7\1\0\1\7\12\0\1\202\33\7\4\0\57\53"+ - "\1\203\1\54\1\0\52\54\1\0\3\54\54\0\1\204"+ - "\3\0\1\57\1\0\53\57\1\0\2\57\55\0\1\204"+ - "\2\0\1\62\1\0\11\62\1\0\44\62\14\0\1\205"+ - "\46\0\1\206\5\0\2\207\32\0\2\206\1\0\1\206"+ - "\7\0\1\66\1\0\56\66\2\0\2\7\1\0\1\7"+ - "\12\0\4\7\1\210\7\7\1\211\17\7\6\0\2\7"+ - "\1\0\1\7\12\0\2\7\1\143\31\7\6\0\2\7"+ - "\1\0\1\7\12\0\3\7\1\143\1\137\27\7\6\0"+ - "\2\7\1\0\1\7\12\0\2\7\1\143\4\7\1\143"+ - "\24\7\6\0\2\7\1\0\1\7\12\0\11\7\1\143"+ - "\22\7\6\0\2\7\1\0\1\7\12\0\4\7\1\212"+ - "\27\7\6\0\2\7\1\0\1\7\12\0\1\7\1\143"+ - "\25\7\1\213\4\7\6\0\2\7\1\0\1\7\12\0"+ - "\3\7\1\214\4\7\1\215\23\7\6\0\2\7\1\0"+ - "\1\7\12\0\4\7\1\216\27\7\6\0\2\7\1\0"+ - "\1\7\12\0\13\7\1\113\20\7\6\0\2\7\1\0"+ - "\1\7\12\0\12\7\1\217\21\7\6\0\2\7\1\0"+ - "\1\7\12\0\10\7\1\220\23\7\6\0\2\7\1\0"+ - "\1\7\12\0\16\7\1\221\5\7\1\120\7\7\6\0"+ - "\2\7\1\0\1\7\12\0\6\7\1\222\11\7\1\223"+ - "\6\7\1\224\4\7\6\0\2\7\1\0\1\7\12\0"+ - "\32\7\1\225\1\7\6\0\2\7\1\0\1\7\12\0"+ - "\23\7\1\120\10\7\6\0\2\7\1\0\1\7\12\0"+ - "\17\7\1\226\14\7\6\0\2\7\1\0\1\7\12\0"+ - "\1\7\1\227\12\7\1\230\17\7\6\0\2\7\1\0"+ - "\1\7\12\0\22\7\1\225\11\7\6\0\2\7\1\0"+ - "\1\7\12\0\22\7\1\143\11\7\6\0\2\7\1\0"+ - "\1\7\12\0\15\7\1\231\16\7\6\0\2\7\1\0"+ - "\1\7\12\0\1\7\1\232\22\7\1\233\7\7\6\0"+ - "\2\7\1\0\1\7\12\0\27\7\1\234\4\7\6\0"+ - "\2\7\1\0\1\7\12\0\3\7\1\232\11\7\1\235"+ - "\16\7\6\0\2\7\1\0\1\7\12\0\4\7\1\143"+ - "\27\7\6\0\2\7\1\0\1\7\12\0\10\7\1\236"+ - "\23\7\6\0\2\7\1\0\1\7\12\0\3\7\1\237"+ - "\1\143\3\7\1\240\23\7\6\0\2\7\1\0\1\7"+ - "\12\0\2\7\1\241\2\7\1\242\26\7\6\0\2\7"+ - "\1\0\1\7\12\0\10\7\1\243\23\7\6\0\2\7"+ - "\1\0\1\7\12\0\15\7\1\143\1\7\1\244\14\7"+ - "\6\0\2\7\1\0\1\7\12\0\15\7\1\225\16\7"+ - "\6\0\2\7\1\0\1\7\12\0\6\7\1\245\25\7"+ - "\6\0\2\7\1\0\1\7\12\0\1\7\1\246\32\7"+ - "\6\0\2\7\1\0\1\7\12\0\13\7\1\247\20\7"+ - "\6\0\2\7\1\0\1\7\12\0\1\250\33\7\6\0"+ - "\2\7\1\0\1\7\12\0\5\7\1\251\26\7\6\0"+ - "\2\7\1\0\1\7\12\0\3\7\1\252\2\7\1\253"+ - "\3\7\1\254\21\7\6\0\2\7\1\0\1\7\12\0"+ - "\1\7\1\255\32\7\6\0\2\7\1\0\1\7\12\0"+ - "\14\7\1\256\17\7\6\0\2\7\1\0\1\7\12\0"+ - "\1\257\33\7\6\0\2\7\1\0\1\7\12\0\2\7"+ - "\1\250\17\7\1\223\11\7\6\0\2\7\1\0\1\7"+ - "\12\0\1\260\33\7\6\0\2\7\1\0\1\7\12\0"+ - "\2\7\1\137\31\7\6\0\2\7\1\0\1\7\12\0"+ - "\4\7\1\261\27\7\6\0\2\7\1\0\1\7\12\0"+ - "\4\7\1\137\27\7\6\0\2\7\1\0\1\7\12\0"+ - "\6\7\1\262\25\7\6\0\2\7\1\0\1\7\12\0"+ - "\4\7\1\263\27\7\6\0\2\7\1\0\1\7\12\0"+ - "\2\7\1\264\1\7\1\265\1\7\1\137\1\7\1\266"+ - "\23\7\6\0\2\7\1\0\1\7\12\0\6\7\1\267"+ - "\25\7\6\0\2\7\1\0\1\7\12\0\15\7\1\270"+ - "\16\7\6\0\2\7\1\0\1\7\12\0\23\7\1\143"+ - "\10\7\6\0\2\7\1\0\1\7\12\0\2\7\1\143"+ - "\3\7\1\50\25\7\6\0\2\7\1\0\1\7\12\0"+ - "\6\7\1\143\25\7\6\0\2\7\1\0\1\7\12\0"+ - "\3\7\1\271\1\7\1\272\26\7\6\0\2\7\1\0"+ - "\1\7\12\0\4\7\1\273\27\7\6\0\2\7\1\0"+ - "\1\7\12\0\4\7\1\225\27\7\6\0\2\7\1\0"+ - "\1\7\12\0\13\7\1\274\20\7\6\0\2\7\1\0"+ - "\1\7\12\0\4\7\1\275\1\7\1\276\25\7\6\0"+ - "\2\7\1\0\1\7\12\0\4\7\1\277\27\7\6\0"+ - "\2\7\1\0\1\7\12\0\1\300\33\7\6\0\2\7"+ - "\1\0\1\7\12\0\16\7\1\242\15\7\6\0\2\7"+ - "\1\0\1\7\12\0\5\7\1\301\26\7\6\0\2\7"+ - "\1\0\1\7\12\0\5\7\1\302\2\7\1\303\23\7"+ - "\6\0\2\7\1\0\1\7\12\0\14\7\1\304\17\7"+ - "\6\0\2\7\1\0\1\7\12\0\10\7\1\305\23\7"+ - "\6\0\2\7\1\0\1\7\12\0\16\7\1\306\15\7"+ - "\6\0\2\7\1\0\1\7\12\0\13\7\1\307\20\7"+ - "\6\0\2\7\1\0\1\7\12\0\13\7\1\310\20\7"+ - "\6\0\2\7\1\0\1\7\12\0\5\7\1\311\26\7"+ - "\6\0\2\7\1\0\1\7\12\0\6\7\1\312\25\7"+ - "\6\0\2\7\1\0\1\7\12\0\13\7\1\313\20\7"+ - "\6\0\2\7\1\0\1\7\12\0\14\7\1\71\17\7"+ - "\6\0\2\7\1\0\1\7\12\0\14\7\1\155\17\7"+ - "\6\0\2\7\1\0\1\7\12\0\7\7\1\143\24\7"+ - "\7\0\1\206\41\0\2\206\1\0\1\206\11\0\2\7"+ - "\1\0\1\7\12\0\5\7\1\314\26\7\6\0\2\7"+ - "\1\0\1\7\12\0\10\7\1\315\23\7\6\0\2\7"+ - "\1\0\1\7\12\0\13\7\1\316\20\7\6\0\2\7"+ - "\1\0\1\7\12\0\1\317\33\7\6\0\2\7\1\0"+ - "\1\7\12\0\1\320\1\321\32\7\6\0\2\7\1\0"+ - "\1\7\12\0\17\7\1\322\14\7\6\0\2\7\1\0"+ - "\1\7\12\0\1\7\1\323\2\7\1\324\27\7\6\0"+ - "\2\7\1\0\1\7\12\0\1\232\33\7\6\0\2\7"+ - "\1\0\1\7\12\0\27\7\1\325\4\7\6\0\2\7"+ - "\1\0\1\7\12\0\1\326\33\7\6\0\2\7\1\0"+ - "\1\7\12\0\14\7\1\327\17\7\6\0\2\7\1\0"+ - "\1\7\12\0\1\143\33\7\6\0\2\7\1\0\1\7"+ - "\12\0\3\7\1\330\30\7\6\0\2\7\1\0\1\7"+ - "\12\0\6\7\1\331\25\7\6\0\2\7\1\0\1\7"+ - "\12\0\15\7\1\213\16\7\6\0\2\7\1\0\1\7"+ - "\12\0\1\332\33\7\6\0\2\7\1\0\1\7\12\0"+ - "\3\7\1\143\30\7\6\0\2\7\1\0\1\7\12\0"+ - "\1\333\33\7\6\0\2\7\1\0\1\7\12\0\21\7"+ - "\1\120\12\7\6\0\2\7\1\0\1\7\12\0\1\334"+ - "\16\7\1\137\14\7\6\0\2\7\1\0\1\7\12\0"+ - "\6\7\1\270\25\7\6\0\2\7\1\0\1\7\12\0"+ - "\1\335\33\7\6\0\2\7\1\0\1\7\12\0\10\7"+ - "\1\336\23\7\6\0\2\7\1\0\1\7\12\0\1\337"+ - "\33\7\6\0\2\7\1\0\1\7\12\0\14\7\1\340"+ - "\17\7\6\0\2\7\1\0\1\7\12\0\4\7\1\341"+ - "\27\7\6\0\2\7\1\0\1\7\12\0\10\7\1\342"+ - "\23\7\6\0\2\7\1\0\1\7\12\0\27\7\1\322"+ - "\4\7\6\0\2\7\1\0\1\7\12\0\3\7\1\343"+ - "\30\7\6\0\2\7\1\0\1\7\12\0\5\7\1\120"+ - "\26\7\6\0\2\7\1\0\1\7\12\0\1\7\1\317"+ - "\32\7\6\0\2\7\1\0\1\7\12\0\5\7\1\344"+ - "\26\7\6\0\2\7\1\0\1\7\12\0\12\7\1\345"+ - "\21\7\6\0\2\7\1\0\1\7\12\0\10\7\1\346"+ - "\1\347\4\7\1\350\15\7\6\0\2\7\1\0\1\7"+ - "\12\0\6\7\1\351\25\7\6\0\2\7\1\0\1\7"+ - "\12\0\5\7\1\352\26\7\6\0\2\7\1\0\1\7"+ - "\12\0\13\7\1\155\17\7\1\353\6\0\2\7\1\0"+ - "\1\7\12\0\5\7\1\143\26\7\6\0\2\7\1\0"+ - "\1\7\12\0\13\7\1\354\20\7\6\0\2\7\1\0"+ - "\1\7\12\0\1\355\33\7\6\0\2\7\1\0\1\7"+ - "\12\0\1\356\33\7\6\0\2\7\1\0\1\7\12\0"+ - "\14\7\1\357\17\7\6\0\2\7\1\0\1\7\12\0"+ - "\1\153\33\7\6\0\2\7\1\0\1\7\12\0\1\360"+ - "\12\7\1\143\20\7\6\0\2\7\1\0\1\7\12\0"+ - "\1\247\33\7\6\0\2\7\1\0\1\7\12\0\13\7"+ - "\1\300\20\7\6\0\2\7\1\0\1\7\12\0\13\7"+ - "\1\143\20\7\6\0\2\7\1\0\1\7\12\0\12\7"+ - "\1\361\21\7\6\0\2\7\1\0\1\7\12\0\11\7"+ - "\1\362\5\7\1\363\2\7\1\143\11\7\6\0\2\7"+ - "\1\0\1\7\12\0\20\7\1\364\13\7\6\0\2\7"+ - "\1\0\1\7\12\0\3\7\1\365\30\7\6\0\2\7"+ - "\1\0\1\366\12\0\34\7\6\0\2\7\1\0\1\7"+ - "\12\0\1\7\1\367\32\7\6\0\2\7\1\0\1\7"+ - "\12\0\21\7\1\143\12\7\6\0\2\7\1\0\1\7"+ - "\12\0\5\7\1\225\26\7\6\0\2\7\1\0\1\7"+ - "\12\0\11\7\1\370\22\7\6\0\2\7\1\0\1\7"+ - "\12\0\1\7\1\371\32\7\6\0\2\7\1\0\1\7"+ - "\12\0\10\7\1\372\23\7\6\0\2\7\1\0\1\7"+ - "\12\0\15\7\1\276\16\7\6\0\2\7\1\0\1\7"+ - "\12\0\14\7\1\373\17\7\6\0\2\7\1\0\1\7"+ - "\12\0\13\7\1\120\20\7\6\0\2\7\1\0\1\7"+ - "\12\0\1\7\1\374\32\7\6\0\2\7\1\0\1\7"+ - "\12\0\15\7\1\143\16\7\6\0\2\7\1\0\1\7"+ - "\12\0\1\375\33\7\6\0\2\7\1\0\1\7\12\0"+ - "\1\376\33\7\6\0\2\7\1\0\1\7\12\0\12\7"+ - "\1\113\21\7\6\0\2\7\1\0\1\7\12\0\1\7"+ - "\1\377\32\7\6\0\2\7\1\0\1\7\12\0\4\7"+ - "\1\u0100\27\7\6\0\2\7\1\0\1\7\12\0\14\7"+ - "\1\u0101\17\7\6\0\2\7\1\0\1\7\12\0\4\7"+ - "\1\u0102\27\7\6\0\2\7\1\0\1\7\12\0\17\7"+ - "\1\u0103\14\7\6\0\2\7\1\0\1\7\12\0\3\7"+ - "\1\225\30\7\6\0\2\7\1\0\1\7\12\0\3\7"+ - "\1\u0104\30\7\6\0\2\7\1\0\1\7\12\0\14\7"+ - "\1\u0105\17\7\6\0\2\7\1\0\1\7\12\0\4\7"+ - "\1\u0106\12\7\1\363\14\7\6\0\2\7\1\0\1\7"+ - "\12\0\5\7\1\213\26\7\6\0\2\7\1\0\1\7"+ - "\12\0\11\7\1\u0107\22\7\6\0\2\7\1\0\1\7"+ - "\12\0\1\u0108\33\7\6\0\2\7\1\0\1\7\12\0"+ - "\10\7\1\u0109\23\7\6\0\2\7\1\0\1\7\12\0"+ - "\10\7\1\u010a\23\7\6\0\2\7\1\0\1\7\12\0"+ - "\5\7\1\u010b\26\7\6\0\2\7\1\0\1\7\12\0"+ - "\5\7\1\u010c\26\7\6\0\2\7\1\0\1\7\12\0"+ - "\11\7\1\120\22\7\6\0\2\7\1\0\1\7\12\0"+ - "\14\7\1\u010d\17\7\6\0\2\7\1\0\1\7\12\0"+ - "\16\7\1\u010e\15\7\6\0\2\7\1\0\1\7\12\0"+ - "\6\7\1\u010f\25\7\6\0\2\7\1\0\1\7\12\0"+ - "\1\u0110\33\7\6\0\2\7\1\0\1\7\12\0\4\7"+ - "\1\u0111\27\7\6\0\2\7\1\0\1\7\12\0\3\7"+ - "\1\u0112\30\7\6\0\2\7\1\0\1\7\12\0\1\u0113"+ - "\33\7\6\0\2\7\1\0\1\7\12\0\15\7\1\155"+ - "\16\7\6\0\2\7\1\0\1\7\12\0\4\7\1\u0114"+ - "\27\7\6\0\2\7\1\0\1\7\12\0\1\7\1\u0115"+ - "\32\7\6\0\2\7\1\0\1\7\12\0\1\u0116\33\7"+ - "\6\0\2\7\1\0\1\7\12\0\4\7\1\u0117\27\7"+ - "\6\0\2\7\1\0\1\366\12\0\1\7\1\u0118\32\7"+ - "\6\0\2\7\1\0\1\7\12\0\12\7\1\225\21\7"+ - "\6\0\2\7\1\0\1\7\12\0\17\7\1\u0119\14\7"+ - "\6\0\2\7\1\0\1\7\12\0\4\7\1\u011a\27\7"+ - "\6\0\2\7\1\0\1\7\12\0\5\7\1\u011b\26\7"+ - "\6\0\2\7\1\0\1\7\12\0\13\7\1\155\20\7"+ - "\6\0\2\7\1\0\1\7\12\0\27\7\1\u011c\4\7"+ - "\6\0\2\7\1\0\1\7\12\0\1\u011d\33\7\6\0"+ - "\2\7\1\0\1\7\12\0\21\7\1\u011e\12\7\6\0"+ - "\2\7\1\0\1\7\12\0\14\7\1\u011f\17\7\6\0"+ - "\2\7\1\0\1\7\12\0\1\u0120\33\7\6\0\2\7"+ - "\1\0\1\7\12\0\1\u0121\33\7\6\0\2\7\1\0"+ - "\1\7\12\0\3\7\1\u0122\30\7\6\0\2\7\1\0"+ - "\1\7\12\0\5\7\1\202\26\7\6\0\2\7\1\0"+ - "\1\7\12\0\1\u0123\33\7\6\0\2\7\1\0\1\7"+ - "\12\0\15\7\1\u0124\16\7\6\0\2\7\1\0\1\7"+ - "\12\0\20\7\1\u0125\13\7\6\0\2\7\1\0\1\7"+ - "\12\0\4\7\1\u0126\27\7\6\0\2\7\1\0\1\7"+ - "\12\0\4\7\1\u0127\27\7\6\0\2\7\1\0\1\7"+ - "\12\0\14\7\1\u0128\17\7\6\0\2\7\1\0\1\7"+ - "\12\0\5\7\1\u0107\26\7\6\0\2\7\1\0\1\7"+ - "\12\0\11\7\1\u0129\22\7\6\0\2\7\1\0\1\7"+ - "\12\0\10\7\1\143\23\7\6\0\2\7\1\0\1\7"+ - "\12\0\6\7\1\u012a\25\7\6\0\2\7\1\0\1\7"+ - "\12\0\14\7\1\126\17\7\6\0\2\7\1\0\1\7"+ - "\12\0\1\7\1\u012b\32\7\6\0\2\7\1\0\1\7"+ - "\12\0\3\7\1\u012c\30\7\6\0\2\7\1\0\1\7"+ - "\12\0\6\7\1\u012d\25\7\6\0\2\7\1\0\1\7"+ - "\12\0\1\107\33\7\6\0\2\7\1\0\1\7\12\0"+ - "\1\7\1\232\32\7\6\0\2\7\1\0\1\7\12\0"+ - "\3\7\1\u012e\20\7\1\u012f\7\7\6\0\2\7\1\0"+ - "\1\7\12\0\4\7\1\u0130\27\7\6\0\2\7\1\0"+ - "\1\7\12\0\1\u0131\33\7\6\0\2\7\1\0\1\7"+ - "\12\0\14\7\1\215\17\7\6\0\2\7\1\0\1\7"+ - "\12\0\13\7\1\u0132\20\7\6\0\2\7\1\0\1\7"+ - "\12\0\27\7\1\143\4\7\6\0\2\7\1\0\1\7"+ - "\12\0\15\7\1\u0133\16\7\6\0\2\7\1\0\1\7"+ - "\12\0\5\7\1\u0134\26\7\6\0\2\7\1\0\1\7"+ - "\12\0\14\7\1\u0123\17\7\6\0\2\7\1\0\1\7"+ - "\12\0\6\7\1\u0135\25\7\6\0\2\7\1\0\1\7"+ - "\12\0\5\7\1\u0136\26\7\6\0\2\7\1\0\1\7"+ - "\12\0\4\7\1\u0137\27\7\6\0\2\7\1\0\1\7"+ - "\12\0\5\7\1\u0129\26\7\6\0\2\7\1\0\1\7"+ - "\12\0\11\7\1\145\22\7\6\0\2\7\1\0\1\7"+ - "\12\0\31\7\1\237\2\7\6\0\2\7\1\0\1\7"+ - "\12\0\1\7\1\u0138\32\7\6\0\2\7\1\0\1\7"+ - "\12\0\1\u0139\33\7\6\0\2\7\1\0\1\7\12\0"+ - "\1\7\1\257\32\7\6\0\2\7\1\0\1\7\12\0"+ - "\6\7\1\276\25\7\6\0\2\7\1\0\1\7\12\0"+ - "\1\155\33\7\6\0\2\7\1\0\1\7\12\0\1\7"+ - "\1\155\32\7\6\0\2\7\1\0\1\7\12\0\1\u013a"+ - "\33\7\6\0\2\7\1\0\1\7\12\0\6\7\1\120"+ - "\25\7\6\0\2\7\1\0\1\7\12\0\1\u013b\33\7"+ - "\6\0\2\7\1\0\1\7\12\0\13\7\1\u013c\20\7"+ - "\6\0\2\7\1\0\1\7\12\0\14\7\1\u013d\17\7"+ - "\6\0\2\7\1\0\1\7\12\0\25\7\2\143\5\7"+ - "\6\0\2\7\1\0\1\7\12\0\27\7\1\155\4\7"+ - "\6\0\2\7\1\0\1\7\12\0\4\7\1\213\27\7"+ - "\6\0\2\7\1\0\1\7\12\0\11\7\1\u013e\22\7"+ - "\6\0\2\7\1\0\1\7\12\0\10\7\1\225\23\7"+ - "\6\0\2\7\1\0\1\7\12\0\13\7\1\u013f\20\7"+ - "\6\0\2\7\1\0\1\7\12\0\11\7\1\u0140\22\7"+ - "\6\0\2\7\1\0\1\7\12\0\1\7\1\u0141\32\7"+ - "\6\0\2\7\1\0\1\7\12\0\13\7\1\u0142\20\7"+ - "\6\0\2\7\1\0\1\7\12\0\1\7\1\u0143\32\7"+ - "\6\0\2\7\1\0\1\7\12\0\6\7\1\u0144\25\7"+ - "\6\0\2\7\1\0\1\7\12\0\6\7\1\u0133\25\7"+ - "\6\0\2\7\1\0\1\u0145\12\0\34\7\6\0\2\7"+ - "\1\0\1\7\12\0\14\7\1\u0146\17\7\6\0\2\7"+ - "\1\0\1\7\12\0\4\7\1\u0147\4\7\1\202\22\7"+ - "\6\0\2\7\1\0\1\7\12\0\1\7\1\u0112\32\7"+ - "\6\0\2\7\1\0\1\7\12\0\1\u0148\33\7\6\0"+ - "\2\7\1\0\1\7\12\0\11\7\1\u0149\22\7\6\0"+ - "\2\7\1\0\1\7\12\0\5\7\1\u014a\26\7\6\0"+ - "\2\7\1\0\1\7\12\0\6\7\1\u014b\25\7\6\0"+ - "\2\7\1\0\1\7\12\0\4\7\1\u014c\27\7\6\0"+ - "\2\7\1\0\1\7\12\0\5\7\1\71\26\7\6\0"+ - "\2\7\1\0\1\7\12\0\13\7\1\u014d\20\7\6\0"+ - "\2\7\1\0\1\7\12\0\5\7\1\u014e\26\7\6\0"+ - "\2\7\1\0\1\7\12\0\20\7\1\143\13\7\6\0"+ - "\2\7\1\0\1\7\12\0\4\7\1\u014f\27\7\6\0"+ - "\2\7\1\0\1\7\12\0\4\7\1\u0150\27\7\6\0"+ - "\2\7\1\0\1\7\12\0\5\7\1\310\26\7\6\0"+ - "\2\7\1\0\1\7\12\0\15\7\1\113\16\7\6\0"+ - "\2\7\1\0\1\7\12\0\11\7\1\u0151\22\7\6\0"+ - "\2\7\1\0\1\7\12\0\12\7\1\u0152\21\7\6\0"+ - "\2\7\1\0\1\7\12\0\6\7\1\u0153\25\7\6\0"+ - "\2\7\1\0\1\u0154\12\0\34\7\6\0\2\7\1\0"+ - "\1\7\12\0\6\7\1\u012e\25\7\6\0\2\7\1\0"+ - "\1\7\12\0\11\7\1\u0155\22\7\6\0\2\7\1\0"+ - "\1\7\12\0\25\7\1\143\2\7\1\143\3\7\6\0"+ - "\2\7\1\0\1\7\12\0\27\7\1\u0156\4\7\6\0"+ - "\2\7\1\0\1\7\12\0\1\u0157\33\7\6\0\2\7"+ - "\1\0\1\7\12\0\6\7\1\213\25\7\6\0\2\7"+ - "\1\0\1\7\12\0\1\u0158\33\7\6\0\2\7\1\0"+ - "\1\7\12\0\5\7\1\u012c\26\7\6\0\2\7\1\0"+ - "\1\7\12\0\1\213\33\7\6\0\2\7\1\0\1\7"+ - "\12\0\1\u0100\33\7\6\0\2\7\1\0\1\7\12\0"+ - "\10\7\1\223\23\7\6\0\2\7\1\0\1\7\12\0"+ - "\27\7\1\213\4\7\6\0\2\7\1\0\1\7\12\0"+ - "\2\7\1\u012e\1\7\1\u0159\5\7\1\u0152\21\7\6\0"+ - "\2\7\1\0\1\7\12\0\1\u015a\33\7\6\0\2\7"+ - "\1\0\1\7\12\0\4\7\1\u015b\27\7\6\0\2\7"+ - "\1\0\1\7\12\0\5\7\1\u0100\26\7\6\0\2\7"+ - "\1\0\1\7\12\0\15\7\1\370\16\7\6\0\2\7"+ - "\1\0\1\7\12\0\14\7\1\u015c\17\7\6\0\2\7"+ - "\1\0\1\7\12\0\10\7\1\u0100\23\7\6\0\2\7"+ - "\1\0\1\7\12\0\21\7\1\213\12\7\6\0\2\7"+ - "\1\0\1\7\12\0\15\7\1\u015d\16\7\6\0\2\7"+ - "\1\0\1\7\12\0\1\u015e\33\7\6\0\2\7\1\0"+ - "\1\7\12\0\10\7\1\u015f\23\7\6\0\2\7\1\0"+ - "\1\7\12\0\4\7\1\u0160\27\7\6\0\2\7\1\0"+ - "\1\7\12\0\1\7\1\u0161\32\7\6\0\2\7\1\0"+ - "\1\7\12\0\15\7\1\u0162\16\7\6\0\2\7\1\0"+ - "\1\7\12\0\22\7\1\213\11\7\4\0"; - - private static int [] zzUnpackTrans() { - int [] result = new int[15936]; - int offset = 0; - offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackTrans(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - value--; - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /* error codes */ - private static final int ZZ_UNKNOWN_ERROR = 0; - private static final int ZZ_NO_MATCH = 1; - private static final int ZZ_PUSHBACK_2BIG = 2; - - /* error messages for the codes above */ - private static final String ZZ_ERROR_MSG[] = { - "Unkown internal scanner error", - "Error: could not match input", - "Error: pushback value was too large" - }; - - /** - * ZZ_ATTRIBUTE[aState] contains the attributes of state aState - */ - private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); - - private static final String ZZ_ATTRIBUTE_PACKED_0 = - "\4\0\2\11\4\1\1\11\3\1\1\11\31\1\2\11"+ - "\2\1\1\11\2\1\1\11\2\1\1\11\1\1\1\0"+ - "\1\1\1\11\113\1\3\11\1\1\1\0\333\1"; - - private static int [] zzUnpackAttribute() { - int [] result = new int[354]; - int offset = 0; - offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAttribute(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - /** the input device */ - private java.io.Reader zzReader; - - /** the current state of the DFA */ - private int zzState; - - /** the current lexical state */ - private int zzLexicalState = YYINITIAL; - - /** this buffer contains the current text to be matched and is - the source of the yytext() string */ - private char zzBuffer[]; - - /** the textposition at the last accepting state */ - private int zzMarkedPos; - - /** the current text position in the buffer */ - private int zzCurrentPos; - - /** startRead marks the beginning of the yytext() string in the buffer */ - private int zzStartRead; - - /** endRead marks the last character in the buffer, that has been read - from input */ - private int zzEndRead; - - /** zzAtEOF == true <=> the scanner is at the EOF */ - private boolean zzAtEOF; - - /* user code: */ - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public SQLTokenMaker() { - super(); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, int startOffset) { - super.addToken(array, start,end, tokenType, startOffset); - zzStartRead = zzMarkedPos; - } - - - /** - * Overridden to return true so paren matching occurs for - * SQL. - * - * @return true always. - */ - @Override - public boolean getCurlyBracesDenoteCodeBlocks(int languageIndex) { - return true; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { "--", null }; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - - // Start off in the proper state. - int state = Token.NULL; - switch (initialTokenType) { - case Token.LITERAL_STRING_DOUBLE_QUOTE: - state = STRING; - start = text.offset; - break; - case Token.LITERAL_CHAR: - state = CHAR; - start = text.offset; - break; - case Token.COMMENT_MULTILINE: - state = MLC; - start = text.offset; - break; - default: - state = Token.NULL; - } - - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(java.io.Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtEOF = false; - } - - - - - /** - * Creates a new scanner - * There is also a java.io.InputStream version of this constructor. - * - * @param in the java.io.Reader to read input from. - */ - public SQLTokenMaker(java.io.Reader in) { - this.zzReader = in; - } - - /** - * Creates a new scanner. - * There is also java.io.Reader version of this constructor. - * - * @param in the java.io.Inputstream to read input from. - */ - public SQLTokenMaker(java.io.InputStream in) { - this(new java.io.InputStreamReader(in)); - } - - /** - * Unpacks the compressed character translation table. - * - * @param packed the packed character translation table - * @return the unpacked character translation table - */ - private static char [] zzUnpackCMap(String packed) { - char [] map = new char[0x10000]; - int i = 0; /* index in packed string */ - int j = 0; /* index in unpacked array */ - while (i < 178) { - int count = packed.charAt(i++); - char value = packed.charAt(i++); - do map[j++] = value; while (--count > 0); - } - return map; - } - - - /** - * Closes the input stream. - */ - public final void yyclose() throws java.io.IOException { - zzAtEOF = true; /* indicate end of file */ - zzEndRead = zzStartRead; /* invalidate buffer */ - - if (zzReader != null) - zzReader.close(); - } - - - /** - * Returns the current lexical state. - */ - public final int yystate() { - return zzLexicalState; - } - - - /** - * Enters a new lexical state - * - * @param newState the new lexical state - */ - @Override - public final void yybegin(int newState) { - zzLexicalState = newState; - } - - - /** - * Returns the text matched by the current regular expression. - */ - public final String yytext() { - return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead ); - } - - - /** - * Returns the character at position pos from the - * matched text. - * - * It is equivalent to yytext().charAt(pos), but faster - * - * @param pos the position of the character to fetch. - * A value from 0 to yylength()-1. - * - * @return the character at position pos - */ - public final char yycharat(int pos) { - return zzBuffer[zzStartRead+pos]; - } - - - /** - * Returns the length of the matched text region. - */ - public final int yylength() { - return zzMarkedPos-zzStartRead; - } - - - /** - * Reports an error that occured while scanning. - * - * In a wellformed scanner (no or only correct usage of - * yypushback(int) and a match-all fallback rule) this method - * will only be called with things that "Can't Possibly Happen". - * If this method is called, something is seriously wrong - * (e.g. a JFlex bug producing a faulty scanner etc.). - * - * Usual syntax/scanner level error handling should be done - * in error fallback rules. - * - * @param errorCode the code of the errormessage to display - */ - private void zzScanError(int errorCode) { - String message; - try { - message = ZZ_ERROR_MSG[errorCode]; - } - catch (ArrayIndexOutOfBoundsException e) { - message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; - } - - throw new Error(message); - } - - - /** - * Pushes the specified amount of characters back into the input stream. - * - * They will be read again by then next call of the scanning method - * - * @param number the number of characters to be read again. - * This number must not be greater than yylength()! - */ - public void yypushback(int number) { - if ( number > yylength() ) - zzScanError(ZZ_PUSHBACK_2BIG); - - zzMarkedPos -= number; - } - - - /** - * Resumes scanning until the next regular expression is matched, - * the end of input is encountered or an I/O-Error occurs. - * - * @return the next token - * @exception java.io.IOException if any I/O-Error occurs - */ - public org.fife.ui.rsyntaxtextarea.Token yylex() throws java.io.IOException { - int zzInput; - int zzAction; - - // cached fields: - int zzCurrentPosL; - int zzMarkedPosL; - int zzEndReadL = zzEndRead; - char [] zzBufferL = zzBuffer; - char [] zzCMapL = ZZ_CMAP; - - int [] zzTransL = ZZ_TRANS; - int [] zzRowMapL = ZZ_ROWMAP; - int [] zzAttrL = ZZ_ATTRIBUTE; - - while (true) { - zzMarkedPosL = zzMarkedPos; - - zzAction = -1; - - zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; - - zzState = zzLexicalState; - - - zzForAction: { - while (true) { - - if (zzCurrentPosL < zzEndReadL) - zzInput = zzBufferL[zzCurrentPosL++]; - else if (zzAtEOF) { - zzInput = YYEOF; - break zzForAction; - } - else { - // store back cached positions - zzCurrentPos = zzCurrentPosL; - zzMarkedPos = zzMarkedPosL; - boolean eof = zzRefill(); - // get translated positions and possibly new buffer - zzCurrentPosL = zzCurrentPos; - zzMarkedPosL = zzMarkedPos; - zzBufferL = zzBuffer; - zzEndReadL = zzEndRead; - if (eof) { - zzInput = YYEOF; - break zzForAction; - } - else { - zzInput = zzBufferL[zzCurrentPosL++]; - } - } - int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; - if (zzNext == -1) break zzForAction; - zzState = zzNext; - - int zzAttributes = zzAttrL[zzState]; - if ( (zzAttributes & 1) == 1 ) { - zzAction = zzState; - zzMarkedPosL = zzCurrentPosL; - if ( (zzAttributes & 8) == 8 ) break zzForAction; - } - - } - } - - // store back cached position - zzMarkedPos = zzMarkedPosL; - - switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { - case 20: - { addToken(Token.PREPROCESSOR); - } - case 23: break; - case 2: - { addNullToken(); return firstToken; - } - case 24: break; - case 21: - { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); - } - case 25: break; - case 18: - { start = zzMarkedPos-2; yybegin(MLC); - } - case 26: break; - case 4: - { addToken(Token.WHITESPACE); - } - case 27: break; - case 14: - { addToken(start,zzStartRead-1, Token.LITERAL_CHAR); return firstToken; - } - case 28: break; - case 9: - { start = zzMarkedPos-1; yybegin(CHAR); - } - case 29: break; - case 7: - { addToken(Token.LITERAL_NUMBER_FLOAT); - } - case 30: break; - case 19: - { addToken(Token.RESERVED_WORD); - } - case 31: break; - case 6: - { addToken(Token.SEPARATOR); - } - case 32: break; - case 15: - { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_CHAR); - } - case 33: break; - case 1: - { addToken(Token.IDENTIFIER); - } - case 34: break; - case 22: - { addToken(Token.FUNCTION); - } - case 35: break; - case 12: - { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); return firstToken; - } - case 36: break; - case 17: - { addToken(Token.COMMENT_EOL); - } - case 37: break; - case 8: - { start = zzMarkedPos-1; yybegin(STRING); - } - case 38: break; - case 3: - { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); - } - case 39: break; - case 5: - { addToken(Token.OPERATOR); - } - case 40: break; - case 13: - { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); - } - case 41: break; - case 10: - { addToken(Token.ERROR_IDENTIFIER); addNullToken(); return firstToken; - } - case 42: break; - case 11: - { - } - case 43: break; - case 16: - { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; - } - case 44: break; - default: - if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { - zzAtEOF = true; - switch (zzLexicalState) { - case STRING: { - addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); return firstToken; - } - case 355: break; - case YYINITIAL: { - addNullToken(); return firstToken; - } - case 356: break; - case MLC: { - addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; - } - case 357: break; - case CHAR: { - addToken(start,zzStartRead-1, Token.LITERAL_CHAR); return firstToken; - } - case 358: break; - default: - return null; - } - } - else { - zzScanError(ZZ_NO_MATCH); - } - } - } - } - - -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/ScalaTokenMaker.flex b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/ScalaTokenMaker.flex deleted file mode 100644 index c3012ad..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/ScalaTokenMaker.flex +++ /dev/null @@ -1,383 +0,0 @@ -/* - * 8/19/2009 - * - * ScalaTokenMaker.java - Scanner for the Scala programming language. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * Scanner for the Scala programming language.

- * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated ScalaTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.5 - * - */ -%% - -%public -%class ScalaTokenMaker -%extends AbstractJFlexCTokenMaker -%unicode -%type org.fife.ui.rsyntaxtextarea.Token - - -%{ - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public ScalaTokenMaker() { - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addToken(int, int, int) - */ - private void addHyperlinkToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, true); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addHyperlinkToken(int, int, int) - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, false); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - * @param hyperlink Whether this token is a hyperlink. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, - int startOffset, boolean hyperlink) { - super.addToken(array, start,end, tokenType, startOffset, hyperlink); - zzStartRead = zzMarkedPos; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { "//", null }; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - - // Start off in the proper state. - int state = YYINITIAL; - switch (initialTokenType) { - case Token.LITERAL_STRING_DOUBLE_QUOTE: - state = MULTILINE_STRING_DOUBLE; - break; - case Token.COMMENT_MULTILINE: - state = MLC; - break; - default: - state = YYINITIAL; - } - - s = text; - start = text.offset; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(java.io.Reader reader) throws IOException { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = zzPushbackPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtBOL = true; - zzAtEOF = false; - } - - -%} - - -/***** BEGIN SCALA-SPECIFIC CHANGES *********/ -Upper = ([A-Z\$\_]) /* Plus Unicode category Lu */ -Lower = ([a-z]) /* Plus Unicode category Ll */ -Letter = ({Upper}|{Lower}) /*Plus Unicode categories Lo, Lt, Nl */ -Digit = ([0-9]) -OpChar = ([^A-Z\$\_a-z0-9\(\[\]\)\. \t\f]) -Op = ({OpChar}+) -IdRest = (({Letter}|{Digit})*([\_]{Op})?) -VarId = ({Lower}{IdRest}) -PlainId = ({Upper}{IdRest}|{VarId}) /*|{Op})*/ -Id = ({PlainId}) /*({PlainId}|[\']{StringLit}[\'])*/ - -IntegerLiteral = ({Digit}+[Ll]?) -HexDigit = ({Digit}|[A-Fa-f]) -HexLiteral = ("0x"{HexDigit}+) - -ExponentPart = ([Ee][+\-]?{Digit}+) -FloatType = ([FfDd]) -FloatingPointLiteral = ({Digit}+[\.]{Digit}*{ExponentPart}?{FloatType}? | - [\.]{Digit}+{ExponentPart}?{FloatType}? | - {Digit}+{ExponentPart}{FloatType}? | - {Digit}+{ExponentPart}?{FloatType}) - -UnclosedCharLiteral = ([\']([\\].|[^\\\'])*[^\']?) -CharLiteral = ({UnclosedCharLiteral}[\']) -UnclosedStringLiteral = ([\"]([\\].|[^\\\"])*[^\"]?) -StringLiteral = ({UnclosedStringLiteral}[\"]) -UnclosedBacktickLiteral = ([\`][^\`]+) -BacktickLiteral = ({UnclosedBacktickLiteral}[\`]) -/* TODO: Multiline strings */ - -MLCBegin = ("/*") -MLCEnd = ("*/") -LineCommentBegin = ("//") - -/***** END SCALA-SPECIFIC CHANGES *********/ - -Whitespace = ([ \t\f]+) -LineTerminator = ([\n]) -Separator = ([\(\)\{\}\[\]]) - -URLGenDelim = ([:\/\?#\[\]@]) -URLSubDelim = ([\!\$&'\(\)\*\+,;=]) -URLUnreserved = ({Letter}|[\_]|{Digit}|[\-\.\~]) -URLCharacter = ({URLGenDelim}|{URLSubDelim}|{URLUnreserved}|[%]) -URLCharacters = ({URLCharacter}*) -URLEndCharacter = ([\/\$]|{Letter}|{Digit}) -URL = (((https?|f(tp|ile))"://"|"www.")({URLCharacters}{URLEndCharacter})?) - - -%state MULTILINE_STRING_DOUBLE -%state MLC -%state EOL_COMMENT - -%% - - { - - /* Keywords */ - "abstract" | - "case" | - "catch" | - "class" | - "def" | - "do" | - "else" | - "extends" | - "false" | - "final" | - "finally" | - "for" | - "forSome" | - "if" | - "implicit" | - "import" | - "lazy" | - "match" | - "new" | - "null" | - "object" | - "override" | - "package" | - "private" | - "protected" | - "requires" | - "return" | - "sealed" | - "super" | - "this" | - "throw" | - "trait" | - "try" | - "true" | - "type" | - "val" | - "var" | - "while" | - "with" | - "yield" { addToken(Token.RESERVED_WORD); } - - {LineTerminator} { addNullToken(); return firstToken; } - - {Id} { addToken(Token.IDENTIFIER); } - - {Whitespace} { addToken(Token.WHITESPACE); } - - /* String/Character literals. */ - \"\"\" { start = zzMarkedPos-3; yybegin(MULTILINE_STRING_DOUBLE); } - {UnclosedCharLiteral} { addToken(Token.ERROR_CHAR); addNullToken(); return firstToken; } - {CharLiteral} { addToken(Token.LITERAL_CHAR); } - {UnclosedStringLiteral} { addToken(Token.ERROR_STRING_DOUBLE); addNullToken(); return firstToken; } - {StringLiteral} { addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); } - {UnclosedBacktickLiteral} { addToken(Token.ERROR_STRING_DOUBLE); addNullToken(); return firstToken; } - {BacktickLiteral} { addToken(Token.LITERAL_BACKQUOTE); } - - /* Comment literals. */ - {MLCBegin} { start = zzMarkedPos-2; yybegin(MLC); } - {LineCommentBegin} { start = zzMarkedPos-2; yybegin(EOL_COMMENT); } - - {Separator} { addToken(Token.SEPARATOR); } - - {IntegerLiteral} { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); } - {HexLiteral} { addToken(Token.LITERAL_NUMBER_HEXADECIMAL); } - {FloatingPointLiteral} { addToken(Token.LITERAL_NUMBER_FLOAT); } - - /* Ended with a line not in a string or comment. */ - <> { addNullToken(); return firstToken; } - - /* Catch any other (unhandled) characters. */ - . { addToken(Token.IDENTIFIER); } - -} - - { - [^\"\\\n]* {} - \\.? { /* Skip escaped chars, handles case: '\"""'. */ } - \"\"\" { addToken(start,zzStartRead+2, Token.LITERAL_STRING_DOUBLE_QUOTE); yybegin(YYINITIAL); } - \" {} - \n | - <> { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); return firstToken; } -} - - { - [^hwf\n\*]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_MULTILINE); start = zzMarkedPos; } - [hwf] {} - {MLCEnd} { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); } - \* {} - \n | - <> { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; } -} - - { - [^hwf\n]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_EOL); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_EOL); start = zzMarkedPos; } - [hwf] {} - \n | - <> { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; } -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/ScalaTokenMaker.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/ScalaTokenMaker.java deleted file mode 100644 index 2dbc7c5..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/ScalaTokenMaker.java +++ /dev/null @@ -1,993 +0,0 @@ -/* The following code was generated by JFlex 1.4.1 on 11/10/12 10:31 PM */ - -/* - * 8/19/2009 - * - * ScalaTokenMaker.java - Scanner for the Scala programming language. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * Scanner for the Scala programming language.

- * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated ScalaTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.5 - * - */ - -public class ScalaTokenMaker extends AbstractJFlexCTokenMaker { - - /** This character denotes the end of file */ - public static final int YYEOF = -1; - - /** lexical states */ - public static final int EOL_COMMENT = 3; - public static final int MULTILINE_STRING_DOUBLE = 1; - public static final int YYINITIAL = 0; - public static final int MLC = 2; - - /** - * Translates characters to character classes - */ - private static final String ZZ_CMAP_PACKED = - "\11\0\1\31\1\24\1\0\1\31\23\0\1\31\1\33\1\25\1\33"+ - "\1\1\1\33\1\33\1\22\2\4\1\30\1\16\1\33\1\16\1\21"+ - "\1\27\1\12\11\3\1\42\1\33\1\0\1\33\1\0\2\33\3\10"+ - "\1\17\1\14\1\17\5\1\1\6\6\1\1\52\7\1\1\4\1\23"+ - "\1\4\1\0\1\5\1\26\1\44\1\45\1\11\1\20\1\15\1\40"+ - "\1\61\1\34\1\41\1\56\1\60\1\7\1\53\1\50\1\47\1\36"+ - "\1\2\1\46\1\37\1\35\1\55\1\57\1\43\1\13\1\51\1\54"+ - "\1\32\1\0\1\32\1\33\uff81\0"; - - /** - * Translates characters to character classes - */ - private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); - - /** - * Translates DFA states to action switch labels. - */ - private static final int [] ZZ_ACTION = zzUnpackAction(); - - private static final String ZZ_ACTION_PACKED_0 = - "\1\0\1\1\2\0\2\2\1\3\1\4\2\2\1\3"+ - "\3\2\1\5\1\6\1\7\2\2\1\10\15\2\1\1"+ - "\1\11\1\12\2\1\1\13\5\1\1\14\3\1\1\2"+ - "\1\3\1\0\2\15\3\2\1\0\3\2\1\16\1\17"+ - "\1\5\2\7\1\20\1\7\1\21\1\22\26\2\1\11"+ - "\1\0\1\23\10\0\1\2\1\15\1\0\4\2\1\24"+ - "\1\2\1\20\1\25\1\26\11\2\1\16\12\2\1\27"+ - "\10\0\21\2\2\0\1\30\2\0\1\31\4\2\1\16"+ - "\6\2\4\0\3\2"; - - private static int [] zzUnpackAction() { - int [] result = new int[184]; - int offset = 0; - offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAction(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /** - * Translates a state to a row index in the transition table - */ - private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); - - private static final String ZZ_ROWMAP_PACKED_0 = - "\0\0\0\62\0\144\0\226\0\310\0\372\0\u012c\0\310"+ - "\0\u015e\0\u0190\0\u01c2\0\u01f4\0\u0226\0\u0258\0\u028a\0\310"+ - "\0\u02bc\0\u02ee\0\u0320\0\u0352\0\u0384\0\u03b6\0\u03e8\0\u041a"+ - "\0\u044c\0\u047e\0\u04b0\0\u04e2\0\u0514\0\u0546\0\u0578\0\u05aa"+ - "\0\u05dc\0\u060e\0\u0640\0\310\0\u0672\0\u06a4\0\310\0\u06d6"+ - "\0\u0708\0\u073a\0\u076c\0\u079e\0\310\0\u07d0\0\u0802\0\u0834"+ - "\0\u0866\0\310\0\u0898\0\310\0\u08ca\0\u08fc\0\u092e\0\u0960"+ - "\0\u0992\0\u09c4\0\u09f6\0\u0a28\0\372\0\310\0\u0a5a\0\u0a8c"+ - "\0\u0abe\0\u0af0\0\u0b22\0\310\0\310\0\u0b54\0\u0b86\0\u0bb8"+ - "\0\u0bea\0\u0c1c\0\u0c4e\0\u0c80\0\u0cb2\0\u0ce4\0\u0d16\0\u0d48"+ - "\0\u0d7a\0\u0dac\0\u0dde\0\u0e10\0\u0e42\0\u0e74\0\u0ea6\0\u0ed8"+ - "\0\u0f0a\0\u0f3c\0\u0f6e\0\310\0\u0fa0\0\310\0\u0fd2\0\u1004"+ - "\0\u1036\0\u1068\0\u109a\0\u10cc\0\u10fe\0\u1130\0\u1162\0\u1194"+ - "\0\u11c6\0\u11f8\0\u122a\0\u125c\0\u128e\0\u0992\0\u12c0\0\310"+ - "\0\310\0\310\0\u12f2\0\u1324\0\u1356\0\u1388\0\u13ba\0\u13ec"+ - "\0\u141e\0\u1450\0\u1482\0\u14b4\0\u14e6\0\u1518\0\u154a\0\u157c"+ - "\0\u15ae\0\u15e0\0\u1612\0\u1644\0\u1676\0\u16a8\0\310\0\u16da"+ - "\0\u170c\0\u173e\0\u1770\0\u17a2\0\u17d4\0\u1806\0\u1838\0\u186a"+ - "\0\u189c\0\u18ce\0\u1900\0\u1932\0\u1964\0\u1996\0\u19c8\0\u19fa"+ - "\0\u1a2c\0\u1a5e\0\u1a90\0\u1ac2\0\u1af4\0\u1b26\0\u1b58\0\u1b8a"+ - "\0\u1bbc\0\u1bee\0\u1c20\0\u1c52\0\u1c84\0\u1cb6\0\u1ce8\0\u1d1a"+ - "\0\u1d4c\0\u1d7e\0\u1db0\0\u1de2\0\u1e14\0\u1e46\0\u1e78\0\u1eaa"+ - "\0\u1edc\0\u1f0e\0\u1c20\0\u1f40\0\u1cb6\0\u1f72\0\u1fa4\0\u1fd6"; - - private static int [] zzUnpackRowMap() { - int [] result = new int[184]; - int offset = 0; - offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackRowMap(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int high = packed.charAt(i++) << 16; - result[j++] = high | packed.charAt(i++); - } - return j; - } - - /** - * The transition table of the DFA - */ - private static final int [] ZZ_TRANS = zzUnpackTrans(); - - private static final String ZZ_TRANS_PACKED_0 = - "\1\5\2\6\1\7\1\10\2\6\1\11\1\6\1\12"+ - "\1\13\2\6\1\14\1\5\1\6\1\15\1\16\1\17"+ - "\1\5\1\20\1\21\1\22\1\23\1\5\1\24\1\10"+ - "\1\5\1\6\1\25\1\26\1\27\1\30\1\31\1\5"+ - "\1\32\1\33\1\6\1\34\1\35\1\36\1\37\1\6"+ - "\1\40\3\6\1\41\2\6\23\42\1\43\1\44\1\45"+ - "\34\42\24\46\1\47\3\46\1\50\3\46\1\51\3\46"+ - "\1\52\2\46\1\53\16\46\24\54\1\55\7\54\1\56"+ - "\3\54\1\57\2\54\1\60\16\54\63\0\3\6\1\0"+ - "\1\61\10\6\1\0\2\6\13\0\6\6\1\0\17\6"+ - "\3\0\1\7\2\0\2\62\2\0\1\7\1\0\2\63"+ - "\1\0\2\64\1\65\16\0\1\64\22\0\3\6\1\0"+ - "\1\61\10\6\1\0\2\6\13\0\6\6\1\0\1\6"+ - "\1\66\15\6\1\0\3\6\1\0\1\61\1\6\1\67"+ - "\6\6\1\0\2\6\13\0\6\6\1\0\1\6\1\70"+ - "\15\6\3\0\1\7\2\0\2\62\2\0\1\7\1\71"+ - "\2\63\1\0\2\64\1\65\16\0\1\64\22\0\3\6"+ - "\1\0\1\61\1\6\1\72\3\6\1\73\2\6\1\0"+ - "\2\6\13\0\6\6\1\0\17\6\1\0\3\6\1\0"+ - "\1\61\7\6\1\74\1\0\2\6\13\0\6\6\1\0"+ - "\4\6\1\75\12\6\3\0\1\65\6\0\1\65\47\0"+ - "\22\17\1\76\1\77\36\17\23\100\1\101\1\100\1\102"+ - "\34\100\26\103\1\0\33\103\27\0\1\104\1\105\62\0"+ - "\1\24\31\0\3\6\1\0\1\61\10\6\1\0\2\6"+ - "\13\0\1\106\5\6\1\0\3\6\1\107\2\6\1\110"+ - "\10\6\1\0\3\6\1\0\1\61\10\6\1\0\2\6"+ - "\13\0\6\6\1\0\1\6\1\111\1\6\1\112\13\6"+ - "\1\0\3\6\1\0\1\61\7\6\1\113\1\0\2\6"+ - "\13\0\6\6\1\0\12\6\1\114\4\6\1\0\3\6"+ - "\1\0\1\61\10\6\1\0\2\6\13\0\5\6\1\115"+ - "\1\0\1\6\1\116\2\6\1\117\12\6\1\0\3\6"+ - "\1\0\1\61\10\6\1\0\2\6\13\0\4\6\1\75"+ - "\1\6\1\0\10\6\1\120\6\6\1\0\3\6\1\0"+ - "\1\61\10\6\1\0\2\6\13\0\1\121\4\6\1\122"+ - "\1\0\17\6\1\0\3\6\1\0\1\61\10\6\1\0"+ - "\2\6\13\0\6\6\1\0\2\6\1\123\14\6\1\0"+ - "\3\6\1\0\1\61\7\6\1\124\1\0\2\6\13\0"+ - "\6\6\1\0\17\6\1\0\3\6\1\0\1\61\10\6"+ - "\1\0\2\6\13\0\6\6\1\0\2\6\1\125\11\6"+ - "\1\126\2\6\1\0\3\6\1\0\1\61\7\6\1\127"+ - "\1\0\2\6\13\0\6\6\1\0\12\6\1\130\4\6"+ - "\1\0\3\6\1\0\1\61\10\6\1\0\2\6\13\0"+ - "\5\6\1\131\1\0\17\6\1\0\3\6\1\0\1\61"+ - "\10\6\1\0\2\6\13\0\6\6\1\0\1\6\1\132"+ - "\15\6\1\0\3\6\1\0\1\61\10\6\1\0\2\6"+ - "\13\0\6\6\1\0\1\6\1\133\15\6\23\42\3\0"+ - "\34\42\24\134\1\0\35\134\25\0\1\135\34\0\24\46"+ - "\1\0\3\46\1\0\3\46\1\0\3\46\1\0\2\46"+ - "\1\0\16\46\27\0\1\136\67\0\1\137\61\0\1\140"+ - "\3\0\1\141\63\0\1\142\16\0\24\54\1\0\7\54"+ - "\1\0\3\54\1\0\2\54\1\0\16\54\35\0\1\143"+ - "\61\0\1\144\3\0\1\145\63\0\1\146\16\0\1\147"+ - "\3\6\1\0\1\61\10\6\1\147\2\6\1\0\7\147"+ - "\1\0\2\147\6\6\1\147\17\6\3\0\1\150\6\0"+ - "\1\150\3\0\1\151\46\0\1\65\6\0\1\65\1\0"+ - "\2\63\1\0\2\64\17\0\1\64\22\0\3\6\1\0"+ - "\1\61\10\6\1\0\2\6\13\0\6\6\1\0\11\6"+ - "\1\152\5\6\1\0\3\6\1\0\1\61\10\6\1\0"+ - "\2\6\13\0\6\6\1\0\1\6\1\153\15\6\1\0"+ - "\3\6\1\0\1\61\10\6\1\0\2\6\13\0\1\6"+ - "\1\154\1\6\1\155\2\6\1\0\17\6\3\0\1\156"+ - "\4\0\3\156\1\0\2\156\1\0\2\156\17\0\1\156"+ - "\3\0\2\156\15\0\3\6\1\0\1\61\10\6\1\0"+ - "\2\6\13\0\3\6\1\155\2\6\1\0\17\6\1\0"+ - "\3\6\1\0\1\61\10\6\1\0\2\6\13\0\1\6"+ - "\1\157\4\6\1\0\17\6\1\0\3\6\1\0\1\61"+ - "\10\6\1\0\2\6\13\0\4\6\1\75\1\6\1\0"+ - "\17\6\24\17\1\0\35\17\23\100\1\101\1\100\1\160"+ - "\60\100\1\0\35\100\25\0\1\161\34\0\26\103\1\162"+ - "\33\103\1\0\3\6\1\0\1\61\10\6\1\0\2\6"+ - "\13\0\5\6\1\163\1\0\3\6\1\164\13\6\1\0"+ - "\3\6\1\0\1\61\10\6\1\0\2\6\13\0\6\6"+ - "\1\0\1\6\1\165\4\6\1\75\3\6\1\155\4\6"+ - "\1\0\3\6\1\0\1\61\10\6\1\0\2\6\13\0"+ - "\2\6\1\155\3\6\1\0\17\6\1\0\3\6\1\0"+ - "\1\61\3\6\1\166\4\6\1\0\2\6\13\0\6\6"+ - "\1\0\17\6\1\0\3\6\1\0\1\61\10\6\1\0"+ - "\2\6\13\0\5\6\1\167\1\0\4\6\1\170\12\6"+ - "\1\0\3\6\1\0\1\61\10\6\1\0\2\6\13\0"+ - "\6\6\1\0\1\6\1\171\15\6\1\0\3\6\1\0"+ - "\1\61\10\6\1\0\2\6\13\0\2\6\1\172\3\6"+ - "\1\0\17\6\1\0\3\6\1\0\1\61\10\6\1\0"+ - "\2\6\13\0\6\6\1\0\5\6\1\173\11\6\1\0"+ - "\3\6\1\0\1\61\1\6\1\72\6\6\1\0\2\6"+ - "\13\0\6\6\1\0\17\6\1\0\3\6\1\0\1\61"+ - "\10\6\1\0\2\6\13\0\6\6\1\0\3\6\1\174"+ - "\13\6\1\0\3\6\1\0\1\61\10\6\1\0\2\6"+ - "\13\0\2\6\1\175\3\6\1\0\17\6\1\0\3\6"+ - "\1\0\1\61\10\6\1\0\2\6\13\0\5\6\1\176"+ - "\1\0\17\6\1\0\3\6\1\0\1\61\10\6\1\0"+ - "\2\6\13\0\1\6\1\177\4\6\1\0\17\6\1\0"+ - "\3\6\1\0\1\61\10\6\1\0\2\6\13\0\3\6"+ - "\1\200\2\6\1\0\17\6\1\0\1\6\1\201\1\6"+ - "\1\0\1\61\10\6\1\0\2\6\13\0\1\6\1\202"+ - "\4\6\1\0\17\6\1\0\3\6\1\0\1\61\10\6"+ - "\1\0\2\6\13\0\6\6\1\0\13\6\1\203\3\6"+ - "\1\0\3\6\1\0\1\61\7\6\1\204\1\0\2\6"+ - "\13\0\6\6\1\0\17\6\1\0\3\6\1\0\1\61"+ - "\10\6\1\0\2\6\13\0\6\6\1\0\1\75\16\6"+ - "\1\0\3\6\1\0\1\61\1\6\1\205\6\6\1\0"+ - "\2\6\13\0\6\6\1\0\17\6\1\0\3\6\1\0"+ - "\1\61\7\6\1\206\1\0\2\6\13\0\6\6\1\0"+ - "\17\6\1\0\3\6\1\0\1\61\10\6\1\0\2\6"+ - "\13\0\1\6\1\154\4\6\1\0\17\6\1\0\3\6"+ - "\1\0\1\61\1\6\1\75\6\6\1\0\2\6\13\0"+ - "\6\6\1\0\3\6\1\75\13\6\25\0\1\207\71\0"+ - "\1\210\62\0\1\211\32\0\1\212\115\0\1\213\53\0"+ - "\1\214\62\0\1\215\32\0\1\216\115\0\1\217\16\0"+ - "\1\147\15\0\1\147\3\0\7\147\1\0\2\147\6\0"+ - "\1\147\22\0\1\150\6\0\1\150\4\0\2\64\17\0"+ - "\1\64\24\0\1\150\6\0\1\150\50\0\3\6\1\0"+ - "\1\61\10\6\1\0\2\6\13\0\6\6\1\0\6\6"+ - "\1\75\10\6\1\0\3\6\1\0\1\61\10\6\1\0"+ - "\2\6\13\0\3\6\1\163\2\6\1\0\17\6\1\0"+ - "\3\6\1\0\1\61\3\6\1\177\4\6\1\0\2\6"+ - "\13\0\6\6\1\0\17\6\1\0\3\6\1\0\1\61"+ - "\7\6\1\75\1\0\2\6\13\0\6\6\1\0\17\6"+ - "\1\0\3\6\1\0\1\61\7\6\1\220\1\0\2\6"+ - "\13\0\6\6\1\0\17\6\1\0\3\6\1\0\1\61"+ - "\10\6\1\0\2\6\13\0\3\6\1\75\2\6\1\0"+ - "\17\6\1\0\3\6\1\0\1\61\10\6\1\0\2\6"+ - "\13\0\6\6\1\0\4\6\1\127\12\6\1\0\3\6"+ - "\1\0\1\61\10\6\1\0\2\6\13\0\5\6\1\221"+ - "\1\0\17\6\1\0\3\6\1\0\1\61\10\6\1\0"+ - "\2\6\13\0\6\6\1\0\15\6\1\222\1\6\1\0"+ - "\3\6\1\0\1\61\10\6\1\0\2\6\13\0\6\6"+ - "\1\0\14\6\1\223\2\6\1\0\3\6\1\0\1\61"+ - "\10\6\1\0\2\6\13\0\1\6\1\224\4\6\1\0"+ - "\17\6\1\0\3\6\1\0\1\61\1\6\1\225\6\6"+ - "\1\0\2\6\13\0\6\6\1\0\17\6\1\0\3\6"+ - "\1\0\1\61\7\6\1\226\1\0\2\6\13\0\6\6"+ - "\1\0\17\6\1\0\3\6\1\0\1\61\10\6\1\0"+ - "\2\6\13\0\6\6\1\0\1\6\1\227\15\6\1\0"+ - "\3\6\1\0\1\61\10\6\1\0\2\6\13\0\6\6"+ - "\1\0\7\6\1\230\7\6\1\0\3\6\1\0\1\61"+ - "\1\6\1\231\6\6\1\0\2\6\13\0\6\6\1\0"+ - "\4\6\1\232\12\6\1\0\3\6\1\0\1\61\1\6"+ - "\1\155\6\6\1\0\2\6\13\0\6\6\1\0\17\6"+ - "\1\0\3\6\1\0\1\61\10\6\1\0\2\6\13\0"+ - "\1\75\5\6\1\0\17\6\1\0\3\6\1\0\1\61"+ - "\10\6\1\0\2\6\13\0\1\6\1\233\4\6\1\0"+ - "\17\6\1\0\3\6\1\0\1\61\10\6\1\0\2\6"+ - "\13\0\6\6\1\0\12\6\1\234\4\6\1\0\3\6"+ - "\1\0\1\61\10\6\1\0\2\6\13\0\6\6\1\0"+ - "\12\6\1\235\4\6\1\0\3\6\1\0\1\61\7\6"+ - "\1\236\1\0\2\6\13\0\6\6\1\0\17\6\1\0"+ - "\3\6\1\0\1\61\10\6\1\0\2\6\13\0\6\6"+ - "\1\0\3\6\1\237\13\6\1\0\3\6\1\0\1\61"+ - "\1\6\1\75\6\6\1\0\2\6\13\0\6\6\1\0"+ - "\17\6\1\0\3\6\1\0\1\61\1\6\1\240\6\6"+ - "\1\0\2\6\13\0\6\6\1\0\17\6\36\0\1\241"+ - "\65\0\1\242\34\0\1\211\65\0\1\243\76\0\1\244"+ - "\65\0\1\245\34\0\1\215\65\0\1\246\41\0\3\6"+ - "\1\0\1\61\10\6\1\0\2\6\13\0\6\6\1\0"+ - "\5\6\1\247\11\6\1\0\3\6\1\0\1\61\10\6"+ - "\1\0\2\6\13\0\1\6\1\75\4\6\1\0\17\6"+ - "\1\0\3\6\1\0\1\61\10\6\1\0\2\6\13\0"+ - "\6\6\1\0\1\6\1\250\15\6\1\0\3\6\1\0"+ - "\1\61\10\6\1\0\2\6\13\0\6\6\1\0\1\6"+ - "\1\251\15\6\1\0\3\6\1\0\1\61\7\6\1\252"+ - "\1\0\2\6\13\0\6\6\1\0\17\6\1\0\3\6"+ - "\1\0\1\61\7\6\1\240\1\0\2\6\13\0\6\6"+ - "\1\0\17\6\1\0\3\6\1\0\1\61\10\6\1\0"+ - "\2\6\13\0\6\6\1\0\3\6\1\75\13\6\1\0"+ - "\3\6\1\0\1\61\1\6\1\253\6\6\1\0\2\6"+ - "\13\0\6\6\1\0\17\6\1\0\3\6\1\0\1\61"+ - "\10\6\1\0\2\6\13\0\6\6\1\0\4\6\1\254"+ - "\12\6\1\0\3\6\1\0\1\61\10\6\1\0\2\6"+ - "\13\0\5\6\1\255\1\0\17\6\1\0\3\6\1\0"+ - "\1\61\10\6\1\0\2\6\13\0\6\6\1\0\3\6"+ - "\1\221\13\6\1\0\3\6\1\0\1\61\10\6\1\0"+ - "\2\6\13\0\6\6\1\0\3\6\1\256\13\6\1\0"+ - "\3\6\1\0\1\61\10\6\1\0\2\6\13\0\5\6"+ - "\1\257\1\0\17\6\1\0\3\6\1\0\1\61\10\6"+ - "\1\0\2\6\13\0\6\6\1\0\3\6\1\260\13\6"+ - "\1\0\3\6\1\0\1\61\3\6\1\221\4\6\1\0"+ - "\2\6\13\0\6\6\1\0\17\6\1\0\3\6\1\0"+ - "\1\61\10\6\1\0\2\6\13\0\6\6\1\0\3\6"+ - "\1\261\13\6\1\0\3\6\1\0\1\61\10\6\1\0"+ - "\1\6\1\75\13\0\6\6\1\0\17\6\37\0\1\211"+ - "\2\0\1\242\46\0\1\262\33\0\3\243\1\263\11\243"+ - "\1\263\2\243\2\263\4\0\1\243\1\263\2\0\1\263"+ - "\6\243\1\263\17\243\37\0\1\215\2\0\1\245\46\0"+ - "\1\264\33\0\3\246\1\265\11\246\1\265\2\246\2\265"+ - "\4\0\1\246\1\265\2\0\1\265\6\246\1\265\17\246"+ - "\1\0\3\6\1\0\1\61\10\6\1\0\1\6\1\163"+ - "\13\0\6\6\1\0\17\6\1\0\3\6\1\0\1\61"+ - "\10\6\1\0\2\6\13\0\6\6\1\0\16\6\1\155"+ - "\1\0\3\6\1\0\1\61\10\6\1\0\2\6\13\0"+ - "\1\6\1\155\4\6\1\0\17\6\1\0\3\6\1\0"+ - "\1\61\3\6\1\266\4\6\1\0\2\6\13\0\6\6"+ - "\1\0\17\6\1\0\3\6\1\0\1\61\1\6\1\152"+ - "\6\6\1\0\2\6\13\0\6\6\1\0\17\6\1\0"+ - "\3\6\1\0\1\61\10\6\1\0\2\6\13\0\6\6"+ - "\1\0\10\6\1\155\6\6\1\0\3\6\1\0\1\61"+ - "\3\6\1\165\4\6\1\0\2\6\13\0\6\6\1\0"+ - "\17\6\1\0\3\6\1\0\1\61\10\6\1\0\2\6"+ - "\13\0\6\6\1\0\1\6\1\236\15\6\1\0\3\6"+ - "\1\0\1\61\10\6\1\0\2\6\13\0\6\6\1\0"+ - "\3\6\1\267\13\6\1\0\3\6\1\0\1\61\10\6"+ - "\1\0\2\6\13\0\6\6\1\0\5\6\1\75\11\6"+ - "\1\0\3\6\1\0\1\61\10\6\1\0\2\6\13\0"+ - "\5\6\1\270\1\0\17\6\27\0\1\243\61\0\1\246"+ - "\33\0\3\6\1\0\1\61\10\6\1\0\2\6\13\0"+ - "\1\6\1\225\4\6\1\0\17\6\1\0\3\6\1\0"+ - "\1\61\7\6\1\163\1\0\2\6\13\0\6\6\1\0"+ - "\17\6\1\0\3\6\1\0\1\61\10\6\1\0\1\6"+ - "\1\155\13\0\6\6\1\0\17\6"; - - private static int [] zzUnpackTrans() { - int [] result = new int[8200]; - int offset = 0; - offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackTrans(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - value--; - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /* error codes */ - private static final int ZZ_UNKNOWN_ERROR = 0; - private static final int ZZ_NO_MATCH = 1; - private static final int ZZ_PUSHBACK_2BIG = 2; - - /* error messages for the codes above */ - private static final String ZZ_ERROR_MSG[] = { - "Unkown internal scanner error", - "Error: could not match input", - "Error: pushback value was too large" - }; - - /** - * ZZ_ATTRIBUTE[aState] contains the attributes of state aState - */ - private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); - - private static final String ZZ_ATTRIBUTE_PACKED_0 = - "\1\0\1\1\2\0\1\11\2\1\1\11\7\1\1\11"+ - "\23\1\1\11\2\1\1\11\5\1\1\11\4\1\1\11"+ - "\1\0\1\11\4\1\1\0\4\1\1\11\5\1\2\11"+ - "\26\1\1\11\1\0\1\11\10\0\2\1\1\0\6\1"+ - "\3\11\24\1\1\11\10\0\21\1\2\0\1\1\2\0"+ - "\14\1\4\0\3\1"; - - private static int [] zzUnpackAttribute() { - int [] result = new int[184]; - int offset = 0; - offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAttribute(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - /** the input device */ - private java.io.Reader zzReader; - - /** the current state of the DFA */ - private int zzState; - - /** the current lexical state */ - private int zzLexicalState = YYINITIAL; - - /** this buffer contains the current text to be matched and is - the source of the yytext() string */ - private char zzBuffer[]; - - /** the textposition at the last accepting state */ - private int zzMarkedPos; - - /** the current text position in the buffer */ - private int zzCurrentPos; - - /** startRead marks the beginning of the yytext() string in the buffer */ - private int zzStartRead; - - /** endRead marks the last character in the buffer, that has been read - from input */ - private int zzEndRead; - - /** zzAtEOF == true <=> the scanner is at the EOF */ - private boolean zzAtEOF; - - /* user code: */ - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public ScalaTokenMaker() { - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addToken(int, int, int) - */ - private void addHyperlinkToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, true); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addHyperlinkToken(int, int, int) - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, false); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - * @param hyperlink Whether this token is a hyperlink. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, - int startOffset, boolean hyperlink) { - super.addToken(array, start,end, tokenType, startOffset, hyperlink); - zzStartRead = zzMarkedPos; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { "//", null }; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - - // Start off in the proper state. - int state = YYINITIAL; - switch (initialTokenType) { - case Token.LITERAL_STRING_DOUBLE_QUOTE: - state = MULTILINE_STRING_DOUBLE; - break; - case Token.COMMENT_MULTILINE: - state = MLC; - break; - default: - state = YYINITIAL; - } - - s = text; - start = text.offset; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(java.io.Reader reader) throws IOException { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtEOF = false; - } - - - - - /** - * Creates a new scanner - * There is also a java.io.InputStream version of this constructor. - * - * @param in the java.io.Reader to read input from. - */ - public ScalaTokenMaker(java.io.Reader in) { - this.zzReader = in; - } - - /** - * Creates a new scanner. - * There is also java.io.Reader version of this constructor. - * - * @param in the java.io.Inputstream to read input from. - */ - public ScalaTokenMaker(java.io.InputStream in) { - this(new java.io.InputStreamReader(in)); - } - - /** - * Unpacks the compressed character translation table. - * - * @param packed the packed character translation table - * @return the unpacked character translation table - */ - private static char [] zzUnpackCMap(String packed) { - char [] map = new char[0x10000]; - int i = 0; /* index in packed string */ - int j = 0; /* index in unpacked array */ - while (i < 150) { - int count = packed.charAt(i++); - char value = packed.charAt(i++); - do map[j++] = value; while (--count > 0); - } - return map; - } - - - /** - * Closes the input stream. - */ - public final void yyclose() throws java.io.IOException { - zzAtEOF = true; /* indicate end of file */ - zzEndRead = zzStartRead; /* invalidate buffer */ - - if (zzReader != null) - zzReader.close(); - } - - - /** - * Returns the current lexical state. - */ - public final int yystate() { - return zzLexicalState; - } - - - /** - * Enters a new lexical state - * - * @param newState the new lexical state - */ - @Override -public final void yybegin(int newState) { - zzLexicalState = newState; - } - - - /** - * Returns the text matched by the current regular expression. - */ - public final String yytext() { - return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead ); - } - - - /** - * Returns the character at position pos from the - * matched text. - * - * It is equivalent to yytext().charAt(pos), but faster - * - * @param pos the position of the character to fetch. - * A value from 0 to yylength()-1. - * - * @return the character at position pos - */ - public final char yycharat(int pos) { - return zzBuffer[zzStartRead+pos]; - } - - - /** - * Returns the length of the matched text region. - */ - public final int yylength() { - return zzMarkedPos-zzStartRead; - } - - - /** - * Reports an error that occured while scanning. - * - * In a wellformed scanner (no or only correct usage of - * yypushback(int) and a match-all fallback rule) this method - * will only be called with things that "Can't Possibly Happen". - * If this method is called, something is seriously wrong - * (e.g. a JFlex bug producing a faulty scanner etc.). - * - * Usual syntax/scanner level error handling should be done - * in error fallback rules. - * - * @param errorCode the code of the errormessage to display - */ - private void zzScanError(int errorCode) { - String message; - try { - message = ZZ_ERROR_MSG[errorCode]; - } - catch (ArrayIndexOutOfBoundsException e) { - message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; - } - - throw new Error(message); - } - - - /** - * Pushes the specified amount of characters back into the input stream. - * - * They will be read again by then next call of the scanning method - * - * @param number the number of characters to be read again. - * This number must not be greater than yylength()! - */ - public void yypushback(int number) { - if ( number > yylength() ) - zzScanError(ZZ_PUSHBACK_2BIG); - - zzMarkedPos -= number; - } - - - /** - * Resumes scanning until the next regular expression is matched, - * the end of input is encountered or an I/O-Error occurs. - * - * @return the next token - * @exception java.io.IOException if any I/O-Error occurs - */ - public org.fife.ui.rsyntaxtextarea.Token yylex() throws java.io.IOException { - int zzInput; - int zzAction; - - // cached fields: - int zzCurrentPosL; - int zzMarkedPosL; - int zzEndReadL = zzEndRead; - char [] zzBufferL = zzBuffer; - char [] zzCMapL = ZZ_CMAP; - - int [] zzTransL = ZZ_TRANS; - int [] zzRowMapL = ZZ_ROWMAP; - int [] zzAttrL = ZZ_ATTRIBUTE; - - while (true) { - zzMarkedPosL = zzMarkedPos; - - zzAction = -1; - - zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; - - zzState = zzLexicalState; - - - zzForAction: { - while (true) { - - if (zzCurrentPosL < zzEndReadL) - zzInput = zzBufferL[zzCurrentPosL++]; - else if (zzAtEOF) { - zzInput = YYEOF; - break zzForAction; - } - else { - // store back cached positions - zzCurrentPos = zzCurrentPosL; - zzMarkedPos = zzMarkedPosL; - boolean eof = zzRefill(); - // get translated positions and possibly new buffer - zzCurrentPosL = zzCurrentPos; - zzMarkedPosL = zzMarkedPos; - zzBufferL = zzBuffer; - zzEndReadL = zzEndRead; - if (eof) { - zzInput = YYEOF; - break zzForAction; - } - else { - zzInput = zzBufferL[zzCurrentPosL++]; - } - } - int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; - if (zzNext == -1) break zzForAction; - zzState = zzNext; - - int zzAttributes = zzAttrL[zzState]; - if ( (zzAttributes & 1) == 1 ) { - zzAction = zzState; - zzMarkedPosL = zzCurrentPosL; - if ( (zzAttributes & 8) == 8 ) break zzForAction; - } - - } - } - - // store back cached position - zzMarkedPos = zzMarkedPosL; - - switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { - case 6: - { addNullToken(); return firstToken; - } - case 26: break; - case 15: - { addToken(Token.LITERAL_CHAR); - } - case 27: break; - case 21: - { start = zzMarkedPos-3; yybegin(MULTILINE_STRING_DOUBLE); - } - case 28: break; - case 19: - { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); - } - case 29: break; - case 18: - { start = zzMarkedPos-2; yybegin(MLC); - } - case 30: break; - case 8: - { addToken(Token.WHITESPACE); - } - case 31: break; - case 20: - { addToken(Token.LITERAL_NUMBER_HEXADECIMAL); - } - case 32: break; - case 13: - { addToken(Token.LITERAL_NUMBER_FLOAT); - } - case 33: break; - case 14: - { addToken(Token.RESERVED_WORD); - } - case 34: break; - case 4: - { addToken(Token.SEPARATOR); - } - case 35: break; - case 22: - { addToken(Token.LITERAL_BACKQUOTE); - } - case 36: break; - case 9: - { /* Skip escaped chars, handles case: '\"""'. */ - } - case 37: break; - case 2: - { addToken(Token.IDENTIFIER); - } - case 38: break; - case 12: - { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; - } - case 39: break; - case 17: - { start = zzMarkedPos-2; yybegin(EOL_COMMENT); - } - case 40: break; - case 23: - { addToken(start,zzStartRead+2, Token.LITERAL_STRING_DOUBLE_QUOTE); yybegin(YYINITIAL); - } - case 41: break; - case 5: - { addToken(Token.ERROR_CHAR); addNullToken(); return firstToken; - } - case 42: break; - case 7: - { addToken(Token.ERROR_STRING_DOUBLE); addNullToken(); return firstToken; - } - case 43: break; - case 16: - { addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); - } - case 44: break; - case 10: - { addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); return firstToken; - } - case 45: break; - case 25: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_EOL); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_EOL); start = zzMarkedPos; - } - case 46: break; - case 24: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_MULTILINE); start = zzMarkedPos; - } - case 47: break; - case 3: - { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); - } - case 48: break; - case 1: - { - } - case 49: break; - case 11: - { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; - } - case 50: break; - default: - if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { - zzAtEOF = true; - switch (zzLexicalState) { - case EOL_COMMENT: { - addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; - } - case 185: break; - case MULTILINE_STRING_DOUBLE: { - addToken(start,zzStartRead-1, Token.LITERAL_STRING_DOUBLE_QUOTE); return firstToken; - } - case 186: break; - case YYINITIAL: { - addNullToken(); return firstToken; - } - case 187: break; - case MLC: { - addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; - } - case 188: break; - default: - return null; - } - } - else { - zzScanError(ZZ_NO_MATCH); - } - } - } - } - - -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/TclTokenMaker.flex b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/TclTokenMaker.flex deleted file mode 100644 index 79be7e8..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/TclTokenMaker.flex +++ /dev/null @@ -1,401 +0,0 @@ -/* - * 10/03/2007 - * - * TclTokenMaker.java - Scanner for the Tcl programming language. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * Scanner for the Tcl programming language.

- * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated TclTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.5 - * - */ -%% - -%public -%class TclTokenMaker -%extends AbstractJFlexCTokenMaker -%unicode -%type org.fife.ui.rsyntaxtextarea.Token - - -%{ - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public TclTokenMaker() { - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, int startOffset) { - super.addToken(array, start,end, tokenType, startOffset); - zzStartRead = zzMarkedPos; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { "//", null }; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - - // Start off in the proper state. - int state = Token.NULL; - - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = zzPushbackPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtBOL = true; - zzAtEOF = false; - } - - -%} - -Letter = [A-Za-z] -NonzeroDigit = [1-9] -Digit = ("0"|{NonzeroDigit}) -HexDigit = ({Digit}|[A-Fa-f]) -OctalDigit = ([0-7]) -EscapedSourceCharacter = ("u"{HexDigit}{HexDigit}{HexDigit}{HexDigit}) -NonSeparator = ([^\t\f\r\n\ \(\)\{\}\[\]\;\,\.\=\>\<\!\~\?\:\+\-\*\/\&\|\^\%\"\']|"#"|"\\") -IdentifierStart = ({Letter}|"_"|"$") -IdentifierPart = ({IdentifierStart}|{Digit}|("\\"{EscapedSourceCharacter})) - -LineTerminator = (\n) -WhiteSpace = ([ \t\f]) - -UnclosedStringLiteral = ([\"]([\\].|[^\\\"])*[^\"]?) -StringLiteral = ({UnclosedStringLiteral}[\"]) - -LineCommentBegin = "#" - -IntegerHelper1 = (({NonzeroDigit}{Digit}*)|"0") -IntegerHelper2 = ("0"(([xX]{HexDigit}+)|({OctalDigit}*))) -IntegerLiteral = ({IntegerHelper1}[lL]?) -HexLiteral = ({IntegerHelper2}[lL]?) -FloatHelper1 = ([fFdD]?) -FloatHelper2 = ([eE][+-]?{Digit}+{FloatHelper1}) -FloatLiteral1 = ({Digit}+"."({FloatHelper1}|{FloatHelper2}|{Digit}+({FloatHelper1}|{FloatHelper2}))) -FloatLiteral2 = ("."{Digit}+({FloatHelper1}|{FloatHelper2})) -FloatLiteral3 = ({Digit}+{FloatHelper2}) -FloatLiteral = ({FloatLiteral1}|{FloatLiteral2}|{FloatLiteral3}|({Digit}+[fFdD])) -ErrorNumberFormat = (({IntegerLiteral}|{HexLiteral}|{FloatLiteral}){NonSeparator}+) - -Separator = ([\(\)\{\}\[\]]) -Separator2 = ([\;,.]) - -Operator = ("="|"!"|"+"|"-"|"*"|"/"|">"=?|"<"=?|"%"|"&"|"|"|"^"|"~") - -Identifier = ({IdentifierStart}{IdentifierPart}*) -ErrorIdentifier = ({NonSeparator}+) - - -%% - -/* Keywords */ - "append" { addToken(Token.RESERVED_WORD); } - "array" { addToken(Token.RESERVED_WORD); } - "auto_mkindex" { addToken(Token.RESERVED_WORD); } - "concat" { addToken(Token.RESERVED_WORD); } - "console" { addToken(Token.RESERVED_WORD); } - "eval" { addToken(Token.RESERVED_WORD); } - "expr" { addToken(Token.RESERVED_WORD); } - "format" { addToken(Token.RESERVED_WORD); } - "global" { addToken(Token.RESERVED_WORD); } - "set" { addToken(Token.RESERVED_WORD); } - "trace" { addToken(Token.RESERVED_WORD); } - "unset" { addToken(Token.RESERVED_WORD); } - "upvar" { addToken(Token.RESERVED_WORD); } - "join" { addToken(Token.RESERVED_WORD); } - "lappend" { addToken(Token.RESERVED_WORD); } - "lindex" { addToken(Token.RESERVED_WORD); } - "linsert" { addToken(Token.RESERVED_WORD); } - "list" { addToken(Token.RESERVED_WORD); } - "llength" { addToken(Token.RESERVED_WORD); } - "lrange" { addToken(Token.RESERVED_WORD); } - "lreplace" { addToken(Token.RESERVED_WORD); } - "lsearch" { addToken(Token.RESERVED_WORD); } - "lsort" { addToken(Token.RESERVED_WORD); } - "split" { addToken(Token.RESERVED_WORD); } - "scan" { addToken(Token.RESERVED_WORD); } - "string" { addToken(Token.RESERVED_WORD); } - "regexp" { addToken(Token.RESERVED_WORD); } - "regsub" { addToken(Token.RESERVED_WORD); } - "if" { addToken(Token.RESERVED_WORD); } - "else" { addToken(Token.RESERVED_WORD); } - "elseif" { addToken(Token.RESERVED_WORD); } - "switch" { addToken(Token.RESERVED_WORD); } - "for" { addToken(Token.RESERVED_WORD); } - "foreach" { addToken(Token.RESERVED_WORD); } - "while" { addToken(Token.RESERVED_WORD); } - "break" { addToken(Token.RESERVED_WORD); } - "continue" { addToken(Token.RESERVED_WORD); } - "proc" { addToken(Token.RESERVED_WORD); } - "return" { addToken(Token.RESERVED_WORD); } - "source" { addToken(Token.RESERVED_WORD); } - "unkown" { addToken(Token.RESERVED_WORD); } - "uplevel" { addToken(Token.RESERVED_WORD); } - "cd" { addToken(Token.RESERVED_WORD); } - "close" { addToken(Token.RESERVED_WORD); } - "eof" { addToken(Token.RESERVED_WORD); } - "file" { addToken(Token.RESERVED_WORD); } - "flush" { addToken(Token.RESERVED_WORD); } - "gets" { addToken(Token.RESERVED_WORD); } - "glob" { addToken(Token.RESERVED_WORD); } - "open" { addToken(Token.RESERVED_WORD); } - "read" { addToken(Token.RESERVED_WORD); } - "puts" { addToken(Token.RESERVED_WORD); } - "pwd" { addToken(Token.RESERVED_WORD); } - "seek" { addToken(Token.RESERVED_WORD); } - "tell" { addToken(Token.RESERVED_WORD); } - "catch" { addToken(Token.RESERVED_WORD); } - "error" { addToken(Token.RESERVED_WORD); } - "exec" { addToken(Token.RESERVED_WORD); } - "pid" { addToken(Token.RESERVED_WORD); } - "after" { addToken(Token.RESERVED_WORD); } - "time" { addToken(Token.RESERVED_WORD); } - "exit" { addToken(Token.RESERVED_WORD); } - "history" { addToken(Token.RESERVED_WORD); } - "rename" { addToken(Token.RESERVED_WORD); } - "info" { addToken(Token.RESERVED_WORD); } - "ceil" { addToken(Token.RESERVED_WORD); } - "floor" { addToken(Token.RESERVED_WORD); } - "round" { addToken(Token.RESERVED_WORD); } - "incr" { addToken(Token.RESERVED_WORD); } - "hypot" { addToken(Token.RESERVED_WORD); } - "abs" { addToken(Token.RESERVED_WORD); } - "acos" { addToken(Token.RESERVED_WORD); } - "cos" { addToken(Token.RESERVED_WORD); } - "cosh" { addToken(Token.RESERVED_WORD); } - "asin" { addToken(Token.RESERVED_WORD); } - "sin" { addToken(Token.RESERVED_WORD); } - "sinh" { addToken(Token.RESERVED_WORD); } - "atan" { addToken(Token.RESERVED_WORD); } - "atan2" { addToken(Token.RESERVED_WORD); } - "tan" { addToken(Token.RESERVED_WORD); } - "tanh" { addToken(Token.RESERVED_WORD); } - "log" { addToken(Token.RESERVED_WORD); } - "log10" { addToken(Token.RESERVED_WORD); } - "fmod" { addToken(Token.RESERVED_WORD); } - "pow" { addToken(Token.RESERVED_WORD); } - "hypot" { addToken(Token.RESERVED_WORD); } - "sqrt" { addToken(Token.RESERVED_WORD); } - "double" { addToken(Token.RESERVED_WORD); } - "int" { addToken(Token.RESERVED_WORD); } - - "bind" { addToken(Token.RESERVED_WORD); } - "button" { addToken(Token.RESERVED_WORD); } - "canvas" { addToken(Token.RESERVED_WORD); } - "checkbutton" { addToken(Token.RESERVED_WORD); } - "destroy" { addToken(Token.RESERVED_WORD); } - "entry" { addToken(Token.RESERVED_WORD); } - "focus" { addToken(Token.RESERVED_WORD); } - "frame" { addToken(Token.RESERVED_WORD); } - "grab" { addToken(Token.RESERVED_WORD); } - "image" { addToken(Token.RESERVED_WORD); } - "label" { addToken(Token.RESERVED_WORD); } - "listbox" { addToken(Token.RESERVED_WORD); } - "lower" { addToken(Token.RESERVED_WORD); } - "menu" { addToken(Token.RESERVED_WORD); } - "menubutton" { addToken(Token.RESERVED_WORD); } - "message" { addToken(Token.RESERVED_WORD); } - "option" { addToken(Token.RESERVED_WORD); } - "pack" { addToken(Token.RESERVED_WORD); } - "placer" { addToken(Token.RESERVED_WORD); } - "radiobutton" { addToken(Token.RESERVED_WORD); } - "raise" { addToken(Token.RESERVED_WORD); } - "scale" { addToken(Token.RESERVED_WORD); } - "scrollbar" { addToken(Token.RESERVED_WORD); } - "selection" { addToken(Token.RESERVED_WORD); } - "send" { addToken(Token.RESERVED_WORD); } - "text" { addToken(Token.RESERVED_WORD); } - "tk" { addToken(Token.RESERVED_WORD); } - "tkerror" { addToken(Token.RESERVED_WORD); } - "tkwait" { addToken(Token.RESERVED_WORD); } - "toplevel" { addToken(Token.RESERVED_WORD); } - "update" { addToken(Token.RESERVED_WORD); } - "winfo" { addToken(Token.RESERVED_WORD); } - "wm" { addToken(Token.RESERVED_WORD); } - - - { - - {LineTerminator} { addNullToken(); return firstToken; } - - {Identifier} { addToken(Token.IDENTIFIER); } - - {WhiteSpace}+ { addToken(Token.WHITESPACE); } - - /* String/Character literals. */ - {StringLiteral} { addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); } - {UnclosedStringLiteral} { addToken(Token.ERROR_STRING_DOUBLE); addNullToken(); return firstToken; } - - /* Comment literals. */ - {LineCommentBegin}.* { addToken(Token.COMMENT_EOL); addNullToken(); return firstToken; } - - /* Separators. */ - {Separator} { addToken(Token.SEPARATOR); } - {Separator2} { addToken(Token.IDENTIFIER); } - - /* Operators. */ - {Operator} { addToken(Token.OPERATOR); } - - /* Numbers */ - {IntegerLiteral} { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); } - {HexLiteral} { addToken(Token.LITERAL_NUMBER_HEXADECIMAL); } - {FloatLiteral} { addToken(Token.LITERAL_NUMBER_FLOAT); } - {ErrorNumberFormat} { addToken(Token.ERROR_NUMBER_FORMAT); } - - {ErrorIdentifier} { addToken(Token.ERROR_IDENTIFIER); } - - /* Ended with a line not in a string or comment. */ - <> { addNullToken(); return firstToken; } - - /* Catch any other (unhandled) characters and flag them as bad. */ - . { addToken(Token.ERROR_IDENTIFIER); } - -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/TclTokenMaker.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/TclTokenMaker.java deleted file mode 100644 index cca6981..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/TclTokenMaker.java +++ /dev/null @@ -1,1073 +0,0 @@ -/* The following code was generated by JFlex 1.4.1 on 10/10/10 10:56 PM */ - -/* - * 10/03/2007 - * - * TclTokenMaker.java - Scanner for the Tcl programming language. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * Scanner for the Tcl programming language.

- * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated TclTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.5 - * - */ - -public class TclTokenMaker extends AbstractJFlexCTokenMaker { - - /** This character denotes the end of file */ - public static final int YYEOF = -1; - - /** lexical states */ - public static final int YYINITIAL = 0; - - /** - * Translates characters to character classes - */ - private static final String ZZ_CMAP_PACKED = - "\11\0\1\14\1\13\1\0\1\14\1\7\22\0\1\14\1\27\1\15"+ - "\1\10\1\1\1\27\1\27\1\7\2\24\1\27\1\22\1\25\1\22"+ - "\1\23\1\27\1\3\1\61\1\60\5\5\2\2\1\7\1\25\1\30"+ - "\1\26\1\30\1\7\1\0\3\4\1\20\1\21\1\20\5\1\1\17"+ - "\13\1\1\16\2\1\1\24\1\11\1\24\1\27\1\12\1\0\1\31"+ - "\1\54\1\46\1\35\1\33\1\52\1\53\1\56\1\44\1\55\1\43"+ - "\1\50\1\42\1\34\1\41\1\32\1\62\1\36\1\47\1\40\1\6"+ - "\1\51\1\57\1\45\1\37\1\1\1\24\1\27\1\24\1\27\uff81\0"; - - /** - * Translates characters to character classes - */ - private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); - - /** - * Translates DFA states to action switch labels. - */ - private static final int [] ZZ_ACTION = zzUnpackAction(); - - private static final String ZZ_ACTION_PACKED_0 = - "\1\0\1\1\1\2\2\3\1\2\1\1\1\4\1\5"+ - "\1\6\1\7\1\10\1\2\1\11\1\2\1\10\22\2"+ - "\1\1\1\12\1\3\1\13\1\12\1\13\1\12\1\14"+ - "\1\12\2\2\1\7\1\15\35\2\1\16\5\2\1\16"+ - "\40\2\1\1\1\13\1\0\2\14\5\2\1\15\25\2"+ - "\1\16\30\2\1\16\4\2\1\16\11\2\1\1\5\2"+ - "\2\16\6\2\1\16\15\2\1\16\3\2\1\16\1\2"+ - "\1\1\14\2\1\1\6\2"; - - private static int [] zzUnpackAction() { - int [] result = new int[241]; - int offset = 0; - offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAction(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /** - * Translates a state to a row index in the transition table - */ - private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); - - private static final String ZZ_ROWMAP_PACKED_0 = - "\0\0\0\63\0\146\0\231\0\314\0\377\0\u0132\0\u0165"+ - "\0\u0132\0\u0198\0\u01cb\0\u0132\0\u01fe\0\u0132\0\u0132\0\u0231"+ - "\0\u0264\0\u0297\0\u02ca\0\u02fd\0\u0330\0\u0363\0\u0396\0\u03c9"+ - "\0\u03fc\0\u042f\0\u0462\0\u0495\0\u04c8\0\u04fb\0\u052e\0\u0561"+ - "\0\u0594\0\u05c7\0\u05fa\0\u062d\0\u062d\0\u062d\0\u0660\0\u0693"+ - "\0\u06c6\0\u06f9\0\u072c\0\u075f\0\u0792\0\u07c5\0\u0132\0\u07f8"+ - "\0\u082b\0\u085e\0\u0891\0\u08c4\0\u08f7\0\u092a\0\u095d\0\u0990"+ - "\0\u09c3\0\u09f6\0\u0a29\0\u0a5c\0\u0a8f\0\u0ac2\0\u0af5\0\u0b28"+ - "\0\u0b5b\0\u0b8e\0\u0bc1\0\u0bf4\0\u0c27\0\u0c5a\0\u0c8d\0\u0cc0"+ - "\0\u0cf3\0\u0d26\0\u0d59\0\u0d8c\0\u0dbf\0\u0df2\0\u0e25\0\u0e58"+ - "\0\u0e8b\0\u0ebe\0\146\0\u0ef1\0\u0f24\0\u0f57\0\u0f8a\0\u0fbd"+ - "\0\u0ff0\0\u1023\0\u1056\0\u1089\0\u10bc\0\u10ef\0\u1122\0\u1155"+ - "\0\u1188\0\u11bb\0\u11ee\0\u1221\0\u1254\0\u1287\0\u12ba\0\u12ed"+ - "\0\u1320\0\u1353\0\u1386\0\u13b9\0\u13ec\0\u141f\0\u1452\0\u1485"+ - "\0\u14b8\0\u14eb\0\u151e\0\u1551\0\u1584\0\u15b7\0\u062d\0\u15ea"+ - "\0\u161d\0\u1650\0\u1683\0\u16b6\0\u16e9\0\u01cb\0\u171c\0\u174f"+ - "\0\u1782\0\u17b5\0\u17e8\0\u181b\0\u184e\0\u1881\0\u18b4\0\u18e7"+ - "\0\u191a\0\u194d\0\u1980\0\u19b3\0\u19e6\0\u1a19\0\u1a4c\0\u1a7f"+ - "\0\u1ab2\0\u1ae5\0\u1b18\0\u1b4b\0\u1b7e\0\u1bb1\0\u1be4\0\u1c17"+ - "\0\u1c4a\0\u1c7d\0\u1cb0\0\u1ce3\0\u1d16\0\u1d49\0\u1d7c\0\u1daf"+ - "\0\u1de2\0\u1e15\0\u1e48\0\u1e7b\0\u1eae\0\u1ee1\0\u1f14\0\u1f47"+ - "\0\u1f7a\0\u1fad\0\u1fe0\0\u2013\0\u2046\0\u2079\0\u20ac\0\u20df"+ - "\0\u2112\0\u2145\0\u2178\0\u21ab\0\u21de\0\u2211\0\u2244\0\u2277"+ - "\0\u22aa\0\u22dd\0\u2310\0\u2343\0\u2376\0\u23a9\0\u23dc\0\u240f"+ - "\0\u2442\0\u2475\0\u24a8\0\u24db\0\u250e\0\u2541\0\u2574\0\u25a7"+ - "\0\u25da\0\u260d\0\u2640\0\u1b4b\0\u2673\0\u26a6\0\u26d9\0\u270c"+ - "\0\u273f\0\u2772\0\u27a5\0\u27d8\0\u280b\0\u283e\0\u2871\0\u28a4"+ - "\0\u28d7\0\u290a\0\u293d\0\u0bc1\0\u2970\0\u29a3\0\u29d6\0\u2a09"+ - "\0\u260d\0\u2a3c\0\u2a6f\0\u2aa2\0\u2ad5\0\u2b08\0\u2b3b\0\u2b6e"+ - "\0\u2ba1\0\u2bd4\0\u2c07\0\u2c3a\0\u2c6d\0\u2ca0\0\u2cd3\0\u2d06"+ - "\0\u2d39"; - - private static int [] zzUnpackRowMap() { - int [] result = new int[241]; - int offset = 0; - offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackRowMap(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int high = packed.charAt(i++) << 16; - result[j++] = high | packed.charAt(i++); - } - return j; - } - - /** - * The transition table of the DFA - */ - private static final int [] ZZ_TRANS = zzUnpackTrans(); - - private static final String ZZ_TRANS_PACKED_0 = - "\1\2\1\3\1\4\1\5\1\3\1\4\1\6\1\7"+ - "\1\10\1\2\1\3\1\11\1\12\1\13\4\3\1\14"+ - "\1\15\1\16\1\17\2\14\1\20\1\21\1\22\1\23"+ - "\1\3\1\24\1\25\1\3\1\26\1\27\1\30\1\3"+ - "\1\31\1\3\1\32\1\33\1\34\1\3\1\35\1\36"+ - "\1\37\1\40\1\41\1\42\2\4\1\3\7\2\1\0"+ - "\3\2\3\0\4\2\7\0\33\2\6\3\1\0\1\2"+ - "\1\43\1\3\3\0\4\3\7\0\32\3\2\44\2\4"+ - "\1\44\1\4\1\44\1\0\3\44\3\0\1\44\1\45"+ - "\1\46\1\47\1\0\1\50\5\0\2\44\1\47\1\44"+ - "\1\46\12\44\1\45\1\44\1\46\5\44\2\4\3\44"+ - "\1\51\1\52\1\44\1\52\1\44\1\0\3\44\3\0"+ - "\1\53\1\45\1\46\1\47\1\0\1\50\5\0\2\44"+ - "\1\47\1\44\1\46\7\44\1\53\2\44\1\45\1\44"+ - "\1\46\5\44\2\52\1\44\1\2\6\3\1\0\1\2"+ - "\1\43\1\3\3\0\4\3\7\0\1\3\1\54\1\3"+ - "\1\55\26\3\63\0\13\10\1\0\47\10\14\0\1\12"+ - "\46\0\11\13\1\56\3\13\1\57\45\13\2\0\2\50"+ - "\1\0\1\50\52\0\2\50\27\0\1\14\34\0\1\2"+ - "\5\3\1\60\1\0\1\2\1\43\1\3\3\0\4\3"+ - "\7\0\1\3\1\61\3\3\1\62\1\3\1\63\5\3"+ - "\1\64\1\65\2\3\1\66\1\3\1\67\6\3\1\2"+ - "\5\3\1\70\1\0\1\2\1\43\1\3\3\0\4\3"+ - "\7\0\1\71\4\3\1\72\2\3\1\73\2\3\1\74"+ - "\3\3\1\75\6\3\1\74\3\3\1\2\6\3\1\0"+ - "\1\2\1\43\1\3\3\0\4\3\7\0\3\3\1\76"+ - "\1\3\1\77\2\3\1\100\3\3\1\101\2\3\1\102"+ - "\1\103\11\3\1\2\6\3\1\0\1\2\1\43\1\3"+ - "\3\0\4\3\7\0\2\3\1\104\5\3\1\105\21\3"+ - "\1\2\6\3\1\0\1\2\1\43\1\3\3\0\4\3"+ - "\7\0\1\106\1\3\1\107\5\3\1\110\21\3\1\2"+ - "\6\3\1\0\1\2\1\43\1\3\3\0\4\3\7\0"+ - "\1\111\1\3\1\112\2\3\1\113\2\3\1\114\1\3"+ - "\1\115\1\116\16\3\1\2\6\3\1\0\1\2\1\43"+ - "\1\3\3\0\4\3\7\0\1\3\1\117\30\3\1\2"+ - "\6\3\1\0\1\2\1\43\1\3\3\0\4\3\7\0"+ - "\2\3\1\120\27\3\1\2\6\3\1\0\1\2\1\43"+ - "\1\3\3\0\4\3\7\0\3\3\1\121\5\3\1\122"+ - "\7\3\1\123\10\3\1\2\6\3\1\0\1\2\1\43"+ - "\1\3\3\0\4\3\7\0\1\124\1\3\1\125\1\3"+ - "\1\123\3\3\1\126\6\3\1\127\5\3\1\130\4\3"+ - "\1\2\6\3\1\0\1\2\1\43\1\3\3\0\4\3"+ - "\7\0\1\3\1\131\1\132\4\3\1\133\1\134\2\3"+ - "\1\111\1\3\1\135\10\3\1\136\2\3\1\137\1\2"+ - "\6\3\1\0\1\2\1\43\1\3\3\0\4\3\7\0"+ - "\1\140\4\3\1\141\2\3\1\142\2\3\1\143\2\3"+ - "\1\144\1\145\12\3\1\2\6\3\1\0\1\2\1\43"+ - "\1\3\3\0\4\3\7\0\5\3\1\146\2\3\1\147"+ - "\1\150\1\3\1\151\3\3\1\152\12\3\1\2\6\3"+ - "\1\0\1\2\1\43\1\3\3\0\4\3\7\0\2\3"+ - "\1\70\2\3\1\153\11\3\1\154\12\3\1\2\5\3"+ - "\1\155\1\0\1\2\1\43\1\3\3\0\4\3\7\0"+ - "\5\3\1\156\5\3\1\157\16\3\1\2\6\3\1\0"+ - "\1\2\1\43\1\3\3\0\4\3\7\0\10\3\1\65"+ - "\21\3\1\2\6\3\1\0\1\2\1\43\1\3\3\0"+ - "\4\3\7\0\6\3\1\160\4\3\1\161\16\3\1\2"+ - "\6\3\1\0\1\2\1\43\1\3\3\0\4\3\7\0"+ - "\11\3\1\123\1\3\1\162\11\3\1\163\4\3\6\2"+ - "\1\164\1\0\3\2\3\0\4\2\7\0\32\2\7\44"+ - "\1\0\3\44\3\0\4\44\7\0\34\44\2\165\1\44"+ - "\1\165\1\44\1\0\3\44\3\0\4\44\1\166\6\0"+ - "\27\44\2\165\3\44\2\50\1\44\1\50\1\44\1\0"+ - "\3\44\3\0\2\44\1\46\1\47\7\0\2\44\1\47"+ - "\1\44\1\46\14\44\1\46\5\44\2\50\3\44\2\51"+ - "\1\44\1\51\1\44\1\0\3\44\3\0\2\44\1\46"+ - "\1\47\1\0\1\50\5\0\2\44\1\47\1\44\1\46"+ - "\14\44\1\46\5\44\2\51\3\44\1\51\1\52\1\44"+ - "\1\52\1\44\1\0\3\44\3\0\1\44\1\167\1\46"+ - "\1\47\1\0\1\50\5\0\2\44\1\47\1\44\1\46"+ - "\12\44\1\167\1\44\1\46\5\44\2\52\3\44\4\170"+ - "\1\44\1\0\3\44\3\0\2\44\2\170\7\0\1\170"+ - "\1\44\1\170\1\44\1\170\10\44\1\170\3\44\1\170"+ - "\1\44\1\170\3\44\2\170\1\44\1\2\6\3\1\0"+ - "\1\2\1\43\1\3\3\0\4\3\7\0\4\3\1\171"+ - "\12\3\1\172\1\173\11\3\1\2\6\3\1\0\1\2"+ - "\1\43\1\3\3\0\4\3\7\0\12\3\1\174\3\3"+ - "\1\175\13\3\13\13\1\0\1\13\1\176\45\13\1\2"+ - "\6\3\1\0\1\2\1\43\1\3\3\0\4\3\7\0"+ - "\7\3\1\177\22\3\1\2\6\3\1\0\1\2\1\43"+ - "\1\3\3\0\4\3\7\0\1\3\1\200\30\3\1\2"+ - "\6\3\1\0\1\2\1\43\1\3\3\0\4\3\7\0"+ - "\5\3\1\201\24\3\1\2\6\3\1\0\1\2\1\43"+ - "\1\3\3\0\4\3\7\0\1\202\31\3\1\2\6\3"+ - "\1\0\1\2\1\43\1\3\3\0\4\3\7\0\10\3"+ - "\1\67\21\3\1\2\6\3\1\0\1\2\1\43\1\3"+ - "\3\0\4\3\7\0\13\3\1\203\16\3\1\2\6\3"+ - "\1\0\1\2\1\43\1\3\3\0\4\3\7\0\7\3"+ - "\1\204\22\3\1\2\6\3\1\0\1\2\1\43\1\3"+ - "\3\0\4\3\7\0\16\3\1\123\13\3\1\2\6\3"+ - "\1\0\1\2\1\43\1\3\3\0\4\3\7\0\7\3"+ - "\1\67\22\3\1\2\6\3\1\0\1\2\1\43\1\3"+ - "\3\0\4\3\7\0\15\3\1\205\14\3\1\2\6\3"+ - "\1\0\1\2\1\43\1\3\3\0\4\3\7\0\10\3"+ - "\1\206\21\3\1\2\6\3\1\0\1\2\1\43\1\3"+ - "\3\0\4\3\7\0\26\3\1\123\3\3\1\2\6\3"+ - "\1\0\1\2\1\43\1\3\3\0\4\3\7\0\4\3"+ - "\1\123\25\3\1\2\6\3\1\0\1\2\1\43\1\3"+ - "\3\0\4\3\7\0\1\207\31\3\1\2\6\3\1\0"+ - "\1\2\1\43\1\3\3\0\4\3\7\0\7\3\1\210"+ - "\22\3\1\2\6\3\1\0\1\2\1\43\1\3\3\0"+ - "\4\3\7\0\5\3\1\211\24\3\1\2\6\3\1\0"+ - "\1\2\1\43\1\3\3\0\4\3\7\0\21\3\1\123"+ - "\10\3\1\2\6\3\1\0\1\2\1\43\1\3\3\0"+ - "\4\3\7\0\1\3\1\212\1\206\10\3\1\213\16\3"+ - "\1\2\6\3\1\0\1\2\1\43\1\3\3\0\4\3"+ - "\7\0\16\3\1\214\13\3\1\2\6\3\1\0\1\2"+ - "\1\43\1\3\3\0\4\3\7\0\1\215\31\3\1\2"+ - "\6\3\1\0\1\2\1\43\1\3\3\0\4\3\7\0"+ - "\16\3\1\216\13\3\1\2\5\3\1\217\1\0\1\2"+ - "\1\43\1\3\3\0\4\3\7\0\32\3\1\2\6\3"+ - "\1\0\1\2\1\43\1\3\3\0\4\3\7\0\4\3"+ - "\1\220\6\3\1\221\16\3\1\2\6\3\1\0\1\2"+ - "\1\43\1\3\3\0\4\3\7\0\1\74\2\3\1\146"+ - "\3\3\1\222\12\3\1\223\7\3\1\2\5\3\1\157"+ - "\1\0\1\2\1\43\1\3\3\0\4\3\7\0\32\3"+ - "\1\2\6\3\1\0\1\2\1\43\1\3\3\0\4\3"+ - "\7\0\3\3\1\224\26\3\1\2\6\3\1\0\1\2"+ - "\1\43\1\3\3\0\4\3\7\0\14\3\1\213\2\3"+ - "\1\215\12\3\1\2\6\3\1\0\1\2\1\43\1\3"+ - "\3\0\4\3\7\0\1\225\31\3\1\2\6\3\1\0"+ - "\1\2\1\43\1\3\3\0\4\3\7\0\1\3\1\226"+ - "\30\3\1\2\6\3\1\0\1\2\1\43\1\3\3\0"+ - "\4\3\7\0\2\3\1\227\23\3\1\230\3\3\1\2"+ - "\6\3\1\0\1\2\1\43\1\3\3\0\4\3\7\0"+ - "\11\3\1\231\20\3\1\2\6\3\1\0\1\2\1\43"+ - "\1\3\3\0\4\3\7\0\2\3\1\203\4\3\1\232"+ - "\22\3\1\2\6\3\1\0\1\2\1\43\1\3\3\0"+ - "\4\3\7\0\3\3\1\233\12\3\1\234\13\3\1\2"+ - "\6\3\1\0\1\2\1\43\1\3\3\0\4\3\7\0"+ - "\7\3\1\123\5\3\1\212\3\3\1\235\10\3\1\2"+ - "\6\3\1\0\1\2\1\43\1\3\3\0\4\3\7\0"+ - "\1\236\31\3\1\2\6\3\1\0\1\2\1\43\1\3"+ - "\3\0\4\3\7\0\3\3\1\237\3\3\1\240\22\3"+ - "\1\2\6\3\1\0\1\2\1\43\1\3\3\0\4\3"+ - "\7\0\13\3\1\215\16\3\1\2\6\3\1\0\1\2"+ - "\1\43\1\3\3\0\4\3\7\0\3\3\1\241\12\3"+ - "\1\224\13\3\1\2\6\3\1\0\1\2\1\43\1\3"+ - "\3\0\4\3\7\0\10\3\1\221\21\3\1\2\6\3"+ - "\1\0\1\2\1\43\1\3\3\0\4\3\7\0\2\3"+ - "\1\242\27\3\1\2\6\3\1\0\1\2\1\43\1\3"+ - "\3\0\4\3\7\0\17\3\1\243\12\3\1\2\6\3"+ - "\1\0\1\2\1\43\1\3\3\0\4\3\7\0\2\3"+ - "\1\205\1\74\3\3\1\123\7\3\1\244\12\3\1\2"+ - "\6\3\1\0\1\2\1\43\1\3\3\0\4\3\7\0"+ - "\5\3\1\245\24\3\1\2\5\3\1\246\1\0\1\2"+ - "\1\43\1\3\3\0\4\3\7\0\32\3\1\2\6\3"+ - "\1\0\1\2\1\43\1\3\3\0\4\3\7\0\1\247"+ - "\4\3\1\250\24\3\1\2\6\3\1\0\1\2\1\43"+ - "\1\3\3\0\4\3\7\0\13\3\1\251\16\3\1\2"+ - "\6\3\1\0\1\2\1\43\1\3\3\0\4\3\7\0"+ - "\5\3\1\213\24\3\1\2\6\3\1\0\1\2\1\43"+ - "\1\3\3\0\4\3\7\0\1\3\1\61\21\3\1\252"+ - "\6\3\1\2\6\3\1\0\1\2\1\43\1\3\3\0"+ - "\4\3\7\0\1\253\1\3\1\254\27\3\1\2\6\3"+ - "\1\0\1\2\1\43\1\3\3\0\4\3\7\0\22\3"+ - "\1\255\3\3\1\204\3\3\1\2\6\3\1\0\1\2"+ - "\1\43\1\3\3\0\4\3\7\0\3\3\1\256\12\3"+ - "\1\257\13\3\1\2\6\3\1\0\1\2\1\43\1\3"+ - "\3\0\4\3\7\0\2\3\1\260\5\3\1\137\21\3"+ - "\1\2\6\3\1\0\1\2\1\43\1\3\3\0\4\3"+ - "\7\0\2\3\1\261\27\3\1\2\6\3\1\0\1\2"+ - "\1\43\1\3\3\0\4\3\7\0\1\116\31\3\1\2"+ - "\6\3\1\0\1\2\1\43\1\3\3\0\4\3\7\0"+ - "\5\3\1\262\7\3\1\263\14\3\1\2\6\3\1\0"+ - "\1\2\1\43\1\3\3\0\4\3\7\0\10\3\1\74"+ - "\21\3\1\2\6\3\1\0\1\2\1\43\1\3\3\0"+ - "\4\3\7\0\17\3\1\231\12\3\1\2\5\3\1\264"+ - "\1\0\1\2\1\43\1\3\3\0\4\3\7\0\10\3"+ - "\1\211\21\3\1\2\6\3\1\0\1\2\1\43\1\3"+ - "\3\0\4\3\7\0\1\265\31\3\1\2\6\3\1\0"+ - "\1\2\1\43\1\3\3\0\4\3\7\0\10\3\1\266"+ - "\21\3\1\2\6\3\1\0\1\2\1\43\1\3\3\0"+ - "\4\3\7\0\7\3\1\267\22\3\1\2\6\3\1\0"+ - "\1\2\1\43\1\3\3\0\4\3\7\0\2\3\1\270"+ - "\27\3\1\2\6\3\1\0\1\2\1\43\1\3\3\0"+ - "\4\3\7\0\3\3\1\74\26\3\1\2\6\3\1\0"+ - "\1\2\1\43\1\3\3\0\4\3\7\0\1\3\1\271"+ - "\30\3\1\2\6\3\1\0\1\2\1\43\1\3\3\0"+ - "\4\3\7\0\16\3\1\272\13\3\1\2\6\3\1\0"+ - "\1\2\1\43\1\3\3\0\4\3\7\0\3\3\1\273"+ - "\26\3\1\2\6\3\1\0\1\2\1\43\1\3\3\0"+ - "\4\3\7\0\13\3\1\151\16\3\2\2\4\274\1\2"+ - "\1\0\3\2\3\0\2\2\2\274\7\0\1\274\1\2"+ - "\1\274\1\2\1\274\10\2\1\274\3\2\1\274\1\2"+ - "\1\274\3\2\2\274\1\2\2\44\2\165\1\44\1\165"+ - "\1\44\1\0\3\44\3\0\2\44\1\46\1\44\7\0"+ - "\4\44\1\46\14\44\1\46\5\44\2\165\1\44\2\0"+ - "\2\165\1\0\1\165\52\0\2\165\1\0\2\44\4\170"+ - "\1\44\1\0\3\44\3\0\1\44\1\167\2\170\7\0"+ - "\1\170\1\44\1\170\1\44\1\170\10\44\1\170\1\44"+ - "\1\167\1\44\1\170\1\44\1\170\3\44\2\170\1\44"+ - "\1\2\6\3\1\0\1\2\1\43\1\3\3\0\4\3"+ - "\7\0\1\275\31\3\1\2\6\3\1\0\1\2\1\43"+ - "\1\3\3\0\4\3\7\0\2\3\1\276\27\3\1\2"+ - "\6\3\1\0\1\2\1\43\1\3\3\0\4\3\7\0"+ - "\1\212\31\3\1\2\6\3\1\0\1\2\1\43\1\3"+ - "\3\0\4\3\7\0\10\3\1\277\21\3\1\2\6\3"+ - "\1\0\1\2\1\43\1\3\3\0\4\3\7\0\2\3"+ - "\1\213\27\3\1\2\6\3\1\0\1\2\1\43\1\3"+ - "\3\0\4\3\7\0\10\3\1\300\21\3\1\2\6\3"+ - "\1\0\1\2\1\43\1\3\3\0\4\3\7\0\2\3"+ - "\1\157\27\3\1\2\6\3\1\0\1\2\1\43\1\3"+ - "\3\0\4\3\7\0\1\301\31\3\1\2\6\3\1\0"+ - "\1\2\1\43\1\3\3\0\4\3\7\0\3\3\1\302"+ - "\26\3\1\2\6\3\1\0\1\2\1\43\1\3\3\0"+ - "\4\3\7\0\3\3\1\123\26\3\1\2\6\3\1\0"+ - "\1\2\1\43\1\3\3\0\4\3\7\0\2\3\1\212"+ - "\27\3\1\2\6\3\1\0\1\2\1\43\1\3\3\0"+ - "\4\3\7\0\12\3\1\123\17\3\1\2\6\3\1\0"+ - "\1\2\1\43\1\3\3\0\4\3\7\0\15\3\1\123"+ - "\14\3\1\2\6\3\1\0\1\2\1\43\1\3\3\0"+ - "\4\3\7\0\15\3\1\204\14\3\1\2\6\3\1\0"+ - "\1\2\1\43\1\3\3\0\4\3\7\0\5\3\1\301"+ - "\24\3\1\2\6\3\1\0\1\2\1\43\1\3\3\0"+ - "\4\3\7\0\10\3\1\212\21\3\1\2\6\3\1\0"+ - "\1\2\1\43\1\3\3\0\4\3\7\0\5\3\1\123"+ - "\24\3\1\2\6\3\1\0\1\2\1\43\1\3\3\0"+ - "\4\3\7\0\7\3\1\123\22\3\1\2\6\3\1\0"+ - "\1\2\1\43\1\3\3\0\4\3\7\0\2\3\1\303"+ - "\27\3\1\2\6\3\1\0\1\2\1\43\1\3\3\0"+ - "\4\3\7\0\17\3\1\123\12\3\1\2\6\3\1\0"+ - "\1\2\1\43\1\3\3\0\4\3\7\0\7\3\1\304"+ - "\22\3\1\2\6\3\1\0\1\2\1\43\1\3\3\0"+ - "\4\3\7\0\23\3\1\151\6\3\1\2\6\3\1\0"+ - "\1\2\1\43\1\3\3\0\4\3\7\0\13\3\1\305"+ - "\16\3\1\2\6\3\1\0\1\2\1\43\1\3\3\0"+ - "\4\3\7\0\16\3\1\231\13\3\1\2\5\3\1\306"+ - "\1\0\1\2\1\43\1\3\3\0\4\3\7\0\32\3"+ - "\1\2\6\3\1\0\1\2\1\43\1\3\3\0\4\3"+ - "\7\0\2\3\1\307\13\3\1\310\13\3\1\2\6\3"+ - "\1\0\1\2\1\43\1\3\3\0\4\3\7\0\25\3"+ - "\1\123\4\3\1\2\6\3\1\0\1\2\1\43\1\3"+ - "\3\0\4\3\7\0\15\3\1\231\14\3\1\2\6\3"+ - "\1\0\1\2\1\43\1\3\3\0\4\3\7\0\17\3"+ - "\1\172\12\3\1\2\6\3\1\0\1\2\1\43\1\3"+ - "\3\0\4\3\7\0\5\3\1\77\24\3\1\2\6\3"+ - "\1\0\1\2\1\43\1\3\3\0\4\3\7\0\1\243"+ - "\31\3\1\2\6\3\1\0\1\2\1\43\1\3\3\0"+ - "\4\3\7\0\2\3\1\123\27\3\1\2\6\3\1\0"+ - "\1\2\1\43\1\3\3\0\4\3\7\0\13\3\1\311"+ - "\16\3\1\2\5\3\1\312\1\0\1\2\1\43\1\3"+ - "\3\0\4\3\7\0\32\3\1\2\6\3\1\0\1\2"+ - "\1\43\1\3\3\0\4\3\7\0\16\3\1\122\13\3"+ - "\1\2\6\3\1\0\1\2\1\43\1\3\3\0\4\3"+ - "\7\0\10\3\1\123\21\3\1\2\6\3\1\0\1\2"+ - "\1\43\1\3\3\0\4\3\7\0\22\3\1\231\7\3"+ - "\1\2\6\3\1\0\1\2\1\43\1\3\3\0\4\3"+ - "\7\0\20\3\1\313\11\3\1\2\6\3\1\0\1\2"+ - "\1\43\1\3\3\0\4\3\7\0\15\3\1\314\14\3"+ - "\1\2\6\3\1\0\1\2\1\43\1\3\3\0\4\3"+ - "\7\0\7\3\1\315\5\3\1\316\1\317\13\3\1\2"+ - "\6\3\1\0\1\2\1\43\1\3\3\0\4\3\7\0"+ - "\15\3\1\320\14\3\1\2\6\3\1\0\1\2\1\43"+ - "\1\3\3\0\4\3\7\0\13\3\1\213\16\3\1\2"+ - "\6\3\1\0\1\2\1\43\1\3\3\0\4\3\7\0"+ - "\2\3\1\321\27\3\1\2\6\3\1\0\1\2\1\43"+ - "\1\3\3\0\4\3\7\0\13\3\1\322\16\3\1\2"+ - "\6\3\1\0\1\2\1\43\1\3\3\0\4\3\7\0"+ - "\5\3\1\225\24\3\1\2\6\3\1\0\1\2\1\43"+ - "\1\3\3\0\4\3\7\0\3\3\1\123\13\3\1\231"+ - "\12\3\1\2\6\3\1\0\1\2\1\43\1\3\3\0"+ - "\4\3\7\0\10\3\1\323\21\3\1\2\6\3\1\0"+ - "\1\2\1\43\1\3\3\0\4\3\7\0\7\3\1\240"+ - "\22\3\1\2\6\3\1\0\1\2\1\43\1\3\3\0"+ - "\4\3\7\0\2\3\1\215\27\3\1\2\6\3\1\0"+ - "\1\2\1\43\1\3\3\0\4\3\7\0\3\3\1\236"+ - "\26\3\1\2\6\3\1\0\1\2\1\43\1\3\3\0"+ - "\4\3\7\0\1\3\1\324\30\3\1\2\6\3\1\0"+ - "\1\2\1\43\1\3\3\0\4\3\7\0\30\3\1\325"+ - "\1\3\1\2\6\3\1\0\1\2\1\43\1\3\3\0"+ - "\4\3\7\0\4\3\1\326\11\3\1\327\13\3\1\2"+ - "\6\3\1\0\1\2\1\43\1\3\3\0\4\3\7\0"+ - "\7\3\1\330\22\3\1\2\6\3\1\0\1\2\1\43"+ - "\1\3\3\0\4\3\7\0\1\331\31\3\1\2\6\3"+ - "\1\0\1\2\1\43\1\3\3\0\4\3\7\0\3\3"+ - "\1\332\26\3\1\2\6\3\1\0\1\2\1\43\1\3"+ - "\3\0\4\3\7\0\2\3\1\333\6\3\1\316\20\3"+ - "\1\2\5\3\1\67\1\0\1\2\1\43\1\3\3\0"+ - "\4\3\7\0\32\3\1\2\6\3\1\0\1\2\1\43"+ - "\1\3\3\0\4\3\7\0\16\3\1\314\13\3\1\2"+ - "\6\3\1\0\1\2\1\43\1\3\3\0\4\3\7\0"+ - "\23\3\1\123\6\3\1\2\6\3\1\0\1\2\1\43"+ - "\1\3\3\0\4\3\7\0\23\3\1\334\6\3\1\2"+ - "\6\3\1\0\1\2\1\43\1\3\3\0\4\3\7\0"+ - "\7\3\1\311\22\3\1\2\6\3\1\0\1\2\1\43"+ - "\1\3\3\0\4\3\7\0\1\205\31\3\1\2\6\3"+ - "\1\0\1\2\1\43\1\3\3\0\4\3\7\0\10\3"+ - "\1\213\21\3\1\2\6\3\1\0\1\2\1\43\1\3"+ - "\3\0\4\3\7\0\7\3\1\335\22\3\1\2\6\3"+ - "\1\0\1\2\1\43\1\3\3\0\4\3\7\0\21\3"+ - "\1\235\10\3\2\2\4\336\1\2\1\0\3\2\3\0"+ - "\2\2\2\336\7\0\1\336\1\2\1\336\1\2\1\336"+ - "\10\2\1\336\3\2\1\336\1\2\1\336\3\2\2\336"+ - "\2\2\6\3\1\0\1\2\1\43\1\3\3\0\4\3"+ - "\7\0\7\3\1\231\22\3\1\2\6\3\1\0\1\2"+ - "\1\43\1\3\3\0\4\3\7\0\20\3\1\252\11\3"+ - "\1\2\6\3\1\0\1\2\1\43\1\3\3\0\4\3"+ - "\7\0\26\3\1\203\3\3\1\2\6\3\1\0\1\2"+ - "\1\43\1\337\3\0\4\3\7\0\32\3\1\2\6\3"+ - "\1\0\1\2\1\43\1\3\3\0\4\3\7\0\6\3"+ - "\1\123\23\3\1\2\6\3\1\0\1\2\1\43\1\3"+ - "\3\0\4\3\7\0\27\3\1\123\2\3\1\2\6\3"+ - "\1\0\1\2\1\43\1\3\3\0\4\3\7\0\13\3"+ - "\1\100\16\3\1\2\6\3\1\0\1\2\1\43\1\3"+ - "\3\0\4\3\7\0\5\3\1\340\24\3\1\2\6\3"+ - "\1\0\1\2\1\43\1\3\3\0\4\3\7\0\10\3"+ - "\1\341\21\3\1\2\6\3\1\0\1\2\1\43\1\3"+ - "\3\0\4\3\7\0\5\3\1\203\24\3\1\2\6\3"+ - "\1\0\1\2\1\43\1\3\3\0\4\3\7\0\14\3"+ - "\1\342\15\3\1\2\5\3\1\265\1\0\1\2\1\43"+ - "\1\3\3\0\4\3\7\0\32\3\1\2\6\3\1\0"+ - "\1\2\1\43\1\3\3\0\4\3\7\0\10\3\1\203"+ - "\21\3\1\2\6\3\1\0\1\2\1\43\1\3\3\0"+ - "\4\3\7\0\23\3\1\343\6\3\1\2\6\3\1\0"+ - "\1\2\1\43\1\3\3\0\4\3\7\0\1\67\31\3"+ - "\1\2\6\3\1\0\1\2\1\43\1\3\3\0\4\3"+ - "\7\0\13\3\1\344\16\3\1\2\6\3\1\0\1\2"+ - "\1\43\1\3\3\0\4\3\7\0\1\213\31\3\1\2"+ - "\6\3\1\0\1\2\1\43\1\3\3\0\4\3\7\0"+ - "\10\3\1\151\21\3\1\2\6\3\1\0\1\2\1\43"+ - "\1\3\3\0\4\3\7\0\12\3\1\341\17\3\1\2"+ - "\6\3\1\0\1\2\1\43\1\3\3\0\4\3\7\0"+ - "\15\3\1\345\14\3\1\2\6\3\1\0\1\2\1\43"+ - "\1\3\3\0\4\3\7\0\3\3\1\346\26\3\1\2"+ - "\6\3\1\0\1\2\1\43\1\3\3\0\4\3\7\0"+ - "\17\3\1\347\12\3\1\2\6\3\1\0\1\2\1\43"+ - "\1\3\3\0\4\3\7\0\17\3\1\113\12\3\1\2"+ - "\2\3\1\123\3\3\1\0\1\2\1\43\1\3\3\0"+ - "\4\3\7\0\32\3\1\2\6\3\1\0\1\2\1\43"+ - "\1\3\3\0\4\3\7\0\2\3\1\350\27\3\1\2"+ - "\6\3\1\0\1\2\1\43\1\3\3\0\4\3\7\0"+ - "\2\3\1\137\27\3\1\2\6\3\1\0\1\2\1\43"+ - "\1\3\3\0\4\3\7\0\23\3\1\351\6\3\1\2"+ - "\6\3\1\0\1\2\1\43\1\3\3\0\4\3\7\0"+ - "\5\3\1\240\24\3\1\2\6\3\1\0\1\2\1\43"+ - "\1\3\3\0\4\3\7\0\22\3\1\352\7\3\1\2"+ - "\6\3\1\0\1\2\1\43\1\3\3\0\4\3\7\0"+ - "\1\240\31\3\1\2\6\3\1\0\1\2\1\43\1\3"+ - "\3\0\4\3\7\0\10\3\1\210\21\3\2\2\4\353"+ - "\1\2\1\0\3\2\3\0\2\2\2\353\7\0\1\353"+ - "\1\2\1\353\1\2\1\353\10\2\1\353\3\2\1\353"+ - "\1\2\1\353\3\2\2\353\2\2\6\3\1\0\1\2"+ - "\1\43\1\3\3\0\4\3\7\0\11\3\1\354\20\3"+ - "\1\2\6\3\1\0\1\2\1\43\1\3\3\0\4\3"+ - "\7\0\10\3\1\301\21\3\1\2\6\3\1\0\1\2"+ - "\1\43\1\3\3\0\4\3\7\0\1\3\1\123\30\3"+ - "\1\2\5\3\1\155\1\0\1\2\1\43\1\3\3\0"+ - "\4\3\7\0\32\3\1\2\6\3\1\0\1\2\1\43"+ - "\1\3\3\0\4\3\7\0\3\3\1\355\26\3\1\2"+ - "\6\3\1\0\1\2\1\43\1\3\3\0\4\3\7\0"+ - "\7\3\1\232\22\3\1\2\6\3\1\0\1\2\1\43"+ - "\1\3\3\0\4\3\7\0\22\3\1\123\7\3\1\2"+ - "\6\3\1\0\1\2\1\43\1\3\3\0\4\3\7\0"+ - "\17\3\1\356\12\3\1\2\6\3\1\0\1\2\1\43"+ - "\1\3\3\0\4\3\7\0\14\3\1\123\15\3\1\2"+ - "\6\3\1\0\1\2\1\43\1\3\3\0\4\3\7\0"+ - "\10\3\1\350\21\3\1\2\6\3\1\0\1\2\1\43"+ - "\1\3\3\0\4\3\7\0\7\3\1\314\22\3\2\2"+ - "\4\3\1\2\1\0\3\2\3\0\2\2\2\3\7\0"+ - "\1\3\1\2\1\3\1\2\1\3\10\2\1\3\3\2"+ - "\1\3\1\2\1\3\3\2\2\3\2\2\6\3\1\0"+ - "\1\2\1\43\1\3\3\0\4\3\7\0\12\3\1\357"+ - "\17\3\1\2\5\3\1\231\1\0\1\2\1\43\1\3"+ - "\3\0\4\3\7\0\32\3\1\2\6\3\1\0\1\2"+ - "\1\43\1\3\3\0\4\3\7\0\23\3\1\173\6\3"+ - "\1\2\6\3\1\0\1\2\1\43\1\3\3\0\4\3"+ - "\7\0\13\3\1\360\16\3\1\2\6\3\1\0\1\2"+ - "\1\43\1\3\3\0\4\3\7\0\3\3\1\361\26\3"+ - "\1\2\6\3\1\0\1\2\1\43\1\3\3\0\4\3"+ - "\7\0\4\3\1\326\25\3"; - - private static int [] zzUnpackTrans() { - int [] result = new int[11628]; - int offset = 0; - offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackTrans(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - value--; - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /* error codes */ - private static final int ZZ_UNKNOWN_ERROR = 0; - private static final int ZZ_NO_MATCH = 1; - private static final int ZZ_PUSHBACK_2BIG = 2; - - /* error messages for the codes above */ - private static final String ZZ_ERROR_MSG[] = { - "Unkown internal scanner error", - "Error: could not match input", - "Error: pushback value was too large" - }; - - /** - * ZZ_ATTRIBUTE[aState] contains the attributes of state aState - */ - private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); - - private static final String ZZ_ATTRIBUTE_PACKED_0 = - "\1\0\5\1\1\11\1\1\1\11\2\1\1\11\1\1"+ - "\2\11\37\1\1\11\106\1\1\0\173\1"; - - private static int [] zzUnpackAttribute() { - int [] result = new int[241]; - int offset = 0; - offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAttribute(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - /** the input device */ - private java.io.Reader zzReader; - - /** the current state of the DFA */ - private int zzState; - - /** the current lexical state */ - private int zzLexicalState = YYINITIAL; - - /** this buffer contains the current text to be matched and is - the source of the yytext() string */ - private char zzBuffer[]; - - /** the textposition at the last accepting state */ - private int zzMarkedPos; - - /** the current text position in the buffer */ - private int zzCurrentPos; - - /** startRead marks the beginning of the yytext() string in the buffer */ - private int zzStartRead; - - /** endRead marks the last character in the buffer, that has been read - from input */ - private int zzEndRead; - - /** zzAtEOF == true <=> the scanner is at the EOF */ - private boolean zzAtEOF; - - /* user code: */ - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public TclTokenMaker() { - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, int startOffset) { - super.addToken(array, start,end, tokenType, startOffset); - zzStartRead = zzMarkedPos; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { "//", null }; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - - // Start off in the proper state. - int state = Token.NULL; - - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtEOF = false; - } - - - - - /** - * Creates a new scanner - * There is also a java.io.InputStream version of this constructor. - * - * @param in the java.io.Reader to read input from. - */ - public TclTokenMaker(java.io.Reader in) { - this.zzReader = in; - } - - /** - * Creates a new scanner. - * There is also java.io.Reader version of this constructor. - * - * @param in the java.io.Inputstream to read input from. - */ - public TclTokenMaker(java.io.InputStream in) { - this(new java.io.InputStreamReader(in)); - } - - /** - * Unpacks the compressed character translation table. - * - * @param packed the packed character translation table - * @return the unpacked character translation table - */ - private static char [] zzUnpackCMap(String packed) { - char [] map = new char[0x10000]; - int i = 0; /* index in packed string */ - int j = 0; /* index in unpacked array */ - while (i < 160) { - int count = packed.charAt(i++); - char value = packed.charAt(i++); - do map[j++] = value; while (--count > 0); - } - return map; - } - - - /** - * Closes the input stream. - */ - public final void yyclose() throws java.io.IOException { - zzAtEOF = true; /* indicate end of file */ - zzEndRead = zzStartRead; /* invalidate buffer */ - - if (zzReader != null) - zzReader.close(); - } - - - /** - * Returns the current lexical state. - */ - public final int yystate() { - return zzLexicalState; - } - - - /** - * Enters a new lexical state - * - * @param newState the new lexical state - */ - @Override -public final void yybegin(int newState) { - zzLexicalState = newState; - } - - - /** - * Returns the text matched by the current regular expression. - */ - public final String yytext() { - return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead ); - } - - - /** - * Returns the character at position pos from the - * matched text. - * - * It is equivalent to yytext().charAt(pos), but faster - * - * @param pos the position of the character to fetch. - * A value from 0 to yylength()-1. - * - * @return the character at position pos - */ - public final char yycharat(int pos) { - return zzBuffer[zzStartRead+pos]; - } - - - /** - * Returns the length of the matched text region. - */ - public final int yylength() { - return zzMarkedPos-zzStartRead; - } - - - /** - * Reports an error that occured while scanning. - * - * In a wellformed scanner (no or only correct usage of - * yypushback(int) and a match-all fallback rule) this method - * will only be called with things that "Can't Possibly Happen". - * If this method is called, something is seriously wrong - * (e.g. a JFlex bug producing a faulty scanner etc.). - * - * Usual syntax/scanner level error handling should be done - * in error fallback rules. - * - * @param errorCode the code of the errormessage to display - */ - private void zzScanError(int errorCode) { - String message; - try { - message = ZZ_ERROR_MSG[errorCode]; - } - catch (ArrayIndexOutOfBoundsException e) { - message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; - } - - throw new Error(message); - } - - - /** - * Pushes the specified amount of characters back into the input stream. - * - * They will be read again by then next call of the scanning method - * - * @param number the number of characters to be read again. - * This number must not be greater than yylength()! - */ - public void yypushback(int number) { - if ( number > yylength() ) - zzScanError(ZZ_PUSHBACK_2BIG); - - zzMarkedPos -= number; - } - - - /** - * Resumes scanning until the next regular expression is matched, - * the end of input is encountered or an I/O-Error occurs. - * - * @return the next token - * @exception java.io.IOException if any I/O-Error occurs - */ - public org.fife.ui.rsyntaxtextarea.Token yylex() throws java.io.IOException { - int zzInput; - int zzAction; - - // cached fields: - int zzCurrentPosL; - int zzMarkedPosL; - int zzEndReadL = zzEndRead; - char [] zzBufferL = zzBuffer; - char [] zzCMapL = ZZ_CMAP; - - int [] zzTransL = ZZ_TRANS; - int [] zzRowMapL = ZZ_ROWMAP; - int [] zzAttrL = ZZ_ATTRIBUTE; - - while (true) { - zzMarkedPosL = zzMarkedPos; - - zzAction = -1; - - zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; - - zzState = zzLexicalState; - - - zzForAction: { - while (true) { - - if (zzCurrentPosL < zzEndReadL) - zzInput = zzBufferL[zzCurrentPosL++]; - else if (zzAtEOF) { - zzInput = YYEOF; - break zzForAction; - } - else { - // store back cached positions - zzCurrentPos = zzCurrentPosL; - zzMarkedPos = zzMarkedPosL; - boolean eof = zzRefill(); - // get translated positions and possibly new buffer - zzCurrentPosL = zzCurrentPos; - zzMarkedPosL = zzMarkedPos; - zzBufferL = zzBuffer; - zzEndReadL = zzEndRead; - if (eof) { - zzInput = YYEOF; - break zzForAction; - } - else { - zzInput = zzBufferL[zzCurrentPosL++]; - } - } - int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; - if (zzNext == -1) break zzForAction; - zzState = zzNext; - - int zzAttributes = zzAttrL[zzState]; - if ( (zzAttributes & 1) == 1 ) { - zzAction = zzState; - zzMarkedPosL = zzCurrentPosL; - if ( (zzAttributes & 8) == 8 ) break zzForAction; - } - - } - } - - // store back cached position - zzMarkedPos = zzMarkedPosL; - - switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { - case 14: - { addToken(Token.RESERVED_WORD); - } - case 15: break; - case 2: - { addToken(Token.IDENTIFIER); - } - case 16: break; - case 13: - { addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); - } - case 17: break; - case 11: - { addToken(Token.LITERAL_NUMBER_FLOAT); - } - case 18: break; - case 4: - { addToken(Token.COMMENT_EOL); addNullToken(); return firstToken; - } - case 19: break; - case 6: - { addToken(Token.WHITESPACE); - } - case 20: break; - case 10: - { addToken(Token.ERROR_NUMBER_FORMAT); - } - case 21: break; - case 1: - { addToken(Token.ERROR_IDENTIFIER); - } - case 22: break; - case 12: - { addToken(Token.LITERAL_NUMBER_HEXADECIMAL); - } - case 23: break; - case 8: - { addToken(Token.OPERATOR); - } - case 24: break; - case 3: - { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); - } - case 25: break; - case 7: - { addToken(Token.ERROR_STRING_DOUBLE); addNullToken(); return firstToken; - } - case 26: break; - case 5: - { addNullToken(); return firstToken; - } - case 27: break; - case 9: - { addToken(Token.SEPARATOR); - } - case 28: break; - default: - if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { - zzAtEOF = true; - switch (zzLexicalState) { - case YYINITIAL: { - addNullToken(); return firstToken; - } - case 242: break; - default: - return null; - } - } - else { - zzScanError(ZZ_NO_MATCH); - } - } - } - } - - -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/UnixShellTokenMaker.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/UnixShellTokenMaker.java deleted file mode 100644 index 238bbf1..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/UnixShellTokenMaker.java +++ /dev/null @@ -1,1111 +0,0 @@ -/* - * 03/16/2004 - * - * UnixShellTokenMaker.java - Scanner for UNIX shell scripts. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * A token maker that turns text into a linked list of Tokens - * for syntax highlighting UNIX shell scripts. - * - * @author Robert Futrell - * @version 0.1 - */ -public class UnixShellTokenMaker extends AbstractTokenMaker { - - protected final String operators = "=|><&"; - protected final String separators = "()[]"; - protected final String separators2 = ".,;"; // Characters you don't want syntax highlighted but separate identifiers. - protected final String shellVariables = "#-?$!*@_"; // Characters that are part of "$" shell variables; e.g., "$_". - - - private int currentTokenStart; - private int currentTokenType; - - - /** - * Constructor. - */ - public UnixShellTokenMaker() { - super(); // Initializes tokensToHighlight. - } - - - /** - * Checks the token to give it the exact ID it deserves before - * being passed up to the super method. - * - * @param segment Segment to get text from. - * @param start Start offset in segment of token. - * @param end End offset in segment of token. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which the token occurs. - */ - @Override - public void addToken(Segment segment, int start, int end, int tokenType, int startOffset) { - - switch (tokenType) { - // Since reserved words, functions, and data types are all passed into here - // as "identifiers," we have to see what the token really is... - case Token.IDENTIFIER: - int value = wordsToHighlight.get(segment, start,end); - if (value!=-1) - tokenType = value; - break; - case Token.WHITESPACE: - case Token.SEPARATOR: - case Token.OPERATOR: - case Token.LITERAL_NUMBER_DECIMAL_INT: - case Token.LITERAL_STRING_DOUBLE_QUOTE: - case Token.LITERAL_CHAR: - case Token.LITERAL_BACKQUOTE: - case Token.COMMENT_EOL: - case Token.PREPROCESSOR: - case Token.VARIABLE: - break; - - default: - tokenType = Token.IDENTIFIER; - break; - - } - - super.addToken(segment, start, end, tokenType, startOffset); - - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { "#", null }; - } - - - /** - * Returns whether tokens of the specified type should have "mark - * occurrences" enabled for the current programming language. - * - * @param type The token type. - * @return Whether tokens of this type should have "mark occurrences" - * enabled. - */ - @Override - public boolean getMarkOccurrencesOfTokenType(int type) { - return type==Token.IDENTIFIER || type==Token.VARIABLE; - } - - - /** - * Returns the words to highlight for UNIX shell scripts. - * - * @return A TokenMap containing the words to highlight for - * UNIX shell scripts. - * @see org.fife.ui.rsyntaxtextarea.AbstractTokenMaker#getWordsToHighlight - */ - @Override - public TokenMap getWordsToHighlight() { - - TokenMap tokenMap = new TokenMap(); - - int reservedWord = Token.RESERVED_WORD; - tokenMap.put("case", reservedWord); - tokenMap.put("do", reservedWord); - tokenMap.put("done", reservedWord); - tokenMap.put("elif", reservedWord); - tokenMap.put("else", reservedWord); - tokenMap.put("esac", reservedWord); - tokenMap.put("fi", reservedWord); - tokenMap.put("for", reservedWord); - tokenMap.put("if", reservedWord); - tokenMap.put("in", reservedWord); - tokenMap.put("select", reservedWord); - tokenMap.put("then", reservedWord); - tokenMap.put("until", reservedWord); - tokenMap.put("while", reservedWord); - - int function = Token.FUNCTION; - tokenMap.put("addbib", function); - tokenMap.put("admin", function); - tokenMap.put("alias", function); - tokenMap.put("apropos", function); - tokenMap.put("ar", function); - tokenMap.put("at", function); - tokenMap.put("awk", function); - tokenMap.put("banner", function); - tokenMap.put("basename", function); - tokenMap.put("batch", function); - tokenMap.put("bg", function); - tokenMap.put("biff", function); - tokenMap.put("bin-mail", function); - tokenMap.put("binmail", function); - tokenMap.put("break", function); - tokenMap.put("cal", function); - tokenMap.put("calendar", function); - tokenMap.put("cancel", function); - tokenMap.put("cat", function); - tokenMap.put("cb", function); - tokenMap.put("cc", function); - tokenMap.put("cd", function); - tokenMap.put("cdc", function); - tokenMap.put("chdir", function); - tokenMap.put("checkeq", function); - tokenMap.put("checknr", function); - tokenMap.put("chfn", function); - tokenMap.put("chgrp", function); - tokenMap.put("chmod", function); - tokenMap.put("chown", function); - tokenMap.put("chsh", function); - tokenMap.put("clear", function); - tokenMap.put("cmp", function); - tokenMap.put("colcrt", function); - tokenMap.put("comb", function); - tokenMap.put("comm", function); - tokenMap.put("command", function); - tokenMap.put("compress", function); - tokenMap.put("continue", function); - tokenMap.put("cp", function); - tokenMap.put("cpio", function); - tokenMap.put("cpp", function); - tokenMap.put("crontab", function); - tokenMap.put("csh", function); - tokenMap.put("ctags", function); - tokenMap.put("cut", function); - tokenMap.put("cvs", function); - tokenMap.put("date", function); - tokenMap.put("dbx", function); - tokenMap.put("delta", function); - tokenMap.put("deroff", function); - tokenMap.put("df", function); - tokenMap.put("diff", function); - tokenMap.put("dtree", function); - tokenMap.put("du", function); - tokenMap.put("e", function); - tokenMap.put("echo", function); - tokenMap.put("ed", function); - tokenMap.put("edit", function); - tokenMap.put("enscript", function); - tokenMap.put("eqn", function); - tokenMap.put("error", function); - tokenMap.put("eval", function); - tokenMap.put("ex", function); - tokenMap.put("exec", function); - tokenMap.put("exit", function); - tokenMap.put("expand", function); - tokenMap.put("export", function); - tokenMap.put("expr", function); - tokenMap.put("false", function); - tokenMap.put("fc", function); - tokenMap.put("fg", function); - tokenMap.put("file", function); - tokenMap.put("find", function); - tokenMap.put("finger", function); - tokenMap.put("fmt", function); - tokenMap.put("fmt_mail", function); - tokenMap.put("fold", function); - tokenMap.put("ftp", function); - tokenMap.put("function", function); - tokenMap.put("gcore", function); - tokenMap.put("get", function); - tokenMap.put("getopts", function); - tokenMap.put("gprof", function); - tokenMap.put("grep", function); - tokenMap.put("groups", function); - tokenMap.put("gunzip", function); - tokenMap.put("gzip", function); - tokenMap.put("hashcheck", function); - tokenMap.put("hashmake", function); - tokenMap.put("head", function); - tokenMap.put("help", function); - tokenMap.put("history", function); - tokenMap.put("imake", function); - tokenMap.put("indent", function); - tokenMap.put("install", function); - tokenMap.put("jobs", function); - tokenMap.put("join", function); - tokenMap.put("kill", function); - tokenMap.put("last", function); - tokenMap.put("ld", function); - tokenMap.put("leave", function); - tokenMap.put("less", function); - tokenMap.put("let", function); - tokenMap.put("lex", function); - tokenMap.put("lint", function); - tokenMap.put("ln", function); - tokenMap.put("login", function); - tokenMap.put("look", function); - tokenMap.put("lookbib", function); - tokenMap.put("lorder", function); - tokenMap.put("lp", function); - tokenMap.put("lpq", function); - tokenMap.put("lpr", function); - tokenMap.put("lprm", function); - tokenMap.put("ls", function); - tokenMap.put("mail", function); - tokenMap.put("Mail", function); - tokenMap.put("make", function); - tokenMap.put("man", function); - tokenMap.put("md", function); - tokenMap.put("mesg", function); - tokenMap.put("mkdir", function); - tokenMap.put("mkstr", function); - tokenMap.put("more", function); - tokenMap.put("mount", function); - tokenMap.put("mv", function); - tokenMap.put("nawk", function); - tokenMap.put("neqn", function); - tokenMap.put("nice", function); - tokenMap.put("nm", function); - tokenMap.put("nroff", function); - tokenMap.put("od", function); - tokenMap.put("page", function); - tokenMap.put("passwd", function); - tokenMap.put("paste", function); - tokenMap.put("pr", function); - tokenMap.put("print", function); - tokenMap.put("printf", function); - tokenMap.put("printenv", function); - tokenMap.put("prof", function); - tokenMap.put("prs", function); - tokenMap.put("prt", function); - tokenMap.put("ps", function); - tokenMap.put("ptx", function); - tokenMap.put("pwd", function); - tokenMap.put("quota", function); - tokenMap.put("ranlib", function); - tokenMap.put("rcp", function); - tokenMap.put("rcs", function); - tokenMap.put("rcsdiff", function); - tokenMap.put("read", function); - tokenMap.put("readonly", function); - tokenMap.put("red", function); - tokenMap.put("return", function); - tokenMap.put("rev", function); - tokenMap.put("rlogin", function); - tokenMap.put("rm", function); - tokenMap.put("rmdel", function); - tokenMap.put("rmdir", function); - tokenMap.put("roffbib", function); - tokenMap.put("rsh", function); - tokenMap.put("rup", function); - tokenMap.put("ruptime", function); - tokenMap.put("rusers", function); - tokenMap.put("rwall", function); - tokenMap.put("rwho", function); - tokenMap.put("sact", function); - tokenMap.put("sccs", function); - tokenMap.put("sccsdiff", function); - tokenMap.put("script", function); - tokenMap.put("sed", function); - tokenMap.put("set", function); - tokenMap.put("setgroups", function); - tokenMap.put("setsenv", function); - tokenMap.put("sh", function); - tokenMap.put("shift", function); - tokenMap.put("size", function); - tokenMap.put("sleep", function); - tokenMap.put("sort", function); - tokenMap.put("sortbib", function); - tokenMap.put("spell", function); - tokenMap.put("split", function); - tokenMap.put("ssh", function); - tokenMap.put("strings", function); - tokenMap.put("strip", function); - tokenMap.put("stty", function); - tokenMap.put("su", function); - tokenMap.put("sudo", function); - tokenMap.put("symorder", function); - tokenMap.put("tabs", function); - tokenMap.put("tail", function); - tokenMap.put("talk", function); - tokenMap.put("tar", function); - tokenMap.put("tbl", function); - tokenMap.put("tee", function); - tokenMap.put("telnet", function); - tokenMap.put("test", function); - tokenMap.put("tftp", function); - tokenMap.put("time", function); - tokenMap.put("times", function); - tokenMap.put("touch", function); - tokenMap.put("trap", function); - tokenMap.put("troff", function); - tokenMap.put("true", function); - tokenMap.put("tsort", function); - tokenMap.put("tty", function); - tokenMap.put("type", function); - tokenMap.put("typeset", function); - tokenMap.put("ue", function); - tokenMap.put("ul", function); - tokenMap.put("ulimit", function); - tokenMap.put("umask", function); - tokenMap.put("unalias", function); - tokenMap.put("uncompress", function); - tokenMap.put("unexpand", function); - tokenMap.put("unget", function); - tokenMap.put("unifdef", function); - tokenMap.put("uniq", function); - tokenMap.put("units", function); - tokenMap.put("unset", function); - tokenMap.put("uptime", function); - tokenMap.put("users", function); - tokenMap.put("uucp", function); - tokenMap.put("uudecode", function); - tokenMap.put("uuencode", function); - tokenMap.put("uulog", function); - tokenMap.put("uuname", function); - tokenMap.put("uusend", function); - tokenMap.put("uux", function); - tokenMap.put("vacation", function); - tokenMap.put("val", function); - tokenMap.put("vedit", function); - tokenMap.put("vgrind", function); - tokenMap.put("vi", function); - tokenMap.put("view", function); - tokenMap.put("vtroff", function); - tokenMap.put("w", function); - tokenMap.put("wait", function); - tokenMap.put("wall", function); - tokenMap.put("wc", function); - tokenMap.put("wait", function); - tokenMap.put("what", function); - tokenMap.put("whatis", function); - tokenMap.put("whence", function); - tokenMap.put("whereis", function); - tokenMap.put("which", function); - tokenMap.put("who", function); - tokenMap.put("whoami", function); - tokenMap.put("write", function); - tokenMap.put("xargs", function); - tokenMap.put("xstr", function); - tokenMap.put("yacc", function); - tokenMap.put("yes", function); - tokenMap.put("zcat", function); - - return tokenMap; - - } - - - /** - * Returns a list of tokens representing the given text. - * - * @param text The text to break into tokens. - * @param startTokenType The token with which to start tokenizing. - * @param startOffset The offset at which the line of tokens begins. - * @return A linked list of tokens representing text. - */ - public Token getTokenList(Segment text, int startTokenType, final int startOffset) { - - resetTokenList(); - - char[] array = text.array; - int offset = text.offset; - int count = text.count; - int end = offset + count; - - // See, when we find a token, its starting position is always of the form: - // 'startOffset + (currentTokenStart-offset)'; but since startOffset and - // offset are constant, tokens' starting positions become: - // 'newStartOffset+currentTokenStart' for one less subraction operation. - int newStartOffset = startOffset - offset; - - currentTokenStart = offset; - currentTokenType = startTokenType; - boolean backslash = false; - -//beginning: - for (int i=offset; i call '`' an identifier.. - addToken(text, currentTokenStart,i, Token.IDENTIFIER, newStartOffset+currentTokenStart); - backslash = false; - } - else { - currentTokenType = Token.LITERAL_BACKQUOTE; - } - break; - - case '"': - if (backslash) { // Escaped double quote => call '"' an identifier.. - addToken(text, currentTokenStart,i, Token.IDENTIFIER, newStartOffset+currentTokenStart); - backslash = false; - } - else { - currentTokenType = Token.LITERAL_STRING_DOUBLE_QUOTE; - } - break; - - case '\'': - if (backslash) { // Escaped single quote => call '\'' an identifier. - addToken(text, currentTokenStart,i, Token.IDENTIFIER, newStartOffset+currentTokenStart); - backslash = false; - } - else { - currentTokenType = Token.LITERAL_CHAR; - } - break; - - case '\\': - addToken(text, currentTokenStart,i, Token.IDENTIFIER, newStartOffset+currentTokenStart); - currentTokenType = Token.NULL; - backslash = !backslash; - break; - - case '$': - if (backslash) { // Escaped dollar sign => call '$' an identifier.. - addToken(text, currentTokenStart,i, Token.IDENTIFIER, newStartOffset+currentTokenStart); - backslash = false; - } - else { - currentTokenType = Token.VARIABLE; - } - break; - - case '#': - backslash = false; - currentTokenType = Token.COMMENT_EOL; - break; - - default: - if (RSyntaxUtilities.isDigit(c)) { - currentTokenType = Token.LITERAL_NUMBER_DECIMAL_INT; - break; - } - else if (RSyntaxUtilities.isLetter(c) || c=='/' || c=='_') { - currentTokenType = Token.IDENTIFIER; - break; - } - int indexOf = operators.indexOf(c,0); - if (indexOf>-1) { - addToken(text, currentTokenStart,i, Token.OPERATOR, newStartOffset+currentTokenStart); - currentTokenType = Token.NULL; - break; - } - indexOf = separators.indexOf(c,0); - if (indexOf>-1) { - addToken(text, currentTokenStart,i, Token.SEPARATOR, newStartOffset+currentTokenStart); - currentTokenType = Token.NULL; - break; - } - indexOf = separators2.indexOf(c,0); - if (indexOf>-1) { - addToken(text, currentTokenStart,i, Token.IDENTIFIER, newStartOffset+currentTokenStart); - currentTokenType = Token.NULL; - break; - } - else { - currentTokenType = Token.IDENTIFIER; - break; - } - - } // End of switch (c). - - break; - - case Token.WHITESPACE: - - switch (c) { - - case ' ': - case '\t': - break; // Still whitespace. - - case '\\': - addToken(text, currentTokenStart,i-1, Token.WHITESPACE, newStartOffset+currentTokenStart); - addToken(text, i,i, Token.IDENTIFIER, newStartOffset+i); - currentTokenType = Token.NULL; - backslash = true; // Previous char whitespace => this must be first backslash. - break; - - case '`': // Don't need to worry about backslashes as previous char is space. - addToken(text, currentTokenStart,i-1, Token.WHITESPACE, newStartOffset+currentTokenStart); - currentTokenStart = i; - currentTokenType = Token.LITERAL_BACKQUOTE; - backslash = false; - break; - - case '"': // Don't need to worry about backslashes as previous char is space. - addToken(text, currentTokenStart,i-1, Token.WHITESPACE, newStartOffset+currentTokenStart); - currentTokenStart = i; - currentTokenType = Token.LITERAL_STRING_DOUBLE_QUOTE; - backslash = false; - break; - - case '\'': // Don't need to worry about backslashes as previous char is space. - addToken(text, currentTokenStart,i-1, Token.WHITESPACE, newStartOffset+currentTokenStart); - currentTokenStart = i; - currentTokenType = Token.LITERAL_CHAR; - backslash = false; - break; - - case '$': // Don't need to worry about backslashes as previous char is space. - addToken(text, currentTokenStart,i-1, Token.WHITESPACE, newStartOffset+currentTokenStart); - currentTokenStart = i; - currentTokenType = Token.VARIABLE; - backslash = false; - break; - - case '#': - addToken(text, currentTokenStart,i-1, Token.WHITESPACE, newStartOffset+currentTokenStart); - currentTokenStart = i; - currentTokenType = Token.COMMENT_EOL; - break; - - default: // Add the whitespace token and start anew. - - addToken(text, currentTokenStart,i-1, Token.WHITESPACE, newStartOffset+currentTokenStart); - currentTokenStart = i; - - if (RSyntaxUtilities.isDigit(c)) { - currentTokenType = Token.LITERAL_NUMBER_DECIMAL_INT; - break; - } - else if (RSyntaxUtilities.isLetter(c) || c=='/' || c=='_') { - currentTokenType = Token.IDENTIFIER; - break; - } - int indexOf = operators.indexOf(c,0); - if (indexOf>-1) { - addToken(text, i,i, Token.OPERATOR, newStartOffset+i); - currentTokenType = Token.NULL; - break; - } - indexOf = separators.indexOf(c,0); - if (indexOf>-1) { - addToken(text, i,i, Token.SEPARATOR, newStartOffset+i); - currentTokenType = Token.NULL; - break; - } - indexOf = separators2.indexOf(c,0); - if (indexOf>-1) { - addToken(text, i,i, Token.IDENTIFIER, newStartOffset+i); - currentTokenType = Token.NULL; - break; - } - else { - currentTokenType = Token.IDENTIFIER; - } - - } // End of switch (c). - - break; - - default: // Should never happen - case Token.IDENTIFIER: - - switch (c) { - - case ' ': - case '\t': - addToken(text, currentTokenStart,i-1, Token.IDENTIFIER, newStartOffset+currentTokenStart); - currentTokenStart = i; - currentTokenType = Token.WHITESPACE; - break; - - case '/': // Special-case to colorize commands like "echo" in "/bin/echo" - addToken(text, currentTokenStart,i, Token.IDENTIFIER, newStartOffset+currentTokenStart); - currentTokenStart = i+1; - currentTokenType = Token.NULL; - break; - - case '`': // Don't need to worry about backslashes as previous char is space. - addToken(text, currentTokenStart,i-1, Token.IDENTIFIER, newStartOffset+currentTokenStart); - currentTokenStart = i; - currentTokenType = Token.LITERAL_BACKQUOTE; - backslash = false; - break; - - case '"': // Don't need to worry about backslashes as previous char is non-backslash. - addToken(text, currentTokenStart,i-1, Token.IDENTIFIER, newStartOffset+currentTokenStart); - currentTokenStart = i; - currentTokenType = Token.LITERAL_STRING_DOUBLE_QUOTE; - backslash = false; - break; - - case '\'': // Don't need to worry about backslashes as previous char is non-backslash. - addToken(text, currentTokenStart,i-1, Token.IDENTIFIER, newStartOffset+currentTokenStart); - currentTokenStart = i; - currentTokenType = Token.LITERAL_CHAR; - backslash = false; - break; - - case '\\': - addToken(text, currentTokenStart,i-1, Token.IDENTIFIER, newStartOffset+currentTokenStart); - addToken(text, i,i, Token.IDENTIFIER, newStartOffset+i); - currentTokenType = Token.NULL; - backslash = true; - break; - - case '$': // Don't need to worry about backslashes as previous char is non-backslash. - addToken(text, currentTokenStart,i-1, Token.IDENTIFIER, newStartOffset+currentTokenStart); - currentTokenStart = i; - currentTokenType = Token.VARIABLE; - backslash = false; - break; - - case '=': // Special case here; when you have "identifier=" in shell, "identifier" is a variable. - addToken(text, currentTokenStart,i-1, Token.VARIABLE, newStartOffset+currentTokenStart); - addToken(text, i,i, Token.OPERATOR, newStartOffset+i); - currentTokenType = Token.NULL; - break; - - default: - if (RSyntaxUtilities.isLetterOrDigit(c) || c=='/' || c=='_') { - break; // Still an identifier of some type. - } - int indexOf = operators.indexOf(c); - if (indexOf>-1) { - addToken(text, currentTokenStart,i-1, Token.IDENTIFIER, newStartOffset+currentTokenStart); - addToken(text, i,i, Token.OPERATOR, newStartOffset+i); - currentTokenType = Token.NULL; - break; - } - indexOf = separators.indexOf(c,0); - if (indexOf>-1) { - addToken(text, currentTokenStart,i-1, Token.IDENTIFIER, newStartOffset+currentTokenStart); - addToken(text, i,i, Token.SEPARATOR, newStartOffset+i); - currentTokenType = Token.NULL; - break; - } - indexOf = separators2.indexOf(c,0); - if (indexOf>-1) { - addToken(text, currentTokenStart,i-1, Token.IDENTIFIER, newStartOffset+currentTokenStart); - addToken(text, i,i, Token.IDENTIFIER, newStartOffset+i); - currentTokenType = Token.NULL; - break; - } - // Otherwise, we're still an identifier (?). - - } // End of switch (c). - - break; - - case Token.LITERAL_NUMBER_DECIMAL_INT: - - switch (c) { - - case ' ': - case '\t': - addToken(text, currentTokenStart,i-1, Token.LITERAL_NUMBER_DECIMAL_INT, newStartOffset+currentTokenStart); - currentTokenStart = i; - currentTokenType = Token.WHITESPACE; - break; - - case '`': // Don't need to worry about backslashes as previous char is space. - addToken(text, currentTokenStart,i-1, Token.LITERAL_NUMBER_DECIMAL_INT, newStartOffset+currentTokenStart); - currentTokenStart = i; - currentTokenType = Token.LITERAL_BACKQUOTE; - backslash = false; - break; - - case '"': // Don't need to worry about backslashes as previous char is non-backslash. - addToken(text, currentTokenStart,i-1, Token.LITERAL_NUMBER_DECIMAL_INT, newStartOffset+currentTokenStart); - currentTokenStart = i; - currentTokenType = Token.LITERAL_STRING_DOUBLE_QUOTE; - backslash = false; - break; - - case '\'': // Don't need to worry about backslashes as previous char is non-backslash. - addToken(text, currentTokenStart,i-1, Token.LITERAL_NUMBER_DECIMAL_INT, newStartOffset+currentTokenStart); - currentTokenStart = i; - currentTokenType = Token.LITERAL_CHAR; - backslash = false; - break; - - case '$': // Don't need to worry about backslashes as previous char is non-backslash. - addToken(text, currentTokenStart,i-1, Token.LITERAL_NUMBER_DECIMAL_INT, newStartOffset+currentTokenStart); - currentTokenStart = i; - currentTokenType = Token.VARIABLE; - backslash = false; - break; - - case '\\': - addToken(text, currentTokenStart,i-1, Token.LITERAL_NUMBER_DECIMAL_INT, newStartOffset+currentTokenStart); - addToken(text, i,i, Token.IDENTIFIER, newStartOffset+i); - currentTokenType = Token.NULL; - backslash = true; - break; - - default: - - if (RSyntaxUtilities.isDigit(c)) { - break; // Still a literal number. - } - int indexOf = operators.indexOf(c); - if (indexOf>-1) { - addToken(text, currentTokenStart,i-1, Token.LITERAL_NUMBER_DECIMAL_INT, newStartOffset+currentTokenStart); - addToken(text, i,i, Token.OPERATOR, newStartOffset+i); - currentTokenType = Token.NULL; - break; - } - indexOf = separators.indexOf(c); - if (indexOf>-1) { - addToken(text, currentTokenStart,i-1, Token.LITERAL_NUMBER_DECIMAL_INT, newStartOffset+currentTokenStart); - addToken(text, i,i, Token.SEPARATOR, newStartOffset+i); - currentTokenType = Token.NULL; - break; - } - indexOf = separators2.indexOf(c); - if (indexOf>-1) { - addToken(text, currentTokenStart,i-1, Token.LITERAL_NUMBER_DECIMAL_INT, newStartOffset+currentTokenStart); - addToken(text, i,i, Token.IDENTIFIER, newStartOffset+i); - currentTokenType = Token.NULL; - break; - } - - // Otherwise, remember this was a number and start over. - addToken(text, currentTokenStart,i-1, Token.LITERAL_NUMBER_DECIMAL_INT, newStartOffset+currentTokenStart); - i--; - currentTokenType = Token.NULL; - - } // End of switch (c). - - break; - - case Token.VARIABLE: - - // Note that we first arrive here AFTER the '$' character. - // First check if the variable name is enclosed in '{' and '}' characters. - if (c=='{') { - while (++iJFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated VisualBasicTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 1.0 - */ -%% - -%public -%class VisualBasicTokenMaker -%extends AbstractJFlexTokenMaker -%unicode -%ignorecase -%type org.fife.ui.rsyntaxtextarea.Token - - -%{ - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public VisualBasicTokenMaker() { - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addToken(int, int, int) - */ - private void addHyperlinkToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, true); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addHyperlinkToken(int, int, int) - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, false); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - * @param hyperlink Whether this token is a hyperlink. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, - int startOffset, boolean hyperlink) { - super.addToken(array, start,end, tokenType, startOffset, hyperlink); - zzStartRead = zzMarkedPos; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { "'", null }; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - - // Start off in the proper state. - int state = YYINITIAL; - - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(java.io.Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = zzPushbackPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtBOL = true; - zzAtEOF = false; - } - - -%} - -Letter = [A-Za-z] -LetterOrUnderscore = ({Letter}|"_") -NonzeroDigit = [1-9] -Digit = ("0"|{NonzeroDigit}) -HexDigit = ({Digit}|[A-Fa-f]) -NonSeparator = ([^\t\f\r\n\ \(\)\{\}\[\]\;\,\.\=\>\<\!\~\?\:\+\-\*\/\&\|\^\%\"\']|"#"|"\\") -IdentifierStart = ({LetterOrUnderscore}|"$") -IdentifierPart = ({IdentifierStart}|{Digit}) - -LineTerminator = (\n) -WhiteSpace = ([ \t\f]) - -UnclosedStringLiteral = ([\"][^\"]*) -StringLiteral = ({UnclosedStringLiteral}[\"]) - -LineCommentBegin = "'" - -NumTypeSuffix = (([DRI\&SF]|"UI"|"UL"|"US")?) -IntegerLiteral = ({Digit}+{NumTypeSuffix}) -HexLiteral = ("&h"{HexDigit}+{NumTypeSuffix}) -FloatHelper = ([eE][+-]?{Digit}+{NumTypeSuffix}) -FloatLiteral1 = ({Digit}+"."({NumTypeSuffix}|{FloatHelper}|{Digit}+({NumTypeSuffix}|{FloatHelper}))) -FloatLiteral2 = ("."{Digit}+({NumTypeSuffix}|{FloatHelper})) -FloatLiteral3 = ({Digit}+({NumTypeSuffix}|{FloatHelper})) -FloatLiteral = ({FloatLiteral1}|{FloatLiteral2}|{FloatLiteral3}) -ErrorNumberFormat = (({IntegerLiteral}|{HexLiteral}|{FloatLiteral}){NonSeparator}+) -BooleanLiteral = ("true"|"false") - -Separator = ([\(\)]) -Separator2 = ([\;,.]) - -Operator = ("&"|"&="|"*"|"*="|"+"|"+="|"="|"-"|"-="|"<<"|"<<="|">>"|">>="|"/"|"/="|"\\"|"\\="|"^"|"^=") - -Identifier = ({IdentifierStart}{IdentifierPart}*) -ErrorIdentifier = ({NonSeparator}+) - -URLGenDelim = ([:\/\?#\[\]@]) -URLSubDelim = ([\!\$&'\(\)\*\+,;=]) -URLUnreserved = ({LetterOrUnderscore}|{Digit}|[\-\.\~]) -URLCharacter = ({URLGenDelim}|{URLSubDelim}|{URLUnreserved}|[%]) -URLCharacters = ({URLCharacter}*) -URLEndCharacter = ([\/\$]|{Letter}|{Digit}) -URL = (((https?|f(tp|ile))"://"|"www.")({URLCharacters}{URLEndCharacter})?) - -%state EOL_COMMENT - -%% - - { - - /* Keywords */ - "AddHandler" | - "AddressOf" | - "Alias" | - "And" | - "AndAlso" | - "As" | - "ByRef" | - "ByVal" | - "Call" | - "Case" | - "Catch" | - "CBool" | - "CByte" | - "CChar" | - "CDate" | - "CDbl" | - "CDec" | - "CInt" | - "Class" | - "CLng" | - "CObj" | - "Const" | - "Continue" | - "CSByte" | - "CShort" | - "CSng" | - "CStr" | - "CType" | - "CUInt" | - "CULng" | - "CUShort" | - "Declare" | - "Default" | - "Delegate" | - "Dim" | - "DirectCast" | - "Do" | - "Each" | - "Else" | - "ElseIf" | - "End" | - "EndIf" | - "Enum" | - "Erase" | - "Error" | - "Event" | - "Exit" | - "Finally" | - "For" | - "Friend" | - "Function" | - "Get" | - "GetType" | - "GetXMLNamespace" | - "Global" | - "GoSub" | - "GoTo" | - "Handles" | - "If" | - "If" | - "Implements" | - "Imports" | - "In" | - "Inherits" | - "Interface" | - "Is" | - "IsNot" | - "Let" | - "Lib" | - "Like" | - "Loop" | - "Me" | - "Mod" | - "Module" | - "Module Statement" | - "MustInherit" | - "MustOverride" | - "MyBase" | - "MyClass" | - "Namespace" | - "Narrowing" | - "New" | - "New" | - "Next" | - "Not" | - "Nothing" | - "NotInheritable" | - "NotOverridable" | - "Of" | - "On" | - "Operator" | - "Option" | - "Optional" | - "Or" | - "OrElse" | - "Out" | - "Overloads" | - "Overridable" | - "Overrides" | - "ParamArray" | - "Partial" | - "Private" | - "Property" | - "Protected" | - "Public" | - "RaiseEvent" | - "ReadOnly" | - "ReDim" | - "REM" | - "RemoveHandler" | - "Resume" | - "Select" | - "Set" | - "Shadows" | - "Shared" | - "Static" | - "Step" | - "Stop" | - "Structure" | - "Sub" | - "SyncLock" | - "Then" | - "Throw" | - "To" | - "Try" | - "TryCast" | - "TypeOf" | - "Using" | - "Variant" | - "Wend" | - "When" | - "While" | - "Widening" | - "With" | - "WithEvents" | - "WriteOnly" | - "Xor" { addToken(Token.RESERVED_WORD); } - "Return" { addToken(Token.RESERVED_WORD_2); } - - /* Data types. */ - "Boolean" | - "Byte" | - "Char" | - "Date" | - "Decimal" | - "Double" | - "Integer" | - "Long" | - "Object" | - "SByte" | - "Short" | - "Single" | - "String" | - "UInteger" | - "ULong" | - "UShort" { addToken(Token.DATA_TYPE); } - - {BooleanLiteral} { addToken(Token.LITERAL_BOOLEAN); } - - {LineTerminator} { addNullToken(); return firstToken; } - - {Identifier} { addToken(Token.IDENTIFIER); } - - {WhiteSpace}+ { addToken(Token.WHITESPACE); } - - {StringLiteral} { addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); } - {UnclosedStringLiteral} { addToken(Token.ERROR_STRING_DOUBLE); addNullToken(); return firstToken; } - - {LineCommentBegin} { start = zzMarkedPos-1; yybegin(EOL_COMMENT); } - - {Separator} { addToken(Token.SEPARATOR); } - {Separator2} { addToken(Token.IDENTIFIER); } - {Operator} { addToken(Token.OPERATOR); } - - {IntegerLiteral} { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); } - {HexLiteral} { addToken(Token.LITERAL_NUMBER_HEXADECIMAL); } - {FloatLiteral} { addToken(Token.LITERAL_NUMBER_FLOAT); } - {ErrorNumberFormat} { addToken(Token.ERROR_NUMBER_FORMAT); } - - {ErrorIdentifier} { addToken(Token.ERROR_IDENTIFIER); } - - /* Ended with a line not in a string or comment. */ - <> { addNullToken(); return firstToken; } - - /* Catch any other (unhandled) characters. */ - . { addToken(Token.IDENTIFIER); } - -} - - - { - [^hwf\n]+ {} - {URL} { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_EOL); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_EOL); start = zzMarkedPos; } - [hwf] {} - \n { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; } - <> { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; } -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/VisualBasicTokenMaker.java b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/VisualBasicTokenMaker.java deleted file mode 100644 index 17c9304..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/VisualBasicTokenMaker.java +++ /dev/null @@ -1,1618 +0,0 @@ -/* The following code was generated by JFlex 1.4.1 on 3/24/13 12:59 AM */ - -/* - * 03/24/2013 - * - * VisualBasicTokenMaker.java - Scanner for Visual Basic - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * Scanner for Visual Basic. - * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated VisualBasicTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 1.0 - */ - -public class VisualBasicTokenMaker extends AbstractJFlexTokenMaker { - - /** This character denotes the end of file */ - public static final int YYEOF = -1; - - /** lexical states */ - public static final int EOL_COMMENT = 1; - public static final int YYINITIAL = 0; - - /** - * Translates characters to character classes - */ - private static final String ZZ_CMAP_PACKED = - "\11\0\1\11\1\10\1\0\1\11\1\5\22\0\1\64\1\37\1\12"+ - "\1\6\1\1\1\37\1\16\1\13\2\36\1\41\1\27\1\37\1\27"+ - "\1\30\1\44\1\3\11\3\1\47\1\37\1\42\1\40\1\43\1\37"+ - "\1\6\1\35\1\54\1\4\1\15\1\26\1\34\1\57\1\25\1\21"+ - "\1\60\1\63\1\22\1\61\1\52\1\53\1\46\1\1\1\14\1\24"+ - "\1\31\1\17\1\56\1\50\1\62\1\55\1\1\1\37\1\7\1\37"+ - "\1\45\1\2\1\0\1\35\1\54\1\4\1\51\1\26\1\33\1\57"+ - "\1\65\1\20\1\60\1\63\1\22\1\61\1\52\1\53\1\46\1\1"+ - "\1\32\1\23\1\31\1\17\1\56\1\66\1\62\1\55\1\1\3\5"+ - "\1\37\uff81\0"; - - /** - * Translates characters to character classes - */ - private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); - - /** - * Translates DFA states to action switch labels. - */ - private static final int [] ZZ_ACTION = zzUnpackAction(); - - private static final String ZZ_ACTION_PACKED_0 = - "\2\0\1\1\1\2\1\3\2\2\1\4\1\5\1\6"+ - "\1\7\1\10\2\2\1\4\6\2\1\4\4\2\1\11"+ - "\1\4\13\2\1\12\1\13\6\12\1\14\1\3\2\14"+ - "\1\15\13\2\1\16\5\2\1\17\1\0\3\2\3\17"+ - "\47\2\1\17\14\2\1\12\2\0\3\12\2\0\1\15"+ - "\1\0\1\15\1\14\24\2\1\17\7\2\1\20\24\2"+ - "\1\17\2\2\1\17\11\2\1\17\13\2\1\17\12\2"+ - "\1\17\3\2\1\17\2\2\1\12\2\0\3\12\2\0"+ - "\2\2\1\21\14\2\1\20\1\14\16\2\1\22\17\2"+ - "\1\17\17\2\1\12\1\0\2\12\1\23\1\0\52\2"+ - "\1\0\1\12\1\0\1\2\1\24\21\2\1\17\6\2"+ - "\1\17\14\2\1\0\10\2\1\0\3\2\1\0\2\2"+ - "\6\0\1\17"; - - private static int [] zzUnpackAction() { - int [] result = new int[417]; - int offset = 0; - offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAction(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /** - * Translates a state to a row index in the transition table - */ - private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); - - private static final String ZZ_ROWMAP_PACKED_0 = - "\0\0\0\67\0\156\0\245\0\334\0\u0113\0\u014a\0\u0181"+ - "\0\u014a\0\u01b8\0\u01ef\0\u014a\0\u0226\0\u025d\0\u0294\0\u02cb"+ - "\0\u0302\0\u0339\0\u0370\0\u03a7\0\u03de\0\u0415\0\u044c\0\u0483"+ - "\0\u04ba\0\u04f1\0\u014a\0\u014a\0\u0528\0\u055f\0\u0596\0\u05cd"+ - "\0\u0604\0\u063b\0\u0672\0\u06a9\0\u06e0\0\u0717\0\u074e\0\u0785"+ - "\0\u014a\0\u07bc\0\u07f3\0\u082a\0\u0861\0\u0898\0\u08cf\0\u0906"+ - "\0\u0906\0\u093d\0\u0974\0\u09ab\0\u09e2\0\u0a19\0\u0a50\0\u0a87"+ - "\0\u0abe\0\u0af5\0\u0b2c\0\u0b63\0\u0b9a\0\u0bd1\0\u0c08\0\u014a"+ - "\0\u0c3f\0\u0c76\0\u0cad\0\u0ce4\0\u0d1b\0\u0d52\0\u0d89\0\u0dc0"+ - "\0\u0df7\0\u0e2e\0\u0e65\0\245\0\u0e9c\0\u0ed3\0\u0f0a\0\u0f41"+ - "\0\u0f78\0\u0faf\0\u0fe6\0\u101d\0\u1054\0\u108b\0\u10c2\0\u10f9"+ - "\0\u1130\0\u1167\0\u119e\0\u11d5\0\u120c\0\u1243\0\u127a\0\u12b1"+ - "\0\u12e8\0\u131f\0\u1356\0\u138d\0\u13c4\0\u13fb\0\u1432\0\u1469"+ - "\0\u14a0\0\u14d7\0\u150e\0\u1545\0\u157c\0\u15b3\0\u15ea\0\u1621"+ - "\0\u1658\0\u168f\0\u16c6\0\u16fd\0\u1734\0\u176b\0\u17a2\0\u17d9"+ - "\0\u1810\0\u1847\0\u187e\0\u18b5\0\u18ec\0\u1923\0\u195a\0\u1991"+ - "\0\u19c8\0\u19ff\0\u1a36\0\u1a6d\0\u1aa4\0\u1adb\0\u1b12\0\u1b49"+ - "\0\u1b80\0\u1bb7\0\u1bee\0\u0906\0\u1c25\0\u1c5c\0\u1c93\0\u1cca"+ - "\0\u1d01\0\u1d38\0\u1d6f\0\u1da6\0\u1ddd\0\u1e14\0\u1e4b\0\u1e82"+ - "\0\u1eb9\0\u1ef0\0\u1f27\0\u1f5e\0\u1f95\0\u1fcc\0\u2003\0\u203a"+ - "\0\u2071\0\u20a8\0\u20df\0\u2116\0\u214d\0\u2184\0\u21bb\0\u21f2"+ - "\0\u2229\0\u2260\0\u2297\0\u22ce\0\u2305\0\u233c\0\u2373\0\u23aa"+ - "\0\u23e1\0\u2418\0\u244f\0\u2486\0\u24bd\0\u24f4\0\u252b\0\u2562"+ - "\0\u2599\0\u25d0\0\u2607\0\u263e\0\u2675\0\u26ac\0\u26e3\0\u271a"+ - "\0\u2751\0\u2788\0\u27bf\0\u27f6\0\u282d\0\u2864\0\u289b\0\u28d2"+ - "\0\u2909\0\u2940\0\u2977\0\u29ae\0\u29e5\0\u2a1c\0\u2a53\0\u2a8a"+ - "\0\u2ac1\0\u2af8\0\u2b2f\0\u2b66\0\u2b9d\0\u2bd4\0\u2c0b\0\u2c42"+ - "\0\u2c79\0\u2cb0\0\u2ce7\0\u2d1e\0\u2d55\0\u2d8c\0\u2dc3\0\u2dfa"+ - "\0\u2e31\0\u2e68\0\u2e9f\0\u2ed6\0\u2f0d\0\u2f44\0\u2f7b\0\u2fb2"+ - "\0\u2fe9\0\u3020\0\u3057\0\u308e\0\u30c5\0\u30fc\0\u3133\0\u316a"+ - "\0\u31a1\0\u31d8\0\u320f\0\245\0\u3246\0\u327d\0\u32b4\0\u32eb"+ - "\0\u3322\0\u3359\0\u3390\0\u33c7\0\u33fe\0\u3435\0\u346c\0\u34a3"+ - "\0\u0906\0\u34da\0\u3511\0\u3548\0\u357f\0\u35b6\0\u35ed\0\u3624"+ - "\0\u365b\0\u3692\0\u36c9\0\u3700\0\u3737\0\u376e\0\u37a5\0\u37dc"+ - "\0\245\0\u3813\0\u384a\0\u3881\0\u38b8\0\u38ef\0\u3926\0\u395d"+ - "\0\u3994\0\u39cb\0\u3a02\0\u3a39\0\u3a70\0\u3aa7\0\u3ade\0\u3b15"+ - "\0\u3b4c\0\u3b83\0\u3bba\0\u3bf1\0\u3c28\0\u3c5f\0\u3c96\0\u3ccd"+ - "\0\u3d04\0\u3d3b\0\u3d72\0\u3da9\0\u3de0\0\u3e17\0\u3e4e\0\u3e85"+ - "\0\u3ebc\0\u3ef3\0\u3f2a\0\u3f61\0\u3f98\0\u3fcf\0\u4006\0\u403d"+ - "\0\u4074\0\u40ab\0\u40e2\0\u4119\0\u4150\0\u4187\0\u41be\0\u41f5"+ - "\0\u422c\0\u4263\0\u429a\0\u42d1\0\u4308\0\u433f\0\u4376\0\u43ad"+ - "\0\u43e4\0\u441b\0\u4452\0\u4489\0\u44c0\0\u44f7\0\u452e\0\u4565"+ - "\0\u459c\0\u45d3\0\u460a\0\u4641\0\u4678\0\u46af\0\u46e6\0\u471d"+ - "\0\u4754\0\u478b\0\u47c2\0\u47f9\0\u4830\0\u4867\0\u489e\0\u48d5"+ - "\0\u490c\0\u4943\0\u3f98\0\u497a\0\245\0\u49b1\0\u49e8\0\u2788"+ - "\0\u4a1f\0\u4a56\0\u4a8d\0\u4ac4\0\u4afb\0\u4b32\0\u4b69\0\u4ba0"+ - "\0\u4bd7\0\u4c0e\0\u4c45\0\u4c7c\0\u4cb3\0\u4cea\0\u2dfa\0\u4d21"+ - "\0\u4d58\0\u4d8f\0\u4dc6\0\u4dfd\0\u4e34\0\u4e6b\0\u4ea2\0\u4ed9"+ - "\0\u4f10\0\u4f47\0\u4f7e\0\u4fb5\0\u4fec\0\u5023\0\u505a\0\u5091"+ - "\0\u50c8\0\u50ff\0\u5136\0\u516d\0\u51a4\0\u51db\0\u5212\0\u5249"+ - "\0\u5280\0\u52b7\0\u52ee\0\u5325\0\u535c\0\u5393\0\u53ca\0\u5401"+ - "\0\u5438\0\u546f\0\u54a6\0\u54dd\0\u5514\0\u554b\0\u5582\0\u55b9"+ - "\0\u014a"; - - private static int [] zzUnpackRowMap() { - int [] result = new int[417]; - int offset = 0; - offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackRowMap(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int high = packed.charAt(i++) << 16; - result[j++] = high | packed.charAt(i++); - } - return j; - } - - /** - * The transition table of the DFA - */ - private static final int [] ZZ_TRANS = zzUnpackTrans(); - - private static final String ZZ_TRANS_PACKED_0 = - "\1\3\2\4\1\5\1\6\1\7\1\3\1\10\1\11"+ - "\1\12\1\13\1\14\1\15\1\16\1\17\1\20\2\21"+ - "\1\22\2\23\1\24\1\25\1\26\1\27\1\30\1\15"+ - "\2\31\1\32\1\33\1\7\1\34\1\26\1\35\1\36"+ - "\2\26\1\37\1\7\1\40\1\16\1\41\1\42\1\43"+ - "\1\4\1\44\1\45\1\4\1\46\1\47\1\4\1\12"+ - "\1\24\1\40\10\50\1\51\14\50\1\52\5\50\1\53"+ - "\1\54\13\50\1\55\14\50\1\56\1\57\5\3\1\0"+ - "\2\3\4\0\2\3\1\0\10\3\2\0\5\3\10\0"+ - "\1\3\1\0\14\3\1\0\3\3\4\4\1\0\2\3"+ - "\4\0\2\4\1\0\10\4\2\0\5\4\10\0\1\4"+ - "\1\0\14\4\1\0\2\4\3\60\1\5\1\60\1\0"+ - "\2\60\4\0\3\61\1\62\1\60\1\61\2\60\1\61"+ - "\1\60\1\63\1\0\1\64\3\60\1\61\1\60\10\0"+ - "\1\60\1\0\14\60\1\0\2\60\1\3\3\4\1\65"+ - "\1\0\2\3\4\0\1\4\1\66\1\0\1\67\2\70"+ - "\1\71\2\72\1\73\1\4\2\0\1\74\3\4\1\75"+ - "\10\0\1\4\1\0\1\4\1\66\1\4\1\76\1\77"+ - "\7\4\1\0\1\73\1\4\67\0\5\3\1\0\2\3"+ - "\4\0\2\3\1\0\10\3\2\0\5\3\2\0\1\34"+ - "\5\0\1\3\1\0\14\3\1\0\2\3\11\0\1\12"+ - "\52\0\1\12\2\0\12\13\1\100\54\13\1\3\4\4"+ - "\1\0\2\3\4\0\2\4\1\0\7\4\1\101\2\0"+ - "\4\4\1\102\10\0\1\4\1\0\14\4\1\0\2\4"+ - "\1\3\4\4\1\0\2\3\4\0\2\4\1\0\1\4"+ - "\2\103\4\4\1\104\2\0\4\4\1\105\10\0\1\4"+ - "\1\0\3\4\1\106\10\4\1\0\2\4\25\0\1\107"+ - "\12\0\1\34\24\0\1\107\1\0\1\3\4\4\1\0"+ - "\2\3\4\0\2\4\1\0\1\4\2\110\1\111\2\112"+ - "\2\4\2\0\5\4\10\0\1\4\1\0\14\4\1\0"+ - "\2\4\1\3\4\4\1\0\2\3\4\0\2\4\1\0"+ - "\4\4\2\113\2\4\2\0\2\4\2\114\1\4\10\0"+ - "\1\4\1\0\2\4\1\115\6\4\1\116\2\4\1\0"+ - "\2\4\1\3\4\4\1\0\2\3\4\0\2\4\1\0"+ - "\1\4\2\117\4\4\1\120\2\0\5\4\10\0\1\4"+ - "\1\0\3\4\1\121\10\4\1\0\2\4\1\3\4\4"+ - "\1\0\2\3\4\0\2\4\1\0\1\122\2\123\3\4"+ - "\1\124\1\125\2\0\1\126\4\4\10\0\1\4\1\0"+ - "\4\4\1\127\1\130\6\4\1\0\1\124\1\4\1\3"+ - "\4\4\1\0\2\3\4\0\2\4\1\0\10\4\2\0"+ - "\4\4\1\131\10\0\1\4\1\0\14\4\1\0\2\4"+ - "\1\3\4\4\1\0\2\3\4\0\1\132\1\4\1\0"+ - "\3\4\1\133\4\4\2\0\1\4\1\132\2\4\1\134"+ - "\10\0\1\4\1\0\2\4\1\135\3\4\1\136\3\4"+ - "\1\137\1\4\1\0\2\4\40\0\1\34\31\0\1\64"+ - "\63\0\1\3\4\4\1\0\2\3\4\0\1\140\1\4"+ - "\1\0\6\4\1\141\1\4\2\0\1\4\1\140\3\4"+ - "\10\0\1\4\1\0\3\4\1\114\1\4\1\142\6\4"+ - "\1\0\1\141\1\4\1\3\4\4\1\0\2\3\4\0"+ - "\1\143\1\4\1\0\1\144\2\145\5\4\2\0\1\4"+ - "\1\143\2\4\1\146\10\0\1\4\1\0\3\4\1\147"+ - "\10\4\1\0\2\4\1\3\4\4\1\0\2\3\4\0"+ - "\1\4\1\150\1\0\3\4\1\151\2\114\2\4\2\0"+ - "\5\4\10\0\1\4\1\0\1\4\1\150\1\152\11\4"+ - "\1\0\2\4\42\0\1\26\67\0\1\26\23\0\1\3"+ - "\4\4\1\0\2\3\4\0\1\153\1\4\1\0\1\154"+ - "\7\4\2\0\1\4\1\153\2\4\1\155\10\0\1\4"+ - "\1\0\14\4\1\0\2\4\1\3\4\4\1\0\2\3"+ - "\4\0\1\156\1\4\1\0\1\4\2\157\3\4\1\160"+ - "\1\161\2\0\1\4\1\156\3\4\10\0\1\4\1\0"+ - "\14\4\1\0\1\160\1\4\1\3\4\4\1\0\2\3"+ - "\4\0\2\4\1\0\7\4\1\162\2\0\4\4\1\163"+ - "\10\0\1\4\1\0\3\4\1\164\10\4\1\0\2\4"+ - "\1\3\4\4\1\0\2\3\4\0\1\165\1\4\1\0"+ - "\1\120\7\4\2\0\1\4\1\165\2\114\1\4\10\0"+ - "\1\166\1\0\2\4\1\114\1\4\1\167\1\4\1\170"+ - "\5\4\1\0\2\4\1\3\4\4\1\0\2\3\4\0"+ - "\2\4\1\0\10\4\2\0\5\4\10\0\1\4\1\0"+ - "\3\4\1\171\1\4\1\172\6\4\1\0\2\4\1\3"+ - "\4\4\1\0\2\3\4\0\2\4\1\0\10\4\2\0"+ - "\4\4\1\173\10\0\1\4\1\0\14\4\1\0\2\4"+ - "\1\3\4\4\1\0\2\3\4\0\2\4\1\0\3\4"+ - "\1\174\3\4\1\175\2\0\5\4\10\0\1\4\1\0"+ - "\3\4\1\176\10\4\1\0\2\4\1\3\4\4\1\0"+ - "\2\3\4\0\2\4\1\0\1\177\6\4\1\114\2\0"+ - "\5\4\10\0\1\4\1\0\3\4\1\200\1\4\1\201"+ - "\6\4\1\0\2\4\1\3\4\4\1\0\2\3\4\0"+ - "\2\4\1\0\10\4\2\0\5\4\10\0\1\4\1\0"+ - "\3\4\1\147\10\4\1\0\2\4\10\50\1\0\22\50"+ - "\1\0\31\50\2\0\10\50\1\0\20\50\1\202\1\50"+ - "\1\0\31\50\22\0\2\203\7\0\1\204\35\0\10\50"+ - "\1\0\7\50\2\205\7\50\1\206\1\50\1\0\31\50"+ - "\2\0\10\50\1\0\22\50\1\0\14\50\1\207\14\50"+ - "\1\0\1\210\31\0\1\211\105\0\1\210\15\0\1\210"+ - "\5\60\1\0\2\60\4\0\2\60\1\0\10\60\2\0"+ - "\5\60\10\0\1\60\1\0\14\60\1\0\7\60\1\0"+ - "\2\60\4\0\2\60\1\0\1\60\5\61\2\60\2\0"+ - "\5\60\10\0\1\60\1\0\14\60\1\0\5\60\1\212"+ - "\1\60\1\0\2\60\4\0\2\60\1\0\10\60\1\213"+ - "\1\0\5\60\10\0\1\60\1\0\14\60\1\0\5\60"+ - "\1\64\1\60\1\0\2\60\4\0\3\214\1\215\1\60"+ - "\1\214\2\60\1\214\1\60\1\63\2\0\3\60\1\214"+ - "\1\60\10\0\1\60\1\0\14\60\1\0\2\60\1\3"+ - "\4\4\1\0\2\3\4\0\2\4\1\0\6\4\1\216"+ - "\1\4\2\0\5\4\10\0\1\4\1\0\14\4\1\0"+ - "\1\216\1\4\1\3\4\4\1\0\2\3\4\0\2\4"+ - "\1\0\7\4\1\217\2\0\4\4\1\220\10\0\1\4"+ - "\1\0\4\4\1\221\7\4\1\0\2\4\1\3\4\4"+ - "\1\0\2\3\4\0\2\4\1\0\1\4\2\70\1\222"+ - "\2\223\2\4\2\0\5\4\10\0\1\4\1\0\14\4"+ - "\1\0\2\4\1\3\4\4\1\0\2\3\4\0\2\4"+ - "\1\0\10\4\2\0\5\4\10\0\1\4\1\0\2\4"+ - "\1\120\11\4\1\0\2\4\1\3\4\4\1\0\2\3"+ - "\4\0\2\4\1\0\10\4\2\0\4\4\1\224\10\0"+ - "\1\4\1\0\2\4\1\225\11\4\1\0\2\4\1\3"+ - "\4\4\1\0\2\3\4\0\2\4\1\0\6\4\1\226"+ - "\1\4\2\0\1\147\4\4\10\0\1\4\1\0\2\4"+ - "\1\225\1\4\1\227\7\4\1\0\1\226\1\4\1\3"+ - "\4\4\1\0\2\3\4\0\2\4\1\0\10\4\2\0"+ - "\4\4\1\230\10\0\1\4\1\0\14\4\1\0\2\4"+ - "\1\3\4\4\1\0\2\3\4\0\2\4\1\0\10\4"+ - "\2\0\5\4\10\0\1\4\1\0\5\4\1\231\6\4"+ - "\1\0\2\4\1\3\4\4\1\0\2\3\4\0\2\4"+ - "\1\0\3\4\1\221\2\232\2\4\2\0\1\134\4\4"+ - "\10\0\1\4\1\0\14\4\1\0\2\4\1\3\4\4"+ - "\1\0\2\3\4\0\2\4\1\0\10\4\2\0\5\4"+ - "\10\0\1\4\1\0\2\4\1\233\1\4\1\234\7\4"+ - "\1\0\2\4\1\3\4\4\1\0\2\3\4\0\2\4"+ - "\1\0\10\4\2\0\5\4\10\0\1\4\1\0\3\4"+ - "\1\235\1\4\1\220\6\4\1\0\2\4\1\3\4\4"+ - "\1\0\2\3\4\0\1\4\1\236\1\0\4\4\2\237"+ - "\2\4\2\0\1\240\3\4\1\241\10\0\1\4\1\0"+ - "\1\4\1\236\7\4\1\242\2\4\1\0\2\4\1\3"+ - "\4\4\1\0\2\3\4\0\2\4\1\0\1\4\2\243"+ - "\5\4\2\0\5\4\10\0\1\4\1\0\14\4\1\0"+ - "\2\4\1\3\4\4\1\0\2\3\4\0\1\244\1\4"+ - "\1\0\10\4\2\0\1\4\1\244\3\4\10\0\1\4"+ - "\1\0\11\4\1\114\2\4\1\0\2\4\1\3\3\4"+ - "\1\245\1\0\2\3\4\0\2\4\1\0\3\4\1\246"+ - "\4\4\2\0\2\4\2\247\1\4\10\0\1\4\1\0"+ - "\14\4\1\0\2\4\1\3\4\4\1\0\2\3\4\0"+ - "\2\4\1\0\10\4\2\0\1\250\4\4\10\0\1\4"+ - "\1\0\14\4\1\0\2\4\1\3\4\4\1\0\2\3"+ - "\4\0\2\4\1\0\1\251\7\4\2\0\5\4\10\0"+ - "\1\4\1\0\14\4\1\0\2\4\3\0\2\252\10\0"+ - "\1\252\10\0\1\252\4\0\3\252\13\0\1\252\2\0"+ - "\1\252\12\0\1\3\4\4\1\0\2\3\4\0\2\4"+ - "\1\0\10\4\2\0\5\4\10\0\1\4\1\0\2\4"+ - "\1\253\11\4\1\0\2\4\1\3\4\4\1\0\2\3"+ - "\4\0\2\4\1\0\10\4\2\0\5\4\10\0\1\4"+ - "\1\0\3\4\1\254\10\4\1\0\2\4\1\3\4\4"+ - "\1\0\2\3\4\0\2\4\1\0\1\4\2\222\3\4"+ - "\1\255\1\4\2\0\5\4\10\0\1\4\1\0\14\4"+ - "\1\0\1\255\1\4\1\3\4\4\1\0\2\3\4\0"+ - "\2\4\1\0\10\4\2\0\5\4\10\0\1\4\1\0"+ - "\2\4\1\256\11\4\1\0\2\4\1\3\4\4\1\0"+ - "\2\3\4\0\2\4\1\0\6\4\1\257\1\4\2\0"+ - "\1\260\4\4\10\0\1\4\1\0\14\4\1\0\1\257"+ - "\1\4\1\3\4\4\1\0\2\3\4\0\2\4\1\0"+ - "\10\4\2\0\5\4\10\0\1\261\1\0\14\4\1\0"+ - "\2\4\1\3\4\4\1\0\2\3\4\0\2\4\1\0"+ - "\10\4\2\0\5\4\10\0\1\4\1\0\4\4\1\114"+ - "\6\4\1\232\1\0\2\4\1\3\4\4\1\0\2\3"+ - "\4\0\2\4\1\0\10\4\2\0\1\114\4\4\10\0"+ - "\1\4\1\0\14\4\1\0\2\4\1\3\4\4\1\0"+ - "\2\3\4\0\2\4\1\0\10\4\2\0\5\4\10\0"+ - "\1\4\1\0\2\4\1\262\1\263\10\4\1\0\2\4"+ - "\1\3\4\4\1\0\2\3\4\0\2\4\1\0\10\4"+ - "\2\0\5\4\10\0\1\4\1\0\4\4\1\114\7\4"+ - "\1\0\2\4\1\3\4\4\1\0\2\3\4\0\2\4"+ - "\1\0\10\4\2\0\5\4\10\0\1\4\1\0\2\4"+ - "\1\264\11\4\1\0\2\4\1\3\4\4\1\0\2\3"+ - "\4\0\2\4\1\0\10\4\2\0\4\4\1\265\10\0"+ - "\1\4\1\0\3\4\1\266\10\4\1\0\2\4\1\3"+ - "\4\4\1\0\2\3\4\0\2\4\1\0\3\4\1\267"+ - "\4\4\2\0\1\114\4\4\10\0\1\4\1\0\14\4"+ - "\1\0\2\4\1\3\4\4\1\0\2\3\4\0\1\270"+ - "\1\4\1\0\7\4\1\263\2\0\1\4\1\270\2\4"+ - "\1\271\10\0\1\4\1\0\3\4\1\263\10\4\1\0"+ - "\2\4\1\3\4\4\1\0\2\3\4\0\2\4\1\0"+ - "\10\4\2\0\5\4\10\0\1\4\1\0\5\4\1\105"+ - "\6\4\1\0\2\4\1\3\4\4\1\0\2\3\4\0"+ - "\2\4\1\0\10\4\2\0\5\4\10\0\1\4\1\0"+ - "\2\4\1\272\11\4\1\0\2\4\1\3\4\4\1\0"+ - "\2\3\4\0\2\4\1\0\10\4\2\0\5\4\10\0"+ - "\1\4\1\0\2\4\1\273\11\4\1\0\2\4\1\3"+ - "\4\4\1\0\2\3\4\0\1\47\1\4\1\0\10\4"+ - "\2\0\1\4\1\47\2\4\1\274\10\0\1\4\1\0"+ - "\14\4\1\0\2\4\1\3\4\4\1\0\2\3\4\0"+ - "\2\4\1\0\4\4\2\275\2\4\2\0\5\4\10\0"+ - "\1\4\1\0\14\4\1\0\2\4\1\3\3\4\1\276"+ - "\1\0\2\3\4\0\2\4\1\0\10\4\2\0\5\4"+ - "\10\0\1\4\1\0\14\4\1\0\2\4\1\3\4\4"+ - "\1\0\2\3\4\0\1\4\1\277\1\0\1\300\7\4"+ - "\2\0\5\4\10\0\1\4\1\0\1\4\1\277\12\4"+ - "\1\0\2\4\1\3\4\4\1\0\2\3\4\0\2\4"+ - "\1\0\7\4\1\70\2\0\5\4\10\0\1\4\1\0"+ - "\14\4\1\0\2\4\1\3\4\4\1\0\2\3\4\0"+ - "\2\4\1\0\1\4\2\120\5\4\2\0\5\4\10\0"+ - "\1\4\1\0\14\4\1\0\2\4\1\3\4\4\1\0"+ - "\2\3\4\0\2\4\1\0\1\301\7\4\2\0\5\4"+ - "\10\0\1\4\1\0\5\4\1\302\6\4\1\0\2\4"+ - "\1\3\4\4\1\0\2\3\4\0\1\303\1\4\1\0"+ - "\7\4\1\304\2\0\1\4\1\303\3\4\10\0\1\4"+ - "\1\0\14\4\1\0\2\4\1\3\4\4\1\0\2\3"+ - "\4\0\2\4\1\0\10\4\2\0\5\4\10\0\1\305"+ - "\1\0\14\4\1\0\2\4\1\3\4\4\1\0\2\3"+ - "\4\0\2\4\1\0\1\4\2\306\5\4\2\0\5\4"+ - "\10\0\1\4\1\0\14\4\1\0\2\4\1\3\4\4"+ - "\1\0\2\3\4\0\2\4\1\0\10\4\2\0\5\4"+ - "\10\0\1\4\1\0\2\4\1\307\11\4\1\0\2\4"+ - "\1\3\4\4\1\0\2\3\4\0\2\4\1\0\10\4"+ - "\2\0\5\4\10\0\1\4\1\0\2\4\1\310\11\4"+ - "\1\0\2\4\1\3\4\4\1\0\2\3\4\0\2\4"+ - "\1\0\3\4\1\311\4\4\2\0\5\4\10\0\1\4"+ - "\1\0\14\4\1\0\2\4\1\3\4\4\1\0\2\3"+ - "\4\0\1\114\1\4\1\0\10\4\2\0\1\4\1\114"+ - "\3\4\10\0\1\4\1\0\14\4\1\0\2\4\1\3"+ - "\4\4\1\0\2\3\4\0\1\4\1\312\1\0\10\4"+ - "\2\0\5\4\10\0\1\4\1\0\1\4\1\312\12\4"+ - "\1\0\2\4\1\3\4\4\1\0\2\3\4\0\2\4"+ - "\1\0\1\4\2\313\5\4\2\0\5\4\10\0\1\4"+ - "\1\0\14\4\1\0\2\4\1\3\4\4\1\0\2\3"+ - "\4\0\1\4\1\314\1\0\10\4\2\0\5\4\10\0"+ - "\1\4\1\0\1\4\1\314\12\4\1\0\2\4\1\3"+ - "\4\4\1\0\2\3\4\0\2\4\1\0\1\4\2\315"+ - "\5\4\2\0\5\4\10\0\1\4\1\0\3\4\1\316"+ - "\10\4\1\0\2\4\1\3\4\4\1\0\2\3\4\0"+ - "\2\4\1\0\10\4\2\0\5\4\10\0\1\4\1\0"+ - "\4\4\1\317\7\4\1\0\2\4\1\3\4\4\1\0"+ - "\2\3\4\0\1\320\1\4\1\0\10\4\2\0\1\4"+ - "\1\320\3\4\10\0\1\4\1\0\14\4\1\0\2\4"+ - "\1\3\4\4\1\0\2\3\4\0\2\4\1\0\1\4"+ - "\2\321\5\4\2\0\5\4\10\0\1\4\1\0\14\4"+ - "\1\0\2\4\1\3\4\4\1\0\2\3\4\0\1\4"+ - "\1\322\1\0\10\4\2\0\1\323\4\4\10\0\1\4"+ - "\1\0\1\4\1\322\12\4\1\0\2\4\1\3\4\4"+ - "\1\0\2\3\4\0\2\4\1\0\1\4\2\324\4\4"+ - "\1\304\2\0\5\4\10\0\1\4\1\0\14\4\1\0"+ - "\2\4\1\3\4\4\1\0\2\3\4\0\2\4\1\0"+ - "\10\4\2\0\5\4\10\0\1\4\1\0\2\4\1\325"+ - "\11\4\1\0\2\4\1\3\4\4\1\0\2\3\4\0"+ - "\2\4\1\0\10\4\2\0\5\4\10\0\1\4\1\0"+ - "\1\114\11\4\1\120\1\4\1\0\1\4\1\114\1\3"+ - "\4\4\1\0\2\3\4\0\1\326\1\4\1\0\10\4"+ - "\2\0\1\4\1\326\3\4\10\0\1\4\1\0\11\4"+ - "\1\327\2\4\1\0\2\4\1\3\4\4\1\0\2\3"+ - "\4\0\2\4\1\0\10\4\2\0\1\330\4\4\10\0"+ - "\1\4\1\0\14\4\1\0\2\4\1\3\4\4\1\0"+ - "\2\3\4\0\2\4\1\0\7\4\1\331\2\0\5\4"+ - "\10\0\1\4\1\0\14\4\1\0\2\4\1\3\4\4"+ - "\1\0\2\3\4\0\2\4\1\0\7\4\1\332\2\0"+ - "\1\333\4\4\10\0\1\4\1\0\14\4\1\0\2\4"+ - "\1\3\4\4\1\0\2\3\4\0\2\4\1\0\10\4"+ - "\2\0\5\4\10\0\1\4\1\0\10\4\1\334\3\4"+ - "\1\0\2\4\1\3\4\4\1\0\2\3\4\0\2\4"+ - "\1\0\7\4\1\335\2\0\5\4\10\0\1\4\1\0"+ - "\14\4\1\0\2\4\1\3\4\4\1\0\2\3\4\0"+ - "\2\4\1\0\10\4\2\0\5\4\10\0\1\4\1\0"+ - "\3\4\1\336\10\4\1\0\2\4\1\3\4\4\1\0"+ - "\2\3\4\0\1\337\1\4\1\0\10\4\2\0\1\250"+ - "\1\337\3\4\10\0\1\4\1\0\6\4\1\340\5\4"+ - "\1\0\2\4\1\3\4\4\1\0\2\3\4\0\1\341"+ - "\1\4\1\0\10\4\2\0\1\4\1\341\3\4\10\0"+ - "\1\4\1\0\14\4\1\0\2\4\1\3\4\4\1\0"+ - "\2\3\4\0\2\4\1\0\10\4\2\0\5\4\10\0"+ - "\1\4\1\0\3\4\1\342\10\4\1\0\2\4\1\3"+ - "\4\4\1\0\2\3\4\0\2\4\1\0\10\4\2\0"+ - "\1\343\4\4\10\0\1\4\1\0\14\4\1\0\2\4"+ - "\1\3\4\4\1\0\2\3\4\0\2\4\1\0\4\4"+ - "\2\344\2\4\2\0\1\345\4\4\10\0\1\4\1\0"+ - "\14\4\1\0\2\4\1\3\4\4\1\0\2\3\4\0"+ - "\2\4\1\0\4\4\2\346\2\4\2\0\5\4\10\0"+ - "\1\4\1\0\14\4\1\0\2\4\1\3\4\4\1\0"+ - "\2\3\4\0\1\4\1\347\1\0\10\4\2\0\5\4"+ - "\10\0\1\4\1\0\1\4\1\347\12\4\1\0\2\4"+ - "\1\3\3\4\1\350\1\0\2\3\4\0\2\4\1\0"+ - "\10\4\2\0\5\4\10\0\1\4\1\0\4\4\1\351"+ - "\7\4\1\0\2\4\10\50\1\0\20\50\1\352\1\50"+ - "\1\0\31\50\24\0\1\353\112\0\1\354\20\0\10\50"+ - "\1\0\11\50\1\355\10\50\1\0\31\50\2\0\10\50"+ - "\1\0\22\50\1\0\12\50\1\356\16\50\2\0\10\50"+ - "\1\0\22\50\1\0\14\50\1\357\14\50\1\0\1\360"+ - "\50\0\1\360\15\0\1\360\31\0\1\361\35\0\3\60"+ - "\1\212\1\60\1\0\2\60\4\0\3\214\1\215\1\60"+ - "\1\214\2\60\1\214\2\60\2\0\3\60\1\214\1\60"+ - "\10\0\1\60\1\0\14\60\1\0\2\60\3\0\1\212"+ - "\63\0\5\60\1\0\2\60\4\0\2\60\1\0\1\60"+ - "\5\214\2\60\2\0\5\60\10\0\1\60\1\0\14\60"+ - "\1\0\2\60\1\3\4\4\1\0\2\3\4\0\2\4"+ - "\1\0\10\4\2\0\4\4\1\147\10\0\1\4\1\0"+ - "\14\4\1\0\2\4\1\3\3\4\1\114\1\0\2\3"+ - "\4\0\2\4\1\0\10\4\2\0\5\4\10\0\1\4"+ - "\1\0\14\4\1\0\2\4\1\3\4\4\1\0\2\3"+ - "\4\0\2\4\1\0\10\4\2\0\1\232\4\4\10\0"+ - "\1\4\1\0\14\4\1\0\2\4\1\3\4\4\1\0"+ - "\2\3\4\0\2\4\1\0\3\4\1\114\4\4\2\0"+ - "\5\4\10\0\1\4\1\0\14\4\1\0\2\4\1\3"+ - "\4\4\1\0\2\3\4\0\2\4\1\0\10\4\2\0"+ - "\5\4\10\0\1\4\1\0\2\4\1\225\11\4\1\0"+ - "\2\4\1\3\4\4\1\0\2\3\4\0\2\4\1\0"+ - "\6\4\1\226\1\4\2\0\5\4\10\0\1\4\1\0"+ - "\14\4\1\0\1\226\1\4\1\3\4\4\1\0\2\3"+ - "\4\0\2\4\1\0\4\4\2\362\2\4\2\0\5\4"+ - "\10\0\1\4\1\0\14\4\1\0\2\4\1\3\4\4"+ - "\1\0\2\3\4\0\2\4\1\0\10\4\2\0\5\4"+ - "\10\0\1\4\1\0\7\4\1\114\4\4\1\0\2\4"+ - "\1\3\4\4\1\0\2\3\4\0\2\4\1\0\10\4"+ - "\2\0\5\4\10\0\1\4\1\0\3\4\1\363\10\4"+ - "\1\0\2\4\1\3\4\4\1\0\2\3\4\0\2\4"+ - "\1\0\10\4\2\0\5\4\10\0\1\4\1\0\5\4"+ - "\1\220\6\4\1\0\2\4\1\3\4\4\1\0\2\3"+ - "\4\0\1\364\1\4\1\0\10\4\2\0\1\4\1\364"+ - "\3\4\10\0\1\4\1\0\14\4\1\0\2\4\1\3"+ - "\4\4\1\0\2\3\4\0\2\4\1\0\10\4\2\0"+ - "\5\4\10\0\1\232\1\0\14\4\1\0\2\4\1\3"+ - "\4\4\1\0\2\3\4\0\2\4\1\0\7\4\1\114"+ - "\2\0\5\4\10\0\1\4\1\0\14\4\1\0\2\4"+ - "\1\3\4\4\1\0\2\3\4\0\2\4\1\0\4\4"+ - "\2\120\2\4\2\0\1\365\4\4\10\0\1\4\1\0"+ - "\14\4\1\0\2\4\1\3\4\4\1\0\2\3\4\0"+ - "\2\4\1\0\10\4\2\0\5\4\10\0\1\4\1\0"+ - "\10\4\1\114\3\4\1\0\2\4\1\3\4\4\1\0"+ - "\2\3\4\0\2\4\1\0\10\4\2\0\5\4\10\0"+ - "\1\4\1\0\3\4\1\221\10\4\1\0\2\4\1\3"+ - "\4\4\1\0\2\3\4\0\2\4\1\0\1\4\2\300"+ - "\5\4\2\0\5\4\10\0\1\4\1\0\14\4\1\0"+ - "\2\4\1\3\4\4\1\0\2\3\4\0\2\4\1\0"+ - "\1\366\7\4\2\0\5\4\10\0\1\4\1\0\14\4"+ - "\1\0\2\4\1\3\4\4\1\0\2\3\4\0\2\4"+ - "\1\0\1\367\7\4\2\0\5\4\10\0\1\4\1\0"+ - "\14\4\1\0\2\4\1\3\4\4\1\0\2\3\4\0"+ - "\1\4\1\370\1\0\10\4\2\0\5\4\10\0\1\4"+ - "\1\0\1\4\1\370\12\4\1\0\2\4\1\3\4\4"+ - "\1\0\2\3\4\0\2\4\1\0\10\4\2\0\5\4"+ - "\10\0\1\4\1\0\3\4\1\371\10\4\1\0\2\4"+ - "\1\3\4\4\1\0\2\3\4\0\2\4\1\0\4\4"+ - "\2\372\2\4\2\0\5\4\10\0\1\4\1\0\14\4"+ - "\1\0\2\4\1\3\4\4\1\0\2\3\4\0\2\4"+ - "\1\0\7\4\1\373\2\0\5\4\10\0\1\4\1\0"+ - "\14\4\1\0\2\4\1\3\4\4\1\0\2\3\4\0"+ - "\2\4\1\0\1\4\2\374\1\375\4\4\2\0\5\4"+ - "\10\0\1\4\1\0\14\4\1\0\2\4\1\3\4\4"+ - "\1\0\2\3\4\0\2\4\1\0\7\4\1\376\2\0"+ - "\5\4\10\0\1\4\1\0\14\4\1\0\2\4\1\3"+ - "\4\4\1\0\2\3\4\0\2\4\1\0\10\4\2\0"+ - "\4\4\1\377\10\0\1\4\1\0\14\4\1\0\2\4"+ - "\1\3\4\4\1\0\2\3\4\0\2\4\1\0\7\4"+ - "\1\364\2\0\5\4\10\0\1\4\1\0\14\4\1\0"+ - "\2\4\1\3\4\4\1\0\2\3\4\0\2\4\1\0"+ - "\10\4\2\0\5\4\10\0\1\4\1\0\4\4\1\u0100"+ - "\7\4\1\0\2\4\3\60\2\252\1\0\2\60\4\0"+ - "\1\u0101\1\252\1\u0101\1\u0102\1\60\1\u0101\2\60\1\u0101"+ - "\1\60\1\252\2\0\2\60\3\252\10\0\1\60\1\0"+ - "\1\60\1\252\2\60\1\252\7\60\1\0\2\60\1\3"+ - "\4\4\1\0\2\3\4\0\2\4\1\0\10\4\2\0"+ - "\1\u0103\4\4\10\0\1\4\1\0\14\4\1\0\2\4"+ - "\1\3\4\4\1\0\2\3\4\0\2\4\1\0\10\4"+ - "\2\0\5\4\10\0\1\4\1\0\2\4\1\262\11\4"+ - "\1\0\2\4\1\3\4\4\1\0\2\3\4\0\2\4"+ - "\1\0\10\4\2\0\5\4\10\0\1\4\1\0\3\4"+ - "\1\266\10\4\1\0\2\4\1\3\4\4\1\0\2\3"+ - "\4\0\2\4\1\0\10\4\2\0\5\4\10\0\1\4"+ - "\1\0\3\4\1\120\10\4\1\0\2\4\1\3\4\4"+ - "\1\0\2\3\4\0\2\4\1\0\7\4\1\u0104\2\0"+ - "\5\4\10\0\1\4\1\0\14\4\1\0\2\4\1\3"+ - "\4\4\1\0\2\3\4\0\2\4\1\0\7\4\1\u0105"+ - "\2\0\5\4\10\0\1\4\1\0\14\4\1\0\2\4"+ - "\1\3\4\4\1\0\2\3\4\0\2\4\1\0\3\4"+ - "\1\u0106\4\4\2\0\5\4\10\0\1\4\1\0\3\4"+ - "\1\u0107\10\4\1\0\2\4\1\3\4\4\1\0\2\3"+ - "\4\0\2\4\1\0\10\4\2\0\5\4\10\0\1\4"+ - "\1\0\7\4\1\364\4\4\1\0\2\4\1\3\4\4"+ - "\1\0\2\3\4\0\2\4\1\0\10\4\2\0\5\4"+ - "\10\0\1\114\1\0\14\4\1\0\2\4\1\3\4\4"+ - "\1\0\2\3\4\0\2\4\1\0\10\4\2\0\5\4"+ - "\10\0\1\4\1\0\7\4\1\u0100\4\4\1\0\2\4"+ - "\1\3\4\4\1\0\2\3\4\0\1\u0108\1\u0109\1\0"+ - "\10\4\2\0\1\4\1\u0108\3\4\10\0\1\4\1\0"+ - "\1\4\1\u0109\12\4\1\0\2\4\1\3\4\4\1\0"+ - "\2\3\4\0\1\u010a\1\4\1\0\10\4\2\0\1\4"+ - "\1\u010a\3\4\10\0\1\4\1\0\14\4\1\0\2\4"+ - "\1\3\4\4\1\0\2\3\4\0\2\4\1\0\7\4"+ - "\1\u010b\2\0\5\4\10\0\1\4\1\0\14\4\1\0"+ - "\2\4\1\3\4\4\1\0\2\3\4\0\2\4\1\0"+ - "\1\u010c\2\254\5\4\2\0\5\4\10\0\1\4\1\0"+ - "\14\4\1\0\2\4\1\3\4\4\1\0\2\3\4\0"+ - "\2\4\1\0\10\4\2\0\1\u010d\4\4\10\0\1\4"+ - "\1\0\14\4\1\0\2\4\1\3\3\4\1\u010e\1\0"+ - "\2\3\4\0\2\4\1\0\10\4\2\0\5\4\10\0"+ - "\1\4\1\0\14\4\1\0\2\4\1\3\4\4\1\0"+ - "\2\3\4\0\1\4\1\u010f\1\0\10\4\2\0\5\4"+ - "\10\0\1\4\1\0\1\4\1\u010f\12\4\1\0\2\4"+ - "\1\3\4\4\1\0\2\3\4\0\2\4\1\0\4\4"+ - "\2\232\2\4\2\0\5\4\10\0\1\4\1\0\14\4"+ - "\1\0\2\4\1\3\4\4\1\0\2\3\4\0\2\4"+ - "\1\0\7\4\1\277\2\0\5\4\10\0\1\4\1\0"+ - "\14\4\1\0\2\4\1\3\4\4\1\0\2\3\4\0"+ - "\2\4\1\0\6\4\1\114\1\4\2\0\5\4\10\0"+ - "\1\4\1\0\14\4\1\0\1\114\1\4\1\3\4\4"+ - "\1\0\2\3\4\0\2\4\1\0\1\4\2\u0110\5\4"+ - "\2\0\5\4\10\0\1\4\1\0\14\4\1\0\2\4"+ - "\1\3\4\4\1\0\2\3\4\0\2\4\1\0\10\4"+ - "\2\0\5\4\10\0\1\4\1\0\11\4\1\114\2\4"+ - "\1\0\2\4\1\3\4\4\1\0\2\3\4\0\2\4"+ - "\1\0\7\4\1\u0111\2\0\5\4\10\0\1\4\1\0"+ - "\14\4\1\0\2\4\1\3\3\4\1\u0112\1\0\2\3"+ - "\4\0\2\4\1\0\10\4\2\0\5\4\10\0\1\4"+ - "\1\0\14\4\1\0\2\4\1\3\4\4\1\0\2\3"+ - "\4\0\2\4\1\0\10\4\2\0\5\4\10\0\1\4"+ - "\1\0\3\4\1\u0113\10\4\1\0\2\4\1\3\4\4"+ - "\1\0\2\3\4\0\2\4\1\0\10\4\2\0\5\4"+ - "\10\0\1\4\1\0\2\4\1\114\11\4\1\0\2\4"+ - "\1\3\4\4\1\0\2\3\4\0\2\4\1\0\7\4"+ - "\1\u0114\2\0\5\4\10\0\1\4\1\0\14\4\1\0"+ - "\2\4\1\3\4\4\1\0\2\3\4\0\2\4\1\0"+ - "\7\4\1\161\2\0\5\4\10\0\1\4\1\0\14\4"+ - "\1\0\2\4\1\3\3\4\1\u0115\1\0\2\3\4\0"+ - "\2\4\1\0\10\4\2\0\5\4\10\0\1\4\1\0"+ - "\14\4\1\0\2\4\1\3\4\4\1\0\2\3\4\0"+ - "\2\4\1\0\10\4\2\0\4\4\1\u0116\10\0\1\4"+ - "\1\0\14\4\1\0\2\4\1\3\4\4\1\0\2\3"+ - "\4\0\2\4\1\0\4\4\2\301\2\4\2\0\5\4"+ - "\10\0\1\4\1\0\14\4\1\0\2\4\1\3\4\4"+ - "\1\0\2\3\4\0\1\u0117\1\4\1\0\6\4\1\u0118"+ - "\1\4\2\0\1\4\1\u0117\3\4\10\0\1\4\1\0"+ - "\14\4\1\0\1\u0118\1\4\1\3\4\4\1\0\2\3"+ - "\4\0\2\4\1\0\10\4\2\0\4\4\1\362\10\0"+ - "\1\4\1\0\14\4\1\0\2\4\1\3\4\4\1\0"+ - "\2\3\4\0\2\4\1\0\10\4\2\0\4\4\1\u0119"+ - "\10\0\1\4\1\0\14\4\1\0\2\4\1\3\4\4"+ - "\1\0\2\3\4\0\2\4\1\0\10\4\2\0\5\4"+ - "\10\0\1\4\1\0\6\4\1\u011a\5\4\1\0\2\4"+ - "\1\3\4\4\1\0\2\3\4\0\2\4\1\0\10\4"+ - "\2\0\1\u011b\4\4\10\0\1\u011c\1\0\14\4\1\0"+ - "\2\4\1\3\4\4\1\0\2\3\4\0\2\4\1\0"+ - "\3\4\1\u010d\4\4\2\0\5\4\10\0\1\4\1\0"+ - "\14\4\1\0\2\4\1\3\4\4\1\0\2\3\4\0"+ - "\2\4\1\0\10\4\2\0\1\u011d\3\4\1\u011e\10\0"+ - "\1\4\1\0\14\4\1\0\2\4\1\3\4\4\1\0"+ - "\2\3\4\0\2\4\1\0\10\4\2\0\1\u011f\4\4"+ - "\10\0\1\4\1\0\14\4\1\0\2\4\1\3\4\4"+ - "\1\0\2\3\4\0\2\4\1\0\7\4\1\u0120\2\0"+ - "\5\4\10\0\1\4\1\0\14\4\1\0\2\4\1\3"+ - "\4\4\1\0\2\3\4\0\2\4\1\0\6\4\1\u0121"+ - "\1\4\2\0\5\4\10\0\1\4\1\0\14\4\1\0"+ - "\1\u0121\1\4\1\3\4\4\1\0\2\3\4\0\2\4"+ - "\1\0\3\4\1\232\4\4\2\0\5\4\10\0\1\4"+ - "\1\0\14\4\1\0\2\4\1\3\4\4\1\0\2\3"+ - "\4\0\1\4\1\114\1\0\10\4\2\0\5\4\10\0"+ - "\1\4\1\0\1\4\1\114\12\4\1\0\2\4\1\3"+ - "\4\4\1\0\2\3\4\0\1\u0122\1\4\1\0\10\4"+ - "\2\0\1\4\1\u0122\3\4\10\0\1\4\1\0\14\4"+ - "\1\0\2\4\1\3\4\4\1\0\2\3\4\0\2\4"+ - "\1\0\7\4\1\u0123\2\0\5\4\10\0\1\4\1\0"+ - "\14\4\1\0\2\4\1\3\4\4\1\0\2\3\4\0"+ - "\2\4\1\0\1\4\2\u0124\3\4\1\u0125\1\4\2\0"+ - "\5\4\10\0\1\4\1\0\3\4\1\u0126\10\4\1\0"+ - "\1\u0125\1\4\1\3\4\4\1\0\2\3\4\0\2\4"+ - "\1\0\3\4\1\274\4\4\2\0\5\4\10\0\1\4"+ - "\1\0\14\4\1\0\2\4\1\3\4\4\1\0\2\3"+ - "\4\0\1\u0127\1\4\1\0\10\4\2\0\1\4\1\u0127"+ - "\3\4\10\0\1\4\1\0\14\4\1\0\2\4\1\3"+ - "\4\4\1\0\2\3\4\0\2\4\1\0\1\4\2\u0128"+ - "\5\4\2\0\5\4\10\0\1\4\1\0\14\4\1\0"+ - "\2\4\1\3\4\4\1\0\2\3\4\0\2\4\1\0"+ - "\7\4\1\u0129\2\0\5\4\10\0\1\4\1\0\14\4"+ - "\1\0\2\4\1\3\4\4\1\0\2\3\4\0\1\u012a"+ - "\1\4\1\0\10\4\2\0\1\4\1\u012a\3\4\10\0"+ - "\1\4\1\0\14\4\1\0\2\4\1\3\4\4\1\0"+ - "\2\3\4\0\2\4\1\0\3\4\1\u012b\4\4\2\0"+ - "\5\4\10\0\1\4\1\0\14\4\1\0\2\4\1\3"+ - "\4\4\1\0\2\3\4\0\2\4\1\0\7\4\1\u0110"+ - "\2\0\5\4\10\0\1\4\1\0\14\4\1\0\2\4"+ - "\1\3\4\4\1\0\2\3\4\0\2\4\1\0\10\4"+ - "\2\0\4\4\1\221\10\0\1\4\1\0\14\4\1\0"+ - "\2\4\1\3\4\4\1\0\2\3\4\0\2\4\1\0"+ - "\1\4\2\u012c\5\4\2\0\5\4\10\0\1\4\1\0"+ - "\14\4\1\0\2\4\1\3\4\4\1\0\2\3\4\0"+ - "\2\4\1\0\10\4\2\0\5\4\10\0\1\4\1\0"+ - "\4\4\1\340\7\4\1\0\2\4\1\3\4\4\1\0"+ - "\2\3\4\0\2\4\1\0\10\4\2\0\1\74\4\4"+ - "\10\0\1\4\1\0\12\4\1\u012d\1\4\1\0\2\4"+ - "\1\3\4\4\1\0\2\3\4\0\2\4\1\0\1\122"+ - "\7\4\2\0\5\4\10\0\1\4\1\0\14\4\1\0"+ - "\2\4\1\3\4\4\1\0\2\3\4\0\2\4\1\0"+ - "\10\4\2\0\5\4\10\0\1\4\1\0\3\4\1\114"+ - "\10\4\1\0\2\4\1\3\4\4\1\0\2\3\4\0"+ - "\2\4\1\0\10\4\2\0\1\u012e\4\4\10\0\1\4"+ - "\1\0\14\4\1\0\2\4\1\3\4\4\1\0\2\3"+ - "\4\0\2\4\1\0\1\u012f\7\4\2\0\5\4\10\0"+ - "\1\4\1\0\14\4\1\0\2\4\1\3\4\4\1\0"+ - "\2\3\4\0\2\4\1\0\3\4\1\u0130\4\4\2\0"+ - "\5\4\10\0\1\4\1\0\14\4\1\0\2\4\1\3"+ - "\4\4\1\0\2\3\4\0\2\4\1\0\10\4\2\0"+ - "\4\4\1\274\10\0\1\4\1\0\14\4\1\0\2\4"+ - "\10\50\1\0\22\50\1\0\12\50\1\u0131\16\50\30\0"+ - "\1\354\107\0\1\u0132\17\0\10\50\1\0\15\50\1\356"+ - "\4\50\1\0\31\50\2\0\10\50\1\0\22\50\1\0"+ - "\13\50\1\u0133\15\50\2\0\10\50\1\0\17\50\1\u0134"+ - "\2\50\1\0\31\50\32\0\1\u0135\104\0\1\u0136\20\0"+ - "\1\3\4\4\1\0\2\3\4\0\2\4\1\0\4\4"+ - "\2\114\2\4\2\0\5\4\10\0\1\4\1\0\14\4"+ - "\1\0\2\4\1\3\4\4\1\0\2\3\4\0\1\120"+ - "\1\4\1\0\10\4\2\0\1\4\1\120\3\4\10\0"+ - "\1\4\1\0\14\4\1\0\2\4\1\3\4\4\1\0"+ - "\2\3\4\0\2\4\1\0\1\4\2\u0137\5\4\2\0"+ - "\5\4\10\0\1\4\1\0\14\4\1\0\2\4\1\3"+ - "\4\4\1\0\2\3\4\0\2\4\1\0\10\4\2\0"+ - "\5\4\10\0\1\4\1\0\11\4\1\232\2\4\1\0"+ - "\2\4\1\3\4\4\1\0\2\3\4\0\1\u0138\1\4"+ - "\1\0\10\4\2\0\1\4\1\u0138\3\4\10\0\1\4"+ - "\1\0\14\4\1\0\2\4\1\3\4\4\1\0\2\3"+ - "\4\0\2\4\1\0\10\4\2\0\5\4\10\0\1\4"+ - "\1\0\3\4\1\u0139\10\4\1\0\2\4\1\3\4\4"+ - "\1\0\2\3\4\0\2\4\1\0\10\4\2\0\5\4"+ - "\10\0\1\4\1\0\6\4\1\u013a\5\4\1\0\2\4"+ - "\1\3\4\4\1\0\2\3\4\0\2\4\1\0\7\4"+ - "\1\u013b\2\0\5\4\10\0\1\4\1\0\14\4\1\0"+ - "\2\4\1\3\3\4\1\u013c\1\0\2\3\4\0\2\4"+ - "\1\0\10\4\2\0\5\4\10\0\1\4\1\0\14\4"+ - "\1\0\2\4\1\3\4\4\1\0\2\3\4\0\2\4"+ - "\1\0\10\4\2\0\5\4\10\0\1\4\1\0\11\4"+ - "\1\u013d\2\4\1\0\2\4\1\3\4\4\1\0\2\3"+ - "\4\0\2\4\1\0\10\4\2\0\4\4\1\u013e\10\0"+ - "\1\4\1\0\14\4\1\0\2\4\1\3\4\4\1\0"+ - "\2\3\4\0\2\4\1\0\10\4\2\0\5\4\10\0"+ - "\1\4\1\0\7\4\1\u011a\4\4\1\0\2\4\1\3"+ - "\4\4\1\0\2\3\4\0\2\4\1\0\1\u013f\7\4"+ - "\2\0\5\4\10\0\1\4\1\0\14\4\1\0\2\4"+ - "\1\3\4\4\1\0\2\3\4\0\2\4\1\0\3\4"+ - "\1\250\4\4\2\0\5\4\10\0\1\4\1\0\14\4"+ - "\1\0\2\4\5\60\1\0\2\60\4\0\2\60\1\0"+ - "\1\60\5\u0101\2\60\2\0\5\60\10\0\1\60\1\0"+ - "\14\60\1\0\2\60\1\3\4\4\1\0\2\3\4\0"+ - "\2\4\1\0\7\4\1\u0140\2\0\5\4\10\0\1\4"+ - "\1\0\14\4\1\0\2\4\1\3\4\4\1\0\2\3"+ - "\4\0\1\u0141\1\4\1\0\10\4\2\0\1\4\1\u0141"+ - "\3\4\10\0\1\4\1\0\14\4\1\0\2\4\1\3"+ - "\4\4\1\0\2\3\4\0\1\u0142\1\4\1\0\10\4"+ - "\2\0\1\4\1\u0142\3\4\10\0\1\4\1\0\7\4"+ - "\1\u0143\4\4\1\0\2\4\1\3\4\4\1\0\2\3"+ - "\4\0\2\4\1\0\7\4\1\u0144\2\0\5\4\10\0"+ - "\1\4\1\0\14\4\1\0\2\4\1\3\4\4\1\0"+ - "\2\3\4\0\1\u0145\1\4\1\0\10\4\2\0\1\4"+ - "\1\u0145\3\4\10\0\1\4\1\0\14\4\1\0\2\4"+ - "\1\3\4\4\1\0\2\3\4\0\2\4\1\0\7\4"+ - "\1\325\2\0\5\4\10\0\1\4\1\0\14\4\1\0"+ - "\2\4\1\3\4\4\1\0\2\3\4\0\2\4\1\0"+ - "\10\4\2\0\5\4\10\0\1\4\1\0\3\4\1\u0146"+ - "\10\4\1\0\2\4\1\3\4\4\1\0\2\3\4\0"+ - "\2\4\1\0\10\4\2\0\1\364\4\4\10\0\1\4"+ - "\1\0\14\4\1\0\2\4\1\3\3\4\1\120\1\0"+ - "\2\3\4\0\2\4\1\0\10\4\2\0\5\4\10\0"+ - "\1\4\1\0\14\4\1\0\2\4\1\3\3\4\1\u0147"+ - "\1\0\2\3\4\0\2\4\1\0\10\4\2\0\5\4"+ - "\10\0\1\4\1\0\14\4\1\0\2\4\1\3\4\4"+ - "\1\0\2\3\4\0\2\4\1\0\1\4\2\217\5\4"+ - "\2\0\5\4\10\0\1\4\1\0\14\4\1\0\2\4"+ - "\1\3\4\4\1\0\2\3\4\0\2\4\1\0\3\4"+ - "\1\u0148\4\4\2\0\5\4\10\0\1\4\1\0\14\4"+ - "\1\0\2\4\1\3\4\4\1\0\2\3\4\0\2\4"+ - "\1\0\3\4\1\u0149\4\4\2\0\5\4\10\0\1\4"+ - "\1\0\14\4\1\0\2\4\1\3\4\4\1\0\2\3"+ - "\4\0\2\4\1\0\10\4\2\0\2\4\2\114\1\4"+ - "\10\0\1\4\1\0\14\4\1\0\2\4\1\3\4\4"+ - "\1\0\2\3\4\0\2\4\1\0\10\4\2\0\4\4"+ - "\1\u014a\10\0\1\4\1\0\14\4\1\0\2\4\1\3"+ - "\4\4\1\0\2\3\4\0\2\4\1\0\10\4\2\0"+ - "\5\4\10\0\1\4\1\0\1\114\13\4\1\0\1\4"+ - "\1\114\1\3\4\4\1\0\2\3\4\0\2\4\1\0"+ - "\10\4\2\0\5\4\10\0\1\4\1\0\3\4\1\u0110"+ - "\10\4\1\0\2\4\1\3\4\4\1\0\2\3\4\0"+ - "\2\4\1\0\10\4\2\0\1\u014b\4\4\10\0\1\4"+ - "\1\0\14\4\1\0\2\4\1\3\4\4\1\0\2\3"+ - "\4\0\2\4\1\0\3\4\1\u014c\4\4\2\0\5\4"+ - "\10\0\1\4\1\0\14\4\1\0\2\4\1\3\4\4"+ - "\1\0\2\3\4\0\2\4\1\0\7\4\1\u014d\2\0"+ - "\5\4\10\0\1\4\1\0\14\4\1\0\2\4\1\3"+ - "\4\4\1\0\2\3\4\0\2\4\1\0\10\4\2\0"+ - "\4\4\1\u014e\10\0\1\4\1\0\14\4\1\0\2\4"+ - "\1\3\4\4\1\0\2\3\4\0\2\4\1\0\3\4"+ - "\1\u014f\4\4\2\0\5\4\10\0\1\4\1\0\14\4"+ - "\1\0\2\4\1\3\4\4\1\0\2\3\4\0\2\4"+ - "\1\0\10\4\2\0\4\4\1\220\10\0\1\4\1\0"+ - "\14\4\1\0\2\4\1\3\4\4\1\0\2\3\4\0"+ - "\2\4\1\0\7\4\1\u0150\2\0\5\4\10\0\1\4"+ - "\1\0\14\4\1\0\2\4\1\3\4\4\1\0\2\3"+ - "\4\0\2\4\1\0\7\4\1\u0151\2\0\5\4\10\0"+ - "\1\4\1\0\14\4\1\0\2\4\1\3\4\4\1\0"+ - "\2\3\4\0\2\4\1\0\1\4\2\340\5\4\2\0"+ - "\5\4\10\0\1\4\1\0\14\4\1\0\2\4\1\3"+ - "\4\4\1\0\2\3\4\0\2\4\1\0\10\4\2\0"+ - "\5\4\10\0\1\4\1\0\11\4\1\u0152\2\4\1\0"+ - "\2\4\1\3\4\4\1\0\2\3\4\0\2\4\1\0"+ - "\7\4\1\370\2\0\5\4\10\0\1\4\1\0\14\4"+ - "\1\0\2\4\1\3\4\4\1\0\2\3\4\0\2\4"+ - "\1\0\10\4\2\0\5\4\10\0\1\4\1\0\2\4"+ - "\1\u0125\11\4\1\0\2\4\1\3\4\4\1\0\2\3"+ - "\4\0\2\4\1\0\7\4\1\u0153\2\0\5\4\10\0"+ - "\1\4\1\0\14\4\1\0\2\4\1\3\4\4\1\0"+ - "\2\3\4\0\2\4\1\0\10\4\2\0\5\4\10\0"+ - "\1\4\1\0\3\4\1\u0154\10\4\1\0\2\4\1\3"+ - "\4\4\1\0\2\3\4\0\2\4\1\0\4\4\2\u0155"+ - "\2\4\2\0\5\4\10\0\1\4\1\0\14\4\1\0"+ - "\2\4\1\3\4\4\1\0\2\3\4\0\2\4\1\0"+ - "\10\4\2\0\5\4\10\0\1\4\1\0\2\4\1\u0156"+ - "\11\4\1\0\2\4\1\3\4\4\1\0\2\3\4\0"+ - "\2\4\1\0\1\4\2\222\5\4\2\0\5\4\10\0"+ - "\1\4\1\0\14\4\1\0\2\4\1\3\4\4\1\0"+ - "\2\3\4\0\2\4\1\0\10\4\2\0\5\4\10\0"+ - "\1\4\1\0\6\4\1\u0157\5\4\1\0\2\4\1\3"+ - "\4\4\1\0\2\3\4\0\2\4\1\0\10\4\2\0"+ - "\4\4\1\u0158\10\0\1\4\1\0\14\4\1\0\2\4"+ - "\1\3\4\4\1\0\2\3\4\0\2\4\1\0\10\4"+ - "\2\0\5\4\10\0\1\4\1\0\3\4\1\u0159\10\4"+ - "\1\0\2\4\1\3\3\4\1\u010a\1\0\2\3\4\0"+ - "\2\4\1\0\10\4\2\0\5\4\10\0\1\4\1\0"+ - "\14\4\1\0\2\4\1\3\4\4\1\0\2\3\4\0"+ - "\1\u015a\1\4\1\0\3\4\1\u015b\4\4\2\0\1\4"+ - "\1\u015a\3\4\10\0\1\4\1\0\14\4\1\0\2\4"+ - "\1\3\4\4\1\0\2\3\4\0\2\4\1\0\7\4"+ - "\1\u015c\2\0\5\4\10\0\1\4\1\0\14\4\1\0"+ - "\2\4\1\3\4\4\1\0\2\3\4\0\2\4\1\0"+ - "\10\4\2\0\4\4\1\70\10\0\1\4\1\0\14\4"+ - "\1\0\2\4\1\3\4\4\1\0\2\3\4\0\2\4"+ - "\1\0\10\4\2\0\5\4\10\0\1\4\1\0\11\4"+ - "\1\u015d\2\4\1\0\2\4\1\3\4\4\1\0\2\3"+ - "\4\0\2\4\1\0\1\4\2\u015e\5\4\2\0\5\4"+ - "\10\0\1\4\1\0\3\4\1\u015f\10\4\1\0\2\4"+ - "\1\3\4\4\1\0\2\3\4\0\2\4\1\0\3\4"+ - "\1\u0160\4\4\2\0\5\4\10\0\1\4\1\0\14\4"+ - "\1\0\2\4\1\3\4\4\1\0\2\3\4\0\2\4"+ - "\1\0\10\4\2\0\4\4\1\224\10\0\1\4\1\0"+ - "\14\4\1\0\2\4\10\50\1\0\12\50\2\356\6\50"+ - "\1\0\13\50\1\u0133\15\50\46\0\1\u0161\22\0\10\50"+ - "\1\0\22\50\1\0\10\50\1\u0162\20\50\2\0\1\50"+ - "\4\u0134\1\50\1\u0134\1\50\1\0\2\50\20\u0134\1\u0135"+ - "\6\u0134\2\50\1\u0134\1\50\16\u0134\1\50\2\u0135\1\0"+ - "\1\u0135\1\u0163\2\u0135\1\0\1\u0163\4\0\1\u0163\2\u0135"+ - "\1\u0163\10\u0135\2\u0163\5\u0135\4\u0163\2\0\1\u0135\1\0"+ - "\1\u0135\1\u0163\14\u0135\1\0\2\u0135\23\0\2\354\22\0"+ - "\1\u0132\17\0\1\3\4\4\1\0\2\3\4\0\2\4"+ - "\1\0\10\4\2\0\5\4\10\0\1\4\1\0\2\4"+ - "\1\u0164\11\4\1\0\2\4\1\3\4\4\1\0\2\3"+ - "\4\0\2\4\1\0\10\4\2\0\5\4\10\0\1\4"+ - "\1\0\2\4\1\u0165\11\4\1\0\2\4\1\3\4\4"+ - "\1\0\2\3\4\0\2\4\1\0\10\4\2\0\5\4"+ - "\10\0\1\4\1\0\2\4\1\u014c\11\4\1\0\2\4"+ - "\1\3\4\4\1\0\2\3\4\0\2\4\1\0\7\4"+ - "\1\u0166\2\0\5\4\10\0\1\4\1\0\14\4\1\0"+ - "\2\4\1\3\4\4\1\0\2\3\4\0\2\4\1\0"+ - "\7\4\1\u0167\2\0\5\4\10\0\1\4\1\0\14\4"+ - "\1\0\2\4\1\3\4\4\1\0\2\3\4\0\2\4"+ - "\1\0\10\4\2\0\1\u0168\4\4\10\0\1\4\1\0"+ - "\14\4\1\0\2\4\1\3\4\4\1\0\2\3\4\0"+ - "\2\4\1\0\10\4\2\0\4\4\1\u0169\10\0\1\4"+ - "\1\0\14\4\1\0\2\4\1\3\4\4\1\0\2\3"+ - "\4\0\1\232\1\4\1\0\10\4\2\0\1\4\1\232"+ - "\3\4\10\0\1\4\1\0\14\4\1\0\2\4\1\3"+ - "\4\4\1\0\2\3\4\0\2\4\1\0\3\4\1\120"+ - "\4\4\2\0\5\4\10\0\1\4\1\0\14\4\1\0"+ - "\2\4\1\3\4\4\1\0\2\3\4\0\2\4\1\0"+ - "\10\4\2\0\5\4\10\0\1\4\1\0\7\4\1\u0143"+ - "\4\4\1\0\2\4\1\3\4\4\1\0\2\3\4\0"+ - "\2\4\1\0\1\4\2\u0145\5\4\2\0\5\4\10\0"+ - "\1\4\1\0\14\4\1\0\2\4\1\3\4\4\1\0"+ - "\2\3\4\0\2\4\1\0\10\4\2\0\2\4\2\u016a"+ - "\1\4\10\0\1\4\1\0\14\4\1\0\2\4\1\3"+ - "\4\4\1\0\2\3\4\0\2\4\1\0\7\4\1\230"+ - "\2\0\5\4\10\0\1\4\1\0\14\4\1\0\2\4"+ - "\1\3\4\4\1\0\2\3\4\0\2\4\1\0\10\4"+ - "\2\0\5\4\10\0\1\4\1\0\11\4\1\u016b\2\4"+ - "\1\0\2\4\1\3\4\4\1\0\2\3\4\0\2\4"+ - "\1\0\10\4\2\0\1\362\4\4\10\0\1\4\1\0"+ - "\14\4\1\0\2\4\1\3\4\4\1\0\2\3\4\0"+ - "\2\4\1\0\10\4\2\0\5\4\10\0\1\4\1\0"+ - "\1\362\13\4\1\0\1\4\1\362\1\3\4\4\1\0"+ - "\2\3\4\0\2\4\1\0\10\4\2\0\1\u016c\4\4"+ - "\10\0\1\4\1\0\14\4\1\0\2\4\1\3\4\4"+ - "\1\0\2\3\4\0\2\4\1\0\10\4\2\0\5\4"+ - "\10\0\1\4\1\0\3\4\1\u016d\10\4\1\0\2\4"+ - "\1\3\4\4\1\0\2\3\4\0\2\4\1\0\7\4"+ - "\1\362\2\0\5\4\10\0\1\4\1\0\14\4\1\0"+ - "\2\4\1\3\4\4\1\0\2\3\4\0\2\4\1\0"+ - "\4\4\2\120\2\4\2\0\5\4\10\0\1\4\1\0"+ - "\14\4\1\0\2\4\1\3\4\4\1\0\2\3\4\0"+ - "\2\4\1\0\1\4\2\u016e\5\4\2\0\5\4\10\0"+ - "\1\4\1\0\14\4\1\0\2\4\1\3\4\4\1\0"+ - "\2\3\4\0\2\4\1\0\3\4\1\u016f\4\4\2\0"+ - "\5\4\10\0\1\4\1\0\14\4\1\0\2\4\1\3"+ - "\4\4\1\0\2\3\4\0\2\4\1\0\4\4\2\u0170"+ - "\2\4\2\0\5\4\10\0\1\4\1\0\14\4\1\0"+ - "\2\4\1\3\4\4\1\0\2\3\4\0\2\4\1\0"+ - "\10\4\2\0\5\4\10\0\1\4\1\0\2\4\1\u0171"+ - "\11\4\1\0\2\4\1\3\4\4\1\0\2\3\4\0"+ - "\2\4\1\0\4\4\2\345\2\4\2\0\5\4\10\0"+ - "\1\4\1\0\14\4\1\0\2\4\1\3\3\4\1\u0172"+ - "\1\0\2\3\4\0\2\4\1\0\10\4\2\0\5\4"+ - "\10\0\1\4\1\0\14\4\1\0\2\4\1\3\4\4"+ - "\1\0\2\3\4\0\1\u0173\1\4\1\0\10\4\2\0"+ - "\1\4\1\u0173\3\4\10\0\1\4\1\0\14\4\1\0"+ - "\2\4\1\3\4\4\1\0\2\3\4\0\2\4\1\0"+ - "\10\4\2\0\4\4\1\u0174\10\0\1\4\1\0\14\4"+ - "\1\0\2\4\1\3\4\4\1\0\2\3\4\0\2\4"+ - "\1\0\10\4\2\0\5\4\10\0\1\4\1\0\6\4"+ - "\1\u016b\5\4\1\0\2\4\1\3\4\4\1\0\2\3"+ - "\4\0\2\4\1\0\10\4\2\0\5\4\10\0\1\4"+ - "\1\0\1\u0125\13\4\1\0\1\4\1\u0125\1\3\4\4"+ - "\1\0\2\3\4\0\2\4\1\0\10\4\2\0\5\4"+ - "\10\0\1\u016a\1\0\14\4\1\0\2\4\1\3\4\4"+ - "\1\0\2\3\4\0\2\4\1\0\6\4\1\u0175\1\4"+ - "\2\0\5\4\10\0\1\4\1\0\14\4\1\0\1\u0175"+ - "\1\4\1\3\4\4\1\0\2\3\4\0\2\4\1\0"+ - "\7\4\1\u0176\2\0\5\4\10\0\1\4\1\0\14\4"+ - "\1\0\2\4\1\3\4\4\1\0\2\3\4\0\2\4"+ - "\1\0\10\4\2\0\1\47\4\4\10\0\1\4\1\0"+ - "\14\4\1\0\2\4\1\3\4\4\1\0\2\3\4\0"+ - "\2\4\1\0\10\4\2\0\5\4\10\0\1\4\1\0"+ - "\2\4\1\u0177\11\4\1\0\2\4\1\3\4\4\1\0"+ - "\2\3\4\0\2\4\1\0\1\4\2\u0178\5\4\2\0"+ - "\5\4\10\0\1\4\1\0\14\4\1\0\2\4\1\3"+ - "\4\4\1\0\2\3\4\0\2\4\1\0\10\4\2\0"+ - "\5\4\10\0\1\4\1\0\3\4\1\u0179\10\4\1\0"+ - "\2\4\1\3\4\4\1\0\2\3\4\0\2\4\1\0"+ - "\10\4\2\0\4\4\1\u017a\10\0\1\4\1\0\14\4"+ - "\1\0\2\4\1\3\4\4\1\0\2\3\4\0\2\4"+ - "\1\0\3\4\1\u017b\4\4\2\0\5\4\10\0\1\4"+ - "\1\0\14\4\1\0\2\4\1\3\4\4\1\0\2\3"+ - "\4\0\2\4\1\0\10\4\2\0\5\4\10\0\1\4"+ - "\1\0\2\4\1\u017c\11\4\1\0\2\4\1\3\4\4"+ - "\1\0\2\3\4\0\2\4\1\0\10\4\2\0\5\4"+ - "\10\0\1\4\1\0\6\4\1\u017d\5\4\1\0\2\4"+ - "\1\3\4\4\1\0\2\3\4\0\2\4\1\0\7\4"+ - "\1\u017e\2\0\5\4\10\0\1\4\1\0\14\4\1\0"+ - "\2\4\44\0\1\u0135\22\0\10\50\1\0\22\50\1\0"+ - "\10\50\1\u0134\20\50\2\0\1\3\4\4\1\0\2\3"+ - "\4\0\2\4\1\0\1\232\7\4\2\0\5\4\10\0"+ - "\1\4\1\0\14\4\1\0\2\4\1\3\4\4\1\0"+ - "\2\3\4\0\2\4\1\0\6\4\1\u0118\1\4\2\0"+ - "\5\4\10\0\1\4\1\0\14\4\1\0\1\u0118\1\4"+ - "\1\3\4\4\1\0\2\3\4\0\2\4\1\0\10\4"+ - "\2\0\5\4\10\0\1\4\1\0\6\4\1\136\5\4"+ - "\1\0\2\4\1\3\4\4\1\0\2\3\4\0\2\4"+ - "\1\0\3\4\1\364\4\4\2\0\5\4\10\0\1\4"+ - "\1\0\14\4\1\0\2\4\1\3\4\4\1\0\2\3"+ - "\4\0\2\4\1\0\10\4\2\0\4\4\1\u017f\10\0"+ - "\1\4\1\0\14\4\1\0\2\4\1\3\4\4\1\0"+ - "\2\3\4\0\2\4\1\0\7\4\1\u0180\2\0\5\4"+ - "\10\0\1\4\1\0\14\4\1\0\2\4\1\3\4\4"+ - "\1\0\2\3\4\0\2\4\1\0\1\u013e\7\4\2\0"+ - "\5\4\10\0\1\4\1\0\14\4\1\0\2\4\1\3"+ - "\3\4\1\u0181\1\0\2\3\4\0\2\4\1\0\10\4"+ - "\2\0\5\4\10\0\1\4\1\0\14\4\1\0\2\4"+ - "\1\3\4\4\1\0\2\3\4\0\2\4\1\0\10\4"+ - "\2\0\5\4\10\0\1\4\1\0\3\4\1\304\10\4"+ - "\1\0\2\4\1\3\4\4\1\0\2\3\4\0\2\4"+ - "\1\0\10\4\2\0\5\4\10\0\1\4\1\0\5\4"+ - "\1\114\6\4\1\0\2\4\1\3\4\4\1\0\2\3"+ - "\4\0\2\4\1\0\4\4\2\u0114\2\4\2\0\5\4"+ - "\10\0\1\4\1\0\14\4\1\0\2\4\1\3\4\4"+ - "\1\0\2\3\4\0\1\4\1\u0182\1\0\10\4\2\0"+ - "\5\4\10\0\1\4\1\0\1\4\1\u0182\12\4\1\0"+ - "\2\4\1\3\4\4\1\0\2\3\4\0\2\4\1\0"+ - "\10\4\2\0\1\u0108\4\4\10\0\1\4\1\0\14\4"+ - "\1\0\2\4\1\3\4\4\1\0\2\3\4\0\2\4"+ - "\1\0\10\4\2\0\1\u016f\4\4\10\0\1\4\1\0"+ - "\14\4\1\0\2\4\1\3\4\4\1\0\2\3\4\0"+ - "\1\u0183\1\4\1\0\10\4\2\0\1\4\1\u0183\3\4"+ - "\10\0\1\4\1\0\14\4\1\0\2\4\1\3\4\4"+ - "\1\0\2\3\4\0\2\4\1\0\7\4\1\u0184\2\0"+ - "\5\4\10\0\1\4\1\0\14\4\1\0\2\4\1\3"+ - "\4\4\1\0\2\3\4\0\1\u0185\1\4\1\0\10\4"+ - "\2\0\1\4\1\u0185\3\4\10\0\1\4\1\0\14\4"+ - "\1\0\2\4\1\3\4\4\1\0\2\3\4\0\1\4"+ - "\1\u0186\1\0\10\4\2\0\5\4\10\0\1\4\1\0"+ - "\1\4\1\u0186\12\4\1\0\2\4\1\3\4\4\1\0"+ - "\2\3\4\0\2\4\1\0\10\4\2\0\4\4\1\u0187"+ - "\10\0\1\4\1\0\14\4\1\0\2\4\1\3\4\4"+ - "\1\0\2\3\4\0\2\4\1\0\10\4\2\0\5\4"+ - "\10\0\1\4\1\0\2\4\1\364\11\4\1\0\2\4"+ - "\1\3\4\4\1\0\2\3\4\0\2\4\1\0\10\4"+ - "\2\0\5\4\10\0\1\4\1\0\2\4\1\u0188\11\4"+ - "\1\0\2\4\1\3\4\4\1\0\2\3\4\0\2\4"+ - "\1\0\6\4\1\u0189\1\4\2\0\5\4\10\0\1\4"+ - "\1\0\14\4\1\0\1\u0189\1\4\1\3\4\4\1\0"+ - "\2\3\4\0\2\4\1\0\7\4\1\u018a\2\0\5\4"+ - "\10\0\1\4\1\0\14\4\1\0\2\4\1\3\4\4"+ - "\1\0\2\3\4\0\2\4\1\0\10\4\2\0\5\4"+ - "\10\0\1\4\1\0\14\4\1\u018b\2\4\1\3\3\4"+ - "\1\232\1\0\2\3\4\0\2\4\1\0\10\4\2\0"+ - "\5\4\10\0\1\4\1\0\14\4\1\0\2\4\1\3"+ - "\4\4\1\0\2\3\4\0\2\4\1\0\10\4\2\0"+ - "\5\4\10\0\1\4\1\0\2\4\1\u0145\11\4\1\0"+ - "\2\4\1\3\4\4\1\0\2\3\4\0\2\4\1\0"+ - "\10\4\2\0\5\4\10\0\1\4\1\0\13\4\1\114"+ - "\1\0\2\4\1\3\4\4\1\0\2\3\4\0\2\4"+ - "\1\0\3\4\1\u018c\4\4\2\0\5\4\10\0\1\4"+ - "\1\0\14\4\1\0\2\4\1\3\4\4\1\0\2\3"+ - "\4\0\1\u018d\1\4\1\0\10\4\2\0\1\4\1\u018d"+ - "\3\4\10\0\1\4\1\0\14\4\1\0\2\4\1\3"+ - "\4\4\1\0\2\3\4\0\1\u018e\1\4\1\0\10\4"+ - "\2\0\1\4\1\u018e\3\4\10\0\1\4\1\0\14\4"+ - "\1\0\2\4\1\3\4\4\1\0\2\3\4\0\1\u018f"+ - "\1\4\1\0\10\4\2\0\1\4\1\u018f\3\4\10\0"+ - "\1\4\1\0\14\4\1\0\2\4\1\3\4\4\1\0"+ - "\2\3\4\0\2\4\1\0\7\4\1\362\2\0\4\4"+ - "\1\u0190\10\0\1\4\1\0\14\4\1\0\2\4\1\3"+ - "\4\4\1\0\2\3\4\0\1\4\1\362\1\0\10\4"+ - "\2\0\5\4\10\0\1\4\1\0\1\4\1\362\12\4"+ - "\1\0\2\4\1\3\4\4\1\0\2\3\4\0\2\4"+ - "\1\0\10\4\2\0\4\4\1\u0191\10\0\1\4\1\0"+ - "\14\4\1\0\2\4\1\3\4\4\1\0\2\3\4\0"+ - "\2\4\1\0\7\4\1\u0192\2\0\5\4\10\0\1\4"+ - "\1\0\14\4\1\0\2\4\1\3\4\4\1\0\2\3"+ - "\4\0\1\u0193\1\4\1\0\10\4\2\0\1\4\1\u0193"+ - "\3\4\10\0\1\4\1\0\14\4\1\0\2\4\23\0"+ - "\2\u0194\42\0\1\3\4\4\1\0\2\3\4\0\2\4"+ - "\1\0\7\4\1\147\2\0\5\4\10\0\1\4\1\0"+ - "\14\4\1\0\2\4\1\3\4\4\1\0\2\3\4\0"+ - "\2\4\1\0\10\4\2\0\4\4\1\u016f\10\0\1\4"+ - "\1\0\14\4\1\0\2\4\1\3\4\4\1\0\2\3"+ - "\4\0\2\4\1\0\1\4\2\u0195\5\4\2\0\5\4"+ - "\10\0\1\4\1\0\14\4\1\0\2\4\1\3\4\4"+ - "\1\0\2\3\4\0\2\4\1\0\1\4\2\u0196\5\4"+ - "\2\0\5\4\10\0\1\4\1\0\14\4\1\0\2\4"+ - "\1\3\4\4\1\0\2\3\4\0\2\4\1\0\10\4"+ - "\2\0\5\4\10\0\1\4\1\0\4\4\1\324\7\4"+ - "\1\0\2\4\1\3\4\4\1\0\2\3\4\0\2\4"+ - "\1\0\10\4\2\0\5\4\10\0\1\4\1\0\11\4"+ - "\1\327\2\4\1\0\2\4\1\3\4\4\1\0\2\3"+ - "\4\0\1\137\1\4\1\0\10\4\2\0\1\4\1\137"+ - "\3\4\10\0\1\4\1\0\14\4\1\0\2\4\1\3"+ - "\4\4\1\0\2\3\4\0\1\u0197\1\4\1\0\10\4"+ - "\2\0\1\4\1\u0197\3\4\10\0\1\4\1\0\14\4"+ - "\1\0\2\4\31\0\1\u0198\35\0\1\3\4\4\1\0"+ - "\2\3\4\0\2\4\1\0\10\4\2\0\1\u0199\4\4"+ - "\10\0\1\4\1\0\14\4\1\0\2\4\1\3\4\4"+ - "\1\0\2\3\4\0\1\4\1\u0199\1\0\10\4\2\0"+ - "\5\4\10\0\1\4\1\0\1\4\1\u0199\12\4\1\0"+ - "\2\4\1\3\4\4\1\0\2\3\4\0\2\4\1\0"+ - "\1\4\2\u019a\5\4\2\0\5\4\10\0\1\4\1\0"+ - "\14\4\1\0\2\4\35\0\1\u019b\31\0\1\3\4\4"+ - "\1\0\2\3\4\0\2\4\1\0\10\4\2\0\4\4"+ - "\1\u0190\10\0\1\4\1\0\14\4\1\0\2\4\1\3"+ - "\4\4\1\0\2\3\4\0\1\4\1\232\1\0\10\4"+ - "\2\0\5\4\10\0\1\4\1\0\1\4\1\232\12\4"+ - "\1\0\2\4\31\0\1\u019c\63\0\1\u019d\121\0\1\u019e"+ - "\33\0\1\u019f\112\0\1\u01a0\45\0\1\u01a1\35\0"; - - private static int [] zzUnpackTrans() { - int [] result = new int[22000]; - int offset = 0; - offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackTrans(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - value--; - do result[j++] = value; while (--count > 0); - } - return j; - } - - - /* error codes */ - private static final int ZZ_UNKNOWN_ERROR = 0; - private static final int ZZ_NO_MATCH = 1; - private static final int ZZ_PUSHBACK_2BIG = 2; - - /* error messages for the codes above */ - private static final String ZZ_ERROR_MSG[] = { - "Unkown internal scanner error", - "Error: could not match input", - "Error: pushback value was too large" - }; - - /** - * ZZ_ATTRIBUTE[aState] contains the attributes of state aState - */ - private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); - - private static final String ZZ_ATTRIBUTE_PACKED_0 = - "\2\0\4\1\1\11\1\1\1\11\2\1\1\11\16\1"+ - "\2\11\14\1\1\11\26\1\1\11\6\1\1\0\73\1"+ - "\2\0\3\1\2\0\1\1\1\0\137\1\2\0\3\1"+ - "\2\0\100\1\1\0\3\1\1\0\52\1\1\0\1\1"+ - "\1\0\47\1\1\0\10\1\1\0\3\1\1\0\2\1"+ - "\6\0\1\11"; - - private static int [] zzUnpackAttribute() { - int [] result = new int[417]; - int offset = 0; - offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); - return result; - } - - private static int zzUnpackAttribute(String packed, int offset, int [] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do result[j++] = value; while (--count > 0); - } - return j; - } - - /** the input device */ - private java.io.Reader zzReader; - - /** the current state of the DFA */ - private int zzState; - - /** the current lexical state */ - private int zzLexicalState = YYINITIAL; - - /** this buffer contains the current text to be matched and is - the source of the yytext() string */ - private char zzBuffer[]; - - /** the textposition at the last accepting state */ - private int zzMarkedPos; - - /** the current text position in the buffer */ - private int zzCurrentPos; - - /** startRead marks the beginning of the yytext() string in the buffer */ - private int zzStartRead; - - /** endRead marks the last character in the buffer, that has been read - from input */ - private int zzEndRead; - - /** zzAtEOF == true <=> the scanner is at the EOF */ - private boolean zzAtEOF; - - /* user code: */ - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public VisualBasicTokenMaker() { - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addToken(int, int, int) - */ - private void addHyperlinkToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, true); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addHyperlinkToken(int, int, int) - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, false); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - * @param hyperlink Whether this token is a hyperlink. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, - int startOffset, boolean hyperlink) { - super.addToken(array, start,end, tokenType, startOffset, hyperlink); - zzStartRead = zzMarkedPos; - } - - - /** - * {@inheritDoc} - */ - @Override - public String[] getLineCommentStartAndEnd(int languageIndex) { - return new String[] { "'", null }; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - - // Start off in the proper state. - int state = YYINITIAL; - - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(java.io.Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtEOF = false; - } - - - - - /** - * Creates a new scanner - * There is also a java.io.InputStream version of this constructor. - * - * @param in the java.io.Reader to read input from. - */ - public VisualBasicTokenMaker(java.io.Reader in) { - this.zzReader = in; - } - - /** - * Creates a new scanner. - * There is also java.io.Reader version of this constructor. - * - * @param in the java.io.Inputstream to read input from. - */ - public VisualBasicTokenMaker(java.io.InputStream in) { - this(new java.io.InputStreamReader(in)); - } - - /** - * Unpacks the compressed character translation table. - * - * @param packed the packed character translation table - * @return the unpacked character translation table - */ - private static char [] zzUnpackCMap(String packed) { - char [] map = new char[0x10000]; - int i = 0; /* index in packed string */ - int j = 0; /* index in unpacked array */ - while (i < 184) { - int count = packed.charAt(i++); - char value = packed.charAt(i++); - do map[j++] = value; while (--count > 0); - } - return map; - } - - - /** - * Closes the input stream. - */ - public final void yyclose() throws java.io.IOException { - zzAtEOF = true; /* indicate end of file */ - zzEndRead = zzStartRead; /* invalidate buffer */ - - if (zzReader != null) - zzReader.close(); - } - - - /** - * Returns the current lexical state. - */ - public final int yystate() { - return zzLexicalState; - } - - - /** - * Enters a new lexical state - * - * @param newState the new lexical state - */ - @Override -public final void yybegin(int newState) { - zzLexicalState = newState; - } - - - /** - * Returns the text matched by the current regular expression. - */ - public final String yytext() { - return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead ); - } - - - /** - * Returns the character at position pos from the - * matched text. - * - * It is equivalent to yytext().charAt(pos), but faster - * - * @param pos the position of the character to fetch. - * A value from 0 to yylength()-1. - * - * @return the character at position pos - */ - public final char yycharat(int pos) { - return zzBuffer[zzStartRead+pos]; - } - - - /** - * Returns the length of the matched text region. - */ - public final int yylength() { - return zzMarkedPos-zzStartRead; - } - - - /** - * Reports an error that occured while scanning. - * - * In a wellformed scanner (no or only correct usage of - * yypushback(int) and a match-all fallback rule) this method - * will only be called with things that "Can't Possibly Happen". - * If this method is called, something is seriously wrong - * (e.g. a JFlex bug producing a faulty scanner etc.). - * - * Usual syntax/scanner level error handling should be done - * in error fallback rules. - * - * @param errorCode the code of the errormessage to display - */ - private void zzScanError(int errorCode) { - String message; - try { - message = ZZ_ERROR_MSG[errorCode]; - } - catch (ArrayIndexOutOfBoundsException e) { - message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; - } - - throw new Error(message); - } - - - /** - * Pushes the specified amount of characters back into the input stream. - * - * They will be read again by then next call of the scanning method - * - * @param number the number of characters to be read again. - * This number must not be greater than yylength()! - */ - public void yypushback(int number) { - if ( number > yylength() ) - zzScanError(ZZ_PUSHBACK_2BIG); - - zzMarkedPos -= number; - } - - - /** - * Resumes scanning until the next regular expression is matched, - * the end of input is encountered or an I/O-Error occurs. - * - * @return the next token - * @exception java.io.IOException if any I/O-Error occurs - */ - public org.fife.ui.rsyntaxtextarea.Token yylex() throws java.io.IOException { - int zzInput; - int zzAction; - - // cached fields: - int zzCurrentPosL; - int zzMarkedPosL; - int zzEndReadL = zzEndRead; - char [] zzBufferL = zzBuffer; - char [] zzCMapL = ZZ_CMAP; - - int [] zzTransL = ZZ_TRANS; - int [] zzRowMapL = ZZ_ROWMAP; - int [] zzAttrL = ZZ_ATTRIBUTE; - - while (true) { - zzMarkedPosL = zzMarkedPos; - - zzAction = -1; - - zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; - - zzState = zzLexicalState; - - - zzForAction: { - while (true) { - - if (zzCurrentPosL < zzEndReadL) - zzInput = zzBufferL[zzCurrentPosL++]; - else if (zzAtEOF) { - zzInput = YYEOF; - break zzForAction; - } - else { - // store back cached positions - zzCurrentPos = zzCurrentPosL; - zzMarkedPos = zzMarkedPosL; - boolean eof = zzRefill(); - // get translated positions and possibly new buffer - zzCurrentPosL = zzCurrentPos; - zzMarkedPosL = zzMarkedPos; - zzBufferL = zzBuffer; - zzEndReadL = zzEndRead; - if (eof) { - zzInput = YYEOF; - break zzForAction; - } - else { - zzInput = zzBufferL[zzCurrentPosL++]; - } - } - int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; - if (zzNext == -1) break zzForAction; - zzState = zzNext; - - int zzAttributes = zzAttrL[zzState]; - if ( (zzAttributes & 1) == 1 ) { - zzAction = zzState; - zzMarkedPosL = zzCurrentPosL; - if ( (zzAttributes & 8) == 8 ) break zzForAction; - } - - } - } - - // store back cached position - zzMarkedPos = zzMarkedPosL; - - switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { - case 5: - { addNullToken(); return firstToken; - } - case 21: break; - case 6: - { addToken(Token.WHITESPACE); - } - case 22: break; - case 16: - { addToken(Token.LITERAL_NUMBER_HEXADECIMAL); - } - case 23: break; - case 13: - { addToken(Token.LITERAL_NUMBER_FLOAT); - } - case 24: break; - case 15: - { addToken(Token.RESERVED_WORD); - } - case 25: break; - case 9: - { addToken(Token.SEPARATOR); - } - case 26: break; - case 2: - { addToken(Token.IDENTIFIER); - } - case 27: break; - case 11: - { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; - } - case 28: break; - case 7: - { addToken(Token.ERROR_STRING_DOUBLE); addNullToken(); return firstToken; - } - case 29: break; - case 1: - { addToken(Token.ERROR_IDENTIFIER); - } - case 30: break; - case 17: - { addToken(Token.DATA_TYPE); - } - case 31: break; - case 18: - { addToken(Token.LITERAL_BOOLEAN); - } - case 32: break; - case 14: - { addToken(Token.LITERAL_STRING_DOUBLE_QUOTE); - } - case 33: break; - case 19: - { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_EOL); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_EOL); start = zzMarkedPos; - } - case 34: break; - case 20: - { addToken(Token.RESERVED_WORD_2); - } - case 35: break; - case 12: - { addToken(Token.ERROR_NUMBER_FORMAT); - } - case 36: break; - case 8: - { start = zzMarkedPos-1; yybegin(EOL_COMMENT); - } - case 37: break; - case 3: - { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); - } - case 38: break; - case 4: - { addToken(Token.OPERATOR); - } - case 39: break; - case 10: - { - } - case 40: break; - default: - if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { - zzAtEOF = true; - switch (zzLexicalState) { - case EOL_COMMENT: { - addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken; - } - case 418: break; - case YYINITIAL: { - addNullToken(); return firstToken; - } - case 419: break; - default: - return null; - } - } - else { - zzScanError(ZZ_NO_MATCH); - } - } - } - } - - -} diff --git a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/XMLTokenMaker.flex b/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/XMLTokenMaker.flex deleted file mode 100644 index b78dd9d..0000000 --- a/ESPlorer/src/org/fife/ui/rsyntaxtextarea/modes/XMLTokenMaker.flex +++ /dev/null @@ -1,487 +0,0 @@ -/* - * 01/24/2005 - * - * XMLTokenMaker.java - Generates tokens for XML syntax highlighting. - * - * This library is distributed under a modified BSD license. See the included - * RSyntaxTextArea.License.txt file for details. - */ -package org.fife.ui.rsyntaxtextarea.modes; - -import java.io.*; -import javax.swing.text.Segment; - -import org.fife.ui.rsyntaxtextarea.*; - - -/** - * Scanner for XML. - * - * This implementation was created using - * JFlex 1.4.1; however, the generated file - * was modified for performance. Memory allocation needs to be almost - * completely removed to be competitive with the handwritten lexers (subclasses - * of AbstractTokenMaker, so this class has been modified so that - * Strings are never allocated (via yytext()), and the scanner never has to - * worry about refilling its buffer (needlessly copying chars around). - * We can achieve this because RText always scans exactly 1 line of tokens at a - * time, and hands the scanner this line as an array of characters (a Segment - * really). Since tokens contain pointers to char arrays instead of Strings - * holding their contents, there is no need for allocating new memory for - * Strings.

- * - * The actual algorithm generated for scanning has, of course, not been - * modified.

- * - * If you wish to regenerate this file yourself, keep in mind the following: - *

    - *
  • The generated XMLTokenMaker.java file will contain two - * definitions of both zzRefill and yyreset. - * You should hand-delete the second of each definition (the ones - * generated by the lexer), as these generated methods modify the input - * buffer, which we'll never have to do.
  • - *
  • You should also change the declaration/definition of zzBuffer to NOT - * be initialized. This is a needless memory allocation for us since we - * will be pointing the array somewhere else anyway.
  • - *
  • You should NOT call yylex() on the generated scanner - * directly; rather, you should use getTokenList as you would - * with any other TokenMaker instance.
  • - *
- * - * @author Robert Futrell - * @version 0.5 - * - */ -%% - -%public -%class XMLTokenMaker -%extends AbstractMarkupTokenMaker -%unicode -%type org.fife.ui.rsyntaxtextarea.Token - - -%{ - - /** - * Type specific to XMLTokenMaker denoting a line ending with an unclosed - * double-quote attribute. - */ - public static final int INTERNAL_ATTR_DOUBLE = -1; - - - /** - * Type specific to XMLTokenMaker denoting a line ending with an unclosed - * single-quote attribute. - */ - public static final int INTERNAL_ATTR_SINGLE = -2; - - - /** - * Token type specific to XMLTokenMaker denoting a line ending with an - * unclosed XML tag; thus a new line is beginning still inside of the tag. - */ - public static final int INTERNAL_INTAG = -3; - - /** - * Token type specific to XMLTokenMaker denoting a line ending with an - * unclosed DOCTYPE element. - */ - public static final int INTERNAL_DTD = -4; - - /** - * Token type specific to XMLTokenMaker denoting a line ending with an - * unclosed, locally-defined DTD in a DOCTYPE element. - */ - public static final int INTERNAL_DTD_INTERNAL = -5; - - /** - * Token type specific to XMLTokenMaker denoting a line ending with an - * unclosed comment. The state to return to when this comment ends is - * embedded in the token type as well. - */ - public static final int INTERNAL_IN_XML_COMMENT = -(1<<11); - - /** - * Whether closing markup tags are automatically completed for HTML. - */ - private static boolean completeCloseTags; - - /** - * Whether the DTD we're currently in is a locally-defined one. This - * field is only valid when in a DOCTYPE element (the state). - */ - private boolean inInternalDtd; - - /** - * The state we were in prior to the current one. This is used to know - * what state to resume after an MLC ends. - */ - private int prevState; - - - /** - * Constructor. This must be here because JFlex does not generate a - * no-parameter constructor. - */ - public XMLTokenMaker() { - } - - - static { - completeCloseTags = true; - } - - - /** - * Adds the token specified to the current linked list of tokens as an - * "end token;" that is, at zzMarkedPos. - * - * @param tokenType The token's type. - */ - private void addEndToken(int tokenType) { - addToken(zzMarkedPos,zzMarkedPos, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - * @see #addToken(int, int, int) - */ - private void addHyperlinkToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so, true); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int tokenType) { - addToken(zzStartRead, zzMarkedPos-1, tokenType); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param tokenType The token's type. - */ - private void addToken(int start, int end, int tokenType) { - int so = start + offsetShift; - addToken(zzBuffer, start,end, tokenType, so); - } - - - /** - * Adds the token specified to the current linked list of tokens. - * - * @param array The character array. - * @param start The starting offset in the array. - * @param end The ending offset in the array. - * @param tokenType The token's type. - * @param startOffset The offset in the document at which this token - * occurs. - */ - @Override - public void addToken(char[] array, int start, int end, int tokenType, int startOffset) { - super.addToken(array, start,end, tokenType, startOffset); - zzStartRead = zzMarkedPos; - } - - - /** - * {@inheritDoc} - */ - protected OccurrenceMarker createOccurrenceMarker() { - return new XmlOccurrenceMarker(); - } - - - /** - * Returns whether markup close tags should be completed. For XML, the - * default value is true. - * - * @return Whether closing markup tags are completed. - * @see #setCompleteCloseTags(boolean) - */ - @Override - public boolean getCompleteCloseTags() { - return completeCloseTags; - } - - - /** - * Static version of {@link #getCompleteCloseTags()}. This hack is - * unfortunately needed for applications to be able to query this value - * without instantiating this class. - * - * @return Whether closing markup tags are completed. - * @see #setCompleteCloseTags(boolean) - */ - public static boolean getCompleteCloseMarkupTags() { - return completeCloseTags; - } - - - /** - * Returns Token.MARKUP_TAG_NAME. - * - * @param type The token type. - * @return Whether tokens of this type should have "mark occurrences" - * enabled. - */ - public boolean getMarkOccurrencesOfTokenType(int type) { - return type==Token.MARKUP_TAG_NAME; - } - - - /** - * Returns the first token in the linked list of tokens generated - * from text. This method must be implemented by - * subclasses so they can correctly implement syntax highlighting. - * - * @param text The text from which to get tokens. - * @param initialTokenType The token type we should start with. - * @param startOffset The offset into the document at which - * text starts. - * @return The first Token in a linked list representing - * the syntax highlighted text. - */ - public Token getTokenList(Segment text, int initialTokenType, int startOffset) { - - resetTokenList(); - this.offsetShift = -text.offset + startOffset; - prevState = YYINITIAL; - inInternalDtd = false; - - // Start off in the proper state. - int state = YYINITIAL; - switch (initialTokenType) { - case Token.MARKUP_COMMENT: - state = COMMENT; - break; - case INTERNAL_DTD: - state = DTD; - break; - case INTERNAL_DTD_INTERNAL: - state = DTD; - inInternalDtd = true; - break; - case INTERNAL_ATTR_DOUBLE: - state = INATTR_DOUBLE; - break; - case INTERNAL_ATTR_SINGLE: - state = INATTR_SINGLE; - break; - case Token.MARKUP_PROCESSING_INSTRUCTION: - state = PI; - break; - case INTERNAL_INTAG: - state = INTAG; - break; - case Token.MARKUP_CDATA: - state = CDATA; - break; - default: - if (initialTokenType<-1024) { // INTERNAL_IN_XML_COMMENT - prevState - int main = -(-initialTokenType & 0xffffff00); - switch (main) { - default: // Should never happen - case INTERNAL_IN_XML_COMMENT: - state = COMMENT; - break; - } - prevState = -initialTokenType&0xff; - } - else { // Shouldn't happen - state = Token.NULL; - } - } - - start = text.offset; - s = text; - try { - yyreset(zzReader); - yybegin(state); - return yylex(); - } catch (IOException ioe) { - ioe.printStackTrace(); - return new TokenImpl(); - } - - } - - - /** - * Sets whether markup close tags should be completed. - * - * @param complete Whether closing markup tags are completed. - * @see #getCompleteCloseTags() - */ - public static void setCompleteCloseTags(boolean complete) { - completeCloseTags = complete; - } - - - /** - * Refills the input buffer. - * - * @return true if EOF was reached, otherwise - * false. - */ - private boolean zzRefill() { - return zzCurrentPos>=s.offset+s.count; - } - - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to YY_INITIAL. - * - * @param reader the new input stream - */ - public final void yyreset(java.io.Reader reader) { - // 's' has been updated. - zzBuffer = s.array; - /* - * We replaced the line below with the two below it because zzRefill - * no longer "refills" the buffer (since the way we do it, it's always - * "full" the first time through, since it points to the segment's - * array). So, we assign zzEndRead here. - */ - //zzStartRead = zzEndRead = s.offset; - zzStartRead = s.offset; - zzEndRead = zzStartRead + s.count - 1; - zzCurrentPos = zzMarkedPos = zzPushbackPos = s.offset; - zzLexicalState = YYINITIAL; - zzReader = reader; - zzAtBOL = true; - zzAtEOF = false; - } - - -%} - -NameStartChar = ([\:A-Z_a-z]) -NameChar = ({NameStartChar}|[\-\.0-9]) -TagName = ({NameStartChar}{NameChar}*) -Whitespace = ([ \t\f]) -LineTerminator = ([\n]) -Identifier = ([^ \t\n<&]+) -EntityReference = ([&][^; \t]*[;]?) -InTagIdentifier = ([^ \t\n\"\'=\/>]+) -CDataBegin = ("") - -URLGenDelim = ([:\/\?#\[\]@]) -URLSubDelim = ([\!\$&'\(\)\*\+,;=]) -URLUnreserved = ([A-Za-z_0-9\-\.\~]) -URLCharacter = ({URLGenDelim}|{URLSubDelim}|{URLUnreserved}|[%]) -URLCharacters = ({URLCharacter}*) -URLEndCharacter = ([\/\$A-Za-z0-9]) -URL = (((https?|f(tp|ile))"://"|"www.")({URLCharacters}{URLEndCharacter})?) - -%state COMMENT -%state PI -%state DTD -%state INTAG -%state INATTR_DOUBLE -%state INATTR_SINGLE -%state CDATA - -%% - - { - "" { int temp = zzMarkedPos; addToken(start,zzStartRead+2, Token.MARKUP_COMMENT); start = temp; yybegin(prevState); } - "-" {} - {LineTerminator} | - <> { addToken(start,zzStartRead-1, Token.MARKUP_COMMENT); addEndToken(INTERNAL_IN_XML_COMMENT - prevState); return firstToken; } -} - - { - [^\n\?]+ {} - {LineTerminator} { addToken(start,zzStartRead-1, Token.MARKUP_PROCESSING_INSTRUCTION); return firstToken; } - "?>" { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.MARKUP_PROCESSING_INSTRUCTION); } - "?" {} - <> { addToken(start,zzStartRead-1, Token.MARKUP_PROCESSING_INSTRUCTION); return firstToken; } -} - - { - [^\n\[\]<>]+ {} - " + + + + + \ No newline at end of file diff --git a/launch4j/app.ico b/launch4j/app.ico new file mode 100644 index 0000000000000000000000000000000000000000..ecc0b18111c9312b33e79317a7979de5dfba5fee GIT binary patch literal 204862 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 literal 0 HcmV?d00001 diff --git a/src/main/java/com/github/unafraid/ESPlorer/Main.java b/src/main/java/com/github/unafraid/ESPlorer/Main.java index 29d32e9..9c20507 100644 --- a/src/main/java/com/github/unafraid/ESPlorer/Main.java +++ b/src/main/java/com/github/unafraid/ESPlorer/Main.java @@ -20,7 +20,6 @@ import java.net.URI; import java.util.ArrayList; import java.util.Arrays; -import java.util.List; import java.util.prefs.Preferences; import javax.swing.JFileChooser; @@ -33,7 +32,6 @@ import org.fife.ui.autocomplete.BasicCompletion; import org.fife.ui.autocomplete.CompletionProvider; import org.fife.ui.autocomplete.DefaultCompletionProvider; -import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea; import org.fife.ui.rsyntaxtextarea.SyntaxConstants; import org.fife.ui.rsyntaxtextarea.Theme; import org.slf4j.Logger; @@ -45,17 +43,27 @@ import jssc.SerialPortException; import jssc.SerialPortList; +/** + * + * @author 4refr0nt + */ @SuppressWarnings({ "unchecked", "rawtypes", "deprecation" }) public class Main extends javax.swing.JFrame { - private static final long serialVersionUID = -75051662541902217L; - private static SerialPort serialPort; + private static final long serialVersionUID = -3842280426759046424L; + public static SerialPort serialPort; + public static ArrayList sendBuf; + public static boolean pasteMode = true; // for MicroPython only + public static boolean pOpen = false; public static boolean sOpen = false; public static boolean portJustOpen = false; - public static final String version = "v0.2.0-rc2"; - public static List LAF; - public static List LAFclass; + public static final String version = "v0.2.0-rc5"; + public static ArrayList LAF; + public static ArrayList LAFclass; public static Preferences prefs; + private static int FirmwareType; + + private static pyFiler pyFiler = new pyFiler(); /** * Creates new form MainWindows @@ -63,7 +71,6 @@ public class Main extends javax.swing.JFrame { public Main() { initComponents(); FinalInit(); - } /** @@ -71,6 +78,7 @@ public Main() { * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ + // //GEN-BEGIN:initComponents private void initComponents() { @@ -112,11 +120,14 @@ private void initComponents() { Donate = new javax.swing.JButton(); Author = new javax.swing.JLabel(); HomePage = new javax.swing.JButton(); + Author1 = new javax.swing.JLabel(); ContextMenuESPFileLUA = new javax.swing.JPopupMenu(); MenuItemESPFileDo = new javax.swing.JMenuItem(); TerminalSeparator3 = new javax.swing.JPopupMenu.Separator(); MenuItemESPFileDelete = new javax.swing.JMenuItem(); buttonGroupLF = new javax.swing.ButtonGroup(); + ContextMenuFileManager = new javax.swing.JPopupMenu(); + ShowFileManager = new javax.swing.JCheckBoxMenuItem(); HorizontSplit = new javax.swing.JSplitPane(); LeftBasePane = new javax.swing.JLayeredPane(); LeftTab = new javax.swing.JTabbedPane(); @@ -162,14 +173,59 @@ private void initComponents() { FileDo = new javax.swing.JButton(); FilesUpload = new javax.swing.JButton(); NodeMCUCommands = new javax.swing.JLayeredPane(); + CommandsMicroPython = new javax.swing.JLayeredPane(); + CommandsNodeMCU = new javax.swing.JLayeredPane(); cmdNodeRestart = new javax.swing.JButton(); + cmdTimerStop = new javax.swing.JButton(); cmdNodeChipID = new javax.swing.JButton(); + TimerNumber = new javax.swing.JComboBox<>(); cmdNodeHeap = new javax.swing.JButton(); - cmdNodeSleep = new javax.swing.JButton(); cmdListFiles = new javax.swing.JButton(); - cmdTimerStop = new javax.swing.JButton(); - TimerNumber = new javax.swing.JComboBox(); - jLayeredPane1 = new javax.swing.JLayeredPane(); + cmdNodeSleep = new javax.swing.JButton(); + MicroPythonCommandsTab = new javax.swing.JTabbedPane(); + MicroPythonCommandsWiFi = new javax.swing.JLayeredPane(); + MicroPythonSSID = new javax.swing.JTextField(); + cmdMicroPythonStaConnect = new javax.swing.JButton(); + MicroPythonPASS = new javax.swing.JTextField(); + MicroPythonRemoteHost = new javax.swing.JTextField(); + MicroPythonRemotePort = new javax.swing.JTextField(); + cmdMicroPythonSendToHost = new javax.swing.JButton(); + MicroPythonRemoteData = new javax.swing.JTextField(); + cmdMicroPythonScan = new javax.swing.JButton(); + MicroPythonCommandsGPIO = new javax.swing.JLayeredPane(); + MicroPythonGPIO0_1 = new javax.swing.JButton(); + MicroPythonGPIO0_0 = new javax.swing.JButton(); + MicroPythonGPIO2_1 = new javax.swing.JButton(); + MicroPythonGPIO2_0 = new javax.swing.JButton(); + MicroPythonGPIO4_1 = new javax.swing.JButton(); + MicroPythonGPIO4_0 = new javax.swing.JButton(); + MicroPythonGPIO5_0 = new javax.swing.JButton(); + MicroPythonGPIO5_1 = new javax.swing.JButton(); + MicroPythonGPIO9_0 = new javax.swing.JButton(); + MicroPythonGPIO9_1 = new javax.swing.JButton(); + MicroPythonGPIO10_0 = new javax.swing.JButton(); + MicroPythonGPIO10_1 = new javax.swing.JButton(); + MicroPythonGPIO12_0 = new javax.swing.JButton(); + MicroPythonGPIO12_1 = new javax.swing.JButton(); + MicroPythonGPIO13_0 = new javax.swing.JButton(); + MicroPythonGPIO13_1 = new javax.swing.JButton(); + MicroPythonGPIO14_1 = new javax.swing.JButton(); + MicroPythonGPIO15_1 = new javax.swing.JButton(); + MicroPythonGPIO16_1 = new javax.swing.JButton(); + MicroPythonGPIO14_0 = new javax.swing.JButton(); + MicroPythonGPIO15_0 = new javax.swing.JButton(); + MicroPythonGPIO16_0 = new javax.swing.JButton(); + MicroPythonGPIO0 = new javax.swing.JButton(); + MicroPythonGPIO2 = new javax.swing.JButton(); + MicroPythonGPIO4 = new javax.swing.JButton(); + MicroPythonGPIO5 = new javax.swing.JButton(); + MicroPythonGPIO9 = new javax.swing.JButton(); + MicroPythonGPIO10 = new javax.swing.JButton(); + MicroPythonGPIO12 = new javax.swing.JButton(); + MicroPythonGPIO13 = new javax.swing.JButton(); + MicroPythonGPIO14 = new javax.swing.JButton(); + MicroPythonGPIO15 = new javax.swing.JButton(); + MicroPythonGPIO16 = new javax.swing.JButton(); NodeMCUSnippets = new javax.swing.JLayeredPane(); LeftSnippetsPane = new javax.swing.JLayeredPane(); SnippetEdit0 = new javax.swing.JButton(); @@ -229,6 +285,7 @@ private void initComponents() { UseCustomPortName = new javax.swing.JCheckBox(); jLabel10 = new javax.swing.JLabel(); AutodetectFirmware = new javax.swing.JCheckBox(); + CommandEcho = new javax.swing.JCheckBox(); ATvXX = new javax.swing.JLayeredPane(); BasicATcommandsPane = new javax.swing.JLayeredPane(); cmdAT = new javax.swing.JButton(); @@ -326,8 +383,67 @@ private void initComponents() { DHCP = new javax.swing.JComboBox(); DHCPmode = new javax.swing.JComboBox(); cmdSetCWDHCP = new javax.swing.JButton(); - Frankenshtein = new javax.swing.JLayeredPane(); - ComingSoon1 = new javax.swing.JLabel(); + RN2483 = new javax.swing.JLayeredPane(); + RN2483jTab = new javax.swing.JTabbedPane(); + MacPane = new javax.swing.JScrollPane(); + LoRaMAC = new javax.swing.JLayeredPane(); + MacCommon = new javax.swing.JLayeredPane(); + cmdMacSetAdrOn = new javax.swing.JButton(); + cmdMacSetDR = new javax.swing.JButton(); + cmdMacSetPwrIdx = new javax.swing.JButton(); + cmdMacGetStatus = new javax.swing.JButton(); + cmdMacSetAdrOff = new javax.swing.JButton(); + cmdMacGetAdr = new javax.swing.JButton(); + MacDR = new javax.swing.JTextField(); + MacPower = new javax.swing.JTextField(); + cmdMacGetDR = new javax.swing.JButton(); + cmdMacGetPwrIdx = new javax.swing.JButton(); + SendUnconfirmed = new javax.swing.JLayeredPane(); + cmdMacTX = new javax.swing.JButton(); + MacTxPort = new javax.swing.JTextField(); + MacTxData = new javax.swing.JTextField(); + TxConfirmed = new javax.swing.JComboBox<>(); + jLabel13 = new javax.swing.JLabel(); + RadioPane = new javax.swing.JLayeredPane(); + MacSF = new javax.swing.JComboBox<>(); + jLabel11 = new javax.swing.JLabel(); + RadioRxBandWidth = new javax.swing.JTextField(); + RadioFreq = new javax.swing.JTextField(); + cmdRadiosetRxBw = new javax.swing.JButton(); + cmdRadioSetFreq = new javax.swing.JButton(); + cmdRadioGetSF = new javax.swing.JButton(); + cmdRadioGetBw = new javax.swing.JButton(); + cmdRadioGetRxBw = new javax.swing.JButton(); + cmdRadioGetFreq = new javax.swing.JButton(); + MacBandWidth = new javax.swing.JComboBox<>(); + jLabel12 = new javax.swing.JLabel(); + jLayeredPane1 = new javax.swing.JLayeredPane(); + cmdSysReset = new javax.swing.JButton(); + cmdSysFactoryReset = new javax.swing.JButton(); + cmdSysGetVer = new javax.swing.JButton(); + cmdSysGetHwEui = new javax.swing.JButton(); + ActivationScrollPane = new javax.swing.JScrollPane(); + ActivationPane = new javax.swing.JLayeredPane(); + ABPPane = new javax.swing.JLayeredPane(); + cmdMacSetDevAddr = new javax.swing.JButton(); + cmdMacSetNwkSKey = new javax.swing.JButton(); + cmdMacSetAppSKey = new javax.swing.JButton(); + cmdMacjoinABP = new javax.swing.JButton(); + cmdMacGetDevAddr = new javax.swing.JButton(); + DevAddr = new javax.swing.JTextField(); + NwkSKey = new javax.swing.JTextField(); + AppSKey = new javax.swing.JTextField(); + cmdMacSave = new javax.swing.JButton(); + OTAAPane = new javax.swing.JLayeredPane(); + cmdMacSetDevEui = new javax.swing.JButton(); + cmdMacSetAppEui = new javax.swing.JButton(); + cmdMacSetAppKey = new javax.swing.JButton(); + cmdMacJoinOTAA = new javax.swing.JButton(); + cmdMacGetDevEui = new javax.swing.JButton(); + cmdMacGetAppEui = new javax.swing.JButton(); + DevEUI = new javax.swing.JTextField(); + AppEUI = new javax.swing.JTextField(); + AppKey = new javax.swing.JTextField(); RightBasePane = new javax.swing.JLayeredPane(); LEDPanel = new javax.swing.JLayeredPane(); PortOpenLabel = new javax.swing.JLabel(); @@ -340,10 +456,12 @@ private void initComponents() { AutoScroll = new javax.swing.JCheckBox(); Port = new javax.swing.JComboBox(); EOL = new javax.swing.JCheckBox(); - RightBottomPane = new javax.swing.JLayeredPane(); - LF = new javax.swing.JCheckBox(); - SendCommand = new javax.swing.JButton(); CR = new javax.swing.JCheckBox(); + LF = new javax.swing.JCheckBox(); + DonateSmall = new javax.swing.JButton(); + TerminalOnlyCheckBox = new javax.swing.JCheckBox(); + EditorOnlyCheckBox = new javax.swing.JCheckBox(); + RightBottomPane = new javax.swing.JLayeredPane(); Command = new javax.swing.JComboBox(); RightBigPane = new javax.swing.JLayeredPane(); RightFilesSplitPane = new javax.swing.JSplitPane(); @@ -354,7 +472,8 @@ private void initComponents() { ScrollLog = new javax.swing.JScrollPane(); Log = new javax.swing.JTextArea(); FileManagerScrollPane = new javax.swing.JScrollPane(); - FileManagerPane = new javax.swing.JLayeredPane(); + FileManagersLayer = new javax.swing.JLayeredPane(); + NodeFileManagerPane = new javax.swing.JLayeredPane(); FileFormat = new javax.swing.JButton(); FileSystemInfo = new javax.swing.JButton(); FileListReload = new javax.swing.JButton(); @@ -362,6 +481,9 @@ private void initComponents() { FileRenamePanel = new javax.swing.JLayeredPane(); FileRenameLabel = new javax.swing.JLabel(); FileRename = new javax.swing.JTextField(); + PyFileManagerPane = new javax.swing.JLayeredPane(); + PyListDir = new javax.swing.JButton(); + PyFileAsButton1 = new javax.swing.JButton(); RightSnippetsPane = new javax.swing.JLayeredPane(); ButtonSnippet0 = new javax.swing.JButton(); ButtonSnippet1 = new javax.swing.JButton(); @@ -379,14 +501,13 @@ private void initComponents() { ButtonSnippet13 = new javax.swing.JButton(); ButtonSnippet14 = new javax.swing.JButton(); ButtonSnippet15 = new javax.swing.JButton(); - logo = new javax.swing.JLabel(); RightExtraButtons = new javax.swing.JLayeredPane(); NodeHeap = new javax.swing.JButton(); NodeInfo = new javax.swing.JButton(); NodeChipID = new javax.swing.JButton(); NodeFlashID = new javax.swing.JButton(); NodeReset = new javax.swing.JButton(); - DonateSmall = new javax.swing.JButton(); + SendCommand = new javax.swing.JButton(); MainMenuBar = new javax.swing.JMenuBar(); MenuFile = new javax.swing.JMenu(); MenuItemFileNew = new javax.swing.JMenuItem(); @@ -426,6 +547,9 @@ private void initComponents() { MenuItemViewClearLog = new javax.swing.JMenuItem(); MenuItemViewClearTerminal = new javax.swing.JMenuItem(); jSeparator9 = new javax.swing.JPopupMenu.Separator(); + MenuItemViewTerminalOnly = new javax.swing.JCheckBoxMenuItem(); + MenuItemViewEditorOnly = new javax.swing.JCheckBoxMenuItem(); + jSeparator18 = new javax.swing.JPopupMenu.Separator(); MenuItemViewToolbar = new javax.swing.JCheckBoxMenuItem(); MenuItemViewLeftExtra = new javax.swing.JCheckBoxMenuItem(); MenuItemViewSnippets = new javax.swing.JCheckBoxMenuItem(); @@ -446,25 +570,22 @@ private void initComponents() { jSeparator17 = new javax.swing.JPopupMenu.Separator(); MenuItemViewLF1 = new javax.swing.JRadioButtonMenuItem(); MenuLinks = new javax.swing.JMenu(); - MenuItemLinksAPIcn = new javax.swing.JMenuItem(); - MenuItemLinksAPIen = new javax.swing.JMenuItem(); - MenuItemLinksAPIru = new javax.swing.JMenuItem(); - MenuItemLinksChangelog = new javax.swing.JMenuItem(); - jSeparator14 = new javax.swing.JPopupMenu.Separator(); - MenuItemLinksDownloadLatestFirmware = new javax.swing.JMenuItem(); - MenuItemLinksDownloadLatestDev = new javax.swing.JMenuItem(); - MenuItemLinksDownloadLatestFlasher = new javax.swing.JMenuItem(); + MenuItemLinksMicroPythonDoc = new javax.swing.JMenuItem(); + MenuItemLinksNodeMCUdoc = new javax.swing.JMenuItem(); jSeparator15 = new javax.swing.JPopupMenu.Separator(); MenuItemLinksBuyDevBoard = new javax.swing.JMenuItem(); MenuItemLinksBuyESP8266 = new javax.swing.JMenuItem(); MenuItemLinksBuyESD12 = new javax.swing.JMenuItem(); MenuItemLinksBuyOther = new javax.swing.JMenuItem(); jSeparator16 = new javax.swing.JPopupMenu.Separator(); - MenuItemLinksESPlorerForumEn = new javax.swing.JMenuItem(); - MenuItemLinksESPlorerForumRu = new javax.swing.JMenuItem(); - MenuItemLinksESPlorerLatest = new javax.swing.JMenuItem(); - MenuItemLinksESPlorerSource = new javax.swing.JMenuItem(); - MenuItemLinksESPlorerHome = new javax.swing.JMenuItem(); + MenuItemLinksIoTmanager = new javax.swing.JMenuItem(); + jSeparator19 = new javax.swing.JPopupMenu.Separator(); + MenuItemLinksMainForumEn = new javax.swing.JMenuItem(); + MenuItemLinksMainForumRu = new javax.swing.JMenuItem(); + MenuItemLinksMainLatest = new javax.swing.JMenuItem(); + MenuItemLinksMainSource = new javax.swing.JMenuItem(); + MenuItemLinksMainHome = new javax.swing.JMenuItem(); + jSeparator20 = new javax.swing.JPopupMenu.Separator(); MenuItemLinksDonate = new javax.swing.JMenuItem(); MenuHelp = new javax.swing.JMenu(); MenuItemHelpAbout = new javax.swing.JMenuItem(); @@ -714,6 +835,14 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { About.setMinimumSize(new java.awt.Dimension(406, 250)); About.setModalityType(java.awt.Dialog.ModalityType.DOCUMENT_MODAL); About.setResizable(false); + About.addWindowFocusListener(new java.awt.event.WindowFocusListener() { + public void windowGainedFocus(java.awt.event.WindowEvent evt) { + } + + public void windowLostFocus(java.awt.event.WindowEvent evt) { + AboutWindowLostFocus(evt); + } + }); About.addFocusListener(new java.awt.event.FocusAdapter() { public void focusLost(java.awt.event.FocusEvent evt) { AboutFocusLost(evt); @@ -725,6 +854,7 @@ public void focusLost(java.awt.event.FocusEvent evt) { AppName.setText("ESPlorer"); AppName.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); + Version.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N Version.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); Version.setText(version); Version.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); @@ -732,6 +862,9 @@ public void focusLost(java.awt.event.FocusEvent evt) { Donate.setIcon(new javax.swing.ImageIcon(getClass().getResource("/donate.gif"))); // NOI18N Donate.setToolTipText( "If you'd like to make a one-time donation to ESPlorer author, you can use PayPal to make it fast and easy."); + Donate.setMaximumSize(new java.awt.Dimension(200, 55)); + Donate.setMinimumSize(new java.awt.Dimension(200, 55)); + Donate.setPreferredSize(new java.awt.Dimension(200, 55)); Donate.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { DonateActionPerformed(evt); @@ -739,7 +872,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { }); Author.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - Author.setText("by 4refr0nt"); + Author.setText("by Victor Brutskiy (4refr0nt)"); Author.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); HomePage.setIcon(new javax.swing.ImageIcon(getClass().getResource("/wifi.png"))); // NOI18N @@ -755,6 +888,10 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); + Author1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + Author1.setText("4refr0nt@gmail.com"); + Author1.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); + javax.swing.GroupLayout AboutLayout = new javax.swing.GroupLayout(About.getContentPane()); About.getContentPane().setLayout(AboutLayout); AboutLayout.setHorizontalGroup(AboutLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -765,18 +902,18 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { .addComponent(Version, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(AboutLayout.createSequentialGroup() - .addComponent(Donate, javax.swing.GroupLayout.PREFERRED_SIZE, 200, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(HomePage, javax.swing.GroupLayout.DEFAULT_SIZE, 204, Short.MAX_VALUE) - .addContainerGap())); + .addComponent(Donate, javax.swing.GroupLayout.DEFAULT_SIZE, 210, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(HomePage, + javax.swing.GroupLayout.PREFERRED_SIZE, 212, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(Author1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, + Short.MAX_VALUE)); AboutLayout.setVerticalGroup(AboutLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(AboutLayout.createSequentialGroup().addContainerGap(77, Short.MAX_VALUE) - .addComponent(AppName, javax.swing.GroupLayout.PREFERRED_SIZE, 22, + .addGroup(AboutLayout.createSequentialGroup().addContainerGap(44, Short.MAX_VALUE) + .addComponent(AppName, javax.swing.GroupLayout.PREFERRED_SIZE, 42, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(Version) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(Author) - .addGap(56, 56, 56) + .addGap(18, 18, 18).addComponent(Version).addGap(18, 18, 18).addComponent(Author) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(Author1) + .addGap(24, 24, 24) .addGroup(AboutLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(Donate, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) @@ -816,6 +953,16 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { }); ContextMenuESPFileLUA.add(MenuItemESPFileDelete); + ShowFileManager.setSelected(true); + ShowFileManager.setText("Show/Hide FileManager panel"); + ShowFileManager.setToolTipText("Look at View for enabling"); + ShowFileManager.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + ShowFileManagerItemStateChanged(evt); + } + }); + ContextMenuFileManager.add(ShowFileManager); + setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE); setTitle("ESPlorer"); setAutoRequestFocus(false); @@ -867,7 +1014,7 @@ public void windowOpened(java.awt.event.WindowEvent evt) { HorizontSplit.setMinimumSize(new java.awt.Dimension(100, 100)); HorizontSplit.setPreferredSize(new java.awt.Dimension(768, 567)); - LeftBasePane.setMinimumSize(new java.awt.Dimension(100, 100)); + LeftBasePane.setOpaque(true); LeftTab.setTabLayoutPolicy(javax.swing.JTabbedPane.SCROLL_TAB_LAYOUT); LeftTab.setToolTipText(""); @@ -876,6 +1023,7 @@ public void windowOpened(java.awt.event.WindowEvent evt) { LeftTab.setAutoscrolls(true); LeftTab.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR)); LeftTab.setMinimumSize(new java.awt.Dimension(100, 100)); + LeftTab.setOpaque(true); LeftTab.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent evt) { LeftTabStateChanged(evt); @@ -899,6 +1047,7 @@ public void componentShown(java.awt.event.ComponentEvent evt) { TextTab.setBorder(javax.swing.BorderFactory.createEtchedBorder()); TextTab.setComponentPopupMenu(ContextMenuEditor); TextTab.setMinimumSize(new java.awt.Dimension(462, 365)); + TextTab.setOpaque(true); TextTab.setPreferredSize(new java.awt.Dimension(462, 365)); TextTab.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent evt) { @@ -908,6 +1057,7 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) { SriptsTab.setToolTipText(""); SriptsTab.setMinimumSize(new java.awt.Dimension(460, 350)); + SriptsTab.setOpaque(true); FilesToolBar.setFloatable(false); FilesToolBar.setRollover(true); @@ -1183,6 +1333,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { }); FilesToolBar.add(ButtonSendLine); + FilesTabbedPane.setOpaque(true); FilesTabbedPane.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent evt) { FilesTabbedPaneStateChanged(evt); @@ -1242,6 +1393,8 @@ public void keyTyped(java.awt.event.KeyEvent evt) { }); TextScroll.setViewportView(TextEditor); + FileLayeredPane.setLayer(TextScroll, javax.swing.JLayeredPane.DEFAULT_LAYER); + javax.swing.GroupLayout FileLayeredPaneLayout = new javax.swing.GroupLayout(FileLayeredPane); FileLayeredPane.setLayout(FileLayeredPaneLayout); FileLayeredPaneLayout @@ -1250,7 +1403,6 @@ public void keyTyped(java.awt.event.KeyEvent evt) { FileLayeredPaneLayout .setVerticalGroup(FileLayeredPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(TextScroll, javax.swing.GroupLayout.DEFAULT_SIZE, 432, Short.MAX_VALUE)); - FileLayeredPane.setLayer(TextScroll, javax.swing.JLayeredPane.DEFAULT_LAYER); FilesTabbedPane.addTab("NewFile", FileLayeredPane); @@ -1390,6 +1542,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { ProgressBar.setOpaque(true); ProgressBar.setStringPainted(true); + LeftMainButtons.setOpaque(true); LeftMainButtons.setLayout(new java.awt.FlowLayout()); FileSaveESP.setIcon(new javax.swing.ImageIcon(getClass().getResource("/move.png"))); // NOI18N @@ -1440,7 +1593,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { }); LeftMainButtons.add(FileDo); - FilesUpload.setIcon(new javax.swing.ImageIcon(getClass().getResource("/upload.png"))); // NOI18N + FilesUpload.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uploadLUA.png"))); // NOI18N FilesUpload.setText("Upload ..."); FilesUpload.setToolTipText("Upload file from disk to ESP flash memory"); FilesUpload.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); @@ -1456,10 +1609,19 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { }); LeftMainButtons.add(FilesUpload); + SriptsTab.setLayer(FilesToolBar, javax.swing.JLayeredPane.PALETTE_LAYER); + SriptsTab.setLayer(FilesTabbedPane, javax.swing.JLayeredPane.DEFAULT_LAYER); + SriptsTab.setLayer(LeftExtraButtons, javax.swing.JLayeredPane.DEFAULT_LAYER); + SriptsTab.setLayer(Busy, javax.swing.JLayeredPane.DEFAULT_LAYER); + SriptsTab.setLayer(FilePathLabel, javax.swing.JLayeredPane.DEFAULT_LAYER); + SriptsTab.setLayer(ProgressBar, javax.swing.JLayeredPane.DEFAULT_LAYER); + SriptsTab.setLayer(LeftMainButtons, javax.swing.JLayeredPane.DEFAULT_LAYER); + javax.swing.GroupLayout SriptsTabLayout = new javax.swing.GroupLayout(SriptsTab); SriptsTab.setLayout(SriptsTabLayout); SriptsTabLayout.setHorizontalGroup(SriptsTabLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(FilesTabbedPane) + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(FilesTabbedPane, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) .addComponent(FilesToolBar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(SriptsTabLayout.createSequentialGroup() @@ -1467,17 +1629,19 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { .addComponent(ProgressBar, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(javax.swing.GroupLayout.Alignment.LEADING, - SriptsTabLayout.createSequentialGroup().addGap(6, 6, 6) - .addComponent(Busy, javax.swing.GroupLayout.PREFERRED_SIZE, 60, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(FilePathLabel, javax.swing.GroupLayout.DEFAULT_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addComponent(LeftExtraButtons, javax.swing.GroupLayout.Alignment.LEADING, - javax.swing.GroupLayout.PREFERRED_SIZE, 531, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(LeftMainButtons, javax.swing.GroupLayout.Alignment.LEADING, - javax.swing.GroupLayout.PREFERRED_SIZE, 531, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(javax.swing.GroupLayout.Alignment.LEADING, + SriptsTabLayout.createSequentialGroup().addGap(6, 6, 6) + .addComponent(Busy, javax.swing.GroupLayout.PREFERRED_SIZE, 60, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(FilePathLabel, javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addComponent(LeftExtraButtons, javax.swing.GroupLayout.Alignment.LEADING, + javax.swing.GroupLayout.PREFERRED_SIZE, 531, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(LeftMainButtons, javax.swing.GroupLayout.Alignment.LEADING, + javax.swing.GroupLayout.PREFERRED_SIZE, 531, + javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(0, 0, Short.MAX_VALUE))); SriptsTabLayout.setVerticalGroup(SriptsTabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(SriptsTabLayout.createSequentialGroup() @@ -1497,19 +1661,23 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(LeftMainButtons, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))); - SriptsTab.setLayer(FilesToolBar, javax.swing.JLayeredPane.PALETTE_LAYER); - SriptsTab.setLayer(FilesTabbedPane, javax.swing.JLayeredPane.DEFAULT_LAYER); - SriptsTab.setLayer(LeftExtraButtons, javax.swing.JLayeredPane.DEFAULT_LAYER); - SriptsTab.setLayer(Busy, javax.swing.JLayeredPane.DEFAULT_LAYER); - SriptsTab.setLayer(FilePathLabel, javax.swing.JLayeredPane.DEFAULT_LAYER); - SriptsTab.setLayer(ProgressBar, javax.swing.JLayeredPane.DEFAULT_LAYER); - SriptsTab.setLayer(LeftMainButtons, javax.swing.JLayeredPane.DEFAULT_LAYER); TextTab.addTab("Scripts", SriptsTab); SriptsTab.getAccessibleContext().setAccessibleName("Files"); NodeMCUCommands.setOpaque(true); + CommandsMicroPython.setBorder(javax.swing.BorderFactory.createTitledBorder("MicroPython Commands")); + + javax.swing.GroupLayout CommandsMicroPythonLayout = new javax.swing.GroupLayout(CommandsMicroPython); + CommandsMicroPython.setLayout(CommandsMicroPythonLayout); + CommandsMicroPythonLayout.setHorizontalGroup(CommandsMicroPythonLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 0, Short.MAX_VALUE)); + CommandsMicroPythonLayout.setVerticalGroup(CommandsMicroPythonLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 695, Short.MAX_VALUE)); + + CommandsNodeMCU.setBorder(javax.swing.BorderFactory.createTitledBorder("NodeMCU Commands")); + cmdNodeRestart.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N cmdNodeRestart.setText("Restart ESP"); cmdNodeRestart.setToolTipText(""); @@ -1523,6 +1691,19 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); + cmdTimerStop.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N + cmdTimerStop.setText("tmr.stop"); + cmdTimerStop.setToolTipText(""); + cmdTimerStop.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdTimerStop.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdTimerStop.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdTimerStop.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdTimerStop.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + cmdTimerStopActionPerformed(evt); + } + }); + cmdNodeChipID.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N cmdNodeChipID.setText("Chip ID"); cmdNodeChipID.setToolTipText(""); @@ -1536,6 +1717,10 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); + TimerNumber.setMaximumRowCount(7); + TimerNumber.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "0", "1", "2", "3", "4", "5", "6" })); + TimerNumber.setToolTipText("Timer number (0-6)"); + cmdNodeHeap.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N cmdNodeHeap.setText("Heap"); cmdNodeHeap.setToolTipText(""); @@ -1549,19 +1734,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - cmdNodeSleep.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdNodeSleep.setText("Sleep 10000"); - cmdNodeSleep.setToolTipText(""); - cmdNodeSleep.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdNodeSleep.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdNodeSleep.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdNodeSleep.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdNodeSleep.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdNodeSleepActionPerformed(evt); - } - }); - cmdListFiles.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N cmdListFiles.setText("List files"); cmdListFiles.setToolTipText(""); @@ -1575,69 +1747,60 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); - cmdTimerStop.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdTimerStop.setText("tmr.stop"); - cmdTimerStop.setToolTipText(""); - cmdTimerStop.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdTimerStop.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdTimerStop.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdTimerStop.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdTimerStop.addActionListener(new java.awt.event.ActionListener() { + cmdNodeSleep.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N + cmdNodeSleep.setText("Sleep 10000"); + cmdNodeSleep.setToolTipText(""); + cmdNodeSleep.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdNodeSleep.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdNodeSleep.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdNodeSleep.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdNodeSleep.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdTimerStopActionPerformed(evt); + cmdNodeSleepActionPerformed(evt); } }); - TimerNumber.setMaximumRowCount(7); - TimerNumber.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "0", "1", "2", "3", "4", "5", "6" })); - TimerNumber.setToolTipText("Timer number (0-6)"); - - jLayeredPane1.setBorder(javax.swing.BorderFactory.createTitledBorder("GPIO")); - - javax.swing.GroupLayout jLayeredPane1Layout = new javax.swing.GroupLayout(jLayeredPane1); - jLayeredPane1.setLayout(jLayeredPane1Layout); - jLayeredPane1Layout.setHorizontalGroup(jLayeredPane1Layout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 0, Short.MAX_VALUE)); - jLayeredPane1Layout.setVerticalGroup(jLayeredPane1Layout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 177, Short.MAX_VALUE)); + CommandsNodeMCU.setLayer(cmdNodeRestart, javax.swing.JLayeredPane.DEFAULT_LAYER); + CommandsNodeMCU.setLayer(cmdTimerStop, javax.swing.JLayeredPane.DEFAULT_LAYER); + CommandsNodeMCU.setLayer(cmdNodeChipID, javax.swing.JLayeredPane.DEFAULT_LAYER); + CommandsNodeMCU.setLayer(TimerNumber, javax.swing.JLayeredPane.DEFAULT_LAYER); + CommandsNodeMCU.setLayer(cmdNodeHeap, javax.swing.JLayeredPane.DEFAULT_LAYER); + CommandsNodeMCU.setLayer(cmdListFiles, javax.swing.JLayeredPane.DEFAULT_LAYER); + CommandsNodeMCU.setLayer(cmdNodeSleep, javax.swing.JLayeredPane.DEFAULT_LAYER); - javax.swing.GroupLayout NodeMCUCommandsLayout = new javax.swing.GroupLayout(NodeMCUCommands); - NodeMCUCommands.setLayout(NodeMCUCommandsLayout); - NodeMCUCommandsLayout.setHorizontalGroup(NodeMCUCommandsLayout + javax.swing.GroupLayout CommandsNodeMCULayout = new javax.swing.GroupLayout(CommandsNodeMCU); + CommandsNodeMCU.setLayout(CommandsNodeMCULayout); + CommandsNodeMCULayout.setHorizontalGroup(CommandsNodeMCULayout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(NodeMCUCommandsLayout.createSequentialGroup().addContainerGap().addGroup(NodeMCUCommandsLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(jLayeredPane1) - .addGroup(NodeMCUCommandsLayout.createSequentialGroup().addGroup(NodeMCUCommandsLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(NodeMCUCommandsLayout.createSequentialGroup() + .addGroup(CommandsNodeMCULayout.createSequentialGroup() + .addGroup(CommandsNodeMCULayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(CommandsNodeMCULayout.createSequentialGroup() .addComponent(cmdNodeRestart, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(cmdNodeChipID, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(NodeMCUCommandsLayout.createSequentialGroup() + .addGroup(CommandsNodeMCULayout.createSequentialGroup() .addComponent(cmdTimerStop, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(TimerNumber, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE))) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(NodeMCUCommandsLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(NodeMCUCommandsLayout.createSequentialGroup() - .addComponent(cmdNodeHeap, javax.swing.GroupLayout.PREFERRED_SIZE, 100, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(cmdNodeSleep, javax.swing.GroupLayout.PREFERRED_SIZE, 100, - javax.swing.GroupLayout.PREFERRED_SIZE)) - .addComponent(cmdListFiles, javax.swing.GroupLayout.PREFERRED_SIZE, 100, + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(CommandsNodeMCULayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(CommandsNodeMCULayout.createSequentialGroup() + .addComponent(cmdNodeHeap, javax.swing.GroupLayout.PREFERRED_SIZE, 100, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(cmdNodeSleep, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGap(0, 0, Short.MAX_VALUE))) - .addContainerGap())); - NodeMCUCommandsLayout.setVerticalGroup(NodeMCUCommandsLayout + .addComponent(cmdListFiles, javax.swing.GroupLayout.PREFERRED_SIZE, 100, + javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(0, 0, Short.MAX_VALUE))); + CommandsNodeMCULayout.setVerticalGroup(CommandsNodeMCULayout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(NodeMCUCommandsLayout.createSequentialGroup().addContainerGap() - .addGroup(NodeMCUCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addGroup(CommandsNodeMCULayout.createSequentialGroup().addContainerGap() + .addGroup(CommandsNodeMCULayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(cmdNodeChipID, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(cmdNodeRestart, javax.swing.GroupLayout.PREFERRED_SIZE, 30, @@ -1647,6087 +1810,8502 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { .addComponent(cmdNodeSleep, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(NodeMCUCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addGroup(CommandsNodeMCULayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(cmdListFiles, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(cmdTimerStop, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(TimerNumber, javax.swing.GroupLayout.DEFAULT_SIZE, 30, Short.MAX_VALUE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jLayeredPane1, javax.swing.GroupLayout.PREFERRED_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(250, 250, 250))); - NodeMCUCommands.setLayer(cmdNodeRestart, javax.swing.JLayeredPane.DEFAULT_LAYER); - NodeMCUCommands.setLayer(cmdNodeChipID, javax.swing.JLayeredPane.DEFAULT_LAYER); - NodeMCUCommands.setLayer(cmdNodeHeap, javax.swing.JLayeredPane.DEFAULT_LAYER); - NodeMCUCommands.setLayer(cmdNodeSleep, javax.swing.JLayeredPane.DEFAULT_LAYER); - NodeMCUCommands.setLayer(cmdListFiles, javax.swing.JLayeredPane.DEFAULT_LAYER); - NodeMCUCommands.setLayer(cmdTimerStop, javax.swing.JLayeredPane.DEFAULT_LAYER); - NodeMCUCommands.setLayer(TimerNumber, javax.swing.JLayeredPane.DEFAULT_LAYER); - NodeMCUCommands.setLayer(jLayeredPane1, javax.swing.JLayeredPane.DEFAULT_LAYER); + .addContainerGap())); - TextTab.addTab("Commands", NodeMCUCommands); + MicroPythonCommandsWiFi.setOpaque(true); - LeftSnippetsPane.setOpaque(true); + MicroPythonSSID.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + MicroPythonSSID.setText("SSID"); + MicroPythonSSID.setToolTipText("Enter WiFi SSID"); + MicroPythonSSID.setMaximumSize(new java.awt.Dimension(100, 23)); + MicroPythonSSID.setMinimumSize(new java.awt.Dimension(100, 23)); + MicroPythonSSID.setPreferredSize(new java.awt.Dimension(100, 23)); + MicroPythonSSID.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MicroPythonSSIDActionPerformed(evt); + } + }); + MicroPythonSSID.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusGained(java.awt.event.FocusEvent evt) { + MicroPythonSSIDFocusGained(evt); + } + }); - SnippetEdit0.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SnippetEdit0.setText("Edit Snippet0"); - SnippetEdit0.addActionListener(new java.awt.event.ActionListener() { + cmdMicroPythonStaConnect.setIcon(new javax.swing.ImageIcon(getClass().getResource("/connect3.png"))); // NOI18N + cmdMicroPythonStaConnect.setText("Connect to AP"); + cmdMicroPythonStaConnect.setToolTipText("Connect to WiFi Access Point"); + cmdMicroPythonStaConnect.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdMicroPythonStaConnect.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdMicroPythonStaConnect.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdMicroPythonStaConnect.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdMicroPythonStaConnect.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - SnippetEdit0ActionPerformed(evt); + cmdMicroPythonStaConnectActionPerformed(evt); } }); - SnippetEdit1.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SnippetEdit1.setText("Edit Snippet1"); - SnippetEdit1.addActionListener(new java.awt.event.ActionListener() { + MicroPythonPASS.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + MicroPythonPASS.setText("password"); + MicroPythonPASS.setToolTipText("Enter WiFi password"); + MicroPythonPASS.setMaximumSize(new java.awt.Dimension(104, 23)); + MicroPythonPASS.setMinimumSize(new java.awt.Dimension(104, 23)); + MicroPythonPASS.setPreferredSize(new java.awt.Dimension(104, 23)); + MicroPythonPASS.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - SnippetEdit1ActionPerformed(evt); + MicroPythonPASSActionPerformed(evt); + } + }); + MicroPythonPASS.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusGained(java.awt.event.FocusEvent evt) { + MicroPythonPASSFocusGained(evt); } }); - SnippetEdit2.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SnippetEdit2.setText("Edit Snippet2"); - SnippetEdit2.addActionListener(new java.awt.event.ActionListener() { + MicroPythonRemoteHost.setText("micropython.org"); + MicroPythonRemoteHost.setToolTipText("Remote host name"); + + MicroPythonRemotePort.setText("80"); + MicroPythonRemotePort.setToolTipText("Remote port"); + + cmdMicroPythonSendToHost.setIcon(new javax.swing.ImageIcon(getClass().getResource("/connect3.png"))); // NOI18N + cmdMicroPythonSendToHost.setText("Connect and send"); + cmdMicroPythonSendToHost.setToolTipText("Start a connection as client"); + cmdMicroPythonSendToHost.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - SnippetEdit2ActionPerformed(evt); + cmdMicroPythonSendToHostActionPerformed(evt); } }); - SnippetEdit3.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SnippetEdit3.setText("Edit Snippet3"); - SnippetEdit3.addActionListener(new java.awt.event.ActionListener() { + MicroPythonRemoteData.setText("GET / HTTP/1.1\\r\\nHost: micropython.org\\r\\n\\r\\n"); + MicroPythonRemoteData.setToolTipText("Data to send"); + + cmdMicroPythonScan.setIcon(new javax.swing.ImageIcon(getClass().getResource("/search again.png"))); // NOI18N + cmdMicroPythonScan.setText("Scan network"); + cmdMicroPythonScan.setToolTipText("Lists all available WiFi Access Points"); + cmdMicroPythonScan.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdMicroPythonScan.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdMicroPythonScan.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdMicroPythonScan.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdMicroPythonScan.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - SnippetEdit3ActionPerformed(evt); + cmdMicroPythonScanActionPerformed(evt); } }); - SnippetEdit4.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SnippetEdit4.setText("Edit Snippet4"); - SnippetEdit4.addActionListener(new java.awt.event.ActionListener() { + MicroPythonCommandsWiFi.setLayer(MicroPythonSSID, javax.swing.JLayeredPane.DEFAULT_LAYER); + MicroPythonCommandsWiFi.setLayer(cmdMicroPythonStaConnect, javax.swing.JLayeredPane.DEFAULT_LAYER); + MicroPythonCommandsWiFi.setLayer(MicroPythonPASS, javax.swing.JLayeredPane.DEFAULT_LAYER); + MicroPythonCommandsWiFi.setLayer(MicroPythonRemoteHost, javax.swing.JLayeredPane.DEFAULT_LAYER); + MicroPythonCommandsWiFi.setLayer(MicroPythonRemotePort, javax.swing.JLayeredPane.DEFAULT_LAYER); + MicroPythonCommandsWiFi.setLayer(cmdMicroPythonSendToHost, javax.swing.JLayeredPane.DEFAULT_LAYER); + MicroPythonCommandsWiFi.setLayer(MicroPythonRemoteData, javax.swing.JLayeredPane.DEFAULT_LAYER); + MicroPythonCommandsWiFi.setLayer(cmdMicroPythonScan, javax.swing.JLayeredPane.DEFAULT_LAYER); + + javax.swing.GroupLayout MicroPythonCommandsWiFiLayout = new javax.swing.GroupLayout(MicroPythonCommandsWiFi); + MicroPythonCommandsWiFi.setLayout(MicroPythonCommandsWiFiLayout); + MicroPythonCommandsWiFiLayout.setHorizontalGroup(MicroPythonCommandsWiFiLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(MicroPythonCommandsWiFiLayout.createSequentialGroup().addContainerGap() + .addGroup(MicroPythonCommandsWiFiLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(cmdMicroPythonStaConnect, javax.swing.GroupLayout.Alignment.TRAILING, + javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, + MicroPythonCommandsWiFiLayout.createSequentialGroup() + .addComponent(MicroPythonSSID, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(MicroPythonPASS, javax.swing.GroupLayout.PREFERRED_SIZE, + 100, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(MicroPythonCommandsWiFiLayout.createSequentialGroup() + .addComponent(MicroPythonRemoteHost, javax.swing.GroupLayout.PREFERRED_SIZE, + 150, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(MicroPythonRemotePort)) + .addComponent(cmdMicroPythonSendToHost, javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(MicroPythonRemoteData, javax.swing.GroupLayout.PREFERRED_SIZE, 0, + Short.MAX_VALUE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cmdMicroPythonScan, javax.swing.GroupLayout.PREFERRED_SIZE, 206, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap(95, Short.MAX_VALUE))); + MicroPythonCommandsWiFiLayout.setVerticalGroup(MicroPythonCommandsWiFiLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(MicroPythonCommandsWiFiLayout.createSequentialGroup().addContainerGap() + .addGroup(MicroPythonCommandsWiFiLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(MicroPythonSSID, javax.swing.GroupLayout.PREFERRED_SIZE, 23, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(MicroPythonPASS, javax.swing.GroupLayout.PREFERRED_SIZE, 23, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(cmdMicroPythonScan, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cmdMicroPythonStaConnect, javax.swing.GroupLayout.PREFERRED_SIZE, 23, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(MicroPythonCommandsWiFiLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(MicroPythonRemoteHost, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(MicroPythonRemotePort, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(MicroPythonRemoteData, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cmdMicroPythonSendToHost).addContainerGap(374, Short.MAX_VALUE))); + + MicroPythonCommandsTab.addTab(" WiFi ", MicroPythonCommandsWiFi); + + MicroPythonCommandsGPIO.setOpaque(true); + + MicroPythonGPIO0_1.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + MicroPythonGPIO0_1.setText("GPIO0 -> 1"); + MicroPythonGPIO0_1.setToolTipText(""); + MicroPythonGPIO0_1.setMaximumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO0_1.setMinimumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO0_1.setPreferredSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO0_1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - SnippetEdit4ActionPerformed(evt); + MicroPythonGPIO0_1ActionPerformed(evt); } }); - SnippetEdit5.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SnippetEdit5.setText("Edit Snippet5"); - SnippetEdit5.addActionListener(new java.awt.event.ActionListener() { + MicroPythonGPIO0_0.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + MicroPythonGPIO0_0.setText("GPIO0 -> 0"); + MicroPythonGPIO0_0.setToolTipText(""); + MicroPythonGPIO0_0.setMaximumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO0_0.setMinimumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO0_0.setPreferredSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO0_0.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - SnippetEdit5ActionPerformed(evt); + MicroPythonGPIO0_0ActionPerformed(evt); } }); - SnippetEdit6.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SnippetEdit6.setText("Edit Snippet6"); - SnippetEdit6.addActionListener(new java.awt.event.ActionListener() { + MicroPythonGPIO2_1.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + MicroPythonGPIO2_1.setText("GPIO2 -> 1"); + MicroPythonGPIO2_1.setToolTipText(""); + MicroPythonGPIO2_1.setMaximumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO2_1.setMinimumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO2_1.setPreferredSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO2_1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - SnippetEdit6ActionPerformed(evt); + MicroPythonGPIO2_1ActionPerformed(evt); } }); - SnippetEdit7.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SnippetEdit7.setText("Edit Snippet7"); - SnippetEdit7.addActionListener(new java.awt.event.ActionListener() { + MicroPythonGPIO2_0.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + MicroPythonGPIO2_0.setText("GPIO2 -> 0"); + MicroPythonGPIO2_0.setToolTipText(""); + MicroPythonGPIO2_0.setMaximumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO2_0.setMinimumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO2_0.setPreferredSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO2_0.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - SnippetEdit7ActionPerformed(evt); + MicroPythonGPIO2_0ActionPerformed(evt); } }); - SnippetEdit8.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SnippetEdit8.setText("Edit Snippet8"); - SnippetEdit8.addActionListener(new java.awt.event.ActionListener() { + MicroPythonGPIO4_1.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + MicroPythonGPIO4_1.setText("GPIO4 -> 1"); + MicroPythonGPIO4_1.setToolTipText(""); + MicroPythonGPIO4_1.setMaximumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO4_1.setMinimumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO4_1.setPreferredSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO4_1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - SnippetEdit8ActionPerformed(evt); + MicroPythonGPIO4_1ActionPerformed(evt); } }); - SnippetEdit9.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SnippetEdit9.setText("Edit Snippet9"); - SnippetEdit9.addActionListener(new java.awt.event.ActionListener() { + MicroPythonGPIO4_0.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + MicroPythonGPIO4_0.setText("GPIO4 -> 0"); + MicroPythonGPIO4_0.setToolTipText(""); + MicroPythonGPIO4_0.setMaximumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO4_0.setMinimumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO4_0.setPreferredSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO4_0.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - SnippetEdit9ActionPerformed(evt); + MicroPythonGPIO4_0ActionPerformed(evt); } }); - SnippetEdit10.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SnippetEdit10.setText("Edit Snippet10"); - SnippetEdit10.addActionListener(new java.awt.event.ActionListener() { + MicroPythonGPIO5_0.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + MicroPythonGPIO5_0.setText("GPIO5 -> 0"); + MicroPythonGPIO5_0.setToolTipText(""); + MicroPythonGPIO5_0.setMaximumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO5_0.setMinimumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO5_0.setPreferredSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO5_0.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - SnippetEdit10ActionPerformed(evt); + MicroPythonGPIO5_0ActionPerformed(evt); } }); - SnippetEdit11.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SnippetEdit11.setText("Edit Snippet11"); - SnippetEdit11.addActionListener(new java.awt.event.ActionListener() { + MicroPythonGPIO5_1.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + MicroPythonGPIO5_1.setText("GPIO5 -> 1"); + MicroPythonGPIO5_1.setToolTipText(""); + MicroPythonGPIO5_1.setMaximumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO5_1.setMinimumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO5_1.setPreferredSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO5_1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - SnippetEdit11ActionPerformed(evt); + MicroPythonGPIO5_1ActionPerformed(evt); } }); - SnippetEdit12.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SnippetEdit12.setText("Edit Snippet12"); - SnippetEdit12.addActionListener(new java.awt.event.ActionListener() { + MicroPythonGPIO9_0.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + MicroPythonGPIO9_0.setText("GPIO9 -> 0"); + MicroPythonGPIO9_0.setToolTipText(""); + MicroPythonGPIO9_0.setMaximumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO9_0.setMinimumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO9_0.setPreferredSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO9_0.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - SnippetEdit12ActionPerformed(evt); + MicroPythonGPIO9_0ActionPerformed(evt); } }); - SnippetEdit13.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SnippetEdit13.setText("Edit Snippet13"); - SnippetEdit13.addActionListener(new java.awt.event.ActionListener() { + MicroPythonGPIO9_1.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + MicroPythonGPIO9_1.setText("GPIO9 -> 1"); + MicroPythonGPIO9_1.setToolTipText(""); + MicroPythonGPIO9_1.setMaximumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO9_1.setMinimumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO9_1.setPreferredSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO9_1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - SnippetEdit13ActionPerformed(evt); + MicroPythonGPIO9_1ActionPerformed(evt); } }); - SnippetEdit14.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SnippetEdit14.setText("Edit Snippet14"); - SnippetEdit14.addActionListener(new java.awt.event.ActionListener() { + MicroPythonGPIO10_0.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + MicroPythonGPIO10_0.setText("GPIO10 -> 0"); + MicroPythonGPIO10_0.setToolTipText(""); + MicroPythonGPIO10_0.setMaximumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO10_0.setMinimumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO10_0.setPreferredSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO10_0.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - SnippetEdit14ActionPerformed(evt); + MicroPythonGPIO10_0ActionPerformed(evt); } }); - SnippetEdit15.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SnippetEdit15.setText("Edit Snippet15"); - SnippetEdit15.addActionListener(new java.awt.event.ActionListener() { + MicroPythonGPIO10_1.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + MicroPythonGPIO10_1.setText("GPIO10 -> 1"); + MicroPythonGPIO10_1.setToolTipText(""); + MicroPythonGPIO10_1.setMaximumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO10_1.setMinimumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO10_1.setPreferredSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO10_1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - SnippetEdit15ActionPerformed(evt); + MicroPythonGPIO10_1ActionPerformed(evt); } }); - javax.swing.GroupLayout LeftSnippetsPaneLayout = new javax.swing.GroupLayout(LeftSnippetsPane); - LeftSnippetsPane.setLayout(LeftSnippetsPaneLayout); - LeftSnippetsPaneLayout.setHorizontalGroup(LeftSnippetsPaneLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(SnippetEdit0, javax.swing.GroupLayout.Alignment.TRAILING, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(SnippetEdit1, javax.swing.GroupLayout.Alignment.TRAILING, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(SnippetEdit2, javax.swing.GroupLayout.Alignment.TRAILING, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(SnippetEdit3, javax.swing.GroupLayout.Alignment.TRAILING, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(SnippetEdit4, javax.swing.GroupLayout.Alignment.TRAILING, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(SnippetEdit5, javax.swing.GroupLayout.Alignment.TRAILING, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(SnippetEdit6, javax.swing.GroupLayout.Alignment.TRAILING, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(SnippetEdit7, javax.swing.GroupLayout.Alignment.TRAILING, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(SnippetEdit8, javax.swing.GroupLayout.Alignment.TRAILING, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(SnippetEdit9, javax.swing.GroupLayout.Alignment.TRAILING, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(SnippetEdit10, javax.swing.GroupLayout.Alignment.TRAILING, - javax.swing.GroupLayout.DEFAULT_SIZE, 129, Short.MAX_VALUE) - .addComponent(SnippetEdit11, javax.swing.GroupLayout.Alignment.TRAILING, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(SnippetEdit12, javax.swing.GroupLayout.Alignment.TRAILING, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(SnippetEdit13, javax.swing.GroupLayout.Alignment.TRAILING, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(SnippetEdit14, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, - Short.MAX_VALUE) - .addComponent(SnippetEdit15, javax.swing.GroupLayout.Alignment.TRAILING, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)); - LeftSnippetsPaneLayout - .setVerticalGroup(LeftSnippetsPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(LeftSnippetsPaneLayout.createSequentialGroup() - .addComponent(SnippetEdit0, javax.swing.GroupLayout.PREFERRED_SIZE, 21, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(SnippetEdit1, javax.swing.GroupLayout.PREFERRED_SIZE, 21, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(SnippetEdit2, javax.swing.GroupLayout.PREFERRED_SIZE, 21, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(SnippetEdit3, javax.swing.GroupLayout.PREFERRED_SIZE, 21, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(SnippetEdit4, javax.swing.GroupLayout.PREFERRED_SIZE, 21, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(SnippetEdit5, javax.swing.GroupLayout.PREFERRED_SIZE, 21, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(SnippetEdit6, javax.swing.GroupLayout.PREFERRED_SIZE, 21, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(SnippetEdit7, javax.swing.GroupLayout.PREFERRED_SIZE, 21, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(SnippetEdit8, javax.swing.GroupLayout.PREFERRED_SIZE, 21, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(SnippetEdit9, javax.swing.GroupLayout.PREFERRED_SIZE, 21, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(SnippetEdit10, javax.swing.GroupLayout.PREFERRED_SIZE, 21, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(SnippetEdit11, javax.swing.GroupLayout.PREFERRED_SIZE, 21, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(SnippetEdit12, javax.swing.GroupLayout.PREFERRED_SIZE, 21, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(SnippetEdit13, javax.swing.GroupLayout.PREFERRED_SIZE, 21, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(SnippetEdit14, javax.swing.GroupLayout.PREFERRED_SIZE, 21, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(SnippetEdit15, - javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(252, Short.MAX_VALUE))); - LeftSnippetsPane.setLayer(SnippetEdit0, javax.swing.JLayeredPane.DEFAULT_LAYER); - LeftSnippetsPane.setLayer(SnippetEdit1, javax.swing.JLayeredPane.DEFAULT_LAYER); - LeftSnippetsPane.setLayer(SnippetEdit2, javax.swing.JLayeredPane.DEFAULT_LAYER); - LeftSnippetsPane.setLayer(SnippetEdit3, javax.swing.JLayeredPane.DEFAULT_LAYER); - LeftSnippetsPane.setLayer(SnippetEdit4, javax.swing.JLayeredPane.DEFAULT_LAYER); - LeftSnippetsPane.setLayer(SnippetEdit5, javax.swing.JLayeredPane.DEFAULT_LAYER); - LeftSnippetsPane.setLayer(SnippetEdit6, javax.swing.JLayeredPane.DEFAULT_LAYER); - LeftSnippetsPane.setLayer(SnippetEdit7, javax.swing.JLayeredPane.DEFAULT_LAYER); - LeftSnippetsPane.setLayer(SnippetEdit8, javax.swing.JLayeredPane.DEFAULT_LAYER); - LeftSnippetsPane.setLayer(SnippetEdit9, javax.swing.JLayeredPane.DEFAULT_LAYER); - LeftSnippetsPane.setLayer(SnippetEdit10, javax.swing.JLayeredPane.DEFAULT_LAYER); - LeftSnippetsPane.setLayer(SnippetEdit11, javax.swing.JLayeredPane.DEFAULT_LAYER); - LeftSnippetsPane.setLayer(SnippetEdit12, javax.swing.JLayeredPane.DEFAULT_LAYER); - LeftSnippetsPane.setLayer(SnippetEdit13, javax.swing.JLayeredPane.DEFAULT_LAYER); - LeftSnippetsPane.setLayer(SnippetEdit14, javax.swing.JLayeredPane.DEFAULT_LAYER); - LeftSnippetsPane.setLayer(SnippetEdit15, javax.swing.JLayeredPane.DEFAULT_LAYER); + MicroPythonGPIO12_0.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + MicroPythonGPIO12_0.setText("GPIO12 -> 0"); + MicroPythonGPIO12_0.setToolTipText(""); + MicroPythonGPIO12_0.setMaximumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO12_0.setMinimumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO12_0.setPreferredSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO12_0.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MicroPythonGPIO12_0ActionPerformed(evt); + } + }); - SnippetTopPane.setOpaque(true); + MicroPythonGPIO12_1.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + MicroPythonGPIO12_1.setText("GPIO12 -> 1"); + MicroPythonGPIO12_1.setToolTipText(""); + MicroPythonGPIO12_1.setMaximumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO12_1.setMinimumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO12_1.setPreferredSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO12_1.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MicroPythonGPIO12_1ActionPerformed(evt); + } + }); - SnippetName.setEnabled(false); + MicroPythonGPIO13_0.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + MicroPythonGPIO13_0.setText("GPIO13 -> 0"); + MicroPythonGPIO13_0.setToolTipText(""); + MicroPythonGPIO13_0.setMaximumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO13_0.setMinimumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO13_0.setPreferredSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO13_0.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MicroPythonGPIO13_0ActionPerformed(evt); + } + }); - SnippetSave.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SnippetSave.setIcon(new javax.swing.ImageIcon(getClass().getResource("/save.png"))); // NOI18N - SnippetSave.setText("Save"); - SnippetSave.setToolTipText("Save snippet to disk"); - SnippetSave.setEnabled(false); - SnippetSave.setMargin(new java.awt.Insets(2, 2, 2, 2)); - SnippetSave.addActionListener(new java.awt.event.ActionListener() { + MicroPythonGPIO13_1.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + MicroPythonGPIO13_1.setText("GPIO13 -> 1"); + MicroPythonGPIO13_1.setToolTipText(""); + MicroPythonGPIO13_1.setMaximumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO13_1.setMinimumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO13_1.setPreferredSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO13_1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - SnippetSaveActionPerformed(evt); + MicroPythonGPIO13_1ActionPerformed(evt); } }); - SnippetRun.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SnippetRun.setIcon(new javax.swing.ImageIcon(getClass().getResource("/server1_start.png"))); // NOI18N - SnippetRun.setText("Run"); - SnippetRun.setToolTipText("Run snippet"); - SnippetRun.setEnabled(false); - SnippetRun.setMargin(new java.awt.Insets(2, 2, 2, 2)); - SnippetRun.addActionListener(new java.awt.event.ActionListener() { + MicroPythonGPIO14_1.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + MicroPythonGPIO14_1.setText("GPIO14 -> 1"); + MicroPythonGPIO14_1.setToolTipText(""); + MicroPythonGPIO14_1.setMaximumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO14_1.setMinimumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO14_1.setPreferredSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO14_1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - SnippetRunActionPerformed(evt); + MicroPythonGPIO14_1ActionPerformed(evt); } }); - SnippetsBusy.setBackground(new java.awt.Color(0, 153, 0)); - SnippetsBusy.setForeground(new java.awt.Color(255, 255, 255)); - SnippetsBusy.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - SnippetsBusy.setIcon(new javax.swing.ImageIcon(getClass().getResource("/led_grey.png"))); // NOI18N - SnippetsBusy.setText("IDLE"); - SnippetsBusy.setOpaque(true); + MicroPythonGPIO15_1.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + MicroPythonGPIO15_1.setText("GPIO15 -> 1"); + MicroPythonGPIO15_1.setToolTipText(""); + MicroPythonGPIO15_1.setMaximumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO15_1.setMinimumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO15_1.setPreferredSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO15_1.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MicroPythonGPIO15_1ActionPerformed(evt); + } + }); - SnippetCancelEdit.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SnippetCancelEdit.setIcon(new javax.swing.ImageIcon(getClass().getResource("/abort.png"))); // NOI18N - SnippetCancelEdit.setText("Cancel"); - SnippetCancelEdit.setToolTipText("Cancel edit and clear editor window"); - SnippetCancelEdit.setEnabled(false); - SnippetCancelEdit.setMargin(new java.awt.Insets(2, 2, 2, 2)); - SnippetCancelEdit.addActionListener(new java.awt.event.ActionListener() { + MicroPythonGPIO16_1.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + MicroPythonGPIO16_1.setText("GPIO16 -> 1"); + MicroPythonGPIO16_1.setToolTipText(""); + MicroPythonGPIO16_1.setMaximumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO16_1.setMinimumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO16_1.setPreferredSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO16_1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - SnippetCancelEditActionPerformed(evt); + MicroPythonGPIO16_1ActionPerformed(evt); } }); - Condensed.setText("Condensed executing"); - Condensed.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - CondensedItemStateChanged(evt); + MicroPythonGPIO14_0.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + MicroPythonGPIO14_0.setText("GPIO14 -> 0"); + MicroPythonGPIO14_0.setToolTipText(""); + MicroPythonGPIO14_0.setMaximumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO14_0.setMinimumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO14_0.setPreferredSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO14_0.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MicroPythonGPIO14_0ActionPerformed(evt); } }); - javax.swing.GroupLayout SnippetTopPaneLayout = new javax.swing.GroupLayout(SnippetTopPane); - SnippetTopPane.setLayout(SnippetTopPaneLayout); - SnippetTopPaneLayout - .setHorizontalGroup(SnippetTopPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(SnippetTopPaneLayout.createSequentialGroup() - .addGroup(SnippetTopPaneLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addGroup(SnippetTopPaneLayout.createSequentialGroup().addComponent(SnippetSave) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(SnippetCancelEdit)) - .addComponent(SnippetName)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(SnippetTopPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(SnippetsBusy, javax.swing.GroupLayout.PREFERRED_SIZE, 70, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addGroup(SnippetTopPaneLayout.createSequentialGroup() - .addComponent(SnippetRun, javax.swing.GroupLayout.PREFERRED_SIZE, 70, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(Condensed))) - .addContainerGap(69, Short.MAX_VALUE))); - SnippetTopPaneLayout.setVerticalGroup(SnippetTopPaneLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(SnippetTopPaneLayout.createSequentialGroup() - .addGroup(SnippetTopPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(SnippetName, javax.swing.GroupLayout.PREFERRED_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(SnippetsBusy)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(SnippetTopPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(SnippetSave).addComponent(SnippetRun).addComponent(SnippetCancelEdit) - .addComponent(Condensed)))); - SnippetTopPane.setLayer(SnippetName, javax.swing.JLayeredPane.DEFAULT_LAYER); - SnippetTopPane.setLayer(SnippetSave, javax.swing.JLayeredPane.DEFAULT_LAYER); - SnippetTopPane.setLayer(SnippetRun, javax.swing.JLayeredPane.DEFAULT_LAYER); - SnippetTopPane.setLayer(SnippetsBusy, javax.swing.JLayeredPane.DEFAULT_LAYER); - SnippetTopPane.setLayer(SnippetCancelEdit, javax.swing.JLayeredPane.DEFAULT_LAYER); - SnippetTopPane.setLayer(Condensed, javax.swing.JLayeredPane.DEFAULT_LAYER); + MicroPythonGPIO15_0.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + MicroPythonGPIO15_0.setText("GPIO15 -> 0"); + MicroPythonGPIO15_0.setToolTipText(""); + MicroPythonGPIO15_0.setMaximumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO15_0.setMinimumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO15_0.setPreferredSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO15_0.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MicroPythonGPIO15_0ActionPerformed(evt); + } + }); - SnippetScrollPane.setBorder(javax.swing.BorderFactory.createEtchedBorder()); - SnippetScrollPane.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED); - SnippetScrollPane.setEnabled(false); - SnippetScrollPane.setLineNumbersEnabled(true); + MicroPythonGPIO16_0.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + MicroPythonGPIO16_0.setText("GPIO16 -> 0"); + MicroPythonGPIO16_0.setToolTipText(""); + MicroPythonGPIO16_0.setMaximumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO16_0.setMinimumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO16_0.setPreferredSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO16_0.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MicroPythonGPIO16_0ActionPerformed(evt); + } + }); - SnippetText.setEditable(false); - SnippetText.setColumns(20); - SnippetText.setRows(5); - SnippetText.setEnabled(false); - SnippetScrollPane.setViewportView(SnippetText); + MicroPythonGPIO0.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + MicroPythonGPIO0.setText("GPIO0 ?"); + MicroPythonGPIO0.setToolTipText(""); + MicroPythonGPIO0.setMaximumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO0.setMinimumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO0.setPreferredSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO0.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MicroPythonGPIO0ActionPerformed(evt); + } + }); - javax.swing.GroupLayout NodeMCUSnippetsLayout = new javax.swing.GroupLayout(NodeMCUSnippets); - NodeMCUSnippets.setLayout(NodeMCUSnippetsLayout); - NodeMCUSnippetsLayout.setHorizontalGroup(NodeMCUSnippetsLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(NodeMCUSnippetsLayout.createSequentialGroup() - .addComponent(LeftSnippetsPane, javax.swing.GroupLayout.PREFERRED_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(NodeMCUSnippetsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(SnippetTopPane).addComponent(SnippetScrollPane, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, - Short.MAX_VALUE)))); - NodeMCUSnippetsLayout.setVerticalGroup(NodeMCUSnippetsLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(NodeMCUSnippetsLayout.createSequentialGroup() - .addComponent(SnippetTopPane, javax.swing.GroupLayout.PREFERRED_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(SnippetScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addComponent(LeftSnippetsPane)); - NodeMCUSnippets.setLayer(LeftSnippetsPane, javax.swing.JLayeredPane.DEFAULT_LAYER); - NodeMCUSnippets.setLayer(SnippetTopPane, javax.swing.JLayeredPane.DEFAULT_LAYER); - NodeMCUSnippets.setLayer(SnippetScrollPane, javax.swing.JLayeredPane.DEFAULT_LAYER); + MicroPythonGPIO2.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + MicroPythonGPIO2.setText("GPIO2 ?"); + MicroPythonGPIO2.setToolTipText(""); + MicroPythonGPIO2.setMaximumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO2.setMinimumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO2.setPreferredSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO2.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MicroPythonGPIO2ActionPerformed(evt); + } + }); - TextTab.addTab("Snippets", NodeMCUSnippets); + MicroPythonGPIO4.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + MicroPythonGPIO4.setText("GPIO4 ?"); + MicroPythonGPIO4.setToolTipText(""); + MicroPythonGPIO4.setMaximumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO4.setMinimumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO4.setPreferredSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO4.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MicroPythonGPIO4ActionPerformed(evt); + } + }); - NodeMCUSettings.setAutoscrolls(true); - NodeMCUSettings.setOpaque(true); + MicroPythonGPIO5.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + MicroPythonGPIO5.setText("GPIO5 ?"); + MicroPythonGPIO5.setToolTipText(""); + MicroPythonGPIO5.setMaximumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO5.setMinimumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO5.setPreferredSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO5.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MicroPythonGPIO5ActionPerformed(evt); + } + }); - OptionsFirmware.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Select firmware", - javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, - new java.awt.Font("Tahoma", 0, 10))); // NOI18N - OptionsFirmware.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + MicroPythonGPIO9.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + MicroPythonGPIO9.setText("GPIO9 ?"); + MicroPythonGPIO9.setToolTipText(""); + MicroPythonGPIO9.setMaximumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO9.setMinimumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO9.setPreferredSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO9.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MicroPythonGPIO9ActionPerformed(evt); + } + }); - Firmware.add(OptionNodeMCU); - OptionNodeMCU.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - OptionNodeMCU.setSelected(true); - OptionNodeMCU.setText("NodeMCU"); - OptionNodeMCU.setToolTipText(""); - OptionNodeMCU.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - OptionNodeMCUItemStateChanged(evt); + MicroPythonGPIO10.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + MicroPythonGPIO10.setText("GPIO10 ?"); + MicroPythonGPIO10.setToolTipText(""); + MicroPythonGPIO10.setMaximumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO10.setMinimumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO10.setPreferredSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO10.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MicroPythonGPIO10ActionPerformed(evt); } }); - Firmware.add(OptionMicroPython); - OptionMicroPython.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - OptionMicroPython.setText("MicroPython"); - OptionMicroPython.setEnabled(false); - OptionMicroPython.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - OptionMicroPythonItemStateChanged(evt); + MicroPythonGPIO12.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + MicroPythonGPIO12.setText("GPIO12 ?"); + MicroPythonGPIO12.setToolTipText(""); + MicroPythonGPIO12.setMaximumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO12.setMinimumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO12.setPreferredSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO12.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MicroPythonGPIO12ActionPerformed(evt); } }); - javax.swing.GroupLayout OptionsFirmwareLayout = new javax.swing.GroupLayout(OptionsFirmware); - OptionsFirmware.setLayout(OptionsFirmwareLayout); - OptionsFirmwareLayout.setHorizontalGroup(OptionsFirmwareLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(OptionNodeMCU, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, - Short.MAX_VALUE) - .addComponent(OptionMicroPython, javax.swing.GroupLayout.DEFAULT_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)); - OptionsFirmwareLayout - .setVerticalGroup(OptionsFirmwareLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(OptionsFirmwareLayout.createSequentialGroup().addComponent(OptionNodeMCU) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(OptionMicroPython).addContainerGap())); - OptionsFirmware.setLayer(OptionNodeMCU, javax.swing.JLayeredPane.DEFAULT_LAYER); - OptionsFirmware.setLayer(OptionMicroPython, javax.swing.JLayeredPane.DEFAULT_LAYER); + MicroPythonGPIO13.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + MicroPythonGPIO13.setText("GPIO13 ?"); + MicroPythonGPIO13.setToolTipText(""); + MicroPythonGPIO13.setMaximumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO13.setMinimumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO13.setPreferredSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO13.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MicroPythonGPIO13ActionPerformed(evt); + } + }); - OptionsOther.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Other", - javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, - new java.awt.Font("Tahoma", 0, 10))); // NOI18N - - FileAutoSaveDisk.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - FileAutoSaveDisk.setSelected(true); - FileAutoSaveDisk.setText("AutoSave file to disk before save to ESP"); - FileAutoSaveDisk.setToolTipText(""); - FileAutoSaveDisk.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - FileAutoSaveDisk.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT); - FileAutoSaveDisk.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - FileAutoSaveDiskItemStateChanged(evt); + MicroPythonGPIO14.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + MicroPythonGPIO14.setText("GPIO14 ?"); + MicroPythonGPIO14.setToolTipText(""); + MicroPythonGPIO14.setMaximumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO14.setMinimumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO14.setPreferredSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO14.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MicroPythonGPIO14ActionPerformed(evt); } }); - FileAutoSaveESP.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - FileAutoSaveESP.setSelected(true); - FileAutoSaveESP.setText("AutoSave file to ESP after save to disk"); - FileAutoSaveESP.setToolTipText(""); - FileAutoSaveESP.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - FileAutoSaveESP.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT); - FileAutoSaveESP.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - FileAutoSaveESPItemStateChanged(evt); + MicroPythonGPIO15.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + MicroPythonGPIO15.setText("GPIO15 ?"); + MicroPythonGPIO15.setToolTipText(""); + MicroPythonGPIO15.setMaximumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO15.setMinimumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO15.setPreferredSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO15.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MicroPythonGPIO15ActionPerformed(evt); } }); - FileAutoRun.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - FileAutoRun.setText("AutoRun file after save to ESP"); - FileAutoRun.setToolTipText(""); - FileAutoRun.setEnabled(false); - FileAutoRun.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - FileAutoRun.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT); - FileAutoRun.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - FileAutoRunItemStateChanged(evt); + MicroPythonGPIO16.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + MicroPythonGPIO16.setText("GPIO16 ?"); + MicroPythonGPIO16.setToolTipText(""); + MicroPythonGPIO16.setMaximumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO16.setMinimumSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO16.setPreferredSize(new java.awt.Dimension(90, 30)); + MicroPythonGPIO16.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MicroPythonGPIO16ActionPerformed(evt); } }); - EditorThemeLabel.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - EditorThemeLabel.setText("Editor color theme"); + MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO0_1, javax.swing.JLayeredPane.DEFAULT_LAYER); + MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO0_0, javax.swing.JLayeredPane.DEFAULT_LAYER); + MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO2_1, javax.swing.JLayeredPane.DEFAULT_LAYER); + MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO2_0, javax.swing.JLayeredPane.DEFAULT_LAYER); + MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO4_1, javax.swing.JLayeredPane.DEFAULT_LAYER); + MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO4_0, javax.swing.JLayeredPane.DEFAULT_LAYER); + MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO5_0, javax.swing.JLayeredPane.DEFAULT_LAYER); + MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO5_1, javax.swing.JLayeredPane.DEFAULT_LAYER); + MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO9_0, javax.swing.JLayeredPane.DEFAULT_LAYER); + MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO9_1, javax.swing.JLayeredPane.DEFAULT_LAYER); + MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO10_0, javax.swing.JLayeredPane.DEFAULT_LAYER); + MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO10_1, javax.swing.JLayeredPane.DEFAULT_LAYER); + MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO12_0, javax.swing.JLayeredPane.DEFAULT_LAYER); + MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO12_1, javax.swing.JLayeredPane.DEFAULT_LAYER); + MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO13_0, javax.swing.JLayeredPane.DEFAULT_LAYER); + MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO13_1, javax.swing.JLayeredPane.DEFAULT_LAYER); + MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO14_1, javax.swing.JLayeredPane.DEFAULT_LAYER); + MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO15_1, javax.swing.JLayeredPane.DEFAULT_LAYER); + MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO16_1, javax.swing.JLayeredPane.DEFAULT_LAYER); + MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO14_0, javax.swing.JLayeredPane.DEFAULT_LAYER); + MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO15_0, javax.swing.JLayeredPane.DEFAULT_LAYER); + MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO16_0, javax.swing.JLayeredPane.DEFAULT_LAYER); + MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO0, javax.swing.JLayeredPane.DEFAULT_LAYER); + MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO2, javax.swing.JLayeredPane.DEFAULT_LAYER); + MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO4, javax.swing.JLayeredPane.DEFAULT_LAYER); + MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO5, javax.swing.JLayeredPane.DEFAULT_LAYER); + MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO9, javax.swing.JLayeredPane.DEFAULT_LAYER); + MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO10, javax.swing.JLayeredPane.DEFAULT_LAYER); + MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO12, javax.swing.JLayeredPane.DEFAULT_LAYER); + MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO13, javax.swing.JLayeredPane.DEFAULT_LAYER); + MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO14, javax.swing.JLayeredPane.DEFAULT_LAYER); + MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO15, javax.swing.JLayeredPane.DEFAULT_LAYER); + MicroPythonCommandsGPIO.setLayer(MicroPythonGPIO16, javax.swing.JLayeredPane.DEFAULT_LAYER); + + javax.swing.GroupLayout MicroPythonCommandsGPIOLayout = new javax.swing.GroupLayout(MicroPythonCommandsGPIO); + MicroPythonCommandsGPIO.setLayout(MicroPythonCommandsGPIOLayout); + MicroPythonCommandsGPIOLayout.setHorizontalGroup( + MicroPythonCommandsGPIOLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(MicroPythonCommandsGPIOLayout.createSequentialGroup() + .addComponent(MicroPythonGPIO0_1, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(MicroPythonGPIO0_0, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(MicroPythonGPIO0, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(MicroPythonCommandsGPIOLayout.createSequentialGroup() + .addComponent(MicroPythonGPIO2_1, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(MicroPythonGPIO2_0, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(MicroPythonGPIO2, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(MicroPythonCommandsGPIOLayout.createSequentialGroup() + .addComponent(MicroPythonGPIO4_1, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(MicroPythonGPIO4_0, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(MicroPythonGPIO4, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(MicroPythonCommandsGPIOLayout.createSequentialGroup() + .addComponent(MicroPythonGPIO5_1, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(MicroPythonGPIO5_0, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(MicroPythonGPIO5, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(MicroPythonCommandsGPIOLayout.createSequentialGroup() + .addComponent(MicroPythonGPIO9_1, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(MicroPythonGPIO9_0, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(MicroPythonGPIO9, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(MicroPythonCommandsGPIOLayout.createSequentialGroup() + .addComponent(MicroPythonGPIO10_1, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(MicroPythonGPIO10_0, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(MicroPythonGPIO10, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(MicroPythonCommandsGPIOLayout.createSequentialGroup() + .addComponent(MicroPythonGPIO12_1, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(MicroPythonGPIO12_0, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(MicroPythonGPIO12, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(MicroPythonCommandsGPIOLayout.createSequentialGroup() + .addComponent(MicroPythonGPIO13_1, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(MicroPythonGPIO13_0, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(MicroPythonGPIO13, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(MicroPythonGPIO14_1, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(MicroPythonGPIO15_1, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent( + MicroPythonGPIO16_1, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGroup(MicroPythonCommandsGPIOLayout.createSequentialGroup().addGap(96, 96, 96) + .addGroup(MicroPythonCommandsGPIOLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(MicroPythonCommandsGPIOLayout.createSequentialGroup() + .addComponent(MicroPythonGPIO16_0, + javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent( + MicroPythonGPIO16, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(MicroPythonCommandsGPIOLayout.createSequentialGroup() + .addComponent(MicroPythonGPIO14_0, + javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent( + MicroPythonGPIO14, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(MicroPythonCommandsGPIOLayout.createSequentialGroup() + .addComponent(MicroPythonGPIO15_0, + javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(MicroPythonGPIO15, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE))))); + MicroPythonCommandsGPIOLayout.setVerticalGroup(MicroPythonCommandsGPIOLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(MicroPythonCommandsGPIOLayout.createSequentialGroup().addGroup( + MicroPythonCommandsGPIOLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(MicroPythonGPIO0_1, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(MicroPythonGPIO0_0, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(MicroPythonGPIO0, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(MicroPythonCommandsGPIOLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(MicroPythonGPIO2_1, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(MicroPythonGPIO2_0, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(MicroPythonGPIO2, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(MicroPythonCommandsGPIOLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(MicroPythonGPIO4_1, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(MicroPythonGPIO4_0, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(MicroPythonGPIO4, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(MicroPythonCommandsGPIOLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(MicroPythonGPIO5_1, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(MicroPythonGPIO5_0, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(MicroPythonGPIO5, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(MicroPythonCommandsGPIOLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(MicroPythonGPIO9_1, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(MicroPythonGPIO9_0, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(MicroPythonGPIO9, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(MicroPythonCommandsGPIOLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(MicroPythonGPIO10_1, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(MicroPythonGPIO10_0, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(MicroPythonGPIO10, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(MicroPythonCommandsGPIOLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(MicroPythonGPIO12_1, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(MicroPythonGPIO12_0, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(MicroPythonGPIO12, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(MicroPythonCommandsGPIOLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(MicroPythonCommandsGPIOLayout.createSequentialGroup() + .addComponent(MicroPythonGPIO13_1, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(MicroPythonGPIO14_1, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(MicroPythonGPIO15_1, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(MicroPythonGPIO16_1, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(MicroPythonCommandsGPIOLayout.createSequentialGroup() + .addComponent(MicroPythonGPIO13_0, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(MicroPythonCommandsGPIOLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(MicroPythonGPIO14_0, + javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(MicroPythonGPIO14, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(MicroPythonCommandsGPIOLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(MicroPythonGPIO15_0, + javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(MicroPythonGPIO15, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(MicroPythonCommandsGPIOLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(MicroPythonGPIO16_0, + javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(MicroPythonGPIO16, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE))) + .addComponent(MicroPythonGPIO13, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE)))); - EditorTheme.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - EditorTheme.setModel(new javax.swing.DefaultComboBoxModel( - new String[] { "Default", "Dark", "Eclipse", "IDEA", "Visual Studio", "Default-alt" })); - EditorTheme.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - EditorThemeActionPerformed(evt); - } - }); + MicroPythonCommandsTab.addTab(" GPIO ", MicroPythonCommandsGPIO); - UseExternalEditor.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - UseExternalEditor.setText("Use external editor"); - UseExternalEditor.setToolTipText("Use external editor. All files will be open in ReadOnly mode"); - UseExternalEditor.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - UseExternalEditor.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT); - UseExternalEditor.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - UseExternalEditorItemStateChanged(evt); - } - }); + NodeMCUCommands.setLayer(CommandsMicroPython, javax.swing.JLayeredPane.DEFAULT_LAYER); + NodeMCUCommands.setLayer(CommandsNodeMCU, javax.swing.JLayeredPane.DEFAULT_LAYER); + NodeMCUCommands.setLayer(MicroPythonCommandsTab, javax.swing.JLayeredPane.DEFAULT_LAYER); - javax.swing.GroupLayout OptionsOtherLayout = new javax.swing.GroupLayout(OptionsOther); - OptionsOther.setLayout(OptionsOtherLayout); - OptionsOtherLayout - .setHorizontalGroup(OptionsOtherLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(FileAutoSaveDisk, javax.swing.GroupLayout.DEFAULT_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(FileAutoSaveESP, javax.swing.GroupLayout.DEFAULT_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE).addGroup( - OptionsOtherLayout.createSequentialGroup().addComponent(EditorThemeLabel) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(EditorTheme, 0, javax.swing.GroupLayout.DEFAULT_SIZE, - Short.MAX_VALUE) - .addContainerGap()) - .addComponent(UseExternalEditor, javax.swing.GroupLayout.DEFAULT_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(FileAutoRun, javax.swing.GroupLayout.DEFAULT_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)); - OptionsOtherLayout - .setVerticalGroup(OptionsOtherLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(OptionsOtherLayout.createSequentialGroup() - .addComponent(FileAutoSaveDisk, javax.swing.GroupLayout.PREFERRED_SIZE, 21, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(1, 1, 1) - .addComponent(FileAutoSaveESP, javax.swing.GroupLayout.PREFERRED_SIZE, 21, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(UseExternalEditor) + javax.swing.GroupLayout NodeMCUCommandsLayout = new javax.swing.GroupLayout(NodeMCUCommands); + NodeMCUCommands.setLayout(NodeMCUCommandsLayout); + NodeMCUCommandsLayout.setHorizontalGroup(NodeMCUCommandsLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(CommandsNodeMCU) + .addGroup(NodeMCUCommandsLayout.createSequentialGroup() + .addComponent(MicroPythonCommandsTab, javax.swing.GroupLayout.PREFERRED_SIZE, 528, + javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(OptionsOtherLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(EditorThemeLabel).addComponent(EditorTheme, - javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, - javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(FileAutoRun) - .addContainerGap(39, Short.MAX_VALUE))); - OptionsOther.setLayer(FileAutoSaveDisk, javax.swing.JLayeredPane.DEFAULT_LAYER); - OptionsOther.setLayer(FileAutoSaveESP, javax.swing.JLayeredPane.DEFAULT_LAYER); - OptionsOther.setLayer(FileAutoRun, javax.swing.JLayeredPane.DEFAULT_LAYER); - OptionsOther.setLayer(EditorThemeLabel, javax.swing.JLayeredPane.DEFAULT_LAYER); - OptionsOther.setLayer(EditorTheme, javax.swing.JLayeredPane.DEFAULT_LAYER); - OptionsOther.setLayer(UseExternalEditor, javax.swing.JLayeredPane.DEFAULT_LAYER); + .addComponent(CommandsMicroPython).addGap(535, 535, 535))); + NodeMCUCommandsLayout.setVerticalGroup(NodeMCUCommandsLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(NodeMCUCommandsLayout.createSequentialGroup().addContainerGap() + .addComponent(CommandsNodeMCU, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGroup(NodeMCUCommandsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(NodeMCUCommandsLayout.createSequentialGroup().addGap(60, 60, 60).addComponent( + CommandsMicroPython, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(NodeMCUCommandsLayout.createSequentialGroup() + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(MicroPythonCommandsTab, javax.swing.GroupLayout.PREFERRED_SIZE, + 548, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))); - OptionsFileSendMode.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Send", - javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, - new java.awt.Font("Tahoma", 0, 10))); // NOI18N - OptionsFileSendMode.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + TextTab.addTab("Commands", NodeMCUCommands); - DelayLabel.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - DelayLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - DelayLabel.setText("Delay after answer = 0 ms"); - DelayLabel.setToolTipText( - "It's not \"line delay\", as you known. It's delay between answer from ESP and send new data"); + NodeMCUSnippets.setOpaque(true); - Delay.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - Delay.setMajorTickSpacing(500); - Delay.setMaximum(1000); - Delay.setMinorTickSpacing(100); - Delay.setPaintLabels(true); - Delay.setPaintTicks(true); - Delay.setSnapToTicks(true); - Delay.setToolTipText("Delay between answer from ESP and send new data"); - Delay.setValue(0); - Delay.setAlignmentY(1.0F); - Delay.addChangeListener(new javax.swing.event.ChangeListener() { - public void stateChanged(javax.swing.event.ChangeEvent evt) { - DelayStateChanged(evt); + LeftSnippetsPane.setOpaque(true); + + SnippetEdit0.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + SnippetEdit0.setText("Edit Snippet0"); + SnippetEdit0.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + SnippetEdit0ActionPerformed(evt); } }); - AnswerDelayLabel.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - AnswerDelayLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - AnswerDelayLabel.setText("Answer timeout = 3 s"); - AnswerDelayLabel.setToolTipText("How many time we waiting answer from ESP8266"); - - AnswerDelay.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - AnswerDelay.setMajorTickSpacing(5); - AnswerDelay.setMaximum(10); - AnswerDelay.setMinorTickSpacing(1); - AnswerDelay.setPaintLabels(true); - AnswerDelay.setPaintTicks(true); - AnswerDelay.setSnapToTicks(true); - AnswerDelay.setToolTipText("Maximum time for waiting firmware answer"); - AnswerDelay.setValue(3); - AnswerDelay.addChangeListener(new javax.swing.event.ChangeListener() { - public void stateChanged(javax.swing.event.ChangeEvent evt) { - AnswerDelayStateChanged(evt); + SnippetEdit1.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + SnippetEdit1.setText("Edit Snippet1"); + SnippetEdit1.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + SnippetEdit1ActionPerformed(evt); } }); - DumbMode.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - DumbMode.setText("\"Dumb Mode\", never check answers"); - DumbMode.setToolTipText(""); - DumbMode.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - DumbModeItemStateChanged(evt); + SnippetEdit2.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + SnippetEdit2.setText("Edit Snippet2"); + SnippetEdit2.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + SnippetEdit2ActionPerformed(evt); } }); - LineDelayLabel.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - LineDelayLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - LineDelayLabel.setText("Line delay for \"Dumb Mode\" = 200 ms"); - LineDelayLabel.setToolTipText("It's usual \"line delay\", as you known."); - - binding = org.jdesktop.beansbinding.Bindings.createAutoBinding( - org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, DumbMode, - org.jdesktop.beansbinding.ELProperty.create("${selected}"), LineDelayLabel, - org.jdesktop.beansbinding.BeanProperty.create("enabled")); - bindingGroup.addBinding(binding); - - LineDelay.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - LineDelay.setMajorTickSpacing(500); - LineDelay.setMaximum(1000); - LineDelay.setMinorTickSpacing(100); - LineDelay.setPaintLabels(true); - LineDelay.setPaintTicks(true); - LineDelay.setSnapToTicks(true); - LineDelay.setToolTipText("Fixed delay between lines"); - LineDelay.setValue(200); - LineDelay.setAlignmentY(1.0F); - - binding = org.jdesktop.beansbinding.Bindings.createAutoBinding( - org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, DumbMode, - org.jdesktop.beansbinding.ELProperty.create("${selected}"), LineDelay, - org.jdesktop.beansbinding.BeanProperty.create("enabled")); - bindingGroup.addBinding(binding); - - LineDelay.addChangeListener(new javax.swing.event.ChangeListener() { - public void stateChanged(javax.swing.event.ChangeEvent evt) { - LineDelayStateChanged(evt); + SnippetEdit3.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + SnippetEdit3.setText("Edit Snippet3"); + SnippetEdit3.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + SnippetEdit3ActionPerformed(evt); } }); - TurboMode.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - TurboMode.setText("\"Turbo Mode\""); - TurboMode.setToolTipText(""); - TurboMode.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - TurboModeItemStateChanged(evt); + SnippetEdit4.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + SnippetEdit4.setText("Edit Snippet4"); + SnippetEdit4.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + SnippetEdit4ActionPerformed(evt); } }); - TurboMode.addActionListener(new java.awt.event.ActionListener() { + + SnippetEdit5.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + SnippetEdit5.setText("Edit Snippet5"); + SnippetEdit5.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - TurboModeActionPerformed(evt); + SnippetEdit5ActionPerformed(evt); } }); - javax.swing.GroupLayout OptionsFileSendModeLayout = new javax.swing.GroupLayout(OptionsFileSendMode); - OptionsFileSendMode.setLayout(OptionsFileSendModeLayout); - OptionsFileSendModeLayout.setHorizontalGroup(OptionsFileSendModeLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(OptionsFileSendModeLayout.createSequentialGroup().addGroup(OptionsFileSendModeLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(OptionsFileSendModeLayout.createSequentialGroup() - .addGroup(OptionsFileSendModeLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(TurboMode, javax.swing.GroupLayout.DEFAULT_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(DelayLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 199, - Short.MAX_VALUE)) - .addGap(0, 0, Short.MAX_VALUE)) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, OptionsFileSendModeLayout - .createSequentialGroup().addGap(0, 0, Short.MAX_VALUE) - .addGroup(OptionsFileSendModeLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(DumbMode, javax.swing.GroupLayout.Alignment.TRAILING, - javax.swing.GroupLayout.PREFERRED_SIZE, 200, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(Delay, javax.swing.GroupLayout.Alignment.TRAILING, - javax.swing.GroupLayout.PREFERRED_SIZE, 200, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(AnswerDelayLabel, javax.swing.GroupLayout.Alignment.TRAILING, - javax.swing.GroupLayout.PREFERRED_SIZE, 200, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(AnswerDelay, javax.swing.GroupLayout.Alignment.TRAILING, - javax.swing.GroupLayout.PREFERRED_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(LineDelayLabel, javax.swing.GroupLayout.Alignment.TRAILING, - javax.swing.GroupLayout.PREFERRED_SIZE, 200, - javax.swing.GroupLayout.PREFERRED_SIZE))) - .addComponent(LineDelay, javax.swing.GroupLayout.DEFAULT_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addContainerGap())); - OptionsFileSendModeLayout - .setVerticalGroup( - OptionsFileSendModeLayout - .createParallelGroup( - javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(OptionsFileSendModeLayout.createSequentialGroup().addComponent(TurboMode) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(DelayLabel) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(Delay, javax.swing.GroupLayout.PREFERRED_SIZE, 39, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(AnswerDelayLabel).addGap(1, 1, 1) - .addComponent(AnswerDelay, javax.swing.GroupLayout.PREFERRED_SIZE, 36, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(DumbMode) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(LineDelayLabel) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(LineDelay, javax.swing.GroupLayout.PREFERRED_SIZE, 39, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))); - OptionsFileSendMode.setLayer(DelayLabel, javax.swing.JLayeredPane.DEFAULT_LAYER); - OptionsFileSendMode.setLayer(Delay, javax.swing.JLayeredPane.DEFAULT_LAYER); - OptionsFileSendMode.setLayer(AnswerDelayLabel, javax.swing.JLayeredPane.DEFAULT_LAYER); - OptionsFileSendMode.setLayer(AnswerDelay, javax.swing.JLayeredPane.DEFAULT_LAYER); - OptionsFileSendMode.setLayer(DumbMode, javax.swing.JLayeredPane.DEFAULT_LAYER); - OptionsFileSendMode.setLayer(LineDelayLabel, javax.swing.JLayeredPane.DEFAULT_LAYER); - OptionsFileSendMode.setLayer(LineDelay, javax.swing.JLayeredPane.DEFAULT_LAYER); - OptionsFileSendMode.setLayer(TurboMode, javax.swing.JLayeredPane.DEFAULT_LAYER); - - jLayeredPane2.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Data scrollback", - javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, - new java.awt.Font("Tahoma", 0, 10))); // NOI18N - - jLabel1.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - jLabel1.setText("Terminal"); - jLabel1.setPreferredSize(new java.awt.Dimension(40, 20)); - - jLabel7.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - jLabel7.setText("Log"); - jLabel7.setPreferredSize(new java.awt.Dimension(17, 23)); - - TerminalMaxSize.setHorizontalAlignment(javax.swing.JTextField.RIGHT); - TerminalMaxSize.setText("100"); - TerminalMaxSize.setToolTipText(""); - TerminalMaxSize.addFocusListener(new java.awt.event.FocusAdapter() { - public void focusLost(java.awt.event.FocusEvent evt) { - TerminalMaxSizeFocusLost(evt); + SnippetEdit6.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + SnippetEdit6.setText("Edit Snippet6"); + SnippetEdit6.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + SnippetEdit6ActionPerformed(evt); } }); - LogMaxSize.setHorizontalAlignment(javax.swing.JTextField.RIGHT); - LogMaxSize.setText("10"); - LogMaxSize.setToolTipText(""); - LogMaxSize.addFocusListener(new java.awt.event.FocusAdapter() { - public void focusLost(java.awt.event.FocusEvent evt) { - LogMaxSizeFocusLost(evt); + SnippetEdit7.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + SnippetEdit7.setText("Edit Snippet7"); + SnippetEdit7.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + SnippetEdit7ActionPerformed(evt); } }); - LogMaxSize.addActionListener(new java.awt.event.ActionListener() { + + SnippetEdit8.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + SnippetEdit8.setText("Edit Snippet8"); + SnippetEdit8.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - LogMaxSizeActionPerformed(evt); + SnippetEdit8ActionPerformed(evt); } }); - jLabel8.setText("kb"); - - jLabel9.setText("kb"); - - javax.swing.GroupLayout jLayeredPane2Layout = new javax.swing.GroupLayout(jLayeredPane2); - jLayeredPane2.setLayout(jLayeredPane2Layout); - jLayeredPane2Layout - .setHorizontalGroup(jLayeredPane2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jLayeredPane2Layout.createSequentialGroup() - .addGroup(jLayeredPane2Layout - .createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) - .addComponent(jLabel7, javax.swing.GroupLayout.Alignment.LEADING, - javax.swing.GroupLayout.DEFAULT_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(jLabel1, javax.swing.GroupLayout.Alignment.LEADING, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, - javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(jLayeredPane2Layout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(TerminalMaxSize, javax.swing.GroupLayout.DEFAULT_SIZE, 59, - Short.MAX_VALUE) - .addComponent(LogMaxSize)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jLayeredPane2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jLabel8).addComponent(jLabel9)) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))); - jLayeredPane2Layout.setVerticalGroup(jLayeredPane2Layout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jLayeredPane2Layout.createSequentialGroup() - .addGroup(jLayeredPane2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 15, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(TerminalMaxSize, javax.swing.GroupLayout.PREFERRED_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel8)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jLayeredPane2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(LogMaxSize, javax.swing.GroupLayout.PREFERRED_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel7, javax.swing.GroupLayout.PREFERRED_SIZE, 20, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel9)))); - jLayeredPane2.setLayer(jLabel1, javax.swing.JLayeredPane.DEFAULT_LAYER); - jLayeredPane2.setLayer(jLabel7, javax.swing.JLayeredPane.DEFAULT_LAYER); - jLayeredPane2.setLayer(TerminalMaxSize, javax.swing.JLayeredPane.DEFAULT_LAYER); - jLayeredPane2.setLayer(LogMaxSize, javax.swing.JLayeredPane.DEFAULT_LAYER); - jLayeredPane2.setLayer(jLabel8, javax.swing.JLayeredPane.DEFAULT_LAYER); - jLayeredPane2.setLayer(jLabel9, javax.swing.JLayeredPane.DEFAULT_LAYER); - - jLayeredPane3.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "SerialPort", - javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, - new java.awt.Font("Tahoma", 0, 10))); // NOI18N + SnippetEdit9.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + SnippetEdit9.setText("Edit Snippet9"); + SnippetEdit9.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + SnippetEdit9ActionPerformed(evt); + } + }); - CustomPortName.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - CustomPortName.setHorizontalAlignment(javax.swing.JTextField.LEFT); - CustomPortName.setText("/dev/AnySerialDevice"); - CustomPortName.setToolTipText(""); - CustomPortName.setEnabled(false); - CustomPortName.setMinimumSize(new java.awt.Dimension(50, 19)); - CustomPortName.addFocusListener(new java.awt.event.FocusAdapter() { - public void focusLost(java.awt.event.FocusEvent evt) { - CustomPortNameFocusLost(evt); + SnippetEdit10.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + SnippetEdit10.setText("Edit Snippet10"); + SnippetEdit10.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + SnippetEdit10ActionPerformed(evt); } }); - UseCustomPortName.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - UseCustomPortName.setText("Use custom serial port name"); - UseCustomPortName.setToolTipText("Use custom serial port name (AutoScan will be disabled)"); - UseCustomPortName.addActionListener(new java.awt.event.ActionListener() { + SnippetEdit11.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + SnippetEdit11.setText("Edit Snippet11"); + SnippetEdit11.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - UseCustomPortNameActionPerformed(evt); + SnippetEdit11ActionPerformed(evt); } }); - jLabel10.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - jLabel10.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - jLabel10.setText("(AutoScan will be disabled)"); - jLabel10.setPreferredSize(new java.awt.Dimension(17, 23)); - - AutodetectFirmware.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - AutodetectFirmware.setText("Autodetect firmware"); - AutodetectFirmware.setToolTipText("Use custom serial port name (AutoScan will be disabled)"); - AutodetectFirmware.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - AutodetectFirmwareItemStateChanged(evt); + SnippetEdit12.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + SnippetEdit12.setText("Edit Snippet12"); + SnippetEdit12.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + SnippetEdit12ActionPerformed(evt); } }); - javax.swing.GroupLayout jLayeredPane3Layout = new javax.swing.GroupLayout(jLayeredPane3); - jLayeredPane3.setLayout(jLayeredPane3Layout); - jLayeredPane3Layout - .setHorizontalGroup(jLayeredPane3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(UseCustomPortName, javax.swing.GroupLayout.DEFAULT_SIZE, 161, Short.MAX_VALUE) - .addComponent(jLabel10, javax.swing.GroupLayout.DEFAULT_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(CustomPortName, javax.swing.GroupLayout.DEFAULT_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE).addComponent(AutodetectFirmware, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, - Short.MAX_VALUE)); - jLayeredPane3Layout - .setVerticalGroup(jLayeredPane3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jLayeredPane3Layout.createSequentialGroup().addComponent(UseCustomPortName) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jLabel10, javax.swing.GroupLayout.PREFERRED_SIZE, 15, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(CustomPortName, javax.swing.GroupLayout.PREFERRED_SIZE, 26, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, - javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(AutodetectFirmware))); - jLayeredPane3.setLayer(CustomPortName, javax.swing.JLayeredPane.DEFAULT_LAYER); - jLayeredPane3.setLayer(UseCustomPortName, javax.swing.JLayeredPane.DEFAULT_LAYER); - jLayeredPane3.setLayer(jLabel10, javax.swing.JLayeredPane.DEFAULT_LAYER); - jLayeredPane3.setLayer(AutodetectFirmware, javax.swing.JLayeredPane.DEFAULT_LAYER); - - javax.swing.GroupLayout NodeMCUSettingsLayout = new javax.swing.GroupLayout(NodeMCUSettings); - NodeMCUSettings.setLayout(NodeMCUSettingsLayout); - NodeMCUSettingsLayout - .setHorizontalGroup( - NodeMCUSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup( - NodeMCUSettingsLayout.createSequentialGroup() - .addGroup(NodeMCUSettingsLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, - false) - .addComponent(OptionsOther).addComponent(OptionsFirmware) - .addComponent(OptionsFileSendMode, - javax.swing.GroupLayout.PREFERRED_SIZE, 0, - Short.MAX_VALUE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(NodeMCUSettingsLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(jLayeredPane2).addComponent(jLayeredPane3)) - .addContainerGap(135, Short.MAX_VALUE))); - NodeMCUSettingsLayout.setVerticalGroup(NodeMCUSettingsLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(NodeMCUSettingsLayout.createSequentialGroup().addGroup(NodeMCUSettingsLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(NodeMCUSettingsLayout.createSequentialGroup() - .addComponent(OptionsFirmware, javax.swing.GroupLayout.PREFERRED_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(OptionsOther, javax.swing.GroupLayout.PREFERRED_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(NodeMCUSettingsLayout.createSequentialGroup() - .addComponent(jLayeredPane3, javax.swing.GroupLayout.PREFERRED_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jLayeredPane2, javax.swing.GroupLayout.PREFERRED_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(OptionsFileSendMode, javax.swing.GroupLayout.PREFERRED_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(0, 173, Short.MAX_VALUE))); - NodeMCUSettings.setLayer(OptionsFirmware, javax.swing.JLayeredPane.DEFAULT_LAYER); - NodeMCUSettings.setLayer(OptionsOther, javax.swing.JLayeredPane.DEFAULT_LAYER); - NodeMCUSettings.setLayer(OptionsFileSendMode, javax.swing.JLayeredPane.DEFAULT_LAYER); - NodeMCUSettings.setLayer(jLayeredPane2, javax.swing.JLayeredPane.DEFAULT_LAYER); - NodeMCUSettings.setLayer(jLayeredPane3, javax.swing.JLayeredPane.DEFAULT_LAYER); - - TextTab.addTab("Settings", new javax.swing.ImageIcon(getClass().getResource("/settings2.png")), NodeMCUSettings, - "Settings for file sending"); // NOI18N - - javax.swing.GroupLayout NodeMCULayout = new javax.swing.GroupLayout(NodeMCU); - NodeMCU.setLayout(NodeMCULayout); - NodeMCULayout.setHorizontalGroup(NodeMCULayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(TextTab, javax.swing.GroupLayout.DEFAULT_SIZE, 533, Short.MAX_VALUE)); - NodeMCULayout.setVerticalGroup(NodeMCULayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(TextTab, javax.swing.GroupLayout.DEFAULT_SIZE, 712, Short.MAX_VALUE)); - - TextTab.getAccessibleContext().setAccessibleName("NewFile"); - - LeftTab.addTab("NodeMCU+MicroPython", NodeMCU); - - ATvXX.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout()); - - BasicATcommandsPane.setBorder(javax.swing.BorderFactory.createTitledBorder( - new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.LOWERED), "Basic AT commands", - javax.swing.border.TitledBorder.CENTER, javax.swing.border.TitledBorder.DEFAULT_POSITION)); - BasicATcommandsPane.setToolTipText("Basic AT commnads"); - BasicATcommandsPane.setMaximumSize(new java.awt.Dimension(445, 50)); - BasicATcommandsPane.setMinimumSize(new java.awt.Dimension(445, 50)); - BasicATcommandsPane.setLayout(new java.awt.FlowLayout()); - - cmdAT.setText("AT"); - cmdAT.setToolTipText("Super simple command \"AT\""); - cmdAT.addActionListener(new java.awt.event.ActionListener() { + SnippetEdit13.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + SnippetEdit13.setText("Edit Snippet13"); + SnippetEdit13.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdATActionPerformed(evt); + SnippetEdit13ActionPerformed(evt); } }); - BasicATcommandsPane.add(cmdAT); - AT_Restart.setText("RST"); - AT_Restart.setToolTipText("Restart"); - AT_Restart.addActionListener(new java.awt.event.ActionListener() { + SnippetEdit14.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + SnippetEdit14.setText("Edit Snippet14"); + SnippetEdit14.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - AT_RestartActionPerformed(evt); + SnippetEdit14ActionPerformed(evt); } }); - BasicATcommandsPane.add(AT_Restart); - AT_GMR.setText("GMR"); - AT_GMR.setToolTipText("Get version info"); - AT_GMR.addActionListener(new java.awt.event.ActionListener() { + SnippetEdit15.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + SnippetEdit15.setText("Edit Snippet15"); + SnippetEdit15.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - AT_GMRActionPerformed(evt); + SnippetEdit15ActionPerformed(evt); } }); - BasicATcommandsPane.add(AT_GMR); - GSLP.setText("GSLP"); - GSLP.setToolTipText("Enter deep-sleep mode on 5sec"); - GSLP.addActionListener(new java.awt.event.ActionListener() { + LeftSnippetsPane.setLayer(SnippetEdit0, javax.swing.JLayeredPane.DEFAULT_LAYER); + LeftSnippetsPane.setLayer(SnippetEdit1, javax.swing.JLayeredPane.DEFAULT_LAYER); + LeftSnippetsPane.setLayer(SnippetEdit2, javax.swing.JLayeredPane.DEFAULT_LAYER); + LeftSnippetsPane.setLayer(SnippetEdit3, javax.swing.JLayeredPane.DEFAULT_LAYER); + LeftSnippetsPane.setLayer(SnippetEdit4, javax.swing.JLayeredPane.DEFAULT_LAYER); + LeftSnippetsPane.setLayer(SnippetEdit5, javax.swing.JLayeredPane.DEFAULT_LAYER); + LeftSnippetsPane.setLayer(SnippetEdit6, javax.swing.JLayeredPane.DEFAULT_LAYER); + LeftSnippetsPane.setLayer(SnippetEdit7, javax.swing.JLayeredPane.DEFAULT_LAYER); + LeftSnippetsPane.setLayer(SnippetEdit8, javax.swing.JLayeredPane.DEFAULT_LAYER); + LeftSnippetsPane.setLayer(SnippetEdit9, javax.swing.JLayeredPane.DEFAULT_LAYER); + LeftSnippetsPane.setLayer(SnippetEdit10, javax.swing.JLayeredPane.DEFAULT_LAYER); + LeftSnippetsPane.setLayer(SnippetEdit11, javax.swing.JLayeredPane.DEFAULT_LAYER); + LeftSnippetsPane.setLayer(SnippetEdit12, javax.swing.JLayeredPane.DEFAULT_LAYER); + LeftSnippetsPane.setLayer(SnippetEdit13, javax.swing.JLayeredPane.DEFAULT_LAYER); + LeftSnippetsPane.setLayer(SnippetEdit14, javax.swing.JLayeredPane.DEFAULT_LAYER); + LeftSnippetsPane.setLayer(SnippetEdit15, javax.swing.JLayeredPane.DEFAULT_LAYER); + + javax.swing.GroupLayout LeftSnippetsPaneLayout = new javax.swing.GroupLayout(LeftSnippetsPane); + LeftSnippetsPane.setLayout(LeftSnippetsPaneLayout); + LeftSnippetsPaneLayout.setHorizontalGroup(LeftSnippetsPaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(SnippetEdit0, javax.swing.GroupLayout.Alignment.TRAILING, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(SnippetEdit1, javax.swing.GroupLayout.Alignment.TRAILING, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(SnippetEdit2, javax.swing.GroupLayout.Alignment.TRAILING, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(SnippetEdit3, javax.swing.GroupLayout.Alignment.TRAILING, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(SnippetEdit4, javax.swing.GroupLayout.Alignment.TRAILING, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(SnippetEdit5, javax.swing.GroupLayout.Alignment.TRAILING, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(SnippetEdit6, javax.swing.GroupLayout.Alignment.TRAILING, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(SnippetEdit7, javax.swing.GroupLayout.Alignment.TRAILING, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(SnippetEdit8, javax.swing.GroupLayout.Alignment.TRAILING, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(SnippetEdit9, javax.swing.GroupLayout.Alignment.TRAILING, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(SnippetEdit10, javax.swing.GroupLayout.Alignment.TRAILING, + javax.swing.GroupLayout.DEFAULT_SIZE, 129, Short.MAX_VALUE) + .addComponent(SnippetEdit11, javax.swing.GroupLayout.Alignment.TRAILING, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(SnippetEdit12, javax.swing.GroupLayout.Alignment.TRAILING, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(SnippetEdit13, javax.swing.GroupLayout.Alignment.TRAILING, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(SnippetEdit14, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, + Short.MAX_VALUE) + .addComponent(SnippetEdit15, javax.swing.GroupLayout.Alignment.TRAILING, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)); + LeftSnippetsPaneLayout + .setVerticalGroup( + LeftSnippetsPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(LeftSnippetsPaneLayout.createSequentialGroup() + .addComponent(SnippetEdit0, javax.swing.GroupLayout.PREFERRED_SIZE, 21, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(SnippetEdit1, javax.swing.GroupLayout.PREFERRED_SIZE, 21, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(SnippetEdit2, javax.swing.GroupLayout.PREFERRED_SIZE, 21, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(SnippetEdit3, javax.swing.GroupLayout.PREFERRED_SIZE, 21, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(SnippetEdit4, javax.swing.GroupLayout.PREFERRED_SIZE, 21, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(SnippetEdit5, javax.swing.GroupLayout.PREFERRED_SIZE, 21, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(SnippetEdit6, javax.swing.GroupLayout.PREFERRED_SIZE, 21, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(SnippetEdit7, javax.swing.GroupLayout.PREFERRED_SIZE, 21, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(SnippetEdit8, javax.swing.GroupLayout.PREFERRED_SIZE, 21, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(SnippetEdit9, javax.swing.GroupLayout.PREFERRED_SIZE, 21, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(SnippetEdit10, javax.swing.GroupLayout.PREFERRED_SIZE, 21, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(SnippetEdit11, javax.swing.GroupLayout.PREFERRED_SIZE, 21, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(SnippetEdit12, javax.swing.GroupLayout.PREFERRED_SIZE, 21, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(SnippetEdit13, javax.swing.GroupLayout.PREFERRED_SIZE, 21, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(SnippetEdit14, javax.swing.GroupLayout.PREFERRED_SIZE, 21, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(SnippetEdit15, javax.swing.GroupLayout.PREFERRED_SIZE, 21, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap(252, Short.MAX_VALUE))); + + SnippetTopPane.setOpaque(true); + + SnippetName.setEnabled(false); + + SnippetSave.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + SnippetSave.setIcon(new javax.swing.ImageIcon(getClass().getResource("/save.png"))); // NOI18N + SnippetSave.setText("Save"); + SnippetSave.setToolTipText("Save snippet to disk"); + SnippetSave.setEnabled(false); + SnippetSave.setMargin(new java.awt.Insets(2, 2, 2, 2)); + SnippetSave.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - GSLPActionPerformed(evt); + SnippetSaveActionPerformed(evt); } }); - BasicATcommandsPane.add(GSLP); - ATE0.setText("ATE0"); - ATE0.setToolTipText("Echo OFF"); - ATE0.addActionListener(new java.awt.event.ActionListener() { + SnippetRun.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + SnippetRun.setIcon(new javax.swing.ImageIcon(getClass().getResource("/server1_start.png"))); // NOI18N + SnippetRun.setText("Run"); + SnippetRun.setToolTipText("Run snippet"); + SnippetRun.setEnabled(false); + SnippetRun.setMargin(new java.awt.Insets(2, 2, 2, 2)); + SnippetRun.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - ATE0ActionPerformed(evt); + SnippetRunActionPerformed(evt); } }); - BasicATcommandsPane.add(ATE0); - ATE1.setText("ATE1"); - ATE1.setToolTipText("Echo ON"); - ATE1.addActionListener(new java.awt.event.ActionListener() { + SnippetsBusy.setBackground(new java.awt.Color(0, 153, 0)); + SnippetsBusy.setForeground(new java.awt.Color(255, 255, 255)); + SnippetsBusy.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + SnippetsBusy.setIcon(new javax.swing.ImageIcon(getClass().getResource("/led_grey.png"))); // NOI18N + SnippetsBusy.setText("IDLE"); + SnippetsBusy.setOpaque(true); + + SnippetCancelEdit.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + SnippetCancelEdit.setIcon(new javax.swing.ImageIcon(getClass().getResource("/abort.png"))); // NOI18N + SnippetCancelEdit.setText("Cancel"); + SnippetCancelEdit.setToolTipText("Cancel edit and clear editor window"); + SnippetCancelEdit.setEnabled(false); + SnippetCancelEdit.setMargin(new java.awt.Insets(2, 2, 2, 2)); + SnippetCancelEdit.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - ATE1ActionPerformed(evt); + SnippetCancelEditActionPerformed(evt); } }); - BasicATcommandsPane.add(ATE1); - UPDATE.setText("UPD"); - UPDATE.setToolTipText("Send command \"AT+UPDATE\" for firmware Cloud update "); - UPDATE.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - UPDATEActionPerformed(evt); + Condensed.setText("Condensed executing"); + Condensed.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + CondensedItemStateChanged(evt); } }); - BasicATcommandsPane.add(UPDATE); - ATvXX.add(BasicATcommandsPane, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 450, 70)); - ATvXX.setLayer(BasicATcommandsPane, javax.swing.JLayeredPane.PALETTE_LAYER); + SnippetTopPane.setLayer(SnippetName, javax.swing.JLayeredPane.DEFAULT_LAYER); + SnippetTopPane.setLayer(SnippetSave, javax.swing.JLayeredPane.DEFAULT_LAYER); + SnippetTopPane.setLayer(SnippetRun, javax.swing.JLayeredPane.DEFAULT_LAYER); + SnippetTopPane.setLayer(SnippetsBusy, javax.swing.JLayeredPane.DEFAULT_LAYER); + SnippetTopPane.setLayer(SnippetCancelEdit, javax.swing.JLayeredPane.DEFAULT_LAYER); + SnippetTopPane.setLayer(Condensed, javax.swing.JLayeredPane.DEFAULT_LAYER); - TabAT.setTabLayoutPolicy(javax.swing.JTabbedPane.SCROLL_TAB_LAYOUT); - TabAT.setToolTipText("ESP8266 AT commands v0.20"); - TabAT.setAlignmentX(0.0F); - TabAT.setAlignmentY(0.0F); - TabAT.setFocusable(false); - TabAT.setOpaque(true); + javax.swing.GroupLayout SnippetTopPaneLayout = new javax.swing.GroupLayout(SnippetTopPane); + SnippetTopPane.setLayout(SnippetTopPaneLayout); + SnippetTopPaneLayout + .setHorizontalGroup(SnippetTopPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(SnippetTopPaneLayout.createSequentialGroup() + .addGroup(SnippetTopPaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addGroup(SnippetTopPaneLayout.createSequentialGroup().addComponent(SnippetSave) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(SnippetCancelEdit)) + .addComponent(SnippetName)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(SnippetTopPaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(SnippetsBusy, javax.swing.GroupLayout.PREFERRED_SIZE, 70, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addGroup(SnippetTopPaneLayout.createSequentialGroup() + .addComponent(SnippetRun, javax.swing.GroupLayout.PREFERRED_SIZE, 70, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(Condensed))) + .addContainerGap(69, Short.MAX_VALUE))); + SnippetTopPaneLayout.setVerticalGroup(SnippetTopPaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(SnippetTopPaneLayout.createSequentialGroup() + .addGroup(SnippetTopPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(SnippetName, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(SnippetsBusy)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(SnippetTopPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(SnippetSave).addComponent(SnippetRun).addComponent(SnippetCancelEdit) + .addComponent(Condensed)))); - binding = org.jdesktop.beansbinding.Bindings.createAutoBinding( - org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, AT_Station, - org.jdesktop.beansbinding.ELProperty.create("${border}"), TabAT, - org.jdesktop.beansbinding.BeanProperty.create("border")); - bindingGroup.addBinding(binding); + SnippetScrollPane.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + SnippetScrollPane.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED); + SnippetScrollPane.setEnabled(false); + SnippetScrollPane.setLineNumbersEnabled(true); - AT_Station.setToolTipText("WiFi commands"); - AT_Station.setAlignmentX(0.0F); - AT_Station.setAlignmentY(0.0F); - AT_Station.setAutoscrolls(true); - AT_Station.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - AT_Station.setInheritsPopupMenu(true); - AT_Station.setMinimumSize(new java.awt.Dimension(0, 130)); - AT_Station.setName(""); // NOI18N - AT_Station.setOpaque(false); - AT_Station.setPreferredSize(new java.awt.Dimension(457, 291)); - AT_Station.addFocusListener(new java.awt.event.FocusAdapter() { - public void focusGained(java.awt.event.FocusEvent evt) { - AT_StationFocusGained(evt); - } - }); - AT_Station.addComponentListener(new java.awt.event.ComponentAdapter() { - public void componentShown(java.awt.event.ComponentEvent evt) { - AT_StationComponentShown(evt); - } - }); + SnippetText.setEditable(false); + SnippetText.setColumns(20); + SnippetText.setRows(5); + SnippetText.setEnabled(false); + SnippetScrollPane.setViewportView(SnippetText); - TopWiFiStaFiller.setOpaque(true); + NodeMCUSnippets.setLayer(LeftSnippetsPane, javax.swing.JLayeredPane.DEFAULT_LAYER); + NodeMCUSnippets.setLayer(SnippetTopPane, javax.swing.JLayeredPane.DEFAULT_LAYER); + NodeMCUSnippets.setLayer(SnippetScrollPane, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFiStationPane.setBorder(javax.swing.BorderFactory - .createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "WiFi Station")); - WiFiStationPane.setAlignmentX(0.0F); - WiFiStationPane.setAlignmentY(0.0F); - WiFiStationPane.setMaximumSize(new java.awt.Dimension(463, 291)); - WiFiStationPane.setMinimumSize(new java.awt.Dimension(463, 291)); - WiFiStationPane.setName(""); // NOI18N - WiFiStationPane.setOpaque(true); + javax.swing.GroupLayout NodeMCUSnippetsLayout = new javax.swing.GroupLayout(NodeMCUSnippets); + NodeMCUSnippets.setLayout(NodeMCUSnippetsLayout); + NodeMCUSnippetsLayout.setHorizontalGroup(NodeMCUSnippetsLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(NodeMCUSnippetsLayout.createSequentialGroup() + .addComponent(LeftSnippetsPane, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(NodeMCUSnippetsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(SnippetTopPane).addComponent(SnippetScrollPane, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, + Short.MAX_VALUE)))); + NodeMCUSnippetsLayout.setVerticalGroup(NodeMCUSnippetsLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(NodeMCUSnippetsLayout.createSequentialGroup() + .addComponent(SnippetTopPane, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(SnippetScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addComponent(LeftSnippetsPane)); - cmdGetCWJAP.setFont(cmdGetCWJAP.getFont().deriveFont((float) 12)); - cmdGetCWJAP.setIcon(new javax.swing.ImageIcon(getClass().getResource("/information.png"))); // NOI18N - cmdGetCWJAP.setText("CWJAP? - Connection info"); - cmdGetCWJAP.setToolTipText("Query AP’s info which is connect by ESP8266"); - cmdGetCWJAP.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdGetCWJAP.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdGetCWJAP.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdGetCWJAP.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdGetCWJAP.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdGetCWJAPActionPerformed(evt); - } - }); + TextTab.addTab("Snippets", NodeMCUSnippets); - cmdSetCWJAP.setFont(cmdSetCWJAP.getFont().deriveFont((float) 12)); - cmdSetCWJAP.setIcon(new javax.swing.ImageIcon(getClass().getResource("/connect3.png"))); // NOI18N - cmdSetCWJAP.setText("CWJAP Connect to AP"); - cmdSetCWJAP.setToolTipText("Connect to WiFi Access Point"); - cmdSetCWJAP.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdSetCWJAP.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdSetCWJAP.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdSetCWJAP.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdSetCWJAP.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSetCWJAPActionPerformed(evt); - } - }); + NodeMCUSettings.setAutoscrolls(true); + NodeMCUSettings.setOpaque(true); - SSID.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SSID.setText("SSID"); - SSID.setToolTipText("Enter WiFi SSID"); - SSID.setMaximumSize(new java.awt.Dimension(100, 23)); - SSID.setMinimumSize(new java.awt.Dimension(100, 23)); - SSID.setPreferredSize(new java.awt.Dimension(100, 23)); - SSID.addFocusListener(new java.awt.event.FocusAdapter() { - public void focusGained(java.awt.event.FocusEvent evt) { - SSIDFocusGained(evt); + OptionsFirmware.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Select firmware", + javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, + new java.awt.Font("Tahoma", 0, 10))); // NOI18N + OptionsFirmware.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + + Firmware.add(OptionNodeMCU); + OptionNodeMCU.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + OptionNodeMCU.setSelected(true); + OptionNodeMCU.setText("NodeMCU"); + OptionNodeMCU.setToolTipText(""); + OptionNodeMCU.addChangeListener(new javax.swing.event.ChangeListener() { + public void stateChanged(javax.swing.event.ChangeEvent evt) { + OptionNodeMCUStateChanged(evt); } }); - SSID.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - SSIDActionPerformed(evt); + OptionNodeMCU.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + OptionNodeMCUItemStateChanged(evt); } }); - PASS.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - PASS.setText("password"); - PASS.setToolTipText("Enter WiFi password"); - PASS.setMaximumSize(new java.awt.Dimension(104, 23)); - PASS.setMinimumSize(new java.awt.Dimension(104, 23)); - PASS.setPreferredSize(new java.awt.Dimension(104, 23)); - PASS.addFocusListener(new java.awt.event.FocusAdapter() { - public void focusGained(java.awt.event.FocusEvent evt) { - PASSFocusGained(evt); + Firmware.add(OptionMicroPython); + OptionMicroPython.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + OptionMicroPython.setText("MicroPython"); + OptionMicroPython.addChangeListener(new javax.swing.event.ChangeListener() { + public void stateChanged(javax.swing.event.ChangeEvent evt) { + OptionMicroPythonStateChanged(evt); } }); - PASS.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - PASSActionPerformed(evt); + OptionMicroPython.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + OptionMicroPythonItemStateChanged(evt); } }); - cmdSetCWQAP.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdSetCWQAP.setIcon(new javax.swing.ImageIcon(getClass().getResource("/disconnect3.png"))); // NOI18N - cmdSetCWQAP.setText("CWQAP - Disconnect from AP"); - cmdSetCWQAP.setToolTipText("Disconnect from WiFi Access Point"); - cmdSetCWQAP.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdSetCWQAP.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdSetCWQAP.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdSetCWQAP.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdSetCWQAP.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSetCWQAPActionPerformed(evt); + OptionsFirmware.setLayer(OptionNodeMCU, javax.swing.JLayeredPane.DEFAULT_LAYER); + OptionsFirmware.setLayer(OptionMicroPython, javax.swing.JLayeredPane.DEFAULT_LAYER); + + javax.swing.GroupLayout OptionsFirmwareLayout = new javax.swing.GroupLayout(OptionsFirmware); + OptionsFirmware.setLayout(OptionsFirmwareLayout); + OptionsFirmwareLayout.setHorizontalGroup(OptionsFirmwareLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(OptionNodeMCU, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, + Short.MAX_VALUE) + .addComponent(OptionMicroPython, javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)); + OptionsFirmwareLayout + .setVerticalGroup(OptionsFirmwareLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(OptionsFirmwareLayout.createSequentialGroup().addComponent(OptionNodeMCU) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(OptionMicroPython).addContainerGap())); + + OptionsOther.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Other", + javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, + new java.awt.Font("Tahoma", 0, 10))); // NOI18N + + FileAutoSaveDisk.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + FileAutoSaveDisk.setSelected(true); + FileAutoSaveDisk.setText("AutoSave file to disk before save to ESP"); + FileAutoSaveDisk.setToolTipText(""); + FileAutoSaveDisk.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + FileAutoSaveDisk.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT); + FileAutoSaveDisk.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + FileAutoSaveDiskItemStateChanged(evt); } }); - cmdGetCIPSTAMAC.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdGetCIPSTAMAC.setIcon(new javax.swing.ImageIcon(getClass().getResource("/get.png"))); // NOI18N - cmdGetCIPSTAMAC.setText("CIPSTAMAC? Get MAC"); - cmdGetCIPSTAMAC.setToolTipText("Get Station MAC address"); - cmdGetCIPSTAMAC.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdGetCIPSTAMAC.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdGetCIPSTAMAC.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdGetCIPSTAMAC.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdGetCIPSTAMAC.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdGetCIPSTAMACActionPerformed(evt); + FileAutoSaveESP.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + FileAutoSaveESP.setSelected(true); + FileAutoSaveESP.setText("AutoSave file to ESP after save to disk"); + FileAutoSaveESP.setToolTipText(""); + FileAutoSaveESP.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + FileAutoSaveESP.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT); + FileAutoSaveESP.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + FileAutoSaveESPItemStateChanged(evt); } }); - cmdSetCIPSTAMAC.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdSetCIPSTAMAC.setIcon(new javax.swing.ImageIcon(getClass().getResource("/set.png"))); // NOI18N - cmdSetCIPSTAMAC.setText("CIPSTAMAC= Set MAC Station"); - cmdSetCIPSTAMAC.setToolTipText("Set Station MAC address"); - cmdSetCIPSTAMAC.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdSetCIPSTAMAC.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdSetCIPSTAMAC.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdSetCIPSTAMAC.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdSetCIPSTAMAC.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSetCIPSTAMACActionPerformed(evt); + FileAutoRun.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + FileAutoRun.setText("AutoRun file after save to ESP"); + FileAutoRun.setToolTipText(""); + FileAutoRun.setEnabled(false); + FileAutoRun.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + FileAutoRun.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT); + FileAutoRun.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + FileAutoRunItemStateChanged(evt); } }); - try { - MAC.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory( - new javax.swing.text.MaskFormatter("AA:AA:AA:AA:AA:AA"))); - } catch (java.text.ParseException ex) { - ex.printStackTrace(); - } - MAC.setText("FF:FF:FF:FF:FF:FF"); - MAC.setToolTipText("Station MAC address"); - MAC.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - MAC.setMaximumSize(new java.awt.Dimension(210, 23)); - MAC.setMinimumSize(new java.awt.Dimension(210, 23)); - MAC.setPreferredSize(new java.awt.Dimension(210, 23)); + EditorThemeLabel.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + EditorThemeLabel.setText("Editor color theme"); - cmdGetCIPSTA.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdGetCIPSTA.setIcon(new javax.swing.ImageIcon(getClass().getResource("/get.png"))); // NOI18N - cmdGetCIPSTA.setText("CIPSTA? Get Station IP"); - cmdGetCIPSTA.setToolTipText("Get Station IP address"); - cmdGetCIPSTA.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdGetCIPSTA.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdGetCIPSTA.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdGetCIPSTA.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdGetCIPSTA.addActionListener(new java.awt.event.ActionListener() { + EditorTheme.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + EditorTheme.setModel(new javax.swing.DefaultComboBoxModel( + new String[] { "Default", "Dark", "Eclipse", "IDEA", "Visual Studio", "Default-alt" })); + EditorTheme.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdGetCIPSTAActionPerformed(evt); + EditorThemeActionPerformed(evt); } }); - cmdSetCIPSTA.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdSetCIPSTA.setIcon(new javax.swing.ImageIcon(getClass().getResource("/set.png"))); // NOI18N - cmdSetCIPSTA.setText("CIPSTA= Set Station IP"); - cmdSetCIPSTA.setToolTipText("Set Station IP address"); - cmdSetCIPSTA.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdSetCIPSTA.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdSetCIPSTA.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdSetCIPSTA.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdSetCIPSTA.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSetCIPSTAActionPerformed(evt); + UseExternalEditor.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + UseExternalEditor.setText("Use external editor"); + UseExternalEditor.setToolTipText("Use external editor. All files will be open in ReadOnly mode"); + UseExternalEditor.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + UseExternalEditor.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT); + UseExternalEditor.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + UseExternalEditorItemStateChanged(evt); } }); - StationIP.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - StationIP.setText("192.168.1.50"); - StationIP.setMaximumSize(new java.awt.Dimension(210, 23)); - StationIP.setMinimumSize(new java.awt.Dimension(210, 23)); - StationIP.setPreferredSize(new java.awt.Dimension(210, 23)); + OptionsOther.setLayer(FileAutoSaveDisk, javax.swing.JLayeredPane.DEFAULT_LAYER); + OptionsOther.setLayer(FileAutoSaveESP, javax.swing.JLayeredPane.DEFAULT_LAYER); + OptionsOther.setLayer(FileAutoRun, javax.swing.JLayeredPane.DEFAULT_LAYER); + OptionsOther.setLayer(EditorThemeLabel, javax.swing.JLayeredPane.DEFAULT_LAYER); + OptionsOther.setLayer(EditorTheme, javax.swing.JLayeredPane.DEFAULT_LAYER); + OptionsOther.setLayer(UseExternalEditor, javax.swing.JLayeredPane.DEFAULT_LAYER); - javax.swing.GroupLayout WiFiStationPaneLayout = new javax.swing.GroupLayout(WiFiStationPane); - WiFiStationPane.setLayout(WiFiStationPaneLayout); - WiFiStationPaneLayout.setHorizontalGroup(WiFiStationPaneLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(WiFiStationPaneLayout.createSequentialGroup().addContainerGap().addGroup(WiFiStationPaneLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(MAC, javax.swing.GroupLayout.PREFERRED_SIZE, 210, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdSetCIPSTAMAC, javax.swing.GroupLayout.PREFERRED_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGroup(WiFiStationPaneLayout.createSequentialGroup().addGroup(WiFiStationPaneLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(cmdGetCWJAP, javax.swing.GroupLayout.DEFAULT_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdSetCWQAP, javax.swing.GroupLayout.PREFERRED_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGroup(WiFiStationPaneLayout.createSequentialGroup().addGap(1, 1, 1).addComponent( - cmdGetCIPSTAMAC, javax.swing.GroupLayout.PREFERRED_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(WiFiStationPaneLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addGroup(WiFiStationPaneLayout.createSequentialGroup() - .addComponent(SSID, javax.swing.GroupLayout.PREFERRED_SIZE, 100, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(PASS, javax.swing.GroupLayout.PREFERRED_SIZE, 1, - Short.MAX_VALUE)) - .addComponent(cmdSetCWJAP, javax.swing.GroupLayout.PREFERRED_SIZE, 201, - javax.swing.GroupLayout.PREFERRED_SIZE))) - .addComponent(cmdGetCIPSTA, javax.swing.GroupLayout.PREFERRED_SIZE, 210, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(StationIP, javax.swing.GroupLayout.PREFERRED_SIZE, 210, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdSetCIPSTA, javax.swing.GroupLayout.PREFERRED_SIZE, 210, - javax.swing.GroupLayout.PREFERRED_SIZE)) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))); - WiFiStationPaneLayout.setVerticalGroup(WiFiStationPaneLayout + javax.swing.GroupLayout OptionsOtherLayout = new javax.swing.GroupLayout(OptionsOther); + OptionsOther.setLayout(OptionsOtherLayout); + OptionsOtherLayout + .setHorizontalGroup( + OptionsOtherLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(FileAutoSaveDisk, javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(FileAutoSaveESP, javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(OptionsOtherLayout.createSequentialGroup().addComponent(EditorThemeLabel) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(EditorTheme, 0, javax.swing.GroupLayout.DEFAULT_SIZE, + Short.MAX_VALUE) + .addContainerGap()) + .addComponent(UseExternalEditor, javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(FileAutoRun, javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)); + OptionsOtherLayout.setVerticalGroup(OptionsOtherLayout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(WiFiStationPaneLayout.createSequentialGroup().addContainerGap() - .addGroup(WiFiStationPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(cmdGetCWJAP, javax.swing.GroupLayout.PREFERRED_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(SSID, javax.swing.GroupLayout.PREFERRED_SIZE, 23, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(PASS, javax.swing.GroupLayout.PREFERRED_SIZE, 23, - javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(WiFiStationPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(cmdSetCWQAP, javax.swing.GroupLayout.PREFERRED_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdSetCWJAP, javax.swing.GroupLayout.PREFERRED_SIZE, 23, - javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cmdGetCIPSTAMAC, javax.swing.GroupLayout.PREFERRED_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(MAC, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, + .addGroup(OptionsOtherLayout.createSequentialGroup() + .addComponent(FileAutoSaveDisk, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cmdSetCIPSTAMAC, javax.swing.GroupLayout.PREFERRED_SIZE, 23, + .addGap(1, 1, 1) + .addComponent(FileAutoSaveESP, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cmdGetCIPSTA, javax.swing.GroupLayout.PREFERRED_SIZE, 23, - javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(UseExternalEditor) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(StationIP, javax.swing.GroupLayout.PREFERRED_SIZE, 23, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(cmdSetCIPSTA, - javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(31, Short.MAX_VALUE))); - - WiFiStationPaneLayout.linkSize(javax.swing.SwingConstants.VERTICAL, - new java.awt.Component[] { cmdGetCIPSTA, cmdGetCWJAP, cmdSetCIPSTA, cmdSetCWQAP }); + .addGroup(OptionsOtherLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(EditorThemeLabel).addComponent(EditorTheme, + javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(FileAutoRun) + .addContainerGap(39, Short.MAX_VALUE))); - WiFiStationPaneLayout.linkSize(javax.swing.SwingConstants.VERTICAL, - new java.awt.Component[] { MAC, StationIP, cmdGetCIPSTAMAC, cmdSetCIPSTAMAC, cmdSetCWJAP }); + OptionsFileSendMode.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Send", + javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, + new java.awt.Font("Tahoma", 0, 10))); // NOI18N + OptionsFileSendMode.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - WiFiStationPane.setLayer(cmdGetCWJAP, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFiStationPane.setLayer(cmdSetCWJAP, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFiStationPane.setLayer(SSID, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFiStationPane.setLayer(PASS, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFiStationPane.setLayer(cmdSetCWQAP, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFiStationPane.setLayer(cmdGetCIPSTAMAC, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFiStationPane.setLayer(cmdSetCIPSTAMAC, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFiStationPane.setLayer(MAC, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFiStationPane.setLayer(cmdGetCIPSTA, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFiStationPane.setLayer(cmdSetCIPSTA, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFiStationPane.setLayer(StationIP, javax.swing.JLayeredPane.DEFAULT_LAYER); + DelayLabel.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + DelayLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + DelayLabel.setText("Delay after answer = 0 ms"); + DelayLabel.setToolTipText( + "It's not \"line delay\", as you known. It's delay between answer from ESP and send new data"); - javax.swing.GroupLayout AT_StationLayout = new javax.swing.GroupLayout(AT_Station); - AT_Station.setLayout(AT_StationLayout); - AT_StationLayout - .setHorizontalGroup(AT_StationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(TopWiFiStaFiller, javax.swing.GroupLayout.DEFAULT_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(WiFiStationPane, javax.swing.GroupLayout.PREFERRED_SIZE, 460, Short.MAX_VALUE)); - AT_StationLayout - .setVerticalGroup(AT_StationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, - AT_StationLayout.createSequentialGroup() - .addComponent(TopWiFiStaFiller, javax.swing.GroupLayout.PREFERRED_SIZE, 150, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, - javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(WiFiStationPane, javax.swing.GroupLayout.PREFERRED_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(5, 5, 5))); + Delay.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + Delay.setMajorTickSpacing(500); + Delay.setMaximum(1000); + Delay.setMinorTickSpacing(100); + Delay.setPaintLabels(true); + Delay.setPaintTicks(true); + Delay.setSnapToTicks(true); + Delay.setToolTipText("Delay between answer from ESP and send new data"); + Delay.setValue(0); + Delay.setAlignmentY(1.0F); + Delay.addChangeListener(new javax.swing.event.ChangeListener() { + public void stateChanged(javax.swing.event.ChangeEvent evt) { + DelayStateChanged(evt); + } + }); - TabAT.addTab("WiFi Station", null, AT_Station, "WiFi AT commands"); - AT_Station.getAccessibleContext().setAccessibleName(""); - AT_Station.getAccessibleContext().setAccessibleDescription("WiFi AT commands"); + AnswerDelayLabel.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + AnswerDelayLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + AnswerDelayLabel.setText("Answer timeout = 3 s"); + AnswerDelayLabel.setToolTipText("How many time we waiting answer from ESP8266"); - AT_SoftAP.addFocusListener(new java.awt.event.FocusAdapter() { - public void focusGained(java.awt.event.FocusEvent evt) { - AT_SoftAPFocusGained(evt); + AnswerDelay.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + AnswerDelay.setMajorTickSpacing(5); + AnswerDelay.setMaximum(10); + AnswerDelay.setMinorTickSpacing(1); + AnswerDelay.setPaintLabels(true); + AnswerDelay.setPaintTicks(true); + AnswerDelay.setSnapToTicks(true); + AnswerDelay.setToolTipText("Maximum time for waiting firmware answer"); + AnswerDelay.setValue(3); + AnswerDelay.addChangeListener(new javax.swing.event.ChangeListener() { + public void stateChanged(javax.swing.event.ChangeEvent evt) { + AnswerDelayStateChanged(evt); } }); - AT_SoftAP.addComponentListener(new java.awt.event.ComponentAdapter() { - public void componentShown(java.awt.event.ComponentEvent evt) { - AT_SoftAPComponentShown(evt); + + DumbMode.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + DumbMode.setText("\"Dumb Mode\", never check answers"); + DumbMode.setToolTipText(""); + DumbMode.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + DumbModeItemStateChanged(evt); } }); - WiFisoftAPPane.setBorder(javax.swing.BorderFactory - .createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "WiFi softAP")); - WiFisoftAPPane.setAlignmentX(0.0F); - WiFisoftAPPane.setAlignmentY(0.0F); - WiFisoftAPPane.setMaximumSize(new java.awt.Dimension(463, 291)); - WiFisoftAPPane.setMinimumSize(new java.awt.Dimension(463, 291)); - WiFisoftAPPane.setOpaque(true); + LineDelayLabel.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + LineDelayLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + LineDelayLabel.setText("Line delay for \"Dumb Mode\" = 200 ms"); + LineDelayLabel.setToolTipText("It's usual \"line delay\", as you known."); - cmdSetCWSAP.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdSetCWSAP.setIcon(new javax.swing.ImageIcon(getClass().getResource("/server1_start.png"))); // NOI18N - cmdSetCWSAP.setText("CWSAP= Set softAP config"); - cmdSetCWSAP.setToolTipText("Set configuraton of softAP mode"); - cmdSetCWSAP.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdSetCWSAP.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdSetCWSAP.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdSetCWSAP.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdSetCWSAP.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSetCWSAPActionPerformed(evt); + binding = org.jdesktop.beansbinding.Bindings.createAutoBinding( + org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, DumbMode, + org.jdesktop.beansbinding.ELProperty.create("${selected}"), LineDelayLabel, + org.jdesktop.beansbinding.BeanProperty.create("enabled")); + bindingGroup.addBinding(binding); + + LineDelay.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + LineDelay.setMajorTickSpacing(500); + LineDelay.setMaximum(1000); + LineDelay.setMinorTickSpacing(100); + LineDelay.setPaintLabels(true); + LineDelay.setPaintTicks(true); + LineDelay.setSnapToTicks(true); + LineDelay.setToolTipText("Fixed delay between lines"); + LineDelay.setValue(200); + LineDelay.setAlignmentY(1.0F); + + binding = org.jdesktop.beansbinding.Bindings.createAutoBinding( + org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, DumbMode, + org.jdesktop.beansbinding.ELProperty.create("${selected}"), LineDelay, + org.jdesktop.beansbinding.BeanProperty.create("enabled")); + bindingGroup.addBinding(binding); + + LineDelay.addChangeListener(new javax.swing.event.ChangeListener() { + public void stateChanged(javax.swing.event.ChangeEvent evt) { + LineDelayStateChanged(evt); } }); - cmdGetCWSAP.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdGetCWSAP.setIcon(new javax.swing.ImageIcon(getClass().getResource("/information.png"))); // NOI18N - cmdGetCWSAP.setText("AT+CWSAP? Get softAP config"); - cmdGetCWSAP.setToolTipText("Get configuraton of softAP mode"); - cmdGetCWSAP.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdGetCWSAP.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdGetCWSAP.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdGetCWSAP.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdGetCWSAP.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdGetCWSAPActionPerformed(evt); + TurboMode.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + TurboMode.setText("\"Turbo Mode\""); + TurboMode.setToolTipText(""); + TurboMode.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + TurboModeItemStateChanged(evt); } }); - - cmdGetCIPAPMAC.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdGetCIPAPMAC.setIcon(new javax.swing.ImageIcon(getClass().getResource("/get.png"))); // NOI18N - cmdGetCIPAPMAC.setText("CIPAPMAC Get softAP MAC"); - cmdGetCIPAPMAC.setToolTipText("Get MAC address of ESP8266 softAP"); - cmdGetCIPAPMAC.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdGetCIPAPMAC.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdGetCIPAPMAC.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdGetCIPAPMAC.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdGetCIPAPMAC.addActionListener(new java.awt.event.ActionListener() { + TurboMode.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdGetCIPAPMACActionPerformed(evt); + TurboModeActionPerformed(evt); } }); - cmdGetCWLIF.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdGetCWLIF.setIcon(new javax.swing.ImageIcon(getClass().getResource("/get.png"))); // NOI18N - cmdGetCWLIF.setText("CWLIF Get connected clients IP"); - cmdGetCWLIF.setToolTipText("Get IP adresses softAP clients"); - cmdGetCWLIF.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdGetCWLIF.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdGetCWLIF.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdGetCWLIF.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdGetCWLIF.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdGetCWLIFActionPerformed(evt); + OptionsFileSendMode.setLayer(DelayLabel, javax.swing.JLayeredPane.DEFAULT_LAYER); + OptionsFileSendMode.setLayer(Delay, javax.swing.JLayeredPane.DEFAULT_LAYER); + OptionsFileSendMode.setLayer(AnswerDelayLabel, javax.swing.JLayeredPane.DEFAULT_LAYER); + OptionsFileSendMode.setLayer(AnswerDelay, javax.swing.JLayeredPane.DEFAULT_LAYER); + OptionsFileSendMode.setLayer(DumbMode, javax.swing.JLayeredPane.DEFAULT_LAYER); + OptionsFileSendMode.setLayer(LineDelayLabel, javax.swing.JLayeredPane.DEFAULT_LAYER); + OptionsFileSendMode.setLayer(LineDelay, javax.swing.JLayeredPane.DEFAULT_LAYER); + OptionsFileSendMode.setLayer(TurboMode, javax.swing.JLayeredPane.DEFAULT_LAYER); + + javax.swing.GroupLayout OptionsFileSendModeLayout = new javax.swing.GroupLayout(OptionsFileSendMode); + OptionsFileSendMode.setLayout(OptionsFileSendModeLayout); + OptionsFileSendModeLayout.setHorizontalGroup(OptionsFileSendModeLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(OptionsFileSendModeLayout.createSequentialGroup().addGroup(OptionsFileSendModeLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(OptionsFileSendModeLayout.createSequentialGroup().addGroup(OptionsFileSendModeLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(TurboMode, javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(DelayLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 199, Short.MAX_VALUE)) + .addGap(0, 0, Short.MAX_VALUE)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, OptionsFileSendModeLayout + .createSequentialGroup().addGap(0, 0, Short.MAX_VALUE) + .addGroup(OptionsFileSendModeLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(DumbMode, javax.swing.GroupLayout.Alignment.TRAILING, + javax.swing.GroupLayout.PREFERRED_SIZE, 200, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(Delay, javax.swing.GroupLayout.Alignment.TRAILING, + javax.swing.GroupLayout.PREFERRED_SIZE, 200, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(AnswerDelayLabel, javax.swing.GroupLayout.Alignment.TRAILING, + javax.swing.GroupLayout.PREFERRED_SIZE, 200, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(AnswerDelay, javax.swing.GroupLayout.Alignment.TRAILING, + javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(LineDelayLabel, javax.swing.GroupLayout.Alignment.TRAILING, + javax.swing.GroupLayout.PREFERRED_SIZE, 200, + javax.swing.GroupLayout.PREFERRED_SIZE))) + .addComponent(LineDelay, javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addContainerGap())); + OptionsFileSendModeLayout.setVerticalGroup(OptionsFileSendModeLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(OptionsFileSendModeLayout.createSequentialGroup().addComponent(TurboMode) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(DelayLabel) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(Delay, javax.swing.GroupLayout.PREFERRED_SIZE, 39, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(AnswerDelayLabel).addGap(1, 1, 1) + .addComponent(AnswerDelay, javax.swing.GroupLayout.PREFERRED_SIZE, 36, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(DumbMode) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(LineDelayLabel) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(LineDelay, javax.swing.GroupLayout.PREFERRED_SIZE, 39, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))); + + jLayeredPane2.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Data scrollback", + javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, + new java.awt.Font("Tahoma", 0, 10))); // NOI18N + + jLabel1.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + jLabel1.setText("Terminal"); + jLabel1.setPreferredSize(new java.awt.Dimension(40, 20)); + + jLabel7.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + jLabel7.setText("Log"); + jLabel7.setPreferredSize(new java.awt.Dimension(17, 23)); + + TerminalMaxSize.setHorizontalAlignment(javax.swing.JTextField.RIGHT); + TerminalMaxSize.setText("100"); + TerminalMaxSize.setToolTipText(""); + TerminalMaxSize.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent evt) { + TerminalMaxSizeFocusLost(evt); } }); - SSIDsoftAP.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SSIDsoftAP.setText("SSID"); - SSIDsoftAP.setToolTipText("Enter WiFi SSID"); - SSIDsoftAP.setMaximumSize(new java.awt.Dimension(100, 23)); - SSIDsoftAP.setMinimumSize(new java.awt.Dimension(100, 23)); - SSIDsoftAP.setPreferredSize(new java.awt.Dimension(100, 23)); - SSIDsoftAP.addFocusListener(new java.awt.event.FocusAdapter() { - public void focusGained(java.awt.event.FocusEvent evt) { - SSIDsoftAPFocusGained(evt); + LogMaxSize.setHorizontalAlignment(javax.swing.JTextField.RIGHT); + LogMaxSize.setText("10"); + LogMaxSize.setToolTipText(""); + LogMaxSize.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent evt) { + LogMaxSizeFocusLost(evt); } }); - SSIDsoftAP.addActionListener(new java.awt.event.ActionListener() { + LogMaxSize.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - SSIDsoftAPActionPerformed(evt); + LogMaxSizeActionPerformed(evt); } }); - PASSsoftAP.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - PASSsoftAP.setText("password"); - PASSsoftAP.setToolTipText("Enter WiFi password"); - PASSsoftAP.setMaximumSize(new java.awt.Dimension(104, 23)); - PASSsoftAP.setMinimumSize(new java.awt.Dimension(104, 23)); - PASSsoftAP.setPreferredSize(new java.awt.Dimension(104, 23)); - PASSsoftAP.addFocusListener(new java.awt.event.FocusAdapter() { - public void focusGained(java.awt.event.FocusEvent evt) { - PASSsoftAPFocusGained(evt); - } - }); - PASSsoftAP.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - PASSsoftAPActionPerformed(evt); + jLabel8.setText("kb"); + + jLabel9.setText("kb"); + + jLayeredPane2.setLayer(jLabel1, javax.swing.JLayeredPane.DEFAULT_LAYER); + jLayeredPane2.setLayer(jLabel7, javax.swing.JLayeredPane.DEFAULT_LAYER); + jLayeredPane2.setLayer(TerminalMaxSize, javax.swing.JLayeredPane.DEFAULT_LAYER); + jLayeredPane2.setLayer(LogMaxSize, javax.swing.JLayeredPane.DEFAULT_LAYER); + jLayeredPane2.setLayer(jLabel8, javax.swing.JLayeredPane.DEFAULT_LAYER); + jLayeredPane2.setLayer(jLabel9, javax.swing.JLayeredPane.DEFAULT_LAYER); + + javax.swing.GroupLayout jLayeredPane2Layout = new javax.swing.GroupLayout(jLayeredPane2); + jLayeredPane2.setLayout(jLayeredPane2Layout); + jLayeredPane2Layout.setHorizontalGroup(jLayeredPane2Layout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jLayeredPane2Layout.createSequentialGroup().addGroup(jLayeredPane2Layout + .createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) + .addComponent(jLabel7, javax.swing.GroupLayout.Alignment.LEADING, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, + Short.MAX_VALUE) + .addComponent(jLabel1, javax.swing.GroupLayout.Alignment.LEADING, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(jLayeredPane2Layout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(TerminalMaxSize, javax.swing.GroupLayout.DEFAULT_SIZE, 59, + Short.MAX_VALUE) + .addComponent(LogMaxSize)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jLayeredPane2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel8).addComponent(jLabel9)) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))); + jLayeredPane2Layout.setVerticalGroup(jLayeredPane2Layout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jLayeredPane2Layout.createSequentialGroup() + .addGroup(jLayeredPane2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 15, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(TerminalMaxSize, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel8)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jLayeredPane2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(LogMaxSize, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel7, javax.swing.GroupLayout.PREFERRED_SIZE, 20, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel9)))); + + jLayeredPane3.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "SerialPort", + javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, + new java.awt.Font("Tahoma", 0, 10))); // NOI18N + + CustomPortName.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + CustomPortName.setHorizontalAlignment(javax.swing.JTextField.LEFT); + CustomPortName.setText("/dev/AnySerialDevice"); + CustomPortName.setToolTipText(""); + CustomPortName.setEnabled(false); + CustomPortName.setMinimumSize(new java.awt.Dimension(50, 19)); + CustomPortName.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent evt) { + CustomPortNameFocusLost(evt); } }); - cmdGetCIPAP.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdGetCIPAP.setIcon(new javax.swing.ImageIcon(getClass().getResource("/get.png"))); // NOI18N - cmdGetCIPAP.setText("CIPAP Get softAP IP"); - cmdGetCIPAP.setToolTipText("Get IP address of ESP8266 softAP"); - cmdGetCIPAP.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdGetCIPAP.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdGetCIPAP.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdGetCIPAP.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdGetCIPAP.addActionListener(new java.awt.event.ActionListener() { + UseCustomPortName.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + UseCustomPortName.setText("Use custom serial port name"); + UseCustomPortName.setToolTipText("Use custom serial port name (AutoScan will be disabled)"); + UseCustomPortName.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdGetCIPAPActionPerformed(evt); + UseCustomPortNameActionPerformed(evt); } }); - cmdSetCIPAPMAC.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdSetCIPAPMAC.setIcon(new javax.swing.ImageIcon(getClass().getResource("/set.png"))); // NOI18N - cmdSetCIPAPMAC.setToolTipText("Set softAP MAC address"); - cmdSetCIPAPMAC.setLabel("CIPAPMAC= Set MAC softAP"); - cmdSetCIPAPMAC.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdSetCIPAPMAC.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdSetCIPAPMAC.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdSetCIPAPMAC.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdSetCIPAPMAC.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSetCIPAPMACActionPerformed(evt); + jLabel10.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + jLabel10.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + jLabel10.setText("(AutoScan will be disabled)"); + jLabel10.setPreferredSize(new java.awt.Dimension(17, 23)); + + AutodetectFirmware.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + AutodetectFirmware.setText("Autodetect firmware"); + AutodetectFirmware.setToolTipText("Use custom serial port name (AutoScan will be disabled)"); + AutodetectFirmware.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + AutodetectFirmwareItemStateChanged(evt); } }); - try { - MAC1.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory( - new javax.swing.text.MaskFormatter("AA:AA:AA:AA:AA:AA"))); - } catch (java.text.ParseException ex) { - ex.printStackTrace(); - } - MAC1.setText("FF:FF:FF:FF:FF:FF"); - MAC1.setToolTipText("Station MAC address"); - MAC1.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - MAC1.setMaximumSize(new java.awt.Dimension(2108, 23)); - MAC1.setMinimumSize(new java.awt.Dimension(2108, 23)); - MAC1.setPreferredSize(new java.awt.Dimension(2108, 23)); - - encryption.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - encryption.setModel(new javax.swing.DefaultComboBoxModel( - new String[] { "0 - Open", "1 - WPA_PSK", "2 - WPA2_PSK", "3 - WPA_WPA2_PSK" })); - encryption.setSelectedIndex(2); - encryption.setToolTipText("Set encryption type softAP"); - encryption.setMaximumSize(new java.awt.Dimension(104, 23)); - encryption.setMinimumSize(new java.awt.Dimension(104, 23)); - encryption.setPreferredSize(new java.awt.Dimension(104, 23)); - - channel.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - channel.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "channel 1", "channel 2", "channel 3", - "channel 4", "channel 5", "channel 6", "channel 7", "channel 8", "channel 9", "channel 10", - "channel 11", "channel 12", "channel 13" })); - channel.setToolTipText("Set channell ID softAP"); - channel.setAlignmentX(0.0F); - channel.setMaximumSize(new java.awt.Dimension(100, 23)); - channel.setMinimumSize(new java.awt.Dimension(100, 23)); - channel.setPreferredSize(new java.awt.Dimension(100, 23)); - - softAPIP.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - softAPIP.setText("192.168.4.1"); - softAPIP.setToolTipText(""); - softAPIP.setMaximumSize(new java.awt.Dimension(210, 23)); - softAPIP.setMinimumSize(new java.awt.Dimension(210, 23)); - softAPIP.setPreferredSize(new java.awt.Dimension(210, 23)); - - cmdSetCIPAP.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdSetCIPAP.setIcon(new javax.swing.ImageIcon(getClass().getResource("/set.png"))); // NOI18N - cmdSetCIPAP.setToolTipText("Set softAP IP address"); - cmdSetCIPAP.setLabel("CIPAP= Set softAP IP"); - cmdSetCIPAP.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdSetCIPAP.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdSetCIPAP.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdSetCIPAP.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdSetCIPAP.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSetCIPAPActionPerformed(evt); + CommandEcho.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + CommandEcho.setSelected(true); + CommandEcho.setText("Command Echo"); + CommandEcho.setToolTipText("Use custom serial port name (AutoScan will be disabled)"); + CommandEcho.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + CommandEchoItemStateChanged(evt); } }); - javax.swing.GroupLayout WiFisoftAPPaneLayout = new javax.swing.GroupLayout(WiFisoftAPPane); - WiFisoftAPPane.setLayout(WiFisoftAPPaneLayout); - WiFisoftAPPaneLayout.setHorizontalGroup(WiFisoftAPPaneLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(WiFisoftAPPaneLayout.createSequentialGroup().addContainerGap().addGroup(WiFisoftAPPaneLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(WiFisoftAPPaneLayout.createSequentialGroup().addGroup(WiFisoftAPPaneLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(MAC1, javax.swing.GroupLayout.PREFERRED_SIZE, 210, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdSetCIPAPMAC, javax.swing.GroupLayout.PREFERRED_SIZE, 210, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdGetCIPAP, javax.swing.GroupLayout.PREFERRED_SIZE, 210, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdSetCIPAP, javax.swing.GroupLayout.PREFERRED_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGap(0, 0, Short.MAX_VALUE)) - .addGroup(WiFisoftAPPaneLayout.createSequentialGroup().addGroup(WiFisoftAPPaneLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) - .addGroup(WiFisoftAPPaneLayout.createSequentialGroup().addComponent(cmdGetCIPAPMAC, - javax.swing.GroupLayout.PREFERRED_SIZE, 210, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(cmdSetCWSAP, javax.swing.GroupLayout.PREFERRED_SIZE, 1, - Short.MAX_VALUE)) - .addGroup(WiFisoftAPPaneLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(WiFisoftAPPaneLayout.createSequentialGroup() - .addGroup(WiFisoftAPPaneLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(cmdGetCWSAP, - javax.swing.GroupLayout.PREFERRED_SIZE, 210, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdGetCWLIF, - javax.swing.GroupLayout.PREFERRED_SIZE, 210, - javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(WiFisoftAPPaneLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, - false) - .addComponent(SSIDsoftAP, - javax.swing.GroupLayout.PREFERRED_SIZE, 100, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(channel, javax.swing.GroupLayout.PREFERRED_SIZE, - 100, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(WiFisoftAPPaneLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, - false) - .addComponent(PASSsoftAP, - javax.swing.GroupLayout.PREFERRED_SIZE, 95, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(encryption, 0, 1, Short.MAX_VALUE))) - .addComponent(softAPIP, javax.swing.GroupLayout.PREFERRED_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, - javax.swing.GroupLayout.PREFERRED_SIZE))) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))); - WiFisoftAPPaneLayout.setVerticalGroup(WiFisoftAPPaneLayout + jLayeredPane3.setLayer(CustomPortName, javax.swing.JLayeredPane.DEFAULT_LAYER); + jLayeredPane3.setLayer(UseCustomPortName, javax.swing.JLayeredPane.DEFAULT_LAYER); + jLayeredPane3.setLayer(jLabel10, javax.swing.JLayeredPane.DEFAULT_LAYER); + jLayeredPane3.setLayer(AutodetectFirmware, javax.swing.JLayeredPane.DEFAULT_LAYER); + jLayeredPane3.setLayer(CommandEcho, javax.swing.JLayeredPane.DEFAULT_LAYER); + + javax.swing.GroupLayout jLayeredPane3Layout = new javax.swing.GroupLayout(jLayeredPane3); + jLayeredPane3.setLayout(jLayeredPane3Layout); + jLayeredPane3Layout + .setHorizontalGroup(jLayeredPane3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(UseCustomPortName, javax.swing.GroupLayout.DEFAULT_SIZE, 161, Short.MAX_VALUE) + .addComponent(jLabel10, javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(CustomPortName, javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(AutodetectFirmware, javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(CommandEcho, javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)); + jLayeredPane3Layout.setVerticalGroup(jLayeredPane3Layout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(WiFisoftAPPaneLayout.createSequentialGroup().addContainerGap() - .addGroup(WiFisoftAPPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(SSIDsoftAP, javax.swing.GroupLayout.PREFERRED_SIZE, 23, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(PASSsoftAP, javax.swing.GroupLayout.PREFERRED_SIZE, 23, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdGetCWSAP, javax.swing.GroupLayout.PREFERRED_SIZE, 23, - javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(WiFisoftAPPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(WiFisoftAPPaneLayout.createSequentialGroup().addGap(4, 4, 4) - .addGroup(WiFisoftAPPaneLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(channel, javax.swing.GroupLayout.PREFERRED_SIZE, 23, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(encryption, javax.swing.GroupLayout.PREFERRED_SIZE, 23, - javax.swing.GroupLayout.PREFERRED_SIZE))) - .addGroup(WiFisoftAPPaneLayout.createSequentialGroup() - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cmdGetCWLIF, javax.swing.GroupLayout.PREFERRED_SIZE, 23, - javax.swing.GroupLayout.PREFERRED_SIZE))) + .addGroup(jLayeredPane3Layout.createSequentialGroup().addComponent(UseCustomPortName) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(WiFisoftAPPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(cmdGetCIPAPMAC, javax.swing.GroupLayout.PREFERRED_SIZE, 23, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdSetCWSAP, javax.swing.GroupLayout.PREFERRED_SIZE, 23, - javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(MAC1, javax.swing.GroupLayout.PREFERRED_SIZE, 23, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cmdSetCIPAPMAC, javax.swing.GroupLayout.PREFERRED_SIZE, 23, + .addComponent(jLabel10, javax.swing.GroupLayout.PREFERRED_SIZE, 15, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cmdGetCIPAP, javax.swing.GroupLayout.PREFERRED_SIZE, 23, + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(CustomPortName, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(softAPIP, javax.swing.GroupLayout.PREFERRED_SIZE, 23, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(cmdSetCIPAP, - javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(31, Short.MAX_VALUE))); - WiFisoftAPPane.setLayer(cmdSetCWSAP, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFisoftAPPane.setLayer(cmdGetCWSAP, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFisoftAPPane.setLayer(cmdGetCIPAPMAC, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFisoftAPPane.setLayer(cmdGetCWLIF, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFisoftAPPane.setLayer(SSIDsoftAP, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFisoftAPPane.setLayer(PASSsoftAP, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFisoftAPPane.setLayer(cmdGetCIPAP, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFisoftAPPane.setLayer(cmdSetCIPAPMAC, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFisoftAPPane.setLayer(MAC1, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFisoftAPPane.setLayer(encryption, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFisoftAPPane.setLayer(channel, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFisoftAPPane.setLayer(softAPIP, javax.swing.JLayeredPane.DEFAULT_LAYER); - WiFisoftAPPane.setLayer(cmdSetCIPAP, javax.swing.JLayeredPane.DEFAULT_LAYER); + .addComponent(AutodetectFirmware) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(CommandEcho) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))); - TopWiFiAPFiller.setOpaque(true); + NodeMCUSettings.setLayer(OptionsFirmware, javax.swing.JLayeredPane.DEFAULT_LAYER); + NodeMCUSettings.setLayer(OptionsOther, javax.swing.JLayeredPane.DEFAULT_LAYER); + NodeMCUSettings.setLayer(OptionsFileSendMode, javax.swing.JLayeredPane.DEFAULT_LAYER); + NodeMCUSettings.setLayer(jLayeredPane2, javax.swing.JLayeredPane.DEFAULT_LAYER); + NodeMCUSettings.setLayer(jLayeredPane3, javax.swing.JLayeredPane.DEFAULT_LAYER); - javax.swing.GroupLayout AT_SoftAPLayout = new javax.swing.GroupLayout(AT_SoftAP); - AT_SoftAP.setLayout(AT_SoftAPLayout); - AT_SoftAPLayout - .setHorizontalGroup(AT_SoftAPLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(AT_SoftAPLayout.createSequentialGroup() - .addGroup(AT_SoftAPLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(WiFisoftAPPane, javax.swing.GroupLayout.PREFERRED_SIZE, 457, - Short.MAX_VALUE) - .addComponent(TopWiFiAPFiller, javax.swing.GroupLayout.DEFAULT_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addContainerGap())); - AT_SoftAPLayout - .setVerticalGroup(AT_SoftAPLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, AT_SoftAPLayout.createSequentialGroup() - .addComponent(TopWiFiAPFiller, javax.swing.GroupLayout.PREFERRED_SIZE, 150, - javax.swing.GroupLayout.PREFERRED_SIZE) + javax.swing.GroupLayout NodeMCUSettingsLayout = new javax.swing.GroupLayout(NodeMCUSettings); + NodeMCUSettings.setLayout(NodeMCUSettingsLayout); + NodeMCUSettingsLayout.setHorizontalGroup(NodeMCUSettingsLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(NodeMCUSettingsLayout.createSequentialGroup().addGroup(NodeMCUSettingsLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(OptionsOther).addComponent(OptionsFirmware) + .addComponent(OptionsFileSendMode, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(NodeMCUSettingsLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(jLayeredPane2).addComponent(jLayeredPane3)) + .addContainerGap(135, Short.MAX_VALUE))); + NodeMCUSettingsLayout.setVerticalGroup(NodeMCUSettingsLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(NodeMCUSettingsLayout.createSequentialGroup().addGroup(NodeMCUSettingsLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(NodeMCUSettingsLayout.createSequentialGroup() + .addComponent(OptionsFirmware, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(WiFisoftAPPane, javax.swing.GroupLayout.DEFAULT_SIZE, + .addComponent(OptionsOther, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(NodeMCUSettingsLayout.createSequentialGroup() + .addComponent(jLayeredPane3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap())); - AT_SoftAP.setLayer(WiFisoftAPPane, javax.swing.JLayeredPane.DEFAULT_LAYER); - AT_SoftAP.setLayer(TopWiFiAPFiller, javax.swing.JLayeredPane.DEFAULT_LAYER); - - TabAT.addTab("WiFi softAP", AT_SoftAP); + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jLayeredPane2, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addGap(45, 45, 45) + .addComponent(OptionsFileSendMode, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(0, 134, Short.MAX_VALUE))); - AT_Client.setToolTipText("TCP/IP related commands"); - AT_Client.setAlignmentX(0.0F); - AT_Client.setAlignmentY(0.0F); - AT_Client.setOpaque(false); - AT_Client.addFocusListener(new java.awt.event.FocusAdapter() { - public void focusGained(java.awt.event.FocusEvent evt) { - AT_ClientFocusGained(evt); - } - }); - AT_Client.addComponentListener(new java.awt.event.ComponentAdapter() { - public void componentShown(java.awt.event.ComponentEvent evt) { - AT_ClientComponentShown(evt); - } - }); + TextTab.addTab("Settings", new javax.swing.ImageIcon(getClass().getResource("/settings2.png")), NodeMCUSettings, + "Settings for file sending"); // NOI18N - TopWiFiStaFiller1.setOpaque(true); + javax.swing.GroupLayout NodeMCULayout = new javax.swing.GroupLayout(NodeMCU); + NodeMCU.setLayout(NodeMCULayout); + NodeMCULayout.setHorizontalGroup(NodeMCULayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(TextTab, javax.swing.GroupLayout.DEFAULT_SIZE, 540, Short.MAX_VALUE)); + NodeMCULayout.setVerticalGroup(NodeMCULayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(TextTab, javax.swing.GroupLayout.DEFAULT_SIZE, 712, Short.MAX_VALUE)); - common.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), - "Common parameters for commands", javax.swing.border.TitledBorder.CENTER, - javax.swing.border.TitledBorder.DEFAULT_POSITION)); - common.setMaximumSize(new java.awt.Dimension(445, 54)); - common.setMinimumSize(new java.awt.Dimension(445, 54)); - common.setPreferredSize(new java.awt.Dimension(445, 54)); + TextTab.getAccessibleContext().setAccessibleName("NewFile"); - conn_id.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "0", "1", "2", "3", "4" })); - conn_id.setToolTipText("Connection ID"); + LeftTab.addTab(" NodeMCU & MicroPython ", NodeMCU); - MUXGroup.add(single); - single.setText("CIPMUX=0 - Single"); - single.setToolTipText("Single connection"); - single.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - singleItemStateChanged(evt); + ATvXX.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout()); + + BasicATcommandsPane.setBorder(javax.swing.BorderFactory.createTitledBorder( + new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.LOWERED), "Basic AT commands", + javax.swing.border.TitledBorder.CENTER, javax.swing.border.TitledBorder.DEFAULT_POSITION)); + BasicATcommandsPane.setToolTipText("Basic AT commnads"); + BasicATcommandsPane.setMaximumSize(new java.awt.Dimension(445, 50)); + BasicATcommandsPane.setMinimumSize(new java.awt.Dimension(445, 50)); + BasicATcommandsPane.setOpaque(true); + BasicATcommandsPane.setLayout(new java.awt.FlowLayout()); + + cmdAT.setText("AT"); + cmdAT.setToolTipText("Super simple command \"AT\""); + cmdAT.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + cmdATActionPerformed(evt); } }); + BasicATcommandsPane.add(cmdAT); - MUXGroup.add(multi); - multi.setSelected(true); - multi.setText("CIPMUX=1 - Multiple"); - multi.setToolTipText("Multiple connection"); - multi.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - multiItemStateChanged(evt); + AT_Restart.setText("RST"); + AT_Restart.setToolTipText("Restart"); + AT_Restart.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + AT_RestartActionPerformed(evt); } }); - multi.addActionListener(new java.awt.event.ActionListener() { + BasicATcommandsPane.add(AT_Restart); + + AT_GMR.setText("GMR"); + AT_GMR.setToolTipText("Get version info"); + AT_GMR.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - multiActionPerformed(evt); + AT_GMRActionPerformed(evt); } }); + BasicATcommandsPane.add(AT_GMR); - jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); - jLabel4.setText("Connection ID"); - - javax.swing.GroupLayout commonLayout = new javax.swing.GroupLayout(common); - common.setLayout(commonLayout); - commonLayout - .setHorizontalGroup( - commonLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(commonLayout.createSequentialGroup().addGap(2, 2, 2) - .addComponent(jLabel4, javax.swing.GroupLayout.DEFAULT_SIZE, 82, - Short.MAX_VALUE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(conn_id, javax.swing.GroupLayout.PREFERRED_SIZE, 67, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(multi) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED).addComponent(single, - javax.swing.GroupLayout.PREFERRED_SIZE, 151, javax.swing.GroupLayout.PREFERRED_SIZE))); - commonLayout.setVerticalGroup(commonLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(commonLayout.createSequentialGroup() - .addGroup(commonLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(conn_id, javax.swing.GroupLayout.PREFERRED_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(multi).addComponent(single).addComponent(jLabel4)) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))); - - cmdGetCIPSTART.setIcon(new javax.swing.ImageIcon(getClass().getResource("/information.png"))); // NOI18N - cmdGetCIPSTART.setText("CIPSTART=? - Connection info"); - cmdGetCIPSTART.setToolTipText("Get the information of param"); - cmdGetCIPSTART.addActionListener(new java.awt.event.ActionListener() { + GSLP.setText("GSLP"); + GSLP.setToolTipText("Enter deep-sleep mode on 5sec"); + GSLP.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdGetCIPSTARTActionPerformed(evt); + GSLPActionPerformed(evt); } }); + BasicATcommandsPane.add(GSLP); - UDP.setBorder(javax.swing.BorderFactory.createTitledBorder("UDP only")); - UDP.addPropertyChangeListener(new java.beans.PropertyChangeListener() { - public void propertyChange(java.beans.PropertyChangeEvent evt) { - UDPPropertyChange(evt); + ATE0.setText("ATE0"); + ATE0.setToolTipText("Echo OFF"); + ATE0.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + ATE0ActionPerformed(evt); } }); + BasicATcommandsPane.add(ATE0); - udp_local_port.setToolTipText("Local UDP port"); - udp_local_port.setEnabled(false); - - jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - jLabel2.setText("Local port"); - - udp_mode.setToolTipText("Local UDP port"); - udp_mode.setEnabled(false); + ATE1.setText("ATE1"); + ATE1.setToolTipText("Echo ON"); + ATE1.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + ATE1ActionPerformed(evt); + } + }); + BasicATcommandsPane.add(ATE1); - jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - jLabel3.setText("mode"); + UPDATE.setText("UPD"); + UPDATE.setToolTipText("Send command \"AT+UPDATE\" for firmware Cloud update "); + UPDATE.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + UPDATEActionPerformed(evt); + } + }); + BasicATcommandsPane.add(UPDATE); - javax.swing.GroupLayout UDPLayout = new javax.swing.GroupLayout(UDP); - UDP.setLayout(UDPLayout); - UDPLayout.setHorizontalGroup(UDPLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(UDPLayout.createSequentialGroup() - .addGroup(UDPLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(udp_local_port)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(UDPLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(udp_mode).addComponent(jLabel3, javax.swing.GroupLayout.DEFAULT_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addGap(6, 6, 6))); - UDPLayout.setVerticalGroup(UDPLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(UDPLayout.createSequentialGroup() - .addGroup(UDPLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel2).addComponent(jLabel3)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, - javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(UDPLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(udp_local_port, javax.swing.GroupLayout.PREFERRED_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(udp_mode, javax.swing.GroupLayout.PREFERRED_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addContainerGap())); - UDP.setLayer(udp_local_port, javax.swing.JLayeredPane.DEFAULT_LAYER); - UDP.setLayer(jLabel2, javax.swing.JLayeredPane.DEFAULT_LAYER); - UDP.setLayer(udp_mode, javax.swing.JLayeredPane.DEFAULT_LAYER); - UDP.setLayer(jLabel3, javax.swing.JLayeredPane.DEFAULT_LAYER); + ATvXX.add(BasicATcommandsPane, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 545, 70)); - remote_address.setText("192.168.1.1"); - remote_address.setToolTipText("Remote IP address"); + TabAT.setTabLayoutPolicy(javax.swing.JTabbedPane.SCROLL_TAB_LAYOUT); + TabAT.setToolTipText("ESP8266 AT commands v0.20"); + TabAT.setAlignmentX(0.0F); + TabAT.setAlignmentY(0.0F); + TabAT.setFocusable(false); + TabAT.setOpaque(true); - remote_port.setText("80"); - remote_port.setToolTipText("Remote port"); + binding = org.jdesktop.beansbinding.Bindings.createAutoBinding( + org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, AT_Station, + org.jdesktop.beansbinding.ELProperty.create("${border}"), TabAT, + org.jdesktop.beansbinding.BeanProperty.create("border")); + bindingGroup.addBinding(binding); - protocol.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "TCP", "UDP" })); - protocol.setToolTipText("Connection type: TCP or UDP"); - protocol.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - protocolItemStateChanged(evt); + AT_Station.setToolTipText("WiFi commands"); + AT_Station.setAlignmentX(0.0F); + AT_Station.setAlignmentY(0.0F); + AT_Station.setAutoscrolls(true); + AT_Station.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + AT_Station.setInheritsPopupMenu(true); + AT_Station.setMinimumSize(new java.awt.Dimension(0, 130)); + AT_Station.setName(""); // NOI18N + AT_Station.setOpaque(false); + AT_Station.setPreferredSize(new java.awt.Dimension(457, 291)); + AT_Station.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusGained(java.awt.event.FocusEvent evt) { + AT_StationFocusGained(evt); } }); - - cmdSetCIPSTART.setIcon(new javax.swing.ImageIcon(getClass().getResource("/connect3.png"))); // NOI18N - cmdSetCIPSTART.setText("AT+CIPSTART= - Start connection"); - cmdSetCIPSTART.setToolTipText("Start a connection as client"); - cmdSetCIPSTART.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSetCIPSTARTActionPerformed(evt); + AT_Station.addComponentListener(new java.awt.event.ComponentAdapter() { + public void componentShown(java.awt.event.ComponentEvent evt) { + AT_StationComponentShown(evt); } }); - data.setColumns(15); - data.setRows(5); - data.setTabSize(4); - data.setText("GET / HTTP/1.0\nHost: 192.168.1.1\nConnection: keep-alive\nAccept: */*\n\n"); - data.setToolTipText("Data to send to remote client"); - data.setCaretPosition(1); - jScrollData.setViewportView(data); + TopWiFiStaFiller.setOpaque(true); - cmdCIPSEND.setIcon(new javax.swing.ImageIcon(getClass().getResource("/level up.png"))); // NOI18N - cmdCIPSEND.setText("AT+CIPSEND= - Send data"); - cmdCIPSEND.setToolTipText("Send data to remote client"); - cmdCIPSEND.addActionListener(new java.awt.event.ActionListener() { + WiFiStationPane.setBorder(javax.swing.BorderFactory + .createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "WiFi Station")); + WiFiStationPane.setAlignmentX(0.0F); + WiFiStationPane.setAlignmentY(0.0F); + WiFiStationPane.setMaximumSize(new java.awt.Dimension(463, 291)); + WiFiStationPane.setMinimumSize(new java.awt.Dimension(463, 291)); + WiFiStationPane.setName(""); // NOI18N + WiFiStationPane.setOpaque(true); + + cmdGetCWJAP.setFont(cmdGetCWJAP.getFont().deriveFont((float) 12)); + cmdGetCWJAP.setIcon(new javax.swing.ImageIcon(getClass().getResource("/information.png"))); // NOI18N + cmdGetCWJAP.setText("CWJAP? - Connection info"); + cmdGetCWJAP.setToolTipText("Query AP’s info which is connect by ESP8266"); + cmdGetCWJAP.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdGetCWJAP.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdGetCWJAP.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdGetCWJAP.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdGetCWJAP.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdCIPSENDActionPerformed(evt); + cmdGetCWJAPActionPerformed(evt); } }); - cmdCIPSENDinteractive.setText("AT+CIPSEND - Interactive "); - cmdCIPSENDinteractive - .setToolTipText("Send data to remote client in interactive mode. After all data sent, type \"+++\""); - cmdCIPSENDinteractive.addActionListener(new java.awt.event.ActionListener() { + cmdSetCWJAP.setFont(cmdSetCWJAP.getFont().deriveFont((float) 12)); + cmdSetCWJAP.setIcon(new javax.swing.ImageIcon(getClass().getResource("/connect3.png"))); // NOI18N + cmdSetCWJAP.setText("CWJAP Connect to AP"); + cmdSetCWJAP.setToolTipText("Connect to WiFi Access Point"); + cmdSetCWJAP.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdSetCWJAP.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdSetCWJAP.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdSetCWJAP.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdSetCWJAP.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdCIPSENDinteractiveActionPerformed(evt); + cmdSetCWJAPActionPerformed(evt); } }); - cmdSetCIPCLOSE.setIcon(new javax.swing.ImageIcon(getClass().getResource("/disconnect3.png"))); // NOI18N - cmdSetCIPCLOSE.setText("AT+CIPCLOSE - Close connection"); - cmdSetCIPCLOSE - .setToolTipText("Close current connection in Single mode and close connection in Multiple mode"); - cmdSetCIPCLOSE.addActionListener(new java.awt.event.ActionListener() { + SSID.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + SSID.setText("SSID"); + SSID.setToolTipText("Enter WiFi SSID"); + SSID.setMaximumSize(new java.awt.Dimension(100, 23)); + SSID.setMinimumSize(new java.awt.Dimension(100, 23)); + SSID.setPreferredSize(new java.awt.Dimension(100, 23)); + SSID.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSetCIPCLOSEActionPerformed(evt); + SSIDActionPerformed(evt); } }); - - javax.swing.GroupLayout TCPclientBottomPaneLayout = new javax.swing.GroupLayout(TCPclientBottomPane); - TCPclientBottomPane.setLayout(TCPclientBottomPaneLayout); - TCPclientBottomPaneLayout.setHorizontalGroup(TCPclientBottomPaneLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(TCPclientBottomPaneLayout.createSequentialGroup() - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(TCPclientBottomPaneLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(TCPclientBottomPaneLayout.createSequentialGroup().addComponent(UDP, - javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(TCPclientBottomPaneLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addGroup(TCPclientBottomPaneLayout.createSequentialGroup() - .addComponent(remote_address, - javax.swing.GroupLayout.PREFERRED_SIZE, 97, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap( - javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(remote_port, - javax.swing.GroupLayout.PREFERRED_SIZE, 40, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap( - javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(protocol, javax.swing.GroupLayout.PREFERRED_SIZE, - 68, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addComponent(cmdSetCIPSTART, javax.swing.GroupLayout.DEFAULT_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) - .addGroup(TCPclientBottomPaneLayout.createSequentialGroup().addComponent(jScrollData, - javax.swing.GroupLayout.PREFERRED_SIZE, 228, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(TCPclientBottomPaneLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) - .addComponent(cmdCIPSENDinteractive, - javax.swing.GroupLayout.Alignment.LEADING, - javax.swing.GroupLayout.DEFAULT_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(cmdCIPSEND, javax.swing.GroupLayout.Alignment.LEADING, - javax.swing.GroupLayout.DEFAULT_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(cmdSetCIPCLOSE, javax.swing.GroupLayout.PREFERRED_SIZE, 0, - Short.MAX_VALUE) - .addComponent(cmdGetCIPSTART, javax.swing.GroupLayout.Alignment.LEADING, - javax.swing.GroupLayout.PREFERRED_SIZE, 190, - javax.swing.GroupLayout.PREFERRED_SIZE)))) - .addGap(33, 33, 33)) - .addGroup(TCPclientBottomPaneLayout.createSequentialGroup() - .addComponent(common, javax.swing.GroupLayout.PREFERRED_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(0, 0, Short.MAX_VALUE))); - TCPclientBottomPaneLayout.setVerticalGroup(TCPclientBottomPaneLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(TCPclientBottomPaneLayout.createSequentialGroup() - .addComponent(common, javax.swing.GroupLayout.PREFERRED_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGroup(TCPclientBottomPaneLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(TCPclientBottomPaneLayout.createSequentialGroup().addGap(18, 18, 18) - .addGroup(TCPclientBottomPaneLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(remote_address, javax.swing.GroupLayout.PREFERRED_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(remote_port, javax.swing.GroupLayout.PREFERRED_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(protocol, javax.swing.GroupLayout.PREFERRED_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, - javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(cmdSetCIPSTART)) - .addGroup(TCPclientBottomPaneLayout.createSequentialGroup() - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(UDP, javax.swing.GroupLayout.PREFERRED_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, - javax.swing.GroupLayout.PREFERRED_SIZE))) - .addGap(413, 413, 413) - .addGroup(TCPclientBottomPaneLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addGroup(TCPclientBottomPaneLayout.createSequentialGroup().addComponent(cmdGetCIPSTART) - .addGap(7, 7, 7).addComponent(cmdCIPSEND) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, - javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(cmdCIPSENDinteractive) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(cmdSetCIPCLOSE)) - .addComponent(jScrollData)) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))); - TCPclientBottomPane.setLayer(common, javax.swing.JLayeredPane.DEFAULT_LAYER); - TCPclientBottomPane.setLayer(cmdGetCIPSTART, javax.swing.JLayeredPane.DEFAULT_LAYER); - TCPclientBottomPane.setLayer(UDP, javax.swing.JLayeredPane.DEFAULT_LAYER); - TCPclientBottomPane.setLayer(remote_address, javax.swing.JLayeredPane.DEFAULT_LAYER); - TCPclientBottomPane.setLayer(remote_port, javax.swing.JLayeredPane.DEFAULT_LAYER); - TCPclientBottomPane.setLayer(protocol, javax.swing.JLayeredPane.DEFAULT_LAYER); - TCPclientBottomPane.setLayer(cmdSetCIPSTART, javax.swing.JLayeredPane.DEFAULT_LAYER); - TCPclientBottomPane.setLayer(jScrollData, javax.swing.JLayeredPane.DEFAULT_LAYER); - TCPclientBottomPane.setLayer(cmdCIPSEND, javax.swing.JLayeredPane.DEFAULT_LAYER); - TCPclientBottomPane.setLayer(cmdCIPSENDinteractive, javax.swing.JLayeredPane.DEFAULT_LAYER); - TCPclientBottomPane.setLayer(cmdSetCIPCLOSE, javax.swing.JLayeredPane.DEFAULT_LAYER); - - javax.swing.GroupLayout AT_ClientLayout = new javax.swing.GroupLayout(AT_Client); - AT_Client.setLayout(AT_ClientLayout); - AT_ClientLayout - .setHorizontalGroup(AT_ClientLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, - AT_ClientLayout.createSequentialGroup().addContainerGap(421, Short.MAX_VALUE) - .addComponent(TopWiFiStaFiller1, javax.swing.GroupLayout.PREFERRED_SIZE, 0, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(19, 19, 19)) - .addComponent(TCPclientBottomPane, javax.swing.GroupLayout.PREFERRED_SIZE, 440, Short.MAX_VALUE)); - AT_ClientLayout.setVerticalGroup(AT_ClientLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(AT_ClientLayout.createSequentialGroup() - .addComponent(TopWiFiStaFiller1, javax.swing.GroupLayout.PREFERRED_SIZE, 69, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent( - TCPclientBottomPane, javax.swing.GroupLayout.PREFERRED_SIZE, 377, Short.MAX_VALUE))); - - TabAT.addTab("TCP/IP client", AT_Client); - AT_Client.getAccessibleContext().setAccessibleName("AT_IP"); - AT_Client.getAccessibleContext().setAccessibleDescription(""); - - AT_Server.setOpaque(false); - AT_Server.addFocusListener(new java.awt.event.FocusAdapter() { + SSID.addFocusListener(new java.awt.event.FocusAdapter() { public void focusGained(java.awt.event.FocusEvent evt) { - AT_ServerFocusGained(evt); - } - }); - AT_Server.addComponentListener(new java.awt.event.ComponentAdapter() { - public void componentShown(java.awt.event.ComponentEvent evt) { - AT_ServerComponentShown(evt); + SSIDFocusGained(evt); } }); - TCPServerTopFiller.setOpaque(true); - - TCPServerBottomPane.setBorder(javax.swing.BorderFactory.createEtchedBorder()); - TCPServerBottomPane.setMaximumSize(new java.awt.Dimension(463, 377)); - TCPServerBottomPane.setMinimumSize(new java.awt.Dimension(463, 377)); - TCPServerBottomPane.setOpaque(true); - - cmdGetCIPMODE.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdGetCIPMODE.setIcon(new javax.swing.ImageIcon(getClass().getResource("/information.png"))); // NOI18N - cmdGetCIPMODE.setText("CIPMODE? 0 - normal"); - cmdGetCIPMODE.setToolTipText("Get current transfer mode (0- normal, 1 -unvarnished)"); - cmdGetCIPMODE.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdGetCIPMODE.setMaximumSize(new java.awt.Dimension(120, 23)); - cmdGetCIPMODE.setMinimumSize(new java.awt.Dimension(120, 23)); - cmdGetCIPMODE.setPreferredSize(new java.awt.Dimension(120, 23)); - cmdGetCIPMODE.addActionListener(new java.awt.event.ActionListener() { + PASS.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + PASS.setText("password"); + PASS.setToolTipText("Enter WiFi password"); + PASS.setMaximumSize(new java.awt.Dimension(104, 23)); + PASS.setMinimumSize(new java.awt.Dimension(104, 23)); + PASS.setPreferredSize(new java.awt.Dimension(104, 23)); + PASS.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdGetCIPMODEActionPerformed(evt); + PASSActionPerformed(evt); } }); - - cmdSetCIPMODE0.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdSetCIPMODE0.setText("CIPMODE=0"); - cmdSetCIPMODE0.setToolTipText("Set current transfer mode to 0 (normal mode)"); - cmdSetCIPMODE0.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdSetCIPMODE0.setMaximumSize(new java.awt.Dimension(120, 23)); - cmdSetCIPMODE0.setMinimumSize(new java.awt.Dimension(120, 23)); - cmdSetCIPMODE0.setPreferredSize(new java.awt.Dimension(120, 23)); - cmdSetCIPMODE0.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSetCIPMODE0ActionPerformed(evt); + PASS.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusGained(java.awt.event.FocusEvent evt) { + PASSFocusGained(evt); } }); - cmdSetCIPMODE1.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdSetCIPMODE1.setText("CIPMODE=1"); - cmdSetCIPMODE1.setToolTipText("Set current transfer mode to 1 (unvarnished mode)"); - cmdSetCIPMODE1.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdSetCIPMODE1.setMaximumSize(new java.awt.Dimension(120, 23)); - cmdSetCIPMODE1.setMinimumSize(new java.awt.Dimension(120, 23)); - cmdSetCIPMODE1.setPreferredSize(new java.awt.Dimension(120, 23)); - cmdSetCIPMODE1.addActionListener(new java.awt.event.ActionListener() { + cmdSetCWQAP.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N + cmdSetCWQAP.setIcon(new javax.swing.ImageIcon(getClass().getResource("/disconnect3.png"))); // NOI18N + cmdSetCWQAP.setText("CWQAP - Disconnect from AP"); + cmdSetCWQAP.setToolTipText("Disconnect from WiFi Access Point"); + cmdSetCWQAP.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdSetCWQAP.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdSetCWQAP.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdSetCWQAP.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdSetCWQAP.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSetCIPMODE1ActionPerformed(evt); + cmdSetCWQAPActionPerformed(evt); } }); - cmdSetCIPSERVER.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdSetCIPSERVER.setIcon(new javax.swing.ImageIcon(getClass().getResource("/web_server_start.png"))); // NOI18N - cmdSetCIPSERVER.setText("CIPSERVER Start/Stop"); - cmdSetCIPSERVER.setToolTipText("Set TCP server (Start and down)"); - cmdSetCIPSERVER.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdSetCIPSERVER.setMaximumSize(new java.awt.Dimension(120, 23)); - cmdSetCIPSERVER.setMinimumSize(new java.awt.Dimension(120, 23)); - cmdSetCIPSERVER.setPreferredSize(new java.awt.Dimension(120, 23)); - cmdSetCIPSERVER.addActionListener(new java.awt.event.ActionListener() { + cmdGetCIPSTAMAC.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N + cmdGetCIPSTAMAC.setIcon(new javax.swing.ImageIcon(getClass().getResource("/get.png"))); // NOI18N + cmdGetCIPSTAMAC.setText("CIPSTAMAC? Get MAC"); + cmdGetCIPSTAMAC.setToolTipText("Get Station MAC address"); + cmdGetCIPSTAMAC.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdGetCIPSTAMAC.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdGetCIPSTAMAC.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdGetCIPSTAMAC.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdGetCIPSTAMAC.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSetCIPSERVERActionPerformed(evt); + cmdGetCIPSTAMACActionPerformed(evt); } }); - ServerMode.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - ServerMode.setModel( - new javax.swing.DefaultComboBoxModel(new String[] { "0 - Delete Server", "1 - Create Server" })); - ServerMode.setSelectedIndex(1); - ServerMode.setToolTipText("Select MODE for CIPSERVER command"); - ServerMode.setAlignmentX(0.0F); - ServerMode.setMaximumSize(new java.awt.Dimension(120, 23)); - ServerMode.setMinimumSize(new java.awt.Dimension(120, 23)); - ServerMode.setPreferredSize(new java.awt.Dimension(120, 23)); - ServerMode.addActionListener(new java.awt.event.ActionListener() { + cmdSetCIPSTAMAC.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N + cmdSetCIPSTAMAC.setIcon(new javax.swing.ImageIcon(getClass().getResource("/set.png"))); // NOI18N + cmdSetCIPSTAMAC.setText("CIPSTAMAC= Set MAC Station"); + cmdSetCIPSTAMAC.setToolTipText("Set Station MAC address"); + cmdSetCIPSTAMAC.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdSetCIPSTAMAC.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdSetCIPSTAMAC.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdSetCIPSTAMAC.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdSetCIPSTAMAC.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - ServerModeActionPerformed(evt); + cmdSetCIPSTAMACActionPerformed(evt); } }); - jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); - jLabel5.setText("port"); - - ServerPort.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ServerPort.setText("80"); - ServerPort.setMaximumSize(new java.awt.Dimension(100, 23)); - ServerPort.setMinimumSize(new java.awt.Dimension(100, 23)); - ServerPort.setPreferredSize(new java.awt.Dimension(100, 23)); + try { + MAC.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory( + new javax.swing.text.MaskFormatter("AA:AA:AA:AA:AA:AA"))); + } catch (java.text.ParseException ex) { + ex.printStackTrace(); + } + MAC.setText("FF:FF:FF:FF:FF:FF"); + MAC.setToolTipText("Station MAC address"); + MAC.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + MAC.setMaximumSize(new java.awt.Dimension(210, 23)); + MAC.setMinimumSize(new java.awt.Dimension(210, 23)); + MAC.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdGetCIPSTO.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdGetCIPSTO.setIcon(new javax.swing.ImageIcon(getClass().getResource("/get.png"))); // NOI18N - cmdGetCIPSTO.setText("CIPSTO?"); - cmdGetCIPSTO.setToolTipText("Get current server timeout"); - cmdGetCIPSTO.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdGetCIPSTO.setMaximumSize(new java.awt.Dimension(120, 23)); - cmdGetCIPSTO.setMinimumSize(new java.awt.Dimension(120, 23)); - cmdGetCIPSTO.setPreferredSize(new java.awt.Dimension(120, 23)); - cmdGetCIPSTO.addActionListener(new java.awt.event.ActionListener() { + cmdGetCIPSTA.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N + cmdGetCIPSTA.setIcon(new javax.swing.ImageIcon(getClass().getResource("/get.png"))); // NOI18N + cmdGetCIPSTA.setText("CIPSTA? Get Station IP"); + cmdGetCIPSTA.setToolTipText("Get Station IP address"); + cmdGetCIPSTA.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdGetCIPSTA.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdGetCIPSTA.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdGetCIPSTA.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdGetCIPSTA.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdGetCIPSTOActionPerformed(evt); + cmdGetCIPSTAActionPerformed(evt); } }); - cmdSetCIPSTO.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdSetCIPSTO.setIcon(new javax.swing.ImageIcon(getClass().getResource("/set.png"))); // NOI18N - cmdSetCIPSTO.setText("CIPSTO="); - cmdSetCIPSTO.setToolTipText("Set current server timeout"); - cmdSetCIPSTO.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdSetCIPSTO.setMaximumSize(new java.awt.Dimension(120, 23)); - cmdSetCIPSTO.setMinimumSize(new java.awt.Dimension(120, 23)); - cmdSetCIPSTO.setPreferredSize(new java.awt.Dimension(120, 23)); - cmdSetCIPSTO.addActionListener(new java.awt.event.ActionListener() { + cmdSetCIPSTA.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N + cmdSetCIPSTA.setIcon(new javax.swing.ImageIcon(getClass().getResource("/set.png"))); // NOI18N + cmdSetCIPSTA.setText("CIPSTA= Set Station IP"); + cmdSetCIPSTA.setToolTipText("Set Station IP address"); + cmdSetCIPSTA.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdSetCIPSTA.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdSetCIPSTA.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdSetCIPSTA.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdSetCIPSTA.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSetCIPSTOActionPerformed(evt); + cmdSetCIPSTAActionPerformed(evt); } }); - ServerTimeout.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ServerTimeout.setText("60"); - ServerTimeout.setToolTipText("Set server timeout "); - ServerTimeout.setMaximumSize(new java.awt.Dimension(120, 23)); - ServerTimeout.setMinimumSize(new java.awt.Dimension(120, 23)); - ServerTimeout.setPreferredSize(new java.awt.Dimension(120, 23)); + StationIP.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + StationIP.setText("192.168.1.50"); + StationIP.setMaximumSize(new java.awt.Dimension(210, 23)); + StationIP.setMinimumSize(new java.awt.Dimension(210, 23)); + StationIP.setPreferredSize(new java.awt.Dimension(210, 23)); - jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); - jLabel6.setText("Server timeout"); + WiFiStationPane.setLayer(cmdGetCWJAP, javax.swing.JLayeredPane.DEFAULT_LAYER); + WiFiStationPane.setLayer(cmdSetCWJAP, javax.swing.JLayeredPane.DEFAULT_LAYER); + WiFiStationPane.setLayer(SSID, javax.swing.JLayeredPane.DEFAULT_LAYER); + WiFiStationPane.setLayer(PASS, javax.swing.JLayeredPane.DEFAULT_LAYER); + WiFiStationPane.setLayer(cmdSetCWQAP, javax.swing.JLayeredPane.DEFAULT_LAYER); + WiFiStationPane.setLayer(cmdGetCIPSTAMAC, javax.swing.JLayeredPane.DEFAULT_LAYER); + WiFiStationPane.setLayer(cmdSetCIPSTAMAC, javax.swing.JLayeredPane.DEFAULT_LAYER); + WiFiStationPane.setLayer(MAC, javax.swing.JLayeredPane.DEFAULT_LAYER); + WiFiStationPane.setLayer(cmdGetCIPSTA, javax.swing.JLayeredPane.DEFAULT_LAYER); + WiFiStationPane.setLayer(cmdSetCIPSTA, javax.swing.JLayeredPane.DEFAULT_LAYER); + WiFiStationPane.setLayer(StationIP, javax.swing.JLayeredPane.DEFAULT_LAYER); - javax.swing.GroupLayout TCPServerBottomPaneLayout = new javax.swing.GroupLayout(TCPServerBottomPane); - TCPServerBottomPane.setLayout(TCPServerBottomPaneLayout); - TCPServerBottomPaneLayout.setHorizontalGroup(TCPServerBottomPaneLayout + javax.swing.GroupLayout WiFiStationPaneLayout = new javax.swing.GroupLayout(WiFiStationPane); + WiFiStationPane.setLayout(WiFiStationPaneLayout); + WiFiStationPaneLayout.setHorizontalGroup(WiFiStationPaneLayout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(TCPServerBottomPaneLayout.createSequentialGroup() - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(TCPServerBottomPaneLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(cmdSetCIPSTO, javax.swing.GroupLayout.PREFERRED_SIZE, 210, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addGroup(TCPServerBottomPaneLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(TCPServerBottomPaneLayout.createSequentialGroup() - .addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 102, + .addGroup(WiFiStationPaneLayout.createSequentialGroup().addContainerGap().addGroup(WiFiStationPaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(MAC, javax.swing.GroupLayout.PREFERRED_SIZE, 210, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(cmdSetCIPSTAMAC, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGroup(WiFiStationPaneLayout.createSequentialGroup().addGroup(WiFiStationPaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(cmdGetCWJAP, javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(cmdSetCWQAP, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGroup(WiFiStationPaneLayout.createSequentialGroup().addGap(1, 1, 1).addComponent( + cmdGetCIPSTAMAC, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(WiFiStationPaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addGroup(WiFiStationPaneLayout.createSequentialGroup() + .addComponent(SSID, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(ServerTimeout, javax.swing.GroupLayout.PREFERRED_SIZE, 98, - javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(TCPServerBottomPaneLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(cmdSetCIPMODE1, javax.swing.GroupLayout.PREFERRED_SIZE, - 210, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdGetCIPSTO, javax.swing.GroupLayout.PREFERRED_SIZE, 210, - javax.swing.GroupLayout.PREFERRED_SIZE))) - .addComponent(cmdGetCIPMODE, javax.swing.GroupLayout.PREFERRED_SIZE, 210, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdSetCIPMODE0, javax.swing.GroupLayout.PREFERRED_SIZE, 210, - javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(TCPServerBottomPaneLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addGroup(TCPServerBottomPaneLayout.createSequentialGroup() - .addComponent(ServerMode, javax.swing.GroupLayout.PREFERRED_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jLabel5) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(ServerPort, javax.swing.GroupLayout.DEFAULT_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addComponent(cmdSetCIPSERVER, javax.swing.GroupLayout.PREFERRED_SIZE, 210, - javax.swing.GroupLayout.PREFERRED_SIZE)))); - TCPServerBottomPaneLayout.setVerticalGroup(TCPServerBottomPaneLayout + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(PASS, javax.swing.GroupLayout.PREFERRED_SIZE, 1, + Short.MAX_VALUE)) + .addComponent(cmdSetCWJAP, javax.swing.GroupLayout.PREFERRED_SIZE, 201, + javax.swing.GroupLayout.PREFERRED_SIZE))) + .addComponent(cmdGetCIPSTA, javax.swing.GroupLayout.PREFERRED_SIZE, 210, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(StationIP, javax.swing.GroupLayout.PREFERRED_SIZE, 210, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(cmdSetCIPSTA, javax.swing.GroupLayout.PREFERRED_SIZE, 210, + javax.swing.GroupLayout.PREFERRED_SIZE)) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))); + WiFiStationPaneLayout.setVerticalGroup(WiFiStationPaneLayout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(TCPServerBottomPaneLayout.createSequentialGroup().addContainerGap() - .addGroup(TCPServerBottomPaneLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(jLabel5) - .addComponent(ServerPort, javax.swing.GroupLayout.PREFERRED_SIZE, 23, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(ServerMode, javax.swing.GroupLayout.PREFERRED_SIZE, 23, + .addGroup(WiFiStationPaneLayout.createSequentialGroup().addContainerGap() + .addGroup(WiFiStationPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(cmdGetCWJAP, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(SSID, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdGetCIPMODE, javax.swing.GroupLayout.PREFERRED_SIZE, 23, + .addComponent(PASS, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(TCPServerBottomPaneLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(cmdSetCIPSERVER, javax.swing.GroupLayout.PREFERRED_SIZE, 23, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(cmdSetCIPMODE0, javax.swing.GroupLayout.PREFERRED_SIZE, 23, + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(WiFiStationPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(cmdSetCWQAP, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(cmdSetCWJAP, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(cmdSetCIPMODE1, javax.swing.GroupLayout.PREFERRED_SIZE, 23, + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cmdGetCIPSTAMAC, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(MAC, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(cmdGetCIPSTO, javax.swing.GroupLayout.PREFERRED_SIZE, 23, + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cmdSetCIPSTAMAC, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(TCPServerBottomPaneLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(ServerTimeout, javax.swing.GroupLayout.PREFERRED_SIZE, 23, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel6)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(cmdSetCIPSTO, javax.swing.GroupLayout.PREFERRED_SIZE, 23, + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cmdGetCIPSTA, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))); - TCPServerBottomPane.setLayer(cmdGetCIPMODE, javax.swing.JLayeredPane.DEFAULT_LAYER); - TCPServerBottomPane.setLayer(cmdSetCIPMODE0, javax.swing.JLayeredPane.DEFAULT_LAYER); - TCPServerBottomPane.setLayer(cmdSetCIPMODE1, javax.swing.JLayeredPane.DEFAULT_LAYER); - TCPServerBottomPane.setLayer(cmdSetCIPSERVER, javax.swing.JLayeredPane.DEFAULT_LAYER); - TCPServerBottomPane.setLayer(ServerMode, javax.swing.JLayeredPane.DEFAULT_LAYER); - TCPServerBottomPane.setLayer(jLabel5, javax.swing.JLayeredPane.DEFAULT_LAYER); - TCPServerBottomPane.setLayer(ServerPort, javax.swing.JLayeredPane.DEFAULT_LAYER); - TCPServerBottomPane.setLayer(cmdGetCIPSTO, javax.swing.JLayeredPane.DEFAULT_LAYER); - TCPServerBottomPane.setLayer(cmdSetCIPSTO, javax.swing.JLayeredPane.DEFAULT_LAYER); - TCPServerBottomPane.setLayer(ServerTimeout, javax.swing.JLayeredPane.DEFAULT_LAYER); - TCPServerBottomPane.setLayer(jLabel6, javax.swing.JLayeredPane.DEFAULT_LAYER); + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(StationIP, javax.swing.GroupLayout.PREFERRED_SIZE, 23, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(cmdSetCIPSTA, + javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap(201, Short.MAX_VALUE))); - javax.swing.GroupLayout AT_ServerLayout = new javax.swing.GroupLayout(AT_Server); - AT_Server.setLayout(AT_ServerLayout); - AT_ServerLayout.setHorizontalGroup(AT_ServerLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, AT_ServerLayout.createSequentialGroup() - .addGroup(AT_ServerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(TCPServerBottomPane, javax.swing.GroupLayout.Alignment.LEADING, - javax.swing.GroupLayout.PREFERRED_SIZE, 447, Short.MAX_VALUE) - .addComponent(TCPServerTopFiller, javax.swing.GroupLayout.PREFERRED_SIZE, 447, - Short.MAX_VALUE)) - .addContainerGap())); - AT_ServerLayout.setVerticalGroup(AT_ServerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, - AT_ServerLayout.createSequentialGroup() - .addComponent(TCPServerTopFiller, javax.swing.GroupLayout.PREFERRED_SIZE, 69, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(TCPServerBottomPane, javax.swing.GroupLayout.DEFAULT_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))); + WiFiStationPaneLayout.linkSize(javax.swing.SwingConstants.VERTICAL, + new java.awt.Component[] { cmdGetCIPSTA, cmdGetCWJAP, cmdSetCIPSTA, cmdSetCWQAP }); - TabAT.addTab("TCP/IP Server", AT_Server); + WiFiStationPaneLayout.linkSize(javax.swing.SwingConstants.VERTICAL, + new java.awt.Component[] { MAC, StationIP, cmdGetCIPSTAMAC, cmdSetCIPSTAMAC, cmdSetCWJAP }); - ATvXX.add(TabAT, new org.netbeans.lib.awtextra.AbsoluteConstraints(2, 70, 445, 480)); + javax.swing.GroupLayout AT_StationLayout = new javax.swing.GroupLayout(AT_Station); + AT_Station.setLayout(AT_StationLayout); + AT_StationLayout + .setHorizontalGroup(AT_StationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(TopWiFiStaFiller, javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(WiFiStationPane, javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)); + AT_StationLayout + .setVerticalGroup(AT_StationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, + AT_StationLayout.createSequentialGroup() + .addComponent(TopWiFiStaFiller, javax.swing.GroupLayout.PREFERRED_SIZE, 150, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(WiFiStationPane, javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))); - TCP_common.setBorder(javax.swing.BorderFactory - .createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "Common TCP commands")); - TCP_common.setAlignmentX(0.0F); - TCP_common.setAlignmentY(0.0F); - TCP_common.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR)); - TCP_common.setMaximumSize(new java.awt.Dimension(445, 45)); - TCP_common.setMinimumSize(new java.awt.Dimension(445, 45)); - TCP_common.setOpaque(true); - TCP_common.setLayout(new java.awt.FlowLayout()); + TabAT.addTab("WiFi Station", null, AT_Station, "WiFi AT commands"); + AT_Station.getAccessibleContext().setAccessibleName(""); + AT_Station.getAccessibleContext().setAccessibleDescription("WiFi AT commands"); - cmdGetCIPSTATUS.setText("CIPSTATUS"); - cmdGetCIPSTATUS - .setToolTipText("Get information about connection ( 2 - got IP, 3 - Connected, 4 - Disconnected )"); - cmdGetCIPSTATUS.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdGetCIPSTATUSActionPerformed(evt); + AT_SoftAP.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusGained(java.awt.event.FocusEvent evt) { + AT_SoftAPFocusGained(evt); } }); - TCP_common.add(cmdGetCIPSTATUS); - - cmdGetCIPMUX.setText("CIPMUX?"); - cmdGetCIPMUX.setToolTipText("Get information about current mode: Single or Multiple connection allowed"); - cmdGetCIPMUX.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdGetCIPMUXActionPerformed(evt); + AT_SoftAP.addComponentListener(new java.awt.event.ComponentAdapter() { + public void componentShown(java.awt.event.ComponentEvent evt) { + AT_SoftAPComponentShown(evt); } }); - TCP_common.add(cmdGetCIPMUX); - cmdSetCIPMUX1.setText("CIPMUX=1"); - cmdSetCIPMUX1.setToolTipText("Set mode for Multiple connections allowed"); - cmdSetCIPMUX1.addActionListener(new java.awt.event.ActionListener() { + WiFisoftAPPane.setBorder(javax.swing.BorderFactory + .createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "WiFi softAP")); + WiFisoftAPPane.setAlignmentX(0.0F); + WiFisoftAPPane.setAlignmentY(0.0F); + WiFisoftAPPane.setMaximumSize(new java.awt.Dimension(463, 291)); + WiFisoftAPPane.setMinimumSize(new java.awt.Dimension(463, 291)); + WiFisoftAPPane.setOpaque(true); + + cmdSetCWSAP.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N + cmdSetCWSAP.setIcon(new javax.swing.ImageIcon(getClass().getResource("/server1_start.png"))); // NOI18N + cmdSetCWSAP.setText("CWSAP= Set softAP config"); + cmdSetCWSAP.setToolTipText("Set configuraton of softAP mode"); + cmdSetCWSAP.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdSetCWSAP.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdSetCWSAP.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdSetCWSAP.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdSetCWSAP.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSetCIPMUX1ActionPerformed(evt); + cmdSetCWSAPActionPerformed(evt); } }); - TCP_common.add(cmdSetCIPMUX1); - cmdSetCIPMUX0.setText("CIPMUX=0"); - cmdSetCIPMUX0.setToolTipText("Set mode for Single only connection allowed"); - cmdSetCIPMUX0.addActionListener(new java.awt.event.ActionListener() { + cmdGetCWSAP.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N + cmdGetCWSAP.setIcon(new javax.swing.ImageIcon(getClass().getResource("/information.png"))); // NOI18N + cmdGetCWSAP.setText("AT+CWSAP? Get softAP config"); + cmdGetCWSAP.setToolTipText("Get configuraton of softAP mode"); + cmdGetCWSAP.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdGetCWSAP.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdGetCWSAP.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdGetCWSAP.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdGetCWSAP.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSetCIPMUX0ActionPerformed(evt); + cmdGetCWSAPActionPerformed(evt); } }); - TCP_common.add(cmdSetCIPMUX0); - cmdGetCIFSR.setText("CIFSR"); - cmdGetCIFSR.setToolTipText("Get local IP address (softAP or Station)"); - cmdGetCIFSR.addActionListener(new java.awt.event.ActionListener() { + cmdGetCIPAPMAC.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N + cmdGetCIPAPMAC.setIcon(new javax.swing.ImageIcon(getClass().getResource("/get.png"))); // NOI18N + cmdGetCIPAPMAC.setText("CIPAPMAC Get softAP MAC"); + cmdGetCIPAPMAC.setToolTipText("Get MAC address of ESP8266 softAP"); + cmdGetCIPAPMAC.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdGetCIPAPMAC.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdGetCIPAPMAC.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdGetCIPAPMAC.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdGetCIPAPMAC.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdGetCIFSRActionPerformed(evt); + cmdGetCIPAPMACActionPerformed(evt); } }); - TCP_common.add(cmdGetCIFSR); - - ATvXX.add(TCP_common, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 100, 450, 60)); - ATvXX.setLayer(TCP_common, javax.swing.JLayeredPane.PALETTE_LAYER); - WiFi_common.setBorder(javax.swing.BorderFactory - .createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "Common WiFi commands")); - WiFi_common.setAlignmentX(0.0F); - WiFi_common.setAlignmentY(0.0F); - WiFi_common.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR)); - WiFi_common.setName(""); // NOI18N - WiFi_common.setOpaque(true); - WiFi_common.setPreferredSize(new java.awt.Dimension(445, 110)); - WiFi_common.setLayout(new java.awt.FlowLayout()); - - cmdGetHelpCWMODE.setText("CWMODE=? - Get available modes"); - cmdGetHelpCWMODE.setToolTipText("Get value scope of WiFi mode (CommandWifiMODE)"); - cmdGetHelpCWMODE.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdGetHelpCWMODE.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdGetHelpCWMODE.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdGetHelpCWMODE.setPreferredSize(new java.awt.Dimension(210, 23)); - - binding = org.jdesktop.beansbinding.Bindings.createAutoBinding( - org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, cmdGetHelpCWMODE, - org.jdesktop.beansbinding.ELProperty.create("${font}"), cmdGetHelpCWMODE, - org.jdesktop.beansbinding.BeanProperty.create("font")); - bindingGroup.addBinding(binding); - - cmdGetHelpCWMODE.addActionListener(new java.awt.event.ActionListener() { + cmdGetCWLIF.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N + cmdGetCWLIF.setIcon(new javax.swing.ImageIcon(getClass().getResource("/get.png"))); // NOI18N + cmdGetCWLIF.setText("CWLIF Get connected clients IP"); + cmdGetCWLIF.setToolTipText("Get IP adresses softAP clients"); + cmdGetCWLIF.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdGetCWLIF.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdGetCWLIF.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdGetCWLIF.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdGetCWLIF.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdGetHelpCWMODEActionPerformed(evt); + cmdGetCWLIFActionPerformed(evt); } }); - WiFi_common.add(cmdGetHelpCWMODE); - - cmdSetCWMODE1.setText("CWMODE=1 Station"); - cmdSetCWMODE1.setToolTipText("Set ESP8266 WiFi mode 1 - Station"); - cmdSetCWMODE1.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdSetCWMODE1.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdSetCWMODE1.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdSetCWMODE1.setPreferredSize(new java.awt.Dimension(210, 23)); - - binding = org.jdesktop.beansbinding.Bindings.createAutoBinding( - org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, cmdGetHelpCWMODE, - org.jdesktop.beansbinding.ELProperty.create("${font}"), cmdSetCWMODE1, - org.jdesktop.beansbinding.BeanProperty.create("font")); - bindingGroup.addBinding(binding); - cmdSetCWMODE1.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSetCWMODE1ActionPerformed(evt); + SSIDsoftAP.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + SSIDsoftAP.setText("SSID"); + SSIDsoftAP.setToolTipText("Enter WiFi SSID"); + SSIDsoftAP.setMaximumSize(new java.awt.Dimension(100, 23)); + SSIDsoftAP.setMinimumSize(new java.awt.Dimension(100, 23)); + SSIDsoftAP.setPreferredSize(new java.awt.Dimension(100, 23)); + SSIDsoftAP.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusGained(java.awt.event.FocusEvent evt) { + SSIDsoftAPFocusGained(evt); } }); - WiFi_common.add(cmdSetCWMODE1); - - cmdGetCWMODE.setText("CWMODE? - Get current mode"); - cmdGetCWMODE.setToolTipText("Query ESP8266’s current WiFi mode. (CommandWifiMODE)"); - cmdGetCWMODE.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdGetCWMODE.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdGetCWMODE.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdGetCWMODE.setPreferredSize(new java.awt.Dimension(210, 23)); - - binding = org.jdesktop.beansbinding.Bindings.createAutoBinding( - org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, cmdGetHelpCWMODE, - org.jdesktop.beansbinding.ELProperty.create("${font}"), cmdGetCWMODE, - org.jdesktop.beansbinding.BeanProperty.create("font")); - bindingGroup.addBinding(binding); - - cmdGetCWMODE.addActionListener(new java.awt.event.ActionListener() { + SSIDsoftAP.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdGetCWMODEActionPerformed(evt); + SSIDsoftAPActionPerformed(evt); } }); - WiFi_common.add(cmdGetCWMODE); - - cmdSetCWMODE2.setText("CWMODE=2 softAP"); - cmdSetCWMODE2.setToolTipText("Set ESP8266 WiFi mode 2 - Soft Access Point mode"); - cmdSetCWMODE2.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdSetCWMODE2.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdSetCWMODE2.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdSetCWMODE2.setPreferredSize(new java.awt.Dimension(210, 23)); - - binding = org.jdesktop.beansbinding.Bindings.createAutoBinding( - org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, cmdGetHelpCWMODE, - org.jdesktop.beansbinding.ELProperty.create("${font}"), cmdSetCWMODE2, - org.jdesktop.beansbinding.BeanProperty.create("font")); - bindingGroup.addBinding(binding); - cmdSetCWMODE2.addActionListener(new java.awt.event.ActionListener() { + PASSsoftAP.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + PASSsoftAP.setText("password"); + PASSsoftAP.setToolTipText("Enter WiFi password"); + PASSsoftAP.setMaximumSize(new java.awt.Dimension(104, 23)); + PASSsoftAP.setMinimumSize(new java.awt.Dimension(104, 23)); + PASSsoftAP.setPreferredSize(new java.awt.Dimension(104, 23)); + PASSsoftAP.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusGained(java.awt.event.FocusEvent evt) { + PASSsoftAPFocusGained(evt); + } + }); + PASSsoftAP.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSetCWMODE2ActionPerformed(evt); + PASSsoftAPActionPerformed(evt); } }); - WiFi_common.add(cmdSetCWMODE2); - - cmdSetCWLAP.setIcon(new javax.swing.ImageIcon(getClass().getResource("/search again.png"))); // NOI18N - cmdSetCWLAP.setText("CWLAP - Get AP list"); - cmdSetCWLAP.setToolTipText("Lists all available WiFi Access Points"); - cmdSetCWLAP.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdSetCWLAP.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdSetCWLAP.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdSetCWLAP.setPreferredSize(new java.awt.Dimension(210, 23)); - - binding = org.jdesktop.beansbinding.Bindings.createAutoBinding( - org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, cmdGetHelpCWMODE, - org.jdesktop.beansbinding.ELProperty.create("${font}"), cmdSetCWLAP, - org.jdesktop.beansbinding.BeanProperty.create("font")); - bindingGroup.addBinding(binding); - cmdSetCWLAP.addActionListener(new java.awt.event.ActionListener() { + cmdGetCIPAP.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N + cmdGetCIPAP.setIcon(new javax.swing.ImageIcon(getClass().getResource("/get.png"))); // NOI18N + cmdGetCIPAP.setText("CIPAP Get softAP IP"); + cmdGetCIPAP.setToolTipText("Get IP address of ESP8266 softAP"); + cmdGetCIPAP.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdGetCIPAP.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdGetCIPAP.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdGetCIPAP.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdGetCIPAP.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSetCWLAPActionPerformed(evt); + cmdGetCIPAPActionPerformed(evt); } }); - WiFi_common.add(cmdSetCWLAP); - - cmdSetCWMODE3.setText("CWMODE=3 softAP + Station"); - cmdSetCWMODE3.setToolTipText("Set ESP8266 WiFi mode 3 - Soft Access Point mode + Station"); - cmdSetCWMODE3.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdSetCWMODE3.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdSetCWMODE3.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdSetCWMODE3.setPreferredSize(new java.awt.Dimension(210, 23)); - - binding = org.jdesktop.beansbinding.Bindings.createAutoBinding( - org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, cmdGetHelpCWMODE, - org.jdesktop.beansbinding.ELProperty.create("${font}"), cmdSetCWMODE3, - org.jdesktop.beansbinding.BeanProperty.create("font")); - bindingGroup.addBinding(binding); - cmdSetCWMODE3.addActionListener(new java.awt.event.ActionListener() { + cmdSetCIPAPMAC.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N + cmdSetCIPAPMAC.setIcon(new javax.swing.ImageIcon(getClass().getResource("/set.png"))); // NOI18N + cmdSetCIPAPMAC.setToolTipText("Set softAP MAC address"); + cmdSetCIPAPMAC.setLabel("CIPAPMAC= Set MAC softAP"); + cmdSetCIPAPMAC.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdSetCIPAPMAC.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdSetCIPAPMAC.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdSetCIPAPMAC.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdSetCIPAPMAC.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSetCWMODE3ActionPerformed(evt); + cmdSetCIPAPMACActionPerformed(evt); } }); - WiFi_common.add(cmdSetCWMODE3); - DHCP.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "0 - Enable DHCP", "1 - Disable DHCP" })); - DHCP.setMaximumSize(new java.awt.Dimension(114, 23)); - DHCP.setMinimumSize(new java.awt.Dimension(114, 23)); - DHCP.setPreferredSize(new java.awt.Dimension(114, 23)); - WiFi_common.add(DHCP); + try { + MAC1.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory( + new javax.swing.text.MaskFormatter("AA:AA:AA:AA:AA:AA"))); + } catch (java.text.ParseException ex) { + ex.printStackTrace(); + } + MAC1.setText("FF:FF:FF:FF:FF:FF"); + MAC1.setToolTipText("Station MAC address"); + MAC1.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + MAC1.setMaximumSize(new java.awt.Dimension(2108, 23)); + MAC1.setMinimumSize(new java.awt.Dimension(2108, 23)); + MAC1.setPreferredSize(new java.awt.Dimension(2108, 23)); - DHCPmode.setModel(new javax.swing.DefaultComboBoxModel( - new String[] { "0 - Set softAP", "1 - Set Station", "2 - Set both AP&Sta" })); - DHCPmode.setSelectedIndex(1); - DHCPmode.setMaximumSize(new java.awt.Dimension(90, 23)); - DHCPmode.setMinimumSize(new java.awt.Dimension(90, 23)); - DHCPmode.setPreferredSize(new java.awt.Dimension(90, 23)); - WiFi_common.add(DHCPmode); + encryption.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N + encryption.setModel(new javax.swing.DefaultComboBoxModel( + new String[] { "0 - Open", "1 - WPA_PSK", "2 - WPA2_PSK", "3 - WPA_WPA2_PSK" })); + encryption.setSelectedIndex(2); + encryption.setToolTipText("Set encryption type softAP"); + encryption.setMaximumSize(new java.awt.Dimension(104, 23)); + encryption.setMinimumSize(new java.awt.Dimension(104, 23)); + encryption.setPreferredSize(new java.awt.Dimension(104, 23)); - cmdSetCWDHCP.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - cmdSetCWDHCP.setText("AT+CWDHCP DHCP control"); - cmdSetCWDHCP.setToolTipText("Enable/Disable DHCP"); - cmdSetCWDHCP.setMargin(new java.awt.Insets(2, 2, 2, 2)); - cmdSetCWDHCP.setMaximumSize(new java.awt.Dimension(210, 23)); - cmdSetCWDHCP.setMinimumSize(new java.awt.Dimension(210, 23)); - cmdSetCWDHCP.setPreferredSize(new java.awt.Dimension(210, 23)); - cmdSetCWDHCP.addActionListener(new java.awt.event.ActionListener() { + channel.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N + channel.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "channel 1", "channel 2", "channel 3", + "channel 4", "channel 5", "channel 6", "channel 7", "channel 8", "channel 9", "channel 10", + "channel 11", "channel 12", "channel 13" })); + channel.setToolTipText("Set channell ID softAP"); + channel.setAlignmentX(0.0F); + channel.setMaximumSize(new java.awt.Dimension(100, 23)); + channel.setMinimumSize(new java.awt.Dimension(100, 23)); + channel.setPreferredSize(new java.awt.Dimension(100, 23)); + + softAPIP.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + softAPIP.setText("192.168.4.1"); + softAPIP.setToolTipText(""); + softAPIP.setMaximumSize(new java.awt.Dimension(210, 23)); + softAPIP.setMinimumSize(new java.awt.Dimension(210, 23)); + softAPIP.setPreferredSize(new java.awt.Dimension(210, 23)); + + cmdSetCIPAP.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N + cmdSetCIPAP.setIcon(new javax.swing.ImageIcon(getClass().getResource("/set.png"))); // NOI18N + cmdSetCIPAP.setToolTipText("Set softAP IP address"); + cmdSetCIPAP.setLabel("CIPAP= Set softAP IP"); + cmdSetCIPAP.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdSetCIPAP.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdSetCIPAP.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdSetCIPAP.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdSetCIPAP.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - cmdSetCWDHCPActionPerformed(evt); + cmdSetCIPAPActionPerformed(evt); } }); - WiFi_common.add(cmdSetCWDHCP); - - ATvXX.add(WiFi_common, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 100, 450, 140)); - ATvXX.setLayer(WiFi_common, javax.swing.JLayeredPane.PALETTE_LAYER); - - LeftTab.addTab("AT v0.20", ATvXX); - ComingSoon1.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N - ComingSoon1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - ComingSoon1.setText("Coming soon..."); + WiFisoftAPPane.setLayer(cmdSetCWSAP, javax.swing.JLayeredPane.DEFAULT_LAYER); + WiFisoftAPPane.setLayer(cmdGetCWSAP, javax.swing.JLayeredPane.DEFAULT_LAYER); + WiFisoftAPPane.setLayer(cmdGetCIPAPMAC, javax.swing.JLayeredPane.DEFAULT_LAYER); + WiFisoftAPPane.setLayer(cmdGetCWLIF, javax.swing.JLayeredPane.DEFAULT_LAYER); + WiFisoftAPPane.setLayer(SSIDsoftAP, javax.swing.JLayeredPane.DEFAULT_LAYER); + WiFisoftAPPane.setLayer(PASSsoftAP, javax.swing.JLayeredPane.DEFAULT_LAYER); + WiFisoftAPPane.setLayer(cmdGetCIPAP, javax.swing.JLayeredPane.DEFAULT_LAYER); + WiFisoftAPPane.setLayer(cmdSetCIPAPMAC, javax.swing.JLayeredPane.DEFAULT_LAYER); + WiFisoftAPPane.setLayer(MAC1, javax.swing.JLayeredPane.DEFAULT_LAYER); + WiFisoftAPPane.setLayer(encryption, javax.swing.JLayeredPane.DEFAULT_LAYER); + WiFisoftAPPane.setLayer(channel, javax.swing.JLayeredPane.DEFAULT_LAYER); + WiFisoftAPPane.setLayer(softAPIP, javax.swing.JLayeredPane.DEFAULT_LAYER); + WiFisoftAPPane.setLayer(cmdSetCIPAP, javax.swing.JLayeredPane.DEFAULT_LAYER); - javax.swing.GroupLayout FrankenshteinLayout = new javax.swing.GroupLayout(Frankenshtein); - Frankenshtein.setLayout(FrankenshteinLayout); - FrankenshteinLayout - .setHorizontalGroup(FrankenshteinLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(FrankenshteinLayout.createSequentialGroup().addGap(63, 63, 63) - .addComponent(ComingSoon1, javax.swing.GroupLayout.PREFERRED_SIZE, 335, + javax.swing.GroupLayout WiFisoftAPPaneLayout = new javax.swing.GroupLayout(WiFisoftAPPane); + WiFisoftAPPane.setLayout(WiFisoftAPPaneLayout); + WiFisoftAPPaneLayout.setHorizontalGroup(WiFisoftAPPaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(WiFisoftAPPaneLayout.createSequentialGroup().addContainerGap().addGroup(WiFisoftAPPaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(WiFisoftAPPaneLayout.createSequentialGroup().addGroup(WiFisoftAPPaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(MAC1, javax.swing.GroupLayout.PREFERRED_SIZE, 210, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))); - FrankenshteinLayout - .setVerticalGroup(FrankenshteinLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(FrankenshteinLayout.createSequentialGroup().addGap(155, 155, 155) - .addComponent(ComingSoon1, javax.swing.GroupLayout.PREFERRED_SIZE, 72, + .addComponent(cmdSetCIPAPMAC, javax.swing.GroupLayout.PREFERRED_SIZE, 210, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))); - Frankenshtein.setLayer(ComingSoon1, javax.swing.JLayeredPane.DEFAULT_LAYER); - - LeftTab.addTab("Frankenshtein", Frankenshtein); - - javax.swing.GroupLayout LeftBasePaneLayout = new javax.swing.GroupLayout(LeftBasePane); - LeftBasePane.setLayout(LeftBasePaneLayout); - LeftBasePaneLayout - .setHorizontalGroup(LeftBasePaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(LeftTab, javax.swing.GroupLayout.DEFAULT_SIZE, 542, Short.MAX_VALUE)); - LeftBasePaneLayout - .setVerticalGroup(LeftBasePaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(LeftTab, javax.swing.GroupLayout.DEFAULT_SIZE, 744, Short.MAX_VALUE)); - LeftBasePane.setLayer(LeftTab, javax.swing.JLayeredPane.DEFAULT_LAYER); - - LeftTab.getAccessibleContext().setAccessibleName("LeftTab"); + .addComponent(cmdGetCIPAP, javax.swing.GroupLayout.PREFERRED_SIZE, 210, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(cmdSetCIPAP, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(0, 0, Short.MAX_VALUE)) + .addGroup(WiFisoftAPPaneLayout.createSequentialGroup().addGroup(WiFisoftAPPaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) + .addGroup(WiFisoftAPPaneLayout.createSequentialGroup() + .addComponent(cmdGetCIPAPMAC, javax.swing.GroupLayout.PREFERRED_SIZE, 210, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(cmdSetCWSAP, javax.swing.GroupLayout.PREFERRED_SIZE, 1, + Short.MAX_VALUE)) + .addGroup(WiFisoftAPPaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(WiFisoftAPPaneLayout.createSequentialGroup() + .addGroup(WiFisoftAPPaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(cmdGetCWSAP, + javax.swing.GroupLayout.PREFERRED_SIZE, 210, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(cmdGetCWLIF, + javax.swing.GroupLayout.PREFERRED_SIZE, 210, + javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(WiFisoftAPPaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, + false) + .addComponent(SSIDsoftAP, + javax.swing.GroupLayout.PREFERRED_SIZE, 100, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(channel, javax.swing.GroupLayout.PREFERRED_SIZE, + 100, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(WiFisoftAPPaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, + false) + .addComponent(PASSsoftAP, + javax.swing.GroupLayout.PREFERRED_SIZE, 95, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(encryption, 0, 1, Short.MAX_VALUE))) + .addComponent(softAPIP, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE))) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))); + WiFisoftAPPaneLayout.setVerticalGroup(WiFisoftAPPaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(WiFisoftAPPaneLayout.createSequentialGroup().addContainerGap().addGroup(WiFisoftAPPaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(SSIDsoftAP, javax.swing.GroupLayout.PREFERRED_SIZE, 23, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(PASSsoftAP, javax.swing.GroupLayout.PREFERRED_SIZE, 23, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(cmdGetCWSAP, javax.swing.GroupLayout.PREFERRED_SIZE, 23, + javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(WiFisoftAPPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(WiFisoftAPPaneLayout.createSequentialGroup().addGap(4, 4, 4) + .addGroup(WiFisoftAPPaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(channel, javax.swing.GroupLayout.PREFERRED_SIZE, 23, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(encryption, javax.swing.GroupLayout.PREFERRED_SIZE, 23, + javax.swing.GroupLayout.PREFERRED_SIZE))) + .addGroup(WiFisoftAPPaneLayout.createSequentialGroup() + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cmdGetCWLIF, javax.swing.GroupLayout.PREFERRED_SIZE, 23, + javax.swing.GroupLayout.PREFERRED_SIZE))) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(WiFisoftAPPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(cmdGetCIPAPMAC, javax.swing.GroupLayout.PREFERRED_SIZE, 23, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(cmdSetCWSAP, javax.swing.GroupLayout.PREFERRED_SIZE, 23, + javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(MAC1, javax.swing.GroupLayout.PREFERRED_SIZE, 23, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cmdSetCIPAPMAC, javax.swing.GroupLayout.PREFERRED_SIZE, 23, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cmdGetCIPAP, javax.swing.GroupLayout.PREFERRED_SIZE, 23, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(softAPIP, javax.swing.GroupLayout.PREFERRED_SIZE, 23, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(cmdSetCIPAP, + javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap(246, Short.MAX_VALUE))); - HorizontSplit.setLeftComponent(LeftBasePane); + TopWiFiAPFiller.setOpaque(true); - LEDPanel.setMaximumSize(new java.awt.Dimension(392, 25)); - LEDPanel.setMinimumSize(new java.awt.Dimension(392, 25)); + AT_SoftAP.setLayer(WiFisoftAPPane, javax.swing.JLayeredPane.DEFAULT_LAYER); + AT_SoftAP.setLayer(TopWiFiAPFiller, javax.swing.JLayeredPane.DEFAULT_LAYER); - PortOpenLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - PortOpenLabel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/led_grey.png"))); // NOI18N - PortOpenLabel.setText("Open"); - PortOpenLabel.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); - PortOpenLabel.setMaximumSize(new java.awt.Dimension(50, 25)); - PortOpenLabel.setMinimumSize(new java.awt.Dimension(50, 25)); - PortOpenLabel.setPreferredSize(new java.awt.Dimension(50, 25)); - PortOpenLabel.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); + javax.swing.GroupLayout AT_SoftAPLayout = new javax.swing.GroupLayout(AT_SoftAP); + AT_SoftAP.setLayout(AT_SoftAPLayout); + AT_SoftAPLayout + .setHorizontalGroup(AT_SoftAPLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(WiFisoftAPPane, javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(TopWiFiAPFiller, javax.swing.GroupLayout.DEFAULT_SIZE, 535, Short.MAX_VALUE)); + AT_SoftAPLayout + .setVerticalGroup(AT_SoftAPLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, AT_SoftAPLayout.createSequentialGroup() + .addComponent(TopWiFiAPFiller, javax.swing.GroupLayout.PREFERRED_SIZE, 150, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(WiFisoftAPPane, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))); - PortCTS.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - PortCTS.setIcon(new javax.swing.ImageIcon(getClass().getResource("/led_grey.png"))); // NOI18N - PortCTS.setText("CTS"); - PortCTS.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); - PortCTS.setMaximumSize(new java.awt.Dimension(50, 25)); - PortCTS.setMinimumSize(new java.awt.Dimension(50, 25)); - PortCTS.setPreferredSize(new java.awt.Dimension(50, 25)); - PortCTS.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); + TabAT.addTab("WiFi softAP", AT_SoftAP); - PortDTR.setIcon(new javax.swing.ImageIcon(getClass().getResource("/led_grey.png"))); // NOI18N - PortDTR.setText("DTR"); - PortDTR.setToolTipText(""); - PortDTR.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); - PortDTR.setVerticalAlignment(javax.swing.SwingConstants.TOP); - PortDTR.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); - PortDTR.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - PortDTRActionPerformed(evt); + AT_Client.setToolTipText("TCP/IP related commands"); + AT_Client.setAlignmentX(0.0F); + AT_Client.setAlignmentY(0.0F); + AT_Client.setOpaque(false); + AT_Client.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusGained(java.awt.event.FocusEvent evt) { + AT_ClientFocusGained(evt); } }); - - PortRTS.setIcon(new javax.swing.ImageIcon(getClass().getResource("/led_grey.png"))); // NOI18N - PortRTS.setText("RTS"); - PortRTS.setToolTipText(""); - PortRTS.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); - PortRTS.setVerticalAlignment(javax.swing.SwingConstants.TOP); - PortRTS.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); - PortRTS.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - PortRTSActionPerformed(evt); + AT_Client.addComponentListener(new java.awt.event.ComponentAdapter() { + public void componentShown(java.awt.event.ComponentEvent evt) { + AT_ClientComponentShown(evt); } }); - Open.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - Open.setIcon(new javax.swing.ImageIcon(getClass().getResource("/connect1.png"))); // NOI18N - Open.setText("Open"); - Open.setToolTipText("Open/Close selected serial port"); - Open.setIconTextGap(2); - Open.setMargin(new java.awt.Insets(1, 1, 1, 1)); - Open.setMaximumSize(new java.awt.Dimension(100, 25)); - Open.setMinimumSize(new java.awt.Dimension(85, 25)); - Open.setPreferredSize(new java.awt.Dimension(80, 25)); - Open.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - OpenActionPerformed(evt); - } - }); + TopWiFiStaFiller1.setOpaque(true); - Speed.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - Speed.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "1200", "2400", "4800", "9600", "19200", - "38400", "57600", "74880", "115200", "230400", "460800", "921600" })); - Speed.setToolTipText("Select baud rate"); - Speed.setMaximumSize(new java.awt.Dimension(80, 25)); - Speed.setMinimumSize(new java.awt.Dimension(80, 25)); - Speed.setPreferredSize(new java.awt.Dimension(80, 25)); - Speed.addItemListener(new java.awt.event.ItemListener() { + common.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), + "Common parameters for commands", javax.swing.border.TitledBorder.CENTER, + javax.swing.border.TitledBorder.DEFAULT_POSITION)); + common.setMaximumSize(new java.awt.Dimension(445, 54)); + common.setMinimumSize(new java.awt.Dimension(445, 54)); + common.setPreferredSize(new java.awt.Dimension(445, 54)); + + conn_id.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "0", "1", "2", "3", "4" })); + conn_id.setToolTipText("Connection ID"); + + MUXGroup.add(single); + single.setText("CIPMUX=0 - Single"); + single.setToolTipText("Single connection"); + single.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent evt) { - SpeedItemStateChanged(evt); + singleItemStateChanged(evt); } }); - Speed.addFocusListener(new java.awt.event.FocusAdapter() { - public void focusLost(java.awt.event.FocusEvent evt) { - SpeedFocusLost(evt); + + MUXGroup.add(multi); + multi.setSelected(true); + multi.setText("CIPMUX=1 - Multiple"); + multi.setToolTipText("Multiple connection"); + multi.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + multiItemStateChanged(evt); } }); - Speed.addActionListener(new java.awt.event.ActionListener() { + multi.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - SpeedActionPerformed(evt); + multiActionPerformed(evt); } }); - ReScan.setIcon(new javax.swing.ImageIcon(getClass().getResource("/refresh3.png"))); // NOI18N - ReScan.setToolTipText("Scan system for available serial port"); - ReScan.setMaximumSize(new java.awt.Dimension(25, 25)); - ReScan.setMinimumSize(new java.awt.Dimension(25, 25)); - ReScan.setPreferredSize(new java.awt.Dimension(25, 25)); - ReScan.addActionListener(new java.awt.event.ActionListener() { + jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); + jLabel4.setText("Connection ID"); + + javax.swing.GroupLayout commonLayout = new javax.swing.GroupLayout(common); + common.setLayout(commonLayout); + commonLayout.setHorizontalGroup(commonLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(commonLayout.createSequentialGroup().addGap(2, 2, 2) + .addComponent(jLabel4, javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(conn_id, javax.swing.GroupLayout.PREFERRED_SIZE, 67, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(multi) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED).addComponent(single, + javax.swing.GroupLayout.PREFERRED_SIZE, 151, javax.swing.GroupLayout.PREFERRED_SIZE))); + commonLayout.setVerticalGroup(commonLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(commonLayout.createSequentialGroup() + .addGroup(commonLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(conn_id, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(multi).addComponent(single).addComponent(jLabel4)) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))); + + cmdGetCIPSTART.setIcon(new javax.swing.ImageIcon(getClass().getResource("/information.png"))); // NOI18N + cmdGetCIPSTART.setText("CIPSTART=? - Connection info"); + cmdGetCIPSTART.setToolTipText("Get the information of param"); + cmdGetCIPSTART.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - ReScanActionPerformed(evt); + cmdGetCIPSTARTActionPerformed(evt); } }); - AutoScroll.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N - AutoScroll.setSelected(true); - AutoScroll.setText("AutoScroll"); - AutoScroll.setToolTipText("Terminal AutoScroll Enable/Disable"); - AutoScroll.setMinimumSize(new java.awt.Dimension(70, 25)); - AutoScroll.setPreferredSize(new java.awt.Dimension(60, 25)); - AutoScroll.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - AutoScrollActionPerformed(evt); + UDP.setBorder(javax.swing.BorderFactory.createTitledBorder("UDP only")); + UDP.addPropertyChangeListener(new java.beans.PropertyChangeListener() { + public void propertyChange(java.beans.PropertyChangeEvent evt) { + UDPPropertyChange(evt); } }); - Port.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - Port.setMaximumRowCount(20); - Port.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "COM1", "COM3" })); - Port.setToolTipText("Serial port chooser"); - Port.setMaximumSize(new java.awt.Dimension(150, 25)); - Port.setMinimumSize(new java.awt.Dimension(150, 25)); - Port.setPreferredSize(new java.awt.Dimension(150, 25)); - Port.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - PortItemStateChanged(evt); - } - }); - Port.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - PortActionPerformed(evt); - } - }); + udp_local_port.setToolTipText("Local UDP port"); + udp_local_port.setEnabled(false); - EOL.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N - EOL.setText("EOL"); - EOL.setToolTipText("EOL visible Enable/Disable"); - EOL.setMinimumSize(new java.awt.Dimension(70, 25)); - EOL.setPreferredSize(new java.awt.Dimension(60, 25)); - EOL.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - EOLItemStateChanged(evt); - } - }); + jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + jLabel2.setText("Local port"); - javax.swing.GroupLayout LEDPanelLayout = new javax.swing.GroupLayout(LEDPanel); - LEDPanel.setLayout(LEDPanelLayout); - LEDPanelLayout.setHorizontalGroup(LEDPanelLayout - .createParallelGroup( - javax.swing.GroupLayout.Alignment.LEADING) - .addGroup( - LEDPanelLayout.createSequentialGroup() - .addGroup( - LEDPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(LEDPanelLayout.createSequentialGroup().addComponent(PortDTR) - .addPreferredGap( - javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(PortRTS)) - .addGroup(LEDPanelLayout.createSequentialGroup() - .addComponent(PortOpenLabel, javax.swing.GroupLayout.PREFERRED_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(PortCTS, javax.swing.GroupLayout.DEFAULT_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(Open, javax.swing.GroupLayout.PREFERRED_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, - javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(LEDPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(LEDPanelLayout.createSequentialGroup() - .addComponent(ReScan, javax.swing.GroupLayout.PREFERRED_SIZE, 37, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(LEDPanelLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(AutoScroll, javax.swing.GroupLayout.PREFERRED_SIZE, 66, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(EOL, javax.swing.GroupLayout.PREFERRED_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, - javax.swing.GroupLayout.PREFERRED_SIZE))) - .addComponent(Speed, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) - .addComponent(Port, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)); - LEDPanelLayout.setVerticalGroup(LEDPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(LEDPanelLayout.createSequentialGroup() - .addComponent(Port, javax.swing.GroupLayout.PREFERRED_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(LEDPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addGroup(javax.swing.GroupLayout.Alignment.LEADING, - LEDPanelLayout.createSequentialGroup() - .addGroup(LEDPanelLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(ReScan, javax.swing.GroupLayout.DEFAULT_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(LEDPanelLayout.createSequentialGroup() - .addComponent(AutoScroll, - javax.swing.GroupLayout.PREFERRED_SIZE, 0, - Short.MAX_VALUE) - .addPreferredGap( - javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(EOL, - javax.swing.GroupLayout.PREFERRED_SIZE, 16, - javax.swing.GroupLayout.PREFERRED_SIZE))) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(Speed, javax.swing.GroupLayout.PREFERRED_SIZE, 45, - javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(LEDPanelLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) - .addComponent(Open, javax.swing.GroupLayout.Alignment.LEADING, - javax.swing.GroupLayout.DEFAULT_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(javax.swing.GroupLayout.Alignment.LEADING, - LEDPanelLayout.createSequentialGroup().addGroup(LEDPanelLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(PortOpenLabel, - javax.swing.GroupLayout.PREFERRED_SIZE, 35, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(PortCTS, javax.swing.GroupLayout.PREFERRED_SIZE, - 35, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup( - LEDPanelLayout - .createParallelGroup( - javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(PortDTR).addComponent(PortRTS))))) - .addGap(0, 0, 0))); - LEDPanel.setLayer(PortOpenLabel, javax.swing.JLayeredPane.DEFAULT_LAYER); - LEDPanel.setLayer(PortCTS, javax.swing.JLayeredPane.DEFAULT_LAYER); - LEDPanel.setLayer(PortDTR, javax.swing.JLayeredPane.DEFAULT_LAYER); - LEDPanel.setLayer(PortRTS, javax.swing.JLayeredPane.DEFAULT_LAYER); - LEDPanel.setLayer(Open, javax.swing.JLayeredPane.DEFAULT_LAYER); - LEDPanel.setLayer(Speed, javax.swing.JLayeredPane.DEFAULT_LAYER); - LEDPanel.setLayer(ReScan, javax.swing.JLayeredPane.DEFAULT_LAYER); - LEDPanel.setLayer(AutoScroll, javax.swing.JLayeredPane.DEFAULT_LAYER); - LEDPanel.setLayer(Port, javax.swing.JLayeredPane.DEFAULT_LAYER); + udp_mode.setToolTipText("Local UDP port"); + udp_mode.setEnabled(false); - Port.getAccessibleContext().setAccessibleName(""); - LEDPanel.setLayer(EOL, javax.swing.JLayeredPane.DEFAULT_LAYER); + jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + jLabel3.setText("mode"); - RightBottomPane.setAlignmentX(0.0F); - RightBottomPane.setAlignmentY(0.0F); + UDP.setLayer(udp_local_port, javax.swing.JLayeredPane.DEFAULT_LAYER); + UDP.setLayer(jLabel2, javax.swing.JLayeredPane.DEFAULT_LAYER); + UDP.setLayer(udp_mode, javax.swing.JLayeredPane.DEFAULT_LAYER); + UDP.setLayer(jLabel3, javax.swing.JLayeredPane.DEFAULT_LAYER); - LF.setFont(LF.getFont().deriveFont(LF.getFont().getSize() - 4f)); - LF.setSelected(true); - LF.setText("LF"); - LF.setToolTipText("Add LF at end of line"); - LF.setAlignmentY(0.0F); - LF.setEnabled(false); - LF.setIconTextGap(0); - LF.setMargin(new java.awt.Insets(0, 0, 0, 0)); + javax.swing.GroupLayout UDPLayout = new javax.swing.GroupLayout(UDP); + UDP.setLayout(UDPLayout); + UDPLayout.setHorizontalGroup(UDPLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(UDPLayout.createSequentialGroup() + .addGroup(UDPLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(udp_local_port)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(UDPLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(udp_mode).addComponent(jLabel3, javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addGap(6, 6, 6))); + UDPLayout.setVerticalGroup(UDPLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(UDPLayout.createSequentialGroup() + .addGroup(UDPLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel2).addComponent(jLabel3)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(UDPLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(udp_local_port, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(udp_mode, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addContainerGap())); - SendCommand.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - SendCommand.setIcon(new javax.swing.ImageIcon(getClass().getResource("/left.png"))); // NOI18N - SendCommand.setToolTipText(""); - SendCommand.setAlignmentY(0.0F); - SendCommand.setEnabled(false); - SendCommand.setLabel("Send"); - SendCommand.setMargin(new java.awt.Insets(0, 0, 0, 0)); - SendCommand.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - SendCommandActionPerformed(evt); - } - }); + remote_address.setText("192.168.1.1"); + remote_address.setToolTipText("Remote IP address"); - CR.setFont(CR.getFont().deriveFont(CR.getFont().getSize() - 4f)); - CR.setSelected(true); - CR.setText("CR"); - CR.setToolTipText("Add CR at end of line"); - CR.setAlignmentY(0.0F); - CR.setEnabled(false); - CR.setIconTextGap(0); - CR.setMargin(new java.awt.Insets(0, 0, 0, 0)); - CR.setName(""); // NOI18N - CR.setNextFocusableComponent(Command); + remote_port.setText("80"); + remote_port.setToolTipText("Remote port"); - Command.setEditable(true); - Command.setMaximumRowCount(20); - Command.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "AT", "AT+GMR", "AT+RST", "" })); - Command.setToolTipText("Command to send"); - Command.setAlignmentX(0.0F); - Command.setAlignmentY(0.0F); - Command.setAutoscrolls(true); - Command.setEnabled(false); - Command.setName("Command"); // NOI18N - Command.addItemListener(new java.awt.event.ItemListener() { + protocol.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "TCP", "UDP" })); + protocol.setToolTipText("Connection type: TCP or UDP"); + protocol.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent evt) { - CommandItemStateChanged(evt); + protocolItemStateChanged(evt); } }); - Command.addActionListener(new java.awt.event.ActionListener() { + + cmdSetCIPSTART.setIcon(new javax.swing.ImageIcon(getClass().getResource("/connect3.png"))); // NOI18N + cmdSetCIPSTART.setText("AT+CIPSTART= - Start connection"); + cmdSetCIPSTART.setToolTipText("Start a connection as client"); + cmdSetCIPSTART.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - CommandActionPerformed(evt); + cmdSetCIPSTARTActionPerformed(evt); } }); - Command.addKeyListener(new java.awt.event.KeyAdapter() { - public void keyPressed(java.awt.event.KeyEvent evt) { - CommandKeyPressed(evt); - } - public void keyReleased(java.awt.event.KeyEvent evt) { - CommandKeyReleased(evt); - } + data.setColumns(15); + data.setRows(5); + data.setTabSize(4); + data.setText("GET / HTTP/1.0\nHost: 192.168.1.1\nConnection: keep-alive\nAccept: */*\n\n"); + data.setToolTipText("Data to send to remote client"); + data.setCaretPosition(1); + jScrollData.setViewportView(data); - public void keyTyped(java.awt.event.KeyEvent evt) { - CommandKeyTyped(evt); + cmdCIPSEND.setIcon(new javax.swing.ImageIcon(getClass().getResource("/level up.png"))); // NOI18N + cmdCIPSEND.setText("AT+CIPSEND= - Send data"); + cmdCIPSEND.setToolTipText("Send data to remote client"); + cmdCIPSEND.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + cmdCIPSENDActionPerformed(evt); } }); - javax.swing.GroupLayout RightBottomPaneLayout = new javax.swing.GroupLayout(RightBottomPane); - RightBottomPane.setLayout(RightBottomPaneLayout); - RightBottomPaneLayout - .setHorizontalGroup(RightBottomPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(RightBottomPaneLayout.createSequentialGroup() - .addComponent(Command, javax.swing.GroupLayout.PREFERRED_SIZE, 190, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(SendCommand, javax.swing.GroupLayout.PREFERRED_SIZE, 76, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(RightBottomPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(CR).addComponent(LF)) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))); - RightBottomPaneLayout.setVerticalGroup(RightBottomPaneLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(SendCommand, javax.swing.GroupLayout.Alignment.LEADING, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(javax.swing.GroupLayout.Alignment.LEADING, - RightBottomPaneLayout.createSequentialGroup().addComponent(CR) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(LF) - .addGap(0, 0, Short.MAX_VALUE)) - .addComponent(Command, javax.swing.GroupLayout.Alignment.LEADING)); - RightBottomPane.setLayer(LF, javax.swing.JLayeredPane.DEFAULT_LAYER); - RightBottomPane.setLayer(SendCommand, javax.swing.JLayeredPane.DEFAULT_LAYER); - - SendCommand.getAccessibleContext().setAccessibleName(""); - RightBottomPane.setLayer(CR, javax.swing.JLayeredPane.DEFAULT_LAYER); - RightBottomPane.setLayer(Command, javax.swing.JLayeredPane.DEFAULT_LAYER); - Command.getAccessibleContext().setAccessibleName("Command"); - - RightBigPane.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED)); - RightBigPane.addPropertyChangeListener(new java.beans.PropertyChangeListener() { - public void propertyChange(java.beans.PropertyChangeEvent evt) { - RightBigPanePropertyChange(evt); + cmdCIPSENDinteractive.setText("AT+CIPSEND - Interactive "); + cmdCIPSENDinteractive + .setToolTipText("Send data to remote client in interactive mode. After all data sent, type \"+++\""); + cmdCIPSENDinteractive.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + cmdCIPSENDinteractiveActionPerformed(evt); } }); - RightFilesSplitPane.setDividerLocation(300); - RightFilesSplitPane.setAutoscrolls(true); - RightFilesSplitPane.addPropertyChangeListener(new java.beans.PropertyChangeListener() { - public void propertyChange(java.beans.PropertyChangeEvent evt) { - RightFilesSplitPanePropertyChange(evt); + cmdSetCIPCLOSE.setIcon(new javax.swing.ImageIcon(getClass().getResource("/disconnect3.png"))); // NOI18N + cmdSetCIPCLOSE.setText("AT+CIPCLOSE - Close connection"); + cmdSetCIPCLOSE + .setToolTipText("Close current connection in Single mode and close connection in Multiple mode"); + cmdSetCIPCLOSE.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + cmdSetCIPCLOSEActionPerformed(evt); } }); - RightSplitPane.setBorder(null); - RightSplitPane.setDividerLocation(320); - RightSplitPane.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT); - RightSplitPane.setToolTipText(""); - RightSplitPane.setName(""); // NOI18N - RightSplitPane.addPropertyChangeListener(new java.beans.PropertyChangeListener() { - public void propertyChange(java.beans.PropertyChangeEvent evt) { - RightSplitPanePropertyChange(evt); - } - }); + TCPclientBottomPane.setLayer(common, javax.swing.JLayeredPane.DEFAULT_LAYER); + TCPclientBottomPane.setLayer(cmdGetCIPSTART, javax.swing.JLayeredPane.DEFAULT_LAYER); + TCPclientBottomPane.setLayer(UDP, javax.swing.JLayeredPane.DEFAULT_LAYER); + TCPclientBottomPane.setLayer(remote_address, javax.swing.JLayeredPane.DEFAULT_LAYER); + TCPclientBottomPane.setLayer(remote_port, javax.swing.JLayeredPane.DEFAULT_LAYER); + TCPclientBottomPane.setLayer(protocol, javax.swing.JLayeredPane.DEFAULT_LAYER); + TCPclientBottomPane.setLayer(cmdSetCIPSTART, javax.swing.JLayeredPane.DEFAULT_LAYER); + TCPclientBottomPane.setLayer(jScrollData, javax.swing.JLayeredPane.DEFAULT_LAYER); + TCPclientBottomPane.setLayer(cmdCIPSEND, javax.swing.JLayeredPane.DEFAULT_LAYER); + TCPclientBottomPane.setLayer(cmdCIPSENDinteractive, javax.swing.JLayeredPane.DEFAULT_LAYER); + TCPclientBottomPane.setLayer(cmdSetCIPCLOSE, javax.swing.JLayeredPane.DEFAULT_LAYER); - TerminalPane.setToolTipText("Terminal window"); - TerminalPane.setMaximumSize(new java.awt.Dimension(100, 100)); - TerminalPane.setMinimumSize(new java.awt.Dimension(100, 100)); - TerminalPane.setName(""); // NOI18N - TerminalPane.setPreferredSize(new java.awt.Dimension(100, 100)); - TerminalPane.setViewportView(Terminal); - - Terminal.setEditable(false); - Terminal.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED)); - Terminal.setColumns(20); - Terminal.setRows(50); - Terminal.setTabSize(4); - Terminal.setToolTipText(""); - Terminal.setWrapStyleWord(false); - Terminal.setBracketMatchingEnabled(false); - Terminal.setCloseCurlyBraces(false); - Terminal.setCloseMarkupTags(false); - Terminal.setDragEnabled(false); - Terminal.setFadeCurrentLineHighlight(true); - Terminal.setHighlightSecondaryLanguages(false); - Terminal.setMaximumSize(new java.awt.Dimension(100, 100)); - Terminal.setMinimumSize(new java.awt.Dimension(100, 100)); - Terminal.setName(""); // NOI18N - Terminal.setPopupMenu(ContextMenuTerminal); - Terminal.setSyntaxEditingStyle("text/LUA"); - Terminal.addPropertyChangeListener(new java.beans.PropertyChangeListener() { - public void propertyChange(java.beans.PropertyChangeEvent evt) { - TerminalPropertyChange(evt); - } - }); - TerminalPane.setViewportView(Terminal); - Terminal.getAccessibleContext().setAccessibleParent(TerminalPane); + javax.swing.GroupLayout TCPclientBottomPaneLayout = new javax.swing.GroupLayout(TCPclientBottomPane); + TCPclientBottomPane.setLayout(TCPclientBottomPaneLayout); + TCPclientBottomPaneLayout.setHorizontalGroup(TCPclientBottomPaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(common, javax.swing.GroupLayout.DEFAULT_SIZE, 535, Short.MAX_VALUE) + .addGroup(TCPclientBottomPaneLayout.createSequentialGroup() + .addComponent(UDP, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(TCPclientBottomPaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(TCPclientBottomPaneLayout.createSequentialGroup() + .addComponent(remote_address, javax.swing.GroupLayout.PREFERRED_SIZE, 97, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(remote_port, javax.swing.GroupLayout.PREFERRED_SIZE, 40, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(protocol, javax.swing.GroupLayout.PREFERRED_SIZE, 68, + javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(cmdSetCIPSTART)) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addGroup(TCPclientBottomPaneLayout.createSequentialGroup().addComponent(jScrollData) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(TCPclientBottomPaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(TCPclientBottomPaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(cmdCIPSEND, javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(cmdCIPSENDinteractive, javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(cmdSetCIPCLOSE, javax.swing.GroupLayout.DEFAULT_SIZE, 230, + Short.MAX_VALUE)) + .addComponent(cmdGetCIPSTART, javax.swing.GroupLayout.Alignment.TRAILING, + javax.swing.GroupLayout.PREFERRED_SIZE, 230, + javax.swing.GroupLayout.PREFERRED_SIZE)))); + TCPclientBottomPaneLayout.setVerticalGroup(TCPclientBottomPaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, TCPclientBottomPaneLayout.createSequentialGroup() + .addComponent(common, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGroup(TCPclientBottomPaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(TCPclientBottomPaneLayout.createSequentialGroup().addGap(18, 18, 18) + .addGroup(TCPclientBottomPaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(remote_address, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(remote_port, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(protocol, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cmdSetCIPSTART)) + .addGroup(TCPclientBottomPaneLayout.createSequentialGroup() + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(UDP, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE))) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(TCPclientBottomPaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(TCPclientBottomPaneLayout.createSequentialGroup().addComponent(cmdGetCIPSTART) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cmdCIPSEND) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cmdCIPSENDinteractive) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cmdSetCIPCLOSE).addContainerGap(295, Short.MAX_VALUE)) + .addComponent(jScrollData)))); - RightSplitPane.setTopComponent(TerminalPane); + javax.swing.GroupLayout AT_ClientLayout = new javax.swing.GroupLayout(AT_Client); + AT_Client.setLayout(AT_ClientLayout); + AT_ClientLayout.setHorizontalGroup(AT_ClientLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(TCPclientBottomPane) + .addComponent(TopWiFiStaFiller1, javax.swing.GroupLayout.DEFAULT_SIZE, 535, Short.MAX_VALUE)); + AT_ClientLayout.setVerticalGroup(AT_ClientLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(AT_ClientLayout.createSequentialGroup() + .addComponent(TopWiFiStaFiller1, javax.swing.GroupLayout.PREFERRED_SIZE, 60, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(TCPclientBottomPane))); - ScrollLog.setBorder(TerminalPane.getBorder()); - ScrollLog.setToolTipText("Log"); - ScrollLog.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); - ScrollLog.setAlignmentX(0.0F); - ScrollLog.setAlignmentY(0.0F); + TabAT.addTab("TCP/IP client", AT_Client); + AT_Client.getAccessibleContext().setAccessibleName("AT_IP"); + AT_Client.getAccessibleContext().setAccessibleDescription(""); - Log.setEditable(false); - Log.setBackground(new java.awt.Color(51, 51, 51)); - Log.setColumns(20); - Log.setFont(Log.getFont().deriveFont(Log.getFont().getSize() - 1f)); - Log.setForeground(new java.awt.Color(0, 204, 0)); - Log.setLineWrap(true); - Log.setRows(3); - Log.setTabSize(4); - Log.setText("Logging enable"); - Log.setToolTipText("Log"); - Log.setWrapStyleWord(true); - Log.setAlignmentX(0.0F); - Log.setAlignmentY(0.0F); - Log.setBorder(Terminal.getBorder()); - Log.setComponentPopupMenu(ContextMenuLog); - Log.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); - Log.setMargin(new java.awt.Insets(0, 0, 0, 0)); - Log.setName("Log"); // NOI18N - Log.setNextFocusableComponent(SendCommand); - Log.setSelectionColor(new java.awt.Color(204, 0, 0)); - Log.setSelectionEnd(0); - Log.addCaretListener(new javax.swing.event.CaretListener() { - public void caretUpdate(javax.swing.event.CaretEvent evt) { - LogCaretUpdate(evt); + AT_Server.setOpaque(false); + AT_Server.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusGained(java.awt.event.FocusEvent evt) { + AT_ServerFocusGained(evt); + } + }); + AT_Server.addComponentListener(new java.awt.event.ComponentAdapter() { + public void componentShown(java.awt.event.ComponentEvent evt) { + AT_ServerComponentShown(evt); } }); - ScrollLog.setViewportView(Log); - Log.getAccessibleContext().setAccessibleName("Log"); - - RightSplitPane.setBottomComponent(ScrollLog); - - javax.swing.GroupLayout TerminalLogPaneLayout = new javax.swing.GroupLayout(TerminalLogPane); - TerminalLogPane.setLayout(TerminalLogPaneLayout); - TerminalLogPaneLayout.setHorizontalGroup(TerminalLogPaneLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 299, Short.MAX_VALUE) - .addGroup(TerminalLogPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(RightSplitPane, javax.swing.GroupLayout.Alignment.TRAILING, - javax.swing.GroupLayout.DEFAULT_SIZE, 299, Short.MAX_VALUE))); - TerminalLogPaneLayout.setVerticalGroup(TerminalLogPaneLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 425, Short.MAX_VALUE) - .addGroup(TerminalLogPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(RightSplitPane, javax.swing.GroupLayout.DEFAULT_SIZE, 425, Short.MAX_VALUE))); - TerminalLogPane.setLayer(RightSplitPane, javax.swing.JLayeredPane.DEFAULT_LAYER); - - RightFilesSplitPane.setLeftComponent(TerminalLogPane); - FileManagerScrollPane.setBorder(null); - FileManagerScrollPane.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); - FileManagerScrollPane.setMaximumSize(new java.awt.Dimension(150, 150)); - FileManagerScrollPane.setPreferredSize(new java.awt.Dimension(150, 150)); + TCPServerTopFiller.setOpaque(true); - FileManagerPane.setMaximumSize(new java.awt.Dimension(145, 145)); - FileManagerPane.setName(""); // NOI18N - FileManagerPane.setPreferredSize(new java.awt.Dimension(145, 145)); - java.awt.FlowLayout flowLayout1 = new java.awt.FlowLayout(java.awt.FlowLayout.LEADING, 2, 2); - flowLayout1.setAlignOnBaseline(true); - FileManagerPane.setLayout(flowLayout1); + TCPServerBottomPane.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + TCPServerBottomPane.setMaximumSize(new java.awt.Dimension(463, 377)); + TCPServerBottomPane.setMinimumSize(new java.awt.Dimension(463, 377)); + TCPServerBottomPane.setOpaque(true); - FileFormat.setIcon(new javax.swing.ImageIcon(getClass().getResource("/file manager (delete).png"))); // NOI18N - FileFormat.setText("Format"); - FileFormat.setToolTipText("Format (erase) NodeMCU file system. All files will be removed!"); - FileFormat.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - FileFormat.setMargin(new java.awt.Insets(2, 4, 2, 4)); - FileFormat.setMaximumSize(new java.awt.Dimension(130, 25)); - FileFormat.setMinimumSize(new java.awt.Dimension(130, 25)); - FileFormat.setPreferredSize(new java.awt.Dimension(130, 25)); - FileFormat.addActionListener(new java.awt.event.ActionListener() { + cmdGetCIPMODE.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N + cmdGetCIPMODE.setIcon(new javax.swing.ImageIcon(getClass().getResource("/information.png"))); // NOI18N + cmdGetCIPMODE.setText("CIPMODE? 0 - normal"); + cmdGetCIPMODE.setToolTipText("Get current transfer mode (0- normal, 1 -unvarnished)"); + cmdGetCIPMODE.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdGetCIPMODE.setMaximumSize(new java.awt.Dimension(120, 23)); + cmdGetCIPMODE.setMinimumSize(new java.awt.Dimension(120, 23)); + cmdGetCIPMODE.setPreferredSize(new java.awt.Dimension(120, 23)); + cmdGetCIPMODE.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - FileFormatActionPerformed(evt); + cmdGetCIPMODEActionPerformed(evt); } }); - FileManagerPane.add(FileFormat); - FileSystemInfo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/file manager.png"))); // NOI18N - FileSystemInfo.setText("FS Info"); - FileSystemInfo.setToolTipText( - "Execute command file.fsinfo() and show total, used and remainig space on the ESP filesystem"); - FileSystemInfo.setAlignmentX(0.5F); - FileSystemInfo.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - FileSystemInfo.setMargin(new java.awt.Insets(2, 2, 2, 2)); - FileSystemInfo.setMaximumSize(new java.awt.Dimension(130, 25)); - FileSystemInfo.setPreferredSize(new java.awt.Dimension(130, 25)); - FileSystemInfo.addActionListener(new java.awt.event.ActionListener() { + cmdSetCIPMODE0.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N + cmdSetCIPMODE0.setText("CIPMODE=0"); + cmdSetCIPMODE0.setToolTipText("Set current transfer mode to 0 (normal mode)"); + cmdSetCIPMODE0.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdSetCIPMODE0.setMaximumSize(new java.awt.Dimension(120, 23)); + cmdSetCIPMODE0.setMinimumSize(new java.awt.Dimension(120, 23)); + cmdSetCIPMODE0.setPreferredSize(new java.awt.Dimension(120, 23)); + cmdSetCIPMODE0.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - FileSystemInfoActionPerformed(evt); + cmdSetCIPMODE0ActionPerformed(evt); } }); - FileManagerPane.add(FileSystemInfo); - FileListReload.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - FileListReload.setIcon(new javax.swing.ImageIcon(getClass().getResource("/refresh3.png"))); // NOI18N - FileListReload.setText("Reload"); - FileListReload.setAlignmentX(0.5F); - FileListReload.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - FileListReload.setMargin(new java.awt.Insets(2, 2, 2, 2)); - FileListReload.setMaximumSize(new java.awt.Dimension(130, 25)); - FileListReload.setPreferredSize(new java.awt.Dimension(130, 25)); - FileListReload.addActionListener(new java.awt.event.ActionListener() { + cmdSetCIPMODE1.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N + cmdSetCIPMODE1.setText("CIPMODE=1"); + cmdSetCIPMODE1.setToolTipText("Set current transfer mode to 1 (unvarnished mode)"); + cmdSetCIPMODE1.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdSetCIPMODE1.setMaximumSize(new java.awt.Dimension(120, 23)); + cmdSetCIPMODE1.setMinimumSize(new java.awt.Dimension(120, 23)); + cmdSetCIPMODE1.setPreferredSize(new java.awt.Dimension(120, 23)); + cmdSetCIPMODE1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - FileListReloadActionPerformed(evt); + cmdSetCIPMODE1ActionPerformed(evt); } }); - FileManagerPane.add(FileListReload); - FileAsButton1.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N - FileAsButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/file.png"))); // NOI18N - FileAsButton1.setText("File 1"); - FileAsButton1.setToolTipText("Left click"); - FileAsButton1.setAlignmentX(0.5F); - FileAsButton1.setComponentPopupMenu(ContextMenuESPFileLUA); - FileAsButton1.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - FileAsButton1.setMargin(new java.awt.Insets(2, 2, 2, 2)); - FileAsButton1.setMaximumSize(new java.awt.Dimension(130, 25)); - FileAsButton1.setPreferredSize(new java.awt.Dimension(130, 25)); - FileAsButton1.addMouseListener(new java.awt.event.MouseAdapter() { - public void mouseClicked(java.awt.event.MouseEvent evt) { - FileAsButton1MouseClicked(evt); + cmdSetCIPSERVER.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N + cmdSetCIPSERVER.setIcon(new javax.swing.ImageIcon(getClass().getResource("/web_server_start.png"))); // NOI18N + cmdSetCIPSERVER.setText("CIPSERVER Start/Stop"); + cmdSetCIPSERVER.setToolTipText("Set TCP server (Start and down)"); + cmdSetCIPSERVER.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdSetCIPSERVER.setMaximumSize(new java.awt.Dimension(120, 23)); + cmdSetCIPSERVER.setMinimumSize(new java.awt.Dimension(120, 23)); + cmdSetCIPSERVER.setPreferredSize(new java.awt.Dimension(120, 23)); + cmdSetCIPSERVER.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + cmdSetCIPSERVERActionPerformed(evt); } }); - FileAsButton1.addActionListener(new java.awt.event.ActionListener() { + + ServerMode.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N + ServerMode.setModel( + new javax.swing.DefaultComboBoxModel(new String[] { "0 - Delete Server", "1 - Create Server" })); + ServerMode.setSelectedIndex(1); + ServerMode.setToolTipText("Select MODE for CIPSERVER command"); + ServerMode.setAlignmentX(0.0F); + ServerMode.setMaximumSize(new java.awt.Dimension(120, 23)); + ServerMode.setMinimumSize(new java.awt.Dimension(120, 23)); + ServerMode.setPreferredSize(new java.awt.Dimension(120, 23)); + ServerMode.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - FileAsButton1ActionPerformed(evt); + ServerModeActionPerformed(evt); } }); - FileManagerPane.add(FileAsButton1); - FileRenamePanel.setMaximumSize(new java.awt.Dimension(130, 45)); - FileRenamePanel.setMinimumSize(new java.awt.Dimension(130, 45)); + jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); + jLabel5.setText("port"); - FileRenameLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - FileRenameLabel.setText("Old file name"); - FileRenameLabel.setToolTipText("Input new file name and hit Enter to completed or press Reload for cancel"); - FileRenameLabel.setMaximumSize(new java.awt.Dimension(130, 14)); - FileRenameLabel.setMinimumSize(new java.awt.Dimension(130, 14)); - FileRenameLabel.setPreferredSize(new java.awt.Dimension(130, 14)); + ServerPort.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + ServerPort.setText("80"); + ServerPort.setMaximumSize(new java.awt.Dimension(100, 23)); + ServerPort.setMinimumSize(new java.awt.Dimension(100, 23)); + ServerPort.setPreferredSize(new java.awt.Dimension(100, 23)); - FileRename.setText("NewFileName"); - FileRename.setToolTipText("Input new file name and hit Enter to completed or press Reload for cancel"); - FileRename.setMaximumSize(new java.awt.Dimension(130, 25)); - FileRename.setMinimumSize(new java.awt.Dimension(130, 25)); - FileRename.setPreferredSize(new java.awt.Dimension(130, 25)); - FileRename.addActionListener(new java.awt.event.ActionListener() { + cmdGetCIPSTO.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N + cmdGetCIPSTO.setIcon(new javax.swing.ImageIcon(getClass().getResource("/get.png"))); // NOI18N + cmdGetCIPSTO.setText("CIPSTO?"); + cmdGetCIPSTO.setToolTipText("Get current server timeout"); + cmdGetCIPSTO.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdGetCIPSTO.setMaximumSize(new java.awt.Dimension(120, 23)); + cmdGetCIPSTO.setMinimumSize(new java.awt.Dimension(120, 23)); + cmdGetCIPSTO.setPreferredSize(new java.awt.Dimension(120, 23)); + cmdGetCIPSTO.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - FileRenameActionPerformed(evt); + cmdGetCIPSTOActionPerformed(evt); } }); - javax.swing.GroupLayout FileRenamePanelLayout = new javax.swing.GroupLayout(FileRenamePanel); - FileRenamePanel.setLayout(FileRenamePanelLayout); - FileRenamePanelLayout - .setHorizontalGroup(FileRenamePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(FileRenamePanelLayout.createSequentialGroup() - .addGroup(FileRenamePanelLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(FileRename, javax.swing.GroupLayout.DEFAULT_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(FileRenameLabel, javax.swing.GroupLayout.DEFAULT_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addGap(0, 0, Short.MAX_VALUE))); - FileRenamePanelLayout - .setVerticalGroup(FileRenamePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(FileRenamePanelLayout.createSequentialGroup() - .addComponent(FileRenameLabel, javax.swing.GroupLayout.PREFERRED_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(FileRename, javax.swing.GroupLayout.PREFERRED_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(0, 0, Short.MAX_VALUE))); - FileRenamePanel.setLayer(FileRenameLabel, javax.swing.JLayeredPane.DEFAULT_LAYER); - FileRenamePanel.setLayer(FileRename, javax.swing.JLayeredPane.DEFAULT_LAYER); + cmdSetCIPSTO.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N + cmdSetCIPSTO.setIcon(new javax.swing.ImageIcon(getClass().getResource("/set.png"))); // NOI18N + cmdSetCIPSTO.setText("CIPSTO="); + cmdSetCIPSTO.setToolTipText("Set current server timeout"); + cmdSetCIPSTO.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdSetCIPSTO.setMaximumSize(new java.awt.Dimension(120, 23)); + cmdSetCIPSTO.setMinimumSize(new java.awt.Dimension(120, 23)); + cmdSetCIPSTO.setPreferredSize(new java.awt.Dimension(120, 23)); + cmdSetCIPSTO.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + cmdSetCIPSTOActionPerformed(evt); + } + }); - FileManagerPane.add(FileRenamePanel); + ServerTimeout.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + ServerTimeout.setText("60"); + ServerTimeout.setToolTipText("Set server timeout "); + ServerTimeout.setMaximumSize(new java.awt.Dimension(120, 23)); + ServerTimeout.setMinimumSize(new java.awt.Dimension(120, 23)); + ServerTimeout.setPreferredSize(new java.awt.Dimension(120, 23)); - FileManagerScrollPane.setViewportView(FileManagerPane); + jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); + jLabel6.setText("Server timeout"); - RightFilesSplitPane.setRightComponent(FileManagerScrollPane); + TCPServerBottomPane.setLayer(cmdGetCIPMODE, javax.swing.JLayeredPane.DEFAULT_LAYER); + TCPServerBottomPane.setLayer(cmdSetCIPMODE0, javax.swing.JLayeredPane.DEFAULT_LAYER); + TCPServerBottomPane.setLayer(cmdSetCIPMODE1, javax.swing.JLayeredPane.DEFAULT_LAYER); + TCPServerBottomPane.setLayer(cmdSetCIPSERVER, javax.swing.JLayeredPane.DEFAULT_LAYER); + TCPServerBottomPane.setLayer(ServerMode, javax.swing.JLayeredPane.DEFAULT_LAYER); + TCPServerBottomPane.setLayer(jLabel5, javax.swing.JLayeredPane.DEFAULT_LAYER); + TCPServerBottomPane.setLayer(ServerPort, javax.swing.JLayeredPane.DEFAULT_LAYER); + TCPServerBottomPane.setLayer(cmdGetCIPSTO, javax.swing.JLayeredPane.DEFAULT_LAYER); + TCPServerBottomPane.setLayer(cmdSetCIPSTO, javax.swing.JLayeredPane.DEFAULT_LAYER); + TCPServerBottomPane.setLayer(ServerTimeout, javax.swing.JLayeredPane.DEFAULT_LAYER); + TCPServerBottomPane.setLayer(jLabel6, javax.swing.JLayeredPane.DEFAULT_LAYER); - RightSnippetsPane.setLayout(new java.awt.FlowLayout()); + javax.swing.GroupLayout TCPServerBottomPaneLayout = new javax.swing.GroupLayout(TCPServerBottomPane); + TCPServerBottomPane.setLayout(TCPServerBottomPaneLayout); + TCPServerBottomPaneLayout.setHorizontalGroup(TCPServerBottomPaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(TCPServerBottomPaneLayout.createSequentialGroup().addGroup(TCPServerBottomPaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(cmdSetCIPSERVER, javax.swing.GroupLayout.PREFERRED_SIZE, 210, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addGroup(TCPServerBottomPaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(TCPServerBottomPaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(ServerMode, javax.swing.GroupLayout.PREFERRED_SIZE, 210, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(cmdSetCIPSTO, javax.swing.GroupLayout.PREFERRED_SIZE, 210, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addGroup(TCPServerBottomPaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(TCPServerBottomPaneLayout.createSequentialGroup() + .addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, + 102, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap( + javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(ServerTimeout, + javax.swing.GroupLayout.PREFERRED_SIZE, 98, + javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(TCPServerBottomPaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(cmdSetCIPMODE1, + javax.swing.GroupLayout.PREFERRED_SIZE, 210, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(cmdGetCIPSTO, + javax.swing.GroupLayout.PREFERRED_SIZE, 210, + javax.swing.GroupLayout.PREFERRED_SIZE))) + .addComponent(cmdGetCIPMODE, javax.swing.GroupLayout.PREFERRED_SIZE, 210, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(cmdSetCIPMODE0, javax.swing.GroupLayout.PREFERRED_SIZE, 210, + javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(TCPServerBottomPaneLayout.createSequentialGroup().addContainerGap() + .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 96, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(ServerPort, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE)))) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))); + TCPServerBottomPaneLayout.setVerticalGroup(TCPServerBottomPaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(TCPServerBottomPaneLayout.createSequentialGroup() + .addComponent(cmdGetCIPMODE, javax.swing.GroupLayout.PREFERRED_SIZE, 23, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(cmdSetCIPMODE0, javax.swing.GroupLayout.PREFERRED_SIZE, 23, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(cmdSetCIPMODE1, javax.swing.GroupLayout.PREFERRED_SIZE, 23, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(cmdGetCIPSTO, javax.swing.GroupLayout.PREFERRED_SIZE, 23, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(TCPServerBottomPaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(ServerTimeout, javax.swing.GroupLayout.PREFERRED_SIZE, 23, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel6)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(cmdSetCIPSTO, javax.swing.GroupLayout.PREFERRED_SIZE, 23, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(ServerMode, javax.swing.GroupLayout.PREFERRED_SIZE, 23, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(TCPServerBottomPaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(jLabel5) + .addComponent(ServerPort, javax.swing.GroupLayout.PREFERRED_SIZE, 23, + javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cmdSetCIPSERVER, javax.swing.GroupLayout.PREFERRED_SIZE, 23, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(0, 304, Short.MAX_VALUE))); - ButtonSnippet0.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonSnippet0.setMnemonic(KeyEvent.VK_BACK_QUOTE); - ButtonSnippet0.setText("Snippet0"); - ButtonSnippet0.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonSnippet0ActionPerformed(evt); - } - }); - RightSnippetsPane.add(ButtonSnippet0); + javax.swing.GroupLayout AT_ServerLayout = new javax.swing.GroupLayout(AT_Server); + AT_Server.setLayout(AT_ServerLayout); + AT_ServerLayout + .setHorizontalGroup(AT_ServerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(TCPServerBottomPane, javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(TCPServerTopFiller, javax.swing.GroupLayout.DEFAULT_SIZE, 535, Short.MAX_VALUE)); + AT_ServerLayout + .setVerticalGroup(AT_ServerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, AT_ServerLayout.createSequentialGroup() + .addComponent(TCPServerTopFiller, javax.swing.GroupLayout.PREFERRED_SIZE, 69, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(TCPServerBottomPane, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))); - ButtonSnippet1.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonSnippet1.setMnemonic(KeyEvent.VK_1); - ButtonSnippet1.setText("Snippet1"); - ButtonSnippet1.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonSnippet1ActionPerformed(evt); - } - }); - RightSnippetsPane.add(ButtonSnippet1); + TabAT.addTab("TCP/IP Server", AT_Server); - ButtonSnippet2.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonSnippet2.setMnemonic(KeyEvent.VK_2); - ButtonSnippet2.setText("Snippet2"); - ButtonSnippet2.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonSnippet2ActionPerformed(evt); - } - }); - RightSnippetsPane.add(ButtonSnippet2); + ATvXX.add(TabAT, new org.netbeans.lib.awtextra.AbsoluteConstraints(2, 70, 540, 645)); - ButtonSnippet3.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonSnippet3.setMnemonic(KeyEvent.VK_3); - ButtonSnippet3.setText("Snippet3"); - ButtonSnippet3.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonSnippet3ActionPerformed(evt); - } - }); - RightSnippetsPane.add(ButtonSnippet3); + TCP_common.setBorder(javax.swing.BorderFactory + .createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "Common TCP commands")); + TCP_common.setAlignmentX(0.0F); + TCP_common.setAlignmentY(0.0F); + TCP_common.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR)); + TCP_common.setMaximumSize(new java.awt.Dimension(445, 45)); + TCP_common.setMinimumSize(new java.awt.Dimension(445, 45)); + TCP_common.setOpaque(true); + TCP_common.setLayout(new java.awt.FlowLayout()); - ButtonSnippet4.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonSnippet4.setMnemonic(KeyEvent.VK_4); - ButtonSnippet4.setText("Snippet4"); - ButtonSnippet4.setToolTipText(""); - ButtonSnippet4.addActionListener(new java.awt.event.ActionListener() { + cmdGetCIPSTATUS.setText("CIPSTATUS"); + cmdGetCIPSTATUS + .setToolTipText("Get information about connection ( 2 - got IP, 3 - Connected, 4 - Disconnected )"); + cmdGetCIPSTATUS.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonSnippet4ActionPerformed(evt); + cmdGetCIPSTATUSActionPerformed(evt); } }); - RightSnippetsPane.add(ButtonSnippet4); + TCP_common.add(cmdGetCIPSTATUS); - ButtonSnippet5.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonSnippet5.setMnemonic(KeyEvent.VK_5); - ButtonSnippet5.setText("Snippet5"); - ButtonSnippet5.addActionListener(new java.awt.event.ActionListener() { + cmdGetCIPMUX.setText("CIPMUX?"); + cmdGetCIPMUX.setToolTipText("Get information about current mode: Single or Multiple connection allowed"); + cmdGetCIPMUX.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonSnippet5ActionPerformed(evt); + cmdGetCIPMUXActionPerformed(evt); } }); - RightSnippetsPane.add(ButtonSnippet5); + TCP_common.add(cmdGetCIPMUX); - ButtonSnippet6.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonSnippet6.setMnemonic(KeyEvent.VK_6); - ButtonSnippet6.setText("Snippet6"); - ButtonSnippet6.addActionListener(new java.awt.event.ActionListener() { + cmdSetCIPMUX1.setText("CIPMUX=1"); + cmdSetCIPMUX1.setToolTipText("Set mode for Multiple connections allowed"); + cmdSetCIPMUX1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonSnippet6ActionPerformed(evt); + cmdSetCIPMUX1ActionPerformed(evt); } }); - RightSnippetsPane.add(ButtonSnippet6); + TCP_common.add(cmdSetCIPMUX1); - ButtonSnippet7.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonSnippet7.setMnemonic(KeyEvent.VK_7); - ButtonSnippet7.setText("Snippet7"); - ButtonSnippet7.addActionListener(new java.awt.event.ActionListener() { + cmdSetCIPMUX0.setText("CIPMUX=0"); + cmdSetCIPMUX0.setToolTipText("Set mode for Single only connection allowed"); + cmdSetCIPMUX0.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonSnippet7ActionPerformed(evt); + cmdSetCIPMUX0ActionPerformed(evt); } }); - RightSnippetsPane.add(ButtonSnippet7); + TCP_common.add(cmdSetCIPMUX0); - ButtonSnippet8.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonSnippet8.setMnemonic(KeyEvent.VK_8); - ButtonSnippet8.setText("Snippet8"); - ButtonSnippet8.addActionListener(new java.awt.event.ActionListener() { + cmdGetCIFSR.setText("CIFSR"); + cmdGetCIFSR.setToolTipText("Get local IP address (softAP or Station)"); + cmdGetCIFSR.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonSnippet8ActionPerformed(evt); + cmdGetCIFSRActionPerformed(evt); } }); - RightSnippetsPane.add(ButtonSnippet8); + TCP_common.add(cmdGetCIFSR); - ButtonSnippet9.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonSnippet9.setMnemonic(KeyEvent.VK_9); - ButtonSnippet9.setText("Snippet9"); - ButtonSnippet9.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonSnippet9ActionPerformed(evt); + ATvXX.setLayer(TCP_common, javax.swing.JLayeredPane.PALETTE_LAYER); + ATvXX.add(TCP_common, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 100, 540, 60)); + + WiFi_common.setBorder(javax.swing.BorderFactory + .createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "Common WiFi commands")); + WiFi_common.setAlignmentX(0.0F); + WiFi_common.setAlignmentY(0.0F); + WiFi_common.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR)); + WiFi_common.setName(""); // NOI18N + WiFi_common.setOpaque(true); + WiFi_common.setPreferredSize(new java.awt.Dimension(445, 110)); + WiFi_common.setLayout(new java.awt.FlowLayout()); + + cmdGetHelpCWMODE.setText("CWMODE=? - Get available modes"); + cmdGetHelpCWMODE.setToolTipText("Get value scope of WiFi mode (CommandWifiMODE)"); + cmdGetHelpCWMODE.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdGetHelpCWMODE.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdGetHelpCWMODE.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdGetHelpCWMODE.setPreferredSize(new java.awt.Dimension(210, 23)); + + binding = org.jdesktop.beansbinding.Bindings.createAutoBinding( + org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, cmdGetHelpCWMODE, + org.jdesktop.beansbinding.ELProperty.create("${font}"), cmdGetHelpCWMODE, + org.jdesktop.beansbinding.BeanProperty.create("font")); + bindingGroup.addBinding(binding); + + cmdGetHelpCWMODE.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + cmdGetHelpCWMODEActionPerformed(evt); } }); - RightSnippetsPane.add(ButtonSnippet9); + WiFi_common.add(cmdGetHelpCWMODE); - ButtonSnippet10.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonSnippet10.setMnemonic(KeyEvent.VK_0); - ButtonSnippet10.setText("Snippet10"); - ButtonSnippet10.addActionListener(new java.awt.event.ActionListener() { + cmdSetCWMODE1.setText("CWMODE=1 Station"); + cmdSetCWMODE1.setToolTipText("Set ESP8266 WiFi mode 1 - Station"); + cmdSetCWMODE1.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdSetCWMODE1.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdSetCWMODE1.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdSetCWMODE1.setPreferredSize(new java.awt.Dimension(210, 23)); + + binding = org.jdesktop.beansbinding.Bindings.createAutoBinding( + org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, cmdGetHelpCWMODE, + org.jdesktop.beansbinding.ELProperty.create("${font}"), cmdSetCWMODE1, + org.jdesktop.beansbinding.BeanProperty.create("font")); + bindingGroup.addBinding(binding); + + cmdSetCWMODE1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonSnippet10ActionPerformed(evt); + cmdSetCWMODE1ActionPerformed(evt); } }); - RightSnippetsPane.add(ButtonSnippet10); + WiFi_common.add(cmdSetCWMODE1); - ButtonSnippet11.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonSnippet11.setMnemonic(KeyEvent.VK_MINUS); - ButtonSnippet11.setText("Snippet11"); - ButtonSnippet11.addActionListener(new java.awt.event.ActionListener() { + cmdGetCWMODE.setText("CWMODE? - Get current mode"); + cmdGetCWMODE.setToolTipText("Query ESP8266’s current WiFi mode. (CommandWifiMODE)"); + cmdGetCWMODE.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdGetCWMODE.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdGetCWMODE.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdGetCWMODE.setPreferredSize(new java.awt.Dimension(210, 23)); + + binding = org.jdesktop.beansbinding.Bindings.createAutoBinding( + org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, cmdGetHelpCWMODE, + org.jdesktop.beansbinding.ELProperty.create("${font}"), cmdGetCWMODE, + org.jdesktop.beansbinding.BeanProperty.create("font")); + bindingGroup.addBinding(binding); + + cmdGetCWMODE.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonSnippet11ActionPerformed(evt); + cmdGetCWMODEActionPerformed(evt); } }); - RightSnippetsPane.add(ButtonSnippet11); + WiFi_common.add(cmdGetCWMODE); - ButtonSnippet12.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonSnippet12.setMnemonic(KeyEvent.VK_EQUALS); - ButtonSnippet12.setText("Snippet12"); - ButtonSnippet12.addActionListener(new java.awt.event.ActionListener() { + cmdSetCWMODE2.setText("CWMODE=2 softAP"); + cmdSetCWMODE2.setToolTipText("Set ESP8266 WiFi mode 2 - Soft Access Point mode"); + cmdSetCWMODE2.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdSetCWMODE2.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdSetCWMODE2.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdSetCWMODE2.setPreferredSize(new java.awt.Dimension(210, 23)); + + binding = org.jdesktop.beansbinding.Bindings.createAutoBinding( + org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, cmdGetHelpCWMODE, + org.jdesktop.beansbinding.ELProperty.create("${font}"), cmdSetCWMODE2, + org.jdesktop.beansbinding.BeanProperty.create("font")); + bindingGroup.addBinding(binding); + + cmdSetCWMODE2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonSnippet12ActionPerformed(evt); + cmdSetCWMODE2ActionPerformed(evt); } }); - RightSnippetsPane.add(ButtonSnippet12); + WiFi_common.add(cmdSetCWMODE2); - ButtonSnippet13.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonSnippet13.setMnemonic(KeyEvent.VK_BACK_SLASH); - ButtonSnippet13.setText("Snippet13"); - ButtonSnippet13.addActionListener(new java.awt.event.ActionListener() { + cmdSetCWLAP.setIcon(new javax.swing.ImageIcon(getClass().getResource("/search again.png"))); // NOI18N + cmdSetCWLAP.setText("CWLAP - Get AP list"); + cmdSetCWLAP.setToolTipText("Lists all available WiFi Access Points"); + cmdSetCWLAP.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdSetCWLAP.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdSetCWLAP.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdSetCWLAP.setPreferredSize(new java.awt.Dimension(210, 23)); + + binding = org.jdesktop.beansbinding.Bindings.createAutoBinding( + org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, cmdGetHelpCWMODE, + org.jdesktop.beansbinding.ELProperty.create("${font}"), cmdSetCWLAP, + org.jdesktop.beansbinding.BeanProperty.create("font")); + bindingGroup.addBinding(binding); + + cmdSetCWLAP.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonSnippet13ActionPerformed(evt); + cmdSetCWLAPActionPerformed(evt); } }); - RightSnippetsPane.add(ButtonSnippet13); + WiFi_common.add(cmdSetCWLAP); - ButtonSnippet14.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonSnippet14.setMnemonic(KeyEvent.VK_BACK_SPACE); - ButtonSnippet14.setText("Snippet14"); - ButtonSnippet14.addActionListener(new java.awt.event.ActionListener() { + cmdSetCWMODE3.setText("CWMODE=3 softAP + Station"); + cmdSetCWMODE3.setToolTipText("Set ESP8266 WiFi mode 3 - Soft Access Point mode + Station"); + cmdSetCWMODE3.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdSetCWMODE3.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdSetCWMODE3.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdSetCWMODE3.setPreferredSize(new java.awt.Dimension(210, 23)); + + binding = org.jdesktop.beansbinding.Bindings.createAutoBinding( + org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, cmdGetHelpCWMODE, + org.jdesktop.beansbinding.ELProperty.create("${font}"), cmdSetCWMODE3, + org.jdesktop.beansbinding.BeanProperty.create("font")); + bindingGroup.addBinding(binding); + + cmdSetCWMODE3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonSnippet14ActionPerformed(evt); + cmdSetCWMODE3ActionPerformed(evt); } }); - RightSnippetsPane.add(ButtonSnippet14); + WiFi_common.add(cmdSetCWMODE3); - ButtonSnippet15.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ButtonSnippet15.setText("Snippet15"); - ButtonSnippet15.addActionListener(new java.awt.event.ActionListener() { + DHCP.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "0 - Enable DHCP", "1 - Disable DHCP" })); + DHCP.setMaximumSize(new java.awt.Dimension(114, 23)); + DHCP.setMinimumSize(new java.awt.Dimension(114, 23)); + DHCP.setPreferredSize(new java.awt.Dimension(114, 23)); + WiFi_common.add(DHCP); + + DHCPmode.setModel(new javax.swing.DefaultComboBoxModel( + new String[] { "0 - Set softAP", "1 - Set Station", "2 - Set both AP&Sta" })); + DHCPmode.setSelectedIndex(1); + DHCPmode.setMaximumSize(new java.awt.Dimension(90, 23)); + DHCPmode.setMinimumSize(new java.awt.Dimension(90, 23)); + DHCPmode.setPreferredSize(new java.awt.Dimension(90, 23)); + WiFi_common.add(DHCPmode); + + cmdSetCWDHCP.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N + cmdSetCWDHCP.setText("AT+CWDHCP DHCP control"); + cmdSetCWDHCP.setToolTipText("Enable/Disable DHCP"); + cmdSetCWDHCP.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdSetCWDHCP.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdSetCWDHCP.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdSetCWDHCP.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdSetCWDHCP.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - ButtonSnippet15ActionPerformed(evt); + cmdSetCWDHCPActionPerformed(evt); } }); - RightSnippetsPane.add(ButtonSnippet15); + WiFi_common.add(cmdSetCWDHCP); - javax.swing.GroupLayout RightBigPaneLayout = new javax.swing.GroupLayout(RightBigPane); - RightBigPane.setLayout(RightBigPaneLayout); - RightBigPaneLayout.setHorizontalGroup(RightBigPaneLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(RightFilesSplitPane) - .addComponent(RightSnippetsPane, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)); - RightBigPaneLayout - .setVerticalGroup(RightBigPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(RightBigPaneLayout.createSequentialGroup().addComponent(RightFilesSplitPane) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(RightSnippetsPane, javax.swing.GroupLayout.PREFERRED_SIZE, 96, - javax.swing.GroupLayout.PREFERRED_SIZE))); - RightBigPane.setLayer(RightFilesSplitPane, javax.swing.JLayeredPane.DEFAULT_LAYER); - RightBigPane.setLayer(RightSnippetsPane, javax.swing.JLayeredPane.DEFAULT_LAYER); + ATvXX.setLayer(WiFi_common, javax.swing.JLayeredPane.PALETTE_LAYER); + ATvXX.add(WiFi_common, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 100, 540, 140)); - logo.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); - logo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ESP8266-96x96.png"))); // NOI18N - logo.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); - logo.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT); - logo.addMouseListener(new java.awt.event.MouseAdapter() { - public void mouseClicked(java.awt.event.MouseEvent evt) { - logoMouseClicked(evt); + LeftTab.addTab(" AT-based ", ATvXX); + + RN2483.setOpaque(true); + + MacPane.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); + + LoRaMAC.setOpaque(true); + LoRaMAC.setPreferredSize(new java.awt.Dimension(729, 600)); + + MacCommon.setBorder(javax.swing.BorderFactory.createTitledBorder("Parameters")); + + cmdMacSetAdrOn.setText("mac set adr on"); + cmdMacSetAdrOn.setToolTipText("sys reset"); + cmdMacSetAdrOn.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdMacSetAdrOn.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdMacSetAdrOn.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdMacSetAdrOn.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdMacSetAdrOn.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + cmdMacSetAdrOnActionPerformed(evt); } }); - RightExtraButtons.setLayout(new java.awt.FlowLayout()); + cmdMacSetDR.setText("mac set dr (Data Rate)"); + cmdMacSetDR.setToolTipText("sys reset"); + cmdMacSetDR.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdMacSetDR.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdMacSetDR.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdMacSetDR.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdMacSetDR.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + cmdMacSetDRActionPerformed(evt); + } + }); - NodeHeap.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - NodeHeap.setText("Heap"); - NodeHeap.setToolTipText("Return the remain HEAP size in bytes"); - NodeHeap.setMaximumSize(new java.awt.Dimension(87, 30)); - NodeHeap.setMinimumSize(new java.awt.Dimension(87, 30)); - NodeHeap.setPreferredSize(new java.awt.Dimension(87, 30)); - NodeHeap.addActionListener(new java.awt.event.ActionListener() { + cmdMacSetPwrIdx.setText("mac set pwridx (Power)"); + cmdMacSetPwrIdx.setToolTipText("sys reset"); + cmdMacSetPwrIdx.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdMacSetPwrIdx.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdMacSetPwrIdx.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdMacSetPwrIdx.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdMacSetPwrIdx.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - NodeHeapActionPerformed(evt); + cmdMacSetPwrIdxActionPerformed(evt); } }); - RightExtraButtons.add(NodeHeap); - NodeInfo.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - NodeInfo.setText("Chip Info"); - NodeInfo.setToolTipText("Return NodeMCU version, chipid, flashid, flash size, flash mode, flash speed"); - NodeInfo.setMaximumSize(new java.awt.Dimension(87, 30)); - NodeInfo.setMinimumSize(new java.awt.Dimension(87, 30)); - NodeInfo.setPreferredSize(new java.awt.Dimension(87, 30)); - NodeInfo.addActionListener(new java.awt.event.ActionListener() { + cmdMacGetStatus.setText("mac get status"); + cmdMacGetStatus.setToolTipText("sys reset"); + cmdMacGetStatus.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdMacGetStatus.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdMacGetStatus.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdMacGetStatus.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdMacGetStatus.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - NodeInfoActionPerformed(evt); + cmdMacGetStatusActionPerformed(evt); } }); - RightExtraButtons.add(NodeInfo); - NodeChipID.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - NodeChipID.setText("Chip ID"); - NodeChipID.setToolTipText("Return chip ID"); - NodeChipID.setMargin(new java.awt.Insets(2, 2, 2, 2)); - NodeChipID.setMaximumSize(new java.awt.Dimension(87, 30)); - NodeChipID.setMinimumSize(new java.awt.Dimension(87, 30)); - NodeChipID.setPreferredSize(new java.awt.Dimension(87, 30)); - NodeChipID.addActionListener(new java.awt.event.ActionListener() { + cmdMacSetAdrOff.setText("mac set adr off"); + cmdMacSetAdrOff.setToolTipText("sys reset"); + cmdMacSetAdrOff.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdMacSetAdrOff.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdMacSetAdrOff.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdMacSetAdrOff.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdMacSetAdrOff.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - NodeChipIDActionPerformed(evt); + cmdMacSetAdrOffActionPerformed(evt); } }); - RightExtraButtons.add(NodeChipID); - NodeFlashID.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - NodeFlashID.setText("Flash ID"); - NodeFlashID.setToolTipText("Return flash ID"); - NodeFlashID.setMargin(new java.awt.Insets(2, 2, 2, 2)); - NodeFlashID.setMaximumSize(new java.awt.Dimension(87, 30)); - NodeFlashID.setMinimumSize(new java.awt.Dimension(87, 30)); - NodeFlashID.setPreferredSize(new java.awt.Dimension(87, 30)); - NodeFlashID.addActionListener(new java.awt.event.ActionListener() { + cmdMacGetAdr.setText("mac get adr"); + cmdMacGetAdr.setToolTipText("sys reset"); + cmdMacGetAdr.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdMacGetAdr.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdMacGetAdr.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdMacGetAdr.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdMacGetAdr.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - NodeFlashIDActionPerformed(evt); + cmdMacGetAdrActionPerformed(evt); } }); - RightExtraButtons.add(NodeFlashID); - NodeReset.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - NodeReset.setIcon(new javax.swing.ImageIcon(getClass().getResource("/reset.png"))); // NOI18N - NodeReset.setText("Reset"); - NodeReset.setToolTipText("Soft reset by command node.reset()"); - NodeReset.setMargin(new java.awt.Insets(2, 4, 2, 4)); - NodeReset.setMaximumSize(new java.awt.Dimension(87, 30)); - NodeReset.setMinimumSize(new java.awt.Dimension(87, 30)); - NodeReset.setPreferredSize(new java.awt.Dimension(87, 30)); - NodeReset.addActionListener(new java.awt.event.ActionListener() { + MacDR.setText("5"); + MacDR.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - NodeResetActionPerformed(evt); + MacDRActionPerformed(evt); } }); - RightExtraButtons.add(NodeReset); - DonateSmall.setIcon(new javax.swing.ImageIcon(getClass().getResource("/donate-small.gif"))); // NOI18N - DonateSmall.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); - DonateSmall.setMargin(new java.awt.Insets(2, 2, 2, 2)); - DonateSmall.setMaximumSize(new java.awt.Dimension(100, 35)); - DonateSmall.setMinimumSize(new java.awt.Dimension(100, 35)); - DonateSmall.setPreferredSize(new java.awt.Dimension(100, 35)); - DonateSmall.addActionListener(new java.awt.event.ActionListener() { + MacPower.setText("1"); + MacPower.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - DonateSmallActionPerformed(evt); + MacPowerActionPerformed(evt); } }); - javax.swing.GroupLayout RightBasePaneLayout = new javax.swing.GroupLayout(RightBasePane); - RightBasePane.setLayout(RightBasePaneLayout); - RightBasePaneLayout.setHorizontalGroup(RightBasePaneLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(RightBasePaneLayout.createSequentialGroup().addGroup(RightBasePaneLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(RightBigPane) - .addGroup(RightBasePaneLayout.createSequentialGroup().addComponent(LEDPanel, - javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, - javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, - javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(logo)) - .addGroup(RightBasePaneLayout.createSequentialGroup().addGroup(RightBasePaneLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(RightBasePaneLayout.createSequentialGroup() - .addComponent(RightBottomPane, javax.swing.GroupLayout.PREFERRED_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, + cmdMacGetDR.setText("mac get dr"); + cmdMacGetDR.setToolTipText("sys reset"); + cmdMacGetDR.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdMacGetDR.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdMacGetDR.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdMacGetDR.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdMacGetDR.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + cmdMacGetDRActionPerformed(evt); + } + }); + + cmdMacGetPwrIdx.setText("mac get pwridx"); + cmdMacGetPwrIdx.setToolTipText("sys reset"); + cmdMacGetPwrIdx.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdMacGetPwrIdx.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdMacGetPwrIdx.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdMacGetPwrIdx.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdMacGetPwrIdx.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + cmdMacGetPwrIdxActionPerformed(evt); + } + }); + + MacCommon.setLayer(cmdMacSetAdrOn, javax.swing.JLayeredPane.DEFAULT_LAYER); + MacCommon.setLayer(cmdMacSetDR, javax.swing.JLayeredPane.DEFAULT_LAYER); + MacCommon.setLayer(cmdMacSetPwrIdx, javax.swing.JLayeredPane.DEFAULT_LAYER); + MacCommon.setLayer(cmdMacGetStatus, javax.swing.JLayeredPane.DEFAULT_LAYER); + MacCommon.setLayer(cmdMacSetAdrOff, javax.swing.JLayeredPane.DEFAULT_LAYER); + MacCommon.setLayer(cmdMacGetAdr, javax.swing.JLayeredPane.DEFAULT_LAYER); + MacCommon.setLayer(MacDR, javax.swing.JLayeredPane.DEFAULT_LAYER); + MacCommon.setLayer(MacPower, javax.swing.JLayeredPane.DEFAULT_LAYER); + MacCommon.setLayer(cmdMacGetDR, javax.swing.JLayeredPane.DEFAULT_LAYER); + MacCommon.setLayer(cmdMacGetPwrIdx, javax.swing.JLayeredPane.DEFAULT_LAYER); + + javax.swing.GroupLayout MacCommonLayout = new javax.swing.GroupLayout(MacCommon); + MacCommon.setLayout(MacCommonLayout); + MacCommonLayout.setHorizontalGroup(MacCommonLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(MacCommonLayout.createSequentialGroup() + .addGroup(MacCommonLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) + .addComponent(cmdMacGetStatus, javax.swing.GroupLayout.Alignment.LEADING, + javax.swing.GroupLayout.PREFERRED_SIZE, 180, Short.MAX_VALUE) + .addComponent(cmdMacSetPwrIdx, javax.swing.GroupLayout.Alignment.LEADING, + javax.swing.GroupLayout.PREFERRED_SIZE, 1, Short.MAX_VALUE) + .addComponent(cmdMacSetDR, javax.swing.GroupLayout.Alignment.LEADING, + javax.swing.GroupLayout.PREFERRED_SIZE, 1, Short.MAX_VALUE) + .addComponent(cmdMacSetAdrOn, javax.swing.GroupLayout.PREFERRED_SIZE, 1, + Short.MAX_VALUE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(MacCommonLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(cmdMacSetAdrOff, javax.swing.GroupLayout.PREFERRED_SIZE, 100, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(MacDR).addComponent(MacPower)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(MacCommonLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(MacCommonLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(cmdMacGetDR, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(DonateSmall, javax.swing.GroupLayout.PREFERRED_SIZE, 100, - javax.swing.GroupLayout.PREFERRED_SIZE)) - .addComponent(RightExtraButtons, javax.swing.GroupLayout.PREFERRED_SIZE, + .addComponent(cmdMacGetAdr, javax.swing.GroupLayout.PREFERRED_SIZE, 1, + Short.MAX_VALUE)) + .addComponent(cmdMacGetPwrIdx, javax.swing.GroupLayout.PREFERRED_SIZE, 100, + javax.swing.GroupLayout.PREFERRED_SIZE)) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))); + MacCommonLayout.setVerticalGroup(MacCommonLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(MacCommonLayout.createSequentialGroup() + .addGroup(MacCommonLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(cmdMacSetAdrOn, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(cmdMacSetAdrOff, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(cmdMacGetAdr, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGap(0, 0, Short.MAX_VALUE))) - .addContainerGap())); - RightBasePaneLayout.setVerticalGroup(RightBasePaneLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(RightBasePaneLayout.createSequentialGroup().addGap(1, 1, 1) - .addGroup(RightBasePaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(LEDPanel, javax.swing.GroupLayout.PREFERRED_SIZE, + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(MacCommonLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(cmdMacSetDR, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(logo)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(RightBigPane) - .addGap(5, 5, 5) - .addComponent(RightExtraButtons, javax.swing.GroupLayout.PREFERRED_SIZE, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(MacDR, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(cmdMacGetDR, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(RightBasePaneLayout - .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(RightBottomPane).addComponent(DonateSmall, - javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, - Short.MAX_VALUE)))); - RightBasePane.setLayer(LEDPanel, javax.swing.JLayeredPane.DEFAULT_LAYER); - RightBasePane.setLayer(RightBottomPane, javax.swing.JLayeredPane.DEFAULT_LAYER); - RightBasePane.setLayer(RightBigPane, javax.swing.JLayeredPane.DEFAULT_LAYER); - RightBasePane.setLayer(logo, javax.swing.JLayeredPane.DEFAULT_LAYER); - RightBasePane.setLayer(RightExtraButtons, javax.swing.JLayeredPane.DEFAULT_LAYER); - RightBasePane.setLayer(DonateSmall, javax.swing.JLayeredPane.DEFAULT_LAYER); - - HorizontSplit.setRightComponent(RightBasePane); + .addGroup(MacCommonLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(cmdMacSetPwrIdx, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(MacPower, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(cmdMacGetPwrIdx, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cmdMacGetStatus, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))); - MainMenuBar.setAlignmentX(0.0F); - MainMenuBar.setName("MainMenu"); // NOI18N - MainMenuBar.setPreferredSize(new java.awt.Dimension(300, 22)); + SendUnconfirmed.setBorder(javax.swing.BorderFactory.createTitledBorder("Send Data")); - MenuFile.setText("File"); - MenuFile.addActionListener(new java.awt.event.ActionListener() { + cmdMacTX.setText("Transmit data"); + cmdMacTX.setToolTipText("sys reset"); + cmdMacTX.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdMacTX.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdMacTX.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdMacTX.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdMacTX.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuFileActionPerformed(evt); + cmdMacTXActionPerformed(evt); } }); - MenuItemFileNew.setAccelerator( - javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_N, java.awt.event.InputEvent.CTRL_MASK)); - MenuItemFileNew.setIcon(new javax.swing.ImageIcon(getClass().getResource("/document.png"))); // NOI18N - MenuItemFileNew.setText("New"); - MenuItemFileNew.setToolTipText("File New"); - MenuItemFileNew.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemFileNewActionPerformed(evt); + MacTxPort.setText("16"); + + MacTxData.setText("48454c4c4f"); + + TxConfirmed.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "uncnf", "cnf", " " })); + TxConfirmed.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + TxConfirmedItemStateChanged(evt); } }); - MenuFile.add(MenuItemFileNew); - - MenuItemFileOpen.setAccelerator( - javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_O, java.awt.event.InputEvent.CTRL_MASK)); - MenuItemFileOpen.setIcon(new javax.swing.ImageIcon(getClass().getResource("/folder open.png"))); // NOI18N - MenuItemFileOpen.setText("Open from disk"); - MenuItemFileOpen.addActionListener(new java.awt.event.ActionListener() { + TxConfirmed.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemFileOpenActionPerformed(evt); + TxConfirmedActionPerformed(evt); } }); - MenuFile.add(MenuItemFileOpen); - MenuItemFileReload.setAccelerator( - javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_R, java.awt.event.InputEvent.CTRL_MASK)); - MenuItemFileReload.setIcon(new javax.swing.ImageIcon(getClass().getResource("/refresh.png"))); // NOI18N - MenuItemFileReload.setText("Reload from disk"); - MenuItemFileReload.setToolTipText("Reload file from disk, if you use external editor"); - MenuItemFileReload.setEnabled(false); - MenuItemFileReload.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemFileReloadActionPerformed(evt); + jLabel13.setText("default: HELLO"); + + SendUnconfirmed.setLayer(cmdMacTX, javax.swing.JLayeredPane.DEFAULT_LAYER); + SendUnconfirmed.setLayer(MacTxPort, javax.swing.JLayeredPane.DEFAULT_LAYER); + SendUnconfirmed.setLayer(MacTxData, javax.swing.JLayeredPane.DEFAULT_LAYER); + SendUnconfirmed.setLayer(TxConfirmed, javax.swing.JLayeredPane.DEFAULT_LAYER); + SendUnconfirmed.setLayer(jLabel13, javax.swing.JLayeredPane.DEFAULT_LAYER); + + javax.swing.GroupLayout SendUnconfirmedLayout = new javax.swing.GroupLayout(SendUnconfirmed); + SendUnconfirmed.setLayout(SendUnconfirmedLayout); + SendUnconfirmedLayout.setHorizontalGroup(SendUnconfirmedLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(SendUnconfirmedLayout.createSequentialGroup() + .addComponent(cmdMacTX, javax.swing.GroupLayout.PREFERRED_SIZE, 120, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(TxConfirmed, javax.swing.GroupLayout.PREFERRED_SIZE, 100, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(MacTxPort, javax.swing.GroupLayout.PREFERRED_SIZE, 50, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(SendUnconfirmedLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel13, javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(MacTxData)) + .addContainerGap())); + SendUnconfirmedLayout.setVerticalGroup(SendUnconfirmedLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(SendUnconfirmedLayout.createSequentialGroup().addComponent(jLabel13) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(SendUnconfirmedLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(MacTxData, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(MacTxPort, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addGroup(SendUnconfirmedLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(cmdMacTX, javax.swing.GroupLayout.PREFERRED_SIZE, 40, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(TxConfirmed, javax.swing.GroupLayout.PREFERRED_SIZE, 40, + javax.swing.GroupLayout.PREFERRED_SIZE))); + + RadioPane.setBorder(javax.swing.BorderFactory.createTitledBorder("Radio")); + + MacSF.setModel(new javax.swing.DefaultComboBoxModel<>( + new String[] { "sf7", "sf8", "sf9", "sf10", "sf11", "sf12", " " })); + MacSF.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + MacSFItemStateChanged(evt); } }); - MenuFile.add(MenuItemFileReload); - - MenuItemFileSave.setAccelerator( - javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.CTRL_MASK)); - MenuItemFileSave.setIcon(new javax.swing.ImageIcon(getClass().getResource("/save.png"))); // NOI18N - MenuItemFileSave.setText("Save to disk"); - MenuItemFileSave.addActionListener(new java.awt.event.ActionListener() { + MacSF.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemFileSaveActionPerformed(evt); + MacSFActionPerformed(evt); } }); - MenuFile.add(MenuItemFileSave); - MenuItemFileSaveAs.setIcon(new javax.swing.ImageIcon(getClass().getResource("/save.png"))); // NOI18N - MenuItemFileSaveAs.setText("Save As.. to disk"); - MenuItemFileSaveAs.addActionListener(new java.awt.event.ActionListener() { + jLabel11.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + jLabel11.setText("Spread Factor"); + + RadioRxBandWidth.setText("25"); + + RadioFreq.setText("868100000"); + + cmdRadiosetRxBw.setText(" set rx band widh"); + cmdRadiosetRxBw.setToolTipText("sys reset"); + cmdRadiosetRxBw.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdRadiosetRxBw.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdRadiosetRxBw.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdRadiosetRxBw.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdRadiosetRxBw.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemFileSaveAsActionPerformed(evt); + cmdRadiosetRxBwActionPerformed(evt); } }); - MenuFile.add(MenuItemFileSaveAs); - MenuItemFileSaveAll.setAccelerator( - javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_A, java.awt.event.InputEvent.CTRL_MASK)); - MenuItemFileSaveAll.setIcon(new javax.swing.ImageIcon(getClass().getResource("/save_all.png"))); // NOI18N - MenuItemFileSaveAll.setText("Save All to disk"); - MenuItemFileSaveAll.setEnabled(false); - MenuFile.add(MenuItemFileSaveAll); - - MenuItemFileClose.setAccelerator( - javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F4, java.awt.event.InputEvent.CTRL_MASK)); - MenuItemFileClose.setIcon(new javax.swing.ImageIcon(getClass().getResource("/folder closed.png"))); // NOI18N - MenuItemFileClose.setText("Close"); - MenuItemFileClose.addActionListener(new java.awt.event.ActionListener() { + cmdRadioSetFreq.setText("radio set freq"); + cmdRadioSetFreq.setToolTipText("sys reset"); + cmdRadioSetFreq.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdRadioSetFreq.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdRadioSetFreq.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdRadioSetFreq.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdRadioSetFreq.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemFileCloseActionPerformed(evt); + cmdRadioSetFreqActionPerformed(evt); } }); - MenuFile.add(MenuItemFileClose); - MenuFile.add(jSeparatorFileMenu); - - MenuItemFileSaveESP.setAccelerator( - javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.ALT_MASK)); - MenuItemFileSaveESP.setIcon(new javax.swing.ImageIcon(getClass().getResource("/move.png"))); // NOI18N - MenuItemFileSaveESP.setText("Save to ESP"); - - binding = org.jdesktop.beansbinding.Bindings.createAutoBinding( - org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, FileSaveESP, - org.jdesktop.beansbinding.ELProperty.create("${enabled}"), MenuItemFileSaveESP, - org.jdesktop.beansbinding.BeanProperty.create("enabled")); - bindingGroup.addBinding(binding); - MenuItemFileSaveESP.addActionListener(new java.awt.event.ActionListener() { + cmdRadioGetSF.setText("radio get sf"); + cmdRadioGetSF.setToolTipText("sys reset"); + cmdRadioGetSF.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdRadioGetSF.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdRadioGetSF.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdRadioGetSF.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdRadioGetSF.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemFileSaveESPActionPerformed(evt); + cmdRadioGetSFActionPerformed(evt); } }); - MenuFile.add(MenuItemFileSaveESP); - - jMenuItem4.setAccelerator( - javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_A, java.awt.event.InputEvent.ALT_MASK)); - jMenuItem4.setText("Save All to ESP"); - jMenuItem4.setEnabled(false); - MenuFile.add(jMenuItem4); - MenuItemFileSendESP.setAccelerator( - javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_E, java.awt.event.InputEvent.ALT_MASK)); - MenuItemFileSendESP.setIcon(new javax.swing.ImageIcon(getClass().getResource("/script_send.png"))); // NOI18N - MenuItemFileSendESP.setText("Send to ESP"); - MenuItemFileSendESP.addActionListener(new java.awt.event.ActionListener() { + cmdRadioGetBw.setText("radio get bw"); + cmdRadioGetBw.setToolTipText("sys reset"); + cmdRadioGetBw.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdRadioGetBw.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdRadioGetBw.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdRadioGetBw.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdRadioGetBw.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemFileSendESPActionPerformed(evt); + cmdRadioGetBwActionPerformed(evt); } }); - MenuFile.add(MenuItemFileSendESP); - - jMenuItem7.setAccelerator( - javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_U, java.awt.event.InputEvent.ALT_MASK)); - jMenuItem7.setText("Upload file to ESP"); - jMenuItem7.setEnabled(false); - MenuFile.add(jMenuItem7); - MenuFile.add(jSeparator4); - MenuItemFileDo.setAccelerator( - javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_D, java.awt.event.InputEvent.ALT_MASK)); - MenuItemFileDo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/play.png"))); // NOI18N - MenuItemFileDo.setText("DoFile on ESP"); - MenuItemFileDo.addActionListener(new java.awt.event.ActionListener() { + cmdRadioGetRxBw.setText("radio get rxbw"); + cmdRadioGetRxBw.setToolTipText("sys reset"); + cmdRadioGetRxBw.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdRadioGetRxBw.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdRadioGetRxBw.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdRadioGetRxBw.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdRadioGetRxBw.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemFileDoActionPerformed(evt); + cmdRadioGetRxBwActionPerformed(evt); } }); - MenuFile.add(MenuItemFileDo); - MenuFile.add(jSeparator3); - MenuItemFileRemoveESP.setAccelerator( - javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_R, java.awt.event.InputEvent.ALT_MASK)); - MenuItemFileRemoveESP.setIcon(new javax.swing.ImageIcon(getClass().getResource("/trash.png"))); // NOI18N - MenuItemFileRemoveESP.setText("Remove from ESP"); - MenuItemFileRemoveESP.addActionListener(new java.awt.event.ActionListener() { + cmdRadioGetFreq.setText("radio get freq"); + cmdRadioGetFreq.setToolTipText("sys reset"); + cmdRadioGetFreq.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdRadioGetFreq.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdRadioGetFreq.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdRadioGetFreq.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdRadioGetFreq.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemFileRemoveESPActionPerformed(evt); + cmdRadioGetFreqActionPerformed(evt); } }); - MenuFile.add(MenuItemFileRemoveESP); - MenuFile.add(jSeparator2); - MenuItemFileExit.setAccelerator( - javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F4, java.awt.event.InputEvent.ALT_MASK)); - MenuItemFileExit.setLabel("Exit"); - MenuItemFileExit.addActionListener(new java.awt.event.ActionListener() { + MacBandWidth.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "125", "250", "500", " " })); + MacBandWidth.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + MacBandWidthItemStateChanged(evt); + } + }); + MacBandWidth.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemFileExitActionPerformed(evt); + MacBandWidthActionPerformed(evt); } }); - MenuFile.add(MenuItemFileExit); - MainMenuBar.add(MenuFile); + jLabel12.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + jLabel12.setText("Band Width"); - MenuEdit.setText("Edit"); + RadioPane.setLayer(MacSF, javax.swing.JLayeredPane.DEFAULT_LAYER); + RadioPane.setLayer(jLabel11, javax.swing.JLayeredPane.DEFAULT_LAYER); + RadioPane.setLayer(RadioRxBandWidth, javax.swing.JLayeredPane.DEFAULT_LAYER); + RadioPane.setLayer(RadioFreq, javax.swing.JLayeredPane.DEFAULT_LAYER); + RadioPane.setLayer(cmdRadiosetRxBw, javax.swing.JLayeredPane.DEFAULT_LAYER); + RadioPane.setLayer(cmdRadioSetFreq, javax.swing.JLayeredPane.DEFAULT_LAYER); + RadioPane.setLayer(cmdRadioGetSF, javax.swing.JLayeredPane.DEFAULT_LAYER); + RadioPane.setLayer(cmdRadioGetBw, javax.swing.JLayeredPane.DEFAULT_LAYER); + RadioPane.setLayer(cmdRadioGetRxBw, javax.swing.JLayeredPane.DEFAULT_LAYER); + RadioPane.setLayer(cmdRadioGetFreq, javax.swing.JLayeredPane.DEFAULT_LAYER); + RadioPane.setLayer(MacBandWidth, javax.swing.JLayeredPane.DEFAULT_LAYER); + RadioPane.setLayer(jLabel12, javax.swing.JLayeredPane.DEFAULT_LAYER); - MenuItemEditUndo.setAccelerator( - javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_Z, java.awt.event.InputEvent.CTRL_MASK)); - MenuItemEditUndo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/undo1.png"))); // NOI18N - MenuItemEditUndo.setText("Undo"); - MenuItemEditUndo.setEnabled(false); - MenuItemEditUndo.addActionListener(new java.awt.event.ActionListener() { + javax.swing.GroupLayout RadioPaneLayout = new javax.swing.GroupLayout(RadioPane); + RadioPane.setLayout(RadioPaneLayout); + RadioPaneLayout.setHorizontalGroup(RadioPaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(RadioPaneLayout.createSequentialGroup().addGroup(RadioPaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(RadioPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) + .addComponent(jLabel11, javax.swing.GroupLayout.Alignment.LEADING, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, + Short.MAX_VALUE) + .addComponent(cmdRadiosetRxBw, javax.swing.GroupLayout.PREFERRED_SIZE, 180, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(cmdRadioSetFreq, javax.swing.GroupLayout.PREFERRED_SIZE, 180, + javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(jLabel12, javax.swing.GroupLayout.Alignment.TRAILING, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, + Short.MAX_VALUE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(RadioPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(MacSF, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(RadioRxBandWidth) + .addComponent(RadioFreq, javax.swing.GroupLayout.DEFAULT_SIZE, 100, Short.MAX_VALUE) + .addComponent(MacBandWidth, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(RadioPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(cmdRadioGetSF, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) + .addComponent(cmdRadioGetBw, javax.swing.GroupLayout.PREFERRED_SIZE, 1, Short.MAX_VALUE) + .addComponent(cmdRadioGetRxBw, javax.swing.GroupLayout.PREFERRED_SIZE, 1, + Short.MAX_VALUE) + .addComponent(cmdRadioGetFreq, javax.swing.GroupLayout.PREFERRED_SIZE, 1, + Short.MAX_VALUE)) + .addGap(92, 92, 92))); + RadioPaneLayout.setVerticalGroup(RadioPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(RadioPaneLayout.createSequentialGroup().addGroup(RadioPaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(RadioPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel11).addComponent(MacSF, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(cmdRadioGetSF, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(RadioPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(cmdRadioGetBw, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(MacBandWidth, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel12)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(RadioPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(cmdRadiosetRxBw, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(RadioRxBandWidth, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(cmdRadioGetRxBw, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(RadioPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(cmdRadioSetFreq, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(RadioFreq, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(cmdRadioGetFreq, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE)))); + + jLayeredPane1.setBorder(javax.swing.BorderFactory.createTitledBorder("System")); + + cmdSysReset.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N + cmdSysReset.setText("sys reset"); + cmdSysReset.setToolTipText("sys reset"); + cmdSysReset.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdSysReset.setMaximumSize(new java.awt.Dimension(210, 30)); + cmdSysReset.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdSysReset.setPreferredSize(new java.awt.Dimension(210, 40)); + cmdSysReset.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemEditUndoActionPerformed(evt); + cmdSysResetActionPerformed(evt); } }); - MenuEdit.add(MenuItemEditUndo); - MenuItemEditRedo.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F4, 0)); - MenuItemEditRedo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/redo1.png"))); // NOI18N - MenuItemEditRedo.setText("Redo"); - MenuItemEditRedo.setEnabled(false); - MenuItemEditRedo.addActionListener(new java.awt.event.ActionListener() { + cmdSysFactoryReset.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N + cmdSysFactoryReset.setText("sys factoryRESET"); + cmdSysFactoryReset.setToolTipText(""); + cmdSysFactoryReset.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdSysFactoryReset.setMaximumSize(new java.awt.Dimension(210, 30)); + cmdSysFactoryReset.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdSysFactoryReset.setPreferredSize(new java.awt.Dimension(210, 40)); + cmdSysFactoryReset.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemEditRedoActionPerformed(evt); + cmdSysFactoryResetActionPerformed(evt); } }); - MenuEdit.add(MenuItemEditRedo); - MenuEdit.add(jSeparator7); - MenuItemEditCut.setAccelerator( - javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_X, java.awt.event.InputEvent.CTRL_MASK)); - MenuItemEditCut.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cut.png"))); // NOI18N - MenuItemEditCut.setText("Cut"); - MenuItemEditCut.setEnabled(false); - MenuItemEditCut.addActionListener(new java.awt.event.ActionListener() { + cmdSysGetVer.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N + cmdSysGetVer.setText("sys get ver"); + cmdSysGetVer.setToolTipText(""); + cmdSysGetVer.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdSysGetVer.setMaximumSize(new java.awt.Dimension(210, 30)); + cmdSysGetVer.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdSysGetVer.setPreferredSize(new java.awt.Dimension(210, 40)); + cmdSysGetVer.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemEditCutActionPerformed(evt); + cmdSysGetVerActionPerformed(evt); } }); - MenuEdit.add(MenuItemEditCut); - MenuItemEditCopy.setAccelerator( - javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C, java.awt.event.InputEvent.CTRL_MASK)); - MenuItemEditCopy.setIcon(new javax.swing.ImageIcon(getClass().getResource("/copy.png"))); // NOI18N - MenuItemEditCopy.setText("Copy"); - MenuItemEditCopy.setEnabled(false); - MenuItemEditCopy.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemEditCopyActionPerformed(evt); - } - }); - MenuEdit.add(MenuItemEditCopy); - - MenuItemEditPaste.setAccelerator( - javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_V, java.awt.event.InputEvent.CTRL_MASK)); - MenuItemEditPaste.setIcon(new javax.swing.ImageIcon(getClass().getResource("/paste.png"))); // NOI18N - MenuItemEditPaste.setText("Paste"); - MenuItemEditPaste.setToolTipText(""); - MenuItemEditPaste.setEnabled(false); - MenuItemEditPaste.addActionListener(new java.awt.event.ActionListener() { + cmdSysGetHwEui.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N + cmdSysGetHwEui.setText("sys get hweui"); + cmdSysGetHwEui.setToolTipText(""); + cmdSysGetHwEui.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdSysGetHwEui.setMaximumSize(new java.awt.Dimension(210, 30)); + cmdSysGetHwEui.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdSysGetHwEui.setPreferredSize(new java.awt.Dimension(210, 40)); + cmdSysGetHwEui.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemEditPasteActionPerformed(evt); + cmdSysGetHwEuiActionPerformed(evt); } }); - MenuEdit.add(MenuItemEditPaste); - MenuEdit.add(jSeparator5); - MenuItemEditSendSelected.setAccelerator( - javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_B, java.awt.event.InputEvent.ALT_MASK)); - MenuItemEditSendSelected.setIcon(new javax.swing.ImageIcon(getClass().getResource("/send_selected.png"))); // NOI18N - MenuItemEditSendSelected.setText("Send selected Block to ESP"); - MenuItemEditSendSelected.setToolTipText("Send selected block to ESP"); + jLayeredPane1.setLayer(cmdSysReset, javax.swing.JLayeredPane.DEFAULT_LAYER); + jLayeredPane1.setLayer(cmdSysFactoryReset, javax.swing.JLayeredPane.DEFAULT_LAYER); + jLayeredPane1.setLayer(cmdSysGetVer, javax.swing.JLayeredPane.DEFAULT_LAYER); + jLayeredPane1.setLayer(cmdSysGetHwEui, javax.swing.JLayeredPane.DEFAULT_LAYER); - binding = org.jdesktop.beansbinding.Bindings.createAutoBinding( - org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, MenuItemEditorSendSelected, - org.jdesktop.beansbinding.ELProperty.create("${enabled}"), MenuItemEditSendSelected, - org.jdesktop.beansbinding.BeanProperty.create("enabled")); - bindingGroup.addBinding(binding); + javax.swing.GroupLayout jLayeredPane1Layout = new javax.swing.GroupLayout(jLayeredPane1); + jLayeredPane1.setLayout(jLayeredPane1Layout); + jLayeredPane1Layout + .setHorizontalGroup( + jLayeredPane1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jLayeredPane1Layout.createSequentialGroup() + .addComponent(cmdSysReset, javax.swing.GroupLayout.PREFERRED_SIZE, 120, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cmdSysFactoryReset, javax.swing.GroupLayout.PREFERRED_SIZE, 120, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cmdSysGetVer, javax.swing.GroupLayout.PREFERRED_SIZE, 120, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cmdSysGetHwEui, javax.swing.GroupLayout.PREFERRED_SIZE, 120, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap(20, Short.MAX_VALUE))); + jLayeredPane1Layout + .setVerticalGroup(jLayeredPane1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jLayeredPane1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(cmdSysReset, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(cmdSysGetVer, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(cmdSysFactoryReset, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(cmdSysGetHwEui, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))); + + LoRaMAC.setLayer(MacCommon, javax.swing.JLayeredPane.DEFAULT_LAYER); + LoRaMAC.setLayer(SendUnconfirmed, javax.swing.JLayeredPane.DEFAULT_LAYER); + LoRaMAC.setLayer(RadioPane, javax.swing.JLayeredPane.DEFAULT_LAYER); + LoRaMAC.setLayer(jLayeredPane1, javax.swing.JLayeredPane.DEFAULT_LAYER); + + javax.swing.GroupLayout LoRaMACLayout = new javax.swing.GroupLayout(LoRaMAC); + LoRaMAC.setLayout(LoRaMACLayout); + LoRaMACLayout.setHorizontalGroup(LoRaMACLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(LoRaMACLayout.createSequentialGroup() + .addGroup(LoRaMACLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(MacCommon).addComponent(RadioPane).addComponent(SendUnconfirmed) + .addComponent(jLayeredPane1)) + .addGap(199, 199, 199))); + LoRaMACLayout.setVerticalGroup(LoRaMACLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(LoRaMACLayout.createSequentialGroup() + .addComponent(MacCommon, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(RadioPane, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(SendUnconfirmed, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jLayeredPane1, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(0, 276, Short.MAX_VALUE))); - MenuItemEditSendSelected.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemEditSendSelectedActionPerformed(evt); - } - }); - MenuEdit.add(MenuItemEditSendSelected); + MacPane.setViewportView(LoRaMAC); - MenuItemEditSendLine.setAccelerator( - javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_L, java.awt.event.InputEvent.ALT_MASK)); - MenuItemEditSendLine.setIcon(new javax.swing.ImageIcon(getClass().getResource("/run_line.png"))); // NOI18N - MenuItemEditSendLine.setText("Send current Line to ESP"); - MenuItemEditSendLine.setToolTipText("Send current line from code editor window to ESP"); - MenuItemEditSendLine.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemEditSendLineActionPerformed(evt); - } - }); - MenuEdit.add(MenuItemEditSendLine); + RN2483jTab.addTab(" MAC & Radio", MacPane); - MainMenuBar.add(MenuEdit); + ActivationPane.setPreferredSize(new java.awt.Dimension(537, 600)); - MenuESP.setText("ESP"); - MenuESP.setToolTipText(""); + ABPPane.setBorder(javax.swing.BorderFactory.createTitledBorder("Activation By Personalization")); - MenuItemESPReset.setIcon(new javax.swing.ImageIcon(getClass().getResource("/reset.png"))); // NOI18N - MenuItemESPReset.setText("Restart ESP module"); - MenuItemESPReset.setToolTipText("Send RESET command (firmware depended)"); - MenuItemESPReset.setEnabled(false); - MenuItemESPReset.addActionListener(new java.awt.event.ActionListener() { + cmdMacSetDevAddr.setText("mac set devaddr"); + cmdMacSetDevAddr.setToolTipText("sys reset"); + cmdMacSetDevAddr.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdMacSetDevAddr.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdMacSetDevAddr.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdMacSetDevAddr.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdMacSetDevAddr.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemESPResetActionPerformed(evt); + cmdMacSetDevAddrActionPerformed(evt); } }); - MenuESP.add(MenuItemESPReset); - MenuItemESPFormat.setIcon(new javax.swing.ImageIcon(getClass().getResource("/file manager (delete).png"))); // NOI18N - MenuItemESPFormat.setText("Format ESP"); - MenuItemESPFormat.setToolTipText("Remove All files from ESP flash memory"); - MenuItemESPFormat.setEnabled(false); - MenuItemESPFormat.addActionListener(new java.awt.event.ActionListener() { + cmdMacSetNwkSKey.setText("mac set nwkskey"); + cmdMacSetNwkSKey.setToolTipText("sys reset"); + cmdMacSetNwkSKey.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdMacSetNwkSKey.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdMacSetNwkSKey.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdMacSetNwkSKey.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdMacSetNwkSKey.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemESPFormatActionPerformed(evt); + cmdMacSetNwkSKeyActionPerformed(evt); } }); - MenuESP.add(MenuItemESPFormat); - - MainMenuBar.add(MenuESP); - MenuView.setText("View"); - buttonGroupLF.add(MenuView); - MenuView.addActionListener(new java.awt.event.ActionListener() { + cmdMacSetAppSKey.setText("mac set appskey"); + cmdMacSetAppSKey.setToolTipText("sys reset"); + cmdMacSetAppSKey.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdMacSetAppSKey.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdMacSetAppSKey.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdMacSetAppSKey.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdMacSetAppSKey.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuViewActionPerformed(evt); + cmdMacSetAppSKeyActionPerformed(evt); } }); - AlwaysOnTop.setText("Always On Top"); - AlwaysOnTop.setToolTipText(""); - AlwaysOnTop.setIcon(new javax.swing.ImageIcon(getClass().getResource("/AlwaysOnTop.png"))); // NOI18N - AlwaysOnTop.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - AlwaysOnTopItemStateChanged(evt); + cmdMacjoinABP.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N + cmdMacjoinABP.setText("Join ABP"); + cmdMacjoinABP.setToolTipText("sys reset"); + cmdMacjoinABP.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdMacjoinABP.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdMacjoinABP.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdMacjoinABP.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdMacjoinABP.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + cmdMacjoinABPActionPerformed(evt); } }); - MenuView.add(AlwaysOnTop); - MenuItemViewLog.setAccelerator( - javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_L, java.awt.event.InputEvent.CTRL_MASK)); - MenuItemViewLog.setSelected(true); - MenuItemViewLog.setText("Show Log"); - MenuItemViewLog.setToolTipText("Enable/disable log window"); - MenuItemViewLog.setIcon(new javax.swing.ImageIcon(getClass().getResource("/backup.png"))); // NOI18N - MenuItemViewLog.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - MenuItemViewLogItemStateChanged(evt); - } - }); - MenuItemViewLog.addActionListener(new java.awt.event.ActionListener() { + cmdMacGetDevAddr.setText("mac get devaddr"); + cmdMacGetDevAddr.setToolTipText("sys reset"); + cmdMacGetDevAddr.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdMacGetDevAddr.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdMacGetDevAddr.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdMacGetDevAddr.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdMacGetDevAddr.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewLogActionPerformed(evt); + cmdMacGetDevAddrActionPerformed(evt); } }); - MenuView.add(MenuItemViewLog); - MenuItemViewClearLog.setAccelerator( - javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F1, java.awt.event.InputEvent.CTRL_MASK)); - MenuItemViewClearLog.setIcon(new javax.swing.ImageIcon(getClass().getResource("/backup_delete.png"))); // NOI18N - MenuItemViewClearLog.setText("Clear log"); - MenuItemViewClearLog.setToolTipText("Clear log window"); - MenuItemViewClearLog.addActionListener(new java.awt.event.ActionListener() { + DevAddr.setText("00000000"); + DevAddr.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewClearLogActionPerformed(evt); + DevAddrActionPerformed(evt); } }); - MenuView.add(MenuItemViewClearLog); - MenuItemViewClearTerminal.setAccelerator( - javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F2, java.awt.event.InputEvent.CTRL_MASK)); - MenuItemViewClearTerminal.setIcon(new javax.swing.ImageIcon(getClass().getResource("/terminal_clear.png"))); // NOI18N - MenuItemViewClearTerminal.setText("Clear terminal"); - MenuItemViewClearTerminal.setToolTipText("Clear terminal window"); - MenuItemViewClearTerminal.addActionListener(new java.awt.event.ActionListener() { + NwkSKey.setText("2B7E151628AED2A6ABF7158809CF4F3C"); + NwkSKey.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewClearTerminalActionPerformed(evt); + NwkSKeyActionPerformed(evt); } }); - MenuView.add(MenuItemViewClearTerminal); - MenuView.add(jSeparator9); - MenuItemViewToolbar.setSelected(true); - MenuItemViewToolbar.setText("Show toolbar at top left"); - MenuItemViewToolbar.setToolTipText("Enable/disable files toolbar at top left"); - MenuItemViewToolbar.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - MenuItemViewToolbarItemStateChanged(evt); - } - }); - MenuItemViewToolbar.addActionListener(new java.awt.event.ActionListener() { + AppSKey.setText("2B7E151628AED2A6ABF7158809CF4F3C"); + AppSKey.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewToolbarActionPerformed(evt); + AppSKeyActionPerformed(evt); } }); - MenuView.add(MenuItemViewToolbar); - MenuItemViewLeftExtra.setText("Show Extra buttons at lleft"); - MenuItemViewLeftExtra.setToolTipText("Enable/disable Extra buttons panel at left"); - MenuItemViewLeftExtra.setEnabled(false); - MenuItemViewLeftExtra.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - MenuItemViewLeftExtraItemStateChanged(evt); - } - }); - MenuItemViewLeftExtra.addActionListener(new java.awt.event.ActionListener() { + ABPPane.setLayer(cmdMacSetDevAddr, javax.swing.JLayeredPane.DEFAULT_LAYER); + ABPPane.setLayer(cmdMacSetNwkSKey, javax.swing.JLayeredPane.DEFAULT_LAYER); + ABPPane.setLayer(cmdMacSetAppSKey, javax.swing.JLayeredPane.DEFAULT_LAYER); + ABPPane.setLayer(cmdMacjoinABP, javax.swing.JLayeredPane.DEFAULT_LAYER); + ABPPane.setLayer(cmdMacGetDevAddr, javax.swing.JLayeredPane.DEFAULT_LAYER); + ABPPane.setLayer(DevAddr, javax.swing.JLayeredPane.DEFAULT_LAYER); + ABPPane.setLayer(NwkSKey, javax.swing.JLayeredPane.DEFAULT_LAYER); + ABPPane.setLayer(AppSKey, javax.swing.JLayeredPane.DEFAULT_LAYER); + + javax.swing.GroupLayout ABPPaneLayout = new javax.swing.GroupLayout(ABPPane); + ABPPane.setLayout(ABPPaneLayout); + ABPPaneLayout.setHorizontalGroup(ABPPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(ABPPaneLayout.createSequentialGroup().addGroup(ABPPaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) + .addComponent(cmdMacSetAppSKey, javax.swing.GroupLayout.Alignment.LEADING, + javax.swing.GroupLayout.PREFERRED_SIZE, 1, Short.MAX_VALUE) + .addComponent(cmdMacSetNwkSKey, javax.swing.GroupLayout.PREFERRED_SIZE, 1, Short.MAX_VALUE) + .addComponent(cmdMacSetDevAddr, javax.swing.GroupLayout.PREFERRED_SIZE, 180, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(cmdMacjoinABP, javax.swing.GroupLayout.Alignment.LEADING, + javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(ABPPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(NwkSKey).addComponent(DevAddr).addComponent(AppSKey)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cmdMacGetDevAddr, javax.swing.GroupLayout.PREFERRED_SIZE, 100, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(0, 10, Short.MAX_VALUE))); + ABPPaneLayout.setVerticalGroup(ABPPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, ABPPaneLayout.createSequentialGroup() + .addGroup(ABPPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(cmdMacSetDevAddr, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(DevAddr, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(cmdMacGetDevAddr, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(ABPPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(cmdMacSetNwkSKey, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(NwkSKey, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(ABPPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(cmdMacSetAppSKey, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(AppSKey, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(cmdMacjoinABP, javax.swing.GroupLayout.PREFERRED_SIZE, 40, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap())); + + cmdMacSave.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N + cmdMacSave.setText("Save"); + cmdMacSave.setToolTipText("sys reset"); + cmdMacSave.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdMacSave.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdMacSave.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdMacSave.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdMacSave.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewLeftExtraActionPerformed(evt); + cmdMacSaveActionPerformed(evt); } }); - MenuView.add(MenuItemViewLeftExtra); - MenuItemViewSnippets.setSelected(true); - MenuItemViewSnippets.setText("Show Snippets panel at right"); - MenuItemViewSnippets.setToolTipText("Enable/disable Snippets panel"); - MenuItemViewSnippets.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - MenuItemViewSnippetsItemStateChanged(evt); - } - }); - MenuItemViewSnippets.addActionListener(new java.awt.event.ActionListener() { + OTAAPane.setBorder(javax.swing.BorderFactory.createTitledBorder("Over The Air Activation")); + + cmdMacSetDevEui.setText("mac set deveui"); + cmdMacSetDevEui.setToolTipText("sys reset"); + cmdMacSetDevEui.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdMacSetDevEui.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdMacSetDevEui.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdMacSetDevEui.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdMacSetDevEui.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewSnippetsActionPerformed(evt); + cmdMacSetDevEuiActionPerformed(evt); } }); - MenuView.add(MenuItemViewSnippets); - MenuItemViewFileManager.setSelected(true); - MenuItemViewFileManager.setText("Show FileManager panel at right"); - MenuItemViewFileManager.setToolTipText("Enable/disable FileManager panel at right"); - MenuItemViewFileManager.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - MenuItemViewFileManagerItemStateChanged(evt); - } - }); - MenuItemViewFileManager.addActionListener(new java.awt.event.ActionListener() { + cmdMacSetAppEui.setText("mac set appeui"); + cmdMacSetAppEui.setToolTipText("sys reset"); + cmdMacSetAppEui.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdMacSetAppEui.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdMacSetAppEui.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdMacSetAppEui.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdMacSetAppEui.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewFileManagerActionPerformed(evt); + cmdMacSetAppEuiActionPerformed(evt); } }); - MenuView.add(MenuItemViewFileManager); - MenuItemViewRightExtra.setSelected(true); - MenuItemViewRightExtra.setText("Show Extra buttons at bottom right"); - MenuItemViewRightExtra.setToolTipText("Enable/disable Extra buttons panel at bottom right"); - MenuItemViewRightExtra.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - MenuItemViewRightExtraItemStateChanged(evt); - } - }); - MenuItemViewRightExtra.addActionListener(new java.awt.event.ActionListener() { + cmdMacSetAppKey.setText("mac set appkey"); + cmdMacSetAppKey.setToolTipText("sys reset"); + cmdMacSetAppKey.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdMacSetAppKey.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdMacSetAppKey.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdMacSetAppKey.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdMacSetAppKey.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewRightExtraActionPerformed(evt); + cmdMacSetAppKeyActionPerformed(evt); } }); - MenuView.add(MenuItemViewRightExtra); - MenuItemViewDonate.setSelected(true); - MenuItemViewDonate - .setText("I'm already make donation,
please hide dontation button at bottom right!"); - MenuItemViewDonate.setToolTipText("Enable/disable Extra buttons panel at bottom right"); - MenuItemViewDonate.addItemListener(new java.awt.event.ItemListener() { - public void itemStateChanged(java.awt.event.ItemEvent evt) { - MenuItemViewDonateItemStateChanged(evt); - } - }); - MenuItemViewDonate.addActionListener(new java.awt.event.ActionListener() { + cmdMacJoinOTAA.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N + cmdMacJoinOTAA.setText("Join OTAA"); + cmdMacJoinOTAA.setToolTipText("sys reset"); + cmdMacJoinOTAA.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdMacJoinOTAA.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdMacJoinOTAA.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdMacJoinOTAA.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdMacJoinOTAA.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewDonateActionPerformed(evt); + cmdMacJoinOTAAActionPerformed(evt); } }); - MenuView.add(MenuItemViewDonate); - MenuView.add(jSeparator13); - MenuItemViewTermFontInc.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_ADD, - java.awt.event.InputEvent.CTRL_MASK)); - MenuItemViewTermFontInc.setIcon(new javax.swing.ImageIcon(getClass().getResource("/zoom in.png"))); // NOI18N - MenuItemViewTermFontInc.setText("Terminal font size inc"); - MenuItemViewTermFontInc.addActionListener(new java.awt.event.ActionListener() { + cmdMacGetDevEui.setText("mac get deveui"); + cmdMacGetDevEui.setToolTipText("sys reset"); + cmdMacGetDevEui.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdMacGetDevEui.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdMacGetDevEui.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdMacGetDevEui.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdMacGetDevEui.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewTermFontIncActionPerformed(evt); + cmdMacGetDevEuiActionPerformed(evt); } }); - MenuView.add(MenuItemViewTermFontInc); - MenuItemViewTermFontDec.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_SUBTRACT, - java.awt.event.InputEvent.CTRL_MASK)); - MenuItemViewTermFontDec.setIcon(new javax.swing.ImageIcon(getClass().getResource("/zoom out.png"))); // NOI18N - MenuItemViewTermFontDec.setText("Terminal font size dec"); - MenuItemViewTermFontDec.addActionListener(new java.awt.event.ActionListener() { + cmdMacGetAppEui.setText("mac get appeui"); + cmdMacGetAppEui.setToolTipText("sys reset"); + cmdMacGetAppEui.setMargin(new java.awt.Insets(2, 2, 2, 2)); + cmdMacGetAppEui.setMaximumSize(new java.awt.Dimension(210, 23)); + cmdMacGetAppEui.setMinimumSize(new java.awt.Dimension(210, 23)); + cmdMacGetAppEui.setPreferredSize(new java.awt.Dimension(210, 23)); + cmdMacGetAppEui.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewTermFontDecActionPerformed(evt); + cmdMacGetAppEuiActionPerformed(evt); } }); - MenuView.add(MenuItemViewTermFontDec); - MenuView.add(jSeparator10); - MenuItemViewEditorFontInc.setAccelerator( - javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_ADD, java.awt.event.InputEvent.ALT_MASK)); - MenuItemViewEditorFontInc.setIcon(new javax.swing.ImageIcon(getClass().getResource("/zoom in.png"))); // NOI18N - MenuItemViewEditorFontInc.setText("Editor font size inc"); - MenuItemViewEditorFontInc.addActionListener(new java.awt.event.ActionListener() { + DevEUI.setText("Enter Device EUI"); + DevEUI.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewEditorFontIncActionPerformed(evt); + DevEUIActionPerformed(evt); } }); - MenuView.add(MenuItemViewEditorFontInc); - MenuItemViewEditorFontDec.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_SUBTRACT, - java.awt.event.InputEvent.ALT_MASK)); - MenuItemViewEditorFontDec.setIcon(new javax.swing.ImageIcon(getClass().getResource("/zoom out.png"))); // NOI18N - MenuItemViewEditorFontDec.setText("Editor font size dec"); - MenuItemViewEditorFontDec.addActionListener(new java.awt.event.ActionListener() { + AppEUI.setText("Enter App EUI"); + AppEUI.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewEditorFontDecActionPerformed(evt); + AppEUIActionPerformed(evt); } }); - MenuView.add(MenuItemViewEditorFontDec); - MenuView.add(jSeparator11); - MenuItemViewLogFontInc.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_ADD, - java.awt.event.InputEvent.ALT_MASK | java.awt.event.InputEvent.CTRL_MASK)); - MenuItemViewLogFontInc.setIcon(new javax.swing.ImageIcon(getClass().getResource("/zoom in.png"))); // NOI18N - MenuItemViewLogFontInc.setText("Log font size inc"); - MenuItemViewLogFontInc.addActionListener(new java.awt.event.ActionListener() { + AppKey.setText("Enter App Key"); + AppKey.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewLogFontIncActionPerformed(evt); + AppKeyActionPerformed(evt); } }); - MenuView.add(MenuItemViewLogFontInc); - MenuItemViewLogFontDec.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_SUBTRACT, - java.awt.event.InputEvent.ALT_MASK | java.awt.event.InputEvent.CTRL_MASK)); - MenuItemViewLogFontDec.setIcon(new javax.swing.ImageIcon(getClass().getResource("/zoom out.png"))); // NOI18N - MenuItemViewLogFontDec.setText("Log font size dec"); - MenuItemViewLogFontDec.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewLogFontDecActionPerformed(evt); - } - }); - MenuView.add(MenuItemViewLogFontDec); - MenuView.add(jSeparator12); + OTAAPane.setLayer(cmdMacSetDevEui, javax.swing.JLayeredPane.DEFAULT_LAYER); + OTAAPane.setLayer(cmdMacSetAppEui, javax.swing.JLayeredPane.DEFAULT_LAYER); + OTAAPane.setLayer(cmdMacSetAppKey, javax.swing.JLayeredPane.DEFAULT_LAYER); + OTAAPane.setLayer(cmdMacJoinOTAA, javax.swing.JLayeredPane.DEFAULT_LAYER); + OTAAPane.setLayer(cmdMacGetDevEui, javax.swing.JLayeredPane.DEFAULT_LAYER); + OTAAPane.setLayer(cmdMacGetAppEui, javax.swing.JLayeredPane.DEFAULT_LAYER); + OTAAPane.setLayer(DevEUI, javax.swing.JLayeredPane.DEFAULT_LAYER); + OTAAPane.setLayer(AppEUI, javax.swing.JLayeredPane.DEFAULT_LAYER); + OTAAPane.setLayer(AppKey, javax.swing.JLayeredPane.DEFAULT_LAYER); - MenuItemViewFontDefault.setText("Reset all font size to default"); - MenuItemViewFontDefault.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewFontDefaultActionPerformed(evt); - } - }); - MenuView.add(MenuItemViewFontDefault); - MenuView.add(jSeparator17); + javax.swing.GroupLayout OTAAPaneLayout = new javax.swing.GroupLayout(OTAAPane); + OTAAPane.setLayout(OTAAPaneLayout); + OTAAPaneLayout.setHorizontalGroup(OTAAPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(OTAAPaneLayout.createSequentialGroup().addGroup(OTAAPaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(cmdMacSetDevEui, javax.swing.GroupLayout.PREFERRED_SIZE, 180, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(cmdMacSetAppEui, javax.swing.GroupLayout.PREFERRED_SIZE, 1, Short.MAX_VALUE) + .addComponent(cmdMacSetAppKey, javax.swing.GroupLayout.PREFERRED_SIZE, 1, Short.MAX_VALUE) + .addComponent(cmdMacJoinOTAA, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup( + OTAAPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) + .addComponent(AppEUI) + .addComponent(DevEUI, javax.swing.GroupLayout.DEFAULT_SIZE, 204, + Short.MAX_VALUE) + .addComponent(AppKey)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(OTAAPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(cmdMacGetDevEui, javax.swing.GroupLayout.PREFERRED_SIZE, 100, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(cmdMacGetAppEui, javax.swing.GroupLayout.PREFERRED_SIZE, 1, + Short.MAX_VALUE)) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))); + OTAAPaneLayout.setVerticalGroup(OTAAPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, OTAAPaneLayout.createSequentialGroup() + .addGroup(OTAAPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(cmdMacSetDevEui, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(DevEUI, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(cmdMacGetDevEui, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(OTAAPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(cmdMacSetAppEui, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(AppEUI, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(cmdMacGetAppEui, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(OTAAPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(cmdMacSetAppKey, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(AppKey, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cmdMacJoinOTAA, javax.swing.GroupLayout.PREFERRED_SIZE, 40, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap())); - buttonGroupLF.add(MenuItemViewLF1); - MenuItemViewLF1.setText("Nimbus"); - MenuItemViewLF1.setToolTipText(""); - MenuItemViewLF1.setActionCommand("0"); - MenuItemViewLF1.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemViewLF1ActionPerformed(evt); - } - }); - MenuView.add(MenuItemViewLF1); + ActivationPane.setLayer(ABPPane, javax.swing.JLayeredPane.DEFAULT_LAYER); + ActivationPane.setLayer(cmdMacSave, javax.swing.JLayeredPane.DEFAULT_LAYER); + ActivationPane.setLayer(OTAAPane, javax.swing.JLayeredPane.DEFAULT_LAYER); - MainMenuBar.add(MenuView); + javax.swing.GroupLayout ActivationPaneLayout = new javax.swing.GroupLayout(ActivationPane); + ActivationPane.setLayout(ActivationPaneLayout); + ActivationPaneLayout.setHorizontalGroup(ActivationPaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(ActivationPaneLayout.createSequentialGroup() + .addGroup(ActivationPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(OTAAPane, javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(ABPPane, javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(cmdMacSave, javax.swing.GroupLayout.Alignment.LEADING, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, + Short.MAX_VALUE)) + .addGap(19, 19, 19))); + ActivationPaneLayout + .setVerticalGroup(ActivationPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(ActivationPaneLayout.createSequentialGroup() + .addComponent(ABPPane, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(1, 1, 1) + .addComponent(cmdMacSave, javax.swing.GroupLayout.PREFERRED_SIZE, 40, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(OTAAPane, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(0, 317, Short.MAX_VALUE))); - MenuLinks.setText("Links"); - MenuLinks.setToolTipText(""); + ActivationScrollPane.setViewportView(ActivationPane); - MenuItemLinksAPIcn.setText("NodeMCU API cn"); - MenuItemLinksAPIcn.setToolTipText("Open doc NodeMCU API Chinese in browser"); - MenuItemLinksAPIcn.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemLinksAPIcnActionPerformed(evt); - } - }); - MenuLinks.add(MenuItemLinksAPIcn); + RN2483jTab.addTab(" Activation ", ActivationScrollPane); - MenuItemLinksAPIen.setText("NodeMCU API en"); - MenuItemLinksAPIen.setToolTipText("Open doc NodeMCU API English in browser"); - MenuItemLinksAPIen.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemLinksAPIenActionPerformed(evt); - } - }); - MenuLinks.add(MenuItemLinksAPIen); + RN2483.setLayer(RN2483jTab, javax.swing.JLayeredPane.DEFAULT_LAYER); - MenuItemLinksAPIru.setText("NodeMCU API ru"); - MenuItemLinksAPIru.setToolTipText("Open doc NodeMCU API Russian in browser"); - MenuItemLinksAPIru.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemLinksAPIruActionPerformed(evt); - } - }); - MenuLinks.add(MenuItemLinksAPIru); + javax.swing.GroupLayout RN2483Layout = new javax.swing.GroupLayout(RN2483); + RN2483.setLayout(RN2483Layout); + RN2483Layout.setHorizontalGroup(RN2483Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(RN2483jTab, javax.swing.GroupLayout.DEFAULT_SIZE, 544, Short.MAX_VALUE)); + RN2483Layout.setVerticalGroup(RN2483Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(RN2483jTab, javax.swing.GroupLayout.DEFAULT_SIZE, 716, Short.MAX_VALUE)); - MenuItemLinksChangelog.setText("NodeMCU changelog"); - MenuItemLinksChangelog.setToolTipText("Open NodeMCU changelog in browser"); - MenuItemLinksChangelog.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemLinksChangelogActionPerformed(evt); - } - }); - MenuLinks.add(MenuItemLinksChangelog); - MenuLinks.add(jSeparator14); + LeftTab.addTab(" RN2483 ", RN2483); + + LeftBasePane.setLayer(LeftTab, javax.swing.JLayeredPane.DEFAULT_LAYER); + + javax.swing.GroupLayout LeftBasePaneLayout = new javax.swing.GroupLayout(LeftBasePane); + LeftBasePane.setLayout(LeftBasePaneLayout); + LeftBasePaneLayout + .setHorizontalGroup(LeftBasePaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(LeftTab, javax.swing.GroupLayout.DEFAULT_SIZE, 542, Short.MAX_VALUE)); + LeftBasePaneLayout + .setVerticalGroup(LeftBasePaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(LeftTab, javax.swing.GroupLayout.DEFAULT_SIZE, 744, Short.MAX_VALUE)); + + LeftTab.getAccessibleContext().setAccessibleName("LeftTab"); + + HorizontSplit.setLeftComponent(LeftBasePane); + + RightBasePane.setOpaque(true); + + LEDPanel.setMaximumSize(new java.awt.Dimension(392, 25)); + LEDPanel.setMinimumSize(new java.awt.Dimension(392, 25)); + LEDPanel.setOpaque(true); + + PortOpenLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + PortOpenLabel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/led_grey.png"))); // NOI18N + PortOpenLabel.setText("Open"); + PortOpenLabel.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); + PortOpenLabel.setMaximumSize(new java.awt.Dimension(50, 25)); + PortOpenLabel.setMinimumSize(new java.awt.Dimension(50, 25)); + PortOpenLabel.setPreferredSize(new java.awt.Dimension(50, 25)); + PortOpenLabel.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); + + PortCTS.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + PortCTS.setIcon(new javax.swing.ImageIcon(getClass().getResource("/led_grey.png"))); // NOI18N + PortCTS.setText("CTS"); + PortCTS.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); + PortCTS.setMaximumSize(new java.awt.Dimension(50, 25)); + PortCTS.setMinimumSize(new java.awt.Dimension(50, 25)); + PortCTS.setPreferredSize(new java.awt.Dimension(50, 25)); + PortCTS.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); - MenuItemLinksDownloadLatestFirmware.setText("NodeMCU download latest firmware"); - MenuItemLinksDownloadLatestFirmware.setToolTipText("Download NodeMCU latest firmware (stable version)"); - MenuItemLinksDownloadLatestFirmware.addActionListener(new java.awt.event.ActionListener() { + PortDTR.setIcon(new javax.swing.ImageIcon(getClass().getResource("/led_grey.png"))); // NOI18N + PortDTR.setText("DTR"); + PortDTR.setToolTipText(""); + PortDTR.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); + PortDTR.setVerticalAlignment(javax.swing.SwingConstants.TOP); + PortDTR.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); + PortDTR.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemLinksDownloadLatestFirmwareActionPerformed(evt); + PortDTRActionPerformed(evt); } }); - MenuLinks.add(MenuItemLinksDownloadLatestFirmware); - MenuItemLinksDownloadLatestDev.setText("NodeMCU download latest dev firmware"); - MenuItemLinksDownloadLatestDev.setToolTipText("Download NodeMCU latest firmware (dev version)"); - MenuItemLinksDownloadLatestDev.addActionListener(new java.awt.event.ActionListener() { + PortRTS.setIcon(new javax.swing.ImageIcon(getClass().getResource("/led_grey.png"))); // NOI18N + PortRTS.setText("RTS"); + PortRTS.setToolTipText(""); + PortRTS.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); + PortRTS.setVerticalAlignment(javax.swing.SwingConstants.TOP); + PortRTS.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); + PortRTS.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemLinksDownloadLatestDevActionPerformed(evt); + PortRTSActionPerformed(evt); } }); - MenuLinks.add(MenuItemLinksDownloadLatestDev); - MenuItemLinksDownloadLatestFlasher.setText("NodeMCU download latest FLASHER"); - MenuItemLinksDownloadLatestFlasher.setToolTipText("Download latest version of NodeMCU Flasher x32 or x64"); - MenuItemLinksDownloadLatestFlasher.addActionListener(new java.awt.event.ActionListener() { + Open.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + Open.setIcon(new javax.swing.ImageIcon(getClass().getResource("/connect1.png"))); // NOI18N + Open.setText("Open"); + Open.setToolTipText("Open/Close selected serial port"); + Open.setIconTextGap(2); + Open.setMargin(new java.awt.Insets(1, 1, 1, 1)); + Open.setMaximumSize(new java.awt.Dimension(100, 25)); + Open.setMinimumSize(new java.awt.Dimension(85, 25)); + Open.setPreferredSize(new java.awt.Dimension(80, 25)); + Open.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemLinksDownloadLatestFlasherActionPerformed(evt); + OpenActionPerformed(evt); } }); - MenuLinks.add(MenuItemLinksDownloadLatestFlasher); - MenuLinks.add(jSeparator15); - MenuItemLinksBuyDevBoard.setText("Buy NodeMCU dev board"); - MenuItemLinksBuyDevBoard.setToolTipText("Buy NodeMCU development boards on Aliexpress"); - MenuItemLinksBuyDevBoard.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemLinksBuyDevBoardActionPerformed(evt); + Speed.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N + Speed.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "1200", "2400", "4800", "9600", "19200", + "38400", "57600", "74880", "115200", "230400", "460800", "921600" })); + Speed.setToolTipText("Select baud rate"); + Speed.setMaximumSize(new java.awt.Dimension(80, 25)); + Speed.setMinimumSize(new java.awt.Dimension(80, 25)); + Speed.setPreferredSize(new java.awt.Dimension(80, 25)); + Speed.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + SpeedItemStateChanged(evt); } }); - MenuLinks.add(MenuItemLinksBuyDevBoard); - - MenuItemLinksBuyESP8266.setText("Buy ESP8266 ESP-01 - ESP12 modules"); - MenuItemLinksBuyESP8266.setToolTipText("Buy ESP8266 ESP-01 ESP-02 ... ESP-12 modules on Aliexpress"); - MenuItemLinksBuyESP8266.addActionListener(new java.awt.event.ActionListener() { + Speed.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemLinksBuyESP8266ActionPerformed(evt); + SpeedActionPerformed(evt); } }); - MenuLinks.add(MenuItemLinksBuyESP8266); - - MenuItemLinksBuyESD12.setText("Buy ESP8266 ESD-12 4M module"); - MenuItemLinksBuyESD12.setToolTipText("Buy ESP8266 ESD-12 4M flash board"); - MenuItemLinksBuyESD12.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemLinksBuyESD12ActionPerformed(evt); + Speed.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent evt) { + SpeedFocusLost(evt); } }); - MenuLinks.add(MenuItemLinksBuyESD12); - MenuItemLinksBuyOther.setText("Buy other usefull parts"); - MenuItemLinksBuyOther.setToolTipText("Buy any electronics and other on Aliexpress"); - MenuItemLinksBuyOther.addActionListener(new java.awt.event.ActionListener() { + ReScan.setIcon(new javax.swing.ImageIcon(getClass().getResource("/refresh3.png"))); // NOI18N + ReScan.setToolTipText("Scan system for available serial port"); + ReScan.setMaximumSize(new java.awt.Dimension(25, 25)); + ReScan.setMinimumSize(new java.awt.Dimension(25, 25)); + ReScan.setPreferredSize(new java.awt.Dimension(25, 25)); + ReScan.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemLinksBuyOtherActionPerformed(evt); + ReScanActionPerformed(evt); } }); - MenuLinks.add(MenuItemLinksBuyOther); - MenuLinks.add(jSeparator16); - MenuItemLinksESPlorerForumEn.setText("ESPlorer discuss, bug report en"); - MenuItemLinksESPlorerForumEn.setToolTipText("Link to ESP8266.COM forum, ESPlorer topic, English"); - MenuItemLinksESPlorerForumEn.addActionListener(new java.awt.event.ActionListener() { + AutoScroll.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N + AutoScroll.setSelected(true); + AutoScroll.setText("AutoScroll"); + AutoScroll.setToolTipText("Terminal AutoScroll Enable/Disable"); + AutoScroll.setMinimumSize(new java.awt.Dimension(70, 25)); + AutoScroll.setPreferredSize(new java.awt.Dimension(60, 25)); + AutoScroll.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemLinksESPlorerForumEnActionPerformed(evt); + AutoScrollActionPerformed(evt); } }); - MenuLinks.add(MenuItemLinksESPlorerForumEn); - MenuItemLinksESPlorerForumRu.setText("ESPlorer discuss, bug report ru"); - MenuItemLinksESPlorerForumRu.setToolTipText("Link to ESP8266.RU forum, ESPlorer topic, Russian"); - MenuItemLinksESPlorerForumRu.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemLinksESPlorerForumRuActionPerformed(evt); + Port.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + Port.setMaximumRowCount(20); + Port.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "COM1", "COM3" })); + Port.setToolTipText("Serial port chooser"); + Port.setMaximumSize(new java.awt.Dimension(150, 25)); + Port.setMinimumSize(new java.awt.Dimension(150, 25)); + Port.setPreferredSize(new java.awt.Dimension(150, 25)); + Port.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + PortItemStateChanged(evt); } }); - MenuLinks.add(MenuItemLinksESPlorerForumRu); - - MenuItemLinksESPlorerLatest.setText("ESPlorer download latest stable"); - MenuItemLinksESPlorerLatest.setToolTipText("Link to ESP8266.RU, download ESPlorer latest"); - MenuItemLinksESPlorerLatest.addActionListener(new java.awt.event.ActionListener() { + Port.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemLinksESPlorerLatestActionPerformed(evt); + PortActionPerformed(evt); } }); - MenuLinks.add(MenuItemLinksESPlorerLatest); - MenuItemLinksESPlorerSource.setText("ESPlorer download source code from github"); - MenuItemLinksESPlorerSource.setToolTipText("Link to GITHUB for download ESPlorer source code"); - MenuItemLinksESPlorerSource.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemLinksESPlorerSourceActionPerformed(evt); + EOL.setFont(new java.awt.Font("Tahoma", 0, 8)); // NOI18N + EOL.setText("EOL"); + EOL.setToolTipText("EOL visible Enable/Disable"); + EOL.setMinimumSize(new java.awt.Dimension(70, 25)); + EOL.setPreferredSize(new java.awt.Dimension(60, 25)); + EOL.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + EOLItemStateChanged(evt); } }); - MenuLinks.add(MenuItemLinksESPlorerSource); - MenuItemLinksESPlorerHome.setText("ESPlorer home page on esp8266.ru"); - MenuItemLinksESPlorerHome.setToolTipText("Link to ESP8266.RU, ESPlorer HomePage"); - MenuItemLinksESPlorerHome.addActionListener(new java.awt.event.ActionListener() { + CR.setFont(CR.getFont().deriveFont(CR.getFont().getSize() - 4f)); + CR.setSelected(true); + CR.setText("CR"); + CR.setToolTipText("Add CR at end of line"); + CR.setAlignmentY(0.0F); + CR.setEnabled(false); + CR.setIconTextGap(0); + CR.setMargin(new java.awt.Insets(0, 0, 0, 0)); + CR.setName(""); // NOI18N + CR.setNextFocusableComponent(Command); + + LF.setFont(LF.getFont().deriveFont(LF.getFont().getSize() - 4f)); + LF.setSelected(true); + LF.setText("LF"); + LF.setToolTipText("Add LF at end of line"); + LF.setAlignmentY(0.0F); + LF.setEnabled(false); + LF.setIconTextGap(0); + LF.setMargin(new java.awt.Insets(0, 0, 0, 0)); + + DonateSmall.setIcon(new javax.swing.ImageIcon(getClass().getResource("/donate-small.gif"))); // NOI18N + DonateSmall.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); + DonateSmall.setMargin(new java.awt.Insets(2, 2, 2, 2)); + DonateSmall.setMaximumSize(new java.awt.Dimension(100, 35)); + DonateSmall.setMinimumSize(new java.awt.Dimension(100, 35)); + DonateSmall.setPreferredSize(new java.awt.Dimension(100, 35)); + DonateSmall.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemLinksESPlorerHomeActionPerformed(evt); + DonateSmallActionPerformed(evt); } }); - MenuLinks.add(MenuItemLinksESPlorerHome); - MenuItemLinksDonate.setText("Make donation for ESPlorer developer"); - MenuItemLinksDonate.setToolTipText("You can make donation for ESPlorer developer"); - MenuItemLinksDonate.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemLinksDonateActionPerformed(evt); + TerminalOnlyCheckBox + .setFont(TerminalOnlyCheckBox.getFont().deriveFont(TerminalOnlyCheckBox.getFont().getSize() - 4f)); + TerminalOnlyCheckBox.setText(" Hide Editor"); + TerminalOnlyCheckBox.setToolTipText("Add LF at end of line"); + TerminalOnlyCheckBox.setAlignmentY(0.0F); + TerminalOnlyCheckBox.setIconTextGap(0); + TerminalOnlyCheckBox.setMargin(new java.awt.Insets(0, 0, 0, 0)); + TerminalOnlyCheckBox.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + TerminalOnlyCheckBoxItemStateChanged(evt); } }); - MenuLinks.add(MenuItemLinksDonate); - - MainMenuBar.add(MenuLinks); - - MenuHelp.setText("?"); - MenuItemHelpAbout.setText("About"); - MenuItemHelpAbout.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - MenuItemHelpAboutActionPerformed(evt); + EditorOnlyCheckBox + .setFont(EditorOnlyCheckBox.getFont().deriveFont(EditorOnlyCheckBox.getFont().getSize() - 4f)); + EditorOnlyCheckBox.setText(" Hide Terminal"); + EditorOnlyCheckBox.setToolTipText("Add LF at end of line"); + EditorOnlyCheckBox.setAlignmentY(0.0F); + EditorOnlyCheckBox.setIconTextGap(0); + EditorOnlyCheckBox.setMargin(new java.awt.Insets(0, 0, 0, 0)); + EditorOnlyCheckBox.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + EditorOnlyCheckBoxItemStateChanged(evt); } }); - MenuHelp.add(MenuItemHelpAbout); - - MainMenuBar.add(MenuHelp); - setJMenuBar(MainMenuBar); + LEDPanel.setLayer(PortOpenLabel, javax.swing.JLayeredPane.DEFAULT_LAYER); + LEDPanel.setLayer(PortCTS, javax.swing.JLayeredPane.DEFAULT_LAYER); + LEDPanel.setLayer(PortDTR, javax.swing.JLayeredPane.DEFAULT_LAYER); + LEDPanel.setLayer(PortRTS, javax.swing.JLayeredPane.DEFAULT_LAYER); + LEDPanel.setLayer(Open, javax.swing.JLayeredPane.DEFAULT_LAYER); + LEDPanel.setLayer(Speed, javax.swing.JLayeredPane.DEFAULT_LAYER); + LEDPanel.setLayer(ReScan, javax.swing.JLayeredPane.DEFAULT_LAYER); + LEDPanel.setLayer(AutoScroll, javax.swing.JLayeredPane.DEFAULT_LAYER); + LEDPanel.setLayer(Port, javax.swing.JLayeredPane.DEFAULT_LAYER); + LEDPanel.setLayer(EOL, javax.swing.JLayeredPane.DEFAULT_LAYER); + LEDPanel.setLayer(CR, javax.swing.JLayeredPane.DEFAULT_LAYER); + LEDPanel.setLayer(LF, javax.swing.JLayeredPane.DEFAULT_LAYER); + LEDPanel.setLayer(DonateSmall, javax.swing.JLayeredPane.DEFAULT_LAYER); + LEDPanel.setLayer(TerminalOnlyCheckBox, javax.swing.JLayeredPane.DEFAULT_LAYER); + LEDPanel.setLayer(EditorOnlyCheckBox, javax.swing.JLayeredPane.DEFAULT_LAYER); - javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); - getContentPane().setLayout(layout); - layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(HorizontSplit, javax.swing.GroupLayout.DEFAULT_SIZE, 1024, Short.MAX_VALUE)); - layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(HorizontSplit, javax.swing.GroupLayout.DEFAULT_SIZE, 746, Short.MAX_VALUE)); + javax.swing.GroupLayout LEDPanelLayout = new javax.swing.GroupLayout(LEDPanel); + LEDPanel.setLayout(LEDPanelLayout); + LEDPanelLayout.setHorizontalGroup(LEDPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(LEDPanelLayout.createSequentialGroup().addGroup(LEDPanelLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(LEDPanelLayout.createSequentialGroup().addGroup(LEDPanelLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addGroup(LEDPanelLayout.createSequentialGroup().addComponent(PortDTR) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(PortRTS)) + .addGroup(LEDPanelLayout.createSequentialGroup() + .addComponent(PortOpenLabel, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(PortCTS, javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(Open, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(LEDPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(LEDPanelLayout.createSequentialGroup() + .addComponent(ReScan, javax.swing.GroupLayout.PREFERRED_SIZE, 37, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(LEDPanelLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, + false) + .addComponent(EOL, javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(AutoScroll, javax.swing.GroupLayout.DEFAULT_SIZE, + 70, Short.MAX_VALUE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(LEDPanelLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(LEDPanelLayout.createSequentialGroup() + .addComponent(LF) + .addPreferredGap( + javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(EditorOnlyCheckBox, + javax.swing.GroupLayout.DEFAULT_SIZE, 70, + Short.MAX_VALUE)) + .addGroup(LEDPanelLayout.createSequentialGroup() + .addComponent(CR) + .addPreferredGap( + javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(TerminalOnlyCheckBox, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + Short.MAX_VALUE)))) + .addGroup(LEDPanelLayout.createSequentialGroup() + .addComponent(Speed, javax.swing.GroupLayout.PREFERRED_SIZE, 100, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(DonateSmall, javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) + .addComponent(Port, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addContainerGap())); + LEDPanelLayout.setVerticalGroup(LEDPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(LEDPanelLayout.createSequentialGroup() + .addComponent(Port, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(LEDPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, + LEDPanelLayout.createSequentialGroup().addGroup(LEDPanelLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(ReScan, javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(LEDPanelLayout.createSequentialGroup().addGroup(LEDPanelLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(AutoScroll, + javax.swing.GroupLayout.PREFERRED_SIZE, 19, + Short.MAX_VALUE) + .addComponent(CR).addComponent(TerminalOnlyCheckBox)) + .addPreferredGap( + javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(LEDPanelLayout + .createParallelGroup( + javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(EOL, + javax.swing.GroupLayout.PREFERRED_SIZE, 16, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(LF).addComponent(EditorOnlyCheckBox)))) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(LEDPanelLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, + false) + .addComponent(Speed, javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(DonateSmall, javax.swing.GroupLayout.DEFAULT_SIZE, + 45, Short.MAX_VALUE))) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, + LEDPanelLayout.createSequentialGroup().addGroup(LEDPanelLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(PortOpenLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 35, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(PortCTS, javax.swing.GroupLayout.PREFERRED_SIZE, 35, + javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(LEDPanelLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(PortDTR).addComponent(PortRTS))) + .addComponent(Open, javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))); - getAccessibleContext().setAccessibleDescription(""); + Port.getAccessibleContext().setAccessibleName(""); - bindingGroup.bind(); + RightBottomPane.setAlignmentX(0.0F); + RightBottomPane.setAlignmentY(0.0F); + RightBottomPane.setOpaque(true); - pack(); - }//
//GEN-END:initComponents + Command.setEditable(true); + Command.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N + Command.setMaximumRowCount(20); + Command.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "AT", "AT+GMR", "AT+RST", "" })); + Command.setToolTipText("Command to send"); + Command.setAlignmentX(0.0F); + Command.setAlignmentY(0.0F); + Command.setAutoscrolls(true); + Command.setEnabled(false); + Command.setName("Command"); // NOI18N + Command.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + CommandItemStateChanged(evt); + } + }); + Command.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + CommandActionPerformed(evt); + } + }); + Command.addKeyListener(new java.awt.event.KeyAdapter() { + public void keyPressed(java.awt.event.KeyEvent evt) { + CommandKeyPressed(evt); + } - private void PortActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_PortActionPerformed - // TODO add your handling code here: - }// GEN-LAST:event_PortActionPerformed + public void keyReleased(java.awt.event.KeyEvent evt) { + CommandKeyReleased(evt); + } - private void MenuItemFileExitActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemFileExitActionPerformed - AppClose(); - }// GEN-LAST:event_MenuItemFileExitActionPerformed + public void keyTyped(java.awt.event.KeyEvent evt) { + CommandKeyTyped(evt); + } + }); - private void SpeedFocusLost(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_SpeedFocusLost - nSpeed = Integer.parseInt((String) Speed.getSelectedItem()); - }// GEN-LAST:event_SpeedFocusLost + RightBottomPane.setLayer(Command, javax.swing.JLayeredPane.DEFAULT_LAYER); - private void SpeedActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SpeedActionPerformed - if (portJustOpen) { - log("ERROR: Communication with MCU not established."); - return; - } - nSpeed = Integer.parseInt((String) Speed.getSelectedItem()); - if (pOpen) { // reconnect - if (OptionNodeMCU.isSelected()) { - log("Try to reconnect with baud " + Integer.toString(nSpeed) + "..."); - btnSend("print(uart.setup(0, " + nSpeed + ", 8, 0, 1, 1 ))"); - try { - Thread.sleep(200L); - } catch (Exception e) { - } - } else { - return; - } - if (SetSerialPortParams()) { - log("Reconnect: Success."); - CheckComm(); + javax.swing.GroupLayout RightBottomPaneLayout = new javax.swing.GroupLayout(RightBottomPane); + RightBottomPane.setLayout(RightBottomPaneLayout); + RightBottomPaneLayout + .setHorizontalGroup(RightBottomPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(Command, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)); + RightBottomPaneLayout + .setVerticalGroup(RightBottomPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(Command, javax.swing.GroupLayout.Alignment.LEADING, + javax.swing.GroupLayout.PREFERRED_SIZE, 36, javax.swing.GroupLayout.PREFERRED_SIZE)); + + Command.getAccessibleContext().setAccessibleName("Command"); + + RightBigPane.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED)); + RightBigPane.setOpaque(true); + RightBigPane.addPropertyChangeListener(new java.beans.PropertyChangeListener() { + public void propertyChange(java.beans.PropertyChangeEvent evt) { + RightBigPanePropertyChange(evt); } - } - UpdateLED(); - }// GEN-LAST:event_SpeedActionPerformed + }); - private void OpenActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_OpenActionPerformed - if (Open.isSelected()) { - if (pOpen) { - return; + RightFilesSplitPane.setDividerLocation(300); + RightFilesSplitPane.setAutoscrolls(true); + RightFilesSplitPane.addPropertyChangeListener(new java.beans.PropertyChangeListener() { + public void propertyChange(java.beans.PropertyChangeEvent evt) { + RightFilesSplitPanePropertyChange(evt); } - try { - String port; - if (UseCustomPortName.isSelected()) { - port = CustomPortName.getText().trim(); - } else { - port = Port.getSelectedItem().toString().trim(); - } - prefs.put(SERIAL_PORT, port); - log("Serial port " + port + " save as default."); - int speed = Speed.getSelectedIndex(); - prefs.putInt(SERIAL_BAUD, speed); - log("Baud rate " + Speed.getSelectedItem().toString().trim() + " save as default."); - } catch (Exception e) { + }); + + RightSplitPane.setBorder(null); + RightSplitPane.setDividerLocation(320); + RightSplitPane.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT); + RightSplitPane.setToolTipText(""); + RightSplitPane.setName(""); // NOI18N + RightSplitPane.addPropertyChangeListener(new java.beans.PropertyChangeListener() { + public void propertyChange(java.beans.PropertyChangeEvent evt) { + RightSplitPanePropertyChange(evt); } - pOpen = portOpen(); - Open.setSelected(pOpen); - } else { - portClose(); - } - UpdateButtons(); - }// GEN-LAST:event_OpenActionPerformed + }); - private void UpdateButtons() { - pOpen = Open.isSelected(); - if (pOpen && !portJustOpen) { - UpdateLED(); - Port.setEnabled(false); - // Speed.setEnabled(false); - ReScan.setEnabled(false); - SendCommand.setEnabled(true); - Command.setEnabled(true); - CR.setEnabled(true); - LF.setEnabled(true); - // left panel - FileSaveESP.setEnabled(true); - MenuItemFileSaveESP.setEnabled(true); - FileSendESP.setEnabled(true); - MenuItemFileSendESP.setEnabled(true); - MenuItemFileRemoveESP.setEnabled(true); - FileDo.setEnabled(true); - MenuItemFileDo.setEnabled(true); - MenuItemEditorSendLine.setEnabled(true); - MenuItemEditSendLine.setEnabled(true); - ButtonSendLine.setEnabled(true); - NodeReset.setEnabled(true); - MenuItemTerminalReset.setEnabled(true); - MenuItemTerminalFormat.setEnabled(true); - MenuItemESPReset.setEnabled(true); - MenuItemESPFormat.setEnabled(true); - SnippetRun.setEnabled(true); - ButtonSendLine.setEnabled(true); - ButtonSnippet0.setEnabled(true); - ButtonSnippet1.setEnabled(true); - ButtonSnippet2.setEnabled(true); - ButtonSnippet3.setEnabled(true); - ButtonSnippet4.setEnabled(true); - ButtonSnippet5.setEnabled(true); - ButtonSnippet6.setEnabled(true); - ButtonSnippet7.setEnabled(true); - ButtonSnippet8.setEnabled(true); - ButtonSnippet9.setEnabled(true); - ButtonSnippet10.setEnabled(true); - ButtonSnippet11.setEnabled(true); - ButtonSnippet12.setEnabled(true); - ButtonSnippet13.setEnabled(true); - ButtonSnippet14.setEnabled(true); - ButtonSnippet15.setEnabled(true); + TerminalPane.setToolTipText("Terminal window"); + TerminalPane.setMaximumSize(new java.awt.Dimension(100, 100)); + TerminalPane.setMinimumSize(new java.awt.Dimension(100, 100)); + TerminalPane.setName(""); // NOI18N + TerminalPane.setPreferredSize(new java.awt.Dimension(100, 100)); + TerminalPane.setViewportView(Terminal); - } else { - UpdateLED(); - Port.setEnabled(true); - // Speed.setEnabled(true); - ReScan.setEnabled(true); - SendCommand.setEnabled(false); - Command.setEnabled(false); - CR.setEnabled(false); - LF.setEnabled(false); - // left panel - FileSaveESP.setEnabled(false); - FileSaveESP.setSelected(false); - MenuItemFileSaveESP.setEnabled(false); - FileSendESP.setEnabled(false); - FileSendESP.setSelected(false); - MenuItemFileSendESP.setEnabled(false); - MenuItemFileRemoveESP.setEnabled(false); - FileDo.setEnabled(false); - MenuItemFileDo.setEnabled(false); - MenuItemEditorSendLine.setEnabled(false); - MenuItemEditSendLine.setEnabled(false); - ButtonSendLine.setEnabled(false); - NodeReset.setEnabled(false); - MenuItemTerminalReset.setEnabled(false); - MenuItemTerminalFormat.setEnabled(false); - MenuItemESPReset.setEnabled(false); - MenuItemESPFormat.setEnabled(false); - SnippetRun.setEnabled(false); - ButtonSnippet0.setEnabled(false); - ButtonSnippet1.setEnabled(false); - ButtonSnippet2.setEnabled(false); - ButtonSnippet3.setEnabled(false); - ButtonSnippet4.setEnabled(false); - ButtonSnippet5.setEnabled(false); - ButtonSnippet6.setEnabled(false); - ButtonSnippet7.setEnabled(false); - ButtonSnippet8.setEnabled(false); - ButtonSnippet9.setEnabled(false); - ButtonSnippet10.setEnabled(false); - ButtonSnippet11.setEnabled(false); - ButtonSnippet12.setEnabled(false); - ButtonSnippet13.setEnabled(false); - ButtonSnippet14.setEnabled(false); - ButtonSnippet15.setEnabled(false); - } - } + Terminal.setEditable(false); + Terminal.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED)); + Terminal.setColumns(20); + Terminal.setRows(50); + Terminal.setTabSize(4); + Terminal.setToolTipText(""); + Terminal.setWrapStyleWord(false); + Terminal.setBracketMatchingEnabled(false); + Terminal.setCloseCurlyBraces(false); + Terminal.setCloseMarkupTags(false); + Terminal.setDragEnabled(false); + Terminal.setFadeCurrentLineHighlight(true); + Terminal.setHighlightSecondaryLanguages(false); + Terminal.setMaximumSize(new java.awt.Dimension(100, 100)); + Terminal.setMinimumSize(new java.awt.Dimension(100, 100)); + Terminal.setName(""); // NOI18N + Terminal.setPopupMenu(ContextMenuTerminal); + Terminal.setSyntaxEditingStyle("text/LUA"); + Terminal.addPropertyChangeListener(new java.beans.PropertyChangeListener() { + public void propertyChange(java.beans.PropertyChangeEvent evt) { + TerminalPropertyChange(evt); + } + }); + TerminalPane.setViewportView(Terminal); + Terminal.getAccessibleContext().setAccessibleParent(TerminalPane); - private void formWindowOpened(java.awt.event.WindowEvent evt) {// GEN-FIRST:event_formWindowOpened - PortFinder(); - this.setTitle("ESPlorer " + version + " by 4refr0nt"); - ProgressBar.setVisible(false); - CommandsSetNodeMCU(); - isToolbarShow(); - isLeftExtraShow(); - isRightExtraShow(); - isRightSnippetsShow(); - SetWindowSize(); - isFileManagerShow(); - isLogShow(); - }// GEN-LAST:event_formWindowOpened + RightSplitPane.setTopComponent(TerminalPane); - private void SetWindowSize() { - int x, y, h, w; - x = prefs.getInt(WIN_X, 0); - y = prefs.getInt(WIN_Y, 0); - h = prefs.getInt(WIN_H, 768); - w = prefs.getInt(WIN_W, 1024); - this.setBounds(x, y, w, h); - } + ScrollLog.setBorder(TerminalPane.getBorder()); + ScrollLog.setToolTipText("Log"); + ScrollLog.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); + ScrollLog.setAlignmentX(0.0F); + ScrollLog.setAlignmentY(0.0F); - private void isToolbarShow() { - FilesToolBar.setVisible(MenuItemViewToolbar.isSelected()); - } + Log.setEditable(false); + Log.setBackground(new java.awt.Color(51, 51, 51)); + Log.setColumns(20); + Log.setFont(Log.getFont().deriveFont(Log.getFont().getSize() - 1f)); + Log.setForeground(new java.awt.Color(0, 204, 0)); + Log.setLineWrap(true); + Log.setRows(3); + Log.setTabSize(4); + Log.setText("Logging enable"); + Log.setToolTipText("Log"); + Log.setWrapStyleWord(true); + Log.setAlignmentX(0.0F); + Log.setAlignmentY(0.0F); + Log.setBorder(Terminal.getBorder()); + Log.setComponentPopupMenu(ContextMenuLog); + Log.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); + Log.setMargin(new java.awt.Insets(0, 0, 0, 0)); + Log.setName("Log"); // NOI18N + Log.setNextFocusableComponent(SendCommand); + Log.setSelectionColor(new java.awt.Color(204, 0, 0)); + Log.setSelectionEnd(0); + Log.addCaretListener(new javax.swing.event.CaretListener() { + public void caretUpdate(javax.swing.event.CaretEvent evt) { + LogCaretUpdate(evt); + } + }); + ScrollLog.setViewportView(Log); + Log.getAccessibleContext().setAccessibleName("Log"); - private void isLeftExtraShow() { - LeftExtraButtons.setVisible(MenuItemViewLeftExtra.isSelected()); - } + RightSplitPane.setBottomComponent(ScrollLog); - private void isRightExtraShow() { - RightExtraButtons.setVisible(MenuItemViewRightExtra.isSelected()); - } + TerminalLogPane.setLayer(RightSplitPane, javax.swing.JLayeredPane.DEFAULT_LAYER); - private void isRightSnippetsShow() { - RightSnippetsPane.setVisible(MenuItemViewSnippets.isSelected()); - } + javax.swing.GroupLayout TerminalLogPaneLayout = new javax.swing.GroupLayout(TerminalLogPane); + TerminalLogPane.setLayout(TerminalLogPaneLayout); + TerminalLogPaneLayout.setHorizontalGroup(TerminalLogPaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 293, Short.MAX_VALUE) + .addGroup(TerminalLogPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(RightSplitPane, javax.swing.GroupLayout.Alignment.TRAILING, + javax.swing.GroupLayout.DEFAULT_SIZE, 293, Short.MAX_VALUE))); + TerminalLogPaneLayout.setVerticalGroup(TerminalLogPaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 421, Short.MAX_VALUE) + .addGroup(TerminalLogPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(RightSplitPane, javax.swing.GroupLayout.DEFAULT_SIZE, 421, Short.MAX_VALUE))); - private void isFileManagerShow() { - int div; - final int w = 160; - if (MenuItemViewFileManager.isSelected()) { - FileManagerScrollPane.setEnabled(true); - FileManagerScrollPane.setVisible(true); - // div = prefs.getInt( FM_DIV, RightFilesSplitPane.getWidth()-w ); - // if ( div > RightFilesSplitPane.getWidth()-w ) { - div = RightFilesSplitPane.getWidth() - w; - // } - RightFilesSplitPane.setDividerLocation(div); - } else { - FileManagerScrollPane.setEnabled(false); - FileManagerScrollPane.setVisible(false); - RightFilesSplitPane - .setDividerLocation(RightFilesSplitPane.getWidth() - RightFilesSplitPane.getDividerSize()); - } - } + RightFilesSplitPane.setLeftComponent(TerminalLogPane); - private void isLogShow() { - if (MenuItemViewLog.isSelected()) { - ScrollLog.setVisible(true); - ScrollLog.setEnabled(true); - RightSplitPane.setDividerLocation(prefs.getInt(LOG_DIV, RightSplitPane.getHeight() - 200)); - } else { - ScrollLog.setVisible(false); - ScrollLog.setEnabled(false); - RightSplitPane.setDividerLocation(RightSplitPane.getHeight() - RightSplitPane.getDividerSize()); - } - } + FileManagerScrollPane.setBorder(null); + FileManagerScrollPane.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); - private void ReScanActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ReScanActionPerformed - PortFinder(); - }// GEN-LAST:event_ReScanActionPerformed + FileManagersLayer.setMaximumSize(new java.awt.Dimension(145, 145)); - private void CommandKeyTyped(java.awt.event.KeyEvent evt) {// GEN-FIRST:event_CommandKeyTyped - // logWin("key: "+ Integer.toString(evt.getExtendedKeyCode())); - }// GEN-LAST:event_CommandKeyTyped + NodeFileManagerPane.setComponentPopupMenu(ContextMenuFileManager); + NodeFileManagerPane.setMaximumSize(new java.awt.Dimension(145, 145)); + NodeFileManagerPane.setName(""); // NOI18N + NodeFileManagerPane.setPreferredSize(new java.awt.Dimension(145, 145)); + java.awt.FlowLayout flowLayout1 = new java.awt.FlowLayout(java.awt.FlowLayout.LEADING, 2, 2); + flowLayout1.setAlignOnBaseline(true); + NodeFileManagerPane.setLayout(flowLayout1); - private void SendCommandActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SendCommandActionPerformed - SendCommand(); - }// GEN-LAST:event_SendCommandActionPerformed + FileFormat.setIcon(new javax.swing.ImageIcon(getClass().getResource("/file manager (delete).png"))); // NOI18N + FileFormat.setText("Format"); + FileFormat.setToolTipText("Format (erase) NodeMCU file system. All files will be removed!"); + FileFormat.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + FileFormat.setMargin(new java.awt.Insets(2, 4, 2, 4)); + FileFormat.setMaximumSize(new java.awt.Dimension(130, 25)); + FileFormat.setMinimumSize(new java.awt.Dimension(130, 25)); + FileFormat.setPreferredSize(new java.awt.Dimension(130, 25)); + FileFormat.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + FileFormatActionPerformed(evt); + } + }); + NodeFileManagerPane.add(FileFormat); - private void CommandActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_CommandActionPerformed - // log("CommandActionPerformed " + evt.getActionCommand()); - if ("comboBoxEdited".equals(evt.getActionCommand())) { // Hit Enter - SendCommand.doClick(); - } - }// GEN-LAST:event_CommandActionPerformed + FileSystemInfo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/file manager.png"))); // NOI18N + FileSystemInfo.setText("FS Info"); + FileSystemInfo.setToolTipText( + "Execute command file.fsinfo() and show total, used and remainig space on the ESP filesystem"); + FileSystemInfo.setAlignmentX(0.5F); + FileSystemInfo.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + FileSystemInfo.setMargin(new java.awt.Insets(2, 2, 2, 2)); + FileSystemInfo.setMaximumSize(new java.awt.Dimension(130, 25)); + FileSystemInfo.setPreferredSize(new java.awt.Dimension(130, 25)); + FileSystemInfo.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + FileSystemInfoActionPerformed(evt); + } + }); + NodeFileManagerPane.add(FileSystemInfo); - private void CommandKeyPressed(java.awt.event.KeyEvent evt) {// GEN-FIRST:event_CommandKeyPressed - // logWin("key: "+ Integer.toString(evt.getExtendedKeyCode())); - }// GEN-LAST:event_CommandKeyPressed + FileListReload.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N + FileListReload.setIcon(new javax.swing.ImageIcon(getClass().getResource("/refresh3.png"))); // NOI18N + FileListReload.setText("Reload"); + FileListReload.setAlignmentX(0.5F); + FileListReload.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + FileListReload.setMargin(new java.awt.Insets(2, 2, 2, 2)); + FileListReload.setMaximumSize(new java.awt.Dimension(130, 25)); + FileListReload.setPreferredSize(new java.awt.Dimension(130, 25)); + FileListReload.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + FileListReloadActionPerformed(evt); + } + }); + NodeFileManagerPane.add(FileListReload); - private void CommandKeyReleased(java.awt.event.KeyEvent evt) {// GEN-FIRST:event_CommandKeyReleased - // logWin("key: "+evt.getKeyChar()); - }// GEN-LAST:event_CommandKeyReleased + FileAsButton1.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N + FileAsButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/file.png"))); // NOI18N + FileAsButton1.setText("File 1"); + FileAsButton1.setToolTipText("Left click"); + FileAsButton1.setAlignmentX(0.5F); + FileAsButton1.setComponentPopupMenu(ContextMenuESPFileLUA); + FileAsButton1.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + FileAsButton1.setMargin(new java.awt.Insets(2, 2, 2, 2)); + FileAsButton1.setMaximumSize(new java.awt.Dimension(130, 25)); + FileAsButton1.setPreferredSize(new java.awt.Dimension(130, 25)); + FileAsButton1.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + FileAsButton1MouseClicked(evt); + } + }); + FileAsButton1.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + FileAsButton1ActionPerformed(evt); + } + }); + NodeFileManagerPane.add(FileAsButton1); - private void cmdATActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdATActionPerformed - btnSend("AT"); - }// GEN-LAST:event_cmdATActionPerformed + FileRenamePanel.setMaximumSize(new java.awt.Dimension(130, 45)); + FileRenamePanel.setMinimumSize(new java.awt.Dimension(130, 45)); - private void AT_RestartActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_AT_RestartActionPerformed - btnSend("AT+RST"); - }// GEN-LAST:event_AT_RestartActionPerformed + FileRenameLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + FileRenameLabel.setText("Old file name"); + FileRenameLabel.setToolTipText("Input new file name and hit Enter to completed or press Reload for cancel"); + FileRenameLabel.setMaximumSize(new java.awt.Dimension(130, 14)); + FileRenameLabel.setMinimumSize(new java.awt.Dimension(130, 14)); + FileRenameLabel.setPreferredSize(new java.awt.Dimension(130, 14)); - private void AT_GMRActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_AT_GMRActionPerformed - btnSend("AT+GMR"); - }// GEN-LAST:event_AT_GMRActionPerformed + FileRename.setText("NewFileName"); + FileRename.setToolTipText("Input new file name and hit Enter to completed or press Reload for cancel"); + FileRename.setMaximumSize(new java.awt.Dimension(130, 25)); + FileRename.setMinimumSize(new java.awt.Dimension(130, 25)); + FileRename.setPreferredSize(new java.awt.Dimension(130, 25)); + FileRename.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + FileRenameActionPerformed(evt); + } + }); - private void GSLPActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_GSLPActionPerformed - btnSend("AT+GSLP=5000"); - }// GEN-LAST:event_GSLPActionPerformed + FileRenamePanel.setLayer(FileRenameLabel, javax.swing.JLayeredPane.DEFAULT_LAYER); + FileRenamePanel.setLayer(FileRename, javax.swing.JLayeredPane.DEFAULT_LAYER); - private void ATE0ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ATE0ActionPerformed - btnSend("ATE0"); - }// GEN-LAST:event_ATE0ActionPerformed + javax.swing.GroupLayout FileRenamePanelLayout = new javax.swing.GroupLayout(FileRenamePanel); + FileRenamePanel.setLayout(FileRenamePanelLayout); + FileRenamePanelLayout + .setHorizontalGroup(FileRenamePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(FileRenamePanelLayout.createSequentialGroup() + .addGroup(FileRenamePanelLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(FileRename, javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(FileRenameLabel, javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addGap(0, 0, Short.MAX_VALUE))); + FileRenamePanelLayout + .setVerticalGroup(FileRenamePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(FileRenamePanelLayout.createSequentialGroup() + .addComponent(FileRenameLabel, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(FileRename, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(0, 0, Short.MAX_VALUE))); - private void ATE1ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ATE1ActionPerformed - btnSend("ATE1"); - }// GEN-LAST:event_ATE1ActionPerformed + NodeFileManagerPane.add(FileRenamePanel); + + PyFileManagerPane.setMaximumSize(new java.awt.Dimension(500, 155)); + PyFileManagerPane.setMinimumSize(new java.awt.Dimension(55, 55)); + PyFileManagerPane.setPreferredSize(new java.awt.Dimension(155, 155)); + PyFileManagerPane.setLayout(new java.awt.FlowLayout()); + + PyListDir.setIcon(new javax.swing.ImageIcon(getClass().getResource("/refresh3.png"))); // NOI18N + PyListDir.setText("ListDir /"); + PyListDir.setToolTipText("Execute command listdir() and show files"); + PyListDir.setAlignmentX(0.5F); + PyListDir.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + PyListDir.setMargin(new java.awt.Insets(2, 2, 2, 2)); + PyListDir.setMaximumSize(new java.awt.Dimension(130, 25)); + PyListDir.setPreferredSize(new java.awt.Dimension(130, 25)); + PyListDir.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + PyListDirActionPerformed(evt); + } + }); + PyFileManagerPane.add(PyListDir); + + PyFileAsButton1.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N + PyFileAsButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/file.png"))); // NOI18N + PyFileAsButton1.setText("File 1"); + PyFileAsButton1.setToolTipText("Left click"); + PyFileAsButton1.setAlignmentX(0.5F); + PyFileAsButton1.setComponentPopupMenu(ContextMenuESPFileLUA); + PyFileAsButton1.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + PyFileAsButton1.setMargin(new java.awt.Insets(2, 2, 2, 2)); + PyFileAsButton1.setMaximumSize(new java.awt.Dimension(130, 25)); + PyFileAsButton1.setPreferredSize(new java.awt.Dimension(130, 25)); + PyFileAsButton1.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + PyFileAsButton1MouseClicked(evt); + } + }); + PyFileAsButton1.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + PyFileAsButton1ActionPerformed(evt); + } + }); + PyFileManagerPane.add(PyFileAsButton1); - private void cmdGetHelpCWMODEActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdGetHelpCWMODEActionPerformed - btnSend("AT+CWMODE=?"); - }// GEN-LAST:event_cmdGetHelpCWMODEActionPerformed + FileManagersLayer.setLayer(NodeFileManagerPane, javax.swing.JLayeredPane.DEFAULT_LAYER); + FileManagersLayer.setLayer(PyFileManagerPane, javax.swing.JLayeredPane.DEFAULT_LAYER); - private void cmdGetCWMODEActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdGetCWMODEActionPerformed - btnSend("AT+CWMODE?"); - }// GEN-LAST:event_cmdGetCWMODEActionPerformed + javax.swing.GroupLayout FileManagersLayerLayout = new javax.swing.GroupLayout(FileManagersLayer); + FileManagersLayer.setLayout(FileManagersLayerLayout); + FileManagersLayerLayout.setHorizontalGroup(FileManagersLayerLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(FileManagersLayerLayout.createSequentialGroup() + .addGroup(FileManagersLayerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(PyFileManagerPane, javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(NodeFileManagerPane, javax.swing.GroupLayout.PREFERRED_SIZE, 155, + javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(0, 433, Short.MAX_VALUE))); + FileManagersLayerLayout.setVerticalGroup(FileManagersLayerLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(FileManagersLayerLayout.createSequentialGroup() + .addComponent(NodeFileManagerPane, javax.swing.GroupLayout.DEFAULT_SIZE, 248, Short.MAX_VALUE) + .addGap(6, 6, 6) + .addComponent(PyFileManagerPane, javax.swing.GroupLayout.DEFAULT_SIZE, 167, Short.MAX_VALUE))); - private void cmdSetCWMODE1ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSetCWMODE1ActionPerformed - btnSend("AT+CWMODE=1"); - }// GEN-LAST:event_cmdSetCWMODE1ActionPerformed + FileManagerScrollPane.setViewportView(FileManagersLayer); - private void cmdSetCWMODE2ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSetCWMODE2ActionPerformed - btnSend("AT+CWMODE=2"); - }// GEN-LAST:event_cmdSetCWMODE2ActionPerformed + RightFilesSplitPane.setRightComponent(FileManagerScrollPane); - private void cmdSetCWMODE3ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSetCWMODE3ActionPerformed - btnSend("AT+CWMODE=3"); - }// GEN-LAST:event_cmdSetCWMODE3ActionPerformed + RightSnippetsPane.setLayout(new java.awt.FlowLayout()); - private void cmdSetCWLAPActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSetCWLAPActionPerformed - btnSend("AT+CWLAP"); - }// GEN-LAST:event_cmdSetCWLAPActionPerformed + ButtonSnippet0.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + ButtonSnippet0.setMnemonic(KeyEvent.VK_BACK_QUOTE); + ButtonSnippet0.setText("Snippet0"); + ButtonSnippet0.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + ButtonSnippet0ActionPerformed(evt); + } + }); + RightSnippetsPane.add(ButtonSnippet0); - private void cmdGetCIPSTATUSActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdGetCIPSTATUSActionPerformed - btnSend("AT+CIPSTATUS"); - }// GEN-LAST:event_cmdGetCIPSTATUSActionPerformed + ButtonSnippet1.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + ButtonSnippet1.setMnemonic(KeyEvent.VK_1); + ButtonSnippet1.setText("Snippet1"); + ButtonSnippet1.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + ButtonSnippet1ActionPerformed(evt); + } + }); + RightSnippetsPane.add(ButtonSnippet1); - private void cmdGetCIPSTARTActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdGetCIPSTARTActionPerformed - btnSend("AT+CIPSTART=?"); - }// GEN-LAST:event_cmdGetCIPSTARTActionPerformed + ButtonSnippet2.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + ButtonSnippet2.setMnemonic(KeyEvent.VK_2); + ButtonSnippet2.setText("Snippet2"); + ButtonSnippet2.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + ButtonSnippet2ActionPerformed(evt); + } + }); + RightSnippetsPane.add(ButtonSnippet2); - private void cmdSetCIPSTARTActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSetCIPSTARTActionPerformed - String cmd = "AT+CIPSTART="; - if (multi.isSelected()) { - cmd += conn_id.getSelectedItem().toString() + ","; - btnSend("AT+CIPMUX=1"); - } else { - btnSend("AT+CIPMUX=0"); - } - if (protocol.getSelectedIndex() == 0) { // TCP - cmd += "\"TCP\",\""; - } else { - cmd += "\"UDP\",\""; - } - cmd += remote_address.getText().trim() + "\"," + remote_port.getText().trim(); - if ((udp_local_port.getText().trim() != "") && (protocol.getSelectedIndex() == 1)) { - cmd += "," + udp_local_port.getText().trim() + "," + udp_mode.getText().trim(); - } - btnSend(cmd); - }// GEN-LAST:event_cmdSetCIPSTARTActionPerformed + ButtonSnippet3.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + ButtonSnippet3.setMnemonic(KeyEvent.VK_3); + ButtonSnippet3.setText("Snippet3"); + ButtonSnippet3.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + ButtonSnippet3ActionPerformed(evt); + } + }); + RightSnippetsPane.add(ButtonSnippet3); - private void UPDATEActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_UPDATEActionPerformed - btnSend("AT+CIUPDATE"); - }// GEN-LAST:event_UPDATEActionPerformed + ButtonSnippet4.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + ButtonSnippet4.setMnemonic(KeyEvent.VK_4); + ButtonSnippet4.setText("Snippet4"); + ButtonSnippet4.setToolTipText(""); + ButtonSnippet4.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + ButtonSnippet4ActionPerformed(evt); + } + }); + RightSnippetsPane.add(ButtonSnippet4); - private void UDPPropertyChange(java.beans.PropertyChangeEvent evt) {// GEN-FIRST:event_UDPPropertyChange + ButtonSnippet5.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + ButtonSnippet5.setMnemonic(KeyEvent.VK_5); + ButtonSnippet5.setText("Snippet5"); + ButtonSnippet5.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + ButtonSnippet5ActionPerformed(evt); + } + }); + RightSnippetsPane.add(ButtonSnippet5); - }// GEN-LAST:event_UDPPropertyChange + ButtonSnippet6.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + ButtonSnippet6.setMnemonic(KeyEvent.VK_6); + ButtonSnippet6.setText("Snippet6"); + ButtonSnippet6.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + ButtonSnippet6ActionPerformed(evt); + } + }); + RightSnippetsPane.add(ButtonSnippet6); - private void multiItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_multiItemStateChanged + ButtonSnippet7.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + ButtonSnippet7.setMnemonic(KeyEvent.VK_7); + ButtonSnippet7.setText("Snippet7"); + ButtonSnippet7.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + ButtonSnippet7ActionPerformed(evt); + } + }); + RightSnippetsPane.add(ButtonSnippet7); - }// GEN-LAST:event_multiItemStateChanged + ButtonSnippet8.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + ButtonSnippet8.setMnemonic(KeyEvent.VK_8); + ButtonSnippet8.setText("Snippet8"); + ButtonSnippet8.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + ButtonSnippet8ActionPerformed(evt); + } + }); + RightSnippetsPane.add(ButtonSnippet8); - private void singleItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_singleItemStateChanged + ButtonSnippet9.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + ButtonSnippet9.setMnemonic(KeyEvent.VK_9); + ButtonSnippet9.setText("Snippet9"); + ButtonSnippet9.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + ButtonSnippet9ActionPerformed(evt); + } + }); + RightSnippetsPane.add(ButtonSnippet9); - }// GEN-LAST:event_singleItemStateChanged + ButtonSnippet10.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + ButtonSnippet10.setMnemonic(KeyEvent.VK_0); + ButtonSnippet10.setText("Snippet10"); + ButtonSnippet10.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + ButtonSnippet10ActionPerformed(evt); + } + }); + RightSnippetsPane.add(ButtonSnippet10); - private void protocolItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_protocolItemStateChanged - if (protocol.getSelectedIndex() == 0) { // TCP - udp_local_port.setEnabled(false); - udp_mode.setEnabled(false); - } else { - udp_local_port.setEnabled(true); - udp_mode.setEnabled(true); - } + ButtonSnippet11.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + ButtonSnippet11.setMnemonic(KeyEvent.VK_MINUS); + ButtonSnippet11.setText("Snippet11"); + ButtonSnippet11.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + ButtonSnippet11ActionPerformed(evt); + } + }); + RightSnippetsPane.add(ButtonSnippet11); - }// GEN-LAST:event_protocolItemStateChanged + ButtonSnippet12.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + ButtonSnippet12.setMnemonic(KeyEvent.VK_EQUALS); + ButtonSnippet12.setText("Snippet12"); + ButtonSnippet12.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + ButtonSnippet12ActionPerformed(evt); + } + }); + RightSnippetsPane.add(ButtonSnippet12); - private void cmdGetCIPMUXActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdGetCIPMUXActionPerformed - btnSend("AT+CIPMUX?"); - }// GEN-LAST:event_cmdGetCIPMUXActionPerformed + ButtonSnippet13.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + ButtonSnippet13.setMnemonic(KeyEvent.VK_BACK_SLASH); + ButtonSnippet13.setText("Snippet13"); + ButtonSnippet13.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + ButtonSnippet13ActionPerformed(evt); + } + }); + RightSnippetsPane.add(ButtonSnippet13); - private void cmdSetCIPMUX1ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSetCIPMUX1ActionPerformed - btnSend("AT+CIPMUX=1"); - }// GEN-LAST:event_cmdSetCIPMUX1ActionPerformed - - private void cmdSetCIPMUX0ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSetCIPMUX0ActionPerformed - btnSend("AT+CIPMUX=0"); - }// GEN-LAST:event_cmdSetCIPMUX0ActionPerformed + ButtonSnippet14.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + ButtonSnippet14.setMnemonic(KeyEvent.VK_BACK_SPACE); + ButtonSnippet14.setText("Snippet14"); + ButtonSnippet14.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + ButtonSnippet14ActionPerformed(evt); + } + }); + RightSnippetsPane.add(ButtonSnippet14); - private void cmdCIPSENDActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdCIPSENDActionPerformed - String cmd = "AT+CIPSEND="; - String len = Integer.toString(data.getText().length()); - if (multi.isSelected()) { - cmd += conn_id.getSelectedItem().toString() + ","; - } - cmd += len; - btnSend(cmd); - btnSend(data.getText()); - }// GEN-LAST:event_cmdCIPSENDActionPerformed + ButtonSnippet15.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + ButtonSnippet15.setText("Snippet15"); + ButtonSnippet15.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + ButtonSnippet15ActionPerformed(evt); + } + }); + RightSnippetsPane.add(ButtonSnippet15); - private void cmdCIPSENDinteractiveActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdCIPSENDinteractiveActionPerformed - btnSend("AT+CIPSEND"); - }// GEN-LAST:event_cmdCIPSENDinteractiveActionPerformed + RightBigPane.setLayer(RightFilesSplitPane, javax.swing.JLayeredPane.DEFAULT_LAYER); + RightBigPane.setLayer(RightSnippetsPane, javax.swing.JLayeredPane.DEFAULT_LAYER); - private void cmdSetCIPCLOSEActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSetCIPCLOSEActionPerformed - String cmd = "AT+CIPCLOSE"; - if (multi.isSelected()) { - cmd += "=" + conn_id.getSelectedItem().toString(); - } - btnSend(cmd); - }// GEN-LAST:event_cmdSetCIPCLOSEActionPerformed + javax.swing.GroupLayout RightBigPaneLayout = new javax.swing.GroupLayout(RightBigPane); + RightBigPane.setLayout(RightBigPaneLayout); + RightBigPaneLayout + .setHorizontalGroup(RightBigPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(RightFilesSplitPane, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) + .addComponent(RightSnippetsPane, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)); + RightBigPaneLayout + .setVerticalGroup(RightBigPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(RightBigPaneLayout.createSequentialGroup().addComponent(RightFilesSplitPane) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(RightSnippetsPane, javax.swing.GroupLayout.PREFERRED_SIZE, 96, + javax.swing.GroupLayout.PREFERRED_SIZE))); - private void ButtonFileNewActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonFileNewActionPerformed - MenuItemFileNew.doClick(); - }// GEN-LAST:event_ButtonFileNewActionPerformed + RightExtraButtons.setOpaque(true); + RightExtraButtons.setLayout(new java.awt.FlowLayout()); - private void ContextMenuTerminalPopupMenuWillBecomeVisible(javax.swing.event.PopupMenuEvent evt) {// GEN-FIRST:event_ContextMenuTerminalPopupMenuWillBecomeVisible - try { - MenuItemTerminalCopy.setEnabled(Terminal.getSelectedText().length() > 0); - } catch (Exception e) { - MenuItemTerminalCopy.setEnabled(false); - } - int size = Terminal.getFont().getSize(); - String inc, dec; - if (size < TERMINAL_FONT_SIZE_MAX) { - inc = "Change font size from " + Integer.toString(size) + " to " + Integer.toString(size + 1); - } else { - inc = "Set font size to " + Float.toString(TERMINAL_FONT_SIZE_MIN); - } - MenuItemTerminalFontInc.setText(inc); - if (size > TERMINAL_FONT_SIZE_MIN) { - dec = "Change font size from " + Integer.toString(size) + " to " + Integer.toString(size - 1); - } else { - dec = "Set font size to " + Float.toString(TERMINAL_FONT_SIZE_MAX); - } - MenuItemTerminalFontDec.setText(dec); - }// GEN-LAST:event_ContextMenuTerminalPopupMenuWillBecomeVisible + NodeHeap.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + NodeHeap.setText("Heap"); + NodeHeap.setToolTipText("Return the remain HEAP size in bytes"); + NodeHeap.setMaximumSize(new java.awt.Dimension(87, 30)); + NodeHeap.setMinimumSize(new java.awt.Dimension(87, 30)); + NodeHeap.setPreferredSize(new java.awt.Dimension(87, 30)); + NodeHeap.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + NodeHeapActionPerformed(evt); + } + }); + RightExtraButtons.add(NodeHeap); - private void MenuItemTerminalCopyActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemTerminalCopyActionPerformed - Terminal.copy(); - }// GEN-LAST:event_MenuItemTerminalCopyActionPerformed + NodeInfo.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + NodeInfo.setText("Chip Info"); + NodeInfo.setToolTipText("Return NodeMCU version, chipid, flashid, flash size, flash mode, flash speed"); + NodeInfo.setMaximumSize(new java.awt.Dimension(87, 30)); + NodeInfo.setMinimumSize(new java.awt.Dimension(87, 30)); + NodeInfo.setPreferredSize(new java.awt.Dimension(87, 30)); + NodeInfo.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + NodeInfoActionPerformed(evt); + } + }); + RightExtraButtons.add(NodeInfo); - private void MenuItemTerminalClearActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemTerminalClearActionPerformed - Terminal.setText(""); - }// GEN-LAST:event_MenuItemTerminalClearActionPerformed + NodeChipID.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + NodeChipID.setText("Chip ID"); + NodeChipID.setToolTipText("Return chip ID"); + NodeChipID.setMargin(new java.awt.Insets(2, 2, 2, 2)); + NodeChipID.setMaximumSize(new java.awt.Dimension(87, 30)); + NodeChipID.setMinimumSize(new java.awt.Dimension(87, 30)); + NodeChipID.setPreferredSize(new java.awt.Dimension(87, 30)); + NodeChipID.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + NodeChipIDActionPerformed(evt); + } + }); + RightExtraButtons.add(NodeChipID); - private void cmdGetCIFSRActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdGetCIFSRActionPerformed - btnSend("AT+CIFSR"); - }// GEN-LAST:event_cmdGetCIFSRActionPerformed + NodeFlashID.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + NodeFlashID.setText("Flash ID"); + NodeFlashID.setToolTipText("Return flash ID"); + NodeFlashID.setMargin(new java.awt.Insets(2, 2, 2, 2)); + NodeFlashID.setMaximumSize(new java.awt.Dimension(87, 30)); + NodeFlashID.setMinimumSize(new java.awt.Dimension(87, 30)); + NodeFlashID.setPreferredSize(new java.awt.Dimension(87, 30)); + NodeFlashID.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + NodeFlashIDActionPerformed(evt); + } + }); + RightExtraButtons.add(NodeFlashID); - private void cmdSetCIPSERVERActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSetCIPSERVERActionPerformed - String cmd = "AT+CIPSERVER="; - cmd += Integer.toString(ServerMode.getSelectedIndex()).trim(); - if (ServerMode.getSelectedIndex() == 1) { - cmd += "," + ServerPort.getText().trim(); - } - btnSend(cmd); - }// GEN-LAST:event_cmdSetCIPSERVERActionPerformed + NodeReset.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + NodeReset.setIcon(new javax.swing.ImageIcon(getClass().getResource("/reset.png"))); // NOI18N + NodeReset.setText("Reset"); + NodeReset.setToolTipText("Soft reset by command node.reset()"); + NodeReset.setMargin(new java.awt.Insets(2, 4, 2, 4)); + NodeReset.setMaximumSize(new java.awt.Dimension(87, 30)); + NodeReset.setMinimumSize(new java.awt.Dimension(87, 30)); + NodeReset.setPreferredSize(new java.awt.Dimension(87, 30)); + NodeReset.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + NodeResetActionPerformed(evt); + } + }); + RightExtraButtons.add(NodeReset); - private void cmdGetCIPMODEActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdGetCIPMODEActionPerformed - btnSend("AT+CIPMODE?"); - }// GEN-LAST:event_cmdGetCIPMODEActionPerformed + SendCommand.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N + SendCommand.setIcon(new javax.swing.ImageIcon(getClass().getResource("/left.png"))); // NOI18N + SendCommand.setToolTipText(""); + SendCommand.setAlignmentY(0.0F); + SendCommand.setEnabled(false); + SendCommand.setLabel("Send"); + SendCommand.setMargin(new java.awt.Insets(0, 0, 0, 0)); + SendCommand.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + SendCommandActionPerformed(evt); + } + }); - private void cmdSetCIPMODE0ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSetCIPMODE0ActionPerformed - btnSend("AT+CIPMODE=0"); - }// GEN-LAST:event_cmdSetCIPMODE0ActionPerformed + RightBasePane.setLayer(LEDPanel, javax.swing.JLayeredPane.DEFAULT_LAYER); + RightBasePane.setLayer(RightBottomPane, javax.swing.JLayeredPane.DEFAULT_LAYER); + RightBasePane.setLayer(RightBigPane, javax.swing.JLayeredPane.DEFAULT_LAYER); + RightBasePane.setLayer(RightExtraButtons, javax.swing.JLayeredPane.DEFAULT_LAYER); + RightBasePane.setLayer(SendCommand, javax.swing.JLayeredPane.DEFAULT_LAYER); - private void cmdSetCIPMODE1ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSetCIPMODE1ActionPerformed - btnSend("AT+CIPMODE=1"); - }// GEN-LAST:event_cmdSetCIPMODE1ActionPerformed + javax.swing.GroupLayout RightBasePaneLayout = new javax.swing.GroupLayout(RightBasePane); + RightBasePane.setLayout(RightBasePaneLayout); + RightBasePaneLayout.setHorizontalGroup(RightBasePaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(RightBasePaneLayout.createSequentialGroup().addGroup(RightBasePaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(RightBigPane) + .addGroup(RightBasePaneLayout.createSequentialGroup().addComponent(RightBottomPane) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(SendCommand, javax.swing.GroupLayout.PREFERRED_SIZE, 76, + javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(RightBasePaneLayout.createSequentialGroup().addGroup(RightBasePaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(RightExtraButtons, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(LEDPanel, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(0, 0, Short.MAX_VALUE))) + .addContainerGap())); + RightBasePaneLayout.setVerticalGroup(RightBasePaneLayout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(RightBasePaneLayout.createSequentialGroup().addGap(1, 1, 1) + .addComponent(LEDPanel, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(RightBigPane) + .addGap(5, 5, 5) + .addComponent(RightExtraButtons, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(RightBasePaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(RightBottomPane, javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(SendCommand, javax.swing.GroupLayout.PREFERRED_SIZE, 36, + javax.swing.GroupLayout.PREFERRED_SIZE)))); - private void ServerModeActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ServerModeActionPerformed - if (ServerMode.getSelectedIndex() == 1) { // create - ServerPort.setEnabled(true); - } else { - ServerPort.setEnabled(false); - } - }// GEN-LAST:event_ServerModeActionPerformed + SendCommand.getAccessibleContext().setAccessibleName(""); - private void cmdGetCIPSTOActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdGetCIPSTOActionPerformed - btnSend("AT+CIPSTO?"); - }// GEN-LAST:event_cmdGetCIPSTOActionPerformed + HorizontSplit.setRightComponent(RightBasePane); - private void cmdSetCIPSTOActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSetCIPSTOActionPerformed - btnSend("AT+CIPSTO=" + ServerTimeout.getText().trim()); - }// GEN-LAST:event_cmdSetCIPSTOActionPerformed + MainMenuBar.setAlignmentX(0.0F); + MainMenuBar.setName("MainMenu"); // NOI18N + MainMenuBar.setPreferredSize(new java.awt.Dimension(300, 22)); - private void cmdSetCIPAPActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSetCIPAPActionPerformed - btnSend("AT+CIPAP=\"" + softAPIP.getText() + "\""); - }// GEN-LAST:event_cmdSetCIPAPActionPerformed + MenuFile.setText("File"); + MenuFile.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuFileActionPerformed(evt); + } + }); - private void cmdSetCIPSTAActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSetCIPSTAActionPerformed - btnSend("AT+CIPSTA=\"" + StationIP.getText() + "\""); - }// GEN-LAST:event_cmdSetCIPSTAActionPerformed + MenuItemFileNew.setAccelerator( + javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_N, java.awt.event.InputEvent.CTRL_MASK)); + MenuItemFileNew.setIcon(new javax.swing.ImageIcon(getClass().getResource("/document.png"))); // NOI18N + MenuItemFileNew.setText("New"); + MenuItemFileNew.setToolTipText("File New"); + MenuItemFileNew.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemFileNewActionPerformed(evt); + } + }); + MenuFile.add(MenuItemFileNew); - private void cmdGetCIPAPActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdGetCIPAPActionPerformed - btnSend("AT+CIPAP?"); - }// GEN-LAST:event_cmdGetCIPAPActionPerformed - - private void cmdGetCIPSTAActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdGetCIPSTAActionPerformed - btnSend("AT+CIPSTA?"); - }// GEN-LAST:event_cmdGetCIPSTAActionPerformed - - private void cmdSetCIPAPMACActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSetCIPAPMACActionPerformed - btnSend("AT+CIPAPMAC=\"" + MAC.getText() + "\""); - }// GEN-LAST:event_cmdSetCIPAPMACActionPerformed + MenuItemFileOpen.setAccelerator( + javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_O, java.awt.event.InputEvent.CTRL_MASK)); + MenuItemFileOpen.setIcon(new javax.swing.ImageIcon(getClass().getResource("/folder open.png"))); // NOI18N + MenuItemFileOpen.setText("Open from disk"); + MenuItemFileOpen.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemFileOpenActionPerformed(evt); + } + }); + MenuFile.add(MenuItemFileOpen); - private void cmdGetCIPAPMACActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdGetCIPAPMACActionPerformed - btnSend("AT+CIPAPMAC?"); - }// GEN-LAST:event_cmdGetCIPAPMACActionPerformed + MenuItemFileReload.setAccelerator( + javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_R, java.awt.event.InputEvent.CTRL_MASK)); + MenuItemFileReload.setIcon(new javax.swing.ImageIcon(getClass().getResource("/refresh.png"))); // NOI18N + MenuItemFileReload.setText("Reload from disk"); + MenuItemFileReload.setToolTipText("Reload file from disk, if you use external editor"); + MenuItemFileReload.setEnabled(false); + MenuItemFileReload.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemFileReloadActionPerformed(evt); + } + }); + MenuFile.add(MenuItemFileReload); - private void cmdSetCIPSTAMACActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSetCIPSTAMACActionPerformed - btnSend("AT+CIPSTAMAC=\"" + MAC.getText() + "\""); - }// GEN-LAST:event_cmdSetCIPSTAMACActionPerformed + MenuItemFileSave.setAccelerator( + javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.CTRL_MASK)); + MenuItemFileSave.setIcon(new javax.swing.ImageIcon(getClass().getResource("/save.png"))); // NOI18N + MenuItemFileSave.setText("Save to disk"); + MenuItemFileSave.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemFileSaveActionPerformed(evt); + } + }); + MenuFile.add(MenuItemFileSave); - private void cmdGetCIPSTAMACActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdGetCIPSTAMACActionPerformed - btnSend("AT+CIPSTAMAC?"); - }// GEN-LAST:event_cmdGetCIPSTAMACActionPerformed + MenuItemFileSaveAs.setIcon(new javax.swing.ImageIcon(getClass().getResource("/save.png"))); // NOI18N + MenuItemFileSaveAs.setText("Save As.. to disk"); + MenuItemFileSaveAs.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemFileSaveAsActionPerformed(evt); + } + }); + MenuFile.add(MenuItemFileSaveAs); - private void cmdSetCWDHCPActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSetCWDHCPActionPerformed - btnSend("AT+CWDHCP=" + Integer.toString(DHCPmode.getSelectedIndex()) + "," - + Integer.toString(DHCP.getSelectedIndex())); - }// GEN-LAST:event_cmdSetCWDHCPActionPerformed + MenuItemFileSaveAll.setAccelerator( + javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_A, java.awt.event.InputEvent.CTRL_MASK)); + MenuItemFileSaveAll.setIcon(new javax.swing.ImageIcon(getClass().getResource("/save_all.png"))); // NOI18N + MenuItemFileSaveAll.setText("Save All to disk"); + MenuItemFileSaveAll.setEnabled(false); + MenuFile.add(MenuItemFileSaveAll); - private void cmdGetCWLIFActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdGetCWLIFActionPerformed - btnSend("AT+CWLIF"); - }// GEN-LAST:event_cmdGetCWLIFActionPerformed + MenuItemFileClose.setAccelerator( + javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F4, java.awt.event.InputEvent.CTRL_MASK)); + MenuItemFileClose.setIcon(new javax.swing.ImageIcon(getClass().getResource("/folder closed.png"))); // NOI18N + MenuItemFileClose.setText("Close"); + MenuItemFileClose.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemFileCloseActionPerformed(evt); + } + }); + MenuFile.add(MenuItemFileClose); + MenuFile.add(jSeparatorFileMenu); - private void PASSsoftAPActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_PASSsoftAPActionPerformed - // TODO add your handling code here: - }// GEN-LAST:event_PASSsoftAPActionPerformed + MenuItemFileSaveESP.setAccelerator( + javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.ALT_MASK)); + MenuItemFileSaveESP.setIcon(new javax.swing.ImageIcon(getClass().getResource("/move.png"))); // NOI18N + MenuItemFileSaveESP.setText("Save to ESP"); - private void PASSsoftAPFocusGained(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_PASSsoftAPFocusGained - // TODO add your handling code here: - }// GEN-LAST:event_PASSsoftAPFocusGained + binding = org.jdesktop.beansbinding.Bindings.createAutoBinding( + org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, FileSaveESP, + org.jdesktop.beansbinding.ELProperty.create("${enabled}"), MenuItemFileSaveESP, + org.jdesktop.beansbinding.BeanProperty.create("enabled")); + bindingGroup.addBinding(binding); - private void SSIDsoftAPActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SSIDsoftAPActionPerformed - // TODO add your handling code here: - }// GEN-LAST:event_SSIDsoftAPActionPerformed + MenuItemFileSaveESP.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemFileSaveESPActionPerformed(evt); + } + }); + MenuFile.add(MenuItemFileSaveESP); - private void SSIDsoftAPFocusGained(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_SSIDsoftAPFocusGained - // TODO add your handling code here: - }// GEN-LAST:event_SSIDsoftAPFocusGained + jMenuItem4.setAccelerator( + javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_A, java.awt.event.InputEvent.ALT_MASK)); + jMenuItem4.setText("Save All to ESP"); + jMenuItem4.setEnabled(false); + MenuFile.add(jMenuItem4); - private void cmdSetCWSAPActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSetCWSAPActionPerformed - int ch = channel.getSelectedIndex() + 1; - btnSend("AT+CWSAP=\"" + SSIDsoftAP.getText() + "\",\"" + PASSsoftAP.getText() + "\"," + Integer.toString(ch) - + "," + encryption.getSelectedIndex()); - }// GEN-LAST:event_cmdSetCWSAPActionPerformed + MenuItemFileSendESP.setAccelerator( + javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_E, java.awt.event.InputEvent.ALT_MASK)); + MenuItemFileSendESP.setIcon(new javax.swing.ImageIcon(getClass().getResource("/script_send.png"))); // NOI18N + MenuItemFileSendESP.setText("Send to ESP"); + MenuItemFileSendESP.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemFileSendESPActionPerformed(evt); + } + }); + MenuFile.add(MenuItemFileSendESP); - private void cmdGetCWSAPActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdGetCWSAPActionPerformed - btnSend("AT+CWSAP?"); - }// GEN-LAST:event_cmdGetCWSAPActionPerformed + jMenuItem7.setAccelerator( + javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_U, java.awt.event.InputEvent.ALT_MASK)); + jMenuItem7.setText("Upload file to ESP"); + jMenuItem7.setEnabled(false); + MenuFile.add(jMenuItem7); + MenuFile.add(jSeparator4); - private void cmdSetCWQAPActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSetCWQAPActionPerformed - btnSend("AT+CWQAP"); - }// GEN-LAST:event_cmdSetCWQAPActionPerformed + MenuItemFileDo.setAccelerator( + javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_D, java.awt.event.InputEvent.ALT_MASK)); + MenuItemFileDo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/play.png"))); // NOI18N + MenuItemFileDo.setText("DoFile on ESP"); + MenuItemFileDo.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemFileDoActionPerformed(evt); + } + }); + MenuFile.add(MenuItemFileDo); + MenuFile.add(jSeparator3); - private void PASSActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_PASSActionPerformed - // TODO add your handling code here: - }// GEN-LAST:event_PASSActionPerformed + MenuItemFileRemoveESP.setAccelerator( + javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_R, java.awt.event.InputEvent.ALT_MASK)); + MenuItemFileRemoveESP.setIcon(new javax.swing.ImageIcon(getClass().getResource("/trash.png"))); // NOI18N + MenuItemFileRemoveESP.setText("Remove from ESP"); + MenuItemFileRemoveESP.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemFileRemoveESPActionPerformed(evt); + } + }); + MenuFile.add(MenuItemFileRemoveESP); + MenuFile.add(jSeparator2); - private void PASSFocusGained(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_PASSFocusGained - if (PASS.getText().trim() == "password") { - PASS.setText(""); - } - }// GEN-LAST:event_PASSFocusGained + MenuItemFileExit.setAccelerator( + javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F4, java.awt.event.InputEvent.ALT_MASK)); + MenuItemFileExit.setLabel("Exit"); + MenuItemFileExit.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemFileExitActionPerformed(evt); + } + }); + MenuFile.add(MenuItemFileExit); - private void SSIDActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SSIDActionPerformed - // TODO add your handling code here: - }// GEN-LAST:event_SSIDActionPerformed + MainMenuBar.add(MenuFile); - private void SSIDFocusGained(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_SSIDFocusGained - if (SSID.getText().trim() == "SSID") { - SSID.setText(""); - } - }// GEN-LAST:event_SSIDFocusGained + MenuEdit.setText("Edit"); - private void cmdSetCWJAPActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSetCWJAPActionPerformed - btnSend("AT+CWJAP=\"" + SSID.getText() + "\",\"" + PASS.getText() + "\""); - }// GEN-LAST:event_cmdSetCWJAPActionPerformed + MenuItemEditUndo.setAccelerator( + javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_Z, java.awt.event.InputEvent.CTRL_MASK)); + MenuItemEditUndo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/undo1.png"))); // NOI18N + MenuItemEditUndo.setText("Undo"); + MenuItemEditUndo.setEnabled(false); + MenuItemEditUndo.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemEditUndoActionPerformed(evt); + } + }); + MenuEdit.add(MenuItemEditUndo); - private void cmdGetCWJAPActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdGetCWJAPActionPerformed - btnSend("AT+CWJAP?"); - }// GEN-LAST:event_cmdGetCWJAPActionPerformed + MenuItemEditRedo.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F4, 0)); + MenuItemEditRedo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/redo1.png"))); // NOI18N + MenuItemEditRedo.setText("Redo"); + MenuItemEditRedo.setEnabled(false); + MenuItemEditRedo.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemEditRedoActionPerformed(evt); + } + }); + MenuEdit.add(MenuItemEditRedo); + MenuEdit.add(jSeparator7); - private void AT_StationFocusGained(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_AT_StationFocusGained + MenuItemEditCut.setAccelerator( + javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_X, java.awt.event.InputEvent.CTRL_MASK)); + MenuItemEditCut.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cut.png"))); // NOI18N + MenuItemEditCut.setText("Cut"); + MenuItemEditCut.setEnabled(false); + MenuItemEditCut.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemEditCutActionPerformed(evt); + } + }); + MenuEdit.add(MenuItemEditCut); - }// GEN-LAST:event_AT_StationFocusGained + MenuItemEditCopy.setAccelerator( + javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C, java.awt.event.InputEvent.CTRL_MASK)); + MenuItemEditCopy.setIcon(new javax.swing.ImageIcon(getClass().getResource("/copy.png"))); // NOI18N + MenuItemEditCopy.setText("Copy"); + MenuItemEditCopy.setEnabled(false); + MenuItemEditCopy.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemEditCopyActionPerformed(evt); + } + }); + MenuEdit.add(MenuItemEditCopy); - private void AT_SoftAPFocusGained(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_AT_SoftAPFocusGained + MenuItemEditPaste.setAccelerator( + javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_V, java.awt.event.InputEvent.CTRL_MASK)); + MenuItemEditPaste.setIcon(new javax.swing.ImageIcon(getClass().getResource("/paste.png"))); // NOI18N + MenuItemEditPaste.setText("Paste"); + MenuItemEditPaste.setToolTipText(""); + MenuItemEditPaste.setEnabled(false); + MenuItemEditPaste.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemEditPasteActionPerformed(evt); + } + }); + MenuEdit.add(MenuItemEditPaste); + MenuEdit.add(jSeparator5); - }// GEN-LAST:event_AT_SoftAPFocusGained - - private void AT_ClientFocusGained(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_AT_ClientFocusGained - - }// GEN-LAST:event_AT_ClientFocusGained + MenuItemEditSendSelected.setAccelerator( + javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_B, java.awt.event.InputEvent.ALT_MASK)); + MenuItemEditSendSelected.setIcon(new javax.swing.ImageIcon(getClass().getResource("/send_selected.png"))); // NOI18N + MenuItemEditSendSelected.setText("Send selected Block to ESP"); + MenuItemEditSendSelected.setToolTipText("Send selected block to ESP"); - private void AT_ServerFocusGained(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_AT_ServerFocusGained + binding = org.jdesktop.beansbinding.Bindings.createAutoBinding( + org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, MenuItemEditorSendSelected, + org.jdesktop.beansbinding.ELProperty.create("${enabled}"), MenuItemEditSendSelected, + org.jdesktop.beansbinding.BeanProperty.create("enabled")); + bindingGroup.addBinding(binding); - }// GEN-LAST:event_AT_ServerFocusGained + MenuItemEditSendSelected.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemEditSendSelectedActionPerformed(evt); + } + }); + MenuEdit.add(MenuItemEditSendSelected); - private void AT_StationComponentShown(java.awt.event.ComponentEvent evt) {// GEN-FIRST:event_AT_StationComponentShown - WiFi_common.setVisible(true); - TCP_common.setVisible(false); - }// GEN-LAST:event_AT_StationComponentShown + MenuItemEditSendLine.setAccelerator( + javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_L, java.awt.event.InputEvent.ALT_MASK)); + MenuItemEditSendLine.setIcon(new javax.swing.ImageIcon(getClass().getResource("/run_line.png"))); // NOI18N + MenuItemEditSendLine.setText("Send current Line to ESP"); + MenuItemEditSendLine.setToolTipText("Send current line from code editor window to ESP"); + MenuItemEditSendLine.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemEditSendLineActionPerformed(evt); + } + }); + MenuEdit.add(MenuItemEditSendLine); - private void AT_SoftAPComponentShown(java.awt.event.ComponentEvent evt) {// GEN-FIRST:event_AT_SoftAPComponentShown - WiFi_common.setVisible(true); - TCP_common.setVisible(false); - }// GEN-LAST:event_AT_SoftAPComponentShown + MainMenuBar.add(MenuEdit); - private void AT_ClientComponentShown(java.awt.event.ComponentEvent evt) {// GEN-FIRST:event_AT_ClientComponentShown - WiFi_common.setVisible(false); - TCP_common.setVisible(true); - }// GEN-LAST:event_AT_ClientComponentShown + MenuESP.setText("ESP"); + MenuESP.setToolTipText(""); - private void AT_ServerComponentShown(java.awt.event.ComponentEvent evt) {// GEN-FIRST:event_AT_ServerComponentShown - WiFi_common.setVisible(false); - TCP_common.setVisible(true); - }// GEN-LAST:event_AT_ServerComponentShown + MenuItemESPReset.setIcon(new javax.swing.ImageIcon(getClass().getResource("/reset.png"))); // NOI18N + MenuItemESPReset.setText("Restart ESP module"); + MenuItemESPReset.setToolTipText("Send RESET command (firmware depended)"); + MenuItemESPReset.setEnabled(false); + MenuItemESPReset.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemESPResetActionPerformed(evt); + } + }); + MenuESP.add(MenuItemESPReset); - private void MenuItemViewLogActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemViewLogActionPerformed - isLogShow(); - prefs.putBoolean(SHOW_LOG, MenuItemViewLog.isSelected()); - }// GEN-LAST:event_MenuItemViewLogActionPerformed + MenuItemESPFormat.setIcon(new javax.swing.ImageIcon(getClass().getResource("/file manager (delete).png"))); // NOI18N + MenuItemESPFormat.setText("Format ESP"); + MenuItemESPFormat.setToolTipText("Remove All files from ESP flash memory"); + MenuItemESPFormat.setEnabled(false); + MenuItemESPFormat.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemESPFormatActionPerformed(evt); + } + }); + MenuESP.add(MenuItemESPFormat); - private void MenuItemFileSaveActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemFileSaveActionPerformed - SaveFile(); - if (FileAutoSaveESP.isSelected()) { - SaveFileESP(); - } - }// GEN-LAST:event_MenuItemFileSaveActionPerformed + MainMenuBar.add(MenuESP); - boolean isFileNew() { - try { - if (FilesTabbedPane.getTitleAt(iTab).equals(NewFile)) { - return true; + MenuView.setText("View"); + buttonGroupLF.add(MenuView); + MenuView.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuViewActionPerformed(evt); } - } catch (Exception e) { - return true; - } - return false; - } + }); - boolean SaveFile() { - boolean success = false; - if (isFileNew()) { // we saving new file - log("Saving new file..."); - FileCount++; - iFile.set(iTab, new File("script" + Integer.toString(FileCount) + ".lua")); - chooser.rescanCurrentDirectory(); - chooser.setSelectedFile(iFile.get(iTab)); - int returnVal = chooser.showSaveDialog(null); - if (returnVal != JFileChooser.APPROVE_OPTION) { - log("Saving abort by user."); - UpdateEditorButtons(); - return false; + AlwaysOnTop.setText("Always On Top"); + AlwaysOnTop.setToolTipText(""); + AlwaysOnTop.setIcon(new javax.swing.ImageIcon(getClass().getResource("/AlwaysOnTop.png"))); // NOI18N + AlwaysOnTop.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + AlwaysOnTopItemStateChanged(evt); } - SavePath(); - iFile.set(iTab, chooser.getSelectedFile()); - if (iFile.get(iTab).exists()) { - log("File " + iFile.get(iTab).getName() + " already exist, waiting user choice"); - int shouldWrite = Dialog("File " + iFile.get(iTab).getName() + " already exist. Overwrite?", - JOptionPane.YES_NO_OPTION); - if (shouldWrite != JOptionPane.YES_OPTION) { - UpdateEditorButtons(); - log("Saving canceled by user, because file " + FileName + " already exist"); - return false; - } else { - log("File " + FileName + " will be overwriten by user choice"); - } + }); + AlwaysOnTop.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + AlwaysOnTopActionPerformed(evt); } - } else { // we saving file, when open - log("We save known file " + iFile.get(iTab).getName()); - } - try { - log("Try to saving file " + iFile.get(iTab).getName() + " ..."); - fos = new FileOutputStream(iFile.get(iTab)); - osw = new OutputStreamWriter(fos, "UTF-8"); - bw = new BufferedWriter(osw); - bw.write(TextEditor1.get(iTab).getText()); - bw.flush(); - osw.flush(); - fos.flush(); - FileName = iFile.get(iTab).getName(); - log("Save file " + FileName + ": Success."); - FilesTabbedPane.setTitleAt(iTab, FileName); - UpdateEditorButtons(); - success = true; - } catch (IOException ex) { - log("Save file " + iFile.get(iTab).getName() + ": FAIL."); - log(ex.toString()); - // log(ex.getStackTrace().toString()); - JOptionPane.showMessageDialog(null, "Error, file not saved!"); - } - try { - if (bw != null) - bw.close(); - if (osw != null) - osw.close(); - if (fos != null) - fos.close(); - } catch (IOException ex) { - log(ex.toString()); - // log(ex.getStackTrace().toString()); - } - TextEditor1.get(iTab).discardAllEdits(); - FileChanged.set(iTab, false); - UpdateEditorButtons(); - return success; - } - - private void MenuItemFileNewActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemFileNewActionPerformed - FileNew(""); - }// GEN-LAST:event_MenuItemFileNewActionPerformed + }); + MenuView.add(AlwaysOnTop); - private void FileNew(String s) { - if (UseExternalEditor.isSelected()) { - return; - } - AddTab(s); - if (s.isEmpty()) { - log("New empty file ready."); - } else { - log("New file ready, content load: Success."); - } - } + MenuItemViewLog.setAccelerator( + javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_L, java.awt.event.InputEvent.CTRL_MASK)); + MenuItemViewLog.setSelected(true); + MenuItemViewLog.setText("Show Log"); + MenuItemViewLog.setToolTipText("Enable/disable log window"); + MenuItemViewLog.setIcon(new javax.swing.ImageIcon(getClass().getResource("/backup.png"))); // NOI18N + MenuItemViewLog.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + MenuItemViewLogItemStateChanged(evt); + } + }); + MenuItemViewLog.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemViewLogActionPerformed(evt); + } + }); + MenuView.add(MenuItemViewLog); - private void MenuItemEditCutActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemEditCutActionPerformed - if (UseExternalEditor.isSelected()) { - return; - } - TextEditor1.get(iTab).cut(); - FileChanged.set(iTab, true); - }// GEN-LAST:event_MenuItemEditCutActionPerformed + MenuItemViewClearLog.setAccelerator( + javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F1, java.awt.event.InputEvent.CTRL_MASK)); + MenuItemViewClearLog.setIcon(new javax.swing.ImageIcon(getClass().getResource("/backup_delete.png"))); // NOI18N + MenuItemViewClearLog.setText("Clear log"); + MenuItemViewClearLog.setToolTipText("Clear log window"); + MenuItemViewClearLog.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemViewClearLogActionPerformed(evt); + } + }); + MenuView.add(MenuItemViewClearLog); - private void MenuItemEditCopyActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemEditCopyActionPerformed - TextEditor1.get(iTab).copy(); - }// GEN-LAST:event_MenuItemEditCopyActionPerformed + MenuItemViewClearTerminal.setAccelerator( + javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F2, java.awt.event.InputEvent.CTRL_MASK)); + MenuItemViewClearTerminal.setIcon(new javax.swing.ImageIcon(getClass().getResource("/terminal_clear.png"))); // NOI18N + MenuItemViewClearTerminal.setText("Clear terminal"); + MenuItemViewClearTerminal.setToolTipText("Clear terminal window"); + MenuItemViewClearTerminal.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemViewClearTerminalActionPerformed(evt); + } + }); + MenuView.add(MenuItemViewClearTerminal); + MenuView.add(jSeparator9); - private void MenuItemEditPasteActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemEditPasteActionPerformed - if (UseExternalEditor.isSelected()) { - return; - } - TextEditor1.get(iTab).paste(); - FileChanged.set(iTab, true); - }// GEN-LAST:event_MenuItemEditPasteActionPerformed - // File open + MenuItemViewTerminalOnly.setAccelerator( + javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F1, java.awt.event.InputEvent.ALT_MASK)); + MenuItemViewTerminalOnly.setText("Show Terminal only (Left panel show/hide)"); + MenuItemViewTerminalOnly.setToolTipText("Enable/disable left panel"); + MenuItemViewTerminalOnly.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + MenuItemViewTerminalOnlyItemStateChanged(evt); + } + }); + MenuItemViewTerminalOnly.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemViewTerminalOnlyActionPerformed(evt); + } + }); + MenuView.add(MenuItemViewTerminalOnly); - private void MenuItemFileOpenActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemFileOpenActionPerformed - OpenFile(); - }// GEN-LAST:event_MenuItemFileOpenActionPerformed + MenuItemViewEditorOnly.setAccelerator( + javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F2, java.awt.event.InputEvent.ALT_MASK)); + MenuItemViewEditorOnly.setText("Show Editor only (Right panel show/hide)"); + MenuItemViewEditorOnly.setToolTipText("Enable/disable left panel"); + MenuItemViewEditorOnly.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + MenuItemViewEditorOnlyItemStateChanged(evt); + } + }); + MenuItemViewEditorOnly.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemViewEditorOnlyActionPerformed(evt); + } + }); + MenuView.add(MenuItemViewEditorOnly); + MenuView.add(jSeparator18); - private void SavePath() { - workDir = chooser.getCurrentDirectory().toString(); - prefs.put(PATH, workDir); - } - - private void OpenFile() { - chooser.rescanCurrentDirectory(); - int success = chooser.showOpenDialog(LeftBasePane); - if (success == JFileChooser.APPROVE_OPTION) { - SavePath(); - int isOpen = -1; - for (int i = 0; i < iFile.size(); i++) { - if (chooser.getSelectedFile().getPath().equals(iFile.get(i).getPath())) { - iTab = i; - isOpen = i; - break; - } + MenuItemViewToolbar.setSelected(true); + MenuItemViewToolbar.setText("Show toolbar at top left"); + MenuItemViewToolbar.setToolTipText("Enable/disable files toolbar at top left"); + MenuItemViewToolbar.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + MenuItemViewToolbarItemStateChanged(evt); } - if (isOpen >= 0) { - FilesTabbedPane.setSelectedIndex(iTab); - UpdateEditorButtons(); - FileName = chooser.getSelectedFile().getName(); - log("File " + FileName + " already open, select tab to file " + FileName); - JOptionPane.showMessageDialog(null, "File " + FileName + " already open. You can use 'Reload' only."); - return; + }); + MenuItemViewToolbar.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemViewToolbarActionPerformed(evt); } - if (!isFileNew() || isChanged()) { - AddTab(""); + }); + MenuView.add(MenuItemViewToolbar); + + MenuItemViewLeftExtra.setText("Show Extra buttons at lleft"); + MenuItemViewLeftExtra.setToolTipText("Enable/disable Extra buttons panel at left"); + MenuItemViewLeftExtra.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + MenuItemViewLeftExtraItemStateChanged(evt); } - log("Try to open file " + chooser.getSelectedFile().getName()); - try { - iFile.set(iTab, chooser.getSelectedFile()); - FileName = iFile.get(iTab).getName(); - log("File name: " + iFile.get(iTab).getPath()); - if (iFile.get(iTab).length() > 1024 * 1024) { // 1M - JOptionPane.showMessageDialog(null, "File " + FileName + " too large."); - log("File too large. Size: " + Long.toString(iFile.get(iTab).length() / 1024 / 1024) + " Mb, file: " - + iFile.get(iTab).getPath()); - UpdateEditorButtons(); - return; - } - FilesTabbedPane.setTitleAt(iTab, iFile.get(iTab).getName()); - } catch (Exception ex) { - JOptionPane.showMessageDialog(null, "Error, file is not open!"); - log(ex.toString()); - log("Open: FAIL."); - // log(ex.getStackTrace().toString()); + }); + MenuItemViewLeftExtra.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemViewLeftExtraActionPerformed(evt); } - if (LoadFile()) { - log("Open \"" + FileName + "\": Success."); + }); + MenuView.add(MenuItemViewLeftExtra); + + MenuItemViewSnippets.setSelected(true); + MenuItemViewSnippets.setText("Show Snippets panel at right"); + MenuItemViewSnippets.setToolTipText("Enable/disable Snippets panel"); + MenuItemViewSnippets.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + MenuItemViewSnippetsItemStateChanged(evt); } - } - UpdateEditorButtons(); - } + }); + MenuItemViewSnippets.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemViewSnippetsActionPerformed(evt); + } + }); + MenuView.add(MenuItemViewSnippets); - private boolean LoadFile() { - boolean success = false; - if (isFileNew()) { - UpdateEditorButtons(); - log("Internal error 101: FileTab is NewFile."); - return false; - } - FileName = ""; - try { - FileName = iFile.get(iTab).getName(); - log("Try to load file " + FileName); - } catch (Exception e) { - log("Internal error 102: no current file descriptor."); - return false; - } - try { - fis = new FileInputStream(iFile.get(iTab)); - isr = new InputStreamReader(fis, "UTF-8"); - br = new BufferedReader(isr); - StringBuilder sb = new StringBuilder(); - String line; - while ((line = br.readLine()) != null) { - sb.append(line).append('\n'); + MenuItemViewFileManager.setSelected(true); + MenuItemViewFileManager.setText("Show FileManager panel at right"); + MenuItemViewFileManager.setToolTipText("Enable/disable FileManager panel at right"); + MenuItemViewFileManager.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + MenuItemViewFileManagerItemStateChanged(evt); } - TextEditor1.get(iTab).setText(sb.toString()); - success = true; - } catch (Exception ex) { - log(ex.toString()); - // log(ex.getStackTrace().toString()); - log("Loading " + FileName + ": FAIL."); - UpdateEditorButtons(); - JOptionPane.showMessageDialog(null, "Error, file not load!"); - return false; - } - try { - if (br != null) - br.close(); - if (isr != null) - isr.close(); - if (fis != null) - fis.close(); - } catch (Exception ex) { - log(ex.toString()); - // log(ex.getStackTrace().toString()); - log("Internal error 103: can't close stream."); - } - if (success) { - TextEditor1.get(iTab).setCaretPosition(0); - FileChanged.set(iTab, false); - TextEditor1.get(iTab).discardAllEdits(); - UpdateEditorButtons(); - FileLabelUpdate(); - if (UseExternalEditor.isSelected()) { - TextEditor1.get(iTab).setEditable(false); + }); + MenuItemViewFileManager.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemViewFileManagerActionPerformed(evt); } - log("Loading " + FileName + ": Success."); - } - return success; - } + }); + MenuView.add(MenuItemViewFileManager); - private void DelayStateChanged(javax.swing.event.ChangeEvent evt) {// GEN-FIRST:event_DelayStateChanged - DelayLabel.setText("Delay after answer = " + Integer.toString(Delay.getValue()) + " ms"); - prefs.putInt(DELAY, Delay.getValue()); - PrefsFlush(); - }// GEN-LAST:event_DelayStateChanged + MenuItemViewRightExtra.setSelected(true); + MenuItemViewRightExtra.setText("Show Extra buttons at bottom right"); + MenuItemViewRightExtra.setToolTipText("Enable/disable Extra buttons panel at bottom right"); + MenuItemViewRightExtra.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + MenuItemViewRightExtraItemStateChanged(evt); + } + }); + MenuItemViewRightExtra.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemViewRightExtraActionPerformed(evt); + } + }); + MenuView.add(MenuItemViewRightExtra); - private boolean PrefsFlush() { - boolean success = false; - try { - prefs.flush(); - success = true; - } catch (Exception e) { - log("ERROR: Can't save some setting."); - log(e.toString()); - } - return success; - } + MenuItemViewDonate.setSelected(true); + MenuItemViewDonate + .setText("I'm already make donation,
please hide dontation button at bottom right!"); + MenuItemViewDonate.setToolTipText("Enable/disable Extra buttons panel at bottom right"); + MenuItemViewDonate.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + MenuItemViewDonateItemStateChanged(evt); + } + }); + MenuItemViewDonate.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemViewDonateActionPerformed(evt); + } + }); + MenuView.add(MenuItemViewDonate); + MenuView.add(jSeparator13); - private void ButtonFileOpenActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonFileOpenActionPerformed - MenuItemFileOpen.doClick(); - }// GEN-LAST:event_ButtonFileOpenActionPerformed + MenuItemViewTermFontInc.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_ADD, + java.awt.event.InputEvent.CTRL_MASK)); + MenuItemViewTermFontInc.setIcon(new javax.swing.ImageIcon(getClass().getResource("/zoom in.png"))); // NOI18N + MenuItemViewTermFontInc.setText("Terminal font size inc"); + MenuItemViewTermFontInc.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemViewTermFontIncActionPerformed(evt); + } + }); + MenuView.add(MenuItemViewTermFontInc); - private void ButtonFileSaveActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonFileSaveActionPerformed - MenuItemFileSave.doClick(); - }// GEN-LAST:event_ButtonFileSaveActionPerformed + MenuItemViewTermFontDec.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_SUBTRACT, + java.awt.event.InputEvent.CTRL_MASK)); + MenuItemViewTermFontDec.setIcon(new javax.swing.ImageIcon(getClass().getResource("/zoom out.png"))); // NOI18N + MenuItemViewTermFontDec.setText("Terminal font size dec"); + MenuItemViewTermFontDec.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemViewTermFontDecActionPerformed(evt); + } + }); + MenuView.add(MenuItemViewTermFontDec); + MenuView.add(jSeparator10); - private void ButtonCutActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonCutActionPerformed - MenuItemEditCut.doClick(); - }// GEN-LAST:event_ButtonCutActionPerformed + MenuItemViewEditorFontInc.setAccelerator( + javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_ADD, java.awt.event.InputEvent.ALT_MASK)); + MenuItemViewEditorFontInc.setIcon(new javax.swing.ImageIcon(getClass().getResource("/zoom in.png"))); // NOI18N + MenuItemViewEditorFontInc.setText("Editor font size inc"); + MenuItemViewEditorFontInc.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemViewEditorFontIncActionPerformed(evt); + } + }); + MenuView.add(MenuItemViewEditorFontInc); - private void ButtonCopyActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonCopyActionPerformed - MenuItemEditCopy.doClick(); - }// GEN-LAST:event_ButtonCopyActionPerformed + MenuItemViewEditorFontDec.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_SUBTRACT, + java.awt.event.InputEvent.ALT_MASK)); + MenuItemViewEditorFontDec.setIcon(new javax.swing.ImageIcon(getClass().getResource("/zoom out.png"))); // NOI18N + MenuItemViewEditorFontDec.setText("Editor font size dec"); + MenuItemViewEditorFontDec.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemViewEditorFontDecActionPerformed(evt); + } + }); + MenuView.add(MenuItemViewEditorFontDec); + MenuView.add(jSeparator11); - private void ButtonPasteActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonPasteActionPerformed - MenuItemEditPaste.doClick(); - }// GEN-LAST:event_ButtonPasteActionPerformed + MenuItemViewLogFontInc.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_ADD, + java.awt.event.InputEvent.ALT_MASK | java.awt.event.InputEvent.CTRL_MASK)); + MenuItemViewLogFontInc.setIcon(new javax.swing.ImageIcon(getClass().getResource("/zoom in.png"))); // NOI18N + MenuItemViewLogFontInc.setText("Log font size inc"); + MenuItemViewLogFontInc.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemViewLogFontIncActionPerformed(evt); + } + }); + MenuView.add(MenuItemViewLogFontInc); - private void MenuItemEditorCutActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemEditorCutActionPerformed - MenuItemEditCut.doClick(); - }// GEN-LAST:event_MenuItemEditorCutActionPerformed + MenuItemViewLogFontDec.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_SUBTRACT, + java.awt.event.InputEvent.ALT_MASK | java.awt.event.InputEvent.CTRL_MASK)); + MenuItemViewLogFontDec.setIcon(new javax.swing.ImageIcon(getClass().getResource("/zoom out.png"))); // NOI18N + MenuItemViewLogFontDec.setText("Log font size dec"); + MenuItemViewLogFontDec.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemViewLogFontDecActionPerformed(evt); + } + }); + MenuView.add(MenuItemViewLogFontDec); + MenuView.add(jSeparator12); - private void MenuItemEditorCopyActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemEditorCopyActionPerformed - MenuItemEditCopy.doClick(); - }// GEN-LAST:event_MenuItemEditorCopyActionPerformed + MenuItemViewFontDefault.setText("Reset all font size to default"); + MenuItemViewFontDefault.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemViewFontDefaultActionPerformed(evt); + } + }); + MenuView.add(MenuItemViewFontDefault); + MenuView.add(jSeparator17); - private void MenuItemEditorPasteActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemEditorPasteActionPerformed - MenuItemEditPaste.doClick(); - }// GEN-LAST:event_MenuItemEditorPasteActionPerformed + buttonGroupLF.add(MenuItemViewLF1); + MenuItemViewLF1.setText("Nimbus"); + MenuItemViewLF1.setToolTipText(""); + MenuItemViewLF1.setActionCommand("0"); + MenuItemViewLF1.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemViewLF1ActionPerformed(evt); + } + }); + MenuView.add(MenuItemViewLF1); - private void MenuItemLogClearActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemLogClearActionPerformed - Log.setText(""); - }// GEN-LAST:event_MenuItemLogClearActionPerformed + MainMenuBar.add(MenuView); - private void CheckSelected() { - if (TextEditor1.get(iTab).getSelectedText() == null) { - MenuItemEditorCut.setEnabled(false); - MenuItemEditCut.setEnabled(false); - MenuItemEditorCopy.setEnabled(false); - MenuItemEditCopy.setEnabled(false); - ButtonCut.setEnabled(false); - ButtonCopy.setEnabled(false); - MenuItemEditSendSelected.setEnabled(false); - MenuItemEditorSendSelected.setEnabled(false); - ButtonSendSelected.setEnabled(false); - } else { - MenuItemEditorCut.setEnabled(true); - MenuItemEditCut.setEnabled(true); - MenuItemEditorCopy.setEnabled(true); - MenuItemEditCopy.setEnabled(true); - ButtonCut.setEnabled(true); - ButtonCopy.setEnabled(true); - MenuItemEditSendSelected.setEnabled(pOpen); - MenuItemEditorSendSelected.setEnabled(pOpen); - ButtonSendSelected.setEnabled(pOpen); - } - try { - if (Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null) == null) { // clipboard - // empty - MenuItemEditorPaste.setEnabled(false); - MenuItemEditPaste.setEnabled(false); - ButtonPaste.setEnabled(false); - } else { - MenuItemEditorPaste.setEnabled(true); - MenuItemEditPaste.setEnabled(true); - ButtonPaste.setEnabled(true); + MenuLinks.setText("Links"); + MenuLinks.setToolTipText(""); + MenuLinks.setMaximumSize(new java.awt.Dimension(31, 100)); + + MenuItemLinksMicroPythonDoc.setIcon(new javax.swing.ImageIcon(getClass().getResource("/micropython.png"))); // NOI18N + MenuItemLinksMicroPythonDoc.setText("MicroPython Documentation English"); + MenuItemLinksMicroPythonDoc.setToolTipText("Open doc NodeMCU API Chinese in browser"); + MenuItemLinksMicroPythonDoc.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemLinksMicroPythonDocActionPerformed(evt); } - } catch (Exception e) { - } - } + }); + MenuLinks.add(MenuItemLinksMicroPythonDoc); - private void UpdateEditorButtons() { - iTab = FilesTabbedPane.getSelectedIndex(); - // isChanged - if (isChanged() && !UseExternalEditor.isSelected()) { - if (isFileNew()) { - MenuItemFileSave.setEnabled(true); - ButtonFileSave.setEnabled(true); - MenuItemFileReload.setEnabled(false); - ButtonFileReload.setEnabled(false); - } else { - MenuItemFileSave.setEnabled(true); - ButtonFileSave.setEnabled(true); - MenuItemFileReload.setEnabled(true); - ButtonFileReload.setEnabled(true); + MenuItemLinksNodeMCUdoc.setIcon(new javax.swing.ImageIcon(getClass().getResource("/nodemcu.png"))); // NOI18N + MenuItemLinksNodeMCUdoc.setText("NodeMCU Documentation English"); + MenuItemLinksNodeMCUdoc.setToolTipText("Open doc NodeMCU API English in browser"); + MenuItemLinksNodeMCUdoc.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemLinksNodeMCUdocActionPerformed(evt); } - } else { - if (isFileNew()) { - MenuItemFileSave.setEnabled(true); - ButtonFileSave.setEnabled(true); - MenuItemFileReload.setEnabled(false); - ButtonFileReload.setEnabled(false); - } else { - MenuItemFileSave.setEnabled(false); - ButtonFileSave.setEnabled(false); - MenuItemFileReload.setEnabled(true); - ButtonFileReload.setEnabled(true); + }); + MenuLinks.add(MenuItemLinksNodeMCUdoc); + MenuLinks.add(jSeparator15); + + MenuItemLinksBuyDevBoard.setIcon(new javax.swing.ImageIcon(getClass().getResource("/aliexpress.png"))); // NOI18N + MenuItemLinksBuyDevBoard.setText("Buy NodeMCU v3 (LoLin brand, USB)"); + MenuItemLinksBuyDevBoard.setToolTipText("Buy NodeMCU development boards on Aliexpress"); + MenuItemLinksBuyDevBoard.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemLinksBuyDevBoardActionPerformed(evt); } - } - if (isFileNew() && (FilesTabbedPane.getTabCount() == 1)) { - MenuItemFileClose.setEnabled(false); - ButtonFileClose.setEnabled(false); - } else { - MenuItemFileClose.setEnabled(true); - ButtonFileClose.setEnabled(true); - } - // CanUndo - try { - if (TextEditor1.isEmpty()) { - return; + }); + MenuLinks.add(MenuItemLinksBuyDevBoard); + + MenuItemLinksBuyESP8266.setIcon(new javax.swing.ImageIcon(getClass().getResource("/aliexpress.png"))); // NOI18N + MenuItemLinksBuyESP8266.setText("Buy Witty (RGB LED, 3 buttons, USB)"); + MenuItemLinksBuyESP8266.setToolTipText("Buy ESP8266 ESP-01 ESP-02 ... ESP-12 modules on Aliexpress"); + MenuItemLinksBuyESP8266.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemLinksBuyESP8266ActionPerformed(evt); } - } catch (Exception e) { - return; - } - if (TextEditor1.get(iTab).canUndo()) { - MenuItemEditUndo.setEnabled(true); - MenuItemEditorUndo.setEnabled(true); - ButtonUndo.setEnabled(true); - } else { - MenuItemEditUndo.setEnabled(false); - MenuItemEditorUndo.setEnabled(false); - ButtonUndo.setEnabled(false); - } - // CanRedo - if (TextEditor1.get(iTab).canRedo()) { - MenuItemEditRedo.setEnabled(true); - MenuItemEditorRedo.setEnabled(true); - ButtonRedo.setEnabled(true); - } else { - MenuItemEditRedo.setEnabled(false); - MenuItemEditorRedo.setEnabled(false); - ButtonRedo.setEnabled(false); - } - CheckSelected(); - if (UseExternalEditor.isSelected()) { - MenuItemFileReload.setEnabled(true); - ButtonFileReload.setEnabled(true); + }); + MenuLinks.add(MenuItemLinksBuyESP8266); - MenuItemFileSave.setEnabled(false); - ButtonFileSave.setEnabled(false); - MenuItemEditUndo.setEnabled(false); - MenuItemEditorUndo.setEnabled(false); - ButtonUndo.setEnabled(false); - MenuItemEditRedo.setEnabled(false); - MenuItemEditorRedo.setEnabled(false); - ButtonRedo.setEnabled(false); - MenuItemEditorCut.setEnabled(false); - MenuItemEditCut.setEnabled(false); - ButtonCut.setEnabled(false); - MenuItemEditorPaste.setEnabled(false); - MenuItemEditPaste.setEnabled(false); - ButtonPaste.setEnabled(false); - MenuItemFileNew.setEnabled(false); - ButtonFileNew.setEnabled(false); - MenuItemFileSaveAs.setEnabled(false); - } else { - MenuItemFileNew.setEnabled(true); - ButtonFileNew.setEnabled(true); - MenuItemFileSaveAs.setEnabled(true); - } - } + MenuItemLinksBuyESD12.setIcon(new javax.swing.ImageIcon(getClass().getResource("/aliexpress.png"))); // NOI18N + MenuItemLinksBuyESD12.setText("Buy WeMos mini (many shields, USB)"); + MenuItemLinksBuyESD12.setToolTipText("Buy ESP8266 ESD-12 4M flash board"); + MenuItemLinksBuyESD12.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemLinksBuyESD12ActionPerformed(evt); + } + }); + MenuLinks.add(MenuItemLinksBuyESD12); - private void formFocusGained(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_formFocusGained - UpdateEditorButtons(); - UpdateButtons(); - }// GEN-LAST:event_formFocusGained + MenuItemLinksBuyOther.setIcon(new javax.swing.ImageIcon(getClass().getResource("/aliexpress.png"))); // NOI18N + MenuItemLinksBuyOther.setText("Buy most popular DIY parts"); + MenuItemLinksBuyOther.setToolTipText("Buy any electronics and other on Aliexpress"); + MenuItemLinksBuyOther.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemLinksBuyOtherActionPerformed(evt); + } + }); + MenuLinks.add(MenuItemLinksBuyOther); + MenuLinks.add(jSeparator16); - private void NodeMCUFocusGained(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_NodeMCUFocusGained + MenuItemLinksIoTmanager.setIcon(new javax.swing.ImageIcon(getClass().getResource("/IoTmanager.png"))); // NOI18N + MenuItemLinksIoTmanager.setText( + "IoT Manager - free Android app
for any DIY devices. Ads free.
From 4refr0nt, ESPlorer developer"); + MenuItemLinksIoTmanager.setToolTipText("You can make donation for ESPlorer developer"); + MenuItemLinksIoTmanager.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemLinksIoTmanagerActionPerformed(evt); + } + }); + MenuLinks.add(MenuItemLinksIoTmanager); + MenuLinks.add(jSeparator19); - }// GEN-LAST:event_NodeMCUFocusGained + MenuItemLinksMainForumEn.setText("ESPlorer discuss, bugs report - esp8266.com English"); + MenuItemLinksMainForumEn.setToolTipText("Link to ESP8266.COM forum, ESPlorer topic, English"); + MenuItemLinksMainForumEn.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemLinksMainForumEnActionPerformed(evt); + } + }); + MenuLinks.add(MenuItemLinksMainForumEn); - private void NodeMCUComponentShown(java.awt.event.ComponentEvent evt) {// GEN-FIRST:event_NodeMCUComponentShown - UpdateEditorButtons(); - UpdateButtons(); - }// GEN-LAST:event_NodeMCUComponentShown + MenuItemLinksMainForumRu.setText("ESPlorer discuss, bugs report Russian"); + MenuItemLinksMainForumRu.setToolTipText("Link to ESP8266.RU forum, ESPlorer topic, Russian"); + MenuItemLinksMainForumRu.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemLinksMainForumRuActionPerformed(evt); + } + }); + MenuLinks.add(MenuItemLinksMainForumRu); - private void multiActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_multiActionPerformed - // TODO add your handling code here: - }// GEN-LAST:event_multiActionPerformed + MenuItemLinksMainLatest.setText("ESPlorer download latest stable"); + MenuItemLinksMainLatest.setToolTipText("Link to ESP8266.RU, download ESPlorer latest"); + MenuItemLinksMainLatest.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemLinksMainLatestActionPerformed(evt); + } + }); + MenuLinks.add(MenuItemLinksMainLatest); - private void ButtonFileReloadActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonFileReloadActionPerformed - MenuItemFileReload.doClick(); - }// GEN-LAST:event_ButtonFileReloadActionPerformed + MenuItemLinksMainSource.setText("ESPlorer download source code from github"); + MenuItemLinksMainSource.setToolTipText("Link to GITHUB for download ESPlorer source code"); + MenuItemLinksMainSource.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemLinksMainSourceActionPerformed(evt); + } + }); + MenuLinks.add(MenuItemLinksMainSource); - private void MenuItemFileReloadActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemFileReloadActionPerformed - ReloadFile(); - }// GEN-LAST:event_MenuItemFileReloadActionPerformed + MenuItemLinksMainHome.setText("ESPlorer home page on esp8266.ru"); + MenuItemLinksMainHome.setToolTipText("Link to ESP8266.RU, ESPlorer HomePage"); + MenuItemLinksMainHome.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemLinksMainHomeActionPerformed(evt); + } + }); + MenuLinks.add(MenuItemLinksMainHome); + MenuLinks.add(jSeparator20); - private void MenuItemFileCloseActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemFileCloseActionPerformed - CloseFile(); - }// GEN-LAST:event_MenuItemFileCloseActionPerformed + MenuItemLinksDonate.setIcon(new javax.swing.ImageIcon(getClass().getResource("/paypal.png"))); // NOI18N + MenuItemLinksDonate.setText("Make donation for ESPlorer developer"); + MenuItemLinksDonate.setToolTipText("You can make donation for ESPlorer developer"); + MenuItemLinksDonate.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemLinksDonateActionPerformed(evt); + } + }); + MenuLinks.add(MenuItemLinksDonate); - private void ButtonFileCloseActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonFileCloseActionPerformed - MenuItemFileClose.doClick(); - }// GEN-LAST:event_ButtonFileCloseActionPerformed + MainMenuBar.add(MenuLinks); - private void FileSaveESPActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_FileSaveESPActionPerformed - if (FileSaveESP.isSelected()) { // start sending - if (TextEditor1.get(iTab).getText().length() == 0) { - JOptionPane.showMessageDialog(null, "File empty."); - FileSaveESP.setSelected(false); - return; - } - if (FileAutoSaveDisk.isSelected()) { - if (!SaveFile()) { // first save file - return; - } + MenuHelp.setText("?"); + + MenuItemHelpAbout.setText("About"); + MenuItemHelpAbout.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + MenuItemHelpAboutActionPerformed(evt); } - SaveFileESP(); - } else { // abort sending or end of file - StopSend(); - } - }// GEN-LAST:event_FileSaveESPActionPerformed + }); + MenuHelp.add(MenuItemHelpAbout); - private void MenuItemViewClearTerminalActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemViewClearTerminalActionPerformed - MenuItemTerminalClear.doClick(); - }// GEN-LAST:event_MenuItemViewClearTerminalActionPerformed + MainMenuBar.add(MenuHelp); - private void MenuItemViewClearLogActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemViewClearLogActionPerformed - MenuItemLogClear.doClick(); - }// GEN-LAST:event_MenuItemViewClearLogActionPerformed + setJMenuBar(MainMenuBar); - private void AlwaysOnTopItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_AlwaysOnTopItemStateChanged - this.setAlwaysOnTop(AlwaysOnTop.isSelected()); - }// GEN-LAST:event_AlwaysOnTopItemStateChanged + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(HorizontSplit, javax.swing.GroupLayout.DEFAULT_SIZE, 1024, Short.MAX_VALUE)); + layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(HorizontSplit, javax.swing.GroupLayout.DEFAULT_SIZE, 746, Short.MAX_VALUE)); - private void cmdNodeRestartActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdNodeRestartActionPerformed - if (!OptionNodeMCU.isSelected()) { - return; - } + getAccessibleContext().setAccessibleDescription(""); + + bindingGroup.bind(); + + pack(); + }// //GEN-END:initComponents + + private void PortActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_PortActionPerformed + // TODO add your handling code here: + }// GEN-LAST:event_PortActionPerformed + + private void MenuItemFileExitActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemFileExitActionPerformed + AppClose(); + }// GEN-LAST:event_MenuItemFileExitActionPerformed + + private void SpeedFocusLost(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_SpeedFocusLost + nSpeed = Integer.parseInt((String) Speed.getSelectedItem()); + }// GEN-LAST:event_SpeedFocusLost + + private void SpeedActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SpeedActionPerformed if (portJustOpen) { log("ERROR: Communication with MCU not established."); return; } - TerminalAdd("Soft restart by user command\r\n"); - btnSend("node.restart()"); + nSpeed = Integer.parseInt((String) Speed.getSelectedItem()); if (pOpen) { // reconnect - int speed = prefs.getInt(SERIAL_BAUD, 3); - final int old_speed = Speed.getSelectedIndex(); - // if (speed == old_speed) { // reconnect not needed - // return; - // } - try { - nSpeed = Integer.parseInt(Speed.getItemAt(speed).toString()); - // Integer.parseInt((String)Speed.getSelectedItem()); - } catch (Exception e) { + if (OptionNodeMCU.isSelected() || FirmwareType == FIRMWARE_NODEMCU) { + log("Try to reconnect with baud " + Integer.toString(nSpeed) + "..."); + btnSend("print(uart.setup(0, " + nSpeed + ", 8, 0, 1, 1 ))"); + try { + Thread.sleep(200L); + } catch (Exception e) { + } + } else { + return; + } + if (SetSerialPortParams()) { + log("Reconnect: Success."); + CheckComm(); + } + } + UpdateLED(); + }// GEN-LAST:event_SpeedActionPerformed + + private void OpenActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_OpenActionPerformed + if (Open.isSelected()) { + if (pOpen) { return; } - log("Try to reconnect with saved baud " + Integer.toString(nSpeed) + "..."); try { - if (SetSerialPortParams()) { - log("Reconnect: Success. Now we waiting for ESP reboot..."); - // Now, we can ready to reconnect on old_speed - taskSleep = new ActionListener() { - public void actionPerformed(ActionEvent evt) { - if (nSpeed == 9600) { - CheckComm(); - } else { - Speed.setSelectedIndex(old_speed); - } - } - }; - sleep = new Timer(2000, taskSleep); - sleep.setRepeats(false); - sleep.setInitialDelay(2000); - sleep.start(); + String port; + if (UseCustomPortName.isSelected()) { + port = CustomPortName.getText().trim(); + } else { + port = Port.getSelectedItem().toString().trim(); } + prefs.put(SERIAL_PORT, port); + log("Serial port " + port + " save as default."); + int speed = Speed.getSelectedIndex(); + prefs.putInt(SERIAL_BAUD, speed); + log("Baud rate " + Speed.getSelectedItem().toString().trim() + " save as default."); } catch (Exception e) { - log(e.toString()); } + pOpen = portOpen(); + Open.setSelected(pOpen); + } else { + portClose(); } - }// GEN-LAST:event_cmdNodeRestartActionPerformed - - private void cmdNodeChipIDActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdNodeChipIDActionPerformed - btnSend("print(node.chipid())"); - }// GEN-LAST:event_cmdNodeChipIDActionPerformed - - private void cmdNodeHeapActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdNodeHeapActionPerformed - btnSend("print(node.heap())"); - }// GEN-LAST:event_cmdNodeHeapActionPerformed - - private void cmdNodeSleepActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdNodeSleepActionPerformed - int returnVal = Dialog( - "This function can only be used in the condition that esp8266 PIN32(RST) and PIN8(XPD_DCDC) are connected together.", - JOptionPane.YES_NO_OPTION); - if (returnVal == JOptionPane.YES_OPTION) { - btnSend("node.dsleep(10000)"); - } - }// GEN-LAST:event_cmdNodeSleepActionPerformed + UpdateButtons(); + }// GEN-LAST:event_OpenActionPerformed - private void MenuItemEditUndoActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemEditUndoActionPerformed - if (TextEditor1.get(iTab).canUndo()) { - TextEditor1.get(iTab).undoLastAction(); - } - }// GEN-LAST:event_MenuItemEditUndoActionPerformed + private void UpdateButtons() { + pOpen = Open.isSelected(); + if (pOpen && !portJustOpen) { + UpdateLED(); + Port.setEnabled(false); + // Speed.setEnabled(false); + ReScan.setEnabled(false); + SendCommand.setEnabled(true); + Command.setEnabled(true); + CR.setEnabled(true); + LF.setEnabled(true); + // left panel + FileSaveESP.setEnabled(true); + MenuItemFileSaveESP.setEnabled(true); + FileSendESP.setEnabled(true); + MenuItemFileSendESP.setEnabled(true); + MenuItemFileRemoveESP.setEnabled(true); + FileDo.setEnabled(true); + MenuItemFileDo.setEnabled(true); + MenuItemEditorSendLine.setEnabled(true); + MenuItemEditSendLine.setEnabled(true); + ButtonSendLine.setEnabled(true); + NodeReset.setEnabled(true); + MenuItemTerminalReset.setEnabled(true); + MenuItemTerminalFormat.setEnabled(true); + MenuItemESPReset.setEnabled(true); + MenuItemESPFormat.setEnabled(true); + SnippetRun.setEnabled(true); + ButtonSendLine.setEnabled(true); + ButtonSnippet0.setEnabled(true); + ButtonSnippet1.setEnabled(true); + ButtonSnippet2.setEnabled(true); + ButtonSnippet3.setEnabled(true); + ButtonSnippet4.setEnabled(true); + ButtonSnippet5.setEnabled(true); + ButtonSnippet6.setEnabled(true); + ButtonSnippet7.setEnabled(true); + ButtonSnippet8.setEnabled(true); + ButtonSnippet9.setEnabled(true); + ButtonSnippet10.setEnabled(true); + ButtonSnippet11.setEnabled(true); + ButtonSnippet12.setEnabled(true); + ButtonSnippet13.setEnabled(true); + ButtonSnippet14.setEnabled(true); + ButtonSnippet15.setEnabled(true); - private void MenuItemEditRedoActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemEditRedoActionPerformed - if (TextEditor1.get(iTab).canRedo()) { - TextEditor1.get(iTab).redoLastAction(); + } else { + UpdateLED(); + Port.setEnabled(true); + // Speed.setEnabled(true); + ReScan.setEnabled(true); + SendCommand.setEnabled(false); + Command.setEnabled(false); + CR.setEnabled(false); + LF.setEnabled(false); + // left panel + FileSaveESP.setEnabled(false); + FileSaveESP.setSelected(false); + MenuItemFileSaveESP.setEnabled(false); + FileSendESP.setEnabled(false); + FileSendESP.setSelected(false); + MenuItemFileSendESP.setEnabled(false); + MenuItemFileRemoveESP.setEnabled(false); + FileDo.setEnabled(false); + MenuItemFileDo.setEnabled(false); + MenuItemEditorSendLine.setEnabled(false); + MenuItemEditSendLine.setEnabled(false); + ButtonSendLine.setEnabled(false); + NodeReset.setEnabled(false); + MenuItemTerminalReset.setEnabled(false); + MenuItemTerminalFormat.setEnabled(false); + MenuItemESPReset.setEnabled(false); + MenuItemESPFormat.setEnabled(false); + SnippetRun.setEnabled(false); + ButtonSnippet0.setEnabled(false); + ButtonSnippet1.setEnabled(false); + ButtonSnippet2.setEnabled(false); + ButtonSnippet3.setEnabled(false); + ButtonSnippet4.setEnabled(false); + ButtonSnippet5.setEnabled(false); + ButtonSnippet6.setEnabled(false); + ButtonSnippet7.setEnabled(false); + ButtonSnippet8.setEnabled(false); + ButtonSnippet9.setEnabled(false); + ButtonSnippet10.setEnabled(false); + ButtonSnippet11.setEnabled(false); + ButtonSnippet12.setEnabled(false); + ButtonSnippet13.setEnabled(false); + ButtonSnippet14.setEnabled(false); + ButtonSnippet15.setEnabled(false); } - }// GEN-LAST:event_MenuItemEditRedoActionPerformed - - private void ButtonUndoActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonUndoActionPerformed - MenuItemEditUndo.doClick(); - }// GEN-LAST:event_ButtonUndoActionPerformed - private void ButtonRedoActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonRedoActionPerformed - MenuItemEditRedo.doClick(); - }// GEN-LAST:event_ButtonRedoActionPerformed + DisablingNotImplemented(); - private void MenuItemEditorRedoActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemEditorRedoActionPerformed - MenuItemEditRedo.doClick(); - }// GEN-LAST:event_MenuItemEditorRedoActionPerformed + } - private void MenuItemEditorUndoActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemEditorUndoActionPerformed - MenuItemEditUndo.doClick(); - }// GEN-LAST:event_MenuItemEditorUndoActionPerformed - - private void TextEditorCaretUpdate(javax.swing.event.CaretEvent evt) {// GEN-FIRST:event_TextEditorCaretUpdate - UpdateEditorButtons(); - }// GEN-LAST:event_TextEditorCaretUpdate + private void formWindowOpened(java.awt.event.WindowEvent evt) {// GEN-FIRST:event_formWindowOpened + PortFinder(); + this.setTitle("ESPlorer " + version + " by 4refr0nt"); + ProgressBar.setVisible(false); + CommandsSetNodeMCU(); + isToolbarShow(); + isLeftExtraShow(); + isRightExtraShow(); + isRightSnippetsShow(); + SetWindowSize(); + isFileManagerShow(); + isLogShow(); + }// GEN-LAST:event_formWindowOpened - private void FileLayeredPaneFocusGained(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_FileLayeredPaneFocusGained + private void SetWindowSize() { + int x, y, h, w; + x = prefs.getInt(WIN_X, 0); + y = prefs.getInt(WIN_Y, 0); + h = prefs.getInt(WIN_H, 768); + w = prefs.getInt(WIN_W, 1024); + this.setBounds(x, y, w, h); + } - }// GEN-LAST:event_FileLayeredPaneFocusGained + private void isToolbarShow() { + FilesToolBar.setVisible(MenuItemViewToolbar.isSelected()); + } - private void TextEditorFocusGained(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_TextEditorFocusGained + private void isLeftExtraShow() { + LeftExtraButtons.setVisible(MenuItemViewLeftExtra.isSelected()); + } - }// GEN-LAST:event_TextEditorFocusGained + private void isRightExtraShow() { + RightExtraButtons.setVisible(MenuItemViewRightExtra.isSelected()); + } - private void FilesTabbedPaneStateChanged(javax.swing.event.ChangeEvent evt) {// GEN-FIRST:event_FilesTabbedPaneStateChanged - FileLabelUpdate(); - // if (iTab > 0) FilesTabbedPane.setTitleAt(iTab, - // Integer.toString(iTab)); - }// GEN-LAST:event_FilesTabbedPaneStateChanged + private void isRightSnippetsShow() { + RightSnippetsPane.setVisible(MenuItemViewSnippets.isSelected()); + } - private void TextEditorInputMethodTextChanged(java.awt.event.InputMethodEvent evt) {// GEN-FIRST:event_TextEditorInputMethodTextChanged + private void isFileManagerShow() { + int div; + final int w = 160; + if (MenuItemViewFileManager.isSelected()) { + FileManagerScrollPane.setEnabled(true); + FileManagerScrollPane.setVisible(true); + // div = prefs.getInt( FM_DIV, RightFilesSplitPane.getWidth()-w ); + // if ( div > RightFilesSplitPane.getWidth()-w ) { + div = RightFilesSplitPane.getWidth() - w; + // } + RightFilesSplitPane.setDividerLocation(div); + } else { + FileManagerScrollPane.setEnabled(false); + FileManagerScrollPane.setVisible(false); + RightFilesSplitPane + .setDividerLocation(RightFilesSplitPane.getWidth() - RightFilesSplitPane.getDividerSize()); + } + } - }// GEN-LAST:event_TextEditorInputMethodTextChanged + private void isLogShow() { + if (MenuItemViewLog.isSelected()) { + ScrollLog.setVisible(true); + ScrollLog.setEnabled(true); + RightSplitPane.setDividerLocation(prefs.getInt(LOG_DIV, RightSplitPane.getHeight() - 200)); + } else { + ScrollLog.setVisible(false); + ScrollLog.setEnabled(false); + RightSplitPane.setDividerLocation(RightSplitPane.getHeight() - RightSplitPane.getDividerSize()); + } + } - private void TextEditorCaretPositionChanged(java.awt.event.InputMethodEvent evt) {// GEN-FIRST:event_TextEditorCaretPositionChanged - UpdateEditorButtons(); - }// GEN-LAST:event_TextEditorCaretPositionChanged + private void ReScanActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ReScanActionPerformed + PortFinder(); + }// GEN-LAST:event_ReScanActionPerformed - private void TextEditorActiveLineRangeChanged(org.fife.ui.rsyntaxtextarea.ActiveLineRangeEvent evt) {// GEN-FIRST:event_TextEditorActiveLineRangeChanged - UpdateEditorButtons(); - }// GEN-LAST:event_TextEditorActiveLineRangeChanged + private void CommandKeyTyped(java.awt.event.KeyEvent evt) {// GEN-FIRST:event_CommandKeyTyped - private void EditorThemeActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_EditorThemeActionPerformed - int n = EditorTheme.getSelectedIndex(); - prefs.putInt(COLOR_THEME, n); - PrefsFlush(); - SetTheme(n, true); // for all - }// GEN-LAST:event_EditorThemeActionPerformed + }// GEN-LAST:event_CommandKeyTyped - private void TextEditorKeyTyped(java.awt.event.KeyEvent evt) {// GEN-FIRST:event_TextEditorKeyTyped - if (UseExternalEditor.isSelected()) { - return; + private void SendCommandActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SendCommandActionPerformed + if (CommandEcho.isSelected()) { + if (Terminal.getCaretOffsetFromLineStart() > 0) { + TerminalAdd("\r\n"); + } + TerminalAdd(Command.getSelectedItem().toString()); + TerminalAdd("\r\n"); } - if (!isChanged()) { - FileChanged.set(iTab, true); - UpdateEditorButtons(); + SendCommand(); + }// GEN-LAST:event_SendCommandActionPerformed + + private void CommandActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_CommandActionPerformed + // log("CommandActionPerformed " + evt.getActionCommand()); + if ("comboBoxEdited".equals(evt.getActionCommand())) { // Hit Enter + SendCommand.doClick(); } - }// GEN-LAST:event_TextEditorKeyTyped + }// GEN-LAST:event_CommandActionPerformed - private void FileSendESPActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_FileSendESPActionPerformed - if (FileSendESP.isSelected()) { - if (TextEditor1.get(iTab).getText().length() == 0) { - JOptionPane.showMessageDialog(null, "File empty."); - FileSendESP.setSelected(false); - return; - } - SendToESP(TextEditor1.get(iTab).getText()); + private void CommandKeyPressed(java.awt.event.KeyEvent evt) {// GEN-FIRST:event_CommandKeyPressed + + }// GEN-LAST:event_CommandKeyPressed + + private void CommandKeyReleased(java.awt.event.KeyEvent evt) {// GEN-FIRST:event_CommandKeyReleased + + }// GEN-LAST:event_CommandKeyReleased + + private void ContextMenuTerminalPopupMenuWillBecomeVisible(javax.swing.event.PopupMenuEvent evt) {// GEN-FIRST:event_ContextMenuTerminalPopupMenuWillBecomeVisible + try { + MenuItemTerminalCopy.setEnabled(Terminal.getSelectedText().length() > 0); + } catch (Exception e) { + MenuItemTerminalCopy.setEnabled(false); + } + int size = Terminal.getFont().getSize(); + String inc, dec; + if (size < TERMINAL_FONT_SIZE_MAX) { + inc = "Change font size from " + Integer.toString(size) + " to " + Integer.toString(size + 1); } else { - StopSend(); + inc = "Set font size to " + Float.toString(TERMINAL_FONT_SIZE_MIN); } - }// GEN-LAST:event_FileSendESPActionPerformed + MenuItemTerminalFontInc.setText(inc); + if (size > TERMINAL_FONT_SIZE_MIN) { + dec = "Change font size from " + Integer.toString(size) + " to " + Integer.toString(size - 1); + } else { + dec = "Set font size to " + Float.toString(TERMINAL_FONT_SIZE_MAX); + } + MenuItemTerminalFontDec.setText(dec); + }// GEN-LAST:event_ContextMenuTerminalPopupMenuWillBecomeVisible - private void AnswerDelayStateChanged(javax.swing.event.ChangeEvent evt) {// GEN-FIRST:event_AnswerDelayStateChanged - AnswerDelayLabel.setText("Answer timout = " + Integer.toString(AnswerDelay.getValue()) + " s"); - prefs.putInt(TIMEOUT, AnswerDelay.getValue()); - PrefsFlush(); - }// GEN-LAST:event_AnswerDelayStateChanged + private void MenuItemTerminalCopyActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemTerminalCopyActionPerformed + Terminal.copy(); + }// GEN-LAST:event_MenuItemTerminalCopyActionPerformed - private void cmdListFilesActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdListFilesActionPerformed - ListFiles(); - }// GEN-LAST:event_cmdListFilesActionPerformed + private void MenuItemTerminalClearActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemTerminalClearActionPerformed + Terminal.setText(""); + }// GEN-LAST:event_MenuItemTerminalClearActionPerformed - private void ListFiles() { - if (portJustOpen) { - log("ERROR: Communication with MCU not yet established."); - return; + private void MenuItemViewLogActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemViewLogActionPerformed + isLogShow(); + prefs.putBoolean(SHOW_LOG, MenuItemViewLog.isSelected()); + }// GEN-LAST:event_MenuItemViewLogActionPerformed + + private void MenuItemFileSaveActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemFileSaveActionPerformed + SaveFile(); + if (FileAutoSaveESP.isSelected() && !FileSaveESP.isSelected()) { + FileSaveESP.doClick(); } - // String cmd = "print(\"~~~File \"..\"list START~~~\") for k,v in - // pairs(file.list()) do l = string.format(\"%-15s\",k) print(l..\" - - // \"..v..\" bytes\") end l=nil k=nil v=nil print(\"~~~File \"..\"list - // END~~~\")"; - String cmd = "_dir=function()\n" + " local k,v,l\n" + " print(\"~~~File \"..\"list START~~~\")\n" - + " for k,v in pairs(file.list()) do \n" + " l = string.format(\"%-15s\",k) \n" - + " print(l..\" : \"..v..\" bytes\") \n" + " end \n" - + " print(\"~~~File \"..\"list END~~~\")\n" + "end\n" + "_dir()\n" + "_dir=nil"; + }// GEN-LAST:event_MenuItemFileSaveActionPerformed + + boolean isFileNew() { try { - serialPort.removeEventListener(); + if (FilesTabbedPane.getTitleAt(iTab).equals(NewFile)) { + return true; + } } catch (Exception e) { - log(e.toString()); - } - try { - serialPort.addEventListener(new PortFilesReader(), portMask); - log("FileManager: Add EventListener: Success."); - } catch (SerialPortException e) { - log("FileManager: Add EventListener Error. Canceled."); - return; + return true; } - ClearFileManager(); - rx_data = ""; - rcvBuf = ""; - sendBuf = cmdPrep(cmd); - log("FileManager: Starting..."); - SendLock(); - int delay = 10; - j0(); - taskPerformer = new ActionListener() { - public void actionPerformed(ActionEvent evt) { - if (j < sendBuf.size()) { - LocalEcho = false; - send(addCR(sendBuf.get(j)), false); - sendPending = false; - } - } - }; - timer = new Timer(delay, taskPerformer); - timer.setRepeats(false); - timer.setInitialDelay(delay); - WatchDog(); - timer.start(); + return false; } - private void ClearFileManager() { - if (!MenuItemViewFileManager.isSelected()) { - return; + boolean SaveFile() { + boolean success = false; + if (isFileNew()) { // we saving new file + log("Saving new file..."); + FileCount++; + String fileExt; + if (OptionNodeMCU.isSelected()) { + fileExt = ".lua"; + } else { // MicroPython + fileExt = ".py"; + } + iFile.set(iTab, new File("script" + Integer.toString(FileCount) + fileExt)); + chooser.rescanCurrentDirectory(); + chooser.setSelectedFile(iFile.get(iTab)); + int returnVal = chooser.showSaveDialog(null); + if (returnVal != JFileChooser.APPROVE_OPTION) { + log("Saving abort by user."); + UpdateEditorButtons(); + return false; + } + SavePath(); + iFile.set(iTab, chooser.getSelectedFile()); + if (iFile.get(iTab).exists()) { + log("File " + iFile.get(iTab).getName() + " already exist, waiting user choice"); + int shouldWrite = Dialog("File " + iFile.get(iTab).getName() + " already exist. Overwrite?", + JOptionPane.YES_NO_OPTION); + if (shouldWrite != JOptionPane.YES_OPTION) { + UpdateEditorButtons(); + log("Saving canceled by user, because file " + FileName + " already exist"); + return false; + } else { + log("File " + FileName + " will be overwriten by user choice"); + } + } + } else { // we saving file, when open + log("We save known file " + iFile.get(iTab).getName()); } - FileManagerPane.removeAll(); - FileManagerPane.add(FileFormat); - FileManagerPane.add(FileSystemInfo); - FileManagerPane.add(FileListReload); - FileManagerPane.add(FileRenamePanel); - FileRenamePanel.setVisible(false); - FileRenamePanel.setEnabled(false); - FileManagerPane.repaint(); - FileAsButton = new ArrayList(); - } - - private class PortFilesReader implements SerialPortEventListener { - - public void serialEvent(SerialPortEvent event) { - String data; - if (event.isRXCHAR() && event.getEventValue() > 0) { - try { - data = serialPort.readString(event.getEventValue()); - rcvBuf = rcvBuf + data; - rx_data = rx_data + data; - } catch (Exception e) { - data = ""; - log(e.toString()); - } - if (rcvBuf.contains("> ")) { - try { - timeout.restart(); - } catch (Exception e) { - log(e.toString()); - } - rcvBuf = ""; - if (j < sendBuf.size() - 1) { - if (timer.isRunning() || sendPending) { - // - } else { - inc_j(); - sendPending = true; - timer.start(); - } - } else { // send done - try { - timer.stop(); - } catch (Exception e) { - } - } - } - try { - if (rx_data.contains("~~~File list END~~~")) { - try { - timeout.stop(); - } catch (Exception e) { - log(e.toString()); - } - ProgressBar.setValue(100); - log("FileManager: File list found! Do parsing..."); - try { - // parsing answer - int start = rx_data.indexOf("~~~File list START~~~"); - rx_data = rx_data.substring(start + 23, rx_data.indexOf("~~~File list END~~~")); - // log(rx_data.replaceAll("\r?\n", "\r\n")); - s = rx_data.split("\r?\n"); - Arrays.sort(s); - // TerminalAdd("\r\n" + rx_data + "\r\n> "); - int usedSpace = 0; - TerminalAdd("\r\n----------------------------"); - for (String subs : s) { - TerminalAdd("\r\n" + subs); - String[] parts = subs.split(":"); - if (parts[0].trim().length() > 0) { - int size = Integer.parseInt(parts[1].trim().split(" ")[0]); - AddFileButton(parts[0].trim(), size); - usedSpace += size; - log("FileManager found file " + parts[0].trim()); - } - } - if (FileAsButton.size() == 0) { - TerminalAdd("No files found."); - TerminalAdd("\r\n----------------------------\r\n> "); - } else { - TerminalAdd("\r\n----------------------------"); - TerminalAdd("\r\nTotal file(s) : " + Integer.toString(s.length)); - TerminalAdd("\r\nTotal size : " + Integer.toString(usedSpace) + " bytes\r\n"); - } - FileManagerPane.invalidate(); - FileManagerPane.doLayout(); - FileManagerPane.repaint(); - FileManagerPane.requestFocusInWindow(); - log("FileManager: File list parsing done, found " + FileAsButton.size() + " file(s)."); - } catch (Exception e) { - log(e.toString()); - } - try { - serialPort.removeEventListener(); - } catch (Exception e) { - } - serialPort.addEventListener(new PortReader(), portMask); - SendUnLock(); - FileSystemInfo(); - } - } catch (SerialPortException ex) { - log(ex.toString()); - } - } else if (event.isCTS()) { - UpdateLedCTS(); - } else if (event.isERR()) { - log("FileManager: Unknown serial port error received."); + try { + log("Try to saving file " + iFile.get(iTab).getName() + " ..."); + fos = new FileOutputStream(iFile.get(iTab)); + osw = new OutputStreamWriter(fos, "UTF-8"); + bw = new BufferedWriter(osw); + bw.write(TextEditor1.get(iTab).getText()); + bw.flush(); + osw.flush(); + fos.flush(); + FileName = iFile.get(iTab).getName(); + log("Save file " + FileName + ": Success."); + FilesTabbedPane.setTitleAt(iTab, FileName); + UpdateEditorButtons(); + success = true; + } catch (IOException ex) { + log("Save file " + iFile.get(iTab).getName() + ": FAIL."); + log(ex.toString()); + // log(ex.getStackTrace().toString()); + JOptionPane.showMessageDialog(null, "Error, file not saved!"); + } + try { + if (bw != null) { + bw.close(); + } + if (osw != null) { + osw.close(); } + if (fos != null) { + fos.close(); + } + } catch (IOException ex) { + log(ex.toString()); + // log(ex.getStackTrace().toString()); } + TextEditor1.get(iTab).discardAllEdits(); + FileChanged.set(iTab, false); + UpdateEditorButtons(); + return success; } - private void FileDownload(String param) { - if (portJustOpen) { - log("Downloader: Communication with MCU not yet established."); + private void MenuItemFileNewActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemFileNewActionPerformed + FileNew(""); + }// GEN-LAST:event_MenuItemFileNewActionPerformed + + private void FileNew(String s) { + if (UseExternalEditor.isSelected()) { return; } - // param init.luaSize:123 - DownloadedFileName = param.split("Size:")[0]; - int size = Integer.parseInt(param.split("Size:")[1]); - packets = size / 1024; - if (size % 1024 > 0) - packets++; - sendBuf = new ArrayList(); - rcvPackets = new ArrayList(); - PacketsData = new ArrayList(); - PacketsSize = new ArrayList(); - PacketsNum = new ArrayList(); - rcvFile = ""; - PacketsByte = new byte[0]; - rx_byte = new byte[0]; - PacketsCRC = new ArrayList(); - String cmd = "_dl=function() " + " file.open(\"" + DownloadedFileName + "\", \"r\")\n" + " local buf " - + " local i=0 " + " local checksum\n" + " repeat " + " buf = file.read(1024) " - + " if buf ~= nil then " + " i = i + 1 " + " checksum = 0 " - + " for j=1, string.len(buf) do\n" - + " checksum = checksum + (buf:byte(j)*20)%19 " + " end " - + " buf='~~~'..'DATA-START~~~'..buf..'~~~'..'DATA-LENGTH~~~'..string.len(buf)..'~~~'..'DATA-N~~~'..i..'~~~'..'DATA-CRC~~~'..checksum..'~~~'..'DATA-END~~~'\n" - + " uart.write(0,buf) " + " end " + " tmr.wdclr() " + " until(buf == nil) " - + " file.close()\n" + " buf='~~~'..'DATA-TOTAL-START~~~'..i..'~~~'..'DATA-TOTAL-END~~~'\n" - + " uart.write(0,buf) " + "end " + "_dl() " + "_dl=nil\n"; - s = cmd.split("\r?\n"); - for (String subs : s) { - sendBuf.add(subs); - } - log("Downloader: Starting..."); - startTime = System.currentTimeMillis(); - SendLock(); - rx_data = ""; - rcvBuf = ""; - rx_byte = new byte[0]; - try { - serialPort.removeEventListener(); - } catch (Exception e) { - log(e.toString()); - } - try { - serialPort.addEventListener(new PortFileDownloader(), portMask); - log("Downloader: Add EventListener: Success."); - } catch (SerialPortException e) { - log("Downloader: Add EventListener Error. Canceled."); - return; + AddTab(s); + if (s.isEmpty()) { + log("New empty file ready."); + } else { + log("New file ready, content load: Success."); } - int delay = 10; - j0(); - taskPerformer = new ActionListener() { - public void actionPerformed(ActionEvent evt) { - if (j < sendBuf.size()) { - send(addCR(sendBuf.get(j)), false); - sendPending = false; - } - } - }; - timer = new Timer(delay, taskPerformer); - timer.setRepeats(false); - log("Downloader: Start"); - TerminalAdd("\r\nDownload file \"" + DownloadedFileName + "\"..."); - timer.setInitialDelay(delay); - WatchDog(); - timer.start(); - return; } - private void FileDownloadFinisher(boolean success) { - try { - serialPort.removeEventListener(); - } catch (Exception e) { - log(e.toString()); - } - try { - serialPort.addEventListener(new PortReader(), portMask); - } catch (SerialPortException e) { - log("Downloader: Can't Add OldEventListener."); + private void MenuItemEditCutActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemEditCutActionPerformed + if (UseExternalEditor.isSelected()) { + return; } - // SendUnLock(); - StopSend(); - if (success) { - TerminalAdd("Success.\r\n"); - if (DownloadCommand.startsWith("EDIT")) { - FileNew(rcvFile); - } else if (DownloadCommand.startsWith("DOWNLOAD")) { - SaveDownloadedFile(); - } else { - // nothing, reserved - } - } else { - TerminalAdd("FAIL.\r\n"); + TextEditor1.get(iTab).cut(); + FileChanged.set(iTab, true); + }// GEN-LAST:event_MenuItemEditCutActionPerformed + + private void MenuItemEditCopyActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemEditCopyActionPerformed + TextEditor1.get(iTab).copy(); + }// GEN-LAST:event_MenuItemEditCopyActionPerformed + + private void MenuItemEditPasteActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemEditPasteActionPerformed + if (UseExternalEditor.isSelected()) { + return; } - } + TextEditor1.get(iTab).paste(); + FileChanged.set(iTab, true); + }// GEN-LAST:event_MenuItemEditPasteActionPerformed + // File open - private byte[] concatArray(byte[] a, byte[] b) { - if (a == null) - return b; - if (b == null) - return a; - byte[] r = new byte[a.length + b.length]; - System.arraycopy(a, 0, r, 0, a.length); - System.arraycopy(b, 0, r, a.length, b.length); - return r; - } + private void MenuItemFileOpenActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemFileOpenActionPerformed + OpenFile(); + }// GEN-LAST:event_MenuItemFileOpenActionPerformed - private class PortFileDownloader implements SerialPortEventListener { + private void SavePath() { + workDir = chooser.getCurrentDirectory().toString(); + prefs.put(PATH, workDir); + } - public void serialEvent(SerialPortEvent event) { - String data; - byte[] b; - if (event.isRXCHAR() && event.getEventValue() > 0) { - try { - b = serialPort.readBytes(); - rx_byte = concatArray(rx_byte, b); - data = new String(b); - rcvBuf = rcvBuf + data; - rx_data = rx_data + data; - // TerminalAdd(data); - } catch (SerialPortException e) { - data = ""; - log(e.toString()); - } - if (rcvBuf.contains("> ")) { - try { - timeout.restart(); - } catch (Exception e) { - log(e.toString()); - } - rcvBuf = ""; - if (j < sendBuf.size() - 1) { - if (timer.isRunning() || sendPending) { - // - } else { - inc_j(); - sendPending = true; - timer.start(); - } - } else { // send done - try { - timer.stop(); - } catch (Exception e) { - } - } + private void OpenFile() { + chooser.rescanCurrentDirectory(); + int success = chooser.showOpenDialog(LeftBasePane); + if (success == JFileChooser.APPROVE_OPTION) { + SavePath(); + int isOpen = -1; + for (int i = 0; i < iFile.size(); i++) { + if (chooser.getSelectedFile().getPath().equals(iFile.get(i).getPath())) { + iTab = i; + isOpen = i; + break; } - /* - * String l = data.replace("\r", ""); l = l.replace("\n", - * ""); l = l.replace("`", ""); log("recv:" + l); - */ - if ((rx_data.lastIndexOf("~~~DATA-END") >= 0) && (rx_data.lastIndexOf("~~~DATA-START") >= 0)) { - // we got full packet - rcvPackets.add(rx_data.split("~~~DATA-END")[0]); // store - // RAW - // data - rx_data = rx_data.substring(rx_data.indexOf("~~~DATA-END") + 11); // and - // remove - // it - // from - // buf - if (packets > 0) { // exclude div by zero - ProgressBar.setValue(rcvPackets.size() * 100 / packets); - } - // ~~~DATA-START~~~buf~~~DATA-LENGTH~~~string.len(buf)~~~DATA-N~~~i~~~DATA-CRC~~~CheckSum~~~DATA-END - // 0 1 2 3 4 5 - // split packet & check crc - int i = rcvPackets.size() - 1; - String[] part = rcvPackets.get(i).split("~~~DATA-CRC~~~"); - PacketsCRC.add(Integer.parseInt(part[1])); - String left = part[0]; - part = left.split("~~~DATA-N~~~"); - PacketsNum.add(Integer.parseInt(part[1])); - left = part[0]; - part = left.split("~~~DATA-LENGTH~~~"); - PacketsSize.add(Integer.parseInt(part[1])); - left = part[0]; - part = left.split("~~~DATA-START~~~"); - PacketsData.add(part[1]); - int startData = FindPacketID(i + 1); - byte[] x; - if ((startData > 0) && (rx_byte.length >= (startData + PacketsSize.get(i)))) { - x = copyPartArray(rx_byte, startData, PacketsSize.get(i)); - // log("Downloader: data from packet #" + - // Integer.toString(i+1) + " found in raw data"); - } else { - x = new byte[0]; - // log("Downloader: data packet #" + - // Integer.toString(i+1) + " not found in raw data."); - // log("raw date length " + rx_byte.length + - // "\r\nstartData " + Integer.toString(startData) ); - } - // rx_byte = new byte[0]; - if (PacketsCRC.get(i) == CRC(x)) { - try { - timeout.restart(); - } catch (Exception e) { - log(e.toString()); - } - rcvFile = rcvFile + PacketsData.get(i); - PacketsByte = concatArray(PacketsByte, x); - log("Downloader: Receive packet: " + Integer.toString(PacketsNum.get(i)) + "/" - + Integer.toString(packets) + ", size:" + Integer.toString(PacketsSize.get(i)) - + ", CRC check: Success"); - } else { - try { - timeout.stop(); - } catch (Exception e) { - log(e.toString()); - } - log("Downloader: Receive packets: " + Integer.toString(PacketsNum.get(i)) + "/" - + Integer.toString(packets) + ", size expected:" + Integer.toString(PacketsSize.get(i)) - + ", size received:" + Integer.toString(PacketsByte.length) + "\r\n, CRC expected :" - + Integer.toString(PacketsCRC.get(i)) + " CRC received :" + Integer.toString(CRC(x))); - log("Downloader: FAIL."); - PacketsCRC.clear(); - PacketsNum.clear(); - PacketsSize.clear(); - PacketsData.clear(); - rcvPackets.clear(); - rcvFile = ""; - PacketsByte = new byte[0]; - FileDownloadFinisher(false); - } - } else if ((rx_data.lastIndexOf("~~~DATA-TOTAL-END~~~") >= 0) && (PacketsNum.size() == packets)) { - try { - timeout.stop(); - } catch (Exception e) { - log(e.toString()); - } - ProgressBar.setValue(100); - log("Downloader: Receive final sequense. File download: Success"); - // log(rx_data); - FileDownloadFinisher(true); - } else { - // log("rxbyte - " + Integer.toString( rx_byte.length )); + } + if (isOpen >= 0) { + FilesTabbedPane.setSelectedIndex(iTab); + UpdateEditorButtons(); + FileName = chooser.getSelectedFile().getName(); + log("File " + FileName + " already open, select tab to file " + FileName); + JOptionPane.showMessageDialog(null, "File " + FileName + " already open. You can use 'Reload' only."); + return; + } + if (!isFileNew() || isChanged()) { + AddTab(""); + } + log("Try to open file " + chooser.getSelectedFile().getName()); + try { + iFile.set(iTab, chooser.getSelectedFile()); + FileName = iFile.get(iTab).getName(); + log("File name: " + iFile.get(iTab).getPath()); + if (iFile.get(iTab).length() > 1024 * 1024) { // 1M + JOptionPane.showMessageDialog(null, "File " + FileName + " too large."); + log("File too large. Size: " + Long.toString(iFile.get(iTab).length() / 1024 / 1024) + " Mb, file: " + + iFile.get(iTab).getPath()); + UpdateEditorButtons(); + return; } - } else if (event.isCTS()) { - UpdateLedCTS(); - } else if (event.isERR()) { - log("Downloader: Unknown serial port error received."); - FileDownloadFinisher(false); + FilesTabbedPane.setTitleAt(iTab, iFile.get(iTab).getName()); + } catch (Exception ex) { + JOptionPane.showMessageDialog(null, "Error, file is not open!"); + log(ex.toString()); + log("Open: FAIL."); + // log(ex.getStackTrace().toString()); + } + if (LoadFile()) { + log("Open \"" + FileName + "\": Success."); } } + UpdateEditorButtons(); } - private byte[] copyPartArray(byte[] a, int start, int len) { - if (a == null) - return null; - if (start > a.length) - return null; - byte[] r = new byte[len]; + private boolean LoadFile() { + boolean success = false; + if (isFileNew()) { + UpdateEditorButtons(); + log("Internal error 101: FileTab is NewFile."); + return false; + } + FileName = ""; try { - System.arraycopy(a, start, r, 0, len); + FileName = iFile.get(iTab).getName(); + log("Try to load file " + FileName); } catch (Exception e) { - log(e.toString()); - log("copyPartArray exception"); - log("size a=" + Integer.toString(a.length)); - log("start =" + Integer.toString(start)); - log("len =" + Integer.toString(len)); + log("Internal error 102: no current file descriptor."); + return false; } - return r; - } - - private int FindPacketID(int nPacket) { - int i, j, n, ret = -1; - boolean success; - String s = "~~~DATA-START~~~"; - i = 0; - n = 0; - while (i < rx_byte.length - s.length()) { + try { + fis = new FileInputStream(iFile.get(iTab)); + isr = new InputStreamReader(fis, "UTF-8"); + br = new BufferedReader(isr); + StringBuilder sb = new StringBuilder(); + String line; + while ((line = br.readLine()) != null) { + sb.append(line).append('\n'); + } + TextEditor1.get(iTab).setText(sb.toString()); success = true; - for (j = 0; j < s.length(); j++) { - if (!(rx_byte[i + j] == s.charAt(j))) { - success = false; - break; - } + } catch (Exception ex) { + log(ex.toString()); + // log(ex.getStackTrace().toString()); + log("Loading " + FileName + ": FAIL."); + UpdateEditorButtons(); + JOptionPane.showMessageDialog(null, "Error, file not load!"); + return false; + } + try { + if (br != null) { + br.close(); } - if (success) { - n++; - // log("Downloader: n =" + Integer.toString(n)); - // log("Downloader: nPacket =" + Integer.toString(nPacket)); + if (isr != null) { + isr.close(); } - if (success && (n == nPacket)) { - ret = i + s.length(); - break; - } else { + if (fis != null) { + fis.close(); } - i++; + } catch (Exception ex) { + log(ex.toString()); + // log(ex.getStackTrace().toString()); + log("Internal error 103: can't close stream."); } - // log("Downloader: FindPacketID=" + Integer.toString(ret)); - return ret; + if (success) { + TextEditor1.get(iTab).setCaretPosition(0); + FileChanged.set(iTab, false); + TextEditor1.get(iTab).discardAllEdits(); + UpdateEditorButtons(); + FileLabelUpdate(); + if (UseExternalEditor.isSelected()) { + TextEditor1.get(iTab).setEditable(false); + } + log("Loading " + FileName + ": Success."); + } + return success; } - private int CRC(byte[] s) { - int cs = 0; - int x; + private boolean PrefsFlush() { + boolean success = false; try { - for (int i = 0; i < s.length; i++) { - x = s[i] & 0xFF; - // log( Integer.toHexString(x) ); - cs = cs + (x * 20) % 19; - } - // log("\r\nCRC size= " + Integer.toString(s.length)+ ", - // CRC="+Integer.toString(cs)); + prefs.flush(); + success = true; } catch (Exception e) { + log("ERROR: Can't save some setting."); log(e.toString()); - log(e.getStackTrace().toString()); - log("size=" + Integer.toString(s.length)); } - return cs; + return success; } - private void HexDump(String FileName) { - String cmd = "_dump=function()\n" + " local buf\n" + " local j=0\n" + " if file.open(\"" + FileName - + "\", \"r\") then\n" + " print('--HexDump start')\n" + " repeat\n" + " buf=file.read(1024)\n" - + " if buf~=nil then\n" + " local n \n" + " if #buf==1024 then\n" - + " n=(#buf/16)*16\n" + " else\n" + " n=(#buf/16+1)*16\n" + " end\n" - + " for i=1,n do\n" + " j=j+1\n" + " if (i-1)%16==0 then\n" - + " uart.write(0,string.format('%08X ',j-1)) \n" + " end\n" - + " uart.write(0,i>#buf and' 'or string.format('%02X ',buf:byte(i)))\n" - + " if i%8==0 then uart.write(0,' ')end\n" - + " if i%16==0 then uart.write(0,buf:sub(i-16+1, i):gsub('%c','.'),'\\n')end\n" - + " if i%128==0 then tmr.wdclr()end\n" + " end\n" + " end\n" + " until(buf==nil)\n" - + " file.close()\n" + " print(\"\\r--HexDump done.\")\n" + " else\n" - + " print(\"\\r--HexDump error: can't open file\")\n" + " end\n" + "end\n" + "_dump()\n" - + "_dump=nil\n"; - LocalEcho = false; - SendToESP(cmdPrep(cmd)); + private void MenuItemEditorCutActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemEditorCutActionPerformed + MenuItemEditCut.doClick(); + }// GEN-LAST:event_MenuItemEditorCutActionPerformed + + private void MenuItemEditorCopyActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemEditorCopyActionPerformed + MenuItemEditCopy.doClick(); + }// GEN-LAST:event_MenuItemEditorCopyActionPerformed + + private void MenuItemEditorPasteActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemEditorPasteActionPerformed + MenuItemEditPaste.doClick(); + }// GEN-LAST:event_MenuItemEditorPasteActionPerformed + + private void MenuItemLogClearActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemLogClearActionPerformed + Log.setText(""); + }// GEN-LAST:event_MenuItemLogClearActionPerformed + + private void CheckSelected() { + if (TextEditor1.get(iTab).getSelectedText() == null) { + MenuItemEditorCut.setEnabled(false); + MenuItemEditCut.setEnabled(false); + MenuItemEditorCopy.setEnabled(false); + MenuItemEditCopy.setEnabled(false); + ButtonCut.setEnabled(false); + ButtonCopy.setEnabled(false); + MenuItemEditSendSelected.setEnabled(false); + MenuItemEditorSendSelected.setEnabled(false); + ButtonSendSelected.setEnabled(false); + } else { + MenuItemEditorCut.setEnabled(true); + MenuItemEditCut.setEnabled(true); + MenuItemEditorCopy.setEnabled(true); + MenuItemEditCopy.setEnabled(true); + ButtonCut.setEnabled(true); + ButtonCopy.setEnabled(true); + MenuItemEditSendSelected.setEnabled(pOpen); + MenuItemEditorSendSelected.setEnabled(pOpen); + ButtonSendSelected.setEnabled(pOpen); + } + try { + if (Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null) == null) { // clipboard empty + MenuItemEditorPaste.setEnabled(false); + MenuItemEditPaste.setEnabled(false); + ButtonPaste.setEnabled(false); + } else { + MenuItemEditorPaste.setEnabled(true); + MenuItemEditPaste.setEnabled(true); + ButtonPaste.setEnabled(true); + } + } catch (Exception e) { + } + } + + private void UpdateEditorButtons() { + iTab = FilesTabbedPane.getSelectedIndex(); + // isChanged + if (isChanged() && !UseExternalEditor.isSelected()) { + if (isFileNew()) { + MenuItemFileSave.setEnabled(true); + ButtonFileSave.setEnabled(true); + MenuItemFileReload.setEnabled(false); + ButtonFileReload.setEnabled(false); + } else { + MenuItemFileSave.setEnabled(true); + ButtonFileSave.setEnabled(true); + MenuItemFileReload.setEnabled(true); + ButtonFileReload.setEnabled(true); + } + } else if (isFileNew()) { + MenuItemFileSave.setEnabled(true); + ButtonFileSave.setEnabled(true); + MenuItemFileReload.setEnabled(false); + ButtonFileReload.setEnabled(false); + } else { + MenuItemFileSave.setEnabled(false); + ButtonFileSave.setEnabled(false); + MenuItemFileReload.setEnabled(true); + ButtonFileReload.setEnabled(true); + } + if (isFileNew() && (FilesTabbedPane.getTabCount() == 1)) { + MenuItemFileClose.setEnabled(false); + ButtonFileClose.setEnabled(false); + } else { + MenuItemFileClose.setEnabled(true); + ButtonFileClose.setEnabled(true); + } + // CanUndo + try { + if (TextEditor1.isEmpty()) { + return; + } + } catch (Exception e) { + return; + } + if (TextEditor1.get(iTab).canUndo()) { + MenuItemEditUndo.setEnabled(true); + MenuItemEditorUndo.setEnabled(true); + ButtonUndo.setEnabled(true); + } else { + MenuItemEditUndo.setEnabled(false); + MenuItemEditorUndo.setEnabled(false); + ButtonUndo.setEnabled(false); + } + // CanRedo + if (TextEditor1.get(iTab).canRedo()) { + MenuItemEditRedo.setEnabled(true); + MenuItemEditorRedo.setEnabled(true); + ButtonRedo.setEnabled(true); + } else { + MenuItemEditRedo.setEnabled(false); + MenuItemEditorRedo.setEnabled(false); + ButtonRedo.setEnabled(false); + } + CheckSelected(); + if (UseExternalEditor.isSelected()) { + MenuItemFileReload.setEnabled(true); + ButtonFileReload.setEnabled(true); + + MenuItemFileSave.setEnabled(false); + ButtonFileSave.setEnabled(false); + MenuItemEditUndo.setEnabled(false); + MenuItemEditorUndo.setEnabled(false); + ButtonUndo.setEnabled(false); + MenuItemEditRedo.setEnabled(false); + MenuItemEditorRedo.setEnabled(false); + ButtonRedo.setEnabled(false); + MenuItemEditorCut.setEnabled(false); + MenuItemEditCut.setEnabled(false); + ButtonCut.setEnabled(false); + MenuItemEditorPaste.setEnabled(false); + MenuItemEditPaste.setEnabled(false); + ButtonPaste.setEnabled(false); + MenuItemFileNew.setEnabled(false); + ButtonFileNew.setEnabled(false); + MenuItemFileSaveAs.setEnabled(false); + } else { + MenuItemFileNew.setEnabled(true); + ButtonFileNew.setEnabled(true); + MenuItemFileSaveAs.setEnabled(true); + } + } + + private void formFocusGained(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_formFocusGained + UpdateEditorButtons(); + UpdateButtons(); + }// GEN-LAST:event_formFocusGained + + private void MenuItemFileReloadActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemFileReloadActionPerformed + ReloadFile(); + }// GEN-LAST:event_MenuItemFileReloadActionPerformed + + private void MenuItemFileCloseActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemFileCloseActionPerformed + CloseFile(); + }// GEN-LAST:event_MenuItemFileCloseActionPerformed + + private void MenuItemViewClearTerminalActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemViewClearTerminalActionPerformed + MenuItemTerminalClear.doClick(); + }// GEN-LAST:event_MenuItemViewClearTerminalActionPerformed + + private void MenuItemViewClearLogActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemViewClearLogActionPerformed + MenuItemLogClear.doClick(); + }// GEN-LAST:event_MenuItemViewClearLogActionPerformed + + private void AlwaysOnTopItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_AlwaysOnTopItemStateChanged + this.setAlwaysOnTop(AlwaysOnTop.isSelected()); + }// GEN-LAST:event_AlwaysOnTopItemStateChanged + + private void MenuItemEditUndoActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemEditUndoActionPerformed + if (TextEditor1.get(iTab).canUndo()) { + TextEditor1.get(iTab).undoLastAction(); + } + }// GEN-LAST:event_MenuItemEditUndoActionPerformed + + private void MenuItemEditRedoActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemEditRedoActionPerformed + if (TextEditor1.get(iTab).canRedo()) { + TextEditor1.get(iTab).redoLastAction(); + } + }// GEN-LAST:event_MenuItemEditRedoActionPerformed + + private void MenuItemEditorRedoActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemEditorRedoActionPerformed + MenuItemEditRedo.doClick(); + }// GEN-LAST:event_MenuItemEditorRedoActionPerformed + + private void MenuItemEditorUndoActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemEditorUndoActionPerformed + MenuItemEditUndo.doClick(); + }// GEN-LAST:event_MenuItemEditorUndoActionPerformed + + private void NodeListFiles() { + if (portJustOpen) { + log("ERROR: Communication with MCU not yet established."); + return; + } + // String cmd = "print(\"~~~File \"..\"list START~~~\") for k,v in + // pairs(file.list()) do l = string.format(\"%-15s\",k) print(l..\" - \"..v..\" + // bytes\") end l=nil k=nil v=nil print(\"~~~File \"..\"list END~~~\")"; + String cmd = "_dir=function()\n" + " local k,v,l\n" + " print(\"~~~File \"..\"list START~~~\")\n" + + " for k,v in pairs(file.list()) do \n" + " l = string.format(\"%-15s\",k) \n" + + " print(l..\" : \"..v..\" bytes\") \n" + " end \n" + + " print(\"~~~File \"..\"list END~~~\")\n" + "end\n" + "_dir()\n" + "_dir=nil"; + try { + serialPort.removeEventListener(); + } catch (Exception e) { + log(e.toString()); + } + try { + serialPort.addEventListener(new PortNodeFilesReader(), portMask); + log("FileManager: Add EventListener: Success."); + } catch (SerialPortException e) { + log("FileManager: Add EventListener Error. Canceled."); + return; + } + ClearNodeFileManager(); + rx_data = ""; + rcvBuf = ""; + sendBuf = cmdPrep(cmd); + log("FileManager: Starting..."); + SendLock(); + int delay = 10; + j0(); + taskPerformer = new ActionListener() { + public void actionPerformed(ActionEvent evt) { + if (j < sendBuf.size()) { + LocalEcho = false; + send(addCR(sendBuf.get(j)), false); + sendPending = false; + } + } + }; + timer = new Timer(delay, taskPerformer); + timer.setRepeats(false); + timer.setInitialDelay(delay); + WatchDog(); + timer.start(); + } + + private void ClearNodeFileManager() { + if (!MenuItemViewFileManager.isSelected()) { + return; + } + NodeFileManagerPane.removeAll(); + NodeFileManagerPane.add(FileFormat); + NodeFileManagerPane.add(FileSystemInfo); + NodeFileManagerPane.add(FileListReload); + NodeFileManagerPane.add(FileRenamePanel); + FileRenamePanel.setVisible(false); + FileRenamePanel.setEnabled(false); + NodeFileManagerPane.repaint(); + FileAsButton = new ArrayList(); } - private ArrayList cmdPrep(String cmd) { - String[] str = cmd.split("\n"); - ArrayList s256 = new ArrayList(); - int i = 0; - s256.add(""); - for (String subs : str) { - if ((s256.get(i).length() + subs.trim().length()) <= 250) { - s256.set(i, s256.get(i) + " " + subs.trim()); - } else { - s256.set(i, s256.get(i) + "\r"); - s256.add(subs); - i++; - } - } - return s256; - } + private class PortNodeFilesReader implements SerialPortEventListener { + + public void serialEvent(SerialPortEvent event) { + String data; + if (event.isRXCHAR() && event.getEventValue() > 0) { + try { + data = serialPort.readString(event.getEventValue()); + rcvBuf = rcvBuf + data; + rx_data = rx_data + data; + } catch (Exception e) { + data = ""; + log(e.toString()); + } + if (rcvBuf.contains("> ")) { + try { + timeout.restart(); + } catch (Exception e) { + log(e.toString()); + } + rcvBuf = ""; + if (j < sendBuf.size() - 1) { + if (timer.isRunning() || sendPending) { + // + } else { + inc_j(); + sendPending = true; + timer.start(); + } + } else { // send done + try { + timer.stop(); + } catch (Exception e) { + } + } + } + try { + if (rx_data.contains("~~~File list END~~~")) { + try { + timeout.stop(); + } catch (Exception e) { + log(e.toString()); + } + ProgressBar.setValue(100); + log("FileManager: File list found! Do parsing..."); + try { + // parsing answer + int start = rx_data.indexOf("~~~File list START~~~"); + rx_data = rx_data.substring(start + 23, rx_data.indexOf("~~~File list END~~~")); + // log(rx_data.replaceAll("\r?\n", "\r\n")); + s = rx_data.split("\r?\n"); + Arrays.sort(s); + // TerminalAdd("\r\n" + rx_data + "\r\n> "); + int usedSpace = 0; + TerminalAdd("\r\n----------------------------"); + for (String subs : s) { + TerminalAdd("\r\n" + subs); + String[] parts = subs.split(":"); + if (parts[0].trim().length() > 0) { + int size = Integer.parseInt(parts[1].trim().split(" ")[0]); + AddNodeFileButton(parts[0].trim(), size); + usedSpace += size; + log("FileManager found file " + parts[0].trim()); + } + } + if (FileAsButton.size() == 0) { + TerminalAdd("No files found."); + TerminalAdd("\r\n----------------------------\r\n> "); + } else { + TerminalAdd("\r\n----------------------------"); + TerminalAdd("\r\nTotal file(s) : " + Integer.toString(s.length)); + TerminalAdd("\r\nTotal size : " + Integer.toString(usedSpace) + " bytes\r\n"); + } + NodeFileManagerPane.invalidate(); + NodeFileManagerPane.doLayout(); + NodeFileManagerPane.repaint(); + NodeFileManagerPane.requestFocusInWindow(); + log("FileManager: File list parsing done, found " + FileAsButton.size() + " file(s)."); + } catch (Exception e) { + log(e.toString()); + } + try { + serialPort.removeEventListener(); + } catch (Exception e) { + } + serialPort.addEventListener(new PortReader(), portMask); + SendUnLock(); + NodeFileSystemInfo(); + } + } catch (SerialPortException ex) { + log(ex.toString()); + } + } else if (event.isCTS()) { + UpdateLedCTS(); + } else if (event.isERR()) { + log("FileManager: Unknown serial port error received."); + } + } + } + + private void FileDownload(String param) { + if (portJustOpen) { + log("Downloader: Communication with MCU not yet established."); + return; + } + // param init.luaSize:123 + DownloadedFileName = param.split("Size:")[0]; + int size = Integer.parseInt(param.split("Size:")[1]); + packets = size / 1024; + if (size % 1024 > 0) { + packets++; + } + sendBuf = new ArrayList(); + rcvPackets = new ArrayList(); + PacketsData = new ArrayList(); + PacketsSize = new ArrayList(); + PacketsNum = new ArrayList(); + rcvFile = ""; + PacketsByte = new byte[0]; + rx_byte = new byte[0]; + PacketsCRC = new ArrayList(); + String cmd = "_dl=function() " + " file.open(\"" + DownloadedFileName + "\", \"r\")\n" + " local buf " + + " local i=0 " + " local checksum\n" + " repeat " + " buf = file.read(1024) " + + " if buf ~= nil then " + " i = i + 1 " + " checksum = 0 " + + " for j=1, string.len(buf) do\n" + + " checksum = checksum + (buf:byte(j)*20)%19 " + " end " + + " buf='~~~'..'DATA-START~~~'..buf..'~~~'..'DATA-LENGTH~~~'..string.len(buf)..'~~~'..'DATA-N~~~'..i..'~~~'..'DATA-CRC~~~'..checksum..'~~~'..'DATA-END~~~'\n" + + " uart.write(0,buf) " + " end " + " tmr.wdclr() " + " until(buf == nil) " + + " file.close()\n" + " buf='~~~'..'DATA-TOTAL-START~~~'..i..'~~~'..'DATA-TOTAL-END~~~'\n" + + " uart.write(0,buf) " + "end " + "_dl() " + "_dl=nil\n"; + s = cmd.split("\r?\n"); + for (String subs : s) { + sendBuf.add(subs); + } + log("Downloader: Starting..."); + startTime = System.currentTimeMillis(); + SendLock(); + rx_data = ""; + rcvBuf = ""; + rx_byte = new byte[0]; + try { + serialPort.removeEventListener(); + } catch (Exception e) { + log(e.toString()); + } + try { + serialPort.addEventListener(new PortFileDownloader(), portMask); + log("Downloader: Add EventListener: Success."); + } catch (SerialPortException e) { + log("Downloader: Add EventListener Error. Canceled."); + return; + } + int delay = 10; + j0(); + taskPerformer = new ActionListener() { + public void actionPerformed(ActionEvent evt) { + if (j < sendBuf.size()) { + send(addCR(sendBuf.get(j)), false); + sendPending = false; + } + } + }; + timer = new Timer(delay, taskPerformer); + timer.setRepeats(false); + log("Downloader: Start"); + TerminalAdd("\r\nDownload file \"" + DownloadedFileName + "\"..."); + timer.setInitialDelay(delay); + WatchDog(); + timer.start(); + return; + } + + private void FileDownloadFinisher(boolean success) { + try { + serialPort.removeEventListener(); + } catch (Exception e) { + log(e.toString()); + } + try { + serialPort.addEventListener(new PortReader(), portMask); + } catch (SerialPortException e) { + log("Downloader: Can't Add OldEventListener."); + } + // SendUnLock(); + StopSend(); + if (success) { + TerminalAdd("Success.\r\n"); + if (DownloadCommand.startsWith("EDIT")) { + FileNew(rcvFile); + } else if (DownloadCommand.startsWith("DOWNLOAD")) { + SaveDownloadedFile(); + } else { + // nothing, reserved + } + } else { + TerminalAdd("FAIL.\r\n"); + } + } + + private byte[] concatArray(byte[] a, byte[] b) { + if (a == null) { + return b; + } + if (b == null) { + return a; + } + byte[] r = new byte[a.length + b.length]; + System.arraycopy(a, 0, r, 0, a.length); + System.arraycopy(b, 0, r, a.length, b.length); + return r; + } + + private class PortFileDownloader implements SerialPortEventListener { + + public void serialEvent(SerialPortEvent event) { + String data; + byte[] b; + if (event.isRXCHAR() && event.getEventValue() > 0) { + try { + b = serialPort.readBytes(); + rx_byte = concatArray(rx_byte, b); + data = new String(b); + rcvBuf = rcvBuf + data; + rx_data = rx_data + data; + // TerminalAdd(data); + } catch (SerialPortException e) { + data = ""; + log(e.toString()); + } + if (rcvBuf.contains("> ")) { + try { + timeout.restart(); + } catch (Exception e) { + log(e.toString()); + } + rcvBuf = ""; + if (j < sendBuf.size() - 1) { + if (timer.isRunning() || sendPending) { + // + } else { + inc_j(); + sendPending = true; + timer.start(); + } + } else { // send done + try { + timer.stop(); + } catch (Exception e) { + } + } + } + /* + * String l = data.replace("\r", ""); l = l.replace("\n", ""); l = + * l.replace("`", ""); log("recv:" + l); + */ + if ((rx_data.lastIndexOf("~~~DATA-END") >= 0) && (rx_data.lastIndexOf("~~~DATA-START") >= 0)) { + // we got full packet + rcvPackets.add(rx_data.split("~~~DATA-END")[0]); // store RAW data + rx_data = rx_data.substring(rx_data.indexOf("~~~DATA-END") + 11); // and remove it from buf + if (packets > 0) { // exclude div by zero + ProgressBar.setValue(rcvPackets.size() * 100 / packets); + } + // ~~~DATA-START~~~buf~~~DATA-LENGTH~~~string.len(buf)~~~DATA-N~~~i~~~DATA-CRC~~~CheckSum~~~DATA-END + // 0 1 2 3 4 5 + // split packet & check crc + int i = rcvPackets.size() - 1; + String[] part = rcvPackets.get(i).split("~~~DATA-CRC~~~"); + PacketsCRC.add(Integer.parseInt(part[1])); + String left = part[0]; + part = left.split("~~~DATA-N~~~"); + PacketsNum.add(Integer.parseInt(part[1])); + left = part[0]; + part = left.split("~~~DATA-LENGTH~~~"); + PacketsSize.add(Integer.parseInt(part[1])); + left = part[0]; + part = left.split("~~~DATA-START~~~"); + PacketsData.add(part[1]); + int startData = FindPacketID(i + 1); + byte[] x; + if ((startData > 0) && (rx_byte.length >= (startData + PacketsSize.get(i)))) { + x = copyPartArray(rx_byte, startData, PacketsSize.get(i)); + // log("Downloader: data from packet #" + Integer.toString(i+1) + " found in raw + // data"); + } else { + x = new byte[0]; + // log("Downloader: data packet #" + Integer.toString(i+1) + " not found in raw + // data."); + // log("raw date length " + rx_byte.length + + // "\r\nstartData " + Integer.toString(startData) ); + } + // rx_byte = new byte[0]; + if (PacketsCRC.get(i) == CRC(x)) { + try { + timeout.restart(); + } catch (Exception e) { + log(e.toString()); + } + rcvFile = rcvFile + PacketsData.get(i); + PacketsByte = concatArray(PacketsByte, x); + log("Downloader: Receive packet: " + Integer.toString(PacketsNum.get(i)) + "/" + + Integer.toString(packets) + ", size:" + Integer.toString(PacketsSize.get(i)) + + ", CRC check: Success"); + } else { + try { + timeout.stop(); + } catch (Exception e) { + log(e.toString()); + } + log("Downloader: Receive packets: " + Integer.toString(PacketsNum.get(i)) + "/" + + Integer.toString(packets) + ", size expected:" + Integer.toString(PacketsSize.get(i)) + + ", size received:" + Integer.toString(PacketsByte.length) + "\r\n, CRC expected :" + + Integer.toString(PacketsCRC.get(i)) + " CRC received :" + Integer.toString(CRC(x))); + log("Downloader: FAIL."); + PacketsCRC.clear(); + PacketsNum.clear(); + PacketsSize.clear(); + PacketsData.clear(); + rcvPackets.clear(); + rcvFile = ""; + PacketsByte = new byte[0]; + FileDownloadFinisher(false); + } + } else if ((rx_data.lastIndexOf("~~~DATA-TOTAL-END~~~") >= 0) && (PacketsNum.size() == packets)) { + try { + timeout.stop(); + } catch (Exception e) { + log(e.toString()); + } + ProgressBar.setValue(100); + log("Downloader: Receive final sequense. File download: Success"); + // log(rx_data); + FileDownloadFinisher(true); + } else { + // log("rxbyte - " + Integer.toString( rx_byte.length )); + } + } else if (event.isCTS()) { + UpdateLedCTS(); + } else if (event.isERR()) { + log("Downloader: Unknown serial port error received."); + FileDownloadFinisher(false); + } + } + } + + private byte[] copyPartArray(byte[] a, int start, int len) { + if (a == null) { + return null; + } + if (start > a.length) { + return null; + } + byte[] r = new byte[len]; + try { + System.arraycopy(a, start, r, 0, len); + } catch (Exception e) { + log(e.toString()); + log("copyPartArray exception"); + log("size a=" + Integer.toString(a.length)); + log("start =" + Integer.toString(start)); + log("len =" + Integer.toString(len)); + } + return r; + } + + private int FindPacketID(int nPacket) { + int i, j, n, ret = -1; + boolean success; + String s = "~~~DATA-START~~~"; + i = 0; + n = 0; + while (i < rx_byte.length - s.length()) { + success = true; + for (j = 0; j < s.length(); j++) { + if (!(rx_byte[i + j] == s.charAt(j))) { + success = false; + break; + } + } + if (success) { + n++; + // log("Downloader: n =" + Integer.toString(n)); + // log("Downloader: nPacket =" + Integer.toString(nPacket)); + } + if (success && (n == nPacket)) { + ret = i + s.length(); + break; + } else { + } + i++; + } + // log("Downloader: FindPacketID=" + Integer.toString(ret)); + return ret; + } + + private int CRC(byte[] s) { + int cs = 0; + int x; + try { + for (int i = 0; i < s.length; i++) { + x = s[i] & 0xFF; + // log( Integer.toHexString(x) ); + cs = cs + (x * 20) % 19; + } + // log("\r\nCRC size= " + Integer.toString(s.length)+ ", + // CRC="+Integer.toString(cs)); + } catch (Exception e) { + log(e.toString()); + log(e.getStackTrace().toString()); + log("size=" + Integer.toString(s.length)); + } + return cs; + } + + private void HexDump(String FileName) { + String cmd = "_dump=function()\n" + " local buf\n" + " local j=0\n" + " if file.open(\"" + FileName + + "\", \"r\") then\n" + " print('--HexDump start')\n" + " repeat\n" + " buf=file.read(1024)\n" + + " if buf~=nil then\n" + " local n \n" + " if #buf==1024 then\n" + + " n=(#buf/16)*16\n" + " else\n" + " n=(#buf/16+1)*16\n" + " end\n" + + " for i=1,n do\n" + " j=j+1\n" + " if (i-1)%16==0 then\n" + + " uart.write(0,string.format('%08X ',j-1)) \n" + " end\n" + + " uart.write(0,i>#buf and' 'or string.format('%02X ',buf:byte(i)))\n" + + " if i%8==0 then uart.write(0,' ')end\n" + + " if i%16==0 then uart.write(0,buf:sub(i-16+1, i):gsub('%c','.'),'\\n')end\n" + + " if i%128==0 then tmr.wdclr()end\n" + " end\n" + " end\n" + " until(buf==nil)\n" + + " file.close()\n" + " print(\"\\r--HexDump done.\")\n" + " else\n" + + " print(\"\\r--HexDump error: can't open file\")\n" + " end\n" + "end\n" + "_dump()\n" + + "_dump=nil\n"; + LocalEcho = false; + SendToESP(cmdPrep(cmd)); + } + + private ArrayList cmdPrep(String cmd) { + String[] str = cmd.split("\n"); + ArrayList s256 = new ArrayList(); + int i = 0; + s256.add(""); + for (String subs : str) { + if ((s256.get(i).length() + subs.trim().length()) <= 250) { + s256.set(i, s256.get(i) + " " + subs.trim()); + } else { + s256.set(i, s256.get(i) + "\r"); + s256.add(subs); + i++; + } + } + return s256; + } + + private void UpdateLedCTS() { + try { + if (serialPort.isCTS()) { + PortCTS.setIcon(LED_GREEN); + } else { + PortCTS.setIcon(LED_GREY); + } + } catch (Exception e) { + log(e.toString()); + } + } + + private void TerminalAdd(String s) { + Document doc = Terminal.getDocument(); + if (doc.getLength() > TerminalMax) { + try { + doc.remove(0, 1024); + } catch (Exception e) { + } + } + try { + doc.insertString(doc.getLength(), s, null); + } catch (Exception e) { + log(e.toString()); + } + if (AutoScroll.isSelected()) { + try { + Terminal.setCaretPosition(doc.getLength()); + } catch (Exception e) { + log(e.toString()); + } + } + } + + private void MenuItemEditorSendSelectedActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemEditorSendSelectedActionPerformed + MenuItemEditSendSelected.doClick(); + }// GEN-LAST:event_MenuItemEditorSendSelectedActionPerformed + + private void MenuItemEditSendSelectedActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemEditSendSelectedActionPerformed + int l = 0; + if ((LeftTab.getSelectedIndex() == 0) && (TextTab.getSelectedIndex() == 0)) { // NodeMCU and Scripts + try { + l = TextEditor1.get(iTab).getSelectedText().length(); + } catch (Exception e) { + log("Can't send: nothing selected."); + return; + } + if (l > 0) { + SendToESP(TextEditor1.get(iTab).getSelectedText()); + } + } else if ((LeftTab.getSelectedIndex() == 0) && (TextTab.getSelectedIndex() == 0)) { // NodeMCU and Snippets + try { + l = SnippetText.getSelectedText().length(); + } catch (Exception e) { + log("Can't send: nothing selected."); + return; + } + if (l > 0) { + SendToESP(SnippetText.getSelectedText()); + } + } + }// GEN-LAST:event_MenuItemEditSendSelectedActionPerformed + + private void MenuItemFileRemoveESPActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemFileRemoveESPActionPerformed + String ft = iFile.get(iTab).getName(); + if (ft.length() == 0) { + log("FileRemoveESP: FAIL. Can't remove file from ESP without name."); + JOptionPane.showMessageDialog(null, "Can't remove file from ESP without name."); + } + FileRemoveESP(ft); + }// GEN-LAST:event_MenuItemFileRemoveESPActionPerformed + + private void FileRemoveESP(String FileName) { + btnSend("file.remove(\"" + FileName + "\")"); + try { + Thread.sleep(200L); + } catch (Exception e) { + } + FileListReload.doClick(); + } + + private void MenuItemFileSaveESPActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemFileSaveESPActionPerformed + if (!FileSaveESP.isSelected()) { + FileSaveESP.doClick(); + } + }// GEN-LAST:event_MenuItemFileSaveESPActionPerformed + + private void NodeResetActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_NodeResetActionPerformed + cmdNodeRestart.doClick(); + }// GEN-LAST:event_NodeResetActionPerformed + + private void MenuItemLogCloseActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemLogCloseActionPerformed + MenuItemViewLog.doClick(); + }// GEN-LAST:event_MenuItemLogCloseActionPerformed + + private void MenuItemTerminalResetActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemTerminalResetActionPerformed + MenuItemESPReset.doClick(); + }// GEN-LAST:event_MenuItemTerminalResetActionPerformed + + private void DonateActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_DonateActionPerformed + goLink(donate_uri); + }// GEN-LAST:event_DonateActionPerformed + + private void MenuItemHelpAboutActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemHelpAboutActionPerformed + About.setLocationRelativeTo(null); + About.setVisible(true); + }// GEN-LAST:event_MenuItemHelpAboutActionPerformed + + private void AboutFocusLost(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_AboutFocusLost + About.dispose(); + }// GEN-LAST:event_AboutFocusLost + + private void HomePageActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_HomePageActionPerformed + goLink(homepage_uri); + }// GEN-LAST:event_HomePageActionPerformed + + private void CommandItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_CommandItemStateChanged + + }// GEN-LAST:event_CommandItemStateChanged + + private void PortItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_PortItemStateChanged + + }// GEN-LAST:event_PortItemStateChanged + + private void LoadSnippets() { + String suffix; + if (OptionNodeMCU.isSelected()) { + suffix = ""; + SnippetText.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_LUA); + } else { + suffix = "_mpy"; + SnippetText.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_PYTHON); + } + log("Snippets: loading..."); + for (int i = 0; i <= 15; i++) { + String n = Integer.toString(i).trim(); + if (prefs.get("Snippet" + n + suffix + "name", null) == null) { + prefs.put("Snippet" + n + suffix + "name", "Snippet" + n); + prefs.put("Snippet" + n + suffix, ""); + PrefsFlush(); + } + if (i == 0) { + ButtonSnippet0.setText(prefs.get("Snippet" + n + suffix + "name", "Snippet" + n)); + } else if (i == 1) { + ButtonSnippet1.setText(prefs.get("Snippet" + n + suffix + "name", "Snippet" + n)); + } else if (i == 2) { + ButtonSnippet2.setText(prefs.get("Snippet" + n + suffix + "name", "Snippet" + n)); + } else if (i == 3) { + ButtonSnippet3.setText(prefs.get("Snippet" + n + suffix + "name", "Snippet" + n)); + } else if (i == 4) { + ButtonSnippet4.setText(prefs.get("Snippet" + n + suffix + "name", "Snippet" + n)); + } else if (i == 5) { + ButtonSnippet5.setText(prefs.get("Snippet" + n + suffix + "name", "Snippet" + n)); + } else if (i == 6) { + ButtonSnippet6.setText(prefs.get("Snippet" + n + suffix + "name", "Snippet" + n)); + } else if (i == 7) { + ButtonSnippet7.setText(prefs.get("Snippet" + n + suffix + "name", "Snippet" + n)); + } else if (i == 8) { + ButtonSnippet8.setText(prefs.get("Snippet" + n + suffix + "name", "Snippet" + n)); + } else if (i == 9) { + ButtonSnippet9.setText(prefs.get("Snippet" + n + suffix + "name", "Snippet" + n)); + } else if (i == 10) { + ButtonSnippet10.setText(prefs.get("Snippet" + n + suffix + "name", "Snippet" + n)); + } else if (i == 11) { + ButtonSnippet11.setText(prefs.get("Snippet" + n + suffix + "name", "Snippet" + n)); + } else if (i == 12) { + ButtonSnippet12.setText(prefs.get("Snippet" + n + suffix + "name", "Snippet" + n)); + } else if (i == 13) { + ButtonSnippet13.setText(prefs.get("Snippet" + n + suffix + "name", "Snippet" + n)); + } else if (i == 14) { + ButtonSnippet14.setText(prefs.get("Snippet" + n + suffix + "name", "Snippet" + n)); + } else { + ButtonSnippet15.setText(prefs.get("Snippet" + n + suffix + "name", "Snippet" + n)); + } + Snippets[i] = prefs.get("Snippet" + n + suffix, ""); + if (i == 0 && OptionMicroPython.isSelected()) { + if (Snippets[i].isEmpty()) { + ButtonSnippet0.setText("GPIO2 1"); + prefs.put("Snippet" + i + suffix + "name", "GPIO2 1"); + Snippets[i] = "import pyb\r\n" + "pin = pyb.Pin(2, pyb.Pin.OUT)\r\n" + "pin.value(1)"; + } + } + if (i == 1 && OptionMicroPython.isSelected()) { + if (Snippets[i].isEmpty()) { + ButtonSnippet1.setText("GPIO2 0"); + prefs.put("Snippet" + i + suffix + "name", "GPIO2 0"); + Snippets[i] = "import pyb\r\n" + "pin = pyb.Pin(2, pyb.Pin.OUT)\r\n" + "pin.value(0)"; + } + } + } + SetSnippetEditButtonsTooltip(); + log("Snippets load: Success."); + } + + private void SnippetEdit(int n) { + if (SnippetText.canUndo() || SnippetText.canRedo()) { + this.setAlwaysOnTop(false); + int returnVal = JOptionPane.showConfirmDialog(null, + "Discard any changes and load Snippet" + Integer.toString(n), "Attention", + JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE); + this.setAlwaysOnTop(AlwaysOnTop.isSelected()); + if (returnVal != JOptionPane.YES_OPTION) { + return; + } + } + SnippetText.setEnabled(true); + iSnippets = n; + SnippetName.setEnabled(true); + SnippetSave.setEnabled(true); + SnippetRun.setEnabled(true); + SnippetCancelEdit.setEnabled(true); + SnippetText.setEnabled(true); + SnippetScrollPane.setEnabled(true); + SnippetText.setEditable(true); + SnippetText.setText(Snippets[iSnippets]); + // SnippetText.setBackground(themeTextBackground); + SnippetText.discardAllEdits(); + String suffix; + if (OptionNodeMCU.isSelected()) { + suffix = ""; + } else { + suffix = "_mpy"; + } + String snippetName = prefs.get("Snippet" + n + suffix + "name", "Snippet" + n); + log("Snippet name set to:" + snippetName); + SnippetName.setText(snippetName); + } + + private void ButtonSnippet0ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonSnippet0ActionPerformed + DoSnippet(0); + }// GEN-LAST:event_ButtonSnippet0ActionPerformed + + private void ButtonSnippet1ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonSnippet1ActionPerformed + DoSnippet(1); + }// GEN-LAST:event_ButtonSnippet1ActionPerformed + + private void ButtonSnippet2ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonSnippet2ActionPerformed + DoSnippet(2); + }// GEN-LAST:event_ButtonSnippet2ActionPerformed + + private void ButtonSnippet3ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonSnippet3ActionPerformed + DoSnippet(3); + }// GEN-LAST:event_ButtonSnippet3ActionPerformed + + private void ButtonSnippet4ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonSnippet4ActionPerformed + DoSnippet(4); + }// GEN-LAST:event_ButtonSnippet4ActionPerformed + + private void ButtonSnippet5ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonSnippet5ActionPerformed + DoSnippet(5); + }// GEN-LAST:event_ButtonSnippet5ActionPerformed + + private void ButtonSnippet6ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonSnippet6ActionPerformed + DoSnippet(6); + }// GEN-LAST:event_ButtonSnippet6ActionPerformed + + private void ButtonSnippet7ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonSnippet7ActionPerformed + DoSnippet(7); + }// GEN-LAST:event_ButtonSnippet7ActionPerformed + + private void ButtonSnippet8ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonSnippet8ActionPerformed + DoSnippet(8); + }// GEN-LAST:event_ButtonSnippet8ActionPerformed + + private void ButtonSnippet9ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonSnippet9ActionPerformed + DoSnippet(9); + }// GEN-LAST:event_ButtonSnippet9ActionPerformed + + private void ButtonSnippet10ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonSnippet10ActionPerformed + DoSnippet(10); + }// GEN-LAST:event_ButtonSnippet10ActionPerformed + + private void ButtonSnippet11ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonSnippet11ActionPerformed + DoSnippet(11); + }// GEN-LAST:event_ButtonSnippet11ActionPerformed + + private void ButtonSnippet12ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonSnippet12ActionPerformed + DoSnippet(12); + }// GEN-LAST:event_ButtonSnippet12ActionPerformed + + private void ButtonSnippet13ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonSnippet13ActionPerformed + DoSnippet(13); + }// GEN-LAST:event_ButtonSnippet13ActionPerformed + + private void ButtonSnippet14ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonSnippet14ActionPerformed + DoSnippet(14); + }// GEN-LAST:event_ButtonSnippet14ActionPerformed + + private void ButtonSnippet15ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonSnippet15ActionPerformed + DoSnippet(15); + }// GEN-LAST:event_ButtonSnippet15ActionPerformed + + private void MenuItemEditSendLineActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemEditSendLineActionPerformed + int nLine; + if ((LeftTab.getSelectedIndex() == 0) && (TextTab.getSelectedIndex() == 0)) { // NodeMCU and Scripts + nLine = TextEditor1.get(iTab).getCaretLineNumber(); + String cmd = TextEditor1.get(iTab).getText().split("\r?\n")[nLine]; + btnSend(cmd); + } else if ((LeftTab.getSelectedIndex() == 0) && (TextTab.getSelectedIndex() == 2)) { // NodeMCU and Snippets + nLine = SnippetText.getCaretLineNumber(); + String cmd = SnippetText.getText().split("\r?\n")[nLine]; + btnSend(cmd); + } + }// GEN-LAST:event_MenuItemEditSendLineActionPerformed + + private void MenuItemFileSendESPActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemFileSendESPActionPerformed + FileSendESP.doClick(); + }// GEN-LAST:event_MenuItemFileSendESPActionPerformed + + private void MenuItemEditorSendLineActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemEditorSendLineActionPerformed + MenuItemEditSendLine.doClick(); + }// GEN-LAST:event_MenuItemEditorSendLineActionPerformed + + private void MenuFileActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuFileActionPerformed + + }// GEN-LAST:event_MenuFileActionPerformed + + private void MenuItemFileDoActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemFileDoActionPerformed + FileDo.doClick(); + }// GEN-LAST:event_MenuItemFileDoActionPerformed + + private void MenuItemTerminalFontDecActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemTerminalFontDecActionPerformed + MenuItemViewTermFontDec.doClick(); + }// GEN-LAST:event_MenuItemTerminalFontDecActionPerformed + + private void MenuItemTerminalFontIncActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemTerminalFontIncActionPerformed + MenuItemViewTermFontInc.doClick(); + }// GEN-LAST:event_MenuItemTerminalFontIncActionPerformed + + private void MenuItemViewTermFontIncActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemViewTermFontIncActionPerformed + int size = Terminal.getFont().getSize(); + if (size < TERMINAL_FONT_SIZE_MAX) { + Terminal.setFont(Terminal.getFont().deriveFont(Terminal.getFont().getSize() + 1f)); + } else { + Terminal.setFont(Terminal.getFont().deriveFont(TERMINAL_FONT_SIZE_MAX)); + } + prefs.putFloat(TERMINAL_FONT_SIZE, Terminal.getFont().getSize()); + PrefsFlush(); + }// GEN-LAST:event_MenuItemViewTermFontIncActionPerformed + + private void MenuItemViewTermFontDecActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemViewTermFontDecActionPerformed + int size = Terminal.getFont().getSize(); + if (size > TERMINAL_FONT_SIZE_MIN) { + Terminal.setFont(Terminal.getFont().deriveFont(Terminal.getFont().getSize() - 1f)); + } else { + Terminal.setFont(Terminal.getFont().deriveFont(TERMINAL_FONT_SIZE_MIN)); + } + prefs.putFloat(TERMINAL_FONT_SIZE, Terminal.getFont().getSize()); + PrefsFlush(); + }// GEN-LAST:event_MenuItemViewTermFontDecActionPerformed + + private void MenuItemViewEditorFontIncActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemViewEditorFontIncActionPerformed + int size = TextEditor1.get(iTab).getFont().getSize(); + if (size < EDITOR_FONT_SIZE_MAX) { + TextEditor1.get(iTab).setFont( + TextEditor1.get(iTab).getFont().deriveFont(TextEditor1.get(iTab).getFont().getSize() + 1f)); + } else { + TextEditor1.get(iTab).setFont(TextEditor1.get(iTab).getFont().deriveFont(EDITOR_FONT_SIZE_MAX)); + } + prefs.putFloat(EDITOR_FONT_SIZE, TextEditor1.get(iTab).getFont().getSize()); + PrefsFlush(); + SetTheme(prefs.getInt(COLOR_THEME, 0), true); // for all + }// GEN-LAST:event_MenuItemViewEditorFontIncActionPerformed + + private void MenuItemViewEditorFontDecActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemViewEditorFontDecActionPerformed + int size = TextEditor1.get(iTab).getFont().getSize(); + if (size > EDITOR_FONT_SIZE_MIN) { + TextEditor1.get(iTab).setFont( + TextEditor1.get(iTab).getFont().deriveFont(TextEditor1.get(iTab).getFont().getSize() - 1f)); + } else { + TextEditor1.get(iTab).setFont(TextEditor1.get(iTab).getFont().deriveFont(EDITOR_FONT_SIZE_MIN)); + } + prefs.putFloat(EDITOR_FONT_SIZE, TextEditor1.get(iTab).getFont().getSize()); + PrefsFlush(); + SetTheme(prefs.getInt(COLOR_THEME, 0), true); // for all + }// GEN-LAST:event_MenuItemViewEditorFontDecActionPerformed + + private void MenuItemViewFontDefaultActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemViewFontDefaultActionPerformed + prefs.putFloat(TERMINAL_FONT_SIZE, TERMINAL_FONT_SIZE_DEFAULT); + prefs.putFloat(EDITOR_FONT_SIZE, EDITOR_FONT_SIZE_DEFAULT); + prefs.putFloat(LOG_FONT_SIZE, LOG_FONT_SIZE_DEFAULT); + PrefsFlush(); + SetTheme(prefs.getInt(COLOR_THEME, 0), true); // for all + Terminal.setFont(Terminal.getFont().deriveFont(TERMINAL_FONT_SIZE_DEFAULT)); + Log.setFont(Log.getFont().deriveFont(LOG_FONT_SIZE_DEFAULT)); + }// GEN-LAST:event_MenuItemViewFontDefaultActionPerformed + + private void MenuItemEditorFontIncActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemEditorFontIncActionPerformed + MenuItemViewEditorFontInc.doClick(); + }// GEN-LAST:event_MenuItemEditorFontIncActionPerformed + + private void MenuItemEditorFontDecActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemEditorFontDecActionPerformed + MenuItemViewEditorFontDec.doClick(); + }// GEN-LAST:event_MenuItemEditorFontDecActionPerformed + + private void MenuItemViewLogFontIncActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemViewLogFontIncActionPerformed + int size = Log.getFont().getSize(); + if (size < LOG_FONT_SIZE_MAX) { + Log.setFont(Log.getFont().deriveFont(Log.getFont().getSize() + 1f)); + } else { + Log.setFont(Log.getFont().deriveFont(LOG_FONT_SIZE_MAX)); + } + prefs.putFloat(LOG_FONT_SIZE, Log.getFont().getSize()); + PrefsFlush(); + }// GEN-LAST:event_MenuItemViewLogFontIncActionPerformed + + private void MenuItemViewLogFontDecActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemViewLogFontDecActionPerformed + int size = Log.getFont().getSize(); + if (size > LOG_FONT_SIZE_MIN) { + Log.setFont(Log.getFont().deriveFont(Log.getFont().getSize() - 1f)); + } else { + Log.setFont(Log.getFont().deriveFont(LOG_FONT_SIZE_MIN)); + } + prefs.putFloat(LOG_FONT_SIZE, Log.getFont().getSize()); + PrefsFlush(); + }// GEN-LAST:event_MenuItemViewLogFontDecActionPerformed + + private void MenuItemLogFontIncActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemLogFontIncActionPerformed + MenuItemViewLogFontInc.doClick(); + }// GEN-LAST:event_MenuItemLogFontIncActionPerformed + + private void MenuItemLogFontDecActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemLogFontDecActionPerformed + MenuItemViewLogFontDec.doClick(); + }// GEN-LAST:event_MenuItemLogFontDecActionPerformed + + private void SpeedItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_SpeedItemStateChanged + nSpeed = Integer.parseInt((String) Speed.getSelectedItem()); + + }// GEN-LAST:event_SpeedItemStateChanged + + private void LogCaretUpdate(javax.swing.event.CaretEvent evt) {// GEN-FIRST:event_LogCaretUpdate + }// GEN-LAST:event_LogCaretUpdate + + private void MenuItemESPResetActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemESPResetActionPerformed + if (LeftTab.getSelectedIndex() == 0) { // NodeMCU TAB + cmdNodeRestart.doClick(); + } else if (LeftTab.getSelectedIndex() == 1) { // AT TAB + AT_Restart.doClick(); + } + }// GEN-LAST:event_MenuItemESPResetActionPerformed + + private void MenuItemESPFormatActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemESPFormatActionPerformed + if (LeftTab.getSelectedIndex() == 0) { // NodeMCU TAB + int isFormat = Dialog("Format ESP flash data area and remove ALL files. Are you sure?", + JOptionPane.YES_NO_OPTION); + if (isFormat == JOptionPane.YES_OPTION) { + btnSend("file.format()"); + } + } + }// GEN-LAST:event_MenuItemESPFormatActionPerformed + + private void MenuItemTerminalFormatActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemTerminalFormatActionPerformed + MenuItemESPFormat.doClick(); + }// GEN-LAST:event_MenuItemTerminalFormatActionPerformed + + private void MenuItemLinksNodeMCUdocActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemLinksNodeMCUdocActionPerformed + goLink(api_en_uri); + }// GEN-LAST:event_MenuItemLinksNodeMCUdocActionPerformed + + private void MenuItemLinksMicroPythonDocActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemLinksMicroPythonDocActionPerformed + goLink(micropython_doc); + }// GEN-LAST:event_MenuItemLinksMicroPythonDocActionPerformed + + private void MenuItemESPFileDoActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemESPFileDoActionPerformed + + }// GEN-LAST:event_MenuItemESPFileDoActionPerformed + + private void MenuItemESPFileDeleteActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemESPFileDeleteActionPerformed + // TODO add your handling code here: + }// GEN-LAST:event_MenuItemESPFileDeleteActionPerformed + + private void ContextMenuESPFileLUAPopupMenuWillBecomeVisible(javax.swing.event.PopupMenuEvent evt) {// GEN-FIRST:event_ContextMenuESPFileLUAPopupMenuWillBecomeVisible + + }// GEN-LAST:event_ContextMenuESPFileLUAPopupMenuWillBecomeVisible + + private void TerminalPropertyChange(java.beans.PropertyChangeEvent evt) {// GEN-FIRST:event_TerminalPropertyChange + + }// GEN-LAST:event_TerminalPropertyChange + + private void RightFilesSplitPanePropertyChange(java.beans.PropertyChangeEvent evt) {// GEN-FIRST:event_RightFilesSplitPanePropertyChange + if ("dividerLocation".equals(evt.getPropertyName()) && MenuItemViewFileManager.isSelected()) { + prefs.putInt(FM_DIV, RightFilesSplitPane.getDividerLocation()); + } + }// GEN-LAST:event_RightFilesSplitPanePropertyChange + + private void RightBigPanePropertyChange(java.beans.PropertyChangeEvent evt) {// GEN-FIRST:event_RightBigPanePropertyChange + + }// GEN-LAST:event_RightBigPanePropertyChange + + private void formPropertyChange(java.beans.PropertyChangeEvent evt) {// GEN-FIRST:event_formPropertyChange + // log(evt.getPropertyName()); + }// GEN-LAST:event_formPropertyChange + + private void formComponentResized(java.awt.event.ComponentEvent evt) {// GEN-FIRST:event_formComponentResized + isFileManagerShow(); + }// GEN-LAST:event_formComponentResized + + private void FileListReloadActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_FileListReloadActionPerformed + NodeListFiles(); + }// GEN-LAST:event_FileListReloadActionPerformed + + private void FileAsButton1ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_FileAsButton1ActionPerformed + String fn = evt.getActionCommand(); + if (fn.endsWith(".lua") || fn.endsWith(".lc")) { + String cmd = "dofile(\"" + fn + "\")"; + btnSend(cmd); + } else if (fn.endsWith(".bin") || fn.endsWith(".dat")) { + HexDump(fn); + } else { + ViewFile(fn); + } + }// GEN-LAST:event_FileAsButton1ActionPerformed + + private void FileAsButton1MouseClicked(java.awt.event.MouseEvent evt) {// GEN-FIRST:event_FileAsButton1MouseClicked + + }// GEN-LAST:event_FileAsButton1MouseClicked + + private void NodeInfoActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_NodeInfoActionPerformed + btnSend("=node.info()"); + }// GEN-LAST:event_NodeInfoActionPerformed + + private void NodeChipIDActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_NodeChipIDActionPerformed + btnSend("=node.chipid()"); + }// GEN-LAST:event_NodeChipIDActionPerformed + + private void NodeFlashIDActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_NodeFlashIDActionPerformed + btnSend("=node.flashid()"); + }// GEN-LAST:event_NodeFlashIDActionPerformed + + private void NodeHeapActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_NodeHeapActionPerformed + btnSend("=node.heap()"); + }// GEN-LAST:event_NodeHeapActionPerformed + + private void FileFormatActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_FileFormatActionPerformed + MenuItemESPFormat.doClick(); + }// GEN-LAST:event_FileFormatActionPerformed + + private void MenuItemViewSnippetsActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemViewSnippetsActionPerformed + prefs.putBoolean(SHOW_SNIP_RIGHT, MenuItemViewSnippets.isSelected()); + isRightSnippetsShow(); + }// GEN-LAST:event_MenuItemViewSnippetsActionPerformed + + private void MenuItemViewFileManagerActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemViewFileManagerActionPerformed + prefs.putBoolean(SHOW_FM_RIGHT, MenuItemViewFileManager.isSelected()); + isFileManagerShow(); + }// GEN-LAST:event_MenuItemViewFileManagerActionPerformed + + private void MenuItemViewRightExtraActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemViewRightExtraActionPerformed + RightExtraButtons.setVisible(MenuItemViewRightExtra.isSelected()); + prefs.putBoolean(SHOW_EXTRA_RIGHT, MenuItemViewRightExtra.isSelected()); + }// GEN-LAST:event_MenuItemViewRightExtraActionPerformed + + private void MenuItemFileSaveAsActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemFileSaveAsActionPerformed + // TODO add your handling code here: + }// GEN-LAST:event_MenuItemFileSaveAsActionPerformed + + private void MenuItemViewToolbarActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemViewToolbarActionPerformed + prefs.putBoolean(SHOW_TOOLBAR, MenuItemViewToolbar.isSelected()); + isToolbarShow(); + }// GEN-LAST:event_MenuItemViewToolbarActionPerformed + + private void MenuItemViewLeftExtraActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemViewLeftExtraActionPerformed + prefs.putBoolean(SHOW_EXTRA_LEFT, MenuItemViewLeftExtra.isSelected()); + isLeftExtraShow(); + }// GEN-LAST:event_MenuItemViewLeftExtraActionPerformed + + private void MenuViewActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuViewActionPerformed + + }// GEN-LAST:event_MenuViewActionPerformed + + private void RightSplitPanePropertyChange(java.beans.PropertyChangeEvent evt) {// GEN-FIRST:event_RightSplitPanePropertyChange + if ("dividerLocation".equals(evt.getPropertyName()) && MenuItemViewLog.isSelected()) { + prefs.putInt(LOG_DIV, RightSplitPane.getDividerLocation()); + } + }// GEN-LAST:event_RightSplitPanePropertyChange + + private void AutoScrollActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_AutoScrollActionPerformed + prefs.putBoolean(AUTO_SCROLL, AutoScroll.isSelected()); + }// GEN-LAST:event_AutoScrollActionPerformed + + private void PortDTRActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_PortDTRActionPerformed + prefs.putBoolean(PORT_DTR, PortDTR.isSelected()); + try { + serialPort.setDTR(PortDTR.isSelected()); + if (PortDTR.isSelected()) { + log("DTR set to ON"); + } else { + log("DTR set to OFF"); + } + } catch (Exception e) { + PortDTR.setSelected(false); + log(e.toString()); + log("Can't change DTR state"); + } + UpdateLED(); + }// GEN-LAST:event_PortDTRActionPerformed + + private void PortRTSActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_PortRTSActionPerformed + prefs.putBoolean(PORT_RTS, PortRTS.isSelected()); + try { + serialPort.setRTS(PortRTS.isSelected()); + if (PortRTS.isSelected()) { + log("RTS set to ON"); + } else { + log("RTS set to OFF"); + } + } catch (Exception e) { + PortRTS.setSelected(false); + log(e.toString()); + log("Can't change RTS state"); + } + UpdateLED(); + }// GEN-LAST:event_PortRTSActionPerformed + + private void MenuItemViewToolbarItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_MenuItemViewToolbarItemStateChanged + prefs.putBoolean(SHOW_TOOLBAR, MenuItemViewToolbar.isSelected()); + isToolbarShow(); + }// GEN-LAST:event_MenuItemViewToolbarItemStateChanged + + private void MenuItemViewLeftExtraItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_MenuItemViewLeftExtraItemStateChanged + prefs.putBoolean(SHOW_EXTRA_LEFT, MenuItemViewLeftExtra.isSelected()); + isLeftExtraShow(); + }// GEN-LAST:event_MenuItemViewLeftExtraItemStateChanged + + private void MenuItemViewSnippetsItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_MenuItemViewSnippetsItemStateChanged + prefs.putBoolean(SHOW_SNIP_RIGHT, MenuItemViewSnippets.isSelected()); + isRightSnippetsShow(); + }// GEN-LAST:event_MenuItemViewSnippetsItemStateChanged + + private void MenuItemViewFileManagerItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_MenuItemViewFileManagerItemStateChanged + prefs.putBoolean(SHOW_FM_RIGHT, MenuItemViewFileManager.isSelected()); + ShowFileManager.setSelected(MenuItemViewFileManager.isSelected()); + isFileManagerShow(); + }// GEN-LAST:event_MenuItemViewFileManagerItemStateChanged + + private void MenuItemViewRightExtraItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_MenuItemViewRightExtraItemStateChanged + RightExtraButtons.setVisible(MenuItemViewRightExtra.isSelected()); + prefs.putBoolean(SHOW_EXTRA_RIGHT, MenuItemViewRightExtra.isSelected()); + }// GEN-LAST:event_MenuItemViewRightExtraItemStateChanged + + private void MenuItemViewLogItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_MenuItemViewLogItemStateChanged + isLogShow(); + prefs.putBoolean(SHOW_LOG, MenuItemViewLog.isSelected()); + }// GEN-LAST:event_MenuItemViewLogItemStateChanged + + private void FileSystemInfoActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_FileSystemInfoActionPerformed + NodeFileSystemInfo(); + }// GEN-LAST:event_FileSystemInfoActionPerformed + + private void FileRenameActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_FileRenameActionPerformed + btnSend("file.rename(\"" + FileRenameLabel.getText() + "\",\"" + FileRename.getText().trim() + "\")"); + try { + Thread.sleep(200L); + } catch (Exception e) { + } + FileListReload.doClick(); + }// GEN-LAST:event_FileRenameActionPerformed + + private void MenuItemViewDonateItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_MenuItemViewDonateItemStateChanged + DonateSmall.setVisible(!MenuItemViewDonate.isSelected()); + prefs.putBoolean(SHOW_DONATE, MenuItemViewDonate.isSelected()); + }// GEN-LAST:event_MenuItemViewDonateItemStateChanged + + private void MenuItemViewDonateActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemViewDonateActionPerformed + // nothing + }// GEN-LAST:event_MenuItemViewDonateActionPerformed + + private void DonateSmallActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_DonateSmallActionPerformed + goLink(donate_uri); + }// GEN-LAST:event_DonateSmallActionPerformed + + private void MenuItemLinksBuyDevBoardActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemLinksBuyDevBoardActionPerformed + goLink(buy_nodeMCU); + }// GEN-LAST:event_MenuItemLinksBuyDevBoardActionPerformed + + private void MenuItemLinksBuyESP8266ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemLinksBuyESP8266ActionPerformed + goLink(buy_esp8266); + }// GEN-LAST:event_MenuItemLinksBuyESP8266ActionPerformed + + private void MenuItemLinksBuyESD12ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemLinksBuyESD12ActionPerformed + goLink(buy_esd12); + }// GEN-LAST:event_MenuItemLinksBuyESD12ActionPerformed + + private void MenuItemLinksMainForumEnActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemLinksMainForumEnActionPerformed + goLink(esp8266com_uri); + }// GEN-LAST:event_MenuItemLinksMainForumEnActionPerformed + + private void MenuItemLinksMainForumRuActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemLinksMainForumRuActionPerformed + goLink(esp8266ru_uri); + }// GEN-LAST:event_MenuItemLinksMainForumRuActionPerformed + + private void MenuItemLinksMainLatestActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemLinksMainLatestActionPerformed + goLink(Main_latest); + }// GEN-LAST:event_MenuItemLinksMainLatestActionPerformed + + private void MenuItemLinksMainSourceActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemLinksMainSourceActionPerformed + goLink(Main_source); + }// GEN-LAST:event_MenuItemLinksMainSourceActionPerformed + + private void MenuItemLinksMainHomeActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemLinksMainHomeActionPerformed + goLink(homepage_uri); + }// GEN-LAST:event_MenuItemLinksMainHomeActionPerformed + + private void MenuItemLinksDonateActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemLinksDonateActionPerformed + goLink(donate_uri); + }// GEN-LAST:event_MenuItemLinksDonateActionPerformed + + private void MenuItemLinksBuyOtherActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemLinksBuyOtherActionPerformed + goLink(buy_other); + }// GEN-LAST:event_MenuItemLinksBuyOtherActionPerformed + + private void formWindowGainedFocus(java.awt.event.WindowEvent evt) {// GEN-FIRST:event_formWindowGainedFocus + + }// GEN-LAST:event_formWindowGainedFocus + + private void formWindowClosing(java.awt.event.WindowEvent evt) {// GEN-FIRST:event_formWindowClosing + AppClose(); + }// GEN-LAST:event_formWindowClosing + + private void AppClose() { + Rectangle r = this.getBounds(); + prefs.putInt(WIN_X, r.x); + prefs.putInt(WIN_Y, r.y); + prefs.putInt(WIN_H, r.height); + prefs.putInt(WIN_W, r.width); + // log("w="+Integer.toString(prefs.getInt(WIN_W, 0))); + while (FilesTabbedPane.getTabCount() > 0) { + if (CloseFile() == JOptionPane.CANCEL_OPTION) { + return; + } + if ((FilesTabbedPane.getTabCount() == 1) && isFileNew()) { + break; + } + } + this.setVisible(false); + System.exit(0); + } + + private void formWindowClosed(java.awt.event.WindowEvent evt) {// GEN-FIRST:event_formWindowClosed + // TODO add your handling code here: + }// GEN-LAST:event_formWindowClosed + + private void EOLItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_EOLItemStateChanged + Terminal.setEOLMarkersVisible(EOL.isSelected()); + }// GEN-LAST:event_EOLItemStateChanged + + private void MenuItemViewLF1ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemViewLF1ActionPerformed + String lclass = LAFclass.get(Integer.parseInt(evt.getActionCommand())); + prefs.put("LAF", lclass); + log("Set New LookAndFeel to:" + lclass); + int isExit = Dialog("New LookAndFeel skin will be appled after program restart. Exit now?", + JOptionPane.YES_NO_OPTION); + if (isExit == JOptionPane.YES_OPTION) { + AppClose(); + } + }// GEN-LAST:event_MenuItemViewLF1ActionPerformed + + private void MenuItemViewTerminalOnlyItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_MenuItemViewTerminalOnlyItemStateChanged + if (MenuItemViewTerminalOnly.isSelected()) { + MenuItemViewEditorOnly.setSelected(false); + TerminalOnlyCheckBox.setSelected(true); + EditorOnlyCheckBox.setSelected(false); + HorizontSplit.setDividerLocation(0); + } else { + TerminalOnlyCheckBox.setSelected(false); + HorizontSplit.setDividerLocation(550); + } + }// GEN-LAST:event_MenuItemViewTerminalOnlyItemStateChanged + + private void MenuItemViewTerminalOnlyActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemViewTerminalOnlyActionPerformed + // TODO add your handling code here: + }// GEN-LAST:event_MenuItemViewTerminalOnlyActionPerformed + + private void TerminalOnlyCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_TerminalOnlyCheckBoxItemStateChanged + MenuItemViewTerminalOnly.setSelected(TerminalOnlyCheckBox.isSelected()); + }// GEN-LAST:event_TerminalOnlyCheckBoxItemStateChanged + + private void ShowFileManagerItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_ShowFileManagerItemStateChanged + MenuItemViewFileManager.setSelected(ShowFileManager.isSelected()); + }// GEN-LAST:event_ShowFileManagerItemStateChanged + + private void AboutWindowLostFocus(java.awt.event.WindowEvent evt) {// GEN-FIRST:event_AboutWindowLostFocus + About.dispose(); + }// GEN-LAST:event_AboutWindowLostFocus + + private void LeftTabStateChanged(javax.swing.event.ChangeEvent evt) {// GEN-FIRST:event_LeftTabStateChanged + if (LeftTab.getSelectedIndex() == 0) { // NodeMCU & Python + if (FirmwareType == FIRMWARE_MPYTHON || OptionMicroPython.isSelected()) { + CommandsSetMicroPython(); + } else { + CommandsSetNodeMCU(); + } + } else if (LeftTab.getSelectedIndex() == 1) { // AT + FirmwareType = FIRMWARE_AT; + CommandsSetAT(); + } else if (LeftTab.getSelectedIndex() == 2) { // RN2483 + if (pOpen && nSpeed != 57600) { + TerminalAdd("\r\nWarning! RN2483 default baud rate is 57600.\r\n"); + } + } + }// GEN-LAST:event_LeftTabStateChanged + + private void cmdSetCWDHCPActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSetCWDHCPActionPerformed + btnSend("AT+CWDHCP=" + Integer.toString(DHCPmode.getSelectedIndex()) + "," + + Integer.toString(DHCP.getSelectedIndex())); + }// GEN-LAST:event_cmdSetCWDHCPActionPerformed + + private void cmdSetCWMODE3ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSetCWMODE3ActionPerformed + btnSend("AT+CWMODE=3"); + }// GEN-LAST:event_cmdSetCWMODE3ActionPerformed + + private void cmdSetCWLAPActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSetCWLAPActionPerformed + btnSend("AT+CWLAP"); + }// GEN-LAST:event_cmdSetCWLAPActionPerformed + + private void cmdSetCWMODE2ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSetCWMODE2ActionPerformed + btnSend("AT+CWMODE=2"); + }// GEN-LAST:event_cmdSetCWMODE2ActionPerformed + + private void cmdGetCWMODEActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdGetCWMODEActionPerformed + btnSend("AT+CWMODE?"); + }// GEN-LAST:event_cmdGetCWMODEActionPerformed + + private void cmdSetCWMODE1ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSetCWMODE1ActionPerformed + btnSend("AT+CWMODE=1"); + }// GEN-LAST:event_cmdSetCWMODE1ActionPerformed + + private void cmdGetHelpCWMODEActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdGetHelpCWMODEActionPerformed + btnSend("AT+CWMODE=?"); + }// GEN-LAST:event_cmdGetHelpCWMODEActionPerformed + + private void cmdGetCIFSRActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdGetCIFSRActionPerformed + btnSend("AT+CIFSR"); + }// GEN-LAST:event_cmdGetCIFSRActionPerformed + + private void cmdSetCIPMUX0ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSetCIPMUX0ActionPerformed + btnSend("AT+CIPMUX=0"); + }// GEN-LAST:event_cmdSetCIPMUX0ActionPerformed + + private void cmdSetCIPMUX1ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSetCIPMUX1ActionPerformed + btnSend("AT+CIPMUX=1"); + }// GEN-LAST:event_cmdSetCIPMUX1ActionPerformed + + private void cmdGetCIPMUXActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdGetCIPMUXActionPerformed + btnSend("AT+CIPMUX?"); + }// GEN-LAST:event_cmdGetCIPMUXActionPerformed + + private void cmdGetCIPSTATUSActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdGetCIPSTATUSActionPerformed + btnSend("AT+CIPSTATUS"); + }// GEN-LAST:event_cmdGetCIPSTATUSActionPerformed + + private void AT_ServerComponentShown(java.awt.event.ComponentEvent evt) {// GEN-FIRST:event_AT_ServerComponentShown + WiFi_common.setVisible(false); + TCP_common.setVisible(true); + }// GEN-LAST:event_AT_ServerComponentShown + + private void AT_ServerFocusGained(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_AT_ServerFocusGained + + }// GEN-LAST:event_AT_ServerFocusGained + + private void cmdSetCIPSTOActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSetCIPSTOActionPerformed + btnSend("AT+CIPSTO=" + ServerTimeout.getText().trim()); + }// GEN-LAST:event_cmdSetCIPSTOActionPerformed + + private void cmdGetCIPSTOActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdGetCIPSTOActionPerformed + btnSend("AT+CIPSTO?"); + }// GEN-LAST:event_cmdGetCIPSTOActionPerformed + + private void ServerModeActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ServerModeActionPerformed + if (ServerMode.getSelectedIndex() == 1) { // create + ServerPort.setEnabled(true); + } else { + ServerPort.setEnabled(false); + } + }// GEN-LAST:event_ServerModeActionPerformed + + private void cmdSetCIPSERVERActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSetCIPSERVERActionPerformed + String cmd = "AT+CIPSERVER="; + cmd += Integer.toString(ServerMode.getSelectedIndex()).trim(); + if (ServerMode.getSelectedIndex() == 1) { + cmd += "," + ServerPort.getText().trim(); + } + btnSend(cmd); + }// GEN-LAST:event_cmdSetCIPSERVERActionPerformed + + private void cmdSetCIPMODE1ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSetCIPMODE1ActionPerformed + btnSend("AT+CIPMODE=1"); + }// GEN-LAST:event_cmdSetCIPMODE1ActionPerformed + + private void cmdSetCIPMODE0ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSetCIPMODE0ActionPerformed + btnSend("AT+CIPMODE=0"); + }// GEN-LAST:event_cmdSetCIPMODE0ActionPerformed + + private void cmdGetCIPMODEActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdGetCIPMODEActionPerformed + btnSend("AT+CIPMODE?"); + }// GEN-LAST:event_cmdGetCIPMODEActionPerformed + + private void AT_ClientComponentShown(java.awt.event.ComponentEvent evt) {// GEN-FIRST:event_AT_ClientComponentShown + WiFi_common.setVisible(false); + TCP_common.setVisible(true); + }// GEN-LAST:event_AT_ClientComponentShown + + private void AT_ClientFocusGained(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_AT_ClientFocusGained + + }// GEN-LAST:event_AT_ClientFocusGained + + private void cmdSetCIPCLOSEActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSetCIPCLOSEActionPerformed + String cmd = "AT+CIPCLOSE"; + if (multi.isSelected()) { + cmd += "=" + conn_id.getSelectedItem().toString(); + } + btnSend(cmd); + }// GEN-LAST:event_cmdSetCIPCLOSEActionPerformed + + private void cmdCIPSENDinteractiveActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdCIPSENDinteractiveActionPerformed + btnSend("AT+CIPSEND"); + }// GEN-LAST:event_cmdCIPSENDinteractiveActionPerformed + + private void cmdCIPSENDActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdCIPSENDActionPerformed + String cmd = "AT+CIPSEND="; + String len = Integer.toString(data.getText().length()); + if (multi.isSelected()) { + cmd += conn_id.getSelectedItem().toString() + ","; + } + cmd += len; + btnSend(cmd); + btnSend(data.getText()); + }// GEN-LAST:event_cmdCIPSENDActionPerformed + + private void cmdSetCIPSTARTActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSetCIPSTARTActionPerformed + String cmd = "AT+CIPSTART="; + if (multi.isSelected()) { + cmd += conn_id.getSelectedItem().toString() + ","; + btnSend("AT+CIPMUX=1"); + } else { + btnSend("AT+CIPMUX=0"); + } + if (protocol.getSelectedIndex() == 0) { // TCP + cmd += "\"TCP\",\""; + } else { + cmd += "\"UDP\",\""; + } + cmd += remote_address.getText().trim() + "\"," + remote_port.getText().trim(); + if ((udp_local_port.getText().trim() != "") && (protocol.getSelectedIndex() == 1)) { + cmd += "," + udp_local_port.getText().trim() + "," + udp_mode.getText().trim(); + } + btnSend(cmd); + }// GEN-LAST:event_cmdSetCIPSTARTActionPerformed + + private void protocolItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_protocolItemStateChanged + if (protocol.getSelectedIndex() == 0) { // TCP + udp_local_port.setEnabled(false); + udp_mode.setEnabled(false); + } else { + udp_local_port.setEnabled(true); + udp_mode.setEnabled(true); + } + + }// GEN-LAST:event_protocolItemStateChanged + + private void UDPPropertyChange(java.beans.PropertyChangeEvent evt) {// GEN-FIRST:event_UDPPropertyChange + + }// GEN-LAST:event_UDPPropertyChange + + private void cmdGetCIPSTARTActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdGetCIPSTARTActionPerformed + btnSend("AT+CIPSTART=?"); + }// GEN-LAST:event_cmdGetCIPSTARTActionPerformed + + private void multiActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_multiActionPerformed + // TODO add your handling code here: + }// GEN-LAST:event_multiActionPerformed + + private void multiItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_multiItemStateChanged + + }// GEN-LAST:event_multiItemStateChanged + + private void singleItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_singleItemStateChanged + + }// GEN-LAST:event_singleItemStateChanged + + private void AT_SoftAPComponentShown(java.awt.event.ComponentEvent evt) {// GEN-FIRST:event_AT_SoftAPComponentShown + WiFi_common.setVisible(true); + TCP_common.setVisible(false); + }// GEN-LAST:event_AT_SoftAPComponentShown + + private void AT_SoftAPFocusGained(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_AT_SoftAPFocusGained + + }// GEN-LAST:event_AT_SoftAPFocusGained + + private void cmdSetCIPAPActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSetCIPAPActionPerformed + btnSend("AT+CIPAP=\"" + softAPIP.getText() + "\""); + }// GEN-LAST:event_cmdSetCIPAPActionPerformed + + private void cmdSetCIPAPMACActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSetCIPAPMACActionPerformed + btnSend("AT+CIPAPMAC=\"" + MAC.getText() + "\""); + }// GEN-LAST:event_cmdSetCIPAPMACActionPerformed + + private void cmdGetCIPAPActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdGetCIPAPActionPerformed + btnSend("AT+CIPAP?"); + }// GEN-LAST:event_cmdGetCIPAPActionPerformed + + private void PASSsoftAPActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_PASSsoftAPActionPerformed + // TODO add your handling code here: + }// GEN-LAST:event_PASSsoftAPActionPerformed + + private void PASSsoftAPFocusGained(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_PASSsoftAPFocusGained + // TODO add your handling code here: + }// GEN-LAST:event_PASSsoftAPFocusGained + + private void SSIDsoftAPActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SSIDsoftAPActionPerformed + // TODO add your handling code here: + }// GEN-LAST:event_SSIDsoftAPActionPerformed + + private void SSIDsoftAPFocusGained(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_SSIDsoftAPFocusGained + // TODO add your handling code here: + }// GEN-LAST:event_SSIDsoftAPFocusGained + + private void cmdGetCWLIFActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdGetCWLIFActionPerformed + btnSend("AT+CWLIF"); + }// GEN-LAST:event_cmdGetCWLIFActionPerformed + + private void cmdGetCIPAPMACActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdGetCIPAPMACActionPerformed + btnSend("AT+CIPAPMAC?"); + }// GEN-LAST:event_cmdGetCIPAPMACActionPerformed + + private void cmdGetCWSAPActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdGetCWSAPActionPerformed + btnSend("AT+CWSAP?"); + }// GEN-LAST:event_cmdGetCWSAPActionPerformed + + private void cmdSetCWSAPActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSetCWSAPActionPerformed + int ch = channel.getSelectedIndex() + 1; + btnSend("AT+CWSAP=\"" + SSIDsoftAP.getText() + "\",\"" + PASSsoftAP.getText() + "\"," + Integer.toString(ch) + + "," + encryption.getSelectedIndex()); + }// GEN-LAST:event_cmdSetCWSAPActionPerformed + + private void AT_StationComponentShown(java.awt.event.ComponentEvent evt) {// GEN-FIRST:event_AT_StationComponentShown + WiFi_common.setVisible(true); + TCP_common.setVisible(false); + }// GEN-LAST:event_AT_StationComponentShown + + private void AT_StationFocusGained(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_AT_StationFocusGained + + }// GEN-LAST:event_AT_StationFocusGained + + private void cmdSetCIPSTAActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSetCIPSTAActionPerformed + btnSend("AT+CIPSTA=\"" + StationIP.getText() + "\""); + }// GEN-LAST:event_cmdSetCIPSTAActionPerformed + + private void cmdGetCIPSTAActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdGetCIPSTAActionPerformed + btnSend("AT+CIPSTA?"); + }// GEN-LAST:event_cmdGetCIPSTAActionPerformed + + private void cmdSetCIPSTAMACActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSetCIPSTAMACActionPerformed + btnSend("AT+CIPSTAMAC=\"" + MAC.getText() + "\""); + }// GEN-LAST:event_cmdSetCIPSTAMACActionPerformed + + private void cmdGetCIPSTAMACActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdGetCIPSTAMACActionPerformed + btnSend("AT+CIPSTAMAC?"); + }// GEN-LAST:event_cmdGetCIPSTAMACActionPerformed + + private void cmdSetCWQAPActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSetCWQAPActionPerformed + btnSend("AT+CWQAP"); + }// GEN-LAST:event_cmdSetCWQAPActionPerformed + + private void PASSActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_PASSActionPerformed + // TODO add your handling code here: + }// GEN-LAST:event_PASSActionPerformed + + private void PASSFocusGained(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_PASSFocusGained + if (PASS.getText().trim() == "password") { + PASS.setText(""); + } + }// GEN-LAST:event_PASSFocusGained + + private void SSIDActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SSIDActionPerformed + // TODO add your handling code here: + }// GEN-LAST:event_SSIDActionPerformed + + private void SSIDFocusGained(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_SSIDFocusGained + if (SSID.getText().trim() == "SSID") { + SSID.setText(""); + } + }// GEN-LAST:event_SSIDFocusGained + + private void cmdSetCWJAPActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSetCWJAPActionPerformed + btnSend("AT+CWJAP=\"" + SSID.getText() + "\",\"" + PASS.getText() + "\""); + }// GEN-LAST:event_cmdSetCWJAPActionPerformed + + private void cmdGetCWJAPActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdGetCWJAPActionPerformed + btnSend("AT+CWJAP?"); + }// GEN-LAST:event_cmdGetCWJAPActionPerformed + + private void UPDATEActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_UPDATEActionPerformed + btnSend("AT+CIUPDATE"); + }// GEN-LAST:event_UPDATEActionPerformed + + private void ATE1ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ATE1ActionPerformed + btnSend("ATE1"); + }// GEN-LAST:event_ATE1ActionPerformed + + private void ATE0ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ATE0ActionPerformed + btnSend("ATE0"); + }// GEN-LAST:event_ATE0ActionPerformed + + private void GSLPActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_GSLPActionPerformed + btnSend("AT+GSLP=5000"); + }// GEN-LAST:event_GSLPActionPerformed + + private void AT_GMRActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_AT_GMRActionPerformed + btnSend("AT+GMR"); + }// GEN-LAST:event_AT_GMRActionPerformed + + private void AT_RestartActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_AT_RestartActionPerformed + btnSend("AT+RST"); + }// GEN-LAST:event_AT_RestartActionPerformed + + private void cmdATActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdATActionPerformed + btnSend("AT"); + }// GEN-LAST:event_cmdATActionPerformed + + private void NodeMCUComponentShown(java.awt.event.ComponentEvent evt) {// GEN-FIRST:event_NodeMCUComponentShown + UpdateEditorButtons(); + UpdateButtons(); + }// GEN-LAST:event_NodeMCUComponentShown + + private void NodeMCUFocusGained(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_NodeMCUFocusGained + + }// GEN-LAST:event_NodeMCUFocusGained - private void UpdateLedCTS() { - try { - if (serialPort.isCTS()) { - PortCTS.setIcon(LED_GREEN); - } else { - PortCTS.setIcon(LED_GREY); - } - } catch (Exception e) { - log(e.toString()); + private void TextTabStateChanged(javax.swing.event.ChangeEvent evt) {// GEN-FIRST:event_TextTabStateChanged + if (TextTab.getSelectedIndex() == 2) { // snippets + } else if (TextTab.getSelectedIndex() == 3) { // Settings + } else if (TextTab.getSelectedIndex() == 1) { // Commands + } else if (TextTab.getSelectedIndex() == 0) { // Scripts } - } + }// GEN-LAST:event_TextTabStateChanged - private void TerminalAdd(String s) { - Document doc = Terminal.getDocument(); - if (doc.getLength() > TerminalMax) { - try { - doc.remove(0, 1024); - } catch (Exception e) { - } - } - try { - doc.insertString(doc.getLength(), s, null); - } catch (Exception e) { - log(e.toString()); - } - if (AutoScroll.isSelected()) { - try { - Terminal.setCaretPosition(doc.getLength()); - } catch (Exception e) { - log(e.toString()); - } - } - } + private void AutodetectFirmwareItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_AutodetectFirmwareItemStateChanged + prefs.putBoolean(AUTODETECT, AutodetectFirmware.isSelected()); + }// GEN-LAST:event_AutodetectFirmwareItemStateChanged - private void ButtonSendSelectedActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonSendSelectedActionPerformed - MenuItemEditSendSelected.doClick(); - }// GEN-LAST:event_ButtonSendSelectedActionPerformed + private void UseCustomPortNameActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_UseCustomPortNameActionPerformed + Port.setEnabled(!UseCustomPortName.isSelected()); + Port.setVisible(!UseCustomPortName.isSelected()); + CustomPortName.setEnabled(UseCustomPortName.isSelected()); + prefs.putBoolean(USE_CUSTOM_PORT, UseCustomPortName.isSelected()); + }// GEN-LAST:event_UseCustomPortNameActionPerformed - private void MenuItemEditorSendSelectedActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemEditorSendSelectedActionPerformed - MenuItemEditSendSelected.doClick(); - }// GEN-LAST:event_MenuItemEditorSendSelectedActionPerformed + private void CustomPortNameFocusLost(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_CustomPortNameFocusLost + prefs.put(CUSTOM_PORT_NAME, CustomPortName.getText()); + }// GEN-LAST:event_CustomPortNameFocusLost - private void MenuItemEditSendSelectedActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemEditSendSelectedActionPerformed - int l = 0; - if ((LeftTab.getSelectedIndex() == 0) && (TextTab.getSelectedIndex() == 0)) { // NodeMCU - // and - // Scripts - try { - l = TextEditor1.get(iTab).getSelectedText().length(); - } catch (Exception e) { - log("Can't send: nothing selected."); - return; - } - if (l > 0) - SendToESP(TextEditor1.get(iTab).getSelectedText()); - } else if ((LeftTab.getSelectedIndex() == 0) && (TextTab.getSelectedIndex() == 0)) { // NodeMCU - // and - // Snippets - try { - l = SnippetText.getSelectedText().length(); - } catch (Exception e) { - log("Can't send: nothing selected."); - return; - } - if (l > 0) - SendToESP(SnippetText.getSelectedText()); - } - }// GEN-LAST:event_MenuItemEditSendSelectedActionPerformed + private void LogMaxSizeActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_LogMaxSizeActionPerformed - private void MenuItemFileRemoveESPActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemFileRemoveESPActionPerformed - String ft = iFile.get(iTab).getName(); - if (ft.length() == 0) { - log("FileRemoveESP: FAIL. Can't remove file from ESP without name."); - JOptionPane.showMessageDialog(null, "Can't remove file from ESP without name."); - } - FileRemoveESP(ft); - }// GEN-LAST:event_MenuItemFileRemoveESPActionPerformed + }// GEN-LAST:event_LogMaxSizeActionPerformed - private void FileRemoveESP(String FileName) { - btnSend("file.remove(\"" + FileName + "\")"); + private void LogMaxSizeFocusLost(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_LogMaxSizeFocusLost try { - Thread.sleep(200L); + LogMax = Integer.parseInt(LogMaxSize.getText()) * 1024; } catch (Exception e) { + LogMax = 1024 * 10; } - FileListReload.doClick(); - } - - private void MenuItemFileSaveESPActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemFileSaveESPActionPerformed - if (!FileSaveESP.isSelected()) { - FileSaveESP.doClick(); + if (LogMax < 2048) { + LogMax = 2048; + } else if (LogMax > 32 * 1024) { + LogMax = 32 * 1024; } - }// GEN-LAST:event_MenuItemFileSaveESPActionPerformed + prefs.putInt(LOG_MAX_SIZE, LogMax); + log("Log max size set to " + Integer.toString(LogMax / 1024) + " KB", DEBUG); + }// GEN-LAST:event_LogMaxSizeFocusLost - private void cmdTimerStopActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdTimerStopActionPerformed - String cmd = "tmr.stop(" + Integer.toString(TimerNumber.getSelectedIndex()) + ")"; - btnSend(cmd); - }// GEN-LAST:event_cmdTimerStopActionPerformed + private void TerminalMaxSizeFocusLost(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_TerminalMaxSizeFocusLost + try { + TerminalMax = Integer.parseInt(TerminalMaxSize.getText()) * 1024; + } catch (Exception e) { + TerminalMax = 1024 * 100; + } + if (TerminalMax < 2048) { + TerminalMax = 2048; + } else if (TerminalMax > 1024 * 1024) { + TerminalMax = 1024 * 1024; + } + prefs.putInt(TERMINAL_MAX_SIZE, TerminalMax); + log("Terminal max size set to " + Integer.toString(TerminalMax / 1024) + " KB", DEBUG); + }// GEN-LAST:event_TerminalMaxSizeFocusLost - private void NodeResetActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_NodeResetActionPerformed - cmdNodeRestart.doClick(); - }// GEN-LAST:event_NodeResetActionPerformed + private void TurboModeActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_TurboModeActionPerformed + if (TurboMode.isSelected()) { + DumbMode.setEnabled(false); + DumbMode.setSelected(false); + } else { + DumbMode.setEnabled(true); + } + prefs.putBoolean(TURBO_MODE, TurboMode.isSelected()); + PrefsFlush(); + }// GEN-LAST:event_TurboModeActionPerformed - private void FileDoActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_FileDoActionPerformed - String cmd = "dofile('" + iFile.get(iTab).getName() + "')"; - btnSend(cmd); - }// GEN-LAST:event_FileDoActionPerformed + private void TurboModeItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_TurboModeItemStateChanged - private void MenuItemLogCloseActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemLogCloseActionPerformed - MenuItemViewLog.doClick(); - }// GEN-LAST:event_MenuItemLogCloseActionPerformed + }// GEN-LAST:event_TurboModeItemStateChanged - private void MenuItemTerminalResetActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemTerminalResetActionPerformed - MenuItemESPReset.doClick(); - }// GEN-LAST:event_MenuItemTerminalResetActionPerformed + private void LineDelayStateChanged(javax.swing.event.ChangeEvent evt) {// GEN-FIRST:event_LineDelayStateChanged + LineDelayLabel.setText("Line delay for \"Dumb Mode\" = " + Integer.toString(LineDelay.getValue()) + " ms"); + prefs.putInt(LINE_DELAY, LineDelay.getValue()); + PrefsFlush(); + }// GEN-LAST:event_LineDelayStateChanged - private void DonateActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_DonateActionPerformed - goLink(donate_uri); - }// GEN-LAST:event_DonateActionPerformed + private void DumbModeItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_DumbModeItemStateChanged + if (DumbMode.isSelected()) { + DelayLabel.setEnabled(false); + Delay.setEnabled(false); + AnswerDelayLabel.setEnabled(false); + AnswerDelay.setEnabled(false); + LineDelayLabel.setEnabled(true); + LineDelay.setEnabled(true); + TurboMode.setSelected(false); + TurboMode.setEnabled(false); + } else { + DelayLabel.setEnabled(true); + Delay.setEnabled(true); + AnswerDelayLabel.setEnabled(true); + AnswerDelay.setEnabled(true); + LineDelayLabel.setEnabled(false); + LineDelay.setEnabled(false); + TurboMode.setEnabled(true); + } + prefs.putBoolean(DUMB_MODE, DumbMode.isSelected()); + PrefsFlush(); + }// GEN-LAST:event_DumbModeItemStateChanged - private void MenuItemHelpAboutActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemHelpAboutActionPerformed - About.setLocationRelativeTo(null); - About.setVisible(true); - }// GEN-LAST:event_MenuItemHelpAboutActionPerformed + private void AnswerDelayStateChanged(javax.swing.event.ChangeEvent evt) {// GEN-FIRST:event_AnswerDelayStateChanged + AnswerDelayLabel.setText("Answer timout = " + Integer.toString(AnswerDelay.getValue()) + " s"); + prefs.putInt(TIMEOUT, AnswerDelay.getValue()); + PrefsFlush(); + }// GEN-LAST:event_AnswerDelayStateChanged - private void AboutFocusLost(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_AboutFocusLost - About.dispose(); - }// GEN-LAST:event_AboutFocusLost + private void DelayStateChanged(javax.swing.event.ChangeEvent evt) {// GEN-FIRST:event_DelayStateChanged + DelayLabel.setText("Delay after answer = " + Integer.toString(Delay.getValue()) + " ms"); + prefs.putInt(DELAY, Delay.getValue()); + PrefsFlush(); + }// GEN-LAST:event_DelayStateChanged - private void HomePageActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_HomePageActionPerformed - goLink(homepage_uri); - }// GEN-LAST:event_HomePageActionPerformed + private void UseExternalEditorItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_UseExternalEditorItemStateChanged + prefs.putBoolean(USE_EXT_EDITOR, UseExternalEditor.isSelected()); + UpdateButtons(); + }// GEN-LAST:event_UseExternalEditorItemStateChanged - private void CommandItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_CommandItemStateChanged - // SendCommand.doClick(); - }// GEN-LAST:event_CommandItemStateChanged + private void EditorThemeActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_EditorThemeActionPerformed + int n = EditorTheme.getSelectedIndex(); + prefs.putInt(COLOR_THEME, n); + PrefsFlush(); + SetTheme(n, true); // for all + }// GEN-LAST:event_EditorThemeActionPerformed - private void LeftTabStateChanged(javax.swing.event.ChangeEvent evt) {// GEN-FIRST:event_LeftTabStateChanged - if (LeftTab.getSelectedIndex() == 0) { // NodeMCU & Python - CommandsSetNodeMCU(); - } else if (LeftTab.getSelectedIndex() == 1) { // AT - CommandsSetAT(); - } else if (LeftTab.getSelectedIndex() == 2) { // Frankenshtein - // TODO - } - }// GEN-LAST:event_LeftTabStateChanged + private void FileAutoRunItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_FileAutoRunItemStateChanged + prefs.putBoolean(FILE_AUTO_RUN, FileAutoRun.isSelected()); + PrefsFlush(); + }// GEN-LAST:event_FileAutoRunItemStateChanged - private void PortItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_PortItemStateChanged + private void FileAutoSaveESPItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_FileAutoSaveESPItemStateChanged + prefs.putBoolean(FILE_AUTO_SAVE_ESP, FileAutoSaveESP.isSelected()); + PrefsFlush(); + }// GEN-LAST:event_FileAutoSaveESPItemStateChanged - }// GEN-LAST:event_PortItemStateChanged + private void FileAutoSaveDiskItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_FileAutoSaveDiskItemStateChanged + prefs.putBoolean(FILE_AUTO_SAVE_DISK, FileAutoSaveDisk.isSelected()); + PrefsFlush(); + }// GEN-LAST:event_FileAutoSaveDiskItemStateChanged - private void LoadSnippets() { - if (OptionNodeMCU.isSelected()) { - SnippetText.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_LUA); - log("Snippets (LUA): loading..."); - for (int i = 0; i <= 15; i++) { - String n = Integer.toString(i).trim(); - if (prefs.get("Snippet" + n + "name", null) == null) { - prefs.put("Snippet" + n + "name", "Snippet" + n); - prefs.put("Snippet" + n, ""); - PrefsFlush(); - } - if (i == 0) { - ButtonSnippet0.setText(prefs.get("Snippet" + n + "name", "Snippet" + n)); - } else if (i == 1) { - ButtonSnippet1.setText(prefs.get("Snippet" + n + "name", "Snippet" + n)); - } else if (i == 2) { - ButtonSnippet2.setText(prefs.get("Snippet" + n + "name", "Snippet" + n)); - } else if (i == 3) { - ButtonSnippet3.setText(prefs.get("Snippet" + n + "name", "Snippet" + n)); - } else if (i == 4) { - ButtonSnippet4.setText(prefs.get("Snippet" + n + "name", "Snippet" + n)); - } else if (i == 5) { - ButtonSnippet5.setText(prefs.get("Snippet" + n + "name", "Snippet" + n)); - } else if (i == 6) { - ButtonSnippet6.setText(prefs.get("Snippet" + n + "name", "Snippet" + n)); - } else if (i == 7) { - ButtonSnippet7.setText(prefs.get("Snippet" + n + "name", "Snippet" + n)); - } else if (i == 8) { - ButtonSnippet8.setText(prefs.get("Snippet" + n + "name", "Snippet" + n)); - } else if (i == 9) { - ButtonSnippet9.setText(prefs.get("Snippet" + n + "name", "Snippet" + n)); - } else if (i == 10) { - ButtonSnippet10.setText(prefs.get("Snippet" + n + "name", "Snippet" + n)); - } else if (i == 11) { - ButtonSnippet11.setText(prefs.get("Snippet" + n + "name", "Snippet" + n)); - } else if (i == 12) { - ButtonSnippet12.setText(prefs.get("Snippet" + n + "name", "Snippet" + n)); - } else if (i == 13) { - ButtonSnippet13.setText(prefs.get("Snippet" + n + "name", "Snippet" + n)); - } else if (i == 14) { - ButtonSnippet14.setText(prefs.get("Snippet" + n + "name", "Snippet" + n)); - } else { - ButtonSnippet15.setText(prefs.get("Snippet" + n + "name", "Snippet" + n)); - } - Snippets[i] = prefs.get("Snippet" + n, ""); - } - SetSnippetEditButtonsTooltip(); - log("Snippets (LUA) load: Success."); - } else { - SnippetText.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_PYTHON); - // python snippets - log("Snippets (Python): loading..."); - log("Snippets (Python) load: Success."); + private void OptionMicroPythonItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_OptionMicroPythonItemStateChanged + if (OptionMicroPython.isSelected()) { + SetFirmwareType(FIRMWARE_MPYTHON); } - } + }// GEN-LAST:event_OptionMicroPythonItemStateChanged - private void TextTabStateChanged(javax.swing.event.ChangeEvent evt) {// GEN-FIRST:event_TextTabStateChanged - if (TextTab.getSelectedIndex() == 2) { // snippets - } else if (TextTab.getSelectedIndex() == 3) { // Settings - } else if (TextTab.getSelectedIndex() == 1) { // Commands - } else if (TextTab.getSelectedIndex() == 0) { // Scripts + private void OptionNodeMCUItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_OptionNodeMCUItemStateChanged + if (OptionNodeMCU.isSelected()) { + SetFirmwareType(FIRMWARE_NODEMCU); } - }// GEN-LAST:event_TextTabStateChanged + }// GEN-LAST:event_OptionNodeMCUItemStateChanged - private void SnippetEdit0ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SnippetEdit0ActionPerformed - SnippetEdit(0); - }// GEN-LAST:event_SnippetEdit0ActionPerformed + private void CondensedItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_CondensedItemStateChanged + prefs.putBoolean(CONDENSED, Condensed.isSelected()); + }// GEN-LAST:event_CondensedItemStateChanged - private void SnippetEdit(int n) { + private void SnippetCancelEditActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SnippetCancelEditActionPerformed if (SnippetText.canUndo() || SnippetText.canRedo()) { this.setAlwaysOnTop(false); int returnVal = JOptionPane.showConfirmDialog(null, - "Discard any changes and load Snippet" + Integer.toString(n), "Attention", + "Discard any changes and CANCEL edit this snippet without saving?", "Attention", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE); this.setAlwaysOnTop(AlwaysOnTop.isSelected()); if (returnVal != JOptionPane.YES_OPTION) { return; } } - iSnippets = n; - SnippetName.setEnabled(true); - SnippetSave.setEnabled(true); - SnippetRun.setEnabled(true); - SnippetCancelEdit.setEnabled(true); - SnippetText.setEnabled(true); - SnippetScrollPane.setEnabled(true); - SnippetText.setEditable(true); - SnippetText.setText(Snippets[iSnippets]); - SnippetText.setBackground(themeTextBackground); + SnippetText.setEnabled(false); + SnippetName.setEnabled(false); + SnippetSave.setEnabled(false); + SnippetRun.setEnabled(false); + SnippetCancelEdit.setEnabled(false); + SnippetText.setEnabled(false); + SnippetScrollPane.setEnabled(false); + SnippetText.setEditable(false); + SnippetText.setText(""); SnippetText.discardAllEdits(); - SnippetName.setText(prefs.get("Snippet" + n + "name", "Snippet" + n)); - } + SnippetName.setText(""); + // SnippetText.setBackground(SnippetTopPane.getBackground()); + }// GEN-LAST:event_SnippetCancelEditActionPerformed + + private void SnippetRunActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SnippetRunActionPerformed + SendToESP(SnippetText.getText()); + }// GEN-LAST:event_SnippetRunActionPerformed private void SnippetSaveActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SnippetSaveActionPerformed SnippetName.setEnabled(false); @@ -7737,7 +10315,8 @@ private void SnippetSaveActionPerformed(java.awt.event.ActionEvent evt) {// GEN- SnippetText.setEnabled(false); SnippetScrollPane.setEnabled(false); SnippetText.setEditable(false); - SnippetText.setBackground(SnippetTopPane.getBackground()); + // SnippetText.setBackground(SnippetTopPane.getBackground()); + SnippetText.setEnabled(false); if (iSnippets == 0) { ButtonSnippet0.setText(SnippetName.getText()); } else if (iSnippets == 1) { @@ -7774,847 +10353,767 @@ private void SnippetSaveActionPerformed(java.awt.event.ActionEvent evt) {// GEN- } SetSnippetEditButtonsTooltip(); Snippets[iSnippets] = SnippetText.getText(); - prefs.put("Snippet" + Integer.toString(iSnippets) + "name", SnippetName.getText()); - prefs.put("Snippet" + Integer.toString(iSnippets), Snippets[iSnippets]); + String suffix; + if (OptionNodeMCU.isSelected()) { + suffix = ""; + } else { + suffix = "_mpy"; + } + prefs.put("Snippet" + Integer.toString(iSnippets) + suffix + "name", SnippetName.getText()); + prefs.put("Snippet" + Integer.toString(iSnippets) + suffix, Snippets[iSnippets]); if (PrefsFlush()) { log("Snippet" + Integer.toString(iSnippets) + " saved: Success."); } SnippetText.discardAllEdits(); }// GEN-LAST:event_SnippetSaveActionPerformed - private void SnippetEdit1ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SnippetEdit1ActionPerformed - SnippetEdit(1); - }// GEN-LAST:event_SnippetEdit1ActionPerformed - - private void SnippetEdit2ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SnippetEdit2ActionPerformed - SnippetEdit(2); - }// GEN-LAST:event_SnippetEdit2ActionPerformed - - private void SnippetEdit3ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SnippetEdit3ActionPerformed - SnippetEdit(3); - }// GEN-LAST:event_SnippetEdit3ActionPerformed - - private void SnippetEdit4ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SnippetEdit4ActionPerformed - SnippetEdit(4); - }// GEN-LAST:event_SnippetEdit4ActionPerformed - - private void SnippetEdit5ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SnippetEdit5ActionPerformed - SnippetEdit(5); - }// GEN-LAST:event_SnippetEdit5ActionPerformed - - private void SnippetEdit6ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SnippetEdit6ActionPerformed - SnippetEdit(6); - }// GEN-LAST:event_SnippetEdit6ActionPerformed - - private void SnippetEdit7ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SnippetEdit7ActionPerformed - SnippetEdit(7); - }// GEN-LAST:event_SnippetEdit7ActionPerformed - - private void SnippetEdit8ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SnippetEdit8ActionPerformed - SnippetEdit(8); - }// GEN-LAST:event_SnippetEdit8ActionPerformed - - private void SnippetEdit9ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SnippetEdit9ActionPerformed - SnippetEdit(9); - }// GEN-LAST:event_SnippetEdit9ActionPerformed - - private void SnippetEdit10ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SnippetEdit10ActionPerformed - SnippetEdit(10); - }// GEN-LAST:event_SnippetEdit10ActionPerformed - - private void SnippetEdit11ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SnippetEdit11ActionPerformed - SnippetEdit(11); - }// GEN-LAST:event_SnippetEdit11ActionPerformed - - private void SnippetEdit12ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SnippetEdit12ActionPerformed - SnippetEdit(12); - }// GEN-LAST:event_SnippetEdit12ActionPerformed - - private void SnippetEdit13ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SnippetEdit13ActionPerformed - SnippetEdit(13); - }// GEN-LAST:event_SnippetEdit13ActionPerformed - - private void SnippetEdit14ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SnippetEdit14ActionPerformed - SnippetEdit(14); - }// GEN-LAST:event_SnippetEdit14ActionPerformed - private void SnippetEdit15ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SnippetEdit15ActionPerformed SnippetEdit(15); }// GEN-LAST:event_SnippetEdit15ActionPerformed - private void ButtonSnippet0ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonSnippet0ActionPerformed - DoSnippet(0); - }// GEN-LAST:event_ButtonSnippet0ActionPerformed - - private void SnippetRunActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SnippetRunActionPerformed - SendToESP(SnippetText.getText()); - }// GEN-LAST:event_SnippetRunActionPerformed - - private void ButtonSnippet1ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonSnippet1ActionPerformed - DoSnippet(1); - }// GEN-LAST:event_ButtonSnippet1ActionPerformed - - private void ButtonSnippet2ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonSnippet2ActionPerformed - DoSnippet(2); - }// GEN-LAST:event_ButtonSnippet2ActionPerformed - - private void ButtonSnippet3ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonSnippet3ActionPerformed - DoSnippet(3); - }// GEN-LAST:event_ButtonSnippet3ActionPerformed - - private void ButtonSnippet4ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonSnippet4ActionPerformed - DoSnippet(4); - }// GEN-LAST:event_ButtonSnippet4ActionPerformed - - private void ButtonSnippet5ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonSnippet5ActionPerformed - DoSnippet(5); - }// GEN-LAST:event_ButtonSnippet5ActionPerformed - - private void ButtonSnippet6ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonSnippet6ActionPerformed - DoSnippet(6); - }// GEN-LAST:event_ButtonSnippet6ActionPerformed - - private void ButtonSnippet7ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonSnippet7ActionPerformed - DoSnippet(7); - }// GEN-LAST:event_ButtonSnippet7ActionPerformed - - private void ButtonSnippet8ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonSnippet8ActionPerformed - DoSnippet(8); - }// GEN-LAST:event_ButtonSnippet8ActionPerformed - - private void ButtonSnippet9ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonSnippet9ActionPerformed - DoSnippet(9); - }// GEN-LAST:event_ButtonSnippet9ActionPerformed - - private void ButtonSnippet10ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonSnippet10ActionPerformed - DoSnippet(10); - }// GEN-LAST:event_ButtonSnippet10ActionPerformed + private void SnippetEdit14ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SnippetEdit14ActionPerformed + SnippetEdit(14); + }// GEN-LAST:event_SnippetEdit14ActionPerformed - private void ButtonSnippet11ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonSnippet11ActionPerformed - DoSnippet(11); - }// GEN-LAST:event_ButtonSnippet11ActionPerformed + private void SnippetEdit13ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SnippetEdit13ActionPerformed + SnippetEdit(13); + }// GEN-LAST:event_SnippetEdit13ActionPerformed - private void ButtonSnippet12ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonSnippet12ActionPerformed - DoSnippet(12); - }// GEN-LAST:event_ButtonSnippet12ActionPerformed + private void SnippetEdit12ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SnippetEdit12ActionPerformed + SnippetEdit(12); + }// GEN-LAST:event_SnippetEdit12ActionPerformed - private void ButtonSnippet13ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonSnippet13ActionPerformed - DoSnippet(13); - }// GEN-LAST:event_ButtonSnippet13ActionPerformed + private void SnippetEdit11ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SnippetEdit11ActionPerformed + SnippetEdit(11); + }// GEN-LAST:event_SnippetEdit11ActionPerformed - private void ButtonSnippet14ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonSnippet14ActionPerformed - DoSnippet(14); - }// GEN-LAST:event_ButtonSnippet14ActionPerformed + private void SnippetEdit10ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SnippetEdit10ActionPerformed + SnippetEdit(10); + }// GEN-LAST:event_SnippetEdit10ActionPerformed - private void ButtonSnippet15ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonSnippet15ActionPerformed - DoSnippet(15); - }// GEN-LAST:event_ButtonSnippet15ActionPerformed + private void SnippetEdit9ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SnippetEdit9ActionPerformed + SnippetEdit(9); + }// GEN-LAST:event_SnippetEdit9ActionPerformed - private void OptionNodeMCUItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_OptionNodeMCUItemStateChanged - if (OptionNodeMCU.isSelected()) { - prefs.put(FIRMWARE, "NodeMCU"); - PrefsFlush(); - chooser.setFileFilter(filterLUA); - } - }// GEN-LAST:event_OptionNodeMCUItemStateChanged + private void SnippetEdit8ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SnippetEdit8ActionPerformed + SnippetEdit(8); + }// GEN-LAST:event_SnippetEdit8ActionPerformed - private void OptionMicroPythonItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_OptionMicroPythonItemStateChanged - if (OptionMicroPython.isSelected()) { - prefs.put(FIRMWARE, "MicroPython"); - PrefsFlush(); - chooser.setFileFilter(filterPY); - } - }// GEN-LAST:event_OptionMicroPythonItemStateChanged + private void SnippetEdit7ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SnippetEdit7ActionPerformed + SnippetEdit(7); + }// GEN-LAST:event_SnippetEdit7ActionPerformed - private void FileAutoSaveDiskItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_FileAutoSaveDiskItemStateChanged - prefs.putBoolean(FILE_AUTO_SAVE_DISK, FileAutoSaveDisk.isSelected()); - PrefsFlush(); - }// GEN-LAST:event_FileAutoSaveDiskItemStateChanged + private void SnippetEdit6ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SnippetEdit6ActionPerformed + SnippetEdit(6); + }// GEN-LAST:event_SnippetEdit6ActionPerformed - private void FileAutoSaveESPItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_FileAutoSaveESPItemStateChanged - prefs.putBoolean(FILE_AUTO_SAVE_ESP, FileAutoSaveESP.isSelected()); - PrefsFlush(); - }// GEN-LAST:event_FileAutoSaveESPItemStateChanged + private void SnippetEdit5ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SnippetEdit5ActionPerformed + SnippetEdit(5); + }// GEN-LAST:event_SnippetEdit5ActionPerformed - private void FileAutoRunItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_FileAutoRunItemStateChanged - prefs.putBoolean(FILE_AUTO_RUN, FileAutoRun.isSelected()); - PrefsFlush(); - }// GEN-LAST:event_FileAutoRunItemStateChanged + private void SnippetEdit4ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SnippetEdit4ActionPerformed + SnippetEdit(4); + }// GEN-LAST:event_SnippetEdit4ActionPerformed - private void LineDelayStateChanged(javax.swing.event.ChangeEvent evt) {// GEN-FIRST:event_LineDelayStateChanged - LineDelayLabel.setText("Line delay for \"Dumb Mode\" = " + Integer.toString(LineDelay.getValue()) + " ms"); - prefs.putInt(LINE_DELAY, LineDelay.getValue()); - PrefsFlush(); - }// GEN-LAST:event_LineDelayStateChanged + private void SnippetEdit3ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SnippetEdit3ActionPerformed + SnippetEdit(3); + }// GEN-LAST:event_SnippetEdit3ActionPerformed - private void DumbModeItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_DumbModeItemStateChanged - if (DumbMode.isSelected()) { - DelayLabel.setEnabled(false); - Delay.setEnabled(false); - AnswerDelayLabel.setEnabled(false); - AnswerDelay.setEnabled(false); - LineDelayLabel.setEnabled(true); - LineDelay.setEnabled(true); - TurboMode.setSelected(false); - TurboMode.setEnabled(false); - } else { - DelayLabel.setEnabled(true); - Delay.setEnabled(true); - AnswerDelayLabel.setEnabled(true); - AnswerDelay.setEnabled(true); - LineDelayLabel.setEnabled(false); - LineDelay.setEnabled(false); - TurboMode.setEnabled(true); - } - prefs.putBoolean(DUMB_MODE, DumbMode.isSelected()); - PrefsFlush(); - }// GEN-LAST:event_DumbModeItemStateChanged + private void SnippetEdit2ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SnippetEdit2ActionPerformed + SnippetEdit(2); + }// GEN-LAST:event_SnippetEdit2ActionPerformed - private void ButtonSendLineActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonSendLineActionPerformed - MenuItemEditSendLine.doClick(); - }// GEN-LAST:event_ButtonSendLineActionPerformed + private void SnippetEdit1ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SnippetEdit1ActionPerformed + SnippetEdit(1); + }// GEN-LAST:event_SnippetEdit1ActionPerformed - private void MenuItemEditSendLineActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemEditSendLineActionPerformed - int nLine; - if ((LeftTab.getSelectedIndex() == 0) && (TextTab.getSelectedIndex() == 0)) { // NodeMCU - // and - // Scripts - nLine = TextEditor1.get(iTab).getCaretLineNumber(); - String cmd = TextEditor1.get(iTab).getText().split("\r?\n")[nLine]; - btnSend(cmd); - } else if ((LeftTab.getSelectedIndex() == 0) && (TextTab.getSelectedIndex() == 2)) { // NodeMCU - // and - // Snippets - nLine = SnippetText.getCaretLineNumber(); - String cmd = SnippetText.getText().split("\r?\n")[nLine]; - btnSend(cmd); - } - }// GEN-LAST:event_MenuItemEditSendLineActionPerformed + private void SnippetEdit0ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SnippetEdit0ActionPerformed + SnippetEdit(0); + }// GEN-LAST:event_SnippetEdit0ActionPerformed - private void MenuItemFileSendESPActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemFileSendESPActionPerformed - FileSendESP.doClick(); - }// GEN-LAST:event_MenuItemFileSendESPActionPerformed + private void cmdTimerStopActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdTimerStopActionPerformed + String cmd = "tmr.stop(" + Integer.toString(TimerNumber.getSelectedIndex()) + ")"; + btnSend(cmd); + }// GEN-LAST:event_cmdTimerStopActionPerformed - private void MenuItemEditorSendLineActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemEditorSendLineActionPerformed - MenuItemEditSendLine.doClick(); - }// GEN-LAST:event_MenuItemEditorSendLineActionPerformed + private void cmdListFilesActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdListFilesActionPerformed + NodeListFiles(); + }// GEN-LAST:event_cmdListFilesActionPerformed - private void MenuFileActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuFileActionPerformed + private void cmdNodeSleepActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdNodeSleepActionPerformed + int returnVal = Dialog( + "This function can only be used in the condition that esp8266 PIN32(RST) and PIN8(XPD_DCDC) are connected together.", + JOptionPane.YES_NO_OPTION); + if (returnVal == JOptionPane.YES_OPTION) { + btnSend("node.dsleep(10000)"); + } + }// GEN-LAST:event_cmdNodeSleepActionPerformed - }// GEN-LAST:event_MenuFileActionPerformed + private void cmdNodeHeapActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdNodeHeapActionPerformed + btnSend("print(node.heap())"); + }// GEN-LAST:event_cmdNodeHeapActionPerformed - private void ButtonFileSaveAllActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonFileSaveAllActionPerformed - MenuItemFileSaveAll.doClick(); - }// GEN-LAST:event_ButtonFileSaveAllActionPerformed + private void cmdNodeChipIDActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdNodeChipIDActionPerformed + btnSend("print(node.chipid())"); + }// GEN-LAST:event_cmdNodeChipIDActionPerformed - private void MenuItemFileDoActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemFileDoActionPerformed - FileDo.doClick(); - }// GEN-LAST:event_MenuItemFileDoActionPerformed + private void cmdNodeRestartActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdNodeRestartActionPerformed + if (!OptionNodeMCU.isSelected()) { + return; + } + if (portJustOpen) { + log("ERROR: Communication with MCU not established."); + return; + } + TerminalAdd("Soft restart by user command\r\n"); + btnSend("node.restart()"); + if (pOpen) { // reconnect + int speed = prefs.getInt(SERIAL_BAUD, 3); + final int old_speed = Speed.getSelectedIndex(); + // if (speed == old_speed) { // reconnect not needed + // return; + // } + try { + nSpeed = Integer.parseInt(Speed.getItemAt(speed).toString()); + // Integer.parseInt((String)Speed.getSelectedItem()); + } catch (Exception e) { + return; + } + log("Try to reconnect with saved baud " + Integer.toString(nSpeed) + "..."); + try { + if (SetSerialPortParams()) { + log("Reconnect: Success. Now we waiting for ESP reboot..."); + // Now, we can ready to reconnect on old_speed + taskSleep = new ActionListener() { + public void actionPerformed(ActionEvent evt) { + if (nSpeed == 9600) { + CheckComm(); + } else { + Speed.setSelectedIndex(old_speed); + } + } + }; + sleep = new Timer(2000, taskSleep); + sleep.setRepeats(false); + sleep.setInitialDelay(2000); + sleep.start(); + } + } catch (Exception e) { + log(e.toString()); + } + } + }// GEN-LAST:event_cmdNodeRestartActionPerformed - private void MenuItemTerminalFontDecActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemTerminalFontDecActionPerformed - MenuItemViewTermFontDec.doClick(); - }// GEN-LAST:event_MenuItemTerminalFontDecActionPerformed + private void FilesUploadActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_FilesUploadActionPerformed + // log(evt.paramString()); + UploadFiles(); + }// GEN-LAST:event_FilesUploadActionPerformed - private void MenuItemTerminalFontIncActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemTerminalFontIncActionPerformed - MenuItemViewTermFontInc.doClick(); - }// GEN-LAST:event_MenuItemTerminalFontIncActionPerformed + private void FileDoActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_FileDoActionPerformed + String cmd = "dofile('" + iFile.get(iTab).getName() + "')"; + btnSend(cmd); + }// GEN-LAST:event_FileDoActionPerformed - private void MenuItemViewTermFontIncActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemViewTermFontIncActionPerformed - int size = Terminal.getFont().getSize(); - if (size < TERMINAL_FONT_SIZE_MAX) { - Terminal.setFont(Terminal.getFont().deriveFont(Terminal.getFont().getSize() + 1f)); + private void FileSendESPActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_FileSendESPActionPerformed + if (FileSendESP.isSelected()) { + if (TextEditor1.get(iTab).getText().length() == 0) { + JOptionPane.showMessageDialog(null, "File empty."); + FileSendESP.setSelected(false); + return; + } + SendToESP(TextEditor1.get(iTab).getText()); } else { - Terminal.setFont(Terminal.getFont().deriveFont(TERMINAL_FONT_SIZE_MIN)); + StopSend(); } - prefs.putFloat(TERMINAL_FONT_SIZE, Terminal.getFont().getSize()); - PrefsFlush(); - }// GEN-LAST:event_MenuItemViewTermFontIncActionPerformed + }// GEN-LAST:event_FileSendESPActionPerformed - private void MenuItemViewTermFontDecActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemViewTermFontDecActionPerformed - int size = Terminal.getFont().getSize(); - if (size > TERMINAL_FONT_SIZE_MIN) { - Terminal.setFont(Terminal.getFont().deriveFont(Terminal.getFont().getSize() - 1f)); - } else { - Terminal.setFont(Terminal.getFont().deriveFont(TERMINAL_FONT_SIZE_MAX)); + private void FileSaveESPActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_FileSaveESPActionPerformed + if (!FileSaveESP.isSelected()) { + StopSend(); + return; } - prefs.putFloat(TERMINAL_FONT_SIZE, Terminal.getFont().getSize()); - PrefsFlush(); - }// GEN-LAST:event_MenuItemViewTermFontDecActionPerformed - - private void MenuItemViewEditorFontIncActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemViewEditorFontIncActionPerformed - int size = TextEditor1.get(iTab).getFont().getSize(); - if (size < EDITOR_FONT_SIZE_MAX) { - TextEditor1.get(iTab).setFont( - TextEditor1.get(iTab).getFont().deriveFont(TextEditor1.get(iTab).getFont().getSize() + 1f)); + if (TextEditor1.get(iTab).getText().length() == 0) { + FileSaveESP.setSelected(false); + JOptionPane.showMessageDialog(null, "File empty."); + return; + } + String fName = iFile.get(iTab).getName(); + if (fName.length() == 0) { + FileSaveESP.setSelected(false); + String msg = " Can't save file to ESP without name."; + log("FileSaveESP: FAIL. " + msg); + JOptionPane.showMessageDialog(null, msg); + return; + } + if (FileAutoSaveDisk.isSelected()) { + if (!SaveFile()) { // first save file + FileSaveESP.setSelected(false); + return; + } + } + if (!pOpen || portJustOpen) { + log("FileSaveESP: Serial port not open. Operation canceled."); + FileSaveESP.setSelected(false); + return; + } + if (OptionMicroPython.isSelected()) { + pySaveFileESP(fName); } else { - TextEditor1.get(iTab).setFont(TextEditor1.get(iTab).getFont().deriveFont(EDITOR_FONT_SIZE_MIN)); + nodeSaveFileESP(fName); } - prefs.putFloat(EDITOR_FONT_SIZE, TextEditor1.get(iTab).getFont().getSize()); - PrefsFlush(); - SetTheme(prefs.getInt(COLOR_THEME, 0), true); // for all - }// GEN-LAST:event_MenuItemViewEditorFontIncActionPerformed + }// GEN-LAST:event_FileSaveESPActionPerformed - private void MenuItemViewEditorFontDecActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemViewEditorFontDecActionPerformed - int size = TextEditor1.get(iTab).getFont().getSize(); - if (size > EDITOR_FONT_SIZE_MIN) { - TextEditor1.get(iTab).setFont( - TextEditor1.get(iTab).getFont().deriveFont(TextEditor1.get(iTab).getFont().getSize() - 1f)); - } else { - TextEditor1.get(iTab).setFont(TextEditor1.get(iTab).getFont().deriveFont(EDITOR_FONT_SIZE_MAX)); + private void FileCompile1ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_FileCompile1ActionPerformed + // TODO add your handling code here: + }// GEN-LAST:event_FileCompile1ActionPerformed + + private void FileCompileDoLC3ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_FileCompileDoLC3ActionPerformed + // TODO add your handling code here: + }// GEN-LAST:event_FileCompileDoLC3ActionPerformed + + private void FileCompileDoLC2ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_FileCompileDoLC2ActionPerformed + // TODO add your handling code here: + }// GEN-LAST:event_FileCompileDoLC2ActionPerformed + + private void FileCompileDoLCActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_FileCompileDoLCActionPerformed + String fn = iFile.get(iTab).getName(); + String[] part = fn.split("."); + String cmd = "node.compile('" + fn + "')\r\ndofile(\"" + part[0] + ".lc" + "\")"; + btnSend(cmd); + }// GEN-LAST:event_FileCompileDoLCActionPerformed + + private void FileUploadBinActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_FileUploadBinActionPerformed + // TODO add your handling code here: + }// GEN-LAST:event_FileUploadBinActionPerformed + + private void FileSaveCompileDoLCActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_FileSaveCompileDoLCActionPerformed + // TODO add your handling code here: + }// GEN-LAST:event_FileSaveCompileDoLCActionPerformed + + private void FileCompileActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_FileCompileActionPerformed + String cmd = "node.compile('" + iFile.get(iTab).getName() + "')"; + btnSend(cmd); + try { + Thread.sleep(500L); + } catch (Exception e) { } - prefs.putFloat(EDITOR_FONT_SIZE, TextEditor1.get(iTab).getFont().getSize()); - PrefsFlush(); - SetTheme(prefs.getInt(COLOR_THEME, 0), true); // for all - }// GEN-LAST:event_MenuItemViewEditorFontDecActionPerformed + LocalEcho = false; + FileListReload.doClick(); + }// GEN-LAST:event_FileCompileActionPerformed - private void MenuItemViewFontDefaultActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemViewFontDefaultActionPerformed - prefs.putFloat(TERMINAL_FONT_SIZE, TERMINAL_FONT_SIZE_DEFAULT); - prefs.putFloat(EDITOR_FONT_SIZE, EDITOR_FONT_SIZE_DEFAULT); - prefs.putFloat(LOG_FONT_SIZE, LOG_FONT_SIZE_DEFAULT); - PrefsFlush(); - SetTheme(prefs.getInt(COLOR_THEME, 0), true); // for all - Terminal.setFont(Terminal.getFont().deriveFont(TERMINAL_FONT_SIZE_DEFAULT)); - Log.setFont(Log.getFont().deriveFont(LOG_FONT_SIZE_DEFAULT)); - }// GEN-LAST:event_MenuItemViewFontDefaultActionPerformed + private void FileDo1ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_FileDo1ActionPerformed + // TODO add your handling code here: + }// GEN-LAST:event_FileDo1ActionPerformed - private void MenuItemEditorFontIncActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemEditorFontIncActionPerformed - MenuItemViewEditorFontInc.doClick(); - }// GEN-LAST:event_MenuItemEditorFontIncActionPerformed + private void FilesTabbedPaneStateChanged(javax.swing.event.ChangeEvent evt) {// GEN-FIRST:event_FilesTabbedPaneStateChanged + FileLabelUpdate(); + // if (iTab > 0) FilesTabbedPane.setTitleAt(iTab, Integer.toString(iTab)); + }// GEN-LAST:event_FilesTabbedPaneStateChanged - private void MenuItemEditorFontDecActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemEditorFontDecActionPerformed - MenuItemViewEditorFontDec.doClick(); - }// GEN-LAST:event_MenuItemEditorFontDecActionPerformed + private void FileLayeredPaneFocusGained(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_FileLayeredPaneFocusGained - private void MenuItemViewLogFontIncActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemViewLogFontIncActionPerformed - int size = Log.getFont().getSize(); - if (size < LOG_FONT_SIZE_MAX) { - Log.setFont(Log.getFont().deriveFont(Log.getFont().getSize() + 1f)); - } else { - Log.setFont(Log.getFont().deriveFont(LOG_FONT_SIZE_MIN)); + }// GEN-LAST:event_FileLayeredPaneFocusGained + + private void TextEditorKeyTyped(java.awt.event.KeyEvent evt) {// GEN-FIRST:event_TextEditorKeyTyped + if (UseExternalEditor.isSelected()) { + return; + } + if (!isChanged()) { + FileChanged.set(iTab, true); + UpdateEditorButtons(); } - prefs.putFloat(LOG_FONT_SIZE, Log.getFont().getSize()); - PrefsFlush(); - }// GEN-LAST:event_MenuItemViewLogFontIncActionPerformed + }// GEN-LAST:event_TextEditorKeyTyped - private void MenuItemViewLogFontDecActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemViewLogFontDecActionPerformed - int size = Log.getFont().getSize(); - if (size > LOG_FONT_SIZE_MIN) { - Log.setFont(Log.getFont().deriveFont(Log.getFont().getSize() - 1f)); - } else { - Log.setFont(Log.getFont().deriveFont(LOG_FONT_SIZE_MAX)); - } - prefs.putFloat(LOG_FONT_SIZE, Log.getFont().getSize()); - PrefsFlush(); - }// GEN-LAST:event_MenuItemViewLogFontDecActionPerformed + private void TextEditorInputMethodTextChanged(java.awt.event.InputMethodEvent evt) {// GEN-FIRST:event_TextEditorInputMethodTextChanged - private void MenuItemLogFontIncActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemLogFontIncActionPerformed - MenuItemViewLogFontInc.doClick(); - }// GEN-LAST:event_MenuItemLogFontIncActionPerformed + }// GEN-LAST:event_TextEditorInputMethodTextChanged - private void MenuItemLogFontDecActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemLogFontDecActionPerformed - MenuItemViewLogFontDec.doClick(); - }// GEN-LAST:event_MenuItemLogFontDecActionPerformed + private void TextEditorCaretPositionChanged(java.awt.event.InputMethodEvent evt) {// GEN-FIRST:event_TextEditorCaretPositionChanged + UpdateEditorButtons(); + }// GEN-LAST:event_TextEditorCaretPositionChanged - private void SpeedItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_SpeedItemStateChanged - nSpeed = Integer.parseInt((String) Speed.getSelectedItem()); + private void TextEditorActiveLineRangeChanged(org.fife.ui.rsyntaxtextarea.ActiveLineRangeEvent evt) {// GEN-FIRST:event_TextEditorActiveLineRangeChanged + UpdateEditorButtons(); + }// GEN-LAST:event_TextEditorActiveLineRangeChanged - }// GEN-LAST:event_SpeedItemStateChanged + private void TextEditorFocusGained(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_TextEditorFocusGained - private void LogCaretUpdate(javax.swing.event.CaretEvent evt) {// GEN-FIRST:event_LogCaretUpdate - }// GEN-LAST:event_LogCaretUpdate + }// GEN-LAST:event_TextEditorFocusGained - private void LogMaxSizeActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_LogMaxSizeActionPerformed + private void TextEditorCaretUpdate(javax.swing.event.CaretEvent evt) {// GEN-FIRST:event_TextEditorCaretUpdate + UpdateEditorButtons(); + }// GEN-LAST:event_TextEditorCaretUpdate - }// GEN-LAST:event_LogMaxSizeActionPerformed + private void ButtonSendLineActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonSendLineActionPerformed + MenuItemEditSendLine.doClick(); + }// GEN-LAST:event_ButtonSendLineActionPerformed - private void LogMaxSizeFocusLost(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_LogMaxSizeFocusLost - try { - LogMax = Integer.parseInt(LogMaxSize.getText()) * 1024; - } catch (Exception e) { - LogMax = 1024 * 10; - } - if (LogMax < 2048) { - LogMax = 2048; - } else if (LogMax > 32 * 1024) { - LogMax = 32 * 1024; - } - prefs.putInt(LOG_MAX_SIZE, LogMax); - log("Log max size set to " + Integer.toString(LogMax / 1024) + " KB", debug); - }// GEN-LAST:event_LogMaxSizeFocusLost + private void ButtonSendSelectedActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonSendSelectedActionPerformed + MenuItemEditSendSelected.doClick(); + }// GEN-LAST:event_ButtonSendSelectedActionPerformed - private void TerminalMaxSizeFocusLost(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_TerminalMaxSizeFocusLost - try { - TerminalMax = Integer.parseInt(TerminalMaxSize.getText()) * 1024; - } catch (Exception e) { - TerminalMax = 1024 * 100; - } - if (TerminalMax < 2048) { - TerminalMax = 2048; - } else if (TerminalMax > 1024 * 1024) { - TerminalMax = 1024 * 1024; - } - prefs.putInt(TERMINAL_MAX_SIZE, TerminalMax); - log("Terminal max size set to " + Integer.toString(TerminalMax / 1024) + " KB", debug); - }// GEN-LAST:event_TerminalMaxSizeFocusLost + private void ButtonPasteActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonPasteActionPerformed + MenuItemEditPaste.doClick(); + }// GEN-LAST:event_ButtonPasteActionPerformed - private void SnippetCancelEditActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_SnippetCancelEditActionPerformed - if (SnippetText.canUndo() || SnippetText.canRedo()) { - this.setAlwaysOnTop(false); - int returnVal = JOptionPane.showConfirmDialog(null, - "Discard any changes and CANCEL edit this snippet without saving?", "Attention", - JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE); - this.setAlwaysOnTop(AlwaysOnTop.isSelected()); - if (returnVal != JOptionPane.YES_OPTION) { - return; - } - } - SnippetName.setEnabled(false); - SnippetSave.setEnabled(false); - SnippetRun.setEnabled(false); - SnippetCancelEdit.setEnabled(false); - SnippetText.setEnabled(false); - SnippetScrollPane.setEnabled(false); - SnippetText.setEditable(false); - SnippetText.setText(""); - SnippetText.discardAllEdits(); - SnippetName.setText(""); - SnippetText.setBackground(SnippetTopPane.getBackground()); - }// GEN-LAST:event_SnippetCancelEditActionPerformed + private void ButtonCopyActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonCopyActionPerformed + MenuItemEditCopy.doClick(); + }// GEN-LAST:event_ButtonCopyActionPerformed - private void TurboModeItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_TurboModeItemStateChanged + private void ButtonCutActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonCutActionPerformed + MenuItemEditCut.doClick(); + }// GEN-LAST:event_ButtonCutActionPerformed - }// GEN-LAST:event_TurboModeItemStateChanged + private void ButtonRedoActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonRedoActionPerformed + MenuItemEditRedo.doClick(); + }// GEN-LAST:event_ButtonRedoActionPerformed - private void TurboModeActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_TurboModeActionPerformed - if (TurboMode.isSelected()) { - DumbMode.setEnabled(false); - DumbMode.setSelected(false); - } else { - DumbMode.setEnabled(true); - } - prefs.putBoolean(TURBO_MODE, TurboMode.isSelected()); - PrefsFlush(); - }// GEN-LAST:event_TurboModeActionPerformed + private void ButtonUndoActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonUndoActionPerformed + MenuItemEditUndo.doClick(); + }// GEN-LAST:event_ButtonUndoActionPerformed - private void MenuItemESPResetActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemESPResetActionPerformed - if (LeftTab.getSelectedIndex() == 0) { // NodeMCU TAB - cmdNodeRestart.doClick(); - } else if (LeftTab.getSelectedIndex() == 1) { // AT TAB - AT_Restart.doClick(); - } - }// GEN-LAST:event_MenuItemESPResetActionPerformed + private void ButtonFileCloseActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonFileCloseActionPerformed + MenuItemFileClose.doClick(); + }// GEN-LAST:event_ButtonFileCloseActionPerformed - private void MenuItemESPFormatActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemESPFormatActionPerformed - if (LeftTab.getSelectedIndex() == 0) { // NodeMCU TAB - int isFormat = Dialog("Format ESP flash data area and remove ALL files. Are you sure?", - JOptionPane.YES_NO_OPTION); - if (isFormat == JOptionPane.YES_OPTION) { - btnSend("file.format()"); - } - } - }// GEN-LAST:event_MenuItemESPFormatActionPerformed + private void ButtonFileSaveAllActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonFileSaveAllActionPerformed + MenuItemFileSaveAll.doClick(); + }// GEN-LAST:event_ButtonFileSaveAllActionPerformed - private void MenuItemTerminalFormatActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemTerminalFormatActionPerformed - MenuItemESPFormat.doClick(); - }// GEN-LAST:event_MenuItemTerminalFormatActionPerformed + private void ButtonFileSaveActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonFileSaveActionPerformed + MenuItemFileSave.doClick(); + }// GEN-LAST:event_ButtonFileSaveActionPerformed - private void MenuItemLinksAPIenActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemLinksAPIenActionPerformed - goLink(api_en_uri); - }// GEN-LAST:event_MenuItemLinksAPIenActionPerformed + private void ButtonFileReloadActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonFileReloadActionPerformed + MenuItemFileReload.doClick(); + }// GEN-LAST:event_ButtonFileReloadActionPerformed - private void MenuItemLinksAPIruActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemLinksAPIruActionPerformed - goLink(api_ru_uri); - }// GEN-LAST:event_MenuItemLinksAPIruActionPerformed + private void ButtonFileOpenActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonFileOpenActionPerformed + MenuItemFileOpen.doClick(); + }// GEN-LAST:event_ButtonFileOpenActionPerformed - private void MenuItemLinksChangelogActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemLinksChangelogActionPerformed - goLink(changelog_uri); - }// GEN-LAST:event_MenuItemLinksChangelogActionPerformed + private void ButtonFileNewActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_ButtonFileNewActionPerformed + MenuItemFileNew.doClick(); + }// GEN-LAST:event_ButtonFileNewActionPerformed - private void MenuItemLinksDownloadLatestFirmwareActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemLinksDownloadLatestFirmwareActionPerformed - goLink(nodemcu_download_latest_uri); - }// GEN-LAST:event_MenuItemLinksDownloadLatestFirmwareActionPerformed + private void OptionNodeMCUStateChanged(javax.swing.event.ChangeEvent evt) {// GEN-FIRST:event_OptionNodeMCUStateChanged + if (OptionNodeMCU.isSelected()) { + SetFirmwareType(FIRMWARE_NODEMCU); + } + }// GEN-LAST:event_OptionNodeMCUStateChanged - private void MenuItemLinksAPIcnActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemLinksAPIcnActionPerformed - goLink(api_cn_uri); - }// GEN-LAST:event_MenuItemLinksAPIcnActionPerformed + private void OptionMicroPythonStateChanged(javax.swing.event.ChangeEvent evt) {// GEN-FIRST:event_OptionMicroPythonStateChanged + if (OptionMicroPython.isSelected()) { + SetFirmwareType(FIRMWARE_MPYTHON); + } + }// GEN-LAST:event_OptionMicroPythonStateChanged - private void CustomPortNameFocusLost(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_CustomPortNameFocusLost - prefs.put(CUSTOM_PORT_NAME, CustomPortName.getText()); - }// GEN-LAST:event_CustomPortNameFocusLost + private void MicroPythonGPIO0_1ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MicroPythonGPIO0_1ActionPerformed + cmdButtonGPIO(0, 1); + }// GEN-LAST:event_MicroPythonGPIO0_1ActionPerformed - private void FileCompileActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_FileCompileActionPerformed - String cmd = "node.compile('" + iFile.get(iTab).getName() + "')"; - btnSend(cmd); - try { - Thread.sleep(500L); - } catch (Exception e) { - } - LocalEcho = false; - FileListReload.doClick(); - }// GEN-LAST:event_FileCompileActionPerformed + private void MicroPythonGPIO0_0ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MicroPythonGPIO0_0ActionPerformed + cmdButtonGPIO(0, 0); + }// GEN-LAST:event_MicroPythonGPIO0_0ActionPerformed - private void FileCompileDoLCActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_FileCompileDoLCActionPerformed - String fn = iFile.get(iTab).getName(); - String[] part = fn.split("."); - String cmd = "node.compile('" + fn + "')\r\ndofile(\"" + part[0] + ".lc" + "\")"; - btnSend(cmd); - }// GEN-LAST:event_FileCompileDoLCActionPerformed + private void MicroPythonGPIO2_1ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MicroPythonGPIO2_1ActionPerformed + cmdButtonGPIO(2, 1); + }// GEN-LAST:event_MicroPythonGPIO2_1ActionPerformed - private void MenuItemESPFileDoActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemESPFileDoActionPerformed + private void MicroPythonGPIO2_0ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MicroPythonGPIO2_0ActionPerformed + cmdButtonGPIO(2, 0); + }// GEN-LAST:event_MicroPythonGPIO2_0ActionPerformed - }// GEN-LAST:event_MenuItemESPFileDoActionPerformed + private void MicroPythonGPIO4_1ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MicroPythonGPIO4_1ActionPerformed + cmdButtonGPIO(4, 1); + }// GEN-LAST:event_MicroPythonGPIO4_1ActionPerformed - private void MenuItemESPFileDeleteActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemESPFileDeleteActionPerformed - // TODO add your handling code here: - }// GEN-LAST:event_MenuItemESPFileDeleteActionPerformed + private void MicroPythonGPIO4_0ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MicroPythonGPIO4_0ActionPerformed + cmdButtonGPIO(4, 0); + }// GEN-LAST:event_MicroPythonGPIO4_0ActionPerformed - private void ContextMenuESPFileLUAPopupMenuWillBecomeVisible(javax.swing.event.PopupMenuEvent evt) {// GEN-FIRST:event_ContextMenuESPFileLUAPopupMenuWillBecomeVisible + private void MicroPythonGPIO5_0ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MicroPythonGPIO5_0ActionPerformed + cmdButtonGPIO(5, 0); + }// GEN-LAST:event_MicroPythonGPIO5_0ActionPerformed - }// GEN-LAST:event_ContextMenuESPFileLUAPopupMenuWillBecomeVisible + private void MicroPythonGPIO5_1ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MicroPythonGPIO5_1ActionPerformed + cmdButtonGPIO(5, 1); + }// GEN-LAST:event_MicroPythonGPIO5_1ActionPerformed - private void logoMouseClicked(java.awt.event.MouseEvent evt) {// GEN-FIRST:event_logoMouseClicked - MenuItemHelpAbout.doClick(); - }// GEN-LAST:event_logoMouseClicked + private void MicroPythonGPIO9_0ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MicroPythonGPIO9_0ActionPerformed + cmdButtonGPIO(9, 0); + }// GEN-LAST:event_MicroPythonGPIO9_0ActionPerformed - private void TerminalPropertyChange(java.beans.PropertyChangeEvent evt) {// GEN-FIRST:event_TerminalPropertyChange + private void MicroPythonGPIO9_1ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MicroPythonGPIO9_1ActionPerformed + cmdButtonGPIO(9, 1); + }// GEN-LAST:event_MicroPythonGPIO9_1ActionPerformed - }// GEN-LAST:event_TerminalPropertyChange + private void MicroPythonGPIO10_0ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MicroPythonGPIO10_0ActionPerformed + cmdButtonGPIO(10, 0); + }// GEN-LAST:event_MicroPythonGPIO10_0ActionPerformed - private void RightFilesSplitPanePropertyChange(java.beans.PropertyChangeEvent evt) {// GEN-FIRST:event_RightFilesSplitPanePropertyChange - if ("dividerLocation".equals(evt.getPropertyName()) && MenuItemViewFileManager.isSelected()) { - prefs.putInt(FM_DIV, RightFilesSplitPane.getDividerLocation()); - } - }// GEN-LAST:event_RightFilesSplitPanePropertyChange + private void MicroPythonGPIO10_1ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MicroPythonGPIO10_1ActionPerformed + cmdButtonGPIO(10, 1); + }// GEN-LAST:event_MicroPythonGPIO10_1ActionPerformed - private void RightBigPanePropertyChange(java.beans.PropertyChangeEvent evt) {// GEN-FIRST:event_RightBigPanePropertyChange + private void MicroPythonGPIO12_0ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MicroPythonGPIO12_0ActionPerformed + cmdButtonGPIO(12, 0); + }// GEN-LAST:event_MicroPythonGPIO12_0ActionPerformed - }// GEN-LAST:event_RightBigPanePropertyChange + private void MicroPythonGPIO12_1ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MicroPythonGPIO12_1ActionPerformed + cmdButtonGPIO(12, 1); + }// GEN-LAST:event_MicroPythonGPIO12_1ActionPerformed - private void formPropertyChange(java.beans.PropertyChangeEvent evt) {// GEN-FIRST:event_formPropertyChange - // log(evt.getPropertyName()); - }// GEN-LAST:event_formPropertyChange + private void MicroPythonGPIO13_0ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MicroPythonGPIO13_0ActionPerformed + cmdButtonGPIO(13, 0); + }// GEN-LAST:event_MicroPythonGPIO13_0ActionPerformed - private void formComponentResized(java.awt.event.ComponentEvent evt) {// GEN-FIRST:event_formComponentResized - isFileManagerShow(); - }// GEN-LAST:event_formComponentResized + private void MicroPythonGPIO13_1ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MicroPythonGPIO13_1ActionPerformed + cmdButtonGPIO(13, 1); + }// GEN-LAST:event_MicroPythonGPIO13_1ActionPerformed - private void FilesUploadActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_FilesUploadActionPerformed - // log(evt.paramString()); - UploadFiles(); - }// GEN-LAST:event_FilesUploadActionPerformed + private void MicroPythonGPIO14_1ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MicroPythonGPIO14_1ActionPerformed + cmdButtonGPIO(14, 1); + }// GEN-LAST:event_MicroPythonGPIO14_1ActionPerformed - private void FileListReloadActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_FileListReloadActionPerformed - ListFiles(); - }// GEN-LAST:event_FileListReloadActionPerformed + private void MicroPythonGPIO15_1ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MicroPythonGPIO15_1ActionPerformed + cmdButtonGPIO(15, 1); + }// GEN-LAST:event_MicroPythonGPIO15_1ActionPerformed - private void FileAsButton1ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_FileAsButton1ActionPerformed - String fn = evt.getActionCommand(); - if (fn.endsWith(".lua") || fn.endsWith(".lc")) { - String cmd = "dofile(\"" + fn + "\")"; - btnSend(cmd); - } else if (fn.endsWith(".bin") || fn.endsWith(".dat")) { - HexDump(fn); - } else { - ViewFile(fn); - } - }// GEN-LAST:event_FileAsButton1ActionPerformed + private void MicroPythonGPIO16_1ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MicroPythonGPIO16_1ActionPerformed + cmdButtonGPIO(16, 1); + }// GEN-LAST:event_MicroPythonGPIO16_1ActionPerformed - private void FileAsButton1MouseClicked(java.awt.event.MouseEvent evt) {// GEN-FIRST:event_FileAsButton1MouseClicked + private void MicroPythonGPIO14_0ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MicroPythonGPIO14_0ActionPerformed + cmdButtonGPIO(14, 0); + }// GEN-LAST:event_MicroPythonGPIO14_0ActionPerformed - }// GEN-LAST:event_FileAsButton1MouseClicked + private void MicroPythonGPIO15_0ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MicroPythonGPIO15_0ActionPerformed + cmdButtonGPIO(15, 0); + }// GEN-LAST:event_MicroPythonGPIO15_0ActionPerformed - private void NodeInfoActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_NodeInfoActionPerformed - btnSend("=node.info()"); - }// GEN-LAST:event_NodeInfoActionPerformed + private void MicroPythonGPIO16_0ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MicroPythonGPIO16_0ActionPerformed + cmdButtonGPIO(16, 0); + }// GEN-LAST:event_MicroPythonGPIO16_0ActionPerformed - private void NodeChipIDActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_NodeChipIDActionPerformed - btnSend("=node.chipid()"); - }// GEN-LAST:event_NodeChipIDActionPerformed + private void MicroPythonGPIO0ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MicroPythonGPIO0ActionPerformed + cmdButtonGetGPIO(0); + }// GEN-LAST:event_MicroPythonGPIO0ActionPerformed - private void NodeFlashIDActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_NodeFlashIDActionPerformed - btnSend("=node.flashid()"); - }// GEN-LAST:event_NodeFlashIDActionPerformed + private void MicroPythonGPIO2ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MicroPythonGPIO2ActionPerformed + cmdButtonGetGPIO(2); + }// GEN-LAST:event_MicroPythonGPIO2ActionPerformed - private void NodeHeapActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_NodeHeapActionPerformed - btnSend("=node.heap()"); - }// GEN-LAST:event_NodeHeapActionPerformed + private void MicroPythonGPIO4ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MicroPythonGPIO4ActionPerformed + cmdButtonGetGPIO(4); + }// GEN-LAST:event_MicroPythonGPIO4ActionPerformed - private void FileFormatActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_FileFormatActionPerformed - MenuItemESPFormat.doClick(); - }// GEN-LAST:event_FileFormatActionPerformed + private void MicroPythonGPIO5ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MicroPythonGPIO5ActionPerformed + cmdButtonGetGPIO(5); + }// GEN-LAST:event_MicroPythonGPIO5ActionPerformed - private void FileUploadBinActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_FileUploadBinActionPerformed - // TODO add your handling code here: - }// GEN-LAST:event_FileUploadBinActionPerformed + private void MicroPythonGPIO9ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MicroPythonGPIO9ActionPerformed + cmdButtonGetGPIO(9); + }// GEN-LAST:event_MicroPythonGPIO9ActionPerformed - private void FileSaveCompileDoLCActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_FileSaveCompileDoLCActionPerformed - // TODO add your handling code here: - }// GEN-LAST:event_FileSaveCompileDoLCActionPerformed + private void MicroPythonGPIO10ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MicroPythonGPIO10ActionPerformed + cmdButtonGetGPIO(10); + }// GEN-LAST:event_MicroPythonGPIO10ActionPerformed - private void MenuItemViewSnippetsActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemViewSnippetsActionPerformed - prefs.putBoolean(SHOW_SNIP_RIGHT, MenuItemViewSnippets.isSelected()); - isRightSnippetsShow(); - }// GEN-LAST:event_MenuItemViewSnippetsActionPerformed + private void MicroPythonGPIO12ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MicroPythonGPIO12ActionPerformed + cmdButtonGetGPIO(12); + }// GEN-LAST:event_MicroPythonGPIO12ActionPerformed - private void MenuItemViewFileManagerActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemViewFileManagerActionPerformed - prefs.putBoolean(SHOW_FM_RIGHT, MenuItemViewFileManager.isSelected()); - isFileManagerShow(); - }// GEN-LAST:event_MenuItemViewFileManagerActionPerformed + private void MicroPythonGPIO13ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MicroPythonGPIO13ActionPerformed + cmdButtonGetGPIO(13); + }// GEN-LAST:event_MicroPythonGPIO13ActionPerformed + + private void MicroPythonGPIO14ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MicroPythonGPIO14ActionPerformed + cmdButtonGetGPIO(14); + }// GEN-LAST:event_MicroPythonGPIO14ActionPerformed + + private void MicroPythonGPIO15ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MicroPythonGPIO15ActionPerformed + cmdButtonGetGPIO(15); + }// GEN-LAST:event_MicroPythonGPIO15ActionPerformed + + private void MicroPythonGPIO16ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MicroPythonGPIO16ActionPerformed + cmdButtonGetGPIO(16); + }// GEN-LAST:event_MicroPythonGPIO16ActionPerformed - private void MenuItemViewRightExtraActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemViewRightExtraActionPerformed - RightExtraButtons.setVisible(MenuItemViewRightExtra.isSelected()); - prefs.putBoolean(SHOW_EXTRA_RIGHT, MenuItemViewRightExtra.isSelected()); - }// GEN-LAST:event_MenuItemViewRightExtraActionPerformed + private void MicroPythonSSIDFocusGained(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_MicroPythonSSIDFocusGained + if (MicroPythonSSID.getText().trim() == "SSID") { + MicroPythonSSID.setText(""); + } + }// GEN-LAST:event_MicroPythonSSIDFocusGained - private void MenuItemFileSaveAsActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemFileSaveAsActionPerformed + private void MicroPythonSSIDActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MicroPythonSSIDActionPerformed // TODO add your handling code here: - }// GEN-LAST:event_MenuItemFileSaveAsActionPerformed + }// GEN-LAST:event_MicroPythonSSIDActionPerformed - private void FileDo1ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_FileDo1ActionPerformed + private void cmdMicroPythonStaConnectActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdMicroPythonStaConnectActionPerformed + btnSend("import network;nic=network.WLAN(network.STA_IF);nic.active(True);nic.connect('" + + MicroPythonSSID.getText() + "','" + MicroPythonPASS.getText() + "')"); + }// GEN-LAST:event_cmdMicroPythonStaConnectActionPerformed + + private void MicroPythonPASSActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MicroPythonPASSActionPerformed // TODO add your handling code here: - }// GEN-LAST:event_FileDo1ActionPerformed + }// GEN-LAST:event_MicroPythonPASSActionPerformed + + private void MicroPythonPASSFocusGained(java.awt.event.FocusEvent evt) {// GEN-FIRST:event_MicroPythonPASSFocusGained + if (MicroPythonPASS.getText().trim() == "password") { + MicroPythonPASS.setText(""); + } + }// GEN-LAST:event_MicroPythonPASSFocusGained + + private void cmdMicroPythonSendToHostActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdMicroPythonSendToHostActionPerformed + btnSend("import socket;" + "addr=socket.getaddrinfo('" + MicroPythonRemoteHost.getText() + "'," + + Integer.parseInt(MicroPythonRemotePort.getText()) + ")[0][-1]\r\n" + + "s = socket.socket();s.connect(addr);s.send(b'" + MicroPythonRemoteData.getText() + + "');data = s.recv(1000);s.close()"); + }// GEN-LAST:event_cmdMicroPythonSendToHostActionPerformed + + private void cmdMicroPythonScanActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdMicroPythonScanActionPerformed + btnSend("import network;nic = network.WLAN(network.STA_IF);nic.scan()"); + }// GEN-LAST:event_cmdMicroPythonScanActionPerformed + + private void EditorOnlyCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_EditorOnlyCheckBoxItemStateChanged + MenuItemViewEditorOnly.setSelected(EditorOnlyCheckBox.isSelected()); + }// GEN-LAST:event_EditorOnlyCheckBoxItemStateChanged + + private void MenuItemViewEditorOnlyItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_MenuItemViewEditorOnlyItemStateChanged + if (MenuItemViewEditorOnly.isSelected()) { + TerminalOnlyCheckBox.setSelected(false); + MenuItemViewTerminalOnly.setSelected(false); + EditorOnlyCheckBox.setSelected(true); + HorizontSplit.setDividerLocation(HorizontSplit.getWidth()); + } else { + EditorOnlyCheckBox.setSelected(false); + HorizontSplit.setDividerLocation(550); + } + }// GEN-LAST:event_MenuItemViewEditorOnlyItemStateChanged - private void MenuItemViewToolbarActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemViewToolbarActionPerformed - prefs.putBoolean(SHOW_TOOLBAR, MenuItemViewToolbar.isSelected()); - isToolbarShow(); - }// GEN-LAST:event_MenuItemViewToolbarActionPerformed + private void MenuItemViewEditorOnlyActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemViewEditorOnlyActionPerformed + // TODO add your handling code here: + }// GEN-LAST:event_MenuItemViewEditorOnlyActionPerformed - private void FileCompileDoLC2ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_FileCompileDoLC2ActionPerformed + private void MenuItemLinksIoTmanagerActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemLinksIoTmanagerActionPerformed + goLink(iot_manager); + }// GEN-LAST:event_MenuItemLinksIoTmanagerActionPerformed + + private void AlwaysOnTopActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_AlwaysOnTopActionPerformed // TODO add your handling code here: - }// GEN-LAST:event_FileCompileDoLC2ActionPerformed + }// GEN-LAST:event_AlwaysOnTopActionPerformed - private void FileCompileDoLC3ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_FileCompileDoLC3ActionPerformed + private void PyListDirActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_PyListDirActionPerformed + PyListFiles(); + }// GEN-LAST:event_PyListDirActionPerformed + + private void PyFileAsButton1MouseClicked(java.awt.event.MouseEvent evt) {// GEN-FIRST:event_PyFileAsButton1MouseClicked // TODO add your handling code here: - }// GEN-LAST:event_FileCompileDoLC3ActionPerformed + }// GEN-LAST:event_PyFileAsButton1MouseClicked - private void MenuItemViewLeftExtraActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemViewLeftExtraActionPerformed - prefs.putBoolean(SHOW_EXTRA_LEFT, MenuItemViewLeftExtra.isSelected()); - isLeftExtraShow(); - }// GEN-LAST:event_MenuItemViewLeftExtraActionPerformed + private void PyFileAsButton1ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_PyFileAsButton1ActionPerformed + String fn = evt.getActionCommand(); + if (fn.endsWith(".py") || fn.endsWith(".pyc")) { + String cmd = "dofile(\"" + fn + "\")"; + btnSend(cmd); + } else if (fn.endsWith(".bin") || fn.endsWith(".dat")) { + // HexDump(fn); + } else { + // ViewFile(fn); + } + }// GEN-LAST:event_PyFileAsButton1ActionPerformed - private void MenuViewActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuViewActionPerformed + private void CommandEchoItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_CommandEchoItemStateChanged + prefs.putBoolean(COMMAND_ECHO, CommandEcho.isSelected()); + }// GEN-LAST:event_CommandEchoItemStateChanged - }// GEN-LAST:event_MenuViewActionPerformed + private void cmdSysResetActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSysResetActionPerformed + btnSendEcho("sys reset"); + }// GEN-LAST:event_cmdSysResetActionPerformed - private void UseCustomPortNameActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_UseCustomPortNameActionPerformed - Port.setEnabled(!UseCustomPortName.isSelected()); - Port.setVisible(!UseCustomPortName.isSelected()); - CustomPortName.setEnabled(UseCustomPortName.isSelected()); - prefs.putBoolean(USE_CUSTOM_PORT, UseCustomPortName.isSelected()); - }// GEN-LAST:event_UseCustomPortNameActionPerformed + private void cmdSysFactoryResetActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSysFactoryResetActionPerformed + btnSendEcho("sys factoryRESET"); + }// GEN-LAST:event_cmdSysFactoryResetActionPerformed - private void RightSplitPanePropertyChange(java.beans.PropertyChangeEvent evt) {// GEN-FIRST:event_RightSplitPanePropertyChange - if ("dividerLocation".equals(evt.getPropertyName()) && MenuItemViewLog.isSelected()) { - prefs.putInt(LOG_DIV, RightSplitPane.getDividerLocation()); - } - }// GEN-LAST:event_RightSplitPanePropertyChange + private void cmdSysGetVerActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSysGetVerActionPerformed + btnSendEcho("sys get ver"); + }// GEN-LAST:event_cmdSysGetVerActionPerformed - private void AutoScrollActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_AutoScrollActionPerformed - prefs.putBoolean(AUTO_SCROLL, AutoScroll.isSelected()); - }// GEN-LAST:event_AutoScrollActionPerformed + private void cmdSysGetHwEuiActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdSysGetHwEuiActionPerformed + btnSendEcho("sys get hweui"); + }// GEN-LAST:event_cmdSysGetHwEuiActionPerformed - private void PortDTRActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_PortDTRActionPerformed - prefs.putBoolean(PORT_DTR, PortDTR.isSelected()); - try { - serialPort.setDTR(PortDTR.isSelected()); - if (PortDTR.isSelected()) { - log("DTR set to ON"); - } else { - log("DTR set to OFF"); - } - } catch (Exception e) { - PortDTR.setSelected(false); - log(e.toString()); - log("Can't change DTR state"); - } - UpdateLED(); - }// GEN-LAST:event_PortDTRActionPerformed + private void cmdMacTXActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdMacTXActionPerformed + btnSendEcho("mac tx " + TxConfirmed.getSelectedItem() + " " + MacTxPort.getText().trim() + " " + + MacTxData.getText().trim()); + }// GEN-LAST:event_cmdMacTXActionPerformed - private void PortRTSActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_PortRTSActionPerformed - prefs.putBoolean(PORT_RTS, PortRTS.isSelected()); - try { - serialPort.setRTS(PortRTS.isSelected()); - if (PortRTS.isSelected()) { - log("RTS set to ON"); - } else { - log("RTS set to OFF"); - } - } catch (Exception e) { - PortRTS.setSelected(false); - log(e.toString()); - log("Can't change RTS state"); - } - UpdateLED(); - }// GEN-LAST:event_PortRTSActionPerformed + private void cmdMacjoinABPActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdMacjoinABPActionPerformed + btnSendEcho("mac join abp"); + }// GEN-LAST:event_cmdMacjoinABPActionPerformed - private void UseExternalEditorItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_UseExternalEditorItemStateChanged - prefs.putBoolean(USE_EXT_EDITOR, UseExternalEditor.isSelected()); - UpdateButtons(); - }// GEN-LAST:event_UseExternalEditorItemStateChanged + private void cmdMacJoinOTAAActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdMacJoinOTAAActionPerformed + btnSendEcho("mac join otaa"); + }// GEN-LAST:event_cmdMacJoinOTAAActionPerformed - private void MenuItemViewToolbarItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_MenuItemViewToolbarItemStateChanged - prefs.putBoolean(SHOW_TOOLBAR, MenuItemViewToolbar.isSelected()); - isToolbarShow(); - }// GEN-LAST:event_MenuItemViewToolbarItemStateChanged + private void cmdMacSaveActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdMacSaveActionPerformed + btnSendEcho("mac save"); + }// GEN-LAST:event_cmdMacSaveActionPerformed - private void MenuItemViewLeftExtraItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_MenuItemViewLeftExtraItemStateChanged - prefs.putBoolean(SHOW_EXTRA_LEFT, MenuItemViewLeftExtra.isSelected()); - isLeftExtraShow(); - }// GEN-LAST:event_MenuItemViewLeftExtraItemStateChanged + private void cmdMacSetDevAddrActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdMacSetDevAddrActionPerformed + btnSendEcho("mac set devaddr " + DevAddr.getText().trim()); + }// GEN-LAST:event_cmdMacSetDevAddrActionPerformed - private void MenuItemViewSnippetsItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_MenuItemViewSnippetsItemStateChanged - prefs.putBoolean(SHOW_SNIP_RIGHT, MenuItemViewSnippets.isSelected()); - isRightSnippetsShow(); - }// GEN-LAST:event_MenuItemViewSnippetsItemStateChanged + private void cmdMacSetDevEuiActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdMacSetDevEuiActionPerformed + btnSendEcho("mac set deveui " + DevEUI.getText().trim()); + }// GEN-LAST:event_cmdMacSetDevEuiActionPerformed - private void MenuItemViewFileManagerItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_MenuItemViewFileManagerItemStateChanged - prefs.putBoolean(SHOW_FM_RIGHT, MenuItemViewFileManager.isSelected()); - isFileManagerShow(); - }// GEN-LAST:event_MenuItemViewFileManagerItemStateChanged + private void cmdMacSetAppEuiActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdMacSetAppEuiActionPerformed + btnSendEcho("mac set appeui " + AppEUI.getText().trim()); + }// GEN-LAST:event_cmdMacSetAppEuiActionPerformed - private void MenuItemViewRightExtraItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_MenuItemViewRightExtraItemStateChanged - RightExtraButtons.setVisible(MenuItemViewRightExtra.isSelected()); - prefs.putBoolean(SHOW_EXTRA_RIGHT, MenuItemViewRightExtra.isSelected()); - }// GEN-LAST:event_MenuItemViewRightExtraItemStateChanged + private void cmdMacSetNwkSKeyActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdMacSetNwkSKeyActionPerformed + btnSendEcho("mac set nwkskey " + NwkSKey.getText().trim()); + }// GEN-LAST:event_cmdMacSetNwkSKeyActionPerformed - private void MenuItemViewLogItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_MenuItemViewLogItemStateChanged - isLogShow(); - prefs.putBoolean(SHOW_LOG, MenuItemViewLog.isSelected()); - }// GEN-LAST:event_MenuItemViewLogItemStateChanged + private void cmdMacSetAppSKeyActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdMacSetAppSKeyActionPerformed + btnSendEcho("mac set appskey " + AppSKey.getText().trim()); + }// GEN-LAST:event_cmdMacSetAppSKeyActionPerformed - private void FileSystemInfoActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_FileSystemInfoActionPerformed - FileSystemInfo(); - }// GEN-LAST:event_FileSystemInfoActionPerformed + private void cmdMacSetAppKeyActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdMacSetAppKeyActionPerformed + btnSendEcho("mac set appkey " + AppKey.getText().trim()); + }// GEN-LAST:event_cmdMacSetAppKeyActionPerformed - private void FileRenameActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_FileRenameActionPerformed - btnSend("file.rename(\"" + FileRenameLabel.getText() + "\",\"" + FileRename.getText().trim() + "\")"); - try { - Thread.sleep(200L); - } catch (Exception e) { - } - FileListReload.doClick(); - }// GEN-LAST:event_FileRenameActionPerformed + private void cmdMacSetPwrIdxActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdMacSetPwrIdxActionPerformed + btnSendEcho("mac set pwridx " + MacPower.getText().trim()); + }// GEN-LAST:event_cmdMacSetPwrIdxActionPerformed - private void MenuItemViewDonateItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_MenuItemViewDonateItemStateChanged - DonateSmall.setVisible(!MenuItemViewDonate.isSelected()); - prefs.putBoolean(SHOW_DONATE, MenuItemViewDonate.isSelected()); - }// GEN-LAST:event_MenuItemViewDonateItemStateChanged + private void cmdMacSetDRActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdMacSetDRActionPerformed + btnSendEcho("mac set dr " + MacDR.getText().trim()); + }// GEN-LAST:event_cmdMacSetDRActionPerformed - private void MenuItemViewDonateActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemViewDonateActionPerformed - // nothing - }// GEN-LAST:event_MenuItemViewDonateActionPerformed + private void cmdMacSetAdrOnActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdMacSetAdrOnActionPerformed + btnSendEcho("mac set adr on"); + }// GEN-LAST:event_cmdMacSetAdrOnActionPerformed - private void DonateSmallActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_DonateSmallActionPerformed - goLink(donate_uri); - }// GEN-LAST:event_DonateSmallActionPerformed + private void cmdMacSetAdrOffActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdMacSetAdrOffActionPerformed + btnSendEcho("mac set adr off"); + }// GEN-LAST:event_cmdMacSetAdrOffActionPerformed - private void MenuItemLinksDownloadLatestFlasherActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemLinksDownloadLatestFlasherActionPerformed - goLink(flasher_uri); - }// GEN-LAST:event_MenuItemLinksDownloadLatestFlasherActionPerformed + private void cmdMacGetDevAddrActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdMacGetDevAddrActionPerformed + btnSendEcho("mac get devaddr"); + }// GEN-LAST:event_cmdMacGetDevAddrActionPerformed - private void MenuItemLinksBuyDevBoardActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemLinksBuyDevBoardActionPerformed - goLink(buy_nodeMCU); - }// GEN-LAST:event_MenuItemLinksBuyDevBoardActionPerformed + private void cmdMacGetDevEuiActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdMacGetDevEuiActionPerformed + btnSendEcho("mac get deveui"); + }// GEN-LAST:event_cmdMacGetDevEuiActionPerformed - private void MenuItemLinksBuyESP8266ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemLinksBuyESP8266ActionPerformed - goLink(buy_esp8266); - }// GEN-LAST:event_MenuItemLinksBuyESP8266ActionPerformed + private void cmdMacGetAppEuiActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdMacGetAppEuiActionPerformed + btnSendEcho("mac get appeui"); + }// GEN-LAST:event_cmdMacGetAppEuiActionPerformed - private void MenuItemLinksBuyESD12ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemLinksBuyESD12ActionPerformed - goLink(buy_esd12); - }// GEN-LAST:event_MenuItemLinksBuyESD12ActionPerformed + private void cmdMacGetDRActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdMacGetDRActionPerformed + btnSendEcho("mac get dr"); + }// GEN-LAST:event_cmdMacGetDRActionPerformed - private void MenuItemLinksESPlorerForumEnActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemLinksESPlorerForumEnActionPerformed - goLink(esp8266com_uri); - }// GEN-LAST:event_MenuItemLinksESPlorerForumEnActionPerformed + private void cmdMacGetAdrActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdMacGetAdrActionPerformed + btnSendEcho("mac get adr"); + }// GEN-LAST:event_cmdMacGetAdrActionPerformed - private void MenuItemLinksESPlorerForumRuActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemLinksESPlorerForumRuActionPerformed - goLink(esp8266ru_uri); - }// GEN-LAST:event_MenuItemLinksESPlorerForumRuActionPerformed + private void cmdMacGetStatusActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdMacGetStatusActionPerformed + btnSendEcho("mac get status"); + }// GEN-LAST:event_cmdMacGetStatusActionPerformed - private void MenuItemLinksESPlorerLatestActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemLinksESPlorerLatestActionPerformed - goLink(esplorer_latest); - }// GEN-LAST:event_MenuItemLinksESPlorerLatestActionPerformed + private void DevAddrActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_DevAddrActionPerformed + cmdMacSetDevAddr.doClick(); + }// GEN-LAST:event_DevAddrActionPerformed - private void MenuItemLinksESPlorerSourceActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemLinksESPlorerSourceActionPerformed - goLink(esplorer_source); - }// GEN-LAST:event_MenuItemLinksESPlorerSourceActionPerformed + private void NwkSKeyActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_NwkSKeyActionPerformed + cmdMacSetNwkSKey.doClick(); + }// GEN-LAST:event_NwkSKeyActionPerformed - private void MenuItemLinksESPlorerHomeActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemLinksESPlorerHomeActionPerformed - goLink(homepage_uri); - }// GEN-LAST:event_MenuItemLinksESPlorerHomeActionPerformed + private void AppSKeyActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_AppSKeyActionPerformed + cmdMacSetAppSKey.doClick(); + }// GEN-LAST:event_AppSKeyActionPerformed - private void MenuItemLinksDonateActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemLinksDonateActionPerformed - goLink(donate_uri); - }// GEN-LAST:event_MenuItemLinksDonateActionPerformed + private void DevEUIActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_DevEUIActionPerformed + cmdMacSetDevEui.doClick(); + }// GEN-LAST:event_DevEUIActionPerformed - private void MenuItemLinksBuyOtherActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemLinksBuyOtherActionPerformed - goLink(buy_other); - }// GEN-LAST:event_MenuItemLinksBuyOtherActionPerformed + private void AppEUIActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_AppEUIActionPerformed + cmdMacSetAppEui.doClick(); + }// GEN-LAST:event_AppEUIActionPerformed - private void MenuItemLinksDownloadLatestDevActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemLinksDownloadLatestDevActionPerformed - goLink(nodemcu_download_dev_uri); - }// GEN-LAST:event_MenuItemLinksDownloadLatestDevActionPerformed + private void AppKeyActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_AppKeyActionPerformed + cmdMacSetAppKey.doClick(); + }// GEN-LAST:event_AppKeyActionPerformed - private void formWindowGainedFocus(java.awt.event.WindowEvent evt) {// GEN-FIRST:event_formWindowGainedFocus + private void MacDRActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MacDRActionPerformed + cmdMacSetDR.doClick(); + }// GEN-LAST:event_MacDRActionPerformed - }// GEN-LAST:event_formWindowGainedFocus + private void MacPowerActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MacPowerActionPerformed + cmdMacSetPwrIdx.doClick(); + }// GEN-LAST:event_MacPowerActionPerformed - private void formWindowClosing(java.awt.event.WindowEvent evt) {// GEN-FIRST:event_formWindowClosing - AppClose(); - }// GEN-LAST:event_formWindowClosing + private void cmdMacGetPwrIdxActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdMacGetPwrIdxActionPerformed + btnSendEcho("mac get pwridx"); + }// GEN-LAST:event_cmdMacGetPwrIdxActionPerformed - private void AppClose() { - Rectangle r = this.getBounds(); - prefs.putInt(WIN_X, r.x); - prefs.putInt(WIN_Y, r.y); - prefs.putInt(WIN_H, r.height); - prefs.putInt(WIN_W, r.width); - // log("w="+Integer.toString(prefs.getInt(WIN_W, 0))); - while (FilesTabbedPane.getTabCount() > 0) { - if (CloseFile() == JOptionPane.CANCEL_OPTION) { - return; - } - if ((FilesTabbedPane.getTabCount() == 1) && isFileNew()) { - break; - } - } - this.setVisible(false); - System.exit(0); - } + private void MacSFItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_MacSFItemStateChanged - private void formWindowClosed(java.awt.event.WindowEvent evt) {// GEN-FIRST:event_formWindowClosed - // TODO add your handling code here: - }// GEN-LAST:event_formWindowClosed + }// GEN-LAST:event_MacSFItemStateChanged - private void EOLItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_EOLItemStateChanged - Terminal.setEOLMarkersVisible(EOL.isSelected()); - }// GEN-LAST:event_EOLItemStateChanged + private void cmdRadiosetRxBwActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdRadiosetRxBwActionPerformed + btnSendEcho("radio set rxbw " + RadioRxBandWidth.getText().trim()); + }// GEN-LAST:event_cmdRadiosetRxBwActionPerformed - private void FileCompile1ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_FileCompile1ActionPerformed - // TODO add your handling code here: - }// GEN-LAST:event_FileCompile1ActionPerformed + private void cmdRadioSetFreqActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdRadioSetFreqActionPerformed + btnSendEcho("radio set freq " + RadioFreq.getText().trim()); + }// GEN-LAST:event_cmdRadioSetFreqActionPerformed - private void CondensedItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_CondensedItemStateChanged - prefs.putBoolean(CONDENSED, Condensed.isSelected()); - }// GEN-LAST:event_CondensedItemStateChanged + private void cmdRadioGetSFActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdRadioGetSFActionPerformed + btnSendEcho("radio get sf"); + }// GEN-LAST:event_cmdRadioGetSFActionPerformed - private void AutodetectFirmwareItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_AutodetectFirmwareItemStateChanged - prefs.putBoolean(AUTODETECT, AutodetectFirmware.isSelected()); - }// GEN-LAST:event_AutodetectFirmwareItemStateChanged + private void cmdRadioGetBwActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdRadioGetBwActionPerformed + btnSendEcho("radio get bw"); + }// GEN-LAST:event_cmdRadioGetBwActionPerformed - private void MenuItemViewLF1ActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MenuItemViewLF1ActionPerformed - String lclass = LAFclass.get(Integer.parseInt(evt.getActionCommand())); - prefs.put("LAF", lclass); - log("Set New LookAndFeel to:" + lclass); - int isExit = Dialog("New LookAndFeel skin will be appled after program restart. Exit now?", - JOptionPane.YES_NO_OPTION); - if (isExit == JOptionPane.YES_OPTION) { - AppClose(); + private void cmdRadioGetRxBwActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdRadioGetRxBwActionPerformed + btnSendEcho("radio get rxbw"); + }// GEN-LAST:event_cmdRadioGetRxBwActionPerformed + + private void cmdRadioGetFreqActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_cmdRadioGetFreqActionPerformed + btnSendEcho("radio get freq"); + }// GEN-LAST:event_cmdRadioGetFreqActionPerformed + + private void MacSFActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MacSFActionPerformed + if ("comboBoxChanged".equals(evt.getActionCommand())) { + btnSendEcho("radio set sf " + MacSF.getSelectedItem()); } - }// GEN-LAST:event_MenuItemViewLF1ActionPerformed + }// GEN-LAST:event_MacSFActionPerformed + + private void MacBandWidthItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_MacBandWidthItemStateChanged + + }// GEN-LAST:event_MacBandWidthItemStateChanged + + private void MacBandWidthActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_MacBandWidthActionPerformed + if ("comboBoxChanged".equals(evt.getActionCommand())) { + btnSendEcho("radio set bw " + MacBandWidth.getSelectedItem()); + } + }// GEN-LAST:event_MacBandWidthActionPerformed - private void FileSystemInfo() { + private void TxConfirmedItemStateChanged(java.awt.event.ItemEvent evt) {// GEN-FIRST:event_TxConfirmedItemStateChanged + + }// GEN-LAST:event_TxConfirmedItemStateChanged + + private void TxConfirmedActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_TxConfirmedActionPerformed + + }// GEN-LAST:event_TxConfirmedActionPerformed + + private void NodeFileSystemInfo() { String cmd = "r,u,t=file.fsinfo() print(\"Total : \"..t..\" bytes\\r\\nUsed : \"..u..\" bytes\\r\\nRemain: \"..r..\" bytes\\r\\n\") r=nil u=nil t=nil"; LocalEcho = false; send(addCRLF(cmd), true); @@ -8629,10 +11128,6 @@ private void goLink(URI link) { } private void DoSnippet(int n) { - // iSnippets = n; - // SnippetName.setText(prefs.get("Snippet"+Integer.toString(n)+"name", - // "Snippet"+Integer.toString(n))); - // SnippetText.setText(Snippets[n]); if (Condensed.isSelected()) { SendToESP(cmdPrep(Snippets[n])); } else { @@ -8660,6 +11155,11 @@ private void CommandsSetNodeMCU() { Command.addItem(new String("=tmr.now()")); } + private void CommandsSetMicroPython() { + Command.removeAllItems(); + Command.addItem(new String("import sys; print(sys.version_info)")); + } + private void CommandsSetAT() { Command.removeAllItems(); Command.addItem(new String("AT")); @@ -8674,13 +11174,12 @@ private void CommandsSetAT() { public static void main(String args[]) { /* Set the Nimbus look and feel */ - // + // /* - * If Nimbus (introduced in Java SE 6) is not available, stay with the - * default look and feel. For details see - * http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf. - * html + * If Nimbus (introduced in Java SE 6) is not available, stay with the default + * look and feel. For details see + * http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html */ // private javax.swing.JRadioButtonMenuItem MenuItemViewLF2; LAF = new ArrayList(); @@ -8702,17 +11201,28 @@ public static void main(String args[]) { LAFclass.add(info.getClassName()); } } - } catch (Exception ex) { - LOGGER.warn("", ex); + } catch (ClassNotFoundException ex) { + LOGGER.info(null, ex); + + } catch (InstantiationException ex) { + LOGGER.info(null, ex); + + } catch (IllegalAccessException ex) { + LOGGER.info(null, ex); + + } catch (javax.swing.UnsupportedLookAndFeelException ex) { + LOGGER.info(null, ex); } // try { /* Create and display the form */ java.awt.EventQueue.invokeLater(new Runnable() { + @Override public void run() { new Main().setVisible(true); } }); + } catch (Exception ex) { LOGGER.warn("", ex); } @@ -8728,6 +11238,7 @@ public void run() { private javax.swing.JRadioButtonMenuItem MenuItemViewLF9; // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JLayeredPane ABPPane; private javax.swing.JButton ATE0; private javax.swing.JButton ATE1; private javax.swing.JPanel AT_Client; @@ -8738,11 +11249,17 @@ public void run() { private javax.swing.JPanel AT_Station; private javax.swing.JLayeredPane ATvXX; private javax.swing.JDialog About; + private javax.swing.JLayeredPane ActivationPane; + private javax.swing.JScrollPane ActivationScrollPane; private javax.swing.JCheckBoxMenuItem AlwaysOnTop; private javax.swing.JSlider AnswerDelay; private javax.swing.JLabel AnswerDelayLabel; + private javax.swing.JTextField AppEUI; + private javax.swing.JTextField AppKey; private javax.swing.JLabel AppName; + private javax.swing.JTextField AppSKey; private javax.swing.JLabel Author; + private javax.swing.JLabel Author1; private javax.swing.JCheckBox AutoScroll; private javax.swing.JCheckBox AutodetectFirmware; private javax.swing.JLayeredPane BasicATcommandsPane; @@ -8777,26 +11294,32 @@ public void run() { private javax.swing.JButton ButtonSnippet9; private javax.swing.JButton ButtonUndo; private javax.swing.JCheckBox CR; - private javax.swing.JLabel ComingSoon1; private javax.swing.JComboBox Command; + private javax.swing.JCheckBox CommandEcho; + private javax.swing.JLayeredPane CommandsMicroPython; + private javax.swing.JLayeredPane CommandsNodeMCU; private javax.swing.JCheckBox Condensed; private javax.swing.JPopupMenu ContextMenuESPFileLUA; private javax.swing.JPopupMenu ContextMenuEditor; + private javax.swing.JPopupMenu ContextMenuFileManager; private javax.swing.JPopupMenu ContextMenuLog; private javax.swing.JPopupMenu ContextMenuTerminal; private javax.swing.JTextField CustomPortName; - private javax.swing.JComboBox DHCP; - private javax.swing.JComboBox DHCPmode; + private javax.swing.JComboBox DHCP; + private javax.swing.JComboBox DHCPmode; private javax.swing.JSlider Delay; private javax.swing.JLabel DelayLabel; + private javax.swing.JTextField DevAddr; + private javax.swing.JTextField DevEUI; private javax.swing.JButton Donate; private javax.swing.JButton DonateSmall; private javax.swing.JCheckBox DumbMode; private javax.swing.JCheckBox EOL; + private javax.swing.JCheckBox EditorOnlyCheckBox; private javax.swing.JPopupMenu.Separator EditorSeparator; private javax.swing.JPopupMenu.Separator EditorSeparator1; private javax.swing.JPopupMenu.Separator EditorSeparator2; - private javax.swing.JComboBox EditorTheme; + private javax.swing.JComboBox EditorTheme; private javax.swing.JLabel EditorThemeLabel; private javax.swing.JButton FileAsButton1; private javax.swing.JCheckBox FileAutoRun; @@ -8812,8 +11335,8 @@ public void run() { private javax.swing.JButton FileFormat; private javax.swing.JLayeredPane FileLayeredPane; private javax.swing.JButton FileListReload; - private javax.swing.JLayeredPane FileManagerPane; private javax.swing.JScrollPane FileManagerScrollPane; + private javax.swing.JLayeredPane FileManagersLayer; private javax.swing.JLabel FilePathLabel; private javax.swing.JTextField FileRename; private javax.swing.JLabel FileRenameLabel; @@ -8827,7 +11350,6 @@ public void run() { private javax.swing.JToolBar FilesToolBar; private javax.swing.JButton FilesUpload; private javax.swing.ButtonGroup Firmware; - private javax.swing.JLayeredPane Frankenshtein; private javax.swing.JButton GSLP; private javax.swing.JButton HomePage; private javax.swing.JSplitPane HorizontSplit; @@ -8840,12 +11362,21 @@ public void run() { private javax.swing.JTabbedPane LeftTab; private javax.swing.JSlider LineDelay; private javax.swing.JLabel LineDelayLabel; + private javax.swing.JLayeredPane LoRaMAC; private javax.swing.JTextArea Log; private javax.swing.JTextField LogMaxSize; private javax.swing.JPopupMenu.Separator LogSeparator; private javax.swing.JFormattedTextField MAC; private javax.swing.JFormattedTextField MAC1; private javax.swing.ButtonGroup MUXGroup; + private javax.swing.JComboBox MacBandWidth; + private javax.swing.JLayeredPane MacCommon; + private javax.swing.JTextField MacDR; + private javax.swing.JScrollPane MacPane; + private javax.swing.JTextField MacPower; + private javax.swing.JComboBox MacSF; + private javax.swing.JTextField MacTxData; + private javax.swing.JTextField MacTxPort; private javax.swing.JMenuBar MainMenuBar; private javax.swing.JMenu MenuESP; private javax.swing.JMenu MenuEdit; @@ -8884,23 +11415,19 @@ public void run() { private javax.swing.JMenuItem MenuItemFileSaveESP; private javax.swing.JMenuItem MenuItemFileSendESP; private javax.swing.JMenuItem MenuItemHelpAbout; - private javax.swing.JMenuItem MenuItemLinksAPIcn; - private javax.swing.JMenuItem MenuItemLinksAPIen; - private javax.swing.JMenuItem MenuItemLinksAPIru; private javax.swing.JMenuItem MenuItemLinksBuyDevBoard; private javax.swing.JMenuItem MenuItemLinksBuyESD12; private javax.swing.JMenuItem MenuItemLinksBuyESP8266; private javax.swing.JMenuItem MenuItemLinksBuyOther; - private javax.swing.JMenuItem MenuItemLinksChangelog; private javax.swing.JMenuItem MenuItemLinksDonate; - private javax.swing.JMenuItem MenuItemLinksDownloadLatestDev; - private javax.swing.JMenuItem MenuItemLinksDownloadLatestFirmware; - private javax.swing.JMenuItem MenuItemLinksDownloadLatestFlasher; - private javax.swing.JMenuItem MenuItemLinksESPlorerForumEn; - private javax.swing.JMenuItem MenuItemLinksESPlorerForumRu; - private javax.swing.JMenuItem MenuItemLinksESPlorerHome; - private javax.swing.JMenuItem MenuItemLinksESPlorerLatest; - private javax.swing.JMenuItem MenuItemLinksESPlorerSource; + private javax.swing.JMenuItem MenuItemLinksMainForumEn; + private javax.swing.JMenuItem MenuItemLinksMainForumRu; + private javax.swing.JMenuItem MenuItemLinksMainHome; + private javax.swing.JMenuItem MenuItemLinksMainLatest; + private javax.swing.JMenuItem MenuItemLinksMainSource; + private javax.swing.JMenuItem MenuItemLinksIoTmanager; + private javax.swing.JMenuItem MenuItemLinksMicroPythonDoc; + private javax.swing.JMenuItem MenuItemLinksNodeMCUdoc; private javax.swing.JMenuItem MenuItemLogClear; private javax.swing.JMenuItem MenuItemLogClose; private javax.swing.JMenuItem MenuItemLogFontDec; @@ -8916,6 +11443,7 @@ public void run() { private javax.swing.JCheckBoxMenuItem MenuItemViewDonate; private javax.swing.JMenuItem MenuItemViewEditorFontDec; private javax.swing.JMenuItem MenuItemViewEditorFontInc; + private javax.swing.JCheckBoxMenuItem MenuItemViewEditorOnly; private javax.swing.JCheckBoxMenuItem MenuItemViewFileManager; private javax.swing.JMenuItem MenuItemViewFontDefault; private javax.swing.JRadioButtonMenuItem MenuItemViewLF1; @@ -8927,10 +11455,53 @@ public void run() { private javax.swing.JCheckBoxMenuItem MenuItemViewSnippets; private javax.swing.JMenuItem MenuItemViewTermFontDec; private javax.swing.JMenuItem MenuItemViewTermFontInc; + private javax.swing.JCheckBoxMenuItem MenuItemViewTerminalOnly; private javax.swing.JCheckBoxMenuItem MenuItemViewToolbar; private javax.swing.JMenu MenuLinks; private javax.swing.JMenu MenuView; + private javax.swing.JLayeredPane MicroPythonCommandsGPIO; + private javax.swing.JTabbedPane MicroPythonCommandsTab; + private javax.swing.JLayeredPane MicroPythonCommandsWiFi; + private javax.swing.JButton MicroPythonGPIO0; + private javax.swing.JButton MicroPythonGPIO0_0; + private javax.swing.JButton MicroPythonGPIO0_1; + private javax.swing.JButton MicroPythonGPIO10; + private javax.swing.JButton MicroPythonGPIO10_0; + private javax.swing.JButton MicroPythonGPIO10_1; + private javax.swing.JButton MicroPythonGPIO12; + private javax.swing.JButton MicroPythonGPIO12_0; + private javax.swing.JButton MicroPythonGPIO12_1; + private javax.swing.JButton MicroPythonGPIO13; + private javax.swing.JButton MicroPythonGPIO13_0; + private javax.swing.JButton MicroPythonGPIO13_1; + private javax.swing.JButton MicroPythonGPIO14; + private javax.swing.JButton MicroPythonGPIO14_0; + private javax.swing.JButton MicroPythonGPIO14_1; + private javax.swing.JButton MicroPythonGPIO15; + private javax.swing.JButton MicroPythonGPIO15_0; + private javax.swing.JButton MicroPythonGPIO15_1; + private javax.swing.JButton MicroPythonGPIO16; + private javax.swing.JButton MicroPythonGPIO16_0; + private javax.swing.JButton MicroPythonGPIO16_1; + private javax.swing.JButton MicroPythonGPIO2; + private javax.swing.JButton MicroPythonGPIO2_0; + private javax.swing.JButton MicroPythonGPIO2_1; + private javax.swing.JButton MicroPythonGPIO4; + private javax.swing.JButton MicroPythonGPIO4_0; + private javax.swing.JButton MicroPythonGPIO4_1; + private javax.swing.JButton MicroPythonGPIO5; + private javax.swing.JButton MicroPythonGPIO5_0; + private javax.swing.JButton MicroPythonGPIO5_1; + private javax.swing.JButton MicroPythonGPIO9; + private javax.swing.JButton MicroPythonGPIO9_0; + private javax.swing.JButton MicroPythonGPIO9_1; + private javax.swing.JTextField MicroPythonPASS; + private javax.swing.JTextField MicroPythonRemoteData; + private javax.swing.JTextField MicroPythonRemoteHost; + private javax.swing.JTextField MicroPythonRemotePort; + private javax.swing.JTextField MicroPythonSSID; private javax.swing.JButton NodeChipID; + private javax.swing.JLayeredPane NodeFileManagerPane; private javax.swing.JButton NodeFlashID; private javax.swing.JButton NodeHeap; private javax.swing.JButton NodeInfo; @@ -8939,6 +11510,8 @@ public void run() { private javax.swing.JLayeredPane NodeMCUSettings; private javax.swing.JLayeredPane NodeMCUSnippets; private javax.swing.JButton NodeReset; + private javax.swing.JTextField NwkSKey; + private javax.swing.JLayeredPane OTAAPane; private javax.swing.JToggleButton Open; private javax.swing.JRadioButton OptionMicroPython; private javax.swing.JRadioButton OptionNodeMCU; @@ -8953,6 +11526,14 @@ public void run() { private javax.swing.JLabel PortOpenLabel; private javax.swing.JToggleButton PortRTS; private javax.swing.JProgressBar ProgressBar; + private javax.swing.JButton PyFileAsButton1; + private javax.swing.JLayeredPane PyFileManagerPane; + private javax.swing.JButton PyListDir; + private javax.swing.JLayeredPane RN2483; + private javax.swing.JTabbedPane RN2483jTab; + private javax.swing.JTextField RadioFreq; + private javax.swing.JLayeredPane RadioPane; + private javax.swing.JTextField RadioRxBandWidth; private javax.swing.JButton ReScan; private javax.swing.JLayeredPane RightBasePane; private javax.swing.JLayeredPane RightBigPane; @@ -8965,9 +11546,11 @@ public void run() { private javax.swing.JTextField SSIDsoftAP; private javax.swing.JScrollPane ScrollLog; private javax.swing.JButton SendCommand; + private javax.swing.JLayeredPane SendUnconfirmed; private javax.swing.JComboBox ServerMode; private javax.swing.JTextField ServerPort; private javax.swing.JTextField ServerTimeout; + private javax.swing.JCheckBoxMenuItem ShowFileManager; private javax.swing.JButton SnippetCancelEdit; private javax.swing.JButton SnippetEdit0; private javax.swing.JButton SnippetEdit1; @@ -9000,9 +11583,10 @@ public void run() { private javax.swing.JLayeredPane TCP_common; private javax.swing.JLayeredPane TCPclientBottomPane; private javax.swing.JTabbedPane TabAT; - private org.fife.ui.rsyntaxtextarea.RSyntaxTextArea Terminal; + public static org.fife.ui.rsyntaxtextarea.RSyntaxTextArea Terminal; private javax.swing.JLayeredPane TerminalLogPane; private javax.swing.JTextField TerminalMaxSize; + private javax.swing.JCheckBox TerminalOnlyCheckBox; private org.fife.ui.rtextarea.RTextScrollPane TerminalPane; private javax.swing.JPopupMenu.Separator TerminalSeparator1; private javax.swing.JPopupMenu.Separator TerminalSeparator2; @@ -9010,11 +11594,12 @@ public void run() { private org.fife.ui.rsyntaxtextarea.RSyntaxTextArea TextEditor; private org.fife.ui.rtextarea.RTextScrollPane TextScroll; private javax.swing.JTabbedPane TextTab; - private javax.swing.JComboBox TimerNumber; + private javax.swing.JComboBox TimerNumber; private javax.swing.Box.Filler TopWiFiAPFiller; private javax.swing.Box.Filler TopWiFiStaFiller; private javax.swing.Box.Filler TopWiFiStaFiller1; private javax.swing.JCheckBox TurboMode; + private javax.swing.JComboBox TxConfirmed; private javax.swing.JLayeredPane UDP; private javax.swing.JButton UPDATE; private javax.swing.JCheckBox UseCustomPortName; @@ -9024,7 +11609,7 @@ public void run() { private javax.swing.JLayeredPane WiFi_common; private javax.swing.JLayeredPane WiFisoftAPPane; private javax.swing.ButtonGroup buttonGroupLF; - private javax.swing.JComboBox channel; + private javax.swing.JComboBox channel; private javax.swing.JButton cmdAT; private javax.swing.JButton cmdCIPSEND; private javax.swing.JButton cmdCIPSENDinteractive; @@ -9044,10 +11629,40 @@ public void run() { private javax.swing.JButton cmdGetCWSAP; private javax.swing.JButton cmdGetHelpCWMODE; private javax.swing.JButton cmdListFiles; + private javax.swing.JButton cmdMacGetAdr; + private javax.swing.JButton cmdMacGetAppEui; + private javax.swing.JButton cmdMacGetDR; + private javax.swing.JButton cmdMacGetDevAddr; + private javax.swing.JButton cmdMacGetDevEui; + private javax.swing.JButton cmdMacGetPwrIdx; + private javax.swing.JButton cmdMacGetStatus; + private javax.swing.JButton cmdMacJoinOTAA; + private javax.swing.JButton cmdMacSave; + private javax.swing.JButton cmdMacSetAdrOff; + private javax.swing.JButton cmdMacSetAdrOn; + private javax.swing.JButton cmdMacSetAppEui; + private javax.swing.JButton cmdMacSetAppKey; + private javax.swing.JButton cmdMacSetAppSKey; + private javax.swing.JButton cmdMacSetDR; + private javax.swing.JButton cmdMacSetDevAddr; + private javax.swing.JButton cmdMacSetDevEui; + private javax.swing.JButton cmdMacSetNwkSKey; + private javax.swing.JButton cmdMacSetPwrIdx; + private javax.swing.JButton cmdMacTX; + private javax.swing.JButton cmdMacjoinABP; + private javax.swing.JButton cmdMicroPythonScan; + private javax.swing.JButton cmdMicroPythonSendToHost; + private javax.swing.JButton cmdMicroPythonStaConnect; private javax.swing.JButton cmdNodeChipID; private javax.swing.JButton cmdNodeHeap; private javax.swing.JButton cmdNodeRestart; private javax.swing.JButton cmdNodeSleep; + private javax.swing.JButton cmdRadioGetBw; + private javax.swing.JButton cmdRadioGetFreq; + private javax.swing.JButton cmdRadioGetRxBw; + private javax.swing.JButton cmdRadioGetSF; + private javax.swing.JButton cmdRadioSetFreq; + private javax.swing.JButton cmdRadiosetRxBw; private javax.swing.JButton cmdSetCIPAP; private javax.swing.JButton cmdSetCIPAPMAC; private javax.swing.JButton cmdSetCIPCLOSE; @@ -9068,6 +11683,10 @@ public void run() { private javax.swing.JButton cmdSetCWMODE3; private javax.swing.JButton cmdSetCWQAP; private javax.swing.JButton cmdSetCWSAP; + private javax.swing.JButton cmdSysFactoryReset; + private javax.swing.JButton cmdSysGetHwEui; + private javax.swing.JButton cmdSysGetVer; + private javax.swing.JButton cmdSysReset; private javax.swing.JButton cmdTimerStop; private javax.swing.JPanel common; private javax.swing.JComboBox conn_id; @@ -9075,6 +11694,9 @@ public void run() { private javax.swing.JComboBox encryption; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel10; + private javax.swing.JLabel jLabel11; + private javax.swing.JLabel jLabel12; + private javax.swing.JLabel jLabel13; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; @@ -9094,11 +11716,13 @@ public void run() { private javax.swing.JPopupMenu.Separator jSeparator11; private javax.swing.JPopupMenu.Separator jSeparator12; private javax.swing.JPopupMenu.Separator jSeparator13; - private javax.swing.JPopupMenu.Separator jSeparator14; private javax.swing.JPopupMenu.Separator jSeparator15; private javax.swing.JPopupMenu.Separator jSeparator16; private javax.swing.JPopupMenu.Separator jSeparator17; + private javax.swing.JPopupMenu.Separator jSeparator18; + private javax.swing.JPopupMenu.Separator jSeparator19; private javax.swing.JPopupMenu.Separator jSeparator2; + private javax.swing.JPopupMenu.Separator jSeparator20; private javax.swing.JPopupMenu.Separator jSeparator3; private javax.swing.JPopupMenu.Separator jSeparator4; private javax.swing.JPopupMenu.Separator jSeparator5; @@ -9107,7 +11731,6 @@ public void run() { private javax.swing.JToolBar.Separator jSeparator8; private javax.swing.JPopupMenu.Separator jSeparator9; private javax.swing.JPopupMenu.Separator jSeparatorFileMenu; - private javax.swing.JLabel logo; private javax.swing.JRadioButton multi; private javax.swing.JComboBox protocol; private javax.swing.JTextField remote_address; @@ -9120,10 +11743,10 @@ public void run() { // End of variables declaration//GEN-END:variables // Variables - private static final boolean debug = false; // true; //false; + private static final boolean DEBUG = false; // true; //false; /* Files tab start */ private ArrayList FileLayeredPane1; - private ArrayList TextEditor1; + private ArrayList TextEditor1; private ArrayList TextScroll1; private ArrayList FileLayeredPaneLayout1; private ArrayList provider; @@ -9132,6 +11755,7 @@ public void run() { private ArrayList mFile; // for multifile op private ArrayList FileChanged; private ArrayList FileAsButton; + private ArrayList PyFileAsButton; private ArrayList FilePopupMenu; private ArrayList FilePopupMenuItem; private int iTab = 0; // tab index @@ -9149,10 +11773,11 @@ public void run() { String workDir = ""; JFileChooser chooser; static final String[] EXTENSION_LUA = new String[] { "lua", "lc" }; - static final String[] EXTENSION_PY = new String[] { "py" }; - static final FileNameExtensionFilter filterLUA = new FileNameExtensionFilter("LUA files (*.lua, *.lc)", - EXTENSION_LUA); - static final FileNameExtensionFilter filterPY = new FileNameExtensionFilter("Python files (*.py)", EXTENSION_PY); + static final String[] EXTENSION_PY = new String[] { "py", "pyc" }; + static final String[] EXTENSION_ALL = new String[] { "*" }; + static final FileNameExtensionFilter FILTER_LUA = new FileNameExtensionFilter("LUA files (*.lua, *.lc)", EXTENSION_LUA); + static final FileNameExtensionFilter FILTER_PYTHON = new FileNameExtensionFilter("Python files (*.py, *.pyc)", EXTENSION_PY); + static final FileNameExtensionFilter FILTER_ALL = new FileNameExtensionFilter("All files (*.*)", EXTENSION_ALL); FileInputStream fis = null; FileOutputStream fos = null; InputStreamReader isr = null; @@ -9160,6 +11785,7 @@ public void run() { BufferedReader br = null; BufferedWriter bw = null; public static int j = 0; + public static int pyLevel = 0; public static boolean sendPending = false; public static String s[]; public ActionListener taskPerformer; @@ -9177,7 +11803,6 @@ public void run() { public static String tx_data = ""; public static byte[] rx_byte; public static byte[] tx_byte; - public ArrayList sendBuf; // downloader public int packets = 0; public String rcvFile = ""; @@ -9196,9 +11821,9 @@ public void run() { public static boolean busyIcon = false; public URI donate_uri; public URI homepage_uri; - public URI api_cn_uri; + public URI micropython_doc; public URI api_en_uri; - public URI api_ru_uri; + public URI iot_manager; public URI changelog_uri; public URI nodemcu_download_latest_uri; public URI nodemcu_download_dev_uri; @@ -9209,9 +11834,9 @@ public void run() { public URI buy_other; public URI esp8266com_uri; public URI esp8266ru_uri; - public URI esplorer_home; - public URI esplorer_latest; - public URI esplorer_source; + public URI Main_home; + public URI Main_latest; + public URI Main_source; private static int LogMax = 10 * 1024; private static int TerminalMax = 100 * 1024; private long startTime = System.currentTimeMillis(); @@ -9225,7 +11850,7 @@ public void run() { private static final float LOG_FONT_SIZE_MAX = 40f; private static final float LOG_FONT_SIZE_MIN = 5f; /* Prefs */ - private static final String nodeRoot = "/com/esp8266.ru/ESPlorer/config"; + private static final String nodeRoot = "/com/esp8266.ru/Main/config"; private static final String SERIAL_PORT = "serial_port"; private static final String SERIAL_BAUD = "serial_baud"; private static final String PATH = "path"; @@ -9268,6 +11893,7 @@ public void run() { private static final String WIN_W = "win_w"; private static final String CONDENSED = "condensed"; private static final String AUTODETECT = "autodetect_firmware"; + private static final String COMMAND_ECHO = "command_echo"; /* Prefs end */ /* Snippets */ @@ -9280,16 +11906,36 @@ public void run() { private static javax.swing.ImageIcon LED_RED; private static javax.swing.ImageIcon LED_BLUE; + private static final int FIRMWARE_NODEMCU = 0; + private static final int FIRMWARE_MPYTHON = 1; + private static final int FIRMWARE_AT = 2; + private static boolean LocalEcho = true; public void inc_j() { - j++; + ++j; } public void j0() { j = 0; } + public void inc_pyLevel() { + ++pyLevel; + } + + public void dec_pyLevel() { + --pyLevel; + } + + public void set_pyLevel(int newValue) { + pyLevel = newValue; + } + + public void pyLevel0() { + pyLevel = 0; + } + public void PortFinder() { int i; Port.removeAllItems(); @@ -9353,8 +11999,9 @@ public void log(String l) { } public void log(String l, boolean d) { - if (d) + if (d) { log(l); + } } public String GetSerialPortName() { @@ -9400,39 +12047,18 @@ public boolean portOpen() { try { success = serialPort.openPort(); if (!success) { - log("ERROR open serial port " + portName); - } - if (success) { - SetSerialPortParams(); - /* - * success = serialPort.setParams(nSpeed, SerialPort.DATABITS_8, - * SerialPort.STOPBITS_1, SerialPort.PARITY_NONE, - * PortRTS.isSelected(), PortDTR.isSelected()); if (!success) { - * log("ERROR setting port " + portName + " parameters."); } - */ - } - // This enables RTS as a side effect, and FLOWCONTROL_NONE is - // default anyway. Just skip it. - /* - * if (success) { success = - * serialPort.setFlowControlMode(SerialPort.FLOWCONTROL_NONE); if - * (!success) { log("ERROR setting port " + portName + - * " NOFLOW control mode."); } } - */ - if (success) { - serialPort.addEventListener(new PortReader(), portMask); - } - if (success) { - log("Open port " + portName + " - Success."); - } else { - log("Open port " + portName + " - FAIL."); + log("ERROR opening serial port " + portName); + return success; } + SetSerialPortParams(); + serialPort.addEventListener(new PortReader(), portMask); } catch (SerialPortException ex) { log(ex.toString()); success = false; } pOpen = success; if (pOpen) { + log("Open port " + portName + " - Success."); TerminalAdd("\r\nPORT OPEN " + Speed.getSelectedItem() + "\r\n"); CheckComm(); } @@ -9456,13 +12082,17 @@ public void actionPerformed(ActionEvent evt) { TerminalAdd("\r\n"); } } else { - openTimeout.stop(); + try { + openTimeout.stop(); + } catch (Exception e) { + log(e.toString()); + } } } }; - openTimeout = new Timer(300, checker); - openTimeout.setRepeats(true); - openTimeout.setInitialDelay(0); + openTimeout = new Timer(3000, checker); + openTimeout.setRepeats(false); + openTimeout.setInitialDelay(3000); openTimeout.start(); } @@ -9472,6 +12102,7 @@ public void portClose() { try { openTimeout.stop(); } catch (Exception e) { + log(e.toString()); } } try { @@ -9491,7 +12122,7 @@ public void portClose() { Open.setSelected(false); } UpdateLED(); - ClearFileManager(); + ClearNodeFileManager(); } public void SendCommand() { @@ -9507,34 +12138,26 @@ public void SendCommand() { } // Autoclean History --ADDED by Mike, DL2ZAP -- - // if (Autoclean.isSelected()) { // ToDo: create Checkbox "Autoclean & - // uncomment this line + // if (Autoclean.isSelected()) { // ToDo: create Checkbox "Autoclean & uncomment + // this line if (true) { // ToDo: After creating Checkbox delete this line int eintraege = Command.getItemCount(); // System.out.println("Start cleaning"); for (int lv1 = 0; lv1 < eintraege; lv1++) { - // System.out.print("Eintrag:" + lv1 +" : - // "+Command.getItemAt(lv1)); + // System.out.print("Eintrag:" + lv1 +" : "+Command.getItemAt(lv1)); if (Command.getItemAt(lv1) == cmd) { // System.out.println(" Doppelt, entfernt!"); Command.removeItemAt(lv1); - lv1--; // re-read this Entry because List has moved up the - // Follower + lv1--; // re-read this Entry because List has moved up the Follower } else { // System.out.println(" OK."); } } } - // System.out.println("Adding Command:" + cmd ); - // int eintraege = Command.getItemCount(); - - Command.setSelectedIndex(Command.getItemCount() - 1); // Place Index on - // last Entry + Command.setSelectedIndex(Command.getItemCount() - 1); // Place Index on last Entry Command.addItem(cmd); // Add to History after last Position - Command.setSelectedIndex(Command.getItemCount() - 1); // Place Index on - // new last - // Entry + Command.setSelectedIndex(Command.getItemCount() - 1); // Place Index on new last Entry // End of Autoclean-Procedure // Command.addItem(cmd); // Add to History @@ -9555,7 +12178,9 @@ public void SendCommand() { public String addCRLF(String s) { String r = s; r += (char) 13; - r += (char) 10; + if (OptionNodeMCU.isSelected()) { + r += (char) 10; + } return r; } @@ -9569,6 +12194,15 @@ public void btnSend(String s) { send(addCRLF(s), true); } + public void btnSendEcho(String s) { + if (Terminal.getCaretOffsetFromLineStart() > 0) { + TerminalAdd("\r\n"); + } + TerminalAdd(s); + TerminalAdd("\r\n"); + btnSend(s); + } + private void FinalInit() { final Image im = Toolkit.getDefaultToolkit().getImage(getClass().getResource("/ESP8266-64x64.png")); setIconImage(im); @@ -9646,9 +12280,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { MenuView.add(MenuItemViewLF5); } x++; - if (LAF.size() >= x + 1) - - { + if (LAF.size() >= x + 1) { MenuItemViewLF6 = new javax.swing.JRadioButtonMenuItem(); buttonGroupLF.add(MenuItemViewLF6); MenuItemViewLF6.setText(LAF.get(x)); @@ -9662,11 +12294,9 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } }); MenuView.add(MenuItemViewLF6); - } - x++; - if (LAF.size() >= x + 1) - - { + } + x++; + if (LAF.size() >= x + 1) { MenuItemViewLF7 = new javax.swing.JRadioButtonMenuItem(); buttonGroupLF.add(MenuItemViewLF7); MenuItemViewLF7.setText(LAF.get(x)); @@ -9682,9 +12312,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { MenuView.add(MenuItemViewLF7); } x++; - if (LAF.size() >= x + 1) - - { + if (LAF.size() >= x + 1) { MenuItemViewLF8 = new javax.swing.JRadioButtonMenuItem(); buttonGroupLF.add(MenuItemViewLF8); MenuItemViewLF8.setText(LAF.get(x)); @@ -9700,9 +12328,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { MenuView.add(MenuItemViewLF8); } x++; - if (LAF.size() >= x + 1) - - { + if (LAF.size() >= x + 1) { MenuItemViewLF9 = new javax.swing.JRadioButtonMenuItem(); buttonGroupLF.add(MenuItemViewLF9); MenuItemViewLF9.setText(LAF.get(x)); @@ -9738,7 +12364,10 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { ac = new ArrayList(); iFile = new ArrayList(); FileChanged = new ArrayList(); + FileAsButton = new ArrayList(); + PyFileAsButton = new ArrayList(); + FilePopupMenu = new ArrayList(); FilePopupMenuItem = new ArrayList(); @@ -9748,17 +12377,23 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { LoadSnippets(); - Terminal.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_LUA); + if (OptionNodeMCU.isSelected()) + + { + Terminal.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_LUA); + } else { + Terminal.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_PYTHON); + } AddTab(""); // iTab = 0 try { donate_uri = new URI( - "https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=4refr0nt%40gmail%2ecom&lc=US&item_name=ESPlorer¤cy_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted"); - homepage_uri = new URI("http://esp8266.ru/esplorer/"); - api_cn_uri = new URI("https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_cn"); - api_en_uri = new URI("https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_en"); - api_ru_uri = new URI("https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_ru"); + "https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=4refr0nt%40gmail%2ecom&lc=US&item_name=Main¤cy_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted"); + homepage_uri = new URI("http://esp8266.ru/Main/"); + micropython_doc = new URI("http://docs.micropython.org/en/latest/esp8266/"); + api_en_uri = new URI("http://nodemcu.readthedocs.org/"); + iot_manager = new URI("https://play.google.com/store/apps/details?id=ru.esp8266.iotmanager"); changelog_uri = new URI("https://github.com/nodemcu/nodemcu-firmware/wiki"); nodemcu_download_latest_uri = new URI( "https://github.com/nodemcu/nodemcu-firmware/blob/master/pre_build/latest/nodemcu_latest.bin?raw=true"); @@ -9766,51 +12401,45 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { flasher_uri = new URI("https://github.com/nodemcu/nodemcu-flasher"); // adv links start // Please, do not modify - buy_nodeMCU = new URI( - "http://ad.admitad.com/goto/1e8d114494955f13761d16525dc3e8/?subid=ESPlorer&ulp=http%3A%2F%2Fwww.aliexpress.com%2Faf%2Fnodemcu.html%3FSearchText%3Dnodemcu%26CatId%3D0%26shipCountry%3Dus%26initiative_id%3DSB_20150314041905%26isAffiliate%3Dy%26SortType%3Dprice_asc%26filterCat%3D400103%2C4099%26groupsort%3D1"); - buy_esp8266 = new URI( - "http://ad.admitad.com/goto/1e8d114494955f13761d16525dc3e8/?subid=ESPlorer&ulp=http%3A%2F%2Fwww.aliexpress.com%2Faf%2Fesp8266.html%3FSearchText%3Desp8266%26CatId%3D0%26shipCountry%3Dus%26initiative_id%3DSB_20150314041938%26isAffiliate%3Dy%26SortType%3Dprice_asc%26filterCat%3D400103%2C515%2C400107%26groupsort%3D1"); - buy_esd12 = new URI( - "http://ad.admitad.com/goto/1e8d114494955f13761d16525dc3e8/?subid=ESPlorer&ulp=http%3A%2F%2Fwww.aliexpress.com%2Faf%2Fesp8266-esd%2525252d12.html%3FSearchText%3Desp8266%252Besd-12%26CatId%3D0%26shipCountry%3Dall%26initiative_id%3DSB_20150314041646%26isAffiliate%3Dy%26isAtmOnline%3Dn%26SortType%3Dprice_asc"); - buy_other = new URI( - "http://ad.admitad.com/goto/1e8d114494955f13761d16525dc3e8/?subid=ESPlorer&ulp=http%3A%2F%2Fwww.aliexpress.com%2Faf%2Fcategory%2F5.html%3FshipCountry%3Dus%26isAffiliate%3Dy%26SortType%3Dtotal_tranpro_desc"); + buy_nodeMCU = new URI("http://goo.gl/GRiJpq"); + buy_esp8266 = new URI("http://goo.gl/4kdUSO"); + buy_esd12 = new URI("http://goo.gl/GexlwM"); + buy_other = new URI("http://goo.gl/J2GCSx"); // adv links end esp8266com_uri = new URI("http://www.esp8266.com/viewtopic.php?f=22&t=882"); - esp8266ru_uri = new URI("http://esp8266.ru/forum/threads/esplorer.34/"); - esplorer_latest = new URI("http://esp8266.ru/esplorer/#download"); - esplorer_source = new URI("https://github.com/4refr0nt/ESPlorer"); + esp8266ru_uri = new URI("http://esp8266.ru/forum/threads/Main.34/"); + Main_latest = new URI("http://esp8266.ru/Main/#download"); + Main_source = new URI("https://github.com/4refr0nt/Main"); } catch (Exception e) { log(e.toString()); } FileAsButton1.setVisible(false); FileRenamePanel.setVisible(false); + PyFileAsButton1.setVisible(false); } private void LoadPrefs() { - // log("Load saved settings..."); // Settings - Firmware workDir = prefs.get(PATH, ""); chooser = new JFileChooser(workDir); chooser.setFileSelectionMode(JFileChooser.FILES_ONLY); chooser.setMultiSelectionEnabled(false); chooser.setCurrentDirectory(new File(workDir)); - if (prefs.get(FIRMWARE, null) == null) { - log("Load saved settings: NOT FOUND. Used default settings."); - prefs.put(FIRMWARE, "NodeMCU"); - PrefsFlush(); - } - if (prefs.get(FIRMWARE, "NodeMCU").equals("MicroPython") && OptionMicroPython.isEnabled()) { - OptionMicroPython.setSelected(true); - chooser.setFileFilter(filterPY); + + String SavedFirmware = prefs.get(FIRMWARE, "NodeMCU"); + log("Load saved settings: Firmware:" + SavedFirmware); + if (SavedFirmware.equals("NodeMCU")) { + SetFirmwareType(FIRMWARE_NODEMCU); + } else if (SavedFirmware.equals("MicroPython")) { + SetFirmwareType(FIRMWARE_MPYTHON); } else { - OptionNodeMCU.setSelected(true); - chooser.setFileFilter(filterLUA); + SetFirmwareType(FIRMWARE_AT); } FileAutoSaveDisk.setSelected(prefs.getBoolean(FILE_AUTO_SAVE_DISK, true)); FileAutoSaveESP.setSelected(prefs.getBoolean(FILE_AUTO_SAVE_ESP, true)); FileAutoRun.setSelected(prefs.getBoolean(FILE_AUTO_RUN, true)); - EditorTheme.setSelectedIndex(prefs.getInt(COLOR_THEME, 0)); + EditorTheme.setSelectedIndex(prefs.getInt(COLOR_THEME, 1)); Delay.setValue(prefs.getInt(DELAY, 0)); AnswerDelay.setValue(prefs.getInt(TIMEOUT, 3)); DumbMode.setSelected(prefs.getBoolean(DUMB_MODE, false)); @@ -9842,10 +12471,11 @@ private void LoadPrefs() { EOL.setSelected(prefs.getBoolean(SHOW_EOL, false)); Condensed.setSelected(prefs.getBoolean(CONDENSED, false)); AutodetectFirmware.setSelected(prefs.getBoolean(AUTODETECT, true)); + CommandEcho.setSelected(prefs.getBoolean(COMMAND_ECHO, true)); log("Load saved settings: DONE."); } - private void AddFileButton(String FileName, int size) { + private void AddNodeFileButton(String FileName, int size) { FileAsButton.add(new javax.swing.JButton()); int i = FileAsButton.size() - 1; FileAsButton.get(i).setText(FileName); @@ -9864,7 +12494,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { // PopUp menu FilePopupMenu.add(new javax.swing.JPopupMenu()); int x = FilePopupMenu.size() - 1; - // int y; // PopUp menu items if (FileName.endsWith(".lua")) { FileAsButton.get(i).setIcon(new javax.swing.ImageIcon(getClass().getResource("/lua.png"))); @@ -9905,7 +12534,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } FileAsButton.get(i).setComponentPopupMenu(FilePopupMenu.get(x)); - FileManagerPane.add(FileAsButton.get(i)); + NodeFileManagerPane.add(FileAsButton.get(i)); } private void AddMenuItemSeparator(int x) { @@ -10067,7 +12696,11 @@ private void AddTab(String s) { FileLayeredPaneLayout1.add(new javax.swing.GroupLayout(FileLayeredPane1.get(i))); - TextEditor1.get(i).setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_LUA); + if (OptionNodeMCU.isSelected()) { + TextEditor1.get(i).setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_LUA); + } else { + TextEditor1.get(i).setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_PYTHON); + } TextEditor1.get(i).setColumns(20); TextEditor1.get(i).setRows(5); TextEditor1.get(i).setDragEnabled(false); @@ -10171,7 +12804,7 @@ private void SetTheme(int t, boolean all) { Terminal.setFont( Terminal.getFont().deriveFont(prefs.getFloat(TERMINAL_FONT_SIZE, TERMINAL_FONT_SIZE_DEFAULT))); themeTextBackground = SnippetText.getBackground(); - SnippetText.setBackground(SnippetTopPane.getBackground()); + // SnippetText.setBackground(SnippetTopPane.getBackground()); log("Set new color theme: Success."); } else { theme.apply(TextEditor1.get(iTab)); @@ -10242,97 +12875,181 @@ private int Dialog(String msg, int btn) { private CompletionProvider createCompletionProvider() { DefaultCompletionProvider provider = new DefaultCompletionProvider(); + if (OptionNodeMCU.isSelected()) { - provider.addCompletion(new BasicCompletion(provider, "function end")); - provider.addCompletion(new BasicCompletion(provider, "function")); - provider.addCompletion(new BasicCompletion(provider, "function return end")); - provider.addCompletion(new BasicCompletion(provider, "end")); - provider.addCompletion(new BasicCompletion(provider, "do")); - provider.addCompletion(new BasicCompletion(provider, "print(\"\")")); - provider.addCompletion(new BasicCompletion(provider, "if")); - provider.addCompletion(new BasicCompletion(provider, "else")); - provider.addCompletion(new BasicCompletion(provider, "elseif")); - provider.addCompletion(new BasicCompletion(provider, "if else end")); - provider.addCompletion(new BasicCompletion(provider, "while")); - provider.addCompletion(new BasicCompletion(provider, "while do end")); - provider.addCompletion(new BasicCompletion(provider, "do end")); - provider.addCompletion(new BasicCompletion(provider, "for")); - provider.addCompletion(new BasicCompletion(provider, "for do end")); - provider.addCompletion(new BasicCompletion(provider, "repeat")); - provider.addCompletion(new BasicCompletion(provider, "until")); - provider.addCompletion(new BasicCompletion(provider, "repeat until")); - provider.addCompletion(new BasicCompletion(provider, "for")); - provider.addCompletion(new BasicCompletion(provider, "for key, value in pairs() do\r\nend")); - provider.addCompletion(new BasicCompletion(provider, "for do end")); - provider.addCompletion(new BasicCompletion(provider, "wifi.setmode(wifi.STATION)")); - provider.addCompletion(new BasicCompletion(provider, "wifi.getmode()")); - provider.addCompletion(new BasicCompletion(provider, "wifi.startsmart()")); - provider.addCompletion(new BasicCompletion(provider, "wifi.stopsmart()")); - provider.addCompletion(new BasicCompletion(provider, "wifi.sta.config(\"SSID\",\"password\")")); - provider.addCompletion(new BasicCompletion(provider, "wifi.sta.connect()")); - provider.addCompletion(new BasicCompletion(provider, "wifi.sta.disconnect()")); - provider.addCompletion(new BasicCompletion(provider, "wifi.sta.autoconnect()")); - provider.addCompletion(new BasicCompletion(provider, "wifi.sta.getip()")); - provider.addCompletion(new BasicCompletion(provider, "wifi.sta.getmac()")); - provider.addCompletion(new BasicCompletion(provider, "wifi.sta.getap()")); - provider.addCompletion(new BasicCompletion(provider, "wifi.sta.status()")); - provider.addCompletion(new BasicCompletion(provider, "wifi.ap.config()")); - provider.addCompletion(new BasicCompletion(provider, "wifi.ap.getip()")); - provider.addCompletion(new BasicCompletion(provider, "wifi.ap.getmac()")); - provider.addCompletion(new BasicCompletion(provider, "gpio.mode(pin,gpio.OUTPUT)")); - provider.addCompletion(new BasicCompletion(provider, "gpio.write(pin,gpio.HIGH)")); - provider.addCompletion(new BasicCompletion(provider, "gpio.write(pin,gpio.LOW)")); - provider.addCompletion(new BasicCompletion(provider, "gpio.read(pin)")); - provider.addCompletion(new BasicCompletion(provider, "gpio.trig(0, \"act\",func)")); - provider.addCompletion(new BasicCompletion(provider, "conn=net.createConnection(net.TCP, 0)")); - provider.addCompletion(new BasicCompletion(provider, "net.createConnection(net.TCP, 0)")); - provider.addCompletion( - new BasicCompletion(provider, "on(\"receive\", function(conn, payload) print(payload) end )")); - provider.addCompletion(new BasicCompletion(provider, "connect(80,\"0.0.0.0\")")); - provider.addCompletion(new BasicCompletion(provider, - "send(\"GET / HTTP/1.1\\r\\nHost: www.baidu.com\\r\\nConnection: keep-alive\\r\\nAccept: */*\\r\\n\\r\\n\")")); - provider.addCompletion(new BasicCompletion(provider, "srv=net.createServer(net.TCP)")); - provider.addCompletion(new BasicCompletion(provider, - "srv:listen(80,function(conn) \nconn:on(\"receive\",function(conn,payload) \nprint(payload) \nconn:send(\"

Hello, NodeMcu.

\")\nend) \nconn:on(\"sent\",function(conn) conn:close() end)\nend)")); - provider.addCompletion(new BasicCompletion(provider, "net.createServer(net.TCP, timeout)")); - provider.addCompletion(new BasicCompletion(provider, "net.server.listen(port,[ip],function(net.socket))")); - provider.addCompletion(new BasicCompletion(provider, "dns(domain, function(net.socket, ip))")); - provider.addCompletion(new BasicCompletion(provider, "pwm.setduty(0,0)")); - provider.addCompletion(new BasicCompletion(provider, "pwm.getduty(0)")); - provider.addCompletion(new BasicCompletion(provider, "pwm.setup(0,0,0)")); - provider.addCompletion(new BasicCompletion(provider, "pwm.start(0)")); - provider.addCompletion(new BasicCompletion(provider, "pwm.close(0)")); - provider.addCompletion(new BasicCompletion(provider, "pwm.setclock(0, 100)")); - provider.addCompletion(new BasicCompletion(provider, "pwm.getclock(0)")); - provider.addCompletion(new BasicCompletion(provider, "pwm.close(0)")); - provider.addCompletion(new BasicCompletion(provider, "file.open(\"\",\"r\")")); - provider.addCompletion(new BasicCompletion(provider, "file.writeline()")); - provider.addCompletion(new BasicCompletion(provider, "file.readline()")); - provider.addCompletion(new BasicCompletion(provider, "file.write()")); - provider.addCompletion(new BasicCompletion(provider, "file.close()")); - provider.addCompletion(new BasicCompletion(provider, "file.remove()")); - provider.addCompletion(new BasicCompletion(provider, "file.flush()")); - provider.addCompletion(new BasicCompletion(provider, "file.seek()")); - provider.addCompletion(new BasicCompletion(provider, "file.list()")); - provider.addCompletion(new BasicCompletion(provider, "node.restart()")); - provider.addCompletion(new BasicCompletion(provider, "node.dsleep()")); - provider.addCompletion(new BasicCompletion(provider, "node.chipid()")); - provider.addCompletion(new BasicCompletion(provider, "node.heap()")); - provider.addCompletion(new BasicCompletion(provider, "node.key(type, function())")); - provider.addCompletion(new BasicCompletion(provider, "node.led()")); - provider.addCompletion(new BasicCompletion(provider, "node.input()")); - provider.addCompletion(new BasicCompletion(provider, "node.output()")); - provider.addCompletion(new BasicCompletion(provider, "tmr.alarm(0,1000,1,function()\nend)")); - provider.addCompletion(new BasicCompletion(provider, "tmr.delay()")); - provider.addCompletion(new BasicCompletion(provider, "tmr.now()")); - provider.addCompletion(new BasicCompletion(provider, "tmr.stop(id)")); - provider.addCompletion(new BasicCompletion(provider, "tmr.wdclr()")); - provider.addCompletion(new BasicCompletion(provider, "dofile(\"\")")); + provider.addCompletion(new BasicCompletion(provider, "function end")); + provider.addCompletion(new BasicCompletion(provider, "function")); + provider.addCompletion(new BasicCompletion(provider, "function return end")); + provider.addCompletion(new BasicCompletion(provider, "end")); + provider.addCompletion(new BasicCompletion(provider, "do")); + provider.addCompletion(new BasicCompletion(provider, "print(\"\")")); + provider.addCompletion(new BasicCompletion(provider, "if")); + provider.addCompletion(new BasicCompletion(provider, "else")); + provider.addCompletion(new BasicCompletion(provider, "elseif")); + provider.addCompletion(new BasicCompletion(provider, "if else end")); + provider.addCompletion(new BasicCompletion(provider, "while")); + provider.addCompletion(new BasicCompletion(provider, "while do end")); + provider.addCompletion(new BasicCompletion(provider, "do end")); + provider.addCompletion(new BasicCompletion(provider, "for")); + provider.addCompletion(new BasicCompletion(provider, "for do end")); + provider.addCompletion(new BasicCompletion(provider, "repeat")); + provider.addCompletion(new BasicCompletion(provider, "until")); + provider.addCompletion(new BasicCompletion(provider, "repeat until")); + provider.addCompletion(new BasicCompletion(provider, "for")); + provider.addCompletion(new BasicCompletion(provider, "for key, value in pairs() do\r\nend")); + provider.addCompletion(new BasicCompletion(provider, "for do end")); + provider.addCompletion(new BasicCompletion(provider, "wifi.setmode(wifi.STATION)")); + provider.addCompletion(new BasicCompletion(provider, "wifi.getmode()")); + provider.addCompletion(new BasicCompletion(provider, "wifi.startsmart()")); + provider.addCompletion(new BasicCompletion(provider, "wifi.stopsmart()")); + provider.addCompletion(new BasicCompletion(provider, "wifi.sta.config(\"SSID\",\"password\")")); + provider.addCompletion(new BasicCompletion(provider, "wifi.sta.connect()")); + provider.addCompletion(new BasicCompletion(provider, "wifi.sta.disconnect()")); + provider.addCompletion(new BasicCompletion(provider, "wifi.sta.autoconnect()")); + provider.addCompletion(new BasicCompletion(provider, "wifi.sta.getip()")); + provider.addCompletion(new BasicCompletion(provider, "wifi.sta.getmac()")); + provider.addCompletion(new BasicCompletion(provider, "wifi.sta.getap()")); + provider.addCompletion(new BasicCompletion(provider, "wifi.sta.status()")); + provider.addCompletion(new BasicCompletion(provider, "wifi.ap.config()")); + provider.addCompletion(new BasicCompletion(provider, "wifi.ap.getip()")); + provider.addCompletion(new BasicCompletion(provider, "wifi.ap.getmac()")); + provider.addCompletion(new BasicCompletion(provider, "gpio.mode(pin,gpio.OUTPUT)")); + provider.addCompletion(new BasicCompletion(provider, "gpio.write(pin,gpio.HIGH)")); + provider.addCompletion(new BasicCompletion(provider, "gpio.write(pin,gpio.LOW)")); + provider.addCompletion(new BasicCompletion(provider, "gpio.read(pin)")); + provider.addCompletion(new BasicCompletion(provider, "gpio.trig(0, \"act\",func)")); + provider.addCompletion(new BasicCompletion(provider, "conn=net.createConnection(net.TCP, 0)")); + provider.addCompletion(new BasicCompletion(provider, "net.createConnection(net.TCP, 0)")); + provider.addCompletion( + new BasicCompletion(provider, "on(\"receive\", function(conn, payload) print(payload) end )")); + provider.addCompletion(new BasicCompletion(provider, "connect(80,\"0.0.0.0\")")); + provider.addCompletion(new BasicCompletion(provider, + "send(\"GET / HTTP/1.1\\r\\nHost: www.baidu.com\\r\\nConnection: keep-alive\\r\\nAccept: */*\\r\\n\\r\\n\")")); + provider.addCompletion(new BasicCompletion(provider, "srv=net.createServer(net.TCP)")); + provider.addCompletion(new BasicCompletion(provider, + "srv:listen(80,function(conn) \nconn:on(\"receive\",function(conn,payload) \nprint(payload) \nconn:send(\"

Hello, NodeMcu.

\")\nend) \nconn:on(\"sent\",function(conn) conn:close() end)\nend)")); + provider.addCompletion(new BasicCompletion(provider, "net.createServer(net.TCP, timeout)")); + provider.addCompletion(new BasicCompletion(provider, "net.server.listen(port,[ip],function(net.socket))")); + provider.addCompletion(new BasicCompletion(provider, "dns(domain, function(net.socket, ip))")); + provider.addCompletion(new BasicCompletion(provider, "pwm.setduty(0,0)")); + provider.addCompletion(new BasicCompletion(provider, "pwm.getduty(0)")); + provider.addCompletion(new BasicCompletion(provider, "pwm.setup(0,0,0)")); + provider.addCompletion(new BasicCompletion(provider, "pwm.start(0)")); + provider.addCompletion(new BasicCompletion(provider, "pwm.close(0)")); + provider.addCompletion(new BasicCompletion(provider, "pwm.setclock(0, 100)")); + provider.addCompletion(new BasicCompletion(provider, "pwm.getclock(0)")); + provider.addCompletion(new BasicCompletion(provider, "pwm.close(0)")); + provider.addCompletion(new BasicCompletion(provider, "file.open(\"\",\"r\")")); + provider.addCompletion(new BasicCompletion(provider, "file.writeline()")); + provider.addCompletion(new BasicCompletion(provider, "file.readline()")); + provider.addCompletion(new BasicCompletion(provider, "file.write()")); + provider.addCompletion(new BasicCompletion(provider, "file.close()")); + provider.addCompletion(new BasicCompletion(provider, "file.remove()")); + provider.addCompletion(new BasicCompletion(provider, "file.flush()")); + provider.addCompletion(new BasicCompletion(provider, "file.seek()")); + provider.addCompletion(new BasicCompletion(provider, "file.list()")); + provider.addCompletion(new BasicCompletion(provider, "node.restart()")); + provider.addCompletion(new BasicCompletion(provider, "node.dsleep()")); + provider.addCompletion(new BasicCompletion(provider, "node.chipid()")); + provider.addCompletion(new BasicCompletion(provider, "node.heap()")); + provider.addCompletion(new BasicCompletion(provider, "node.key(type, function())")); + provider.addCompletion(new BasicCompletion(provider, "node.led()")); + provider.addCompletion(new BasicCompletion(provider, "node.input()")); + provider.addCompletion(new BasicCompletion(provider, "node.output()")); + provider.addCompletion(new BasicCompletion(provider, "tmr.alarm(0,1000,1,function()\nend)")); + provider.addCompletion(new BasicCompletion(provider, "tmr.delay()")); + provider.addCompletion(new BasicCompletion(provider, "tmr.now()")); + provider.addCompletion(new BasicCompletion(provider, "tmr.stop(id)")); + provider.addCompletion(new BasicCompletion(provider, "tmr.wdclr()")); + provider.addCompletion(new BasicCompletion(provider, "dofile(\"\")")); + } else { // MicroPython + provider.addCompletion(new BasicCompletion(provider, "import ")); + provider.addCompletion(new BasicCompletion(provider, "import network")); + provider.addCompletion(new BasicCompletion(provider, "import time")); + provider.addCompletion(new BasicCompletion(provider, "import Timer")); + provider.addCompletion(new BasicCompletion(provider, "from machine import Pin")); + provider.addCompletion(new BasicCompletion(provider, "from machine import Pin, PWM")); + provider.addCompletion(new BasicCompletion(provider, "from machine import ADC")); + provider.addCompletion(new BasicCompletion(provider, "from machine import Pin, SPI")); + provider.addCompletion(new BasicCompletion(provider, "from machine import Pin, I2C")); + provider.addCompletion(new BasicCompletion(provider, "import onewire")); + provider.addCompletion(new BasicCompletion(provider, "from neopixel import NeoPixel")); + provider.addCompletion(new BasicCompletion(provider, "import neopixel")); + provider.addCompletion(new BasicCompletion(provider, "import esp")); + provider.addCompletion(new BasicCompletion(provider, "")); + provider.addCompletion(new BasicCompletion(provider, "")); + provider.addCompletion(new BasicCompletion(provider, "")); + provider.addCompletion(new BasicCompletion(provider, "")); + provider.addCompletion(new BasicCompletion(provider, "json")); + provider.addCompletion(new BasicCompletion(provider, "ubinascii.hexlify(data[, sep])")); + provider.addCompletion(new BasicCompletion(provider, "ubinascii.unhexlify(data)")); + provider.addCompletion(new BasicCompletion(provider, "ubinascii.a2b_base64(data)")); + provider.addCompletion(new BasicCompletion(provider, "ubinascii.b2a_base64(data)")); + provider.addCompletion(new BasicCompletion(provider, "machine.freq(160000000)")); + provider.addCompletion(new BasicCompletion(provider, "esp.osdebug(None)")); + provider.addCompletion(new BasicCompletion(provider, "esp.osdebug(0)")); + provider.addCompletion(new BasicCompletion(provider, "wlan = network.WLAN(network.STA_IF)")); + provider.addCompletion(new BasicCompletion(provider, "wlan.active(True)")); + provider.addCompletion(new BasicCompletion(provider, "wlan.scan()")); + provider.addCompletion(new BasicCompletion(provider, "wlan.isconnected()")); + provider.addCompletion(new BasicCompletion(provider, "wlan.connect('essid', 'password')")); + provider.addCompletion(new BasicCompletion(provider, "wlan.ifconfig()")); + provider.addCompletion(new BasicCompletion(provider, "ap = network.WLAN(network.AP_IF)")); + provider.addCompletion(new BasicCompletion(provider, "ap.active(True)")); + provider.addCompletion(new BasicCompletion(provider, "ap.config(essid='ESP-AP')")); + provider.addCompletion(new BasicCompletion(provider, "time.sleep(1)")); + provider.addCompletion(new BasicCompletion(provider, "time.sleep_ms(500)")); + provider.addCompletion(new BasicCompletion(provider, "time.sleep_us(10)")); + provider.addCompletion(new BasicCompletion(provider, "time.ticks_diff(start, time.ticks_ms())")); + provider.addCompletion(new BasicCompletion(provider, "tim = Timer(-1)")); + provider.addCompletion(new BasicCompletion(provider, + "tim.init(period=5000, mode=Timer.ONE_SHOT, callback=lambda t:print(1))")); + provider.addCompletion(new BasicCompletion(provider, + "tim.init(period=2000, mode=Timer.PERIODIC, callback=lambda t:print(2))")); + provider.addCompletion(new BasicCompletion(provider, "Pin(0, Pin.OUT)")); + provider.addCompletion(new BasicCompletion(provider, ".high()")); + provider.addCompletion(new BasicCompletion(provider, ".low()")); + provider.addCompletion(new BasicCompletion(provider, ".value(1)")); + provider.addCompletion(new BasicCompletion(provider, "Pin(2, Pin.IN)")); + provider.addCompletion(new BasicCompletion(provider, "Pin(4, Pin.IN, Pin.PULL_UP)")); + provider.addCompletion(new BasicCompletion(provider, "Pin(5, Pin.OUT, value=1)")); + provider.addCompletion(new BasicCompletion(provider, "PWM(Pin(0))")); + provider.addCompletion(new BasicCompletion(provider, ".freq()")); + provider.addCompletion(new BasicCompletion(provider, ".freq(1000)")); + provider.addCompletion(new BasicCompletion(provider, ".duty()")); + provider.addCompletion(new BasicCompletion(provider, ".duty(200)")); + provider.addCompletion(new BasicCompletion(provider, ".deinit()")); + provider.addCompletion(new BasicCompletion(provider, "PWM(Pin(2), freq=500, duty=512)")); + provider.addCompletion(new BasicCompletion(provider, "ADC(0)")); + provider.addCompletion(new BasicCompletion(provider, ".read()")); + provider.addCompletion(new BasicCompletion(provider, + "SPI(baudrate=100000, polarity=1, phase=0, sck=Pin(0), mosi=Pin(2), miso=Pin(4))")); + provider.addCompletion(new BasicCompletion(provider, ".init(baudrate=200000)")); + provider.addCompletion(new BasicCompletion(provider, ".readinto(buf)")); + provider.addCompletion(new BasicCompletion(provider, ".write_readinto(b'1234', buf)")); + provider.addCompletion(new BasicCompletion(provider, ".write_readinto(buf, buf)")); + provider.addCompletion(new BasicCompletion(provider, "I2C(scl=Pin(5), sda=Pin(4), freq=100000)")); + provider.addCompletion(new BasicCompletion(provider, "machine.RTC()")); + provider.addCompletion(new BasicCompletion(provider, ".irq(trigger=rtc.ALARM0, wake=machine.DEEPSLEEP)")); + provider.addCompletion(new BasicCompletion(provider, "machine.reset_cause()")); + provider.addCompletion(new BasicCompletion(provider, "machine.DEEPSLEEP_RESET")); + provider.addCompletion(new BasicCompletion(provider, "rtc.alarm(rtc.ALARM0, 10000)")); + provider.addCompletion(new BasicCompletion(provider, ".scan()")); + provider.addCompletion(new BasicCompletion(provider, ".reset()")); + provider.addCompletion(new BasicCompletion(provider, "onewire.DS18B20(ow)")); + provider.addCompletion(new BasicCompletion(provider, ".start_measure()")); + provider.addCompletion(new BasicCompletion(provider, ".get_temp(rom)")); + provider.addCompletion(new BasicCompletion(provider, "NeoPixel(pin, 8)")); + provider.addCompletion(new BasicCompletion(provider, "")); + provider.addCompletion(new BasicCompletion(provider, "")); + provider.addCompletion(new BasicCompletion(provider, "")); + provider.addCompletion(new BasicCompletion(provider, "")); + } /* * provider.addCompletion(new ShorthandCompletion(provider, "sysout", - * "System.out.println(", "System.out.println(")); - * provider.addCompletion(new ShorthandCompletion(provider, "syserr", - * "System.err.println(", "System.err.println(")); + * "System.out.println(", "System.out.println(")); provider.addCompletion(new + * ShorthandCompletion(provider, "syserr", "System.err.println(", + * "System.err.println(")); */ return provider; @@ -10397,6 +13114,7 @@ private void ReloadFile() { } if (LoadFile()) { log("File reload: Success."); + } } @@ -10407,34 +13125,41 @@ public void serialEvent(SerialPortEvent event) { try { String data = serialPort.readString(event.getEventValue()); if (portJustOpen) { - TerminalAdd("Got answer! AutoDetect firmware...\r\n"); + TerminalAdd("Got answer! Communication with MCU established.\r\nAutoDetect firmware...\r\n"); portJustOpen = false; - openTimeout.stop(); + try { + openTimeout.stop(); + } catch (Exception e) { + log(e.toString()); + } UpdateButtons(); - log("\r\nCommunication with MCU established."); - if (data.contains("\r\n>")) { + if (data.contains("\r\n>>>")) { + TerminalAdd("\r\nMicroPython firmware detected, try get version...\r\n\r\n"); + btnSend("import sys; print(\"MicroPython ver:\",sys.version_info)"); + LeftTab.setSelectedIndex(0); + SetFirmwareType(FIRMWARE_MPYTHON); + } else if (data.contains("\r\n>")) { TerminalAdd("\r\nNodeMCU firmware detected.\r\n"); btnSend("=node.heap()"); LeftTab.setSelectedIndex(0); + SetFirmwareType(FIRMWARE_NODEMCU); } else if (data.contains("\r\nERR")) { TerminalAdd("\r\nAT-based firmware detected.\r\n"); btnSend("AT+GMR"); LeftTab.setSelectedIndex(1); RightExtraButtons.setVisible(false); RightSnippetsPane.setVisible(false); - FileManagerPane.setVisible(false); - } else { - TerminalAdd("\r\nCan't autodetect firmware, because proper answer not received.\r\n"); - } - } else { - if (LocalEcho) { - TerminalAdd(data); + NodeFileManagerPane.setVisible(false); + FirmwareType = FIRMWARE_AT; } else { - if (data.contains("\r")) { - LocalEcho = true; - TerminalAdd(data.substring(data.indexOf("\r"))); - } + TerminalAdd( + "\r\nCan't autodetect firmware, because proper answer not received (may be unknown firmware). \r\nPlease, reset module or continue.\r\n"); } + } else if (LocalEcho) { + TerminalAdd(data); + } else if (data.contains("\r")) { + LocalEcho = true; + TerminalAdd(data.substring(data.indexOf("\r"))); } } catch (SerialPortException ex) { log(ex.toString()); @@ -10461,6 +13186,7 @@ public void serialEvent(SerialPortEvent event) { data = data.replace(">>", ""); data = data.replace("\r\n> ", ""); data = data.replace("\r\n\r\n", "\r\n"); + rcvBuf = rcvBuf + data; log("recv:" + data.replace("\r\n", "")); TerminalAdd(data); @@ -10470,10 +13196,11 @@ public void serialEvent(SerialPortEvent event) { timeout.stop(); } catch (Exception e) { } - if (rcvBuf.contains("stdin:")) { - String msg[] = { "LUA interpreter error detected!", rcvBuf, "Click OK to continue." }; - JOptionPane.showMessageDialog(null, msg); - } + /* + * if (rcvBuf.contains("stdin:")) { String msg[] = + * {"Interpreter error detected!", rcvBuf, "Click OK to continue."}; + * JOptionPane.showMessageDialog(null, msg); } + */ rcvBuf = ""; if (j < sendBuf.size() - 1) { if (timer.isRunning() || sendPending) { @@ -10482,8 +13209,9 @@ public void serialEvent(SerialPortEvent event) { inc_j(); sendPending = true; int div = sendBuf.size() - 1; - if (div == 0) + if (div == 0) { div = 1; + } ProgressBar.setValue((j * 100) / div); timer.start(); } @@ -10497,6 +13225,12 @@ public void serialEvent(SerialPortEvent event) { "Please, try again." }; JOptionPane.showMessageDialog(null, msg); } + if (rcvBuf.contains("Type \"help()")) { + StopSend(); + String msg[] = { "ESP module reboot detected!", + "Event: internal MicroPython exception or power fail.", "Please, try again." }; + JOptionPane.showMessageDialog(null, msg); + } } else if (event.isCTS()) { UpdateLedCTS(); } else if (event.isERR()) { @@ -10534,8 +13268,9 @@ public void serialEvent(SerialPortEvent event) { inc_j(); sendPending = true; int div = sendBuf.size() - 1; - if (div == 0) + if (div == 0) { div = 1; + } ProgressBar.setValue((j * 100) / div); timer.start(); } @@ -10576,7 +13311,7 @@ private void StopSend() { private boolean SendToESP(String str) { boolean success = false; if (!pOpen || portJustOpen) { - log("SendESP: Serial port not open. Cancel."); + log("SendESP: Serial port not open. Canceled."); return success; } sendBuf = new ArrayList(); @@ -10595,6 +13330,11 @@ private boolean SendToESP(ArrayList buf) { } sendBuf = new ArrayList(); sendBuf.addAll(buf); + if (OptionMicroPython.isSelected()) { + sendBuf.add(""); + sendBuf.add(""); + sendBuf.add(""); + } success = SendTimerStart(); log("SendToESP: Starting..."); return success; @@ -10613,40 +13353,30 @@ public void actionPerformed(ActionEvent evt) { } }; int delay = AnswerDelay.getValue() * 1000; - if (delay == 0) + if (delay == 0) { delay = 300; + } timeout = new Timer(delay, watchDog); timeout.setRepeats(false); timeout.setInitialDelay(delay); timeout.start(); } - private boolean SaveFileESP() { + private boolean nodeSaveFileESP(String ft) { boolean success = false; - if (!pOpen || portJustOpen) { - log("FileSaveESP: Serial port not open. Cancel."); - return success; - } log("FileSaveESP: Try to save file to ESP..."); - String ft = iFile.get(iTab).getName(); - if (ft.length() == 0) { - log("FileSaveESP: FAIL. Can't save file to ESP without name."); - SendUnLock(); - JOptionPane.showMessageDialog(null, "Can't save file to ESP without name."); - return success; - } sendBuf = new ArrayList(); if (TurboMode.isSelected()) { - return SaveFileESPTurbo(ft); + return nodeSaveFileESPTurbo(ft); } sendBuf.add("file.remove(\"" + ft + "\");"); sendBuf.add("file.open(\"" + ft + "\",\"w+\");"); - sendBuf.add("w = file.writeline\r\n"); + sendBuf.add("w = file.writeline;\r\n"); s = TextEditor1.get(iTab).getText().split("\r?\n"); for (String subs : s) { sendBuf.add("w([==[" + subs + "]==]);"); } - sendBuf.add("file.close();"); + sendBuf.add("file.flush();file.close();"); if (FileAutoRun.isSelected()) { sendBuf.add("dofile(\"" + ft + "\");"); } @@ -10656,7 +13386,7 @@ private boolean SaveFileESP() { return success; } - private boolean SaveFileESPTurbo(String ft) { + private boolean nodeSaveFileESPTurbo(String ft) { boolean success = false; log("FileSaveESP-Turbo: Try to save file to ESP in Turbo Mode..."); sendBuf.add("local FILE=\"" + ft + "\" file.remove(FILE) file.open(FILE,\"w+\") uart.setup(0," @@ -10673,8 +13403,9 @@ private boolean SaveFileESPTurbo(String ft) { String fragment; while (pos1 <= l) { pos2 = pos1 + size; - if (pos2 > l) + if (pos2 > l) { pos2 = l; + } fragment = new String(TextEditor1.get(iTab).getText().substring(pos1, pos2)); sendBuf.add(fragment); pos1 += size; @@ -10706,8 +13437,9 @@ public boolean SendTurboTimerStart() { int delay = 0; j0(); delay = Delay.getValue(); - if (delay == 0) + if (delay == 0) { delay = 10; + } taskPerformer = new ActionListener() { public void actionPerformed(ActionEvent evt) { if (j < sendBuf.size()) { @@ -10725,6 +13457,15 @@ public void actionPerformed(ActionEvent evt) { return true; } + public boolean pasteMode() { + return pasteMode; + } + + public boolean pasteMode(boolean newMode) { + pasteMode = newMode; + return pasteMode; + } + public boolean SendTimerStart() { startTime = System.currentTimeMillis(); SendLock(); @@ -10747,22 +13488,51 @@ public boolean SendTimerStart() { j0(); if (DumbMode.isSelected()) { // DumbMode delay = LineDelay.getValue(); - taskPerformer = new ActionListener() { - public void actionPerformed(ActionEvent evt) { - if (j < sendBuf.size()) { - send(addCRLF(sendBuf.get(j).trim()), false); - inc_j(); - int div = sendBuf.size() - 1; - if (div == 0) - div = 1; // for non-zero divide - ProgressBar.setValue((j * 100) / div); - if (j > sendBuf.size() - 1) { - timer.stop(); - StopSend(); + if (OptionNodeMCU.isSelected()) { + taskPerformer = new ActionListener() { + public void actionPerformed(ActionEvent evt) { + if (j < sendBuf.size()) { + send(addCRLF(sendBuf.get(j).trim()), false); + inc_j(); + int div = sendBuf.size() - 1; + if (div == 0) { + div = 1; // for non-zero divide + } + ProgressBar.setValue((j * 100) / div); + if (j > sendBuf.size() - 1) { + timer.stop(); + StopSend(); + } } } - } - }; + }; + } else { // MicroPython + taskPerformer = new ActionListener() { + + public void actionPerformed(ActionEvent evt) { + if (j < sendBuf.size()) { + if ((j == 0) && pasteMode()) { + sendStart(); + } + send(addCRLF(sendBuf.get(j)), false); + inc_j(); + if ((j == sendBuf.size()) && pasteMode()) { + sendEnd(); + } + int div = sendBuf.size() - 1; + if (div == 0) { + div = 1; // for non-zero divide + } + ProgressBar.setValue((j * 100) / div); + if (j > sendBuf.size() - 1) { + timer.stop(); + pasteMode(true); + StopSend(); + } + } + } + }; + } timer = new Timer(delay, taskPerformer); timer.setRepeats(true); timer.setInitialDelay(delay); @@ -10770,10 +13540,10 @@ public void actionPerformed(ActionEvent evt) { log("DataSender: start \"Dumb Mode\""); } else { // SmartMode delay = Delay.getValue(); - if (delay == 0) + if (delay == 0) { delay = 10; + } taskPerformer = new ActionListener() { - public void actionPerformed(ActionEvent evt) { if (j < sendBuf.size()) { log(Integer.toString(j)); @@ -10781,7 +13551,6 @@ public void actionPerformed(ActionEvent evt) { sendPending = false; } } - }; timer = new Timer(delay, taskPerformer); timer.setRepeats(false); @@ -10791,6 +13560,7 @@ public void actionPerformed(ActionEvent evt) { WatchDog(); } return true; + } public void send(String s, boolean simple) { @@ -10824,6 +13594,28 @@ public void send(String s, boolean simple) { } } + public void sendBin(byte data) { + if (!pOpen) { + log("DataSender: Serial port not open, operation FAILED."); + return; + } + try { + serialPort.writeByte(data); + } catch (SerialPortException ex) { + log("send FAIL:" + (char) data); + } + } + + public void sendStart() { + byte data = 0x05; + sendBin(data); + } + + public void sendEnd() { + byte data = 0x04; + sendBin(data); + } + public void Busy() { Busy.setText("BUSY"); Busy.setBackground(new java.awt.Color(153, 0, 0)); // RED @@ -10918,11 +13710,13 @@ public void SendUnLock() { FileSaveESP.setIcon(new javax.swing.ImageIcon(getClass().getResource("/move.png"))); FileSaveESP.setSelected(false); FileSendESP.setSelected(false); + + DisablingNotImplemented(); + } public void SetSnippetEditButtonsTooltip() { - // should be called after loading, setting or editing any of the - // Snippet-Names + // should be called after loading, setting or editing any of the Snippet-Names // eg after SnippetSaveActionPerformed() and LoadSnippets () // Mike, DL2ZAP 2015-01-04 SnippetEdit0.setToolTipText(ButtonSnippet0.getText()); @@ -10946,9 +13740,6 @@ public void SetSnippetEditButtonsTooltip() { boolean SaveDownloadedFile() { boolean success = false; log("Saving downloaded file..."); - // FileCount ++; - // iFile.set(iTab, new File("script" + Integer.toString(FileCount) + - // ".lua") ); chooser.rescanCurrentDirectory(); File f = new File(DownloadedFileName); javax.swing.filechooser.FileFilter flt = chooser.getFileFilter(); @@ -10990,8 +13781,9 @@ boolean SaveDownloadedFile() { JOptionPane.showMessageDialog(null, "Error, file " + DownloadedFileName + " not saved!"); } try { - if (fos != null) + if (fos != null) { fos.close(); + } } catch (IOException e) { log(e.toString()); } @@ -11100,13 +13892,11 @@ public void actionPerformed(ActionEvent evt) { if (j < sendBuf.size()) { send(addCR(sendBuf.get(j)), false); sendPending = false; + } else if ((j - sendBuf.size()) < sendPackets.size()) { + sendBytes(sendPackets.get(j - sendBuf.size())); + sendPending = false; } else { - if ((j - sendBuf.size()) < sendPackets.size()) { - sendBytes(sendPackets.get(j - sendBuf.size())); - sendPending = false; - } else { - log("Sorry, bug found: j overflow"); - } + log("Sorry, bug found: j overflow"); } } }; @@ -11148,20 +13938,22 @@ private int SplitDataToPackets() { sendPackets = new ArrayList(); packets = tx_byte.length / SendPacketSize; log("1. packets = " + Integer.toString(packets)); - if ((tx_byte.length % SendPacketSize) > 0) + if ((tx_byte.length % SendPacketSize) > 0) { packets++; + } log("2. packets = " + Integer.toString(packets)); - if (tx_byte.length < SendPacketSize) + if (tx_byte.length < SendPacketSize) { packets = 1; + } int remain = tx_byte.length; int lastPacketSize = -1; byte[] b; int pos = 0; for (int i = 0; i < packets; i++) { log("3. packet = " + Integer.toString(i)); - if (remain > SendPacketSize) + if (remain > SendPacketSize) { b = new byte[SendPacketSize]; // default value is 200 - else { + } else { b = new byte[remain]; lastPacketSize = remain; } @@ -11189,11 +13981,11 @@ public void sendBytes(byte[] b) { } busyIcon = !busyIcon; try { - // log("BytesSender sending:" + b.toString().replace("\r\n", - // "")); + // log("BytesSender sending:" + b.toString().replace("\r\n", "")); serialPort.writeBytes(b); } catch (SerialPortException ex) { log("BytesSender send FAIL:" + b.toString().replace("\r\n", "")); + } } @@ -11219,8 +14011,8 @@ public void serialEvent(SerialPortEvent event) { } if (rx_data.contains("~~~CRC-END~~~")) { gotProperAnswer = true; - // log("Uploader: receiving packet checksum " + - // Integer.toString( j-sendBuf.size() +1) + "/" + // log("Uploader: receiving packet checksum " + Integer.toString( + // j-sendBuf.size() +1) + "/" // + Integer.toString( sendPackets.size() ) ); // parsing answer int start = rx_data.indexOf("~~~CRC-START~~~"); @@ -11322,18 +14114,292 @@ private void ViewFile(String fn) { LocalEcho = false; SendToESP(cmdPrep(cmd)); } -} -/* - * private ArrayList cmdBytePrep ( String cmd ) { String[] str = - * cmd.split("\n"); ArrayList s256 = new ArrayList(); int i = 0; - * byte[] b = new byte[0]; for(String subs : str) { try { b = - * subs.getBytes("UTF-8"); } catch (Exception e) { log(e.toString()); } if ( - * s256.size() == 0 ) { try { s256.add(subs.getBytes("UTF-8")); } catch - * (Exception e) { log(e.toString()); } } else if ( (s256.get(i).length + - * subs.trim().length()) <= 250 ) { try { byte[] sum = concatArray( s256.get(i), - * " ".getBytes("UTF-8") ); sum = concatArray( sum, subs.getBytes("UTF-8") ); - * s256.set(i, sum ); } catch (Exception e) { log(e.toString()); } } else { try - * { byte[] sum = concatArray( s256.get(i), "\r".getBytes("UTF-8") ); - * s256.add(sum); } catch (Exception e) { log(e.toString()); } i++; } } return - * s256; } - */ + + private void SetFirmwareType(int ftype) { + FirmwareType = ftype; + switch (ftype) { + case FIRMWARE_MPYTHON: + prefs.put(FIRMWARE, "MicroPython"); + PrefsFlush(); + chooser.setFileFilter(FILTER_PYTHON); + CommandsSetMicroPython(); + OptionMicroPython.setSelected(true); + CommandsMicroPython.setVisible(true); + CommandsNodeMCU.setVisible(false); + NodeFileManagerPane.setVisible(false); + PyFileManagerPane.setVisible(true); + DisablingNotImplemented(); + break; + case FIRMWARE_NODEMCU: + prefs.put(FIRMWARE, "NodeMCU"); + PrefsFlush(); + chooser.setFileFilter(FILTER_LUA); + CommandsSetNodeMCU(); + OptionNodeMCU.setSelected(true); + CommandsMicroPython.setVisible(false); + CommandsNodeMCU.setVisible(true); + NodeFileManagerPane.setVisible(true); + PyFileManagerPane.setVisible(false); + break; + default: + // AT-based + prefs.put(FIRMWARE, "AT"); + PrefsFlush(); + chooser.setFileFilter(FILTER_ALL); + CommandsSetAT(); + break; + } + LoadSnippets(); // reloading needed + } + + private void DisablingNotImplemented() { + if (OptionMicroPython.isSelected()) { + /* temporay disabling not emplemented functions */ + LineDelay.setValue(0); // micro python very fast :) + DumbMode.setSelected(true); + + MenuItemViewLeftExtra.setSelected(false); + // MenuItemViewFileManager.setSelected(false); + MenuItemViewRightExtra.setSelected(false); + MenuItemViewDonate.setSelected(false); + MenuItemFileDo.setEnabled(false); + FileDo.setEnabled(false); + MenuItemFileRemoveESP.setEnabled(false); + MenuESP.setEnabled(false); + FilesUpload.setEnabled(false); + // MenuItemFileSaveESP.setEnabled(false); + // FileSaveESP.setEnabled(false); + + FileAutoSaveESP.setSelected(false); + Condensed.setSelected(false); + Condensed.setEnabled(false); + + /* enabled items */ + MenuItemViewSnippets.setEnabled(true); + + } + } // DisablingNotImplemented + + private void cmdButtonGPIO(int gpio, int value) { + if (!OptionMicroPython.isSelected()) { + return; + } + if (!pOpen) { + log("Port not open, operation FAILED."); + return; + } + if (portJustOpen) { + log("ERROR: Communication with MCU not established."); + return; + } + log("Send command GPIO" + Integer.toString(gpio) + " : " + Integer.toString(value)); + String cmd = "import pyb;p=pyb.Pin(" + Integer.toString(gpio) + ",pyb.Pin.OUT);p.value(" + + Integer.toString(value) + ")"; + btnSend(cmd); + } // cmdButtonGPIO + + private void cmdButtonGetGPIO(int gpio) { + if (!OptionMicroPython.isSelected()) { + return; + } + if (!pOpen) { + log("Port not open, operation FAILED."); + return; + } + if (portJustOpen) { + log("ERROR: Communication with MCU not established."); + return; + } + log("Send command GET GPIO" + Integer.toString(gpio)); + String cmd = "import pyb;p=pyb.Pin(" + Integer.toString(gpio) + ",pyb.Pin.IN);p.value()"; + btnSend(cmd); + } + + private boolean pySaveFileESP(String ft) { + boolean success = false; + log("pyFileSaveESP: Starting..."); + String[] content = TextEditor1.get(iTab).getText().split("\r?\n"); + if (pyFiler.Put(ft, content)) { + pasteMode(false); + success = SendTimerStart(); + } + return success; + } // pySaveFileESP + + private void AddPyFileButton(String FileName) { + PyFileAsButton.add(new javax.swing.JButton()); + int i = PyFileAsButton.size() - 1; + PyFileAsButton.get(i).setText(FileName); + PyFileAsButton.get(i).setAlignmentX(0.5F); + PyFileAsButton.get(i).setMargin(new java.awt.Insets(2, 2, 2, 2)); + PyFileAsButton.get(i).setMaximumSize(new java.awt.Dimension(130, 25)); + PyFileAsButton.get(i).setPreferredSize(new java.awt.Dimension(130, 25)); + PyFileAsButton.get(i).setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + PyFileAsButton.get(i).addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + PyFileAsButton1ActionPerformed(evt); + } + }); + // PopUp menu + FilePopupMenu.add(new javax.swing.JPopupMenu()); + // PopUp menu items + /* + * if (FileName.endsWith(".py")) { FileAsButton.get(i).setIcon(new + * javax.swing.ImageIcon(getClass().getResource("/lua.png"))); + * FileAsButton.get(i).setToolTipText(FileAsButton.get(i).getActionCommand() + + * ", LeftClick - Run, RightClick - Other actions"); AddMenuItemRun(x, + * FileName); AddMenuItemCompile(x, FileName); AddMenuItemSeparator(x); + * AddMenuItemView(x, FileName); AddMenuItemDump(x, FileName); + * AddMenuItemEdit(x, FileName, size); AddMenuItemDownload(x, FileName, size); + * AddMenuItemRename(x, FileName); AddMenuItemSeparator(x); AddMenuItemRemove(x, + * FileName); } else if (FileName.endsWith(".lc")) { + * FileAsButton.get(i).setIcon(new + * javax.swing.ImageIcon(getClass().getResource("/lc.png"))); + * FileAsButton.get(i).setToolTipText(FileAsButton.get(i).getActionCommand() + + * ", LeftClick - Run, RightClick - Other actions"); AddMenuItemRun(x, + * FileName); AddMenuItemSeparator(x); AddMenuItemDump(x, FileName); + * AddMenuItemDownload(x, FileName, size); AddMenuItemRename(x, FileName); + * AddMenuItemSeparator(x); AddMenuItemRemove(x, FileName); } else { + * FileAsButton.get(i).setIcon(new + * javax.swing.ImageIcon(getClass().getResource("/file.png"))); + * FileAsButton.get(i).setToolTipText(FileAsButton.get(i).getActionCommand() + + * ", LeftClick - View, RightClick - Other actions"); AddMenuItemView(x, + * FileName); AddMenuItemDump(x, FileName); AddMenuItemEdit(x, FileName, size); + * AddMenuItemDownload(x, FileName, size); AddMenuItemRename(x, FileName); + * AddMenuItemSeparator(x); AddMenuItemRemove(x, FileName); } + * + * FileAsButton.get(i).setComponentPopupMenu(FilePopupMenu.get(x)); + */ + PyFileManagerPane.add(PyFileAsButton.get(i)); + + } // AddPyFileButton + + private void ClearPyFileManager() { + if (!MenuItemViewFileManager.isSelected()) { + return; + } + PyFileManagerPane.removeAll(); + PyFileManagerPane.add(PyListDir); + PyFileManagerPane.repaint(); + PyFileAsButton = new ArrayList(); + } // ClearPyFileManager + + private void PyListFiles() { + if (portJustOpen) { + log("ERROR: Communication with MCU not yet established."); + return; + } + try { + serialPort.removeEventListener(); + } catch (Exception e) { + log(e.toString()); + return; + } + try { + serialPort.addEventListener(new PortPyFilesReader(), portMask); + log("pyFileManager: Add EventListener: Success."); + } catch (SerialPortException e) { + log("pyFileManager: Add EventListener Error. Canceled."); + return; + } + ClearPyFileManager(); + rx_data = ""; + rcvBuf = ""; + log("pyFileManager: Starting..."); + String cmd = "import os;os.listdir('" + pyFiler.pwd() + "')"; + btnSend(cmd); + WatchDogPyListDir(); + } // PyListFiles + + private void WatchDogPyListDir() { + watchDog = new ActionListener() { + public void actionPerformed(ActionEvent evt) { + // StopSend(); + Toolkit.getDefaultToolkit().beep(); + TerminalAdd("Waiting answer from ESP - Timeout reached. Command aborted."); + log("Waiting answer from ESP - Timeout reached. Command aborted."); + try { + serialPort.removeEventListener(); + serialPort.addEventListener(new PortReader(), portMask); + } catch (Exception e) { + log(e.toString()); + } + SendUnLock(); + } + }; + int delay = AnswerDelay.getValue() * 1000; + if (delay == 0) { + delay = 300; + } + + delay = 3000; + + timeout = new Timer(delay, watchDog); + timeout.setRepeats(false); + timeout.setInitialDelay(delay); + timeout.start(); + } // WatchDogPyListDir + + private class PortPyFilesReader implements SerialPortEventListener { + + public void serialEvent(SerialPortEvent event) { + String data; + if (event.isRXCHAR() && event.getEventValue() > 0) { + try { + data = serialPort.readString(event.getEventValue()); + rcvBuf = rcvBuf + data; + rx_data = rx_data + data; + TerminalAdd(data); + } catch (Exception e) { + data = ""; + log(e.toString()); + } + if (rx_data.contains("']\r\n>>>")) { + try { + timeout.stop(); + } catch (Exception e) { + log(e.toString()); + } + log("FileManager: File list found! Do parsing..."); + try { + int start = rx_data.indexOf("["); + rx_data = rx_data.substring(start + 1, rx_data.indexOf("]")); + rx_data = rx_data.replace("'", ""); + s = rx_data.split(", "); + Arrays.sort(s); + TerminalAdd("\r\n----------------------------"); + for (String subs : s) { + TerminalAdd("\r\n" + subs); + if (subs.trim().length() > 0) { + AddPyFileButton(subs); + log("FileManager found file " + subs); + } + } + if (PyFileAsButton.size() == 0) { + TerminalAdd("No files found."); + } + TerminalAdd("\r\n----------------------------\r\n> "); + PyFileManagerPane.invalidate(); + PyFileManagerPane.doLayout(); + PyFileManagerPane.repaint(); + PyFileManagerPane.requestFocusInWindow(); + log("pyFileManager: File list parsing done, found " + PyFileAsButton.size() + " file(s)."); + } catch (Exception e) { + log(e.toString()); + } + try { + serialPort.removeEventListener(); + serialPort.addEventListener(new PortReader(), portMask); + } catch (Exception e) { + log(e.toString()); + } + // SendUnLock(); + } + } else if (event.isCTS()) { + UpdateLedCTS(); + } else if (event.isERR()) { + log("FileManager: Unknown serial port error received."); + } + } // serialEvent + } // PortPyFilesReader +} // Main diff --git a/src/main/java/com/github/unafraid/ESPlorer/pyFiler.java b/src/main/java/com/github/unafraid/ESPlorer/pyFiler.java new file mode 100644 index 0000000..f0f34ea --- /dev/null +++ b/src/main/java/com/github/unafraid/ESPlorer/pyFiler.java @@ -0,0 +1,88 @@ +/** + * + * @author 4refr0nt + */ +package com.github.unafraid.ESPlorer; + +import java.util.ArrayList; + +public class pyFiler { + + private static String dir = ""; + + public static final int OK = 0; + public static final int ERROR_COMMUNICATION = 1; + + public pyFiler() { + + } + + public String ListDir() { + return ""; + } + + public boolean Put(String ft, String[] s) { + + boolean success = true; + Main.sendBuf = new ArrayList(); + + Main.sendBuf.add("f=open('" + escape(ft) + "','w')"); + for (String subs : s) { + Main.sendBuf.add("f.write('" + escape(subs) + "\\n')"); + } + Main.sendBuf.add("f.close()"); + + return success; + } + + public boolean Get() { + return false; + } + + public boolean Rename() { + return false; + } + + public int Length() { + return 0; + } + + public String cd() { + return dir; + } + + public String pwd() { + return dir; + } + + public String GetParent() { + return ""; + } + + public boolean isExist() { + return false; + } + + public String escape(String str) { + char ch; + StringBuilder buf = new StringBuilder(str.length() * 2); + int intValue; + + for (int i = 0, l = str.length(); i < l; ++i) { + + ch = str.charAt(i); + if (ch == '"') { + // intValue = ch; + buf.append("\\"); + // buf.append(ch); + } else if (ch == '\'') { + intValue = ch; + buf.append("\\"); + // buf.append(intValue); + // } else { + } + buf.append(ch); + } + return buf.toString(); + } // escape +} // pyFiler diff --git a/ESPlorer/src/resources/IoTmanager.png b/src/main/resources/IoTmanager.png similarity index 100% rename from ESPlorer/src/resources/IoTmanager.png rename to src/main/resources/IoTmanager.png diff --git a/ESPlorer/src/resources/aliexpress.png b/src/main/resources/aliexpress.png similarity index 100% rename from ESPlorer/src/resources/aliexpress.png rename to src/main/resources/aliexpress.png diff --git a/ESPlorer/src/resources/micropython.png b/src/main/resources/micropython.png similarity index 100% rename from ESPlorer/src/resources/micropython.png rename to src/main/resources/micropython.png diff --git a/ESPlorer/src/resources/nodemcu.png b/src/main/resources/nodemcu.png similarity index 100% rename from ESPlorer/src/resources/nodemcu.png rename to src/main/resources/nodemcu.png diff --git a/ESPlorer/src/resources/paypal.png b/src/main/resources/paypal.png similarity index 100% rename from ESPlorer/src/resources/paypal.png rename to src/main/resources/paypal.png diff --git a/ESPlorer/src/resources/uploadLUA.png b/src/main/resources/uploadLUA.png similarity index 100% rename from ESPlorer/src/resources/uploadLUA.png rename to src/main/resources/uploadLUA.png

- * - * For more flexible boilerplate code insertion, consider using the - * TemplateCompletion - * class in the - * AutoComplete - * add-on library. - * - * @return Whether templates are enabled. - * @see #saveTemplates() - * @see #setTemplateDirectory(String) - * @see #setTemplatesEnabled(boolean) - */ - public static synchronized boolean getTemplatesEnabled() { - return templatesEnabled; - } - - - /** - * Returns a token list for the given range in the document. - * - * @param startOffs The starting offset in the document. - * @param endOffs The end offset in the document. - * @return The first token in the token list. - */ - private Token getTokenListFor(int startOffs, int endOffs) { - - TokenImpl tokenList = null; - TokenImpl lastToken = null; - - Element map = getDocument().getDefaultRootElement(); - int startLine = map.getElementIndex(startOffs); - int endLine = map.getElementIndex(endOffs); - - for (int line=startLine; line<=endLine; line++) { - TokenImpl t = (TokenImpl)getTokenListForLine(line); - t = cloneTokenList(t); - if (tokenList==null) { - tokenList = t; - lastToken = tokenList; - } - else { - lastToken.setNextToken(t); - } - while (lastToken.getNextToken()!=null && - lastToken.getNextToken().isPaintable()) { - lastToken = (TokenImpl)lastToken.getNextToken(); - } - if (line startOffs?). - if (startOffs>=tokenList.getOffset()) { - while (!tokenList.containsPosition(startOffs)) { - tokenList = (TokenImpl)tokenList.getNextToken(); - } - tokenList.makeStartAt(startOffs); - } - - TokenImpl temp = tokenList; - // Be careful to check temp for null here. It is possible that no - // token contains endOffs, if endOffs is at the end of a line. - while (temp!=null && !temp.containsPosition(endOffs)) { - temp = (TokenImpl)temp.getNextToken(); - } - if (temp!=null) { - temp.textCount = endOffs - temp.getOffset(); - temp.setNextToken(null); - } - - return tokenList; - - } - - - /** - * Returns a list of tokens representing the given line. - * - * @param line The line number to get tokens for. - * @return A linked list of tokens representing the line's text. - */ - public Token getTokenListForLine(int line) { - return ((RSyntaxDocument)getDocument()).getTokenListForLine(line); - } - - - /** - * Returns the painter to use for rendering tokens. - * - * @return The painter to use for rendering tokens. - */ - TokenPainter getTokenPainter() { - return tokenPainter; - } - - - /** - * Returns the tool tip to display for a mouse event at the given - * location. This method is overridden to give a registered parser a - * chance to display a tool tip (such as an error description when the - * mouse is over an error highlight). - * - * @param e The mouse event. - */ - @Override - public String getToolTipText(MouseEvent e) { - - // Apple JVMS (Java 6 and prior) have their ToolTipManager events - // repeat for some reason, so this method gets called every 1 second - // or so. We short-circuit that since some ToolTipManagers may do - // expensive calculations (e.g. language supports). - if (RSyntaxUtilities.getOS()==RSyntaxUtilities.OS_MAC_OSX) { - Point newLoc = e.getPoint(); - if (newLoc!=null && newLoc.equals(cachedTipLoc)) { - return cachedTip; - } - cachedTipLoc = newLoc; - } - - return cachedTip = getToolTipTextImpl(e); - - } - - - /** - * Does the dirty work of getting the tool tip text. - * - * @param e The mouse event. - * @return The tool tip text. - */ - protected String getToolTipTextImpl(MouseEvent e) { - - // Check parsers for tool tips first. - String text = null; - URL imageBase = null; - if (parserManager!=null) { - ToolTipInfo info = parserManager.getToolTipText(e); - if (info!=null) { // Should always be true - text = info.getToolTipText(); // May be null - imageBase = info.getImageBase(); // May be null - } - } - if (text==null) { - text = super.getToolTipText(e); - } - - // Do we want to use "focusable" tips? - if (getUseFocusableTips()) { - if (text!=null) { - if (focusableTip==null) { - focusableTip = new FocusableTip(this, parserManager); - } - focusableTip.setImageBase(imageBase); - focusableTip.toolTipRequested(e, text); - } - // No tool tip text at new location - hide tip window if one is - // currently visible - else if (focusableTip!=null) { - focusableTip.possiblyDisposeOfTipWindow(); - } - return null; - } - - return text; // Standard tool tips - - } - - - /** - * Returns whether the specified token should be underlined. - * A token is underlined if its syntax style includes underlining, - * or if it is a hyperlink and hyperlinks are enabled. - * - * @param t The token. - * @return Whether the specified token should be underlined. - */ - public boolean getUnderlineForToken(Token t) { - return (getHyperlinksEnabled() && - (t.isHyperlink() || - (linkGeneratorResult!=null && linkGeneratorResult.getSourceOffset()==t.getOffset()))) || - syntaxScheme.getStyle(t.getType()).underline; - } - - - /** - * Returns whether "focusable" tool tips are used instead of standard - * ones. Focusable tool tips are tool tips that the user can click on, - * resize, copy from, and click links in. - * - * @return Whether to use focusable tool tips. - * @see #setUseFocusableTips(boolean) - * @see FocusableTip - */ - public boolean getUseFocusableTips() { - return useFocusableTips; - } - - - /** - * Returns whether selected text should use the "selected text color" - * property set via {@link #setSelectedTextColor(Color)}. This is the - * typical behavior of text components. By default, RSyntaxTextArea does - * not do this, so that token styles are visible even in selected regions - * of text. - * - * @return Whether the "selected text" color is used when painting text - * in selected regions. - * @see #setUseSelectedTextColor(boolean) - */ - public boolean getUseSelectedTextColor() { - return useSelectedTextColor; - } - - - /** - * Called by constructors to initialize common properties of the text - * editor. - */ - @Override - protected void init() { - - super.init(); - metricsNeverRefreshed = true; - - tokenPainter = new DefaultTokenPainter(); - - // NOTE: Our actions are created here instead of in a static block - // so they are only created when the first RTextArea is instantiated, - // not before. There have been reports of users calling static getters - // (e.g. RSyntaxTextArea.getDefaultBracketMatchBGColor()) which would - // cause these actions to be created and (possibly) incorrectly - // localized, if they were in a static block. - if (toggleCurrentFoldAction==null) { - createRstaPopupMenuActions(); - } - - // Set some RSyntaxTextArea default values. - syntaxStyleKey = SYNTAX_STYLE_NONE; - setMatchedBracketBGColor(getDefaultBracketMatchBGColor()); - setMatchedBracketBorderColor(getDefaultBracketMatchBorderColor()); - setBracketMatchingEnabled(true); - setAnimateBracketMatching(true); - lastBracketMatchPos = -1; - setSelectionColor(getDefaultSelectionColor()); - setTabLineColor(null); - setMarkOccurrencesColor(MarkOccurrencesSupport.DEFAULT_COLOR); - - foldManager = new FoldManager(this); - - // Set auto-indent related stuff. - setAutoIndentEnabled(true); - setCloseCurlyBraces(true); - setCloseMarkupTags(true); - setClearWhitespaceLinesEnabled(true); - - setHyperlinksEnabled(true); - setLinkScanningMask(InputEvent.CTRL_DOWN_MASK); - setHyperlinkForeground(Color.BLUE); - isScanningForLinks = false; - setUseFocusableTips(true); - - //setAntiAliasingEnabled(true); - setDefaultAntiAliasingState(); - restoreDefaultSyntaxScheme(); - - setHighlightSecondaryLanguages(true); - secondaryLanguageBackgrounds = new Color[3]; - secondaryLanguageBackgrounds[0] = new Color(0xfff0cc); - secondaryLanguageBackgrounds[1] = new Color(0xdafeda); - secondaryLanguageBackgrounds[2] = new Color(0xffe0f0); - - setRightHandSideCorrection(0); - - } - - - /** - * Returns whether or not auto-indent is enabled. - * - * @return Whether or not auto-indent is enabled. - * @see #setAutoIndentEnabled(boolean) - */ - public boolean isAutoIndentEnabled() { - return autoIndentEnabled; - } - - - /** - * Returns whether or not bracket matching is enabled. - * - * @return true iff bracket matching is enabled. - * @see #setBracketMatchingEnabled - */ - public final boolean isBracketMatchingEnabled() { - return bracketMatchingEnabled; - } - - - /** - * Returns whether or not lines containing nothing but whitespace are made - * into blank lines when Enter is pressed in them. - * - * @return Whether or not whitespace-only lines are cleared when - * the user presses Enter on them. - * @see #setClearWhitespaceLinesEnabled(boolean) - */ - public boolean isClearWhitespaceLinesEnabled() { - return clearWhitespaceLines; - } - - - /** - * Returns whether code folding is enabled. Note that only certain - * languages support code folding; those that do not will ignore this - * property. - * - * @return Whether code folding is enabled. - * @see #setCodeFoldingEnabled(boolean) - */ - public boolean isCodeFoldingEnabled() { - return foldManager.isCodeFoldingEnabled(); - } - - - /** - * Returns whether whitespace (spaces and tabs) is visible. - * - * @return Whether whitespace is visible. - * @see #setWhitespaceVisible(boolean) - * @see #getEOLMarkersVisible() - */ - public boolean isWhitespaceVisible() { - return whitespaceVisible; - } - - - /** - * Returns the token at the specified position in the model. - * - * @param offs The position in the model. - * @return The token, or null if no token is at that - * position. - * @see #viewToToken(Point) - */ - public Token modelToToken(int offs) { - if (offs>=0) { - try { - int line = getLineOfOffset(offs); - Token t = getTokenListForLine(line); - return RSyntaxUtilities.getTokenAtOffset(t, offs); - } catch (BadLocationException ble) { - ble.printStackTrace(); // Never happens - } - } - return null; - } - - - /** - * The paintComponent method is overridden so we - * apply any necessary rendering hints to the Graphics object. - */ - @Override - protected void paintComponent(Graphics g) { - - // A call to refreshFontMetrics() used to be in addNotify(), but - // unfortunately we cannot always get the graphics context there. If - // the parent frame/dialog is LAF-decorated, there is a chance that the - // window's width and/or height is still == 0 at addNotify() (e.g. - // WebLaF). So unfortunately it's safest to do this here, with a flag - // to only allow it to happen once. - if (metricsNeverRefreshed) { - refreshFontMetrics(getGraphics2D(getGraphics())); - metricsNeverRefreshed = false; - } - - super.paintComponent(getGraphics2D(g)); - } - - - private void refreshFontMetrics(Graphics2D g2d) { - // It is assumed that any rendering hints are already applied to g2d. - defaultFontMetrics = g2d.getFontMetrics(getFont()); - syntaxScheme.refreshFontMetrics(g2d); - if (getLineWrap()==false) { - // HORRIBLE HACK! The un-wrapped view needs to refresh its cached - // longest line information. - SyntaxView sv = (SyntaxView)getUI().getRootView(this).getView(0); - sv.calculateLongestLine(); - } - } - - - /** - * {@inheritDoc} - */ - @Override - public void redoLastAction() { - super.redoLastAction(); - // Occasionally marked occurrences' Positions are in invalid states - // due to how javax.swing.text.AbstractDocument tracks the start and - // end offsets. This is usually not needed, but can be when the last - // token in the Document is a marked occurrence, and an undo or redo - // occurs which clears most of the document text. In that case it is - // possible for the end Position to be reset to something small, but - // the start offset to be its prior valid (start > end). - ((RSyntaxTextAreaHighlighter)getHighlighter()). - clearMarkOccurrencesHighlights(); - } - - - /** - * Removes an "active line range" listener from this text area. - * - * @param l The listener to remove. - * @see #removeActiveLineRangeListener(ActiveLineRangeListener) - */ - public void removeActiveLineRangeListener(ActiveLineRangeListener l) { - listenerList.remove(ActiveLineRangeListener.class, l); - } - - - /** - * Removes a hyperlink listener from this text area. - * - * @param l The listener to remove. - * @see #addHyperlinkListener(HyperlinkListener) - */ - public void removeHyperlinkListener(HyperlinkListener l) { - listenerList.remove(HyperlinkListener.class, l); - } - - - /** - * Overridden so we stop this text area's parsers, if any. - */ - @Override - public void removeNotify() { - if (parserManager!=null) { - parserManager.stopParsing(); - } - super.removeNotify(); - } - - - /** - * Removes a parser from this text area. - * - * @param parser The {@link Parser} to remove. - * @return Whether the parser was found and removed. - * @see #clearParsers() - * @see #addParser(Parser) - * @see #getParser(int) - */ - public boolean removeParser(Parser parser) { - boolean removed = false; - if (parserManager!=null) { - removed = parserManager.removeParser(parser); - } - return removed; - } - - - /** - * Sets the colors used for syntax highlighting to their defaults. - * - * @see #setSyntaxScheme(SyntaxScheme) - * @see #getSyntaxScheme() - * @see #getDefaultSyntaxScheme() - */ - public void restoreDefaultSyntaxScheme() { - setSyntaxScheme(getDefaultSyntaxScheme()); - } - - - /** - * Attempts to save all currently-known templates to the current template - * directory, as set by setTemplateDirectory. Templates - * will be saved as XML files with names equal to their abbreviations; for - * example, a template that expands on the word "forb" will be saved as - * forb.xml. - * - * @return Whether or not the save was successful. The save will - * be unsuccessful if the template directory does not exist or - * if it has not been set (i.e., you have not yet called - * setTemplateDirectory). - * @see #getTemplatesEnabled - * @see #setTemplateDirectory - * @see #setTemplatesEnabled - */ - public static synchronized boolean saveTemplates() { - if (!getTemplatesEnabled()) { - return false; - } - return getCodeTemplateManager().saveTemplates(); - } - - - /** - * Sets the "active line range." Note that this - * RSyntaxTextArea itself does nothing with this information, - * but if it is contained inside an {@link RTextScrollPane}, the active - * line range may be displayed in the icon area of the {@link Gutter}.