From a34ee7364cbf394a3634a2392ed53eee314b74b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=F8=EDk?= Date: Sat, 4 Sep 2010 13:57:22 +0200 Subject: [PATCH] Initial version based on previous work. (Version alpha 7) --- trunk/.idea/compiler.xml | 24 + trunk/.idea/copyright/profiles_settings.xml | 5 + trunk/.idea/encodings.xml | 5 + trunk/.idea/libraries/lib1.xml | 11 + trunk/.idea/libraries/testlib.xml | 11 + trunk/.idea/misc.xml | 30 + trunk/.idea/modules.xml | 9 + trunk/.idea/uiDesigner.xml | 125 + trunk/.idea/vcs.xml | 7 + trunk/.idea/workspace.xml | 379 +++ trunk/Trunk.iml | 15 + trunk/build.xml | 158 ++ trunk/buildconfig.xml | 23 + trunk/doc/avm2overview.pdf | Bin 0 -> 410466 bytes trunk/doc/swf_file_format_spec_v10.pdf | Bin 0 -> 964973 bytes trunk/graphics/exit.svg | 158 ++ trunk/graphics/loading.svg | 1591 +++++++++++++ trunk/graphics/logo.svg | 289 +++ trunk/graphics/open.svg | 123 + trunk/graphics/proxy.svg | 171 ++ trunk/lib/commons-codec-1.3.jar | Bin 0 -> 46725 bytes trunk/lib/jpproxy.jar | Bin 0 -> 35051 bytes trunk/lib/jsyntaxpane-0.9.5.jar | Bin 0 -> 524914 bytes trunk/libsrc/jpproxy/build.xml | 158 ++ .../classes/com/jpexs/proxy/ByteArray.class | Bin 0 -> 2448 bytes .../com/jpexs/proxy/CatchedListener.class | Bin 0 -> 208 bytes .../classes/com/jpexs/proxy/Client.class | Bin 0 -> 1774 bytes .../classes/com/jpexs/proxy/Connection.class | Bin 0 -> 2587 bytes .../build/classes/com/jpexs/proxy/Copy.class | Bin 0 -> 1205 bytes .../classes/com/jpexs/proxy/Handler.class | Bin 0 -> 13421 bytes .../build/classes/com/jpexs/proxy/Http.class | Bin 0 -> 7491 bytes .../com/jpexs/proxy/HttpConnection.class | Bin 0 -> 1799 bytes .../classes/com/jpexs/proxy/HttpRelay.class | Bin 0 -> 368 bytes .../build/classes/com/jpexs/proxy/Https.class | Bin 0 -> 1442 bytes .../build/classes/com/jpexs/proxy/Key.class | Bin 0 -> 824 bytes .../classes/com/jpexs/proxy/Main$1.class | Bin 0 -> 669 bytes .../classes/com/jpexs/proxy/Main$2.class | Bin 0 -> 1192 bytes .../build/classes/com/jpexs/proxy/Main.class | Bin 0 -> 3911 bytes .../classes/com/jpexs/proxy/Message.class | Bin 0 -> 6592 bytes .../com/jpexs/proxy/ReplacedListener.class | Bin 0 -> 219 bytes .../classes/com/jpexs/proxy/Replacement.class | Bin 0 -> 1531 bytes .../build/classes/com/jpexs/proxy/Reply.class | Bin 0 -> 5508 bytes .../classes/com/jpexs/proxy/Request.class | Bin 0 -> 6208 bytes .../jpexs/proxy/RetryRequestException.class | Bin 0 -> 468 bytes .../classes/com/jpexs/proxy/Server.class | Bin 0 -> 2620 bytes .../com/jpexs/proxy/WorkerThread.class | Bin 0 -> 2678 bytes trunk/libsrc/jpproxy/buildconfig.xml | 23 + trunk/libsrc/jpproxy/dist/JP_NoAds.zip | Bin 0 -> 1089619 bytes .../jpproxy/dist/config/replacements.ini | 12 + .../dist/config/saved/asdec_65483348.tmp | Bin 0 -> 110700 bytes .../dist/config/saved/asdec_70eaddc7.tmp | 1 + .../dist/config/saved/asdec_85f11ffb.tmp | Bin 0 -> 227092 bytes .../dist/config/saved/asdec_a3d1aa1c.tmp | Bin 0 -> 268443 bytes .../dist/config/saved/asdec_d08cceb2.tmp | Bin 0 -> 227088 bytes .../dist/config/saved/asdec_d5ca3577.tmp | Bin 0 -> 221450 bytes trunk/libsrc/jpproxy/dist/jpproxy.jar | Bin 0 -> 36973 bytes .../src/com/jpexs/proxy/ByteArray.java | 134 ++ .../src/com/jpexs/proxy/CatchedListener.java | 19 + .../jpproxy/src/com/jpexs/proxy/Client.java | 43 + .../src/com/jpexs/proxy/Connection.java | 102 + .../jpproxy/src/com/jpexs/proxy/Copy.java | 35 + .../jpproxy/src/com/jpexs/proxy/Handler.java | 575 +++++ .../jpproxy/src/com/jpexs/proxy/Http.java | 296 +++ .../src/com/jpexs/proxy/HttpConnection.java | 48 + .../src/com/jpexs/proxy/HttpRelay.java | 12 + .../jpproxy/src/com/jpexs/proxy/Https.java | 40 + .../jpproxy/src/com/jpexs/proxy/Key.java | 41 + .../jpproxy/src/com/jpexs/proxy/Main.java | 90 + .../jpproxy/src/com/jpexs/proxy/Message.java | 253 +++ .../src/com/jpexs/proxy/ReplacedListener.java | 5 + .../src/com/jpexs/proxy/Replacement.java | 63 + .../jpproxy/src/com/jpexs/proxy/Reply.java | 203 ++ .../jpproxy/src/com/jpexs/proxy/Request.java | 235 ++ .../jpexs/proxy/RetryRequestException.java | 11 + .../jpproxy/src/com/jpexs/proxy/Server.java | 88 + .../src/com/jpexs/proxy/WorkerThread.java | 142 ++ .../jsyntaxpane/jsyntaxpane/CHANGELOG.txt | 90 + .../jsyntaxpane/javaRegex.properties | 11 + .../jsyntaxpane/jsyntaxpane/nbactions.xml | 41 + trunk/libsrc/jsyntaxpane/jsyntaxpane/pom.xml | 78 + .../jsyntaxpane/jsyntaxpane/src/main/Main.iml | 12 + .../java/jsyntaxpane/CompoundUndoMan.java | 140 ++ .../java/jsyntaxpane/DefaultSyntaxKit.java | 671 ++++++ .../main/java/jsyntaxpane/JavaRegexKit.java | 28 + .../src/main/java/jsyntaxpane/Lexer.java | 37 + .../main/java/jsyntaxpane/SyntaxDocument.java | 595 +++++ .../main/java/jsyntaxpane/SyntaxStyle.java | 137 ++ .../main/java/jsyntaxpane/SyntaxStyles.java | 143 ++ .../main/java/jsyntaxpane/SyntaxTester.form | 119 + .../main/java/jsyntaxpane/SyntaxTester.java | 199 ++ .../src/main/java/jsyntaxpane/SyntaxView.java | 173 ++ .../src/main/java/jsyntaxpane/Token.java | 155 ++ .../java/jsyntaxpane/TokenComparators.java | 55 + .../main/java/jsyntaxpane/TokenConstants.java | 124 + .../src/main/java/jsyntaxpane/TokenType.java | 81 + .../java/jsyntaxpane/actions/ActionUtils.java | 623 +++++ .../jsyntaxpane/actions/CaretMonitor.java | 119 + .../actions/ComboCompletionAction.java | 80 + .../actions/CompleteWordAction.java | 102 + .../actions/DefaultSyntaxAction.java | 134 ++ .../actions/DeleteLinesAction.java | 44 + .../actions/DocumentSearchData.java | 264 +++ .../actions/DuplicateLinesAction.java | 45 + .../jsyntaxpane/actions/FindNextAction.java | 26 + .../actions/FindReplaceAction.java | 42 + .../jsyntaxpane/actions/GotoLineAction.java | 35 + .../actions/HTMLPreviewAction.java | 47 + .../jsyntaxpane/actions/IndentAction.java | 96 + .../jsyntaxpane/actions/JIndentAction.java | 81 + .../jsyntaxpane/actions/JUnindentAction.java | 57 + .../jsyntaxpane/actions/JumpToPairAction.java | 44 + .../actions/MapCompletionAction.java | 57 + .../java/jsyntaxpane/actions/PairAction.java | 56 + .../actions/PythonIndentAction.java | 58 + .../jsyntaxpane/actions/QuickFindAction.java | 35 + .../java/jsyntaxpane/actions/RedoAction.java | 38 + .../actions/ReflectCompletionAction.java | 49 + .../jsyntaxpane/actions/ScriptAction.java | 115 + .../actions/ScriptRunnerAction.java | 88 + .../jsyntaxpane/actions/ShowAbbsAction.java | 52 + .../jsyntaxpane/actions/SmartHomeAction.java | 74 + .../actions/SmartHomeSelectAction.java | 42 + .../jsyntaxpane/actions/SyntaxAction.java | 44 + .../jsyntaxpane/actions/TemplateAction.java | 71 + .../actions/ToggleCommentsAction.java | 70 + .../actions/ToggleComponentAction.java | 57 + .../java/jsyntaxpane/actions/UndoAction.java | 38 + .../jsyntaxpane/actions/UnindentAction.java | 51 + .../actions/XmlPrettifyAction.java | 140 ++ .../actions/XmlTagCompleteAction.java | 48 + .../actions/gui/ComboCompletionDialog.form | 71 + .../actions/gui/ComboCompletionDialog.java | 247 ++ .../actions/gui/EscapeListener.java | 31 + .../actions/gui/GotoLineDialog.form | 74 + .../actions/gui/GotoLineDialog.java | 152 ++ .../actions/gui/HTMLPreviewFrame.form | 55 + .../actions/gui/HTMLPreviewFrame.java | 114 + .../jsyntaxpane/actions/gui/MemberCell.java | 258 +++ .../actions/gui/MembersListRenderer.java | 52 + .../actions/gui/QuickFindDialog.form | 168 ++ .../actions/gui/QuickFindDialog.java | 314 +++ .../actions/gui/ReflectCompletionDialog.form | 95 + .../actions/gui/ReflectCompletionDialog.java | 342 +++ .../actions/gui/ReplaceDialog.form | 202 ++ .../actions/gui/ReplaceDialog.java | 305 +++ .../actions/gui/ShowAbbsDialog.form | 113 + .../actions/gui/ShowAbbsDialog.java | 135 ++ .../components/LineNumbersRuler.java | 322 +++ .../java/jsyntaxpane/components/Markers.java | 139 ++ .../jsyntaxpane/components/PairsMarker.java | 97 + .../components/SyntaxComponent.java | 55 + .../jsyntaxpane/components/TokenMarker.java | 146 ++ .../jsyntaxpane/lexers/DefaultJFlexLexer.java | 159 ++ .../java/jsyntaxpane/lexers/EmptyLexer.java | 30 + .../jsyntaxpane/lexers/SimpleRegexLexer.java | 99 + .../syntaxkits/ActionScriptSyntaxKit.java | 33 + .../jsyntaxpane/syntaxkits/BashSyntaxKit.java | 28 + .../jsyntaxpane/syntaxkits/CSyntaxKit.java | 38 + .../syntaxkits/ClojureSyntaxKit.java | 33 + .../jsyntaxpane/syntaxkits/CppSyntaxKit.java | 27 + .../syntaxkits/DOSBatchSyntaxKit.java | 28 + .../syntaxkits/Flasm3SyntaxKit.java | 32 + .../syntaxkits/FlasmSyntaxKit.java | 32 + .../syntaxkits/GroovySyntaxKit.java | 27 + .../syntaxkits/JFlexSyntaxKit.java | 27 + .../syntaxkits/JavaScriptSyntaxKit.java | 28 + .../jsyntaxpane/syntaxkits/JavaSyntaxKit.java | 33 + .../jsyntaxpane/syntaxkits/LuaSyntaxKit.java | 28 + .../syntaxkits/PlainSyntaxKit.java | 28 + .../syntaxkits/PropertiesSyntaxKit.java | 28 + .../syntaxkits/PythonSyntaxKit.java | 29 + .../jsyntaxpane/syntaxkits/RubySyntaxKit.java | 28 + .../syntaxkits/ScalaSyntaxKit.java | 33 + .../jsyntaxpane/syntaxkits/SqlSyntaxKit.java | 28 + .../jsyntaxpane/syntaxkits/TALSyntaxKit.java | 28 + .../syntaxkits/XHTMLSyntaxKit.java | 28 + .../syntaxkits/XPathSyntaxKit.java | 28 + .../jsyntaxpane/syntaxkits/XmlSyntaxKit.java | 29 + .../java/jsyntaxpane/util/Configuration.java | 379 +++ .../jsyntaxpane/util/JarServiceProvider.java | 238 ++ .../java/jsyntaxpane/util/ReflectUtils.java | 362 +++ .../java/jsyntaxpane/util/StringUtils.java | 60 + .../java/jsyntaxpane/util/SwingUtils.java | 49 + .../jsyntaxpane/lexers/actionscript.flex | 266 +++ .../main/jflex/jsyntaxpane/lexers/bash.flex | 365 +++ .../src/main/jflex/jsyntaxpane/lexers/c.flex | 241 ++ .../jflex/jsyntaxpane/lexers/clojure.flex | 496 ++++ .../main/jflex/jsyntaxpane/lexers/cpp.flex | 274 +++ .../jflex/jsyntaxpane/lexers/dosbatch.flex | 170 ++ .../main/jflex/jsyntaxpane/lexers/flasm.flex | 153 ++ .../main/jflex/jsyntaxpane/lexers/flasm3.flex | 140 ++ .../main/jflex/jsyntaxpane/lexers/groovy.flex | 491 ++++ .../main/jflex/jsyntaxpane/lexers/java.flex | 376 +++ .../jflex/jsyntaxpane/lexers/javascript.flex | 279 +++ .../main/jflex/jsyntaxpane/lexers/jflex.flex | 400 ++++ .../main/jflex/jsyntaxpane/lexers/lua.flex | 298 +++ .../jflex/jsyntaxpane/lexers/properties.flex | 63 + .../main/jflex/jsyntaxpane/lexers/python.flex | 386 ++++ .../main/jflex/jsyntaxpane/lexers/ruby.flex | 276 +++ .../main/jflex/jsyntaxpane/lexers/scala.flex | 344 +++ .../main/jflex/jsyntaxpane/lexers/sql.flex | 383 ++++ .../main/jflex/jsyntaxpane/lexers/tal.flex | 166 ++ .../main/jflex/jsyntaxpane/lexers/xhtml.flex | 371 +++ .../main/jflex/jsyntaxpane/lexers/xml.flex | 196 ++ .../main/jflex/jsyntaxpane/lexers/xpath.flex | 266 +++ .../images/completions/annotation_type.png | Bin 0 -> 733 bytes .../META-INF/images/completions/class.png | Bin 0 -> 785 bytes .../images/completions/constructor.png | Bin 0 -> 492 bytes .../completions/constructor_private.png | Bin 0 -> 704 bytes .../completions/constructor_protected.png | Bin 0 -> 675 bytes .../META-INF/images/completions/field.png | Bin 0 -> 342 bytes .../images/completions/field_private.png | Bin 0 -> 601 bytes .../images/completions/field_protected.png | Bin 0 -> 570 bytes .../images/completions/field_static.png | Bin 0 -> 366 bytes .../completions/field_static_private.png | Bin 0 -> 656 bytes .../completions/field_static_protected.png | Bin 0 -> 633 bytes .../META-INF/images/completions/method.png | Bin 0 -> 556 bytes .../images/completions/method_private.png | Bin 0 -> 779 bytes .../images/completions/method_protected.png | Bin 0 -> 767 bytes .../images/completions/method_static.png | Bin 0 -> 541 bytes .../completions/method_static_private.png | Bin 0 -> 779 bytes .../completions/method_static_protected.png | Bin 0 -> 768 bytes .../META-INF/images/small-icons/Thumbs.db | Bin 0 -> 41472 bytes .../META-INF/images/small-icons/comment.png | Bin 0 -> 620 bytes .../images/small-icons/complete-word.png | Bin 0 -> 542 bytes .../images/small-icons/completions.png | Bin 0 -> 863 bytes .../images/small-icons/copy-to-clipboard.png | Bin 0 -> 498 bytes .../images/small-icons/cut-to-clipboard.png | Bin 0 -> 807 bytes .../small-icons/edit-find-replace-all.png | Bin 0 -> 762 bytes .../images/small-icons/edit-find-replace.png | Bin 0 -> 776 bytes .../META-INF/images/small-icons/find-next.png | Bin 0 -> 702 bytes .../META-INF/images/small-icons/find.png | Bin 0 -> 617 bytes .../META-INF/images/small-icons/go-down.png | Bin 0 -> 683 bytes .../META-INF/images/small-icons/go-next.png | Bin 0 -> 676 bytes .../images/small-icons/go-previous.png | Bin 0 -> 655 bytes .../META-INF/images/small-icons/go-up.png | Bin 0 -> 652 bytes .../META-INF/images/small-icons/goto-line.png | Bin 0 -> 263 bytes .../META-INF/images/small-icons/highlight.png | Bin 0 -> 482 bytes .../images/small-icons/html-preview.png | Bin 0 -> 928 bytes .../META-INF/images/small-icons/indent.png | Bin 0 -> 435 bytes .../images/small-icons/jump-to-pair.png | Bin 0 -> 506 bytes .../small-icons/paste-from-clipboard.png | Bin 0 -> 561 bytes .../META-INF/images/small-icons/play.png | Bin 0 -> 660 bytes .../META-INF/images/small-icons/redo.png | Bin 0 -> 591 bytes .../META-INF/images/small-icons/reflect.png | Bin 0 -> 673 bytes .../images/small-icons/select-all.png | Bin 0 -> 441 bytes .../META-INF/images/small-icons/show-abbs.png | Bin 0 -> 410 bytes .../images/small-icons/surround-comment.png | Bin 0 -> 631 bytes .../images/small-icons/surround-debug.png | Bin 0 -> 626 bytes .../images/small-icons/surround-if.png | Bin 0 -> 628 bytes .../images/small-icons/surround-try.png | Bin 0 -> 547 bytes .../images/small-icons/surround-while.png | Bin 0 -> 633 bytes .../images/small-icons/surround-with.png | Bin 0 -> 450 bytes .../META-INF/images/small-icons/surround.png | Bin 0 -> 448 bytes .../images/small-icons/toggle-lines.png | Bin 0 -> 573 bytes .../small-icons/toggle-token-marker.png | Bin 0 -> 553 bytes .../META-INF/images/small-icons/undo.png | Bin 0 -> 650 bytes .../META-INF/images/small-icons/unindent.png | Bin 0 -> 436 bytes .../defaultsyntaxkit/config.properties | 153 ++ .../jsyntaxpane/kitsfortypes.properties | 29 + .../jsyntaxpane/scripts/insertdate.js | 8 + .../actionscriptsyntaxkit/config.properties | 28 + .../bashsyntaxkit/config.properties | 5 + .../clojuresyntaxkit/config.properties | 5 + .../dosbatchsyntaxkit/config.properties | 5 + .../flasm3syntaxkit/abbreviations.properties | 4 + .../flasm3syntaxkit/combocompletions.txt | 0 .../flasm3syntaxkit/config.properties | 36 + .../flasmsyntaxkit/abbreviations.properties | 4 + .../flasmsyntaxkit/combocompletions.txt | 0 .../flasmsyntaxkit/config.properties | 36 + .../groovysyntaxkit/abbreviations.properties | 41 + .../groovysyntaxkit/config.properties | 5 + .../javascriptsyntaxkit/config.properties | 28 + .../javasyntaxkit/abbreviations.properties | 43 + .../javasyntaxkit/combocompletions.txt | 18 + .../javasyntaxkit/config.properties | 86 + .../luasyntaxkit/combocompletions.txt | 30 + .../syntaxkits/luasyntaxkit/config.properties | 23 + .../plainsyntaxkit/config.properties | 19 + .../propertiessyntaxkit/config.properties | 2 + .../pythonsyntaxkit/config.properties | 14 + .../rubysyntaxkit/config.properties | 6 + .../scalasyntaxkit/config.properties | 2 + .../syntaxkits/sqlsyntaxkit/config.properties | 2 + .../syntaxkits/talsyntaxkit/config.properties | 2 + .../xhtmlsyntaxkit/config.properties | 18 + .../syntaxkits/xmlsyntaxkit/config.properties | 24 + .../xpathsyntaxkit/config.properties | 4 + .../images/completions/annotation_type.png | Bin 0 -> 733 bytes .../META-INF/images/completions/class.png | Bin 0 -> 785 bytes .../images/completions/constructor.png | Bin 0 -> 492 bytes .../completions/constructor_private.png | Bin 0 -> 704 bytes .../completions/constructor_protected.png | Bin 0 -> 675 bytes .../META-INF/images/completions/field.png | Bin 0 -> 342 bytes .../images/completions/field_private.png | Bin 0 -> 601 bytes .../images/completions/field_protected.png | Bin 0 -> 570 bytes .../images/completions/field_static.png | Bin 0 -> 366 bytes .../completions/field_static_private.png | Bin 0 -> 656 bytes .../completions/field_static_protected.png | Bin 0 -> 633 bytes .../META-INF/images/completions/method.png | Bin 0 -> 556 bytes .../images/completions/method_private.png | Bin 0 -> 779 bytes .../images/completions/method_protected.png | Bin 0 -> 767 bytes .../images/completions/method_static.png | Bin 0 -> 541 bytes .../completions/method_static_private.png | Bin 0 -> 779 bytes .../completions/method_static_protected.png | Bin 0 -> 768 bytes .../META-INF/images/small-icons/Thumbs.db | Bin 0 -> 41472 bytes .../META-INF/images/small-icons/comment.png | Bin 0 -> 620 bytes .../images/small-icons/complete-word.png | Bin 0 -> 542 bytes .../images/small-icons/completions.png | Bin 0 -> 863 bytes .../images/small-icons/copy-to-clipboard.png | Bin 0 -> 498 bytes .../images/small-icons/cut-to-clipboard.png | Bin 0 -> 807 bytes .../small-icons/edit-find-replace-all.png | Bin 0 -> 762 bytes .../images/small-icons/edit-find-replace.png | Bin 0 -> 776 bytes .../META-INF/images/small-icons/find-next.png | Bin 0 -> 702 bytes .../META-INF/images/small-icons/find.png | Bin 0 -> 617 bytes .../META-INF/images/small-icons/go-down.png | Bin 0 -> 683 bytes .../META-INF/images/small-icons/go-next.png | Bin 0 -> 676 bytes .../images/small-icons/go-previous.png | Bin 0 -> 655 bytes .../META-INF/images/small-icons/go-up.png | Bin 0 -> 652 bytes .../META-INF/images/small-icons/goto-line.png | Bin 0 -> 263 bytes .../META-INF/images/small-icons/highlight.png | Bin 0 -> 482 bytes .../images/small-icons/html-preview.png | Bin 0 -> 928 bytes .../META-INF/images/small-icons/indent.png | Bin 0 -> 435 bytes .../images/small-icons/jump-to-pair.png | Bin 0 -> 506 bytes .../small-icons/paste-from-clipboard.png | Bin 0 -> 561 bytes .../META-INF/images/small-icons/play.png | Bin 0 -> 660 bytes .../META-INF/images/small-icons/redo.png | Bin 0 -> 591 bytes .../META-INF/images/small-icons/reflect.png | Bin 0 -> 673 bytes .../images/small-icons/select-all.png | Bin 0 -> 441 bytes .../META-INF/images/small-icons/show-abbs.png | Bin 0 -> 410 bytes .../images/small-icons/surround-comment.png | Bin 0 -> 631 bytes .../images/small-icons/surround-debug.png | Bin 0 -> 626 bytes .../images/small-icons/surround-if.png | Bin 0 -> 628 bytes .../images/small-icons/surround-try.png | Bin 0 -> 547 bytes .../images/small-icons/surround-while.png | Bin 0 -> 633 bytes .../images/small-icons/surround-with.png | Bin 0 -> 450 bytes .../META-INF/images/small-icons/surround.png | Bin 0 -> 448 bytes .../images/small-icons/toggle-lines.png | Bin 0 -> 573 bytes .../small-icons/toggle-token-marker.png | Bin 0 -> 553 bytes .../META-INF/images/small-icons/undo.png | Bin 0 -> 650 bytes .../META-INF/images/small-icons/unindent.png | Bin 0 -> 436 bytes .../defaultsyntaxkit/config.properties | 153 ++ .../jsyntaxpane/kitsfortypes.properties | 29 + .../jsyntaxpane/scripts/insertdate.js | 8 + .../actionscriptsyntaxkit/config.properties | 28 + .../bashsyntaxkit/config.properties | 5 + .../clojuresyntaxkit/config.properties | 5 + .../dosbatchsyntaxkit/config.properties | 5 + .../flasm3syntaxkit/abbreviations.properties | 4 + .../flasm3syntaxkit/combocompletions.txt | 0 .../flasm3syntaxkit/config.properties | 36 + .../flasmsyntaxkit/abbreviations.properties | 4 + .../flasmsyntaxkit/combocompletions.txt | 0 .../flasmsyntaxkit/config.properties | 36 + .../groovysyntaxkit/abbreviations.properties | 41 + .../groovysyntaxkit/config.properties | 5 + .../javascriptsyntaxkit/config.properties | 28 + .../javasyntaxkit/abbreviations.properties | 43 + .../javasyntaxkit/combocompletions.txt | 18 + .../javasyntaxkit/config.properties | 86 + .../luasyntaxkit/combocompletions.txt | 30 + .../syntaxkits/luasyntaxkit/config.properties | 23 + .../plainsyntaxkit/config.properties | 19 + .../propertiessyntaxkit/config.properties | 2 + .../pythonsyntaxkit/config.properties | 14 + .../rubysyntaxkit/config.properties | 6 + .../scalasyntaxkit/config.properties | 2 + .../syntaxkits/sqlsyntaxkit/config.properties | 2 + .../syntaxkits/talsyntaxkit/config.properties | 2 + .../xhtmlsyntaxkit/config.properties | 18 + .../syntaxkits/xmlsyntaxkit/config.properties | 24 + .../xpathsyntaxkit/config.properties | 4 + .../CompoundUndoMan$MyCompoundEdit.class | Bin 0 -> 1032 bytes .../classes/jsyntaxpane/CompoundUndoMan.class | Bin 0 -> 2592 bytes .../jsyntaxpane/DefaultSyntaxKit.class | Bin 0 -> 19645 bytes .../classes/jsyntaxpane/JavaRegexKit.class | Bin 0 -> 484 bytes .../target/classes/jsyntaxpane/Lexer.class | Bin 0 -> 258 bytes .../jsyntaxpane/SyntaxDocument$1.class | Bin 0 -> 217 bytes .../SyntaxDocument$TokenIterator.class | Bin 0 -> 3122 bytes .../classes/jsyntaxpane/SyntaxDocument.class | Bin 0 -> 11013 bytes .../classes/jsyntaxpane/SyntaxStyle.class | Bin 0 -> 4113 bytes .../classes/jsyntaxpane/SyntaxStyles.class | Bin 0 -> 4818 bytes .../classes/jsyntaxpane/SyntaxTester$1.class | Bin 0 -> 788 bytes .../classes/jsyntaxpane/SyntaxTester$2.class | Bin 0 -> 777 bytes .../classes/jsyntaxpane/SyntaxTester$3.class | Bin 0 -> 823 bytes .../classes/jsyntaxpane/SyntaxTester.class | Bin 0 -> 7904 bytes .../classes/jsyntaxpane/SyntaxView.class | Bin 0 -> 6309 bytes .../target/classes/jsyntaxpane/Token.class | Bin 0 -> 3197 bytes .../jsyntaxpane/TokenComparators$1.class | Bin 0 -> 223 bytes .../TokenComparators$LongestFirst.class | Bin 0 -> 1369 bytes .../TokenComparators$ShortestFirst.class | Bin 0 -> 1372 bytes .../jsyntaxpane/TokenComparators.class | Bin 0 -> 810 bytes .../classes/jsyntaxpane/TokenConstants.class | Bin 0 -> 3288 bytes .../classes/jsyntaxpane/TokenType.class | Bin 0 -> 2284 bytes .../jsyntaxpane/actions/ActionUtils.class | Bin 0 -> 13824 bytes .../jsyntaxpane/actions/CaretMonitor.class | Bin 0 -> 2985 bytes .../actions/ComboCompletionAction.class | Bin 0 -> 2274 bytes .../actions/CompleteWordAction.class | Bin 0 -> 3183 bytes .../actions/DefaultSyntaxAction.class | Bin 0 -> 4358 bytes .../actions/DeleteLinesAction.class | Bin 0 -> 1528 bytes .../actions/DocumentSearchData.class | Bin 0 -> 5958 bytes .../actions/DuplicateLinesAction.class | Bin 0 -> 1696 bytes .../jsyntaxpane/actions/FindNextAction.class | Bin 0 -> 1108 bytes .../actions/FindReplaceAction.class | Bin 0 -> 1022 bytes .../jsyntaxpane/actions/GotoLineAction.class | Bin 0 -> 831 bytes .../actions/HTMLPreviewAction.class | Bin 0 -> 1381 bytes .../jsyntaxpane/actions/IndentAction.class | Bin 0 -> 4048 bytes .../jsyntaxpane/actions/JIndentAction.class | Bin 0 -> 2993 bytes .../jsyntaxpane/actions/JUnindentAction.class | Bin 0 -> 2274 bytes .../actions/JumpToPairAction.class | Bin 0 -> 1140 bytes .../actions/MapCompletionAction.class | Bin 0 -> 2085 bytes .../jsyntaxpane/actions/PairAction.class | Bin 0 -> 1848 bytes .../actions/PythonIndentAction.class | Bin 0 -> 2198 bytes .../jsyntaxpane/actions/QuickFindAction.class | Bin 0 -> 949 bytes .../jsyntaxpane/actions/RedoAction.class | Bin 0 -> 789 bytes .../actions/ReflectCompletionAction.class | Bin 0 -> 1305 bytes .../jsyntaxpane/actions/ScriptAction.class | Bin 0 -> 4627 bytes .../actions/ScriptRunnerAction.class | Bin 0 -> 2714 bytes .../jsyntaxpane/actions/ShowAbbsAction.class | Bin 0 -> 1569 bytes .../jsyntaxpane/actions/SmartHomeAction.class | Bin 0 -> 2374 bytes .../actions/SmartHomeSelectAction.class | Bin 0 -> 1473 bytes .../jsyntaxpane/actions/SyntaxAction.class | Bin 0 -> 224 bytes .../jsyntaxpane/actions/TemplateAction.class | Bin 0 -> 1786 bytes .../actions/ToggleCommentsAction.class | Bin 0 -> 2529 bytes .../actions/ToggleComponentAction.class | Bin 0 -> 1788 bytes .../jsyntaxpane/actions/UndoAction.class | Bin 0 -> 789 bytes .../jsyntaxpane/actions/UnindentAction.class | Bin 0 -> 1968 bytes .../actions/XmlPrettifyAction.class | Bin 0 -> 5829 bytes .../actions/XmlTagCompleteAction.class | Bin 0 -> 1822 bytes .../actions/gui/ComboCompletionDialog$1.class | Bin 0 -> 1056 bytes .../actions/gui/ComboCompletionDialog$2.class | Bin 0 -> 877 bytes .../actions/gui/ComboCompletionDialog$3.class | Bin 0 -> 887 bytes .../actions/gui/ComboCompletionDialog.class | Bin 0 -> 8743 bytes .../actions/gui/ConstructorCell.class | Bin 0 -> 2426 bytes .../actions/gui/EscapeListener.class | Bin 0 -> 200 bytes .../jsyntaxpane/actions/gui/FieldCell.class | Bin 0 -> 2139 bytes .../actions/gui/GotoLineDialog$1.class | Bin 0 -> 870 bytes .../actions/gui/GotoLineDialog$2.class | Bin 0 -> 870 bytes .../actions/gui/GotoLineDialog.class | Bin 0 -> 6385 bytes .../actions/gui/HTMLPreviewFrame$1.class | Bin 0 -> 856 bytes .../actions/gui/HTMLPreviewFrame.class | Bin 0 -> 3863 bytes .../jsyntaxpane/actions/gui/MemberCell.class | Bin 0 -> 5014 bytes .../actions/gui/MembersListRenderer.class | Bin 0 -> 2156 bytes .../jsyntaxpane/actions/gui/MethodCell.class | Bin 0 -> 1907 bytes .../actions/gui/QuickFindDialog$1.class | Bin 0 -> 2023 bytes .../actions/gui/QuickFindDialog$2.class | Bin 0 -> 877 bytes .../actions/gui/QuickFindDialog$3.class | Bin 0 -> 877 bytes .../actions/gui/QuickFindDialog.class | Bin 0 -> 10702 bytes .../gui/ReflectCompletionDialog$1.class | Bin 0 -> 1068 bytes .../gui/ReflectCompletionDialog$2.class | Bin 0 -> 869 bytes .../gui/ReflectCompletionDialog$3.class | Bin 0 -> 891 bytes .../gui/ReflectCompletionDialog$4.class | Bin 0 -> 901 bytes .../gui/ReflectCompletionDialog$5.class | Bin 0 -> 926 bytes .../actions/gui/ReflectCompletionDialog.class | Bin 0 -> 12044 bytes .../actions/gui/ReplaceDialog$1.class | Bin 0 -> 863 bytes .../actions/gui/ReplaceDialog$2.class | Bin 0 -> 863 bytes .../actions/gui/ReplaceDialog$3.class | Bin 0 -> 863 bytes .../actions/gui/ReplaceDialog$4.class | Bin 0 -> 863 bytes .../actions/gui/ReplaceDialog$5.class | Bin 0 -> 863 bytes .../actions/gui/ReplaceDialog.class | Bin 0 -> 10881 bytes .../actions/gui/ShowAbbsDialog$1.class | Bin 0 -> 907 bytes .../actions/gui/ShowAbbsDialog.class | Bin 0 -> 5157 bytes .../components/LineNumbersRuler$1.class | Bin 0 -> 968 bytes .../components/LineNumbersRuler$2.class | Bin 0 -> 1197 bytes .../components/LineNumbersRuler.class | Bin 0 -> 9253 bytes .../components/Markers$SimpleMarker.class | Bin 0 -> 576 bytes .../jsyntaxpane/components/Markers.class | Bin 0 -> 3853 bytes .../jsyntaxpane/components/PairsMarker.class | Bin 0 -> 3367 bytes .../components/SyntaxComponent$Status.class | Bin 0 -> 1195 bytes .../components/SyntaxComponent.class | Bin 0 -> 349 bytes .../jsyntaxpane/components/TokenMarker.class | Bin 0 -> 5722 bytes .../lexers/ActionScriptLexer.class | Bin 0 -> 15708 bytes .../jsyntaxpane/lexers/BashLexer.class | Bin 0 -> 22526 bytes .../classes/jsyntaxpane/lexers/CLexer.class | Bin 0 -> 15565 bytes .../jsyntaxpane/lexers/ClojureLexer.class | Bin 0 -> 38527 bytes .../classes/jsyntaxpane/lexers/CppLexer.class | Bin 0 -> 18070 bytes .../jsyntaxpane/lexers/DOSBatchLexer.class | Bin 0 -> 14423 bytes .../lexers/DefaultJFlexLexer.class | Bin 0 -> 2734 bytes .../jsyntaxpane/lexers/EmptyLexer.class | Bin 0 -> 713 bytes .../jsyntaxpane/lexers/Flasm3Lexer.class | Bin 0 -> 10924 bytes .../jsyntaxpane/lexers/FlasmLexer.class | Bin 0 -> 12175 bytes .../jsyntaxpane/lexers/GroovyLexer.class | Bin 0 -> 30219 bytes .../jsyntaxpane/lexers/JFlexLexer.class | Bin 0 -> 26319 bytes .../jsyntaxpane/lexers/JavaLexer.class | Bin 0 -> 26900 bytes .../jsyntaxpane/lexers/JavaScriptLexer.class | Bin 0 -> 17914 bytes .../classes/jsyntaxpane/lexers/LuaLexer.class | Bin 0 -> 13536 bytes .../jsyntaxpane/lexers/PropertiesLexer.class | Bin 0 -> 7444 bytes .../jsyntaxpane/lexers/PythonLexer.class | Bin 0 -> 19014 bytes .../jsyntaxpane/lexers/RubyLexer.class | Bin 0 -> 14278 bytes .../jsyntaxpane/lexers/ScalaLexer.class | Bin 0 -> 20419 bytes .../jsyntaxpane/lexers/SimpleRegexLexer.class | Bin 0 -> 3698 bytes .../classes/jsyntaxpane/lexers/SqlLexer.class | Bin 0 -> 23792 bytes .../classes/jsyntaxpane/lexers/TALLexer.class | Bin 0 -> 12480 bytes .../jsyntaxpane/lexers/XHTMLLexer.class | Bin 0 -> 27252 bytes .../jsyntaxpane/lexers/XPathLexer.class | Bin 0 -> 23940 bytes .../classes/jsyntaxpane/lexers/XmlLexer.class | Bin 0 -> 9485 bytes .../syntaxkits/ActionScriptSyntaxKit.class | Bin 0 -> 540 bytes .../syntaxkits/BashSyntaxKit.class | Bin 0 -> 402 bytes .../jsyntaxpane/syntaxkits/CSyntaxKit.class | Bin 0 -> 496 bytes .../syntaxkits/ClojureSyntaxKit.class | Bin 0 -> 520 bytes .../jsyntaxpane/syntaxkits/CppSyntaxKit.class | Bin 0 -> 403 bytes .../syntaxkits/DOSBatchSyntaxKit.class | Bin 0 -> 418 bytes .../syntaxkits/Flasm3SyntaxKit.class | Bin 0 -> 516 bytes .../syntaxkits/FlasmSyntaxKit.class | Bin 0 -> 512 bytes .../syntaxkits/GroovySyntaxKit.class | Bin 0 -> 418 bytes .../syntaxkits/JFlexSyntaxKit.class | Bin 0 -> 414 bytes .../syntaxkits/JavaScriptSyntaxKit.class | Bin 0 -> 426 bytes .../syntaxkits/JavaSyntaxKit.class | Bin 0 -> 508 bytes .../jsyntaxpane/syntaxkits/LuaSyntaxKit.class | Bin 0 -> 398 bytes .../syntaxkits/PlainSyntaxKit.class | Bin 0 -> 406 bytes .../syntaxkits/PropertiesSyntaxKit.class | Bin 0 -> 426 bytes .../syntaxkits/PythonSyntaxKit.class | Bin 0 -> 410 bytes .../syntaxkits/RubySyntaxKit.class | Bin 0 -> 402 bytes .../syntaxkits/ScalaSyntaxKit.class | Bin 0 -> 512 bytes .../jsyntaxpane/syntaxkits/SqlSyntaxKit.class | Bin 0 -> 398 bytes .../jsyntaxpane/syntaxkits/TALSyntaxKit.class | Bin 0 -> 398 bytes .../syntaxkits/XHTMLSyntaxKit.class | Bin 0 -> 406 bytes .../syntaxkits/XPathSyntaxKit.class | Bin 0 -> 406 bytes .../jsyntaxpane/syntaxkits/XmlSyntaxKit.class | Bin 0 -> 398 bytes .../jsyntaxpane/util/Configuration$1.class | Bin 0 -> 224 bytes .../util/Configuration$StringKeyMatcher.class | Bin 0 -> 1094 bytes .../jsyntaxpane/util/Configuration.class | Bin 0 -> 8963 bytes .../jsyntaxpane/util/JarServiceProvider.class | Bin 0 -> 6730 bytes .../jsyntaxpane/util/ReflectUtils.class | Bin 0 -> 10917 bytes .../util/StringUtils$CamelCaseCompare.class | Bin 0 -> 1037 bytes .../jsyntaxpane/util/StringUtils.class | Bin 0 -> 1119 bytes .../jsyntaxpane/util/SwingUtils$1.class | Bin 0 -> 812 bytes .../classes/jsyntaxpane/util/SwingUtils.class | Bin 0 -> 936 bytes .../jsyntaxpane/lexers/ActionScriptLexer.java | 1025 +++++++++ .../lexers/ActionScriptLexer.java~ | 982 ++++++++ .../jflex/jsyntaxpane/lexers/BashLexer.java | 1338 +++++++++++ .../jflex/jsyntaxpane/lexers/CLexer.java | 973 ++++++++ .../jsyntaxpane/lexers/ClojureLexer.java | 2022 +++++++++++++++++ .../jflex/jsyntaxpane/lexers/CppLexer.java | 1092 +++++++++ .../jsyntaxpane/lexers/DOSBatchLexer.java | 914 ++++++++ .../jflex/jsyntaxpane/lexers/Flasm3Lexer.java | 740 ++++++ .../jsyntaxpane/lexers/Flasm3Lexer.java~ | 739 ++++++ .../jflex/jsyntaxpane/lexers/FlasmLexer.java | 838 +++++++ .../jflex/jsyntaxpane/lexers/FlasmLexer.java~ | 794 +++++++ .../jflex/jsyntaxpane/lexers/GroovyLexer.java | 1708 ++++++++++++++ .../jflex/jsyntaxpane/lexers/JFlexLexer.java | 1470 ++++++++++++ .../jflex/jsyntaxpane/lexers/JavaLexer.java | 1520 +++++++++++++ .../jsyntaxpane/lexers/JavaScriptLexer.java | 1096 +++++++++ .../jflex/jsyntaxpane/lexers/LuaLexer.java | 936 ++++++++ .../jsyntaxpane/lexers/PropertiesLexer.java | 580 +++++ .../jflex/jsyntaxpane/lexers/PythonLexer.java | 1166 ++++++++++ .../jflex/jsyntaxpane/lexers/RubyLexer.java | 947 ++++++++ .../jflex/jsyntaxpane/lexers/ScalaLexer.java | 1223 ++++++++++ .../jflex/jsyntaxpane/lexers/SqlLexer.java | 1336 +++++++++++ .../jflex/jsyntaxpane/lexers/TALLexer.java | 821 +++++++ .../jflex/jsyntaxpane/lexers/XHTMLLexer.java | 1520 +++++++++++++ .../jflex/jsyntaxpane/lexers/XPathLexer.java | 1383 +++++++++++ .../jflex/jsyntaxpane/lexers/XmlLexer.java | 712 ++++++ .../jsyntaxpane/target/jsyntaxpane-0.9.5.jar | Bin 0 -> 524914 bytes .../target/maven-archiver/pom.properties | 5 + trunk/libsrc/jsyntaxpane/nbactions.xml | 32 + trunk/src/com/jpexs/asdec/Main.java | 372 +++ trunk/src/com/jpexs/asdec/SWF.java | 190 ++ trunk/src/com/jpexs/asdec/SWFInputStream.java | 1153 ++++++++++ .../src/com/jpexs/asdec/SWFOutputStream.java | 918 ++++++++ trunk/src/com/jpexs/asdec/abc/ABC.java | 728 ++++++ .../com/jpexs/asdec/abc/ABCInputStream.java | 304 +++ .../com/jpexs/asdec/abc/ABCOutputStream.java | 253 +++ .../com/jpexs/asdec/abc/CopyOutputStream.java | 54 + .../com/jpexs/asdec/abc/NotSameException.java | 12 + .../com/jpexs/asdec/abc/avm2/AVM2Code.java | 1681 ++++++++++++++ .../jpexs/asdec/abc/avm2/ConstantPool.java | 122 + .../asdec/abc/avm2/ConvertException.java | 14 + .../abc/avm2/InvalidInstructionArguments.java | 14 + .../jpexs/asdec/abc/avm2/LocalDataArea.java | 17 + .../abc/avm2/UnknownInstructionCode.java | 15 + .../asdec/abc/avm2/UnknownJumpException.java | 30 + .../avm2/instructions/AVM2Instruction.java | 172 ++ .../abc/avm2/instructions/IfTypeIns.java | 14 + .../instructions/InstructionDefinition.java | 109 + .../abc/avm2/instructions/SetTypeIns.java | 17 + .../avm2/instructions/arithmetic/AddIIns.java | 30 + .../avm2/instructions/arithmetic/AddIns.java | 53 + .../arithmetic/DecrementIIns.java | 47 + .../instructions/arithmetic/DecrementIns.java | 47 + .../instructions/arithmetic/DivideIns.java | 52 + .../arithmetic/IncrementIIns.java | 28 + .../instructions/arithmetic/IncrementIns.java | 28 + .../instructions/arithmetic/ModuloIns.java | 30 + .../instructions/arithmetic/MultiplyIIns.java | 30 + .../instructions/arithmetic/MultiplyIns.java | 30 + .../instructions/arithmetic/NegateIIns.java | 29 + .../instructions/arithmetic/NegateIns.java | 29 + .../avm2/instructions/arithmetic/NotIns.java | 29 + .../instructions/arithmetic/SubtractIIns.java | 30 + .../instructions/arithmetic/SubtractIns.java | 30 + .../avm2/instructions/bitwise/BitAndIns.java | 39 + .../avm2/instructions/bitwise/BitNotIns.java | 37 + .../avm2/instructions/bitwise/BitOrIns.java | 39 + .../avm2/instructions/bitwise/BitXorIns.java | 39 + .../avm2/instructions/bitwise/LShiftIns.java | 30 + .../avm2/instructions/bitwise/RShiftIns.java | 30 + .../avm2/instructions/bitwise/URShiftIns.java | 30 + .../instructions/comparsion/EqualsIns.java | 39 + .../comparsion/GreaterEqualsIns.java | 30 + .../comparsion/GreaterThanIns.java | 30 + .../comparsion/LessEqualsIns.java | 30 + .../instructions/comparsion/LessThanIns.java | 30 + .../comparsion/StrictEqualsIns.java | 30 + .../construction/ConstructIns.java | 50 + .../construction/ConstructPropIns.java | 57 + .../construction/ConstructSuperIns.java | 50 + .../construction/NewActivationIns.java | 28 + .../construction/NewArrayIns.java | 35 + .../construction/NewCatchIns.java | 30 + .../construction/NewClassIns.java | 31 + .../construction/NewFunctionIns.java | 36 + .../construction/NewObjectIns.java | 38 + .../avm2/instructions/debug/DebugFileIns.java | 17 + .../abc/avm2/instructions/debug/DebugIns.java | 17 + .../avm2/instructions/debug/DebugLineIns.java | 17 + .../avm2/instructions/executing/CallIns.java | 51 + .../instructions/executing/CallMethodIns.java | 52 + .../executing/CallPropLexIns.java | 39 + .../executing/CallPropVoidIns.java | 59 + .../executing/CallPropertyIns.java | 57 + .../instructions/executing/CallStaticIns.java | 52 + .../instructions/executing/CallSuperIns.java | 56 + .../executing/CallSuperVoidIns.java | 57 + .../abc/avm2/instructions/jumps/IfEqIns.java | 39 + .../avm2/instructions/jumps/IfFalseIns.java | 36 + .../abc/avm2/instructions/jumps/IfGeIns.java | 39 + .../abc/avm2/instructions/jumps/IfGtIns.java | 39 + .../abc/avm2/instructions/jumps/IfLeIns.java | 39 + .../abc/avm2/instructions/jumps/IfLtIns.java | 39 + .../abc/avm2/instructions/jumps/IfNGeIns.java | 39 + .../abc/avm2/instructions/jumps/IfNGtIns.java | 39 + .../abc/avm2/instructions/jumps/IfNLeIns.java | 39 + .../abc/avm2/instructions/jumps/IfNLtIns.java | 39 + .../abc/avm2/instructions/jumps/IfNeIns.java | 39 + .../instructions/jumps/IfStrictEqIns.java | 39 + .../instructions/jumps/IfStrictNeIns.java | 39 + .../avm2/instructions/jumps/IfTrueIns.java | 36 + .../abc/avm2/instructions/jumps/JumpIns.java | 34 + .../instructions/jumps/LookupSwitchIns.java | 30 + .../instructions/localregs/DecLocalIIns.java | 50 + .../instructions/localregs/DecLocalIns.java | 51 + .../instructions/localregs/GetLocal0Ins.java | 37 + .../instructions/localregs/GetLocal1Ins.java | 32 + .../instructions/localregs/GetLocal2Ins.java | 32 + .../instructions/localregs/GetLocal3Ins.java | 32 + .../instructions/localregs/GetLocalIns.java | 34 + .../localregs/GetLocalTypeIns.java | 12 + .../instructions/localregs/IncLocalIIns.java | 30 + .../instructions/localregs/IncLocalIns.java | 30 + .../avm2/instructions/localregs/KillIns.java | 28 + .../instructions/localregs/SetLocal0Ins.java | 45 + .../instructions/localregs/SetLocal1Ins.java | 45 + .../instructions/localregs/SetLocal2Ins.java | 45 + .../instructions/localregs/SetLocal3Ins.java | 45 + .../instructions/localregs/SetLocalIns.java | 46 + .../localregs/SetLocalTypeIns.java | 12 + .../instructions/other/DeletePropertyIns.java | 47 + .../instructions/other/FindPropertyIns.java | 42 + .../other/FindPropertyStrictIns.java | 41 + .../instructions/other/GetDescendantsIns.java | 43 + .../instructions/other/GetGlobalScopeIns.java | 33 + .../instructions/other/GetGlobalSlotIns.java | 48 + .../avm2/instructions/other/GetLexIns.java | 32 + .../instructions/other/GetPropertyIns.java | 33 + .../instructions/other/GetScopeObjectIns.java | 34 + .../avm2/instructions/other/GetSlotIns.java | 48 + .../avm2/instructions/other/GetSuperIns.java | 33 + .../avm2/instructions/other/HasNext2Ins.java | 33 + .../avm2/instructions/other/HasNextIns.java | 31 + .../abc/avm2/instructions/other/InIns.java | 30 + .../instructions/other/InitPropertyIns.java | 35 + .../abc/avm2/instructions/other/LabelIns.java | 17 + .../avm2/instructions/other/NextNameIns.java | 30 + .../avm2/instructions/other/NextValueIns.java | 30 + .../abc/avm2/instructions/other/NopIns.java | 16 + .../instructions/other/ReturnValueIns.java | 28 + .../instructions/other/ReturnVoidIns.java | 28 + .../instructions/other/SetGlobalSlotIns.java | 34 + .../instructions/other/SetPropertyIns.java | 43 + .../avm2/instructions/other/SetSlotIns.java | 65 + .../avm2/instructions/other/SetSuperIns.java | 43 + .../abc/avm2/instructions/other/ThrowIns.java | 32 + .../abc/avm2/instructions/stack/DupIns.java | 38 + .../abc/avm2/instructions/stack/PopIns.java | 28 + .../avm2/instructions/stack/PopScopeIns.java | 53 + .../avm2/instructions/stack/PushByteIns.java | 29 + .../instructions/stack/PushDoubleIns.java | 29 + .../avm2/instructions/stack/PushFalseIns.java | 28 + .../avm2/instructions/stack/PushIntIns.java | 29 + .../instructions/stack/PushNamespaceIns.java | 33 + .../avm2/instructions/stack/PushNanIns.java | 28 + .../avm2/instructions/stack/PushNullIns.java | 28 + .../avm2/instructions/stack/PushScopeIns.java | 29 + .../avm2/instructions/stack/PushShortIns.java | 29 + .../instructions/stack/PushStringIns.java | 29 + .../avm2/instructions/stack/PushTrueIns.java | 28 + .../avm2/instructions/stack/PushUIntIns.java | 29 + .../instructions/stack/PushUndefinedIns.java | 28 + .../avm2/instructions/stack/PushWithIns.java | 34 + .../abc/avm2/instructions/stack/SwapIns.java | 36 + .../avm2/instructions/types/AsTypeIns.java | 43 + .../instructions/types/AsTypeLateIns.java | 40 + .../avm2/instructions/types/CoerceAIns.java | 35 + .../avm2/instructions/types/CoerceIns.java | 37 + .../avm2/instructions/types/CoerceSIns.java | 36 + .../avm2/instructions/types/ConvertBIns.java | 45 + .../avm2/instructions/types/ConvertDIns.java | 53 + .../avm2/instructions/types/ConvertIIns.java | 51 + .../avm2/instructions/types/ConvertOIns.java | 34 + .../avm2/instructions/types/ConvertSIns.java | 35 + .../avm2/instructions/types/ConvertUIns.java | 34 + .../instructions/types/InstanceOfIns.java | 30 + .../avm2/instructions/types/IsTypeIns.java | 32 + .../instructions/types/IsTypeLateIns.java | 30 + .../avm2/instructions/types/TypeOfIns.java | 28 + .../avm2/instructions/xml/CheckFilterIns.java | 35 + .../abc/avm2/instructions/xml/DXNSIns.java | 28 + .../avm2/instructions/xml/DXNSLateIns.java | 36 + .../avm2/instructions/xml/EscXAttrIns.java | 36 + .../avm2/instructions/xml/EscXElemIns.java | 36 + .../asdec/abc/avm2/parser/ASM3Parser.java | 443 ++++ .../asdec/abc/avm2/parser/Flasm3Lexer.java | 890 ++++++++ .../abc/avm2/parser/MissingSymbolHandler.java | 17 + .../asdec/abc/avm2/parser/ParseException.java | 17 + .../asdec/abc/avm2/parser/ParsedSymbol.java | 31 + .../jpexs/asdec/abc/avm2/parser/flasm3.flex | 156 ++ .../abc/avm2/treemodel/BooleanTreeItem.java | 36 + .../abc/avm2/treemodel/BreakTreeItem.java | 30 + .../avm2/treemodel/CallMethodTreeItem.java | 38 + .../avm2/treemodel/CallPropertyTreeItem.java | 40 + .../avm2/treemodel/CallStaticTreeItem.java | 38 + .../abc/avm2/treemodel/CallSuperTreeItem.java | 43 + .../abc/avm2/treemodel/CallTreeItem.java | 38 + .../abc/avm2/treemodel/ClassTreeItem.java | 24 + .../abc/avm2/treemodel/CoerceTreeItem.java | 27 + .../avm2/treemodel/ConstructPropTreeItem.java | 41 + .../treemodel/ConstructSuperTreeItem.java | 40 + .../abc/avm2/treemodel/ConstructTreeItem.java | 40 + .../abc/avm2/treemodel/ContinueTreeItem.java | 30 + .../abc/avm2/treemodel/ConvertTreeItem.java | 27 + .../abc/avm2/treemodel/DecLocalTreeItem.java | 26 + .../abc/avm2/treemodel/DecrementTreeItem.java | 25 + .../abc/avm2/treemodel/EachTreeItem.java | 27 + .../avm2/treemodel/FindPropertyTreeItem.java | 25 + .../avm2/treemodel/FloatValueTreeItem.java | 25 + .../avm2/treemodel/FullMultinameTreeItem.java | 66 + .../treemodel/GetDescendantsTreeItem.java | 27 + .../abc/avm2/treemodel/GetLexTreeItem.java | 26 + .../avm2/treemodel/GetPropertyTreeItem.java | 27 + .../abc/avm2/treemodel/GetSlotTreeItem.java | 28 + .../abc/avm2/treemodel/GetSuperTreeItem.java | 30 + .../abc/avm2/treemodel/IncLocalTreeItem.java | 26 + .../abc/avm2/treemodel/IncrementTreeItem.java | 25 + .../avm2/treemodel/InitPropertyTreeItem.java | 29 + .../avm2/treemodel/IntegerValueTreeItem.java | 25 + .../abc/avm2/treemodel/LocalRegTreeItem.java | 41 + .../abc/avm2/treemodel/NameSpaceTreeItem.java | 23 + .../abc/avm2/treemodel/NameValuePair.java | 29 + .../asdec/abc/avm2/treemodel/NanTreeItem.java | 23 + .../avm2/treemodel/NewActivationTreeItem.java | 23 + .../abc/avm2/treemodel/NewArrayTreeItem.java | 34 + .../avm2/treemodel/NewFunctionTreeItem.java | 29 + .../abc/avm2/treemodel/NewObjectTreeItem.java | 32 + .../abc/avm2/treemodel/NullTreeItem.java | 23 + .../avm2/treemodel/NumberValueTreeItem.java | 16 + .../avm2/treemodel/PostDecrementTreeItem.java | 25 + .../avm2/treemodel/PostIncrementTreeItem.java | 25 + .../avm2/treemodel/ReturnValueTreeItem.java | 25 + .../avm2/treemodel/ReturnVoidTreeItem.java | 23 + .../avm2/treemodel/SetGlobalSlotTreeItem.java | 27 + .../abc/avm2/treemodel/SetLocalTreeItem.java | 28 + .../avm2/treemodel/SetPropertyTreeItem.java | 29 + .../abc/avm2/treemodel/SetSlotTreeItem.java | 41 + .../abc/avm2/treemodel/SetSuperTreeItem.java | 32 + .../abc/avm2/treemodel/StringTreeItem.java | 26 + .../abc/avm2/treemodel/ThisTreeItem.java | 22 + .../abc/avm2/treemodel/ThrowTreeItem.java | 25 + .../asdec/abc/avm2/treemodel/TreeItem.java | 80 + .../abc/avm2/treemodel/UndefinedTreeItem.java | 24 + .../abc/avm2/treemodel/UnparsedTreeItem.java | 25 + .../abc/avm2/treemodel/WithTreeItem.java | 42 + .../abc/avm2/treemodel/clauses/Block.java | 14 + .../treemodel/clauses/DoWhileTreeItem.java | 53 + .../treemodel/clauses/ExceptionTreeItem.java | 26 + .../treemodel/clauses/ForEachTreeItem.java | 53 + .../avm2/treemodel/clauses/ForTreeItem.java | 79 + .../avm2/treemodel/clauses/IfTreeItem.java | 68 + .../avm2/treemodel/clauses/LoopTreeItem.java | 20 + .../treemodel/clauses/SwitchTreeItem.java | 82 + .../treemodel/clauses/TernarOpTreeItem.java | 30 + .../avm2/treemodel/clauses/TryTreeItem.java | 89 + .../avm2/treemodel/clauses/WhileTreeItem.java | 52 + .../treemodel/operations/AddTreeItem.java | 17 + .../treemodel/operations/AndTreeItem.java | 17 + .../treemodel/operations/AsTypeTreeItem.java | 18 + .../operations/BinaryOpTreeItem.java | 43 + .../treemodel/operations/BitAndTreeItem.java | 17 + .../treemodel/operations/BitNotTreeItem.java | 16 + .../treemodel/operations/BitOrTreeItem.java | 17 + .../treemodel/operations/BitXorTreeItem.java | 17 + .../operations/DeletePropertyTreeItem.java | 29 + .../treemodel/operations/DivideTreeItem.java | 17 + .../avm2/treemodel/operations/EqTreeItem.java | 17 + .../avm2/treemodel/operations/GeTreeItem.java | 17 + .../avm2/treemodel/operations/GtTreeItem.java | 17 + .../avm2/treemodel/operations/InTreeItem.java | 18 + .../operations/InstanceOfTreeItem.java | 17 + .../treemodel/operations/IsTypeTreeItem.java | 17 + .../treemodel/operations/LShiftTreeItem.java | 17 + .../avm2/treemodel/operations/LeTreeItem.java | 17 + .../avm2/treemodel/operations/LtTreeItem.java | 17 + .../treemodel/operations/ModuloTreeItem.java | 17 + .../operations/MultiplyTreeItem.java | 17 + .../treemodel/operations/NegTreeItem.java | 16 + .../treemodel/operations/NeqTreeItem.java | 17 + .../treemodel/operations/NotTreeItem.java | 28 + .../avm2/treemodel/operations/OrTreeItem.java | 17 + .../operations/PreDecrementTreeItem.java | 15 + .../operations/PreIncrementTreeItem.java | 18 + .../treemodel/operations/RShiftTreeItem.java | 17 + .../operations/StrictEqTreeItem.java | 17 + .../operations/StrictNeqTreeItem.java | 17 + .../operations/SubtractTreeItem.java | 17 + .../treemodel/operations/TypeOfTreeItem.java | 16 + .../treemodel/operations/URShiftTreeItem.java | 17 + .../treemodel/operations/UnaryOpTreeItem.java | 28 + .../jpexs/asdec/abc/gui/ABCComboBoxModel.java | 47 + .../asdec/abc/gui/ASMSourceEditorPane.java | 119 + .../jpexs/asdec/abc/gui/ClassesListTree.java | 56 + .../asdec/abc/gui/ClassesListTreeModel.java | 114 + .../asdec/abc/gui/ConstantsListModel.java | 85 + .../asdec/abc/gui/DecompiledEditorPane.java | 154 ++ .../abc/gui/DialogMissingSymbolHandler.java | 30 + .../jpexs/asdec/abc/gui/IconListRenderer.java | 59 + .../com/jpexs/asdec/abc/gui/MainFrame.java | 392 ++++ .../com/jpexs/asdec/abc/gui/TraitsList.java | 45 + .../jpexs/asdec/abc/gui/TraitsListModel.java | 52 + .../src/com/jpexs/asdec/abc/gui/TreePart.java | 56 + .../jpexs/asdec/abc/gui/graphics/class.png | Bin 0 -> 254 bytes .../jpexs/asdec/abc/gui/graphics/constant.png | Bin 0 -> 543 bytes .../jpexs/asdec/abc/gui/graphics/function.png | Bin 0 -> 410 bytes .../jpexs/asdec/abc/gui/graphics/variable.png | Bin 0 -> 562 bytes .../abc/gui/tablemodels/DoubleTableModel.java | 131 ++ .../abc/gui/tablemodels/IntTableModel.java | 127 ++ .../gui/tablemodels/MultinameTableModel.java | 146 ++ .../tablemodels/NamespaceSetTableModel.java | 134 ++ .../gui/tablemodels/NamespaceTableModel.java | 137 ++ .../abc/gui/tablemodels/StringTableModel.java | 127 ++ .../abc/gui/tablemodels/UIntTableModel.java | 127 ++ .../jpexs/asdec/abc/types/ABCException.java | 51 + .../com/jpexs/asdec/abc/types/ClassInfo.java | 29 + .../jpexs/asdec/abc/types/InstanceInfo.java | 70 + .../jpexs/asdec/abc/types/MetadataInfo.java | 41 + .../com/jpexs/asdec/abc/types/MethodBody.java | 82 + .../com/jpexs/asdec/abc/types/MethodInfo.java | 158 ++ .../com/jpexs/asdec/abc/types/Multiname.java | 145 ++ .../com/jpexs/asdec/abc/types/Namespace.java | 65 + .../jpexs/asdec/abc/types/NamespaceSet.java | 24 + .../com/jpexs/asdec/abc/types/ScriptInfo.java | 27 + .../com/jpexs/asdec/abc/types/ValueKind.java | 103 + .../jpexs/asdec/abc/types/traits/Trait.java | 81 + .../asdec/abc/types/traits/TraitClass.java | 20 + .../asdec/abc/types/traits/TraitFunction.java | 20 + .../types/traits/TraitMethodGetterSetter.java | 38 + .../abc/types/traits/TraitSlotConst.java | 61 + .../jpexs/asdec/abc/types/traits/Traits.java | 43 + trunk/src/com/jpexs/asdec/action/Action.java | 878 +++++++ .../asdec/action/UnknownJumpException.java | 51 + .../com/jpexs/asdec/action/gui/MainFrame.java | 165 ++ .../jpexs/asdec/action/gui/TagTreeItem.java | 19 + .../jpexs/asdec/action/gui/TagTreeModel.java | 139 ++ .../jpexs/asdec/action/gui/graphics/class.png | Bin 0 -> 254 bytes .../jpexs/asdec/action/parser/ASMParser.java | 263 +++ .../jpexs/asdec/action/parser/FlasmLexer.java | 967 ++++++++ .../com/jpexs/asdec/action/parser/Label.java | 11 + .../asdec/action/parser/ParseException.java | 17 + .../asdec/action/parser/ParsedSymbol.java | 39 + .../com/jpexs/asdec/action/parser/flasm.flex | 165 ++ .../jpexs/asdec/action/swf3/ActionGetURL.java | 56 + .../asdec/action/swf3/ActionGoToLabel.java | 52 + .../asdec/action/swf3/ActionGotoFrame.java | 51 + .../asdec/action/swf3/ActionNextFrame.java | 26 + .../jpexs/asdec/action/swf3/ActionPlay.java | 25 + .../asdec/action/swf3/ActionPrevFrame.java | 26 + .../asdec/action/swf3/ActionSetTarget.java | 52 + .../jpexs/asdec/action/swf3/ActionStop.java | 26 + .../asdec/action/swf3/ActionStopSounds.java | 25 + .../action/swf3/ActionToggleQuality.java | 26 + .../asdec/action/swf3/ActionWaitForFrame.java | 55 + .../jpexs/asdec/action/swf4/ActionAdd.java | 28 + .../jpexs/asdec/action/swf4/ActionAnd.java | 28 + .../asdec/action/swf4/ActionAsciiToChar.java | 27 + .../jpexs/asdec/action/swf4/ActionCall.java | 26 + .../asdec/action/swf4/ActionCharToAscii.java | 27 + .../asdec/action/swf4/ActionCloneSprite.java | 29 + .../jpexs/asdec/action/swf4/ActionDivide.java | 29 + .../asdec/action/swf4/ActionEndDrag.java | 26 + .../jpexs/asdec/action/swf4/ActionEquals.java | 28 + .../asdec/action/swf4/ActionGetProperty.java | 35 + .../asdec/action/swf4/ActionGetTime.java | 26 + .../asdec/action/swf4/ActionGetURL2.java | 65 + .../asdec/action/swf4/ActionGetVariable.java | 27 + .../asdec/action/swf4/ActionGotoFrame2.java | 69 + .../com/jpexs/asdec/action/swf4/ActionIf.java | 63 + .../jpexs/asdec/action/swf4/ActionJump.java | 63 + .../jpexs/asdec/action/swf4/ActionLess.java | 28 + .../action/swf4/ActionMBAsciiToChar.java | 27 + .../action/swf4/ActionMBCharToAscii.java | 26 + .../action/swf4/ActionMBStringExtract.java | 29 + .../action/swf4/ActionMBStringLength.java | 26 + .../asdec/action/swf4/ActionMultiply.java | 28 + .../jpexs/asdec/action/swf4/ActionNot.java | 27 + .../com/jpexs/asdec/action/swf4/ActionOr.java | 28 + .../jpexs/asdec/action/swf4/ActionPop.java | 29 + .../jpexs/asdec/action/swf4/ActionPush.java | 195 ++ .../asdec/action/swf4/ActionRandomNumber.java | 27 + .../asdec/action/swf4/ActionRemoveSprite.java | 27 + .../asdec/action/swf4/ActionSetProperty.java | 36 + .../asdec/action/swf4/ActionSetTarget2.java | 27 + .../asdec/action/swf4/ActionSetVariable.java | 28 + .../asdec/action/swf4/ActionStartDrag.java | 54 + .../asdec/action/swf4/ActionStringAdd.java | 28 + .../asdec/action/swf4/ActionStringEquals.java | 28 + .../action/swf4/ActionStringExtract.java | 29 + .../asdec/action/swf4/ActionStringLength.java | 27 + .../asdec/action/swf4/ActionStringLess.java | 28 + .../asdec/action/swf4/ActionSubtract.java | 28 + .../asdec/action/swf4/ActionToInteger.java | 27 + .../jpexs/asdec/action/swf4/ActionTrace.java | 27 + .../action/swf4/ActionWaitForFrame2.java | 52 + .../asdec/action/swf4/ConstantIndex.java | 32 + .../src/com/jpexs/asdec/action/swf4/Null.java | 8 + .../asdec/action/swf4/RegisterNumber.java | 14 + .../jpexs/asdec/action/swf4/Undefined.java | 8 + .../jpexs/asdec/action/swf5/ActionAdd2.java | 27 + .../jpexs/asdec/action/swf5/ActionBitAnd.java | 28 + .../asdec/action/swf5/ActionBitLShift.java | 27 + .../jpexs/asdec/action/swf5/ActionBitOr.java | 28 + .../asdec/action/swf5/ActionBitRShift.java | 28 + .../asdec/action/swf5/ActionBitURShift.java | 27 + .../jpexs/asdec/action/swf5/ActionBitXor.java | 28 + .../asdec/action/swf5/ActionCallFunction.java | 33 + .../asdec/action/swf5/ActionCallMethod.java | 34 + .../asdec/action/swf5/ActionConstantPool.java | 72 + .../asdec/action/swf5/ActionDecrement.java | 27 + .../action/swf5/ActionDefineFunction.java | 114 + .../asdec/action/swf5/ActionDefineLocal.java | 28 + .../asdec/action/swf5/ActionDefineLocal2.java | 28 + .../jpexs/asdec/action/swf5/ActionDelete.java | 32 + .../asdec/action/swf5/ActionDelete2.java | 30 + .../asdec/action/swf5/ActionEnumerate.java | 27 + .../asdec/action/swf5/ActionEquals2.java | 28 + .../asdec/action/swf5/ActionGetMember.java | 28 + .../asdec/action/swf5/ActionIncrement.java | 27 + .../asdec/action/swf5/ActionInitArray.java | 32 + .../asdec/action/swf5/ActionInitObject.java | 34 + .../jpexs/asdec/action/swf5/ActionLess2.java | 28 + .../jpexs/asdec/action/swf5/ActionModulo.java | 28 + .../asdec/action/swf5/ActionNewMethod.java | 34 + .../asdec/action/swf5/ActionNewObject.java | 33 + .../action/swf5/ActionPushDuplicate.java | 27 + .../jpexs/asdec/action/swf5/ActionReturn.java | 27 + .../asdec/action/swf5/ActionSetMember.java | 29 + .../asdec/action/swf5/ActionStackSwap.java | 28 + .../action/swf5/ActionStoreRegister.java | 52 + .../asdec/action/swf5/ActionTargetPath.java | 27 + .../asdec/action/swf5/ActionToNumber.java | 27 + .../asdec/action/swf5/ActionToString.java | 27 + .../jpexs/asdec/action/swf5/ActionTypeOf.java | 27 + .../jpexs/asdec/action/swf5/ActionWith.java | 68 + .../asdec/action/swf6/ActionEnumerate2.java | 26 + .../asdec/action/swf6/ActionGreater.java | 28 + .../asdec/action/swf6/ActionInstanceOf.java | 27 + .../asdec/action/swf6/ActionStrictEquals.java | 28 + .../action/swf6/ActionStringGreater.java | 28 + .../jpexs/asdec/action/swf7/ActionCastOp.java | 28 + .../action/swf7/ActionDefineFunction2.java | 186 ++ .../asdec/action/swf7/ActionExtends.java | 29 + .../asdec/action/swf7/ActionImplementsOp.java | 33 + .../jpexs/asdec/action/swf7/ActionThrow.java | 27 + .../jpexs/asdec/action/swf7/ActionTry.java | 193 ++ .../action/treemodel/AsciiToCharTreeItem.java | 17 + .../asdec/action/treemodel/BreakTreeItem.java | 29 + .../treemodel/CallFunctionTreeItem.java | 26 + .../action/treemodel/CallMethodTreeItem.java | 43 + .../asdec/action/treemodel/CallTreeItem.java | 17 + .../action/treemodel/CastOpTreeItem.java | 19 + .../action/treemodel/CharToAsciiTreeItem.java | 17 + .../action/treemodel/CloneSpriteTreeItem.java | 21 + .../asdec/action/treemodel/ConstantPool.java | 8 + .../action/treemodel/ContinueTreeItem.java | 30 + .../action/treemodel/DecrementTreeItem.java | 17 + .../action/treemodel/DefineLocalTreeItem.java | 20 + .../action/treemodel/DeleteTreeItem.java | 20 + .../action/treemodel/DirectValueTreeItem.java | 39 + .../asdec/action/treemodel/EachTreeItem.java | 26 + .../action/treemodel/EnumerateTreeItem.java | 17 + .../action/treemodel/ExtendsTreeItem.java | 19 + .../action/treemodel/FunctionTreeItem.java | 21 + .../action/treemodel/GetMemberTreeItem.java | 19 + .../action/treemodel/GetPropertyTreeItem.java | 21 + .../action/treemodel/GetURL2TreeItem.java | 33 + .../action/treemodel/GetURLTreeItem.java | 20 + .../action/treemodel/GetVariableTreeItem.java | 16 + .../action/treemodel/GotoFrame2TreeItem.java | 25 + .../action/treemodel/GotoFrameTreeItem.java | 17 + .../action/treemodel/GotoLabelTreeItem.java | 18 + .../treemodel/ImplementsOpTreeItem.java | 26 + .../action/treemodel/IncrementTreeItem.java | 17 + .../action/treemodel/InitArrayTreeItem.java | 24 + .../action/treemodel/InitObjectTreeItem.java | 26 + .../treemodel/MBAsciiToCharTreeItem.java | 17 + .../treemodel/MBCharToAsciiTreeItem.java | 17 + .../treemodel/MBStringExtractTreeItem.java | 21 + .../action/treemodel/NewMethodTreeItem.java | 43 + .../action/treemodel/NewObjectTreeItem.java | 26 + .../treemodel/RandomNumberTreeItem.java | 17 + .../treemodel/RemoveSpriteTreeItem.java | 17 + .../action/treemodel/ReturnTreeItem.java | 17 + .../action/treemodel/SetMemberTreeItem.java | 21 + .../action/treemodel/SetPropertyTreeItem.java | 23 + .../action/treemodel/SetTarget2TreeItem.java | 17 + .../action/treemodel/SetTargetTreeItem.java | 18 + .../action/treemodel/SetVariableTreeItem.java | 19 + .../treemodel/SimpleActionTreeItem.java | 17 + .../action/treemodel/StartDragTreeItem.java | 42 + .../treemodel/StoreRegisterTreeItem.java | 19 + .../treemodel/StringExtractTreeItem.java | 21 + .../action/treemodel/TargetPathTreeItem.java | 17 + .../asdec/action/treemodel/ThrowTreeItem.java | 17 + .../action/treemodel/ToIntegerTreeItem.java | 17 + .../action/treemodel/ToNumberTreeItem.java | 17 + .../action/treemodel/ToStringTreeItem.java | 17 + .../asdec/action/treemodel/TraceTreeItem.java | 17 + .../asdec/action/treemodel/TreeItem.java | 83 + .../action/treemodel/TypeOfTreeItem.java | 17 + .../action/treemodel/UnsupportedTreeItem.java | 16 + .../asdec/action/treemodel/VoidTreeItem.java | 16 + .../treemodel/WaitForFrame2TreeItem.java | 19 + .../treemodel/WaitForFrameTreeItem.java | 19 + .../asdec/action/treemodel/clauses/Block.java | 14 + .../treemodel/clauses/DoWhileTreeItem.java | 53 + .../treemodel/clauses/ForEachTreeItem.java | 53 + .../action/treemodel/clauses/ForTreeItem.java | 79 + .../action/treemodel/clauses/IfTreeItem.java | 68 + .../treemodel/clauses/LoopTreeItem.java | 20 + .../treemodel/clauses/SwitchTreeItem.java | 84 + .../treemodel/clauses/TernarOpTreeItem.java | 30 + .../action/treemodel/clauses/TryTreeItem.java | 88 + .../treemodel/clauses/WhileTreeItem.java | 52 + .../treemodel/clauses/WithTreeItem.java | 44 + .../treemodel/operations/AddTreeItem.java | 17 + .../treemodel/operations/AndTreeItem.java | 17 + .../treemodel/operations/AsTypeTreeItem.java | 18 + .../operations/BinaryOpTreeItem.java | 43 + .../treemodel/operations/BitAndTreeItem.java | 17 + .../treemodel/operations/BitNotTreeItem.java | 16 + .../treemodel/operations/BitOrTreeItem.java | 17 + .../treemodel/operations/BitXorTreeItem.java | 17 + .../treemodel/operations/DivideTreeItem.java | 17 + .../treemodel/operations/EqTreeItem.java | 17 + .../treemodel/operations/GeTreeItem.java | 17 + .../treemodel/operations/GtTreeItem.java | 17 + .../treemodel/operations/InTreeItem.java | 18 + .../operations/InstanceOfTreeItem.java | 17 + .../treemodel/operations/IsTypeTreeItem.java | 17 + .../treemodel/operations/LShiftTreeItem.java | 17 + .../treemodel/operations/LeTreeItem.java | 17 + .../treemodel/operations/LtTreeItem.java | 17 + .../operations/MBStringLengthTreeItem.java | 26 + .../treemodel/operations/ModuloTreeItem.java | 17 + .../operations/MultiplyTreeItem.java | 17 + .../treemodel/operations/NegTreeItem.java | 16 + .../treemodel/operations/NeqTreeItem.java | 17 + .../treemodel/operations/NotTreeItem.java | 28 + .../treemodel/operations/OrTreeItem.java | 17 + .../operations/PreDecrementTreeItem.java | 15 + .../operations/PreIncrementTreeItem.java | 18 + .../treemodel/operations/RShiftTreeItem.java | 17 + .../operations/StrictEqTreeItem.java | 17 + .../operations/StrictNeqTreeItem.java | 17 + .../operations/StringAddTreeItem.java | 17 + .../operations/StringEqTreeItem.java | 17 + .../operations/StringLengthTreeItem.java | 26 + .../operations/StringLtTreeItem.java | 17 + .../operations/SubtractTreeItem.java | 17 + .../treemodel/operations/URShiftTreeItem.java | 17 + .../treemodel/operations/UnaryOpTreeItem.java | 28 + .../com/jpexs/asdec/gui/LoadingDialog.java | 45 + .../src/com/jpexs/asdec/gui/LoadingPanel.java | 47 + trunk/src/com/jpexs/asdec/gui/ModeFrame.java | 75 + trunk/src/com/jpexs/asdec/gui/View.java | 65 + .../com/jpexs/asdec/gui/graphics/exit24.png | Bin 0 -> 1498 bytes .../com/jpexs/asdec/gui/graphics/icon16.png | Bin 0 -> 752 bytes .../com/jpexs/asdec/gui/graphics/icon32.png | Bin 0 -> 2082 bytes .../com/jpexs/asdec/gui/graphics/icon48.png | Bin 0 -> 3728 bytes .../com/jpexs/asdec/gui/graphics/loading.png | Bin 0 -> 49587 bytes .../src/com/jpexs/asdec/gui/graphics/logo.png | Bin 0 -> 11510 bytes .../com/jpexs/asdec/gui/graphics/open24.png | Bin 0 -> 703 bytes .../com/jpexs/asdec/gui/graphics/proxy16.png | Bin 0 -> 715 bytes .../com/jpexs/asdec/gui/graphics/proxy24.png | Bin 0 -> 1061 bytes .../com/jpexs/asdec/gui/graphics/proxy32.png | Bin 0 -> 1512 bytes .../com/jpexs/asdec/gui/graphics/proxy48.png | Bin 0 -> 2227 bytes .../com/jpexs/asdec/gui/proxy/ProxyFrame.java | 351 +++ .../jpexs/asdec/gui/proxy/SWFListModel.java | 150 ++ trunk/src/com/jpexs/asdec/helpers/Helper.java | 110 + .../com/jpexs/asdec/helpers/Highlighting.java | 184 ++ trunk/src/com/jpexs/asdec/tags/ASMSource.java | 41 + trunk/src/com/jpexs/asdec/tags/Container.java | 24 + .../jpexs/asdec/tags/DefineButton2Tag.java | 164 ++ .../com/jpexs/asdec/tags/DefineButtonTag.java | 138 ++ .../com/jpexs/asdec/tags/DefineSpriteTag.java | 114 + trunk/src/com/jpexs/asdec/tags/DoABCTag.java | 90 + .../src/com/jpexs/asdec/tags/DoActionTag.java | 97 + .../com/jpexs/asdec/tags/DoInitActionTag.java | 119 + .../com/jpexs/asdec/tags/ExportAssetsTag.java | 48 + .../com/jpexs/asdec/tags/PlaceObject2Tag.java | 221 ++ .../com/jpexs/asdec/tags/PlaceObject3Tag.java | 302 +++ .../com/jpexs/asdec/tags/ShowFrameTag.java | 36 + trunk/src/com/jpexs/asdec/tags/Tag.java | 65 + trunk/src/com/jpexs/asdec/types/ARGB.java | 25 + .../jpexs/asdec/types/BUTTONCONDACTION.java | 110 + .../com/jpexs/asdec/types/BUTTONRECORD.java | 63 + .../jpexs/asdec/types/CLIPACTIONRECORD.java | 87 + .../com/jpexs/asdec/types/CLIPACTIONS.java | 19 + .../com/jpexs/asdec/types/CLIPEVENTFLAGS.java | 154 ++ .../jpexs/asdec/types/CXFORMWITHALPHA.java | 51 + trunk/src/com/jpexs/asdec/types/MATRIX.java | 54 + trunk/src/com/jpexs/asdec/types/RECT.java | 25 + trunk/src/com/jpexs/asdec/types/RGBA.java | 25 + .../asdec/types/filters/BEVELFILTER.java | 66 + .../jpexs/asdec/types/filters/BLURFILTER.java | 25 + .../types/filters/COLORMATRIXFILTER.java | 20 + .../types/filters/CONVOLUTIONFILTER.java | 50 + .../asdec/types/filters/DROPSHADOWFILTER.java | 58 + .../com/jpexs/asdec/types/filters/FILTER.java | 22 + .../jpexs/asdec/types/filters/GLOWFILTER.java | 50 + .../types/filters/GRADIENTBEVELFILTER.java | 63 + .../types/filters/GRADIENTGLOWFILTER.java | 66 + trunk/test/com/jpexs/asdec/TestABCStream.java | 30 + trunk/test/com/jpexs/asdec/TestRecompile.java | 42 + trunk/test/com/jpexs/asdec/TestSWFStream.java | 178 ++ trunk/testlib/emma.jar | Bin 0 -> 428218 bytes trunk/testlib/emma_ant.jar | Bin 0 -> 38232 bytes trunk/testlib/junit-4.8.2.jar | Bin 0 -> 237344 bytes 1147 files changed, 84884 insertions(+) create mode 100644 trunk/.idea/compiler.xml create mode 100644 trunk/.idea/copyright/profiles_settings.xml create mode 100644 trunk/.idea/encodings.xml create mode 100644 trunk/.idea/libraries/lib1.xml create mode 100644 trunk/.idea/libraries/testlib.xml create mode 100644 trunk/.idea/misc.xml create mode 100644 trunk/.idea/modules.xml create mode 100644 trunk/.idea/uiDesigner.xml create mode 100644 trunk/.idea/vcs.xml create mode 100644 trunk/.idea/workspace.xml create mode 100644 trunk/Trunk.iml create mode 100644 trunk/build.xml create mode 100644 trunk/buildconfig.xml create mode 100644 trunk/doc/avm2overview.pdf create mode 100644 trunk/doc/swf_file_format_spec_v10.pdf create mode 100644 trunk/graphics/exit.svg create mode 100644 trunk/graphics/loading.svg create mode 100644 trunk/graphics/logo.svg create mode 100644 trunk/graphics/open.svg create mode 100644 trunk/graphics/proxy.svg create mode 100644 trunk/lib/commons-codec-1.3.jar create mode 100644 trunk/lib/jpproxy.jar create mode 100644 trunk/lib/jsyntaxpane-0.9.5.jar create mode 100644 trunk/libsrc/jpproxy/build.xml create mode 100644 trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/ByteArray.class create mode 100644 trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/CatchedListener.class create mode 100644 trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/Client.class create mode 100644 trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/Connection.class create mode 100644 trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/Copy.class create mode 100644 trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/Handler.class create mode 100644 trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/Http.class create mode 100644 trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/HttpConnection.class create mode 100644 trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/HttpRelay.class create mode 100644 trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/Https.class create mode 100644 trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/Key.class create mode 100644 trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/Main$1.class create mode 100644 trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/Main$2.class create mode 100644 trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/Main.class create mode 100644 trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/Message.class create mode 100644 trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/ReplacedListener.class create mode 100644 trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/Replacement.class create mode 100644 trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/Reply.class create mode 100644 trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/Request.class create mode 100644 trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/RetryRequestException.class create mode 100644 trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/Server.class create mode 100644 trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/WorkerThread.class create mode 100644 trunk/libsrc/jpproxy/buildconfig.xml create mode 100644 trunk/libsrc/jpproxy/dist/JP_NoAds.zip create mode 100644 trunk/libsrc/jpproxy/dist/config/replacements.ini create mode 100644 trunk/libsrc/jpproxy/dist/config/saved/asdec_65483348.tmp create mode 100644 trunk/libsrc/jpproxy/dist/config/saved/asdec_70eaddc7.tmp create mode 100644 trunk/libsrc/jpproxy/dist/config/saved/asdec_85f11ffb.tmp create mode 100644 trunk/libsrc/jpproxy/dist/config/saved/asdec_a3d1aa1c.tmp create mode 100644 trunk/libsrc/jpproxy/dist/config/saved/asdec_d08cceb2.tmp create mode 100644 trunk/libsrc/jpproxy/dist/config/saved/asdec_d5ca3577.tmp create mode 100644 trunk/libsrc/jpproxy/dist/jpproxy.jar create mode 100644 trunk/libsrc/jpproxy/src/com/jpexs/proxy/ByteArray.java create mode 100644 trunk/libsrc/jpproxy/src/com/jpexs/proxy/CatchedListener.java create mode 100644 trunk/libsrc/jpproxy/src/com/jpexs/proxy/Client.java create mode 100644 trunk/libsrc/jpproxy/src/com/jpexs/proxy/Connection.java create mode 100644 trunk/libsrc/jpproxy/src/com/jpexs/proxy/Copy.java create mode 100644 trunk/libsrc/jpproxy/src/com/jpexs/proxy/Handler.java create mode 100644 trunk/libsrc/jpproxy/src/com/jpexs/proxy/Http.java create mode 100644 trunk/libsrc/jpproxy/src/com/jpexs/proxy/HttpConnection.java create mode 100644 trunk/libsrc/jpproxy/src/com/jpexs/proxy/HttpRelay.java create mode 100644 trunk/libsrc/jpproxy/src/com/jpexs/proxy/Https.java create mode 100644 trunk/libsrc/jpproxy/src/com/jpexs/proxy/Key.java create mode 100644 trunk/libsrc/jpproxy/src/com/jpexs/proxy/Main.java create mode 100644 trunk/libsrc/jpproxy/src/com/jpexs/proxy/Message.java create mode 100644 trunk/libsrc/jpproxy/src/com/jpexs/proxy/ReplacedListener.java create mode 100644 trunk/libsrc/jpproxy/src/com/jpexs/proxy/Replacement.java create mode 100644 trunk/libsrc/jpproxy/src/com/jpexs/proxy/Reply.java create mode 100644 trunk/libsrc/jpproxy/src/com/jpexs/proxy/Request.java create mode 100644 trunk/libsrc/jpproxy/src/com/jpexs/proxy/RetryRequestException.java create mode 100644 trunk/libsrc/jpproxy/src/com/jpexs/proxy/Server.java create mode 100644 trunk/libsrc/jpproxy/src/com/jpexs/proxy/WorkerThread.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/CHANGELOG.txt create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/javaRegex.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/nbactions.xml create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/pom.xml create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/Main.iml create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/CompoundUndoMan.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/DefaultSyntaxKit.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/JavaRegexKit.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/Lexer.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/SyntaxDocument.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/SyntaxStyle.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/SyntaxStyles.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/SyntaxTester.form create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/SyntaxTester.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/SyntaxView.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/Token.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/TokenComparators.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/TokenConstants.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/TokenType.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/ActionUtils.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/CaretMonitor.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/ComboCompletionAction.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/CompleteWordAction.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/DefaultSyntaxAction.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/DeleteLinesAction.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/DocumentSearchData.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/DuplicateLinesAction.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/FindNextAction.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/FindReplaceAction.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/GotoLineAction.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/HTMLPreviewAction.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/IndentAction.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/JIndentAction.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/JUnindentAction.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/JumpToPairAction.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/MapCompletionAction.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/PairAction.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/PythonIndentAction.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/QuickFindAction.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/RedoAction.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/ReflectCompletionAction.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/ScriptAction.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/ScriptRunnerAction.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/ShowAbbsAction.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/SmartHomeAction.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/SmartHomeSelectAction.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/SyntaxAction.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/TemplateAction.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/ToggleCommentsAction.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/ToggleComponentAction.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/UndoAction.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/UnindentAction.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/XmlPrettifyAction.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/XmlTagCompleteAction.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/ComboCompletionDialog.form create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/ComboCompletionDialog.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/EscapeListener.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/GotoLineDialog.form create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/GotoLineDialog.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/HTMLPreviewFrame.form create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/HTMLPreviewFrame.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/MemberCell.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/MembersListRenderer.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/QuickFindDialog.form create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/QuickFindDialog.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/ReflectCompletionDialog.form create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/ReflectCompletionDialog.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/ReplaceDialog.form create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/ReplaceDialog.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/ShowAbbsDialog.form create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/ShowAbbsDialog.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/components/LineNumbersRuler.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/components/Markers.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/components/PairsMarker.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/components/SyntaxComponent.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/components/TokenMarker.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/lexers/DefaultJFlexLexer.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/lexers/EmptyLexer.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/lexers/SimpleRegexLexer.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/ActionScriptSyntaxKit.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/BashSyntaxKit.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/CSyntaxKit.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/ClojureSyntaxKit.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/CppSyntaxKit.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/DOSBatchSyntaxKit.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/Flasm3SyntaxKit.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/FlasmSyntaxKit.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/GroovySyntaxKit.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/JFlexSyntaxKit.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/JavaScriptSyntaxKit.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/JavaSyntaxKit.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/LuaSyntaxKit.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/PlainSyntaxKit.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/PropertiesSyntaxKit.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/PythonSyntaxKit.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/RubySyntaxKit.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/ScalaSyntaxKit.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/SqlSyntaxKit.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/TALSyntaxKit.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/XHTMLSyntaxKit.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/XPathSyntaxKit.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/XmlSyntaxKit.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/util/Configuration.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/util/JarServiceProvider.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/util/ReflectUtils.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/util/StringUtils.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/util/SwingUtils.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/actionscript.flex create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/bash.flex create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/c.flex create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/clojure.flex create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/cpp.flex create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/dosbatch.flex create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/flasm.flex create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/flasm3.flex create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/groovy.flex create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/java.flex create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/javascript.flex create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/jflex.flex create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/lua.flex create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/properties.flex create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/python.flex create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/ruby.flex create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/scala.flex create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/sql.flex create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/tal.flex create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/xhtml.flex create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/xml.flex create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/xpath.flex create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/completions/annotation_type.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/completions/class.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/completions/constructor.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/completions/constructor_private.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/completions/constructor_protected.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/completions/field.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/completions/field_private.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/completions/field_protected.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/completions/field_static.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/completions/field_static_private.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/completions/field_static_protected.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/completions/method.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/completions/method_private.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/completions/method_protected.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/completions/method_static.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/completions/method_static_private.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/completions/method_static_protected.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/Thumbs.db create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/comment.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/complete-word.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/completions.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/copy-to-clipboard.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/cut-to-clipboard.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/edit-find-replace-all.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/edit-find-replace.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/find-next.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/find.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/go-down.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/go-next.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/go-previous.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/go-up.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/goto-line.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/highlight.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/html-preview.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/indent.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/jump-to-pair.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/paste-from-clipboard.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/play.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/redo.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/reflect.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/select-all.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/show-abbs.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/surround-comment.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/surround-debug.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/surround-if.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/surround-try.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/surround-while.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/surround-with.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/surround.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/toggle-lines.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/toggle-token-marker.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/undo.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/unindent.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/defaultsyntaxkit/config.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/kitsfortypes.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/scripts/insertdate.js create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/syntaxkits/actionscriptsyntaxkit/config.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/syntaxkits/bashsyntaxkit/config.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/syntaxkits/clojuresyntaxkit/config.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/syntaxkits/dosbatchsyntaxkit/config.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/syntaxkits/flasm3syntaxkit/abbreviations.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/syntaxkits/flasm3syntaxkit/combocompletions.txt create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/syntaxkits/flasm3syntaxkit/config.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/syntaxkits/flasmsyntaxkit/abbreviations.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/syntaxkits/flasmsyntaxkit/combocompletions.txt create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/syntaxkits/flasmsyntaxkit/config.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/syntaxkits/groovysyntaxkit/abbreviations.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/syntaxkits/groovysyntaxkit/config.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/syntaxkits/javascriptsyntaxkit/config.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/syntaxkits/javasyntaxkit/abbreviations.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/syntaxkits/javasyntaxkit/combocompletions.txt create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/syntaxkits/javasyntaxkit/config.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/syntaxkits/luasyntaxkit/combocompletions.txt create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/syntaxkits/luasyntaxkit/config.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/syntaxkits/plainsyntaxkit/config.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/syntaxkits/propertiessyntaxkit/config.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/syntaxkits/pythonsyntaxkit/config.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/syntaxkits/rubysyntaxkit/config.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/syntaxkits/scalasyntaxkit/config.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/syntaxkits/sqlsyntaxkit/config.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/syntaxkits/talsyntaxkit/config.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/syntaxkits/xhtmlsyntaxkit/config.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/syntaxkits/xmlsyntaxkit/config.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/syntaxkits/xpathsyntaxkit/config.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/completions/annotation_type.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/completions/class.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/completions/constructor.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/completions/constructor_private.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/completions/constructor_protected.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/completions/field.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/completions/field_private.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/completions/field_protected.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/completions/field_static.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/completions/field_static_private.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/completions/field_static_protected.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/completions/method.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/completions/method_private.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/completions/method_protected.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/completions/method_static.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/completions/method_static_private.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/completions/method_static_protected.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/Thumbs.db create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/comment.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/complete-word.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/completions.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/copy-to-clipboard.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/cut-to-clipboard.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/edit-find-replace-all.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/edit-find-replace.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/find-next.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/find.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/go-down.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/go-next.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/go-previous.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/go-up.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/goto-line.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/highlight.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/html-preview.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/indent.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/jump-to-pair.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/paste-from-clipboard.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/play.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/redo.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/reflect.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/select-all.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/show-abbs.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/surround-comment.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/surround-debug.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/surround-if.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/surround-try.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/surround-while.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/surround-with.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/surround.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/toggle-lines.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/toggle-token-marker.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/undo.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/unindent.png create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/services/jsyntaxpane/defaultsyntaxkit/config.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/services/jsyntaxpane/kitsfortypes.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/services/jsyntaxpane/scripts/insertdate.js create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/services/jsyntaxpane/syntaxkits/actionscriptsyntaxkit/config.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/services/jsyntaxpane/syntaxkits/bashsyntaxkit/config.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/services/jsyntaxpane/syntaxkits/clojuresyntaxkit/config.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/services/jsyntaxpane/syntaxkits/dosbatchsyntaxkit/config.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/services/jsyntaxpane/syntaxkits/flasm3syntaxkit/abbreviations.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/services/jsyntaxpane/syntaxkits/flasm3syntaxkit/combocompletions.txt create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/services/jsyntaxpane/syntaxkits/flasm3syntaxkit/config.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/services/jsyntaxpane/syntaxkits/flasmsyntaxkit/abbreviations.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/services/jsyntaxpane/syntaxkits/flasmsyntaxkit/combocompletions.txt create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/services/jsyntaxpane/syntaxkits/flasmsyntaxkit/config.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/services/jsyntaxpane/syntaxkits/groovysyntaxkit/abbreviations.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/services/jsyntaxpane/syntaxkits/groovysyntaxkit/config.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/services/jsyntaxpane/syntaxkits/javascriptsyntaxkit/config.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/services/jsyntaxpane/syntaxkits/javasyntaxkit/abbreviations.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/services/jsyntaxpane/syntaxkits/javasyntaxkit/combocompletions.txt create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/services/jsyntaxpane/syntaxkits/javasyntaxkit/config.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/services/jsyntaxpane/syntaxkits/luasyntaxkit/combocompletions.txt create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/services/jsyntaxpane/syntaxkits/luasyntaxkit/config.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/services/jsyntaxpane/syntaxkits/plainsyntaxkit/config.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/services/jsyntaxpane/syntaxkits/propertiessyntaxkit/config.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/services/jsyntaxpane/syntaxkits/pythonsyntaxkit/config.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/services/jsyntaxpane/syntaxkits/rubysyntaxkit/config.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/services/jsyntaxpane/syntaxkits/scalasyntaxkit/config.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/services/jsyntaxpane/syntaxkits/sqlsyntaxkit/config.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/services/jsyntaxpane/syntaxkits/talsyntaxkit/config.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/services/jsyntaxpane/syntaxkits/xhtmlsyntaxkit/config.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/services/jsyntaxpane/syntaxkits/xmlsyntaxkit/config.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/services/jsyntaxpane/syntaxkits/xpathsyntaxkit/config.properties create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/CompoundUndoMan$MyCompoundEdit.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/CompoundUndoMan.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/DefaultSyntaxKit.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/JavaRegexKit.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/Lexer.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/SyntaxDocument$1.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/SyntaxDocument$TokenIterator.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/SyntaxDocument.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/SyntaxStyle.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/SyntaxStyles.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/SyntaxTester$1.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/SyntaxTester$2.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/SyntaxTester$3.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/SyntaxTester.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/SyntaxView.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/Token.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/TokenComparators$1.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/TokenComparators$LongestFirst.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/TokenComparators$ShortestFirst.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/TokenComparators.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/TokenConstants.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/TokenType.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/ActionUtils.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/CaretMonitor.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/ComboCompletionAction.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/CompleteWordAction.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/DefaultSyntaxAction.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/DeleteLinesAction.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/DocumentSearchData.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/DuplicateLinesAction.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/FindNextAction.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/FindReplaceAction.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/GotoLineAction.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/HTMLPreviewAction.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/IndentAction.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/JIndentAction.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/JUnindentAction.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/JumpToPairAction.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/MapCompletionAction.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/PairAction.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/PythonIndentAction.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/QuickFindAction.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/RedoAction.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/ReflectCompletionAction.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/ScriptAction.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/ScriptRunnerAction.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/ShowAbbsAction.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/SmartHomeAction.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/SmartHomeSelectAction.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/SyntaxAction.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/TemplateAction.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/ToggleCommentsAction.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/ToggleComponentAction.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/UndoAction.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/UnindentAction.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/XmlPrettifyAction.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/XmlTagCompleteAction.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/ComboCompletionDialog$1.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/ComboCompletionDialog$2.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/ComboCompletionDialog$3.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/ComboCompletionDialog.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/ConstructorCell.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/EscapeListener.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/FieldCell.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/GotoLineDialog$1.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/GotoLineDialog$2.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/GotoLineDialog.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/HTMLPreviewFrame$1.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/HTMLPreviewFrame.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/MemberCell.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/MembersListRenderer.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/MethodCell.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/QuickFindDialog$1.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/QuickFindDialog$2.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/QuickFindDialog$3.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/QuickFindDialog.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/ReflectCompletionDialog$1.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/ReflectCompletionDialog$2.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/ReflectCompletionDialog$3.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/ReflectCompletionDialog$4.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/ReflectCompletionDialog$5.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/ReflectCompletionDialog.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/ReplaceDialog$1.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/ReplaceDialog$2.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/ReplaceDialog$3.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/ReplaceDialog$4.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/ReplaceDialog$5.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/ReplaceDialog.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/ShowAbbsDialog$1.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/ShowAbbsDialog.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/components/LineNumbersRuler$1.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/components/LineNumbersRuler$2.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/components/LineNumbersRuler.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/components/Markers$SimpleMarker.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/components/Markers.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/components/PairsMarker.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/components/SyntaxComponent$Status.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/components/SyntaxComponent.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/components/TokenMarker.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/ActionScriptLexer.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/BashLexer.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/CLexer.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/ClojureLexer.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/CppLexer.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/DOSBatchLexer.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/DefaultJFlexLexer.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/EmptyLexer.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/Flasm3Lexer.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/FlasmLexer.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/GroovyLexer.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/JFlexLexer.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/JavaLexer.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/JavaScriptLexer.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/LuaLexer.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/PropertiesLexer.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/PythonLexer.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/RubyLexer.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/ScalaLexer.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/SimpleRegexLexer.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/SqlLexer.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/TALLexer.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/XHTMLLexer.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/XPathLexer.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/XmlLexer.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/ActionScriptSyntaxKit.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/BashSyntaxKit.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/CSyntaxKit.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/ClojureSyntaxKit.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/CppSyntaxKit.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/DOSBatchSyntaxKit.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/Flasm3SyntaxKit.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/FlasmSyntaxKit.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/GroovySyntaxKit.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/JFlexSyntaxKit.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/JavaScriptSyntaxKit.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/JavaSyntaxKit.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/LuaSyntaxKit.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/PlainSyntaxKit.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/PropertiesSyntaxKit.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/PythonSyntaxKit.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/RubySyntaxKit.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/ScalaSyntaxKit.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/SqlSyntaxKit.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/TALSyntaxKit.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/XHTMLSyntaxKit.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/XPathSyntaxKit.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/XmlSyntaxKit.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/util/Configuration$1.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/util/Configuration$StringKeyMatcher.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/util/Configuration.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/util/JarServiceProvider.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/util/ReflectUtils.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/util/StringUtils$CamelCaseCompare.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/util/StringUtils.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/util/SwingUtils$1.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/util/SwingUtils.class create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/ActionScriptLexer.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/ActionScriptLexer.java~ create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/BashLexer.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/CLexer.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/ClojureLexer.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/CppLexer.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/DOSBatchLexer.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/Flasm3Lexer.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/Flasm3Lexer.java~ create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/FlasmLexer.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/FlasmLexer.java~ create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/GroovyLexer.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/JFlexLexer.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/JavaLexer.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/JavaScriptLexer.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/LuaLexer.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/PropertiesLexer.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/PythonLexer.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/RubyLexer.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/ScalaLexer.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/SqlLexer.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/TALLexer.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/XHTMLLexer.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/XPathLexer.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/XmlLexer.java create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/jsyntaxpane-0.9.5.jar create mode 100644 trunk/libsrc/jsyntaxpane/jsyntaxpane/target/maven-archiver/pom.properties create mode 100644 trunk/libsrc/jsyntaxpane/nbactions.xml create mode 100644 trunk/src/com/jpexs/asdec/Main.java create mode 100644 trunk/src/com/jpexs/asdec/SWF.java create mode 100644 trunk/src/com/jpexs/asdec/SWFInputStream.java create mode 100644 trunk/src/com/jpexs/asdec/SWFOutputStream.java create mode 100644 trunk/src/com/jpexs/asdec/abc/ABC.java create mode 100644 trunk/src/com/jpexs/asdec/abc/ABCInputStream.java create mode 100644 trunk/src/com/jpexs/asdec/abc/ABCOutputStream.java create mode 100644 trunk/src/com/jpexs/asdec/abc/CopyOutputStream.java create mode 100644 trunk/src/com/jpexs/asdec/abc/NotSameException.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/AVM2Code.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/ConstantPool.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/ConvertException.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/InvalidInstructionArguments.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/LocalDataArea.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/UnknownInstructionCode.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/UnknownJumpException.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/AVM2Instruction.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/IfTypeIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/InstructionDefinition.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/SetTypeIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/AddIIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/AddIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/DecrementIIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/DecrementIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/DivideIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/IncrementIIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/IncrementIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/ModuloIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/MultiplyIIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/MultiplyIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/NegateIIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/NegateIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/NotIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/SubtractIIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/SubtractIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/bitwise/BitAndIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/bitwise/BitNotIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/bitwise/BitOrIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/bitwise/BitXorIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/bitwise/LShiftIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/bitwise/RShiftIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/bitwise/URShiftIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/comparsion/EqualsIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/comparsion/GreaterEqualsIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/comparsion/GreaterThanIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/comparsion/LessEqualsIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/comparsion/LessThanIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/comparsion/StrictEqualsIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/construction/ConstructIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/construction/ConstructPropIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/construction/ConstructSuperIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/construction/NewActivationIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/construction/NewArrayIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/construction/NewCatchIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/construction/NewClassIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/construction/NewFunctionIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/construction/NewObjectIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/debug/DebugFileIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/debug/DebugIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/debug/DebugLineIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/executing/CallIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/executing/CallMethodIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/executing/CallPropLexIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/executing/CallPropVoidIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/executing/CallPropertyIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/executing/CallStaticIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/executing/CallSuperIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/executing/CallSuperVoidIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfEqIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfFalseIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfGeIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfGtIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfLeIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfLtIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfNGeIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfNGtIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfNLeIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfNLtIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfNeIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfStrictEqIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfStrictNeIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfTrueIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/JumpIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/LookupSwitchIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/DecLocalIIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/DecLocalIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/GetLocal0Ins.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/GetLocal1Ins.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/GetLocal2Ins.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/GetLocal3Ins.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/GetLocalIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/GetLocalTypeIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/IncLocalIIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/IncLocalIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/KillIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/SetLocal0Ins.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/SetLocal1Ins.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/SetLocal2Ins.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/SetLocal3Ins.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/SetLocalIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/SetLocalTypeIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/DeletePropertyIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/FindPropertyIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/FindPropertyStrictIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/GetDescendantsIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/GetGlobalScopeIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/GetGlobalSlotIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/GetLexIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/GetPropertyIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/GetScopeObjectIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/GetSlotIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/GetSuperIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/HasNext2Ins.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/HasNextIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/InIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/InitPropertyIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/LabelIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/NextNameIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/NextValueIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/NopIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/ReturnValueIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/ReturnVoidIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/SetGlobalSlotIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/SetPropertyIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/SetSlotIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/SetSuperIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/ThrowIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/DupIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PopIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PopScopeIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushByteIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushDoubleIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushFalseIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushIntIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushNamespaceIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushNanIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushNullIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushScopeIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushShortIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushStringIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushTrueIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushUIntIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushUndefinedIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushWithIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/SwapIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/AsTypeIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/AsTypeLateIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/CoerceAIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/CoerceIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/CoerceSIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/ConvertBIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/ConvertDIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/ConvertIIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/ConvertOIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/ConvertSIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/ConvertUIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/InstanceOfIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/IsTypeIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/IsTypeLateIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/TypeOfIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/xml/CheckFilterIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/xml/DXNSIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/xml/DXNSLateIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/xml/EscXAttrIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/instructions/xml/EscXElemIns.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/parser/ASM3Parser.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/parser/Flasm3Lexer.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/parser/MissingSymbolHandler.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/parser/ParseException.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/parser/ParsedSymbol.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/parser/flasm3.flex create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/BooleanTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/BreakTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/CallMethodTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/CallPropertyTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/CallStaticTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/CallSuperTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/CallTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ClassTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/CoerceTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ConstructPropTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ConstructSuperTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ConstructTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ContinueTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ConvertTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/DecLocalTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/DecrementTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/EachTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/FindPropertyTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/FloatValueTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/FullMultinameTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/GetDescendantsTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/GetLexTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/GetPropertyTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/GetSlotTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/GetSuperTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/IncLocalTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/IncrementTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/InitPropertyTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/IntegerValueTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/LocalRegTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/NameSpaceTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/NameValuePair.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/NanTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/NewActivationTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/NewArrayTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/NewFunctionTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/NewObjectTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/NullTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/NumberValueTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/PostDecrementTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/PostIncrementTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ReturnValueTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ReturnVoidTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/SetGlobalSlotTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/SetLocalTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/SetPropertyTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/SetSlotTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/SetSuperTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/StringTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ThisTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ThrowTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/TreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/UndefinedTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/UnparsedTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/WithTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/Block.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/DoWhileTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/ExceptionTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/ForEachTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/ForTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/IfTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/LoopTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/SwitchTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/TernarOpTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/TryTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/WhileTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/AddTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/AndTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/AsTypeTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/BinaryOpTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/BitAndTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/BitNotTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/BitOrTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/BitXorTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/DeletePropertyTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/DivideTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/EqTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/GeTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/GtTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/InTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/InstanceOfTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/IsTypeTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/LShiftTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/LeTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/LtTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/ModuloTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/MultiplyTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/NegTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/NeqTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/NotTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/OrTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/PreDecrementTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/PreIncrementTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/RShiftTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/StrictEqTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/StrictNeqTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/SubtractTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/TypeOfTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/URShiftTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/UnaryOpTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/abc/gui/ABCComboBoxModel.java create mode 100644 trunk/src/com/jpexs/asdec/abc/gui/ASMSourceEditorPane.java create mode 100644 trunk/src/com/jpexs/asdec/abc/gui/ClassesListTree.java create mode 100644 trunk/src/com/jpexs/asdec/abc/gui/ClassesListTreeModel.java create mode 100644 trunk/src/com/jpexs/asdec/abc/gui/ConstantsListModel.java create mode 100644 trunk/src/com/jpexs/asdec/abc/gui/DecompiledEditorPane.java create mode 100644 trunk/src/com/jpexs/asdec/abc/gui/DialogMissingSymbolHandler.java create mode 100644 trunk/src/com/jpexs/asdec/abc/gui/IconListRenderer.java create mode 100644 trunk/src/com/jpexs/asdec/abc/gui/MainFrame.java create mode 100644 trunk/src/com/jpexs/asdec/abc/gui/TraitsList.java create mode 100644 trunk/src/com/jpexs/asdec/abc/gui/TraitsListModel.java create mode 100644 trunk/src/com/jpexs/asdec/abc/gui/TreePart.java create mode 100644 trunk/src/com/jpexs/asdec/abc/gui/graphics/class.png create mode 100644 trunk/src/com/jpexs/asdec/abc/gui/graphics/constant.png create mode 100644 trunk/src/com/jpexs/asdec/abc/gui/graphics/function.png create mode 100644 trunk/src/com/jpexs/asdec/abc/gui/graphics/variable.png create mode 100644 trunk/src/com/jpexs/asdec/abc/gui/tablemodels/DoubleTableModel.java create mode 100644 trunk/src/com/jpexs/asdec/abc/gui/tablemodels/IntTableModel.java create mode 100644 trunk/src/com/jpexs/asdec/abc/gui/tablemodels/MultinameTableModel.java create mode 100644 trunk/src/com/jpexs/asdec/abc/gui/tablemodels/NamespaceSetTableModel.java create mode 100644 trunk/src/com/jpexs/asdec/abc/gui/tablemodels/NamespaceTableModel.java create mode 100644 trunk/src/com/jpexs/asdec/abc/gui/tablemodels/StringTableModel.java create mode 100644 trunk/src/com/jpexs/asdec/abc/gui/tablemodels/UIntTableModel.java create mode 100644 trunk/src/com/jpexs/asdec/abc/types/ABCException.java create mode 100644 trunk/src/com/jpexs/asdec/abc/types/ClassInfo.java create mode 100644 trunk/src/com/jpexs/asdec/abc/types/InstanceInfo.java create mode 100644 trunk/src/com/jpexs/asdec/abc/types/MetadataInfo.java create mode 100644 trunk/src/com/jpexs/asdec/abc/types/MethodBody.java create mode 100644 trunk/src/com/jpexs/asdec/abc/types/MethodInfo.java create mode 100644 trunk/src/com/jpexs/asdec/abc/types/Multiname.java create mode 100644 trunk/src/com/jpexs/asdec/abc/types/Namespace.java create mode 100644 trunk/src/com/jpexs/asdec/abc/types/NamespaceSet.java create mode 100644 trunk/src/com/jpexs/asdec/abc/types/ScriptInfo.java create mode 100644 trunk/src/com/jpexs/asdec/abc/types/ValueKind.java create mode 100644 trunk/src/com/jpexs/asdec/abc/types/traits/Trait.java create mode 100644 trunk/src/com/jpexs/asdec/abc/types/traits/TraitClass.java create mode 100644 trunk/src/com/jpexs/asdec/abc/types/traits/TraitFunction.java create mode 100644 trunk/src/com/jpexs/asdec/abc/types/traits/TraitMethodGetterSetter.java create mode 100644 trunk/src/com/jpexs/asdec/abc/types/traits/TraitSlotConst.java create mode 100644 trunk/src/com/jpexs/asdec/abc/types/traits/Traits.java create mode 100644 trunk/src/com/jpexs/asdec/action/Action.java create mode 100644 trunk/src/com/jpexs/asdec/action/UnknownJumpException.java create mode 100644 trunk/src/com/jpexs/asdec/action/gui/MainFrame.java create mode 100644 trunk/src/com/jpexs/asdec/action/gui/TagTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/gui/TagTreeModel.java create mode 100644 trunk/src/com/jpexs/asdec/action/gui/graphics/class.png create mode 100644 trunk/src/com/jpexs/asdec/action/parser/ASMParser.java create mode 100644 trunk/src/com/jpexs/asdec/action/parser/FlasmLexer.java create mode 100644 trunk/src/com/jpexs/asdec/action/parser/Label.java create mode 100644 trunk/src/com/jpexs/asdec/action/parser/ParseException.java create mode 100644 trunk/src/com/jpexs/asdec/action/parser/ParsedSymbol.java create mode 100644 trunk/src/com/jpexs/asdec/action/parser/flasm.flex create mode 100644 trunk/src/com/jpexs/asdec/action/swf3/ActionGetURL.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf3/ActionGoToLabel.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf3/ActionGotoFrame.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf3/ActionNextFrame.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf3/ActionPlay.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf3/ActionPrevFrame.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf3/ActionSetTarget.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf3/ActionStop.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf3/ActionStopSounds.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf3/ActionToggleQuality.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf3/ActionWaitForFrame.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/ActionAdd.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/ActionAnd.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/ActionAsciiToChar.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/ActionCall.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/ActionCharToAscii.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/ActionCloneSprite.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/ActionDivide.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/ActionEndDrag.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/ActionEquals.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/ActionGetProperty.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/ActionGetTime.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/ActionGetURL2.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/ActionGetVariable.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/ActionGotoFrame2.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/ActionIf.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/ActionJump.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/ActionLess.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/ActionMBAsciiToChar.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/ActionMBCharToAscii.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/ActionMBStringExtract.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/ActionMBStringLength.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/ActionMultiply.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/ActionNot.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/ActionOr.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/ActionPop.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/ActionPush.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/ActionRandomNumber.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/ActionRemoveSprite.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/ActionSetProperty.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/ActionSetTarget2.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/ActionSetVariable.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/ActionStartDrag.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/ActionStringAdd.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/ActionStringEquals.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/ActionStringExtract.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/ActionStringLength.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/ActionStringLess.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/ActionSubtract.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/ActionToInteger.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/ActionTrace.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/ActionWaitForFrame2.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/ConstantIndex.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/Null.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/RegisterNumber.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf4/Undefined.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf5/ActionAdd2.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf5/ActionBitAnd.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf5/ActionBitLShift.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf5/ActionBitOr.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf5/ActionBitRShift.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf5/ActionBitURShift.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf5/ActionBitXor.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf5/ActionCallFunction.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf5/ActionCallMethod.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf5/ActionConstantPool.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf5/ActionDecrement.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf5/ActionDefineFunction.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf5/ActionDefineLocal.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf5/ActionDefineLocal2.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf5/ActionDelete.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf5/ActionDelete2.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf5/ActionEnumerate.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf5/ActionEquals2.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf5/ActionGetMember.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf5/ActionIncrement.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf5/ActionInitArray.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf5/ActionInitObject.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf5/ActionLess2.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf5/ActionModulo.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf5/ActionNewMethod.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf5/ActionNewObject.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf5/ActionPushDuplicate.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf5/ActionReturn.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf5/ActionSetMember.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf5/ActionStackSwap.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf5/ActionStoreRegister.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf5/ActionTargetPath.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf5/ActionToNumber.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf5/ActionToString.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf5/ActionTypeOf.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf5/ActionWith.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf6/ActionEnumerate2.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf6/ActionGreater.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf6/ActionInstanceOf.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf6/ActionStrictEquals.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf6/ActionStringGreater.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf7/ActionCastOp.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf7/ActionDefineFunction2.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf7/ActionExtends.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf7/ActionImplementsOp.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf7/ActionThrow.java create mode 100644 trunk/src/com/jpexs/asdec/action/swf7/ActionTry.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/AsciiToCharTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/BreakTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/CallFunctionTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/CallMethodTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/CallTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/CastOpTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/CharToAsciiTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/CloneSpriteTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/ConstantPool.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/ContinueTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/DecrementTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/DefineLocalTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/DeleteTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/DirectValueTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/EachTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/EnumerateTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/ExtendsTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/FunctionTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/GetMemberTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/GetPropertyTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/GetURL2TreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/GetURLTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/GetVariableTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/GotoFrame2TreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/GotoFrameTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/GotoLabelTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/ImplementsOpTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/IncrementTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/InitArrayTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/InitObjectTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/MBAsciiToCharTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/MBCharToAsciiTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/MBStringExtractTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/NewMethodTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/NewObjectTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/RandomNumberTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/RemoveSpriteTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/ReturnTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/SetMemberTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/SetPropertyTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/SetTarget2TreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/SetTargetTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/SetVariableTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/SimpleActionTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/StartDragTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/StoreRegisterTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/StringExtractTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/TargetPathTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/ThrowTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/ToIntegerTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/ToNumberTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/ToStringTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/TraceTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/TreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/TypeOfTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/UnsupportedTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/VoidTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/WaitForFrame2TreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/WaitForFrameTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/clauses/Block.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/clauses/DoWhileTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/clauses/ForEachTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/clauses/ForTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/clauses/IfTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/clauses/LoopTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/clauses/SwitchTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/clauses/TernarOpTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/clauses/TryTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/clauses/WhileTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/clauses/WithTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/operations/AddTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/operations/AndTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/operations/AsTypeTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/operations/BinaryOpTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/operations/BitAndTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/operations/BitNotTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/operations/BitOrTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/operations/BitXorTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/operations/DivideTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/operations/EqTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/operations/GeTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/operations/GtTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/operations/InTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/operations/InstanceOfTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/operations/IsTypeTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/operations/LShiftTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/operations/LeTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/operations/LtTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/operations/MBStringLengthTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/operations/ModuloTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/operations/MultiplyTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/operations/NegTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/operations/NeqTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/operations/NotTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/operations/OrTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/operations/PreDecrementTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/operations/PreIncrementTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/operations/RShiftTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/operations/StrictEqTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/operations/StrictNeqTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/operations/StringAddTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/operations/StringEqTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/operations/StringLengthTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/operations/StringLtTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/operations/SubtractTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/operations/URShiftTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/action/treemodel/operations/UnaryOpTreeItem.java create mode 100644 trunk/src/com/jpexs/asdec/gui/LoadingDialog.java create mode 100644 trunk/src/com/jpexs/asdec/gui/LoadingPanel.java create mode 100644 trunk/src/com/jpexs/asdec/gui/ModeFrame.java create mode 100644 trunk/src/com/jpexs/asdec/gui/View.java create mode 100644 trunk/src/com/jpexs/asdec/gui/graphics/exit24.png create mode 100644 trunk/src/com/jpexs/asdec/gui/graphics/icon16.png create mode 100644 trunk/src/com/jpexs/asdec/gui/graphics/icon32.png create mode 100644 trunk/src/com/jpexs/asdec/gui/graphics/icon48.png create mode 100644 trunk/src/com/jpexs/asdec/gui/graphics/loading.png create mode 100644 trunk/src/com/jpexs/asdec/gui/graphics/logo.png create mode 100644 trunk/src/com/jpexs/asdec/gui/graphics/open24.png create mode 100644 trunk/src/com/jpexs/asdec/gui/graphics/proxy16.png create mode 100644 trunk/src/com/jpexs/asdec/gui/graphics/proxy24.png create mode 100644 trunk/src/com/jpexs/asdec/gui/graphics/proxy32.png create mode 100644 trunk/src/com/jpexs/asdec/gui/graphics/proxy48.png create mode 100644 trunk/src/com/jpexs/asdec/gui/proxy/ProxyFrame.java create mode 100644 trunk/src/com/jpexs/asdec/gui/proxy/SWFListModel.java create mode 100644 trunk/src/com/jpexs/asdec/helpers/Helper.java create mode 100644 trunk/src/com/jpexs/asdec/helpers/Highlighting.java create mode 100644 trunk/src/com/jpexs/asdec/tags/ASMSource.java create mode 100644 trunk/src/com/jpexs/asdec/tags/Container.java create mode 100644 trunk/src/com/jpexs/asdec/tags/DefineButton2Tag.java create mode 100644 trunk/src/com/jpexs/asdec/tags/DefineButtonTag.java create mode 100644 trunk/src/com/jpexs/asdec/tags/DefineSpriteTag.java create mode 100644 trunk/src/com/jpexs/asdec/tags/DoABCTag.java create mode 100644 trunk/src/com/jpexs/asdec/tags/DoActionTag.java create mode 100644 trunk/src/com/jpexs/asdec/tags/DoInitActionTag.java create mode 100644 trunk/src/com/jpexs/asdec/tags/ExportAssetsTag.java create mode 100644 trunk/src/com/jpexs/asdec/tags/PlaceObject2Tag.java create mode 100644 trunk/src/com/jpexs/asdec/tags/PlaceObject3Tag.java create mode 100644 trunk/src/com/jpexs/asdec/tags/ShowFrameTag.java create mode 100644 trunk/src/com/jpexs/asdec/tags/Tag.java create mode 100644 trunk/src/com/jpexs/asdec/types/ARGB.java create mode 100644 trunk/src/com/jpexs/asdec/types/BUTTONCONDACTION.java create mode 100644 trunk/src/com/jpexs/asdec/types/BUTTONRECORD.java create mode 100644 trunk/src/com/jpexs/asdec/types/CLIPACTIONRECORD.java create mode 100644 trunk/src/com/jpexs/asdec/types/CLIPACTIONS.java create mode 100644 trunk/src/com/jpexs/asdec/types/CLIPEVENTFLAGS.java create mode 100644 trunk/src/com/jpexs/asdec/types/CXFORMWITHALPHA.java create mode 100644 trunk/src/com/jpexs/asdec/types/MATRIX.java create mode 100644 trunk/src/com/jpexs/asdec/types/RECT.java create mode 100644 trunk/src/com/jpexs/asdec/types/RGBA.java create mode 100644 trunk/src/com/jpexs/asdec/types/filters/BEVELFILTER.java create mode 100644 trunk/src/com/jpexs/asdec/types/filters/BLURFILTER.java create mode 100644 trunk/src/com/jpexs/asdec/types/filters/COLORMATRIXFILTER.java create mode 100644 trunk/src/com/jpexs/asdec/types/filters/CONVOLUTIONFILTER.java create mode 100644 trunk/src/com/jpexs/asdec/types/filters/DROPSHADOWFILTER.java create mode 100644 trunk/src/com/jpexs/asdec/types/filters/FILTER.java create mode 100644 trunk/src/com/jpexs/asdec/types/filters/GLOWFILTER.java create mode 100644 trunk/src/com/jpexs/asdec/types/filters/GRADIENTBEVELFILTER.java create mode 100644 trunk/src/com/jpexs/asdec/types/filters/GRADIENTGLOWFILTER.java create mode 100644 trunk/test/com/jpexs/asdec/TestABCStream.java create mode 100644 trunk/test/com/jpexs/asdec/TestRecompile.java create mode 100644 trunk/test/com/jpexs/asdec/TestSWFStream.java create mode 100644 trunk/testlib/emma.jar create mode 100644 trunk/testlib/emma_ant.jar create mode 100644 trunk/testlib/junit-4.8.2.jar diff --git a/trunk/.idea/compiler.xml b/trunk/.idea/compiler.xml new file mode 100644 index 000000000..b9a1798ac --- /dev/null +++ b/trunk/.idea/compiler.xml @@ -0,0 +1,24 @@ + + + + + + diff --git a/trunk/.idea/copyright/profiles_settings.xml b/trunk/.idea/copyright/profiles_settings.xml new file mode 100644 index 000000000..b385f01fd --- /dev/null +++ b/trunk/.idea/copyright/profiles_settings.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/trunk/.idea/encodings.xml b/trunk/.idea/encodings.xml new file mode 100644 index 000000000..7c62b52a1 --- /dev/null +++ b/trunk/.idea/encodings.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/trunk/.idea/libraries/lib1.xml b/trunk/.idea/libraries/lib1.xml new file mode 100644 index 000000000..ddc47d775 --- /dev/null +++ b/trunk/.idea/libraries/lib1.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/trunk/.idea/libraries/testlib.xml b/trunk/.idea/libraries/testlib.xml new file mode 100644 index 000000000..24bd8f60a --- /dev/null +++ b/trunk/.idea/libraries/testlib.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/trunk/.idea/misc.xml b/trunk/.idea/misc.xml new file mode 100644 index 000000000..818557159 --- /dev/null +++ b/trunk/.idea/misc.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + diff --git a/trunk/.idea/modules.xml b/trunk/.idea/modules.xml new file mode 100644 index 000000000..21d9dc45e --- /dev/null +++ b/trunk/.idea/modules.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/trunk/.idea/uiDesigner.xml b/trunk/.idea/uiDesigner.xml new file mode 100644 index 000000000..1e7cce4b8 --- /dev/null +++ b/trunk/.idea/uiDesigner.xml @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/trunk/.idea/vcs.xml b/trunk/.idea/vcs.xml new file mode 100644 index 000000000..6d89e2bf8 --- /dev/null +++ b/trunk/.idea/vcs.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/trunk/.idea/workspace.xml b/trunk/.idea/workspace.xml new file mode 100644 index 000000000..309f098c2 --- /dev/null +++ b/trunk/.idea/workspace.xml @@ -0,0 +1,379 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + localhost + 5050 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1.6 + + + + + + + + + + + + + + diff --git a/trunk/Trunk.iml b/trunk/Trunk.iml new file mode 100644 index 000000000..30070a743 --- /dev/null +++ b/trunk/Trunk.iml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/trunk/build.xml b/trunk/build.xml new file mode 100644 index 000000000..041906cf6 --- /dev/null +++ b/trunk/build.xml @@ -0,0 +1,158 @@ + + + + Builds project ASDec. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/trunk/buildconfig.xml b/trunk/buildconfig.xml new file mode 100644 index 000000000..58ce613c6 --- /dev/null +++ b/trunk/buildconfig.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/trunk/doc/avm2overview.pdf b/trunk/doc/avm2overview.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e9bf9578aa72a33d7cd25418947a72b141461e63 GIT binary patch literal 410466 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

CLNghnK>ia6F7|m>(_OJTfBwZKM(3baLqX z_JXGn*?lMSneHMMj~y+o!#{C=D8Js;O?_M2q*>1vM46f$e_j1Nk6QG8|H!?>ahtVX zzmz&@^+r4@XE{VO|H#vN$wF{zazrOMD_J(mq58N)lo-u@1i0fUXBGlDGp~o3*@{(4 z_q#q;O8?L?M}t zJuT1ki?n??S=J;PTTI8;=|(H)%$<^wa7a7a708vTiYA>hG9C$xMR#g1YIiH-lq5`e zp=^nYzMgc2lX;s84#g0?x|IG)7JFen-ZRD~-#j9QbZx0GXvrIZJt zDpJ#(SBxm{hhhMUD;826+6HuudBR5+b|#w38Z} zgD8XkrLcP$V%o8u)G&gq7D_@j--tM145Z>rlYu%YX+{6}+@vu^MRkmwi27cya>zL0 zo!5u8*<|awh63Bl_b&O+>T+_nRd!PTdgtNTSZMyN9OkCoDz@{mc7gNIK5*DSsBQlN zPW#Pk!h!|zKay+z;*|3@x%P!({Xv8Ni(HfZDe+HoP2vxV_E+lv9$ouFlm19p{}l1x zLD#+n4}WMjTsmgfFY=1%D+td&(Y3!3H=%z=*Z!)?{}{XW2m1Pd&9419V{$bAWY@kR zssBRP=)bD{uV~eOICuY_*{Z+J>%U89>Au4D{Xel)4D>9_|Atm6X<8^K!hcLOH?HCU z1LNgd__o&VSBjfMfvEAW)|5A_CQ+?2w&s#io`1csJ8z)^!4@D)7)rwpMMcDR0Z2qq zVZ;*@a197RfgT7*;WZJZB_{`DMy>HWbWnwg>++XAX;0`N{HNksDL_^#?I3ax@ib* zung$1s1p_vrk#2ymt_XzY|OrigC(Egsh8Vcf21O%-4IE*fo3-ErJq-U& z!?1B)(X~(&tBalEjdNap!K+NWzi>^i3A*i_sYeX1m%YQ~8P5!Bhqaz*^klcUjv zYTVCV0I$6VL&q>2-lZwF1kF!p4|YXYJ`&T^vx?tNzJnv@g`f?ZYzukl*vH2`yYG+^ zWQPsb9muinFY@>#1zEkwL%IXxZ!^vs>418wh73!un54LT92Rny zU<1Kwx8sv$MCOHqyJwh#pIZ-i9v64{Z$V>T~5Z;R*y>V?>jRmV0By&~=l9 zU>Qnp-cVO`!5ePmEq3&NGsF(<+zeY!}khF>9Y=(EcZqm>3T(k$v=X*2A z51Sw2tcwQK;r5yaQo%X)Fx&>{a3zNw{jDt>=1q-u3#8iPWR3d2ZJ|?l$OmRCRXg~zS?yILD9a!9@b4=_ z2~x`Uf(6!{`cs23-@=s1!0I_+?T^yg7Lw|zlpH<3qiGLbmZ+VwN8>>c?v~wC>~+Rm zRG|#;l-+KMjOVkOb0s;HFaNlaUyz=^hcIZ1!qhyS5r#EWbW*gkO#?KGwjBbM0-db4kFq*H?+X7-hA(@{vahSF@$*AtPLO+gAfp&6foFx3b-@9b6X(^~=jR8_`qVl7 zOJYioHy}P;ra`Yf4bbP!=w4`fR?$Rs|E(y`F8^@l$*g>g@44tHJFYLxK?}97KL;|DD9ChQK15HqcN_7x6~ zj{hGJE-oD{D;wQ^c#!<-vm?P3%;ksjLPJ0`W2>%U6~0oIt}&*X&lDg85j-DMd&-6c zUDNIcm3RZCX+i4rSjkGw{)T(^(vl9Q1RYUBeo=W7gLyrZ+u=fM2b`X(hk)5_!7V(PZIhqh}+bVIiWUw-!;JyG=IT9lG%; z{h*^4ZC7BtR#M&Lwq0!7ar(hL{|JXKYd?I+J7yBYQ{=p+(VA@%pn_?wf`F18i;9LF zi%GjbH0Q%sYdo2C@%}8=RTI>w8*iWaY%Rt3G}|9YYqPpvjCn(; z5(a7G5=bQ3D6FY^bU^FlUA8d01_dj)JxmB3In;<8hkT0sx6my{=cq?m3R?Gutb7Z_bcP8>u!{5N6UuhM4S~s5cn_G(D{7T|TzQp_FO1T#u>J z*HuG)?+G}uIPLSvUfS|)jBo|_15NB_qJv_JAY@hn#uire0IsYIkz~azUV%& zY^bbedEnuXl)KA+RJgQj>ZgFWxVG$SEH&w2aOgXZXI|BuUcnjgy6$;uXN@E<1FRw_ z{haIn`aKUnJ`@Yawmj2B*i!gQ7j-4@tsa%s-QxrD8G4$iWcKzR1X{L-v4n5B7tdCg ze9fe4k5ytwoygd|BG3`plkWDb9U%^l`YtH`rfswPMI$)MvMNb1pPu zQDE`4zA>oP8BZ5t_EQHk+8p30j2u1rI>r*IOC4A)$@CNQJUVAG%o{tVSgE{fF<|ku z&?nV3Qx0!j!PQkE5LRoY@&2)QK63M9%jcy?9 zB3R^At9PG$7Dqg<`Phj)h#{&>HMI04-4kMq<)^9tly(bxj)U#=pa~b%clV{dQFcF)3h|W>C^JS-d?aWOv6M> zQKpX2;NdHplSGq$5D}TrokwG;1HFuZBH_h%wrSso6^i=sNz?1`1Cw;yUcCE7XfWU7 zB+R-01XaLLT0mlVc(-Jdev348JfLUS9j>(zt`vhDosqN)HrUp-AF<6=4u?2m(%=89 z&*>YOE?5DPXIcT`A<`&QVKZejZz6BLb?9yVa!DLzhCsr6vAD5X#g`K;_Lb%7vD)ZV z)4e5uX{=Eilq<(6tJ$1{;R@|d_a=k%0_k)(NjWRo8DeZL2RyT~MhbW?TxI;OT(TiUyAl_Yau$HtZKZZ$d~*#leaUZ@Hg8-`M@I92ra7 z$1Zu$Y1mpSoiZ2`{(k%EfXecW&&KjZqtWR8ls)?*orfu@XTx&ex+TP^LHJ}9`+a;I z|GQ8P9IRrJ8SPX7yrN>$GM>nx3a{BF$MQ{5vE8!pk#U+K68JjxJaM%+F5bwP4HT}D z)BfO4Y-J1KjO}Tct|>4=Iiz~ZVmI1t=EJ&`5hyYK7#l&Tv9&Zxf>FDJ|WJM zBc+y@-YVOUsU=R%Mr}gE>JqS(f*R(|W;i_Y;`1g)Xl=1m_;ULGEK5Qkwz_G>{ra`` zNji}xpmo=~)m>-JzdP6_k_EFIA_g#=yS7x2j|my)aH{yDCzV;B(|T(1*b?L--#tw+ ztHxUD-B=?&eSro9A?(O+q4?Q1Ge`y>AzEr=!ht!I=@H^UeaX^mMzxi}+38l~M6#&X z(0b`hvizW80dge1L-RuGL4%^NF}}J(xFF8Fr@} z?ycIQA%Q2n_tjd^3LvQ0$fS3hJdSmdGGKzP_KU%7G+jD7!0~39O4J*CQ1_@ao3241AMuI2jfk5||Lx^d0LRvnTj8{ZFtae^*{f96P-NC~lsG;CRP z#f7@H7x5m-yG$)zH_er@=JsXukihC>H7)PRVI9NuD7XsodeKTP@+<^p!r{<{eS0(R z=Q5wxG!mugmIJKw#o+Q)jwQPEuZx_nuAp`Q6CKcdtGE=Izh3I{?e`HX_V&|DyJE z3@sQ%&&RxKLfO|JwT&A&=NFdH&tU^$Z3KZvmxB}?ZE5LOcNL9PXWV;k;#I=%RodA3 zchk1$`o(7|jUN^_SLhObcelu2v}m|aaWlwe-ld=HEZyXF#~O`IW^>{(CH5Oq`Nxhq zCO;i58fwY9Aj~kDXU}zG;+0;sUdFJFynp1o^EathSW9$cDnY24fsX2}RWFVpgZL_* zZ_!NwhdHdLZ?xJR@tk^&VfFUCFqJrIk{L5Gt0m2X(Z@cPiX?W>*8q!jQX`? zQTjCR0uV7ij-Bp_YRE%0YM{X5KXp3X^6d|ZevB>YbkIu`@HXcuTPx~erqpc;BO@j^ z6<#tfFS%k-W;Z8MyV{I?b8jYp7NsRHa&WJuRNk(%vgC~3hUfGohpS_!SK|c1=D-SE z<=>Z%SmtL_u+>qUPRhCsz!5I$bH)me-6i;1cNaJ(y4%~UMl&6HZT~Q)GF#(r#F$`4 z(7>^##YwK}bMC!3i@Rb-o)WUg(leLMbgpRZPk}r74ezPBJ+Z;b7X{OAd-#}p<)ZEE z)1YgBcH4n-0=gSkQeR(_WbsDTSH`8e^sW#{a+?eQC4(u%6Bu}RCmO>~8U_fdLvO3P zv>4r*c&n%lfBp3s=s1=*In4+A^&KjV8^T{=+;+*GNNxSXX;r zU-L2ZkfR8;Cu;6A-KNlg`t{E&XsEj2J*^n0?N8}0}dkityb3!-gL!O=k(8Q`IOm?Kbz&3FB+t)-4rRL27rHPMwZQWgJ*ICb z@~}*V2j0)q3g^4`sR6SGxCfcrT}&1s+C8gs!wDUEK@d9*x^thX(RZTd1htvBme%H( zG--ph*{P3m=dHD=CPx?E;vOFisfi>ao$EgI;AYpx2^)vMXG}_qO3@q}pgl>GOCAT1d7gdEnbZK@< zR3Y_(4tvEThX~b7dtk{F|3k>;3(crqrwrCP58^eFSHuBl=&()V2jPP0v0PulmgCRU7_p|j}V&$4!7mJ1igyW54KY?(CVbg`{WlM*dHd|(#=dADQ( z#UMgJ400qZDZ3Ed$T;E*vnpcMtTE>)aA+4O?jj^kz8|RpkQ6=WSu_VovIdMYv({{x zOo{4vb#Jm#pi5C4JsoTnWyV$-%flBXkn9Tvf=X@!{5 zCYfN#T5_!AUGp0}(@^5RsyFBkSM*y~6SUOAza8drwBFg4OuJaHhOonMh358{QJxf4 zlMJJyAMH-F!iY9n92(xK^brV>-4mv)_?EA6e3Dsp>&ZjW2@^&T6-6Adm$x&{DH!1-&WmM*@6EvsXx3PuxGfNbegBDEQI?-5$EPGK%WZ;xt0zMx~)l+ z%aREK%iTX(Xb@)Rbvw^m9gpRlJjLTWv`rS`3mJo_Cta&U$=nh%etsINt9)OuoMK*~ zyc-tOZ<+hy!>6LlIuA(#X&3{tk{HKD`QRCKxzC@PecI2Sik1alm%D$invWYB!f!@$ zLmOkD*#$)6u%hAZ(Y9m-DeWp^4F{x}l3E758(UvH!1bf#D;g6Qn=~R75o9assdW?| z@+nS)5M62mL3{|2&o5#!&wUa$yY`BMYh7;9PsRvkE$U-j5ogz-dX`(#xHn*7dJEz@ zyt^iC-a@g~ZT!fpToNPAtmh`?p~Ig7=BMuJhtFucX^`Xu6ni5;`S>Qo>$@qvH1i02 z)3AEP%x}olyKLp=x$|`~e{Nr{fRB*m-7UJWX@#40j|kf@300*%5yQZ=k&%%yFeDPU zbrpQhOH8^!W^MCbw@x+D`aH-zNY#JxUE>l730Eo~u?eegEQF0GHYiy;UdR2po`IJmRPAQ^ERpn}7Xdgw( zr?ZzkVzn$*ciisoAL?8(SQkoTW&KUKYiOWr_UzJ$PLKpy* z(#|!%NqL|TWh+Y=_scj`COOqC?`rFcE91elh^aHB;RVBIOna3Q%>?X-Sdphl^$D&A zhwy1M;?>ub1s((msi|WhgzP4UYNbYw3M$e^rn*%D*)Ioe4{FM7k>DRmCc@kRw6R*lRE zJ~+^<8D%W(q!}ILC9;rd+c>t86O8GpJ=!A@nFMW)dn$Lj%h4CE zR(eyzb#Tirk^V}DL6zkpmH29W^9`Qss*3B-J&EU=&V8QsUM-yIbdqTr?4w|4Xeqf6 z3rJA~m?_=3cUs@>JXFw6;V0g_@(PvYCzi6!;bk~_Non43Yn}#@Twnvfr}t_!zwe8L zw8_gL3y(=9qlS@;+SbzV%|2AWb^c0jMUG%1%*VIq!iS8N-BY`D|H^#hvvtr~FZ7r| z^{Jv<$JJm=5tKZAg+Eg4xDZm4Mf$LG%zIBEp5I-x|4my??Kv0tZpEvWfub*x{oTHr z^827cS=sgr<880f+?bt=fVpmt2rZtZ&CJ;9o9c+Rz){WngIHuve=8cgV1r7!yWUyx4jvUN5p!@M${_lK$*I$o-c z*V;W@uL9kB1O;b{xGPF}Z}7(Bga=zr;I`^brEpp-hpq#kH9c}d0BjHKgx^;^P}e+N zA3ec1pKj93SB(^BL?EyeI;Io-OeG)QzC`#|`85CV;znG>A?SU~A_(Vy3z(h0@RqWqvFf<;U&hfxSDFW)Ksk&;&D5QN{2XiW^`$ub#gC*>K-ayT18hq)h$$RWR&CX zbFzTcI^ZDDFpnZr3(qIz(5^y{Ol&Sso(*3`c>M=weiEs-#>e+)t$zNd2e(@CuZnd5 zKl2W3_~k9q9%DXM9$zJNIer?<%p#3-7gUswUUWxzYz%Txj8f z(v5T-z3P3+0=~6X_j0}62d?BCWD!V#k16}KX<(#IHu@BE3L|z6 zQ(WUne`LEDrM{LvZJm?VBbp z4f2cc#YdpOAw~wds^`#F1JrgHpB84w)8fyhuuNmU_ru>#Ws^D`%FftZrvMRV>Hcco z_p$@B10AOir(Wl&mv4#EZ`$VHhV*uQKXN1UjRFef?6j@&+f8#hI@MN3*d4H%)*s5L za99s6Qr#7tglpqoiCp8$6AG<{wMOD-*Y@~n&^FC$t*%Yq%d2a;iQ2h)R$HYmszxYYb~ZhufM=}zVq6$n;i zWL$Fg`cP(>zgl#${&6Qb6=dC%NNvG#Xgj0hQ!JloD+kPOB z0V-5C+An)!C*y5|8v- zxR+Dn1<`S=!In4;e?GL!BjwIi^k3DrB1b^PV_b&pLujhz=M#&}n`YU$ebk&9zR@RA zwSNW|{7MR6B4NWJt1wQhB3dL6*KNQYJ39$=?S34oZA|YwxM|<0HT%ry%2t62gW!8Q zTK4#+sOY?5QqV?!erh>q6kduluC>^hhN^q;XpEfNqs838IY9Ua|jcD*tf~<^>LHEo28FcT$5&?9?iLMKi5m9 zoGJW++jNlW)jmE%p-H0S=a$%{;1x@@k6*o#OKO+K+$x!uDsAZzH9y<~d(3Qm{QXBT zOUU%MSkOgqq>RhP&KX2gCKf5xZ`N);_4XtYOu5|n`Ohv}h&hc4ruWZpy(p>-n?`$;e)M}e9< zq#*Q}ZkoP4&7zA=@as)L{>g~MJT6sDzr>HY;RnPoh(a&{)WY0JNfrYcP>Da?kJH+P z(RJZ8S$0fYOQeJghp&<73QKhz2+~1s7Smd{9YEmm%wTqxR3Iqu*OnXDNRpu~*=x)N z-)t1WHzmiRXx*I>GqRWJ#-i05F!6c1XmeQLUVghh0+$0-%(y#DM@7$sad;9y^RYKI zVyKfuT2_GbuAV;$njrtaZWSUG%q`rcYA-W8{3y`y3GVLvn#d{p!aiejS9O|MeiKX-9R+>|pw3%TgT#nvC z72GotH ztFwAZuz2f>;)=q7nE_QANx^}zN681UYPkzzIGhXZ-uEy6_JGP$dpg$GP{qt%vTotG ziet%%@%HWeB=kTi$d7lDm?O&Q&F+C+qYgsokGo6ZYChsZT3EnrQ@`1Q)CflxH17h z2ldF@FF4#-T1c)<(i!c06O7aJxGg)OLv2mtF{=iQv||s;e$G(+SOj6geeC32*TA-> z<%CV!vUQr|)2{TgrVzd8PpN>Y)g=%9Ld?!d!j6$vW4T6i#4V7@4113)87a~h+pCOw zK%Iy+btp|viZ}IcDbs(XL*tO_hAV@flaro5(HG}Bzf{U`BD7AA1qUIs38Hsnd}1wV zO+#!EbEuXW5^xqZ{dtYXReNAgIYq^XzU-Xqb%k%(DeIusNfsV#>NAr zH6d9`6`+$@7~p$ z3sdMPg?%D;!wuv45ts4*7 z6Z8IZws#t`u;@g4%?xj4@pW{s9KDVz*3sb_Cf#hGNe*rX!)IL1B*PE}sG{sREoAk!bX`;uq z$=71V$1BYnB}Wn$K6#_N=7xw%M1}#RtqaSjEz6`!B8ZI~AlaNMUpzWc+Vm^DR`?xs;hio_#!Yq5iS~~||B4MZ3=WXWA zn5rfsnZ)j-Io`xKL~@lM&z*xFaHf{Vha%FB=d@boTM4+HsnYRZRo+e!Ok=vy)(9!{ zbE%ckpv3yfY0a)KughtxBxstO)l&U9TPl@8V{yBb9kTMh=BHK9&KW(BDUMUXno=3I zII6W{yxa0`x4Sr4#*pf>y@$NJ?BIAh=m|RI$OTg=LrK2f5Ifpgdlg4`NhC@!8L1I*KJdQFDYq+kCnl<~ahrFs z{afyx+&*0?Tfx$pGOEfltZ%_{%QUJA4^$@0yUH!9^VF@+xD4MSox4BRayIyKko@78~mrSwaf7|CMIiNH05|;7M1a zjE61iFk--NQCnd}xz!TqOoEvNuCNFmLtgmyKWKZD)608>;SVEszJ2KTt6YpSHiQ<||uB(pUJ2G=853HbTCf7hu;3Cuj22tDl-T z-TYi>@Odz4v^|{FB#bsg@QzaH;;uC+^05PU5eguP!0nalS3d~yrZwrcpJ&xSy;AAf z6Y!O(L85-LV3mEINyhHuh)xACT<{8;v>%^+<+t43La}!LK6Ntn21}oebF9R(AS!G- zr(Wfj*{Uq-mEURH1{ZVI^{w=W;F@5|B$Nt`HqV(g7Y=;jTwqi6)@%s!)BJXdB>hgC z!QM7u4{!%NYftO`*qp@+I_kcUVQSF_ST=Zx8Y5aBbmiyS- z&F+qN&xbWZe;E&GMNflgXbWZ6^<3|F8ny>his>Z}GY-4g1-iQB6_MGmha#e{GUo9+)dvH48vz?Z4a@^j2 zbKZ#GFkrHN-8}Z|s@`Y=!*0_?_9@XEU9)J|xV`IYK5)0}cI#|kda%s7y1zk+2YARS zz*ib26eY1yTgR6$5PUS}b}`;)F=3D5c6b;WoykwK|OPRBv(NZSQhatm^FM_UAukq~o37 z34HMFtvV42!#0~@n`g~fte|A9=cZ0I_4y39oO+OT%gBqL{HDiKRh$~`-PQmp_o6`; zt)iK>xtuXUy?F-%n~0|`(V;U-fQF@uM^t)$G5tV>>M*z}sU|K&Qjf>hw0+|tX?U|@ znR2Q$IPbv9IVR1tVd%OLvB$ZStD&*pd7|s9YphAEgtU+%^N#+BHMc3PJsVf57$7ni zCv@AEUV`(8+8VLp^g&$@dn@9ODiy1cV|~rL^g!zI;2ae-xDO+GkVKQr$C;779;o`h zGRf7xL&$MvP={&#+v%*uZjIeuX;Vi;z|qz;`zF$Py?x_Dsj!`KgXH+MyrBb2#B|!y zirYSpmY?HrioPC%xmR$6w0Zw()HsrYXe8f&#Ml07*+)hHls0XEba$Aq>LuVXF?{j8 z;5BOTVcj=>Gs89KM=gtl3u+@@>THr5@UL*FCxtdEQTX7}XaHPe9F2y6LOeWI@KnK^ zE;|v9Z{NfH8foeG3!Q5s%a9xj!xB`!2)K(ShH&@3!G~qBoTZM{L*L56MUQsbZriun z99sy09;6?lrcwwJ^)R$Q5M!m2LSJcYX(}{L2mcs5`vEh%$ToJena8DW%Op>=4w0r# zqS5pFELfw0CUjErry!J0X{-;ua;}AKZXH-ODU!TW&z>lh*O-d}MZ)pn zVFX}RM{{DgAwy3M*z0le5(21UhMGdfJBz$x&HjC9`{a03&4__)k>}5P2DS+q$%Lv` z;JJaf`75HD^nD^kj~>5we})Nf3KYT(r4*O^S47eI9;UlIv1p3M2Ab z2x@xf(6Z2{*_2g2Fpe#QpU10|h2d3j&Bz=VX2sYBrY;Y@n5}|J}Fy>oeB%=@smaq@H}eC7AQ}sRrrYj#ltULlbTo(Y(}j zIm?(MY8&Hab&n(KNjWC*Xes1)F$y|il6g730z-)AqonsMZILXBf)}SdQ3P!0wR0}*)J16V6*al&5Sh)tYm=YdQ_hkc^I~9;N(psu0~@VESQD zv@nME7!gXkCGG3Bxm63|1Y=d38=^{g*+TM+f4mp^JwFi>cwgG6Q|-i9-C`{;=!Q5Z zhjER{j%CN@s#ISCN&tBMc_V&*EKi!MP8O#+gUxYRss_7-U$e%eXIHmr*>O}Uwh-^T z;$s(_<{Z5A-L$Iny%DF@J(RWEG0ld!;M|ew5VjhpIGR_koAQIVTY`$f)ueX&ef8Q4 z$&G|6`1$eE@w+Vz)dq{kS)%spZwd`-S&)RE+&0I0hsv*pt_*kEaT{%&qw@kUj_Uls zW{K0|8JbrU_1qXKYPs~mgMH?pyL0WuHr#=j$2IhWU`l02gyT0s+`$dqxgp_C(RX-~ zqqQJGY#x*g*#>7DGo4)E#)%ARIoVG{n;foepeS+QYn3}Pi8pYB6L!E|O{d!QT8#>io#k-^B~7jeUPt;fJyIugGc0@8D2CW z5ewsoLxU`vvl~7j%p(#KFoZ2DT*JoL4~7QO>TQ6Jgp>J}gd`SjF9m1dsx!CuZD@p3 zrMjalm)d;jG%fZID#cN~kIq{9fu^0!6lSq+zDiIxCVlf;M;#e5h1RiX@>zR;AxPGF z9p|2@$mFa!oqJ>)$VLxl|5R^1!Ys>E^<)2fs7F*rPkH?q`_r)b4(?(C=Y*LdE`+D_ z%R=C&@O^v&+Sn@>zgAJ>&(3X!PaFkGO5@WDUD0%}XnJp!;?E}j{VT4&V7&kEMhKZ1 z8w2fu)`ma_O^`Li!B*c82!iMW?3`>Ifkphmk4rZpc65`iep`~U%fAV3Hp3=jc`0>l8~011F3KnfrYkO9a7&0_*_x00)30zzN_CZ~?di+yL%Gj7%&5gI~C2 z5E~k3X=!HbUU3RHS|Cu?LYMCzj(ucqYVFsF8`lyonJ3B|27@{3snt5B>ySe@=vSIuNMCD z>VSaGtRTP9FMRZ`^VXQ$F(|>`cnL*pkEWcpWAdoaGGZ7~v2wDvSOS5zS zDcJXG%?3Kp0>VSHfgsuJAS5&!2q?`7+GhI&mj?Bb4fOi=uYUj9{%ieLU;cV_5L+B{ z9)y|(^@E8MG$y~0(~PX3euF^Opmtd}m_U$f5G0%97n1r{d!X|mh&2lcv&{?wX)}YK zgBi5X3hEyVX#ZDVeyv%4^&bSl{?#56GYDb*yPf|&7K{v_6Td(H(-nUm|JCDP3lj(+ z{%iSt{6CEDU-$g~y#|fq|KakI6sO@A)wkETvavRjv$vsB0Gc>i>f3|fsQ(*CTggV* z8uXPn0)nRHANu)UQyX;PmwqYy3%CCF$^N%`J%9Xpf9!DowCDZD#z6+W|KQU5Rcz>& zDd0c2^w|E!muLSke0k8^qhkhDjb!}w!O8e9zC1hAe=+It8`&5DiT)ZABG8!p-Khs6 zwf~bc&&kdDfNlvM_#-+%P}w-Elh`B&WdZ}H)GB?oTqm##$aiw; z%<6y+x9yia;-fCq^;j?_Oi>9;Uvl-c^w+fY|g5{l^%+eoA{ADhIzOMa2*3M8$l?{(L)Tiag`x%c-{?TW{!+c5sVch-Q=HF$29aMGfpT#B^S^sw#`1@r0TcLsfwb;b(LJ9xgu*=TzH!1(;sQg{F z{}So{SM?8A{${5BcX=oP=xS)GZv_gB|1qxw1=oL*R1&d)60U!nBNDN*{YeXnI2ixR z3jeQ@Jt9U%Q0nzx(>+kK#|BadLo+i+GfPm^`g_g?O7{MdQ2*AK{~=ZTzcE&W%53~6 zWA%UkKhgcEL-K19|9}2>ff9#*eMy`Q96>qc?^*aSXB->bFE_lIB`72PRei+~C%h2S?6YM9Ko*wNn z+jZNI8Mj(?%!QJmFox`6LcwnI^DET)arV02GUL%W;ZnSQ)^eu3@%ng~k>0kz=}~c` zdDQSz11{xy6!C3}l*smWL%-GP%g<)%lu{{UGjSQ75=VJjike0u4~n3Iaz=RjthTkVoPJ#PqsIAv(T!`xmDM*t3_;>;nK;>4HfH+evCm97_0 znd_%xs3}QofKIFJLo=DXwv3sIwPW_@u_0h}j-h0=q&hIKR7%EroO|jhEIh|Ws-rh* zJ$7Uqc#%)x(iVRw!$S<%60#WtcA&Re9)txF((B-5sK;GBK3BVVYhLRfiegvhI3RG` zHnyQ?>fExf*tYuh&6I0?xMvX9qlVl`ctdeg(6=G`3y_GJ-Y%9stb59r~CSRIq z>5wc{csQb8%3FPlT=IGHG@6L)4RO3UYA6eP#I+|*C_i}{mw&A(w3!)>8C~f0kV9^7 zO0MHuaXu2dG-w-qs;KW2Yh*eaGV9{Iu@w`GJUbd{`Z!o@*HVJ6#&>femnn2|1Emwj zGsc>Gw3#*D<2g-%4zj$OH^+uy51cElbyxjgH!zzR6p*po`Mmh~w8eR^w&$_^0bUQ& zjHzUY@r5=A;roemIavcBbTl3_p31Y77&qpt5;7{bj8U+WiUnuq2WTIH{5q(hzXMwb>nUuZ8KkF*pcJH2z~{tfc@9oxFOFEk zyH%~Kecd+6%e+TV*_*y`g?DH8cY1sNm?52wo4$Ph@R48BLvw~Nr!WgLZ?hs8o}Uqy zV!$uD~y3? zCyXZ(Y$iNJv<_sIULR~bxF>3~&*zFo1eMJyW-7*tH*EJUSNa>D)s>Jt;%MrIt+-|@ zoI|PixpxrYeY7===LGhS+EW{)&VVTSOq79oYjl_Ln{X{}0+hrPn+J)(QlV1^fQJc9 z#1f-6MDNJ?K0kl*d4*94l_u$~>1m8*^DJqk_e_ZU9w^rah7N|M`Q~4T zwXAbbss`Un`}k4L71X$81^2{e(cNz8oTKPvt$*}5+ckXf4^XTqd!cl4!h=9>Q9@>B znPz6XhO&RK{fXyE-;VmV$?-jW65XAxuDljjz(FzNdu>CxG)Kh71v&g#St26x?4}|- z3zAH8^ZrU>jMK6r8{UJ{1-0)YfmmU(Nroe6o+?63-KJHucU`5ylpm^0!dOt@bjqRp zDt68~Wno)PP$>cTEL0z{`-&~83kdMIIo7#-uWv3~^7o9-s09=ylXiiyc_jD?1^%fk z!5YY<=kX)YkM*80ZO&fQ!>bLN3K0o#$92l4(uuX1k(B}9<1Y~DiWH~K(O&*KT&~Y) zXZsD#$P^s7i6VhLCV`ux6lrHj+PPn)2{jns$N1p8F$qA|2+mf@v2uueNvz>#i?m*h z+H3^0Mq!JK<;?2_QG}fJ%?6}Y5^DAC1s@r2V_!gRaT^C^ch;W^GE?zgrTP01Ka+hx z3NXGP^&xhVMPZi|58Z>a5KS#=p-o-~?>-d7NWE`&D-5z$NS$qNRd50mBuz*#@eH!* zys3@0v+oxD05V~hhZNDxOe;}K8L05{1`&9@^1VTjYFXY_R=cFFh0p0X$Vz*^ergy& zLqyV=Gyd(2h=GLXJG&_-mr~SB9j ztNC0BVHKJ*az=u{F^&-k%^TDrLilw*^iN8(vS@uia1;mtr}k#QNrF*Oc$0qiCX>(T zy&B5$DdSluEguY{l569gQxUE3(89D{tb#HfxnJEH>MRQ4PxI*UNU*DNXc(BOEdD(; zz_b0~#d{~jCV8`)1L9<-(QBhSxaaPd_BL-3FNt(B_G)_mqV?$FIj$<@wZJK4eP=2U zR-^8~S^8jcA4p%}g>s{|XwnMuGBw@9PrA{54Fcc-`2!EA$xeHE#^3~@9WfmrA(+|K z<>5KBaFbKt6TL1h=x3!V63Sg9otxa2sr!02(j%kv5OZb1tcSq>oL$t%P7obLOY*?r zGR=}J8_Z7>{G}kuB$lvl@%(zyY(A@kok%iRIAVC6pX3Bd4o-{}ohg445#}|nUh+7S zeRv>-p()=o1h3Ja1AReL`;XClQxe#3JS}qZE!&andx|zi2BndnOr0|-p`}<_)b|uq zzmb)yCB-W14W{6e&gs1k&lVTtCSM3m4nGGKFvrtUyl$3C%{D;4D}Q*e%P}{(l=tcL z8_MjK4m^CmEoBG@ocZwidS_jGXeX5v{`?P_sf0;c{U#(FeTOj2ev}`S9zCqVL0$P0 zN5cOq+t;vF(J6CI=S0)abQCGkF4U=P?%l6B>Z4cV{-8-3zyp?Iw>=ZhY=x#*Jqp+%UCSM&6b`iS5 zQT3WPx_P4vIL*jvsXovpAa0k4wFU4==@@_Fqcto>Zx!C&Y=%)+DBV#QbNy5$5 z#7kzDl?~kUS}V`Jpg&x1cX06C#j|71)ROzH?_Ch9G)P$HtlkO+=HHt6~{4 zabKcpwUyTEWfdn-L=hN!TVfj7dqMI|6_$+wn@MFW|6HQ3St3-46*l-zbo~u9p5=ra z?UBE3pmJK`19bLKtEPbD2T5MjUP|S0GR;QyL%C)|K2f1+c@G#qSTxoyvPtj*Rg0eMhwkXmJ ztg(;Shbua1ldZ@SF$ z+r=mA%eyg@K=}zqS>M{pGD8wx+M}m75V_7?M%!LKTuk&cPlb+dl{#Ise;QqWFrL4E zln7d;E>S7^ASGOF_bK6R`ga|2BE%Qutq3onOA>!5B7&zHM#S{gRM|-MG>gc>e%iA6 z!am`^74;?PCdCs5{=MkCG;g7CQAfOznLf&K*XFi;rz#F@{KTARq@%(uv(n&Z#%&(k z)N6u3)(J65HeCE=LNF0iZmY>Mc1IEu5(50blG#G_gCaI{x-#FD8~zM+W4R-ukGiF6 z{&MGgp$43}NC;*N3SZ6R1(#um1uuF}o#lnptqRgG^90|r$ zoFGD_Fs@+lFi9&T;w(Xn(USa#7OZnfV}<`xF;oFyj8NN(vxO3+P@Ts764q~+6h%mA z)M>_+r#>XME>D61@;>MF`#FDXMHy~uqjqT$Ec|RRub^ojfT@B}UJ@~()ou)tQ0q?> zOKhJw=X8MRdaw$IA!C7Xmo5!iytVx%8QyQk^YS~CoX53Z`9ZzZ0IcYj_+X@BAzyy`?xX1U_F_u-mu; zNd>XN6!=)`>P2+w4c{Z%Y=q<+eOC!V&FWn9;jrC123}9^k#?yBki3odvuPO&E)VuK z%nF>XMfA2NZ?;rMCa4N*Z!XAvJzmPH@(!BHsvcsX{KQ_-imHFrngc!SN^09;0m=0a z_6|RWK4OR|TNyfS*q7s>3gh8yDL}nx}~wvQUT!>$&ZhB zq^3Ou9*`tL^ffK3b9KHBrklq<&S2cL^1sYCiv(no@!iw&eRM@4`-%*)2d5=rkFg|9 zDWek`saQXC`+zQsl6kJp-BXFL#KswyHoko(I_w(R1!hrD2Mxst@hM8DpuyH}3DKLe zZk{%F2y+y~Hv)7tl6*Ncx8Yg+1bcH^yT}XsL%UU<%&`s|5ppOi0$qReOfT%v39nUx zBFjbS==LTFS@*MFWZ4apm_wRg0h;omv_1E>1yU`dQN#BSWK}!yQ+JU-!X$w27g4eA zsqn$?n(<@(Dh3A@PJ5CBN;r8w5N>cczG?T zjrhwjhE1OY(kYBzCqK_FyXj`DMTsS9nkwwm==K{-~DEJysA>Q={Y~*w{ ztQ3QVv&~hJ#Oq3)KO+@PH!%#VPaV8@k;EL0$reX+{88+8$bAYRH(AN$HrOGcN=>)WaLMkAN?kd~jdp%6Ym+I;i& zdU{#lrS$x^v;0Qy4!|ePzCy@0)uv1^G@mzedxdk3+16cLsV}EFvM)wzz+~|qr?^DV z#;9Grne4rf!>c`|C}kWxD%ik+MyN(DUOZk=jBQ{5-D-0-DPkkx>dV0Br^!Q)i-UIr zi>r|HDAFF4pK85tkknW#S0b(SO7G_Ai=wy>A5`th@R7ZMwr`lhMa z9Bsq&xy~Acpvp|jUWDH)P{?o4Xgr8o=@9#!Qtc5fSIZn^SGU7>?B+S@EIvzJ^S-wo z12L&=Cje-~jDR3vA7XxG!Z3Z2$ZTp6u8_iv;n62$m!MIms?JhpuMr6zZ_6g2$2y*O z*?6Cl7ZLgRHjpPnC|F$@+2wIl%;t?b%1^dhqDW^uOo>n|!c2`G3KU&ApwV&UU3Gy}sx68<#0<^Jc2tYWSyVm4JL(!lL$VXe zwGrXmiEuax{9#LXd1~N6a|~ zQ`gL>Xq9|Z5|MM8+FNoE><;q;vU$*jcY0k4fnnc<%sq#qgAvQhXKY_;pJX3j~iS)h;^z}s0viw zKKwLnh)O>)>@;M{kS;a+o|KCLkCwMCBUClzj9XgxKJYkl{&V#Dhx5Ju@}r=1|?s_XA3o+ z;Jx|i?mLdTpp4%&a@rB3@;IB<9 zMGBbSN`SM2x!ZXEeGB269up!Wdgh=6`Ui@vwEFLDc}vK2sz~{nf*R4O6JAj|ZR;=o z7dVc637@LK9N_1KEn`#|oS06(mRyaz zmL5y_g(#7vK`_vqHo50}0Hv}D0SEN1_5F6uOsw7yxHta~Yi|M7*0%0%LveSCyGzmF zuEpKm-QA(M7k77SaWC%f?oNw46#1unAL%(~pL_54#y2t&Le|P$GjnBSWaam~&y?x1 z{VbrL6ra&j0o`9-NfQccS#D!vC3pgvrW~0}zZ7DZXe_L4(l!vj{%9-T>KT-ltBp&wbYMZIAl-FH*)XJeENf)7TPeW;#ET6@^fXJhNT@F{{Oal|dbH4^#9 zBTW;Z_&_@BVcliCT~{Aj2~wYg`t7#GWpzV0L9&s9HI25L$v=M2sHh!PaHpndqJ}=o z$QVFcAZC+R%@f(|2W%e;IW2(hQKdrZy1Qco^fNB1wv%Y=f|1f5win_s(FYh)ddL<9 z`}ai}0)}orG-2a|J9U5%a%ciRGzOLgY{|jx#@m};qMFMoy2e4rmE+5}COV4pX!gLx z$%<{XtT|$gwSm0v&F>6UE6c~z;7ggPG;3tVcgy@X(d_n!<9-YKO=DS0S%G@z7)v!K zV7$1Ow5*7bvXA+$(8PfQT24W2mtq0}3HJRa*vW-1Qd3r7pIwX$EeUE+Qt8mAfV^z3 zzN(zYsCTkqgWc~b!)uS_QnbEiaU(6g-?Du;GeVY4N}?I1JvtFHT|I7NpFm*I=Bv=v zfuSDR7d5%rIdgpLsyh3bg3V6g;_LLxpD20Iw@=2rQ|EffgwohI>rj8^IjMq9V1?td z@ObR1g0I!JkAcdIm(j#UNwAXD>FJ9@qTHrUP`4?Z+4kNxKwHR-An)fLeT_wb=Z}q9 zCag+v9xf*F7{w1^3}^cRk$&s$4y((SzJ)x>(0;IY{#A4N+Nur`Ov=Q_YA8Xl^1u5G$0WFBqgOS<5QJnp$ew6lRoFm6hYG-^;|LNbS|a zGe#~@Cc6hg(*i6?K!V-$QGedpE#2DM<%Z~&f0l3_v2EX8ny_QL6x#A8Q}=}C@q>H? zp(BQFX7~ANN?=I@OI(72bF+wSx;VeLWdN!C)^VkCNdWDt)>mw2bV*R^E4QmcISUTtU$nLjE#y1^g~r{3CPyS5!k*ROVkf zkv}7>|CYi6V6th_0RA1<_>*Nb1(F%oKy1SZ2yFoQHz28D00cN3fn~Ij^7KW7pgXE60&epo0L4<}$d8yf*CmyPvOpX)}Ot1nxEo7rurm@MZ)#n1LucuOBR^e_i+A9k&7)N-a#y1T`*)cd7{ojH4Cx;FFBkW;YX4ZV-(8+ z@0+)(ecSJaBs>&zqc+7}A~26DxdO8M8v70Yii?H|V#6B8S-mKnGs ze)E*e3QGOMQ!Zm-Y~f<_w}|+EI=+~J$Jd`Q)?fO{Ie$l?7=K5hn3*~L<|}6h;%J;~ ztpCIw*jRtZ9#rjYZB3k%mH+J0zwi%0%<~`o0}!ZG{uMv}>c)S;py-(ZzY!2X0P8=q zYeyH8zi8zTcJN=4btYh{{dW$M{nzOJ^@WvI zEWo|V2HZ7l%uGbgY`=OA-~_UZKuCoX*h@C%zg>ZA{~|wuOId)FB^whF8<2hk0D!&t z#S#La_v>8&_~Y~ZpIiOE+yngT2Mg10P>HO()c^3#{Qr(F{3mV2&dB~(A5DLg{4xOn zOHNkS-^qm&PY-Y0#jH&)JK4-YFM%D%us|ZjPeh;>kaGSdA0to&*U?2K6Gh^)(b89B-YL-$G2s!B+?6Itj+KV-#ul3 zQYj&_XWY%6>FsYBY-D&`Z=658egQ=hgSMFB6v?ZxS=~h-e7HI1+8Vjfjh^^0L8r#c za%~0;ku3u4=is^@mC^Z0H^>+KOzSWOiNW<|qX}u?8+4o;AzugE+s+q$J&~}`nwP1# zmNenbm$rZ=6j(p3gOZpoh<(r^6yonGj9)lw-A!HY+j{hfMSg6p#Ktm=PdLALZXMeH zV6J=|*ctoIY*Ku4@r;ss&c{^8vFJ0|WQh!0)${UJ)9(BveT>i?Cn+E}nChX)3wir43nd1@1xXk&BeY%b*!5A-upRY^-Wdg7 z_RKqdYpht_u*ewPJ!^ZKQQ!V9^^I-vhIP!)P7(I74YLv>oijHLK{%A*Yc2kQKY8)u zA}uNEg|?4{&w3+b=8&3qwiTAj2au8(ypc^e1hc_CEsdN(3Y`lNZ-QK-*7pmlA|Z|M zpZrl{MZ&L;B9$973N4A`$Rm}n{Ui!k_{9o)2+0-K7f9y8#t4^M3f%RKZ7!%pn0fnO#>4$^qw=E{yeEg8s1Q9wom(pff)X@g}`b zXnRD+FuP=DA0gcfx*s$`&!fsS^Y<=>r0nk4yx0VxV}K(Lj4>AWu!i|+z=8%kk(s1u zZ5Vi^2v;Qyuhc;9SAlo88mV6Ij&rGpmS=t#L+sr%YS;A;z?DXffzUhbRyY^LLt{{Gmd9u*|Pyl0DC-d!lm`vy7@w%Fr`WGR)G&mcgoUC6L$XIBOBQe){n$qlGuSJO$_|Av z@0+)|BgCrY4o83E%$~#xgoXM?d!R!4t={tWcv`cChU> zTs8B~;_K2E9t3m<5K=$kOU62!2GfG}WlO{~mV@>debe`2R;GpnYwgt}$g;@6xt}o| zdlI`~tI-DwVq)Cx&*lXy-P7w;Z?Q6SxESS#vc&jvp@5@eeJco&~ z+T_kRS7{?gf4aJ4^rO*rSe=U_nswatWXBTN@Vy@Ohb}VkUK~M$UvYTr1Py%^GE^<= zL64-CR+>rn6lU=z`w+!PR2V3!*IdoT|5PZSBrC>>uHi5tuUV(#SYE_V{L?+nP_VYU zGTKc;hgfYO$qhsM;U?DGCmhenkH&*o@QiKnGe-;b-_BfQ^rD- z3T@R&qq$ck3ubwh>%J=im@mx3P6c}4l{v{O^JeXgP%~x?`BJ>?aD#M1H9gimyGQ{- z``~vN59aLlk}ZSxJXQod-CP}cjhO5plFq24E=2g@@7Hge&pbsr5%9^fV8OZV(`e~I z8^`kdFjWjj2LWWbio+pSQ-{$g`keT4hA|ELcIPV{vPq3i6;2uP_ef(Vii55$R?r4Ba&vwNrpVXq`c5~tr+Tf_@a&+Kq) zk)vzkFjd73B>OppR888aQR=BK>1=VK0WE;??_p}hj5xYq`5MT`<18Oq;lt!fP*ltS ztn{cwVM*2PQGHzccb@Hh+Y-eI7CFEW!Nkx;}IE&JUUnePR4pI17f| zxkVNfo{wa&9tu1yQN4ZEOsVB`g%7+_Au#oqE=#mAh8p+nZv9dmUyl$xXE!q4Mn*lm zYpZ3$tJqDxc)8UTjt)tHB~mHGS0@ZHBY=a+M9ZM&XJWAlrXuvy^yqRl2DjN=rci|u7XghEU3~kHwozx?wp7=gaP@ze96xClx z>{F;xrApgCqtJF8Mn(;_bfbcOi=8;hHZHD85)>I0r%#4IELu!r4Nj_SHXrPat)r_p zRRh-wz@IiqDULgIAZ6Tdh4_dup@?cE2*Xp$1cIiI9iSgo4pMIY$ZSuBUc=#Z>_lOr zav0!hW~Nmz?CmKoRS;2p!6iETB^kd;m@xGR1{Fk+D?A;-;|xGk^&2DWOu-jZes{ma z4Ma*+b?^E6_5FKl=k{#&3j8unE9WO~!A0v8hkN&m27o}l6R*>CE|AESn zDG-`-sj5;uN5*bYA4BAfpe(NJ36?{=a!_0gV|bABslE@8^ZG8&%_Q7=te|$RPe$eV z6z3etK-L;toZ&|zDl!a90 z$y1??gu)WL64zsr5LebweDj|9Av!#c*;-`HzD#L_5+MJ%^s<=2q)bxn6Piea9G}e= zgxp;E1g(eo`S#gF5k9rDyg2EysR}h!)&lVg z+E16Kb)!x1?PZF^ddrZQ-_EX+F?+LDL$&8^SX#b-X}IY;cW{4e@T|&aFS{~wcQAMK z`pUF~NiYufS#ojv2Tra;;94n7MVS~5d$Bo&eQq4bXAOV#IBBo%S@oO}kEH{MT%dxz zdt|0HuhUuXsoUs0KZlh3JY%P~YjA72jl1Y33tyw>-`}aBM4)3dQ_QE8=UMgmhQQ4| zQI(+!bkCd*{YXT$rw}#zrb0MlcH`kAIQijd@kS)J>Us@UoI`f+lXm*3gA(4TAbi~h zPPAZ>o9*+ZPL#cowetFldDqJRq**$KmTQyp+uDxbA$_(!Bvw6wPZ-~_);iQ+=PK>kc1$A zqZ!46CoGG6@8Vm$QBaU(Bg(e`EK#sQr$?l(K6&oKRf`ow!kQk4e$nL>NKZz@t*L!} zqjO>}0Z&}5OYqI+U2L735rH+DQJosa+2x>~cpr228w8>Q-;d0-1LpxZnduRr=x*oh zo2nO+e|s8kxD`y#Q?{J9;}7nM`hELfNDF@9O8uMlbS0Ulj*EiyxL=rLOA;Ia9+}eJf=aNjnSh%dzn<9A7*d{I)PKe7B#_U-IfDK7j3DF7NSPGVvtZZDobLf{%DyxLc|?+^9Z*W5q8SxNJ?Qh5XkP9?!)&q^%B5bvOBh{pR? z$Id8XfISX(4!kGuz|RmN9j&d4{REhcSEoS*T@wm`Zs=tx5`LJN8EsNk$K%L%cqY$V zy51uWL;ISvLE^b11TzQ5DcFjj0x0!pn#XrETk~-19{w zR1fErELEe`1>`YkRpevA&9!d@|K8-o z_3Nh`or|xJ;e^z;iev_~e6si1`fPbEnfigfQpH)yGp%C@qiXt_6YxMvO#Jnf&?abLLFBmlO~ixJ-6 z%**!`*NczzXH!5l#I|UmS6uTptQ{klq8cN{<=?b4Vwa`Uj=0wE+1ex=eh|^CO}$k+ zch?x6SviwyOJ;}Sj3!AlHPw|MRr&PfqplXG;X}FTAS6Es)H1ziqL^vL4|aNgCH}KL z{yDnHZJ0#eA7x(h>QKdX!?q#x1lwyvx4I7Q4!~VQiV-ZW}0^^E^??Wp!n_*@F(Bb`O_6BqUEmjdw_MX*%UtUp?XgMhV|K*D8xw z-+j|D1V78^eZZ50lXbO)shb)pAzLKM7n&Wmk>_^d9-@1iJ<;`L$PELRAUtgG4F&sZ zxEKJG15s~s{5=V^C+?CX)so~{_PwsAJjO+PWBnPQ(QpYKQ%d>(Qn^f;PL-Q?Pbu(M zj|v3t3>%ab|Fo>t8yN?mQd+)t9(kwjwXSJCq%-_8jP~Qtdu{J78W3@+^W+!um5K0e z$k}LX1K?OLxO7J=XdZ*K8$JosipSO?ku68e>M}YVPoaYTY&LeRa?^EFA75w&duO9q zp+ZBkgwx2}6T}#kv&y3UV=aMJ(^LsI#+U} zO#c#AEnEnCPHnMJnKVrfP2p1ToMuGfXJTmchQKaXYx44Sh>qZ;^Dz>DN-XX zPhv+~h0-rC=3SeF>E~CM?P3h(j~GeBi>RxBM8%4m@M&XTP4FC9gVTwH=jz7MYUd4& zb7h*K;f({tY+`gUG0&=EE1I-)?bHm(9bfUj1rK*Bx8~I>dls>TnC}xofwyIBm8=U0 zg{E%%+~%FShsE4i@tEMq;_vFW#BMd3W+63Fli(b%KTKk9xCUr}brEIk*;rTp#H=4( zq3Xm5D2$PEWel%91Uv=Ji%p2dl;vZ@N9c8;&CswO;^@S1L+aq8&$?>?-;40B`mzSN<-W*%iSISD zbC*yF4*iy-tyLvJgIJatEo3=cQ7tQglyt|08jzjfw)WO{pF`EL?sTU`+E2LMU(y+s zQ$7Ti)Hs$DJU?HzuZ?{mKiU@_UrLHADbl21^I!~h*>1YxU*oyj3@oYbLCQNfkJTR|mqSMhl?+)*p8y*X} zRn!VpzV1*Pby=JYqvx18{zR-tb6PSRZp6^b%?P2mz6^|n@#DyESZWAF$>aN>mdC>65K?P*7)_Ad0ktZRK@CWW~cjR|MlC> zE0mkM;bVv~pXElAUk6C`_U#OaJ0ztt2Qh1=3^w>A=2x^h0j%qGkA7*6I&;MI*@H}v zk+F1Qx>WUmekxz7MiQwAsgbggVl_R!GUF7zj1IMCD^=m-8s}bRJ)tUQR%VfGrN-VphIZh0!?F26S*LkUn|riq>1cU8T{Q4GAb*12v()Dw;#l5qPp!KG%y zTSBJWGv#eZ__3wj8SI=wFL;F|tBNV&$uin9TW=d?Fw*<8+%>0fgqg=!SgGchkTF!Q zy=n)Y2&=`>XIH~8lS=fdcNUyO!wS)c^lBQ@mIn2ooh|c3>~S7eI1M&@V?9EvS;{R6 z{XN^Eyb9D?&XRMHEpTBb@ptdTzr3%kyU?}mh;bs3=! z*YT~Y(aAVhrh;&_iCg&KAb^BQ?IS~3hlWFS(7LiiyIO+Z2@m4h<>4n;sXFH~TScAc zc;)D}cLbm6P>a{MybcYrs&5Vi%Wrxs@uh7?*^!#)+RMBSc?p%MFwjLmxf%5zOKE0> z$oF;LRf|ncvEqM&iBe7JWh zD$T2Af(p3~0VrWrTlrB^#5V)$1@ZaAs24JX*D!UMvcs^bJkGnp;+=8z*KiW`s!Eqw zJa}BqRxibkRsMi^O+deV;Qd-fo!Tn6svYtXEge7Oo(`YerjXpF=*}01B`a<8vyMwz zv!QZ-^uYMLH;9Y!z!!`m=mrWyBJ>$}tyh)O=M3Z!%~`O*P7?o2Oh7*(Xj^3LdG}!B zIX&My0>5{iGGmDl)ZJ~GwUYUQmI$h|kcj=eE+$G{ATJ|!G}1+*j?IU4JJ7g@*9qLp z{Y_ug#Z&E5eg}hLAC|f zs;`I!MWBpH!Kp3>(CYAXy@fA7*JHTSyawfDDr@LdHYU5L0}dIy=MHx>3@FRMu-{$F z;i;C=SWepAA{V z^pl^ZV)|}+31IV~ASS+X`;9OIiOhsf{Z(ffyoLD29>9wElHfOY5Fi^HMNubOud1?o zl4J$YpU%?^B7yGzfrcP4mnd0q5KY;tV5jHzfuE6sHA<{0I$F+JoZD3vquA|qqwbz? z)$x(+$?Umcy2SXy+LhgfEjrjvn>^BYaWHdunfxqseocYVBUk5P8#iuA^5eJN+^g~w zv)k@U16Jb6biu(X>Klg9I!Ry!V9eWH?=YdP>dmEiS?)~+KZkJmSw~BH+4H8vm6I#h zHf)Nkvfgps6k)Qw0Bxb)gRnS_&oMtL!IvADnfyaqA6S#A(ImcT=9x~uVIRz=w6(SH z79|$51H=}jFD;bGh#zhl@Cop7ftI`S)fVTSzP01w;kXuIxF&irsEIK=z0?=}Z=sIn zh*|!wuzTK+6QKfdP}4Zxa=GM3^Z^6OQwFTCnz*0rN~09;k4#{)Qs?h&0 zT|a-MwZB#Q|0+@cd&Uh+b(w()_5aBP19aE?>G=8Y-k$$!I{;u?|5z93)&Xz;ljdJ; zonOiG|8xbe!@*fTye}I31%YG&O07fQYO3wDjW52e?0<^|3vjOvTpr?ox z_au4&L1F; zBE#Qh4nY6SFB0LejXQu}i~dEO@oyNHkPNMwg{_$}@aptW*Uw)cV!t3RAY=j@i2thF zVf~Ha0wPww2#`PA8jL`|gb5hiv;5)`I641uz;OWeIlor=8^HCCuKdoH{O_a|vi?Cq^hY<>}Kj0|#)Kw%khl&Su{IyD1OtpxOg zIeJk2p%?A@!u}Zce|OUS`ds@Dqr*Qa2{s^G^e>QvI)c5@ViMnd zhu$#cn?5dsWG`BTP6Yj%097YbPa}L|sD3pXSv*}l{Uasx-bf4@CEYHa1aYm!`hZM{ z1zILsp@98Ul!PU-^JsCfCuN&Vn#4-6al&hJf-J6Ex~+NZD$JSNX2Q2rHVf{$y4i^v zd_UkEoD(gF*-n0iv}mOHtlvq)M;h6ZKQMGMrUf0)*#pmSnl7b}FLy=gLO*H%e^h8Z z%s8)P37>-`@leyMY;xK7$}J?KF*V(BXU=hD2c?w}hM6t$v*1+Tn8Dun(-8Fud;R%w zM@b{|Bk~FZnnbAKWwO1kj4h0UE7L%8HKn&)iE~9O{0r2U-3h{Z_$!;$4}1~0jes{Z zZnWu%s?Dd15BZNx1?wWxZP^I%pR_yZ{czLUv1L()KfVvS_h@9rfqe8edA8J~HL;SY})3TUjQx#^TI0Q_6K~PO9iJ_(UytX_S4_$(EjQ(WQ*?N& z*PrSfu3O^9#Eng)ut?JwatZ<=2-BFu>;HJv8G%^GP|bA5bLAEHt>=A#Wrktt#>5qf zUt-Py!owNUlDIH?;%}YaA^gW%ltH=@_eM^-88YJW(6B8m(1iRilf7P#3|=;R6#3s zK!rh*|0iooxEkKd$aNO2>4Xz%*QhKp`mg>SlOJjbYxJu1G;cnrc@Qw9SA7j&zry!s z_Y3li@eAOO#^)TEygI*LRM;i!jKY~Mw5C>T)xDAe(P||I>Vl-tjy>ACMe39!f2)?13l95Z~ zCn2#C*cZ%w%e%*#W7FM(BCeXGS`kT4a-M3A^547zTt7A`NLwV&)HfYr{fIv|lam5C z$H!Rmo>Zd87Z(;t2DDCO%e|I53;mcETFDr?!9O-A(xElLP4ab(vg-<$t+u(rbxnIk zA$7YpaSkBJ7p@F-#+i|;_295Nd^BA6>aD;+JBiyy46Q;45iRoBQ zO7?;CQF{3hs+sc1{ag@y9i#C`aQ1k{xBOEWVU!L@6lR1{%Y&y>u^~s61J9?eWzXo6 z$-A3z&su3C-l}^{T;EuOSMi2HEHmyV2qMBSci;$4Bk@h@wc6%@gS>6mg3#?ryRU50 zn9R?nGICxsgymxG)2wDmB{bh}FlS3y5Dan1>IP;xM=WVl$uDr;Rup8Pc#KUJJj!28 zt4cHr^(7%*?fa~kFfY{F*3NR9mW+WBmT3Y{lBrnSzL3fSW3i@*>jU9$ljZ||6kZY;-BFKF<5aVX_%QHUEtU;C(EFS!*OJNN@Ij7|W*iICq zA8MBtLSHp;9qr~L%@7qms5LPxF;`L7G*&feQ1guR8uOGhD>hg#8Yw0Am+fvSN_A|~ zs&ss7j!mCt{MiU`(kM9oMQM+g9yXnajPB5suB8cDYBS2D(Q7F1)H}UTlyPwm&g_ku z`5N4Y6MPhe<$S}$-#m#FYDs1 zVRf+chSdxf^KtMry~^QBKMJnjh#aPGg4)mOvBXo7y(oU1)pu4MVr~~NK5slnn5ieycR<>0?*P1sok~%Yl%B#L)!tq)dExfk1q|TogT)#7nruQIyQ2G2p zAu>^l{)r;uVWzAY5@2k0+%Z1D@pe=;KH80_9+g$UJj=#yTW7@fvv$10xQ^1=wa>JH zZPmI?hOMGLZPFBjP0Owhz@}tFu_|4QeQg8bhtLfE4D#^d0%41DOJj?+3)&u)1JWCt z;~fto4k&#uR`s$H8@FX0rOjRQc)3mEv?=?tb;CGo1~uC*8)**G zv&t5R{<{ZEdr%G}ZwwBED9}le-ma1WU7}hKj~LRy8cX}k+Xu^rZp!-Z(1z~b6@6{o zD2u?V6@6vgb{*WcG6cwmZhzOn4iWa7AGbelL_IsQOAe2gJ&XDD1C%M_SpayFf^V#txR)cq*yC}ZB#)-k>kUKlsZl!;}&3y0F# znQ;ig%J99YrtJ?D9HD*crSy}n=*YXLqc^Si*z47w+W3%>KE)=)ZEgV->^e1bP^W}Y z-_Ey2_=Jq%Gu0dMx)%D#Ez*JzppZoqsM56R9aX}qAUCv+sCr=Hs;b^!<#c%N#>;@_ zYgn?~#*UxT;^EKe!S2Zpi`G#SWYN)lSS0=UbFoEdvd)NFiDFJ8Rr2{upIgRU=%go% zsHZpf%BZw&nos!0Yzh-iu3leBWls|trwF!Z)bp!a42`qOcW%jTa{2d996H1%JASJ7 z!)QBg&OurG=flTgN!I{FZw%RrK22nOSigM}xG9$)_O7yR-b)5NnrH3+n%80pp5vRL zlW%1SROC{LvB~tKpOK1;F|O<-7t9f&dlQVIH2Djgl$c2ab)<(g59+YLiI`Y(k&h}5 zNGa9AdZ)1HT01)GiJdzW;XqwSlRaVEsaixwkqZ*FC07=8 zkalArFAZEN&1$`zedCaiq1F{19nOeX6>5UuqrZq!dOv0P81V`tLKV;+XGjzXG&_E; z)l|5kYWKW|QO|zk7Fs@m-k$;xC&;>E&xJKJwZbuR5uJ(#8Jb%WH$00PtxF>)$GVZ% zGUVf5Y{0#JjBwN7U15}s>N&bCY5(>%`6^Q?Jr;6`-7URlGmjlO2Z=Qm>56p};)lhj zuwrz(j*z8ZgrwWlJa1*1EOnyvV3aId_2I``QqRQCBQLY-#7alJWRiq@GeZ(-V|3HR?oZ@R#WBfN3l?7#dW2zdVfk5kpZ)u%86 z#n1nFdh`1kjk1D_To5CA`!(%`Lv-l7cZNb7Ljys9gmLp;7K9&3im2_kHh&WI0|+Eb zluV1WBFgy|P1Ob3TO$eJfmU<&Y_@}o5?otBB1;NclIy7rYa?1Bp5 zJ6UXp{WkWVlD56L$X{g(aHWw-q;4)HMCvquMw6yP2vJE*EkWdaCf|w1Kz}mvTQjMH zzU+vJ*^=0`E)t@YiIwj&fDw%$&z*j||1?LtBI_gZ{(-;uGeu9$Ak*&HZj^occ`8Lu z)nKfNz(%Ol-H&6^h*Su-BYgEFk)VXoEF$S3lFX;5LPNcAk;Cyx5o5ZRdjf1JN1wIu z2|N|?cBDNm$J@o8x$k%`EuE9P*eL+4cD}qUI=5cZ2cTp8LiKa+Uyt=~wLt$+PX78O zO89T*jzDuGfbD-7`zUo7b#%4Hv*I#K0qdkj`L>T3B!=h({%|C@&=Djg8Kvf6LSUax zB6G!}nZEl&qX8l*y74tcK;gipa2&u;kkK&!QQ>V0J0ZJe6E+m*su>-DT`e>mMRe%*zD2ihV2qyps~O!LKC$#WNSZTNfa@q=~9dAgU!pNht-!RtlGsNEeBCBV!I1`4E??DQPWDmXj)>O@_)IZX6QVcTFnME)q{4N7r+hK==7Uf=vRZ zERt12lfs6DBuWfRh6R?{lG&3ugPJyRoteO@eZ4smOU7GDo4iT_i8=E*sxmQSIAt_; zxNT1#)v$KjI7gytSV{?ZmSdK*SpUGlb*i$v(yl8Ev>QwjY7c1(k~OU@<9+%j?h%{) zV3%pXvuMap>CSj=O&|}X5Bt%Een$5Xs7+i$0GZFn{?B}H3qm%RN&PlOY0T1TdDe=r zY^?T2(>zsE6-ky2pQ==g8_*q{L7(tYVW-Gp$NksAc}U{`mW2Y|Q|IwNhV6TK#{?eI z&?gjk@KJNnVTrLDrMjI=1g{Rs&k*bDb&y%Wh z_tZ+C$}4HIiE{D$)W7?_B8?kuBv#JDsorO?>XV*WQ2d6+^#a5;xp}3$P!?Y^ovFgc z8MQeUuAc#do2ZJ`(##N*^N-phf@i=`bQWbqAu!8Orl)BbLfkY)nN5Nf{ zq1Shgpd-hSwZd#Ptjwr-}!{G9n~A=o6d=c# z34?D`oFu}Jh(H97C~O5!k{CEJ;)LPFmIS~o^@14d=>|atlG3$Q*FZu*q9N0$btP!F zSF2KJqtH<$f^niyLG6ox5Lklp$45lx){ocv^9Lk3LhO-X7xCB^U3eO$lyg;a8JZ|s zN}p`sNEYYni-UeE*qU@-OU3G>aHtD^m+h#Sij-m8qwFr}V4eVp3u#WhB?yU&Q?@iy zI5JW@GcwXwyR=l;r!E#({!*u&k^4a<=7F2`*i5uLPAB(Te?8Vf>3p9i9}9!V<5SbdE4({ZT@SKXikgU5 zw$#_nf>_Q0XTa4dnAoC5RCgMjsX1Pbp-;5?oe zq|#x_P}b=#bvx5AIN>4NoD#CFiuPU-S5BwMP6sA+pJUXHxnd{~0Y^5Bw#k3f!=#*1 zFhzEpWSY+h6a}hee?$_!XEdn{`6>jLUQH|ChRhmeC(IiqS%0AWFjEumL{cgCjc0fY|F38oZxl!>P-BpTro90l5n!-!nHtbVwe` z5bPz@VgJeduKECKcwa(raAr3hJU0H2;BGChEu~ZeHG-e46+tR^Lo+Q7Gfkg_?l5=f zyIeTAmd?d8$@7%o%Y>zOjCN~G?1=LPLeb~+({6r3{Z!hdL;qFJ?QuEg3bwZHx^-!g z%4-`E1i(Z!WiayT8p&%C!0YG8WKI&;Na7~>=qi~%FeniW>DtmW$oT!v#yY9ALP_ef zws8kdCyR#BSw(0Wq*7q zt!siXJ-KC0hV^<9rigI4XldAz)BGGhW6?Xo{GqN}60pTLC`h54%g(wPWY8^)DMR$! z8Y`@Pf&DjH*gaT@w}8VXn(5^kz2I1rPD2{Fz|XHkOgHeJAbvBkC_tIu&t_FmZ7P&q zMd%`iaAe7k;=4$Tewqk@)e5s{TiD+PADqYpvA{jw$@!zpdTOZC2RgM*Qr8!~Iay!2 zek3MJu@%Hyd#}-#f2O{i>2@gD9Zi*4R35T&`kQ~Ry=TtpLrUN zK6Bs5W8cakVM>_y*-&=Go;X2+hS?YX`Y@nc1LXT3YcRvM&5#z%*DxP@VMDG66npN|=g zZeILuf2h~uSbFb*(iBFwN$A zyYKfWK{moTo|^*YXwYsiX*ImKX!p{dAcsDpIg*fj`QVLf;G|8hk>x|36{X<2&KQ#k zB_8wq&QXw8!0*#}U*XT!tI^%)NG=1RAF_nAAO}gZ4^6b5`+CuIHK3yHGlXWrtqfr{ zf|WNGhW8#Hx5}F!)Vh<0&M7alr9Sp=RPNBNm$J1Zhg{hEtCc75Lti(^-?oA`5X7~# zP^leJ9>kA`(2235juP=b1mEOgp6SzOZwdrFi$bvm7(#i6?@aAjqem9!jehm6reS=? z0_)1UdG57x9Eg}}cj&dmJz*IbND{kMUusVsb+GM4XHid%RFd;qfWH}%jY#KCjWt$GAo{6LH$kMz$Jb>>%72z)ErgaM^6{Uj*POqO%heoMM!$ESrD&v!^@ZXOI zP~0T|B;3pXu!b`&HzRQ6XQrpo$stQeTnDlB`u1^#(@6!axyNq1F1E-vOFpkq3>AIn zFMao+`$McmbNxQA77t-4t`)Z>d!#wd?awG=@4G`#VumraII`3lZ;JGzjbu5Kr1Gb^ z7z|NhCSG7f*u#AQ0nm?LN8iyZjfwglyYXR$lo*IVeC`r@A0?vmfa%e7z6Hxgk}AS# zDau-p8X=Ks%Ob{u#C^)69d)A@3Wg^+YZJmM`#LCP020EjQ>lz-PE_T`B01Xys+h;Z zPYQuO;m?TSjIJ)s*qKu@YG@WTy7Q#5%|>y z_$|8aBoyQ3D0kSkvUWq_$HJ;dZ7m9Ac%e?X9%V*h4;BrXVBJz^c2jxP@kDqAl2!BV zj}eXDMj<|^?Nnev=G=}=_q!a)O)9l7Ii2Hf(S!w+U)NjDL2F8ziSvSep^MpxV0Vz$ zPs&vN(%a*Mc{q2XfkdOQi!%$df;p4s#U<(+C+!c0;_$0ra9P%`@NSp`a}h~-=>nc1 zFA&-lAHG-E+U)`&BbL(*^KC>0qG?~4m@`6E^Ej|@9!^w+MU7tGKp(ci_=r(TyBx<*zj7q9|>GrX|_aB)i}<;S|yNhE%QfY^JK#?9qX@d}!yM@Lq}g9v|<0qAk~wO)UEw2)-SVzm2Z+>w8=>CvFlMk7JcT;NuDo5V_9F6*Gg78J!MmdgHP>sb z8x{un=GZI;$Fz#CopSFI;CLW1UpG7_pv939;Sz2^cP@q`xQXGnFad+23aSKKM-+??1H8yTk*t#x;NE z-F;EN8L3t8za76k_Ol_QXPm6D=6;v0wYu*(xN7{c@W;LWJQ~&Kw|x33BWLS&E_uBn z{q5i5>J^Nev_0n9^_L6wXWJh=J8R&U7q+M;tA^VGYM<$Q`|yuL;%4W{SE^rst@hoW z@Ge{L*{T$tac^HQ%if5wBRUnIv$##pYeN&0N+y+i8uD&YwV%45_U_hXThTvvJU*N` zXUv)@0VQUhAH8|(wsw2hPQNqnaohD3wj|_A`}Xtk1%ra8XIOvv@&3Bx=U2`x+&yp7 zia&C0s^7Xi zd8b!xYreOhd8QUAkf-LM_Q~`54eHaXQsAq=r|p9>`u{k);pEI;=Wlv0wCh*(mh~Mp zEz_!t&F=R|c|4+LjW;*$_bEHG+0rwkcjZ}i{p=9y=#q;%EGv3z^W9nB1a@CtYo<1n zdBWSmneThoz8f`WN$#M5VAkVqMJ<8wP!=X}|SJ%iGo? zHQ)9xSEQ))#Gi7%TZ2l@ z@2W9$IhJYS(L8tNS2X=PwUXD*%UfJ%P-D@6fVMj;Rm%4`Tevkxsp&h5Z7uq2YuJrL z`x+J=P$uT5z@@K?Ji8r~ZDfZ7vvw!FzB(#*;N|_XFY|P+(e1&a-1Sm>HIY`1**odd zt1FAfe_dg+*Mp0@-@No4KdsT}>%ryDEI6Eh-JwF++jW@|o-uOOhP*cyj@eYa?jKiC z2RQM_?YGTaT=1Nb>90etmiV4~xXAN|S>OKhe9h`?kGF>uzc@7Cwgu}pl-^LQe2KfJ z+J_44JQzNw>znWQ9x8LO!1PMJ%f(;#{qI(jhVERM_{WMx6_!sLV0dKldOYQP_|=0q zGhdle;q&mtzKbSI%rQZKW#Hx7wW0_4w#i%d@x+{eeQiqXnzzlwy3;FHww_8V=rg+P z`Zv9vSkEWqtP+q>F+~66;u0Q9lX9fqIo^NO%0fLC&K^Gd+luu@w`kt6_^=D>jcI=u z?AYkcqu#dmQ)-4B=sRt8?pHN4zM55f;E%^Qr_HRAcJsmMov)9i1%_P5-%c-YS*UmJ zoqaR6zd6>Yaze)$)1_-)B<|jSAfxon%!4k@dRKaj$1h2io36uYilQ#Au1Z0&k>hHk z|D#v-Ij&~mZ|u`paPtj{GWjVkY~nBMV^^<4#Uw?g#{JiC?xQ2w==FQJwu${>C6Sy3 zlRj{RpZiN*P$k9@g;qvJ?Zv60Bap0wT%zPQq{IsHpt$lVE;EPhsalRyA>TT#Q+yPK zP?Up%1&wda&GY`*%ph^ZRFz67+j&3g0gLi z^fJ+IDCtISkzyC!g`udM^O{q3dsP4`y2U9j)l=N0m+mn4O0#JH&WshV`@w?Sr$UUmH{DNtTIa(R6Hm*|*rMI@SD*_#N z=Ifr&sdX zZ}xNEl8WnU=?s-M=};NVX>DmWGy_Y}q&Gqa;quuSTT(+?TH~;fx!_Hago^51RG8QW zZz!bYYr@^6CQ?gKt4C=oIq%zo%XJlLsPe!XjI5M4quF`Mn=ko65=v=5cjBf@-&AJe z+VAIbSL2M*MVbGNJWo0Qo0#?g&Hn;Fg&E^ns5D=WRS{Xg0rAN(j^7TlD#@ov>$RT_ z>7J8>d<)=1MHr`gHQJHeOB2B^{g9w{P8;uXLv; z&V2K9hHs+-U4p9j+nBiAx9sg|)?MZI$L3jTN$)=(>#ex6>y77*1do|=zH->M6|<_> zY@R)1?2xdlpO;wQ@NT(h*&grDb>`TZS)JZwOc>j3)T1wI|C}YqpGAv551etaK`(RZ z{;zFsXI;pf=jqv!re~KEhwt(#Ry22oxug7^wHtH(UBoCLY+5OO+uv!CLu)M=xHh}iV?dp6@4NItX@NPrRkzC*d?Vp#XM$OLkgq9WPcM4cQ*viXNR7$o#_3a!pJR}Din&ds8NG;>}{5P5qQv<|SpV=!s|XOhb)vAN`Olj*%B_)w})Re|rirEf~J6H_j2da-HBq>^LmW-H}g^Ww`o zk@^hJz&^$)-qL4!?|}`r6sh^+-sr&o{dRa~S@~UP#KM#@DT_-au4?{mSb+tv%6?bn zPV1p97WHhAR&8!*&mUHM4K2RLXSdhVdXJxP@C(Xv>ezkjn@)$$q}|$Z>A~NfE}VaH(#=9|uC=fH{HN=+2Cn-3ZFTG46Z~Fyj0yH=()sSiwHe3yx4i$E z*1L4cH7k;T`fJaOPVF-dz4g5GUwsnpE;n!+VOXO%@3d$CXtQzJn+YB6`=WPOzbh}LNtu`T{4QIf6Te+RlHR194mtkhvbW#;*+=D_gO0x zz0##+?^6>iFK;)|uglfU<5xwG%^%dR#PpNH(`wFIoA+q$n=6KtDp0dZv3^g+$Nx1h z-Rv`d+Hca7uAO^T%@j7N(9tUm_w@HqFH(7X-Ep2HwevQ8UOn+h+?WxMA8fC&z3}Ti zv4?ZyZ@MSfm{ldWWghd{hAX*$$X5Pr_Ey;o&9&6&Kd5oN^;)g_6b2jCAqWyc0@frc?#`)4facObFky+Lm*BWhpCo?fEzxOzt$ zUi2<`q)5t`8F`D1^xQRgL0G=cCnm7uXVe6e16V0 zSyR7Gk%gLyb@F9Y�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 IM-1-&0k7tf9smFU literal 0 HcmV?d00001 diff --git a/trunk/doc/swf_file_format_spec_v10.pdf b/trunk/doc/swf_file_format_spec_v10.pdf new file mode 100644 index 0000000000000000000000000000000000000000..9baa5194cc0c9bc7ba2049a89240d6f3bfb509ea GIT binary patch literal 964973 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

mn2N+INq$ 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

7M8>|owMAKhj&;_J%VNSr$U*)k> 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

8M8q1^zH&;C#}2crG(^ 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

Q!7~K-qUh%;~T$!nQ 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

M_a(+m+oP7gTtG~Srifv(Z2E$wbyIm8 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 O`dZk`I>*NYszGS&$x6SS#4P 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�)7t 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ȷGHAMZRajk$e2sWIq@ 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

VvI zl!ToU++{zNNVl?l}KQI6`m! z{GC(gGCI?8Fy1T+sCBK8RFFIx*<(9ncL}a8rPW4OOWqLa)h>MKoC8OuTs!yBe>uuB zzATr@B)!BYkd=h8FIg{2^_ju8GKkgyF;2t~qky)tw~#xu;&pf+&6p+4y3Oh$YFrpL zUqE4S318yNg|rQm@CJTV>@Ft#-i=DZ174{t#j5($7 znc+b!m^~^#Mbw%z9r-q$EjbZu_pDN9{~;j-WEHpK9RXpCNy1>PLjFs<48(ZG zkxjY6Rf>(@Cntjbz+^hz$Qb#;;yV>-^I^I4j3*|$R>R-htDZ$#kw8zHoB!F3V?_W z_=b#S2KUZMdmeXTbs98W>{eTIqU<$V#A?3J7@Qp^%u8&G5rX}>b2q~nJmjIBaYxfg=(0^;IzP!k`OtfF$psy*%I)Z&+F7 zd#t&@!gP6O1#5%AOHsd#AF`Ks*o!b$?)2Thr?(k2$#%zOguWiF2@o0&445?+<#rVr zXt5@lJCc=yy*Xb3qFI0oP|z)j@$zoRQJ@>zwM|(fWk$|f$h#9GI5EnXon$Ij0vgZV zsIMG?9HdW^Cqz)WRe&gBzi(SWi^Zh!Zw;GmhWpaif)XS=mhRr2h&LZ>ngp5|GECW- z*Wbw1%s6#Z*zHI9jGh=3bP8~?ZYS^y6Tp+>TI+>)2qjoHlrZcgH*P0is}lv4QebNI zDII|BrYP6vFcv*aaf~^p&-Ydx4n%M&v8UCHnM0mp|`0rtcHq&o}Em%M9KpNDg6P zu)S(bzT0J1Cb6EE)z{lxE;lB<#;E>H1e0t@Y|8IYz3SjLGPmPT!F898s`l8%D%#`5 z$*rZTbwds%UJv@O5!bciHoBfz4%XSk5h52UVNYvXP>^%#BElG)jg(QCW0`7v_sT((`~$ct)_S6! zEc!-8Q8tCY<(zX{<|-NGX;5(8v!O*e!&d5$H>dP*7WB>D!jaREv|?169hsT?7|V@j zS)bIlp{fh3|U8_0juboQ6 zYa_M%Yt>CS#z*s$pEnVC9(2(i9^a1jUg2EP<^c>?JGYb6q|qhzc%Y$wl#T7ylr9cC zUdc(-WIlnOhN-n@TxaJK-a7l7o3u{7qcA~YQ9g{7Bv@5CPT{$meruIwFp1{Mn`90o zt}k?>%i{5ssK{`%j^X!3_%0(3+Aa+kD14Nxy6OkE0EUYh&G2yBuLSAe%$EHYFv(T) z+gaiyu|t_=SjYM-+{m$uJ|Uh%6kE1up0Q|VfgiB<;_$Uv^i5ZI)pRZz%2E6*o%u?Y zzv$a>DQKY#GLdPPe+y-tD0=4eD~(Ch>nD}`O1!t%Co5i5{VNb@nUga3b)wQ)=G~He z&i5mHJ>}{56*=KlIn*+5?$WS`ky%F4`~G$4Ee{1I0km`vv5k0&`#+0 zkDH90ROv^sZ`QF1VqntJFchiC5dvN6uXpiSvO+@2+mXwA`Op>{Jwc3|ttkUo>-kA0 zDvH+zgTWWXv);v!s^@?rRC|Lr`uwdde#N)vYS+gz*)$ztGC=iX)d&3w*Ir%X_h#r{ zFQvG4@~{CWFW0s!6J-M$~~kF6h1|7yQ~kH4^N6rA)O-E56$ z#jNy9jQ(lw(*M3T6u+6HgRGIgfQ^-{jrAXNCnj0}8%rB|1zSA>BYXzBzbAjHm>D{n z;xl}dni4fKGco;OMKQAc%}`dA(Kk0TaQxT#m~Nb=O@{BWpbw%YTlF_tK`B&|eu?OC zO4~iH0L=|tmVg&?epmpNN^51$Ub@mjO`ctQ$kGsdCsyk+YBRB87qT=!~cw zCJ@a>s<>(jDGg6(h7+M0*wr4O;R<;4zZ`)BCHMEt+ro3vW#KL4@cDRcM8b&6j@CY} zX)nRVXWaVL$vy07zcAbRy}9Ge+H+I&2PBeO<14 zh2zW(`3h*hZ0tUnbEuaze1VZB`Qj3aejE%(T$Y*u4oQJWfPH7)-6mc(kYYP^%xGAq zoeyiRT+7>0?LF}xuMt#7N24yxOvUleAyq{I5&nhO$l7qMRJ_r3(gz4?rpm8vD(t8CWG9JTrTwB#~5Me2By+uVXaU-#a0+=+o4{VBtJs62^F__!=rb~`9zUu>3MSOn_4-r3{IV25K@x(nIEIX6Ojju#k@ zTTYVow{&UNp0J$;?{nM(jl9Qo^CM@&!IpE;dyZ-NtEK`Pk;+3pHmnd1u)|Eh*>Was ze=eqFK+aPkO9Yl&=|ss_>AMDH9=In;4;Nfw_*lL^g;md+t#bn{yBhE}=PHN8s-zqw z6S&8cX%sFmAvy)v3N6oY$?XM-WoyU6SkJjzfHaHdQ~xnI-~KZ)KeR*@$uh^tATp{otN$U0ix#LXtz?(Zjv%&< zkFI19v2lz$SBw_7G^*qmDy!uZ_n0JTkPt0fVXlH@&8XbouKIp%?GHY;q2sB6xw_9S z&5HURJTfi*?c6Eu?z=Y$Qe9>P!eitZMmdD+f1N=T6Z`I9pTw&{_2c_ypve@mGHDpb-&FLN9F~>PAR86Tg&ZnF`DV|zbSW7&M0b!^(_b}T3V?&nYW* zQ}3+_5yD~E#JbHZbu5ABbh|XD_gbuN>o;$25wkndZp;t%BGS5$E&1e+oyhZV7Q+WP3Ae06Zl}xc z7s7>M7D7(&Gs@1=?||N_GgxO>e{Bt{oL$Wogy7ahwgv9ymU(-uJm7X%yX8}#AeS#C z?;nIU35}6sCyeGNse*@|??nRF>r^pBHx%fA?U$!{{#v_}^F#{}UYQZtfRH`Nq&;_+ z(2?i*3!})|6e&UIxd^nc2(ra0t zna0@B*#^7??5t|6Nq3xn)M)Z8A@d7OQuSN)69iRWh5c8|d(T_sW*>H-i05xuBWOUv z;!T>{FXK0YR3)>Y4z8`n3bo5a-VQRgYid2ioIhzAN$28GD;?@~JgU@V=K-tIYr-?6 zsU9P4PldyQ>YhdP@f&qu5kj3@~6*vtm}2YS%^Jx6?Q z3<4eKtJMk9tn5mlt!`p!n(TfhXi>Vkt40Kpun&Y&M+AaySQBJK#>3<(WjY@7(|H?L zsc_w$@~K*PRC94#hC8vies5Xlf0kv$KpqC7I{-oLAc}K;%7enfj&NtzT_e_p^QpPS z;DS=Y$>hBMNbsKYE%2PmwOr#xYvE%1DMWxj3?lqbZ=ey$86cj}C ztc|0_3O8PJWACsjd=uID-qRDf^hWZb%k4I|<;&ectB08A1V~EGjk!`SG^Ud6%Ff=1 z$*+lU!KDF)5D$bABYWkB?yEiNMh%CibU3d**{OiML|DxE`q;12CHJ(0xY>+0kpN;0 zuSpAhhdr&E=u7E4ibUMs|DF`%j{P}w-f38Kfn3xO^=Rf~7b6+OI5O&sCf+ws;3;mS zh_uP2yXW2A2OUALO@EUF)4%n}-w^c_FQE_S;BeDAeO$F@+3 z4*X=R@*u>w+eLA&ooj-|V<(X<9_Qq%@_sp8K7g#u`daEmM?hPmM5ucZnp}RDBnoVDy8vn10o**hC;^BMVf=@h~+?uP; zB_|{uE7s~>*{aYN;SI8*0Cp?x^2R)-^^2~~@ozd3rkK$wFZ77Ukj6RY7%PV1TDPqG zU|=zjw|N!HPp$m26A3r0*C~x~Ex}`nxjQaCFE=-b{mkFY7#Ky|7uL7qd+CWZ%>BP; zR!eR+v6#)eqYGL#ruP33gUqW~*$q?H$cu(0UZ~h%&0{PXd{mDyX&5sr1AeV|HhQXY zbBu|)YRIl!9RP2TanzUaceZ>DnM}+dzZKfHN4Ps-(Q2iBQR`(+)l=}l_W{Dyhbh-X z*gJ-A4W^qyUo#Eoo~lb58eC|U1YnFe*t{59edlcaqYBn6>m>B=9h$!o@&8-e06o*c zf$sk;-HIx5{Ew8C4;`RQd><+P>^)?uqhWn6s2zet{E*Kj9=~?ek~5v153qyC3%>Jj z#@}q;i!!1!cfyKJqrI3?+dZWuU4}YP#J*4<&J?F61dDC`IEuV|(mKfmWlViT+EiM% zttw@~=Aw3k|3quJ;$|;SnYipKQ<-rkeoqMx{B>cOfDSS2dZFR|qcm;JAnp8bq4B>^ z{{K^G{BJ<_e?qhR_xUJ{e+>5DpmD|z$M1j7%S~7Ppjiq3snGMa1#`x7BgHEWMJ5Iu z0<#z7I_4BqO71HSnfyWj?v=`3{DYzrE4kSZwokAY#plL%C8Y|i;Kyb+2So_#+>vRL zFK(4_A>X{dKzvvB#)RZ64sx&CG|X8Jp8;CM@UUr0V|}QZF>l+<_l_+E0z3lS^b>s9 z#AW>^C~U4_#lb~)M{ENzwTMH})kK@65?{3&!j?cV;k{PDLV>QD})C3hwK3v2lhFtopCR+WSH<4y5xAa zhrDFL*Z@rpH9kEeI7epD650wSed>F(r-B#Dcu%DjvcV8KwD^z zpkUnqBPs9R*Z#kS94@2QGMx8};dW~FcJLrHDF{s+t zOu5w^8GOe|Yh9>)v9`v{gGWna`@hYG4`n*5q^Zj3oQ{M@kwZ}eJD?k=tz zQ*jtF^=1I65FbG7OrW(MQ(^tg<$1w#_sg7=gpQF~HuF9YXl&(O^b}UVx0p;kKu*R< zgx0Vd5pUuq+M|97}CMp2ly*r9lnf}Sg%WQKF$(;06(blx zmU=L(@c67LMN+~eK-WSVWFIME{VQ9gO9dtW=ICt-Z`-fY${BG>BV(UoM?R)7mf73- z2fRSbbuaA$SP~bky?{k+A%&d>nDs)bWk1X$F<V~L7eB-ux=!`dSswz zl!=j)G!5`y&rjl-=pFDcwy$M@jZ;vLIOpEtJOfeL$H-*CfG2)BP#j+)j?^ z3V_0O!&(MZDDXwG9^KW+Sl$mx4W4qpErdmW`u4z!EC2I5xI}{k%7pOa(uIYwfHYCw zXM=Jx3^5g*;STPO?1LKRt-7r;n?tA^Jnno8oS(WOx&mR`M==V*0d}j;mL-P;+p5wo zjtHEFT(=HwjPzOA?F60vJh@-yaLZ}~7q*@|Q@Xz>a19G7hLGtXBOw!lyg-j2p#?IQ}NQ5U(j@uBp&<#pLG_Gt$!z#bEmU^9Wo8`zEQ6zVwl0?D)$p%(wm97>O65X$CbF;8Zhsaw!cg1kWKP3QMMl&(C(yQWftvEXT+R4@Fo<&QZVnsM2&lD^@k z9%oZDf2u4St%5Rv?At7}G&C}^Z(!>wHGUT2I8;q;!fMI9&qq_;aAAJ;umqB#mxLfg`~*DMQ(_}) z#kG?13Xc!ht%pXg=wW5n($tbrKo zAa!d>E#Seg{uT3ys$M@v5cfbJ`9&xZRfYXt30_@MJUfnvHF|VZB;POj?WdFnLLppP zs630TvGnNtP>AksO-%vDSCQ+%?4we$+xgJOv~ ztaU5_KOg;wnDDt3(0SJ-LqDe;rj~__BcnuQ##SSC9d2Zmq z(I$l~BVV)rrgXOtk9~5pHkg9c&so_JHm0nap^u9Nd2WsBtF_2^u`!lEonS=X?JP#g z?pT|1uVF2=QJ|u9Eu(nH3*iq6Vh2x1$>E1Til3g8c-1b$f$*STp<&qv9@vpA;f~RXqfQP2nkap zCZ@de%vLZRZV2alw}||3F=DLDKp%d|oegih<00#T6L&XmO>LJ@4D)nK^P1Sm?OF%m zAn@u6>2M45_OO`w2ABe!7M9D&uvw>HHV8kpQs=(haX==YhpgE5uEujkGgRw;!^h2R zvKNxRFnr19frQ zuWz(CIstL=;Md*_$2YISKtLml1o1;}oS=Mv=V1Q_Z9_v_VT+u6aa zaGCH`RWuWM@a;|BwY_bGkH_o2PATX|?R1esIWa^^gvoY)xXA0#F5UqqJKdn$nqU{Z z2%jcTfO-CpM8B!|He)A+q8tAfrc8A`N;fgDDPMJYnBw4g zT2?fNEYH2{w&te{3m%LJES#rBseFG_+GA7)wd)lY!bE58edSv%l=?Ed!cAK*Pb>)&O({|9)_K!&hMZx3?wGK9_dPAA(R0T6&_ z1IYGw168^8M_Ak@0X$0qZqsgRV2)S;Gd6$%pSO=qO&?<&Zvw>s*{cGSeSD7hCcp#W zW$u#2V0!q%$Y4-t0SZ-s-RMQY zRHNzOlj7H0!d;r^s@HOV@R5s=pZ+6hI?s|hBT-Q3P#7QQb)RZ+F~;jRng^51!H2Z? zdMX+7^%GdvS0BKWD$Ij!TmmOp(#K){Xe;+!uL(taHh{;F9YP+!J2D^|&|wJY^T#Kv zdhhBw)JIa%0lfXOasqh%c-1Q4J?UfTy3fNO9UH*2nk>qTQ`ZCFtpKo24QSHxaRNMO z0IX==k9_WDR^C^1-s-y^t-!nPX8@;kNjklz)PNvN2|%^3A7DF13)tXNkO5eGs8Ohv zI(@e1hbUi_30aSTAJRK44bOJq<~`sAaDNME0&MD>J-l`J1YH_gSNr(*G#!|{vR;?x z*!y#;&58TZj9MTD#?jT+wFMh#Y zU|3;QAx7TuU{Rr7w!jfUcgQqw+A)a9ZX#%SfSHE~l6lBe`4K1N6Cw@y?L~s=FLbrv zUL@$5>3%2i{y(n?Z2v8W_cv$n@7IZsz}??tcpu~a`xxFTT$%+3BGA?+vsP4#J4clZ z03e6;N{-*_#}rnETc!ef#$~1;8Ss|vXTM&(YEq9{QV;t-7m)wzdgQLOEYRvQdBgOc zEvNF{uzFP9Fey}{S0Ad&^kklf&c!2==DcTcXEeBQr2pU&TXUPbIz27^aoRFaH^`25 z%6_nXmRi`qH-e~ebmT_EhMNRVg;aFXA|&ramT8VRJp1Lad9|qi;Vu&f)&xv$5-mNA z&O86GFeaZ{=U|QRT7kENDetC2 zCq~__7{Fcop6y}7U)m{uy=&CPLfRbVzOP7ZTtPh*ihbC9XO8HAT#nVLHB*(6lwKyZ z!+z$rZ%k}hLEq*CmD|oj{+g&qYz&2)lv?IB-I2@8R{lD_TWla6ij-xtr^Yr8f|NtX zwNpot?Z|azt8a0mCslsea5B$h;X<*|gM=epkZaghzg^pJ!lH|}*nQ?Qzc+LpCHuu4 z-=p(**^PRg^iB}F;gE;%Yj}&#=@E(Nu9#4~ZxQO+MuxJCcN}dom(cG#p)u3iSNOEOMLY1Q6ER}PxQE8#`y2t;2auG z3Z;LoTH1mTI#BCk;k=#;;nq3C@dAZqCZm{COK%2^HL=L2^x!B@k5BK3@VakjCgWqw z0&99IAiTCj*s|SPCUIl;lVJ4u4#Ov7!8WF7Q58kiV%YzoKwa8p0nw3t=2l|9RIpNw zcZaT)P@B+ordHJ`UVD>!d3!c3o7`Bv-kZPp)}aTV1Mc(!n(k z&swL4Z=KyV+|7vBMcg9;Z97jiJe)5XHllUdg{ng#@iu+qvmSTc?#jiPI-4PPgk}8v z6{BXP?-O!tuNsk$F8ce?XV9yPYek(Mm~+DLcVxSTD2fFWl^dRIK4m1Z9m*Mr-Ct$t zfNk^3vv!h(nUjV&4Kp({Gjp1xVPV=mJ!&>(O;l_wIYEFUH&v;#csw_c z?8-160{yPy&Tb{o0iJ?0>M^-&wiA&H?&a{Vf-e2JNbP&H+3~%efQnyz&ZfHMlG9`-EuLW zAvH))qPn(YFAA`_f!LlZn70qpQA}vsUB0`_aF5pSJPe6dX)5k8?s(`d1@M)PWXm#a z-f`(1aY#3292V}ca<8jCe9x|`K77|m72CqOa&+xFo*Ljz2fVrl-4JAExOG~LWEaGL z_|xI}%@qMI>57e~$fG~XsBaK6QL_6Wj+=T1yv5yMrxoN{Y&-)Gb-8Y~&$Eoe$RV8M zPARCO2!oq>&Y?V7uPgAi>H$J>TMrkF-gN+~DR?Rm+D-h6%_g(Uvytq7+;IMW_xnF~ zBpc_fC5t>{?&)t~j0K8Ym49A){=(({v)#(_C-3h!DgD3Ltz-XI1@l3W#yf~Ei7u+t zT8D|@-&{fnnJ>CR{qpRbUUd=B*CDR#7g&t+Yi@U6M_c<*0Lork(bo_Ea5`)jh703-~)p?w$E z7cb#n&r3)Y`}SLXl!9H4(jl9~VI93a;JIr8Q2 z7yBpQm6hrL3IfX1SdIT3`BFJr&Qc2t(QsMWk^Oi5=Q75!`3}+u?7x zSz)-DS|oW^Ph1L_!muboIIM@7HA1kZmRU}G`51E*P~nx-6w@_b)*h}TGblnYelW?H zr8SmpP-ui^d0YS)sUD;de8?L)%Z}iDrvUy+-z)UvNCJ$$%lG_3B9J5MFqJ+~gZf>O ze7Hiw9uLP%!H+`GFj}w8E+GV_W4$ATpY;#JV_LmV%P!vB4K;R>N1T z)zuE}NFRern<^%35O%;G;uQuoFj2~A*^R(3Royp22avBJW1rr1o+fyw^$Y5m#tlzO zS2hk}v{C__fh-Ajtm5S213}4)U{EyO2eS9w0`|_ajmQ8i@vmE;`_B21PT8se|LjSy zBDc7Sc+^)ck3>aH8?o|E{6#o>J#ZbKH1#!bd``bWsN}vL>KtwMM&ft?Y!zt5aJE+7 zb~F=H#iMQm>2F1zMRQMV*m60N&V1A>F0jiS-uF?RU&~5}(azDr1g?~m7LcE+@{Z)- zA1a!!JY=q5LKJV8j%ZkuC$SGJQzOJWzq;JRUT3k+=Xh=Pq?t}}PMPIg9b;Ph%i+w? zycZK`t-?Z?o9<46beGbkXmg@WIK=_Ta+|O+GQ&xlf;2*jBIZyrx=*=-HlJ1;i{n|m{yc(Sp^5i7#|+&2>BWs7FGU9}rMwUULm_PJ$PaXlK} z+n`7r>B3j*>>Z5Q)j?qCs68vT+~IPI4p6>z|lW(?IVZxx5^2N4z`7p0@sN zuoRzO0%8!()9#{XV3$P~H3q;i%Mw<+de>K#o!*J!v}*J$#AHWkSEE5^)0sz6TmDG2 z$jN2MoK%=}vV^2UqL5X*FI`VrRl=iauX*!jIwRP<|A+mL!B{b0aC@;FQ`C0CQ=QQb z=G4c7JH0cRsWd>2O|)W6lj#K^GAh`9N%uXDJ#$tB)QQ&wFsAm5P3Xf&BWjHXJ1G`^Ymr?!R|K*C^Y zyjF5WVN7&gx#LOzH)}RZh{G3NV#3jJ;x3g*k8+SF%+I~7EqKYS$t%_81Fg4-xk52> zBYw1)sLC#C9ao)o?+Dmr-z$L6K<>3s+Mj_OsmUv@K$<#$>TEvokK|guIcT{>5+**I zSyI&(N3zA-TW_XQ;q~G4SGBHDt2=KCT=ZvlWf@t?CLX@>4?`o0tJaVg05$kicp|Oc zYB4q3dp9I!fA!^km43CsSW&U><@S=F|B_o;-3GiI$UVfmPOx zV}F3;I7~okA$YPGn6h>3BrfAOm#sGGrG}y5q@c_6LWz+Py-Q~mt|%jw4~>8*q3cWO zNZvRGq_ik3DLVUxW)B%(@FB-Bf3aEb~KF>>#Q&CB|M|# zMY1vcr8=0artbD?49bw`gU_-7dvzW<4D?^P)u}fwUwiE5p_22inSb%b&|B6rx^fffj@Uyg(UCQoYXGq_+NR2@4N5wt!zbx?FTPYH=#ZmPrvu)y5(tss?gDI&Dh$LX=ZzK7SIc z37a2FH+tO?6X(`%HP${4-9TNNM2SUTuBjW(g2>u(bm z1v*lM)(b?%r*e5&iF#(GCz-u|z$m>(F`Ro|%-^bjwAh;ZwqzrOvBarwa9U}&xuDgz zCEkLt4QA2s+GoI@Z7#d5a7;<1XQi~QQDntp;C%D>CbuV%jblTE8`K4*Vmfuv(uY2c zRL77%=fA`jv!~xFm8<2a8tJ%-IPU==R#g|?y)N5&susq8stXfu{jAquA;ZI7X!>|) zCvbS%^2Fn#Jo(zx(}%8WJz-jhmEUT0!6|hI$Chx9G6#txs;0`g^+=z7f1UdQM^46< z7&KB(%`Gs6fKCBSKyPK^hfE-Bm41aZcyZh>&%meVDZ9K7&Cc-Ya2t%0?K2>M-(aKa z1T(3wc;M-ywjX0G>K2b_-w8ZV%k&{)q67N5ResQ9$n6>Z09QXRhLx8==npx$>j(9v z>nbZHz{N@+^hMGn1DQ;zn&OR%2qWCNlQls@#w_Qd!Ku{CDZlq=OsTA3>C^q%iBN?2 zNG-f!)-M0(J2a9??#mnYz@-m5E>6N17J-F2;Rwi0H_$JNYcrB6CjI9moHoUvi-uUA zo!4Uy*Vc;6Q-*MS#dy7y%7sE#{wxXpf|UOo zw$An^`{}Rbx1qlN({J0=+q<*2_BxH}`(m};)YR1G=H}()<>$w{hnw5;`|IQC>gr~f zPgiHB_s84w_4PGufj%lM1`wh?kS)$v}GA4<1eIuHsLuT5{No{G1?J2>oK-<9P56miFPD8P? zP~2K#=l@9J(j&*C!+`b^k0W>kc^&IRptUkCm(w>~s!h4cPA+(R)hDL!&K17T=&j@ki zNBYPXViRg#927*s7P%wrPKF#Z@->CLjUPMxAY`?l5#sr3eLqpBUVnH$dAHGX;I?!> zQrjBuc(D-DoGs;!*z|X5!{fm)AxzNJ%4mMroFtMnIjz->#YK|yvEdKpM;Sz72fBquwr9bzN(`O5H> zed(Us)cf`DC))s*5-qf8qFgIhJjUGLE>ww3Z^ilP%epu&YQHi31luR}Hjb%9HCZqLZg~qx<<5>s zWwnN&R37M5k`DpDOvrFRI#<h+er-Hzw(K|Y zpt-;(1JQIFwjvg=d{8?1Dy0yfB4YfL$*6`Dqh_`S~ zuql1U6ox^zX4U{3RJvce1F0TE86=WU`o*QtJ}biPRLZ2fhj8mibT2AWI$I{x`cPT! z($(k}b>n*I1`Hb^t;cNDiNMbv=&RO|B((-a!RrtmN+r;;cAt0K!hHVf6Cff;Ij#hx*8E*_&^o1qGH)~tshBv7?2s767ufj`yDwqMy1cX?h=9HZQu47 zO(Hq3L=_HVV=yox;co{BR5W4Zmzwcn*zFLBG8-yjjUan70*C}XB3s$0@oHDB3mu=A zL&K3_vB~Ye2`i0Yr!Tth5^_qHx9-5jh*tc>4vS*LGbA(Fs9A*TX_@w7XUhsV1Es;d zkz|Xtp?;um_UgnDma~RM<1z{n)o#LGHWU(=FN~}uW&iqFcT=`5Zqv?y$V7}e+D@2?K_2lj$04C8 z&6v^}YNFJ2GDeFjk4u0oZB|8<)*W)g%+!)=*juYa~*ZtoyD z^^xQ+0(?c6&l~_mFW@3t&DM?~p>W7EarakN#3AhWhjVB zcUg3yIDgm&> zGr2+`)kHfJvwMNVE!M`S_kn5ue1;7St zj8t=Uf-x|MPhb$huN-ghgq|n-*HuG!kbXmZBSIr>jBeiYe&5J0`)+@qOy(1HM`CwJ zm-*uaM&-49Eb2i`4(sKmbTf7PBovT-{PN+a&4hH!_Y9jXK z=5Ldv#+47=JX+(!6M0?VF!DBqXq0=;aaVotn|4i8PzFSXc6u=Tgly3(`R|f+tStO4 zl$q9^(pCEoH^ml%nI@mX^(?M__BEf295W`7!{mJ`q@kg5vmG|{1ZFm|=!6@({>_NM zF1Y8U(6RURQctan?V*T4GLE%?xpu_MILf(qm+8$=Gw%)3`QBj@>Bp4RTbiIFbH@ls zg#K0XT~zC?ESb&F5+4=&#lEwB96X=cjkdz|sHYF&cl%fUhlR}9@{IpjS+BbU9X}Cw zl0^T9HFuLp*XIpM9|#k->+a9HjK3h5|LlUY{&9Qpzqz2%J@CB*zjM-q_;RIS#Aj_w zXYY)O@uVX|R$|FS2bAI8Jzaw4I@i;dVZWKE53D5XML&wAqRd`_^cWLgd)FnqTz^&j zOgr$^d{n7O7L5yrF(ad-A2{C0xPjl*kNoh!sSO^7vzz3U(B=+bGF}|!Qs9mLk?AF_ z#(ROw7eZsuVh*K)*B6D~IRDB_da~%D|FcYTaV6)s6{@+LnkIf9Np_uPa!5~-ZZz{^NiP|E)BObF)e9j zmbdWHFSt&|zvoMH)@1ckPW$7UR?xaEdH6ho{QNub;~J4-Tbtg;Gh+F=W6F?$LWz@q zmw{#eH`P3eg5i>x4XaE0-E2|~;TS!hS0{(ZF`Lrx1yhfdAd_OEmm$8R%6a|g16z#Q zFV2ca@<4nn(&Bx$fyq*@w@4%9!eM^9x(G%3zd7B8qJV2Rc!2vnv+wU zHU8bCrgKM2!#z$d=)o-UxY=Y(W(q`hKV{?^(9Vsw5cB zP|XzIMEI9e3jTBB@BZ%8H4mNiIZ5@J(FEV z(Xwh^-EhQwrIfYFLNnHUE0RUg5KFm4a&p#{WuP95xMd`tVqahVV9w0lPDde`IU%I~ z5#Mcbh-IpP40h%FVYo2V-EW_EGT5!PW(V=UQOd>UKw&N9|sV;|JWuT(8l3MKtDBV z{75LatSKYIuf13DeJbgj&TJ)($O(2sK$_!**Neq|!KoNIkF$31FqZ4HwsBt60uo?5 zNugEPDM5V)c(LGla0wU}3pFz=R?v!B^GaRV#xj9YKhC?(DGNAfU#>n#2=c5rNA6*D@ zT8GSNofX#2TpK#pDvSMQRhv-iR_HO!7V%1Ad-=x5J+Z?IIvr5^TnFGOSjfT_l8 z1FyWC7Vc*_-7iWfWol78n(7OELDVLJz=1YmThNBV8Cq*3VY=}9BaTzpPIY`DNk7af zW>5L6yzn^tODXE55`nE2*p~F8{3XosTWn*BUwtF;&5`VgJ4JfhW1Rz}Hsd|5_Mbb_ z^`f1%Mm_?kjBj|f@qkM9-PvA7X?GY~!dj@Xj@UCv#B|DdRqj*PhuKc^utn?e5Zet`)at zn5saC_az$}5%#JY>Ey|Un2RdNovD7_Yz#%J=)OCZwK{tn9NH;zE0q1Rj&tHJb1a)R-%}Fi*Uf*^9z;am$Hu&9R25g(u-ifzZgto)bEw7I}(nvWAyH z)!^>apNMF#lwmGkA-sX}ah_58B)%2Cy@rOO{qCoe?i>5-NQIaVPc3dKI%dMWDfMR4 z{Rbxyusg0Rhz`QgNp*r3tl)il*3{yI8V@w1-mcCbX~rA$1?K3FiGTU__-H=G(~Tnz?$Ql*d5lwJtTiI4i|Ha`VYYL~9%y{r%bUnIjB zfkXy6g5H5AK+Y^}dSxp|h4&(_Uej+Ar89dnnZJ#!k%`|Q&hZ8$Ei_U1&Z$go0J8dfyb)2}i$;TK+!QVFQEWc79bL?`l_|Bgk)&p_KiBzKFS zFmw`@fF9+ER&Q)P*iuRJ>aptFz;=_|tT&fU24r=vTUuONS)B?B+Oc3#mDUepiy|nQ zei;(XE?@Lwfm1r~z>GgBe~3HDo1;Fl9cX4k4)1fU+Mvt?%qvp#`qO4E4cGf zpJGNgPCp5aA(-6gox~I#CQ-p7DID!AkAZjLhRsgz{8+3sG%&AD`Sqkp7|HKgO-nf? zv~De9{60H6YeMe4tbS_T+6s`p@+^<5aL^yMU>I6*vg{c*Gd5EWyq&PYAuO_4$Qdys zVVHXi^NRp10=TpGaW=NULU~d0mPg`kgV9zGO4Z@8Wa+RWUJECVe@C(01XTZASB&#U ziGL^ZVufxI%u)z%Dl@%^w~-|-J|!1OtQ{h!sF&Ligt)vh(H9n709KPG!l|A-(B=axkObL6qeN6^PO)D5(!;Wf$EYu z6t`5@$U_iGvn2T3Hk9W>K;@4|9hM6-y}Y8W!o+xv2stRcO`N>0({3R76V1pkz-q|p z7_@G-69Vv|l;KSrt$_s2hwj&FyjsVLlNkzWI*hb8#HDr#NlA=$GQyhPlr)xSM2h^0`og;$qorzr76i_%tt0YYhZ3z!`5L!O;N6AhN{1yr);Sz>AxGIZJuS^ z24D`7OH4+Ix1&y{<(=ERb-@@e%@RB#pHv#2F^`2IPsx>!GZ2is2_kDp*p;tofRH-0 zWxc=TL}SNY)(_q>ZS29VOJo{=C^jXU$t4qLyJPTZj)UhE)do0lRt@v z=@>=t_jKw_ZVi>2U1#r@K53abG`njKO3vU46>a)#!#v@DOr}1e6a8+Zzkfc?;eayM zuWEY_9_?6&w@ji`^7cqw5Ra$k|Npl;xN6y}*> zCY$=B{y`@XS27C0uN+P&?wOoN1a-92m=Egy8F1aE%;+NSc9SXq@gu=-eZY*qZL%C`BatPdV}88ZGtSVpep(z>n^TeWUEg=J?89q03uW6PcYCOw zji2zi>jtWiy=U@WSV(D3P;qIp7yRFyZJxf3hWSY!dOA1l(NNvDMo!qPw@34Mj`M#Z z4~9XK^bM7cRzo(q2y>BF#+Bu_80&b*$S^k1eBvRP^z#>5-FLu%b<1wcIJ2l~!|gSG z+94ifQ2(-X*)ms-;Z4vt7AB`uTu`|W8DA+|7{!3gIU-SvtA<+CD8^L1B*zV{y~LyJ z7J;sl7fwekJ8q=bLI^VBqTaL5Ru3A&&wUo#S!5)i$YsbQ!Ynn4ojnW{|N3PH2Cqvf zFSkrSwWKV>-7@BOA85!6pJMM7Qsyg|5B@g3v3%yC!4BUry``8`$)=roZr6OHo7imx zz8>qhSNgfCG7pQAVwSptokQMbgz7&$5q zS8U)BCOjnY`zTL34rRSHi)Cl7CsGtqyfO$amM3+QS3ZGHX&1(}$AH*y4c*N3BJBlY z+0`lrYP}TRcW&bQW}7DNj*wK9{d)vGod~RR0nEI8D0EUj&2d5KdfmxGHcLv_cx*;~ zY?Oo3r<2o&?`0D9BZA&Pu}bagBN~&;dVUU1u?Cbyi}_Olh`2=)mvN1@#1HZG8h=xU z9m<&6TiDAZrTF+QQDYAeigpQ z1kA^!n9bNOo9^e|0F`Opn#n)Q(!T(#|0GK}{uF=yzp**Lljqs~TA?Hg9h`g+%wJ33 z#fE~o3fs#HRy#px2}7{ji`w5vGZ*I9y`zWcgE(gA@l!C z;jsMuJ^xBDAlu&)?Ek^O%Kr|@;pK%hu{Qpj;AHvx#r{cpGBE#%fcopX$8QS9dUqHJ z?B?iq$~-H9omZwvGrNqGpBER1;^A}Yo zCuK^2aK5)E)O4%QtCWF0gd7x<^nnAy+p%%br`-tlm^TteiM^0G4IDg>datVhg28Dt zy+YILw=25Kq4)jf`m`Jm(-J*!E`$ii8zZ`LrPs@WO*}jd1h*rMAPJ+Fm<4|VX75B$ z0b|+wz5~LTJDp5063Z9(m!Mib^okVinJd^Eaf&0P{xW&_aKW4tnYk6W9dcbO;!B5L z@WmFtf^&Ys%*NflY&(#w(yli?`>V=9^T|58HLZ)Ie}3hnX@{f1cN;X_s41T)=E^ye zpq3-(flV=5&-n1b=PV>F~`T3AyZ!sM}>UgtvC&ik)tlZ_n;IyEaSqd z{6*&dhDrRV}V4C+lZByw8u(~1x{-(^YQ?A)MW>>Xbn5x zN}(X%{;79@;smm1l95RzgxP~71F+R%@1sgW&_|4Tb=Q}gx>)a;TSy|TH-7k-GV{cv zn}ylwr3?*f*0U@0TZ@7O&h+^?r?Z|E@lzGRrFw+dyCIgkGiPD1TyUGINV!S&SC!-i z1G+bi%R;+Ojp@5_>>?NT!Gt4HG4ipDdfoYA8!}D($xhxds4ontx%)82=;}oC7daqL&@fhtwzC1|x^9p0GF9c7x`LUjUV(Vh zPaHHtB=v;u2FaLv*5o{klG#ph477S*CfoVlURaXWh)`pioxICvutS{`R^+<6pb8I4 zt}+wQi6`BJlraMwWbvpL6$ki?VHni-tY9|7v3SVw<9c_uu6V_#P0J`obs$Q zu0u@0jvxut32v8oLeg=x=PHpgj9lH}0}4E2Ow&iv0k7)odq`$Z{tUMD&C9X@Hh}VW z4u{AeS()uFqA>?j^$-0R?@M{>Y69AQVRIwN7e68>&Q01_fz~F3KJt88AA9uJE_#1V zewxHW@f{acP*aI{>lV+j+~HP2I%v2rIrIzFUZ;NB zh?8=5sxI}!BaMgt&>wq;Pe;>rB3T>yP?TJluAXaSp$O+5CgWK42WPMKa>~^hXiM0l z{ecdwHgfGCFo=Yv7XSk!2&=TQEkd8CbUzo(C@D%QN02YwM`cGSRGE2*y@BfI=3(d$7oj7+G#~uNy`x9$kAQUZSe-&QwycY4Rt{jbU1-6s* z&>Qn|gbd$m>Q17Si?bGO}@*;^16LrhP;7q7o^kT1N%NFMhg8}C;Xd#TRW3}9f z5mBAgl&sS_(R|qL5A-M;ykhGRa2QDPBM1;Hdd0?jwXuVNF_Q^C(78K*nwIMR3Qzdc zuO2qEE@B-Qr^(L@#j1&_uP?&VVe-H+kZ}Fj0G|2(AuU0K>%P{b>V}tv+s% zk}=^FjVBFKsK4)3lMtzBzk4!OrKAl959F6F+dF%T*HL6+Nt6t@YSS^&t|`#`)dgB8Um*?=QC=V z9O4x1ivq0re9=v84kr2^rAgC&Dz{bMFDo>w{E}D9`mRV|()-iUS9@dtZ=Pbvge2ZL z)2-^!gTib4DUvvi0(m#S+nKv@8{Pvv4 zPT1Iwd4Q2DOWC}cHcW2KDo_-8wi{uvE{iErN~(e{YODtN5(Nm zhkQ)eMvi+W(*x?0res-XGf;0*RQgm4)%)W>uisOEL^h^ktEKRaKIQtOsvc2kI`2*M zu(Te<(|KVe;Y*Ey2s&Zi@t~@889WSjTgN29FyRJH!>Zo0uyp$8En>=Y{55y=%x(5< z^h#E}`qZ5Vd$$yqW_V2VH@H{0hdhp%c7r??a8fP{$R)+_^_)4W^uTsFB3WF^E)TZm zq~U|M!LOcX;ia5$Sv~a5h+t_-nTM~tR> z*yi3vY9Kkc5{EJ!k=(`uMM;#3@>8HtmIt#Gs}sN_f;e~i$Ui1}3d^^y6v44){ZU1N z+80QvD4XCRXyy&4iZB5OI^iQK%fnz7H{6ivit5>v9eLWJXFjd|Pw`q|7!u&!h>~0P z5!2+UmZKd4smTSu4AAm-stQz5k3mJC0Wx_!f>6ihAr<9$ibPvwNT#BvHvNeu-GN~?ws?tMl2kiQ*s=8c$%ICaP9tg`*^jm-|H zm52lXa9LA}Uhk$H(aGvQEwRxq$=e&vxJ2!ckqMpumO4+Vz+S47oK<+cZxw=Z7}tME zVLLX-mx)EM1O1TZW?i@oJ{T}h%vMPvW2@itxz3^`bUE42!pn0=+P+O)38xZq{FlZ|cuH8_Y<&a-VM_8J2}x&X`ld+sQpGKYPNq>(7f(IoS)6muPZ;_+RAf-_g%D3o;v9GYE7pgXkc9=V)s`b*%lyY zPrO#&FN)hc4tcY9ZRlOU&sVce?G3RRQkqz3iPe7Or|GCjlW};IbA*mcv)IeT^;-*X zC1sj}T%>J{+GB=o>OL+*D+Q`lQ<21>G&Fgjbd-E)BjDs};lvr4R@z=Jj&5(IkmR6S z<;?nwrQcf~e54~`z5dJ_aOAxg4JY>9#H_lXvsP{JIjLc??8AHLx$q>*vbl}e$|SYp z9juQ{kH^A>i75mg>zGBn_eB;blWlB=uhB+(Lsd%6m-L|NEO`&;3?)e;C+5{u1<%jhGpy(|$G*`n zjbkA_0c+IN@jz_C=6h@DfQ`aW`>NM|J%csvs-t6KiTze}SneJ#Ja|Jm!*@ngW{1U! zc62^{(y<6v%*E{F@1^jbUlZl61_0WclKc9;MsMfxT_pYk=wzcpe6br&n0x!6m7gE= zQQyGP_ril7T{CvXZVH9XthKd0 zIw90-;I3ot{rz}EYwnY(8)$?<2L6xgkL54(3I9-kOicft>iOqGvETZS`5)p&&d@^1 z(ds{yit9>bY=>+gJ*ueQ05SDP%sG`xvTrQCuQKU+KCHQg8E9R>y!ifktpvILkz-7y z+@UwCQaWLH>MRcMloEldF?blLiCH~i6t>Y&Nq>;Q?6=H(X%JIr2_R}|xs@rew{%>$ z>^H6!gs~nPTp7)kgxRbenF&xw0rvK2H|H`50-%g+v|Ex^^JCDc6 z!TP7>x&QpV%{JCFR_*_m%X6qUuH~D^(KD`ZE3v@q>J)Y^xg%^yDY5M4D=se#O=1EP zUdVk3aYlZ5oc%R6pEfybsdS~#FrYj467b3#A9_2ZwwXz3w-IGe8X>4Ink%w}ZAM&csIdVY`}@5wtlZPwa`wyC?wY*wfl@?cQgRzwBz z)96P?Ad=Dj0&ihe*Gq_Ws}CD0rH+MYmlx()&!jDb!>-CVuRzM}+~`kk;EN#S@dvZw z2|^;-Yr&XSu1s~%r16eRZJH^n@A#p5ILVnbHk;~sYR!Qv+43`DphWOs#%C8t!g(-H zvfY3pTiPJ(_vizvFkTbu4k=Ili~;u|JfrAYt)N8Mo4gUIvYDe4po5m|5 zI2A`AWuSb}{I{HRZyLv!Nbd7RqJEU(h+-i>h16mdttobu)7YA0_xdn2jo-DYE;WA7 zoG&Q9f+>~7W`iyR;dd76bh8(*$@6w#vzpj2B4m{X5>xGPCxz>g#Wp$E;@^>%=qiuh zqaG>p>P=Nzs2`jj@fqvWA5v7LW)?D~Fvz17=E7in+;?}@hd{NJ2_XD#wZ$W*d0_Fj zzluzth+q|i&}V`uO?)uenmYMmTuuPmW+=QFA&`ssit$1t~cNOF<%w8poB*T9Z z>6=zN3ga?8UlmSkMv+%JAqSne{E}`QK+%F==5&Dy{ME*Y0+SDv2>QzT9J7phG$l=e|lp|efkjT^I!l_O{u9*Gp&JnY_8=;$%>SJ8op`Y z^D%wV9OF6_(k5MVlCE`Gr?pM6+c?UUlc#9VUH6T@zSW@U#a{UM!wwnj^WyX7VCW#H zDpX{LeZmAw2RA21{UG2h)BS4jQ{6trTr0cFZT{X^ha6o%l76B#WjZpRnkgpNSCjc? zb~<3;XGS`YN&HtFca@IPP&93pTv3B=PPAN4QV)jUr1I^BYA-uC*%5vj&<{Z(r?|1q zCEVrMy&kNAKt|4D4j3rh1>EquyXqUX4l4%nqjRgMn`x-Has>zuDK~_%`N3gh{WOEf zQbTd&@d~FQnF(w3Gcu3kkop3tHOc;$IveZ@^_n4Dy<3z~xv6|*F7?JQQa9@8EQG=N zM*#RLTCVKRs#ln)&3=(oaCt!`ifsXCM3%X+MV3#CzDuLQ=K44Fn~q<0!9RTP_j$%; z8*OX^jfDn`wP+91piwZy)F7<`Ivnl5+rOtOE34+Wai5;Jr2LeFoy166*&ZU}CvAww z1&8-Z6TqAz$n@xk#mQx}!#h{Z$kZ9l*C>e~YUhJ-y+8R{E#m$|wNJ@pENe9X?#Hlt z0xYhbA7|-dR_e=G5`O2YZsvl&k#7~TDVv`kO$J3Zu_De!3;7oC%5;-_J^reVm>0Wej?$xX**)#jL(06u&eQXb{Xkg~qg z;jg#Q^~AsO^o-kdXM05$hnTqzXs?C2QLZLkwGHucQ8={bI4YpulX);ik`XQ(_B+C& zGg`A|Rw;T}d$=V_9VLJi=r=@^4Qb*Azx1*~kwr-Xd^8YfhJJTfGShWlZREyEAGAe7 z#YuaTdn*hv!xsb_NyT1=HT4;VTet+S+?qlk=LM~Go%9%fPS4} zO6V{Eaq~MRP<(?aP$(hk|2?6x-L`eT^2_=2CU$%}IC(HfmvZIVDLM6MpHPj%Ol(Md z(aK(Fg(|>ycDI&K`Dx26;kfp4HE!#t|l(`=YT~x%G|O&{A>A6lwBl;SE|X^?Vxu z&IkrQxQ46j#9at6t=D(Jp{ub~F{~HG7SrSo2h)qZOd^!())`m&^x@Z}@3XC!Oy7_` zcngAU*eFG!?;r9gdMx|;aA5kqVm6`@%|Nq&G{9vFn7;W)^Y-a^dw(ca#1>G~kjU#R z1RH7JqHxO}p}8*TlUYz>e^sfD+s>GYA;InN+bifx96SaROduPlSPLf>)P@SgN@2%l?c_WQKwm&tTr0 zxav{2Nw4Rs@VPkZtZ`&8FgO#%7dwMmabiSpQ0aY1)MWQqf_%7)Wlp2D0$XFx!|~Er z^-z-;hPM8nbO&Z1np%z&N`jJM3^D`a=NG&_Bb3%X1`smNe#b6J*?cFJE##qelbw*E zZq*sADPTa?sTm)`U#xleGEENaq)(_P@SQFgAAychw)PS7Gg3*roO?;q)mq)kX>N;=nS<>{jT|mF8cX4poD-55x9GV zVVIJTP!OUA>k1iP#>}qhiCR1=JiFooqj+42Q@X}^+(eM%jai6# ztzvaPNAPp(_zBu0X^fx<#$$n)1p{XVZ0ZaAI*8m$VjVG?r1LJt78GlB*VQJ$g)(Nc zth8yIf_S(VKIubfO)(3^5BWi@*z$_`Waq91Sv~I0ZEmxL&v? zXIb)-bQKL(EBWm=!UyV!#Zult)r^>o2Yg!Js2WTuK?xc@zJ^C<8{8ExP1E2yKmY8PK$X{fkVyd>q~Zb_aUEmDZmmXUn9?$)I*8O+^77pBYE*@tjwI|Vm2jkX67 zn5@UuAi%H|DCo)z8fIZv6%^X!3-UhY7Kkd9o)O?hnzS+!4^Y{3-mO2n2!1=~`p}R( z6v!6{Tlho>^I~o$Wkq*fmx~_rC_hbDz0&n9hH8|pPY~0&ImoUNcgaewYp@KLyRi*m z^pX>lvUQU#2aqW9uoRq(sJ}O?wDF|yNqzOg5&d+x<^vt@ky^SplJJ2YGWXBI_L$-e z+m$ox^RUxSW~8Yba)8r>r)nyN@46JTll&aw{}dwlXc)a5x+15|i|M=4n>d9ac(Mt5 zE&%$lyW;}}2YNk#5C5~o`@?k0-?&Hyp??>83`~EV!vE_|-&4^_T1gGFvuS^W(mCtF z9jf7AgA1*Pki=g|ULmyyD4@pAI6OdOl~Tn_N^7)<22zr1G$cXLN{2+6v;-1**ia`J zzc0-%-`JZ=2T3D1Cn7r{q<`Jw!N?~$Av2-fX5-Lp5Ob0tWG7MsF)bk^)@)>)jReMAeut(j&ehOx-L}~Zhjok4$rZ9^ZQNY5HF?bPCq`{88LmKmCVzz|RNfIZq zn%C51$z5b5!;vwxNw#!Tz>MWPJ_(te>bNaWmVHL}=}B|AWsL4vCpr1=)N zECXHI>qfcjLe0y$rP9a`>Y(d`QCYQ$><%-Am>OeYxCr1(HhO1Y*`=3l^DDeLoUyAp zOr0JjmOT7JkKOCmEXo)Z0=Y_=g+5xCnQt%V)V{b3hD;h)+T@)||J)}FGt(JZXc|Uh zx#!@O2f$3=^JD6C5m)$1lcT;A#Rmr67Rv9c;Bl z$Urt(w7<278b-$>t-Yb?b%Xdgp)vGcRa4n{dbkR6|AC)lY8>yQBnRSdw`wIh*z_dw z^sW?U_Vrw%+-zwZm81 z^r=6FCOnlE8FA`$38}9BUS3SB=aDi=ASGip-6ztUjVbB4=-yt|#GYQ4hN?Pa(<^6L zXw9>Fz`$W~m7=M>Yp9%*Avjo!Csz$fm6|=NhLML$OHRW!-{;Ya8oWB;*C?B~u;?w~ zDOaF9{%s#SenXlB0g!{WA1ET~OJ;-|P(7$Ha1UOaURC z+k!oe`YVs+gc(ruSUI!;hpAq2bCQ}KgCx?T~G$9a^Te818W_H7U)OUQxp+PW9M zR?sh#1#9Uz*E$IgoruabBC-%|jAjy<%&3=CsoC_J#K;XP6UV6am04<}9-RY)mN*?& z>TFkWGjjIwULzFm09xRgq{W678L9tA+B=3<+OBEBu`9N1+qP}nHY>JMNh%fFHYyd{ zwrxB4^6q!<`KqU@dr!~&Tff%vtmnSh#S<8?xKtPMxO}UNhq(_hMqaMTTDQ}q2|Izz z_5fG($blF@2sh(?w_2>d>64)bkWo_)(an9c1hTxG?lH0H6Pxe2MFZ`ric-P|KIC;p^2u182eg`&vNs(|xX zz=b87%a53GaI!a%8ADg#VnILLtq=BZ{G0|TtY5hVP)He9iU`l>%P@kL)?BgKF$4&n6Z& zZcIiFtdnpQy_FqgGBG_oy!{+_TYFg}fGj~0NFc^)rS;Yk4%+DVX&p5l%dJkQjs`{* z&O}}-*tTv71=BE<%945g1{4W>+s2#0Lo*v~PdMb{v&GS}NX0{>*MdK%_B0X~$Ny~y zqa0>#H$R`E>2&6x$mHbPiEGjRp`(-Y(31tGUjZXCl~l{pR)LzW>`c)S4Eh^I8>3Q{ zwCesz0*l4cP^-=`_Sr{x{;2GFQ7@~GrYC9RF?~Xd*7vl+5xM@03@_*Jo-(GEzNX{0 z9UmXGG5A;b?g6Pn@J=K_bOO|*;rL{PLHOMehF>Iv;f0AMtO>$wKoF!5b=66`!{gxN zdmXm17^6l>Dt2Ya#wk{ga*V@`f8-05CgCQn=j6|_mc~D4!sd<~7Qrwb8He17+k6$P zelMP~0hq65um&UFqJ3C7Ul%YaCd@PA!mE&3LG{sPBF`3^rbumgTfnczfc+7`Va3Kz zJ~;`+yhKbGjt-NviVszwj}cvuWC_(bL%!FL7Qp|E8Kg+&zfbEgr}Jrvxg4pB+A6Dr zXC!kb#G5IdjG@i|r9ET|ksP*`y(z6xBLd02z3~L)e(Cj&F&IjV$C!b_$uG;YE6VzF zB#*crrpBCa8O-sP71`UNXv$SoA2;cjv;&tknV10RfkC+OZ1=Z2Z_WE4a5?;ykPrM- zjMjU!&31wJ_mnbll(&3y!l)8R`yR+HTI##fTW%1|%&*bS*5 zq?_c;g7l-^0WAp+{3Hl7eInSUy*Hxv88Ds|s6t&R8GY%JX&PTaExU|AvW6bG?ImdB z!Rq8Oz)ot!0LE7P%V{rxeoP4jSb{qUj&-Q+NT4a_(aOsd$3rd2vn(2qHksO^?)+LJ zK;Z^#0C~6A$43Rf1j4ZvLz{u81w5UkK(=oKI6l{gRgF)xbNj$Pr3;A3n@X#qSqlII@lp`F*L=t9q8}&hlc?o)@e#XZ~{dP9^}^Vw7Ac(K%;(Wl1wx zAk!()aiDSLp%V z8J^HE-w+WLORab>wUzCx9QiN+N|>FqinDz+mv zw5f@eH?1h4j6$^uw8NYeC##eAtG5Tcw*sz`#S*!NWn(0+(dV!xL~k2~Kdu6k{Mxuo z7@$BFwG*X%VJSQXme3VD1V)2(#iSGQk0gUCB7pLV&Yg0C>OLgUm({g8wmrNn&Hcd= zjZuUo3coY-nD)^y3;_PK?PItC2elhJbpjWeDLWQeV-&ic`I2XCU0P&Cu(V|-u@Lax zAdpp#{9BH^uo$7L{)-w+XlFZz{>7QRy7|4n4K}FVRDoHHcFXbDecn^&P6TB{3^G+M zl-p6gx2dkv#hBKZA0qmOVD>sZ*Jv*mVUKkCtN&?`M>VQ10Rl8ZNLgu9y5$|%fw;YZ zzj+_jEoxfuYv)biULKLlJz(&aSSdb93vt@VU4Nb1a8QJwJzAMo=*9H|7F#|vOzT${ zXD|xfYr(t~B>5U6`(HxN@3{Ft8Sj@YmR!6peuYNwh1x*5mV*^4oz@wJv>S0f^_nZS zii%6Fp&{&bumMS2$a0RL-$I2_(fdMLHVLSQ+gDXj;LiwA^Op_*VZ8JZIedM|zj;O3 zvh1roH|OPKG7>X1dmaEv&ekQukWGp zG#FrmzG4>4eq}2gA2F>#ih_b{otmVt9D!Wx@mp!C%(`?shIlg+F{%{T}eJ-+TGl4d1#Q^cT2kQ4vEAO8d4~to_tz z8__1M&4FcXl`e%eoEjC)vSZ|h6WaQX%^%0H*fm=#=-$Ss;@?{GYrn?E4#O@$hFUas z+-gC2OeXIR2ie64vL=!Y8t#;3vw) zu4;zNLiPpRb&v|PCR9T;2oyQ8AX$giG|u!7M+e|kO=%j?qMZSr?=9r(^axhOR>EcZ z{RlT5Lo~BBLf`sK)=BnAO!^{#d@^Z2-E+3E+Irf)rzgKM9-W75KoP+uZ_mRBFwTx0FQL zN|FT@0U|AmKpO8&y5d2uqC20*eAHy=G%#ojJaR=gI>Jrf-#%yLMq|JY^ICj%x+$!& zW$iiboo}Sl)WPg*Aty90pZq>y8n@iPHIvlmPV?Zwk>9)>5{=cpZ9nV3U^zK`^0^#7 zagSPcZlsP{=`#J^J+Hlni(5rYmG0{MwOn7AeAvrO6{5c1yZU|xbv)fKf&5tPrE)^N zR(AfRh;GAHrvNT-HPdCLQ@U&!g0KKPr1rf zgs|(L9&bE2N-%fjTS*L=m@@jWo8mxn^wwJn-o`RbGcI*59kso7j`@&D-%XTfe2yd7 zu8Ym>wh$Q0W&voj;%t9l^yUCyXg}Qwrj+5ft-W^~ro>mG+ZnyX;0idr)HyEGN_ObE zk7f~WM<-^HYp2z#qL!L*zfGy2*SQ^AuSGHU5NyOpK#Bmg>HrSweoxLxb-C~l(?F8; zPnVPG)IFd-?izoSh5k3Y#(&6E;4`qY|ARI8*N1;0W!e9Qlx6?-NZG%|F8&AmNcR5* zDf=5L`JehAj2uk=OUC-YDuF+dvMb_$k7Cy3HSWrows6(93joim+jcqfE3w7U!(WpZ2CUuEsgI(aLzm~VKgSYmdu zdxepsna00!e13L&Y1o$wUx2lo8j$-$c6RV1AQ$R2Ff)1> z8A}qSSZ=y>SS&wJ!Sw(Yed`mvh!vR6welCh?w@J<&ZVDw(bHDlvqCAHfmsvQgD)o) z*tbpMZLmRuBQ~t4cYfm2fjLUgL6pnnh<{h`)PEDq49O@^KrmfmBE3S}RxeyryPEL3mw~7liOQdl$JgdN8bRLzRV0pV3Psxeicz zwBhVyNfX(ri$0EsCv{{{*`>FI=Cf{zl3|&|^U-2h% z67+JhA#wLGGMo%gjO9A@ifZLun=kGyXXRVm`|Af9D>MYVXDOzOfacya_RV)Y;*;u^ zK0&C&r@$Wa9m-@`sk3Miacu=EQtR=NBIuwJ2)bY)NYV0elm7I#bFKG~zrxF0ur!eT zYu7q)-FObc%>r=SP0sp5Q!{_rPphA?hB{SkMM1#z7&}U(Hv2F|uI6AS)l$`X9;m8) zZrYt0t9#c$yX3whDrSLqQJj~Wl-Yh+b4EQrssKbwn#jPYF%l<)ArP3wsF^eb^e3c& zG7upyho5-tK26c7ySCVqjgfXkDD3?SIU~u<`WU5*Fpr%AuS(WiosuGQYikbxi@83Cq3#pEKMHlVg4LiG>8n7w0K7*TXxp03q;m!@rL1Arw z4J@1H)pjiIp}T*hCi}Cvp%CI=wfyU^a3{Y&L^~@0y8fa#rBss#a6|Q6wzlJ?h1Z(f zUa?QiDu%ExH@_Dzch^DQi*aPr?iU+E0J>vWc7ZhGa1xhPgwUCA0t3P}HcPPF3agX8 zNt(;9H_jIj06X|p)t`C9S%;WhnY&8afi-0~+C1&EE+>M*^N6)S!_#er@O}Yz)TqiR zjz+IfGe+ptitkX+Dn(1?*xr@gABbVZrs-N7P&(ieH z2eEbb3HO60Jp~nL%(>8z+tX#TfiBfIwlaN*1=Ua7H=#!Ra@0w**Xet(nl0H@pwZ;e ziuBt7SCugiwho?)8Sa+Nt$eO$n9Qn%Ap2&8DyH)6rYad;(Fi-!K>Vc2+- zzRJok?pV-TxCBIHb0JCjB+*_^aSt+fMr0ryOR|31i1+xeE^J49o93!KH}N9T>%AY+ zl7LX;0-o8hhHrSBjsY6KgS?v1{NHcUV`5ie{X8~%c}`8GqB)!+*9<4l|PXPVV;WO7E;o<$#NbYGSxcAH+ufL)r-jlNdAQ0tJ zCk&2=OrkX?1ahv)3>TOCAO^}n1?Q3Coi2)@!0`oIyrza@l3ZI@(Rf2bXr{J6pQltP zHo|Nvjb&rgfzYO6N^V#ZMe;0<(CM}Y9k&()YNWUsK&y}v^{iqky%o5$sG<*+VB6Cy z690C_mdfOIS={Xgt;ZkYZMNAYq2p*Se?b5_kbD;2Vp<*6O|hr`hC`q`=Hm=sn7WA( zgr?CbRyJU1TmJwwte{<*4)QGIOJ%?I!i1(?rSgVJcES)y=q=*_QhmJ1TV2xKm?jtG ztk*R=#+)iRq!Uift#KJfDCkr9>a0a@g`hB7ejvB%8}k=KyLihx@70wS5H6@e_l9TI zwZ!lJgRJZbWGaRFoIeTQbmqrXy3<0Zr0^Vaht2xpgaTe z-jQyn(44d-!=62>A z#nMHPfCozliyYQ#N06Bgp;gk~Z;`Xkk4er1Zd)mJzg&UkCJ(jMvF}9==SAvQ0KYp5 zKZxewaDC45#tzNXqy_6AL&{dno^`-@1FeYA5bncnE{5?I!iAsEVVr9uQ#o7B+`UfM zpVSO9n0 zoq(rSMoGV8K`*@m-hm5Wz-3czg}{n3k63Pw z^-JJr&a1fDx6w;F7!R);JJPQJHXyaY?mg>>R0h9Y6vbrnXWXP z4?YW5FwZ&7ovP3Y9*Z2!Ef04$n5o2D@=*c|@9Y{z5U;e6uexxDSY0y9t7|OXWV~38 z2mnNBOb}|TzKwLLH*9|m<)`IgBLXhO6;dpk;6{hSnU7#}UdjrVNnlH5(MElY7#1wD zN*uO_0&w5Ji(R5kjtb1T3S6m}pxQ3Z5Os5m{#7@ta#{?9NuWbT^OS<8B;t7`>f?ud zpWPTWw4M?bTz4wQ@MIe0S7!@07cTEYn0W#+>@|+tnH4gy!!I%&a%KU9VKv;r#Wj$i zP=n>b<#r7yrNJg)S3k_rbgz)T6%9f}g0a}&!9*M8{q$^1r@C>gfg?}$EX$&f#mTdJ zbP0%Jk~%mW)%n1+^r%*%b(>84FpMz(Sr9j$UUPC!O=@>z#r-ZOVv6ESMAR<{g;tKw zG)~qLloKv89((qP*=c)6aR|_~F^0Q&sP)<%`Rk2s@dFecKyRYr&w}5qzfto3ZcXoD$0ts*nNhwbCnh*s6ry4}Rr$n`8Ne zl{#pq0+f70WdCl zV6CHu5g*~dtsI~G=<&j8@O8jcJ^Q9--qbTF4p`rD9T{V4#Y9@tu8 z1mQiU?eZ+CD{Hi|S35Q0QMT};-1vN@jH?|tNsyM`j0RBkEBONdM5fmT!P=X z8Byvoc025d9WQE^;hD!o9hYv`JREw7z1a@b_hdgloTq^5WJ7GKVEEX*WC! zZ~q)9v`P9lP?YyI*2d}bcIj@w6L~{lma-!t{B6>?!W_)o>%oM=S$ZA`p+KX2raR&| zO7hZ;{zoSTOVXa?Hk_^^*c6dQZfhDI!>nC3lqHR`lHQ^r+92acJ!tnS47Qvcn#9V!kK zD3amD#pJ?Nioj544D=X}JV`<>c9Y%Y2XlL4k|k#TF4zHc=K^vit@M3-oySkLe<$QR z6uxNg4A}H~_z87oFZ=yoD%ez|JIrqELRo5P+jqQV&~1KG%%_c_ke2;eejGwYDf%FB zkPrh!etdML5D@H|7G5(2P7McwOS9bt9XQc^JXxHB1?&i9{vP>7_y~4*Ryb>;QpglS zgBzGdQNpmnmG7ltzP*}A7>|pD)0Y}}om?FvD@pNj^NbIjHblwu;+JcPeA!@57tNk9(E330hYFAV-tT)yc^&Sm!S zizr2o_vbwEEklv?D~uk08Pi};o>k-^%JJ>x6@NYX|qGI?5Cv$AbEj>qg`uzcul;o7ZhN6Eu$!mh@(tw|rd zL2)VRrMH6Z?17o@&w}_9x&Qem8OQ8b{U1>xt;z-t>C$+#U*p zTBriYMDDfj*6QE`@Q)!e6*Z;&*sMKT$!XsKpIP2dWy06(8CsRZ8=viq?P1J6ex+?n zON^szrjs5-0L{I^E@= zz=Cf;%3a)$*C3Dy6xIi0qBOAIH7ytGE6YBb*-Wm@C6lI~fLU)?&B;3$pdp%wNfUf;YKwJDXqs3<-h5oF+lzX!99D$#C{d(Zzz zbK*)k*I*iEP)8h>V%V1LhV{UP8h^;Dru2vxC^#n*NxYj^u*1HEVMo=AX9au1(Isy4 ziE->1iQumIZ5@-~%E$y!>NE=_P? zEWXk1WNFz&DKcw&APP{~@_tSjOiJNjj47z8UYlQi4K^HX$g8gk5E-q!n7}1RJlgJ7 zxIeV2y-%wH+LTwa46BV_YufWuc)1yapPmeEWc4F7ELKefs7=unowuOtZx*)tz?3$G zs;6^>UmnovyN>Hno+F4TD%-wTMTkXrpQpRs2AF3m9*vsBVN$jwAIk2u4hTxRA)SI| ze%w{Qid}I;7yVElc*O|6^xE(fYw1G1R69glqjEZ>6c@f+=Z6z~?bZfVIXmDO)3Icf z5Y_v%n0o3cA3cC=hrtA}=WMN_*i|jKOx8k*#XTbQ%q9goDRWS-RGU4v?n_u`sJB*D zpG@IyQgv5aq)7jQpcE4jOmMSceL}2dEz$@EHBNQKxu6m;DfB|+ zGN*Ty`K_I{TWLdIaO3hIY|;tP0&K$P0!0j`I@t8ZKLXiic;+6eO>5Ebx`a9!0BF~Q z)#_dwk8FxG3&^gY7Q{}*pb$8wm&dZTs=J;*`b4bViitt%C*}w9wrFQ-%^Yx!M2dZ@ zZ^Nup_n45$B=B`c9OP9=ZkD1W+gmaaBJz)V>XDlZYOu8_`5vA4axrX)QSt16qW!#! z9-HDc;S3^{62nGkpN`v3rKLZTn33EK^hc%YPNr3gWWTMy-BBpEU7b&qwYkBSM9f-x zrGTqc3cl_{=8FeXt6E?S*J$FL3pTVtcf(UHxbe~=Hh8wYZ1dc%<-c)@^RUddDZD6X z^fgC9oskLbsyuI$#k%=vtf45#CsRrt(lzF11h9YUQU9`U>!sFvuagi;e07aOg%O$X zO(}uyu&f;_A&HszOtMHBE zvHL{)uGeb*t^X1&@rmK;lUP}PxF|8*9o_;#*ee zlUJ90yNMU(e@fl~KVDT120kNm>%+87lmQm3CRb{!)ko+k-kn(59n!F0C9t~K15irdV|!@z0R z8di#msnIs{2Vd3aTnPDe zk0|`n-TtAL4d;jh3vVsc?Qoo{@!&0Ti8aGxQUa!g=leI$wcBE7>!l-z@x}Wvpux*W z@~7i4G!9UJr|!6hJNnWPV@-DBX8@z3m};L5<~wDV8nU!Jc`#w!SslS$kh4#Ky`w zgR30d=DlC4UhpkV;LdFYDSNOwVUt>Xqy3(uX)^SY{w!XIxB?G>MeLR2V69}naWf?p z375X!(Vq~laYRl{P&~h@1OO_=C(#GW$X|!I;KRn6P%F+X7$}xKj-6LN;}Re`9u14; zZyl(Q1H4iE)02gS6QIUc@3>BTLkXmDjJctoZLLrsw|Y&UHr%@1C&!4ET}&tlV^asf zrKj=cyhn}Zdnfnu1{4b*_O~%<4LkXfU;^*2M8}yicV7^bd~{J=ne{4S}MaI zCpY_*deP&G3hrcvFc+0?|r z*QlSCktFs7X-9br<3N4zHW}NR|-KvjTz8f+y_PD6Q${k@Rm+Y zTz8VPRdia=601?|YAqEX)N&mrArRzN{7?W$J&N)C2w&<#vb!XwVDn-b?SZaUXx6Xw zAa>}r_l>6z#yJ#@Upp6;syq$aHtjJ+Oh*pL!bPL2&Hr)gaBWBi_iKz?Ac#c1mr5~J z0?bhpzkU;&H&YWSCBc3NX@q3H{OmX{1`^xkyDQ;+cNQw zIOV4AjZB_*Sp|`TW~w<0Y4OVrP3#oC>o1@=u3@`~IYP@w-1y(y;thT*V|tOSM@d2E zS=s%p1jee{H@9XkFqmR3%=5=e_$9tBKNc?u@8 zl^8@w2Qt~U_DV!L?>EhUKg^u)Kikh=D=W)9Gx2jJq0>nmKu`z zhKKM5+OCr9AeLE6=k?;4y%N9<;%b&VUh~(M%l%6Q$?}U1D*#)Jp>3y$irlxmVBFz> zp7yVH;qXR@-8RE;3ez-x*CZT1>3#YaNrMhnzXBpOw3?cjDu~Xej3&X92iZ59UiYYw z>}cG8(i>dqR3|lPOWBct%$CS-LT_ZlSGqVC*Uvm0T+gQX%7I=TDgskocSij?>DKMV zNJ>T`=fe3`uN$;@R{_vG_soeZSxv(uvw#zv3Ak)R2^AI! zNS-tI`&8}e4_itHF$08FCM%}y9`ofN_vNE@MXf4IcCmsqn7S!YP>GDSQ8e0xBAAOh z9^6crXJ}3p&7!kfjNQy2I=!0Ywtnm|dP zf-+GI@5&TfIb;MWVWDd!M~YsO$B!Mgz!)mx_U0ENt408;yFNFYK^#ouT7=C01Q)HO)qz<_0&_}_ee#P^gXfMu8 z>*+wA$+KpN!MAzU4}52Y;@L^-PvCZ3V^+MPrPk1pW41b>VM(;@yN23F-cHQKc*E!3 z%Z`kb5Z#K4U|zrPZY|)dUmID~twm*1NE_=NBBfvyY<0TbaK!}~lm7|G;jLDe#Qzqp z4)&5(d(-FLln9j73eMR$+h$fu?UgOEz}!IZ4M3qc1>K##=1L7>gQ+|C{kH- zJK<*cVi^0@qK3j z^)d9(HI7wPrr*n-@6)Xehz+`n4JinMNPMx)a)_sHqN=N>4&2)ae!h}ypmdbGJ2gE()| zIHDv+m0LE3E6ow7qDPH`ML6o$X8n5FBy;=ABKIblnGOW2~$Gg0F58w zA+jrB;T$}$+R;E+(kN8{SKh<9M1Dn0vHMwpzg)?2%BfG7i?ZNd{=*!0>|&X5=DW=G z1sI=+eEvh&#foQ~o_8S=6PTZbszvI;40m#1z)6moDO-%%6ARdR)6b7jxRCSaDe9j) zuHQiD|9i*vUySVkOOsAU<~n+%|E}W#uAvdI=Hhz$n)|xDIh$bq27t!)7B?G_pzgB} zf%veQ(3_x~O>o{70@ZH{CJI02>I(45ak?SK*!W|w^&2Sef7)yPkEP|=|DKlrNm`!u zH^|jLdo2czf7@&Is_Qtdu%h}LRQ)2VMq&hk{A#?B){v3UbXJdawwtrGWI!yw4J)#Y z+|l@Q@}LcnFFbJGoayS85HG&9?VIkz2T){<*5UIZQM<-KX{?wmeQ^7IkXnXBit$?^ z29|YwbOd$z9%|D7nN;y zYwz0R{q0KlJDTRNoR2noG)N&{R~_Pvwi+{Cy8Ud?PI{%nSo$fobD&QYQrC&Nj2HX( z;z3%=?YK***>S^_yo*Fw50fg_p2l~?12Iht3vc+_Q0URFiR_T5)lj|ot)Gh2w1{~!2&;0D7De~xANY=&N!KT>bz&zh zUss_30VgA>aAr0!CS)t{H)F?j$Wv5uoh?bv(&~%Gi=f+VIK6^#@Y-y$;+ZCj0!HJZ zOu}SKAq{tYUZbQZ0U)uFa;(j`xMq!J&LEEDvZ_)I-hM4(;zQW*pJ08BNV3L88H?w* zBKqxdrr+$V*ZOVw2_L<_f)>1Upv`Q{Qco zQWJ#fA{raKi2??haOBni`_(c+WX88UqkbWLs?>d%Q)p&pj?dT1L}V=JNGT8<#-}KP zOfQ^oqkspRE-pUMo|oo2TFc-s=nI%@YSdPvu|R|6H3 zQxzzLo8{^I0}+e>jn=r-WzPsq?#?ujR`662sbs0K<_rvyE$BfWub)glzPOw{kM>7e zs3ZAx{f1U<~27KAZPifYcb=tzsM`v**toPscSx3~faKj1Dl+&ZQhbB;xZ!E}_s~ zG$_lnmJP0!E?hea|E)9hC_SP@<_kB?semis-@S!!Y8Gd z2Z#H0CobbkY1!@Cvi6?F9$gV<;wICQoOrr3hCqf3^Kkao z=zB88w;S-@{)&$l8!y)dugp+arY)D@Nkd$yMA=DJ=9LXD+(ATQtU@T|d2f6Mr%MBR zZ+KYs($vlV&BzLrY}*?kkSOjiDjw$tk6*oo3Rb_2LA;r>Z%&<19bi;6C=`+IQpWpL zcOmg_Van0t$z4x=GhO0lEV>a^l?{4^2ddZ@b0-Zh9I8)OQJT_oZEF;`e%o!tN0Ely zUq_O8YZjB8(EJsuTR*1v#HXs}FtpAC5i$J@DW2+T=rVCX%R4RR9E5dp@h#w*{%8DT zbB9}K0Nr+*9YO-5UywY%x?asl`Zo-(qQfqX+@|ig)AyIVi>hSq{>0@+YscsINdrf{ z^)@1HAAXGL=jY}5fahU;4F$Ioq+)jTcTNa?^i>KC9$26EjJv~2kR4J4 zXfr`GzAtz>AbGf)PaiSUdTZk4HsQe?wxaQ@KAB)RRWi)L0M}!JQF*=#DfB4iOA74E zb6BW0XqJI{6V_Ic~_mN%GkeR@n{R4VA$+`Es7agffy-D?LY*rG((zcVpYW8lOs( z1}Y2q!Co51miT7CvBfXAir#(~BGA7P{zc(WcSMz<#6xj+oeiD5<*Cjubp<0lkPrLV3!jVihmZ9Ey_3n~kK;pTtLi{ko|dn}6oNrm z4bFk{++o^4Dj9uJy?3inKRCY^%I`v)vC2$c*>RC&Wrow?lKhY;@Q5?ze|zP9$DP0X*V+CkMYeIpcGIba8CtFoDi*5gb^MRo)wo;G*D5xL>JZ6w+hv zY4KExT(}~!BZh;8IPykFR!?Uo))Aj9l1C@%UVXPbHP(D9IEy1IZ4cW6KvP3GQVon- zPIN-BA~Xuk&cjHuD7Ij0*g`mhGyNGJOB@SPdefeEV zibbj3OU#ejn+Rh94@ySO+?r%bf#P93c6Jt)gODvuiu6-O#~_2ql&iL&8!2Z6#SzNT ziXzOY@;G+EjY)4irRov+kS*^;IoyrCi#B!~9&d92{eP}sTWo?egMhw&`e!~2ZoB>Q zGXBHg=%1j9e=$ZSY(CYd{{^#QVEGfm;@>(}GX4$8|J$+h)AUl@#KO$n8K05yZ)k`5 zCpyQ($ocn8!D*5d>@R!>;m{YoRtsrmV?{G*H5m;;?k6#CS%8^!0Jg?w;9GexO{Zma zf}!%gd#=Bs> ze|}@X!D0SYn=|}7LcwVl0uTrR0KhN$$QkPK?m6mHKne7I4b1W)gJe?&^g@G0pB;TO z006Ix^tuLBh%OF1Bl>>BsGzv{vMh%)GYsZ=A?{&Z<+o+Y6b?Df1Nc0(|>u^ z<;qL7`S>uPD9zahHK1J;A0KpNEH8upGny>D6;AEbp0khbU?D*qs;^ zRh`=UnVo9-fgAd+Q2_N+Tg3{zsd81t-{3Ej>W!DWQt$ev6anVbc}Emuip~%a_|v_< zsk&A7o9V0aP?SZQEqfXDBsw_)Sbb$Jx=5wtfA78bu{~?lu(~Ri>c*)MeI;`^RiHBT zlW2O_!r)_-!LE`)!S7}6>wm*1i3J~(z_3wSSl{_2osvae!sw!7g?&Vqbd~lq-VxR( z_n;e}J450v@fnwhe3^)JTHyzY(|CLZL?lsl;5D);xwC$6-d{B~f1<2aGVWHPd>scgM?Dvlfcy;jw-S-e92UhjS;GtK1)t7;;&G48 zk!R>r7P0y&OtLNwp?g)bfOJF}Y5$ktYZI|QlQoMQW_R&XSm%Zeay*}S@>+IpQZ}h>c&CvL^ z>ndJQyh0S16)S62akL7)(2 z;Y^vw&j@yqgj>%Gk^sNvowkefpC4{`MGY2relE@d$98!ta&*~_5%BMVG8x&RSUFPJ zr5*O+&6yg8I%Fsi!LU>3@L@5&8=OzC+TJeY8c|eZM#8|?eD97AeGUz))#coI1H0Tl zy7Uu`=*(Pf&J|#&IY7%q#gy#}v^x3x0oKOj$qOCA!w<y`<60;wgcZI z$pYp+C&L*J329YI+}_dfkq?M<_| zPT`QA_>DipTTgfhUGQ>)aj=~eIWsS)+=sTrvUiSPGVYTd(!CkKS*}B_9I8uW#QVq>(c6=g!L}=t& z?Z<(pKq_GCn}Ik1@qiLtD(y)#g`u!m+mmZ*(@0e9e(zP_7|dv9j&H@I32}xpIN~oGs+ZyZofLxvXPF+uT5l=&NKDuMkrm_1jRzJKbe-uVZF(wBwke zxa>zGOvcRPVTbM4e=E#NVLhO?ExZCdNCz;qSpZ~@dn|9Qa%jT+oV5v_0ayL`t^8*| z0RzLo!xQ|kM0!K~rH5Uzj(IGQUgt|4xm*wP$TqW7PxV`W*Ej&cI7b2UMTes0_z;I2 z1<%BcS5XqCksyQ>4FL$j?)r-6iq}CpL%$JBf2xzL6^>Do;=Cq;;JhZp*2T?}-Cxza zxfb2jpP%}->E<8Ll7)@!|LQFN!HcB(XBK7tKgpu$D&c=+QElOI1}OIRo%atjTYTKZ z=7uWP0)$v*nQ7qzTh)x7@D?&H7*3Q!&&aFyfWAzBoz&IXvCJM$ZeIdj!C^VNAEK2H zsYi@T6Pf-vvuM45*KPBpD~4tcAb_$Q930&|3I<^0UoIiLXL}droMnuQ#`6LA=_Ubb ztnOb@0nst+U^ktn=}!9Jh~n&iWVhd{apGh`e=nQ8T8)~D?FZzIeX2OwK&+sHWRKZP z2PlxXTR-cBtQg^#?_)AsYw4>z0f#$?-Z2KCLD=qT-6uI2rXg4L8kb_Nm(5o%n^KWW zd@4^1>G$_z&@`|Zz77;?SD6}im|0P$@|%+<2C*8@Xj~73&o>{*^CQgXy^qu4l0SW| zuZ|zZqj>& zVZ@Ul2=fs-huEkODd+3XSHqc$y>)bO{x7h0&cnnCz6pA^LCSlMf&woxpp_xe1namW zmFDlz9NqwQ!v>>>x69xea>7?e^T2Sp9I5J%`NRcB7;_??YPZnzY3^rg!m17k5tv5h zQBiVB`mw0dGD;!8w7Vwuo6YyLYeTla|1^qoIj$QSzcMkf$yHh0Hh+-<^3t&M5J&>Q zA3=K#DS=IeNM=Iw3 zgGe>1r1e)jK=m1@lC8HCiUKrp--L<_$O#7kTS~!uBh0ibRo+8h(0S(A0FR-0pV&rT zrn9$40u)0FRSXLn0;)JpMi#s=r4m!-<&#B1V2G0MWi`>?d{c$%BVWgv;RHu!zaQKF zRq4a<0U!MNW&B|Z|5@Jt=b!(35%IqQ6#dvV^+b0c^(n9dYN0{uDR4JEOdU7$4E^a( zhiWE(uN`jVOPW*#ryWk?LJ&#Qe^vhTr46J(?H4EMUYX!V-s2ip6a|tL6)ZvUMx$PQ z{q+6$Nrq8^5D)~9-tUWYpOCRt8oEDwF|qwNV))}RvU2>XWBK<9=Wlq}KZ6t#>%Y$N zv;Xk>!UZlPaJS~$YToQ^*}(ooHyKyrQYA~^|>4ci_Wi17QaF-6sjdEKCm#GRWyk8 z=*a(noV{aoW$n5&9NV^S+jcs(ZQHhO+g8W6opjQ1Cmq{g_OthS-{(E2&pBg%f96=f z?lISzW6V`oRb5s6Xl4odi)62*6(u5uyfR22W**Vy<7L6?u3dO1Qq=B`yybwTuJ)=> zNdQI^JdG#Ue73W#Gj%VWxkzL>uS9OdWHQUg8q~|-QtJ37^U$d5a0fNJF=oJZ@K{mS zN7~3TTaxZKLn?Lh{_ z2{MQ`pqs>*g4w>!iT-_RKdHWponepS8O7cIZZX|MHfvr*4<;ZBHz_5J1qH&x zoh+y^?zVU4W(e@Pdt9`+C64W;_$)*mMwAd0l{#g|fr8lWj$F1e(G%y~XY%2wdskXg z4ht6+LnZ!!lFl64Ld&hv+Z}|?AxFK7Rvd((-?EObG+EM)&)^znIyuMlqUGV~db<_D^rPIMRIGRR=x7n*Lg7AK+rID-I=!`5#;L5AVJP<7XZFp(d-PV2Nkgy*9F)Ao0!Sgg zqJM<*k2E|WK|eR#aLT8?k5}T5m?vILgUWxjZW~=Gmi+N$@K>b4zlf6mq-rw$cbiE6 zt*ps1I}I23m8^B8wvPQ9xV0hJUQnDvawsU`+TWOw@f7BF-~J|-*T!dC^EQ>NNrt}5 z^laEB@f4)uXCmmLYTrAe0uYKIuv8!*Mj)uV5U724=}#N)5tBC=C;y-4mg)sM7nW+I z=}1xuB$Wh|C@KRI-y|I=-u?PV*?qUD$#PP9k@O5_rge>G{BFUTCOZPP=i?0`ZZQ@@ z;JIhz4W#Qwo#AcxUZ{8MDzF!m?PF|{s~Ln2f0RB$F#rG>$yNSII{ho@;a|VcAEnd( z)1Johms0wVaEQNx9{ygM_D>B}*v{7ZYoW-A;ENXhD`@`TFtBp|_kG=e9rmv~{14*h ze~+gB+8>JB_fya&ICL%tfts0Fi7o!SPOSf!xQZc-1OeKJHzQUSv1 z#4lZ1i4-ZPKbV6h>VDu?z3EM|9Jij4{{}D(xxcrd-JyvglaRPOgt|~G=8EH{h)1Gi zgVihB#NmYr`IXtWE9~bszUwkYk5OELY;a6i!S-VzuKE2(n^t|_m6>O<AjldAJo7WOnuPs*+wV~S8U?cG;hU)jwph7Xs?)BeG z2bMX_u znZK$$Dgr;<^hT)@qbD;GsYXZ&MzQ}yrY8tU8f%&&m8%^WB!1Lsi%U-A-|)S4+FcL% z{vas}Q`IODJ!^`Q^qGJABV0V-fb*OjfDA;08-Cz~BeKTZQXG&R&PLc5Aydc^rKfsT zn3;|^z#0b8VfPp0KrU| zm-fiHGzC-0`mlGnl$*~k?7#*N%4q};`Gq|^U6;t&Hqe4+>a$Pu0YQ^6FAotgko7`z z+uM#9x>qemU(Y^iJdY@{8buy)`0^y@`c)vWKX&=!>N~$Ou|{QQY)!zoyv6T`5!(uE zpORF28WwED^2?SSbj-Ab{95Yyrn3+wAL{?iQu6;wB%$!KWf##LdF; zHc;AhY+SnLW|5s-Z}o32^*s?iNhD0rlf;^6dWrj4RCaRqap6K_>Dkrxcz1ss9=)?V zXpCjm0f4~<;Y+g=TtCV5pe`vW{QN{}o}ADoPYUw9q0P|>Y*-`+aH~M8`^6Je&_5o= z4eBu{kYKVTG>&5irP133cQk6l?e0rJ{A3kjP@H&qUBk{z3yT;+^S$G!We^f~mxFt` zZz(|56-a_|BQ7uECsL$%joIqc_m?FEzAV(>EU#M~!L>=45`5JL8)Su6p;?8zv-Ls& zPcUx0>6<)0gj4!iI_9js{z0AVr&Wkv1L4f16Q7ZQ05Af~Us98_RU&IMndf5rv2Bku9{4cg@%_fPxl`rqN32 z8>LlY{Nak;h^2ekl|%vsT!#%y6JA)iuI3cd@^Gj4=yb>S^WJwq6&Q01hajee^O1|& zgAJHaF((8}$Hs&3Sy@U;acBcyuwr-%a?T=%xWOA9RY$_P31G8+?+TP7IkeQksfb85 z7%~ zo8_q95Q{2}Q>Tv5^B_5esoa1?r#BW)r?e59tJ9X=vwNyNpBf!n>UojcnUCnGJ|PJn zGekOH1(~vKj3rkj8x#x6#>$4q@mvs&&JY({Y=W^d%NmrihP4b2kzM)IUNtH z-M8J`9hBhF-X7(lPkjPn$ab(ZH}lp#R075kqQnt%h6qJiXnyQagr)ZWY|Y-mE@x}d zmZ{0{4VoL!WPhL7Jy8Rj)6De^$e*2gixI^Vn?aZFm4Exk9JId-75it<_BR^%pP-G2 zS5heB|D**>O+VX>rXkjg1H4SQ@t{ewS}HYt%yT_8+Fwg5<##D z>Vl6x6KJUqKjQUnDCw`g(-pbtU_1{yd@qFh=w?egb1HdLGb41)n!OjRO3!6CD|0&e zZPR#$mBF@bxwguzFt6`5U)14BmhTb-n!c9_KYgLzEG`YLKZ3fy5tsinsN?)A=<9#P za{u-+66ZhB-=7R}f31oCCoIRo@u$?fzt85$>f^Ti90=X7)b1qUHlidgGx~7rTjyeA zn9aBc@iT%B6k5Oo7>r3GVp;f(H*9`AaW)qx~ zUS=I`XyhLG#Fw%OP5wv?wWZL+i2$l;DoPQ-^z721X^oXJJ~}mNqNBdM(MMvtyPY+v zuvMC!TpieqxbBw?j~Cia%HW*wQ40jk5sJQ$&u}^W&=cX-aHzUcjL|{KY7*QBusu@= zTs;fkqQ{DI5Od-t-67WD0|%N-zd}M7NGBh?l_6s=WMPBtIYGIU7?;{F4>83`V2ZNy z>OeHK=|pABvheuys*?9gaeiaxg)Rvux`UYfCRD~7q%U=6vKp#RfkXLp_3*tt-RI+z?M8rg0VSl<#|F}Dw` zO5`k>E)sBH6-vx_iB>Ka@w#sP^Q{`R7OiQf+RYZh4(rkW&h~Us zp&_(y+TSp~=g?F(zH;UIlY5jJY#dd@lM8lFCM^oa|7a~d&;u31l20#)i)0Uso>rBY z=<{W4YwLO{?bTQ+5!V_0^7i>3e3OT8QVWeB@I`asEt!R6H@_}`D}pfJQd|^&v&P0y zuyq7K+I2a=NN8NnTn0V;d_~;Cgg zlDC^>xG|H{U`oHwL?9)9)oiYgc||bz^yiDhN-!^t=4G0sT^4bXP>!yAHbcyHimEcJ z7G{ecrmyFDd`5JJML5od5wX6lF9o2;;z?i8hNsNB)nv+1ynCEIw5hfdl3kV$4#g?7`VtHb? zYz4!)k&-IM1D4d~z+^`Xd|G;xGTERwJ7Fas&#u`9e=KDLHbVd{VTcqU;x|gY^!wRL zR(oN+fTI=3qwpK^$-pG*l}W3qpJzsyFz{-FdaplE>S8kU6Lptm<<^&P$*TOo${vK z$jVW*Y{werIVgP6=xU-}SPYD!5QJeO-A$x_R}>>xZlo`{5mG^yh(Zg?Mo(>V8VvUp zcM*OF5UV?U&xBBcz>1RI>_O~hf;|VLItTTE;pdz+-x#HoeWdQxGUU&2gFcc?Db6%E zJ;~w3pnaDrJnXUi<-G_&co}hbG|wcER(FldLc-C533z44!$SCRVWHnMN%3%rETb zIk1R2DYmxL^!5sMR71j86w$Nekt?cGuMMiWkju}-lkiS zjw^V2u?ru9ef-XI)`GGPh;EB}4W*rw)N)3MH;K>778f&H>$rWgB(HD&{RV2SseAEn z$h_t1k1XN!>fLgx=ctcpRdi+ZBKF&xhi@CKJEqU;bj>YE3V}BUdLXae7bEm0-BYiq zw$^H*8C!aG-lW^xNJdg&n1fuHlkh3PydzLrT!wl^-yNUB8h%fs0m_YdG~>d*2dUC8 zeG@-*ejN*1^NddT9kVF{>30&`1%t1UjWjqCt6B?W3)<$=Ugf%vrrpl@z5Cr6#n%IZ zpR{y&lXS9DqbJV6Io!dzi?C=kd9{y=;)fRStS(pLVhpvVFt*0%M9XSB>EWi8)F$eg zZJDoYl84@7(T|9Y`E}+D7vDUtdX1hYWiY-q`#NJ0LT4;Il8Sz)wzh%OtP4kY$5gYV z5Feg~Fyaqu9LJu6gkn9^`UCh1hu-WDAB*R&C$j)Ew>1u;KenVg^}|@g8c)mvsUPLx zn%%mjkJpSxjlS#wJ&L1+Uqhg|Fc?(o*rVr_6F9D3&=UV;m@H6F#@N#tODRA5Eyk?{M#!HCu6BGZ{U8<#KJiV!MT$)N7$^=NlqEsj0q@u?>F$#5KD12snZR~(&j#Vn{%}Hma~>NqE5$pCx3x>5g{NbKq&>^_nwPfKtZ41N3Dlc86^H0AMWoj z_q*GpS~YBg!*P>QZmSUsmK{A~g-l9}AJ^bnG){q9dS`Zq-fuV6Pp!{6FJyU z=d`Qo9rtV3X-dDMRn{bk#ZrGreE64HSBg@1Xo3K`*1J;h$qmKvx%);EfjYa*12mXW!+OIW| zMq3$aFopKFdqaaoiUyMcG<7mMq)wTxBf9#L!}ruTN^`xK!^iX5J@uo0x}iMs$YF}o zdq?QcK!W~*)M=LXSsh|#r&x^jo(n)y&1x97G$eH<%`ydB8A>#zNM!h762z=pgcH(* zRAO$_RI0!(ouVFal{UpbidKH2m9By`(d)^y_zNAS!bp8y7Gk{BRQ%D8(A?hSZFFBR zCJwNRA&7lIbnZSM7-*qy=2wrue4`jj?CrI-lT5h!2f*kiIy2N$LBquc!Uytf-w2m5 zr!*LQ@CIN!lFB-{WUlaE)j?3vp7AQ*9Wa)4iogWgib<{gWs=n`U}Wd2m7`E$0Q=gZ z^m+C^Uwh8Ql!eMEm#9&MO#`0B1cL$f$pA?305a;TaoFn+O_9qjb5}$bpu8{vP4vUD zmW;YK6ADHF#UQupm?939H1OD=w;@o%k4tGMhCEHg# zgF2Q42`_RoX9}O?Zn$#<=I?6$rYz)2w<1>KCXQH3G( zSMw>|n+-CO@Ov~?f)Y4VPBF$xAy2PV^8<>60O9vJp??PA95V^sly#U8)qWYWYOpAI z@!>9vb(J{7^(d)05i|u}Z>Yf=QyaJibM@CYP>G%t?=<^Nput2jzno(eJ}COh=7R=z zKBzFUGHJsN5j*yi_yO)BG=V9Jz;39e{#3HPRlim?Xt}|b%+>bu;PaK$7tu~|DI>?@ ztY0KVRx1}#m2hlj=;fdtafm?!rJtJ;2KD@H4Bzo+N%_M7wnc}%$bPDmf$!1T(t<$^@R8sQBO%O5E7NUjUSxxX?F$jxO#O395mE6b~Do%*>t0fvXNBcnH| zpn!quZO&?(pg<~;?haIr5KlD`Qc6H?41ZmhJ4z$2x4#JYft`Yu8|4?{ZuS%nw8lE4 z`@Y{ES(UDp(7EPSl3ze?F#;5|0w13z2p@U=B3^n5?S!OckA43M15qq?ty8I^R5PPF zc%+yEp}%5gbXnxUry9JUaM;@m{(;Umzq0>C#A0uuSwO|2*e1>2BPjX}3*m=w~-`T%p1;Io3eRQGNUv!q}mb z3h+)D$JLKng5TJUuCUL(VJ4FDm8o8!Y07vA48_URf!MCqVix4(R2Rc$ZPXo1j(TQ_ z_ADCaXUY^@)yZMRP>~p~O<(Px3NGP;*M1lauH-gtSJ>IdTo0!cC`mu=wXI1yLXP+L zKuCUf5MtD9qoWWJ%jPpad2xjfKoOF^6Nb}C@Q#TT1r7HIrd5JN3L*~EKUs^BHaF7? z2c$%`9^e9kMyNa;{_3gekQIa`^aPi>p9m9V^9Xg{0W>cngKq3L__ z7;m(My51C=LPDN}qjZyjuQ|yiBwR=s%WBrLC#O4)Z!T*kqOh@ha^M1~6H>R!sL6a| zIWwKmu6qSBi0>%vr<5u6mW+00<^wx`yI6RVKS`vp~_@dh!l8+do-1& zB`$PTM7Rx~GDsU9If{(gcuIyDbvQ$@IW4beaxu5wHY-jp>-*Cz&5s-ZD+Q2C4+5*d zm6N9x7}k>p&dxoOBDYR(Vn^tk{+y)CvyeW=*49HI9$YZc5{QFq7z{lU-ll{aMfI%q z$YcL;^wNt=+3dC#*`nVXuWI&9nV?ViUhqyLG_*f|0Mlq}dbkhZJfAIxD@$LI5Aapz zI~v%nY^(zUs|~bNe!Gc}RGAZCfoU}JmOTQck@usZoY zZpeg4%czrZEZbC*;;HpaZ&lUttpsH-{hRx(ge`sv+u|hbU)DzRsM{kUSVYF=YrdAz z*-CNvyrXe+W-1*QZe1S@uq8ke4YoaDvp*jT#n+7SK)7C?42ExlF+@Y@F$|fTvAAao zIGuEG+J0Og^Ds5J`@%VS6)9*&^A$hR5^;F>CaS>M&8XjhJCB8x)aR$F8_(;D2ynLr zt+GgaDFt$gDlUx-DNgNKOlT#1Ryxi zFFAMNiL3^rgb+WDIKuNHrhP?uyTfr)9msnRxtfiI@O`mw$sYB7K071ik6Eov@Vzie z{x%w4X_(*LlAS^F8`40hf52c8rS1bZBB&9k&Dnc&Kj&~@Q2MwCk;>*`v7@UGpTQ&OJ>RV|N%zSQ%5Ul16^i z0nQZEL`YsU|2iQOcEwQ%uWVFuL1i9fk<4F&wAUb`oNf-SIA-`Jg9>zV3azt++EU3; z0=e7vAsrN16!%6=Xa3M`?gObLbkp#TIP>iW`Uoz^gL>z|0Qepz?31@0h&icq4N#Gc zso_#MVv)e(+PTMD$ndc5njERf@9`U$;xLaiu~nIHsr{lm!p~Pbi?7;LlKmwT1=7w^ z7AyTD=$hJzNSz)9>E00*lGZn>5z{~!QzZ-h{NL6lcFA)Sns%8*!~5z9xEyx)7DAt$ zGcY*=hQs-+=nOJT1g@iGdGCD!1=}qT)ZQDhz z@((od+7ZHkh6P21 z+@^x383?XSfCGl8VI|H_;bya>XE(ShYI5vBYiM?k`Z4Be9K(&tKsv_m3k||^Si8}0 zl9%=7wh>!EqyKb8PdPn&_1eJ2QhAX>$1~@#O!RjgF_@?uP(NGsR*f$8zUB_AovWWx4Z(s*ZK(ter%KxY0;zn^pC?c-N+zf1RZk>7sKD${b%HLN>zqs(&3 zdJ7j>=b}nb)?vI~WtJ#d^W-!4-+B@9`O51DwQz$F?F~BKHU8AxTZt-8bR%SAC^Mv& z3LN`=kF}Qbw7yzf1Z$X&o$DY1Gib*wdSRwF*BhGsPk>_@%67>&TwiC|n>}g+cB0UrptCf072BxWTN=`cT|J85Oo4VSAhUc&LPkg8pMI9DN#bNnVM=R zv)W_s{16(7xgmJ9LHCF-PD$GV6>w-pC1kb(D!V?a+6)Ya@9fQEczc%|`rTK05G z1`(+czVCx;qKc>U?fd{Sz(BL?`JOSaBqC4Gp4T#M#N5=;@{$t~sC?PkKea$G-yP9H z)fM@pIdj!Cb@61i|Bdf6HdvIX8Y2W%S3MCeAgY@s&C`NzT4Y1VuCdSJegOviUZ0?h zEkQSfBizM^CgQ|0DT$6Qfa%7hy(FVpba5UFJ0>bKHg)`V_)TW=xSwN#xv;m{aqSAO zMU&OqUv}IF^B1q5f8kXe1s1o$oxZ69LIScWTfOJEStn1&=5v02z8`+=uh+aIPVZ09 zA945l@A4nN1kY6~>C&+8-+o@0F&!dWHqB+ENojS)dmoyR8%gYm7{h02cH7CnPB#V2 zvRlh_)E$q6Ug>t2TZPmscXg_5+kPAEQB@C#!_TVqWmAx#26qfwB+ry}xCV9*-JdhUX>_*uTX54_w zfFBLF9xz12uVNWU9$*gUil{xlAVbx~<`Jn<(vJa#yCZ4|rTQ+d72{R96 zsq6FKbQAzAeXla#V63FNzkJy(WB>SMRc&dkhFkJpygSwo!K>4^<_#{SKyt~9omxwk z01*SbnUq>5c=xtd)dn(8mZ~Pb|E4&h`|YhM!0es9~Y+MevX}cP(Vo|pD*8@D7aa?Sg#%Cs(BKXZ2XQ^O8_gLn(WN{ zt6UnQClQ5s8U6l*x^9JfZN#XDGtbTo!vqrEg`C^H4FRDXMO|kZoD$elKmxU z?4Z12 z%pGF-#wB4WfUDwWsa2~93W?WOHqa`cc1V6wI6X050VLikQ0^&vlj_wlo`QxQ5~( zXm(^N2)Vm?Xqrc^w!$$p&-6GIIyj48aE_fny;4Pll%}y7Y8Idh(B>pmN9%3dY(fia zf#g+q=!t?+Ih{~F3{90mEVvYjXG*>qzan8cDG=+H?jX`Teg?e`8Q1Th3tdWNX(y{F z`&7+d?K@UB&|;veC;(8Brv`n;hU+?|piV`iIhEFM9=R34wmwbJA)f29JqPWUsKRIa z$l+o!I&Hz50cRjnx!5q>evdK-oA2v9o}i!mQ?PdUDTQe4 z!P^xy@K182j!ER z9psA~_l~W6uBI4j$;3fut|C1|o^(yzASRyQ(wV@!Qdv#mgrhP^BSG4qo!UV9*snPP z`aZ%4n*+!x%zXQCBh`Dey0%rb`rSIKk=%a=i=>l*y)rpy2>H>cloz#I-)iO@eeYc+-d?Sw2*(g2LiLY?Zq2JkCGk-c}(aMu- zcSSEOa|XIRw0lm0C|*2w6|*mzN0g&jb==NmQh3^auf6W-QOJ2Pd9P(nVu&ssGcP)P zn|YicA)5luXEp$#q}wzIVb>|5&<@A!lO z2h+4SF2c5ZWv(Nsn4TU4?Y_m(FgR++jVSE&$`ljZ`s3pj)%dwH-SxW;4)+mIq-C#_ zXbtgXpck;qYAet6b(opKg&#mPOBqV+EL#kB`TSUROt6QN9=x6jhZDZul2kchRO_g# z`GbwHWGexGUOFUovofwCg#ja|g&RUAAA#jkx_6X7$)2JWr1;i~T9~5LW#Uiv@H&WB zWolz0!BM3*hRN9rs8J(r7BXaHC3y@(2UN@7h`b@3*zMQYkm9wVVc)XKLl`CluPEtLLa!p16kF?A>UpqqdsxcT!^xT()y1kX0NGtCz6M1oN(Y zaPlu-4tY8AuEtUVX3bcv6qJB@%IRhOih*9h-wSA%Ilq6#1PScoqT9pcKm&47F5(0! zEvF`RSddm^pj6Ulo3nDjwVNJOx3fU)P$Tb9mnc+5e{G(L2#%>CX*bfp(s@sVV=S$v z;9%I#KswMfP=}*T1>a05nhM;U&WIg?W(H*21}h>YnOhb()9!Z<_&P`(rbD20=RL6c zIp||NE^!?EmM6K-6f`Cd*af$fO4R!neoMJpb{5uYtY}3T|L_JXz7Yl==LRp~)xj@O z9kR>W()Y7D%s@g$In0lO5>A6jGzJIVbR4xlox>9jAoJ!9z(XPO=;hZq)>_5_Ig$9) zdQyMtZ*wRHqqGo&pX?3UI&&2k!5BM^N{UQG?8TFamF;)g_Zi;2>$c=N^^BeGU1)9M zOH-?fio9Ue9|Y#K?`NZmjaMYcHa|(kqd9xZ>>Xhba{h1Uqbc#UZDea(=! zS@9w#c^%EDyh!bm+LKe>$3Dr_>0j3gX2}rBbd>P&Ch~+BT8Jpm5#}!hGB!#j0?Rwd z+&e#3K&~f3frPg`Wak|_55RI`3qSrQU5JAb?Dv^8+f?k|8R#uj0*ggC-`x*6EB&iL zbN3SaBH;9}xg~FJl19r(65d;V{?d}a1;mGRgk5+~$d3W%N&6f-;kw245DS%E8dIFF zAG3z%3DPJDmVO#y2Ayf&!(}+cha5IRIppbdDMc%=dW+1ZU3V>r#LSVLl$@uk7tRl8 z+2kG}T6gPR!ucGe7G=Ks^;!eQgNXav5Y8aAfxGN(m9{d zO0c;Cpu6l{@ff^}tOI9b`6zVT^Ug<}j3<`V=R$h8yl)dtY<9c0W4OFnTErbm8Bf4R zvvLq4kVhVLVgg!MArxS;h>CqTIAFXifxhZR589(t7kf>HTP{00QD*}JbGjeo|&8XkEQM_B>uf>`qrGQ0h;Ky=&+0{ zCcSI*H}!YM*Y?bkf;EyW+>q^C|4kn^Z3d!G=Mrog*4k*-7VlRb#3{uk8=p{IRVxPVapHDka7O zCP*oq>ZN|FddAU_(ZK4kw>5>x_;!5`M3`cSj|24|B!wV>ts^`J7d*6q!x}1g!0F3& zO^lePc7~6tA+R7??9QjzM1p7Ch}|UR*SkD;hFH0cn8424S>>c;osfR{?l)FC`_!=~ zED|IDbOOEKOn2=?v1Xm) zV%Bc-syU}B0@F2MkoFmPU)C2)d~GQHoj;1WYxTF@He3B7ms-h3OISmEUDyx-wa;z>z+E>8{=+a@iIUzMVCRdEt99#Uy9Md)l&_-)TKpZ9E zATLxh7+i{(q5`+<0ScX4b+p!9{BoBO?M>J5t?ik_IHXXtplBTnuZH!_6=+|!)Vr4L zb$)mk7NGot7#J8GEPB{OEWsG)nxO1jkb89|SGyC145w3ivO4TJ+R?J$$(hWby=#D1FuF5a&V7f`j=9JAJ3%157bZ=9wNBhRo9QoW2ca;lQ+x91>~X>2u10 z*<1PRSzY;ZAtAllowdbsFEQ80;fAskX`FyYBZ68TVD2T}&E{#~vzNm2bLK~LBXZ=d zsjx*x-5GEy7%gO1Aqz2GgXqNFi776J#lf|>yfrsM22>omOdQxb2LJhm_11lTQ5Iq> zeVFaV-I1b53a(oBw&Eafo}j3vikQP06idM?qz@(JFyxC!-Wf*-)Es1eul9Kg=o*I3v$gze>@52{X=|Db zi06AbaHULZtRCan8qt&Sz09~}c&*0Uou9NmX|HcGi@ECXqKrmu>C$MP@n~ZBb~r`a_RL&-LX7?`tab#8C5~~kTeUx7ejzv# zNtV=<6mD@#nlV^sM6ho&T+ck)u3hJFiwD_ziAK8{c{$)(FRl@4s9fwJmJt&^==ymQ zM;#y573!W9EN9jaOCh#@CM~#uNN}j6lUXb430D!9VV2QlC{Rcs@}wZkSJ`|cpQu0v z&wDRaOAN*bY0;308o?WJJpEB@LUAWtCSA3oTXl^7B94BByQ!!oR%LjIIN{gZn%auO zBqy&M%W4qllo8G0Zz5q`^fW~t5kI(n*uH-%z|M3PEml3DJnc1Z!ln2oJ>geP$b2o?NGxtMF zBMn__r;jkffv}>YRrgNIv_Y3quk+@4R%Qts;m-4Wff;<*OhnwP!9W&!5c)4TvZ1&2 zQ@PEBTG77Of^5Diqt`4k+aD!2Khc9o9)LOD4E1lk#V>(1lLr(Vq^9|}oW8<)vnES$s@qUp23z^g#Znc;iW zB+$yPuc9QRdc(_kX61WRMeMV`KV0#DWf)8XP$mBvCjBkL;J*;Ve+>2dGMN9j#4t@P zBYYqOLdfStOs739EiFlLL}Wb&!l@Vr0yhRMsXf`#C8)F4IBu21eK(wF~Zg8XE>zBL9-reI)p6BKIVkDCmY(@WwYy(vrL^H(T`{>yO z?#quP#;B(QJ>O>G&5rwYlyLK}LinJLOA8ApNS=AE2#;pdckqdMw-tpLlhpm?>7`wd z(g8*3s@i&Q%!vVfo2h@G$D>@%g+C&&zq!8th`{~_CitK5>E8id|0I+D$OQk*VD%rS zGfsv-(e;04g0s~&6F1qAd{)(V5hXHM0Iy!s-3y1ZXw8x+Qm8h+Dl6iLM2Jumjb@)b z_<72(0a*8?OI)og#YpB)CVwq%3y{H89q+ss4jX8yaMf5TsK4Y{CYfj!lg%;_i?wak zQ6aBbXBa$>Z?I=A-@4E>ul-gt*+?cD#OK#nvz736(k;+G`oL2(xbLnEHx$mh^Ss8qdhY(C1J+Y zh-bImxwnPw*30V@{`5TAE@t!VGuX$qEgYQQtCzF6TdSv9$nXkd7cZltv{eQq&slJ+ zv(B89>*rll@DNkD+O*~*VQib20M50dY`xnuk|rFcrB8x$z;oRu7PTc;rnEyHe#)m+Aa@5RK-V2fP=9!CvOx2^VA!K-BX9tB>vL>$g3BH3o5gz0=Hz(ol zap9(C>3Y?$XJSeKsEc;=78dx$Lr^Lmw^r^9XC*<%S?^@DiXVIiFA>$ArH@)?+)2jrQTUY2rWT&*JTYJ~{R9L>yM=U=Q0s~n? z7lb|C69;+z8Mt3hp%Er*xsf}@`FkgBSBFuOmLokln>{3cHO_DYH%?OT1;FZC-$F8+ zun2==XZ8j-lremx{4Z8c6V>DXmg?|Y*5Ls&Ko@`>e^AFnMSy%n`oK?rPekroLXOkk z?L=!q55mWb7hHtv&A}J@SpvBN&8(%9MvcUSsw5wE3`GOxv!Xo-3U=^P-ZQUbF&Y#1 zJXAzaXpuS0Aw-X0>yWE)qxRFbMik@LK@Cz=RXQmrD+dMro5-;4I95|;j+f+FzN`bc z^KMukgIy(ts?skKhuqeu@IrLddb`77vL}YGsBLwCO?ho;Z)p4+(z*jTR3JDf?P7DC z*J#1(e)~b*QWunj?8A3c?n1=mAckjSR?7pK7<9b|*yZR>a+)rBS+qKW!*&{IP=&y1B@>CiB*lzT)FH#QSl{N zJd@l;ZseCOKAxDW=9lD=)yk%V)1#k4+kv~c1r>o)B^Xe?Q1)}mYhO=pa`tCd325}2 z{8MHLI4U#{3m_R8n7{rFG8z=9q)lTyKuGB~SaF13W3Y`^u!@VSy(WA>g$8F`aORoE zhpbf|&6#16J>A%lijh0#aK7IG;A`2zZ!g|WiWg^_`VctH-p?AaBOU_3ugME(1n5|N*%ygCLdiK4^}BEp}lM|oZN}tZpSn*r}k`XF$9>dJj|9XhCOJEL97e$ zKm4Xt{5TN*aIhFPyh#cE=(ygMkJ3*lvHhr)IwM!3qNfDoHUai-*z-eXth*9Jeh z{YEqP_M&);2|T)1Sq#z*g=WgN^;-f0xDYyWXd};7K2i?g+!^KbCsdWmD?-$y|2-^R zK8U^w3%AD%))o5cC+gTY>{G;JD-T~DWwXpDaa5wm9A zh8w}plI_m6$O3sZb{LT=qE1BaW?0>7@EyVz55Vt)eK9=N_AOzH>C;=)$;9{ zt}pmmpLmKSI~GXFh8$QdFvy0}<&O&?6;7v+tdHJ3anQ@JAv%E=QV^YMVfJKqX?(vt z+BYjCQ*-%E6%r#V>W;{POBk$l4$y= zQxt7d+@qVYJJmFT^7K?6RbSXzEz*S#-=P2}}sS=Xond#^oiIB#EIEtX?^m+U88 z{2^&UcR}ovy~EqEqL41kF|!Fq$HlwB!zS!ba21hm2z4jaW~oK(>H$vZBt6Yhc$3N&^XcX>8Jeu+{LnkW|ciLxnAq>@@<;gc6b(`?pyPV))#`nUA=htGqC!{zxw~n zm9YPB>s^NW`cI#q{DWqp8O&xIo13evt9hJGV!FCNc6R(eKi)5QdXJBf<)x*&{62mC z{CXQ2u3zrY0)8(ik(X@E)7e(rPE;4VCR2}!^tK`?f=stX3D_@uf%`79!54?CBS1-edRY3 zxGqGOvS~&0wXijQ)G{SN8P3+Nt^>z_6dg8sYHY~b#Z}AXa`i*iC=1!JT%K)>ZI-AB zYfAHRK8JbBr0xP08>bm_Xt$BiazIZb!s>*qs!FOi_l#hAHB8s+&=y`joc)C6sBUzp z9{Q&=i7tiLxb1uUM_u!z9l2FKfVYW#v-R8R2MkzHzdi#73>fjs)2kh}-(tQ2?x%Nv zO|b!QW5mkZ-0O<*!h(_&lVTC9R#GC|T0Sdl;!#=XvFFET zWh$mL+u+O7=NV$4QjIuMQgY+!d#gJ3GG|*Sta`~W{J8sAgKV@CoEqsMb)QdetAbH& zK%JCzs)KF|O~l`7Ak`(3GK~{rR#uN^mo-K!zwfs)YvR0ff$*xZu5;X#V_WKxmB191 z-x=zTg);Ew*6nI=@1%u2lz0_?X{`OQSECp5$lbxuq_`I@%T}a^@p9?Dl{q;as9ya# zw>uNzdCt~l^{z%mqU8GflSA)|P^=kb4_>Ru;S8|exFacbkHg`U&snz;I=qI@-uVLi5`{{?+_f%*1Fp37MLL5hFOv#X#4NHMG z1o2Lve)P-wz~NxWEWh!}*TikX)PH#|#-7>0ve0`g%{jGTnh5_*#GA9eBkGv~^np_y4i>PT`ek>AG;t zO2xKWv0brk+qP}nwr$(ClZtJplKQh&?>_(9-L<<76;vCrDmunVWZ%RbU1I+a)+=tpnstH?sajNtpBjN2))#rdZ?c zt$4YZMJ($!JB?J8r{bLLSHkOyEf90Z)mEx$S0V>Iqre;3$y6m&!j=~v<_Us~4d`${Zs7Rg1R@u>?r$U`vL4qn z(VbEj%yVX*_FLLFZ`u|(o3_yhm~3PWt*I%>r{T)dCfZ6RZLmY?@bOOnoWk z4-wps8oldphI(e&zvLeOXG1+R?SCHQ^Jg^B-$KP?KGUeVxnT^g4F13ae>?2IBLg}X z`hOS8mZ2G*8OEG01i~fo` zOdN_(D`gvSTt4ct>yX00jBnm?hNPG>V6WoiJ_PgFDG zSZ8frs^f>hnN~Ba(%wpGls!<0wz90oNT;DEt|35q=jqyKRC{O&P);8j9S0uonVBm% zTKobTRfZtO+Y&6RWa-3;%IG@;_efQ!9A_HTv%54u0XCb+)Ggj~xrD_9#3D&3^OF>= zvPEG>zyEbka@H5U&<@rJyE->7+n)L1VE5Q0FAo>rjr57SeAROUbV+^6t3e8SJ8W41 z*z2UJjG`2{tC~qscuDM{o%Il(qMc$)TDm!<=r7?#=sp(8q~QDU%t#-_h=w;tpPd{V zh-l5%reThG>ESO%(JGF+wk2C3zIYC_Ug3?U6{fzicP3_V8k(D->5V$p5(vhjqvVt% zEa+@WoYFRq0vXf9Be;4gR!z2KNTE;(1q>!f9|xr@r}k=FRJIVc(xZE6Wh3bPBHnJ^ zmE8o)7Zy^V>Qx7%(Y&sAu%$10Ka%%KR5TRs%5b$DGqG#|=M=z2d`Hb>FR&m+2*x0i z>*B*>dyw=~RC#770fl`wlf-Kct8G+W#BS&r z!z|>B1j*(B14RNxc|#15^yHsUnB~Tdqj8v$&{uTn?c+mq8PuEuWsGxA5@qVF6XL@$I!GJdastELk;T8Nz_rUTIV)9Uv;|(ZA2eQpRAWWAGUB z;)`>nT^dj3`mWpRrE=~sOnEzRU~2N?TN|~>m!kJ`7XbL+=0|z6&vRfzo%jANdg+mnYjx-ZS7=#F;aLHp0fH*$G4<-EZ8*+b%?OEzIr3j6eURv0KvWe1ci-Yr=s{w*uU zIXd$_zZkMhheN7lCy`~blZ$}oU=z?|=h4NLczVm?N!dC?Z4JLmNH=fQ9Gb*rRR?JK z%-mM7Z%5mbMIp9`J~VEtz|ejlIH3=xW0g9obFQ*YC?tv zFhgykDNh`BDuyIqpmIiItjBSS=%(?)uz3T0+Gqy8g}WD#Eq04~R6=Q31AHU(riNqE z-gy;(7RG0GBW?4`XW(v&(0h}pRXq@NiHM}0!%AQOoTm)TSn8&CV!HKR$-k(77?a%x zhD5hc+_2~bJ(}FWn1to6c;T8EEOpVB-tCU=$J2;kTsMx`w|dpWzvHENu$4AoNKf{& zl-|a7fBLGwL;5289)$cw3<~$29($B)|uh{BnOTKzI>7c$7@PMl4jGaV+EFT z;6edJMnrSOrtO!?_wnv1sG*N5uA)ZlS+Rh2zFh6@k9{eYM%CLL$rcO~cIe2U;!N*C za)Y%7v0}R_wObQQ^%^hE?BO@Bv+dc*^~>P_qD>mpbtMxj5j^cZr2?_fc0A#`tkkP^ zOzHZCHEr3RyLDs(8Yt|0(7AaL&KG2dstLE>i82%|Be9Le2@gTHKDfeolDj7gqQ?3t zY$@mBhGdgKnb1pb!r#!n&0m{LSpeEkU)89(fvW6m#sQkY*ffSYw1}8RE0c!yyZ3E{ zVTk~c&2^yO5yf?YIt=FeHjx`I1GPZW04MU1U4Dd3EOcng z+M==Y)r_fc1(^uEDTwCy#h2KjwNV3XT(O4pG3jc;t)QWZ<4wqbw_~;MAualTq!ex+ z^BDb_$WQ#-ogal{iSH-K8#5{2kU@9iiQeo7LtQl9J$Km>(GcylDIq0ZRa$j$hJRJ|~0%WCyZ=kwh8jz~N1J>yy z1C!#QX##R?(VEDR)C+p6Z;4=|;07oD_g@`mLl9~0=TQqc&l@rMT^FyqSu1;&D#iyI8 z0;f?7cZsLUhh;DM$e2`IJxVGHAWY62NGH8n@H&(RWABWCGky&Pm6T%0PIStvh3--G zJ3;ZLmvn?|fdyof058Rs=4URRoJ_PsgCykFp3jPb9#7)ewj(kxmCt>W^Lu-0ti%`6OD;&bMKyQgY+sp$a8_ls6ioo!2R^oJ~cvT8jfN?KSBioG{yc&q(13)Z@3$nHf2( zhBO@#x911(?37(M2=iC>Yr@-yQ15jfmpgy#CP*WO?tTvo{zAO}-@^hHTABa%u;9WH zefqbs;4fVLf4W}yPqR;0{@i8!53t~$i3d6s=6?qZ3Y0&yPnh98vrl#)oFsw(AYwT8 zV+NE?r-)8g&KnpkVIu@YEr{j#=SnxVx0|75;?9b=9O!FBJkGl|J>PnjudWhTqQaXO zcNggq#T3#5#l=YFe(r(mTgsWmo(P!AVxyFTU@6LQ;aNK+`}a&2ZL<7a zhYfZ^(6$-sLBqltYPu5On7e$B7AMnvCS5M|bKC<@i&ekwJU}XuM>$Iu&GmA#6sNcGTPa|RIsXw zVPj0XnqM+_#3iM+T1@~a`9b{}iDoSNsbB33q!jPwTI+3E4HD|Y6w{$V{IBH*lCSPZ{B%c(V!4*orkb+1t6mp;ll#A&~6(xRxnP4 zTiMyXZJl$eT$DD$WeBlfpPX+;wiL0VZ;$;^p98*D$L$W(%BKo2bvK4oTCcGjJj4QQ zR!>}fVACdpQ;J09*GsbzlPi5u!BnB(pB&M+4Vx%Yg4il%0{kC!Asbo=en&dVM<>**|C=DRmH04tlw^)wdMGZwh(N51U7 z#v+bGBUj(}dys{#k}{0Waq7$!4mX^K-VpzEbC;B9pt}uLKe(>Y6qB>6{{Csd;}}R= zp((Nvv^jmRH9uj>$5H@j49DWn->cBfpGgWdY(iDgpwnIl2DAnhq_; z4J?#}JOEaMUN9X~hc4q)@dF`{)|XyY4QPdH37Y`B|C@6L*NCm&lzWte>GS8_^Zp&I zxs@tbRBM-dE{^3rkLQNZnji}hV~2oRC372xaMJah#Nto)F@lnor%va=M12!-*a}W5y%*l-)Qu~i zSEgHOi3c9txKKkLT1b=H82r9PmI|p>oiLbp?}7wk;Xwsb^SF|bYoRz_1CWq8C%ugs zhP4rat#H$?yp1=*{RgrUutbxii&6oV@G%J;4ewX?1kFadT`;gP?r~>yt~c?~l!iQG z_QL7Ps12Tnk_e2(^-!xDQ3_ieE+gaoSq91zY_=QAvCSE`sLX~IaXs*Zl{aBwV&u}7 z`8un3+W}!6q?FhjLImv>{GFB}ycAxszC`c zPvS_j$zpuU?8P{S>!J~DC5z$$ADZ4oU%6l|oP-%`qRQqwaak^{j?V3FB?W}MA34p6 zbB&n5ish9v+-hNwW{1JrgGm`*ed&9^AvUcSaXY&JkeR5zO>6`0k6ZGF+4_A3eGt}< zCXXeFyIqO9Jz2wuo4aGo@`2yXCmv9Y!|XC@z7)x~cvRJ`ZrHbcosJZiB~a`DsgrGN zWE9NbmSG1*en{mP*syBj&G}`)RtDmI^!+ix&+U@+A8L-0%W+&|1^s7QHx_AqEls;{V!g^InOW_7R2i3p)JPD>r5lFA2n$8Z~(fZL< zCt7~sdbRpg!0gnOf=t6Kk4$~LrFyLW2{>@8B4U3JIQ~M3|0Ce|ZKc(};6msbS!n-h z4}n*U=gEQyxBjJ%`TuMUaWR8F^Ej! z#xP(J#Ey)|#&GKqj$Ga5?&AsUpwk|Kylz%KQPH-Hpd1B?klI)Xj8UzoL9BMTeCR=W zW4oR0TS=dp|u@ys|rT!X>c@63JFMxxz7chwAxB^kE8;@>fZJOpa3X&C(ij@!uTXB|lvR9Pw$1zys05Xg5=t4^lHggdc z^wo&<+16!)OueW`$2A4DZU-zebj z?rgnDkxqxxO&iKf0N?NuKv2lQraXE@CG_2g+CRJI8Jrt>Ggp~az-zwkY@}Guql4#y zlEH?vPEi9C+Uv9)2{^M?O!mB1K6H}!7tdO(G~s5TV_F9RsO==kb>Lb)Zw_@JXd5MT zkcP*F8R0clhe%{{h-t1bFs1Tkp>KQC&M0U~qWJCMXEO)}_2!Yfbn!W6YS@vI)DEk5^r7~5(@crrkJWWsCf2cFhn@V8 z5bOAwV>p~pVvRnIrlt##f|{e1h5FfsA>%}-|3<8SUXpII1uI7 zou23zkE3JeRo5C7kkohpsQpE6f;Jz{Cq~WdCR_oEUO&91z(H5*W_xTrUyCFS_8s?F zJJi9ci7@+f%pL~j?TA9H`A8!GZK4bU$!t`S_`~F&xECrmEqjV3Iq)j*dx<{DhnJvS zG+LIlley&P=+b;X93$1D3^viCjD`-a8{&mnw>|n)--ynUJebS`%Pm!5OFi*b^RpxK zv*qUj25u!hR*pw~1}0BqVxS{Gl|VVdO_qlT7_I4V)`QEwYprIvAqB4mZNQT%y@5FE zT0?U_U``yB-0g{6)P)Hl08Z*@e1fXM@94i?vu+n-qs+aC5=m`!Nv&UiX0D8Q?$HXa<2@Ipvi{bn;20J!4=f>;9GBw}BAfs$XB#=>|Y?nIN{aoEoRfs4v-?UQ#-h8yX5B%iIh zRGf0!O(+Fs!8wW4)g#b>XQ4DYV<9|WY0?=jHME~|dqWgnt z{;!|Ye|(UBryu)QXDABP1YXU7Vn-^JV|I7r%qhq1{ z)1&yuAAhdL|7vIa8;kzG`gEA-{!=?63+nX_WI zJ_7%_K%XG2A?`!lxQPK*M^!I9XD6OVEjN6U33*^o@KECtMHlI&!XUHtw{S8l#~AlEf$GPGUq`oB z#>(UM8sLJtb7u}y3nF}^DD zLv!9&I4x#X=ZhoIiHn9E5Jy2nJ6Ca~ETwWeNpyZzvMV;1$@#ltC_KG{tHSuU@uPkG;> z;jCBUFXnz@bL5%_z?N$yI$YzN)yC+1w>|Nfum*2n*5n9*0?4ZS*$VY>c0|0X@8tXK ze&yLA_$U}V_rRVoiT0@M0t|t;A8wLV6zRmRgQn6ruuQR;*|)7siNo2Q5_DUueLc9a z-&#Wrj}>ko;JXlBO{F*xRVXh!cho0NLk!TH&A zQ3jXcXM7$^uw#Cni9BMrXMC~h;I@YwOoJp_Oys`~=d`_EQq#>fb%OI7WA7ej)>JIb z<|_aj(%zqD(i>p~fsZ=z9pGOl!ZvO3WD$bFH%yD`>eVR~H%rY;=~s zKKrV@Ue93DiUn_I+_G7|Kj@fPTB0`dOXk&lNn9Ke%q~@&Mumb}tX^Zt5i~y7;G>m5 zn_O^%)S_SZl2|x#^iw$V(lG^E*#LIj_2BNe>pRk_mFninn2MNFQTjM7g+8W9!`3=1 z<>G7rA6|k(f>d(21AvW4a zz!q3JwF_xYj%9vguBmp+4P))0xgylL34@52vNJhy%F*A?+v*@up#)Y+eP1v?frBlW z^l8L+8`7U7fI}a!x%Y7wH792EGhCs(Q`qF`QKiK3EXfwpVr4bWO%06=LQKDV8TP^~ zic*({_p34P!a228)K`PF^oM=IWXB{!d%TByM`F|qm{$=@TgPi~qZC@Dt48YZE11m% z$)o+UKpJiE1_K;>5nx`@JzFp%^|lX=xNe}!m^P_u88#@>2hPLy({0?M8~$VMxkt@9 zV>F{vCw*%2hb|xT6SI;2Hzkl&P9$j^TTvgG-JoRby#qyOljTkz$F`|Ona1@YGR$9x z{75Xul}=1TI+VST%ZF2#-;8kE)cB4;+AaNgpF_Kce+;{=s9xnPEneA)ixtKZVOpcN zKI5>f%x!#}`EE!M`tvTVoxjf!I&xi_g(W-jkTkBWKf(0|Iro8G-$n|-eRr$xJTjqa zt|$FFD(x|s=}*AqOLW(B5`lrSRkI~h3rsr@1*2rG(z-Pb%~V`zY|M3w5u#<>lF zPP%x$=M>d3y4=X-IxXpnTX~=x!`(-du;UpxVG8p{<159WM4iBSbhQE|6h$tgkaNFQjVXHxJC(N5l>uIg=h- zCQn+M-XM8E56wyh*lf>X5;w!!Yiosox?{e(Yq!VCS8aOJ3AMF|%;S=nJd+KSX@BJ+ zMKmXFU4dbMLz}JdY0NN~&uWsNsAf}5i87i3DZ!lxYi4t{xiXNTFDyHXc}7;LB$bwmko&!)7qJvGa< z7Szq%QR%mqc$@^5mGGgO@ICT&-w#J#y&ovoia|4d}-+sy&w`8{SOfn6%cn|Gl3OercHS!GF?d3(kVidK-@Hv z#r-U>WzxPt_>ycNas*M52<(!8vjUyN4nS;)04x0Bo;e+1jd8`K?)MeF7G9yj{!BiMj{NGPK1=M8B`ns$F8Mzb6N_?&Z8B zl_oh$z5X!*Y`zXM?~%3ZUAwMkd2)1{%6q8mom{ZZ_P#By01=I)Qi28Xetg+mc^|LO&@jkmD#JS`;IeI%1I~*c@^rnNPJ}K8y zo^lujC+Abg0H&u2-K`~D+e$}<2>8RYAoyN=dxBs==@r zUXNAeL6o{JipwiQURKN}W*aN|n_;HSxAdlw!&0Jaj$~i_86zMA2PjQl6=wL|mCSKd zln2DFPijVToaIQE4G^P-^n>|X+Ocx&S(UG>ApC~A45#0_vCbD*GW;#6w1gd3P)my3 z113Oic?iG}F!z@p4>7E{RzrUYUIGfO>o^6U`531vpB#!xtsH>E+)rIjMZXmIaCC7o z4skhnOZ5ma&jo0^beBXNb;}Grla6^?`;>KN!p*SNeuXFwAzYAOzU+;BrluKlfFdr%(YC~^^d!V2 zKaNF|b>AT>-aH6k8eV8gL0&>t0Lww4Y&m!Lmd_cOr}OK_z0LA&`DHi#qfi%&u6L*`0F+wf5DS>%%i;F$L<_cQ`ZAs1Y5vX zHEEA$kT~HUc~u%LpYdgM?2iEpe`lub_XE~HIi499{;q$fXZ#=Z&;L~qEd5WFS_v_d z=KZu^cz=aOtq<1iSEGgLswZnWkx5$P2UFkaS_}|Bh*cxja-|Mf>1@#Aj#nrrW5_rieMd!CY745*x!B4)1mXEshFL)J;~ zD}HBjArE%3N_ah}VaK=hH@F%}d+N<3-;VsX0VU-o%Jea-gIm4rltj;ia)aiA(rDM7 z&89*Aj(vDsn%1*By5)FH>70svNA>`kPZ#-3yA$1SXTHC%w*O}4`_m}&FDJaeS&9Dl z{nIS8|D%7JneH!~?0@;EKix^c8>9a^;YED5Y;A~q_CQeHrm!9B#gD$zf}7V?_PVs; z&!;diaL*`Gh5A#-;gwc)>v6kog-g^a-1_+fAg78OP|;`!&?~Tzc6Ys@m8RbiMf>H+ zm`?oqZqQFF=PTJaQd`*p4uMu=qjr zS+%9S_-YVH8eTjcZ;qX~RFT&~<*(As#4O^lEoqbp+KK}+HD7kg?9r^I7^#Yk=9V^* ze2U9D*G4%0GBSsoY6O@3%wTygRc3|xVD;qT?7p<^Y?QcDBAO~;{gQFIM8sOZnyLt; z$ZR%mv0jC~7+`6qfdnp!fy`ROUaZ0CrXJUqIkS1y&Fp{LZ04yB``~64G+Pi;spDhC z@set_K06BSPcT03&v{lLQ*4W|c6o@(-RE%(Z~(PgQu{tG0Do`(1=}wk47Jak@Jli+)S{XE+LK8$Bg-uQEyKgE0ufoLO179rZlN zXFT;z=Or+V=ZXE#nZ2eIev4$d@b79KRcTfjS&|Rg*@BTtlOna@DGSs$4Co2)G<{*5 zL2WezV!4zPB{}S!_o+d=?$0w7Vks`L<`r7fPyXb72wEGAdu}G(1T9RQYn$g7v7VXKp$J;?qgtkwYTH z^#R4}cOyoyCZWog2TUs5t)?EbcnZ51u;M^rfH5RaE zmz>fMMH@F4I1G9zZ7>az-DqWjx(Q<9m?Y*yF5jz1#j&{93$2OP{4xY$5aHRoX~RJ$ zv6^gxSbKpf?tJ`G=%S|wRDAvD+!(=rlnwe6X2uc?ECn}3IAn;g zXvvD$Lkn#ZaI-{{iisbNz`YFc{Lbw0jgcID%mrNnoAOj3?^AnSP1B&x_K;+63_DrY zl~+Vuu2+5Cw0+@rR5rY1e;PAshKH~O%>f>&wSqHmi8S|m zz7@_hkgrEc-Y@kg8-hruIs&y+jexEDZW;RYl2q(K=W`x<-mbscE*Uof zsTNeKF^k!0y}!rYMb?4typ?u;+@XkUc`+Mi%&Kc@SJZ=@5NEPJnQ)d@QL>!pa!CmH zC==jFPaPJ|D8ns*^H#(|8~C$KHa240{Icf}EeAS81-xHm1W%JsS2n?z>IynxFd>RZ z?!mw;eIZA*;2kC2j|u*rXLla<=!Nji(F0E=En@6+CBydvOi0_&}B zycUhw=e%)B?xSPDCn;4I63e;8<{28h8U{8+(lBZf;P``UF|f8D*+DWu4J*SsPz@v% zV9>H~DeZG2nGYPSjFY*7Ix8r6rzLC>+KS@zY9L3m(X3me{zT#9z#w~Uh#n~0uJtB0 zDCX;{GyrluZ@!I%+uIjurM=gT6H?e$W}(hUde$1cj|fXay4gm?Q6x92-D!({+w?Ox z5f>J{PEI|VUZ!_nQUh}Eb%?$k5#=f@O`v;|VSY)DY7rXY*ckpv$%%J8nCB&aRxNcz={ zd7_hJ6r+Gajb-^z7Lhzt+Jqln?Po=rTV&vsj%H~$&3;2-kK|A;=Bw9tdkCGq z2jjPd^`~72PA>8z@*#OB^sLfR-t*Fmx ziX5|e+H=&`p%ZzRaqc{Wd6QJ$hgm&d@?xI-Qe{r>y(}&okC0fOdlouqHN%yB4mhEX zn4(t+jA}1y6|cu%sBqsl;wP2MU0M+jxK+1Vs-i4x(E5jyeZl*V? zTAGgFEq{T;wMWpKpdCS~KFMLc+J}K1e(jCVax_~JDN+-O&p%V|ccxiBk$s;eF7|vk z%(ZLABR@c)m(pxsmp972YKIxA8eP>Sa`K1!Yu;zO(MMTw(Bn$M+eJSgIV)M33XREnc)$(U++0 z>IcE*7fbhpJH2lQndaMVltWTx5}y9eWP!LHuyQsbA3LnLPm$G;P?^`^Vc8FH5!!hQ z5gZCCB|Sris?^&*5ujnbX;G6$XNU5m1Cu~VaG~MLlre9Zy+waI(TC+-S^v!bbl#PO zZe{--bN@w?_BT@FFD+_pzq7vmtCS(eXfEhKTGW1t32C~CrojRu$e6dWCj7lcZ2|Fq zJ6&cYi(~7FEy}bEl2~FMhAzRPc_s*ugIYBgnVguW0dFIuFGg;Z?|x@n`KJ`1)YA>% z8|!x8#%w_jm%@+0^0dU#GEnV)wj-xKwAnQS?g8VBcL#Jn94%FA1+%6lzi`5$%Dn*e z$yX-)!&00h_9{v@g2P+ zenbDxK%sylXx;im;}lxSum6b~XAzUj_Z7M!zux@W9`m`f5Y zQ+YUDERWm%^_GqxJ-<6|cJna>L9CQ6h@;#pave=07e81CFElI`zGxL2QY@H3#Ew{Q zR6CH^yJ&ku*v9toP-Qt_;XSEWl}*yBAecBzA*V>;t^ICn+pdO0K`kCzc#jGeFA%DN znSz+FX@L^>Xl|M{_xbB(+@Bd8IB zOrJL*vg==)-jpnkcoh3t|JtV6dHfAa1ok6(;fm62V@S(?42Siq1st z8LR89#5NRVGbU|PV&vyp_j=_1g87}r-`~RXWRkFgF&E)SjRU|8YH)ZV$ys1M_oV-? zrYO)5{4US#{5K!wX!fl+yc$^w{&b?ea@}0#*yx7v(U>^4uk~SwmJ4j5UsrLJb!{G5 z@LSA@uo`^!GFh$GgJLa7Wu1p#83R?`(XlMx{a{Mp<}Z!C%8me}Jqe?x&N~G4%0g!C zXAWlbE!}BXj+|+d$xAjCNu8i>ir{^EyWS!pOc_Ziv-iY-?V+Y+TPN}=9bz~|kX#`- z#62ppWyt72sk-yF6cz|AupJxZ1V}B$TgsR}zJ@{fJ^{D0t0GP5))4}?+#O0~qKx|NfjaE;lLGyazewwjDq0n5!^tC*a>})XN@&eNo93Z6PNp5f?FQ@ z1N6C-L!#cLK~GXF)QwZ(+vgTrz-Tr;Ib~X&IxUomo_cWM9y)WNRY=nYM^*n`{72(; ziU2B(e4Lv>l7al2O*RUie5~TM+d<05SNOn$P1-Awc9=v3_*mI|9fZydk@uHokdVPr=yOlaiVTBw0a=SfIkKC%&L5#( zD1{`1c71eJk7n9kG(i<_@dIk_jvcSl8GM%PJM0|$QC4(=7k*g_9e{v&n(p9#lEP

PJg79>%cjl0!$nw@y~2qp9x#4|6!FKejyq0J9I!C;G?ft!zN^Lzqo;GVjdS0+ua-6Z#=^Ij(-O-Awbw&=lGqc1N**1AdRT8&@suv@UaeG|tD^-a=ovNu8DLS#xf**?Ur6UFvbaK&o-3fxK<;aPvG z(4+O1dgbk+&Hj}TK^fVHzO$kkL@FZ|#*^%TTfwG;O+GG#HI@^^Z6UwV)iW9&+wKPr zyR{4d`(60+;ry0tf@!l?VbK&KRX4XGjW|>zp5HX+TZY`#KsZ!~eL7wO36xcr8grY= zjggl0#@Myj0e_}W{Xz5DiL}tJ>vcRE*=17DJyMI932MRz|=glyq&eklOgdXF$jV zhRhso@ptp_1`E0lntM+n&W#`rt2viQ{r>uZ=9X}pv_-z!!Wgy58x6NJU6FlHC+m5_ z$RDc@wOG{_TCDNOq*t|Kzy}R+cp1pV17fJmh%`{^p^~~!xH!WL!6Gm?&d6DN!D<`c zC0`e0UFE?6$86XdJO5Zu$7=F?{T&RX|BL+Rw=nSkH<$jSHirIBJZ4<2`gf|%1eI~SbP=S@GfFp>O?lrL#%V#6P;AmHJ9>Hj*1C}T9t07I(HuV| ziv!BT_#j$P0;d^j3d(>q^){mMQcp&@~CQun*tN2>l(mfN| zqZ5kfsU9Oa<#TaIn`+0ze=0me-HXaHig&;krX-Jz>zr(rS>N#(m1Y|kgi_1-ch}B( z#eG?`TVR%btUW$D=)5K1NqQ{UY;Z{(lX5jp3bJv0xGetwdpxFs=9R_Uf=KK;)YJ|$ zR7GxwSw#`o(rUmw7}QaNPBN~$8?B;!k~E39Zm^z1vtT9Gzu$4&=S0mx3Fv_5U?c?h zmK6ytk455IZ&Iu&)L2Noy*Ab4qs1dDVEf)#hgjhF!C^LAK+FqstL9g~Z{%F*!Su`c zFtRAHh9wewK5n+bs&Um1dw@$LVBLC>wvUA0LT>ziKt={o^@d$i={qZt3`qP5chsW_?Hb;2a7$udU-U z^3kNQgD72onW|)7m9XLT-XOJb_{B6GK98{$VZ3-WD;($4ZHp-T&*9g!UaGhd(qk_L&dA^#P!S zaZw&h3?7}=I?R8w;XDm6Z%kgrc_jjypiDMR$bmrp9%|A(5Dny&bAQtEVEF4@4XK#q zE80u1jN%YrH?Jvq5VisJpzxGJx8Uj!vL7HK08F1|6O?%YqSJd#56Qj>*teiYmAvm{ zDB-1ANR!q|8wqH)axGsPVXSMboKls2#BliV9Nya1<3J>CIb)bnz79=cDI}? z`~Y#y50Ai}p!tLdSa#$I!o9wI5curZt+b=ECqDbb_vV{Hf!q5H^m08R%jxv|%3Ika zs18{8nc<4LGXj!d4S!<+_KLEq_8wv)BHe-`T#k#{cn(hqSYk}RRwMz)TJV5-aI2KTl@1K`- z<2<{(TgQb3-TcZA)4A5#d8AVpg~9!l+|{qMVOr+Fyp@zfe19seP4}}qcVQEy$taJ% z1z2sM$-KM0kT^d1OuH9foy4gK^y}Ab^_)5ptvK!xb&$|uhXkm%5x){{+F8bE^yizd z+@nF5+JzwJrvWNIVkcTn6Y`|SK9{FJzM`&Fs4H~!stlDJ;)R>LDwPtfHxeZ#AP`Vb z#ZOq&I?A?3k?w$QVv2R3us1FqlZOjOrsH@Mr_^ok$rI4I>hsnpNC z+64|-$~Gy#I%<6>UZgG+TI{^Bj_|`?faI~jZya$xXb``2w%Kr%?H8a=cq@Hhh6XfB z^&T!St#T?e+KG3TGCN0k32=a9wgKN(=SNo#cWxhKa4n3d*M8!i=F`a|Qb6%b12-y8 zk4n}eTvJB77bkjTx6>d*t1>1`NgcEB_=&Lx#(ItIAz+69Ez;#HsJ@W@OY_0x*)d`M zncdrnZ_8?(t4IO38koZ1zCY?31V+vK`FJ{CUx|$*wqL$fL-05ey|nA-P9+Lq>x#-rw*Hz~evrj~hxtw97I;$6AnZ+)6I9tig0{(wqq2{Q$PKz^U-?F` zJ_yM(-mh1HDM@~*`CGvbL2aKx6DZ>;$j@c)N~th(F8|Ma>`2B1eH9j4RsTWA(lD9w zS7a<_9~=;7x{4rKKV94+x4~a5^sV8ETV{yJ*h}s9dXQ(k&+#rh^3w>_5DivxXKSYf!Yjvxr|fH+Sb z$BpNzyX<0)>Pg^s?)~6G=Tmn4L-sfyb7n!DTQet~QdsbK+5nS2X1CmYUQyw_5eKI5 zzmW9-o@U6v|BRP@OPlz&dEh^qEdFL5nE7{u3Mo`b%F$Q;e>hZ>5H_&?b_m$Q37%D% zo|TC{psb}47=j)EP#xXnk0|Chjs3qxG5?&`{V(+2zb2;t19$bCF#Rw6mx1B$P)wA% zl;cJV+SZwxKBNdR}QIH6coZ1_sAfkjA#fG z{n+Q8KO0LjucyB^s$~)Rg z{$B2mi8^2Dj;KK~+Rlatjg}*3BG7NHP@-@v&JD42;4zuNM`w%j;)Y|~X_mJvk;H?X zaP3}SzNxC*B{>(j1+OM(;;`yoZ;{!@CgiqYGbrefLG^{@TV7qjah<|cB00PswpaYU zqPdP}xG=^jIeYR~1d+NY;Br=Er;up7?0K~QJ@EVSqxLYUOfth7qA$Q!R`S|ltx-7v9@R%+ zW%?xa5{ogLRxM(KbAF}x{5CwGXWdvX{o&DKR*vp;-#v6-RW^PWn1gf2frJTkO-H<8 zhg(Gm4`*byY;?5qh6|0%J@Dw`SBQFv3bbigC>PjcT!nS&2DoOn)M$lqRe-Mx9bm-! zEj^s`p7@@2x5PeyTo%+)2)o)O0Ob?pIMDmSBm`(7FstHf3PYLsalXHd^!6W+kOIF; zPV(TG5JAh}_acqnc2_H?YpCN_Y6GmR+JMBrHlC#dw8ZbXP}#qpq~`W$;-HP75aLawW?jJM&qk6Xim z(7guNL3NWGJl&gza@&mWi(f8W%D8%|@s-aB_0FuA+>w8iGwnNLZ9m&`G$;}Fk7Q85 zf}F|1B5W5^w!TJg*lsLjFPy};oxj#?!4xgVN3kr!r9Klm44Bt@Gw$6kTh=c_<}}$ASLfDOdFjBxkSR!#9l2k( zltkF^c+VomywPGMp-p|b9)y}X$`5@_@5V+Qz2xKJLWiq5M1#TX=aIe#7G#Zn8F8Pr zrh?Ehr(Pzi+E0mq8?li@1$obi5Oi}1NCKp|KvZ(VIEhEIhlvo+g?&*cG|N7?#48_O z#Ji;8_B*tLyS`67pe;o}JD;P;2vPxPL?iUwUyUW4g8m5%g31pljOTxB5!svz1UC$1 zj~tG6Owv+zd^?x}67o*Y0X)&G7-Q`GL$9PHr&ktuHS+7l7hX_?Sxy-xh&$sorpyR^ zWL6OFG4M7)IP4-%zkGJBx;Ottnde;TI3r3sC40+3?03Jt(tWEcetJiG-Ur0JFx8op zh_F;fZZ3lYlpuChFZwsjUTq^NJ;!%AsOM2ENB~K)IHg&8`TFyr+}kfy51aDU{U4g0 z2_9KuX;3LT+G^T)FMTXjbeG(Pz^D^!dvILHDG34uGLOnUbn}UXrNGAKXolY&-p7Tm zI{;v@t-nw@@cXxCq}1#VX~J9pri$_^Ay>tUDXucYfRyC_3blXv7?el&Q$L^uFQvW|5r<6nhR5-X&M^gdkDStK!j zeb1m(t2(&CJCbXAN5U?2vp0}uMp{vYm|B~Y-<;LA@*UJ7ZIPpI9lbx`ATK~ncy-~h z$|~gR!A#2cnS6VLH3<+?7csdn+;{r&sbO2nf(w91%(%zPGHyt(K_3-LU&d=~&?|y` zM}I6PfeAKvQ72?#B?fn&mqoN+gI$8JrK?-*ovE&1_&|56hc<#^?dT^A&wCqgo{>*R znzuGzCzD7=fL*zHJ}m zZg0~r*%9IRI65snCZZ3t(U(3jZ?1Hs_Vd^GLaA^H#Rd_}i&Dz%Ye0WzLTjg=smEVD z+~~N(k#(vi%7cE#1|*haIMRThY6`8yN)GZ66#DMG_5N-DiC|X!}&q z_|ps7gL5=zEdfa@V60=I&y|HOvErGF^X>qy%@@0K)tOiN!80u|pK?GZ;WDoC`H;XP zE7aO7GEp2MP!JsB!Hc{Pf&)dZ(b#)49LEfw zAk`oRwQN@>%~4@cYl!uD=%hzv(MRR%Yfue9FIzmQ@;3{}3&^U)2y+BZI7|kSG-A z2}cPMCFr5gaY?&DJ>#s`mZLOpB^_KDOW(nn_}tG#v|Ktmc;K0L&_o*4uU;Y|mRuf= z7LJ9jLp4%_-D|4)w#n!0v&zIv?W+lw7Xk#MeMOnE$TC-b|nTD_Rpo_P-wHr+^dL?ybCYyJ^3q#s{(_P7j7JWO>WO1?ht^$PtH-0bl zgTEr7$U<#NGrBk6bO8H7ji6gwjmHMXP>UsHL!jQy-5ANpuW|_7n26)nADe*a%tIZg z-yI7zkK!d5xuRi2jnk|j#OJI+%~|UFQ&^I()M>-3;)Fr)GD5?bdC(_9B(BVt{A#;l(Lgx9e`Y zo_XBC!V@i7omObT$7`O4L158HBhiccwFnJ$0MLwr`&Y!l&6QOG>ITFnO}b3Jk-jK; z+f$xyM2^BcyJBS6T40oNl3xj=3!hB61}athV-t@r)mfNoB%z0MWstUr@x3B>m9aW& z5o~ZYL{rLk4h$n$Q@Ew@q%Z9(@5sgr@$yhK)Mo`&9fQ^kGx=G;P_Fj=Liw@6OgkHU z+bahIZ$Aw*_eAv$zFEkUz%QphUP?{U#ztcfl?E)tGoXjGM$JYB$K+T71+x;+y4cGf z4gSS=-ao|T_LZgH5J3*xbe9TOiprg=AUj&3z_FxY`Om=>f2 znjJjI5n40OEYlKW(4F(%A#Nls3lfM&w{}=)8xG+foV z&)$|qV~hE4-_A|`3SaQGSy0Ld!uyA*l0w98lXgWV#@rt#1Qdp(Fz$<`9*&q>7@=kH z*hoki=~)%Z1Kn0CBL#sWEV!_eCL1wn38)Fe6BPb)3ni9V9M^M9P1#3f-_>hR3K3+3$VU)Qfm1R`v>p)%{o^U27#ClSB&%3N zF8dWbWY=ijp{a85==yF>}ZFf3@Q4vKT2IARd5JZk9JS-~`IFRk$6i2$_q^ z4h>DWUe{9s?8x$5o-V;jD^*+6=zN*&f;I*SMw0w;+I8|1P$pXi&W$3(Fu}(ww4#i)pl)0k+q< zF~D$WRD}7l_V!&Fe`5~SyQufbLwI-SORCmS@9!MBM_H@Hy8DyNXW6-yctpT270?gL zpnZg2f=Dp|!dXlWRrY}>S%PqI?X?gWJ=fg8(`Ui9sOs_kH){Iu&wID0A8WD3h1~sA z0N|AyWFeT7qfENd0ya#e*@s9qK|b!U2!^+9)6{)Qq*+bB`W6BbAX0z8O+*L&@c#+c z23?>{&;W!XGN1=w)M>N1ji_jz!^?0}VTr%nW4yoTMYYC`8oqFsMmSU3W(Y$dXa&J! zug6d=uu!lJyDP4#RME4$3d$D}rt5PM@J=CIb^~c@b^Xz`uA+xpRO%hLplY}94x$WHhed5$4pbg^*xgAS{OFu1w~L`U2a2wuUznoPn3AdvqF4b~RQ2Ul z6KZpo$+?;rxv*OTrZRR&x^#q7f4UeS#DPMDhQ$DmPN+$kh(PK}jUeQ+m#)m=J8AY9 zA3JuwcIO zl(p!>&DbLXe!TknTDkgzbQuZw1cC66IsG31*q|Krlzm=lRxb`4smxmnI8h+(v@TH; zyV+6=$l8x1Uy^96Na8|lj;C*xw1*7AKKrd#DX2$e!7QS;%%pmlh zF8YD;h0%Nk7?=G{bJ^IKMk>1~CSnBrmRKOa=>&|9KDg~C(7|B@G6V|2NJ(i-BdohC zEhhqdL^gtfYsKOZSQZMG@8v2>u_VYUUkLms6DXsrfa4_Saa0Lpk5gWPIEN-Nf|f&# zXyHJZ8MXsm4fBusjLhnv4DlLN4#~$rd|wf2X-`S0W&55mzY@w=n@XyX?ZX9q&%KxY zk~hzH-AejvXF!tQSvq_~`hYSF_50f^WzATg9G9G>9)Pjcu;;Edv|zWsL-zdUO8BG~ zl(`ZYMGwY0mEb-XW&3me!4cq=s^1!;tpgYf*F2eXCoeu0rnRVmJVirT5h5P}mL*`o zlJEyoRx5eE#?8narAk<63^p>b;MWbP_Ajf z)A-B@oMDtvyVFGKdkKmW_{SH=?wK@CYj+6PX(CHa%|L9ARk`=bJ9b^YIYq1?+GStD z1L+UugA|!>FKtI(b5UFZzu=r?wPQIIR{AJsHPg;#i1U%d4kK+iNLy3&OYq$p27?{g zS&fA2$zbJZ%05kON|?&+!(!#JU_hcadn-uPt(`(ff7ygms%9U7@`7aNMABd*A_7dyz6Qy7cyAWo5}UfqVg( zaOI9u@~jpoh9bw}+fU7e<$BK+)90K8c0oTC*DIxG?G!c7+>Q7&$Z>^br4>uE)iFSa zf)0TfM#k}$;vIJW*c%fjtC%Ta(kT!NkZgUqT(yvnIA}!E?F1nRQ~D`=%Wg;ti0k?Q z$Q{WFxGp5hS|S!5;(5Ayne71kt*$t7P#yCpS82TZ5lRUHgI_{i09b-uKpbzKbE%c} zr&mu6Vh#b{m*FhV-)Lx`Y@|}l-7G^qhnfQQ8b&P1RNz(w78Y>7PO%BaG=YfKG7Mvj zp!a9nv&l@-kxOamYoAo59RR(8ECUr3*NWHTD+$t120_JKd>Nw*?kdUuH#17rEI;0Og@q5mXcX#9{WkWnd; zQ9voJjbe?BSkR78eRRaqXm7dt^{If9{;1CU<2``sx8RhJ&?$zz+&{8~(B%ctRZ_zG-DS7RuIizAybbD0~Y2shJ(DitF*#^&C7K~(8 zhjhuc3`B$07XTBn1l3|7&9f}oz<*p+?l7BBjZdrrJL}z9GNa^|`gj5mYwrW?Sj(sk zTL*XSv{H}~A|vuxN97E^fRgywV{BTSPnAKLazxrB(s1g_%rN#Mxh$->Df;#6W9S=7 zto^0zD?`%3q~J=7u)iUgP zKMCx$mxOidLwS@r7fJ>y&C-_dr(|x(N@$H9EE6KhjS#*r_zTiW z6jI2DWK~I)NCW+=*Hygo7r+Y1!XW@RR>O!U`I0qPO2A)Pk zIh2`dZJyvCZw#dDnigxB_`1HgFr34g5~~5iJp^t!OT#yLzQ2-C1+%=KGu~-tOR9=1 z^o2Je#DfO$hd~7p5l+3my$Hb~)Fd;s1H;|tu0rg(laN#%8x#7s_(i93#t|M>=m1rd zM?)*ztkd$Gqo(XpPt-Z#7OAg;5=d{_1V+_3EpzP4{EVj>Wo(#->&&l5apyHmj5mbJ z6+5Z6NU0#ZP)X+BSsHpCseImuRJ)6;#Gf=FaNp!NnqHagC4Wc&4IXuiH$*>TkJ`~= zY*&rJlEeeozp;^>76)P5WxLwLX3`)=dfc8`gW6-dr9~yV%64m1u&PmQC!zrzDs2kT zrLU9|C5$wdC>vM&T6lUoDpC7NPDqBBj2hpm-;opjRfs=crO@xmQ?cU})UWS7O^>>n z0JDjhgNZ)F%JlI|G@>2|%GYj#;i*vkzQvOY-{-b)an$AWM;ZyqR@KojL9nezs+SgS zPHcTchE8m_{?pk-nF2a3Q+0q0jJjGts2T!E?e6as&p;aq1=94<0dayCaXw>kfrdCH zLXpyEyT zCw>S2sh1d)vuJ}tSTPJ{j!8iD_zg@W?(+z6Xd_5%?B%K=- z({BP&sEovbC!8#GC0Y%Sw0hIlx04cjeZKvt*Aj!Bzkt_tuZ0i>mNw`iq`FtOA>u%| z;qxo+aevr|cv0tbALWHX1MC!-o&OLW=5mokVlFc21dWFVhrdYA9pv;vLe?b8w4w1y zKActLPRvQ;$jK#K3@+tBGp7bAg|8ILjpzx^67Ck?>U1N z?`)W>89rU)yd>9(QzNxn7h@dq+C;qYmAr9MJ{jopvdUPV1n38?WHS>C%&-f6XX1Y7 zq7!!o+-$5VY}5xV;#gh+)|iMEeN~cnUARrc?(n#L1wO2|j%Q8Joc=L8C9sH+$0o%8 zJ&W|^j=`6@rprRRy6|Y^{V4^1w%RC`6`pRj%Y`>R+R2{W;zu z=R>9vk;o3MPjj76cF@!_Rd{e83B=*`0-yA$h}Q-Zs{ejBg_fAxsm7qDalj+ zYUbFgqmlG**>Ma97u2<`0J;8d7|#x{P6QwZjQxD(Jit7+aonMn`Y!I|A}5HS7HG=V zwFZa$VWsc>c-TbG@|}O@hPsZ-rKrU8SPd@t1;l2$ZS-VaBb|Zm)t(=QYYFcl9zS@d zkSh2xbAaQKwaDK0*r#u)B4N?h2G>(K$OupSiVvhH7Pn^++YWT-dRfP0Zr{j!eZ<$w ziyR=bmi#Az(jiCA_S-y~TKa0JlE{hQakb}Hc>!H^Z#}MUWN>n64y<5?u5M=r&a`^A z+Tq8UaIjzA8Uzh213Q)zf^5o2I%9<0AgqttJxVPt)Sv@rk8N1&7sFrA%j3g_DH}Yk zDx;oe*Z`mDA6APsSwfdhS1H36v7Nm+QqSJ29 zzEwM%Hxfg^4c1C^u- z?t!(x{}fWBk~F;6p_2R_D1{`Y=pWJw{)G}F6B9!~d1DRmvr^(Z1asw&FyJ?#{J(_( zf02{_)#TiN_8c?)rhWgbv-vaP>TjsWEHxe54OSHI$J!kt4dse5TbtE^+g%pmcEIpR zUSn^0tMO$EsSpyf3!nGtt|DWup*jPI9dSZuz8Q|xh(V8s%T#ch<@c&t1C0pk{B8LW zg(4A*QU#RA!0e?)!UszUT!UxB3kwEMHo0K5NRO0IQgpp&zT1x`S2DH^?>wUNn;KfSqhpkSSCE*l^GkYPx;-vtJ=)Ll=GAj=Sl|yy)R@X1P zz`wTDLM==U8hy{OFCI6BYX)b-CF`E`n_|fmA=W(T+8&WoyPN1)m?!pIIK%pUaI^{Y z<&zqN_wPDiVN1D&@koArVE8g?&~}=1E^Zi@tv9=ww`k2#{H%?e(I)Yf7l`N(YHY~b z8edL^Vs!rw7cgI>W*AS#Z}Z$9&+ckxHqFAe08Xh9)no= z(Z!z23AcixM#~r0)lr607i3YH*Bk7t3;2#Oz3ltSL%Gnd-^t52xgDUMDM zOr7|tU~)j&m=g}V-|L{$c_d#9x+Wgng3rmB#s|rFlzh_S=EyiLRm84;01s+{Mg3{^ z&BXm)>|shIrjfezC+-|qi_Za0;{A?q<}Xv$QgOO5F;I$;XSW4EIOsp0N1!WZn zd=Ixg9~K%uE!=Y3aA+3|>u{`?&{fABd07xY;%qF9sAy^K55PlR`E97R3VZ^U)fX-3 z_C8&BaF{FYfWvXbtT7ow(VST;uuQ@RyGA)>{HxTTA8_+^aB720tP-FK7{R#!gACtq>;{Y9tuegImKApraU6h=g_`tCR_ZC6-JO z?3@oH_U5m!DwtpePRH05O|%kn9AZSyMsk}*zVnPB3bMEWUJS}|S{{BWP@~8e6;3gS zrlr`#0b#pZt_NUA-vO4Tgr$>0TcvsC_!Gg>LP)RGukCfl35RR&$ivA1$93=hG9#t0 z0hWmE+Pv1+XOSo6%*s;G;ax>g3U62xqP|?J91JhRsWETb3C20nQ@x`PlO9FY%MK!1 zW09D$UTBjL=i-D^#2YW{Hu7DDD~MjAo)GM&z=PvwO;lLU@wrOi>Q0@O`h?6w<$B*{NomzMBOUGHrNZ==AtE&Jx;$xQ6vQbI zPX00;%&ABik`B>b>^P*h4T`;Z>o%AHl3Tjcl9{ko%@}o@QfM7{)hp}f0$>>pV`kk; z+gjhA9(Ui@yQvEvJ9JZK547Y0a{LYmD5W^E@HrzxhDp@5A&RN{=yT-EOZoPB6qKtG zuIxf%&R7@=Cs!hiOJy+(KK22OqW5Q`Uc0v4MyQYpq=KWDZ*Bw5(w!Z|nD1>3-v+W& zp!<6+udHq1XV6$;BGbel5sRr0mW&?KUs8`Dw_3k3liShmR_~Q#{?L^|M=h^w{B}x~ zH(a~KJa??{gCZiUz)kPI^q37FwE{`xc7Lhxh+bN@!fstK4|D^2h$fujh8D$?E5rg8 zm!>OrfBYdPg+X`BkHOF+-55P^dOxGzEA1DUu?a|9nsGA6jFa!W%LHA1u1aA&#pW+% zr-Tmat+^xsS*o5{{-02s(0k0Lb-XTy)PR8Ra2=T>Vs|{l0TR9Lyh+E1D7-)~X}5?N z?jmET4MY(ph}{>G4w66~mn?~D*}jfL1o56g{FfXq9eH%ZFRaXOnJKkBxX38uzPz`F zhEevB|9}i>2PtfSh77;WSp7R>`2QhmHvL^?1A*25Pg(Q544e0lz~MJt_K(2f|Hztu zNtB;z=06RV|C0ri>7M}Mzfd#(GDiFdX5lyC^9b{7)ZEI+#DPxK%D~A)*u==z z__Jox(aFKYz#10HY|BY?!r`+qvh$3}4x~l+lUbOY3MW*1K(MV&-weC}CQ*phyip*; z8POx~zJ1W=*O1L>kRk@0{3$K>spe&N@LRo%jTkzx#0uj_+!N2a6MDU^p(77*Mhc^x z;-iT0+zfp!@aBsWsn2qAi@bi|ZcA-UEva&qVo>G-V@S%>br;C^%9$vTQ#rCXGj?p4 z0LD2XZ1n>j&YKT`GipZ`yJE~EA;e~yn0HranqW}*I6Zo@yC}rR2>Azb{wTA%kUWY` zKf{#Pp$KRE)OE5hkVXYYk8^P+b69+Cr;;uqG^qUZw_C$!5fV4&O53DVvTpyt+)0rR zw1E~R%B6bkT!AK;1$5lBj4uD&WFg2&l)kSHaQNId$>64Xk!#NO-tepHFXPb8#3G&u zeMHg&0_|%p>#P&s5mn6?K)V|tq z)kWS&32z$~j{>Q0iA)iyHRi1OQ>0axO&>vCDeG#Vi ztc1@F_gUkov&Uu73OXnSIb@o=yJLa^!q>UNurDWM=WW7vyvnguMqS`2QOFW*xkqIh znWjs~*S2DObZ|S-jB#-UK+dP`xR_Ak`l-|GL~TXd1_!Kstv&hHS%`g>p@9neWE@}Y z&|{lRQ73tXV~EEgfX32(RyCHhkDh%g6khEvR| zcp;}`uf1#%dR!|)oMne1JxD)dE#f&eiVB)JktlhP#1P~B9Ego$dsQRoVOU`lvEkFI zuFgs&O7-EEn>#*En>4#2z&&~^5WbJrOD2$P0zP8R^R}ayg&sH2N(--oxW>tZy#W0RXxn9cvY7=9{$B=IuC^Vg86oHN27Yy+c^^a-H zFbtI6!IRc*mf z*4g*%5z5iHiB8<~UReK$qyg9Bi791A`DMJmkb>y(u+By!l{HLwd2hmMd@$S|agu-j zY<%5Q?_~}{$Vxl+vW#QD_glJhmbKADr{{W=Jw!C zX_d~^9Ei}DEL5snm-n3uG1X7HT*$V$k21Av;Cs9}F-htlF0!M?Q?#?ZnOvz8Pwo2a z3G)kkM-XGU;J4*rq%aDwo|rtQ=q92uKV5N?nG60XqZYAdjid6{pr}ahE(gpKw5n+Pt5!uY66)4nK>-?|3rp$#!kq7GWH_ALsF}5Z{k^CDkPoS)YT!l=9Or3iy20?0ss1y!6!et3nE3=%D+0?|S5h%_0 z!NyI*B>T!JJZV>IonYW}r8mf|kbF%uY+{3U;Pf+0Jh@gs6Me-j-Z7C*`SuWE)UMe< zO>O%QV5@hxM%d7~Qkd1@U%eceVsM*391*AlR2b|Z?-&7lxD4Ro*0Hm+>-Dm+WRIupYM#~n z^*JEE!{!3*TKjKK)_=16f3ms#wb;LL_AGyQuqsE@L-q5+ zggkPK41c#Xr*-AoP^k;3{1zT)wlN0Pk{4@BNsA=jeNED{1F`ghVV7lq+-hDIV|koM z2&j=5w$~U6$ok^Q5P8D)jYi%X5;z5r@f+sQDfC0K6AzuMK4N*jcHfusIcV9UJ+A?l zH3$l*Z;KozpB**qwusCfqv_X-o69_iDO=AeTajF;z~@k2pR|aHG==;hH!t&Vj>3P# zXY79xC;n#ajPduev;S=%;Np7sD|kEDSxhi{2S8_gk6VmLQ1@PmKziIs7)(&kGknw+ z0ySa+CJM9Q;_~~9!JvIWMfu~#_>F-2pEm~EKlj1^$p&Zsud~7bmt*pe8{;=N>0iHe z7N);Ty~tAEh}myN1ik%Hi+>ajwT=~EU;}tdpMEh-3NJynuaD<)m)Bw@g{g7cd~kX3 z9(s`JSRp>1n!X7j0BkK$6j5qZT7hC}*yHhQL{9R&GeN;R> zm5`WJNs&z7>WI2rI&}{uvXB|Wa7_8Nx0fG^7+dN@9D_Zqm zVnaR96lhCLJ1$%{TXH(=^T4AwoddIlX-a^Jil4~y;SjtB6ayoMKZP4z;WO=Jp(fV) zgy^~s936`_5lfP9**HgL*+b0!X&(D9fH5=9kPB%8<*i4;IbIIrkw+j;Q$zB?a8u6T0W4Ibtz|Yiu)aP8Fn81`8 z74k(pdgc@3I93-yNmk??SjEOO204KEFdoy3iZ=@m6W<7dZ1hdaPTh<}goZsyJ;VpR z+%HCqlnpA%ReaIt0dyw0Q0Rr6*=NAW-Z?0K<5#7F+mzcfZwuPBBj|Exekze4PZy&(V(8<>#pz^K zm`$ZU%Ai0S1!Bm8lar6v7SLt9^{X2o-6;d-${{Uv#68wXplfwTxHOKm7DlriYl1T1 zTlIlbZHzWMZ^XfBbw#2F3zehg|BKb`tQVHeOehlS=3H9~WEAhmhl z+&GU6WRA-rn4P^&9(*@869Lp2YbRzi95d4GBh-3u@XU4Nlp(@)lW99M>P1$2wGEI0 zgjWhS*J4CQPUnSYm*S}8w=BnSmK-POu9&eCpBE=NL!2ZuA73~f!KsZ9v!Vb1O#+Hr z@40GTV6?TT%ox*69ykN@z{UIeF0>mNUP(L{VV*-*)jE4(>k}+7fsNwj1FcX|Ie(IO zH-BRH3#r;UggD@m;t)0N1WDBoT2WC}x|RQ)(4!9w1dUbsi3D|Y9JV&q;l*Sp{l(Xh z&KB`n+I^=Oeoc-ESdPTr;v`Efop{&F`Z|((R@fcq7v*rKAH!p(ZoOef`k*a)eLw~c zzw&k+Ns?NW_=xeLjPwtA&iTpXU)~@D$zB4+01NcsJu8#eBqHGB{Y?EU7iJ(&2|(ad z%Ccm#_9(DFZmW)eQnCdksxgvY0r_xsfh-A`|5{R2Q?*SVn&`+Z)@w+Ptn6 z_u?o5gkZ$}d~0q7X0Qm@k2g;~pr!-}bBJwCPFt;(KeZpu!p!OWPVa?^BuWFr-;ifY zX<3k^+@hTdi56a^?}upxN7ql;VdPyW{r(tVQbhp#L#hy0c7Zy_iu`tR16VrZ70)c+E80scgNJu((sKh8-sh3An4z-ilEPO%XgwFX*7zB z^W}{90tyu87=(Rx!D7tFHvn^4`@TDhiJ*x1@W-FJ;A_Wmcw&B6>5q{L);*1$>nj08 z#V|8BMixV94VVNqqM(dPU9QOg$`@TwT|Q{?L30{u7Wm|9Oet$z19YclOJwXp@C&)~ zyieQnxg=?lrk$Qy5N84F4sX3F#S1XMHvgAfMXAliCKjHI^#HM#YLW4Cts*@r2bphB z)Dkvja;JFCiys!1HdHj?A@hmMO^-3280ePwJwaddJ0T8{B+P-acmpBB;o93b5sk^s z?qL7z5Nj!R{zRe2#xricj<)-usHc)cH!)6E@Qp&e=%HK)WW>ZHewg$@vMpv{%xtOQ z3vrItG|eflt8d31uWQrj9)zC})5kSmz=xK#hWF>k8=X&{9wRaN$;z~b9a+s^-~fqu zeP5aSX%epnuNbTVaWB#NPN*j!=^hAo>+f-{hE$9BcMPtMzBLJ*RpMYBldR0cFz`qL z$4qn$ml>~hNb8L6szvFh2Yqdow_oNpRdC_ecAD+p`-n9VHqQavWIo7Po+ydW1Q;ud zVI}FX5qounZ*STq5fk`Pr4tEB&20;@;(>HGZe)7Q<`Z?)2VBAh&x!VUF858A?>m0~ zl8>8vgC1G!tPR^TPPa&TpMhKomJNI?bB2~LTh0RwXL)g>SjX^ZC+`$AA2&X8`Amye zgcn(=2QGN{YFBk`eW2%Z%or-Q(BO{VXLUVb{JEC&d`52kDJ{=iK3lLTUGvNx!^LO-@dj!?fn19T8Q#|l6Ld(Mx z*#M16z>xbE2*O3)wv~ThySuMzzQhmRi{TifI+trxXx07-w8HB#1?0RSWI@BgB8&6w z9KlC}qGcbKTLc(Ya?#M%wX+d!vtx~LybK;DD87wZK>6kv_E&vicO*o1e&NG5Y=xqp z*Y4AV9t8_!TU(Fpy5)MgJb^<#Y?%71mlV)$$W4SOE-BC}aYcT3EI>_N!;Ihr`QeS~TIyMjOoLnt}AjZwBAroqqMt?QA2 zTj>`KORo-NOR*X+ZepzIU+gz)Hrls0gN?vLixIJ{=!r8_8HtP*{lVugd335td6;U+ zW%5&64JdRz093Qxvbpi}d_NWzl~OPFbNW%x(LaRDAsya73;V(uBIqW}Ra8(Ab`Q&o?4BXw{J3sV3Z;0^)eu#et*}sW? z{|2%d=>LQo{|;rV{?Eec6oHlFr?~^7zXhOP=I^`hcQ5-wpoYJKi6ShyxBz^<5n@5y ztUto<-^koQ!tejhg);tyw*SF}{w1FNfH#20Q9X6KdU?*~Q3bD{i(yLNzONW^xMTQz7)K2?}rbIvpc{aG&Z~uzuw> zI-es+LenUUngk_mmd!Jx1k>27Qo>PZW$3|nr7w-K!14~T)d}GY2&UAWX3X*q5LzE$ zPuJt-Xvjy9r&>>d9OaX;EN}80nf0A?=8vQ(Rb@NN<~xZTOdo0OqgK-;r+9VVCr|Z- z?}3FWc$H|jHLo@>Gd~d^ZP(PT!Bw4EBDqd>o$>k^(y5w2^i6{%vgD_D!&RrO94_OLl!Q23F?2jl|8I#}RT3s; z2Yz~T!vug@aem;IUVp<(JJQ*PMYbUaR-S;*-QMn$VRn1^xEx>$Ta{*ahP+^^12IbD z;h5_H3B*k(e9o{am-B1r^^n$-0qV7YPcw&8zEK9)r@hV?5?(`S7fK(WK_Q>vz#0Yz zxK$`HKFaDO=Vn69fz4qELayxMcR*r+3vIb!LDL|HMolXO5@PAanpkC2K+D5LoJv?| z6A#|8qSPU6N`@J&0fjPP=Yf~7X?OOl;Mq`amdm`P)c#p|69Egq=@Gg`zU4Z#Vqw*5 z6%!2ft7BBbZ{zSVz3^~yj!{^|dB+VLlFm)W$?ElE)@fshc4MdXh^7Fb-FYZyb+^NF z`vH7L{Pg7kv>z(d{B<)Z+tr)RfIwAad{o_!KS0o6w!sf0MxsK*FXWPr0Ye!p38+jd zS;&FQL;YRA37@Kjc}D)NKzFcchmw-rJOG%CcvNlyb{1Qa0zbVJy5k>hE|HWTi^ryUvti4NQ%O&lsA3;jSi`BpB^aqB*{ zAdwP-SYI82+!`>~aQOJdqlR`K9;`lhdM)(9oLvy#(U6Z;bpQ^XPf!TfB*r|~!@uQ{ znuP#b-4wx`9X2}`0cuq_AF|O|3l_NAmjB(YCpRe{1~w$AuRPsUxx3!ONa!5!m`K+G z&H-5Z8PWk96#DWDV2)he2qp}t1?C9pXAT?ek2B_*AREk)y43`kq{9HZxihotHb6-V zSKPeCq~|*T(9Yd+Qi0$bNbSNTI);_i6F?Yo=zai*B?(?0AlHJOP>tceJfC$gD0I^A;c`3wV#HWmMyAE}orY^)(+KWn)z6 z=1y52+*4EudWZ=^cT0^v$VCaytM4mZ7zF(!a7aH7=sNReK1Pknl`^FR`%=HYkq`_O zhcH9|I3(R`V?N863e^@=yyCw3HeYq{URPANs4?3M?p5p~K3V2}?QhGZ56s&01J=W@ z4iyGuo~>Yf;GILNK}?yGTa1F!mPg){N9Kv(m@v4f4l=C`Bo8wC5Mb$2hT0iH{2^~7+kcuou3v>ft#r!vZG ziO|-ioG0UE6SF#qX2YmEb?E-A-)DN^z-=iPX(`r>kwl1xaSSE*%<(rumgs(W#F%cd zBcjuUnKwDbQj(JQdvndReMNl$vpSW=kOgQ}eqGUnj)jj%_}Tn!3k-j#j~dA0`5`$N zB=4TwoWV3)spQP02wFpWtUMah>WmQ^}CHll$R75&4sh7+5_s zCrYXFwp<%zr_+~#(k~u6Qx}#`i`-rv?;tjU>3JKdU7dYal9JE-T`&AwV1?(QAPIt2 zaYvXtrFt&XNi!yR%23GZXqd7Z7M+mc0o<5EG-G#0IUZ1~m&uMF5+ zml@)dAS(vFY1QD#T{?4DI%pBAjM-F^x+P8;DaUvN`g#3&13B8v*UM_Wjij4zOc@mY zGiJA)5R}1UANDuCpR@ZOX|b+<#(BRfvH!$*pY;E~KnLr8n2=-nPf9>i{QsHVe{+9W zQ#64jAM2NA*(`t~apTWxm5f&Y;OQa>XMSpOKhdRLs?=tV zx=4%py?Rw)bCdlDY2Wo*eB;L28tf6C4Xkf#@savA#3(S+xWnv9c_3I_Pet>HhBeD0 zv$*b+>dpcDqma*xk}Ee%I4#+_gWaddRcLmrZn3^d1FDP?0T#B|pMrtzGH75>b$&0> zkbXN`JRdpLj@aQu>v`iwYyCL{D%z4=!AD28#NhKe(yzpx5b{SD`kUbLH!$>HlKfw; z3dK+K`IjBwe?*@w|8+d_|MCg^i75VSv42w#SU=OP|7UGJOHIahLlmLwOzqrWgWvKJ zJe4>A`;^^W312{gq7)xoRC~>eM3JPt^}*N7*YVg$Vl3vnkO6V- zR>RNniP;##A2ClPsn!in4Y&!#E+Q3-=JUoH6^iQz6ECSl8~21O739KSZ;)NYm1vUe z%`JrS&^APD_PAhxf!KY;7{0``Wf_)$*Uj^)EgSSgc{`Ma5b11#)=NSan}GX|8EN&% zIYG`X8*T*Y(8O5Z9W$Kc3M+w60;tBoc47(d9i~w;nH=iu8TSfrVDa9FFh$5LMbrvl zyP#^iKgaFN%SYBq!0Dw_#04<+crdxuW0D)Igc&T*O4n$YKtCCH4?t+aa2=+p5fy6P z??(XlW{;t(4pL-pL|H2_CsJzs@~JSd84qAB4E?@m`nCC%S1_qPEIt~)n)CZGKIa%C zxZM^BR=3N0cYyq@VCpS0@xkG}=_9EA;#P4hWyUV!ob?b?x}SVgI1uS~WuxLj%AiyO za)RV46sf6S1O!!i>5@O#J9~V&mt`7)g!97Cpom$+!QHsN!?IeeYtV2N|1-vzzd7cal9|0Xc}z`2J#TR`vx4;3^)zB; zq4M15*fs{8cVG)ZjQ1p71f_g5-ZZh097#*SZ~#3iRE$B^zC!gWDBwOHY20^0us*;| zR+}K-OIXcjEWH^Oea({om&(xZLJYL5G}+P+dMIj8oh_Da*iTT?VbQux?n}-BM<7-S zBarHNet}+)=|Vimid-0FP3*vozQ09rN4ok8%leFDjR)yM6b7c*jZY=%0G4rhc;rEw zUBh9x=5c_9qHt7#8tUoC#j~5VXr8AbRSB7Kn5l&OKGMW01?;_S!aYT z(kVgp_%2HFLjAD+?KMaZnV(hB;AP~LRFQ>Fr;b)l5Bgi+UE$dU1)G9)K;=puk@j^9LeVg{JN^lPi=Y`ykuP z$~OfDGX91Z#9>Z+6A0h}e6`X@UA@|5JUWvrET*ZgOeU@!hvFA66z|lrOBa&Ge5mm|d6vU}tED&J7?aCGg9Q}5LaxM9esQGlp_a;scr5NfP z9u{Tgph?c{rKb+D>6d>oEXzp#&Q4ER1u~P7QwNg6P5cG7JPJEg8u>XDawbP3YYqlL z=wNg9i`gZ$ggGej#q`Bzh9Dld2mJe11b+k~0$zAJpd$k7rr5?SK=d&F$KZGFo#-}T z*jB9G5~3qost~U$&tE2xpZLf(sgQK!^B2g@yMRy)P}?*{J}*BPK6tS<0Kv6r(InL#^b6o70gGMWExhEJE%)gD z>o;G!o7-ud;%FogT?1*V2yVPk2$~h%d1Rb@{Q)M>R3{toA{kU zCcu&TEfA}PM0^nCRje*kk3jPQvnxeFN|?Tz+mT?#-;2JBk4$%f$j;{jV{@G_0@+gT zr2`x9S#`lStDz}jR@vIfjMW|If=X3HP>tOt8bEFF^2LU;M3L{$e8jvvB$A2mEhhv;Tr6{wQ4j zF=_u>!Lt1^tNbTaIIgy8wKw=R;V!N^8oJ=kU!HLH;anj(J&EIAp#8I%U4Bzw_NnSGA!RjM}V%;D|}!C8O@7k$XHjb|O(#`ExmzjEfZL zNs6vMB$(nZGrSlfGUiBaXP?%}lwfhvaDAEbASAd*QImr~P#PTPBF}5p=dNufU41M_ zbNnVuL`s0Ht4VtvRz^08?<$=(w5uF>out*dm`?;lGZKb#fH~Eh^m3rb7-@_U^XAi0 z2TH)TD-6u*6f8w>7%DCv_4C|Zn1U7@>(aG3W1eK+Ei@ynf!4O~-lEoWJE#*(r$IuI zXOb0vrlESfhE9B2k*gNF)49S}qV(#OcGxq$j$zqJOvojS3F^>8*_iN0DDWaigY;;wMi(Oe5&hd&BiNx83cNnTrQRn4%# zfv{YqicM&}xFG5!=UJ46qY-ag(VL>kb2Ac6oY;)~tYAL$FpVIJzer9NQ>tCS0Xjy>;6R8a=N;KRhv%Z<@$4lXd$jD6zNHPOBYPKo`R9fP8IEPGJ zk2JFjq!=YYB`ZRg@CdWvs#sa4-AI)XlNqrKP-hW_LzTH$K6I~jPZ;XC(zI;it#=xr zXf=W;uOKDeW6*Y^O_Kh)<_4J{@h9n|m$&A)q3 za39nE`fB!E6+@o{SYg0hw5<*+sOEMh#_hUpe2Fl*R`FPB6mzxnn(eRt6QK&rrAcBHl zX=njJ@&k}BV5--Iaj|@^>RCi&-yfD_37Uxv?&J36w^od_5GAWM@f-r-*ypW!0-|`} z6e8q$5tWddTuWV6`!JdabSd#QEIX}BU$~r15a%`Q$geC~{^N$Q>sHAsG_rC^@Br3$cA<1JDM&?zBVu-8TF6bKid0V-7vOfsN^AoMqmPtu;RBgnHUmTNTRGa))Ih3hFEipsuu8tde) z8Z=8;Y%TiBY8efVmm&~Rb16LYjZ#2OId~rB?P~}z>n6O#i8*xM4`}J>kYRYHuB@&@ zHx&lay_a*=f&I&o)4oa`TG_YCL9=%0E~aSmKK6g{tCP#t0@$@bN`2E?lu zq^k3!$sJepW%0w0<;Ia)#GvL1 zvzdf1e41oZ&C(aMBv&I>vFCL`J{?4e9}*m0Kg_9LeL<=~Xf?0Y#K}&SmX|Dl zX-}P&2X@3+D2322u=e(jqMlnsbrZVt!}kgqabimX$CE?3E!K35qo-dxn9Qz_lsXG; zs(`;jVcT=RKYmD~lX}|<5AW`>C~o!Me1|Dp1Ke)T&+&Yo7Lq35c%I8BKhsxPIMx6i685yW{gKID7_9GnC<-%Fjy5}Q^RfbzOFFVP`V**``>uK{jJ z*JHd0ep1-$GTjtWG7Ts8_K37wWuo*P{U#zYoc-nnNoh;rpf>q^QQDG15qHneVBR3W zb#wacFuU=v%7d-J?78*Z?cA+?n}GmM0ZFxc9UO$q{PCebCrhD^?n|?^3u^*L{L9fD znuzsYV}Zu~7odJTO*$Cj;Z(t}&7p+&t8b&*#=zw0IFiV~J&Rf;z+`yuctO-PUl=b~ zb3>I2U-&(#&U~Y9_Q(zF^ZdEg*ksVQ6)MdlWM4~U15eZT0oSTQSi6yvRzXO9Ru2c~ z-RS6tx6$0quG&`Jn)ln=@riKd4!0H}Zo$i~9M1>Au!5`|UG;58|J=+)c?0zlx{J}A zQ?-J17V}<)5=H!>c+BHbqlJjh!D-5YI0wA%d|n`L;3%3YrmEctEn)`$8rsqofI5;I z_oI|>?aw)lG95V-06hVp5w-s$;vyfn%>8X_hI2}k+k(hN=nq~YKP`nVzc zJ4$siE3D7_D;3TrIQWN>+TfDnV9(Xsp@{*j$BnDF<({Kddzr$#3NsnPcxM)v`3?`1 ztEjUq*tdq4r*SgiVEbL?=uCbay9*DsZ12vRWjP;`Pq*WZuFH^LZ|>9|-9(&F8=5ng zpiFoNaGAQlJ3Y#s7VHESfDsTsI<9Es_ZI@Z7FxuRj7B~W)}p+u#CfNhb2<-9t9q=* z?vl|}#T@;_T8#-(-Uxr_EZ*7oA1=YgXpfdT_G$2%+F>iSzb$2<4}t9JBkdoJFyEv5oslychCpn9+WH z)Af}#OZW9Z{@KF)13~>SrhxVDteJuFPmuDLg=72gvgY#m|1WE{*bMHmnk*Hux`x!uGkk@W4ebzZ=TZKmudH_opz}sc!(I0>if?Oo2617&!Yi&%K90~40TO@6#Kzk3K#&=H9 z3OG^i4#-LSHV`bh+sdQUVN!y9z&^Ok1*i4#LiVz$t?&(#s9r+biMnibyp?(EL~^A7 zz;I@~xf*8)83t&KLku1)DsWw`merxHb;P_bWpccfZ9meLbKfw49MB%9n3>MDq~;sN@)*Yp_fJ21+Te=&aP?c3+z2_P82};Jkje_`4z2(U7%a#cR&fCJFxJdc)9Db&0jT=9G-JVIC_ErtiC&IVfQ4P0b(wL+_zl_DO z(Q$+2E+Ztjdsxt#S)@9P%iGfz=N{bq)qXr?={?8I_#JEflfQmNNCRr-2EnsHa{L(hJ)<&aLm!(QB&849C&xfx8 z?5i0?YnHF9sexizPx!M)tir9J1xUB!j; zyncqJ0|-+l0ohT0Vw!*?qv)xrQ1EsDY@ZlnsjgMBUpxHVw99@(GTPm0fcKDiND>y9 zgdr)n9*BmlPUNsi95$n?k)9lyY{oxIH$0uV{lIfgNa@YVzS9wQzv*vj>N9cJ;TDDG z!yttgkiiuc!aPo4Z}wr>fEGlOmFoEcN7L8jzE`|X+cwD5p8f>C=duhU+I&>nS(VQ5 zBFxht)9enNqaQkC*0pX2qKy!crkWF4uR2utQ__=j;#rlP`;ujmFQxZ=vx?iRkbHP= z!4Qu4Y0piPCr+WI@U}m&O4lZWEE-p%a zd93kU>EK6o-pXu~JsG6@3X-VFTXd1Net`4y(q8{E z*toQ2mqDxn6d_%*;C{S5s4%>xFmavjJDKuTkURg;IC6x0Rp$2a)vMStzqB+7`|V~X z(a_P6SZjf6JvA&@b$00u*`cugJx_vCk;f=E16~7wJOX7Qz2v!IK1EQ4;M`n<=w`bR zo}5@#5WKsrWU>^4@ZRUwxls!+@}l3##6n?4C~WOO)WW3o`?6M-W0tNM`M8gb7pTJE z&`U~vOHw)n!0MH}%Pe8swzso~Xgt;k8z1^sdyr^vjAZ+;#Q!i&;WA=Eow`HQ_ zv&zvCMSiRV-hnZQ_9+}Gk(Y3|KRdK&H5}FKv=NH)C9^1nW{oF^;&Rk% zd2pG!FLia`$|T=_>t{rw6#_O0k%4^5xKkxN| z-6qJ)2+?^(N0^%4Cnhs^>-VOZ`27z3=@PoQJv$SOU?euOuR))E(JcdSN{v+jW;4vFOY1TCF}F zg`VjO!K`!SE5={@9GY8{hKaYg4@A?fQYlWR6Gfg+Od{*OW^JmjO;6if()JpHu~>S>{y4DVP3fVKPn}UPplUGy z?3~fSpR$T|$T(s@c&K=tF=`>7B4$AS>vyIb?cwN@N2Mug11S7e&86TVvGP=Dp+FgC z#*J$mu?CyWwF*qs7(lo7FVQWX`!jlWMvlVRv-Iog2^l1tX(6_4$|2Xg-GXdqGU*11 zU&U0g_vS@ahCgA&rOeY+_LWJ$G0FuVrg-jjGVSO37J%3XCyhdSjSX>o(Y-Qbo=Ax(b_e?~Z zIfYPUE)wCNI)kaZy6p1$epFssa`MS}Al}*pTzS-WDDF0@Xm_P4-1(C$kz>4LCch3Y zza_VWE1yj2N7cfw-Xq;}KB7GZ*LB~3*H9q6OL@<7|Xf`WyHphz#ko(Wg&3bBAHm1}#k-Yrg z7C;yC_gr7YN|v-!_meK1AS~kiB<4w67rIrgSYw^Fk|ri__5aOTcNb(pXf2l}AmFig z1(q*EWE8~jl$$#Y7oWW$AQNVm^{RoMdy}&u2{6zs-wvpdnHk5POuzMF%^oCuXdGQw zXUCmAHJ$-m%;LyhIAwAEizFY>hQUXo=!~oS+@4YYl~{;t=RWDzj>RsBw^FW$hI!JJV#n`Mo>O3nxzchuz%o3uB1kprm($2)mFrrYRem zojNqle34vQPgvuBcA4F;5xXRyZTKD@H3Hw=sq}& zpgcUbu_yNC0>Qe%0wQu6Jw2F>RqyiAwaHN&;1c~0!QtZ{Zcr{Phzb>*C>D7pQ zfYgY3T9lQz9DtyERhKMmeihQI0;(gF1qK*6ict*YW6*hVCQm8!7A-zQU*6utCHbll z;n=26?iZ3MH8ry|xtQ2H-)2aF^K@u3Xy_L_J;dpsRH^59%^ZP-5~ajeglgt9F1&GgBUJ%HwGm?XF7xc^6I@DG0Ie{cqWsr>)w1O6Hu z{jYq$zp?8-PJ{kI-2B%xh>nf+PyHSLoCei@-Fw^-Mq0l`?yx9`DEBJX7^P=$8YCNX zicDRWocQKno#-Qow;g(W&(_oivZEU$6-Evh_tH6eY+sd7eb}>q8STf#0z|Pxsb7+N zsX9yuPnpCnMyP@8zuY})Bb5rA>|FWIjIOC|PP}BoOlxbU>KDz?O-^_^_JpyJw+Jj;i>2#*{}Ljr38Xlzr;ul_DJ~*8vHeSiZZ>?LFn{_TURWI zP)6@&MvUgTHDGU^|8mnTGD_yBy zmRcX&-{6osyaQ97d#Q-0H5M2GQ#Xxka1~Ij7gvHrMlC00 zK^w9)86NNQIhbs3p{oc4ycvF)|uomg4^$-qC%7P#m)QKzPP1`ak-!&ooRR#iIS#ccWeR4 z?Ztr`nn=fzbxPD@^aOT=5QF!YwHU>*QFk~=Hs#A5 zTsc)VRbebBbytIBniRzlcY$X^{qTfO`okC0Gk^xqVJcan25c0QOoPOM{jr8e{*a}+ z`9@Y|x!no%0EzT|U+k%EP+Cwq2}dV24Mr64aWFoQ7ad&fr;8)(VA%;%2xajq^H8^c zna>)83YOh#=Z*CAnetu*qASU@%}*Uon~P+4`=?O7-nwnwBIOu)Ek#(?56Z!bDD@DlAiP#IY zH7~VXaNBab({C|fJrtw53<+$Z&x2i#?TRr;BOqr49sY{Tjf)1&NoOK*!Y#a4fm7Pt+NEdRlBb($<% zmak6n6Q=s~$fKCOVvhIuYz{`2Sd(DB5XvX1Rz;3fXipIfS za8h`-4i{H^4S3Ooq8n~^60^Kck)w>xVeAoFj?)2mA-V~O^>j!NYEW6z>2UcoJ)XqDcUexfsu72F@}qS_h?6E1hvQXEb1itv+eM9}TxCX*W%iO2ow0 z+Elbwe;9YFY^-T*&Y5lE+PkSg(v$5M3b=Iu=D`!C8G`*9?ZPu-r6@lt6@u(`>NoxLZH@`tUP3xYpyPzV<|K1R)Gt*MdP zy-p5%epNiA#bh`CQK>QiqfO)AO6@Db`}-}<`lpxpmr|qu?~-E5s4*D7|GKGtOj}SN zlS167v)ilc6cDKQLs$Sh0^*}Xaedw0-p**46dEE%4ipli3^~hV2>Mtv1yeCCOwdm; zkQN~!j{gK@{j~S8XsEBEYnK>Gg@h(HNYi~lZgGr_jb1tgDDV9`S9M>w54S0wXzwZ2&y*@|U^b5Q5}D}&yw zGi~2Cu?+b03E$CBGhuXjNtJ1H62XxpJRW#4e3^(kBaLUg^Z2yJ`oz*9_0-9^Ea<|k zDS}!mY2P--(&2bVoJ8nu=KDOX4=59osvY zS88NtJJ4zzOGqfTJ1lxc5h)@17;ftAr|7JBoRVl9&2WsptyyVUd2DDx#EcLg#N?t> z0v?*<`zuL<8B3(P<9j2vQo`xBSJ$Q6UbxLYD%u;CVnq;XU)z}EW2|j!DD|!)gD^l| zV2$Est^{Ez8SmgAQjI;@KFeon<{=&=EW@nqs?~CLiJK~m0jd$Ym@L(4O`*$*@5cqp zJwdx-t6C}gW^M4;*3N9dDL;{+NaIZuxS(DA8GigpFljQWrNw<=Su*W{FjCiN#9PG8 z$az{O1a5R22ubrr9{E><6YrjtyL9Yk(N;XoagU1=WzJNYP9U*rw42FDx2o7BNbH}w z<$$Cj8eiQU;|}cSNfmX8-%Srg3zTmbnhOt(Fwz0ug4h`D!@SQOfdym^-V%&*&2+CP z1z7pw7M?;(;VR#%Qvju0uKJ7>Fal4t$hy!Ul=8f#rwgo|2F?ObgsG4V)x2PS>}n8cy}~?Hu#;oTqOF$Q{j7bDQn3z+K4$B^~F(W8BJG7(hhxh{pox)-vV?5 zk05ZYVw1vZ>w4tVR8-Q$v^+3Ca9*0rz83eP(hk2&As=b6CwM>{uMZk-sVK_}dc`-^ z!2`cdZv-pr6#71OPd+zXPKi+Tixn=dFDmr5w20fkgs+zlpnkYCURbZ=2Hb%{XVEG& zf+KK^eN$qr&^UZJUAu7Yc%pm$L>6qw@jBK0CrLT^x4jZ$WH-I_JjASik|u-7Q=F%{ zhH|PS9lzhlR$adgB%tq|Xv7k24a4=s!-&Y?Pce2lt{l=>e;%=l*S}QeAuaNV$(7Jy z!pA%<O8OVMB-uWHr^OJTFF1-ecFGdRWJ#Qcfd}Lx-yAqGS>~miiAUz97Icd`6sN?l zJajl#iHsRMq<=`Y^cmHbw(iDH1*@x-@T%^PX zCF#e{HXM(lbjkpd1?0_m(*xAbZs;KGM~gfkQ@lkgWbku#$?qN7AH;fc;0Qa;b#F4E zuV%kMAb+yg60Q=Q5?u&H#p?dLk4v4sucF_bb>}XE&>pTFu^7QmcXMXjh{liDnUJ6R zEy1w>M`b*Fm;EqDeDuan5U2e;(K-#e#B-GOT5{i-ZcUjA7FA+A&j}kgJkh}vD>kka z15E$}TW5Vo`T*_t{Cdv10bE?TtuLQpNd4oNd6JF`O50cn5=OUT`KArT1pGiw;EjNy z9VKHLoVa-0!_Q-D6zHpt+)0kqapmR}ITb@tl!u0pSt=$u;rs^TR9xYT@LtSsFsD)X zr!aeIEa|NHnhTmv2&4JAdI;E>QiO7*C{m?4grZDTqKVzONTI@Pbq#91d;VuEzD=kg z!MMG@&H8?;hfnH3ADpjsA=28VJ=f2OrkTUsxj1&Rx_mW=&Eazyn%S7N3s`+inp31{ zJ#Xxx>l+!RIz>gH3JYN7oHsKte2mA@pxi7~jps|oE(yjnxXr^uk_P;JDI2-6ew&>` z#&_YK<^;4LWBrK1+n6jRHd}~~BoEAjoU;W(tjBb-2FA!n_1tgNOTrz233>3`XbuE3 zM1Xn=6$ZpMyZTCX30Wbj=`H`#QxqBms?Kw@!V~~#saF-9x+nrKqEtOz7~q3>V-WjY z9o|7%xre>BJzl40nAF{E}p+}Qs;{bT+nZO+1^m~b*SvqjZqO(C2pb%1qF zB~~ATP-(@=)zHc*;}%uAAt+#&{5uY)Bo*HM*6H>dyHqSb6ntk4lBKRb+vp2WqfPp3 zx3IXtusf}xSmD5T)R<+;s^dGxwhsp9f>Dmc^y+_HmRscABl zbL`83Ph!F!nfDnMB&HexYCZDoIl7*)`e0{#s;$XnVhn11K5VDI?iLpUYFd9x?Yf(J zzbFykhWE*&gPj;<)VhedV9qPdITvNi*MrI4?pX?I@h{^LIr1ucU*`^GJ~v>eCy!@l z(1ld7--37A7y77F;y#t018jcZT@LtlXgnO;pV(-d(eFaBIjk;;dA^U4@AhQt z8|Ck%Cz&2nCCa~c09L2k7$~{!>Ba8WELo?Y$VFWwcR9jifR)YTJ=!Me;a}h}zJRhZ z?chMso%Xq(O^K;MW~6{Ks@ngD;ka9ovs$9oL^=oWms$clvOQDdxvOJW@6p zKuD9RPaLwYi zm}1RxE_xV+cxRg?X2H9e=wRVe2cYJL^nkW@$he`sgS|$3Vcl{)&0~N2ne%u6^3pU8 zb|-U=qs;A{@D|KC)A5FFI|t`&uN`Abl9oh^O%m?dvC5RbT}6(hzXDur_(t4Tkl4Is zYJE%^dOJ?b>^V0AkITJUYGhVg&S`n4+w_Jk(75V&NVGG3a8Nv98mR(w&LXur{IMj( zlfBz5Dmna2a?_jj;bA3_fdso*prkb7{I8Sls~ibCf0pb2Ag})|*BKf9mh1Fv|Jx

&90sl5cD+xe602I&Y8j+ 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≪TmWgGIE<#6ODQ+uJkz2)Vl9Ja>Q4)}t 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%0AF+IkH8Ao(60fS)(|`ATxvxMufiVr=JZU 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ûkZh~X&8-D4g}-YCC3SU#s^g4*d%c(K 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 literal 0 HcmV?d00001 diff --git a/trunk/graphics/exit.svg b/trunk/graphics/exit.svg new file mode 100644 index 000000000..05d79686a --- /dev/null +++ b/trunk/graphics/exit.svg @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/trunk/graphics/loading.svg b/trunk/graphics/loading.svg new file mode 100644 index 000000000..f45675391 --- /dev/null +++ b/trunk/graphics/loading.svg @@ -0,0 +1,1591 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/trunk/graphics/logo.svg b/trunk/graphics/logo.svg new file mode 100644 index 000000000..cc6be32cb --- /dev/null +++ b/trunk/graphics/logo.svg @@ -0,0 +1,289 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + JP + ActionScript + ActionScript + + decompiler + decompiler + + JP + + diff --git a/trunk/graphics/open.svg b/trunk/graphics/open.svg new file mode 100644 index 000000000..b8a59928c --- /dev/null +++ b/trunk/graphics/open.svg @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/trunk/graphics/proxy.svg b/trunk/graphics/proxy.svg new file mode 100644 index 000000000..64e631791 --- /dev/null +++ b/trunk/graphics/proxy.svg @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + P + + + + + + + + + + + + diff --git a/trunk/lib/commons-codec-1.3.jar b/trunk/lib/commons-codec-1.3.jar new file mode 100644 index 0000000000000000000000000000000000000000..957b6752af9a60c1bb2a4f65db0e90e5ce00f521 GIT binary patch literal 46725 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 C?NEIH literal 0 HcmV?d00001 diff --git a/trunk/lib/jpproxy.jar b/trunk/lib/jpproxy.jar new file mode 100644 index 0000000000000000000000000000000000000000..5324087e9b6198e4fc522f85bb6d77d75cc0a466 GIT binary patch literal 35051 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 HFVO!7ks+i% literal 0 HcmV?d00001 diff --git a/trunk/lib/jsyntaxpane-0.9.5.jar b/trunk/lib/jsyntaxpane-0.9.5.jar new file mode 100644 index 0000000000000000000000000000000000000000..e20d1fafe27544f7c06cd64ab750b2f625d2426b GIT binary patch literal 524914 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

)j&)R7ZrIk2q_NbVq+_$Qie<++9 zG`4oU*-1u>`+y3+cMU1Nbqp!C(hMo~G6^}@Qg>XzBe>SLcI*i#8@R2P!Xwz(+S+~D zE`u6-)*RAzaQrCf8n_*bf*OmDn^f`dkuvc8{x)?9ISAo!fPLZSzCh|3m-eI zjep|g{<4z|IXEtLX`jAilP7{P4C3IY@4GY{w($ue5XAxIfq04C+vVR@R1fy8R*k zS0qA~kECj)xdYzml~#O4B4S+?MH5K`a2eXs1zNN{P(-w^gE{P0cL3F~)eY(n%l{!>d;fve1f$p>Lzn3?ijTBiywdTvCldt$z-(*h=)Ehriqa zBD5k2;%WybvSLo+Y6mL3qJiRSM`s55yY4dZWF0iBF89yLI%Hhk7Rc#(a~h;l*Hdt* z4Y5|&Q+~pY9(3T68w$66_@q`~={d7jR~!(ife=)B&duGWP-6lbSLf{LnhPPdQke_| zzhd>rH5XJ)6OyY1j9K3Tbjb~gS^pRapv?NIfu~(C8FjSK@PAzO_ra=wqqxla9D%1* zka8=j>hvH>>d+Z=)d~yb@zl3c%HZ`x7`y1NYJC z0s*S(>QeY@8?@vq*Ni?8&-ZdXm{+R~|(DKh= z>h!=g*sQDQg3~%M`DcoGSIv;J_d9D~b{(j^2ZLo-ePCHP68n~Brn$gUjYZZ9<2g

IS@ca=QMzzI|c?Lun{!h3=Si}2LyN+fo>pJ2*8s(TtJG> z2?7CHbPkl{fdE2ujuZ&)4Zw|1fdn|q0tDbJEXhMky)p1-lZ8)sAVc$(fB+tv2S@Ud zqd&9XB?#^{3tD{4&+N@ez)?gSwCI9LEue0rwaL8C1X^B>M=y{*u&4^2mZ#J3phsf{ znwG~4BxY%k(|7BFLvjKuxF?8E-XTHTrUmUdCw5TY;X&JwO7+Dtkb&NspcNj#Q?Gzj zv_AwcFkkB^J*L%~fL3k06`biKS8XE}oNal|H`rcN7ChP;%z;_<>IN=%V_NoZ0D;gF z_+MG>Mz`$kCZGore9K;+d4p?%g2yXxoooMsM62>r)Q;jtaJ4XSE=z*V@dFdElzoUd)dM)Midg zlDd_0F&RU2JUOFM@+O31py;x+8V(EUuIO8hqGNFM!$sv0=)DbqC#>6|_@5||MfE4) z{KylV()&gWhWunu5mF<ZX7kpo)$$s;H%Y6$2gdc||r3%0<{iq1KTA@=>Sn%Xz-c^VmItF^;l@wPmF ze;aR%xad3vOuiKt34HETNvv$~ zaicxMHFKPDmuR4|jMd7l9ag}Bqdhd_F%n^~OZooXRA==Fe{Q!fTVVml-X?lMxZ@S( zte=jq-9yQ{nM!JH$`T>7j=vH&GNfySBT?ILyF5oCqu#it*)ee$T|^WQJ#Ix9i%vAa z+-x$vg0y@`=u)k~*!V2YOpVe}#>1TFGKK+po>H3@Zm#yMORl|ERBP|M-WCJH>d&(weAt6dLTi0^rBF?h z1x7v$=dpbuS6%il{3tp6QhY+41j*RyL7UKD2WLq0CSuhNnl|%Rdgysb;QW|^k=pH5 z3J)cg^c=0l7q9NAb}W^nt(RFC=CPwqO3lA3XXG$TW_VQ{dCrIC1dE)&=ae6Ftsf;- znZM=t_L^w3$tze>5zS>QoW&28m-oPWVmCx*dhHk-eE58NMhWdW8Dsg(Jg6_@BNK+& z|E!lib`Q1_g;YAVPvB_8`g}mo7{skvRJ83ZQceZkOrh8WG%TSj9+37kD42w{auq*rLUsLP<73n^v&fli4P&j`k5CDozn zR?y#WJF_F5U+0QV>iKXd4sm>ho5Q1Smlymh^aIV)nU3Y5qYRgbNpR7dE?jwpBYaB} z^hw&TW{JB}yLz7Z915VZ$EjH7{qubse01csih6&3-*99dO;E#lnY}ztt=vRk5>0mC zs#_PNW|+DeTfa!VH*@?f#$f2MN+0B6NSVcooC?UQMG|zr+a`5BZ-j%0T^*ewBoyzv z&ok_%3L{?HJj5eyk4pU4x&9NjPF%|`=V(upxY{2JvAYDol2FZX94Xn42)naIr(=7P zg=e2@@6ZC}VSC`VCv+v2&;2nI(_SCTr5&bQblX<=FSp^ntb1=Qno{aTP#jUdTB|0m z1A?=5uXwQa=5v>=r|M}Xs!XL0MapJD4NK(n;by&fC3`u{;rs1|BG72*_fG^a_g{7g z%eHV_+FW*5f35^A<ei1k$f*-`6fYV@-!}T{Bz5dfB&`pR2=%LQqRzGRiZzN9+ znn-Dh_$Cx*Zrmy~4WXypu(?l}ezSz5H8c@ksGk9`@f4nMxof0FgZ!olX3(5bh)1%P z1z*EI$E8{KtKDdVV|u&kGvDFl0M*@)g9tw9V;Txuv~6~%>-=m+@s`K}s?>pk+@n2N zBcGZJfasu4JA?I2U=L1WPBSY%kG-pUD5O&IoF{Mlp=qe+R|oA~i3bh89y>MpAREam zW9<^#3t%@yR@LpDFQ<}lGfv;$WBARw(yAS+?R|Z`*8?)y*V6<|-mUP#&L{YnOBY^a z$o9$RfxNt668yzs!raf#_~FeOo7}AZ%)>_|DYZT)@(+j+Y5TUF72L#lrgq*|?IVJA zv7QZ>+kds-b2?zP3VqsD7l4#$KW8b}rtMdmgkJ9R4IH^$B4zd~IL~3sk6p4mbB@7i zu$_=JHak}X756MCi^woWFD3v$@=spTN0{`d&|!Jb(3^Rv?(Xpdx+sEb3jfblNWj%Ve%MO0msc z3h~33&Au6I1=!j}chGY>#BciWkuh6s<92506Ka(W&SC1wgx))yN1ro~V(m2sQ4F^U zX(d+@@`Z6-$9}jwyS!wQSx&C6m`}oetf}5qo%f*a8JXXIMTlo1yV{z|oermzj=Ql~ z!Vn?s1oQ+Go&jt~z&G~XceqYrb5iY|)Muo~^5w~FsX9}NbJufkLAd`Ws`tKX;geem z5}h?l{P9s3=E#5PfBA%HN^Rc~$+_SMdYPE*-Z;9y{H(Da5aQp5$~{|E#LH5YA_&*Q z9&|g*9JlCq+nZBGXd)9$`q!MR11o07<;R!cvX>Xko_~D-I-*Uy&HRcfWi?-%GJ`6m zeE%9@WA745>^`9`U@XCd8bGq7wbH~)j(5N?O8u9*L0 zb1qGv@RZ6k(Vtywt#eCPVRu35yU_mLY(WqGmZhkfbr8ln$}uh}zK2ZE%%Se`qLOzp z+EBhv0LcpG!-bGI_a9wZfr0I7X&9cuK^KyJ1Hq*Nd=n;Wz|}!b1h)Z|n|t&H!p95< z4*yc61XNc!J|T!v@ueE&32Yu=vGHrReW66AL^Sc~7_65fOxPzJKbbW`j!SgI0upWW zg2K94ao9snEY<=&KIS|tKEu&3BnA`=;(b-cPgUhvufP#O{N91n^m!Mo#9s$H=Nr`N zCRi?VLfM`_e~8Q*;P*x@jtuFUkgg=pRo`309xQT@Dz6q2TT-8b+ zVQ1=1lXF%bP1Y-w#+o~m8y3pp&ln}n81usOojd0!tWrm_G8hNO3NbfCjt!G!ZKiVQRzv zXK_q{d1QKgyaAtl@djNRiFVLYk`tWN11bFqIU+6F9PNTd-up59fO_CQQPY~IGhA9NO3KBzlk>k1t_z+K#q#ioBw_>)oA<;Pl3FGI1Y6vP z^%U2GW`_eYQ-R+?Nl1^6Y-7-VP1&u+xBz-&pvX`G%Trc)k{lxhDD1XM zeA0^>uRmT!S~{74MufDMmOeaU7VLAAS($=_2dYz9eB_8a3KKb;40hhjmLdzMs(aD_ zoC1inx-p(F4+O1v`{4Ak* z52FL{j1UZP^UXH%FFg!N_{Smw)|j?KZ|EdH^!h#F2kW5#?^%W~hA3aa?{gRv&ZHw# z{G*v?Iwm+I)v^Z@#>ADdQMW{Z?jEeNflKT;{-|4|(+pdkY^+V6(?|(@y#wBgsMn>K zgxaR$4q89+`8#6&jV=t+Gkm?UXQ|;!HcS8=$%kG4&BjT&Wu5>^GaL(>v;@6!yq2;v z-J67)FLGjnZ*0o##9!7=>pm&GLpoC^FFMPyz#F{bhe1EKwF))omZHtpB=&Se^OS4J zR}Hj_P1LYp&u3)*th2|rnNr_`24^ZYqhb_Ke>;yDz}0AHb5-@`8p%x9sP zCEC~gn1n0@@o$tjMG@qz`2hWSkH(XFh=hgI-8`G(p2*m=o`H7hB#ug$$ z_;XSG`GX&RU85HV8q_cNQuwIlMITgF=)QQ?xDwfWYztT=F{F=lXTg{+vQgOk#1A0r z-5dx&cPV!0d-`w^c$HdUUayCDw0q#Ne_g^5!=b?Y}>wl!@a&?7ETHuMx<7DN)vMlq9vR zJBbI8gl@{yWA>%}QZU>|G67>1(Yz7He+NMVGS(vck%kg<9ficu604Nd2BO(Y={nA5%>{dQ_+@XPmGmTuU;cT3}Embdz5` ztJp9j{%b%T56CU4yr+@T|0w`a@mAWRaBDv`o3~#V`*0v< zWRm|i@z0d+n_g|l&%A6368GCsX7u_=IMQOh8ZOoBEhsz$pHiXm_C_3ri`nQP^iPYl zn*WztCX|0pmCc=eR4!jho;P3#yjETOUS31I_e|4N(=btA`B214Wpx2h;tM2qXlYti zza?6~7d>`OSu4{nIT_U@MG)BSGR5 zN#``wjZ1~NH4>^~hF#JxJx^^Xxk_HV)bFNUVSN~6b-njW(9-mv}Kglmugi6WJ@=r3} zaC6nZ<*)(YrPhy3YQ)g8VhY^?j^X>56u9d=MFX7fW7OO)Yhm$b7+~x2t8`yb<#5XHHtAyqFJOEMAtxnR; zOZF~)0D8m6eL~y_76|~u6h0%kWlU5~r12zKhWuXK1df%8szq5v0b-q+nrB@RwOJ9B z?TK(sTB54qets&eXhr&#>vXTvUrd7Q+xyIruwYZwe{$qKrMhfNGAKD_WPVviYw+9z z3_s(lJa48vFV-62(b_L(6lWRzQkABmCjH|fl5HYp1I}8#`FOCnF%=r<+l|<=K?I9zkfHLBGnh~InymN zY)@AYXWU|@#NkImk5~OMOxsK!)5sY`w-SiO*$A_kiL{DEiU+E11xR?3Z{oZJ{63fN z2y$H7b@atlcXU8g6#rqoyB!i@6oK#Pv$rkTm;c8P;hESmV7XfSI^hKI8Aea`6MfGh zFdIA_F&+6?zQfJ2dpB-KKd?I7Cioq-%P7S;RZ>&a_mS))-msMAMq%G_>m9;p#ye`@ zBK}nc`G@lz&VhmlMBY4`QietUG2*7&1Ofysp4Ze(>^lGBcF#G0=%y$wEk+FoYyX+iiB zB=#?oa+G`MVvET`l6#iH^6b2CZLo7|bBj2i)a$wg?P8T>n0w^*0;6iBh8TXU&U&4G zVQdr5joH(a z#>wh5>=JYol-YN2mDx?}7{#`%k4kM>-n8#>y(uAO+mke^#HE8N6?&|Xs@8JSlk%zo zM{!nxcYRg`cLGZ!N9ARvN90RNN9|=slf-i5DMDF9>Gx>)j>kdI`aJjyx36(8zSr}= ztP9MzG4;x+PWU3ugGCn8b8gl=lUVl2p$ipDnzS5E?V{qMwL5f6|v}6^+MHa zp-%tOOso9TJTBx}11BYg+eb|vByoDwKGwL1>~~y(*4eP<`>P96KvSLV*xK5h0rC9y zfdkJ_Hl%(bR0q#1mU4M9!RA4Zfg;<%BvI2xE{j9+JdxL?u5#>9yY*q5BTGeAjA^Pf zAwApwE|4p@%gALuI&UnFF8|G>6ThTvUYrB7(*MWGD)IM!G?o9i+c0!j(H#pR2*?co z|F@A|>_4j{bi974Ni5c1`Lj9H<)Hlh8Azg;;Rr8cF9w5y7>WoAt35)BfC7UqM=82r zhk(G9W1bL;O+OxIZZRpHfbEw-V0KNnMSCd708HM(K% z+0|K8he&mAb~8ymFGSP&@TEn<|{d8qy{js0M8QO*|_LCQN=jsU66 z>&SQTL?N_S2h1;VEy2>!eD#-TxPVrXfERqL@0jsp_B+VLe)L!9!~nEc?8I-K`pQ>CryVp8LLMk_98?8y6y=Bv`so-IISOM^V+!MD=I$^adipq>TUuEqZ8C6G zD=Ys6cBq;_5j}&{^3n4<&*Lsyo2`A`ukhUaW2OvNi}jX|{WZw@d&obvC-^p2Rs++) zNx_?<7a$i6#cD=hJ!=%56t4)LxYp5Qbv?M9%~;cuGu`9?v>}IsW_9m+L$vyN6hr1d z)pY!_qijlUG+8O(QH`0|nkq`{=tqbKnvK6YD3$bF%X1QKZ&1OoF6e1yb9u5wR5D_5 z6o&hF*se3QU5}?BUq?nHM)008CE(2u(+;;Jr;M@yH9XA@*}?Z%F*z#Cxo}R zT84%v2KvfZRRBK6{gm~QXse>$KL6j<-km-RHC1@*dWQL$y84$-o@Pso>S{jHRJ?V4 zf;-JW4`$rlQZb3zO()a4loBB`t0vbmiL7{5_)05KOpN=slTbzBqRQlJi@eITJ5MxI zGJ?@mqpaj9R zMcNpZW)Bv_t#GfX>xA8*-AqJV3+G?OzywNHeSMJJ9#$_;+Mx{Al3yzIgbYbiniCLFQJH341;3Q#I zIvlEN_t>Es1|FSyFzRisX?bfrWvG8;Aibeg-1LKBz_PNY%1IWZRWd<(49j#lWg>V8;q-C@m8EnQA|WcCEtDH>IEV zadt*48Y7d7n&n(wt?vezCvo*xqIJ7yM3tEx>o3l^FuVqrJfKKff3L36iNR?~=95a# zQGaW4J*yOcp%msX`4GlIlx_W}9mzPVuAWNk=H-I3#udD=n)0oEP=FVWe)Ft=+4-s#^HXViOSE@DO8yDS3i9oReBXhgWLCgo+xT=^L->OL>mHn z+%_I9Z0^YvFMr}s{NraY3dEk>=T?Hm3)%P2zVzo8zk2@D=TFP-o#!+2{_8PBPyNSt z1HS9$&%>0R=cNPxo%8U|KCY)XKcS7w=g$wP{_7d3kG^)!H$R8^q4TDl=V;)vTy*~( zrua9%e%_Pk-uIZD=WW$RalrSr(7)$T@9LfB>_`6{=!mnBX#bsXi;un?vWn&2h$=T? zW9zN>0v%+Ms^t)v>PHk{DdeW`VU?QLl1?^?(K%}9>KlQvtw0osZanGa@&Qcqqu21- z8yJ|KA8KM-o|Y6uV_TkhLv1;V-MLlhhBwr0Tb{(9+L?%sM*=Wgfp{2QCX(UhXhAa5 zOSB@}UODD^l<8`Sd%Qt}HxzS6hCzfnv5Wy|{0NfiU*P-jf}tSi?A*Q8*#U_2kal_r!IqFF%|AjqP%V;&1w^o%>;+LKBN6?jqs&5THWm z3l9%ap*lI1$HR~z35G?4bfY*qasg>FO2AYbfMR9d)?j!9(x?aICrF@^E$&gI^j5C$Yi5R z;Km37p*Ujas3w*}ykrq9EvPKNIe{tW!#L}~IAXe}CMQP2INlH}zuSPL?m!BV0tQ54 zF@=N?EDzkkPP{6BG!QAdYD8zY&Cc&MNG9tZ~bWtihprw<_Ry@FrC27H5l_5Ea4M43*8 zxW^damv5UznQn$?&is`}o^cHG&nws~=$FBdjC7cPX2D)zo1Up824WG!uPFOcHY=zi z5yZ8?NFV}5$eQ~s5V7GmMHkL87ri3tUqqjapM**ALsPT+iIlsk5t?YS=K42vO?C8P zy4qaJgjTe&CIVW#&bZw5ROewj-pz8$;akIRP5w1PlgPiosg!WV+nLc5={Y0p70S?! z95*ML5^)KL@I~7Trz2aF5!py_xBp(twk7>Y{9)6CLH=J%on=rQ%@^)*_u%dl+}+*X z9fEsscXxLdcXyYd!7aE4vbf6<_9b`!Rkv>4FZ=86bLyGdnx5&JIo+ox^eoqIO-4uv z60p|j$?1Itw+)SRi<2#AwildnNfy4}6OX%ET7PsEa$&gr-iG7TydpYWN%~C3N>{3)J4Mte9u6tfR2U|YMIYQ_x4ay032hp8iy z*&g|vUt&0EaVxZesOXL5;krDnkTogZhd#;;0sY)TE_aZ zbuwWL%OE(f(!5dm`$G7xz6~ZtTj8!R57i7nII)#wMWTkK{4KsN^>5D>r|TUbH=I;2 zk)T&o!Zz`w1cQcb(b6ferua)KSZKwKdQM{4E2~V(dy8HqIO43uRVeEr7D@GnQR%@U zLV690;2NSRMdB@s)G>oQB=!9*NL+DiLP$f-kKfoD-MI|jjW?Fy(S6`Mz8|d^S}@7T z7z*sJ;n51nATm{!sMGQgWA&pqZaaDOi>6r(o|pqli?`jb5!tyG9saoXHxK)l^0g-DC0`9QkVW_-&Nb_O!>z5WN+Xr1@M1oEje@7j7`52eHu(Fc>M!X9bMv}3`!R zJ3kHIX%`NHviI*_%cl0Hte2XY`_he%#~MgY)2S(5BO{t;W!)$CmzAoOpOde?6OrI% zu_JxJvm>eMIAgV~*Tzk3CD>o)tw!$dK}^{%8&Rm4Cb^i_B%cm{b!^MdVXkaT+H~$1 zbpMA})b_+?j`ORVzwKo`iRi#BCiqA%KeK^;jGsMxQB;kA zP04%!9;d-3IHW(7&Om#{_r}fBp3t)lSoFXul`7bXk~I=s-IM|>Nw4XXudXcqi@Q?) z29+Kz(;kOrHI#3|j8JRwIPI`k=J%bC%X&-W9d(5e%x^NRns0#cNW_xNG+##VQAkR{ ze7JdDrA^y@%TnykzipT>x!CV6oH*^oLlR@x!#OX75YSP=0&Th*=`BqdjGdZ*H9%eP z8TXx|JK(2zTE;e3&cX>+>6gQksiVNXJTX0yPo}SB+831ey78H+nTMOEvM)pNgI=nW z)4IIL0y;tP{B^i`jv0siO9>ICjn9t_JMmcd)EQSw-#F5tWmGCDTh+2JqRMhxl1pux zt>75ygP-ZOv1cT>GGrW?AeMfPts>aYs#MyuQHRw8x9`?jzzh6&JJ8VfY+93B!CmJTr3WzrTl>B*2QWJq^cOB-O zqQ!k?ZM+1vuonF6oHd+RV>E+2FGK+NP5XzEU%2*jr}g{K;sEQ!L;X4g@@cJs*dkFt z(R%XKybJr(xDf=PWZKj(tynh8#W4E!*D?iQ7{AMxEun z0>!Ia*=b5y@zT7e{bWRp%}kX79_&Ai_6f%*;dHG^_2_K<_?c;)TSC~;t?(B{;1qeB;T#8;&GlzGgt%BJJfm1prj`FMC7F{Xa7mT@F_&+jZ;&LS=_5%d==Jay zherJwKZ~QDp;`E6e%j|v!iMzWFR$k@w3q3iGfl0Y4BLZr^8h=|2OWfcYjHTL^auM% zWpsqd4k7Fd5DAX*N+bAW59cqNi-H|Ds!)D?1@X^OJr3SbTg9=?h@f@r5>qV`jxU%O zj%F)KL|dt1OiabusWjZc`MeBsG#ZPqr?3*{3Xu*RWQ34t?SLfobJ#A;j_;A5rA#0~ z%I{;6cXAHYVY}zlX+H9Go6vYMF$Sw5%fRM?P&=6sm1q6k<^<3 z>K$Kel0%V7NJz@fGD?iu3=}}?ALN$yHu*O=eq!O`O#XoR`Gf1fVUrR4%Qw8g`xS=| z@G1v)kQ}y;2e6K#yBKaRGKKdC1S@9IA>EpPtkp$daU(~~!cJ*H&+RuDoK*Q$!b`A# zBN3{zyBbc7G%-wDKWLVFYT6&jAm~@fj7n~Squ5nU{PmBpXWR?(iYv^r5Yz*PIK>OW zgbpH^lsdZv2k~#hfqY0CXi6#DN9$uuN|8Ub*2@u|UT{5szbq9tk7SmU)+~L}WAioYJ+CQ5(m}V1GKq z#aHOMgZVMYC&a@4PD{XkM=>IT#-y@~cwx*(Ix%kjz5B$UHnlZUhT7~qjt+L94lS_$ z?_F5tC2#_SxDJ}Wy9XkS1H`3pJ7bFMLtiliIXOMNQw)78kB!VV*Ivx!10L!7m_y|f zLnV_#CwV{7MW2bDBbF=$f}r`w59z9RmyOtE1~mh)Z-|HIID>MnL9SWH1K2Tl?KDBL z+hy;rlx&XLh-xHl3Z4Z@Y8?{-$^W6uUz@hJzEP$R{UcM`{U&ge8i1vi;=XZ<^F06*}~aG3oF9_X?0tE84!$Sc>RTNE(Gz*)*X#iTP}8@X|h3) zGsv_3cm|!qFcKX*0j>+^_!po7?;2 zbF>FdPmbtAj;SaDz3NZ>3{*@T&$MK@d;C|ln-l`i4gOg*tOFEm6`nM77szyto~!P_ z0_rSEffdIa_BAN(cO{QS$7VkyxBzJT?_@Xw(reI|<1~*SuXwGho8oA9JhtCU!lQo2 zaB+J-ZewSvPMxy0ngXtKP~pzEkp=8t4HcZFw<6o~5AmY!U1yF^lm3&p>8Cm&pR6Iy zq^DR@{ZsKz;p?J5a)wgJlH{Y{`Ks*?xyT?U0YBNOSpjJq()v9rX%zK}{@G0r&)WGU z)!Tq=9Y*>DMIyyNp|^-N+!f(-0$ON`S*mT>Rt0ONChD5REurDi*}>FbOX@ju93{@o zOl(-?-h!7STOvY&c#}@NIbt@I?K79{F~Pu0&K1nx7OWzQfpO|zSW8s$e1#w0ljX?> znJVH+UdC;3k%@$V;tK2Gm6V@fNUmfiaSd4TYnc!mNAsP-zUq7UYL|rX-s8)&?89fc zt{Zrf_X{hJCwKTw%hew!RLK<_C{&16|KuU|^``iS<7SlLnn~Odea#TOZC6z#vv0*O zC^27dd(KJqACW>D{o0*m;ECT~S3-%^g)}kF$UFGV?F+2%zlre4lcvt>^`%9W z9K@L&z~zIn34ipA2@I1}KgpM+i9t&X_PJ2JC>%U1Et>rw*1$fgj7^>Q9^84I8(5I6+1*#oCS4ia(r2QqfnXjIf<3&BQaOKO-!etV(c==7)HyiD)p?NEi-OI+gW5}~V zt)x#o$nHmx=9vHqVVp>f{0E1V4MZ(uTh*{j9e%;_o8}KYahubA@a~Pw2R*;L5L;;c zil?rK&03CMFw7(e#U`)J8I>8XXa~9Oi52)(l4%MoPvfiIdZ+_C`iLOuiD(WgAIwg8 z(^0JYHi8KrE4ps2zIpQa2q`iaO!%En+wYI356N18WXhcM6e!d?2UYN1ZxJ>iL%08? z{a6q$7=9Na+b=24jb0zhOVF9wMy`oC-g#cwJ?5|(I)5=dwc1gEj-835O;26wb4X*W zmagt4Lx__KDlS0oi8D-NPdE;=BHv?DvMkHP#4AV3NxX}c--G4-0q<=^)rg%~D%oq< zVSu(fiQ}im5?vz;&y!%&s^1t!V?}3z^(G~uGv4q6)h)ruPkj%OB0(1mx8a!mBm|_= z7#z;wqX zyqJ#3G0g;T2{SmT0O@{rf|<)E)!N%Q>{E#Si+A4`FYz8RVHEo|^TTKmwA}B8SFh89 z3F~9JQ_`%FfPM-~`Ddb@dz~P>npkf!@~f7a$W^G@sD{Tho2lOqy#Dt-_jO0p(*s1Q zADPD^Y1(BZ6tS8nGSfj~#71cyCo5J0gHc7Q_!;t}{$yNZ%|GV2?Cy`~{)NhZP#g)B zES@rw1Fhx1+?bCe`H-omqg`qIaSB2P;k5hj>Ad1OYxKeYt9wMzX6~64zQcd$?Kx5o z0A-iyZTN|NEo9qOie~((E3@K2m?82hq9TAExi~(t#sL;l5klVvT0T0s7qlEbsnJ4` zDeEXM7MnUMm2iFVJd0xb*I3>w8sgvPMoWGoKt1Fg?B9E(hqLt~&q?5apwUy=#?;UR z?14d{|6hjn|3zC*zutDy@r3<@K4c{$5$c{z6zc0~lCJyO&1z7I4N^bg{0 ziJ4&>shN^iyLPvs?ZCHrug&3i+be%=H`|@p|2}~SUs3A6_MHKrN(}x9y_I-=0z-#^ zp*exKO?#gsW`nbYfmz~~R^q94>>cdCw@t4JXhR&VM#{NIHn=xJrY1t95l4924p-jp zes5F1#tKAzmQ0AJf#h*QX&)H!4S#PF+E!Hhi2hDmaX>`26Y=Eaj~1aFe3+jG(+-!9 z|C22XEngPT1QFo;``Qso6Zxrv_>ZmQA8W_IIJ>p2(2UoA(kCN~e?}C+nDHZNpn?f= z#h^&qBD5osl&jtn40K#BErs$ll{R{zqzVm@V&zh4?r6C*LPe{r_|)pPc-pD7-sp)Y zda;d(>3oo%P`~P*FWEgs+} zyHnj&N3n3MqNlA{4bO-g`$W)a(&@~!ia1`M;A{64Ifp$^`;_ntS}ZNc@#*Z@Q*QGS z3nvy@JbAKbL(Xu&*LI=up=oc>d;3|!jdJeLz_-s?cy?{?-i*sGU1qZo^7n(_=XY6l z58ElG^y7UxW_Q0i;dDpo_&+UhgFt=k*tW9RGCtScZV|fo$ShSxMa>SM@$p$Asdks$ zgwE4WT*|#}7mrz>(i8W+9uZa1y}8Uqu>V7DbV%0aiwSdMC;me$&Y zWrRi>Q?ggYcDD>vYDvSm=|L)RXn;S^}vvAE708TW%@n2 zR_pa70iTB0Z>OhlT&5EF1YoXqvEIpbgzg+c3w=O<G!^Nb-Qu%8J;fVZjvWQL)%H`bVNe2et<=&ga@abp9X|f}-q;Req2+hv& zXxd5qFX06YP~TNa4Sr$5B6wBf{KL4GuCmWbd$U?}Ea<@ZYTU)KxLP!64P|mp@bs`O+pe3UJFE zKC4xK8WU87q&>d3vpUR)1(9Psj{UI^)sQklvC#?A`sA^B`g5A9HL?8ZR(rqEMAGB@ z2@0l+uB-cDcx0b1en_4){#$cv<>~>d`r`TR9)!#YepTe42 z%h*qwvS=X;@M8RqG=)qVj!}AI!I#xEX2+k60(?cr)i-N=J?KtL9~5Z>~~HBfKoZ#1?Dbt#<1;7gW^|f(7o)(6L>)TSb+S*aTtmSyCqgk@x21 z@6-D=gLqbxW$=p+M$_}*Hmx&O3$YZkut>|k@racJt-WZ_!*S(?*s#wC`@}F9k_4PI za2N`n9dRNvIu@*CMkSy{VQjw<$GbI$s3?8Ak0hnB9M)uCCzMArmD5eEB(C_j!Q@en zW=ff^DOg89L8fyV!4#cL-9lxNE*Za??jjVqOrw^h!9Bs09j;ZJ-oWJTNK`K7f^XR5 zCc*d$msT5p-l*Y>rGyr))h8yoV7ID_OKr(h?=z!>lQ}C9x(}nPI;v7(5C6hKhCnT& zR7|C|Vu6zL_2dPY?vm@Pp8~dAutfftN-VXE5Alppq`*2Ne6}4&2SpniH()-c@Euog zTK-p;;rZbp-yDHU&MUJ^PRg81&Z4qQPIID5&Mm4-PRRzJvYT>YRf}OfX3*cl9TwPR zmz=Q}zPZ$^T^8~1YQRRfVTjN0!sAl`-&`(mhh?PJwFCUyl#*aOeP6w=X>I zCh*PO&F->{usd~t%Q_bx-{@R&LKz{h)|!Q9snISu;&}KHxM$M1K*_A47{-O6w)^EJ zz^s~N76469I~`WjALeAFJ;ukUzP!b%;tQ2JMD zVO`acjot*yM%<$t1<1V{`=w6%u$3D_7LE%rI#*&EUAKsOSJ3WVDnu&OQ;(k8pH6(jVR4NnXECTQs^e~!+L zh_WsWw5Asedlx8aCmKSd!qMd&w3rQij?V6gvKJUaBX$UIAc!n`K_N71F;c)9ce1eW z2rF|DCfxCXfPrvlRg-_0jib{htc>*wn#;i0ayKHHOW@dY4tz{^u(wj;?rUVl4V1tR zMnuI876g$MtR$o^@}nz0&q)QZga$h)kySTv20PzJSAB3uU1~;Ga*RoliV;+d$t`vs zq1W`F^17u)JMo~an+Q2v=)xSB;Z=-@EOurgCg{9wrO{4E+5lrbi=9Q7>Ly|i7a-J{ z9&BFsQI9_^%nQ~98R06`^?&tfMPs`@`hiJesF%Kro;cGRINMG+})7{ZrAP$+NuEbPV6 zV_ro#I)Ra8Lr`cp(H8dXFw%jXggeTk%VsDsuUs6RxeyZ!+D$gZ7dGbgD+eV1sdOMO z;m%Tc*$@KS4RCDP3^nFeh@*28;s}j)lWbw{2GQUq+%X`Hd*HA*!YGGcLu$9&XltNrkE9uB_Df?mPTd;8{Lt*DL zFf!9(5?3$jI|i3Z+1m|7L_Bn;GL$03$8s3)IC-xPM9})P(?i zT8c@SR}q4OJh_C>BlM~!R9cEum=`W|Wd$K686DIGBfNqL0!~B9LXevE}>UfAR2OEUOW&DB1$q=s0({|g=zROFB3TF zX*yJ74lfe~>1n+Bd0i_%bhKi84lh?kX&?rN*Daj1oe-grZ+ICuELw5C#rYn3%%Ug+ zs4c`GwS*TQYnDPb;EYp{;b4Mr{eHzOC0;rW=XmQQ>5?);} z|UI}8vg4C?cRfC1FEHnuc`3f?0+0xrUdzq#If z-a(7MncaKZg#!X9Kz(nKfDb58A7%vL0}FykfG`PoPkwYM7#F-Z4FM^5k70BPk_r4a z^9U#gA98DQ?+HK<_az7QJ&i4yLWSH)-Fp&*0|p4edvr%YHh6JgB2eEP!~`93s|4|d z7Wc&i^({pJ28h9Xz|kdBh}6>&uo>b=2I{*STiSk~OsWlF$9qHI(?0+Wk{yB*2aU?&VefL!NnS~2|H(nnBXY`m?6Fh;6dFZ zpeSm{f#dyC39PsqI>>)163~MW9`rr}HX(|;!Gior#+G*BLJn+Ek?)@%U9SfZJV-FQ z6o?HT%!PmmJg5&rHpmoK8~_gv+8tZ!fdvN%k1ge5gbbS=0q3B^&FMk!K9K-7Owjvl z1b`hC9P}}|)I$LdLL6Q4#R3P#LO=)(+CBmb!-Nc1K!6Z3{2K!3kYUpMr(!tqL#F$u zvk1T)59s}IbSW1zWEkfD2`>WBf&>nlJOVO9i<>in-e*Ub^dSdDxqs4y_@aT{>mkDU z;Gka+Da4RrVu%!?xH&86{Sx8`(LlI=;)Q7Zl!5^VEgS)zAS%qDceXIV9W?~ufIBYG zdo!f=^;5Dr^@})9fJ5jatI*1cjJTJ-@*Z* z;-GiTFu*@b2*LsXI6&_mV@siMV6Z#{XkhR(1TbK*;1N(9IpkCO2)G0<{?Fn52^bC# zrvQWDkAUoO;-T1}_r$R!bC{4%t^23kaKH#D7>suWY=IO1M|A(B4-sYoy*EIlFu-75 zh!keXr_ue>Cd82(3`Rc!x^+Tsw9qf0_rkHILx_sr{gXMA_&-?)V8s8~KmaZNPxr(Z z9X#9~cBsEQcGp05^!7{b{^Khdcz6ds#M}nboDXSoz5j4j&(0^aAOgEgq3^||PT08q z@Fh*%EPQ@IVmP9CO?J=mNx^w13_%^qPCfe#@(UpWj50hb25|v?xB-3d>%eN21E_$3 zchMPtcEHr#Z`=J~By}LSpNRU&+Y=%v5=`~U0r*LAoSIVdlS2CZfr$J4i&qf{F2!!a z&q~aNdpTwZL7qX2_Hciuv{6o%C!Yj68E`3>&S>FIm{vq~+zRE57TzT1m63Sk zmw-#!kWgCyG(z(9n^dIZej-0nK9(NQC(eoalpS`cte)qPl6hhaupnZb&dZf4yC-R6 z%DkrHth1^kV%}8n6CqLWfge}atvs$rh5zKF0bSF@pM>c^^4{(K-B?;?o_}M1V&scG z)+ZYUS5x_g=mY}|D5SL6DQ4*j`a~NGj0H%2rvGfqu(@d!)O_+Lb}ZA*42oC^2ogi@ zG;>Vbjya#_JDKo}W#9!gR5^3SfTnH#Dv`{xt^1}= zcgn<96mBQt%ML2SQmT*Rg<4{YqTf_#JIyB=3`2O5gu9Hh;BIymuO&8Kiw8xEd+ttd zi2h!^cG-P(-tm2+GU^P*bUU2e?eO~$I~WG2ksjS3Dn6BwI4W_*R#=_hY-gPzRS6N_ z@4i~^a723zzW&x6iqiqaZN>q5fN9W(jBAR1S|4?V#3|I@e_hU3^Fh`nj;`&X&R4)Z z(bUuoo#YeBaMo)hSs{=;$^)rA0-;mT({7^E`d_6E%y^_pmD1EHO{wFF)ESw8)adPE zU6dSoS24u14DfOf+dL9W80uU^<{b`J_UwOd=sLsq&8RQ6t*|nDe(WmKV)LOe#VVw? z>2yh@YT$m^QIiqosr3~NjIwg(O8GQ%Pc*} zxf3Rx93*$6uj}53+Z4$V)A`zQ8vn~E7Ap?7=~n(vQDP#MNAkwR`TPwqnV+5>zDpAk zZ`rkFt-8o>y^zNUhfj}3hKxC_bBI&rOl5Z6Yb32D&ACLm-G=Jt#wU z9kmqCj1VeQP?}&_?`mnA?06)O$#lb&3or`yh3tK<1mt6RX&0YTj1DvzvNlkOJeI2~ zlQoIi3Y2*!xs3P_2mI&UhuU<#uTc2~neKW8)^|F8XXpjOEby6WH<)5Lbd`Nj+dii# z4aw2eR_o*N&{r?|zU-onNUQm`_NoX`7X(Qe<9b6oD3sz*5y*rIo!^Rp2v^_J9?{${VmrdOgL*3pUlv^cg_ z5_9dRbMp!t?yA4c6-vQ9>92%X9Et&^2Mtf!U+)5UB4yrGWX>B!2K{M5XkH~r2fV`S z4(A0r?ykL#2mV5{etY=@B>}bJ_1pmBt|Qy9;^>uUg2__AUv*As_P(E?(Pe+bW>*!S zg!6T)%hDAj`-})!wdtx_bk+bXLRcD}x(;NDicf}31rE(K?>V_zGTi~StnG`QMu_Z} zvb^a7MO(~_T+7jcD`?o&+{M5P72rD&HR)a)mi|BN9%>M&4GHy$ZB%oI-p_4A=E0T? z%1X0j&IB6SSt>0;ErP9L3C7u189USSTUY=My!P^^XP}{dW35%xe@NPBg$SqCFUa8< z#CdXi@m_l=3vL5eeT&v_2OY}!?25}zB@&h0IK-QKgV_cYTSS=t_Ph3|+ivR*eq z3E%z(r#GJO$WqfhVo6nd*@$5|IG^t{xhP!id>L;=%Qg+{`aw_AE|qkS(#&X&Nj0DH zAOFq@9oy0X1_m#gFWG889D{MENpXXX-I`v?hGwB2qo9#K<1u%zyv?)OvWJ8d`?74W z1htfW4Ds1O%9J}p<&^PIqanC169Q>E;W;aZ$1ght;F#nigM!qg)PB~lD=Eu8 zTd}Cs6=vyQ9HOPM8M@4d(wIX(Y@{~p%DNpk99+=)aUGI^m>#jbd-v{}^c{0|2-(^O z)SQe{AW_bnEuH@u-+X!akNOpE_^m(-RE{SRjE-H`*))M=W{N5UN2ao0sD08-2-)m6 z9bRm>adYi&|05IJ*|;>V;yhYjNmWX(QTe^4*X->~1E@VR%{Gc<(F&1k_^xDvC&;;v zd?lounAq$Xpiyx}N_Spg78q^{bW66c`Ewxcb!A1Q?x!#6uO7LPpxNWJzH>8EP+i!F z9fIRssfso3jz$)pV4qT@?%joE{U8K$pwtt-7=z|%N)RC}8AX?B5Ham8yXXB-O+GWg zhCWoG{xT@i=m`40iP!WYBRQns<)^gC+XRb-knEahi+O$U$y(j%JzjZLEzca&$5ZxA zIF_uTf6dz7P^(Y*Bd^-qMnFU&fVCk*K~Ns#OtRg*M-SJEG5 zhSj2`_Y|2oY;;$7YbWR8cpi$g@i)I8)$d$%i(cc&Za2w|SR#BfhvMYYBgOcLB1_{1NILePxYg$L>bf;azF1d|y&XKp`Qv0Va%xW| zs^Abl1wF(O0}Sp@wDLQs84x)22OQh}B*CX#0YFzx0~~2mEjk@`np{CXiRg!}ZO6N; zd_e=h&<}5MAopBGx644JI>1{#_;2F?50?XLE-YM&3A0GYDjn|&fKk0_U(qA`+4$*} z8=FD`t=xiSd;bY!ZIoEz zZ;TlV1C0ynD>#{ELvjqCWVSNN#~u6R=VnV*ZKA3w0J_iLh9$ngohpp`OgmVk#ayra z$rLTfJwA31Y}e`a&0P7YmbK^+$M-?xsTL;m*t$@{r0_XU&o44y_YTBxa8DSw<@MgY z$Fxhw1Z)gi+zH|5Zt;-!8*Y^R_LaRpWw1II6cyaDoh!-YY*Y?V zn|uYysIzU_HsPJJjr)kc7xb%!Z@5ZhWo45xu@mzRrI4#;W}CCyGl$Qw47NGZ zo3A(b(8droNI#`A)k1fPu*N?$*RVW_G(P)9rj_$&9o8N1)YeE1@s$hLiDn=BYKfzgHk3PJDDHXs2&DZYE_^gWtA1U#S3s<}6>PC|Kf6>f;F<4Tmv!u- zLod*POcZbveQ{qYK~P-_so1DXJmQ;d&(Ch?0;K)pmwyfYYa^{b7Z;Zexp*YaKq<6T zz84eHa_*7}<Q$;@jtGi+w< z6I;K+^#YPP>W||w2rfFs@=UMu{sUcjLVvq-t=Os zD&|-`L5_l;qP+$2Fa3!sf;2_dN|1ClolUF8$!$u8!BOHzG@^6PyALI&4@I$A1{7vcck6T@ z{2J_$y{c3xZsWcG@^pY&&^TP{%|~^XYqd3bJ48C}W*E>Sqt@8y*GFhDEzecQE!?j7 z1G-txYi)6Arb)>rpXT=D#cWLjb%&%e*+p~DuFu2ye3$LdDE&c?v`nI67khE_+OR2g zk%uyEaB#lm8Dwv_9^t`}($C<);j_QN=jJmRwhJF$<8I~>g8qe7&kYA-U)7!NwoKlN zv3`7gMsxK!W%{FLDGT!9tiw1=i0>`G6viEwHVBTb5RcoF z3qg`Ke1ADZ;un2y=Wv}NfpugAB`U3m)tE8l3-i^tMBQj>@;!BAT|Eb7_;+et&DH$u zZILKq3QGT$uAt2l)E2e%lD$f=W4@ggm#k0T_aMWq6SXwZDV^Kk-6a)xPPE>~^A9a$ zog&qS)9dLlozRh{>MqH)RP{!$H*mK>k-*+-zjMAt> z4h%J%;Y#{aJYxB>@Qb2b&a6w7u4>?%ozWL>dyS+7Su$QOQ7hG)~HUV9`p^4u5_nDNkcaoOe4xr||Eesh&)(_|&e z^37+{wIklR^UYp#91n@BL$T{|^Z$f9?Qb@}A4acM#a2}~wS1alrV%V-68}K_`;b2E zZxr!tmp1)umjU~Fhu`oY8uo$o;?_v+V7++aUU%r>8tq$bu7sY$pz<<>7;id5{S#C|Q0wT+aUI|BU7oI$WzaW=)G)SMf$LM86ozZWlT5z~EL- zxj^&ZgP=) zR2q>i(vxe=e`!({#8)lJme|YrL~}0jsGQERuZGl4diBCFUyT^RJ!W3(2nFUJB+;q- z@$TH{&i`5E+_>Qt(<<|M z`BC!#_I{Vtc(uhY3imqUZ%xF9f+aewgSFZr++xKi!_Jv@F9{b-pLQ>3LU`3$BAN+^ zKNZ`t=F$!pR#F7y%lOWHDRd1!TU=IS1kY&2nmS+1Kk--H zCX*?3I%>m?;eMl59OedTE&A3n+wYLRS=m}jX)h_MgDP{jJ4q{Ips*-nz!U97&`^b+ zsFf&NHwozgS^ACtJ3TGsh^ibJ)~=|j`!Oxzam2Z(mfVK3_?w)u@0w%obS87Su91O;AkeWXOUt z^OWkhwF)QaG1|};*|lVf=3hKAdvR-i_Y1%RL4Q0<25r!g1#R>6-KENDQY2tfzl8J6 z(c*Z}o+!=_lqAfTF0+#65c)~vr&lOWEeocH@*qckR|o}UVtCIUBk?L0l`qv^e!1}S znu%1h`PI7YX|h5pu+FT6K9+`s>?ri5Ch#tSqaGg;JGchk_(^6pgHE?=Av_?JLzsT*rmc;m7oL?UmwWA*|v854Th44-&(! z{2|rspwuA;+e4}c&Uk)>Mh0UP!}R?B&;zyqyyaiqr50W+r53)!DxFJmhsH@^YOi)I zPuXdm^U}RybBAV0rKbB8Ege6q* z(YYwb04KKN3O0{C5{JLR*tL;YwD+1K>8V^lJaLjl%?ix~m zV?G7G!+pX5CK<**A5L1D4#)4J%CtfIU@AZMy8ZNzywaUYeuTz>>UiJ# z^oUoo6L>$I!S7`_()$xg05X?BZP8OX!tWG#8H`jv{cr+silWqz%X$^RRhO8-+ovrf z(hBjXFVYdpYnh(Ji>E0%;by92X=ixJmHh~l7_8JsA*IWrxwx59l#z8SQkN>5m_rK!gEnuB=bumQ;Q_dL#MJatASzG(I=lP&Lkk7v7TNlzMc(MSHV6r zDTc$PAFE6|o-i6m)($3nQa8p{XQ}aPB5L=7>TDA9nu_FN027ofL2E(-L%H6QoGH$+ zrYe`_c>piEq<4kxxsLXbV^O$Ne<|ukmNa%lO$6-MB%Lrb2l+AV?#Xy8U6U>@4eR6C z2T6*oNIc%O!gIz#wKk`uOY`(6gx&jU@b~4NvaFxss-JCjWyGh}EUxKyq z@658IA|&KFm;{elxsQ8=@@z`EWVxr5-{3hfrKF4c3#hgnH-)cWyb#J%wLXZ8`4F@f z6ZqpQJCk@*YGiPVl{FT$qTLlGkJ!FG>d6)px9B z_tG}(n825wZG{w|`(WsIhV-imc{y)1HwB>)dkh~dHkG7C>sQ|nEbgjr{g7s>U*f^K zAgrcar(v}Q7q=zf8i*t{UAc2zy?uw}D)~m9bG?Lq%k4|02QEW;9zI&WRDl@fZD|~X zD{24ptfd9km&jEln^QdOirOxEtyEG~pTqJ+_;PqWJ3MwLUbU)#!<0cQy~+ZmRnSpX zg|=`$G1vS{ccU?0-;Fz2xx48PP)#zN6&5FqF*m<^oU7ar|N66d7(P*}M z{q#kfzeQ0^Rdt((SJwZ($8T+U1)|;yF|1eOc?JDcE|)bw9h}7E0v@DJ2Y#K88fVue z5O}Nq$KwCA-ic09-K>7_tck+PuenM#J}6z-5lCI>M|C!S%6heC=8rw?*lrxbyk!GQ_z9Y0s4VTPB4&-ILj>Dgsx?!Y{^o!(`!9I0l4q*?v| zr02GXRyaY@d3JHfVo*6;ZxZa;{XOR3lI+5J-%IS8Y>m0cwX$cFJ<#R&@tyf%|K<1i zp|q;QpVB-Yp`+`u3(X9cghz}keS+o?&+SJ7fj~;5#TlZis)ihq5iCBsxD0}ZtlyLA zek7uHn6kX|3A_)9W(K`pXXOM0=~kJJI~A?p$J*(XvBt?Q**j#D+5)%XUQq(GA$is0 zg}S3uzbQ+n-tCL};Q0Uy>rgp%Ma zd4S1YzynmkWPuQMQ2^=pgQ(wcZmrhT#$UdJp;NS7TLY<0{|{Z?7@TX&wOe!7wr#uJ zyXLNK+qV7Gw!3TFwr$%sPTw@=#zFrv@O*ssta8g2XKlFM-Md8) zgqzSQ@QdpUBy-=~syFSDvp)0GKDm}D{4JDzxVtQeCq!1#!nmzfqLKI$KEe=UyHqUkCsvsc&O^oxpX&ETp?XN6NpX&GCi9Zo#FcD% zeAV&f1fvv8$N}UK_8gp7MF*|+n@L6D^JKTO*L`_yh{eG&tWdE97@9-kW19^!IqaNgtvL&1eUTU0rgkc*Kkm7ZTD0Ix7SXKzOVHQ*a47_eaL$ z(_SY2TaJ-B6qei=i4}pMXcGaI7|W-wI>_;dCA&tn$8YJdVX@wy1xFGR^ZdJD9!)YBJalLIOF zJY(9p?jf7w>iRSA!;B6}xb&L(sa5?mw^$B2Vw#6~4{bN`P^4A|->K_7keDXPnJ zoAL=ON z{Glyz%Wg{EO?+-PmhYI;P)=`dPCeLu3hnF*Ec@t-luPxks#V+V@`d@n?TXgEt&rC3 zQ!dRGw$q^dpUnFJ&SP+Uev|<&p0NAdkt$BEorus-yFs_Ubi@$l_%zbAREY?~f}$6F zt=pUL@hZ9~BW`ol{;@` z$M~-BC~--zXl-`(+Bk_2a`rNMacA5Irc*YP*y1|QQ+#$&kL;)v9gL<7G`tH+o)FvU zKVL0n-}+vPnM|c|QC0BN2`7aO)TH%HsazRZaxDMCV3^s-BJ3reIcf*a(f<}s(R$k@ z1XEenJ?Phb=1J3q338<_v{2p^Y8(jO6ey9z)7LVUU)$<8H`HiWWBg$uN?>QKZ(tHW z49guul5>}AK}~Ki8zU&NH%oN)_}T5D!8g-~>A!z}9>J+(WHNu3p#_-1gofTnn}@Jf zi*UNIEJxmtrtM1JEp6}qRo)a?ODA{5XnX-}eG0M5zXfcPe1`GStFI)?x#+LeQ#uiU z8N=kXK>E~V9LnPuFw1|8hWVt#oZ`?BJeAxK<2_8H>J(yhv4nV0{51hT;6oYp93qq< zq6rXQd@-dIigD^R+q8eZF!qWnB=kNf8k+Bgth}jO^baKW+Sd#4VDyJ4FM~uWjiO>1 zjPB4FC{|c`VXA?SdOja?pL6w1prn$gv+oGY?SY)Mn%j_gwS%X2nDeBR)#W=y%@8fk zSUoT$KZi-1m7`-;h;N2VG;w&M_I4JZ_702!KMl&wEpeHMJ!)4 zhpUD|o#oE_7)>Q1+$fPNaba>R`Dt4Xt0I3ov%Dj1Z56aIWs}6s$mksMFgjYs^)75;#f^EIXB z9D`QpjSPqE6Q=1ieUtt(L?*=t7V;Y}gXWXJ@S6|i!gsocC0~l7t}IMwCM+YA&@zaK zGLC(9abmhmC^nJx6oMqlzXyS&8-__32AjCnG5-@;9ge5^Od~gOlw8ZewG#f6I^w;# zrrpw(`D&VINCpa9b^J^zc)Bzpk1N+|&NF6P>5n>rK{l6JcG_b35gQm6UzLZf*GyrC zGg;6IO7+>?>?fSE5c)-)@?(&P%XFbwic-x>5!5MxwnMm#=I3wN_UrT!>OB8zIA=k3 z>f&=x#+i-5y~FlZGk1-eoBjcIESq9@`QbX7bqL6F})+?=RRD(-Gfg$O;eXAhe$f%T@U%+mfGXd)> zhkD<_%b5N68n zVDc>y#v0OMS9+3DnOFFG!11GG%ajeL!&kk_p?Ip%iirM=HA{B$vH{l&3ZtS(lL)mF zokKnQL5g9GZK_GDM>c!#QlS%C$z5S#|1(+3oNE?fE{MB_?_(CgdwTnfpPt0X4qQMQ z(jb;FM4r0>eM{_;>|U{Y6P$;*&j6p3#yrlr#Jlz|XqF&OqwG~LO67fLPA*%eS8_s< zKv0I<@#4eO%pxrexE?gc<9D>%2)M?$T@AR&x&379g1t2#KBnOOg6DT7`hfKMfSTX? z~cf#lPX#^=8?3^k-Or~8dZ#z8%rf#{X39 z`OtMW7BwI@?DiH@bh0sM#`Ay zE0;S#brQmj$}3_wsp&oZE9G@^%ze%n*N4bK`B>vuusbay=LtHAi+$M&JZSB?YM zccfMx%SciiXRD-Xa=CN3L)4W`s|trq)$(K_j&scDWLv94xlOj0{ByjQ`g4Sra+i3|tC|l@?YIvf z?bZ)S?V=AcCNCw!LT?PK>hM4N33`+am~TiKy=yC`Y8|?IvNhfPtzcU3vVR2J&_Hp9 zkeyFT7t$7RWl#A{@eForbZJ2bzXepjOfPUM zP(^6z>G}-CC_aMu`nvzfCx(bg-(zUSesHwwa_oVB2~_kHCfrUJM$V@>LulvQ;0lg$ z9rDQk!@;NnV$yel(i$)dQ-_Rfnw>j*S@igsJb zLWGS)dOT$vj)u+>1G4~&Q; z^k42dTp+nXCi6e*dw&zY^ZneChKy^Y=vdz3&i)yQeyo0j%SnNP!TcoDK>__I&5qZ9 zG0u+w2q;+;2#Dx^Nwc%F`|lJxPj@}kQtL*GqGp7I`B7b8XL#94ICiEjjb|`%# z*q~q_SlfVLOn*RZ7`&sAA%fb59%BkqGcf28{~%mKT;@+$(|`o-aCo$lBSrhF)!vJN z?_=9yI+n-5=kYsc+Z*0vnNPKja_2Hj<+Yd3BRLWr8bZrSyUkd^b?d2(N5<&0_5-NR zYhL8m?t44^8`8G#MKSb)&M!#;{X0c+0mD1~gdCnzP!6)$AI@8$Brqh7@A%Q`jRnC< zEepfBt76@G+td$8Rp0TVZTr(_>93xHn7?l*hOaEDUweh!+@}JYP6VGAQr|cU-$&Wq zEUyIQ-+Fhlmd&DDYub+)px_t`bN(KJ>Zs33w6 zlHdKsMZ8KK%Gffarp4-Vr}RexZ!q>sxIrf4L4?fWrR zLsbHCRvTRL-Z(d4EGMe;rb{e&o#i^Y@Kp!#x8;}R+W-jJ9DAGq6&b3)Q~co5i}a;s zG};|C4PzWFbImKNiaeaIyL}+^QSlQ%>vSv*v+6+#@{3#|PKT;=71jN;-bJuRz7f_j zS{|U(0v?*A9(^v4!`M|WmNCm&K&S*EM!2H>%^PqQUr zFsf8^5<>VWs%u-KkWwSj!Kz5woiZz9(?Tm+?P^7Hc)Z8zhQ*fV2)SN-MK{!Xo&a{y zKVbH%Z%G- zJA3V-Cb2kd11hg>!v#&D&!Rm(*=1z@ELPFzBB9+A3~c)Cpg|N>whprnf)y}yhbpez zu>`J=`XC?JYqt-=;&5&O!#R&qS7hm=UUXV@Rl4}dX50mhh6`kmSH%@3Ltz#L^%5+H zng=6O5+Sr4gj`J}c+y9uMJ(DPLhHddQG5p6Jx?T+PVxuEepGMC&ed`Qvl`+ff&!ul zEHTK)iIXjEg&^LL&9!G+6D8VhG$Yqv&nW^z1@cWhJv2FXo1|@?JVrckzfb-r{@B#0 zN0-9&x#Ok_YsQzy|JR+nsC2*VVb_yWp^;3i3n1=GV(M56aE=fm+Y^yb$pB^b^F# z^)=LsZx`3jw_c|b*6lY24d@pF@M(WJ@HYbk*he==e)6Z^!W}nbBQ8)$a^UYp2dEm2 zEugC8emH5ribJT}MqEA$@KJwT5W{gMKPxWyL^=wf`a@E?rc98T*O^3WYOrr z&OK@%sin@(HilFh&x{+L8Gt2kfSUlx)^wPz=>R0=?H^IEFr@C@Fa(x862J>3iBAF& zf#JX~=B>S`R{&Cu(ZD~3 zNRlO#zUY`+tVq!kF+40Je-n{eW92 zL*6mWZ6m-i=Dz)qTL4qG5#S%@KGl$0I#aejz!YnZOV5gD`h}jcD-uv0cdKpSm4dl# zJmeaDt8MJHjJfSR&?a3)C~r>gzH)90>NBY1u=Z5 z*0a)u16*4EG}19PRo}A!4?R8pH18%pv^}M$ABgr?ZG)v=Rs)&5AITJ#(fO@)HTpy6 zHrawMJYD*&eNpE&T>~vVEdw=rQ~Zb^3s0NBoDqH`<5W+qBmR)q9R02-Mg+!*z+d-> z{a%6k_$H}hm`Cy;}b~;ld}e;tAKtH)s$>2%35ysic`XAq;}k1Ki%aUR*Gr@UL0! zA>I|f9of0GEQz|SKN(lCoq*q}nY*s%2K=ZXUv3)N{>r`Z49GumYOG0Q&P8X2=5XEEQneR^$j<8&u6{$IvQykz;JE0P1aY(*(-LwyMbECPV2pdQmt>w$uHLkeqNVEu^2Bs&%}fgx!dDT>b&!Z zF!L#HN;SX}l19S^^x!?Tot_ zYkQT6?%~VT>X^vCqEl5xgKI*PyEzq|*o9@$c$0836(;3FsQVXimqvs!53U#~P4-6r zh*vZ|Zg8-Ma17YH>-i+|I zBieo`3cbI>?ush1uAMi^`ch_sva7E`C;JPh22`eZ z88t)Rswm3^xDf(x5xaE zyszL&X^Nc_v#A#xfh_1~bqB{~2%5$GrUnYX_Fe+QX91pbeNSe|Svs<=YWPx%6djM^ zfiW`sqJgql0pHjWI@^Hq-=$F>Z7++<_^_iuxoFi~Ye{(`;WMe{%<&~LY@||zq2P^R z3#{&fAXh-t?9#JBL-e={9;4!oq!p^6ZX*i-N=GW9u6TL1kfTq3yCIVIs--CS%;IkS zOmMhvV5-uwWrHr1%hl;i#fpoR+G$@|0|=EghSjQMyQsw>u7+~zN+5H`d&fh%dN1m%*;G6^$mW^|-o z!5tJsfPBW%@Cqj5MkLOq3z*Jbl#3MnqzsPm{J4wv&0BF)mQIX?yXsh6Mh3gcDpVi%r5h3 zReTAmZxx%|xeHG8PL4YBjpK~P_gSfK6gD5kgBa3-X9gEw9TX#pKK8K_Z_M)?{IsY0 z(hO1Ym(MJnnbQwrX2q(WVi!?|E}Di5mnkWS8Y@rBPMww+z1W8?60-O~7u+wb8)nDI z8~Pa$SeNO48*uA5E-t3ctU1o@zBjEf>UeK8UB1E`rQJLD)=Yd8ZHd#X)=Phj-7~kt z|F+TD!paEqJ4(s7NvoO7(zJ36#1pty!fD&`oL%qOi!MC7KI_@)V7}1IK2p|Ay$sCg z6U=jWE`eJXc3)yPV$+U6UFu*TV==gIYmw8+`!`AX6a7Bq@)@9d`8Tw~##ewZCr;IJ#n5(!eC!ZbUG5-DBeJ}>I;V? z7ZJ^(P5Gy@BR+Zj=5+Rwyo8+(Q=F z*Wc1Bb(NlUks-C+UN+vbcuO306b zAf6opy@&n0N($EjScFQF?$D)q2!zR^aQt+!L3|By-CH>{)#F%Mxw6R&T#-9C82r}Y zQ5yX8>5nAVSt<{=muFN2zF|7FjrgjS zi`Rqw7RHK1;Sr{j&l3nLsr`U9n%~`m!C5~56-R&7M~mz~PGfM0peDrhLKNrSEVWCx zN8y%b-(DThITagjjowQ^KI>cU`-mclR zoi+NK{4*-d-*3kOtCgNpH+#0Arg_|Y$EKdz38*zEiL@5UlUcrqD-Bb?wl$YNO25nl zcU&m(WMe5~-QdwJJ952fRNNs6D^`nF!Ii2FH7{?+r8J}uj0(5H`;oONq6|TwvDVDf zlEiYFotE@LI0cu`bSH!~_>nXXNPEcYw@0dau)A_o9oNPv=mF*8pb9Hdov32+5K8=< zlXkmMI7FD%v593@H6*cr*I(sj~8ZN=Zm+eRkn2lNQ>n zNkc&g`%=gBbTax`R_K?1u0vli}%@ z%{XM%k}#VKN^mF@M3vEe_rWw9jYgLCmh3Q5jQ{sk*{sWWgA*h1`zz?rPAI zCxOI^H-XrZ0PcmL5y&E>v9IhoRQ38Se${-nm<3q$LDGGb6J@C7hLbPK@M4{!Wqpv+ z7{+7nM%~Rg^K{87_aHi>51M9516Uoe*z{&07z;S0=$gGier?Zub5Inq>J-?Qz~sIr zjW5%8b41IbsH>ZPr+Oh!GtR=bzSguZ&ciNes<2zxA(+-1vNe(iA6{0wO#V{bfSGC# zD^1mf^v2@xC`{UDV{@YOcUA6gMdnOUcJKXFWGz7bM%r0b*0NuIf-r#^55NVIZh|## zp6kF!5S{z^kX%0ALX-q5YT<-g?6-5;mSp38LW`d?il=*YS)TF*6?)kGvRTp}^@alc zZL5O6Wcu?yw3!j$oo0B)om*GA7=m|;I0VcEuB&y12J?{8r-0#^y4wv`-;kFc@Lg8! zbAvoGCC65pGIQKe)HSlENY{2sKQOZwrS4FZESnWGZDtyH;3Ok!Io$V^9Z9+%FG{As zoGTT1&akgdT~p8>rWhyRNjQ||^3RtYsWOy}m6Vj-FDfOem@FhGsVKi%FnbN*l%3w~ zure1^v~@ZB6;*cD9txOit8?E;xdv=my0~_@r4wx%PN^wrWXP*(XUVH;uq+RYNtsEW z@1Ys~`LyyFejk%Mr#a6~^=lhln&kFJ56QfLh;FuY_W5+N(td$^pKNZK#E6VS_c>j?vNo~l z-bdTmBZGateAtVpau))B?6}9%Ho*js=B|RmPQ?l)8$0imJxZFOq{U_!QRXD8HnU>- ze(eFBH9A;_wNDcSn#mI2w{@`p3i{w3nf-^3aVYD9tKk4kAtT6>PA;3l8vV|ijl?JJ z&gvg_RixyRNgki;^;Hk%5#TYOK=cUmAPZ9}D=GlLNBLa*uVlo6Ac`CQvd%kwRe-Nh zHGyIJO$>W=@@QZAr8&@GGm^)jrFmtuIqYlxXspY1Gblfc@ z_PO=QJA0t=CNQ=`z;x?4<5}{)tEWRX?b+f!I+V%1n(4anZY$%gg#Xv|J(2TJJ7wWd zzK@F|{O@tqSp{Kgjqvz{0lwu;*|LHJk@RO~s)9~a((i6Z0`pu7iD8z6$iIrjS$WlY zMUZdKcQdea@bn|z@){9`?=r8}vDbax4cz2(n)mGS>6a%7dz`=3xA@`8%t+}pnU&k+qQ?ig)XOr8+&3&pIS#0)lk}8Ajv%Q>A!e!E@pk{Mga%Lg!%;SF!7;yK!oOd^pR}x3?=yb)I*vp) z9DC!bNK0#FR%V1WNS`zCI=lzUNo|p+9$wG9{NTAEOx)(w%!n9$EB_q zc>B9WH4r~&G>tb|rC6`pq#CzF(ybc@ufWghuUz>^TU18PI*h>;aIKnE@c@bs5~_Ir z&>u=jD#3L1m|4;ld~P}QiIGIHk4!=1WHwuW+-%C7yAx%jPN=&_;7TG5QY%tPP!+Qp zV{iVG{wHk=5ha&hJS!;?#_-hWRoi|T8Kd#!wNQ6lkj&>u>lxi}!8NgkG0)>=uZ_`# z*>B>!ZN7A@za+wVZjkCcijnHP`8~d((gl&x1(eYRmGP!OZ(MWgu<}4Qrh=_EkM^DO z!K{ZvbUHDR;tnB$4pK4h`kzD~$7aX5dzo6Jk zRO|T*>w(!i(Kkd*Bt!Z&(EgY|^cjRKvnJ?tqr{8PsHPvgBU^_F^8ElT{7o46c(P4A zJPXRxk(EXO@cRY6h~`@396`UBnBF=BhDh0lN%^SPX9DfGQ&fUXJ%#cW+4)>)_vr5- z=pAJ@6cUzcI3RGOa<0gZo=v1HYH*j8g}C+IS zlPcOAZtW7)diwG^M94TR{N~?wPs&$d=9n$h_;zo*uWVIF9k_XcDqtH(<-JEOus;fcf1GcBE?NheV z%|)ShZfd$37~Y3#$addZ@kLR1%bJ z?*@+Rz4O>kogw}NIhjdmUDlzoc49iROcb9HB*qb|!u71VC)J-aX;1XG1r&3hQUON} z1&zOLbvd|e&|IV3aWUD%(nx zqKbmcLeCb3*GgOp=qy~<3W{g=8!_;d6i-{$GNww*o&H`5OmyAX-*SA1W z(|>~jV|v5IiV-y``vp{3y<9%kVYU-nq@?3m;D%8Z6scwueKCcZ@V6=&xJqoal3x`1 zOid3*%zII5Olf%Djt$||T~PevQ0+EF2+~-bVwPwf^&njQ&lzb3YND|1jK1RyCJXrK zRs&-!Gg1i)(A_B_VH>#cKN5$}_!G)b^RY2DCxtV%wsuldrC-n8!q1uEKpZq+T4mr@ zm|8=KFR86q9^64id_1%c0gFU8yy(0LS&X|`4Hv8v5BSaCR0>P^h`ct6$$bLcsmM#f z2n3*t)3crCLKJvJ&qj$0c?ngs-ejN*^52>cCDGtl7)L?p5~>{XfH!7zFA}n{j7m=X zz<1WEBa1NT7AKXyWh9v61N;lLY zXGrbBKmS3(ExV^@vU)%o6BB#0xaH9U*O{KZREdla?@ z|EIKS0rLS4JMl~!=jkH%VkJ?{Na7O;?y-14(7H_X$;4BEcMW#UCoKo^@L_aGfj7Jg z16ey>RluQrVkWyQBlA=Y3I#8o|0J~`#ZCI^QW&e{aK{JbIqwIp)JNdTci_=lD^&hE z>YdA=JYKKw0%B$P%(Du;uT5TgW+1%huo{QPnn*00`pdkQ%O;h^*G99o!IG zymNmh0{h$yix|J{?^~jR7O+8m4-!7W9SA)Sz=0|SF8NeT32;OqH^rV#AY$Jlk2{2$ z-WwNwMcL{teZ@vk7boLOo&gXrk z^N{?cpOotst6yv`75wC%RQ3I>d=^up^2tOezg>W_n4=K*#-dT)C7ZF3Gw<>Ux>ocB z!m|i2xvH2nTjmJaxlkZdE6ST3+x3Ig!H}6~FTl8D$o4%>+ z8?k*cW`O_E&|dgc30F}76#b(IYITL1z!8vN_-4G@|NJd9U#onMAvo#QYnTcjK32adN4Vxy~Vxb#8nmoWhWq zP-5*Gqj5)aC8}kA60&vB9Uz&c;1vvcn|9?g0?U6Fhl45HJ8L7|2un>&n^0m+rWI==V13SA91E zlZX9WcRdHwlcI;*MhNv0QWI~^-s_Ixn8Myrq^wziqCGXeSLWSWF4N16_9>DBy4~)^ z+%2y>0|!uM0p9W^S(%1ferfRWssF)j3e_<$T#K~f)O_st!-@M?n{-STMYRuTMqWCv zi$!=cuZ=}G376}cd)qT}lz=Sg^jK!Ed2978IPf3|#)IFOQ|dWB(T$vjs9~a{oww$d z$o8x5|G4kre%$v>R+EFU;6OlCKOTMR|G)cQ*w{qh*~&>$^anNfzx?<~Dw?V&s+gOg z34ri|d?sL4H}l1il7Xft(F$c^6|;q8AnK<*M0kBY@wrjqc%947*6zOLwW67&#=u5bgOdZYn6A$ktDjreyhRBjtF ziB7r{*MnPa&}$Jp$Yiaf17-pdRFTpeLX29JNJ=agE`s6A&eJZ;?(Ij$#uRK2xaUv=F2Rk2oFsu=S=yrq$+XY;=Ngk#Wcdm)W@cf{ zsN_{K91;0vt7zeR3trRM@J=xieC4!DMypE8Tom5x`wOuv+$yw^j2gqur`hMRW9}dq z27!?@s+DDR`5w;Q_)5uQ6}?fXLADzm3?5~33qb!rzK@Y z+|6uj)I^rG1*^1mC+M>e3j=n4?b(kbUE?^|H>}3Q*)CH2=5h>~-U5!9!z<#Ypg=IF zotr7?*X!)Un<6=gtz~fg^id$~W`vO;*)FVMX9r>v@dYP^fo;=U=u?FBz&^Dh27hl3 zXji0}y%fu!s50ssAlqWT^bCZ)gdLtSieN{7rik_T43qQsCi=_DZ1kH#@N?XPcd_20 zbsY)wQH?*o8p}U49TqXNl71f!)!Peg4jL-(&se*yI7*=hE+4Ym zp272YB|9j*+by zVBAqI>5g*>Oo#kbWDI#s$^$RNLD)bHQrG>EW>>Spiwr~;`FRz{H5r|G*xzO2pcyC3 zN-SG(M9eD#{q8qSB(RExNnY)mY3qDw6T`{!grTr)mRDHTN7~2bTF;d{A74qep)B`n zSbt4)*X)em3C4gdLWs}67XHSK`}6nPCI6e)Bc{Rm$~WlVHc6gD{}<%gWjXCNKe>xi z66csRusu{r-3X$j)edq$mHc$x5%W+@fO$okQB}{5+2cNV$H?z}=>xJ3=?W&|t^oPP znlzO%mXW>8J1!yCZhaQql4Z4c*vi_Z%*X>kT=buBP>Np%zqH=)!kIw#nY2`#y|tGQ z%Exb)4*I3$JJOxMmPMzOwG@%Njx2m(6)hM>Se%Q|h9E;OnxSwcy#I!!A zdF|vOoRW}tZd@2%86Npe9bicNoaXB?CF?rwbI`vHh;%>Bygu+Ge|eIB50Uul-Caw6 z1&$J=eT0wZxR2?kzSB7RO67OY`!YWx9Pu0fgiGZxy)uyJuy7rt2dN7(&Zdf!w`p>2 z^qr#9+q7yEkCO2Q;66SYFW!TPJN%(4qRV@-BSh6fHamkFb9_O_8c(TCZFl?ns7qhF zJ2Z|rgP(|3QfbTe5Yb+(<93P-iGF*#E4ypEi-)=D0T|JiQ)>SF&lFV2#oHnF6law+ z)a%R!^W*1&jqkyXl`0Ul2vQeNp(?YKaBM7pRc6tT7*Fkq6d?jkB+RwlozadoJE#l> zjSK~49u*pi`}g+ATV~Z&6%~|eDEWql;Qr;=+AsE%ofRq5j9FNeS^m0EUZkOxI+Mh> zaS39woZVXkcdWG;Ol&<=g}KX@qEnMsk371uym0AHkUTrH7(1pn;V~NG*k^KaSpows z544^!3NyD#GkU0z;O4RH_qRhNzqqJ?vazs&Vok$S<7_sZ#MVjOSXIX|TSwIDEGfc^ z;Ng+tSz8OptFa)bL9*6QhR$$yNe))Q>2SP1Djt%PV}d&eK|Fw%pIey4RY;fWb1bJp zBp9DejzCA3)Jj+F<9&vhIC~E@n(kX0u!i)T@hxz-jnMzq>`eG&4Je(vR5pfLE%}fBa)5 z%DSf!Qx5GP3CCeo@~a^on>Le;4rdnD?;Lx%s=q_cS6h=1OtDDw9a`wL44%E-QPi-6 ziB~F?7P}jarvDt9$x(Xn?P)U4PEXO25H)iFbpzGPGKaOg&Bcarqoyh#V}22a5ML+p zL?yX^E#&PvJnv4z>G4t~j!kZM8b{k`71Jhj1xTKE*APEaAN_ooJ+o85Y!n1&&YhQ{o256#b zt(OSqX5O~v_5M;4R^@DgJ{LueYL-H6M)LNrsZI57cG$`9roz;~(J}qG;SeeKh~iNo9pl2B?-_C7uJtmRUVb@zpE*xFp0 z={CcVgD=EJs03l0Z-H?z9&pMoH(Ei306LU>fS2^fv1xz43I)#xhy2vu`6^n1@uL<^HJTn#z%V!NLLYyHcQyS^NBX2*7S_hr2sW7mTGQC#;pGh)B?(rbn0 z#}RD#pWCtCo$<9~s}TD-2~;J_j>J4;=KFe)W513D&W>36-LCb|j+|?^;75x3z>o@n z$8-1{!1cJHIBtUhnt}G|dfadrw;%wnK>K(-FIajVu$b2%L!N%O_<9`(nAe~~kbbwo zdR|bN1Rz6VJvT^<4_Dj$U{D?eAVFK9B+@|n&vEqRezTr>6hBzN-Vf~Lesk|D+R{M9 z&7K@6J*RvxKqx?GpG!LAehcrMjF0@aQP6Ua_-nmjEgs#Sk9WV zmNy5m>vq%6loMZ{*O!ny8=Dpt-Co17W?kP*Yi`_ zY>xk@1U=|lZ)O7C>f&)>1YYXmab*G?>T18z>%+V@0k{fW7FjP)DdZfG{$b~e;}wl} zlT(d@BUb)}Vot1W6t;VUL&O{`>miK(VigCE#X6-RLwdKe+UwQ(OCh|i>fI$}0( zjudPrOkzVGAC6hzUbr{iKcZ&e73t|5gGo`z6>qBd03vJEIZpx;#B|UTI{`^GH(|ct z394LjSPE_NX~CW-^ZQ-UdWSL{1FMcaAd8fo$1sA)tCnAm*+jbch0LI=VK#C!g?#lP zkmhOSp+Nnl<}~zaeBdx2kx!KqIvcb_jN52-Yo`_z=F!9M(=;^}ZU}<*!=F>Z6Bn@TQgesCSYF z>t4x$c@lPumR)cwv4DW83bakwhLXuknTwx=a{k)Q3330KYJVGBzDl~jN(!RM%JSX- zqIP~-Hm>FIs8W3^D-k`TYnlxUfl0ON+Jn&jo$%y1tD&%_36A>m%5JYpcOvgd;rNAg zMCmvHP4{n8+`+ECXJNScFQjDyuqJI_EgHimI8rr?4eDt8<|w6$qM0e39qbLJ>K?oD z!Q4-X%Ne09Y##TOMU8fCs&zfk^M*fZ%c+Q$2A$eFWvios+0CpFrhb2D>nS0hWT_b zY>pygeK7W&l}Qua4YQrU8|zxpThj*oEyRJqEv@P*Ig5ojD7c;U$l{X>em|Z%soIB@ z$zV|m*=QL=Zcuj-+aPKxG)K@~RhDgD18^?!)o0dFY9p$on-l^QoQCJ=F?-rz9@wv%fk!{0uSW^Wy<9cNXzYl& zbcxqn5o{Nh=?$n}qt50H+Up~-Fq)>=&nfdUGh*UraIU`#Y}l4+>=^aXI4CNT z29YjH1H&4(X`7acY<-nkyGB;m@rinlh$CK(OmVY&l@?{fnk@8_AliD^)J&*b*?{i| zh2~?6lvU@CJM|xj8KkU=_!|dMj1&8Xfh~Q|m##E2f}%r2v`sfRi%cv-`ezvGhKh0B zEVC>Z^uV{di4oS$i9qU>sfHHAu?$*VonIV(@*w!wi)&UKC&taYG>lIdd0HYyG}%~x z?}iqEBVjQcQBN9`BVaUGdWgxs#xL7?;!HhkjM)$@oh^q2TjCxqU1k?F7FJDyTazv_ zTzWds34>sbep5%r&F^&0=Sqie%EgbZ5}#krMnA8B};%GG8Mh zVDp@7jMXu3r8{9t&7-~XuW!)2D1b+*@^^={=!u12QT^XTQQ0T(WUNNFzjk$}$;)r^ zjlS7cgD(djb#Czq@9{EftA z<)uZ9p^tmnum_B2AV(eCvod6?j-#z4@QvLp#MnfMrhDkuz=bhrH(KSJUg3oi+PL2I~7(MJYUJ$oz`|NGUiv9XB3fdK8yA^4=lR#_QR(;H` za&5c|A50_V|F@P{?N`N|%!iWaEi?hLGrSb#6WXoSj;x{Ose0LfNydq?4K)*AGiIYG zN7U)4i@nxqaX=id$+$XT-r*nd9CZrzc_KCM$=|j}f%)LqK#|mGU;RI?kwQ2c>>)7N zLc4mJlru^*TZmA>0oLGu_ED^|xrt0d`VSe-v}Atz)NSQ#Ed?`3qsOEjh?q$Y*9zyDa$Ejv98C-0Qiol#T)3LN0e= zNAWj3_j^ZAb~Wm93VzceaCDU!;II1vrK;5$1XfV849%wsIjxG2K5H0-&85>PRr!{Z zw)ol(DxfQ+J`R-#*X3&m8Gr=N4(pY;e zPknW7MT>0rgt=8d@~dP48zu-1?qkPE%8NY4H4Pgv5(#%u=ELHXS|IY4+%`GY!KFSK=P}nSXui)w;bI{M| zSUfRAp1bC1+deVGoV(_E%LHsO3^sNHo*F^zq7PJ|$SCy2G|?y+pfR=_QDZQGoOKPi zmZ>+ey9Y}=3*2>Ww>VOt$?vzUwuFxGY!%LYvfOPIpK$P%;z(od7_kzLLD>KMf9N{L;7;N%>&MB&HfCbm zwr$%sC$??dwr%GZ+fF7np6tHa|5LSF)m_znyI=LUtGfDg&pqdEfwY;9?a)@0%j`9~ zoarV{7Q^W@!9DL7&gfp%r*-(nqoPzr^C^UdVM?jA1sbwA;hOd_2c=){Y zI`qu2`Y9DA$uL$}`hku)rJ*fcqlXD$UcHq@3seCthl%3E%*Y`lq2DO(D0=YZFaQG89pXqQ@lgzLzATGs%Xld(Y zJF@i<^C>$}SJGh}#k%h^Xim$T;T1POq~I7)I!+U#fZg&qEPBxp^%Ra3)QA$z zI!_DLseNL-fAi>m@%krch+<*L!ZD0#b)hkdc1E$rJ!S?&ff9MAm`WI78gX`Xc%PgK zT}-{6eWT&TdNQYx#%t!Mw?Ex*qWrEt6*;^=t%n#XVXZo=-{=F>=mXX0^Al|S1=G0w z;hVm(k5P9WHvOxpt{!n33OdhTjF!JDbXqUkZ8M4 z8~kR5<1+r`P&LgGsP|N)2lLUTkaAy_5#Ce@v20vL?vV_8 z33G8ewzs8U`qHSyVbmt1MVexIC-U22{w5D|j2S`cX1d3^kK<|RqF_#g_6di_Gj&Sn zKBL<&lYs>)gCig`bE{KA8yXqF@_e!;k&5|rleAU7-?C)&y31m|%Ut$4X@}Z|^m~)+ zTgeler*Nl#&YW%0pk`2v`Nk=@4Oe&3m2%GQAOY~=-o;CXpj#*_Kr?g&104Zu#B(nDjUhzv%0y z<0}Jb=)U9X2?Q7RN}Z8CqnWF343@wbls(?>*e7y006u7oEp{enypl>|{ev#@1ZS@W*xpUY`Y)%Ms5 zik6+pd}(XIki?-liS2vD)27?!^t0lsNp5Rv+Vr==t5IrO56}HB()~wB*#ZTg7^nKt zAnXjHhA??MdEo5ud_tyQLNR)lFu0XVaK|+l{G?pi-J08tb6E`032I&6Zwu^|-ro|? zy{R9lUrWDww3SOY9W25)9W}ijOTC9p1^@0MtoVGAs)h7GVF@vg>o^gAnB1O3dw&as zEz<7Dj5fx=EE_YNIm6zejjoXX09bNlq)EmAP;vxgACWW($QH+SWvw5fHEHZeQJcx9 zW=V7&Qg=wrl)N9|zJ*ZddppuzrJ6X))8?5Ob3Be!o|qO%69B-6JrhMVI+PUSG_H> zMu9X@$4yy@EObm{r}+shZ&&FewnMBPv)K=Akm{ndL-)QzzjgAcoJbNPr=-%4ETrUP zRo~=|?2I2d@NPjnSu{IU{LoGgzn7mDJ7UUtC95QlN%$6Go z$EeSlWtGjUkt@Hi!6^L%xL0sGO!%bE_&LSPbxF+bS49DuUw&nSrwW7bLq6cL$4>0f zQnHJICtVhhi&gY_h<$$R9QYPEv7?qNWEDWhmXP?0VnjO04?6{2WzE_@eI=2aQ``^n zSp?U#GtidIi;jSm&d}MSJDaAY^>2*4oJaB`yQp34Y@k$`*0C-|kq$Fa zVfz}i7t-XFdE%OkS))txepoB*v8&>i?t|@rdP8vTAKb8%(jGp*KtSUlKtM$Qdv8d@ z#@^ZEKN>^Hij%S+45-~lECJ*J5dj4b1_9LO`>s$p1;56HF%Vg6pjD~inG!9;_8PU* z+ipNV$Pa7;zza!fOP)PsXS)F_ttS{j?7@MsL;2SIIpFW;%1}kv11J>|zjb-eki?rl ztYm+mK*j0_AMhe{R{b+9*?j>$eo`lQ=9VK}td0YN&yLUXjF162b~wNLg+RiC18I3~ zzC#)Zt4@w2U&~44I!mg|3uPycmP@|AH^}guw8ct-O|hpaCT?QIlai(KE6G=^0P$PY z5W(Vrf1>vQzheDmMl7$5dx-f3^YBH>&d8#m#m3aUsOm>5LHxfjpQyEg zlMT~da`XIA7b{OzSMOFfmELQ$a#jR-T7N#L+uiI~5jVc> zz5CLcm`<|NIh;(7a~iu`kJ~ZA%=6i2^J-tqGJ38H&mK4f?Jyr?j{i>P**SgV1@=sS zKL2&5_-w^kea8Cm>&L-=%a0w=x+GwDVF+Zy>N?8LeIb|TI~wK#h$Aw*pTPR;6}FzG zMtvd#>b;(>Jm5g|n%ucXedg5vq&xZdcjCVhX+4vXeqHAGx}W-bD~tM?ocS8vxZ!)m z_FF)hVZwq!sZxQJK#ix3q+O%Y?wKwO_UY%OdhkMMNM}U7VnrFzZzBSmLShAB8Z(VC z2(Kcxhoto>=ZGD83H$$6b8=Gov=jh2|4a^dSEIz1tB!1O8*MW90CqYUNlCU+tF5s# zui92GMymD;+>DliTXMk&B>dHwnOS*Jky$}yndWb>V}b^U)~q6Y-4U+ zVP1hu%qFnGUPoy~MQhbwRp2PIL@AJ;fj4hec)wnFYjcmSG~V*k0t4=GsnJ!2T*0rZ z%&M}oV$c(~L8y7Gg@S#)Qi=8layCuhZ*5UtVTGJLO_V7Fbho-%OG&M_r>3|fKfkBH zp}VH1xTT={4tYDK&QzzRUGPqdFOQBK=PJW>)k-r_V&8D zqnY)jNjNR}^;PwyEUD3L5@BOfm~n*3fLV99$}J80_4S#BUF0b0LI)4D07RUymz$Wj zMU8lMRjojqbrS^|H+7!RV?~hWN---H`9EAp^%4U}4I7>2t*i1D_ol)1;dOVjCKodi zs|p%m7EcQ-$S~dX)quTQmb%iKP9rDkHPo$5`~!Xo{mF}han=%>5-zNZ0O{Z1)moi~ z{CASGJOSr2OD2d{mNL$x48txoVw}r$ZvOJo%|v&514KC{G>)RpeBrIGVp8Mse*E8na zthGEXTq&0stsOk;OAfklC>Ry5b!?pvm-PA+4K%zBQm`tcT%Ag*=G5!?BZEdUW%_ln zRmvM2B zOGX2F<6buI>2B-j{)Xa4b(&rDNM*t}m=&mnzNR)$}^wgAP-OWmd*y-U@<*QjUih9aEIFg=IUXTlda@s)NnPo z>IsOJQFyib>V{V7leweeT0WqdJ9h@w*A#oDEL}Ds@PQ*-yD(vaGY7jkVzxu{my&^{ zOdVnS$jp&)LkJ&C6EGm9rDX%@!b;kiOv|WpgB=nCYn~&uo6NkOb&)K%k1t;WZ;oVZ zfCzREc#`U`VVRuqFD1(;OytDwf&So~qKi{gCDi#*X$9#}@GaKGQC~9H$7#ItO6>Da z!?IedvVW+nrT79|HEDXQW-fB-TlYfVbX$?G_GSN$aOSVYxT-?jb&}tnCuqzO^5Nhg zy>H>0Myta0{?hUsEOpN3G;Kucr#q8vQ4c9)%n%sx$IgMXmNFf?o~;tIVluk>V%|nN z_#MoHmz-$B(G<3=Y+XMXx~|*$(5rh>Y_Q$%3*L z0dyacrgmu9*M-X_#22my?&hA3wkzZ;4mqExJo!(eyFQ_DwDFLzRALn za+b!RRR#&5Q;4pGlAe`;KtEXI&CZ}X2GdO&!`Io~ezGbgZzwGe-UWZnaz;D!XG?~F zg+i8vl;jjT(G>}q-R%+~U4ozpA^pK%-A0kEc2$Br=GACXyVA7rMvlI1wupH4AK~GK zaALQ~0?X8y@r*Ibdls}`QXalI24J;JciD+%RuYMk)xJd`j=ChXDO&zQ@_TC_WcFfA zSp{1Ic9XqtB6dz7k+q(npsBwI9l{27ndwwt3%>-E^haK%jR-2D}KZ3_7qwkX4E4gL)SC+=;2y&qHH`eLFJtlSCn0lO_>X_v}eh zD16TUr7NS@z6&{~93@)tDZ+Hh%&4Ky%Y(p*u9cfO%1@0(p6f;+!I(#2gMV-xj-R&j zLEV$(siAxGK*c3T#eFTZCA?}rrT9K1iMcgDmq^AG$ii!=I7pqbaj|`am${w?fPU;U zb4+be(_|5HU^boU8X>JkVm(oTe);Y>Lu5WFe*+E3B&z0>~u{LrRB|#QcBvPRe zjaDksrtWW=U3f=ieNP$1W~-IHT@P)NixP-$R>&C|erU4LKxI6-vTBvh#BJ3*TK|;$ z>(@=$#@%?>)(FR>U>AU!$lH{XjVHtuGIB!#Y*5qRJUzBAnO@2)`yA7IJ3R)+gtR0g z#^z7fp8i9-O+e8SCP0jAebDZVMKC$;; zQTUlfQ+ljv|LWG=99nja@jgRDz_Bi-6tJpF6H$JfB}$h&m(y*S1Dr=S@FyuTW+z2{WAXW1Lzo^q4Uk9EPNE@p&Dc-S z(An&%6m#37`S#pJ4QHj)?kj#CqliUIg}(W;JpVE}kl(p*!?wf4I`_Ib8;x$Y^+D9@ zE7h0@9x0El_e>1#Ow!RcY1#?bXXp@Zy=S{R3WPv*0hc0Ylk{M{M5t?ZuBEK^XnCY$ zOHNa2Rc{t;%|1IoR?_#7q(43gT)Ire1>6BCq7nbm1Zl@V}7B$a!nbo@sD2Zk;P_edZ>f~`bvz&WsvOalJ&vlS+ zDkZ45^*K^464m>@@r!ZU<-s_r)U_&Tgp}KuV)Ony#;adm3|=y-TjcWEJl#RR36iaF z>ne3tGHL$w3jg$JW&hY1Q0K#@|ISLaRgxo9eXCGYSz=MCt*Nm@WZv6+rk@?iTun6; z{A3Nr=p?kftnNf5F}FQ?uL?0R>TRUDu(Hb6p1XY3;(QWJ{RGW3lTo>Udkayq_uX1w zPga3z@~b#gB+L+fZ3?jzm#6tgm2^?&f5dt)!R+M@v<2Eq6JYb#%@n8|^xUlW$B<{T zaekrVKftefQCmMyGl_zkqhb9%hwXuJUOcv&+4bUYjcF+KYcZZeM2=D*4_fkgdfs`a6TXqTr~K|@EqLL??Z<%Slj6T46)ev2=IOVYi0rJu8A z;Ej;;ne)bTy;tY;eM9gT+KaY~V9;Gcoeunr!~@m+p8xu1VxW*x9I`A9KmY83JQ-l* z49rtgW#zXm_^}0(xrqt4K-0%<4YL&i`X^WeooS>q?xiz`7bFMb^#owk=WMRQ-wNt9 zkC%q^`wG@%FaK}GUGNK)iBYdxPcN6wrR;P2HEvK_A^i#FrpJd~+r8{)w%!ozw&3g9 zbykk6;qSW6O`G@mTWdY<@0({PJPr}O2?_JR_{e&F=z2kcA?AeMImZAB&e)zj>khDW z(t-VNdD$S{QJ15biwV3H8b|HcK8LL;*p)v|G%M3XB~Ki@R(0O!&=W2x0PaiX1MSjJ zSkVvMl5ddGo0bFS)&pjuL5p|X($9sM{>T~E_04)i`&cvgDEhxV057C4vNsmxZwRh; z8rN4Y_kYh&EpCYBzIlqC7zQt5U`x4-f(`{J5gfAQx`!|Kgrm6_9ADbUFHYeHvm!>J zh6&RF;JIj+5L37mg(l`}g=H4v`%ohoBfM z%s0cOlQZ5JQYngLyo=yKMYb{zP?u5~;>@7XT+ES{V%-vYM*i;AXFIPhcEk6?cM{6DejvA&lyWJvRT;506V4y$QVdiACigOgDRx=SC+8MnAn?}!;?cxu&0Wu;O zC6gsr;x))r1oyqC=5r3oG{Y<0G-5UoPL72XK}auP6Drz4Itv|pSAp7pvW)zIb{$nY z3y|NIP>XJn*3w0F=DQ^qAr$c{is0Jn*KTA-AFOHidf2P$@qN(&+pQWj8{Ux#>*g5? z%BU zK``a{%OIbgNOp-K%~1XE61d1s}m(}wi zFxMQDNNH*QhK*1q2dfF?x|ZDlXY@D5E)A=Es?!Nb%`vs$aN37Mgncp!_5zMNQwGu#;&?Qjl;S0mQExY6SFo#^=&6+o=V7#FK8-H}G zpzw~J81jO;?)`H_0QrO0OX*+067=vOZKD*A)RD|&B!ap*%d`{kpq1V)y9Gk~jPvDy&TxgYSdJ}uxgb=lQrH_h}>#=cw=t+?0S>ZKZ z$*a<4Hw8-zOb`~BlW&PQOu=6f^jB~WQTT-0zmcrp8DvoH6wBRVfWJ^QDSa~HeJ8U% zv_$19lHeCgN2z6w*NV^7jFL)ze?QpJ>DE{>nu zW_d;9F_skB;MV<{B}*XBen0xhQK9+59wO6OkP73fC$gP#w3hB%obZ;wH!9CdcX2=D;-K z_xiX;1GqW&4#^Y;5gv$b%PA3b66+}VhBk-6%d-w6FXZqhh zW(j?xVp*}SB&R6m?*GCen%2xQ0(rxpSl8M3@l-Q3OPQ_6p^A+VdsLyEGSNCEIc(l zOIT`0&{L=Ti|p#tPQ1n-Ck8x?{MNd8N3;Tch)#;G^-OL5OfW{Bx`Jisc~6OT*%!-f`qNl^|x!?<0FW zE}%geJ6?XL!6B9tcYk#6SpQc+mzucZnE-l#aOwA z_TVn_4*S){Bk&_;ld6}@F4?Zk(H<(f5xnQG0GfX`e9KOMO(|oSs@uWc7qvH#-7>bm zUa4W1wv~LDJkF)!U6K2SZaroXUokC+iX)tE%imv_z`4CewDz_hINeqFz$KePwY%rL zBjq}=txsreJx2p8wfn&SWRSA^Qhiw@g8y3g($?_?oUrI+rv@Yj6snxz& z^7qvW+%z+IaK_zYFhlgpx3~<)SP|9^NaFvnD*iU9-^OZR`W|Nn-^|H+Out$x^Xv#wX} zim_vYG%~U{=^tPZVwCOJye?3%@F3wtKd@%{AYej+1X7gXP1Vxw#TLsY&5O!{m$G_E z8bQ#qMOg|;ORLJIH`~f;8ymYT6+0^{fwyY!nJnqwLGLHJ35_%BUbWrJ>pQwue6sFO zfYF@a1r~-Ku|CJ8*l+E*BXcm)x)1YoZO0@8-BbVc-cHecde2MmPn((TYneO($1~Bp zk4mXa-_)dirVrWByRS+O9^jwft3?CCDt$)}b@)DWzWO!^(z{Md`Q~%eKQJ)92R7fQ zK9k3NnO^$}5Z3Br+iv*KKc@?N-^-(TO|SmTD%bWkXuLNK*T^wzyi{72U$_obke&<> zMCwe7EiGNs*fuk&jqT(^dM0g6iY3kHO&AFdBHfUFNI(7wRq8hx>LA3tsL+B`j#R{WZyQ8Tizur`)S+og}JpBhAv$&iT z2qWXOv8^mFF)t}EIf7?=o~W@XSC`oe64cCt7Yj+*Jf4q~RFqf>+!3lz3NP)WshrgE z^jhBDos$GOTGGMkq33L($Jl0UVqREB+h!1rITp784ATVbEgh6(yzvfswpHp~BZ%hY zee=)b4{j+yc$HaMl$ThbCuAEarhyl$tF(00d=0kN&qG4qAV!}%-kPZ@GSKM`_MpVh zKa!&-(eroKEg~&v(2NTuUDP`ZkcKyZhAZHHUQ^&s5h|?Eu0_L&SRNj@_?r-MGHMP> z%?&ax7FY>6IU{P^NT7k7ob|Dm}c{56DQ1wzxwMN9j&6tM-{6DZ<;}q*sVnY zp=gVAItw*#F6I5u*bdM@F;-4VJ5+^udnq(3H1*4_$-NywPj%BQx>z##&473NU zq6Dl2{eB`;Ia0Sxf0ltICsWY&;8y}p%!J;L%7Ozkwb*Pzv>STLnQ+0g*0$XZ={tHd zO9!$xux+BJF^ZCtYXxUlk5$D}7IoK~d9Y#ZE}+DS5;q7p2(xt(Q(J;NTb3F5#KH%+ zHX9O8vXjS_&A)%oE2CVU#u#M9->5F-u$f0@c#rlDTcW-O_9@S-k=&ST4dS8eTte)P zEVr;8p&WD3V7GH)=@fw96I^YdgGKjxYDpCZmNrZx2b&9wH8s15poVJfxA$9fAVpWu zl4FW8ac%dU3b-p|+S2AkiNZcGd zQye2hAtGY2vq~;XT_S($o~l;SIF**GW*m0XsZ1&-cLB@duW?CaTh^F-2dWNP-ArL+ z)BlXV+RCPhFRso4(fI7=2=7N}l9n1``BOAkL>ok3L_xiWVi6(--StU`gmE^Ig3VNR zl#1}Kh>Zy#V`TJZOuS&UdE>sS6N$5J5JB>mgJMED$(;{>Nf7>PMCkKE<&G~sy|qujL#b~hYb0)uoL;#tS9WGNBCo{@`gJujL)sP z@Lu3?;Ga_`%5AQ8sF@t$7Xat>FCUWcmnk>oPi-saBo1(U;zoIkv48FKb9o=0`eC<*)lM*&bLjy^zq}Ag|sayV|@jw3jE!zg}oP-4Hvvp?0-{t!%p+IP|y2 zOS0c=dkb1CYtA%Rh{vcp7$Nk*@a{6@rCQkRGAq=5@NL1pePjzPxpfK)A|Yd_8t#xm zw4j7I+A(8jgYq)~5JJ5rI1HjToo0x-SID@^wF7!Ih~I1h1!M4%NdW^S8G~5iZLpT; z88o&nK~l`A_xUY;r5aAh8NnYUr^-==w)L3h7?H@JcD7@}fny+Q3Ez3^}Y|>qp|scE8XFhaU5r zijcsM$!!(o;hTODp+FD}Saczy9Q8dl`K1wuF6u)J86QX^D}|)=Im_Vv?RXoV4RjgF zL52W?z=QhoOJkTp7h?%s)cNK6l-$bTc>bMZa5Be>E5p?kLY#n}fZaU3CL*fqIs}u)I&USj|K7 zmEJ57{@bS1aOQbA>s>C23uKUo3D}n190}lV--y*RyZlgc^+~OB;mj z9dz0-N+uJ^tf%4o3K)Sb(?`KY*qFuW$5}P{UooUjN7x@IfMw<~qlJm%pTz3R$!zCT znN<5*u7^C5pP#xe@T3H;57ZnaBa0eq-%zZPD=czAjc()=^-LpD;XnRU56HZ z9+ZGZv_$QEINXRjnZTRtXtf?zNd!sjZ^47IeiB}}t3eT57GAO%>fc<_cu*1jClWAP zvB3xYzu0jg1D)dy%4ElP6i7WUATn9iW5+jwl!D^-AcQ5;a9{Hk;=jDP#j8)l?YL;YSsHO1j`Y?~sgMr0H8sn`K z1Czr?gz4kqA)N$Vm6#aS2^t0tI|OT_*cd&ieMD9EnV0t44i9olDBy|(ArIJCM)gw^ z;pgK;;}qtjC@!Tr&vUwRs?|85ei7+cz*~a(m?v11ZMe*xL_rYe%4o*uL@T&og8NhLrOdD{F~3dU;zuziD@jFOPiy)%JWZZSW}Y2m ztKsA%oe2jb<4wB^YK$FrIIqy8mc=PUMVTfJ;<{KiE8xdCg!sa@!mI=_+TBi_$H*#? z__rrHA^pT@&t75A+>l6PtJhtb*P3Y1$ac9blV2V=2@33d;6YxyRjE0U}3W*g! zJgyM#N*lHgSv!7QiA|Q8Uc6r+-nSVs*c3weiPWeyh`Vc_{*kvI{H0LJB_`RVciLSj z<`_OCEI}`ZH9Jy))8N($&WZzcSv(zxkNc2BhJF?D%I)6X0? zaYw*>Z9M;Dn~@sY=|1-{f~$GeW7=L%4ePzX@gCvQ8$kOS8>}*mad^qJ-Zni7xtmm$ zHFHOzhNzjh=_=)Ujq?}Q8N;TGW=skB1{RfKTSDdAQFMBloY5@o)PM5`r*Mu# zo_h5#WN{;X4?m_!O|Y^2k+-vUWcPMx_vd2P?B4IA1w^Qcwl?YE)7V6h5N6NYYgwpC zv13O&r-)`Dn2DS_Gj}!>cX!$dSv2vecCg@Dt-*RcQe05Ca=h|XDSPYFbaQX2U|ZSI z*}%BjM%P^tHa9KO=2 zA5#^uFyKXPX>zm1K$ZN2*6jUS5SOx+o&K$IK52a1S6d(OAp3X(pzJhvh<^89``kZU zyjfZ8=WTTSq}YMTY;nsg-TUe`cqu19(9nc1sCt*^02A2!* zP2S$s@jCDpLJ~llRdcb6_sJqvagkw}vaCF4mRo6pjY?aiR}Vsy7T%Feg|5Ojr(BVL zA9hMjnRlct6`*=U5K|TdUCvwlmv@~`oPsTHGfmM}(8EO11MTgAAHF9p!y;O(7tsWF zTji6)_T5Zz9el!S>&=DY5n{ri)yG@1JJ@j&h!5IANRlJqZUoo|H4 z4xvUmVpK=4yYRYG=auGFuxLBiWheW(bJBZs)2;QrXUh9vqGWqx%PrOuMQ@oOW^DEh zL9Ryl3}oTAKoXw1<5;hDW+qWUejxEl$WvL3!yN8{fE_S%D@e!&d8BPAT^^}kzX4v)OQw|)ca%Zo?7xLWOeRk;>lIn5JXMr+$pZiB71%>u+ZpdeWN+!0E^ze+!Io@pP zAHCdRI+xtvRj>UcZf~|XtBFJhzi9i51ZNEDe+AARnGI+7&-ru&s6`g z_1VI5>H5h~s@I&+*dx93>5K@)9b!hOZpn##OaW^0r2^m7Z=T zg0sUzT=dFwjyno`E7lJPX3`MAPBP__&JR{+-9)&5hCOAU0)CRX(K=B=_1X* zf#yHC;tDD19w9&FZ^lLurr$cCcC-U!v=Bw9Knt@#3(d+D%fJga-%h45Uzo=+Y|`hw zA#)n}ph@@(Z)5N#bVWj<1SUZbyc4iIvKrHn}z&!Vvry#hg=LxVETxOG1bE%n|4}sJ=wRh8R30p;?&zOo?Ge zp3w$>3aKMqtFD5IvBlMl;%*f#1Lp)=Gk%FQn~eUCh5$D)m5e}dzt%2%3)=;1 zeD>0KcOf_YcT%3^jI3e=$uAl#xSqi~iZG0Jo5gi$&duSip2j}^?j#M~P92~(e3(i^ zA(hhCs)$V?rjU*+(|D-CtQI3N-s_?JHC?Eiys-Armq(T0y%0f61)&k&@LJin;nAb% z{|65m-d>Rg%#k#!O4?!Q0hfWHws|6c>p@3t#c-4qja$|zLrHP?*EcA$>#W4gw3I_l zpVPI$TTZ2Yey8@jgh{^(lPvyj1nRT(EKlZB+cnSr9`j%{e(%Y`c!z4q%YmDV#FtlK zXD9zUGn5|KN@(HEP{0@ zC3a`B$9ZKJ`EhD`kJL1V)>O+mc}JWsa9@?OG$$&#li&v+nM&!CC8r)Mq1WA)#MJ92 zb4g0d8?>T)oAV+NDt4o-qKStt=c)u#IvJRw;z4VFy=K*Qj~1Wc9x0KlMUUZR&m6oP z9i$ryjmBr;NTcpk_=X72U!d8#%x40@sp>T?p1MlnS<#_#1y1s&b35RC;BtRnP~2mO z-+xRoY;}j7D%VAR!N42L6HD{XH@fSR^3EXP2@!06g&tr^JXio=pAV7fnqY5NujqLu=J@)nY>fr z;7F!2(Rpg^!KO0lbq4Z^*CEd0= zHOF1)OXEZLOQehJn{qpqKwsob-15$jQOAdx>4?vy=0h0bh=D`VhjR1}V3LKR)UqQh zKm86DF282Y(LaU4s@bn<#qm&+M$LBa?ohOvpXAxLD$vS*3qe`Z?zSx(-;E^sprsQI z@}HOm=_jJg*#iig5=ho``ZX;q!Y=>u13M1RVC-UxF3qHa(Gk%Sdpqp2DsN1>Ba?0I zU%%EP&rJim5ycc5x_+4_L)?+OBg;)QwR;x<)_wUpY#7t>s=+N+7Ia}<$C}~>6lKY? zlnKz7uk7<@j+0b?c?2NBs=vJ2|G|h^CCiT@1u1X>chF=Xr6LYX%KmS=V_K6js}FTL z>AiprcgiA3+DDR+f2_~G4tI^B7jTRs@O@nGe5Sker>KGE_cWj59e4k?_>=qx9k=lQn4CTjv2AK_}UF3++; zz8WPG_JNquXkS9s&9et4?aqoa-7LuR+zRjWS6|To!Seql$&V&GR6zJa@-VLdr>0xX z(az5GKQ;N?*&h1JD=y#vyf>nX;^V+ThA8Pxkuou&;2^Bg{e!_11XdwRfq@6~jlu)! z{E26P4ACN2+3M*8p@s;F!3-6e$ZRr-B{E56uq{NH3QKxfqX8up#2-B;J#2$@n1 zFVTsgI9uOx#F-;sJRtSodAqHsA7tRYg}X42@7~0bX5S(z-&!VF3=?0V;NK|YUt?dX zhR+o4h~r;FU()?T#2i9VP7xHSWvJ%xHA25_%++scSD0x+RD zaKUeti;0Fg6{!6UvnfuI`#bN1CoV+muTdZJjO8L83)Jl*NEGHm1A0)o#RT}E zb4v4i6A|(%Kq)YV1sK5te@ws<5nS#JlCZCL>DXT)v(6gLN{i%moc^KHtM08bU zw>veY)J!W8ZuyL7(wW=_s>TzQOsAx?6G5KrKyq1K6yJo0G>ARZ;u%Sfyd^QSu$Y+4 ziez&IDT0|+P?h(E%&t!%!-OlOQtY$MK!R^kN^wEyp|Y&QEQD#rKP4N z87%ZUi6fbr9Jst`o#F z`vBgFH)gAsg{mxs(Ag=i9^#Y16%Hr$=CXNV*x19D@bvOCfC3+CYe(99fQEtSn^%Fz zUvhla{_v?Otb@|oLuy(~II0+t?W!|7IXPdux6LFhrUkRK206K0E}Or{L#^hVn^nmS zRzE89IooR~6va{?@&@6+c7Q42+HIiObO>eiELirh#xNm4cSh|I7AsR@Gny&gnD{B% zltXwnC#dlZ7N+}#y9R&z>5QgJ6)ALMnr6m1`+*6O$TEY)3>H8`if>joJ&_wYgl?nh z{>0H_qtl%*qoi{^ckCNjBa4-yBYK8|(c^islw*U4asNKG^Pw=Y+u4MiRH`-M+b1Ieduh-UMcYD2;?hVmn;3^FD!p1t#13BxUJIPxBE= z93C2#DJDn82znXalwPk9drB!M$37jL(a5!tZ*i>$ePoZa-Q-e^_|wQDxOQT6B3>u9N%+88vC16d5}bnj7~zWp*&JW_(c;<<_6WY<%rdfON3M?P;rviY|Q=! z<1{_pC(5P^X8XBD)dT?ZY!!DS!>^twYMh@Z=fpduWsUtBP?eQ*H0dN^=$wJO40!oj zP}S07>M7mi9!5Ivd9c;d0knJ%{h%;wOY@APgTzZTss`REbgqb)U$wg3)<+S;_x`8_ z$52|q4)d#(c@W4P(zEI91ZF2`FlwjZ4W=iwf`cqpC6OE*<|G;=fgJYQZ_t{#W#Ma3 zI$$f3&M%U(C^kYDS**iznzASt3(D#lm|0D^q?{-rR;u(iT+^B}9+Lp`cLRcg^)zrP z8l0G{^iIdufXi_ybCscxwF~Hja~spE-*K~w@~)My{35=`#JXC z&xxY?!PnV1_A{S$rNg(icl3Mi({h`y&$9J>E_EZHbR;a-dbw@EyUM@; z01>DeZ9)4d+JOCRsF_@Tc}FyXGfps!=ihD45CR(D0aQ3h+B|-{>mFc7Y)H!1BJv(! z{n3$771zJpnn48~9l%;^f46lmCyBUzzHMJ)yG6b;2Q;rBRqgow_T>wJ8-`+4{j=J2 zr0|(S6N+R_BO-6VF|po**B@h~YI$;0x8AuaN37}kuR+m^zsrO!uJv-ZwFC7PlE3%p z_f0Eq2a+_tKe}c_z$b1nt!9h>77bZmbV{PU*d)bi;Sn?Hf+IS%1qWnu6RHpy4T-$u zB)EBTF{-6SJ5+X4k^luwYJPGGmAurXN?CC+?oS!Mxk;Iyh9+5FN(yap!4c)B1m4`V z8KS9q{Zn?!Pf78Tm%7j_D|W$KTf7 zTR!05_5^9ulJmE|u!yta0j;Pu6KHP6RMwge)V2Dh-=YgNwH&#->iG*+YqGEIkrA^+ z7kqHpirCm=jmV@~7jklWLXgVkpa`uT1hA}iQLW6<*0K$;vdp!+?unqyV{89d1+F&B zY5#Z_SZM~@=E)jRX$H_~EH{H$^=t{KE(NmY+2~(x1hwYj>R(oZ`hRTQWl$VX7$$I> zKyY_=hv1&z?(Xgo+$9j)-3jjQ?gV#t4Ys&DH~*8m`*2k=^`oEeo~<2Ns$k#kZqC^> z1g%0g=X3$UHs?SZf_Q*X1OTBrhwSG)0dO_epZ8f{8q-n$5E|1~06@s|^ByCp;)uW1 ziz%R@1VdKDP)V#@R$)w z0w7}Pq6|3c0!!Oc?!D88kafT{^kRlAexx(>ssS%^4ZSYGiXWK_o7=z}>=+H3s~{(ueOlUZ);Pf|*Tuo?)}eCkbif+z z=mVNDfrJxCz;o^RSbLg(0AE7q+Ia(=%&xV_!s`!^mh0ca?D&8gq2P^GUxe3VAS~Be zQLOloa_y+W8_zKUnzLbMn!kaqxgiO!M*s;*6kro*BJwBD~iWj!0XSMgqt@ZCI8@)_=3RZT8Kz| zpTSPn!Q#5*01)E383Ewqy6pgv;<^a|;NrUV01)H41pr{-_!DijTQGAO6jys^jy4i&9^k77{ zF#&*X9+H=8$ov`z6kjf|Sqe0|dfU;IAwc8<0o{XV(?VEsPccaDUBPy_(M?}How z-tWT%0LkwI9RS+zV;%sQ;JkCh3?uaEd3Bo_@TUjk?G3wc+8^%i&1~nW2g2{80szME z!|Cc)1L#J3d*kYzHUMVp>>Skq)9kKpfj@#j1+Kof_A%FDy+MHbnB$QBej)B)uYB?Q zH3*X`=-8Gt+hL{IO9z+pSw8Tdf2J`2Jb>_9I#3jzVuKrbl(_<%4f z4opm-(GCs{jC_F64h6t3qa6esm?wWb`V| zV!Qntx5)u!;DOO_MIS8Wd>!cI!)d;R8hH2tbV7%mcl6czG6M=KhQl7##c5%$bRRPJIj9HZ)?nf2CtM? zHq4Mc592_B`L=c!`64G7wJ= zUvoWWmVP6O{Y2mYdn?5ceLY(6_m(zk-VxqEvLq&>zeE{+cl}z$bFH+@Cj$*PG*V$d zesuonE@s~2C3D_G{DA$PP*B8MBD<`6z`{xQg%8pk_y=p^bOi7=$;~5*x4-J)Zz~_S ziAG!x^{|YP+fRZI@Xxg;p0^sZL)pG~AD2)(cU1(!DH9BO929g3R_ef-+cqDf>HNKC zkJ{|m!5=y2Kb(lBIR_EHWBobG_3-DH8ocp5hWP!bTxv7({zZVJ5NiPYo+Feaht6g2 z3fVi)6*(@!#AsO8?L|oZH9g z`UIUw*VsOmOWO(RFzYzq|K;_M+1JBQ;e1#zYmt7+#_m=;S>M%*uR#)_^u(KrTxFu% z=(PIhkPsfO(^R{fRIWAYnI)4cwj-G=R!jIdJ!jhvmTd~FagLR!b%g(2o3Lq_@wLhC zGzQmPwlAn_k)bR=b(e%wJdw95`&tz2W@+ON?sslq#;BMq(CNm!xMs0F>&HjANJL@^ z>n$yndpC2-38UqmM#24~j!cI&W-WnN9FmZ_Dl6{hu!;J0{hHs*;;gBp?Dku;x!Y1d zNhd~)Kq}M4m;4UpN;mRgUT76s65?;X$q*8?dmcCN7`?MgtrFoYgKOCo-mDur%HBC! z5+s$3v)0q}O_ZGv{T>u0xyBOk;&QAYSqbiBZ3QvoHB}}yp3V7U>jk}&j$R@37`Tg6 zh%gRAb9Uo&ve*pssgeln95`Vtt|vC2~z7txq?djy-tWCpw&{D@9Ej^ zU`}QTmD=kHD%tUhG7q{t?42p>FyO9#2!2CGaDf${W~^l zmd@i|*v=H^*iKzb8Z}6h7I2IewP`4S%x_X=BPL&@q_|P-%r$&zPHz|JIyc=K2R%sf zQJbtVbHHRQfS(lZDS0V+ndXW_s4{7_m|5m-D!dMOZz(Q6wW$`Hr_S7ZuF$ny80?#{+1JvUXZq+9 z^V1tf*e;^V;P`eHHsu=jG>Yf@_UURmLT{tFdGvPgFVZ=d>O=`3b39q{vOMbx!j*fL zY{U7aPnS>06fhkd%-*#{3X=@mw0lyJ=BI!B?Ky|AG~SQg2@F=UfA! zwf``0FM_xvb^4`G|4pkeTvByx*84TMnC#u_02`SLgIc6Dn6e#i?937_cQjS+*9#-z z)eU+!r%plcl2ti{Yqr$M?{#_l-F*Xc3)ubd%a;jm3b6e?9p8lC?aML?r7q*;Gm=_^ zmM@zG(Cw0uHp8J3UjjAhl3z&byL{(p6R93$IHVNXo|V6n;q#DWqegqrJiK-OS|(0# zlgGcOJrSP-A&*Z7+;bicypYea5%_{4y;kHNN~=x?MfBgVxjPm$NwS#)KnLUQmoMnb zb$p64CsQ(+3)&~86!TJi$V&dw<=?XyK?*X{DW+Ezg%7f=Q_>oAo?*_)$lqmJHLYG9-%>q2r{y^4MhZc&(kONM6-q}Db#XdIaY{bo9#UPeeA=a72A)tT3;zGvr_;jqHANTjYX zfYebk6q4;UJ)>ypE^Z%3Jej)+^DKjrW8!XE!`SHjjOcwp?8SbT{2=qUar)w)(STp3 zAM#Fk>u&B{U!vRjH{}R!L{5T)92lT#+fvj^C{QjhPjZbPsYs%Tm@nRBlSD7ew0ij9 z@*FQ_9p3GSb=(1(ytD-6d|XGbAdNuP`pHRDbk3AC<%O(H)P~+dvW(8(`0*4ps?eWP zhlqCJjRxGWA;#mY^Xf}Kw>HM`29Jmlk6hzRB3j#$IkLD!rQuR45Ra_rZD`=^&BA<( zsw(+RTT#qzbLSN4d=*Ir^plvcLu77Le1qPqn0;mA9BlZ^=2%DR{xKIzs%R8uKqSrO_brnu!wh;`)Pj}_VND|zX?D5u`3kS-z=B`Upfu{?bv8~t<2xe z*@RRsIPa@c@_Rb{HRl@7>1D0!@c6eu>4O&xl;;@aBCvzA&^mj8vq1By3omWG!QjhH zg{Na{P>@sS?K;=0W_^8C8Vzkk)a00XqU0!{zR#(5P)26&weZ(2M3T18smT%FbK&p# z_t=OPjhoWi-+u{}Wk~cc8~H4`u-3YZ*GZf7JR<(;xozWEZ7?o=k)jk*+dWulU4BU9 ze71;L)83gFR_o>p%94| zQOI^LwoW!_Pe|P4UA62XyY}sF-ecpzb&&Q%yRiA@veZTFL~7^(>^ltOr$;oD(7WVM z{(R0H&&vMW5uR~7q7uAmDdG~#&Ta1K$K+yac^dB+v25@soeo2+it5D z7^=*VKAqPQ=h{7Vl=8%5RZZR@R!M)lj*CX5bf(pr?rjIJ+c#UF@aSzd^!^nji_AD! z#%i1dchaqWbtre^^pR=zv23YGIgL2zu%q85JQ=(Aaa4=M+1*kndg?88*rA**HGji= zlG`}S$QWFlxwPi1yU=(c)p2oG6iEng3GY`In&Pa|-IfJ>n^d})Zd6gZQh_$9vUIJk z-B`)LjYiVeEYw%&aomv%&b2NT>otmO&ZbQUJDF`bEgN?l%QfTI`;e;ULxY>NOZ&B# z)HaP3UzJ~Xa`5TBoMmuv&CRz|&$M5RInI;dqrcfDzGaqnTBUC4lubt5d-L1#np9LZxG~FTPDwE$6lO%6ck?Z|=zF~t zYG8;p+f7TY&jm8XGf8G#LU#-wQavAednnqrTR!4?&ll+%rRbS!xuw^hu^FwJ_1BLx zj5DF9=oLeaFBStysz{3ObA=YCR@&PC^f4&H!(O}=uJghx^Koqik+2(L^&yhNao<% z81+cG@wi5N!Y4BiYWgMdAJ2#qGXHH498TI4y&EUmA$5Nt-aEG=@4#sg%_YVBNynuw(eS2Ya#yQFMhS0Yy=D5C&{{WmaeI9@Id>mp zdW&`9NXR+Y$#Isf<@`&mNm!8)MfEGxB1EM1uUze1;07H+e0S9eJ8iCcd$fvPbTg=S zNa`WMR#2Lor&!}0?@5bkp5!}|&!6NQcnCZE5hSz-Ht=1yUaVIQWxff>3rvKf`4q>|2Zf>iAX<*{(Byms5h60qdkum zqY6h2RfPSfD;A@*3M2pfm`*VI6KC}2zaOecINXO&)0Iy%14=tV!)PbrsQ-QR;{6N2 z`4{lt800V|q!4i)ORh0t_~Tg3!{~hV&>vMuzN_08?8Hcm0&hjGvA<7=p6A-d^4i4= zUP5KfhuYlky>@^8m9KrzIxiw#4gcv#G#kW6mZcl6h^q0^aquL+Rs00+g@fqM_OBWd z!e8y=(m=IHd){QF0j{#nzk2TBY-F@yxxGfoBBn%VI#9gsb&0k;k=e#2dS^Nen?r&Y z#2qW*&7(s%v~3~2K@EczZ*s(;{hs6B#&W!EHo;m+@9_|%9 zSwfvY-}a!(H1`%kR<>>t67 zl@5$dQz{i*pL*QPy*&pdhUCC9j83`lc+m4SX;Z__M^#^7HQIhy2k4s+WQ587%ch|Q zkGJYIXZl^ z{PcxnddDO;V)>c-gKkfWCUc}i__S;zH}Cjz)cXdUKb-oObgyREVAt2vK``!dx9iDJ zFyj%$-(kz(4e^=egMb+6y2K<$<&}Gc1CPQJMyn&JQb2@a7pC1b_jLixrFs%dli zoCUGT2e>GvV2Ef(!pTg)+lfEnF}{WDwkM`pi?iQ{Cfg|LbB#rgh2^!0CMfrg*Y#qI zN--jaCXlwzpoF`W9tIGK9+j@q7w{=5ebXl~%8y&FO%x}#LfgZwLz)$yAVCwLWtY#Q z%$?6d44h&w93a5vXfkw$4q%A89|KUtq~@ zujFDB$W+k~7U!08EQ<_(gb=Sz_?xy za>^`mR!URRh;)o1Iz)oAA0^jX+$Kg7@uc)Fzp2XO^Jo@iS^q_} zFr2O0iD>)ecac+6=~36ITBpepjh_3IYw=Gu+K4M!7`yV)D5OQAYQxJnKv({QPOFBf zV`ueMiI0x~CykT#0G2gJD!}nc+vx}p?pCeXr)`4BNBBcz^b=O?0t^I8_ z#Rxt3X-AH<1e0(sKr&`TGQaHWAMj6kZ4wyYN=#bI&Of^p2piY-(H+!kE~u8+p1YDy z%y|_(^reo>lck$qLv=)3k5G!IRLvD+zrdq5!%^y)AHp$>EU_f zy4z>V2Q$!!eev(^nIztaktQBPKOt`ny=PHgaKq&Aj;%$3BO4{^VVS z>k-|z;<;G$?C~^}{g3O1D1$lX%H-@(%OV5L3g&`t{pr$83FB5v0=yWLan@oaS;fX-BsrB~vcbvqk$3B1!FTH%!7j~=2bD*aS+UMS<5JoQiK$)u z)HYUg5ztyZJgei0^^?SxXQWd`1&LS()w=C0wA5V8CyAAv(2+_8Z&`=V>W)`jJc)xf zom9RlO=PspTwGRGOE<_3CxsF5UaOyA^cL?qN=C{L`IX5sx5e_}YvoI3%$8T*U?yJ^Q2?PES9KIhCt6y*Q6@0~0o;(-QhW*h} zzS*@sJ*y4(B2yJ>3pv}opOvSJ2*JHpZhMLOnG(IzoXFlvh!=>GO(qEJmTfal>UJSy zyLrAy$d&E5BG9inbK2$>!kc;?GUxNoe^WM(nl3cZBBHaSe`Z~5Q8DjH6*NJ!5HV$> zM5HcO$V_1qK$p%Cv|0O&5p~YuU;9FdGMSYf55ZfOs7UVWM3;P;6v|ezct!a@CSx*> zV-loAmN_+tYk_-Lv35qd6g~MxW?IzKT+<6{?lPokTjb@v_RhBO=y#Ej@QaPnNzacL zkkLt-0NljPXR4t#;aa6fge_bMb1Ga7adg&0As=H3S*=%X!8 zC+|qq(Ou`UX~{R+)xcr%w(1oI6l0<0xNW=H66Vd-oQ%m&b=h3YKH4F`&;^-AK3YO* zf$e0@g4q@|G)yaCFVS5U6MnRrSdqp?^&C;!lR1_aa)tHnD(Tp?MT?jp>>sIfgTW)XWV> z&W_|X7ZDYX1o21p)2;$~W8|IA#*cdmE7JEi^?cw~ZIQ(HeP4}gd91A&H3LEo+ z758A5Z!GriZ+u|s2uXkIg2H$tvE07knUI-F%d%z!2l^MR8Xc4!f2z4bu_6|9jzpl$ zuPVKSdlY}9i#bkx4x;gVl7qsYi5hmx&=vM+bNJ(NJMo=wE*MfCpU`rKfAD9LKu;PS zB=Y}3R*s6+V0iUeFh_) z*TJd6rVwPJG2TGwh$nR;7daFEz0!qa%*7q02c;tG2FX%}PHK6nIkUG%NcD}HHPRy@ zoipiVjpcAAqycH|E2+6xSUP#sYB)-R+c?a&N5X2Y#j0WV{_eMltKr?Ngjs=kaTYOe zXozT2rL_tMdGBb~W%0VBrdiwE2VVT5Xd{!xI-}whdeeyPAH`4NUykrevmAc^j6vKb zAnfPaTPi>}7znR~GisPPJ`VZQ2wlMm^j$Y7fF>pwg-^B&-f8brbiO zP8OXWFnS5%<9P52YyY%NHoGk#7ErVxg@5Ls}c za?EVq$vq3??mpfv!)zkN?|h{5r)e@3$RIY}1vB>cP7+!8VcUxFOA(#}Gw~tnjivd8 zy3?7?sPp3iW<$lG8h#^%?NG*dLV~}@EaSxe z?f!%9Rzl|QjXf6Rjelx2n*PAg{xzDhe{vUI5fxhL`|cL*5;i&5NKFW;Mp)-UGCZR+ z5`%y7|E?KNXG@)9OWohclz8t#4homZraze)E!x&ph zI6gSJ@-^*Z*pPtT^by#dv1{d>1*FhKuN7M-kc7VDuEbtQ=geL{Z}P}+Z@e<*n@Snb z2%FT!AZ24A(&TSe(6n7kyVg_3e%^BCd+yF4^BTxF?>DV({W;)f{kTeW4$fEp9!>~* zFwbjI#H)Ei*HH|r)aTMHAfjYXMDR83Gtfsrlc_r#hxY#2h+swS;-XjSGWUaE{<5L* z7xD_pN5IhS=MY-8aC69>G{#o1G1h6X=YsBpfTio5ELAxsgq$vUB>T}e$l5Z(_&bO& zz1rP)*2`i^>axEbq&Ki+iY${=kdMfDe`QqhW84Lsm+WLX;@+}aHW^BIhL1-pTg7OM z)Ob_!$ebNc!xkDuuKrNKK^3KYiQHD3cM7Qm>x*J4W8QVwXPYbdyQ>`8%;e6<2;^XE z`5tY?HIxuDFnXcIMDqfNUD$JjfQ=zROrRM(ti?1UdGV1J*N=MaAUwh~0LA(v5Qkg7 z`0MwJdT(_D^hs7NV-64>pKV#%p?{Eo`#-qd;@@zoIB3-{7GezpTvd}Zm}ix*ou~@( zS6wXEx}?{-+%_3|i^1H{wUyLt6myBblZc7bbEh(Sv8I(o@Fd9D<>)naewzjv>Jwxo zURgw2sb4r@HyG&Na6M8Xv~=@sYQ)e1|^kv=aP5k1efJmGFGnY1SG8Csx^;}>g0iS zPyJeZ3A!Xuo$qMO(~ctrLiA8N7e3Lv`AiZ~KM5xeiQ|9!(i-gep?P{Fs4VT@kar<0 zBkH=25C?bu+3!~=4y0Cu?*7gbR`0IF3AOBw@(F#Rm=M@*4L`R%$PqVNm*vPWSH9ZH zOa4w!%{TH&da)db9sDG#`)5Zxnx1%>RhP20dcVBy-d9&h#P@7R8m&6M6>DERcs$yM zxO%+Re)lDuhj}Ox)Y5ukfxO-okkhB+VWvKWorC$hVrO5sUP0; zZ1S0_C^8Iw6ddPF70e%U=SnRr=q8SWNLuT(O`qt!I)66w6ZTRq3uUKDQ2fYuBe_`) zl>^pT(F=m4on&fJzbg_R&X9;e0US%6w_b~XApw@R3>1waU)0bEwWh^8#T03YW`bYJ{c_~0WET{Pv{r;)cvnGc!{Z&uR?xf&%E=c& zD5pT90rSPKS-WSTyK39y*$Z*K+&>iaw8^$de>mp&{;YJXSN?eNtn-8GtoWm)QvFlV zX34+TukbVOJ@JG5f&P8CQtZ?F;qpbO_H)61>Ld5Fflc%?`6l7R<{w9w7;Z@mU7~C3 zP4k7?*1Yc+fk5uW;-}iP&HHu||NC~b!%2_Y#>-{WM>E-J6M0t?{c%&w)gI=(}a$`bg#i*@2cuKBYDavU(FmpG7%$Wh-< z`N_5PtPzx)qm53vqOlho@R`e=|9){zWL4fY?<~LI&{sjmEm$NoiSnAmDM`V1C{O+i zbzjXY^&Z2jWyijy>~Ais=5Hjc;csSI3T_hef={mU-gRC50=w^fpT{bp5>;cxv=7pT zHOW~TN~>}GhGi`!-po0pS%}DiWy6d^Y*i3lw5CZek!i~?uN?hvjZZu$#mc9Al2dTL zK1ywk%p|&b@ToY(#;3Z9y}QbH;HM2Jx@pbaB)fTeWElwuzp3D_`FUfV7(GX`wMH~V z)!a()A|78OOo8HSPMywcUY*2idYy(1$AguhNzX&DqvESWf#hp}qiifo42bowl)w_V zj1Ko@C~S9IZ3l5!^y|LjnI+AG9cS2koLxWUo!kTbE9y-?%7dwp_(W0XU$2Iq5`HrR zBoZ;QORkaE@R3*YDP^G|evV`TizSuqzFGZ+d3Bg|>+LVii}JAR)*3-}*W4COi+)(P zGDlxPD~|d)=29;i4>k|TdwHbLvA&-)L@O`*@dp-rM$^4d7ob9!R_Fdk4mtQ6qcFr#@>9NU>;<*fGztLm9%wcvgC5wkEH^Xg)q|Za*jsOM8(zxoK*&uKZ*A^k>rbEZT6Ld&d= zTil8v7miMujftViK^N1q=UAFniJ+D=Wu!nYzl7#BFv}2A7)2Nr-9yNuqc(40)9S+L z+x%-huVmV7FMfgW0Rs{V{oD6=(n3<|m z2^E^sJl=H?a!eK?TiOVS}v3?O{4KFT1REna4 zu^kjWr~KEwAM)Crzt>MjLne(4oqS?fd<)7sF*D~~n7TU~ckpVL%erj4R7yD%Onlyd zw7I?Lc;$I?o^E^W))2do?QZqVWPRZOb86TVZNYQqu(wL`02In+2ffEQ398`oEv)zP z((F332yH@M+roVPONy0GBK!S!pgjD?)|4OdwDO9O;-bGQu0>S+XLz80jKydFN3!v! zcwf(O!>8e=RNrUOfxprjGRCU|{D)-UpR+S2+B+V~?%D=#x2e5Vl&M)h4H`wIehzpS zcw3AW+MkLj5^8(2DJa9){P78!G)vjWQW!GDn(%5T-@hx2$rN?!V}Rto6T`nK&%_3@ z!@sDo^!C9jFAmd4mh3pf!|*(D5%|;w34JdkbrW2e3Uw@=PESnc3jUTeskK*_uxDl# zJY-gb&7`GYxHa$@$K!s{8QxGLJDR~m?`@B@(gWestOfn8!MTKN2xE$1p87~GLnDrM z4rz*AT4m#})$RdhTX!E`N_LUKT|!DMjgzVY9WG`ZWZ(y-u6c=-wU~YI;v83Ly^) ztycY8kTEGwgRQYXlC4#BI$DYt;elMb?vL}kH(3&~=4|iaJJr00 zv%R9=+wJKrgXUJKck6+WL@~=mX{_AP3m!!h_h;BkjASf~?uNoJh5{%PpRQUL)}l#S z9jn>;e==jh5I!)?-Q)0~5V&U1M$QaXO_KeS~zXz&AqPBgH#PCH%DqoQJDQ72>hIy;l=a zCAaIje`Yx5O1rT6{A$`{hg*sc2{@w6a7DWZIs~aN-*=VyG95B@`iEpvzGSnkI}V8v zyRKqMKzm=`AR{D(PiwRGSkg`&u<;Scpy5m;B$$bjg-GR>^_k*6L{*xFRFOT%&vrx( z-B~1lAW5>Eq3N{lrQTCx-<+w@3!0gd!9$~qD4j$4fDxxf8 z<(&*Wp>1ev{AuQP9hi^lIX-@aCI8!%K@*D*mSPZ7No0WJoEU>qNBzkj^&Iky38vHO z-`u}(tS-nx#U@QnI@w6mnqKy}G1dlM#T!4Ry4_}D{ahQR(I4!(O>`Pjvr>Mhcu0S9 znaQU`8KXoeL{d{J{=WQ-vBbXrNwHs`pGD3;msUwYnr1F2;X)<5RBEW{8gnvYR>ae2 zRO?yFY5##X@3n7{%)p#&z;0G|6~PdRl%%^rtm_;JgG%R$J80nH^LzA4-?zV z8}68}M7V38z1BSo`Z2~CY+DI#j}SYcbDu2DT@~DGm{Rew72=Fgqpzy~Z->tsth)ed zhp!skM?#?2ogK_)7%|||lHX{;aagYRvK9J?a57-q5&w$s0<7DCW9M}VfDr(^+W~Ut zl@p@d0UZFc+kt-PwHdtDfe-A}4XoCI8UScRWQhBJfQHT}+2w`e+0_vUjN92FM-#Kvrllerfz2ge}^GWseoY_0Q4HO`+169P3e&E;Qm8f%FDI zMuB_wNrH3$5Jdz3f#Gg|$Mt2;khB65yusKs9Tybo zTCrJzUctV3fUyL@f`9Y)LJ%aelu?Yy51-a&5`fE(l-8FB01fOW4*;3g=Ny1r2{p0f z*^8i`Ypxc6+XLF$PDn5?7&B6I00Zs6nTV0+`vpNu>l}W zEs=#o9w1CDi2)!@kHLgPkibokS%gDkz)X*60DurmI7B{B`xrwwWC{ow0Kkn)(NIKy zTkL|0A_Cmvc7(7z`W@_cc)vXBtFMcJ2Bk=EKbCu$RgwMjKtK-emnVMpbrY&*hVkkv zN07lW=TorW4z@m`-!2EhSHIo+9qcVIzujm6D8F4s0C>M$I{+lVT|xjjzg=L$7Np-U z{MFY>=$@-?n-Ip|$N@%ABsd{JA@&msPDpH^(Gw0pkkJzqPKW{!vg3qI149UKLg@Qg ze25SRuzOi_p+k0M3~{;f`OJkRv%aba;BeAl`z92+5nKlBVIqFY{7;{r~rTv3jlg}#O-HPQjm!$EVsDZ zFB4NPZt;fzlR^jr^4DJ0dSU`{*j`pA6awkoZVLoHB@k5lWUQUGRYsHI^vVAfrMU1aenHoHm${crPG_9T-7miDC~l zI-tT4xBq2Sh>Jkp(#PTii@>K5WORhba;E#0I~%BWcZS4qvxgd(k~3Us!$sh02{bz5 zWI5YF^2_Gyt#PJ)a=n1)ncCc0)&lp-_U@~3CI%ANo~fXnWzR2fyuhYKN2pgIei*;( z;l7$%s3+GPVE8=H3G>D~9cWvG_AFE_n+-osx|SZ)Ur)gR%0{(0XAJHuK3-MU!?kvqOi!0PO zsSgZegxyk=-~iNo@94NpmD41&oPC-WZ7oO0RK^852VOm=HmCsM7`{f0(3?8CaBwagax>bx1Lz4fhr%pDM>qUA3Y0b1>8&?U4Ek{arbNuO;rM|*ITj^P ziUgDBo<#D;y>~?!@X+~N=yh|AP=emIq_bF=4hlOpLPU$A=|%a=S}GK9mv(w$S(g8CQV*4(>haJ zL7yb}=oeC71;6Pv>QUHO$m~SIj)r%_>TM1CN;zot5a$-+_@>?^CjF(nDms4VJI-rN z)jefPN|xf#kI@%8ASTs~r=mB2)2<-d?O+={e)g`vCi#4=_pyNZ`~{sF+c$BZAcqaV zS<&W=sHSN%yVf-YQQ<8hezA3xW@|~aLeoGTwbB({Xji;~MIW!j2y}=GIKV2ow;|xU zU*b?%>~GN~E+RsAT)2y(x!E9h+zr6&ZkZr?(zPMFYaE301wQFU#1j=56bY9Y@t|@k#DLc6{93&~SZ3y%2mUf0cA`RIW@de*KEXDBIQ;aDdm8 zHIlTjdttKSt4sPXHj(UN9}n@Um2NNMiyf<@*ZHm>6J8FBs}ibrBiYPC$@oh}FV_NCa31&I3A%%u4@N^tf;BKss&!jiO zGrr%OtK+UB*>(?<)f6N*_t28{QqFNqXEaO&WsR%H2JeKwyOtM{ph9!ZB~R($$3iEC zXj3}t1nNobcTw5Ml`oHnP`>P6z-Zwjf`C0WoVMc_QQt(gnC|CjKw@DjlXz7$TxKSP zO6;TTMS(i?f%?K!>jG9Mc77W_%GNi0C6;ihsun3T*=aV~wToGh;Hqp)y@}3C*{;)u zl+%Oz;uJHy)7g!{zH((?=xhpOk>wZx%CtTunlHIKan3AETZ z{QO)x$0AzMWNRe@y{D$I z9}I&)GH%)m^nJBZxsPk_&qo3_GODcYP0 z+oI(8Jl41&2sfS4c-LOQrtW7;4nCSUT3AV|x6tY@Z-2MQHuQ>%phOx!?$qWH^3EnS zzBL8>7Zdmj4xx7np&dGbL%s3R9}EEoJPw zR+>u49xyYlm;FX>m8-s%2wHZkvF%eLw^3{sXfuzW&SMzFp9j7x{amyn&C_Pe6Q}yc zP^Ny!fucv3C<}3F3Ng}I#D|k^(v{4^IWmD-FVq-k*S6gx{mAF^7oW}I_j`)=nPF9Q z{l8#wM-@)^o8K^7beo%&3hh+rkkd@SB=s@nbeTlbjRaEC(@D0|v=!ym&bhbEloM&P z3(f4-YNuG4C44*Hb<<3w$I28Uc5VE^)f|p`TY^k}8`v?}T`g*SQ9Agg$J*Lk-qkNG z?aC()`>P}>Wqjr14=B7Ts-rIwzbp!ZgFHD$J@#w&RvGvzdo%cTOqZZ;A8nJ=VRav^8X0lrWY=S<){d7Owgj_!KWJu&@nhCQv{qQu4CS?}dF@@w zub6$4)H_cURQG<+sm#iO#1h=)p)rv;^pP~5s{KA~WbHN>@utKelw(p)D=*RK7&_!3 zpSC}HjQdnu_dJ)$IxS_gKA8R2T^Zf8JPd!m_^42>5Ce6t`GiLbXs9kXhp#OA8ib}D zHJ%|xp+j4k)=*haWHQL#nXb|!o3*RJgHW1D$H zM%RoP`xIf}ha4qL3|(^{wAo&B&N_>6@{cejhZig9CPxRV$6Kd|7tO6v>8Q3zcomZ* zTQfemDr847te$d2igcCepPCY#i2p#VmNAg<8{gx9fUMv+4{5|#D5xaPXwJl{Vda;* ziLu|U8<=O{dzjZ(W5Q>bN6cBTH-UWIs7nju)V^9%AIGCCFpNGcVj*;88lS+$nrl{n z(ay8WPJX**6AAd;jK~I;7S|kIkLyVQoq6WeZ?~8 z*aIPXQ9^>M?U38-!B`7WQI6TDqu1m8n8OV*LfmC zcbcVFMOcKJvs*kI=G?xAZ4+vGS!mh?4O zu&wv!)l_M7$~BHG3^K7b9g?ZgW2I}?jVwfn6))+US`Yod0aN?Pg73Ll2-RbTt&tgM&)Wi97= zX7$rjM#$%LCC8*RD|wo-%TwPU30r(qcUxP@D|}O_{wt{_0NVe(J`(nuFUf}Owm1K^ zhWY9ZpWENtXK`P|%dyhx8eM~Hm7RejrfhaE8>iaa)oQY@J&w}M9Yv{O!7jL+geWk# zG>^3hnl%x}Wp7yRz%mNfSqqt(-GvfAad*9syvNSNl6hi`KA5xz{~}CXWwmVn6Sqsj zA+KHLD19i^b)p)_U{JU=ZdQR|<*HqbIXQtFslj({VFu0q?TBG(rddPKR^t4K5m@|M zABSL{3L98pjV416!`?}$byRF#jtL%UZye}rfycdnec=}Y|3;z$m&Rf4ryqNoeVc)!*)l6`4d0ZS zV#{xHFTLYEq>`NAXbs;@ovc(aSy%)o9i6{5p=L=TK+@t^JUC#Dejss4&Ra#?%WqDUN%vFYm zV&_m>M9I33h*XUiOd5u7`X?cX8duUiSivUM?gc~p(e8UGS!m+RC?Us)Xj5;*1;?zEp~2 z#%xTL5vsHjGQ3twdeq!bWKwDF6$!2FZ%Jyde6e@)x2;e$De z|4x_j7;hlv{iHSBA$NGhenf5NEWhL}ZQjNG+f!j2$!Np-?_S<8{W}C6W>%tK#!*$0 z>u<(k?=9S*nK#~F8a|%A^xg71mbk7L2XI+W$%QC zE>_ih7~kvH^H!&fOUAS6HhUB->N90hIW^L=Nr+5%tGN*rhF8USw(V50S}lIj<_J`e z&Q&v+D@Sd#hN{B*ULihH9z9q7zU>3*c>g`rqOn%Qd_I`2;|4*tUe#c^+hy)(ezP>p zREv1HfX4)#Kye8d>%eecx!WZH70GwF`9{jJSL=8*DdKbXfW(C;JM&~ z@#TW?gZra@?2708EKqzhSKZAt&@tk*)Rl`t-8PMIK-^9{B(dF` zpe}Sf*Q1K=f!FYgiVN!Mn#vAdZTEYPB|Y@2jzjvM8C%r}U)8SRpTUN3T1o5*P4DgQv4d1)$SNX)nTNTW5D;<%)7BLe*wnNV>&5re?JK3UZtbG+e} zI{S_GqcO26H!GIr2$$MFMJP0Y(3uU}>u5T0aFOEZRTb315Zh1~>dy-%aEqN)nU?&M z^9=NX2WGK(se#!;ExZ}!Qcs2E7pdo5?`|0vxx!DaBiW}6-!1nY_rxhj?`J)yqbC6Kfak{t~^Q3 zGn13dB$ND}>(0H;kbURP8%TNf&YQ{Cy7dvr2jgWHDg5z?7Kqx}8}~DA50)l-(oZz) zBni^wo?7MO1?3Yoa#}h{I0)|#@e$;Ua^5t|HG)t?d9-kruh={80*g?TaJ

UqzXK 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 z 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


Sqrz$4@uW45K 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 MhjhFdfM~S;0dQ(MLjV8( literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jpproxy/build.xml b/trunk/libsrc/jpproxy/build.xml new file mode 100644 index 000000000..5f5b4b941 --- /dev/null +++ b/trunk/libsrc/jpproxy/build.xml @@ -0,0 +1,158 @@ + + + + Builds project JPProxy. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/ByteArray.class b/trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/ByteArray.class new file mode 100644 index 0000000000000000000000000000000000000000..5b1735c7670661a719f50b05acfaf4c38af9cfa8 GIT binary patch literal 2448 zcmaJ?T~ixn7(Gi87Q&JeNRtjs5V8&<{W;U?@VcT07&gge`dKN!aET8;*7g+FGCrJ{2~LnxWLt0BB#?^+tp<%%WiPVH#Ns%)7%hg|8;*#-0Pu30I{ zZ*MW|>=%ie$QA6P%t6^Yu4c*=`?#K&=W}zFidoMRGP$CVtHnpexsc2qm|vKgL$kD( z$vc%|X)i0=8gcsnyG82B`}69+4#}G3vQ^p@OtseK9F?1q74`|j=z8;xS$Mc+mOYN6 z$^T&|z+H~*^3X7lOr1rcYtM2dB2o+|QzD`MWu@p?TegN_FP@^ES+6>5=bbRpXhXoxNz7p$^Vv`bYTcbEY_@@s)$uFtCTQY*tg5P zp0{h2g0)nX^u&C{FNwScE?`84K?CP8U?7fu1MlKJ0}~jPVO+<$fse3ZU<%V3`r5N1 zw>Nd<4Qyf4zzjwh>fX9R~RAFP_Mm&rSo|Lok^eH;hp=SuC6MuC*L%0Rj zk1!7mbL>SoA^Hd+po8v350nsina|M-gdg?bS3USxdh!Gja+Ggp3p<7ok;X~wRiaM> zaAQ7h46k6!!yWf)-0I+13FnGB#BKB~bN`xWX0Uh`0YKt%D$rk_%W zrwBJ5V@$ql>8VC!U+FTXHe?9>PUX3ozQ_4z;caS{*b)*UNDeOYdEhd&zd~uQQnYJG zF=sP$w#YZeb8()0oiro^S)W=KZ{ST*N^&&>Eyd{suewS9&EuF?{Dj6XCGCEK30V-L z@^kwPu9MtX&{uU#d$08Q6$u{2PKgg(>{PRBl zJf%&v_+M81o0-*|#?pMB#@?k(aCpLRneZzsJf|0MKbj;>k5G}bZ8#&H`P zK4~e5Ch29L^s?s%PxNU;x@qG%&u-mf-{=VfUUN(B6FT@)^@3X!QYTVsV8t}uo2C=p z9A>G36lDBQ^xTucm7Pvu{KCZ!<(^J;;By7(R&U&c)T9M^KpB1oC?X*3m#x6%h=2JK zGJHbX#}X@Aj2D~qDV(6URYh)O2dvA7fyjb&`4&x~(cU1EMvH5-_}d%>J?lxP3wYw{ z&s+*dRtiAszF0cz!)+n#{vJ>;#!x#ZJHl5)`1%D1%@(`OA{L#8RIw#?rN^@Beq{AYzik=VZM5I8dwP*-yl3ZK`FNDc>>YX-O{BO~g?@iVC4pX9xmq)@RwT+W% zrwc`xZ9mpT*IpUrR=t@pm$u}2rP`WT&bBxHgAu0R3x`v#q>l)Mp!*C^NEjgO8-`s5 Fh~9K8I=BD; literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/Client.class b/trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/Client.class new file mode 100644 index 0000000000000000000000000000000000000000..afbbf33f2575ac797ec235101d4d8281d3480760 GIT binary patch literal 1774 zcma)6YgZFj6x}zkA>$O~DTuA8Sd(BGtG2dcRX}K?5s)A)ehbNkjtw*EWK!`z^@FZe z$y#--{(%0dF89d{$uywLFZXrM-sjwX&b|Ns_xC>lZs56zQQS80T^1ww-b4a-49v^s zu8A~$FmTVr0PdSSc_6C=SuL7a!b5>B%djHDk23ruL(#w^1CJFlcOBOW?kSAsN-rvZ zRBTrVcG;``ri1zXmO^UDt7(PPCCAmPt^FPCZ&r5dJQ*%|)k=M<;ybdB4pYIePE%o` zRQ2}l7Y%*Tv>U#6@XB7QJK7EA6%@@w$08}1%Li562prFC8YnTYuPZf$sa*aT*M|PR zrJF)#_~BAv@*`g9m%bA)<8!$aoEr64oqMKz&85QG5BM;{rVcipeeJaZrk5*1a>!#>-gp(q~ zEW~E%8c~iuskjmS5E?j#TGVDEOR|)WR6XDP^a;j%P2nc6YU}Yel!w3YeU( z>|0pHn)t0NobUHrYXvdKr`Qn3GNtM-a#R>GZ(4YUEeq3Fx9~H5F|ci624xF5>r^0-ZYEc+q)F1gjVPf5)#bkbOQLypJWLI{1}+e@C5MCr$y%TJpnxY31Gs$ I>E!qAd%i|wod5s; literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/Connection.class b/trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/Connection.class new file mode 100644 index 0000000000000000000000000000000000000000..44beca661ef648b8fdf2e7f1a34750586b936016 GIT binary patch literal 2587 zcmaJ>TUQ%p6y0A4nIsOO1WLK23iZ+uXd`$nv?yQ^+Hk2sDpsu_8DSvF#AH(8C-_Tz z@xi(@tYz2o(FcE&%YA0X$t0vc%=u=%bKB>fedh0f{`eEX0)B|&I<{g+VOzwGh}}3e zJQDGlhP<46abABeZ~Gb^$M6LXG<+Gy0JfrdBIj2kz83LK98dAB*cL<_iYwoWC`Dn& z2X6-Oo#>7<9BVKYA`Po}YS;=xxs$@PLbhty*}QYLq!2Qz3Rhi)X=OL7wWgi7>qenM zWuMig+o-SIY1%<`ZAZPlFbi6g@f)U9wWJ>!=gP%!%-O@mEP7z@}2 zH8f5%y5f#`aJ%{}7zSw@bXOQ}8wV9jV%=XXTMhP6@d?as$L|fZ59IAa@pP+DbJ|N{ zDa4509lXNuf4Do?;I_iBS4yS2(O`%D^2BVD!qYH;#%Q}vE7?XiGiqDz2!sz_13Nn( zXOVkm#ju1`;j}X;&2}#|oN%~#t647^>!y%ous!$N!do40U|z?ocumI?rghxF>pGY0 z9UbrDJ=%AXTkPjVys2Xm^DNmhkmk1=rQuWpl{s`r8vwl8G|MHUuAsMpEKcdDpen-B zaUbg%YC670UB?Pmb*$kN4GkSO);XO;v1{shh7E;@m(yC|N;~<^;R(sk&UcmL&$h!l zf8MZ-N{|J++=BK7M+&u?Q7tLl>ai-9hve1F>2}z=n3n#}-fwOoKRHqpG-dh4^vX{v zkN9N<*yZlz26xyeVv2ORw9Rd}I;oYnJaUm9DgJnYK0f3NC4@50N!IWj;6r90gtz#1 z&NIYwCUXImQNJT3qEAFPGb^97E%eI`&j>G{(>R2ils6EioJ1HwBmMkrGlBY-I; zPcwa*7Nc$g%pk)rrgDHO%m3Z|M7lFK)vk&gDYDx!-r@9`|q#cRSzd>HI!E@SK;KO2!$H+4Z&SaJzPo)hs&^ z+?hoD^bt;M+JW~W?(~Wkn7bQmg|Sv&5=)3C_4D83#rly`5?piaNa!!zl%s|CPq?1@ z75WPd99$rg9BknVX*SeCvW4O2^wl`UAu^=TVcY~FjIqJn2fW{=CP(gVaXz~~k|f5l zgu71uIj_EZ^wJP|q+xlSijVNI2P-(JP{*MFxQ4fid z|736ft3NYVkSI@j`t#50`9Gw!ST r-4$HnDZ`3MVUsOPcJrvj%{QDNE{|e9k7C&5&b4>@0pA}wb>;pAB`W6= literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/Copy.class b/trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/Copy.class new file mode 100644 index 0000000000000000000000000000000000000000..0e6e936d7858fde2e7f9d8001da2056659f6a0cf GIT binary patch literal 1205 zcmZuwYfsZ)6n@@ytlKEJahIt>QMWNRxp)Ia1wp1<5+NjpPhBZc812%v0)NK%&Cet{ z6Jz)R{t17H;`44}%!D>MJ@2_b=Q(eG{rzzcU;^)=Xvb&-ZOBM57DX1hC>~;5iU}2y zQK*=T;t?K)@kD-~O3O19(<)|E%nAf7TcCI4K>w)cEGL(@OTM?^xu$+JBcM3GC(zgM zuKQlIJ2Y$AmNzGmO*TTB3p9-X<)yX+f(y=$DbTTE+2)#mR50C5y-=hjw&ECiaZ7hC zd9E9S-o90qI1J|~cTh4<%DIy3oSfzsoYJX;>G~W(Ny^HCfw5ZSqHgcyIE!WPF-Wj_ z)12#zCx%(_EXS5Uri;8lsNnDJnl4${o)>7_@O0yFRWDUxs2HizHYpI@aD3M=mn?}m zB0*#&e;Rra*U*VB4KZ}9c&=d%FI2qL@Cx%977!QcZcu#%LBne-s#wzS28(Q5c8o*Q zOBh9`Z0=}SMqa~PncQ<70|K4Zn$>yN3kRmbrNypH?|s{@v3u3~YRy~*x4k2vCb#GF z`4nmBxrErfH-VO8*YY@VJ&=ymYCJPHnYxbsCWM!ft)8>u9GmWfUY12I zd&fLk-{q3(m#KMu5>-cuo8;Z(PBvZLFp=P$ZwDO+@OL2Xl#t9*N=pxV>FuL-$g{%l zVEQ{mT6{x53MD-%wG6ehYDz!l4TLCL5kwdfzU|Ohunhy$2IxuD3Sp3u@)@i)7FA8Q z4zT4A;`PQCtkXi@T2}%;!>j492xOGZc?H1_v!BqzK%&kPu^c_bk^A^2XiXE_IEEQD#2-J78Qel1 zx3P*l)k&s^Y=${EX%8}DfWF#vYxU{6=^tja?6!=%7~ypH*e8YHADUF$zo1o7@jy@q UF36WWNe^gB4lp&vgaFe20B%b6HUIzs literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/Handler.class b/trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/Handler.class new file mode 100644 index 0000000000000000000000000000000000000000..02c2ae9235fdc2f512d52c6898c010c8fba9b4fa GIT binary patch literal 13421 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 oi?nQ=>S?CTWFqjc;(9PxpaACcaFoB#j- literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/Http.class b/trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/Http.class new file mode 100644 index 0000000000000000000000000000000000000000..650f89b66e7d1b7f5364ed49c202fcf90f603156 GIT binary patch literal 7491 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 bV}yy;dJF>+bxJhF2yQZ_D#m|FxX=C?_rR9J literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/HttpConnection.class b/trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/HttpConnection.class new file mode 100644 index 0000000000000000000000000000000000000000..c7ed36f92a25c6371061b219a081164a4b5f7296 GIT binary patch literal 1799 zcmaKsX;afs6o%j1C7~s@(6Y-W2$q6GaX|%9L=d#VOmP_fSjrs;mZYXB!oSilbVg_V z0sbh*bJEbJp*RdTcX`iqmV0jh{QdbGzyfySNa6(#OK~Ky9LGznsCdPT*KtI#%EKEL ztnu)c2RcZyG>LT;8!FzZ*c4Ef4byN|1o|?$lfqd+FBQxqeb2EC^Jr;nW?vw(W*tg_ zWX>?h-KIqj~a zd?x~(6=@#k<=3iYXTzCmad~GhM76JkgE#6_ycdYsvUrx4<fS0&o>Arn8?vP;$^wzTv9Mi=SXt(P4NP|t1|G-6stt!>2 zufb{&2qcaIQT1nL8d`r?v=YtEpl^`CG(iY2Q;Jr&OIWybfcs$G;D2De$dwR7gV zT{Ltf#lxtE$9SURgN7V*DnhXB+)L8v%{*fHtcGnYYRK|z9=e97SQHoyTD7_q7zzrS zoh&dIJY?&k(Z8r;dP=<*MD8-HFETuZ8%h%2=&HcWSri8 z5&~WH>ky-VDh@(O(`*Z2`UBML>~Ia@2Teohp)pQh9u;(=muBO28T!yqD>A?U1_{Zt zA>1bQFwG;hGeTb~yyswrzD!cGvo(Z*`~>|BC0%}BUDe<#7$cwbA{$hJJDBjOs~$Br zo4rK%5|JP{jSfnK1FwT)4R8#Txa)xx!i->wR@1oWp+9*QN&Q0fGtreA)a|)Tbj*Dx zTD>?4w-^J^s03YiYGlS7@=oj=0 z`r0N{lQ!uG^qZQd`wSEfU_&@FXW!P^Yw!8>=lf3pIcx+lh_oMJWCC=g#WgEoQCxBX zcyV7G4}5s&r{^Od9{cb_n4U^_CLzz@ZJ5T%DFfSM7+BJD&0c1RCW?pZv6`u?dM#77 zO---m3&~vu&#F=741+~Y=dYVb``p}7_v>Vd6pe~n-&IXb+}lQveV|zkW5tSblsRnh z6D#AOWj1ZQVG+3Jz_4tQ+=E8GhGCMA6&M2RCl%hXHAA-~EK$LJ^!5ZlNwc`NId zc*QWYxwEsKSxjf+xokGRYUnzz2zBG66^&1`4tQ0@Dq;*lN6rPc#&wd>yHZ}`6&Y(- z?*rx#W0>wHA?%kR3?t68H6v4a(-|zoY}2-HEtL5M$@LfwhGc7h zM8!)7i96ojlP-s|$dp@Ua3{niKyBMiODr`**y8pkIk~x^@jAuK_1U)Gg-z}vP9NPM zeU^;=G!r^K^rsQQg&Xu%f}4JTtjtedfGO@XxW3Zeg;6@gEguHpM-U-I$rf+h#xPDd z%ESa>PJJ0SF-e(IWc83`nw}BdY9qa)Jb~Rpaw}7PkcJ3pn2;h4lG2LD^+*CeP8sei zm`to)r#lzD0U_lZT%X`m<}ct8?YXbC7llL+g1l%i+DhnvhA@M>)Xc1t#bgI*fP$uR zkIZvOw6Q)?QK6*r1KzjFIR-8uZMAR%sdM-~V>lJ@pCOQn1S9e}La8quA~EV4q?G7p sg!sn@G)}My!no92>5x*|q-0`|ghC7iJwIH(5tA?<>LQsUrwa>z0q9XHdH?_b literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/Key.class b/trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/Key.class new file mode 100644 index 0000000000000000000000000000000000000000..266018f2908788d4700858f951a2740131ebfbb5 GIT binary patch literal 824 zcmZvZ-EPxB5QWb=f3D+@G;N{fuLW9aI}(<-EkZ~YNEH^nDC$M;Her=GO1!P((Dt2r z0TKj>3m$-nLd*4UZjcVvEBQ)}Hd}Sq@6ebadmi7@!p1*G^-M?lT&4SRLT9&3n+N?w zr^-k-8ZJiSpJ0myYSVxPEOtn%GQD-Uq%>%CNV-MeX7B?d5Z_@19SUDbvT%oDJ1=Na ztP^0Fv^JWg-!)}uk;YFm$I}$J_X7SlKNe^N-(by9iaIltuPE7|ogA@F{x%knjRI+- zf>m;)SRoSv5w(#nZ4%WXLi@b_b)M<;lc@AK*tB zdlnKC(8KghcURX|ckkEt$0vX@?B|fhhKEfLTOPIvQ&pvvJtt(#hYi9+&9o$;5GXBg z`rW3CA4D_a$YNkZ5j8}toIeas*tSXtAmr;>%eWSaB#|6h3qsTNJ3aZ5_`TS?y!zKd z>4Vb>!3%{A+pt3aVRg9YjeiwJa$w(gbN);CSh6E(zZ>@!%iN%*vn%Q zQ-sprEfR{qN^YAS8Ct^bD7H2jLZA|ELB@pTQG^r1+PmphDnE`-=CFYiWO$zpZBNrs6n-un>sAWlcvS?aB6h$iAoB(A1-9{$Y(m(8s2@z}ZlKt;P1hOt6Mpw+ zNDL&J_yhb=#&g>x%C`8S_ndon?{l8>oOAc<_xGOw7O^Fx4^s(D;!y%B(h{a+L@^b| zjIgtDWa5}hK*PM)FUWM~v4kZFSqV=VVymWY`Y#zGYWjd7nsch0;YQK4`I|=Vh>|879raig1 z!VvekYv~5BGUU~^V|(F`HE#PW#Z�u35T$td)Jww2wPP1m~V6qPWB`{$EV0v*B5y zoHlR*G923{kjlAB75A2X-S}A2-Da_J*=cwN-!O$72~p3Sz#y>-wqZGSB3R=7iBpyE zRKYVmSJ01}3YM`VVO7Bkkjf*iY1bR3RplNb?iF^6Yq>&xS-~s3CfJmk3;ASxBD72* zr&EX9m95mqcCnC>u%=)g6AE(3ODHJVz$U|RXW<$8|7PAfI^_mQm1;fPRKHp@>!gEV zHQ0JY)JPhWw34SpV=H5LT-Fi5@<9>5Sr zX~%F2w`moZKO;g<7|33r>kAex5cz@V+beV@W0#O-=}X3G$p|Mw%gi^(WG>Nj2}LA} zKqTuU3sflSK9+D8B%Ka{n@K4J#&9PflEpYCf-17OOI`%20EsP;dym{M+{Xj5QTh*h Oh!OH+y4Xt=i2nhfxgOg9 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/Main.class b/trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..2ba30123b7090171156181bebd9f2b9560fbddcc GIT binary patch literal 3911 zcma)9X?Pn~6+O?AJY!keds6nY7|I$amD3sm1d>95QYc&5TPS4@`~>q`&7JNsvTEx zLYjL>K0e^b2k{{}{b3a!k-I;t;A1KtR`78@DkZ*8_)(2d%EzY^j4JrFAGLB^gU_gV zM9R;q_*@CsKQAqQLBSXO*n%&qI9WnDrs9;8r%UlDvQm9q!5I~gDR|tEUDCss{b<67 zA78;)5Adu<#aC5)O~uz0oKx@(0dLB(9RU#*SlHd#)!x|L+R+->+tU_qZxsl(AJ&iR zp}3wL4D~p+nH=0M;BRSd+PC{qM`sH)#LWW54QA4Gb_jSXtM=1mvlTN07POm5Ba%t< z8}?qkKhBw8yA{>r`*qutu}UaIi@8Y3sXQHFylr}a8KWErltF(m&bP`H5ud34BdwR zd5#@4HLu6fqenXQl$#~;R>3!2ik>G26`151qtg(L=QHo`u`+hlXk)kpN@VJ4C36CJ zHM#{BxhyJ7l!6NZJb`aXg>MJ&B)%iCy301wY0VijG&koO^Q<|R7R_f~!FL1r9-a!| z`*>Qx`2c=^r^&vWnjs^e3gCx$Mqt^VuGX7+w1T{7U6M`#{0L8Rxn}MUS7tK3DPzW& zHi1H8X)VrJYi3%rnN)4Swi4Rf0Dg?01kizqfU;JToT&}qrxKjj>C#D$^Aw4Mo{TYI zhL+N8a*DK0*RyD}nwY>UjX2Guqs5H=%%El_2dwWKmdcaMwOWfYpl9MP&du^eI6uR)B&c*X&#hlA!79}{BLQ@xORg}2KgTZu z_$7X&;MW2C2EPs9MzoW8U7g)~wKVBXI8*+>#eUNF(m<9DR> z0sH|x=ZpBGK*h{9Q@|9t`A>w`7>gOP!mQWx)PI)Q^=dcl;QLG0cT>8^|SsOh9oSTT60`arwx|; z+G%~$~aUv^aOj#^2+J9SFj+Pvd7BM>GVdo6s9-D?DxlPG> z;jX;d!b?ipRFlTABkv%dyRs_hx=@EDREUaeTi4GZz2J1rpE_tO3 zcUq%rKi2TK;vW8h^`JyHUcQyfONFvTHfc&P1bb9BpFJFfDB0`as~(3q$(JJR<+IqG zRI!imft&*NqnD!++%&bhlWyeZ@(C36jlnYx?~P;d1&gy#so*;?=@u;VvqWbK^c)q%#E{l?&Ka0{6I3)c9vY033 z{G6P?g1&Jq3@*wdIEFGlgNymdVo6?aXash^XsrQz9pFr^_ddt1RYsYY1 z7Mtt66WG#MQ|=wd)_UInVfv`N4L|9N>-RzQ@o|gx=9h$LZmQ zQ7q{g#Uj^Csf@=?H)88H=0Q(j7qK@^poyaS3|dZ-M-Sl~&f_Xv634{d*g*nFW|wwu-ITCYo`*2%}!4(I9Te4dM>$ z5XaC+bUVd8l=q=oJct%?9J|G7Qc|-2AQ^vwxNae;B7R@MA(oY(-9EgQh`rJ(bo9eV zzc!+Xp@`ls7+m$xE_jwf?j)5l1e4>7w0IatNc1>Ivc7UN3BDycvlH`PqLKf=Dj!y0 zRs0*im$6AfO2MrP?3b|AeePC}{ufFwu}q2-I9!KNknzl8aF0$EX}5IEPhGH;ES;oi z8*}Y4B^ca2{rajL15TmLL$b^26>iezv(RPf`yl@zmeS&F92a326O=)|?V<$zHs$1h E0lKsS%>V!Z literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/Message.class b/trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/Message.class new file mode 100644 index 0000000000000000000000000000000000000000..61c8a8050f6d2b0172bec521950227dee10189c0 GIT binary patch literal 6592 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 C$#G`@ literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/ReplacedListener.class b/trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/ReplacedListener.class new file mode 100644 index 0000000000000000000000000000000000000000..9968bb94ee05f36e7a46d9b820f18c50b54d1ceb GIT binary patch literal 219 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 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/Server.class b/trunk/libsrc/jpproxy/build/classes/com/jpexs/proxy/Server.class new file mode 100644 index 0000000000000000000000000000000000000000..1074da80ae04626a8fa4ffbefb21e4c26ecbd7c2 GIT binary patch literal 2620 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 + + + + + + + + + + + + + + + + + + + + + + diff --git a/trunk/libsrc/jpproxy/dist/JP_NoAds.zip b/trunk/libsrc/jpproxy/dist/JP_NoAds.zip new file mode 100644 index 0000000000000000000000000000000000000000..c78006e368cd5816387b880b81d351f3bc23be74 GIT binary patch literal 1089619 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

sd{r4Qt>G`kcz?-ja-QKV5(+6$; zwsyY$_@ep$Ot|^f<1@cY`gdFYbkFaPe*JIbKZ18Q&s1z}`}DTfPdna;GbgI94ZD51 zfBhC+8;9fHsPn|(^LwXXUD9m&zg-{enzFoW)vIlrz4O6OyMJ!IRJZl?xc+Cy_0Q>V z>igD`{ssLr9dAGMRlPUby%pI$r18~yO|H&ve3ehUxi9f%ySD>}ey=xw#*ijg$^SRT zZ*4U%d_v|3ul#3j{MO6kw*4?}+t1@1q3t~yUnQlN#NQ!B&X3!6cAR6OOHvojc?1^y_x#%LBKkKk}9P_L^b;6f8Y* zwZQk&yzbY_x?jK0{d&Fb*E=-2HK^|5x;MN3^K!!0LI3W3{o;)_TYmbjOYi00<74LB ze6P&^+)}meq1n0Z{uuM3`6{=1XWh)XFUWt{r+u~S!aFUu$5qUEXnOaC6Tg@tf8bb8 z#r)Mves7Z*=sqrz-muQ9q7Eyj_ex&i8!~Xw^o@e8bvzcSNdHzXm_1*gWrcGP>NBMly*^yl@Pc44royng)duX()>#0=R z+5JzIHEL2kqS5MKPEP6lY3bLO3{Q<2-};H0drviZrrFS0yEgAwd;ck0;<1j)?>}o9 zp7ij7A9t^4)6=@ChbD}FJ=f8z#m?Omm#tVZ zb&Kh<&BpU%PcQThR%F~)_K4u zaw2U`!`zF`$DF-Z7Ta3ies+7pFY#}6tUKpW@gc>g$b`1_cP#j&-{%b)#qrPY{(QT| zHR{5ye5-$#Y-)o}t|9N$%PSuE)Td9^u`CR~le7L-pVx}p{n&3@(;amNaH}V6f4=*b z^^bbK^LIKid6c1~p5hN<$(6jfPAwbi`}U9TW_0VZNT0O%%ac709qK+U*l4Wpo6MiS zH}9SH>X!03(+=AXE9$$(pPu*AxHh`PX>T8VPrqGlJhy#zV#gr|J~ubG@%4&FZ#WkY z{;Y{3r$N=@hcxH@>^IJ=@RQlX@fY)8C$6 z@gK}M)FH7>n=!psAD=X%&Bk-zD>^MoTzw?9(=YXcU;nb@C;r7H|0(E_H_3L+ms!j=zrCnx6hYczwQ9v&)t7E z%uVvn%zi27ddtN4z`Vw<%<*+OaP*q_fnQd>_Sv{$yBo#rxUzh~;*PU6{X1Se^~?Sj zF1>a3AAalG9p`o*|I7nTZnxWU_+#h1qY2vIzT9@-h_O2w{qR$V^&<@h4|vt{vwFIB zmuP41t2^JYV13ngt8!M|z8mNDDLgiGb@yIdD;wRM6{PwCXBUW0b%zSy?zh@T)tZQFh z_sGQ~1fdgc4q|M;Yce}A=i z-Q(@P-Q(-EZ~sf~Bfc45b#Gd4g#BvTi@lCt@vS+1tk3lgbN3urR@Hs~2dAE#f5`O| zKe6nG#s`)aWxn5|!`N4X*C*|Nr~ir4sZS5Q{c}*U43t}>%zpZ3zPH-&$Ug` z&vv(3)u7<>Ir*2a&V3{>|CI@y&U{flddtj%^&Z;w%)o8Uo9=%1`n#*2?S6Bb?wczM z>b?DlvEG*@KR#*i`qrVcU73d;`*p_mFHPz=a_j9AKOE65>s)W@OP?)n^FmtE=@I`V zKYn@j=p)VQjOe&x^pOvjjc@o$@nc=nH=LQVW>MOz2H#ljM4CLlq3iaWbyvB@4gPe= znGX|JFU5hpbY4=pXr;v)QM+ zBES1a^lq^Iu<7XeIo~z1-q4@@=EeD&Uv9tZu{RxcXC+;`@o>KB^l)xZ=ZV2C|DNi5 z@yl~BjSt*u+c)xJ%J7QwgNJ>&qQ#Z5pS*JG`YV&-ayJ|p+j;i>-ghqAKC;hRY>nIf z)YyKh`%1fB8a%}{>x*;ObO)NQ3vVraVvoJw!OoMsmltljG~@YQhmU96a^7w>YtZ>n z`&aiIeR%Y;`{S?7I&pT!wm!RVOx|;Hy7st!^U;7|6Mrv(z6S5A}@?=)^^!bOP!Z5om+NpN;sa+y7a@c#eeOn48Cyd zqV~1^cDqxt|CKFw?mxe^{nDzXZ~wJ=o8yN&gP-VoGkp1xy?uA@y78svlgNaB`#rSK zIDOiJ+r1i$+ED$$+OmiHJ@?)Vp17~NF6m{_%(=WX{BPYcR}C3gc3yvYNz1cuPCEPQ z$m_d4>^$lupS&;s(50r^1~#)j+4lism(jzgwRd%D{<*!M<;e;4uU~Gf+WYM8aeIIN zYwVy2=PJtkwO_iu&f)R}%A_X6l|8%8eam03Yr~!^0|s6Ej`W-(y_U=`Y9DH6Sl_kf z{cB|5*((|(d9`!qCUy6udCytfwo9A-?9>6bu5Rf3(5USze{|n~?cckuC!YT6?LiN@c6@g5zLzh` z20wCC_S}*t1GbEK@~`1oLCURJ{#jOe^LMXjSKz z_f94(^PXMOX6Ux3ey@8h*Z=YT@)rMouweh9`d_}#tNG`X>-vtxU)$02lMk9cIN+}p z^-hoI+x9)vZ!2=1I@|BT*_V6V+HfY{^{)K$4$B6WKXKZ-ck$Wmk54JKy{o-5;rnm? zoN{bn(0A$9EZysl+jYnItJkb`|B`lKm8FBD|JXOKzrMKT;@9{^-|YQ7{Y0C+-qZiI zJY`!nFTdksn@65+aXri9JhXSip+kG89y$MjX7kd9bv_@T_|mFm&yw`=Zv!)0y}N6F z+g4MHntb@$lh3Yyxh&gg>3{O2MWY8cJAc^LXX_u|`6es29o^DuaQE-_v~M+Ua)+0D z{^hV9+}7%^X4f7rTX1gM^5H`pN3J=#b@+AAzvk}yPi?x|ta!-Ack{1ZIk)TfhP^j` zxt;uH!JVm7_HyYt8LQfNJY~4K^LDpu@z+K#PH47f&w2fxyu2CDtl9grYW=RZx679I z&7Jt_xwn*`uUYZZzY}|`3w_`EtMiBVe*D@$ics>_V#A+VClB@M^-RH%A+uLKT6E`S z%WG|W{F<)+eCExz!#^6ka{5{01J4Zlb*JUd3-)GJ*S5@UF#XEW{E1IKs$H-?v?<|0 zlUG)@AF}e*z;w^}9tTzpSoMAIVC9&|;sj;Gzj}`eR*CpB4*SM8tmad!5uQ>W&EmUo1$Pa_Wro(w>)o+{NK&-~AJ@9%wP!_~nlyLvb4)WupczK^eTVb$8nmk!P>-ShT*RqEpp zyt;2l`pS>|&ph8arT&r){A|^fwFfRAJR=+W#j-PlhCVsw&Zc!uy9_-ye8KOR-?*<} z#`MX~+^O|Cn|JMeV#S@Fy;>TM6-}?o?vdSn+e-J7pR`=G_w%_^rtROM*t2^1(qC4D zCeF!vrRC|l9Up2x{huG3o~YXWTe|zb(XC&KpWXVMm-hX6+&pnh*IE0&Xr44kr&u%Z zQl1{PIY+sp6!SMk#8p`-m1f2muiPFfvZos39nDHk%k z0{%K(>y&ysl8108;N?5oxzS-`h;!CSuTvUuMR+Uc3fn3?{yN=airHM`$D82{)k&=* zRB=RtSTZ@9;`Z>)5-;b*bOUW6#C6OJ_<{jH=MUS;J-#|!Vp=XTN85h54t+L;LV>EH zU~F^uvrKz=#8=`7RB|CqZX1)#hSWSJ(H*GrV{)4s?X%KNrO8>OaI{9pyR)QYYE`2_ zaa8T^s>k~3Tt}R)BMhU%HED5Iaj~VwHDMwQt-dhFkkeJ+;2~*S>cNExb;y#}DGfP& zTqm*w9ZB2jf5|_6-P8v0`U!Ox#ZRdl*Qdki^w|lr(m@6d$x<{`%!;3I@p%09apU90 zjk~QFcPIYRw;SSLU-x6eiW3`UqzU|Y^BMYkx_=k^x3mBLFW}$x{xrS)0Qy^J0L}lZ z|Jc-(IX{efj^+QvesA{wt^Dl74L8sAoBKNa`>1~@{`;~2?e~5=oL5rF+CST$<{xME zv;#(d9DcQa!c|soK>u!!Z!&A+uCn~o+nl3%{=U4|->kixEL~2=HJ~XQUjqA$W51VK zIT?K)cZK!)8~gp4{qE_1sd*huvB%8?3cb#1E|lU5_&Npy!63eMjD$U2UJF@X4<9y% zIiDgU5b$zNe?n!z<4%n&%~g^O!6zDdo(o$7PPYl(<+gCh<1f>edYybZE2103RhI;u zAzDJ67l`m2KFaW~Hjm?ZXBkaWTLNVsKW!?XU>6rkhog&ATa3yU-a1# zua{se$I+pw?H(U1R|6=O*n&F4$#b+Zc|plYGK{p?Vq_D-lU6z{9UVE#Qso6mTbW)@ zP?He}hXbtRfn*e(VAxn_PKIhE2`0tH!sZ?(uuuU>%l2?yw=z58cZEFxzqZI~5g`yi zG|wWp1w)=Nr(!cTx@BaKl0gZOg-OH{;A_HU;*JsonburjA{&|Zmu%x)5z<6;G)ay9 z20}h(I4O3@elDzzE`zKvKw6e(n)2-?t30E?ZZF772!|q^ER)QE*JV*CP~fG)2J zq$zZUc(z{3JkB41ZKgN!)qYoWNQwDe82XRU!PeNOJRqzJ(H16#Ag7>EXTuRl_eTtR z$jdmNC&E*tg85L)V=J$*c|9Tynf<{?Sh`CrWEXpDpm~VE#$To;V+>jGQA>Yl--vv4 z;}D<+xlp(o`XoSMI9}@UhPe>0r9jQbx8&F!JfwmKYGnjQ!z}UH?koXtrN>|gOw{S| zb0L)-mZFp(pPJ4Zs-(~!oh}zydQXYROVG8RQToP)=;3&UZ#16w8k4(>%i{_nGRxZdn$y^CZB58(70e>6;KM)LUP;zV}1^jdbK$dZ= z3Lho%3P$YJA=`{ODf@~yD=$nB8l~Pd{f|3shg3w?h13u~5#&H!| zp)(kU+Ua%+T?G8FzaZ5>a3Gu&a+Vba=vLLaIg*?|I*c7A;bcg2cr?MJl;uvoFc2&% zRCp)~ssI|064aC9&L|mLG7LWpo8wq}Fgb?0sg(h5#K+OKBfu*s6p2#?S!tbz@T*RD zwH?o6HR+U9OY-oxpqFjWLMIuOWYSP3IpD*=l9l3eoqjiITj}8`9P|?S0Fh95csx}B zHo~w1exp0vpSxbiheu;qrlwfG>di*sWy~$@B(zwpa}F2r{}Vw4C2< zt14xbj{c-ZJB72G$Fo}nL(Jpc9;b>dBBfZ#1PI~cm_uejJpoEyG)8!) zkkwFb18Zxg+a)>Rw{pB^42O7`!I8yJ^zhO>mPk)XpcDE zAgvS$WAGQZkt_%et3*axL+6U^Dv(b4BZ+{zSt6j4NOCOAkrKrUPf#Z;3657ycSr_c z7&JsyqtsJISU`d(^cff%y4egq(jD$Jwi2<_5s+M87E1zE9@05k*g%zn>}eR1+{43< ztfb8BE7OvBA*3?Akx&$+$oi*9@vFcO>_qIz0)>>MOBtD#$lUCK><~GX z+&J0fN^w=PBEYB+)|Y^bjN61z(3O*XkzQ#lC5(`SRFUHj5~KsPkO?bTi3EU>K}u)? zRYo@ueun8u;+_|FG+-hkzahHcjlm!pw#*CDli?%@jVhyqS6PH7Eu4G;LDD!8!npdX zaJeukvLvi$a>xUv7j|5!C&Y)dZE`1|7cWOFr(^?~Zb7W@1-)EYSa%(P9p}b{ zBXWUKAStA(k*2DFbQ01?5=C@FgjVw&kh<{XrMOJl)4YJ2OD)INW68Y&Pi=ohCoTq% zKOMzdVK_n;NK#b*UL1v%q8dfsyNNP9>)1L`jz}>#2*F~ zi5^G?u281a@8Y~LKExiSfLKaFPLmMk!4W60v>M!y_5fg|40nl)l3m7y0XvmUPhsg! zPYA&Q( zbc_+C8&e06CS#>or;9n!bOdFiD5W89@C&n2;n@WOL$g{X?%ra)!p-qyWYrC75w3b8 zv=Z?dE95yx4{1oqHvvFqxyS1!#NScnafizTkuc$_)9=a(my=|b3xMk=3Hu2aIEicx zykA+wSCSbBR%@|!CZ#0+F;K%F8{y`CWCw{|DS|vU!aj4K4CgnLj zUiw6Yhzi<_$ydU;6?~Yq!G#*tqVnm;@)S1uOU^6Opp65>cDJle>(e_{>!T^D4s$%+ zf@*xW2f|LTjLhH9>1#;9O=}rJ@2Fmbux5VR>V38LEY)Htf`od7Ly`DE$;f-Gw@5?{ z?EFUr0{q2u08;1yF1+E?oS_O8&GHfcjLM!k zLm8$h!%!vL7uHn?#bKQ^^oR=})f3JO%A>$>pmT`55!Od7um@yRgy|zYUMx+UCuPJ& za5j`5qAEWX%o7Wz#>}6I)Ot2?p);Ld3Iz>}rr1LyX97`yN;@tW$nKmIR z$ahvcy>hzPGGs3my=9wL^TA z839ci)vC4Yjd}Oi+H4ISaP56Z)z5n2c+CXb9tb^fkMkt9l&A&)thxt2NcF1;Wr1)& zPS3o?wGl?4u+BqyG{QdlIj@RtK0+>3qB?@GD?}`zI+sLY7!*+x3u9lg2a&Z?!z*ip zZGV(LVN6s;5ULAOg2odDsmkdld>%H2OhB}&=&Od8G{_oPdYKHIfGoCDmV#7`i_Q_A zQ-#Kn>0@Z6p<=v05*-{A5eBC%lL&eWc3h|^DfV+=6-(hl4enA<3x|uGBCZ;wBg)_D z8Q&>ryjASoT+p;uJQD2@Dnc;G@k-K~)V920ZtaJi)Cf^~390djKFdnu}W<>H!^45S{^QHvcaqhGo+FxUiG(!5l$1 zH#^HfWe%ukW2crD3JU^{y3!-4Y6-albaykb@cI%_&xw{&IUk6GT)@jy!Aj$TArh&Q zv@Lg(c%A-=IFCDlu$8aSSl}IHC zS@M*IVbBR-!gI=LsYIu{kR!eO!$W{G)R1)z^YnO-;kb2-QlmB0twF;9IaWab8cSCx zbKoP)ftN4`GM*dd4=C7J$SH}P$~j)u;~fTA;E0gr4RusGQsF9(_q zoVyH^L%fEn_E8Q|`UqTLh6x}~Xr&uf;R_JqFA&l(xX?Mtoo?i;aJs@G0kcl^HlTbY z<42JLfDuiVE+m}tayp6xlyd}LM#TXm3%C^T@<3l8x2Y<)YBUz}dWuWpDk&IqAp^+{ zse;I&$6GDqt0JA%;Lnn=Zprj|jHm|45pQ}V{ zi-f##FXt}{mm8#A0-Gn4EKUSzok9~S9uY;5{UyyCqO+hd1@Hk-DJC_nZF^CfKG741 zp^_k-vu8a}OcVoX(Nu(F4SD~+xEH2ONB~7dGLL#vsxxH@Z5MJyMz=DPJrEWJq%|s} zAH`stGX4MB1XDoKK?`YW5~*WmN=bw9hnPw^24^Oe@IsoXmlC zPhKdcruzkiLLxlUfgr_d=n-^!l$Ru%J%#Dhtpy#6nwScxFI1mDir-RkEMt4~fUGZGx%aNf%ZW-aF2E` z#L4acBD(DESD*ap)rSAYrvUSpdcuTee z6Tg%WwupL=FeLdJb{@cLYJ#8(Vqj(EbIDo6U=Fl|KBh;(gG7prQ(ew^1?aL8(w<-q zswoHn(p0&pqi|qzS2|#g!94Bcc_6$Xr2!>prDZrms#sx&9^#^CVL**t5Y=*w{*jHD z2z#$kEL6j84ekfZJc8U{UTJi9UT-0Q zN-7PIVij)R?%sOe`$p5dfux`6&u{)1g&5ea;;% zPY6Dk;hoIbqz(9^fTolKg^uKizh>83B%}-y>ayqvqKzk%cq1VNJCEo#u?Nb^yqwmD zUO#xKx(yyu*u&bQ`;?$xHZVKQYegQ3X%O|}_^##sZqYGnhm(SPe}o1V57Tjf!TO zG)V*U2dk-$I^;C3UG|R_Xi=*m6yq@_D+1Q3L2c|5<}|)rIE*R~PmTGWmbOd^jm z2k6cfHoD$PBQxDRXqELJBH5BC-hH zBvg|$l|yJxLv?wSQ}H@WIIn}qfNIhu+Xcw^2sA`a4;!t6c8E3^g*)UVEd-MtmEd?o zc4L+&L}#2Zn)Ic`RteW!=JDs!LE}J^shtg;1p=aTlm|j$ZM8!jw6u+4p?7RWC+JUu z;2I-$2eQa$kn<46tfDlLl#ubj2q@663v}mq`+W5l^X{d7_V{JE19YhQN3(|=ETsNI zawy5r-HN;v5q4FHJ?!CnHSLIvsgs(>d@JqMU21@q;UcdAuLpjoZ%=`7b< z>MU2gCPCsg*`)UAGHrw=GvEz`XphZmAB>pa=t0;-z=i4+P+{1FmB;dBrE31lfskQ?9= zyj*EmMp`nv)n>aX&w;F5Vn&hOUXbsw6&f?m`8i7HGSA6Z$U-2S%WQ=vQXw5O_ zlT!_LKPt=u{vqWY=Ow4870Q8sh8p!V4xVY*NoSC%!LF#NqGNs0H!XXk93>W`{b*@F z9M!~uc@Gru=81M-!Hpl>F$7YRQ4OBD>Jl+i#Up!0 z@VoYdPU2mZNO*Er)O|7mhz-+Ep(#=eo+iS{Pc}9m4EVue$tpalQAj|_25s@twp8dG z0SCSu7-V}O3Hplhc?DaAi@C(gzz|&}uVm6E9B;@vq=vXmm&ip4ha&hkP+yinP)R^A zBrD+Oh-3mPRi@vk)xmHV3L6QxgRc&P@hN1#x*}c?o

*IE|t7XILUN3<(5{&JlR! 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%0ADtr#qX~FlE8>$-ngXfsoH_Rv+m8^Mk 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%0A4?A9ja%@o6{B%Dqa4YG`aw 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%0DfM>nwX@rNBg+K!gZvUP=1(%;%w+y0lle&|Gcl8? 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

4M#o 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

tHj>v@o`!uw_}) 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%0A)3C})%wU1o(Iq|< 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 \ No newline at end of file diff --git a/trunk/libsrc/jpproxy/dist/config/saved/asdec_85f11ffb.tmp b/trunk/libsrc/jpproxy/dist/config/saved/asdec_85f11ffb.tmp new file mode 100644 index 0000000000000000000000000000000000000000..6371c6aeda1ea21fd874cca032c6bf04d4dff861 GIT binary patch literal 227092 zcmV(rK<>XoS5paC%>@8>ob0!CRGd%qJvg{aaM$4O1PBr|Xb8dG-Q9u(NYDh=;O_1o z+}+*XU1o>KN8a;&_w4R(_w4?$!=dNtdaAqbty?YQ0)RdS08ml^0BSIR$O~Km0N{n* z4+a46*%=t|ycZE8aj~?pvgZNyUQ?MkIN0zoF*!RsGdi;|TH6^jvAlZqiiw$(iItTB zN@c2+Spi_>gzsF$K=9bZ(^-)?yT!%$Y5ll zYj48G^ta>l7za}a3qyV(18Y4)5-|%y7ZNrSp})uf^#0}Y>}>EiQ2u|=)O{Y!sBdk_ zWMgM-;HVG6WCWV(=iq-1d7i??QP0BE-o((3-_gq4%G&u?h`+7RKKgcsx(?R=_V{Ca zes7^`W$dVHY{)Mv`}5sj{ht_h9Sr#;9j!=Mx#>w*nOT^B!FaavG5trje_KET@&iOr zcOdux!r(w4Pz@deq%bt-9|9_v1@QAj9yRPq15$hdUdhzJ(E6Q)uB)LPU=R%q00{;y zWM`^t0df)sbp;LKzyZbwOo0cmBca@2fS%{kK=5C)Py+zc*186!R>pu3G;qK>z@Lu* z?80+6fKKO27XU5*9&mJYg!kOAJvYGTM&`LOdTzX*o2}<&;JJx^ZYltRn4ggm$Xl?| zr~Smvi`>;9Ac}Tk^pN(Cu$p6PMgr%$CyiczggYKH+Q@7 zEJ=``T9CgBI4}28LsCC=JaisFt`_V8tD?6W;=r&fhf-sOWokS~pLS_}(DYIx1kZ~V z%=kG@^MVnpth!U}10P58C;sWNsmp5wl^^Xz3K_f0LGtEp8Lo3pMPS|_hRYy^kiQwi z!vDn!?=LoN|E4+ci`O59-p>qC5g`7-5WHv|1AM7z)f^|$6V|h&C{3v+;O%}1(8;z) zf^bUkK;raPa9MbDe=E`L#=X!mZE9nboAEq9Pz&w;l;hFFA*@<3Mumgk8c=qb1JS@u zXwpLpam-8YxXjdot2O2IF5hs3da0S%d@Iot!N1TlO(}2m(z-LZYGt%>Uu(*{wLmf_ z$ay5N{!VqNd37Hr2}E)QL=x&3Nt_$_zo-HKB82yErvK#klQ@VZ8i*tYh$R0rNp!NJ zwaB%l=9PV%lxLDzAd+IQ_LP^vllCZ=!1RMaI!^r7@xr|%U3Y5X+g<>Oq#6?bsS}b5 zLRj^iZl9`Ih!!CCgj^$dH>SxC68`h@K+SV}kj^ITLD{;1(EZV?X49IHTDNXhLNi>n z5$i7M%EspNDlaW0h$31dK=K94RdbAUiHlkn6^P~H&-J16BlE9f9r%lC#lMwh`%i*D znS)p&f{GOUIHspDZ zd2%^cSz6GwrvfGR^?MEd-cJGViRHzB4;zjdB)%w(duh`yUC-6Z@T*!+KqEab_=(D< zMAfpyC!d4+DS=X~dbVCfo|uPp!SYo0*14qC?QRxCaS22b=3f*m{=MS1{>}5B?0(XI zrU<|Ovsz`Jg#-stL|!StSG$fYT5u9_^>W7wojm#f%@rwDDTmE;J9;!BW;8y zE-C@S?ZT_jG5La#ve^_uEkNY51tV?ByZOAxON)@ai01n*8J(_6YSp?ZKpa;=9AW=e ztnq&l_5Qc2!2hK8llPxu{V5}eBl&Z&jy{=WJI zaa}F^zLox)QgA!MG2gG9M`!F1BJa!F6|NG{rmem#yt2O)=a~QDBW4R;`g5MMoYf%6 zifD-7mPLs6ckSJ-{R-7|e$#~i*9r3XX(97(aR>gB;ZN#1bptoKO!OIXb{TqA)AU6e=`p8-T!p};G#O5nA34mn6o z7j#eTFNKDo`)#0&(qBCaq~>1gw9C|k;jgMKhXz$GkY_682~@R;86=>!x%=oGV%;@; z(e(QqA==-F^+X6Qbo5b*M!~dB3$HpWYx4Rr#ll>m2z%$erf{cM;yTn+^uqf$OT=fE z-hYqDvhpv#EFOX|O97R8VEU z3za9VV@c8B{t$FoJ^%<83}T4{zyL%-Q-T4&0XR^wV)hQY4vzL8TpR#_(9qzZD-k$A z5cKB{4FL|iJ^b|u_4gz6-;XeVKf?a~2>16R{NIlVe?KDrd;|cp0LTCx04oSnD;NND z5d;H!zMGM8gm`lyjB*pOiVKt2)BpgZa3}z8b zZUq1qK$v^`2V?-2);2PL@yRKf=XqrS%!CC4NF6+!aJG=6)j=Zx6q^fZ`F)`ayrzZ#3g5sn7iT~nv{2+8RfJyU<5$KgH zKnp+%WI_Kof@c8F@t?y3n2|uy+eQ=uBt}X_(^Dh;zrNVXMLkFt416<$Ya^OrtalFc zj(QBYgB!Mzo=`ADVkpSB%GD<`IZ6VtkGcWd1_S})4+QkTAYcGYV5aTBPP)BYKxqU3 zFhOmF#B(xHLlWj8zp8WKdxI{*jx9hyG7vz56q3(?m`d0MF)C))^#sj?G|F^S+;YKa zQS9yQ+#UknWeNr7O-~QtpJ2*2asUC)d5@;3%?nf<2Iqb5d=dm!XbyV$cBQT z24RbePXumnZ-cxfTA#gq9}Y7D!C^sezXoIU{XG^G9_Lqh2v8L8-{Sj#T3pb@J_Y~_ zqW!7(I345rixqG{{PYtLID7I0e4d2*ge0*98R6WCfdw&KrP|_K3zzWegQ26wZs4&cz94Yyg`fmXId~N0f39t zfK1uMlL?m_L2wW>2`(t#0K0!c`(rctH(Y}k!;R%#ItT~=q<-k2#GqFizJUGcoG&KS zFY*I)pnjS|pUprpY^D3vXW5?T$-|iWcXH@#3h2HH653VY3i5@)csc|7p}BHfNkD>- z{GmhqS8bC3R4_3}zpa4y_<;Kp%;>thv;`VUsB|BCf_ZPNUoSeu}&_!qi=RKs7k|HZZW&;01O zt+0B#5+L6l17i@a<-HBHpxQ`yUqPGfam66__&5FlC+O6`F{c zK+BK%x6${1G6w!Jf#u$PMx(LC50lq?G zfdNnfy#Rn98=S%O;1FmmZ~zv7fTo?n`)3alfCC^XCt(1+3x>vm1@*A<5d?p}LIid2 zVg-AC4MTl)^i5^>)x!V~{G*2pAOiK$Jbv|v03^@vVt)0=0A!$9#2|n5r~ofPy*C!W zdUOEFKM_E|nL*c*U%^2g4gf6xM-fivr{608Jphl^|K!&wegGo~GU@MVZvf2yARq?1 zq~mBKj{JNj1?u1>2}}HPd&C&zK#Ro>_IL2-pt={W7Me+q`#hXe-T{CRH`R#t%Hp9BZEBpo!ts9?OErq&>&Y;Oe! zV_Pt*`Vh5 z1={?p{1h*fHA-g1Ra?07vVWd6w1hyUIQhYdAZ@eNw zH3F;h>f1-LNm&*$!S_Y@sCumRV7D?55ti>db`j{fQ=_=`awn*k+bCsZWCSf9=5aF$ zm?*bmCBeEp+4)r{hH}Y~mr$A+AVk*Zwh0AmSTT=LEj%CZ94G3ffj@$2o_tzPF^EP{ zdqudZv7^Apz>yh!28R-z!SzOkQA+92xh>0KY<5hq063fUbK1~vwkg`m-0>;EN#I- zt|%=`v_Ip(N6zh7V{HCXoSjk}Ske%yw^SO26EJb|~e7 z{Av%H#tDoQO7n`_7#2m+YdKfXz4Q5oaUD(FZ~GBhV^#5 zS;8@Ct#1j9?5ge^?^C+ud&;HQ3#9dm9cJa@J|1as)T%fR-OsgOnAr>&sbhO2cJ=#iUmXE0Kj51?>`R?3h!{_@KSYc`hnPSmA|m>M zAv&%fyoR!?=`lI}9Y5i6je*1~lZ!89*L^{IP1SO^Y|B_#9ZKCU0uA@dK@Bt=8Lg=U zfyPQDL|>wf3;Py#9gJR9n|+;*dcR=jUy_)$Az#+lXTFcm4;>kz=@!!PmUfbi#3)&Y_RTa?#&WH2Dn*#RsDw5&XUD#Ef2@TSS3Y7gb>xqh>5b!RY1#MpJrEjhPN&7Z7+Ea=}HNf8_1L< zTZE0-Xt!c{z~9uJrk4C*U}&J{?tSoC1W2caFbr99DC1Vf85>r})``vPehEq|#g)=k zPzui~WuH!vIdf@ig4m+vR(DJ>zF{s+pKMyXHncawzd(+Ippt9pUNLA3GaO3L=B74* zGB+NXas-~3@7@;64v1KlR(|r`V$7(F<@6cfcZj9t;ga9Tf=+EHT-!>QUvH6C zam?D-i%PVQ%PXA8qgQP!1%G?RD9J^-Gqf#St6l-IzIHmV9ULahRzcGtbdWlcoxON} z#g!&mlLAhxZZZL8{w*CDQG=O!3_^xre}VhW$9X1))1U&%yZ1wFcg_XYmmwB4YEuQ4 zx1DHQ6eQ9PSBv#(@0FvM(rUMB$7e=VQ~DjZtn#tO+r2ZvmifvZkGgHuQ?7VOG#XZg z&Eh#;EmrQdUTx1K4s~j9eRe)9Z|Wcg2o>fhxjWo>yrw{wP2rchMD~x)7$#0WtH_kj zKvTh|+jD4;)g-oEuSJ8^OV-}m$*fFlFqQl`klTwXbG$4hQNv-Qtb859KG$rrOd8N{ zX=3-{D?MV}oOh<+Hnc=BrEso#E8bU}mJ~h#hF4VaYO><^XdkL9DpQdfOTlpElH6av z2pBG{hGs%7NdP<=hpSEE?7a{51>8?3dlAN1nldu)`@o(liy;;T>%qn-U$}Op&}BGR z!}U_NC6x_39ZR~93rWkmA>DQPw!J2{^1yRQYeB1}d{jGiknc?^f!lAsWD}in&NI|I zgMN9?Y^t2yDjP{xZ0*Xr>5ulJdg5dyYO`xu8d;{L%Z(3rFMxH4 zFxMK;bu<3<2>tIIdYwO5?cyrjHfHx8u6UL{!q#%Hiy)E*9;&og8^XM&`K7?#yHu6Q~|9E}fI6e9r~4(UpY0g_<}Pefoax)%2U6{mDO$(?|! z)`L7W49c7fYFhe%L0kP4*cJ2+{M6eobRND+(7X`b<5}KpFfaT9sK?8LD#l1ucdOh4 z=#z!GXTTf`5F5L$T-CwxFu{dS^3CQ;>o*Cn1#TY=QaB!`bf&R$k1YGm>RBE|3RSy? zy#|}I6KL$M*qF&{`cE78d=sN6W)k!sjm{&W2|V~<68M{S&1lyOCpkuH?=H1&R$7}B zrewD*ualY-dCtR^DpEw&mh_?Vzb9Xdx2RJHA1hTJ>M%$X*JTdwgxgatqjNgg)Yon> z8k@FSo$niKFU??>awuY{Y_}F$GmgAOzK=*ZP#)WEjA$_mznK7$JT=to3WDUa1gT9#JMj#PvN*Q_jB#c%2)#wrry=$)UMspmeOF;yzNFVO02zYVO?x6m>` z!PT!o11}o4T|3Ot2VzY2Fy8`j!xikirxF#$?fDUfoe>^OJZ)k^jBlp=Hxrrmd7XWl zE0!?J?PBtw8T3=>G|CqMn@a7tERy$#d^vPY^N{Qt$)#h2_B+sQQ*s9?n!9CYP>VP% z4ZL2Ev_h23{us?*yIyM(yYB>FATKVm{=-J8G5n956CSM4z{# zxa}~R=`uNBO4s{W@wNzj=}4@H^OIRt_--<-%V{gdJcVu~9`&}W;eJl&Rzt%jbo+Iz zO?tti;?{b8FZ*{EO3-t@%fFV9?khKGwh#|}xqAG0%Yui2hf}y0FzW|377kSo(=)M~ z5tAcXcXG6Xp>a=?x+WndSAk$l7vQehyl<3gyuQ^?&^k?kZ*lfAW0SH`~(=iL$- zc~|aL`5i`qC@>$8<_*X5Z$^iBi^fv!Z#6Yui(b#vvkHNgKI)t9tdaV$3?nW4@KKJX zmdO`fcz?S~8jP)HRW{Sd%1wK*B}j}aB#Q>KS$4&0vQv}sCW8_Oc0QnTXVcXzv3p6t zjOczOiG3o_kh;=9qvfH{0Llb8;*I=Q$VFaM=vS+(yKpU50dmwGa7mOrh!Jn>BFD?^ zSaHHWnc8IX5*Np(GD+~vHDd$}y*W9UWkdK-n~@HOnU*Ud?vI9fEpLm5DfLbs%AhOq z(qV2gt}ve%`=(w`gh1#6pGF*+nTOH)CL8C)O!Mx8LX1B41KWeaO}|6yY`E}{sygR} z?&K~d;Q%0q+5Xt)el9Y8X^$pPjU?(P!_o1GakmD8su|gwq>AqmNry??T+RJYR0Vrd z1p*WyVHNHD*u6>$k7!HWi5ByY?2PpV#+Nr%m)lG&j|x;*J!wI?li^l!p*VInm!;+~ zw9FJgPOyG3C$)WL`mk=8*43qnKRC{=MIRvfDNQACq!qQ~M$>nh$Hw^cY`Oe{ygHrI zRY5Y<y!^i;3vhNyFL5)YxOgn#W`IC2h`!k{5}abWF><+v^W*>zQA}hQlXXG+mdj zY57TZ*Qy_HPW$^Wzq4Z$RTGu80DJrHzD=fVkl!_87E84nvoE`^tP?L|3H~3MAyV#!_+Ues05Ucs2Y>|Q9k=9^cG$7Pk z%tABT-)LJgJ-c^XPy2J8?beHZtCAWyNtZ?V@>k>f zd-Vp)8K(rH8z<`!h0uxkQ=3E;%VjNhmqVjp$kN-(I8;u%E;TRPBZ{(YyLp()@!%rD z3g!FvOgZuu=RzETctY^@pR*XF6f2@HGa$5&38r&w_l|m3c{&8b=J{N@@coP@5vYFD zuxv-?V4*CQ)|)tq3qNJLX1GLhVk?3YrIgG;`cYPJ{i)j!+d-}A;vq?u+g^FvzwCRm zU1D`p^af}0A(Y|d-TG{(62-WE_*9Fg;&yH3yPc-!n&U^emxxNHEchAXoh?abihJ?< z>Ma>=a{42W-A@?~;?`l(-X4WZ6d8sbk_a8NmYxkIq1lvn7*nvqtH)7=0i^tE&U8n3 zi%pIzRvEK=+>=vP`gfCdk3`okbsiGz))(9HsNKC{84g{RG0N=C9!js{&;_v9ZZZqC zTn`k6M{Semlm_Omiuq+qcE^uj_=Lu=6m+f&d}jb^*xlWZ(tW4f_rM<3mPGVobF&`} z;u>rUf#VlE`7BO_ z#AdPZ_QYt#pkUN)Ckdrta?eT?PD$s9DNG3^LcE%tkf-;hx}G$~w0fDN)Q>cY70T>H z5AR?5qYE(Upuevjt4Ki;6D)Yo(tWwuX~~h|$r!ua#9U6VX4-T+^b}aYD2H&5!NZf8 zu~ZL+15}dP@462b+m)M3DlO8!O%kvRx1#1-IKEVqSYM`_tD(hiDs!#2>^mxQU*rEF zOn)p$ua6@;rX-#x#-W*5cHJWOwLR&ZVsQE03*D0GurRiEQYvjydIsfivb3||Iu8wh z84dN(i{g3NcVidcGe)oLMqt6H1q6G|<$C%R?vG3AbzB||1qudy^BUYHy2Ov%((c_C z3d3o0UOi?Lj=3&PHt$qRg}RR2=7`)ztw0|ajp%hRUs;(<_m(mN0xF zpHt$l#9BZ$S-i>Bxk*{)?51EDILN8;U}wTin`?ai$Ps|C$0~n>huQXWBBptC2IdXYX6g(*=(am zt@(MiB)(8Uo5?o}qGA?xd$73^f3jGl=9;aZq8DuV2x6y!ma=c_H3~kNZyaV?2y-Mym+mD?nzHkPPz>mB)lmDb(lK;)d_@?j@ zSa#SvbUM5lIz1H6QWzpCL95zip~XaB`Km$0&u5U1(!fwPG2SL^Z#-^(GidveXIZ^? z@kIUpm|blMPc$rTs#m`_{C=@r39-6CG;@zIe$uFUM}~`01EN}X&Y8ZAma5(6z+T&Z z7JqnSeREUAies`?tx2)y2togUB^|!3qx8>UBhQO_UmA!~Xi;#OG za_+E2*rOqoPnf44Xps{KGuKiDcw8!uA(k;&bz>xRaco>Sy!&}uhk08^8&JZQ6meq< zLX@p-ztq&0X1WM--!c;u)p~2;LE`zbTqrC9+*IqY( z!RU9(nY@XAUzS^P*2;8NBqbE6Dp^tmab`i>+$V!+@2mKR%f9=8=4?}^({6-R>L~V= zU2m;&t1V&mso`Pz>GYgc==E5iqX2;?6_eVY)i?G?N5B>#NjMXKZ_#-0k*6pJ6jM&sG>Sed@ki zJB15spd&g^eu-$Xa3W&KmGl+~2~wQvl_t-EQem{D_IYKVf!ACu zzjKwKklFO}(lRsi=^ItSzHiAoTQZyuW}~ft_&~JpKJ}!A|7e+=s9hwUD0Xqag5F;& zGdN?nm!qldp*^b&)NCoYElArs@4}qUW|+6T+bUis*6P%1xyR$@8Z!B~bUhKYPti|X zzeIn0xoUAxHC3{DV;vbcVG+d18!~w?vtzqk>L(IO>>)8ryeaP96aE2pKPI)^fL(w; zjHMTK+w@dF{1Jj7@A&NXd+VGn@fI@W^eg<215Z^Hc{MF-Up=dbG3ByGoiJTZ29KS2 z8-b?#`}k=JUaMT=bYnYbi+hh@RI~@55RaSq82? zO0F61vq_~*FUb@db$7*Ha_aJa;=N{?ZCo@noOJwhyjwlE*bz{x#aOb0tM1??3FRz0 zS!75kkR+Vr<3_^sF`8=o&D^62D}n7h*(~>5$Wu6q32w@HpEK26k|}=FLUx61_WK3L zqJll#{Ph=_%9!Z2PGSe|b+;yw3dT`#2*hemu}-Qj7DEi*AaqLyD(-hN+P~~OR@F*2 z&aA9O!Qg!p^W7eyyQ1BZ2U^(xLY=oXb@+;+IhJ#Mm-eiuI@oZD(j+AB`>409vSDT1 z{#WyDo-r>R^GasJkC9q~6A~rq>!hj)G@5R5w7Z7gE#=D!-KlX&M?qWwhk5kb`X`Mg zJZHnilb4)X^OK0)wyx6x%9M8R$W)+XX7gNXy*jGg7Fq(q0g+GX3HwRLMNb(&3lc*VB`E^MiLGn1{Mc}{R8U@E>Em3>845|+$a3NXoDVr`LaLYk6n8pS6GBAx+! zgKTBR-{2g4y)bd|BFtI^sTIb1bbbPdjN`)~CB*QVkax`3&n@^$`t&a_XuDYD%Al;jIfY6Fx~j8fLG!*>=?B&HGJh4YoK zWx%6|m>&9YbiV2zJTZdNP#!4{9vz$I!e1b>NboU)rtJl=epxNKvVH+TU z4kfQu1Wv=k#6~)D2obBt^T%@mfluiA=idhoWbc3m;h`~)oNC$Zbw}*^>pr3VxIq{d z7&LlS={OshC&VGwyU3T=3`!IOxVbHUZ4HyTs%P##c+3Q0UW)ieT1nlu7I=^L<2zNU z73Z1k4FdDZ$;t`MqmSoE#QppZN0UbtU5B_NlBy(&y#G~8ekxWyAQXyP!ef#i^>6Z5o_fwc#9ADv_7efDaolv8G= zM-zIOYWrN>)VUmOdDQFrA61DmA zB|*7DR#HC5)lT@nir|Qt#Y-?_N85lplZ)VwV4WKZ8LMO?Z?0w|uR4%+=I7D7B(DAb z*)SE~4@|?XJ6J$P#+<=H&h`68kK}ts(K4Yt)18~)^A>u$hB<69D>(Pi0C*zVJ`=6ap4S4wjK5z{9BQ)<^B~71ZAY07 z@_e5gEyd0=c}XSMrV)>U9JqoK4=_G#UqvETSMX%MmE~sJ6>%DaJIEX=O@cHx9*dkB znx}*SA1QX7`_ejKa3)-2O6BtsP8)NFE%CckxtrPrj4*z3i7BstvQzn1r2^1&j;2+* zefqnT*?A>asa^tSs3Y#5*lUowMj#!(HWptj}P8u3R5-ZbCF&AuAcX>JAbj&yN z57~jS8^eoSZ|w9|5wpHwmsad+-j#d$eD@y{tA&Vz<>Z+IG@R-PAB;u6ohf*^GzzDH zl~4)hL@sm?KtW?ztBclhJ;AbV{VDMA)s%Z?%I@kL2{nA!E)8x0(GykgD@Y>( z^lcNcx!x2QyXAOX4V`Jm+5#yp4P

~8QZ2w5d~nyrAa6< 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 |Iz9YmU1mD&dwPXKT$@d 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�@vk^_%-T{QIbX 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≺2>7j-C*h6AW^_zjT;v7zo9z+ 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[O0OvYR-gqP9Y0t3SzRFBfG}v}^A#mg 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ℜ$FLsT^LY#Tjgdlni#gHSS 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

-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

?XoJ6RO9qbGF4_3yFUI3FkHM5J#YQuVM&%8U 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 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jpproxy/dist/jpproxy.jar b/trunk/libsrc/jpproxy/dist/jpproxy.jar new file mode 100644 index 0000000000000000000000000000000000000000..ab85e863902b57b7db961a53e99e1d11e4f18884 GIT binary patch literal 36973 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 0) { + out.write(buffer, 0, n); + out.flush(); + } + out.flush(); + } + catch (IOException e) { + String s = e.toString(); + // ignore socket closed exceptions + if (s.toLowerCase().indexOf("socket closed") == -1) { + e.printStackTrace(); + } + } + } +} \ No newline at end of file diff --git a/trunk/libsrc/jpproxy/src/com/jpexs/proxy/Handler.java b/trunk/libsrc/jpproxy/src/com/jpexs/proxy/Handler.java new file mode 100644 index 000000000..87ae5e66f --- /dev/null +++ b/trunk/libsrc/jpproxy/src/com/jpexs/proxy/Handler.java @@ -0,0 +1,575 @@ +package com.jpexs.proxy; + + +import java.io.*; +import java.net.Socket; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.List; +import java.util.Locale; +import java.util.TimeZone; +import java.util.zip.GZIPInputStream; + +/** + * HTTP transaction handler. A handler is created by Server for + * each HTTP transaction. Given a socket, the handler will deal with + * the request, reply, and invoke request, reply, and content filters. + * + * @author Mark Boyns + */ +class Handler implements Runnable { + static final boolean DEBUG = false; + Socket socket = null; + Request request = null; + Reply reply = null; + HttpRelay http = null; + int currentLength = -1; + int contentLength = -1; + long idle = 0; + double bytesPerSecond = 0; + Client client; + + int MAXTIMEOUT = 1000 * 60 * 5; + List replacements; + CatchedListener catchedListener; + List catchedContentTypes; + ReplacedListener replacedListener; + + /** + * Create a Handler. + */ + Handler(Socket socket, List replacements, List catchedContentTypes, CatchedListener catchedListener, ReplacedListener replacedListener) { + this.socket = socket; + this.replacements = replacements; + this.catchedListener = catchedListener; + this.catchedContentTypes = catchedContentTypes; + this.replacedListener = replacedListener; + } + + /** + * Close all connections associated with this handler. + */ + synchronized void close() { + if (client != null) { + client.close(); + client = null; + } + if (http != null) { + http.close(); + http = null; + } + } + + /** + * Flush all data to the client. + */ + void flush() { + if (client != null) { + try { + client.getOutputStream().flush(); + } + catch (IOException e) { + e.printStackTrace(); + } + } + } + + public void run() { + boolean keepAlive = false; + Exception reason = null; + + Thread.currentThread().setName("Handler(" + + socket.getInetAddress().getHostAddress() + + ")"); + + try { + client = new Client(socket); + } catch (IOException e) { + + } + + do { + request = null; + reply = null; + + idle = System.currentTimeMillis(); + + + try { + request = client.read(); + if (Main.DEBUG_MODE) { + System.out.println("REQUEST: " + request.getURL()); + } + } + catch (IOException e) { + e.printStackTrace(); + break; + } + + idle = 0; + + + try { + keepAlive = processRequest(); + } + catch (IOException ioe) { + reason = ioe; + keepAlive = false; + } + + if (request != null && reply != null) { + // XXX insert the number of bytes read into the + // reply content-length for logging. + if (reply != null && currentLength > 0) { + reply.setHeaderField("Content-length", currentLength); + } + } + } + while (keepAlive); + + + if (reason != null && reason.getMessage().indexOf("Broken pipe") == -1) { + } + + close(); + } + + boolean processRequest() throws IOException { + boolean keepAlive = false; + + while (reply == null) { + boolean secure = false; + boolean uncompress = false; + + + if (request.getCommand().equals("CONNECT")) { + secure = true; + } else if (request.getURL().startsWith("https://")) { + System.out.println("Netscape keep-alive bug: " + request.getURL()); + return false; + } else if (!request.getURL().startsWith("http://")) { + System.out.println("Unknown URL: " + request.getURL()); + return false; + } + + keepAlive = (request.containsHeaderField("Proxy-Connection") + && request.getHeaderField("Proxy-Connection").equals("Keep-Alive")); + + + /* First look for any HttpFilters */ + + + /* None found. Use http or https relay. */ + if (secure) { + http = createHttpsRelay(); + } else { + http = createHttpRelay(); + } + + + try { + http.sendRequest(request); + if (http instanceof Http) { + ((Http) http).setTimeout(MAXTIMEOUT); + } + reply = http.recvReply(request); + } + catch (RetryRequestException e) { + http.close(); + http = null; + continue; /* XXX */ + } + + /* Guess content-type if there aren't any headers. + Probably an upgraded HTTP/0.9 reply. */ + if (reply.headerCount() == 0) { + String url = request.getURL(); + if (url.endsWith("/") + || url.endsWith(".html") || url.endsWith(".htm")) { + reply.setHeaderField("Content-type", "text/html"); + } + } + + + String encoding = reply.getHeaderField("Content-Encoding"); + if (encoding != null && encoding.indexOf("gzip") != -1) { + reply.removeHeaderField("Content-Encoding"); + reply.removeHeaderField("Content-length"); + uncompress = true; + } + /* update reply */ + + + reply.removeHeaderField("Proxy-Connection"); + if (keepAlive && reply.containsHeaderField("Content-length")) { + reply.setHeaderField("Proxy-Connection", "Keep-Alive"); + } else { + keepAlive = false; + } + + currentLength = -1; + contentLength = -1; + try { + contentLength = Integer.parseInt(reply.getHeaderField("Content-length")); + } + catch (NumberFormatException e) { + } + + /* update content-length reply */ + + + if (secure) { + Https https = (Https) http; + int timeout = MAXTIMEOUT; + + client.write(reply); + + try { + https.setTimeout(timeout); + + Copy cp = new Copy(client.getInputStream(), https.getOutputStream()); + WorkerThread.assignThread(cp, ""); + flushCopy(https.getInputStream(), client.getOutputStream(), -1, true); + client.close(); + } + catch (InterruptedIOException iioe) { + // ignore socket timeout exceptions + } + } else if (reply.hasContent()) { + try { + processContent(uncompress); + } + catch (IOException e) { + if (http instanceof Http) { + ((Http) http).reallyClose(); + } else { + http.close(); + } + http = null; + client.close(); + client = null; + throw e; + //return false; /* XXX */ + } + + /* Document contains no data. */ + if (contentLength == 0) { + client.close(); + } + } else { + client.write(reply); + } + + http.close(); + } + + return keepAlive; + } + + HttpRelay createHttpsRelay() throws IOException { + HttpRelay http; + + http = new Https(request.getHost(), request.getPort()); + + return http; + } + + HttpRelay createHttpRelay() throws IOException { + HttpRelay http; + + + http = Http.open(request.getHost(), request.getPort()); + + + return http; + } + + + InputStream readChunkedTransfer(InputStream in) throws IOException { + ByteArrayOutputStream chunks = new ByteArrayOutputStream(8192); + int size = 0; + + contentLength = 0; + while ((size = reply.getChunkSize(in)) > 0) { + contentLength += size; + copy(in, chunks, size, true); + reply.readLine(in); + } + reply.getChunkedFooter(in); + + reply.removeHeaderField("Transfer-Encoding"); + reply.setHeaderField("Content-length", contentLength); + + return new ByteArrayInputStream(chunks.toByteArray()); + } + + + private static DateFormat httpDateFormat() { + DateFormat httpDateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.US); + httpDateFormat.setTimeZone(TimeZone.getTimeZone("GMT")); + return httpDateFormat; + } + + void disableReplyCaching() { + reply.removeHeaderField("Cache-Control"); + reply.removeHeaderField("Last-Modified"); + reply.removeHeaderField("Expires"); + reply.removeHeaderField("Date"); + reply.removeHeaderField("ETag"); + reply.removeHeaderField("Pragma"); + + reply.setHeaderField("Pragma", "no-cache"); + reply.setHeaderField("Cache-Control", "no-cache, must-revalidate"); + Calendar now = Calendar.getInstance(); + reply.setHeaderField("Expires", httpDateFormat().format(now.getTime()));//"Sat, 26 Jul 1997 05:00:00 GMT"); + reply.setHeaderField("Last-Modified", "Sat, 26 Jul 1997 05:00:00 GMT"); + } + + + void processContent(boolean uncompress) throws IOException { + InputStream in; + boolean chunked = false; + + if (reply.containsHeaderField("Transfer-Encoding") + && reply.getTransferEncoding().equals("chunked")) { + in = readChunkedTransfer(reply.getContent()); + chunked = true; + } else { + in = reply.getContent(); + } + + if (in == null) { + System.out.println("No inputstream"); + return; + } else if (uncompress) { + in = new GZIPInputStream(in); + } + + String url = request.getURL(); + boolean replaced = false; + for (Replacement r : replacements) { + if (r.matches(url)) { + r.lastAccess = Calendar.getInstance(); + ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + try { + FileInputStream fis = new FileInputStream(r.targetFile); + byte buf[] = new byte[2048]; + int pos = 0; + while ((pos = fis.read(buf)) > 0) { + buffer.write(buf, 0, pos); + } + fis.close(); + buffer.close(); + } catch (IOException ex) { + if (Main.DEBUG_MODE) { + System.err.println("ERROR:Cannot read file: " + r.targetFile); + } + } + byte bytes[] = buffer.toByteArray(); + contentLength = bytes.length; + reply.setHeaderField("Content-length", contentLength); + disableReplyCaching(); + client.write(reply); + copy(new ByteArrayInputStream(bytes), + client.getOutputStream(), contentLength, false); + replaced = true; + if (replacedListener != null) { + replacedListener.replaced(r, request.getURL(), reply.getContentType()); + } + break; + } + } + + if (!replaced) { + + String contentType = reply.getHeaderField("Content-type"); + if (reply.getStatusCode() == 200) { + if (contentType != null) { + for (String ct : catchedContentTypes) { + String convContentType = contentType; + if (convContentType.contains(";")) + convContentType = convContentType.substring(0, convContentType.indexOf(";")); + + if (ct.toLowerCase().equals(convContentType.toLowerCase())) { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + copy(in, baos, contentLength, true); + if (catchedListener != null) { + catchedListener.catched(ct, request.getURL(), new ByteArrayInputStream(baos.toByteArray())); + } + in = new ByteArrayInputStream(baos.toByteArray()); + disableReplyCaching(); + break; + } + } + } + } + client.write(reply); + copy(in, client.getOutputStream(), contentLength, true); + } + } + + + /** + * Return the content length. + */ + int getTotalBytes() { + return contentLength > 0 ? contentLength : 0; + } + + /** + * Return the number of bytes read so far. + */ + int getCurrentBytes() { + return currentLength > 0 ? currentLength : 0; + } + + + /** + * Copy in to out. + * + * @param in InputStream + * @param out OutputStream + * @param monitored Update the Monitor + */ + void copy(InputStream in, OutputStream out, int length, boolean monitored) + throws IOException { + if (length == 0) { + return; + } + + int n; + byte buffer[] = new byte[8192]; + long start = System.currentTimeMillis(); + long now = 0, then = start; + + bytesPerSecond = 0; + + if (monitored) { + currentLength = 0; + } + + for (; ;) { + n = (length > 0) ? Math.min(length, buffer.length) : buffer.length; + n = in.read(buffer, 0, n); + if (n < 0) { + break; + } + + out.write(buffer, 0, n); + + if (monitored) { + currentLength += n; + + } + + now = System.currentTimeMillis(); + bytesPerSecond = currentLength / ((now - start) / 1000.0); + + // flush after 1 second + if (now - then > 1000) { + out.flush(); + } + + if (length != -1) { + length -= n; + if (length == 0) { + break; + } + } + + then = now; + } + + out.flush(); + + if (DEBUG) { + System.out.println(currentLength + " bytes processed in " + + ((System.currentTimeMillis() - start) + / 1000.0) + " seconds " + + ((int) bytesPerSecond / 1024) + " kB/s"); + } + } + + /** + * Copy in to out. + * + * @param in InputStream + * @param out OutputStream + * @param monitored Update the Monitor + */ + void flushCopy(InputStream in, OutputStream out, int length, boolean monitored) + throws IOException { + if (length == 0) { + return; + } + + int n; + byte buffer[] = new byte[8192]; + long start = System.currentTimeMillis(); + bytesPerSecond = 0; + + if (monitored) { + currentLength = 0; + } + + for (; ;) { + n = (length > 0) ? Math.min(length, buffer.length) : buffer.length; + n = in.read(buffer, 0, n); + if (n < 0) { + break; + } + + out.write(buffer, 0, n); + out.flush(); + if (monitored) { + currentLength += n; + + } + bytesPerSecond = currentLength / ((System.currentTimeMillis() - start) / 1000.0); + if (length != -1) { + length -= n; + if (length == 0) { + break; + } + } + } + out.flush(); + + if (DEBUG) { + System.out.println(currentLength + " bytes processed in " + + ((System.currentTimeMillis() - start) / 1000.0) + " seconds " + + ((int) bytesPerSecond / 1024) + " kB/s"); + } + } + + + /** + * Return a string represenation of the hander's state. + */ + public String toString() { + StringBuffer str = new StringBuffer(); + str.append("CLIENT "); + str.append(socket.getInetAddress().getHostAddress()); + str.append(":"); + str.append(socket.getPort()); + str.append(" - "); + if (request == null) { + str.append("idle " + ((System.currentTimeMillis() - idle) / 1000.0) + " sec"); + } else { + if (reply != null && currentLength > 0) { + str.append("("); + str.append(currentLength); + if (contentLength > 0) { + str.append("/"); + str.append(contentLength); + } + str.append(" "); + str.append(((int) bytesPerSecond / 1024) + " kB/s"); + str.append(") "); + } + str.append(request.getURL()); + } + return str.toString(); + } +} \ No newline at end of file diff --git a/trunk/libsrc/jpproxy/src/com/jpexs/proxy/Http.java b/trunk/libsrc/jpproxy/src/com/jpexs/proxy/Http.java new file mode 100644 index 000000000..23e62f3af --- /dev/null +++ b/trunk/libsrc/jpproxy/src/com/jpexs/proxy/Http.java @@ -0,0 +1,296 @@ +package com.jpexs.proxy; + + +import java.io.IOException; +import java.util.Enumeration; +import java.util.Hashtable; +import java.util.Vector; + +/** + * @author Mark Boyns + */ +class Http extends HttpConnection { + static final boolean DEBUG = false; /* enable lots of debug output */ + + /* XXX - more than 1 should work now. */ + static final int MAX_PENDING_REQUESTS = 1; + + static Hashtable cache = new Hashtable(33); + private static Object httpLock = new Object(); + + + String host; + int port; + boolean proxy = false; + boolean persistent = false; + boolean closed = false; + long idle = 0; + Vector queue = new Vector(); + + Http(String host, int port) throws IOException { + this(host, port, false); + } + + Http(String host, int port, boolean isProxy) throws IOException { + super(host, port); + this.host = host; + this.port = port; + this.proxy = isProxy; + } + + public synchronized void sendRequest(Request request) + throws IOException, RetryRequestException { + queue.addElement(request); + + try { + send(request); + } + catch (IOException e) { + if (persistent) { + persistent = false; + if (DEBUG) System.out.println("RETRY SEND " + request.getURL()); + throw new RetryRequestException(); + } + throw e; + } + } + + public synchronized Reply recvReply(Request request) + throws IOException, RetryRequestException { + while (queue.firstElement() != request) { + try { + wait(); + } + catch (InterruptedException e) { + } + } + + if (closed) { + if (DEBUG) System.out.println("RETRY CLOSED " + request.getURL()); + throw new RetryRequestException(); + } + + try { + return recv(); + } + catch (IOException e) { + if (persistent) { + persistent = false; + if (DEBUG) System.out.println("RETRY RECV " + request.getURL()); + throw new RetryRequestException(); + } + throw e; + } + } + + public void reallyClose() { + persistent = false; + if (DEBUG) + System.out.println("REALLY CLOSE " + this); + close(); + } + + public synchronized void close() { + if (persistent) { + idle = System.currentTimeMillis(); + } else { + cacheRemove(host, port, this); + super.close(); + closed = true; + } + + if (queue.size() > 0) { + queue.removeElementAt(0); + if (DEBUG) { + if (persistent) + System.out.println("DONE " + this); + else + System.out.println("CLOSE " + this); + } + notify(); + } + } + + private void send(Request request) throws IOException { + if (DEBUG) System.out.println("SEND " + request.getURL()); + + /* Prepare HTTP/1.1 request */ + request.removeHeaderField("Proxy-Connection"); + request.setHeaderField("Connection", "open"); + if (!request.containsHeaderField("Host")) { + request.setHeaderField("Host", request.getHost()); + } + + if (proxy) { + request.write(getOutputStream()); + } else { + String oldStatusLine = request.statusLine; + StringBuffer head = new StringBuffer(); + head.append(request.getCommand()); + head.append(" "); + head.append(request.getPath()); + head.append(" "); + head.append("HTTP/1.0"); + request.statusLine = head.toString(); + + request.write(getOutputStream()); + + /* flush? */ + + request.statusLine = oldStatusLine; + } + } + + private Reply recv() throws IOException { + Reply reply = new Reply(getInputStream()); + reply.read(); + + String conn = reply.getHeaderField("Connection"); + + if (DEBUG) System.out.println("RECV " + reply.statusLine); + + if (reply.containsHeaderField("Connection") + && reply.getHeaderField("Connection").equals("close")) { + persistent = false; + } else if (reply.getProtocol().equals("HTTP/1.1")) { + persistent = true; + } else { + persistent = false; + } + + /* Received HTTP/1.1 "Continue". Read another Reply. */ + if (reply.getStatusCode() == 100) { + reply = recv(); + } + + return reply; + } + + private boolean isBusy() { + return queue.size() >= MAX_PENDING_REQUESTS; + } + + private boolean isPersistent() { + return persistent; + } + + private static String cacheKey(String host, int port) { + return host.toLowerCase() + ":" + port; + } + + private static Vector cacheLookup(String host, int port) { + Vector v = (Vector) cache.get(cacheKey(host, port)); + return v; + } + + private static boolean cacheContains(Http http) { + Vector v = (Vector) cache.get(cacheKey(http.host, http.port)); + return v != null ? v.contains(http) : false; + } + + private static void cacheInsert(String host, int port, Http http) { + String key = cacheKey(host, port); + Vector v = (Vector) cache.get(key); + if (v == null) { + v = new Vector(); + } + v.addElement(http); + cache.put(key, v); + } + + private static void cacheRemove(String host, int port, Http http) { + Vector v = (Vector) cache.get(cacheKey(host, port)); + if (v != null) { + v.removeElement(http); + if (v.isEmpty()) { + cache.remove(cacheKey(host, port)); + } + } + } + + private static void cacheClean() { + long now = System.currentTimeMillis(); + Enumeration e = cache.keys(); + while (e.hasMoreElements()) { + Vector v = (Vector) cache.get(e.nextElement()); + for (int i = 0; i < v.size(); i++) { + Http http = (Http) v.elementAt(i); + if (http.idle > 0 && now - http.idle > 30000) /* 30 seconds */ { + if (DEBUG) System.out.println("IDLE " + http); + http.persistent = false; + http.close(); + } + } + } + } + + static Http open(String host, int port, boolean isProxy) + throws IOException { + Http http = null; + + synchronized (httpLock) { + Vector v = cacheLookup(host, port); + if (v != null) { + for (int i = 0; i < v.size(); i++) { + Http pick = (Http) v.elementAt(i); + + /* find an http connection that isn't busy */ + if (pick.isPersistent() && !pick.isBusy()) { + http = pick; + break; + } + } + + if (http != null) { + http.idle = 0; + if (DEBUG) System.out.println("REUSE " + http); + } + } + } + + if (http == null) { + if (DEBUG) System.out.println("OPENING " + host + ":" + port); + http = new Http(host, port, isProxy); + if (DEBUG) System.out.println("OPENED " + http); + cacheInsert(host, port, http); + } + + return http; + } + + static Http open(String host, int port) throws IOException { + return open(host, port, false); + } + + static Enumeration enumerate() { + Vector list = new Vector(); + Enumeration e = cache.keys(); + while (e.hasMoreElements()) { + Vector v = (Vector) cache.get(e.nextElement()); + for (int i = 0; i < v.size(); i++) { + list.addElement(v.elementAt(i)); + } + } + return list.elements(); + } + + static synchronized void clean() { + cacheClean(); + } + + public String toString() { + StringBuffer buf = new StringBuffer(); + buf.append("SERVER "); + buf.append(super.toString()); + if (isPersistent()) { + buf.append(" - "); + if (queue.size() > 0) { + buf.append(queue.size()); + buf.append(" pending"); + } else { + buf.append("idle " + ((System.currentTimeMillis() - idle) / 1000.0) + " sec"); + } + } + return buf.toString(); + } +} \ No newline at end of file diff --git a/trunk/libsrc/jpproxy/src/com/jpexs/proxy/HttpConnection.java b/trunk/libsrc/jpproxy/src/com/jpexs/proxy/HttpConnection.java new file mode 100644 index 000000000..65064070e --- /dev/null +++ b/trunk/libsrc/jpproxy/src/com/jpexs/proxy/HttpConnection.java @@ -0,0 +1,48 @@ +package com.jpexs.proxy; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.Socket; + +abstract class HttpConnection extends Connection implements HttpRelay { + HttpConnection(String host, int port) throws IOException { + super(host, port); + } + + HttpConnection(Socket s) throws IOException { + super(s); + } + + public void sendRequest(Request request) + throws IOException, RetryRequestException { + request.write(getOutputStream()); + } + + public Reply recvReply(Request request) + throws IOException, RetryRequestException { + Reply reply = new Reply(getInputStream()); + reply.read(); + return reply; + } + + public void setInputStream(InputStream in) { + super.setInputStream(in); + } + + public void setOutputStream(OutputStream out) { + super.setOutputStream(out); + } + + public InputStream getInputStream() { + return super.getInputStream(); + } + + public OutputStream getOutputStream() { + return super.getOutputStream(); + } + + public void close() { + super.close(); + } +} \ No newline at end of file diff --git a/trunk/libsrc/jpproxy/src/com/jpexs/proxy/HttpRelay.java b/trunk/libsrc/jpproxy/src/com/jpexs/proxy/HttpRelay.java new file mode 100644 index 000000000..bb7ca27b6 --- /dev/null +++ b/trunk/libsrc/jpproxy/src/com/jpexs/proxy/HttpRelay.java @@ -0,0 +1,12 @@ +package com.jpexs.proxy; + + +import java.io.IOException; + +public interface HttpRelay { + void sendRequest(Request request) throws IOException, RetryRequestException; + + Reply recvReply(Request request) throws IOException, RetryRequestException; + + void close(); +} \ No newline at end of file diff --git a/trunk/libsrc/jpproxy/src/com/jpexs/proxy/Https.java b/trunk/libsrc/jpproxy/src/com/jpexs/proxy/Https.java new file mode 100644 index 000000000..25be8218b --- /dev/null +++ b/trunk/libsrc/jpproxy/src/com/jpexs/proxy/Https.java @@ -0,0 +1,40 @@ +package com.jpexs.proxy; + +import java.io.IOException; + +/** + * @author Mark Boyns + */ +class Https extends HttpConnection { + boolean proxy = false; + + Https(String host, int port) throws IOException { + super(host, port); + } + + Https(String host, int port, boolean isProxy) throws IOException { + this(host, port); + proxy = isProxy; + } + + public void sendRequest(Request request) + throws IOException, RetryRequestException { + if (proxy) { + super.sendRequest(request); + } else { + /* nothing */ + } + } + + public Reply recvReply(Request request) + throws IOException, RetryRequestException { + Reply reply = new Reply(getInputStream()); + if (proxy) { + reply.read(); + } else { + reply.statusLine = "HTTP/1.0 200 Connection established"; + reply.setHeaderField("Proxy-agent", "ASDec"); + } + return reply; + } +} \ No newline at end of file diff --git a/trunk/libsrc/jpproxy/src/com/jpexs/proxy/Key.java b/trunk/libsrc/jpproxy/src/com/jpexs/proxy/Key.java new file mode 100644 index 000000000..f10eda895 --- /dev/null +++ b/trunk/libsrc/jpproxy/src/com/jpexs/proxy/Key.java @@ -0,0 +1,41 @@ +package com.jpexs.proxy; + +/** + * A wrapper around java.lang.String to have case-insensitive + * hashCode and equals methods. + * + * @author Mark Boyns + * @see String + */ +class Key { + private String name = null; + + /** + * Create a Key. + */ + Key(String name) { + this.name = name; + } + + /** + * Return a lowercase hashCode. + */ + public int hashCode() { + String s = name.toLowerCase(); + return s.hashCode(); + } + + /** + * Return a lowercase equals. + */ + public boolean equals(Object obj) { + return name.equalsIgnoreCase(obj.toString()); + } + + /** + * Return the key. + */ + public String toString() { + return name; + } +} \ No newline at end of file diff --git a/trunk/libsrc/jpproxy/src/com/jpexs/proxy/Main.java b/trunk/libsrc/jpproxy/src/com/jpexs/proxy/Main.java new file mode 100644 index 000000000..ef69c5f8b --- /dev/null +++ b/trunk/libsrc/jpproxy/src/com/jpexs/proxy/Main.java @@ -0,0 +1,90 @@ +package com.jpexs.proxy; + +import java.io.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; + +public class Main { + public static int port = 55555; + public static final String REPLACEMENTSFILE = "." + File.separator + "config" + File.separator + "replacements.ini"; + public static boolean DEBUG_MODE = false; + + + public static void enterToContinue() { + Scanner keyIn = new Scanner(System.in); + System.out.print("Press the enter key to continue"); + keyIn.nextLine(); + } + + public static void main(String args[]) { + for (int i = 0; i < args.length; i++) { + if (args[i].toLowerCase().equals("--help")) { + System.out.println("JPEXS Replacement Proxy"); + System.out.println("-----------------------"); + System.out.println("Replacements list is read from \"" + REPLACEMENTSFILE + "\" file."); + System.out.println("Optional commandline parameters:"); + System.out.println(" -d"); + System.out.println(" Print debug info to console "); + System.out.println(" -p"); + System.out.println(" Set proxy port to . Default is 55555."); + System.exit(0); + } + if (args[i].toLowerCase().equals("-d")) { + System.out.println("DEBUG mode ON"); + DEBUG_MODE = true; + } + if (args[i].toLowerCase().startsWith("-p")) { + try { + port = Integer.parseInt(args[i].substring(2)); + System.out.println("PORT set to " + port); + } catch (NumberFormatException ex) { + System.out.println("Invalit port, reset to " + port); + } + + } + } + List replacements = new ArrayList(); + if ((new File(REPLACEMENTSFILE)).exists()) { + try { + BufferedReader br = new BufferedReader(new FileReader(REPLACEMENTSFILE)); + String s = ""; + while ((s = br.readLine()) != null) { + String fileName = br.readLine(); + if (fileName == null) break; + fileName = fileName.replaceAll("[\\\\/]", File.separator); + Replacement r = new Replacement(s, fileName); + if (DEBUG_MODE) { + System.out.println("Added Replacement: " + r.urlPattern + " => " + r.targetFile); + } + replacements.add(r); + } + br.close(); + } catch (IOException e) { + + } + } else { + if (DEBUG_MODE) { + System.out.println("WARNING:REPLACEMENTS FILE NOT FOUND."); + } + } + Server.startServer(port, replacements, new ArrayList(), new CatchedListener() { + /** + * Method called when specified contentType is received + * + * @param contentType Content type + * @param url URL of the method + * @param data Data stream + */ + public void catched(String contentType, String url, InputStream data) { + + } + }, new ReplacedListener() { + public void replaced(Replacement replacement, String url, String contentType) { + if (DEBUG_MODE) { + System.out.println("REPLACED:" + url + " (Content-type:" + contentType + ") WITH FILE " + replacement.targetFile); + } + } + }); + } +} diff --git a/trunk/libsrc/jpproxy/src/com/jpexs/proxy/Message.java b/trunk/libsrc/jpproxy/src/com/jpexs/proxy/Message.java new file mode 100644 index 000000000..a125a9d94 --- /dev/null +++ b/trunk/libsrc/jpproxy/src/com/jpexs/proxy/Message.java @@ -0,0 +1,253 @@ +package com.jpexs.proxy; + + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.PushbackInputStream; +import java.util.Enumeration; +import java.util.Hashtable; +import java.util.Vector; + +/** + * Abstract class to represent message headers. + * + * @author Mark Boyns + */ +public abstract class Message { + /** + * Hashtable used to store message headers. + */ + private Hashtable headers = new Hashtable(33); + + /** + * + */ + String statusLine = null; + + public String readLine(InputStream in) throws IOException { + char buf[] = new char[128]; + int offset = 0; + int ch; + + for (; ;) { + ch = in.read(); + if (ch == -1 || ch == '\n') { + break; + } else if (ch == '\r') { + int tmpch = in.read(); + if (tmpch != '\n') { + if (!(in instanceof PushbackInputStream)) { + in = new PushbackInputStream(in); + } + ((PushbackInputStream) in).unread(tmpch); + } + break; + } else { + if (offset == buf.length) { + char tmpbuf[] = buf; + buf = new char[tmpbuf.length * 2]; + System.arraycopy(tmpbuf, 0, buf, 0, offset); + } + buf[offset++] = (char) ch; + } + } + return String.copyValueOf(buf, 0, offset); + } + + /** + * Read headers and store them in the hashtable. + */ + void readHeaders(InputStream in) throws IOException { + int i; + Key key = null; + + for (; ;) { + String s = readLine(in); + if (s == null) { + break; + } + i = s.indexOf(':'); + if (i == -1) { + /* end of header */ + if (s.length() == 0) { + break; + } + /* multi-line headers */ + else if (key != null + && (s.startsWith(" ") || s.startsWith("\t"))) { + int index = getHeaderValueCount(key.toString()); + index--; + Vector v = (Vector) headers.get(key); + v.setElementAt(v.elementAt(index) + "\n" + s, index); + } + } else { + key = new Key(s.substring(0, i)); + Vector v; + if (headers.containsKey(key)) { + v = (Vector) headers.get(key); + } else { + v = new Vector(); + } + v.addElement(s.substring(i + 1).trim()); + headers.put(key, v); + } + } + } + + public int headerCount() { + return headers.size(); + } + + /** + * Set the Status line. + */ + public void setStatusLine(String l) { + statusLine = l; + } + + public int getHeaderValueCount(String name) { + Vector v = (Vector) headers.get(new Key(name)); + return v.size(); + } + + public String getHeaderField(String name) { + return getHeaderField(name, 0); + } + + public String getHeaderField(String name, int index) { + Vector v = (Vector) headers.get(new Key(name)); + if (v == null) { + return null; + } + return (String) v.elementAt(index); + } + + public void setHeaderField(String name, String value) { + setHeaderField(name, value, 0); + } + + public void setHeaderField(String name, String value, int index) { + Vector v; + Key key = new Key(name); + + if (headers.containsKey(key)) { + v = (Vector) headers.get(key); + } else { + v = new Vector(); + if (index == 0) { + v.addElement(""); + } + headers.put(key, v); + } + v.setElementAt(value, index); + } + + public void setHeaderField(String name, int value) { + setHeaderField(name, value, 0); + } + + public void setHeaderField(String name, int value, int index) { + setHeaderField(name, new Integer(value).toString(), index); + } + + /** + * Set all header fields with the give name to the + * specified value. + */ + public void setHeaderFields(String name, String value) { + Vector v; + Key key = new Key(name); + + v = (Vector) headers.get(key); + if (v != null) { + for (int i = 0; i < v.size(); i++) { + v.setElementAt(value, i); + } + } + } + + public void appendHeaderField(String name, String value) { + appendHeaderField(name, value, 0); + } + + public void appendHeaderField(String name, String value, int index) { + setHeaderField(name, getHeaderField(name, index) + value, index); + } + + public void removeHeaderField(String name) { + headers.remove(new Key(name)); + } + + /** + * Return whether or not a header exists. + * + * @param name header name + */ + public boolean containsHeaderField(String name) { + return headers.containsKey(new Key(name)); + } + + /** + * @return an Enumeration of Strings + */ + public Enumeration getHeaders() { + Vector v = new Vector(); + + for (Enumeration e = headers.keys(); e.hasMoreElements();) { + v.addElement(e.nextElement().toString()); + } + + return v.elements(); + } + + private final static byte[] COLON_SPACE = ": ".getBytes(); + private final static byte[] CRLF = "\r\n".getBytes(); + + private ByteArray toByteArray(byte[] sep) { + ByteArray buf = new ByteArray(); + Key key; + String value; + Vector v; + int i = 0; + + buf.append(statusLine); + buf.append(sep); + + for (Enumeration e = headers.keys(); e.hasMoreElements();) { + key = (Key) e.nextElement(); + v = (Vector) headers.get(key); + for (i = 0; i < v.size(); i++) { + buf.append(key.toString()); + buf.append(COLON_SPACE); + buf.append(v.elementAt(i).toString()); + buf.append(sep); + } + } + buf.append(sep); + + return buf; + } + + private ByteArray toByteArray() { + return toByteArray(CRLF); + } + + private ByteArray toByteArray(String sep) { + return toByteArray(sep.getBytes()); + } + + public String toString() { + return toByteArray().toString(); + } + + public String toString(String sep) { + return toByteArray(sep).toString(); + } + + public void write(OutputStream out) + throws IOException { + toByteArray().writeTo(out); + out.flush(); + } +} \ No newline at end of file diff --git a/trunk/libsrc/jpproxy/src/com/jpexs/proxy/ReplacedListener.java b/trunk/libsrc/jpproxy/src/com/jpexs/proxy/ReplacedListener.java new file mode 100644 index 000000000..b23576348 --- /dev/null +++ b/trunk/libsrc/jpproxy/src/com/jpexs/proxy/ReplacedListener.java @@ -0,0 +1,5 @@ +package com.jpexs.proxy; + +public interface ReplacedListener { + public void replaced(Replacement replacement, String url, String contentType); +} diff --git a/trunk/libsrc/jpproxy/src/com/jpexs/proxy/Replacement.java b/trunk/libsrc/jpproxy/src/com/jpexs/proxy/Replacement.java new file mode 100644 index 000000000..e9a63a7c6 --- /dev/null +++ b/trunk/libsrc/jpproxy/src/com/jpexs/proxy/Replacement.java @@ -0,0 +1,63 @@ +package com.jpexs.proxy; + +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.regex.Pattern; + +/** + * Replacement of URL with local file + */ +public class Replacement { + + /** + * URL pattern, can contain * wild-cards + */ + public String urlPattern; + /** + * Filename to replace content with + */ + public String targetFile; + /** + * Date of last accesing this url + */ + public Calendar lastAccess; + + /** + * Constructor + * + * @param urlPattern URL pattern, can contain * wild-cards + * @param targetFile Filename to replace content with + */ + public Replacement(String urlPattern, String targetFile) { + this.urlPattern = urlPattern; + this.targetFile = targetFile; + } + + /** + * Returns true when urlPattern matches specified url + * + * @param url Url to test match + * @return True when matches + */ + public boolean matches(String url) { + String pat = Pattern.quote(urlPattern); + pat = pat.replace("*", "\\E.*\\Q"); + return Pattern.matches(pat, url); + } + + /** + * Returns a string representation of the object. + * + * @return a string representation of the object. + */ + @Override + public String toString() { + SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss"); + + if (lastAccess == null) { + return " " + urlPattern; + } else { + return format.format(lastAccess.getTime()) + " " + urlPattern; + } + } +} diff --git a/trunk/libsrc/jpproxy/src/com/jpexs/proxy/Reply.java b/trunk/libsrc/jpproxy/src/com/jpexs/proxy/Reply.java new file mode 100644 index 000000000..dfa259e4c --- /dev/null +++ b/trunk/libsrc/jpproxy/src/com/jpexs/proxy/Reply.java @@ -0,0 +1,203 @@ +package com.jpexs.proxy; + + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.SequenceInputStream; +import java.util.Hashtable; +import java.util.StringTokenizer; + +/** + * @author Mark Boyns + */ +public class Reply extends Message { + InputStream in = null; + int statusCode = -1; + + public Reply() { + } + + public Reply(InputStream in) { + setContent(in); + } + + public void setContent(InputStream in) { + this.in = in; + } + + public InputStream getContent() { + return in; + } + + void read() throws IOException { + if (in != null) { + read(in); + } + } + + void read(InputStream in) throws IOException { + statusLine = readLine(in); + if (statusLine == null || statusLine.length() == 0) { + throw new IOException("Missing HTTP status line"); + } + + /* Look for HTTP/0.9 */ + if (!statusLine.startsWith("HTTP")) { + /* Put back the line */ + if (this.in != null) { + String putback = new String(statusLine + "\n"); + this.in = new SequenceInputStream(new ByteArrayInputStream(putback.getBytes("utf8")), in); + } + /* Fake a status line and upgrade to HTTP/1.0 */ + statusLine = "HTTP/1.0 200 OK"; + return; + } + + readHeaders(in); + int code = getStatusCode(); + + /* RFC 2068: 204 and 304 MUST NOT contain a message body. */ + switch (code) { + case 204: /* No Content */ + case 304: /* Not Modified */ + /* Ignore the message body if it exists */ + if (containsHeaderField("Content-length")) { + int contentLength = 0; + try { + contentLength = Integer.parseInt(getHeaderField("Content-length")); + } + catch (NumberFormatException e) { + } + int n; + byte buffer[] = new byte[8192]; + while ((n = in.read(buffer, 0, buffer.length)) > 0) { + /* ignore */ + } + removeHeaderField("Content-length"); + } + break; + } + } + + public boolean hasContent() { + switch (getStatusCode()) { + case 204: + case 304: + return false; + + default: + return true; + } + } + + public String getProtocol() { + StringTokenizer st = new StringTokenizer(statusLine); + String protocol = (String) st.nextToken(); + return protocol; + } + + public int getStatusCode() { + if (statusCode == -1) { + StringTokenizer st = new StringTokenizer(statusLine); + String protocol = (String) st.nextToken(); + String status = (String) st.nextToken(); + + try { + statusCode = Integer.parseInt(status); + } + catch (NumberFormatException e) { + statusCode = 0; + } + } + + return statusCode; + } + + private Hashtable headerParser(String header) { + Hashtable table = new Hashtable(); + String type = getHeaderField(header); + if (type == null) { + return table; + } + + StringTokenizer st = new StringTokenizer(type, ";"); + int count = 0; + while (st.hasMoreTokens()) { + String token = st.nextToken(); + token = token.trim(); + String name; + String value; + int i = token.indexOf('='); + if (i != -1) { + name = token.substring(0, i); + value = token.substring(i + 1); + } else { + name = token; + value = ""; + } + + if (count == 0) { + table.put(header, name); + } else { + table.put(name, value); + } + + count++; + } + + return table; + } + + public String getContentType() { + Hashtable table = headerParser("Content-type"); + return (String) table.get("Content-type"); + } + + public String getBoundary() { + Hashtable table = headerParser("Content-type"); + return (String) table.get("boundary"); + } + + public String getTransferEncoding() { + Hashtable table = headerParser("Transfer-Encoding"); + return (String) table.get("Transfer-Encoding"); + } + + public int getChunkSize(InputStream in) throws IOException { + String line = readLine(in); + line = line.trim(); /* apache can have trailing spaces */ + int size = -1; + try { + size = Integer.valueOf(line, 16).intValue(); + } + catch (NumberFormatException e) { + System.out.println(e); + } + return size; + } + + public void getChunkedFooter(InputStream in) throws IOException { + for (; ;) { + String line = readLine(in); + if (line == null) { + break; + } + int i = line.indexOf(':'); + if (i == -1) { + break; + } + } + } + + public void setStatusLine(String line) { + this.statusLine = line; + } + + public static Reply createRedirect(String url) { + Reply r = new Reply(); + r.setStatusLine("HTTP/1.0 302 Moved Temporarily"); + r.setHeaderField("Location", url); + return r; + } +} \ No newline at end of file diff --git a/trunk/libsrc/jpproxy/src/com/jpexs/proxy/Request.java b/trunk/libsrc/jpproxy/src/com/jpexs/proxy/Request.java new file mode 100644 index 000000000..d789d6b2c --- /dev/null +++ b/trunk/libsrc/jpproxy/src/com/jpexs/proxy/Request.java @@ -0,0 +1,235 @@ +package com.jpexs.proxy; + + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.Enumeration; +import java.util.Hashtable; +import java.util.StringTokenizer; +import java.util.Vector; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * @author Mark Boyns + */ +public class Request extends Message { + private static Pattern httpRegex; + private String command = null; + private String url = null; + private String protocol = null; + private byte[] data = null; + private Hashtable log; + private Vector logHeaders; + private Client client; + + static { + httpRegex = Pattern.compile("^(http|https):", Pattern.CASE_INSENSITIVE); + } + + public Request(Client client) { + this.client = client; + } + + void read(InputStream in) throws IOException { + statusLine = readLine(in); + if (statusLine == null || statusLine.length() == 0) { + throw new IOException("Empty request"); + } + + StringTokenizer st = new StringTokenizer(statusLine); + command = (String) st.nextToken(); + url = (String) st.nextToken(); + protocol = (String) st.nextToken(); + + if (!url.startsWith("http")) { + Matcher match = httpRegex.matcher(url); + if (match.matches()) { + url = url.substring(match.start(), + match.end()).toLowerCase() + + url.substring(match.end()); + } + } + + readHeaders(in); + + if ("POST".equals(command) || "PUT".equals(command)) { + try { + int n = Integer.parseInt(getHeaderField("Content-length")); + data = new byte[n]; + int offset = 0; + while (offset < data.length) { + n = in.read(data, offset, data.length - offset); + if (n < 0) { + throw new IOException("Not enough " + command + " data"); + } + offset += n; + } + } + catch (NumberFormatException e) { + System.out.println("Malformed or missing " + command + " Content-length"); + } + } + } + + public void write(OutputStream out) + throws IOException { + super.write(out); + if (data != null) { + out.write(data); + out.flush(); + } + } + + public String getRequest() { + return statusLine; + } + + public String getCommand() { + return command; + } + + public void setCommand(String command) { + this.command = command; + } + + public String getURL() { + return url; + } + + public void setURL(String url) { + this.url = url; + } + + public String getProtocol() { + return protocol; + } + + public void setProtocol(String protocol) { + this.protocol = protocol; + } + + public String getHost() { + String url = getURL(); + String s; + + if (url.startsWith("http://")) { + s = url.substring(7, url.indexOf('/', 7)); + } else { + s = url; + } + + int at = s.indexOf('@'); + if (at != -1) { + s = s.substring(at + 1); + } + + if (s.indexOf(':') != -1) { + return s.substring(0, s.indexOf(':')); + } + + return s; + } + + public int getPort() { + int port = 80; + String url = getURL(); + String s; + + if (url.startsWith("http://")) { + s = url.substring(7, url.indexOf('/', 7)); + } else { + s = url; + } + + int at = s.indexOf('@'); + if (at != -1) { + s = s.substring(at + 1); + } + + if (s.indexOf(':') != -1) { + try { + port = Integer.parseInt(s.substring(s.indexOf(':') + 1)); + } + catch (NumberFormatException e) { + System.out.println("Invalid port in " + url); + } + } + return port; + } + + public String getData() { + if (data == null) { + return null; + } + return new String(data); + } + + public byte[] getDataBytes() { + return data; + } + + public void setData(byte[] data) { + this.data = data; + } + + + public String getPath() { + String str = getURL(); + int pos = 0; + for (int i = 0; i < 3; i++) { + pos = str.indexOf('/', pos); + pos++; + } + pos--; + return str.substring(pos); + } + + public String getDocument() { + String path = getPath(); + int n = path.lastIndexOf('/'); + if (n == path.length() - 1) { + n = path.lastIndexOf('/', n - 1); + } + if (n < 0) { + return "/"; + } else { + return path.substring(n + 1); + } + } + + + public String getQueryString() { + String path = getPath(); + int n = path.indexOf('?'); + if (n < 0) { + return null; + } + return path.substring(n + 1); + } + + public synchronized void addLogEntry(String header, + String message) { + if (log == null) { + log = new Hashtable(); + logHeaders = new Vector(); + } + + Vector v = (Vector) log.get(header); + if (log.get(header) == null) { + v = new Vector(); + log.put(header, v); + logHeaders.addElement(header); + } + v.addElement(message); + } + + public Enumeration getLogHeaders() { + return logHeaders != null ? logHeaders.elements() : null; + } + + public Enumeration getLogEntries(String header) { + return log != null ? ((Vector) log.get(header)).elements() : null; + } +} \ No newline at end of file diff --git a/trunk/libsrc/jpproxy/src/com/jpexs/proxy/RetryRequestException.java b/trunk/libsrc/jpproxy/src/com/jpexs/proxy/RetryRequestException.java new file mode 100644 index 000000000..dbc558497 --- /dev/null +++ b/trunk/libsrc/jpproxy/src/com/jpexs/proxy/RetryRequestException.java @@ -0,0 +1,11 @@ +package com.jpexs.proxy; + +class RetryRequestException extends Exception { + RetryRequestException() { + super(); + } + + RetryRequestException(String message) { + super(message); + } +} \ No newline at end of file diff --git a/trunk/libsrc/jpproxy/src/com/jpexs/proxy/Server.java b/trunk/libsrc/jpproxy/src/com/jpexs/proxy/Server.java new file mode 100644 index 000000000..259caca2a --- /dev/null +++ b/trunk/libsrc/jpproxy/src/com/jpexs/proxy/Server.java @@ -0,0 +1,88 @@ +package com.jpexs.proxy; + +import java.io.IOException; +import java.net.ServerSocket; +import java.net.Socket; +import java.util.List; + +/** + * Proxy server + * + * @author JPEXS + */ +public class Server extends Thread { + private ServerSocket ssocket = null; + private boolean stoppped = false; + private List replacements; + private static Server server; + private List catchedContentTypes; + private CatchedListener catchedListener; + private int port; + private ReplacedListener replacedListener; + + private Server(int port, List replacements, List catchedContentTypes, CatchedListener catchedListener, ReplacedListener replacedListener) { + this.replacements = replacements; + this.catchedContentTypes = catchedContentTypes; + this.catchedListener = catchedListener; + this.replacedListener = replacedListener; + this.port = port; + } + + private void stopRun() { + stoppped = true; + if (ssocket != null) { + try { + ssocket.close(); + } catch (IOException e) { + + } + } + } + + /** + * Starts proxy server + * + * @param port Listening port + * @param replacements List of replacements + * @param catchedContentTypes Content types to sniff + * @param catchedListener Catched listener + */ + public static void startServer(int port, List replacements, List catchedContentTypes, CatchedListener catchedListener, ReplacedListener replacedListener) { + stopServer(); + server = new Server(port, replacements, catchedContentTypes, catchedListener, replacedListener); + //WorkerThread.assignThread(server, "Proxy server"); + server.start(); + } + + /** + * Stops proxy server + */ + public static void stopServer() { + if (server != null) server.stopRun(); + server = null; + } + + /** + * Runs the server + */ + public void run() { + + try { + ssocket = new ServerSocket(port); + } catch (IOException e) { + System.err.println("Cannot bind to port"); + return; + } + for (; ;) { + try { + Socket sock = ssocket.accept(); + Handler handler = new Handler(sock, replacements, catchedContentTypes, catchedListener, replacedListener); + WorkerThread.assignThread(handler, "Proxy handler"); + } catch (IOException e) { + + } + if (stoppped) + break; + } + } +} diff --git a/trunk/libsrc/jpproxy/src/com/jpexs/proxy/WorkerThread.java b/trunk/libsrc/jpproxy/src/com/jpexs/proxy/WorkerThread.java new file mode 100644 index 000000000..7545afdb6 --- /dev/null +++ b/trunk/libsrc/jpproxy/src/com/jpexs/proxy/WorkerThread.java @@ -0,0 +1,142 @@ +// Copyright (c) 1999 Brian Wellington (bwelling@xbill.org) +// Portions Copyright (c) 1999 Network Associates, Inc. + +package com.jpexs.proxy; + +import java.util.Vector; + +/** + * An extension of a Thread that uses threads from a pool, rather than + * allocating a new thread for each assigned task. + * + * @author Brian Wellington + */ + +public class WorkerThread extends Thread { + + private Runnable task; + private String name; + + private static int nactive = 0; + private static Vector list = new Vector(); + private static int max = 10; + private static long lifetime = 900 * 1000; /* 15 minute default */ + + private WorkerThread() { + setDaemon(true); + } + + /** + * Sets the lifetime of an idle WorkerThread (in ms). A WorkerThread + * will remain on the idle list for this much time before exiting. This + * does not affect WorkerThreads currently idling. + */ + synchronized static void + setLifetime(long time) { + lifetime = time; + } + + /** + * Sets the maximum number of WorkerThreads that can exist at any given + * time. If this value is decreased below the current number of + * WorkerThreads, this will not take effect immediately. + */ + synchronized static void + setMaxThreads(int maxThreads) { + max = maxThreads; + } + + /** + * Obtains a WorkerThread to which a task can be assigned. If an idle + * WorkerThread is present, it is removed from the idle list and returned. + * If not, and the maximum number of WorkerThreads has not been reached, + * a new WorkerThread is created. If the maximum number has been reached, + * this blocks until a WorkerThread is free. + */ + static WorkerThread + getThread() { + WorkerThread t; + synchronized (list) { + if (list.size() > 0) { + t = (WorkerThread) list.firstElement(); + list.removeElement(t); + } else if (nactive >= max) { + while (true) { + try { + list.wait(); + } + catch (InterruptedException e) { + } + if (list.size() == 0) + continue; + t = (WorkerThread) list.firstElement(); + list.removeElement(t); + break; + } + } else + t = new WorkerThread(); + nactive++; + } + return t; + } + + /** + * Assigns a task to a WorkerThread + * + * @param task The task to be run + * @param name The name of the task + */ + public static void + assignThread(Runnable task, String name) { + while (true) { + try { + WorkerThread t = getThread(); + synchronized (t) { + t.task = task; + t.name = name; + if (!t.isAlive()) + t.start(); + else + t.notify(); + } + return; + } + catch (IllegalThreadStateException e) { + } + } + } + + /** + * Performs the task + */ + synchronized public void + run() { + while (true) { + setName(name); + try { + task.run(); + } + catch (Throwable t) { + System.err.println(t); + } + setName("idle thread"); + synchronized (list) { + list.addElement(this); + if (nactive >= max) + list.notify(); + nactive--; + } + task = null; + try { + wait(lifetime); + } + catch (InterruptedException e) { + } + if (task == null) { + list.removeElement(this); + return; + } + } + } + +} \ No newline at end of file diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/CHANGELOG.txt b/trunk/libsrc/jsyntaxpane/jsyntaxpane/CHANGELOG.txt new file mode 100644 index 000000000..7cf5a2857 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/CHANGELOG.txt @@ -0,0 +1,90 @@ +Version 0.9.5 - Java Reflection Completions additions + * Configuration class overhaul. Each kit now has its own COnfiguration file + which merges the superclass(es) Configurations. + * Usable Reflect Completions Dialog (Java with F1 or Menu) + * Java ENTER key responds properly to multi line comments + * Font can be changed for each Kit + * Kits for XHTML and Xpath added. XHTML has a simple Preview Action. + * Added Execute Script to JacaScript (can also be used for Groovy if Groovy + Scripting support is installed properly). + * Hotkeys for actions are displayed in Popup Menus + * Word Completion action can also do CamelCase matches + * Smart Home Action (and Smart Home Extend Selection) + * Enhanced JavaScript support. Issue 115 + * Better Undo grouping + * Replace DIalog ENhancement. Only for updatedable editors and added single replace. + * Added append method to SyntaxDocument + * Fixed Issue 130 - Compound Undo on multiple lines. +Version 0.9.4 - IntelliSense additions + * Adding IntelliSense to Java with simple List of selectable keywords + * Added Toggle Comment Actions using Control SLASH + * Fixed Issue 47. + * Added Clojure, Scala, DOS Batch and 'nix bash support + * Added Configurable Popup menus with default Tango Desktop icons + * Added configurable format for the CaretMonitor class + * Toggle Comments Action selects the lines affected after being performed + * Added multi-line support in ActionUtils.insertMagicSTring method. + * GotoLine dialog responds to ESC key +Version 0.9.3 - Start of scripts for the document: + * Added new methods getLine() to SyntaxDocument + * SyntaxDocument getIndexOf methods deprecated, use getMatchers instead + * Added Line Numbering to Java + * Added CaretMonitor Class + * Merged Find And Replace dialogs into one. + * Created SyntaxComponent interface and have all UI components implement + that interface. DefaultSyntaxKit will use config.properties class to + dynamically install these components. + * Added Right Margin option and Single Color Selection Options + * Added Python, C and C++ Support + * Added Ruby Syntax Support + * Fixed Issue 37 (NPE for LineNumbersRuler) + * Fixed Issue 39 (Highlighting Tokens overrides selection highlights) + * Fixed some JavaDoc comments. + * Fixed Line Numbers being displayed for the height of the editor and now + just for the actual available lines. + * Fixed Margin typo in all project. Issue 43 + * Changing Actions to be more configurable: + * SyntaxActions renamed to ActionUtils + * Removed all inner classes from SyntaxActions + * Will create new SyntaxAction interface that will allow dynamic addition + actions (in the addKeyActions of DefaultSyntaxKit + * Added Text AA property to SyntaxView +Version 0.9.2: + * Fixing Java Indentation and Un-Indentattion Actions + * Added and used (in the Tester) clearUndoes on the SyntaxDocument + * Added Basic JFlex Syntax + * Added getContentTypes to DefaultSyntaxKit to get all registered + ContentTypes. This is now also used in the SyntaxTester instead of + hardcoding the types. + * Cleanup and optimization of Lexers by removing duplicate Java Code + (replaced with Regex OR) + * Removed calls to deprecated calls in SyntaxView + * Modified the SyntaxDOcument to override the fireXXX methods and parse + the document at that time instead of overriding the inserUpdate method. + This fixes issue 24. + * Added Groovy GString expression highlights + * Removed getLanguages method from Lexer interface and implementations. + * Added WARNING and ERROR TokenTypes and added their default styles. + * Moved Keymaps and install methods to SyntaxKits instead of the Lexers + * Removed deprecated methods from SyntaxActions class + * Split SyntaxActions into new package and moved inner classes to the new + package + * Added Token HighLighter to Java + * Added Pairs Highlighter to Java + * Token class made immutable (all final fields) + * Added Find and Replace Dialogs and Action to Java (mapped to C-F and + C-H ) + * Added pair matching to XML tags + * Added CDATA matching and pair highlights for XML + * Added Comment Pair Highlighting in XML + * Fixed highlighting with selections so the selection always appears + * Merged Find and Replace Dialogs into one + * Fixed issue 33 (undable to add new line after final closing brace for + Java) + * Added Groovy Multi-Line strings and fixed Comments as Regex issue. + * Fixes to empty find text field causing NPE +Version 0.9.1 + * Fixed empty strings in XML syntax Issue 29 + * Fixed TAL lexer using incorrect package name +Version 0.9.0 + * Initial version after major overhaul \ No newline at end of file diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/javaRegex.properties b/trunk/libsrc/jsyntaxpane/jsyntaxpane/javaRegex.properties new file mode 100644 index 000000000..92ccefc30 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/javaRegex.properties @@ -0,0 +1,11 @@ +# Java Regex Lexer: +COMMENT=/\\*(?:.|[\\n\\r])*?\\*/|//.* +STRING=\"((?:\\\")|.*)?\" +IDENTIFIER=[a-z][a-zA-Z0-9_]* +TYPE=[A-Z_]\\w* +KEYWORD=abstract|boolean|break|byte|case|catch|char|class|const|continue|\ +do|double|enum|else|extends|final|finally|float|for|default|implements|import|\ +instanceof|int|interface|long|native|new|goto|if|public|short|super|switch|\ +synchronized|package|private|protected|transient|return|void|static|while|this|\ +throw|throws|try|volatile|strictfp|true|false|null +TYPE3=@\\w+ \ No newline at end of file diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/nbactions.xml b/trunk/libsrc/jsyntaxpane/jsyntaxpane/nbactions.xml new file mode 100644 index 000000000..379f9d6af --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/nbactions.xml @@ -0,0 +1,41 @@ + + + + run + + process-classes + org.codehaus.mojo:exec-maven-plugin:1.1:exec + + + -classpath %classpath jsyntaxpane.SyntaxTester + java + + + + debug + + process-classes + org.codehaus.mojo:exec-maven-plugin:1.1:exec + + + -Xdebug -Djava.compiler=none -Xnoagent -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address} -classpath %classpath jsyntaxpane.SyntaxTester + true + java + + + + profile + + jar + + + process-classes + org.codehaus.mojo:exec-maven-plugin:1.1:exec + + + ${profiler.args} -classpath %classpath jsyntaxpane.SyntaxTester + profile + ${profiler.java} + + + diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/pom.xml b/trunk/libsrc/jsyntaxpane/jsyntaxpane/pom.xml new file mode 100644 index 000000000..0e2f8d009 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/pom.xml @@ -0,0 +1,78 @@ + + + 4.0.0 + jsyntaxpane + jsyntaxpane + jar + 0.9.5 + jsyntaxpane + A very simple to use and extend JEditorKit that supports few languages. The main goal is to make it easy to have nice looking Java Swing Editors with support for Syntax Highlighting. + http://jsyntaxpane.googlecode.com/ + + + + The Apache Software License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0 + repo + + + + + http://jsyntaxpane.googlecode.com/svn/ + + + + + jflex + JFlex repository + http://jflex.sourceforge.net/repo/ + + + + + + + maven-compiler-plugin + RELEASE + + 1.6 + 1.6 + + + + org.apache.maven.plugins + maven-jar-plugin + + + **/Thumbs.db + + + + jsyntaxpane.SyntaxTester + jsyntaxpane + true + + + + development + ${pom.url} + + + + + + de.jflex + maven-jflex-plugin + + + + + generate + + + + + + + + diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/Main.iml b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/Main.iml new file mode 100644 index 000000000..e67abe102 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/Main.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/CompoundUndoMan.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/CompoundUndoMan.java new file mode 100644 index 000000000..3314b7bb5 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/CompoundUndoMan.java @@ -0,0 +1,140 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane; + +import javax.swing.event.UndoableEditEvent; +import javax.swing.text.AbstractDocument; +import javax.swing.text.AbstractDocument.DefaultDocumentEvent; +import javax.swing.undo.CannotUndoException; +import javax.swing.undo.CompoundEdit; +import javax.swing.undo.UndoManager; +import javax.swing.undo.UndoableEdit; + +/** + * A revised UndoManager that groups undos based on positions. If the change is relatively next to the + * previous change, like when continuous typing, then the undoes are grouped together. + * + * This is cutomized from the + * + * http://www.camick.com/java/source/CompoundUndoMan.java + * + * from the blog: + * + * http://tips4java.wordpress.com/2008/10/27/compound-undo-manager/ + * + * @author Ayman Al-Sairafi + */ +public class CompoundUndoMan extends UndoManager { + + private CompoundEdit compoundEdit; + // This allows us to start combining operations. + // it will be reset after the first change. + private boolean startCombine = false; + // This holds the start of the last line edited, if edits are on multiple + // lines, then they will not be combined. + private int lastLine = -1; + + public CompoundUndoMan(SyntaxDocument doc) { + doc.addUndoableEditListener(this); + lastLine = doc.getStartPosition().getOffset(); + } + + /** + * Whenever an UndoableEdit happens the edit will either be absorbed + * by the current compound edit or a new compound edit will be started + */ + @Override + public void undoableEditHappened(UndoableEditEvent e) { + // Start a new compound edit + + AbstractDocument.DefaultDocumentEvent docEvt = (DefaultDocumentEvent) e.getEdit(); + + if (compoundEdit == null) { + compoundEdit = startCompoundEdit(e.getEdit()); + startCombine = false; + return; + } + + int editLine = ((SyntaxDocument)docEvt.getDocument()).getLineNumberAt(docEvt.getOffset()); + + // Check for an incremental edit or backspace. + // The Change in Caret position and Document length should both be + // either 1 or -1. + if ((startCombine || Math.abs(docEvt.getLength()) == 1) && editLine == lastLine) { + compoundEdit.addEdit(e.getEdit()); + startCombine = false; + return; + } + + // Not incremental edit, end previous edit and start a new one + lastLine = editLine; + + compoundEdit.end(); + compoundEdit = startCompoundEdit(e.getEdit()); + } + + /* + ** Each CompoundEdit will store a group of related incremental edits + ** (ie. each character typed or backspaced is an incremental edit) + */ + private CompoundEdit startCompoundEdit(UndoableEdit anEdit) { + // Track Caret and Document information of this compound edit + AbstractDocument.DefaultDocumentEvent docEvt = (DefaultDocumentEvent) anEdit; + + // The compound edit is used to store incremental edits + + compoundEdit = new MyCompoundEdit(); + compoundEdit.addEdit(anEdit); + + // The compound edit is added to the UndoManager. All incremental + // edits stored in the compound edit will be undone/redone at once + + addEdit(compoundEdit); + + return compoundEdit; + } + + class MyCompoundEdit extends CompoundEdit { + + @Override + public boolean isInProgress() { + // in order for the canUndo() and canRedo() methods to work + // assume that the compound edit is never in progress + return false; + } + + @Override + public void undo() throws CannotUndoException { + // End the edit so future edits don't get absorbed by this edit + + if (compoundEdit != null) { + compoundEdit.end(); + } + + super.undo(); + + // Always start a new compound edit after an undo + + compoundEdit = null; + } + } + + /** + * Start to combine the next operations together. Only the next operation is combined. + * The flag is then automatically reset. + */ + public void startCombine() { + startCombine = true; + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/DefaultSyntaxKit.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/DefaultSyntaxKit.java new file mode 100644 index 000000000..56242fce2 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/DefaultSyntaxKit.java @@ -0,0 +1,671 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane; + +import java.awt.Color; +import java.awt.Container; +import java.util.logging.Level; +import java.awt.Font; +import java.awt.GraphicsEnvironment; +import java.awt.Toolkit; +import java.awt.event.KeyEvent; +import java.net.URL; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Properties; +import java.util.Set; +import java.util.WeakHashMap; +import java.util.logging.Logger; +import java.util.regex.Pattern; +import javax.swing.Action; +import javax.swing.ActionMap; +import javax.swing.BorderFactory; +import javax.swing.ImageIcon; +import javax.swing.InputMap; +import javax.swing.JButton; +import javax.swing.JCheckBoxMenuItem; +import javax.swing.JEditorPane; +import javax.swing.JMenu; +import javax.swing.JMenuItem; +import javax.swing.JPopupMenu; +import javax.swing.JToolBar; +import javax.swing.KeyStroke; +import javax.swing.text.DefaultEditorKit; +import javax.swing.text.Document; +import javax.swing.text.EditorKit; +import javax.swing.text.Element; +import javax.swing.text.JTextComponent; +import javax.swing.text.View; +import javax.swing.text.ViewFactory; +import jsyntaxpane.actions.DefaultSyntaxAction; +import jsyntaxpane.actions.SyntaxAction; +import jsyntaxpane.components.SyntaxComponent; +import jsyntaxpane.util.Configuration; +import jsyntaxpane.util.JarServiceProvider; + +/** + * The DefaultSyntaxKit is the main entry to SyntaxPane. To use the package, just + * set the EditorKit of the EditorPane to a new instance of this class. + * + * You need to pass a proper lexer to the class. + * + * @author ayman + */ +public class DefaultSyntaxKit extends DefaultEditorKit implements ViewFactory { + + public static final String CONFIG_CARETCOLOR = "CaretColor"; + public static final String CONFIG_SELECTION = "SelectionColor"; + public static final String CONFIG_COMPONENTS = "Components"; + public static final String CONFIG_MENU = "PopupMenu"; + public static final String CONFIG_TOOLBAR = "Toolbar"; + public static final String CONFIG_TOOLBAR_ROLLOVER = "Toolbar.Buttons.Rollover"; + public static final String CONFIG_TOOLBAR_BORDER = "Toolbar.Buttons.BorderPainted"; + public static final String CONFIG_TOOLBAR_OPAQUE = "Toolbar.Buttons.Opaque"; + public static final String CONFIG_TOOLBAR_BORDER_SIZE = "Toolbar.Buttons.BorderSize"; + private static final Pattern ACTION_KEY_PATTERN = Pattern.compile("Action\\.((\\w|-)+)"); + private static final Pattern DEFAULT_ACTION_PATTERN = Pattern.compile("(DefaultAction.((\\w|-)+)).*"); + private static Font DEFAULT_FONT; + private static Set CONTENT_TYPES = new HashSet(); + private static Boolean initialized = false; + private static Map abbrvs; + private static String MENU_MASK_STRING = "control "; + private Lexer lexer; + private static final Logger LOG = Logger.getLogger(DefaultSyntaxKit.class.getName()); + private Map> editorComponents = + new WeakHashMap>(); + private Map popupMenu = + new WeakHashMap(); + /** + * Main Configuration of JSyntaxPane EditorKits + */ + private static Map, Configuration> CONFIGS; + + static { + // we only need to initialize once. + if (!initialized) { + initKit(); + } + int menuMask = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(); + if(menuMask == KeyEvent.ALT_DOWN_MASK) { + MENU_MASK_STRING = "alt "; + } + } + private static final String ACTION_MENU_TEXT = "MenuText"; + + /** + * Create a new Kit for the given language + * @param lexer + */ + public DefaultSyntaxKit(Lexer lexer) { + super(); + this.lexer = lexer; + } + + /** + * Adds UI components to the pane + * @param editorPane + */ + public void addComponents(JEditorPane editorPane) { + // install the components to the editor: + String[] components = getConfig().getPropertyList(CONFIG_COMPONENTS); + for (String c : components) { + installComponent(editorPane, c); + } + } + + /** + * Creates a SyntaxComponent of the the given classname and installs + * it on the pane + * @param pane + * @param classname + */ + public void installComponent(JEditorPane pane, String classname) { + try { + @SuppressWarnings(value = "unchecked") + Class compClass = Class.forName(classname); + SyntaxComponent comp = (SyntaxComponent) compClass.newInstance(); + comp.config(getConfig()); + comp.install(pane); + if (editorComponents.get(pane) == null) { + editorComponents.put(pane, new ArrayList()); + } + editorComponents.get(pane).add(comp); + } catch (InstantiationException ex) { + LOG.log(Level.SEVERE, null, ex); + } catch (IllegalAccessException ex) { + LOG.log(Level.SEVERE, null, ex); + } catch (ClassNotFoundException ex) { + LOG.log(Level.SEVERE, null, ex); + } + } + + /** + * Find the SyntaxCOmponent with given classname that is installed + * on the given pane, then deinstalls and removes it fom the + * editorComponents list + * @param pane + * @param classname + */ + public void deinstallComponent(JEditorPane pane, String classname) { + for (SyntaxComponent c : editorComponents.get(pane)) { + if (c.getClass().getName().equals(classname)) { + c.deinstall(pane); + editorComponents.get(pane).remove(c); + break; + } + } + } + + /** + * Checks if the component with given classname is installed on the + * pane. + * @param pane + * @param classname + * @return true if component is installed, false otherwise + */ + public boolean isComponentInstalled(JEditorPane pane, String classname) { + for (SyntaxComponent c : editorComponents.get(pane)) { + if (c.getClass().getName().equals(classname)) { + return true; + } + } + return false; + } + + /** + * Toggles the component with given classname. If component is found + * and installed, then it is deinstalled. Otherwise a new one is + * installed + * @param pane + * @param classname + * @return true if component was installed, false if it was removed + */ + public boolean toggleComponent(JEditorPane pane, String classname) { + for (SyntaxComponent c : editorComponents.get(pane)) { + if (c.getClass().getName().equals(classname)) { + c.deinstall(pane); + editorComponents.get(pane).remove(c); + return false; + } + } + installComponent(pane, classname); + return true; + } + + /** + * Adds a popup menu to the editorPane if needed. + * + * @param editorPane + */ + public void addPopupMenu(JEditorPane editorPane) { + String[] menuItems = getConfig().getPropertyList(CONFIG_MENU); + if (menuItems == null || menuItems.length == 0) { + return; + } + popupMenu.put(editorPane, new JPopupMenu()); + JMenu stack = null; + for (String menuString : menuItems) { + + // create the Popup menu + if (menuString.equals("-")) { + popupMenu.get(editorPane).addSeparator(); + } else if (menuString.startsWith(">")) { + JMenu sub = new JMenu(menuString.substring(1)); + popupMenu.get(editorPane).add(sub); + stack = sub; + } else if (menuString.startsWith("<")) { + Container parent = stack.getParent(); + if (parent instanceof JMenu) { + JMenu jMenu = (JMenu) parent; + stack = jMenu; + } else { + stack = null; + } + } else { + Action action = editorPane.getActionMap().get(menuString); + if (action != null) { + JMenuItem menuItem; + if (action.getValue(Action.SELECTED_KEY) != null) { + menuItem = new JCheckBoxMenuItem(action); + } else { + menuItem = new JMenuItem(action); + } + // Use our own property if it was set for the menu text + if (action.getValue(ACTION_MENU_TEXT) != null) { + menuItem.setText((String) action.getValue(ACTION_MENU_TEXT)); + } + if (stack == null) { + popupMenu.get(editorPane).add(menuItem); + } else { + stack.add(menuItem); + } + } + } + } + editorPane.setComponentPopupMenu(popupMenu.get(editorPane)); + } + + /** + * Add all pop-up menu items to a Toolbar. You need to call the validate method + * on the toolbar after this is done to layout the buttons. + * Only Actions which have a SMALL_ICON property will be added to the toolbar + * There are three Configuration Keys that affect the appearance of the added buttons: + * CONFIG_TOOLBAR_ROLLOVER, CONFIG_TOOLBAR_BORDER, CONFIG_TOOLBAR_OPAQUE + * + * @param editorPane + * @param toolbar + */ + public void addToolBarActions(JEditorPane editorPane, JToolBar toolbar) { + String[] toolBarItems = getConfig().getPropertyList(CONFIG_TOOLBAR); + if (toolBarItems == null || toolBarItems.length == 0) { + toolBarItems = getConfig().getPropertyList(CONFIG_MENU); + if (toolBarItems == null || toolBarItems.length == 0) { + return; + } + } + boolean btnRolloverEnabled = getConfig().getBoolean(CONFIG_TOOLBAR_ROLLOVER, true); + boolean btnBorderPainted = getConfig().getBoolean(CONFIG_TOOLBAR_BORDER, false); + boolean btnOpaque = getConfig().getBoolean(CONFIG_TOOLBAR_OPAQUE, false); + int btnBorderSize = getConfig().getInteger(CONFIG_TOOLBAR_BORDER_SIZE, 2); + for (String menuString : toolBarItems) { + if (menuString.equals("-") || + menuString.startsWith("<") || + menuString.startsWith(">")) { + toolbar.addSeparator(); + } else { + Action action = editorPane.getActionMap().get(menuString); + if (action != null && action.getValue(Action.SMALL_ICON) != null) { + JButton b = toolbar.add(action); + b.setRolloverEnabled(btnRolloverEnabled); + b.setBorderPainted(btnBorderPainted); + b.setOpaque(btnOpaque); + b.setFocusable(false); + b.setBorder(BorderFactory.createEmptyBorder(btnBorderSize, + btnBorderSize, btnBorderSize, btnBorderSize)); + } + } + } + } + + @Override + public ViewFactory getViewFactory() { + return this; + } + + @Override + public View create(Element element) { + return new SyntaxView(element, getConfig()); + } + + /** + * Install the View on the given EditorPane. This is called by Swing and + * can be used to do anything you need on the JEditorPane control. Here + * I set some default Actions. + * + * @param editorPane + */ + @Override + public void install(JEditorPane editorPane) { + super.install(editorPane); + // get our font + String fontName = getProperty("DefaultFont"); + Font font = DEFAULT_FONT; + if (fontName != null) { + font = Font.decode(fontName); + } + editorPane.setFont(font); + Configuration conf = getConfig(); + Color caretColor = conf.getColor(CONFIG_CARETCOLOR, Color.BLACK); + editorPane.setCaretColor(caretColor); + Color selectionColor = getConfig().getColor(CONFIG_SELECTION, new Color(0x99ccff)); + editorPane.setSelectionColor(selectionColor); + addActions(editorPane); + addComponents(editorPane); + addPopupMenu(editorPane); + } + + @Override + public void deinstall(JEditorPane editorPane) { + List l = editorComponents.get(editorPane); + for (SyntaxComponent c : editorComponents.get(editorPane)) { + c.deinstall(editorPane); + } + editorComponents.clear(); + editorPane.getInputMap().clear(); + editorPane.getActionMap().clear(); + } + + /** + * Add keyboard actions to this control using the Configuration we have + * This is revised to properly use InputMap and ActionMap of the component + * instead of using the KeyMaps directly. + * @param editorPane + */ + public void addActions(JEditorPane editorPane) { + InputMap imap = new InputMap(); + imap.setParent(editorPane.getInputMap()); + ActionMap amap = new ActionMap(); + amap.setParent(editorPane.getActionMap()); + + for (Configuration.StringKeyMatcher m : getConfig().getKeys(ACTION_KEY_PATTERN)) { + String[] values = Configuration.COMMA_SEPARATOR.split( + m.value); + String actionClass = values[0]; + String actionName = m.group1; + SyntaxAction action = createAction(actionClass); + // The configuration keys will need to be prefixed by Action + // to make it more readable in the Configuration files. + action.config(getConfig(), DefaultSyntaxAction.ACTION_PREFIX + actionName); + // Add the action to the component also + amap.put(actionName, action); + // Now bind all the keys to the Action we have using the InputMap + for (int i = 1; i < values.length; i++) { + String keyStrokeString = values[i].replace("menu ", MENU_MASK_STRING); + KeyStroke ks = KeyStroke.getKeyStroke(keyStrokeString); + // we may have more than onr value ( for key action ), but we will use the + // last one in the single value here. This will display the key in the + // popup menus. Pretty neat. + if (ks == null) { + throw new IllegalArgumentException("Invalid KeyStroke: " + + keyStrokeString); + } + action.putValue(Action.ACCELERATOR_KEY, ks); + imap.put(ks, actionName); + } + } + + // Now configure the Default actions for better display in the popup menu + for (Configuration.StringKeyMatcher m : getConfig().getKeys(DEFAULT_ACTION_PATTERN)) { + String name = m.matcher.group(2); + Action action = editorPane.getActionMap().get(name); + if (action != null) { + configActionProperties(action, name, m.group1); + } + // The below commented block does find the keys for the default Actions + // using InputMap, however there are multiple bound keys for the + // default actions that displaying them in the menu will probably not + // be the most obvious binding + /* + for (KeyStroke key : imap.allKeys()) { + Object o = imap.get(key); + if(name.equals(o)) { + action.putValue(Action.ACCELERATOR_KEY, key); + break; + } + } + */ + } + editorPane.setActionMap(amap); + editorPane.setInputMap(JTextComponent.WHEN_FOCUSED, imap); + } + + private void configActionProperties(Action action, String actionName, String configKey) { + + // if we have an icon, then load it: + String iconLoc = getConfig().getString(configKey + ".SmallIcon", actionName + ".png"); + URL loc = this.getClass().getResource(DefaultSyntaxAction.SMALL_ICONS_LOC_PREFIX + iconLoc); + if (loc != null) { + ImageIcon i = new ImageIcon(loc); + action.putValue(Action.SMALL_ICON, i); + } + // Set the menu text. Use the Action.NAME property, unless it is + // already set. + // The NAME would be set for default actions, and we should not change those names. + // so we will put another property and use it for the menu text + String name = getProperty(configKey + ".MenuText"); + if (action.getValue(Action.NAME) == null) { + action.putValue(Action.NAME, name); + } else { + action.putValue(ACTION_MENU_TEXT, name); + } + // Set the menu tooltips + String shortDesc = getProperty(configKey + ".ToolTip"); + if (shortDesc != null) { + action.putValue(Action.SHORT_DESCRIPTION, shortDesc); + } else { + action.putValue(Action.SHORT_DESCRIPTION, name); + } + } + + private SyntaxAction createAction(String actionClassName) { + SyntaxAction action = null; + try { + Class clazz = Class.forName(actionClassName); + action = (SyntaxAction) clazz.newInstance(); + } catch (InstantiationException ex) { + throw new IllegalArgumentException("Cannot create action class: " + + actionClassName + ". Ensure it has default constructor.", ex); + } catch (IllegalAccessException ex) { + throw new IllegalArgumentException("Cannot create action class: " + + actionClassName, ex); + } catch (ClassNotFoundException ex) { + throw new IllegalArgumentException("Cannot create action class: " + + actionClassName, ex); + } catch (ClassCastException ex) { + throw new IllegalArgumentException("Cannot create action class: " + + actionClassName, ex); + } + return action; + } + + /** + * This is called by Swing to create a Document for the JEditorPane document + * This may be called before you actually get a reference to the control. + * We use it here to create a proper lexer and pass it to the + * SyntaxDcument we return. + * @return + */ + @Override + public Document createDefaultDocument() { + return new SyntaxDocument(lexer); + } + + /** + * This is called to initialize the list of Lexers we have. + * You can call this at initialization, or it will be called when needed. + * The method will also add the appropriate EditorKit classes to the + * corresponding ContentType of the JEditorPane. After this is called, + * you can simply call the editor.setCOntentType("text/java") on the + * control and you will be done. + */ + public synchronized static void initKit() { + // attempt to find a suitable default font + String defaultFont = getConfig(DefaultSyntaxKit.class).getString("DefaultFont"); + if (defaultFont != null) { + DEFAULT_FONT = Font.decode(defaultFont); + } else { + GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); + String[] fonts = ge.getAvailableFontFamilyNames(); + Arrays.sort(fonts); + if (Arrays.binarySearch(fonts, "Courier New") >= 0) { + DEFAULT_FONT = new Font("Courier New", Font.PLAIN, 12); + } else if (Arrays.binarySearch(fonts, "Courier") >= 0) { + DEFAULT_FONT = new Font("Courier", Font.PLAIN, 12); + } else if (Arrays.binarySearch(fonts, "Monospaced") >= 0) { + DEFAULT_FONT = new Font("Monospaced", Font.PLAIN, 13); + } + } + + // read the Default Kits and their associated types + Properties kitsForTypes = JarServiceProvider.readProperties("jsyntaxpane/kitsfortypes"); + for (Map.Entry e : kitsForTypes.entrySet()) { + String type = e.getKey().toString(); + String classname = e.getValue().toString(); + registerContentType(type, classname); + } + initialized = true; + } + + /** + * Register the given content type to use the given class name as its kit + * When this is called, an entry is added into the private HashMap of the + * registered editors kits. This is needed so that the SyntaxPane library + * has it's own registration of all the EditorKits + * @param type + * @param classname + */ + public static void registerContentType(String type, String classname) { + try { + // ensure the class is available and that it does supply a no args + // constructor. This saves debugging later if the classname is incorrect + // or does not behave correctly: + Class c = Class.forName(classname); + // attempt to create the class, if we cannot with an empty argument + // then the class is invalid + Object kit = c.newInstance(); + if (!(kit instanceof EditorKit)) { + throw new IllegalArgumentException("Cannot register class: " + classname + + ". It does not extend EditorKit"); + } + JEditorPane.registerEditorKitForContentType(type, classname); + CONTENT_TYPES.add(type); + } catch (InstantiationException ex) { + throw new IllegalArgumentException("Cannot register class: " + classname + + ". Ensure it has Default Constructor.", ex); + } catch (IllegalAccessException ex) { + throw new IllegalArgumentException("Cannot register class: " + classname, ex); + } catch (ClassNotFoundException ex) { + throw new IllegalArgumentException("Cannot register class: " + classname, ex); + } catch (RuntimeException ex) { + throw new IllegalArgumentException("Cannot register class: " + classname, ex); + } + } + + /** + * Return all the content types supported by this library. This will be the + * content types in the file WEB-INF/services/resources/jsyntaxpane/kitsfortypes + * @return sorted array of all registered content types + */ + public static String[] getContentTypes() { + String[] types = CONTENT_TYPES.toArray(new String[0]); + Arrays.sort(types); + return types; + } + + /** + * Merges the given properties with the configurations for this Object + * + * @param config + */ + public void setConfig(Properties config) { + getConfig().putAll(config); + } + + /** + * Sets the given property to the given value. If the kit is not + * initialized, then calls initKit + * @param key + * @param value + */ + public void setProperty(String key, String value) { + getConfig().put(key, value); + } + + /** + * Return the property with the given key. If the kit is not + * initialized, then calls initKit + * Be careful when changing property as the default property may be used + * @param key + * @return value for given key + */ + public String getProperty(String key) { + return getConfig().getString(key); + } + + /** + * Get the configuration for this Object + * @return + */ + public Configuration getConfig() { + return getConfig(this.getClass()); + } + + /** + * Return the Configurations object for a Kit. Perfrom lazy creation of a + * Configuration object if nothing is created. + * + * @param kit + * @return + */ + public static synchronized Configuration getConfig(Class kit) { + if (CONFIGS == null) { + CONFIGS = new WeakHashMap, Configuration>(); + Configuration defaultConfig = new Configuration(DefaultSyntaxKit.class); + loadConfig(defaultConfig, DefaultSyntaxKit.class); + CONFIGS.put(DefaultSyntaxKit.class, defaultConfig); + } + + if (CONFIGS.containsKey(kit)) { + return CONFIGS.get(kit); + } else { + // recursive call until we read the Super duper DefaultSyntaxKit + Class superKit = kit.getSuperclass(); + @SuppressWarnings("unchecked") + Configuration defaults = getConfig(superKit); + Configuration mine = new Configuration(kit, defaults); + loadConfig(mine, kit); + CONFIGS.put(kit, mine); + return mine; + } + } + + public Map getAbbreviations() { + // if we have not loaded the abbreviations, then load them now: + if (abbrvs == null) { + String cl = this.getClass().getName().replace('.', '/').toLowerCase(); + abbrvs = JarServiceProvider.readStringsMap(cl + "/abbreviations.properties"); + } + return abbrvs; + } + + /** + * Adds an abbrevisation to this kit's abbreviations. + * @param abbr + * @param template + */ + public static void addAbbreviation(String abbr, String template) { + if (abbrvs == null) { + abbrvs = new HashMap(); + } + abbrvs.put(abbr, template); + } + + /** + * Get the template for the given abbreviation + * @param abbr + * @return + */ + public static String getAbbreviation(String abbr) { + return abbrvs == null ? null : abbrvs.get(abbr); + } + + private static void loadConfig(Configuration conf, Class kit) { + String url = kit.getName().replace(".", "/") + "/config"; + Properties p = JarServiceProvider.readProperties(url); + if (p.size() == 0) { + LOG.info("unable to load configuration for: " + kit + " from: " + url + ".properties"); + } else { + conf.putAll(p); + } + } + + @Override + public String getContentType() { + return "text/" + this.getClass().getSimpleName().replace("SyntaxKit", "").toLowerCase(); + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/JavaRegexKit.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/JavaRegexKit.java new file mode 100644 index 000000000..b6a5c6222 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/JavaRegexKit.java @@ -0,0 +1,28 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane; + +import java.io.IOException; +import jsyntaxpane.lexers.SimpleRegexLexer; + +/** + * + * @author Ayman Al-Sairafi + */ +public class JavaRegexKit extends DefaultSyntaxKit { + + public JavaRegexKit() throws IOException { + super(new SimpleRegexLexer("javaRegex.properties")); + } +} \ No newline at end of file diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/Lexer.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/Lexer.java new file mode 100644 index 000000000..8ba399d1a --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/Lexer.java @@ -0,0 +1,37 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane; + +import java.util.List; +import javax.swing.text.Segment; + +/** + * Lexers must implement these methods. These are used in the Tokenizer + * + * A Lexer should be tied to one document. + * + * @author Ayman Al-Sairafi + */ +public interface Lexer { + /** + * This is the only method a Lexer needs to implement. It will be passed + * a Reader, and it should return non-overlapping Tokens for each recognized token + * in the stream. + * @param segment Text to parse. + * @param ofst offset to add to start of each token (useful for nesting) + * @param tokens List of Tokens to be added. This is done so that the caller creates the + * appropriate List implementation and size. The parse method just adds to the list + */ + public void parse(Segment segment, int ofst, List tokens); +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/SyntaxDocument.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/SyntaxDocument.java new file mode 100644 index 000000000..3147e1363 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/SyntaxDocument.java @@ -0,0 +1,595 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import java.util.ListIterator; +import java.util.logging.Level; +import java.util.logging.Logger; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import javax.swing.event.DocumentEvent; +import javax.swing.text.AttributeSet; +import javax.swing.text.BadLocationException; +import javax.swing.text.Element; +import javax.swing.text.PlainDocument; +import javax.swing.text.Segment; + +/** + * A document that supports being highlighted. The document maintains an + * internal List of all the Tokens. The Tokens are updated using + * a Lexer, passed to it during construction. + * + * @author Ayman Al-Sairafi + */ +public class SyntaxDocument extends PlainDocument { + + Lexer lexer; + List tokens; + CompoundUndoMan undo; + + public SyntaxDocument(Lexer lexer) { + super(); + putProperty(PlainDocument.tabSizeAttribute, 4); + this.lexer = lexer; + // Listen for undo and redo events + undo = new CompoundUndoMan(this); + } + + /** + * Parse the entire document and return list of tokens that do not already + * exist in the tokens list. There may be overlaps, and replacements, + * which we will cleanup later. + * @return list of tokens that do not exist in the tokens field + */ + private void parse() { + // if we have no lexer, then we must have no tokens... + if (lexer == null) { + tokens = null; + return; + } + List toks = new ArrayList(getLength() / 10); + long ts = System.nanoTime(); + int len = getLength(); + try { + Segment seg = new Segment(); + getText(0, getLength(), seg); + lexer.parse(seg, 0, toks); + } catch (BadLocationException ex) { + log.log(Level.SEVERE, null, ex); + } finally { + if (log.isLoggable(Level.FINEST)) { + log.finest(String.format("Parsed %d in %d ms, giving %d tokens\n", + len, (System.nanoTime() - ts) / 1000000, toks.size())); + } + tokens = toks; + } + } + + @Override + protected void fireChangedUpdate(DocumentEvent e) { + parse(); + super.fireChangedUpdate(e); + } + + @Override + protected void fireInsertUpdate(DocumentEvent e) { + parse(); + super.fireInsertUpdate(e); + } + + @Override + protected void fireRemoveUpdate(DocumentEvent e) { + parse(); + super.fireRemoveUpdate(e); + } + + /** + * Replace the token with the replacement string + * @param token + * @param replacement + */ + public void replaceToken(Token token, String replacement) { + try { + replace(token.start, token.length, replacement, null); + } catch (BadLocationException ex) { + log.log(Level.WARNING, "unable to replace token: " + token, ex); + } + } + + /** + * This class is used to iterate over tokens between two positions + * + */ + class TokenIterator implements ListIterator { + + int start; + int end; + int ndx = 0; + + @SuppressWarnings("unchecked") + private TokenIterator(int start, int end) { + this.start = start; + this.end = end; + if (tokens != null && !tokens.isEmpty()) { + Token token = new Token(TokenType.COMMENT, start, end - start); + ndx = Collections.binarySearch((List) tokens, token); + // we will probably not find the exact token... + if (ndx < 0) { + // so, start from one before the token where we should be... + // -1 to get the location, and another -1 to go back.. + ndx = (-ndx - 1 - 1 < 0) ? 0 : (-ndx - 1 - 1); + Token t = tokens.get(ndx); + // if the prev token does not overlap, then advance one + if (t.end() <= start) { + ndx++; + } + + } + } + } + + @Override + public boolean hasNext() { + if (tokens == null) { + return false; + } + if (ndx >= tokens.size()) { + return false; + } + Token t = tokens.get(ndx); + if (t.start >= end) { + return false; + } + return true; + } + + @Override + public Token next() { + return tokens.get(ndx++); + } + + @Override + public void remove() { + throw new UnsupportedOperationException(); + } + + @Override + public boolean hasPrevious() { + if (tokens == null) { + return false; + } + if (ndx <= 0) { + return false; + } + Token t = tokens.get(ndx); + if (t.end() <= start) { + return false; + } + return true; + } + + @Override + public Token previous() { + return tokens.get(ndx--); + } + + @Override + public int nextIndex() { + return ndx + 1; + } + + @Override + public int previousIndex() { + return ndx - 1; + } + + @Override + public void set(Token e) { + throw new UnsupportedOperationException(); + } + + @Override + public void add(Token e) { + throw new UnsupportedOperationException(); + } + } + + /** + * Return an iterator of tokens between p0 and p1. + * @param start start position for getting tokens + * @param end position for last token + * @return Iterator for tokens that overal with range from start to end + */ + public Iterator getTokens(int start, int end) { + return new TokenIterator(start, end); + } + + /** + * Find the token at a given position. May return null if no token is + * found (whitespace skipped) or if the position is out of range: + * @param pos + * @return + */ + public Token getTokenAt(int pos) { + if (tokens == null || tokens.isEmpty() || pos > getLength()) { + return null; + } + Token tok = null; + Token tKey = new Token(TokenType.DEFAULT, pos, 1); + @SuppressWarnings("unchecked") + int ndx = Collections.binarySearch((List) tokens, tKey); + if (ndx < 0) { + // so, start from one before the token where we should be... + // -1 to get the location, and another -1 to go back.. + ndx = (-ndx - 1 - 1 < 0) ? 0 : (-ndx - 1 - 1); + Token t = tokens.get(ndx); + if ((t.start <= pos) && (pos <= t.end())) { + tok = t; + } + } else { + tok = tokens.get(ndx); + } + return tok; + } + + public Token getWordAt(int offs, Pattern p) { + Token word = null; + try { + Element line = getParagraphElement(offs); + if (line == null) { + return word; + } + int lineStart = line.getStartOffset(); + int lineEnd = Math.min(line.getEndOffset(), getLength()); + Segment seg = new Segment(); + getText(lineStart, lineEnd - lineStart, seg); + if (seg.count > 0) { + // we need to get the word using the words pattern p + Matcher m = p.matcher(seg); + int o = offs - lineStart; + while (m.find()) { + if (m.start() <= o && o <= m.end()) { + word = new Token(TokenType.DEFAULT, m.start() + lineStart, m.end() - m.start()); + break; + } + } + } + } catch (BadLocationException ex) { + Logger.getLogger(SyntaxDocument.class.getName()).log(Level.SEVERE, null, ex); + } finally { + return word; + } + } + + /** + * Return the token following the current token, or null + * This is an expensive operation, so do not use it to update the gui + * @param tok + * @return + */ + public Token getNextToken(Token tok) { + int n = tokens.indexOf(tok); + if ((n >= 0) && (n < (tokens.size() - 1))) { + return tokens.get(n + 1); + } else { + return null; + } + } + + /** + * Return the token prior to the given token, or null + * This is an expensive operation, so do not use it to update the gui + * @param tok + * @return + */ + public Token getPrevToken(Token tok) { + int n = tokens.indexOf(tok); + if ((n > 0) && (!tokens.isEmpty())) { + return tokens.get(n - 1); + } else { + return null; + } + } + + /** + * This is used to return the other part of a paired token in the document. + * A paired part has token.pairValue <> 0, and the paired token will + * have the negative of t.pairValue. + * This method properly handles nestings of same pairValues, but overlaps + * are not checked. + * if The document does not contain a paired token, then null is returned. + * @param t + * @return the other pair's token, or null if nothing is found. + */ + public Token getPairFor(Token t) { + if (t == null || t.pairValue == 0) { + return null; + } + Token p = null; + int ndx = tokens.indexOf(t); + // w will be similar to a stack. The openners weght is added to it + // and the closers are subtracted from it (closers are already negative) + int w = t.pairValue; + int direction = (t.pairValue > 0) ? 1 : -1; + boolean done = false; + int v = Math.abs(t.pairValue); + while (!done) { + ndx += direction; + if (ndx < 0 || ndx >= tokens.size()) { + break; + } + Token current = tokens.get(ndx); + if (Math.abs(current.pairValue) == v) { + w += current.pairValue; + if (w == 0) { + p = current; + done = true; + } + } + } + + return p; + } + + /** + * Perform an undo action, if possible + */ + public void doUndo() { + if (undo.canUndo()) { + undo.undo(); + parse(); + } + } + + /** + * Perform a redo action, if possible. + */ + public void doRedo() { + if (undo.canRedo()) { + undo.redo(); + parse(); + } + } + + /** + * Return a matcher that matches the given pattern on the entire document + * @param pattern + * @return matcher object + */ + public Matcher getMatcher(Pattern pattern) { + return getMatcher(pattern, 0, getLength()); + } + + /** + * Return a matcher that matches the given pattern in the part of the + * document starting at offset start. Note that the matcher will have + * offset starting from start + * + * @param pattern + * @param start + * @return matcher that MUST be offset by start to get the proper + * location within the document + */ + public Matcher getMatcher(Pattern pattern, int start) { + return getMatcher(pattern, start, getLength() - start); + } + + /** + * Return a matcher that matches the given pattern in the part of the + * document starting at offset start and ending at start + length. + * Note that the matcher will have + * offset starting from start + * + * @param pattern + * @param start + * @param length + * @return matcher that MUST be offset by start to get the proper + * location within the document + */ + public Matcher getMatcher(Pattern pattern, int start, int length) { + Matcher matcher = null; + if (getLength() == 0) { + return null; + } + if (start >= getLength()) { + return null; + } + try { + if (start < 0) { + start = 0; + } + if (start + length > getLength()) { + length = getLength() - start; + } + Segment seg = new Segment(); + getText(start, length, seg); + matcher = pattern.matcher(seg); + } catch (BadLocationException ex) { + log.log(Level.SEVERE, "Requested offset: " + ex.offsetRequested(), ex); + } + return matcher; + } + + /** + * This will discard all undoable edits + */ + public void clearUndos() { + undo.discardAllEdits(); + } + + /** + * Gets the line at given position. The line returned will NOT include + * the line terminator '\n' + * @param pos Position (usually from text.getCaretPosition() + * @return the STring of text at given position + * @throws BadLocationException + */ + public String getLineAt(int pos) throws BadLocationException { + Element e = getParagraphElement(pos); + Segment seg = new Segment(); + getText(e.getStartOffset(), e.getEndOffset() - e.getStartOffset(), seg); + char last = seg.last(); + if (last == '\n' || last == '\r') { + seg.count--; + } + return seg.toString(); + } + + /** + * Deletes the line at given position + * @param pos + * @throws javax.swing.text.BadLocationException + */ + public void removeLineAt(int pos) + throws BadLocationException { + Element e = getParagraphElement(pos); + remove(e.getStartOffset(), getElementLength(e)); + } + + /** + * Replace the line at given position with the given string, which can span + * multiple lines + * @param pos + * @param newLines + * @throws javax.swing.text.BadLocationException + */ + public void replaceLineAt(int pos, String newLines) + throws BadLocationException { + Element e = getParagraphElement(pos); + replace(e.getStartOffset(), getElementLength(e), newLines, null); + } + + /** + * Helper method to get the length of an element and avoid getting + * a too long element at the end of the document + * @param e + * @return + */ + private int getElementLength(Element e) { + int end = e.getEndOffset(); + if (end >= (getLength() - 1)) { + end--; + } + return end - e.getStartOffset(); + } + + /** + * Gets the text without the comments. For example for the string + * { // it's a comment this method will return "{ ". + * @param aStart start of the text. + * @param anEnd end of the text. + * @return String for the line without comments (if exists). + */ + public synchronized String getUncommentedText(int aStart, int anEnd) { + readLock(); + StringBuilder result = new StringBuilder(); + Iterator iter = getTokens(aStart, anEnd); + while (iter.hasNext()) { + Token t = iter.next(); + if (!TokenType.isComment(t)) { + result.append(t.getText(this)); + } + } + readUnlock(); + return result.toString(); + } + + /** + * Returns the starting position of the line at pos + * @param pos + * @return starting position of the line + */ + public int getLineStartOffset(int pos) { + return getParagraphElement(pos).getStartOffset(); + } + + /** + * Returns the end position of the line at pos. + * Does a bounds check to ensure the returned value does not exceed + * document length + * @param pos + * @return + */ + public int getLineEndOffset(int pos) { + int end = 0; + end = getParagraphElement(pos).getEndOffset(); + if (end >= getLength()) { + end = getLength(); + } + return end; + } + + /** + * Return the number of lines in this document + * @return + */ + public int getLineCount() { + Element e = getDefaultRootElement(); + int cnt = e.getElementCount(); + return cnt; + } + + /** + * Return the line number at given position. The line numbers are zero based + * @param pos + * @return + */ + public int getLineNumberAt(int pos) { + int lineNr = getDefaultRootElement().getElementIndex(pos); + return lineNr; + } + + @Override + public String toString() { + return "SyntaxDocument(" + lexer + ", " + ((tokens == null) ? 0 : tokens.size()) + " tokens)@" + + hashCode(); + } + + /** + * We override this here so that the replace is treated as one operation + * by the undomanager + * @param offset + * @param length + * @param text + * @param attrs + * @throws BadLocationException + */ + @Override + public void replace(int offset, int length, String text, AttributeSet attrs) throws BadLocationException { + remove(offset, length); + undo.startCombine(); + insertString(offset, text, attrs); + } + + /** + * Append the given string to the text of this document. + * @param str + * @return this document + */ + public SyntaxDocument append(String str) { + try { + insertString(getLength(), str, null); + } catch (BadLocationException ex) { + log.log(Level.WARNING, "Error appending str", ex); + } + return this; + } + +// our logger instance... + private static final Logger log = Logger.getLogger(SyntaxDocument.class.getName()); +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/SyntaxStyle.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/SyntaxStyle.java new file mode 100644 index 000000000..fd39c87c1 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/SyntaxStyle.java @@ -0,0 +1,137 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane; + +import java.awt.Color; +import java.awt.Font; +import java.awt.FontMetrics; +import java.awt.Graphics; +import javax.swing.text.Segment; +import javax.swing.text.TabExpander; +import javax.swing.text.Utilities; + +/** + * This class represents the Style for a TokenType. This class is responsible + * for actually drawing a Token on the View. + * + * @author Ayman Al-Sairafi + */ +public final class SyntaxStyle { + + private Color color; + private int fontStyle; + + public SyntaxStyle() { + super(); + } + + public SyntaxStyle(Color color, boolean bold, boolean italic) { + super(); + this.color = color; + setBold(bold); + setItalic(italic); + } + + public SyntaxStyle(Color color, int fontStyle) { + super(); + this.color = color; + this.fontStyle = fontStyle; + } + + public SyntaxStyle(String str) { + String[] parts = str.split("\\s*,\\s*"); + if (parts.length != 2) { + throw new IllegalArgumentException("style not correct format: " + str); + } + this.color = new Color(Integer.decode(parts[0])); + this.fontStyle = Integer.decode(parts[1]); + } + + public boolean isBold() { + return (fontStyle & Font.BOLD) != 0; + } + + public void setBold(Boolean bold) { + if (bold) { + fontStyle |= Font.BOLD; + } else { + int mask = -1 ^ Font.BOLD; + fontStyle = (fontStyle & (mask)); + } + } + + public String getColorString() { + return String.format("0x%06x", color.getRGB() & 0x00ffffff); + } + + public void setColorString(String color) { + this.color = Color.decode(color); + } + + public Boolean isItalic() { + return (fontStyle & Font.ITALIC) != 0; + } + + public void setItalic(Boolean italic) { + if (italic) { + fontStyle |= Font.ITALIC; + } else { + fontStyle = (fontStyle & (-1 ^ Font.ITALIC)); + } + } + + public int getFontStyle() { + return fontStyle; + } + + public Color getColor() { + return color; + } + + /** + * Draw text. This can directly call the Utilities.drawTabbedText. + * Sub-classes can override this method to provide any other decorations. + * @param segment - the source of the text + * @param x - the X origin >= 0 + * @param y - the Y origin >= 0 + * @param graphics - the graphics context + * @param e - how to expand the tabs. If this value is null, tabs will be + * expanded as a space character. + * @param startOffset - starting offset of the text in the document >= 0 + * @return + */ + public int drawText(Segment segment, int x, int y, + Graphics graphics, TabExpander e, int startOffset) { + graphics.setFont(graphics.getFont().deriveFont(getFontStyle())); + FontMetrics fontMetrics = graphics.getFontMetrics(); + int a = fontMetrics.getAscent(); + int h = a + fontMetrics.getDescent(); + int w = Utilities.getTabbedTextWidth(segment, fontMetrics, 0, e, startOffset); + int rX = x - 1; + int rY = y - a; + int rW = w + 2; + int rH = h; + if ((getFontStyle() & 0x10) != 0) { + graphics.setColor(Color.decode("#EEEEEE")); + graphics.fillRect(rX, rY, rW, rH); + } + graphics.setColor(getColor()); + x = Utilities.drawTabbedText(segment, x, y, graphics, e, startOffset); + if ((getFontStyle() & 0x8) != 0) { + graphics.setColor(Color.RED); + graphics.drawRect(rX, rY, rW, rH); + } + return x; + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/SyntaxStyles.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/SyntaxStyles.java new file mode 100644 index 000000000..7ff3783c5 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/SyntaxStyles.java @@ -0,0 +1,143 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics; +import java.util.HashMap; +import java.util.Map; +import java.util.Properties; +import java.util.logging.Logger; +import java.util.regex.Pattern; +import javax.swing.text.Segment; +import javax.swing.text.TabExpander; +import jsyntaxpane.util.Configuration; +import jsyntaxpane.util.JarServiceProvider; + +/** + * The Styles to use for each TokenType. The defaults are created here, and + * then the resource META-INF/services/syntaxstyles.properties is read and + * merged. You can also pass a properties instance and merge your prefered + * styles into the default styles. + * + * Text is drawn by forwarding the drawText request to the SyntaxStyle for the + * that matches the given TokenType + * + * @author Ayman Al-Sairafi + */ +public class SyntaxStyles { + + public static final Pattern STYLE_PATTERN = Pattern.compile("Style\\.(\\w+)"); + + /** + * You can call the mergeStyles method with a Properties file to customize + * the existing styles. Any existing styles will be overwritten by the + * styles you provide. + * @param styles + */ + public void mergeStyles(Properties styles) { + for (Map.Entry e : styles.entrySet()) { + String tokenType = e.getKey().toString(); + String style = e.getValue().toString(); + try { + TokenType tt = TokenType.valueOf(tokenType); + SyntaxStyle tokenStyle = new SyntaxStyle(style); + put(tt, tokenStyle); + } catch (IllegalArgumentException ex) { + LOG.warning("illegal token type or style for: " + tokenType); + } + } + } + Map styles; + private static SyntaxStyles instance = createInstance(); + private static final Logger LOG = Logger.getLogger(SyntaxStyles.class.getName()); + private static SyntaxStyle DEFAULT_STYLE = new SyntaxStyle(Color.BLACK, Font.PLAIN); + + private SyntaxStyles() { + } + + /** + * Create default styles + * @return + */ + private static SyntaxStyles createInstance() { + SyntaxStyles syntaxstyles = new SyntaxStyles(); + Properties styles = JarServiceProvider.readProperties(SyntaxStyles.class); + syntaxstyles.mergeStyles(styles); + return syntaxstyles; + } + + /** + * Returns the Default Singleton + * @return + */ + public static SyntaxStyles getInstance() { + return instance; + } + + public static SyntaxStyles read(Configuration config) { + SyntaxStyles ss = createInstance(); + // Configuration styleConf = config.subConfig(STYLE_PROPERTY_KEY); + + for (Configuration.StringKeyMatcher m : config.getKeys(STYLE_PATTERN)) { + String type = m.group1; + try { + ss.put(TokenType.valueOf(type), new SyntaxStyle(m.value)); + } catch (IllegalArgumentException e) { + Logger.getLogger(SyntaxStyles.class.getName()).warning( + String.format("Invalid Token Type [%s] for Style of ", type)); + } + } + return ss; + } + + public void put(TokenType type, SyntaxStyle style) { + if (styles == null) { + styles = new HashMap(); + } + styles.put(type, style); + } + + /** + * Return the style for the given TokenType + * @param type + * @return + */ + public SyntaxStyle getStyle(TokenType type) { + if (styles != null && styles.containsKey(type)) { + return styles.get(type); + } else { + return DEFAULT_STYLE; + } + } + + /** + * Draw the given Token. This will simply find the proper SyntaxStyle for + * the TokenType and then asks the proper Style to draw the text of the + * Token. + * @param segment + * @param x + * @param y + * @param graphics + * @param e + * @param token + * @return + */ + public int drawText(Segment segment, int x, int y, + Graphics graphics, TabExpander e, Token token) { + SyntaxStyle s = getStyle(token.type); + return s.drawText(segment, x, y, graphics, e, token.start); + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/SyntaxTester.form b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/SyntaxTester.form new file mode 100644 index 000000000..c15a029b7 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/SyntaxTester.form @@ -0,0 +1,119 @@ + + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/SyntaxTester.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/SyntaxTester.java new file mode 100644 index 000000000..6bafe8224 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/SyntaxTester.java @@ -0,0 +1,199 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane; + +import jsyntaxpane.actions.ActionUtils; +import jsyntaxpane.actions.CaretMonitor; + +import javax.swing.*; +import javax.swing.text.EditorKit; +import java.awt.event.ItemEvent; +import java.io.IOException; +import java.io.StringReader; +import java.util.logging.Level; +import java.util.logging.Logger; + +public class SyntaxTester extends javax.swing.JFrame { + + /** + * Creates new form Tester + */ + public SyntaxTester() { + // this is a test for adding regex lexer. It wont work unless the + // JavaRegex.properties is found in the classpath + //DefaultSyntaxKit.registerContentType("text/flasm", "jsyntaxpane.syntaxkits.Flasm3SyntaxKit"); + initComponents(); + jCmbLangs.setModel(new DefaultComboBoxModel(DefaultSyntaxKit.getContentTypes())); + // jEdtTest.setContentType(jCmbLangs.getItemAt(0).toString()); + jCmbLangs.setSelectedItem("text/java"); + new CaretMonitor(jEdtTest, lblCaretPos); + } + + /** + * 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. + */ + // //GEN-BEGIN:initComponents + private void initComponents() { + + lblCaretPos = new javax.swing.JLabel(); + jScrollPane1 = new javax.swing.JScrollPane(); + jEdtTest = new javax.swing.JEditorPane(); + lblToken = new javax.swing.JLabel(); + jCmbLangs = new javax.swing.JComboBox(); + jToolBar1 = new javax.swing.JToolBar(); + + setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); + setTitle("JSyntaxPane Tester"); + + lblCaretPos.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); + lblCaretPos.setText("Caret Position"); + + jEdtTest.setContentType(""); + jEdtTest.setFont(new java.awt.Font("Monospaced", 0, 13)); // NOI18N + jEdtTest.setCaretColor(new java.awt.Color(153, 204, 255)); + jEdtTest.addCaretListener(new javax.swing.event.CaretListener() { + public void caretUpdate(javax.swing.event.CaretEvent evt) { + jEdtTestCaretUpdate(evt); + } + }); + jScrollPane1.setViewportView(jEdtTest); + + lblToken.setFont(new java.awt.Font("Courier New", 0, 12)); + lblToken.setText("Token under cursor"); + + jCmbLangs.setMaximumRowCount(20); + jCmbLangs.setFocusable(false); + jCmbLangs.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + jCmbLangsItemStateChanged(evt); + } + }); + + jToolBar1.setRollover(true); + jToolBar1.setFocusable(false); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addContainerGap() + .addComponent(jCmbLangs, javax.swing.GroupLayout.PREFERRED_SIZE, 135, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 441, Short.MAX_VALUE) + .addComponent(lblCaretPos, javax.swing.GroupLayout.PREFERRED_SIZE, 119, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap()) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addComponent(lblToken, javax.swing.GroupLayout.DEFAULT_SIZE, 221, Short.MAX_VALUE) + .addGap(484, 484, 484)) + .addComponent(jToolBar1, javax.swing.GroupLayout.DEFAULT_SIZE, 715, Short.MAX_VALUE) + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 715, Short.MAX_VALUE) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addComponent(jToolBar1, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(0, 0, 0) + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 382, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(lblToken, javax.swing.GroupLayout.PREFERRED_SIZE, 19, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(lblCaretPos, javax.swing.GroupLayout.DEFAULT_SIZE, 21, Short.MAX_VALUE) + .addComponent(jCmbLangs, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addContainerGap()) + ); + + pack(); + }// //GEN-END:initComponents + + private void jEdtTestCaretUpdate(javax.swing.event.CaretEvent evt) {//GEN-FIRST:event_jEdtTestCaretUpdate + SyntaxDocument sDoc = ActionUtils.getSyntaxDocument(jEdtTest); + if (sDoc != null) { + Token t = sDoc.getTokenAt(evt.getDot()); + if (t != null) { + CharSequence tData = t.getText(sDoc); + if (t.length > 40) { + tData = tData.subSequence(0, 40); + } + lblToken.setText(t.toString() + ": " + tData); + } else { + // null token, remove the status + lblToken.setText("NO Token at cursor"); + } + } + + }//GEN-LAST:event_jEdtTestCaretUpdate + + private void jCmbLangsItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_jCmbLangsItemStateChanged + if (evt.getStateChange() == ItemEvent.SELECTED) { + String lang = jCmbLangs.getSelectedItem().toString(); + + // save the state of the current JEditorPane, as it's Document is about + // to be replaced. + String oldText = jEdtTest.getText(); + + // install a new DefaultSyntaxKit on the JEditorPane for the requested language. + jEdtTest.setContentType(lang); + // Recreate the Toolbar + jToolBar1.removeAll(); + EditorKit kit = jEdtTest.getEditorKit(); + if (kit instanceof DefaultSyntaxKit) { + DefaultSyntaxKit defaultSyntaxKit = (DefaultSyntaxKit) kit; + defaultSyntaxKit.addToolBarActions(jEdtTest, jToolBar1); + } + jToolBar1.validate(); + try { + // setText should not be called (read the JavaDocs). Better use the read + // method and create a new document. + jEdtTest.read(new StringReader(oldText), lang); + } catch (IOException ex) { + Logger.getLogger(SyntaxTester.class.getName()).log(Level.SEVERE, null, ex); + } + } + jEdtTest.requestFocusInWindow(); + }//GEN-LAST:event_jCmbLangsItemStateChanged + + /** + * @param args the command line arguments + */ + public static void main(String args[]) { + + java.awt.EventQueue.invokeLater(new Runnable() { + + @Override + public void run() { + try { + DefaultSyntaxKit.initKit(); + new SyntaxTester().setVisible(true); + } catch (Exception e) { + e.printStackTrace(); + System.exit(2); + } + } + }); + } + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JComboBox jCmbLangs; + private javax.swing.JEditorPane jEdtTest; + private javax.swing.JScrollPane jScrollPane1; + private javax.swing.JToolBar jToolBar1; + private javax.swing.JLabel lblCaretPos; + private javax.swing.JLabel lblToken; + // End of variables declaration//GEN-END:variables +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/SyntaxView.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/SyntaxView.java new file mode 100644 index 000000000..dd1140591 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/SyntaxView.java @@ -0,0 +1,173 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.RenderingHints; +import java.awt.Shape; +import java.awt.Toolkit; +import java.util.Iterator; +import java.util.Map; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.swing.text.BadLocationException; +import javax.swing.text.Element; +import javax.swing.text.PlainView; +import javax.swing.text.Segment; +import javax.swing.text.ViewFactory; +import jsyntaxpane.util.Configuration; + +public class SyntaxView extends PlainView { + + public static final String PROPERTY_RIGHT_MARGIN_COLOR = "RightMarginColor"; + public static final String PROPERTY_RIGHT_MARGIN_COLUMN = "RightMarginColumn"; + public static final String PROPERTY_SINGLE_COLOR_SELECT = "SingleColorSelect"; + private static final Logger log = Logger.getLogger(SyntaxView.class.getName()); + private SyntaxStyle DEFAULT_STYLE = SyntaxStyles.getInstance().getStyle(TokenType.DEFAULT); + private final boolean singleColorSelect; + private final int rightMarginColumn; + private final Color rightMarginColor; + private final SyntaxStyles styles; + + /** + * Construct a new view using the given configuration and prefix given + * + * @param element + * @param config + */ + public SyntaxView(Element element, Configuration config) { + super(element); + singleColorSelect = config.getBoolean(PROPERTY_SINGLE_COLOR_SELECT, false); + rightMarginColor = new Color(config.getInteger(PROPERTY_RIGHT_MARGIN_COLOR, + 0xFF7777)); + rightMarginColumn = config.getInteger(PROPERTY_RIGHT_MARGIN_COLUMN, + 0); + styles = SyntaxStyles.read(config); + } + + @Override + protected int drawUnselectedText(Graphics graphics, int x, int y, int p0, + int p1) { + setRenderingHits((Graphics2D) graphics); + Font saveFont = graphics.getFont(); + Color saveColor = graphics.getColor(); + SyntaxDocument doc = (SyntaxDocument) getDocument(); + Segment segment = getLineBuffer(); + // Draw the right margin first, if needed. This way the text overalys + // the margin + if (rightMarginColumn > 0) { + int m_x = rightMarginColumn * graphics.getFontMetrics().charWidth('m'); + int h = graphics.getFontMetrics().getHeight(); + graphics.setColor(rightMarginColor); + graphics.drawLine(m_x, y, m_x, y - h); + } + try { + // Colour the parts + Iterator i = doc.getTokens(p0, p1); + int start = p0; + while (i.hasNext()) { + Token t = i.next(); + // if there is a gap between the next token start and where we + // should be starting (spaces not returned in tokens), then draw + // it in the default type + if (start < t.start) { + doc.getText(start, t.start - start, segment); + x = DEFAULT_STYLE.drawText(segment, x, y, graphics, this, start); + } + // t and s are the actual start and length of what we should + // put on the screen. assume these are the whole token.... + int l = t.length; + int s = t.start; + // ... unless the token starts before p0: + if (s < p0) { + // token is before what is requested. adgust the length and s + l -= (p0 - s); + s = p0; + } + // if token end (s + l is still the token end pos) is greater + // than p1, then just put up to p1 + if (s + l > p1) { + l = p1 - s; + } + doc.getText(s, l, segment); + x = styles.drawText(segment, x, y, graphics, this, t); + start = t.end(); + } + // now for any remaining text not tokenized: + if (start < p1) { + doc.getText(start, p1 - start, segment); + x = DEFAULT_STYLE.drawText(segment, x, y, graphics, this, start); + } + } catch (BadLocationException ex) { + log.log(Level.SEVERE, "Requested: " + ex.offsetRequested(), ex); + } finally { + graphics.setFont(saveFont); + graphics.setColor(saveColor); + } + return x; + } + + @Override + protected int drawSelectedText(Graphics graphics, int x, int y, int p0, int p1) + throws BadLocationException { + if (singleColorSelect) { + if (rightMarginColumn > 0) { + int m_x = rightMarginColumn * graphics.getFontMetrics().charWidth('m'); + int h = graphics.getFontMetrics().getHeight(); + graphics.setColor(rightMarginColor); + graphics.drawLine(m_x, y, m_x, y - h); + } + return super.drawUnselectedText(graphics, x, y, p0, p1); + } else { + return drawUnselectedText(graphics, x, y, p0, p1); + } + } + + /** + * Sets the Rendering Hints o nthe Graphics. This is used so that + * any painters can set the Rendering Hits to match the view. + * @param g2d + */ + public static void setRenderingHits(Graphics2D g2d) { + g2d.addRenderingHints(sysHints); + } + + @Override + protected void updateDamage(javax.swing.event.DocumentEvent changes, + Shape a, + ViewFactory f) { + super.updateDamage(changes, a, f); + java.awt.Component host = getContainer(); + host.repaint(); + } + /** + * The values for the string key for Text Anti-Aliasing + */ + private static RenderingHints sysHints; + + static { + sysHints = null; + try { + Toolkit toolkit = Toolkit.getDefaultToolkit(); + @SuppressWarnings("unchecked") + Map map = (Map) + toolkit.getDesktopProperty("awt.font.desktophints"); + sysHints = new RenderingHints(map); + } catch (Throwable t) { + } + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/Token.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/Token.java new file mode 100644 index 000000000..0689d697a --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/Token.java @@ -0,0 +1,155 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane; + +import java.io.Serializable; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.swing.text.BadLocationException; +import javax.swing.text.Document; +import javax.swing.text.Segment; + +/** + * A Token in a Document. Tokens do NOT store a reference to the + * underlying SyntaxDocument, and must generally be obtained from + * the SyntaxDocument methods. The reason for not storing the + * SyntaxDocument is simply for memory, as the number of Tokens + * per document can be large, you may end up with twice the memory + * in a SyntaxDocument with Tokens than a simple PlainDocument. + * + * @author Ayman Al-Sairafi + */ +public class Token implements Serializable, Comparable { + + public final TokenType type; + public final int start; + public final int length; + /** + * the pair value to use if this token is one of a pair: + * This is how it is used: + * The openning part will have a positive number X + * The closing part will have a negative number X + * X should be unique for a pair: + * e.g. for [ pairValue = +1 + * for ] pairValue = -1 + */ + public final byte pairValue; + /** + * The kind of the Document. This is only needed if proper Parsing + * of a document is needed and it makes certain operations faster. + * You can use any of the supplied Generic Values, or create your + * language specific uses by using USER_FIRST + x; + */ + public final short kind = 0; + + /** + * Constructs a new token + * @param type + * @param start + * @param length + */ + public Token(TokenType type, int start, int length) { + this.type = type; + this.start = start; + this.length = length; + this.pairValue = 0; + } + + /** + * Construct a new part of pair token + * @param type + * @param start + * @param length + * @param pairValue + */ + public Token(TokenType type, int start, int length, byte pairValue) { + this.type = type; + this.start = start; + this.length = length; + this.pairValue = pairValue; + } + + @Override + public boolean equals(Object obj) { + if (obj instanceof Object) { + Token token = (Token) obj; + return ((this.start == token.start) && + (this.length == token.length) && + (this.type.equals(token.type))); + } else { + return false; + } + } + + @Override + public int hashCode() { + return start; + } + + @Override + public String toString() { + if (pairValue == 0) { + return String.format("%s (%d, %d)", type, start, length); + } else { + return String.format("%s (%d, %d) (%d)", type, start, length, pairValue); + } + } + + @Override + public int compareTo(Object o) { + Token t = (Token) o; + if (this.start != t.start) { + return (this.start - t.start); + } else if (this.length != t.length) { + return (this.length - t.length); + } else { + return this.type.compareTo(t.type); + } + } + + /** + * return the end position of the token. + * @return start + length + */ + public int end() { + return start + length; + } + + /** + * Get the text of the token from this document + * @param doc + * @return + */ + public CharSequence getText(Document doc) { + Segment text = new Segment(); + try { + doc.getText(start, length, text); + } catch (BadLocationException ex) { + Logger.getLogger(Token.class.getName()).log(Level.SEVERE, null, ex); + } finally { + return text; + } + } + + public String getString(Document doc) { + String result = ""; + try { + result = doc.getText(start, length); + } catch (BadLocationException ex) { + Logger.getLogger(Token.class.getName()).log(Level.SEVERE, null, ex); + } finally { + return result; + } + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/TokenComparators.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/TokenComparators.java new file mode 100644 index 000000000..f53593680 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/TokenComparators.java @@ -0,0 +1,55 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane; + +import java.io.Serializable; +import java.util.Comparator; + +/** + * Two comparators to compare Tokens. + * @author Ayman Al-Sairafi + */ +public class TokenComparators { + + public static final Comparator LONGEST_FIRST = new LongestFirst(); + public static final Comparator SHORTEST_FIRST = new ShortestFirst(); + + private static class LongestFirst implements Comparator, Serializable { + + @Override + public int compare(Token t1, Token t2) { + if (t1.start != t2.start) { + return (t1.start - t2.start); + } else if (t1.length != t2.length) { + return (t2.length - t1.length); + } else { + return t1.type.compareTo(t2.type); + } + } + } + + private static class ShortestFirst implements Comparator, Serializable { + + @Override + public int compare(Token t1, Token t2) { + if (t1.start != t2.start) { + return (t1.start - t2.start); + } else if (t1.length != t2.length) { + return (t1.length - t2.length); + } else { + return t1.type.compareTo(t2.type); + } + } + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/TokenConstants.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/TokenConstants.java new file mode 100644 index 000000000..9eddc44a4 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/TokenConstants.java @@ -0,0 +1,124 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jsyntaxpane; + +/** + * Constants used by Tokens. + * @author Ayman Al-Sairafi + */ +public class TokenConstants { + /** + * Token Kinds + */ + // Operators and separators - Suitable for Java Type Languages + public static final short EQ = 1; // = + public static final short GT = 2; // > + public static final short LT = 3; // < + public static final short NOT = 4; // ! + public static final short COMP = 5; // ~ + public static final short QUESTION = 6; // ? + public static final short COLON = 7; // : + public static final short EQEQ = 8; // == + public static final short LTEQ = 9; // <= + public static final short GTEQ = 10; // >= + public static final short NOTEQ = 11; // != + public static final short ANDAND = 12; // && + public static final short OROR = 13; // || + public static final short PLUSPLUS = 14; // ++ + public static final short MINUSMINUS = 15; // -- + public static final short PLUS = 16; // + + public static final short MINUS = 17; // - + public static final short MULT = 18; // * + public static final short DIV = 19; // / + public static final short AND = 20; // & + public static final short OR = 21; // | + public static final short XOR = 22; // ^ + public static final short MOD = 23; // % + public static final short LSHIFT = 24; // << + public static final short RSHIFT = 25; // >> + public static final short URSHIFT = 26; // >>> + public static final short PLUSEQ = 27; // += + public static final short MINUSEQ = 28; // -= + public static final short MULTEQ = 29; // *= + public static final short DIVEQ = 30; // /= + public static final short ANDEQ = 31; // &= + public static final short OREQ = 32; // |= + public static final short XOREQ = 33; // ^= + public static final short MODEQ = 34; // %= + public static final short LSHIFTEQ = 35; // <<= + public static final short RSHIFTEQ = 36; // >>= + public static final short URSHIFTEQ = 37; // >>>= + public static final short LPAREN = 38; // ( + public static final short RPAREN = 39; // ) + public static final short LBRACE = 40; // { + public static final short RBRACE = 41; // } + public static final short LBRACK = 42; // [ + public static final short RBRACK = 43; // ] + public static final short SEMICOLON = 44; // ; + public static final short COMMA = 46; // , + public static final short DOT = 47; // . + + // Keywords for Java Type Languages + public static final short KW_START = 255; + public static final short KW_abstract = KW_START + 0; + public static final short KW_assert = KW_START + 1; + public static final short KW_boolean = KW_START + 2; + public static final short KW_break = KW_START + 3; + public static final short KW_byte = KW_START + 4; + public static final short KW_case = KW_START + 5; + public static final short KW_catch = KW_START + 6; + public static final short KW_char = KW_START + 7; + public static final short KW_class = KW_START + 8; + public static final short KW_const = KW_START + 9; + public static final short KW_continue = KW_START + 10; + public static final short KW_do = KW_START + 11; + public static final short KW_double = KW_START + 12; + public static final short KW_else = KW_START + 13; + public static final short KW_extends = KW_START + 14; + public static final short KW_final = KW_START + 15; + public static final short KW_finally = KW_START + 16; + public static final short KW_float = KW_START + 17; + public static final short KW_for = KW_START + 18; + public static final short KW_default = KW_START + 19; + public static final short KW_implements = KW_START + 20; + public static final short KW_import = KW_START + 21; + public static final short KW_instanceof = KW_START + 22; + public static final short KW_int = KW_START + 23; + public static final short KW_interface = KW_START + 24; + public static final short KW_long = KW_START + 25; + public static final short KW_native = KW_START + 26; + public static final short KW_new = KW_START + 27; + public static final short KW_goto = KW_START + 28; + public static final short KW_if = KW_START + 29; + public static final short KW_public = KW_START + 30; + public static final short KW_short = KW_START + 31; + public static final short KW_super = KW_START + 32; + public static final short KW_switch = KW_START + 33; + public static final short KW_synchronized = KW_START + 34; + public static final short KW_package = KW_START + 35; + public static final short KW_private = KW_START + 36; + public static final short KW_protected = KW_START + 37; + public static final short KW_transient = KW_START + 38; + public static final short KW_return = KW_START + 39; + public static final short KW_void = KW_START + 40; + public static final short KW_static = KW_START + 41; + public static final short KW_while = KW_START + 42; + public static final short KW_this = KW_START + 43; + public static final short KW_throw = KW_START + 44; + public static final short KW_throws = KW_START + 45; + public static final short KW_try = KW_START + 46; + public static final short KW_volatile = KW_START + 47; + public static final short KW_strictfp = KW_START + 48; +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/TokenType.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/TokenType.java new file mode 100644 index 000000000..ff497d73c --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/TokenType.java @@ -0,0 +1,81 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane; + +/** + * These are the various token types supported by JSyntaxPane. + * + * @author ayman + */ +public enum TokenType { + + OPERATOR, // Language operators + DELIMITER, // Delimiters. Constructs that are not necessarily operators for a language + KEYWORD, // language reserved keywords + KEYWORD2, // Other language reserved keywords, like C #defines + IDENTIFIER, // identifiers, variable names, class names + NUMBER, // numbers in various formats + STRING, // String + STRING2, // For highlighting meta chars within a String + COMMENT, // comments + COMMENT2, // special stuff within comments + REGEX, // regular expressions + REGEX2, // special chars within regular expressions + TYPE, // Types, usually not keywords, but supported by the language + TYPE2, // Types from standard libraries + TYPE3, // Types for users + DEFAULT, // any other text + WARNING, // Text that should be highlighted as a warning + ERROR; // Text that signals an error + + /** + * Tests if the given token is a Comment Token. + * @param t + * @return + */ + public static boolean isComment(Token t) { + if (t != null && (t.type == COMMENT || t.type == COMMENT2)) { + return true; + } else { + return false; + } + } + + /** + * Tests if the given token is a Keyword Token. + * @param t + * @return + */ + public static boolean isKeyword(Token t) { + if (t != null && (t.type == KEYWORD || t.type == KEYWORD2)) { + return true; + } else { + return false; + } + } + + + /** + * Tests if the given token is a String Token. + * @param t + * @return + */ + public static boolean isString(Token t) { + if (t != null && (t.type == STRING || t.type == STRING2)) { + return true; + } else { + return false; + } + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/ActionUtils.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/ActionUtils.java new file mode 100644 index 000000000..97188ceab --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/ActionUtils.java @@ -0,0 +1,623 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.actions; + +import java.awt.Component; +import java.awt.Frame; +import java.awt.Point; +import java.awt.Rectangle; +import java.awt.Window; +import java.awt.event.KeyEvent; +import java.util.logging.Level; +import java.util.logging.Logger; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import javax.swing.Action; +import javax.swing.JComboBox; +import javax.swing.JEditorPane; +import javax.swing.MutableComboBoxModel; +import javax.swing.SwingUtilities; +import javax.swing.text.BadLocationException; +import javax.swing.text.Document; +import javax.swing.text.EditorKit; +import javax.swing.text.Element; +import javax.swing.text.JTextComponent; +import javax.swing.text.PlainDocument; +import jsyntaxpane.DefaultSyntaxKit; +import jsyntaxpane.SyntaxDocument; +import jsyntaxpane.Token; + +/** + * Various utility methods to work on JEditorPane and its SyntaxDocument + * for use by Actions + * + * @author Ayman Al-Sairafi + */ +public class ActionUtils { + + private ActionUtils() { + } + + private static ActionUtils instance = null; + + /** + * Get the Singleton instance. Will be created lazily. + * @return + */ + public static synchronized ActionUtils getInstance() { + if(instance == null) { + instance = new ActionUtils(); + } + return instance; + } + + /** + * Get the indentation of a line of text. This is the subString from + * beginning of line to the first non-space char + * @param line the line of text + * @return indentation of line. + */ + public static String getIndent(String line) { + if (line == null || line.length() == 0) { + return ""; + } + int i = 0; + while (i < line.length() && line.charAt(i) == ' ') { + i++; + } + return line.substring(0, i); + } + + /** + * Return the lines that span the selection (split as an array of Strings) + * if there is no selection then current line is returned. + * + * Note that the strings returned will not contain the terminating line feeds + * If the document is empty, then an empty string array is returned. So + * you can always iterate over the returned array without a null check + * + * The text component will then have the full lines set as selection + * @param target + * @return String[] of lines spanning selection / or line containing dot + */ + public static String[] getSelectedLines(JTextComponent target) { + String[] lines = null; + try { + PlainDocument pDoc = (PlainDocument) target.getDocument(); + int start = pDoc.getParagraphElement(target.getSelectionStart()).getStartOffset(); + int end; + if (target.getSelectionStart() == target.getSelectionEnd()) { + end = pDoc.getParagraphElement(target.getSelectionEnd()).getEndOffset(); + } else { + // if more than one line is selected, we need to subtract one from the end + // so that we do not select the line with the caret and no selection in it + end = pDoc.getParagraphElement(target.getSelectionEnd() - 1).getEndOffset(); + } + target.select(start, end); + lines = pDoc.getText(start, end - start).split("\n"); + target.select(start, end); + } catch (BadLocationException ex) { + Logger.getLogger(ActionUtils.class.getName()).log(Level.SEVERE, null, ex); + lines = EMPTY_STRING_ARRAY; + } + return lines; + } + + /** + * Return the line of text at the TextComponent's current position + * @param target + * @return + */ + public static String getLine(JTextComponent target) { + return getLineAt(target, target.getCaretPosition()); + } + + /** + * Return the line of text at the given position. The returned value may + * be null. It will not contain the trailing new-line character. + * @param target the text component + * @param pos char position + * @return + */ + public static String getLineAt(JTextComponent target, int pos) { + String line = null; + Document doc = target.getDocument(); + if (doc instanceof PlainDocument) { + PlainDocument pDoc = (PlainDocument) doc; + int start = pDoc.getParagraphElement(pos).getStartOffset(); + int end = pDoc.getParagraphElement(pos).getEndOffset(); + try { + line = doc.getText(start, end - start); + if (line != null && line.endsWith("\n")) { + line = line.substring(0, line.length() - 1); + } + } catch (BadLocationException ex) { + Logger.getLogger(ActionUtils.class.getName()).log(Level.SEVERE, null, ex); + } + } + return line; + } + + /** + * Returns the Frame that contains this component or null if the component + * is not within a Window or the containing window is not a frame + * @param comp + * @return + */ + public static Frame getFrameFor(Component comp) { + Window w = SwingUtilities.getWindowAncestor(comp); + if (w != null && w instanceof Frame) { + Frame frame = (Frame) w; + return frame; + } + return null; + } + + /** + * Returns the the Token at pos as a String + * @param doc + * @param pos + * @return + */ + public static String getTokenStringAt( + SyntaxDocument doc, int pos) { + String word = ""; + Token t = doc.getTokenAt(pos); + if (t != null) { + try { + word = doc.getText(t.start, t.length); + } catch (BadLocationException ex) { + Logger.getLogger(ActionUtils.class.getName()).log(Level.SEVERE, null, ex); + } + } + return word; + } + + /** + * A helper function that will return the SyntaxDocument attached to the + * given text component. Return null if the document is not a + * SyntaxDocument, or if the text component is null + * @param component + * @return + */ + public static SyntaxDocument getSyntaxDocument(JTextComponent component) { + if (component == null) { + return null; + } + Document doc = component.getDocument(); + if (doc instanceof SyntaxDocument) { + return (SyntaxDocument) doc; + } else { + return null; + } + } + + /** + * Gets the Line Number at the give position of the editor component. + * The first line number is ZERO + * @param editor + * @param pos + * @return line number + * @throws javax.swing.text.BadLocationException + */ + public static int getLineNumber(JTextComponent editor, int pos) + throws BadLocationException { + if (getSyntaxDocument(editor) != null) { + SyntaxDocument sdoc = getSyntaxDocument(editor); + return sdoc.getLineNumberAt(pos); + } else { + Document doc = editor.getDocument(); + return doc.getDefaultRootElement().getElementIndex(pos); + } + } + + /** + * Gets the column number at given position of editor. The first column is + * ZERO + * @param editor + * @param pos + * @return the 0 based column number + * @throws javax.swing.text.BadLocationException + */ + public static int getColumnNumber(JTextComponent editor, int pos) + throws BadLocationException { + // speedup if the pos is 0 + if(pos == 0) { + return 0; + } + Rectangle r = editor.modelToView(pos); + int start = editor.viewToModel(new Point(0, r.y)); + int column = pos - start; + return column; + } + + /** + * Get the closest position within the document of the component that + * has given line and column. + * @param editor + * @param line the first being 1 + * @param column the first being 1 + * @return the closest positon for the text component at given line and + * column + */ + public static int getDocumentPosition(JTextComponent editor, int line, + int column) { + int lineHeight = editor.getFontMetrics(editor.getFont()).getHeight(); + int charWidth = editor.getFontMetrics(editor.getFont()).charWidth('m'); + int y = line * lineHeight; + int x = column * charWidth; + Point pt = new Point(x, y); + int pos = editor.viewToModel(pt); + return pos; + } + + public static int getLineCount(JTextComponent pane) { + SyntaxDocument sdoc = getSyntaxDocument(pane); + if (sdoc != null) { + return sdoc.getLineCount(); + } + int count = 0; + try { + int p = pane.getDocument().getLength() - 1; + if (p > 0) { + count = getLineNumber(pane, p); + } + } catch (BadLocationException ex) { + Logger.getLogger(ActionUtils.class.getName()).log(Level.SEVERE, null, ex); + } + return count; + } + + /** + * Insert the given item into the combo box, and set it as first selected + * item. If the item already exists, it is removed, so there are no + * duplicates. + * @param combo + * @param item the item to insert. if it's null, then nothing is inserted + */ + public static void insertIntoCombo(JComboBox combo, Object item) { + if(item == null) { + return; + } + MutableComboBoxModel model = (MutableComboBoxModel) combo.getModel(); + if (model.getSize() == 0) { + model.insertElementAt(item, 0); + return; + } + + Object o = model.getElementAt(0); + if (o.equals(item)) { + return; + } + model.removeElement(item); + model.insertElementAt(item, 0); + combo.setSelectedIndex(0); + } + + public static void insertMagicString(JTextComponent target, String result) { + try { + insertMagicString(target, target.getCaretPosition(), result); + } catch (BadLocationException ex) { + Logger.getLogger(ActionUtils.class.getName()).log(Level.SEVERE, null, ex); + } + } + + /** + * Repeat the string source repeat times. + * If repeats == 0 then empty String is returned + * if source is null, then empty string is returned + * @param source + * @param repeat + * @return source String repeated repeat times. + */ + public static String repeatString(String source, int repeat) { + if (repeat < 0) { + throw new IllegalArgumentException("Cannot repeat " + repeat + " times."); + } + if (repeat == 0 || source == null || source.length() == 0) { + return ""; + } + StringBuffer buffer = new StringBuffer(); + for (int i = 0; i < repeat; i++) { + buffer.append(source); + } + return buffer.toString(); + } + + /** + * Checks if the given string is null, empty or contains whitespace only + * @param string + * @return true if string is null, empty or contains whitespace only, false + * otherwise. + */ + public static boolean isEmptyOrBlanks(String string) { + if (string == null || string.length() == 0) { + return true; + } + for (int i = 0; i < string.length(); i++) { + char c = string.charAt(i); + if (!Character.isWhitespace(c)) { + return false; + } + } + return true; + } + + /** + * Return the TabStop property for the given text component, or 0 if not + * used + * @param text + * @return + */ + public static int getTabSize(JTextComponent text) { + Integer tabs = (Integer) text.getDocument().getProperty(PlainDocument.tabSizeAttribute); + return (null == tabs) ? 0 : tabs.intValue(); + } + + /** + * Insert the given String into the textcomponent. If the string contains + * the | vertical BAr char, then it will not be inserted, and the cursor will + * be set to its location. + * If there are TWO vertical bars, then the text between them will be selected + * If the toInsert String is multiLine, then indentation of all following lines + * will be the same as the first line. TAB characters will be replaced by + * the number of spaces in the document's TAB property. + * @param target + * @param dot + * @param toInsert + * @throws javax.swing.text.BadLocationException + */ + public static void insertMagicString(JTextComponent target, int dot, String toInsert) + throws BadLocationException { + Document doc = target.getDocument(); + String[] lines = toInsert.split("\n"); + if (lines.length > 1) { + // multi line strings will need to be indented + String tabToSpaces = getTab(target); + String currentLine = getLineAt(target, dot); + String currentIndent = getIndent(currentLine); + StringBuilder sb = new StringBuilder(toInsert.length()); + boolean firstLine = true; + for (String l : lines) { + if (!firstLine) { + sb.append(currentIndent); + } + firstLine = false; + // replace tabs with spaces. + sb.append(l.replace("\t", tabToSpaces)); + sb.append("\n"); + } + toInsert = sb.toString(); + } + if (toInsert.indexOf('|') >= 0) { + int ofst = toInsert.indexOf('|'); + int ofst2 = toInsert.indexOf('|', ofst + 1); + toInsert = toInsert.replace("|", ""); + doc.insertString(dot, toInsert, null); + dot = target.getCaretPosition(); + int strLength = toInsert.length(); + if (ofst2 > 0) { + // note that we already removed the first |, so end offset is now + // one less than what it was. + target.select(dot + ofst - strLength, dot + ofst2 - strLength - 1); + } else { + target.setCaretPosition(dot + ofst - strLength); + } + } else { + doc.insertString(dot, toInsert, null); + } + } + + /** + * Expand the string template and replaces the selection with the expansion + * of the template. The template String may contain any of the following + * special tags. + * + *
  • {@code #{selection}} replaced with the selection, if any. If there is + * no selection, then the {@code #{selection}} tag will be removed. + *
  • {@code #{p:any text}} will be replaced by {@code any text} and then + * set selection to {@code any text} + * + * This method properly handles indentation as follows: + * The indentation of the whole block will match the indentation of the caret + * line, or the line with the beginning of the selection, if the selection is + * in whole line, i.e.e one or more lines of selected text. {@see selectLines()} + * + * @param target JEditorCOmponent to be affected + * @param templateLines template split as a String array of lines. + * + * @see insertLinesTemplate + */ + public static void insertLinesTemplate(JTextComponent target, String[] templateLines) { + // get some stuff we'll need: + String thisIndent = getIndent(getLineAt(target, target.getSelectionStart())); + String[] selLines = getSelectedLines(target); + int selStart = -1, selEnd = -1; + StringBuffer sb = new StringBuffer(); + for (String tLine : templateLines) { + int selNdx = tLine.indexOf("#{selection}"); + if (selNdx >= 0) { + // for each of the selected lines: + for (String selLine : selLines) { + sb.append(tLine.subSequence(0, selNdx)); + sb.append(selLine); + sb.append('\n'); + } + } else { + sb.append(thisIndent); + // now check for any ptags + Matcher pm = PTAGS_PATTERN.matcher(tLine); + int lineStart = sb.length(); + while (pm.find()) { + selStart = pm.start() + lineStart; + pm.appendReplacement(sb, pm.group(1)); + selEnd = sb.length(); + } + pm.appendTail(sb); + sb.append('\n'); + } + } + int ofst = target.getSelectionStart(); + target.replaceSelection(sb.toString()); + if (selStart >= 0) { + // target.setCaretPosition(selStart); + target.select(ofst + selStart, ofst + selEnd); + } + } + + /** + * Expand the string template and replaces the selection with the expansion + * of the template. The template String may contain any of the following + * special tags. + * + *
  • {@code #{selection}} replaced with the selection, if any. If there is + * no selection, then the {@code #{selection}} tag will be removed. + *
  • {@code #{p:AnyText}} will be replaced by {@code any text} and then + * set the text selection to {@code AnyText} + * + * This methood does NOT perform any indentation and the template should + * generally span one line only + * + * @param target + * @param template + */ + public static void insertSimpleTemplate(JTextComponent target, String template) { + String selected = target.getSelectedText(); + selected = (selected == null) ? "" : selected; + StringBuffer sb = new StringBuffer(template.length()); + Matcher pm = PTAGS_PATTERN.matcher(template.replace(TEMPLATE_SELECTION, selected)); + int selStart = -1, selEnd = -1; + int lineStart = 0; + while (pm.find()) { + selStart = pm.start() + lineStart; + pm.appendReplacement(sb, pm.group(1)); + selEnd = sb.length(); + } + pm.appendTail(sb); + // String expanded = template.replace(TEMPLATE_SELECTION, selected); + + if (selStart >= 0) { + selStart += target.getSelectionStart(); + selEnd += target.getSelectionStart(); + } + target.replaceSelection(sb.toString()); + if (selStart >= 0) { + // target.setCaretPosition(selStart); + target.select(selStart, selEnd); + } + } + + /** + * If the selection is multi lined, then the full lines are selected, + * otherwise, nothing is done. + * @param target + * @return true if the selection is multi-line, or a whole line + */ + public static boolean selectLines(JTextComponent target) { + if (target.getSelectionStart() == target.getSelectionEnd()) { + return false; + } + PlainDocument pDoc = (PlainDocument) target.getDocument(); + Element es = pDoc.getParagraphElement(target.getSelectionStart()); + // if more than one line is selected, we need to subtract one from the end + // so that we do not select the line with the caret and no selection in it + Element ee = pDoc.getParagraphElement(target.getSelectionEnd() - 1); + if (es.equals(ee) && ee.getEndOffset() != target.getSelectionEnd()) { + return false; + } + int start = es.getStartOffset(); + int end = ee.getEndOffset(); + target.select(start, end - 1); + return true; + } + + /** + * Sets the caret position of the given target to the given line and column + * @param target + * @param line the first being 1 + * @param column the first being 1 + */ + public static void setCaretPosition(JTextComponent target, int line, int column) { + int p = getDocumentPosition(target, line, column); + target.setCaretPosition(p); + } + + /** + * Return a string with number of spaces equal to the tab-stop of the TextComponent + * @param target + * @return + */ + public static String getTab(JTextComponent target) { + return SPACES.substring(0, getTabSize(target)); + } + + /** + * Searches all actions of a JTextComponent for ab action of the given class and returns + * the first one that matches that class, or null if no Action is found + * @param + * @param target + * @param aClass + * @return Action object of that class or null + */ + public static T getAction(JTextComponent target, Class aClass) { + for (Object k : target.getActionMap().allKeys()) { + Action a = target.getActionMap().get(k); + if (aClass.isInstance(a)) { + @SuppressWarnings("unchecked") + T t = (T) a; + return t; + } + } + return null; + } + + /** + * Return the DefaultSyntaxKit of this target, or null if the target does not + * have a DefaultSyntaxKit + * @param target + * @return kit or null + */ + public static DefaultSyntaxKit getSyntaxKit(JTextComponent target) { + DefaultSyntaxKit kit = null; + if (target instanceof JEditorPane) { + JEditorPane jEditorPane = (JEditorPane) target; + EditorKit k = jEditorPane.getEditorKit(); + if (k instanceof DefaultSyntaxKit) { + kit = (DefaultSyntaxKit) k; + } + } + return kit; + } + + /** + * Create and send a KeyPress KeyEvent to the component given + * @param target Editor to get the action + * @param v_key from KeyEvent.V_ constants + * @param modifiers from KeyEvent.*MASK constants + */ + public static void sendKeyPress(JTextComponent target, int v_key, int modifiers) { + KeyEvent ke = new KeyEvent(target, KeyEvent.KEY_PRESSED, System.currentTimeMillis(), + modifiers, v_key, KeyEvent.CHAR_UNDEFINED); + target.dispatchEvent(ke); + } + // This is used internally to avoid NPE if we have no Strings + final static String[] EMPTY_STRING_ARRAY = new String[0]; + // This is used to quickly create Strings of at most 16 spaces (using substring) + final static String SPACES = " "; + /** + * The Pattern to use for PTags in insertSimpleTemplate + */ + public static final Pattern PTAGS_PATTERN = Pattern.compile("\\#\\{p:([^}]*)\\}"); + public static final String TEMPLATE_SELECTION = "#{selection}"; +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/CaretMonitor.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/CaretMonitor.java new file mode 100644 index 000000000..42c79b1f3 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/CaretMonitor.java @@ -0,0 +1,119 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.actions; + +import javax.swing.JLabel; +import javax.swing.event.CaretEvent; +import javax.swing.event.CaretListener; +import javax.swing.text.BadLocationException; +import javax.swing.text.JTextComponent; +import jsyntaxpane.SyntaxDocument; + +/** + * This class can be used to display the caret location in friendly manner for + * an EditorPane. + * + * @author Ayman Al-Sairafi + */ +public class CaretMonitor implements CaretListener { + + private JLabel label; + private JTextComponent text; + + /** + * The format string to use when there is no selected: + * the arguments are: + * 1 based line number + * 1 based column number + * 0 based position + */ + private String noSelectionFormat = "%d:%d (%d)"; + /** + * The format string to use when something is selected: + * the arguments are: + * 1 based line number for selection start + * 1 based column number for selection start + * 1 based line number for selection end + * 1 based column number for selection end + * length of selection + * 0 based start position + * 0 based end position + */ + private String selectionFormat = "%d:%d - %d:%d (%d)"; + + public CaretMonitor(JTextComponent text, JLabel label) { + this.label = label; + this.text = text; + text.addCaretListener(this); + updateLabel(text.getCaretPosition()); + } + + @Override + public void caretUpdate(CaretEvent evt) { + updateLabel(evt.getDot()); + } + + protected void updateLabel(int pos) { + if (text.getDocument() instanceof SyntaxDocument) { + try { + if (text.getSelectionStart() == text.getSelectionEnd()) { + String loc = String.format(noSelectionFormat, + ActionUtils.getLineNumber(text, pos) + 1, + ActionUtils.getColumnNumber(text, pos) + 1, + pos); + label.setText(loc); + } else { + int start = text.getSelectionStart(); + int end = text.getSelectionEnd(); + String loc = String.format(selectionFormat, + ActionUtils.getLineNumber(text, start) + 1, + ActionUtils.getColumnNumber(text, start) + 1, + ActionUtils.getLineNumber(text, end) + 1, + ActionUtils.getColumnNumber(text, end) + 1, + (end - start), + start, + end); + label.setText(loc); + } + } catch (BadLocationException ex) { + label.setText("Ex: " + ex.getMessage()); + } + } else { + label.setText(String.format(noSelectionFormat, 1, 1, 1)); + } + } + + @Override + protected void finalize() throws Throwable { + text.removeCaretListener(this); + super.finalize(); + } + + public String getNoSelectionFormat() { + return noSelectionFormat; + } + + public void setNoSelectionFormat(String noSelectionFormat) { + this.noSelectionFormat = noSelectionFormat; + } + + public String getSelectionFormat() { + return selectionFormat; + } + + public void setSelectionFormat(String selectionFormat) { + this.selectionFormat = selectionFormat; + } + +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/ComboCompletionAction.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/ComboCompletionAction.java new file mode 100644 index 000000000..144440438 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/ComboCompletionAction.java @@ -0,0 +1,80 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.actions; + +import java.awt.event.ActionEvent; +import java.util.List; +import java.util.Map; +import javax.swing.text.JTextComponent; +import jsyntaxpane.SyntaxDocument; +import jsyntaxpane.Token; +import jsyntaxpane.actions.gui.ComboCompletionDialog; +import jsyntaxpane.util.JarServiceProvider; + +/** + * ComboBox like Completion Action: + * This will display a list of items to choose from, it can be used similar to + * IntelliSense. The List is obtained from a plain text file, each line being + * an item in the list. + * + * @author Ayman Al-Sairafi + */ +public class ComboCompletionAction extends DefaultSyntaxAction { + + Map completions; + ComboCompletionDialog dlg; + private List items; + + public ComboCompletionAction() { + super("COMBO_COMPLETION"); + } + + @Override + public void actionPerformed(JTextComponent target, SyntaxDocument sdoc, + int dot, ActionEvent e) { + if (sdoc == null) { + return; + } + Token token = sdoc.getTokenAt(dot); + String abbrev = ""; + if (token != null) { + abbrev = token.getString(sdoc); + target.select(token.start, token.end()); + } + if (dlg == null) { + dlg = new ComboCompletionDialog(target); + } + dlg.displayFor(abbrev, items); + } + + public void setItemsURL(String value) { + items = JarServiceProvider.readLines(value); + } + + /** + * Gets the items to display in the combo + * @return + */ + public List getItems() { + return items; + } + + /** + * Sets the items to display in the combo. + * @param items + */ + public void setItems(List items) { + this.items = items; + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/CompleteWordAction.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/CompleteWordAction.java new file mode 100644 index 000000000..2aac46284 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/CompleteWordAction.java @@ -0,0 +1,102 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.actions; + +import java.awt.event.ActionEvent; +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import javax.swing.text.JTextComponent; +import jsyntaxpane.SyntaxDocument; +import jsyntaxpane.Token; +import jsyntaxpane.actions.gui.ComboCompletionDialog; +import jsyntaxpane.util.StringUtils; + +/** + * This action will try to complete the word at the cursor by + * looking for a matching word in this document that starts with + * the same letters. + * + * This makes use of the SyntaxDocument.getWordAt, which requires + * a Regexp Pattern. The Pattern should match any word regardless of + * the Tokens. + * + * This Regexp is configurable with {@code ACTION_NAME.WordsRegexp}. + * The default Regexp is \w+ (any word char) + * + * @author Ayman Al-Sairafi + */ +public class CompleteWordAction extends DefaultSyntaxAction { + + public CompleteWordAction() { + super("COMPLETE_WORD"); + } + + @Override + public void actionPerformed(JTextComponent target, SyntaxDocument sdoc, + int dot, ActionEvent e) { + Token current = sdoc.getWordAt(dot, wordsPattern); + if (current == null) { + return; + } + String cw = current.getString(sdoc); + target.select(current.start, current.end()); + + sdoc.readLock(); + List matches = new ArrayList(); + Matcher m = sdoc.getMatcher(wordsPattern, 0, current.start); + addWords(m, cw, matches); + m = sdoc.getMatcher(wordsPattern, current.end(), sdoc.getLength() - current.end()); + addWords(m, cw, matches); + sdoc.readUnlock(); + if (matches.size() == 0) { + return; + } + if (matches.size() == 1) { + target.replaceSelection(matches.get(0)); + return; + } + if (dlg == null) { + dlg = new ComboCompletionDialog(target); + } + dlg.displayFor(cw, matches); + } + + public void setWordsRegexp(String value) { + wordsPattern = Pattern.compile(value); + + } + + /** + * Add words from the matcher m that match the word abbr to matches + * List + * @param m matcher instance, could be null, to iterate through + * @param abbr abbriviated word + * @param matches List of matches + */ + private void addWords(Matcher m, String abbr, List matches) { + while (m != null && m.find()) { + String word = m.group(); + if (StringUtils.camelCaseMatch(word, abbr)) { + if (!matches.contains(word)) { + matches.add(word); + } + } + } + } + private ComboCompletionDialog dlg; + private Pattern wordsPattern = DEFAULT_WORDS_REGEXP; + private static final Pattern DEFAULT_WORDS_REGEXP = Pattern.compile("\\w+"); +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/DefaultSyntaxAction.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/DefaultSyntaxAction.java new file mode 100644 index 000000000..eda37c4df --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/DefaultSyntaxAction.java @@ -0,0 +1,134 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.actions; + +import java.awt.event.ActionEvent; +import java.net.URL; +import java.util.regex.Pattern; +import javax.swing.ImageIcon; +import javax.swing.text.JTextComponent; +import javax.swing.text.TextAction; +import jsyntaxpane.SyntaxDocument; +import jsyntaxpane.util.Configuration; +import jsyntaxpane.util.ReflectUtils; + +/** + * The DefaultSyntaxAction. You can extend this class or implement the interface + * SyntaxAction to create your own actions. + * + * @author Ayman Al-Sairafi + */ +abstract public class DefaultSyntaxAction extends TextAction implements SyntaxAction { + + public DefaultSyntaxAction(String actionName) { + super(actionName); + putValue(NAME, actionName); + } + + @Override + public void config(Configuration config, String name) { + // find setter methods for each property key: + String actionName = name.substring(ACTION_PREFIX.length()); + for (Configuration.StringKeyMatcher m : config.getKeys( + Pattern.compile(Pattern.quote(name) + "\\.((\\w|-)+)"))) { + if (!ReflectUtils.callSetter(this, m.group1, m.value)) { + putValue(m.group1, m.value); + } + } + // if we did not put a name, use the action name + if (getValue(NAME) == null) { + putValue(NAME, actionName); + } + // if we did not put an icon, try and find one using our name + if (getValue(SMALL_ICON) == null) { + setSmallIcon(actionName + ".png"); + } + } + + @Override + public void actionPerformed(ActionEvent e) { + JTextComponent text = getTextComponent(e); + SyntaxDocument sdoc = ActionUtils.getSyntaxDocument(text); + if (text != null) { + actionPerformed(text, sdoc, text.getCaretPosition(), e); + } + } + + /** + * Convenience method that will be called if the Action is performed on a + * JTextComponent. SyntaxActions should generally override this method. + * @param target (non-null JTextComponent from Action.getSource + * @param sDoc (SyntaxDOcument of the text component, could be null) + * @param dot (position of caret at text document) + * @param e actual ActionEvent passed to actionPerformed + */ + public void actionPerformed(JTextComponent target, SyntaxDocument sDoc, + int dot, ActionEvent e) { + throw new UnsupportedOperationException("Not yet implemented"); + } + + @Override + public String toString() { + return "Action " + getValue(NAME) + "of type " + this.getClass().getSimpleName(); + } + + /** + * Configure the MenuText for the Action + * @param text + */ + public final void setMenuText(String text) { + putValue(NAME, text); + // also set the SHORT_DESCRIPTIOn if it was not set, so we have + // at least some tooltip for toolbar buttons + if (getValue(SHORT_DESCRIPTION) == null) { + putValue(SHORT_DESCRIPTION, text); + } + } + + /** + * Configure the ToolTip for the Action + * @param text + */ + public final void setToolTip(String text) { + putValue(SHORT_DESCRIPTION, text); + } + + /** + * Sets the Large Icon for this action from given url + * + * @param url + */ + public final void setLargeIcon(String url) { + URL loc = this.getClass().getResource(LARGE_ICONS_LOC_PREFIX + url); + if (loc != null) { + ImageIcon i = new ImageIcon(loc); + putValue(LARGE_ICON_KEY, i); + } + } + + /** + * Configure the SmallIcon for the Action + * @param url + */ + public final void setSmallIcon(String url) { + URL loc = this.getClass().getResource(SMALL_ICONS_LOC_PREFIX + url); + if (loc != null) { + ImageIcon i = new ImageIcon(loc); + putValue(SMALL_ICON, i); + } + } + public static final String ACTION_PREFIX = "Action."; + public static final String SMALL_ICONS_LOC_PREFIX = "/META-INF/images/small-icons/"; + public static final String LARGE_ICONS_LOC_PREFIX = "/META-INF/images/large-icons/"; +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/DeleteLinesAction.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/DeleteLinesAction.java new file mode 100644 index 000000000..a6c16b0a6 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/DeleteLinesAction.java @@ -0,0 +1,44 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.actions; + +import java.awt.event.ActionEvent; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.swing.text.BadLocationException; +import javax.swing.text.JTextComponent; +import jsyntaxpane.SyntaxDocument; + +/** + * This Action deletes the current line, or all the highlighted lines. + * @author Ayman Al-Sairafi + */ +public class DeleteLinesAction extends DefaultSyntaxAction { + + public DeleteLinesAction() { + super("DELETE_LINES"); + } + + @Override + public void actionPerformed(JTextComponent target, SyntaxDocument sdoc, + int dot, ActionEvent e) { + try { + int st = sdoc.getLineStartOffset(target.getSelectionStart()); + int en = sdoc.getLineEndOffset(target.getSelectionEnd()); + sdoc.remove(st, en - st); + } catch (BadLocationException ex) { + Logger.getLogger(DeleteLinesAction.class.getName()).log(Level.SEVERE, null, ex); + } + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/DocumentSearchData.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/DocumentSearchData.java new file mode 100644 index 000000000..432d4824f --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/DocumentSearchData.java @@ -0,0 +1,264 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.actions; + +import java.awt.Component; +import java.util.logging.Level; +import java.util.logging.Logger; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.regex.PatternSyntaxException; +import javax.swing.JOptionPane; +import javax.swing.SwingUtilities; +import javax.swing.text.BadLocationException; +import javax.swing.text.JTextComponent; +import jsyntaxpane.SyntaxDocument; +import jsyntaxpane.actions.gui.QuickFindDialog; +import jsyntaxpane.actions.gui.ReplaceDialog; + +/** + * Data that is shared by Find / Replace and Find Next actions for a Document + * The data here will be added as a property of the Document using the key + * PROPERTY_KEY. Only through the getFtmEditor can you crate a new instance. + * + * The class is responsible for handling the doFind and doReplace all actions. + * + * The class is also responsible for displaying the Find / Replace dialog + * + * @author Ayman Al-Sairafi + */ +public class DocumentSearchData { + + private static final String PROPERTY_KEY = "SearchData"; + private Pattern pattern = null; + private boolean wrap = true; + private ReplaceDialog replaceDlg; + private QuickFindDialog quickFindDlg; + + /** + * This prevent creating a new instance. You must call the getFromEditor + * to crate a new instance attached to a Document + * + */ + private DocumentSearchData() { + } + + public Pattern getPattern() { + return pattern; + } + + /** + * Set the pattern to the given compiled pattern. + * @see this#setPattern(String, boolean, boolean) + * @param pattern + */ + public void setPattern(Pattern pattern) { + this.pattern = pattern; + } + + /** + * Sets the pattern from a string and flags + * @param pat String of pattern + * @param regex true if the pattern should be a regexp + * @param ignoreCase true to ignore case + * @throws java.util.regex.PatternSyntaxException + */ + public void setPattern(String pat, boolean regex, boolean ignoreCase) + throws PatternSyntaxException { + if (pat != null && pat.length() > 0) { + int flag = (regex) ? 0 : Pattern.LITERAL; + flag |= (ignoreCase) ? Pattern.CASE_INSENSITIVE : 0; + setPattern(Pattern.compile(pat, flag)); + } else { + setPattern(null); + } + } + + public boolean isWrap() { + return wrap; + } + + public void setWrap(boolean wrap) { + this.wrap = wrap; + } + + /** + * Get the Search data from a Document. If document does not have any + * search data, then a new instance is added, put and reurned. + * @param target JTextCOmponent we are attaching to + * @return + */ + public static DocumentSearchData getFromEditor(JTextComponent target) { + if (target == null) { + return null; + } + Object o = target.getDocument().getProperty(PROPERTY_KEY); + if (o instanceof DocumentSearchData) { + DocumentSearchData documentSearchData = (DocumentSearchData) o; + return documentSearchData; + } else { + DocumentSearchData newDSD = new DocumentSearchData(); + target.getDocument().putProperty(PROPERTY_KEY, newDSD); + return newDSD; + } + } + + /** + * Perform a replace all operation on the given component. + * Note that this create a new duplicate String big as the entire + * document and then assign it to the target text component + * @param target + * @param replacement + */ + public void doReplaceAll(JTextComponent target, String replacement) { + if (replacement == null) { + replacement = ""; + } + SyntaxDocument sDoc = ActionUtils.getSyntaxDocument(target); + if (sDoc == null) { + return; + } + if (getPattern() == null) { + return; + } + Matcher matcher = sDoc.getMatcher(getPattern()); + String newText = matcher.replaceAll(replacement); + try { + sDoc.replace(0, sDoc.getLength(), newText, null); + } catch (BadLocationException ex) { + Logger.getLogger(DocumentSearchData.class.getName()).log(Level.SEVERE, null, ex); + } + } + + /** + * Replace single occurrence of match with the replacement. + * @param target + * @param replacement + */ + public void doReplace(JTextComponent target, String replacement) { + if (target.getSelectedText() != null) { + target.replaceSelection(replacement == null ? "" : replacement); + doFindNext(target); + } + } + + /** + * FInd the previous match + * @param target + * @return + */ + public boolean doFindPrev(JTextComponent target) { + if (getPattern() == null) { + return false; + } + SyntaxDocument sDoc = ActionUtils.getSyntaxDocument(target); + if (sDoc == null) { + return false; + } + int dot = target.getSelectionStart(); + Matcher matcher = sDoc.getMatcher(getPattern()); + if (matcher == null) { + return false; + } + // we have no way of jumping to last match, so we need to + // go throw all matches, and stop when we reach current pos + int start = -1; + int end = -1; + while (matcher.find()) { + if (matcher.end() >= dot) { + break; + } + start = matcher.start(); + end = matcher.end(); + } + if (end > 0) { + target.select(start, end); + return true; + } else { + return false; + } + } + + /** + * Perform a FindNext operation on the given text component. Position + * the caret at the start of the next found pattern. + * @param target + * @return true if pattern is found, false otherwise + */ + public boolean doFindNext(JTextComponent target) { + if (getPattern() == null) { + return false; + } + SyntaxDocument sDoc = ActionUtils.getSyntaxDocument(target); + if (sDoc == null) { + return false; + } + int start = target.getSelectionEnd(); + if (target.getSelectionEnd() == target.getSelectionStart()) { + // we must advance the position by one, otherwise we will find + // the same text again + start++; + } + if (start >= sDoc.getLength()) { + start = sDoc.getLength(); + } + Matcher matcher = sDoc.getMatcher(getPattern(), start); + if (matcher != null && matcher.find()) { + // since we used an offset in the matcher, the matcher location + // MUST be offset by that location + target.select(matcher.start() + start, matcher.end() + start); + return true; + } else { + if (isWrap()) { + matcher = sDoc.getMatcher(getPattern()); + if (matcher != null && matcher.find()) { + target.select(matcher.start(), matcher.end()); + return true; + } else { + return false; + } + } else { + return false; + } + } + } + + /** + * Display an OptionPane dialog that the search string is not found + * @param target + */ + public void msgNotFound(Component target) { + JOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(target), + "Search String " + getPattern() + " not found", + "Find", JOptionPane.INFORMATION_MESSAGE); + } + + /** + * Show the Find and Replace dialog for the given frame + * @param target + */ + public void showReplaceDialog(JTextComponent target) { + if (replaceDlg == null) { + replaceDlg = new ReplaceDialog(target, this); + } + replaceDlg.setVisible(true); + } + + public void showQuickFindDialog(JTextComponent target) { + if (quickFindDlg == null) { + quickFindDlg = new QuickFindDialog(target, this); + } + quickFindDlg.showFor(target); + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/DuplicateLinesAction.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/DuplicateLinesAction.java new file mode 100644 index 000000000..bef9f9446 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/DuplicateLinesAction.java @@ -0,0 +1,45 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.actions; + +import java.awt.event.ActionEvent; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.swing.text.BadLocationException; +import javax.swing.text.JTextComponent; +import jsyntaxpane.SyntaxDocument; + +/** + * This Action duplicates the current line, or all the highlighted lines. + * @author Ayman Al-Sairafi + */ +public class DuplicateLinesAction extends DefaultSyntaxAction { + + public DuplicateLinesAction() { + super("DUPLICATE_LINES"); + } + + @Override + public void actionPerformed(JTextComponent target, SyntaxDocument sdoc, + int dot, ActionEvent e) { + try { + int st = sdoc.getLineStartOffset(target.getSelectionStart()); + int en = sdoc.getLineEndOffset(target.getSelectionEnd()); + String dupLines = sdoc.getText(st, en - st); + sdoc.insertString(st, dupLines, null); + } catch (BadLocationException ex) { + Logger.getLogger(DuplicateLinesAction.class.getName()).log(Level.SEVERE, null, ex); + } + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/FindNextAction.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/FindNextAction.java new file mode 100644 index 000000000..467e7f6d2 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/FindNextAction.java @@ -0,0 +1,26 @@ +package jsyntaxpane.actions; + +import java.awt.event.ActionEvent; +import javax.swing.text.JTextComponent; +import jsyntaxpane.SyntaxDocument; + +/** + * This class performs a Find Next operation by using the current pattern + */ +public class FindNextAction extends DefaultSyntaxAction { + + public FindNextAction() { + super("find-next"); + } + + @Override + public void actionPerformed(JTextComponent target, SyntaxDocument sdoc, + int dot, ActionEvent e) { + DocumentSearchData dsd = DocumentSearchData.getFromEditor(target); + if (dsd != null) { + if(!dsd.doFindNext(target)) { + dsd.msgNotFound(target); + } + } + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/FindReplaceAction.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/FindReplaceAction.java new file mode 100644 index 000000000..730f85425 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/FindReplaceAction.java @@ -0,0 +1,42 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.actions; + +import java.awt.event.ActionEvent; +import javax.swing.text.JTextComponent; +import jsyntaxpane.SyntaxDocument; + +/** + * Finder class. This class contains the general Find, Find Next, + * Find Previous, and the Find Marker Actions. + * + * Note that all Actions are subclasses of this class because all actions + * require the find text to be shared among them. This is the best approach + * to have all Action classes share this same data. + * + * @author Ayman Al-Sairafi + */ +public class FindReplaceAction extends DefaultSyntaxAction { + + public FindReplaceAction() { + super("FIND_REPLACE"); + } + + @Override + public void actionPerformed(JTextComponent target, SyntaxDocument sdoc, + int dot, ActionEvent e) { + DocumentSearchData dsd = DocumentSearchData.getFromEditor(target); + dsd.showReplaceDialog(target); + } +} \ No newline at end of file diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/GotoLineAction.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/GotoLineAction.java new file mode 100644 index 000000000..23b662cfc --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/GotoLineAction.java @@ -0,0 +1,35 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.actions; + +import jsyntaxpane.actions.gui.GotoLineDialog; +import java.awt.event.ActionEvent; +import javax.swing.text.JTextComponent; +import jsyntaxpane.SyntaxDocument; + +/** + * This actions displays the GotoLine dialog + */ +public class GotoLineAction extends DefaultSyntaxAction { + + public GotoLineAction() { + super("GOTO_LINE"); + } + + @Override + public void actionPerformed(JTextComponent target, SyntaxDocument sdoc, + int dot, ActionEvent e) { + GotoLineDialog.showForEditor(target); + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/HTMLPreviewAction.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/HTMLPreviewAction.java new file mode 100644 index 000000000..61df48735 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/HTMLPreviewAction.java @@ -0,0 +1,47 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.actions; + +import java.awt.event.ActionEvent; +import javax.swing.text.JTextComponent; +import jsyntaxpane.SyntaxDocument; +import jsyntaxpane.actions.gui.HTMLPreviewFrame; + +/** + * Show an HTML Preview window. + * This will automatically update on changes to the underlying document. + * + */ +public class HTMLPreviewAction extends DefaultSyntaxAction { + public static final String HTML_PREVIEW_WINDOW = "html-preview-window"; + + public HTMLPreviewAction() { + super("HTML_PREVIEW"); + } + + @Override + public void actionPerformed(JTextComponent target, SyntaxDocument sDoc, + int dot, ActionEvent e) { + // have the document property + Object obj = sDoc.getProperty(HTML_PREVIEW_WINDOW); + if(obj == null) { + HTMLPreviewFrame dlg = new HTMLPreviewFrame(sDoc); + sDoc.putProperty( HTML_PREVIEW_WINDOW,dlg); + dlg.setVisible(true); + } else { + HTMLPreviewFrame dlg = (HTMLPreviewFrame) obj; + dlg.setVisible(enabled); + } + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/IndentAction.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/IndentAction.java new file mode 100644 index 000000000..90d7ccb4a --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/IndentAction.java @@ -0,0 +1,96 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.actions; + +import java.awt.event.ActionEvent; +import java.util.Map; +import java.util.regex.Pattern; +import javax.swing.JEditorPane; +import javax.swing.text.EditorKit; +import javax.swing.text.JTextComponent; +import jsyntaxpane.DefaultSyntaxKit; +import jsyntaxpane.SyntaxDocument; +import jsyntaxpane.Token; + +/** + * IndentAction is used to replace Tabs with spaces. If there is selected + * text, then the lines spanning the selection will be shifted + * right by one tab-width space character. + * + * Since this is also used as an abbreviation completion action, + * Abbreviiations are processed by this event. + * + * FIXME: Move the abbreviation expansion to an ActionUtils proc + * @author Ayman Al-Sairafi + * + */ +public class IndentAction extends DefaultSyntaxAction { + + public IndentAction() { + super("insert-tab"); + } + + @Override + public void actionPerformed(JTextComponent target, SyntaxDocument sDoc, + int dot, ActionEvent e) { + String selected = target.getSelectedText(); + EditorKit kit = ((JEditorPane) target).getEditorKit(); + Map abbrvs = ((DefaultSyntaxKit) kit).getAbbreviations(); + if (selected == null) { + // Check for abbreviations: + Token abbrToken = sDoc.getWordAt(dot, wordsPattern); + Integer tabStop = ActionUtils.getTabSize(target); + int lineStart = sDoc.getParagraphElement(dot).getStartOffset(); + int column = dot - lineStart; + int needed = tabStop - (column % tabStop); + if (abbrvs == null || abbrToken == null) { + target.replaceSelection(ActionUtils.SPACES.substring(0, needed)); + } else { + String abbr = abbrToken.getString(sDoc); + if (abbrvs.containsKey(abbr)) { + target.select(abbrToken.start, abbrToken.end()); + abbr = abbrvs.get(abbr); + String[] abbrLines = abbr.split("\n"); + if (abbrLines.length > 1) { + ActionUtils.insertLinesTemplate(target, abbrLines); + } else { + ActionUtils.insertSimpleTemplate(target, abbr); + } + } else { + target.replaceSelection(ActionUtils.SPACES.substring(0, needed)); + } + } + } else { + String[] lines = ActionUtils.getSelectedLines(target); + int start = target.getSelectionStart(); + StringBuilder sb = new StringBuilder(); + for (String line : lines) { + sb.append(ActionUtils.getTab(target)); + sb.append(line); + sb.append('\n'); + } + target.replaceSelection(sb.toString()); + target.select(start, start + sb.length()); + } + } + private Pattern wordsPattern = Pattern.compile("\\w+"); + + public void setWordRegex(String regex) { + wordsPattern = Pattern.compile(regex); + } + + public Pattern getWordRegex() { + return wordsPattern; + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/JIndentAction.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/JIndentAction.java new file mode 100644 index 000000000..1f9d8308d --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/JIndentAction.java @@ -0,0 +1,81 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.actions; + +import java.awt.event.ActionEvent; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.swing.text.BadLocationException; +import javax.swing.text.JTextComponent; +import jsyntaxpane.SyntaxDocument; +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + +/** + * This class should be mapped to VK_ENTER. It performs proper indentation + * for Java Type languages and automatically inserts "*" in multi-line comments + * Initial Code contributed by ser... AT mail.ru + * + * @author Ayman Al-Sairafi + */ +public class JIndentAction extends DefaultSyntaxAction { + + public JIndentAction() { + super("JINDENT"); + } + + /** + * {@inheritDoc} + * @param e + */ + @Override + public void actionPerformed(JTextComponent target, SyntaxDocument sDoc, + int dot, ActionEvent e) { + int pos = target.getCaretPosition(); + int start = sDoc.getParagraphElement(pos).getStartOffset(); + String line = ActionUtils.getLine(target); + String lineToPos = line.substring(0, pos - start); + String prefix = ActionUtils.getIndent(line); + Token t = sDoc.getTokenAt(pos); + if (TokenType.isComment(t)) { + String trimmed = line.trim(); + if (trimmed.startsWith("/*") && trimmed.endsWith("*/")) { + // it's a single line comment, do not do anything special + } else if (trimmed.endsWith("*/")) { + try { + // the prefix should be the line where the comment started + String commentStartLine = sDoc.getLineAt(t.start); + prefix = ActionUtils.getIndent(commentStartLine); + } catch (BadLocationException ex) { + Logger.getLogger(JIndentAction.class.getName()).log(Level.SEVERE, null, ex); + } + } else if (trimmed.startsWith("*")) { + prefix += "* "; + } else if (trimmed.startsWith("/**")) { + prefix += " * "; + } else if (trimmed.startsWith("/*")) { + prefix += " "; + } + } else if (lineToPos.trim().endsWith("{")) { + prefix += ActionUtils.getTab(target); + } else { + String noComment = sDoc.getUncommentedText(start, pos); // skip EOL comments + + if (noComment.trim().endsWith("{")) { + prefix += ActionUtils.getTab(target); + } + } + target.replaceSelection("\n" + prefix); + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/JUnindentAction.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/JUnindentAction.java new file mode 100644 index 000000000..ab2d19cb7 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/JUnindentAction.java @@ -0,0 +1,57 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.actions; + +import java.awt.event.ActionEvent; +import javax.swing.text.BadLocationException; +import javax.swing.text.JTextComponent; +import jsyntaxpane.SyntaxDocument; +import jsyntaxpane.Token; + +public class JUnindentAction extends DefaultSyntaxAction { + + /** + * creates new JUnindentAction. + * Initial Code contributed by ser... AT mail.ru + */ + public JUnindentAction() { + super("JUNINDENT"); + } + + /** + * {@inheritDoc} + */ + @Override + public void actionPerformed(JTextComponent target, SyntaxDocument sDoc, + int dot, ActionEvent e) { + int pos = target.getCaretPosition(); + int start = sDoc.getParagraphElement(pos).getStartOffset(); + String line = ActionUtils.getLine(target); + if (ActionUtils.isEmptyOrBlanks(line)) { + try { + sDoc.insertString(pos, "}", null); + Token t = sDoc.getPairFor(sDoc.getTokenAt(pos)); + if (null != t) { + String pairLine = ActionUtils.getLineAt(target, t.start); + String indent = ActionUtils.getIndent(pairLine); + sDoc.replace(start, line.length() + 1, indent + "}", null); + } + } catch (BadLocationException ble) { + target.replaceSelection("}"); + } + } else { + target.replaceSelection("}"); + } + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/JumpToPairAction.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/JumpToPairAction.java new file mode 100644 index 000000000..e54253b70 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/JumpToPairAction.java @@ -0,0 +1,44 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.actions; + +import java.awt.event.ActionEvent; +import java.util.Arrays; +import javax.swing.text.JTextComponent; +import jsyntaxpane.SyntaxDocument; +import jsyntaxpane.Token; + +/** + * This actions Jumps to the pair of the token at the cursor. + */ +public class JumpToPairAction extends DefaultSyntaxAction { + + public JumpToPairAction() { + super("JUMP_TO_PAIR"); + } + + @Override + public void actionPerformed(JTextComponent target, SyntaxDocument sdoc, + int dot, ActionEvent e) { + Token current = sdoc.getTokenAt(dot); + if (current == null) { + return; + } + + Token pair = sdoc.getPairFor(current); + if (pair != null) { + target.setCaretPosition(pair.start); + } + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/MapCompletionAction.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/MapCompletionAction.java new file mode 100644 index 000000000..37f425741 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/MapCompletionAction.java @@ -0,0 +1,57 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.actions; + +import java.awt.event.ActionEvent; +import java.util.Map; +import javax.swing.text.JTextComponent; +import jsyntaxpane.SyntaxDocument; +import jsyntaxpane.Token; +import jsyntaxpane.util.JarServiceProvider; + +/** + * Completion Actions: + * All completions are based on a simple String to String Map. + */ +public class MapCompletionAction extends DefaultSyntaxAction { + + Map completions; + + public MapCompletionAction() { + super("MAP_COMPLETION"); + } + + @Override + public void actionPerformed(JTextComponent target, SyntaxDocument sDoc, + int dot, ActionEvent e) { + Token token = sDoc.getTokenAt(dot); + if (token != null) { + String abbriv = ActionUtils.getTokenStringAt(sDoc, dot); + if (completions.containsKey(abbriv)) { + String completed = completions.get(abbriv); + if (completed.indexOf('|') >= 0) { + int ofst = completed.length() - completed.indexOf('|') - 1; + sDoc.replaceToken(token, completed.replace("|", "")); + target.setCaretPosition(target.getCaretPosition() - ofst); + } else { + sDoc.replaceToken(token, completed); + } + } + } + } + + public void setCompletionsFile(String value) { + completions = JarServiceProvider.readStringsMap(value); + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/PairAction.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/PairAction.java new file mode 100644 index 000000000..71a3a65bf --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/PairAction.java @@ -0,0 +1,56 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.actions; + +import java.awt.event.ActionEvent; +import java.util.HashMap; +import java.util.Map; +import javax.swing.text.JTextComponent; +import jsyntaxpane.SyntaxDocument; + +/** + * A Pair action inserts a pair of characters (left and right) around the + * current selection, and then places the caret between them + * + * The pairs are hard-coded here. + */ +public class PairAction extends DefaultSyntaxAction { + + public PairAction() { + super("PAIR_ACTION"); + } + + @Override + public void actionPerformed(JTextComponent target, SyntaxDocument sDoc, + int dot, ActionEvent e) { + String left = e.getActionCommand(); + String right = PAIRS.get(left); + String selected = target.getSelectedText(); + if (selected != null) { + target.replaceSelection(left + selected + right); + } else { + target.replaceSelection(left + right); + target.setCaretPosition(target.getCaretPosition() - right.length()); + } + } + private static Map PAIRS = new HashMap(4); + + + static { + PAIRS.put("(", ")"); + PAIRS.put("[", "]"); + PAIRS.put("\"", "\""); + PAIRS.put("'", "'"); + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/PythonIndentAction.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/PythonIndentAction.java new file mode 100644 index 000000000..e2bfb22d1 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/PythonIndentAction.java @@ -0,0 +1,58 @@ +/* + * Copyright 2009 Stefan Bechtold (stefan.bechtold@googlemail.com) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.actions; + +import java.awt.event.ActionEvent; +import javax.swing.text.JTextComponent; +import javax.swing.text.TextAction; +import jsyntaxpane.SyntaxDocument; +import jsyntaxpane.util.Configuration; + +public class PythonIndentAction extends DefaultSyntaxAction { + + /** + * creates new PythonIndentAction. + */ + public PythonIndentAction() { + super("PYTHONINDENT"); + } + + /** + * {@inheritDoc} + * @param e + */ + @Override + public void actionPerformed(ActionEvent e) { + JTextComponent target = getTextComponent(e); + if (target != null) { + SyntaxDocument sDoc = ActionUtils.getSyntaxDocument(target); + int pos = target.getCaretPosition(); + int start = sDoc.getParagraphElement(pos).getStartOffset(); + String line = ActionUtils.getLine(target); + String lineToPos = line.substring(0, pos - start); + String prefix = ActionUtils.getIndent(line); + int tabSize = ActionUtils.getTabSize(target); + if (lineToPos.trim().endsWith(":")) { + prefix += ActionUtils.SPACES.substring(0, tabSize); + } else { + String noComment = sDoc.getUncommentedText(start, pos); // skip EOL comments + + if (noComment.trim().endsWith(":")) { + prefix += ActionUtils.SPACES.substring(0, tabSize); + } + } + target.replaceSelection("\n" + prefix); + } + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/QuickFindAction.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/QuickFindAction.java new file mode 100644 index 000000000..7449c3bed --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/QuickFindAction.java @@ -0,0 +1,35 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.actions; + +import java.awt.event.ActionEvent; +import javax.swing.text.JTextComponent; +import jsyntaxpane.SyntaxDocument; + +/** + * + * @author Ayman Al-Sairafi + */ +public class QuickFindAction extends DefaultSyntaxAction { + + public QuickFindAction() { + super("quick-find"); + } + + @Override + public void actionPerformed(JTextComponent target, SyntaxDocument sDoc, + int dot, ActionEvent e) { + DocumentSearchData.getFromEditor(target).showQuickFindDialog(target); + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/RedoAction.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/RedoAction.java new file mode 100644 index 000000000..3bce0bfe2 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/RedoAction.java @@ -0,0 +1,38 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.actions; + +import java.awt.event.ActionEvent; +import javax.swing.text.JTextComponent; +import javax.swing.text.TextAction; +import jsyntaxpane.SyntaxDocument; +import jsyntaxpane.util.Configuration; + +/** + * Redo action + */ +public class RedoAction extends DefaultSyntaxAction { + + public RedoAction() { + super("REDO"); + } + + @Override + public void actionPerformed(JTextComponent target, SyntaxDocument sDoc, + int dot, ActionEvent e) { + if (sDoc != null) { + sDoc.doRedo(); + } + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/ReflectCompletionAction.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/ReflectCompletionAction.java new file mode 100644 index 000000000..c9844dc6a --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/ReflectCompletionAction.java @@ -0,0 +1,49 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.actions; + +import jsyntaxpane.actions.gui.ReflectCompletionDialog; +import java.awt.event.ActionEvent; +import javax.swing.text.JTextComponent; +import jsyntaxpane.SyntaxDocument; +import jsyntaxpane.Token; + +/** + * ComboBox like Completion Action: + * This will display a list of items to choose from, its can be used similar to + * IntelliSense + * + * @author Ayman Al-Sairafi + */ +public class ReflectCompletionAction extends DefaultSyntaxAction { + + ReflectCompletionDialog dlg; + + public ReflectCompletionAction() { + super("REFLECT_COMPLETION"); + } + + @Override + public void actionPerformed(JTextComponent target, SyntaxDocument sDoc, + int dot, ActionEvent e) { + Token t = sDoc.getTokenAt(dot); + if(t != null) { + target.select(t.start, t.end()); + } + if (dlg == null) { + dlg = new ReflectCompletionDialog(target); + } + dlg.displayFor(target); + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/ScriptAction.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/ScriptAction.java new file mode 100644 index 000000000..9a314846e --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/ScriptAction.java @@ -0,0 +1,115 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.actions; + +import java.awt.event.ActionEvent; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; +import java.util.regex.Pattern; +import javax.script.Invocable; +import javax.script.ScriptEngine; +import javax.script.ScriptEngineManager; +import javax.script.ScriptException; +import javax.swing.JOptionPane; +import javax.swing.text.JTextComponent; +import jsyntaxpane.SyntaxDocument; +import jsyntaxpane.util.Configuration; +import jsyntaxpane.util.JarServiceProvider; + +/** + * This class executes a script every time it is called. + * Anything can be done using any script. + * + * @author Ayman Al-Sairafi + */ +public class ScriptAction extends DefaultSyntaxAction { + + public ScriptAction() { + super("scripted-action"); + } + + @Override + public void actionPerformed(JTextComponent target, SyntaxDocument sDoc, + int dot, ActionEvent e) { + if (getValue(SCRIPT_FUNCTION) != null) { + String f = getValue(SCRIPT_FUNCTION).toString(); + try { + engine.put("TARGET", target); + engine.put("SDOC", sDoc); + engine.put("DOT", dot); + engine.put("EVENT", e); + engine.put("ACTION", this); + engine.put("AU", ActionUtils.getInstance()); + invocable.invokeFunction(f); + } catch (ScriptException ex) { + showScriptError(target, ex); + } catch (NoSuchMethodException ex) { + showScriptError(target, ex); + } + } else { + JOptionPane.showMessageDialog(target, "Action does not have script function configured", + "Error in Script", JOptionPane.WARNING_MESSAGE); + } + } + + public void setFunction(String name) { + putValue(SCRIPT_FUNCTION, name); + } + + @Override + public void config(Configuration config, String name) { + super.config(config, name); + // now read and store all of our scripts. + for (Configuration.StringKeyMatcher m : config.getKeys(Pattern.compile("Script\\.((\\w|-)+)\\.URL"))) { + getScriptFromURL(m.value); + } + } + + /** + * + * @param url + */ + public void getScriptFromURL(String url) { + InputStream is = JarServiceProvider.findResource(url, this.getClass().getClassLoader()); + if (is != null) { + Reader reader = new InputStreamReader(is); + try { + engine.eval(reader); + } catch (ScriptException ex) { + showScriptError(null, ex); + } + } else { + JOptionPane.showMessageDialog(null, "No script is found in: " + url, + "Error in Script", JOptionPane.WARNING_MESSAGE); + } + } + + private void showScriptError(JTextComponent target, Exception ex) { + JOptionPane.showMessageDialog(target, ex.getMessage(), + "Error in Script", JOptionPane.WARNING_MESSAGE); + } + /** + * The key used to store the Script Name for the this action + */ + static final String SCRIPT_FUNCTION = "SCRIPT_FUNCTION"; + static final ScriptEngine engine; + static final Invocable invocable; + + + static { + engine = new ScriptEngineManager().getEngineByExtension("js"); + invocable = (Invocable) engine; + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/ScriptRunnerAction.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/ScriptRunnerAction.java new file mode 100644 index 000000000..7d3ef08e2 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/ScriptRunnerAction.java @@ -0,0 +1,88 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.actions; + +import java.awt.event.ActionEvent; +import javax.script.ScriptEngine; +import javax.script.ScriptEngineManager; +import javax.script.ScriptException; +import javax.swing.JOptionPane; +import javax.swing.SwingUtilities; +import javax.swing.text.JTextComponent; +import jsyntaxpane.SyntaxDocument; + +/** + * Executes the script in the component's text using a ScriptEngine + * The Configuration must contain the key [prefix.]ACTION_NAME.ScriptExtension + * and its value is the ScriptExtension that getEngineByExtension returns + * If no engine is found, then an option is given to the user to disable the action + * + * @author Ayman Al-Sairafi + */ +public class ScriptRunnerAction extends DefaultSyntaxAction { + + public ScriptRunnerAction() { + super("SCRIPT_EXECUTE"); + } + + @Override + public void actionPerformed(JTextComponent target, SyntaxDocument sDoc, + int dot, ActionEvent e) { + try { + ScriptEngine eng = getEngine(target); + if (eng != null) { + getEngine(target).eval(target.getText()); + } + } catch (ScriptException ex) { + JOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(target), + "Error executing script:\n" + ex.getMessage(), + "Script Error", + JOptionPane.ERROR_MESSAGE); + ActionUtils.setCaretPosition(target, + ex.getLineNumber(), + ex.getColumnNumber()); + } + } + + private ScriptEngine getEngine(JTextComponent target) { + if (engine == null) { + if (sem == null) { + sem = new ScriptEngineManager(); + } + engine = sem.getEngineByExtension(scriptExtension); + } + if (engine == null) { + int result = JOptionPane.showOptionDialog(target, + "Script Engine for [" + scriptExtension + "] not found. Disable this Action?", + "jsyntaxpane", + JOptionPane.YES_NO_OPTION, + JOptionPane.ERROR_MESSAGE, + null, + null, + null); + if (result == JOptionPane.YES_OPTION) { + setEnabled(false); + } + } + return engine; + } + + public void setScriptExtension(String value) { + scriptExtension = value; + } + + static ScriptEngineManager sem; + private ScriptEngine engine; + private String scriptExtension; +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/ShowAbbsAction.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/ShowAbbsAction.java new file mode 100644 index 000000000..d2feb7715 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/ShowAbbsAction.java @@ -0,0 +1,52 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.actions; + +import java.awt.event.ActionEvent; +import java.util.Map; +import javax.swing.JEditorPane; +import javax.swing.JOptionPane; +import javax.swing.text.JTextComponent; +import jsyntaxpane.DefaultSyntaxKit; +import jsyntaxpane.SyntaxDocument; +import jsyntaxpane.actions.gui.ShowAbbsDialog; + +/** + * Display all abbreviations for a JTextComponent., if it has any. + * Abbreviations are obtained from the IndentAction, so if the target does not + * have an instance of that actions, nothing is displayed. + * @author Ayman Al-Sairafi + */ +public class ShowAbbsAction extends DefaultSyntaxAction { + + public ShowAbbsAction() { + super("show-abbreviations"); + } + + @Override + public void actionPerformed(JTextComponent target, SyntaxDocument sDoc, + int dot, ActionEvent e) { + // find the abbreviations actions: + DefaultSyntaxKit kit = ActionUtils.getSyntaxKit(target); + if (kit != null) { + Map abbs = kit.getAbbreviations(); + if (abbs == null || abbs.isEmpty()) { + JOptionPane.showMessageDialog(target, + "No Abbreviations exist for this content type"); + } else { + new ShowAbbsDialog((JEditorPane) target, abbs); + } + } + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/SmartHomeAction.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/SmartHomeAction.java new file mode 100644 index 000000000..834b73685 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/SmartHomeAction.java @@ -0,0 +1,74 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.actions; + +import java.awt.event.ActionEvent; +import java.text.CharacterIterator; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.swing.text.BadLocationException; +import javax.swing.text.Element; +import javax.swing.text.JTextComponent; +import javax.swing.text.Segment; +import jsyntaxpane.SyntaxDocument; + +/** + * + * @author Ayman Al-Sairafi + */ +public class SmartHomeAction extends DefaultSyntaxAction { + + public SmartHomeAction() { + super("smart-home"); + } + + @Override + public void actionPerformed(JTextComponent target, SyntaxDocument sDoc, + int dot, ActionEvent e) { + try { + target.setCaretPosition(getSmartHomeOffset(target, sDoc, dot)); + } catch (BadLocationException ex) { + Logger.getLogger(SmartHomeAction.class.getName()).log(Level.SEVERE, null, ex); + } + } + + static int getSmartHomeOffset(JTextComponent target, SyntaxDocument sDoc, + int dot) throws BadLocationException { + Element el = sDoc.getParagraphElement(dot); + Segment seg = new Segment(); + sDoc.getText(el.getStartOffset(), + el.getEndOffset() - el.getStartOffset() - 1, seg); + int homeOffset = 0; + int dotLineOffset = dot - el.getStartOffset(); + boolean inText = false; + // see the location of first non-space offset + for (int i = 0; i < dotLineOffset; i++) { + if (!Character.isWhitespace(seg.charAt(i))) { + inText = true; + break; + } + } + // if we are at first char in line, or we are past the non space + // chars in the line, then we move to non-space char + // otherwise, we move to first char of line + if (dotLineOffset == 0 || inText) { + for (char ch = seg.first(); + ch != CharacterIterator.DONE && Character.isWhitespace(ch); + ch = seg.next()) { + homeOffset++; + } + } + return el.getStartOffset() + homeOffset; + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/SmartHomeSelectAction.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/SmartHomeSelectAction.java new file mode 100644 index 000000000..b7a6f9729 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/SmartHomeSelectAction.java @@ -0,0 +1,42 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.actions; + +import java.awt.event.ActionEvent; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.swing.text.BadLocationException; +import javax.swing.text.JTextComponent; +import jsyntaxpane.SyntaxDocument; + +/** + * + * @author Ayman Al-Sairafi + */ +public class SmartHomeSelectAction extends DefaultSyntaxAction { + + public SmartHomeSelectAction() { + super("smart-home-select"); + } + + @Override + public void actionPerformed(JTextComponent target, SyntaxDocument sDoc, + int dot, ActionEvent e) { + try { + target.moveCaretPosition(SmartHomeAction.getSmartHomeOffset(target, sDoc, dot)); + } catch (BadLocationException ex) { + Logger.getLogger(SmartHomeSelectAction.class.getName()).log(Level.SEVERE, null, ex); + } + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/SyntaxAction.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/SyntaxAction.java new file mode 100644 index 000000000..1cf2b65ab --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/SyntaxAction.java @@ -0,0 +1,44 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.actions; + +import javax.swing.Action; +import jsyntaxpane.util.Configuration; + +/** + * All JSyntaxPane Keyboard related actions implement this class. These + * classes are created dynamically, and then registered to the SyntaxKit. + * + * A class may have multiple TextActions that may be related. Each EditorKit + * that is installed will have only one instance of each class, even if more + * than one action is specified. + * + * The key value pairs in the COnfiguration are of the form: + * + * [EditorKit.]Action.NAME = class, keyboard key + * + * @author Ayman Al-Sairafi + */ +public interface SyntaxAction extends Action { + + /** + * Configure the actions in this class + * @param config + * @param name Name of the action, (prefixed by Action.) + * will be obtained from the property Key as the + * text following the Action. + */ + public void config(Configuration config, String name); + +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/TemplateAction.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/TemplateAction.java new file mode 100644 index 000000000..c6d9ccf23 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/TemplateAction.java @@ -0,0 +1,71 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.actions; + +import java.awt.event.ActionEvent; +import javax.swing.text.JTextComponent; +import jsyntaxpane.SyntaxDocument; + +/** + * This action replaces the selection with the configured template in + * the config ACTION-NAME.Template + * + * There are two kinds of templates: + *
  • Simple Templates are replaced as is
  • + *
  • Whole Line Templates will ensure a whole line is selected. + * Each line in the selection will be prefixed, and postfixed with whatever appears + * on the line in the template
  • + * + */ +public class TemplateAction extends DefaultSyntaxAction { + + private String template; + private String[] tlines = null; + private boolean wholeLines; + private boolean mustHaveSelection; + + public TemplateAction() { + super("template"); + } + + @Override + public void actionPerformed(JTextComponent target, SyntaxDocument sdoc, + int dot, ActionEvent e) { + if (mustHaveSelection) { + if (target.getSelectionEnd() == target.getSelectionStart()) { + return; + } + } + if (wholeLines) { + if(tlines == null) { + tlines = template.split("\n"); + } + ActionUtils.insertLinesTemplate(target, tlines); + } else { + ActionUtils.insertSimpleTemplate(target, template); + } + } + + public void setWholeLines(String value) { + wholeLines = Boolean.parseBoolean(value); + } + + public void setTemplate(String t) { + template = t; + } + + public void setMustHaveSelection(String value) { + mustHaveSelection = Boolean.parseBoolean(value); + } +} \ No newline at end of file diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/ToggleCommentsAction.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/ToggleCommentsAction.java new file mode 100644 index 000000000..5d2a85e68 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/ToggleCommentsAction.java @@ -0,0 +1,70 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.actions; + +import java.awt.event.ActionEvent; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import javax.swing.text.JTextComponent; +import jsyntaxpane.SyntaxDocument; + +/** + * This action will toggle comments on or off on selected whole lines. + * + * @author Ayman Al-Sairafi + */ +public class ToggleCommentsAction extends DefaultSyntaxAction { + + protected String lineCommentStart = "// "; + protected Pattern lineCommentPattern = null; + + /** + * creates new JIndentAction. + * Initial Code contributed by ser... AT mail.ru + */ + public ToggleCommentsAction() { + super("toggle-comment"); + } + + /** + * {@inheritDoc} + * @param e + */ + @Override + public void actionPerformed(JTextComponent target, SyntaxDocument sDoc, + int dot, ActionEvent e) { + if (lineCommentPattern == null) { + lineCommentPattern = Pattern.compile("(^" + lineCommentStart + ")(.*)"); + } + String[] lines = ActionUtils.getSelectedLines(target); + int start = target.getSelectionStart(); + StringBuffer toggled = new StringBuffer(); + for (int i = 0; i < lines.length; i++) { + Matcher m = lineCommentPattern.matcher(lines[i]); + if (m.find()) { + toggled.append(m.replaceFirst("$2")); + } else { + toggled.append(lineCommentStart); + toggled.append(lines[i]); + } + toggled.append('\n'); + } + target.replaceSelection(toggled.toString()); + target.select(start, start + toggled.length()); + } + + public void setLineComments(String value) { + lineCommentStart = value.replace("\"", ""); + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/ToggleComponentAction.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/ToggleComponentAction.java new file mode 100644 index 000000000..26d0d66b9 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/ToggleComponentAction.java @@ -0,0 +1,57 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.actions; + +import java.awt.event.ActionEvent; +import javax.swing.JEditorPane; +import javax.swing.text.JTextComponent; +import jsyntaxpane.DefaultSyntaxKit; + +/** + * This Action will Toggle any SyntaxComponents on the EditorPane + * You need the configuration Key prefix.ACTION_NAME.Component = componentclassname + * Where: + * ACTION_NAME is the name given to the action (prefix.Action.ACTION_NAME) + * componentclassname is the fully qualified class name of the component + * @author Ayman Al-Sairafi + */ +public class ToggleComponentAction extends DefaultSyntaxAction { + + private String componentName; + + public ToggleComponentAction() { + super("toggle-component"); + putValue(SELECTED_KEY, Boolean.TRUE); + } + + public void setComponent(String name) { + componentName = name; + } + + @Override + public String toString() { + return super.toString() + "(" + componentName + ")"; + } + + @Override + public void actionPerformed(ActionEvent e) { + JTextComponent target = getTextComponent(e); + if (target instanceof JEditorPane) { + JEditorPane jEditorPane = (JEditorPane) target; + DefaultSyntaxKit kit = (DefaultSyntaxKit) jEditorPane.getEditorKit(); + boolean status = kit.toggleComponent(jEditorPane, componentName); + putValue(SELECTED_KEY, status); + } + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/UndoAction.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/UndoAction.java new file mode 100644 index 000000000..aa8c07985 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/UndoAction.java @@ -0,0 +1,38 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.actions; + +import java.awt.event.ActionEvent; +import javax.swing.text.JTextComponent; +import javax.swing.text.TextAction; +import jsyntaxpane.SyntaxDocument; +import jsyntaxpane.util.Configuration; + +/** + * Undo action + */ +public class UndoAction extends DefaultSyntaxAction { + + public UndoAction() { + super("UNDO"); + } + + @Override + public void actionPerformed(JTextComponent target, SyntaxDocument sDoc, + int dot, ActionEvent e) { + if (sDoc != null) { + sDoc.doUndo(); + } + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/UnindentAction.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/UnindentAction.java new file mode 100644 index 000000000..2fedf3bef --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/UnindentAction.java @@ -0,0 +1,51 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.actions; + +import java.awt.event.ActionEvent; +import javax.swing.text.JTextComponent; +import jsyntaxpane.SyntaxDocument; + +/** + * This is usually mapped to Shift-TAB to unindent the selection. The + * current line, or the selected lines are un-indented by the tabstop of the + * document. + */ +public class UnindentAction extends DefaultSyntaxAction { + + public UnindentAction() { + super("UNINDENT"); + } + + @Override + public void actionPerformed(JTextComponent target, SyntaxDocument sDoc, + int dot, ActionEvent e) { + String indent = ActionUtils.getTab(target); + String[] lines = ActionUtils.getSelectedLines(target); + int start = target.getSelectionStart(); + StringBuilder sb = new StringBuilder(); + for (String line : lines) { + if (line.startsWith(indent)) { + sb.append(line.substring(indent.length())); + } else if (line.startsWith("\t")) { + sb.append(line.substring(1)); + } else { + sb.append(line); + } + sb.append('\n'); + } + target.replaceSelection(sb.toString()); + target.select(start, start + sb.length()); + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/XmlPrettifyAction.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/XmlPrettifyAction.java new file mode 100644 index 000000000..5506658f8 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/XmlPrettifyAction.java @@ -0,0 +1,140 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.actions; + +import java.awt.Component; +import java.awt.event.ActionEvent; +import java.io.IOException; +import java.io.StringReader; +import java.io.StringWriter; +import javax.swing.JOptionPane; +import javax.swing.SwingUtilities; +import javax.swing.text.JTextComponent; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.OutputKeys; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerConfigurationException; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; +import jsyntaxpane.SyntaxDocument; +import org.w3c.dom.Document; +import org.xml.sax.InputSource; +import org.xml.sax.SAXException; +import org.xml.sax.SAXParseException; + +/** + * Attempt to prettify an XML document. + * @author Ayman Al-Sairafi + */ +public class XmlPrettifyAction extends DefaultSyntaxAction { + + public XmlPrettifyAction() { + super("XML_PRETTIFY"); + } + + @Override + public void actionPerformed(ActionEvent e) { + if (transformer == null) { + return; + } + JTextComponent target = getTextComponent(e); + try { + SyntaxDocument sdoc = ActionUtils.getSyntaxDocument(target); + StringWriter out = new StringWriter(sdoc.getLength()); + StringReader reader = new StringReader(target.getText()); + InputSource src = new InputSource(reader); + Document doc = getDocBuilder().parse(src); + //Setup indenting to "pretty print" + getTransformer().transform(new DOMSource(doc), new StreamResult(out)); + target.setText(out.toString()); + } catch (SAXParseException ex) { + showErrorMessage(target, + String.format("XML error: %s\nat(%d, %d)", + ex.getMessage(), ex.getLineNumber(), ex.getColumnNumber())); + ActionUtils.setCaretPosition(target, ex.getLineNumber(), ex.getColumnNumber() - 1); + } catch (TransformerException ex) { + showErrorMessage(target, ex.getMessageAndLocation()); + } catch (SAXException ex) { + showErrorMessage(target, ex.getLocalizedMessage()); + } catch (IOException ex) { + showErrorMessage(target, ex.getLocalizedMessage()); + } + } + static Transformer transformer; + static DocumentBuilderFactory docBuilderFactory; + static DocumentBuilder docBuilder; + + private static void showErrorMessage(JTextComponent text, String msg) { + Component parent = SwingUtilities.getWindowAncestor(text); + JOptionPane.showMessageDialog(parent, msg, "JsyntaxPAne XML", JOptionPane.ERROR_MESSAGE); + } + + public static Transformer getTransformer() { + if (transformer == null) { + TransformerFactory tfactory = TransformerFactory.newInstance(); + try { + transformer = tfactory.newTransformer(); + } catch (TransformerConfigurationException ex) { + throw new IllegalArgumentException("Unable to create transformer. ", ex); + } + } + return transformer; + } + + public void setIndent(String text) { + getTransformer().setOutputProperty(OutputKeys.INDENT, text); + } + + public void setStandAlone(String text) { + getTransformer().setOutputProperty(OutputKeys.STANDALONE, text); + } + + public void setSOmitDeclaration(String text) { + getTransformer().setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, text); + } + + public void setIndentAmount(String text) { + getTransformer().setOutputProperty("{http://xml.apache.org/xslt}indent-amount", text); + } + + public void setIgnoreComments(String ic) { + getDocBuilderFactory().setIgnoringComments(Boolean.parseBoolean(ic)); + } + + public void setIgnoreWhiteSpace(String value) { + getDocBuilderFactory().setIgnoringElementContentWhitespace(Boolean.parseBoolean(value)); + } + + public static DocumentBuilderFactory getDocBuilderFactory() { + if (docBuilderFactory == null) { + docBuilderFactory = DocumentBuilderFactory.newInstance(); + } + return docBuilderFactory; + } + + public DocumentBuilder getDocBuilder() { + if (docBuilder == null) { + try { + docBuilder = getDocBuilderFactory().newDocumentBuilder(); + } catch (ParserConfigurationException ex) { + throw new IllegalArgumentException("Unable to create document builder", ex); + } + } + return docBuilder; + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/XmlTagCompleteAction.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/XmlTagCompleteAction.java new file mode 100644 index 000000000..6d6177420 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/XmlTagCompleteAction.java @@ -0,0 +1,48 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.actions; + +import java.awt.event.ActionEvent; +import javax.swing.text.JTextComponent; +import jsyntaxpane.SyntaxDocument; +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + +/** + * Completes an the Tag. + * @author Ayman Al-Sairafi + */ +public class XmlTagCompleteAction extends DefaultSyntaxAction { + + public XmlTagCompleteAction() { + super("XML_TAG_COMPLETE"); + } + + @Override + public void actionPerformed(JTextComponent target, SyntaxDocument sDoc, + int dot, ActionEvent e) { + Token tok = sDoc.getTokenAt(dot); + while (tok != null && tok.type != TokenType.TYPE) { + tok = sDoc.getPrevToken(tok); + } + if (tok == null) { + target.replaceSelection(">"); + } else { + CharSequence tag = tok.getText(sDoc); + int savepos = target.getSelectionStart(); + target.replaceSelection(">"); + target.setCaretPosition(savepos + 1); + } + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/ComboCompletionDialog.form b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/ComboCompletionDialog.form new file mode 100644 index 000000000..45854eec9 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/ComboCompletionDialog.form @@ -0,0 +1,71 @@ + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/ComboCompletionDialog.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/ComboCompletionDialog.java new file mode 100644 index 000000000..952ab10ce --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/ComboCompletionDialog.java @@ -0,0 +1,247 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.actions.gui; + +import java.awt.Font; +import java.awt.Point; +import java.awt.Rectangle; +import java.awt.Window; +import java.awt.event.KeyEvent; +import java.util.List; +import java.util.Vector; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.swing.SwingUtilities; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; +import javax.swing.text.BadLocationException; +import javax.swing.text.JTextComponent; +import jsyntaxpane.actions.ActionUtils; +import jsyntaxpane.util.StringUtils; +import jsyntaxpane.util.SwingUtils; + +/** + * + * @author Ayman Al-Sairafi + */ +public class ComboCompletionDialog + extends javax.swing.JDialog implements EscapeListener { + + /** + * The result returned to the caller + */ + private String result = null; + /** + * Our target component + */ + private JTextComponent target; + public String escapeChars = ";(= \t\n\r"; + public List items; + + /** + * Creates new form ComboCompletionDialog + * @param target + */ + public ComboCompletionDialog(JTextComponent target) { + super(ActionUtils.getFrameFor(target), true); + initComponents(); + jTxtItem.getDocument().addDocumentListener(new DocumentListener() { + + @Override + public void insertUpdate(DocumentEvent e) { + refilterList(); + } + + @Override + public void removeUpdate(DocumentEvent e) { + refilterList(); + } + + @Override + public void changedUpdate(DocumentEvent e) { + refilterList(); + } + }); + // This will allow the textfield to receive TAB keys + jTxtItem.setFocusTraversalKeysEnabled(false); + this.target = target; + SwingUtils.addEscapeListener(this); + } + + /** + * Display the Completion Dialog with initial abbrev and using the given items + * The dialog is responsible for showing itself and for updating the target + * with the text, depending on user actions. + * + * The dialog will be aligned to the selectionStart of the target component + * and when a selection is made, replaceSelection will be called on dialog + * + * @param abbrev + * @param items + */ + public void displayFor(String abbrev, List items) { + this.items = items; + try { + Window window = SwingUtilities.getWindowAncestor(target); + Rectangle rt = target.modelToView(target.getSelectionStart()); + Point loc = new Point(rt.x, rt.y); + setLocationRelativeTo(window); + // convert the location from Text Componet coordinates to + // Frame coordinates... + loc = SwingUtilities.convertPoint(target, loc, window); + // and then to Screen coordinates + SwingUtilities.convertPointToScreen(loc, window); + setLocation(loc); + } catch (BadLocationException ex) { + Logger.getLogger(ComboCompletionDialog.class.getName()).log(Level.SEVERE, null, ex); + } finally { + Font font = target.getFont(); + jTxtItem.setFont(font); + jLstItems.setFont(font); + doLayout(); + jTxtItem.setText(abbrev); + refilterList(); + setVisible(true); + } + } + + private void refilterList() { + String prefix = jTxtItem.getText(); + Vector filtered = new Vector(); + Object selected = jLstItems.getSelectedValue(); + for (String s : items) { + if (StringUtils.camelCaseMatch(s, prefix)) { + filtered.add(s); + } + } + jLstItems.setListData(filtered); + if (selected != null && filtered.contains(selected)) { + jLstItems.setSelectedValue(selected, true); + } else { + jLstItems.setSelectedIndex(0); + } + } + + /** 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() { + + jTxtItem = new javax.swing.JTextField(); + jScrollPane1 = new javax.swing.JScrollPane(); + jLstItems = new javax.swing.JList(); + + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + setResizable(false); + setUndecorated(true); + + jTxtItem.setBorder(null); + jTxtItem.addKeyListener(new java.awt.event.KeyAdapter() { + public void keyPressed(java.awt.event.KeyEvent evt) { + jTxtItemKeyPressed(evt); + } + }); + + jLstItems.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); + jLstItems.setFocusable(false); + jLstItems.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + jLstItemsMouseClicked(evt); + } + }); + jScrollPane1.setViewportView(jLstItems); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jTxtItem, javax.swing.GroupLayout.DEFAULT_SIZE, 375, Short.MAX_VALUE) + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 375, Short.MAX_VALUE) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addComponent(jTxtItem, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(0, 0, 0) + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 111, Short.MAX_VALUE)) + ); + + pack(); + }// //GEN-END:initComponents + + private void jTxtItemKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTxtItemKeyPressed + + int i = jLstItems.getSelectedIndex(); + switch (evt.getKeyCode()) { + case KeyEvent.VK_ESCAPE: + result = jTxtItem.getText(); + target.replaceSelection(result); + setVisible(false); + return; + case KeyEvent.VK_DOWN: + if (i < jLstItems.getModel().getSize() - 1) { + i++; + } + jLstItems.setSelectedIndex(i); + jLstItems.ensureIndexIsVisible(i); + break; + case KeyEvent.VK_UP: + if (i > 0) { + i--; + } + jLstItems.setSelectedIndex(i); + jLstItems.ensureIndexIsVisible(i); + break; + } + + if (escapeChars.indexOf(evt.getKeyChar()) >= 0) { + if (jLstItems.getSelectedIndex() >= 0) { + result = jLstItems.getSelectedValue().toString(); + } else { + result = jTxtItem.getText(); + } + char pressed = evt.getKeyChar(); + // we need to just accept ENTER, and replace the tab with a single + // space + if (pressed != '\n') { + result += (pressed == '\t') ? ' ' : pressed; + } + target.replaceSelection(result); + setVisible(false); + } + }//GEN-LAST:event_jTxtItemKeyPressed + + private void jLstItemsMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLstItemsMouseClicked + if(evt.getClickCount() == 2) { + String selected = jLstItems.getSelectedValue().toString(); + target.replaceSelection(selected); + setVisible(false); + } + }//GEN-LAST:event_jLstItemsMouseClicked + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JList jLstItems; + private javax.swing.JScrollPane jScrollPane1; + private javax.swing.JTextField jTxtItem; + // End of variables declaration//GEN-END:variables + + @Override + public void escapePressed() { + setVisible(false); + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/EscapeListener.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/EscapeListener.java new file mode 100644 index 000000000..86a129ecf --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/EscapeListener.java @@ -0,0 +1,31 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jsyntaxpane.actions.gui; + +import javax.swing.RootPaneContainer; + +/** + * This interface is used by dialogs that will need to listen to ESC key. + * When the ESC key is pressed, escapePressed is called. + * @author Ayman Al-Sairafi + */ +public interface EscapeListener extends RootPaneContainer { + + /** + * This method will be called when ESC key is pressed. + */ + public void escapePressed(); + +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/GotoLineDialog.form b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/GotoLineDialog.form new file mode 100644 index 000000000..6a19bf095 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/GotoLineDialog.form @@ -0,0 +1,74 @@ + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/GotoLineDialog.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/GotoLineDialog.java new file mode 100644 index 000000000..e57b8b310 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/GotoLineDialog.java @@ -0,0 +1,152 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.actions.gui; + +import java.lang.ref.WeakReference; +import jsyntaxpane.actions.*; +import javax.swing.JOptionPane; +import javax.swing.text.JTextComponent; +import jsyntaxpane.util.SwingUtils; + +/** + * A simple dialog to prompt for a line number and go to it + * @author Ayman Al-Sairafi + */ +public class GotoLineDialog + extends javax.swing.JDialog implements EscapeListener { + + private static final String PROPERTY_KEY = "GOTOLINE_DIALOG"; + private WeakReference text; + + /** + * Creates new form GotoLineDialog + * @param text + */ + private GotoLineDialog(JTextComponent text) { + super(ActionUtils.getFrameFor(text), false); + initComponents(); + this.text = new WeakReference(text); + setLocationRelativeTo(text.getRootPane()); + getRootPane().setDefaultButton(jBtnOk); + text.getDocument().putProperty(PROPERTY_KEY, this); + SwingUtils.addEscapeListener(this); + } + + /** 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() { + + jCmbLineNumbers = new javax.swing.JComboBox(); + jBtnOk = new javax.swing.JButton(); + + setTitle("Goto Line"); + setModal(true); + setName(""); // NOI18N + setResizable(false); + + jCmbLineNumbers.setEditable(true); + jCmbLineNumbers.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jCmbLineNumbersActionPerformed(evt); + } + }); + + jBtnOk.setAction(jCmbLineNumbers.getAction()); + jBtnOk.setText("Go"); + jBtnOk.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jBtnOkActionPerformed(evt); + } + }); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addComponent(jCmbLineNumbers, javax.swing.GroupLayout.PREFERRED_SIZE, 104, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jBtnOk, javax.swing.GroupLayout.DEFAULT_SIZE, 47, Short.MAX_VALUE) + .addContainerGap()) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jCmbLineNumbers, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jBtnOk, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + + pack(); + }// //GEN-END:initComponents + + private void setTextPos() { + Object line = jCmbLineNumbers.getSelectedItem(); + if (line != null) { + try { + int lineNr = Integer.parseInt(line.toString()); + ActionUtils.insertIntoCombo(jCmbLineNumbers, line); + ActionUtils.setCaretPosition(text.get(), lineNr, 0); + setVisible(false); + } catch (NumberFormatException ex) { + JOptionPane.showMessageDialog(this, "Invalid Number: " + line, + "Number Error", JOptionPane.ERROR_MESSAGE); + } + } + } + + private void jCmbLineNumbersActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCmbLineNumbersActionPerformed + if (evt.getActionCommand().equals("comboBoxEdited")) { + setTextPos(); + } + }//GEN-LAST:event_jCmbLineNumbersActionPerformed + + private void jBtnOkActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBtnOkActionPerformed + setTextPos(); + }//GEN-LAST:event_jBtnOkActionPerformed + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton jBtnOk; + private javax.swing.JComboBox jCmbLineNumbers; + // End of variables declaration//GEN-END:variables + + /** + * Create or return the GotoLine dialog for a given ext component + * @param text + */ + public static void showForEditor(JTextComponent text) { + GotoLineDialog dlg = null; + if (text.getDocument().getProperty(PROPERTY_KEY) == null) { + dlg = new GotoLineDialog(text); + } else { + dlg = (GotoLineDialog) text.getDocument().getProperty(PROPERTY_KEY); + } + dlg.jCmbLineNumbers.requestFocusInWindow(); + dlg.setVisible(true); + + } + + @Override + public void escapePressed() { + setVisible(false); + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/HTMLPreviewFrame.form b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/HTMLPreviewFrame.form new file mode 100644 index 000000000..dc0a74e2a --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/HTMLPreviewFrame.form @@ -0,0 +1,55 @@ + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/HTMLPreviewFrame.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/HTMLPreviewFrame.java new file mode 100644 index 000000000..5b7253ec1 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/HTMLPreviewFrame.java @@ -0,0 +1,114 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.actions.gui; + +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; +import javax.swing.text.BadLocationException; +import javax.swing.text.Document; +import jsyntaxpane.actions.HTMLPreviewAction; + +/** + * + * @author Ayman Al-Sairafi + */ +public class HTMLPreviewFrame extends javax.swing.JFrame implements DocumentListener { + + Document doc; + /** + * Creates new form HTMLPreviewFrame + * @param doc + */ + public HTMLPreviewFrame(Document doc) { + initComponents(); + this.doc = doc; + doc.addDocumentListener(this); + updateHTML(); + } + + private void updateHTML() { + try { + jEdtHtml.setText(doc.getText(0, doc.getLength())); + } catch (BadLocationException ex) { + Logger.getLogger(HTMLPreviewFrame.class.getName()).log(Level.SEVERE, null, ex); + } + } + + /** + * 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() { + + jScrollPane1 = new javax.swing.JScrollPane(); + jEdtHtml = new javax.swing.JEditorPane(); + + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + setTitle("HTML Preview"); + addWindowListener(new java.awt.event.WindowAdapter() { + public void windowClosed(java.awt.event.WindowEvent evt) { + onWindowClosed(evt); + } + }); + + jEdtHtml.setContentType("text/html"); + jEdtHtml.setEditable(false); + jScrollPane1.setViewportView(jEdtHtml); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 688, Short.MAX_VALUE) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 449, Short.MAX_VALUE) + ); + + pack(); + }// //GEN-END:initComponents + + private void onWindowClosed(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_onWindowClosed + doc.removeDocumentListener(this); + doc.putProperty(HTMLPreviewAction.HTML_PREVIEW_WINDOW, null); + doc = null; + }//GEN-LAST:event_onWindowClosed + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JEditorPane jEdtHtml; + private javax.swing.JScrollPane jScrollPane1; + // End of variables declaration//GEN-END:variables + + @Override + public void insertUpdate(DocumentEvent e) { + updateHTML(); + } + + @Override + public void removeUpdate(DocumentEvent e) { + updateHTML(); + } + + @Override + public void changedUpdate(DocumentEvent e) { + updateHTML(); + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/MemberCell.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/MemberCell.java new file mode 100644 index 000000000..880878a13 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/MemberCell.java @@ -0,0 +1,258 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.actions.gui; + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.FontMetrics; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Image; +import java.lang.reflect.Constructor; +import java.lang.reflect.Field; +import java.lang.reflect.Member; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.net.URL; +import java.util.HashMap; +import java.util.Map; +import javax.swing.ImageIcon; +import javax.swing.JList; +import javax.swing.JPanel; +import jsyntaxpane.SyntaxView; +import jsyntaxpane.actions.ActionUtils; +import jsyntaxpane.util.ReflectUtils; + +/** + * This class will render a Member. There are Method, Field and Constructor subclasses + * @author Ayman Al-Sairafi + */ +abstract class MemberCell extends JPanel { + + private final JList list; + private final boolean isSelected; + private final Color backColor; + private final Member member; + private final Class theClass; + + public MemberCell(JList list, boolean isSelected, Color backColor, Member member, Class clazz) { + super(); + this.list = list; + this.isSelected = isSelected; + this.backColor = backColor; + this.member = member; + this.theClass = clazz; + } + + @Override + public void paintComponent(Graphics g) { + SyntaxView.setRenderingHits((Graphics2D) g); + g.setFont(list.getFont()); + super.paintComponent(g); + FontMetrics fm = g.getFontMetrics(); + g.setColor(isSelected ? list.getSelectionBackground() : backColor); + g.fillRect(0, 0, getWidth(), getHeight()); + g.setColor(isSelected ? list.getSelectionForeground() : list.getForeground()); + g.drawImage(getIcon(), 2, 0, null); + int x = 6 + getIcon().getWidth(this); + int y = fm.getHeight(); + if (member.getDeclaringClass().equals(theClass)) { + Font bold = list.getFont().deriveFont(Font.BOLD); + g.setFont(bold); + } + x = drawString(getMemberName(), x, y, g); + g.setFont(list.getFont()); + x = drawString(getArguments(), x, y, g); + String right = getReturnType(); + int rw = fm.stringWidth(right); + g.drawString(right, getWidth() - rw - 4, fm.getAscent()); + } + + @Override + public Dimension getPreferredSize() { + Font font = list.getFont(); + Graphics g = getGraphics(); + FontMetrics fm = g.getFontMetrics(font); + // total text for this component: + String total = getMemberName() + getArguments() + getReturnType() + " "; + return new Dimension(fm.stringWidth(total) + 20, Math.max(fm.getHeight(), 16)); + } + + private int drawString(String string, int x, int y, Graphics g) { + if(ActionUtils.isEmptyOrBlanks(string)) { + return x; + } + int w = g.getFontMetrics().stringWidth(string); + g.drawString(string, x, y); + return x + w; + } + + /** + * Read all relevant icons and returns the Map. The loc should contain the + * fully qualified URL for the icons. The icon names read will have the words + * _private, protected, _static, _static_private and _static_protected and the + * extension ".png" appended. + * @param loc root for icon locations + * @return Map (can be used directly with getModifiers & 0xf) + */ + Map readIcons(String loc) { + Map icons = new HashMap(); + icons.put(Modifier.PUBLIC, readImage(loc, "")); + icons.put(Modifier.PRIVATE, readImage(loc, "_private")); + icons.put(Modifier.PROTECTED, readImage(loc, "_protected")); + icons.put(Modifier.STATIC | Modifier.PUBLIC, readImage(loc, "_static")); + icons.put(Modifier.STATIC | Modifier.PRIVATE, readImage(loc, "_static_private")); + icons.put(Modifier.STATIC | Modifier.PROTECTED, readImage(loc, "_static_protected")); + return icons; + } + + private Image readImage(String iconLoc, String kind) { + String fullPath = iconLoc + kind + ".png"; + URL loc = this.getClass().getResource(fullPath); + if (loc == null) { + return null; + } else { + Image i = new ImageIcon(loc).getImage(); + return i; + } + } + + protected String getMemberName() { + return member.getName(); + } + + abstract protected String getArguments(); + + abstract protected String getReturnType(); + + abstract protected Image getIcon(); +} + +/** + * Renders a Method + * @author Ayman Al-Sairafi + */ +class MethodCell extends MemberCell { + + private final Method method; + + public MethodCell(JList list, boolean isSelected, Color backColor, Method method, Class clazz) { + super(list, isSelected, backColor, method, clazz); + this.method = method; + } + + @Override + protected String getArguments() { + return ReflectUtils.getParamsString(method.getParameterTypes()); + } + + @Override + protected String getReturnType() { + return method.getReturnType().getSimpleName(); + } + + @Override + protected Image getIcon() { + int type = method.getModifiers() & 0xf; // only get public/private/protected/static + if (icons == null) { + icons = readIcons(METHOD_ICON_LOC); + } + return icons.get(type); + } + private static Map icons = null; + public static final String METHOD_ICON_LOC = "/META-INF/images/completions/method"; +} + +/** + * Renders a Field + * @author Ayman Al-Sairafi + */ +class FieldCell extends MemberCell { + + private final Field field; + + public FieldCell(JList list, boolean isSelected, Color backColor, Field field, Class clazz) { + super(list, isSelected, backColor, field, clazz); + this.field = field; + } + + @Override + protected String getArguments() { + return ""; + } + + @Override + protected String getReturnType() { + return field.getType().getSimpleName(); + } + + @Override + protected Image getIcon() { + int type = field.getModifiers() & 0xf; // only get public/private/protected/static + if (icons == null) { + icons = readIcons(FIELD_ICON_LOC); + } + if (icons.get(type) == null) { + System.err.println("Unable to get icon for type: " + field.getModifiers()); + } + return icons.get(type); + } + private static Map icons = null; + public static final String FIELD_ICON_LOC = "/META-INF/images/completions/field"; +} + +/** + * Renders a Field + * @author Ayman Al-Sairafi + */ +class ConstructorCell extends MemberCell { + + private final Constructor cons; + + public ConstructorCell(JList list, boolean isSelected, Color backColor, Constructor cons, Class clazz) { + super(list, isSelected, backColor, cons, clazz); + this.cons = cons; + } + + @Override + protected String getMemberName() { + return cons.getDeclaringClass().getSimpleName(); + } + + @Override + protected String getArguments() { + return ReflectUtils.getParamsString(cons.getParameterTypes()); + } + + @Override + protected String getReturnType() { + return cons.getDeclaringClass().getSimpleName(); + } + + @Override + protected Image getIcon() { + int type = cons.getModifiers() & 0x7; // only get public/private/protected, mask out static + if (icons == null) { + icons = readIcons(FIELD_ICON_LOC); + } + if (icons.get(type) == null) { + System.out.println("Unable to get icon for type: " + cons.getModifiers()); + } + return icons.get(type); + } + + private static Map icons = null; + public static final String FIELD_ICON_LOC = "/META-INF/images/completions/constructor"; +} \ No newline at end of file diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/MembersListRenderer.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/MembersListRenderer.java new file mode 100644 index 000000000..b363b4f93 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/MembersListRenderer.java @@ -0,0 +1,52 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.actions.gui; + +import java.awt.Color; +import java.awt.Component; +import java.lang.reflect.Constructor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import javax.swing.DefaultListCellRenderer; +import javax.swing.JList; + +class MembersListRenderer extends DefaultListCellRenderer { + + static final Color evensColor = new Color(0xeeffee); + private ReflectCompletionDialog dlg; + + public MembersListRenderer(ReflectCompletionDialog dlg) { + this.dlg = dlg; + } + + @Override + public Component getListCellRendererComponent(final JList list, Object value, final int index, + final boolean isSelected, boolean cellHasFocus) { + Color back = (index % 2 == 1) ? list.getBackground() : evensColor; + if (value instanceof Method) { + final Method method = (Method) value; + return new MethodCell(list, isSelected, back, method, dlg.getTheClass()); + } else if (value instanceof Field) { + Field field = (Field) value; + return new FieldCell(list, isSelected, back, field, dlg.getTheClass()); + } else if (value instanceof Constructor) { + Constructor cons = (Constructor) value; + return new ConstructorCell(list, isSelected, back, cons, dlg.getTheClass()); + } else { + Component comp = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); + comp.setBackground(back); + return comp; + } + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/QuickFindDialog.form b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/QuickFindDialog.form new file mode 100644 index 000000000..0d6c4ac2b --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/QuickFindDialog.form @@ -0,0 +1,168 @@ + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/QuickFindDialog.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/QuickFindDialog.java new file mode 100644 index 000000000..8e69da492 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/QuickFindDialog.java @@ -0,0 +1,314 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.actions.gui; + +import java.awt.Color; +import java.awt.Container; +import java.awt.Dimension; +import java.awt.Point; +import java.awt.Rectangle; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.lang.ref.WeakReference; +import java.util.regex.Pattern; +import java.util.regex.PatternSyntaxException; +import javax.swing.JCheckBox; +import javax.swing.JComponent; +import javax.swing.SwingUtilities; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; +import javax.swing.text.BadLocationException; +import javax.swing.text.JTextComponent; +import jsyntaxpane.actions.ActionUtils; +import jsyntaxpane.actions.DocumentSearchData; +import jsyntaxpane.components.Markers; +import jsyntaxpane.components.Markers.SimpleMarker; +import jsyntaxpane.util.SwingUtils; + +/** + * QuickFind Dialog. Firefox like dialog shown at bottom of editor. + * @author Ayman Al-Sairafi + */ +public class QuickFindDialog extends javax.swing.JDialog + implements DocumentListener, ActionListener, EscapeListener { + + private SimpleMarker marker = new SimpleMarker(Color.PINK); + private WeakReference target; + private WeakReference dsd; + private int oldCaretPosition; + /** + * This will be set to true if ESC key is used to quit the form. + * In that case, the caret will be restored to its old pos, otherwise + * it will remain where the user probably clicked. + */ + private boolean escaped = false; + + /** + * Creates new form QuickFindDialog + * + * @param target + * @param data search data + */ + public QuickFindDialog(final JTextComponent target, DocumentSearchData data) { + super(ActionUtils.getFrameFor(target), false); + initComponents(); + SwingUtils.addEscapeListener(this); + dsd = new WeakReference(data); + } + + public void showFor(final JTextComponent target) { + oldCaretPosition = target.getCaretPosition(); + Container view = target.getParent(); + Dimension wd = getSize(); + wd.width = target.getVisibleRect().width; + Point loc = new Point(0, view.getHeight()); + setSize(wd); + setLocationRelativeTo(view); + SwingUtilities.convertPointToScreen(loc, view); + setLocation(loc); + jTxtFind.setFont(target.getFont()); + jTxtFind.getDocument().addDocumentListener(this); + WindowAdapter closeListener = new WindowAdapter() { + + @Override + public void windowDeactivated(WindowEvent e) { + target.getDocument().removeDocumentListener(QuickFindDialog.this); + Markers.removeMarkers(target, marker); + if (escaped) { + Rectangle aRect; + try { + aRect = target.modelToView(oldCaretPosition); + target.setCaretPosition(oldCaretPosition); + target.scrollRectToVisible(aRect); + } catch (BadLocationException ex) { + } + } + dispose(); + } + }; + addWindowListener(closeListener); + this.target = new WeakReference(target); + Pattern p = dsd.get().getPattern(); + if (p != null) { + jTxtFind.setText(p.pattern()); + } + jChkWrap.setSelected(dsd.get().isWrap()); + setVisible(true); + } + + /** + * 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() { + + jToolBar1 = new javax.swing.JToolBar(); + jSeparator1 = new javax.swing.JToolBar.Separator(); + jLabel1 = new javax.swing.JLabel(); + jSeparator2 = new javax.swing.JToolBar.Separator(); + jTxtFind = new javax.swing.JTextField(); + jSeparator3 = new javax.swing.JToolBar.Separator(); + jBtnPrev = new javax.swing.JButton(); + jBtnNext = new javax.swing.JButton(); + jChkIgnoreCase = new javax.swing.JCheckBox(); + jChkRegExp = new javax.swing.JCheckBox(); + jChkWrap = new javax.swing.JCheckBox(); + jSeparator4 = new javax.swing.JToolBar.Separator(); + jLblStatus = new javax.swing.JLabel(); + + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + setBackground(java.awt.Color.darkGray); + setName("QuickFindDialog"); // NOI18N + setResizable(false); + setUndecorated(true); + + jToolBar1.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + jToolBar1.setFloatable(false); + jToolBar1.setRollover(true); + jToolBar1.add(jSeparator1); + + jLabel1.setLabelFor(jTxtFind); + jLabel1.setText("Quick Find"); + jToolBar1.add(jLabel1); + jToolBar1.add(jSeparator2); + + jTxtFind.setColumns(30); + jTxtFind.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); + jTxtFind.setMaximumSize(new java.awt.Dimension(200, 24)); + jTxtFind.setMinimumSize(new java.awt.Dimension(60, 24)); + jToolBar1.add(jTxtFind); + jToolBar1.add(jSeparator3); + + jBtnPrev.setIcon(new javax.swing.ImageIcon(getClass().getResource("/META-INF/images/small-icons/go-up.png"))); // NOI18N + jBtnPrev.setFocusable(false); + jBtnPrev.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); + jBtnPrev.setOpaque(false); + jBtnPrev.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); + jBtnPrev.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jBtnPrevActionPerformed(evt); + } + }); + jToolBar1.add(jBtnPrev); + + jBtnNext.setIcon(new javax.swing.ImageIcon(getClass().getResource("/META-INF/images/small-icons/go-down.png"))); // NOI18N + jBtnNext.setFocusable(false); + jBtnNext.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); + jBtnNext.setMargin(new java.awt.Insets(2, 2, 2, 2)); + jBtnNext.setOpaque(false); + jBtnNext.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); + jBtnNext.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jBtnNextActionPerformed(evt); + } + }); + jToolBar1.add(jBtnNext); + + jChkIgnoreCase.setMnemonic('C'); + jChkIgnoreCase.setText("Ignore Case"); + jChkIgnoreCase.setFocusable(false); + jChkIgnoreCase.setOpaque(false); + jChkIgnoreCase.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); + jToolBar1.add(jChkIgnoreCase); + jChkIgnoreCase.addActionListener(this); + + jChkRegExp.setMnemonic('R'); + jChkRegExp.setText("Reg Exp"); + jChkRegExp.setFocusable(false); + jChkRegExp.setOpaque(false); + jChkRegExp.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); + jToolBar1.add(jChkRegExp); + jChkRegExp.addActionListener(this); + + jChkWrap.setMnemonic('W'); + jChkWrap.setText("Wrap"); + jChkWrap.setFocusable(false); + jChkWrap.setOpaque(false); + jChkWrap.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); + jToolBar1.add(jChkWrap); + jChkWrap.addActionListener(this); + + jToolBar1.add(jSeparator4); + + jLblStatus.setFont(jLblStatus.getFont().deriveFont(jLblStatus.getFont().getStyle() | java.awt.Font.BOLD, jLblStatus.getFont().getSize()-2)); + jLblStatus.setForeground(java.awt.Color.red); + jToolBar1.add(jLblStatus); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jToolBar1, javax.swing.GroupLayout.DEFAULT_SIZE, 684, Short.MAX_VALUE) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jToolBar1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + ); + + pack(); + }// //GEN-END:initComponents + + private void jBtnNextActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBtnNextActionPerformed + if (dsd.get().doFindNext(target.get())) { + jLblStatus.setText(null); + } else { + jLblStatus.setText("not found"); + } +}//GEN-LAST:event_jBtnNextActionPerformed + + private void jBtnPrevActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBtnPrevActionPerformed + if (dsd.get().doFindPrev(target.get())) { + jLblStatus.setText(null); + } else { + jLblStatus.setText("not found"); + } +}//GEN-LAST:event_jBtnPrevActionPerformed + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton jBtnNext; + private javax.swing.JButton jBtnPrev; + private javax.swing.JCheckBox jChkIgnoreCase; + private javax.swing.JCheckBox jChkRegExp; + private javax.swing.JCheckBox jChkWrap; + private javax.swing.JLabel jLabel1; + private javax.swing.JLabel jLblStatus; + private javax.swing.JToolBar.Separator jSeparator1; + private javax.swing.JToolBar.Separator jSeparator2; + private javax.swing.JToolBar.Separator jSeparator3; + private javax.swing.JToolBar.Separator jSeparator4; + private javax.swing.JToolBar jToolBar1; + private javax.swing.JTextField jTxtFind; + // End of variables declaration//GEN-END:variables + + @Override + public void insertUpdate(DocumentEvent e) { + updateFind(); + } + + @Override + public void removeUpdate(DocumentEvent e) { + updateFind(); + } + + @Override + public void changedUpdate(DocumentEvent e) { + updateFind(); + } + + private void updateFind() { + JTextComponent t = target.get(); + DocumentSearchData d = dsd.get(); + String toFind = jTxtFind.getText(); + if (toFind == null || toFind.isEmpty()) { + jLblStatus.setText(null); + return; + } + try { + d.setWrap(jChkWrap.isSelected()); + d.setPattern(toFind, + jChkRegExp.isSelected(), + jChkIgnoreCase.isSelected()); + // The dsd doFindNext will always find from current pos, + // so we need to relocate to our saved pos before we call doFindNext + jLblStatus.setText(null); + t.setCaretPosition(oldCaretPosition); + if (!d.doFindNext(t)) { + jLblStatus.setText("Not found"); + } else { + jLblStatus.setText(null); + } + } catch (PatternSyntaxException e) { + jLblStatus.setText(e.getDescription()); + } + } + + @Override + public void actionPerformed(ActionEvent e) { + if (e.getSource() instanceof JCheckBox) { + updateFind(); + } + } + + @Override + public void escapePressed() { + escaped = true; + setVisible(false); + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/ReflectCompletionDialog.form b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/ReflectCompletionDialog.form new file mode 100644 index 000000000..3586fab96 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/ReflectCompletionDialog.form @@ -0,0 +1,95 @@ + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/ReflectCompletionDialog.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/ReflectCompletionDialog.java new file mode 100644 index 000000000..27443e8b2 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/ReflectCompletionDialog.java @@ -0,0 +1,342 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.actions.gui; + +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.ItemEvent; +import java.awt.event.KeyEvent; +import java.lang.reflect.Constructor; +import java.lang.reflect.Field; +import java.lang.reflect.Member; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.List; +import java.util.Vector; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.swing.SwingUtilities; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; +import javax.swing.text.BadLocationException; +import javax.swing.text.JTextComponent; +import jsyntaxpane.actions.ActionUtils; +import jsyntaxpane.util.ReflectUtils; +import jsyntaxpane.util.StringUtils; +import jsyntaxpane.util.SwingUtils; + +/** + * + * @author Ayman Al-Sairafi + */ +public class ReflectCompletionDialog + extends javax.swing.JDialog implements EscapeListener { + + /** + * The class we are displaying its members: + */ + private Class theClass; + /** + * The current filter, to avoid refiltering the items + */ + public String escapeChars = ";(= \t\n"; + public List items; + private final JTextComponent target; + + /** + * Creates new form ReflectCompletionDialog + * @param target Text component for this dialog + */ + public ReflectCompletionDialog(JTextComponent target) { + super(SwingUtilities.getWindowAncestor(target), ModalityType.APPLICATION_MODAL); + initComponents(); + this.target = target; + jTxtItem.getDocument().addDocumentListener(new DocumentListener() { + + @Override + public void insertUpdate(DocumentEvent e) { + refilterList(); + } + + @Override + public void removeUpdate(DocumentEvent e) { + refilterList(); + } + + @Override + public void changedUpdate(DocumentEvent e) { + refilterList(); + } + }); + // This will allow the textfield to receive TAB keys + jTxtItem.setFocusTraversalKeysEnabled(false); + // Add action so we automatically filter on comboBox Enter Key + jCmbClassName.getEditor().addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + updateItems(); + } + }); + SwingUtils.addEscapeListener(this); + } + + public void setFonts(Font font) { + jTxtItem.setFont(font); + jLstItems.setFont(font); + doLayout(); + } + + private String getSelection() { + String result; + if (jLstItems.getSelectedIndex() >= 0) { + Object selected = jLstItems.getSelectedValue(); + if (selected instanceof Method) { + result = ReflectUtils.getJavaCallString((Method) selected); + } else if (selected instanceof Constructor) { + result = ReflectUtils.getJavaCallString((Constructor) selected); + } else if (selected instanceof Field) { + result = ((Field) selected).getName(); + } else { + result = selected.toString(); + } + } else { + result = jTxtItem.getText(); + } + return result; + } + + private void refilterList() { + String prefix = jTxtItem.getText(); + Vector filtered = new Vector(); + Object selected = jLstItems.getSelectedValue(); + for (Member m : items) { + if (StringUtils.camelCaseMatch(m.getName(), prefix)) { + filtered.add(m); + } + } + jLstItems.setListData(filtered); + if (selected != null && filtered.contains(selected)) { + jLstItems.setSelectedValue(selected, true); + } else { + jLstItems.setSelectedIndex(0); + } + } + + /** 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() { + + jTxtItem = new javax.swing.JTextField(); + jScrollPane1 = new javax.swing.JScrollPane(); + jLstItems = new javax.swing.JList(); + jCmbClassName = new javax.swing.JComboBox(); + + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + setName("CompletionDialog"); // NOI18N + setResizable(false); + setUndecorated(true); + + jTxtItem.setBorder(null); + jTxtItem.addKeyListener(new java.awt.event.KeyAdapter() { + public void keyPressed(java.awt.event.KeyEvent evt) { + jTxtItemKeyPressed(evt); + } + }); + + jLstItems.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); + jLstItems.setCellRenderer(new jsyntaxpane.actions.gui.MembersListRenderer(this)); + jLstItems.setFocusable(false); + jLstItems.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + jLstItemsMouseClicked(evt); + } + }); + jScrollPane1.setViewportView(jLstItems); + + jCmbClassName.setEditable(true); + jCmbClassName.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Object", "String" })); + jCmbClassName.addItemListener(new java.awt.event.ItemListener() { + public void itemStateChanged(java.awt.event.ItemEvent evt) { + jCmbClassNameItemStateChanged(evt); + } + }); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jTxtItem, javax.swing.GroupLayout.DEFAULT_SIZE, 437, Short.MAX_VALUE) + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 437, Short.MAX_VALUE) + .addComponent(jCmbClassName, 0, 437, Short.MAX_VALUE) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addComponent(jTxtItem, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(0, 0, 0) + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 156, Short.MAX_VALUE) + .addGap(0, 0, 0) + .addComponent(jCmbClassName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + ); + + pack(); + }// //GEN-END:initComponents + + private void jTxtItemKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTxtItemKeyPressed + + int i = jLstItems.getSelectedIndex(); + switch (evt.getKeyCode()) { + case KeyEvent.VK_ESCAPE: + target.setCaretPosition(target.getSelectionEnd()); + setVisible(false); + return; + case KeyEvent.VK_DOWN: + i++; + break; + case KeyEvent.VK_UP: + i--; + break; + case KeyEvent.VK_HOME: + i = 0; + break; + case KeyEvent.VK_END: + i = jLstItems.getModel().getSize() - 1; + break; + case KeyEvent.VK_PAGE_DOWN: + i += jLstItems.getVisibleRowCount(); + break; + case KeyEvent.VK_PAGE_UP: + i -= jLstItems.getVisibleRowCount(); + break; + } + + if (escapeChars.indexOf(evt.getKeyChar()) >= 0) { + String result = getSelection(); + char pressed = evt.getKeyChar(); + // we need to just accept ENTER, and replace the tab with a single + // space + if (pressed != '\n') { + result += (pressed == '\t') ? ' ' : pressed; + } + target.replaceSelection(result); + setVisible(false); + } else { + // perform bounds checks for i + if (i >= jLstItems.getModel().getSize()) { + i = jLstItems.getModel().getSize() - 1; + } + if (i < 0) { + i = 0; + } + jLstItems.setSelectedIndex(i); + jLstItems.ensureIndexIsVisible(i); + } + }//GEN-LAST:event_jTxtItemKeyPressed + + private void jCmbClassNameItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_jCmbClassNameItemStateChanged + if (evt.getStateChange() == ItemEvent.SELECTED) { + updateItems(); + } + }//GEN-LAST:event_jCmbClassNameItemStateChanged + + private void jLstItemsMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLstItemsMouseClicked + if (evt.getClickCount() == 2) { + String selected = getSelection(); + target.replaceSelection(selected); + setVisible(false); + } + }//GEN-LAST:event_jLstItemsMouseClicked + + private void updateItems() { + String className = jCmbClassName.getEditor().getItem().toString(); + if (items == null) { + items = new ArrayList(); + } else { + items.clear(); + } + // we must have the class in the Combo: + Class aClass = ReflectUtils.findClass(className, ReflectUtils.DEFAULT_PACKAGES); + if (aClass != null) { + // for now, add everything: + theClass = aClass; + ReflectUtils.addConstrcutors(aClass, items); + ReflectUtils.addMethods(aClass, items); + ReflectUtils.addFields(aClass, items); + ActionUtils.insertIntoCombo(jCmbClassName, className); + jTxtItem.requestFocusInWindow(); + } + refilterList(); + } + + public Class getTheClass() { + return theClass; + } + + /** + * Set the items to display + * @param items + */ + public void setItems(List items) { + this.items = items; + } + + /** + * Display the dialog. + * @param target text component (its Window will be the parent) + */ + public void displayFor(JTextComponent target) { + try { + int dot = target.getSelectionStart(); + Window window = SwingUtilities.getWindowAncestor(target); + Rectangle rt = target.modelToView(dot); + Point loc = new Point(rt.x, rt.y); + // convert the location from Text Componet coordinates to + // Frame coordinates... + loc = SwingUtilities.convertPoint(target, loc, window); + // and then to Screen coordinates + SwingUtilities.convertPointToScreen(loc, window); + setLocationRelativeTo(window); + setLocation(loc); + } catch (BadLocationException ex) { + Logger.getLogger(ReflectCompletionDialog.class.getName()).log(Level.SEVERE, null, ex); + } finally { + setFonts(target.getFont()); + updateItems(); + jTxtItem.setText(target.getSelectedText()); + setVisible(true); + } + } + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JComboBox jCmbClassName; + private javax.swing.JList jLstItems; + private javax.swing.JScrollPane jScrollPane1; + private javax.swing.JTextField jTxtItem; + // End of variables declaration//GEN-END:variables + + @Override + public void escapePressed() { + target.setCaretPosition(target.getSelectionEnd()); + setVisible(false); + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/ReplaceDialog.form b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/ReplaceDialog.form new file mode 100644 index 000000000..12f823628 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/ReplaceDialog.form @@ -0,0 +1,202 @@ + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/ReplaceDialog.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/ReplaceDialog.java new file mode 100644 index 000000000..1de5ec7cc --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/ReplaceDialog.java @@ -0,0 +1,305 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.actions.gui; + +import jsyntaxpane.actions.*; +import jsyntaxpane.components.Markers; +import java.awt.Color; +import java.awt.HeadlessException; +import java.util.regex.PatternSyntaxException; +import javax.swing.JOptionPane; +import javax.swing.event.CaretEvent; +import javax.swing.event.CaretListener; +import javax.swing.text.JTextComponent; +import jsyntaxpane.util.SwingUtils; + +/** + * A Find and Replace Dialog. The dialog will also act as a listener to + * Document changes so that all highlights are updated if the document is + * changed. + * + * @author Ayman Al-Sairafi + */ +public class ReplaceDialog extends javax.swing.JDialog + implements CaretListener, EscapeListener { + + private JTextComponent textComponent; + private DocumentSearchData dsd; + private static Markers.SimpleMarker SEARCH_MARKER = new Markers.SimpleMarker(Color.YELLOW); + + /** + * Creates new form FindDialog + * @param text + * @param dsd DocumentSerachData + */ + public ReplaceDialog(JTextComponent text, + DocumentSearchData dsd) { + super(ActionUtils.getFrameFor(text), false); + initComponents(); + textComponent = text; + this.dsd = dsd; + textComponent.addCaretListener(this); + setLocationRelativeTo(text.getRootPane()); + getRootPane().setDefaultButton(jBtnNext); + SwingUtils.addEscapeListener(this); + jBtnReplaceAll.setEnabled(text.isEditable() && text.isEnabled()); + } + + /** + * updates the highlights in the document when it is updated. + * This is called by the DocumentListener methods + */ + public void updateHighlights() { + Markers.removeMarkers(textComponent, SEARCH_MARKER); + if (jTglHighlight.isSelected()) { + Markers.markAll(textComponent, dsd.getPattern(), SEARCH_MARKER); + } + } + + private void showRegexpError(PatternSyntaxException ex) throws HeadlessException { + JOptionPane.showMessageDialog(this, "Regexp error: " + ex.getMessage(), + "Regular Expression Error", JOptionPane.ERROR_MESSAGE); + jCmbFind.requestFocus(); + } + + /** + * update the finder object with data from our UI + */ + private void updateFinder() { + String regex = (String) jCmbFind.getSelectedItem(); + try { + dsd.setPattern(regex, + jChkRegex.isSelected(), + jChkIgnoreCase.isSelected()); + ActionUtils.insertIntoCombo(jCmbFind, regex); + } catch (PatternSyntaxException e) { + showRegexpError(e); + } + } + + /** + * 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() { + + jLblFind = new javax.swing.JLabel(); + jBtnNext = new javax.swing.JButton(); + jBtnPrev = new javax.swing.JButton(); + jBtnReplaceAll = new javax.swing.JButton(); + jChkWrap = new javax.swing.JCheckBox(); + jChkRegex = new javax.swing.JCheckBox(); + jChkIgnoreCase = new javax.swing.JCheckBox(); + jLblReplace = new javax.swing.JLabel(); + jTglHighlight = new javax.swing.JToggleButton(); + jCmbReplace = new javax.swing.JComboBox(); + jCmbFind = new javax.swing.JComboBox(); + jBtnReplace = new javax.swing.JButton(); + + setTitle("Find and Replace"); + setName(""); // NOI18N + setResizable(false); + + jLblFind.setDisplayedMnemonic('F'); + jLblFind.setLabelFor(jCmbFind); + jLblFind.setText("Find"); + + jBtnNext.setIcon(new javax.swing.ImageIcon(getClass().getResource("/META-INF/images/small-icons/go-next.png"))); // NOI18N + jBtnNext.setMnemonic('N'); + jBtnNext.setText("Next"); + jBtnNext.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jBtnNextActionPerformed(evt); + } + }); + + jBtnPrev.setIcon(new javax.swing.ImageIcon(getClass().getResource("/META-INF/images/small-icons/go-previous.png"))); // NOI18N + jBtnPrev.setMnemonic('N'); + jBtnPrev.setText("Previous"); + jBtnPrev.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jBtnPrevActionPerformed(evt); + } + }); + + jBtnReplaceAll.setIcon(new javax.swing.ImageIcon(getClass().getResource("/META-INF/images/small-icons/edit-find-replace-all.png"))); // NOI18N + jBtnReplaceAll.setMnemonic('H'); + jBtnReplaceAll.setText("Replace All"); + jBtnReplaceAll.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jBtnReplaceAllActionPerformed(evt); + } + }); + + jChkWrap.setMnemonic('W'); + jChkWrap.setText("Wrap around"); + jChkWrap.setToolTipText("Wrap to beginning when end is reached"); + + jChkRegex.setMnemonic('R'); + jChkRegex.setText("Regular Expression"); + + jChkIgnoreCase.setMnemonic('I'); + jChkIgnoreCase.setText("Ignore Case"); + + jLblReplace.setDisplayedMnemonic('R'); + jLblReplace.setLabelFor(jCmbReplace); + jLblReplace.setText("Replace"); + + jTglHighlight.setIcon(new javax.swing.ImageIcon(getClass().getResource("/META-INF/images/small-icons/highlight.png"))); // NOI18N + jTglHighlight.setText("Highlight"); + jTglHighlight.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jTglHighlightActionPerformed(evt); + } + }); + + jCmbReplace.setEditable(true); + + jCmbFind.setEditable(true); + + jBtnReplace.setIcon(new javax.swing.ImageIcon(getClass().getResource("/META-INF/images/small-icons/edit-find-replace.png"))); // NOI18N + jBtnReplace.setText("Replace"); + jBtnReplace.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jBtnReplaceActionPerformed(evt); + } + }); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(jLblFind) + .addComponent(jLblReplace)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addComponent(jChkRegex) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(jChkWrap, javax.swing.GroupLayout.PREFERRED_SIZE, 105, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(jCmbFind, 0, 289, Short.MAX_VALUE) + .addComponent(jCmbReplace, javax.swing.GroupLayout.Alignment.TRAILING, 0, 289, Short.MAX_VALUE) + .addComponent(jChkIgnoreCase)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jBtnReplace, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 107, Short.MAX_VALUE) + .addComponent(jBtnNext, javax.swing.GroupLayout.DEFAULT_SIZE, 107, Short.MAX_VALUE) + .addComponent(jBtnPrev, javax.swing.GroupLayout.DEFAULT_SIZE, 107, Short.MAX_VALUE) + .addComponent(jTglHighlight, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 107, Short.MAX_VALUE) + .addComponent(jBtnReplaceAll, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addContainerGap()) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLblFind) + .addComponent(jCmbFind, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jBtnNext)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jBtnPrev) + .addComponent(jCmbReplace, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLblReplace)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jBtnReplace) + .addGap(3, 3, 3) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jChkWrap, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jChkRegex) + .addComponent(jBtnReplaceAll)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jChkIgnoreCase) + .addComponent(jTglHighlight)) + .addContainerGap()) + ); + + pack(); + }// //GEN-END:initComponents + + private void jBtnNextActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBtnNextActionPerformed + try { + updateFinder(); + if (!dsd.doFindNext(textComponent)) { + dsd.msgNotFound(textComponent); + } + textComponent.requestFocusInWindow(); + } catch (PatternSyntaxException ex) { + showRegexpError(ex); + } + }//GEN-LAST:event_jBtnNextActionPerformed + + private void jBtnReplaceAllActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBtnReplaceAllActionPerformed + try { + updateFinder(); + String replacement = (String) jCmbReplace.getSelectedItem(); + ActionUtils.insertIntoCombo(jCmbReplace, replacement); + jTglHighlight.setSelected(false); + dsd.doReplaceAll(textComponent, replacement); + textComponent.requestFocusInWindow(); + } catch (PatternSyntaxException ex) { + showRegexpError(ex); + } +}//GEN-LAST:event_jBtnReplaceAllActionPerformed + + private void jTglHighlightActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTglHighlightActionPerformed + updateFinder(); + updateHighlights(); + }//GEN-LAST:event_jTglHighlightActionPerformed + + private void jBtnPrevActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBtnPrevActionPerformed + updateFinder(); + dsd.doFindPrev(textComponent); +}//GEN-LAST:event_jBtnPrevActionPerformed + + private void jBtnReplaceActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBtnReplaceActionPerformed + jTglHighlight.setSelected(false); + String replacement = jCmbReplace.getSelectedItem() == null ? + "" : jCmbReplace.getSelectedItem().toString(); + dsd.doReplace(textComponent, replacement); + }//GEN-LAST:event_jBtnReplaceActionPerformed + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton jBtnNext; + private javax.swing.JButton jBtnPrev; + private javax.swing.JButton jBtnReplace; + private javax.swing.JButton jBtnReplaceAll; + private javax.swing.JCheckBox jChkIgnoreCase; + private javax.swing.JCheckBox jChkRegex; + private javax.swing.JCheckBox jChkWrap; + private javax.swing.JComboBox jCmbFind; + private javax.swing.JComboBox jCmbReplace; + private javax.swing.JLabel jLblFind; + private javax.swing.JLabel jLblReplace; + private javax.swing.JToggleButton jTglHighlight; + // End of variables declaration//GEN-END:variables + + @Override + public void caretUpdate(CaretEvent e) { + updateHighlights(); + } + + @Override + public void escapePressed() { + setVisible(false); + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/ShowAbbsDialog.form b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/ShowAbbsDialog.form new file mode 100644 index 000000000..d6149fb66 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/ShowAbbsDialog.form @@ -0,0 +1,113 @@ + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/ShowAbbsDialog.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/ShowAbbsDialog.java new file mode 100644 index 000000000..a020f2f52 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/actions/gui/ShowAbbsDialog.java @@ -0,0 +1,135 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jsyntaxpane.actions.gui; + +import java.util.Arrays; +import java.util.Map; +import javax.swing.JEditorPane; +import jsyntaxpane.actions.ActionUtils; +import jsyntaxpane.util.SwingUtils; + +/** + * Show abbreviations for a JEditorPane. + * + * @author Ayman Al-Sairafi + */ +public class ShowAbbsDialog + extends javax.swing.JDialog implements EscapeListener { + + /** + * Creates new form ShowAbbsDialog + * @param parent + * @param abbs + */ + public ShowAbbsDialog(JEditorPane parent, Map abbs) { + super(ActionUtils.getFrameFor(parent), true); + initComponents(); + Object[] abbsList = abbs.keySet().toArray(); + Arrays.sort(abbsList); + jLstAbbs.setListData(abbsList); + this.abbs = abbs; + jEdtAbbr.setEditorKit(parent.getEditorKit()); + jLstAbbs.setSelectedIndex(0); + SwingUtils.addEscapeListener(this); + setVisible(true); + } + + /** + * 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() { + + jSplitPane1 = new javax.swing.JSplitPane(); + jScrollPane1 = new javax.swing.JScrollPane(); + jLstAbbs = new javax.swing.JList(); + jScrollPane2 = new javax.swing.JScrollPane(); + jEdtAbbr = new javax.swing.JEditorPane(); + + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + setTitle("Abbreviations"); + setLocationByPlatform(true); + setMinimumSize(new java.awt.Dimension(600, 300)); + setModal(true); + setName("dlgShowAbbs"); // NOI18N + + jSplitPane1.setDividerLocation(150); + jSplitPane1.setDividerSize(3); + + jScrollPane1.setPreferredSize(new java.awt.Dimension(258, 400)); + + jLstAbbs.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); + jLstAbbs.addListSelectionListener(new javax.swing.event.ListSelectionListener() { + public void valueChanged(javax.swing.event.ListSelectionEvent evt) { + jLstAbbsValueChanged(evt); + } + }); + jScrollPane1.setViewportView(jLstAbbs); + + jSplitPane1.setLeftComponent(jScrollPane1); + + jEdtAbbr.setEditable(false); + jEdtAbbr.setMinimumSize(new java.awt.Dimension(106, 400)); + jScrollPane2.setViewportView(jEdtAbbr); + + jSplitPane1.setRightComponent(jScrollPane2); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addComponent(jSplitPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 580, Short.MAX_VALUE) + .addContainerGap()) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addComponent(jSplitPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 337, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + + pack(); + }// //GEN-END:initComponents + + private void jLstAbbsValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_jLstAbbsValueChanged + if (evt.getValueIsAdjusting() == false) { + Object selected = jLstAbbs.getSelectedValue(); + if (selected != null) { + jEdtAbbr.setText(abbs.get(selected.toString())); + } + } + }//GEN-LAST:event_jLstAbbsValueChanged + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JEditorPane jEdtAbbr; + private javax.swing.JList jLstAbbs; + private javax.swing.JScrollPane jScrollPane1; + private javax.swing.JScrollPane jScrollPane2; + private javax.swing.JSplitPane jSplitPane1; + // End of variables declaration//GEN-END:variables + Map abbs; + + @Override + public void escapePressed() { + setVisible(false); + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/components/LineNumbersRuler.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/components/LineNumbersRuler.java new file mode 100644 index 000000000..81c568760 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/components/LineNumbersRuler.java @@ -0,0 +1,322 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.components; + +import java.awt.Color; +import java.awt.Container; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.FontMetrics; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Insets; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import javax.swing.BorderFactory; +import javax.swing.JEditorPane; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.SwingUtilities; +import javax.swing.event.CaretEvent; +import javax.swing.event.CaretListener; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; +import javax.swing.text.BadLocationException; +import javax.swing.text.Element; +import javax.swing.text.JTextComponent; +import jsyntaxpane.SyntaxDocument; +import jsyntaxpane.SyntaxView; +import jsyntaxpane.actions.ActionUtils; +import jsyntaxpane.actions.gui.GotoLineDialog; +import jsyntaxpane.util.Configuration; + +/** + * This class will display line numbers for a related text component. The text + * component must use the same line height for each line. + * + * This class was designed to be used as a component added to the row header + * of a JScrollPane. + * + * Original code from http://tips4java.wordpress.com/2009/05/23/text-component-line-number/ + * + * @author Rob Camick + * + * Revised for jsyntaxpane + * + * @author Ayman Al-Sairafi + */ +public class LineNumbersRuler extends JPanel + implements CaretListener, DocumentListener, PropertyChangeListener, SyntaxComponent { + + public static final String PROPERTY_BACKGROUND = "LineNumbers.Background"; + public static final String PROPERTY_FOREGROUND = "LineNumbers.Foreground"; + public static final String PROPERTY_CURRENT_BACK = "LineNumbers.CurrentBack"; + public static final String PROPERTY_LEFT_MARGIN = "LineNumbers.LeftMargin"; + public static final String PROPERTY_RIGHT_MARGIN = "LineNumbers.RightMargin"; + public static final String PROPERTY_Y_OFFSET = "LineNumbers.YOFFset"; + public static final int DEFAULT_R_MARGIN = 5; + public static final int DEFAULT_L_MARGIN = 5; + private Status status; + private final static int HEIGHT = Integer.MAX_VALUE - 1000000; + // Text component this TextTextLineNumber component is in sync with + private JEditorPane editor; + private int minimumDisplayDigits = 2; + // Keep history information to reduce the number of times the component + // needs to be repainted + private int lastDigits; + private int lastHeight; + private int lastLine; + private MouseListener mouseListener = null; + // The formatting to use for displaying numbers. Use in String.format(numbersFormat, line) + private String numbersFormat = "%3d"; + + private Color currentLineColor; + + /** + * Get the JscrollPane that contains this EditorPane, or null if no + * JScrollPane is the parent of this editor + * @param editorPane + * @return + */ + public JScrollPane getScrollPane(JTextComponent editorPane) { + Container p = editorPane.getParent(); + while (p != null) { + if (p instanceof JScrollPane) { + return (JScrollPane) p; + } + p = p.getParent(); + } + return null; + } + + @Override + public void config(Configuration config) { + int right = config.getInteger(PROPERTY_RIGHT_MARGIN, DEFAULT_R_MARGIN); + int left = config.getInteger(PROPERTY_LEFT_MARGIN, DEFAULT_L_MARGIN); + Color foreground = config.getColor(PROPERTY_FOREGROUND, Color.BLACK); + setForeground(foreground); + Color back = config.getColor(PROPERTY_BACKGROUND, Color.WHITE); + setBackground(back); + setBorder(BorderFactory.createEmptyBorder(0, left, 0, right)); + currentLineColor = config.getColor(PROPERTY_CURRENT_BACK, back); + } + + @Override + public void install(final JEditorPane editor) { + this.editor = editor; + + setFont(editor.getFont()); + + // setMinimumDisplayDigits(3); + + editor.getDocument().addDocumentListener(this); + editor.addCaretListener(this); + editor.addPropertyChangeListener(this); + JScrollPane sp = getScrollPane(editor); + sp.setRowHeaderView(this); + mouseListener = new MouseAdapter() { + + @Override + public void mouseClicked(MouseEvent e) { + GotoLineDialog.showForEditor(editor); + } + }; + addMouseListener(mouseListener); + status = Status.INSTALLING; + } + + @Override + public void deinstall(JEditorPane editor) { + removeMouseListener(mouseListener); + status = Status.DEINSTALLING; + this.editor.getDocument().removeDocumentListener(this); + editor.removeCaretListener(this); + editor.removePropertyChangeListener(this); + JScrollPane sp = getScrollPane(editor); + if (sp != null) { + editor.getDocument().removeDocumentListener(this); + sp.setRowHeaderView(null); + } + } + + /** + * Gets the minimum display digits + * + * @return the minimum display digits + */ + public int getMinimumDisplayDigits() { + return minimumDisplayDigits; + } + + /** + * Specify the minimum number of digits used to calculate the preferred + * width of the component. Default is 3. + * + * @param minimumDisplayDigits the number digits used in the preferred + * width calculation + */ + public void setMinimumDisplayDigits(int minimumDisplayDigits) { + this.minimumDisplayDigits = minimumDisplayDigits; + setPreferredWidth(); + } + + /** + * Calculate the width needed to display the maximum line number + */ + private void setPreferredWidth() { + int lines = ActionUtils.getLineCount(editor); + int digits = Math.max(String.valueOf(lines).length(), minimumDisplayDigits); + + // Update sizes when number of digits in the line number changes + + if (lastDigits != digits) { + lastDigits = digits; + numbersFormat = "%" + digits + "d"; + FontMetrics fontMetrics = getFontMetrics(getFont()); + int width = fontMetrics.charWidth('0') * digits; + Insets insets = getInsets(); + int preferredWidth = insets.left + insets.right + width; + + Dimension d = getPreferredSize(); + d.setSize(preferredWidth, HEIGHT); + setPreferredSize(d); + setSize(d); + + } + } + + /** + * Draw the line numbers + */ + @Override + public void paintComponent(Graphics g) { + super.paintComponent(g); + + FontMetrics fontMetrics = editor.getFontMetrics(editor.getFont()); + Insets insets = getInsets(); + int currentLine = -1; + try { + // get current line, and add one as we start from 1 for the display + currentLine = ActionUtils.getLineNumber(editor, editor.getCaretPosition()) + 1; + } catch (BadLocationException ex) { + // this wont happen, even if it does, we can ignore it and we will not have + // a current line to worry about... + } + + int lh = fontMetrics.getHeight(); + int maxLines = ActionUtils.getLineCount(editor); + SyntaxView.setRenderingHits((Graphics2D) g); + + for (int line = 1; line <= maxLines; line++) { + String lineNumber = String.format(numbersFormat, line); + int y = line * lh; + if (line == currentLine) { + g.setColor(currentLineColor); + g.fillRect(0, y - lh + fontMetrics.getDescent() - 1, getWidth(), lh); + g.setColor(getForeground()); + g.drawString(lineNumber, insets.left, y); + } else { + g.drawString(lineNumber, insets.left, y); + } + } + } + +// +// Implement CaretListener interface +// + @Override + public void caretUpdate(CaretEvent e) { + // Get the line the caret is positioned on + + int caretPosition = editor.getCaretPosition(); + Element root = editor.getDocument().getDefaultRootElement(); + int currentLine = root.getElementIndex(caretPosition); + + // Need to repaint so the correct line number can be highlighted + + if (lastLine != currentLine) { + repaint(); + lastLine = currentLine; + } + } + +// +// Implement DocumentListener interface +// + @Override + public void changedUpdate(DocumentEvent e) { + documentChanged(); + } + + @Override + public void insertUpdate(DocumentEvent e) { + documentChanged(); + } + + @Override + public void removeUpdate(DocumentEvent e) { + documentChanged(); + } + + /* + * A document change may affect the number of displayed lines of text. + * Therefore the lines numbers will also change. + */ + private void documentChanged() { + // Preferred size of the component has not been updated at the time + // the DocumentEvent is fired + + SwingUtilities.invokeLater(new Runnable() { + + @Override + public void run() { + int preferredHeight = editor.getPreferredSize().height; + + // Document change has caused a change in the number of lines. + // Repaint to reflect the new line numbers + + if (lastHeight != preferredHeight) { + setPreferredWidth(); + repaint(); + lastHeight = preferredHeight; + } + } + }); + } + + /** + * Implement PropertyChangeListener interface + */ + @Override + public void propertyChange(PropertyChangeEvent evt) { + if (evt.getPropertyName().equals("document")) { + if (evt.getOldValue() instanceof SyntaxDocument) { + SyntaxDocument syntaxDocument = (SyntaxDocument) evt.getOldValue(); + syntaxDocument.removeDocumentListener(this); + } + if (evt.getNewValue() instanceof SyntaxDocument && status.equals(Status.INSTALLING)) { + SyntaxDocument syntaxDocument = (SyntaxDocument) evt.getNewValue(); + syntaxDocument.addDocumentListener(this); + setPreferredWidth(); + repaint(); + } + } else if (evt.getNewValue() instanceof Font) { + setPreferredWidth(); + repaint(); + } + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/components/Markers.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/components/Markers.java new file mode 100644 index 000000000..e8979673c --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/components/Markers.java @@ -0,0 +1,139 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.components; + +import jsyntaxpane.actions.*; +import java.awt.Color; +import java.util.logging.Level; +import java.util.logging.Logger; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import javax.swing.text.BadLocationException; +import javax.swing.text.DefaultHighlighter; +import javax.swing.text.Highlighter; +import javax.swing.text.JTextComponent; +import jsyntaxpane.SyntaxDocument; +import jsyntaxpane.Token; + +/** + * This class contains static utility methods to make highliting in text + * components easier. + * + * @author Ayman Al-Sairafi + */ +public class Markers { + + // This subclass is used in our highlighting code + public static class SimpleMarker extends DefaultHighlighter.DefaultHighlightPainter { + + public SimpleMarker(Color color) { + super(color); + } + } + + /** + * Removes only our private highlights + * This is public so that we can remove the highlights when the editorKit + * is unregistered. SimpleMarker can be null, in which case all instances of + * our Markers are removed. + * @param component the text component whose markers are to be removed + * @param marker the SimpleMarker to remove + */ + public static void removeMarkers(JTextComponent component, SimpleMarker marker) { + Highlighter hilite = component.getHighlighter(); + Highlighter.Highlight[] hilites = hilite.getHighlights(); + + for (int i = 0; i < hilites.length; i++) { + if (hilites[i].getPainter() instanceof SimpleMarker) { + SimpleMarker hMarker = (SimpleMarker) hilites[i].getPainter(); + if (marker == null || hMarker.equals(marker)) { + hilite.removeHighlight(hilites[i]); + } + } + } + } + + /** + * Remove all the markers from an JEditorPane + * @param editorPane + */ + public static void removeMarkers(JTextComponent editorPane) { + removeMarkers(editorPane, null); + } + + /** + * add highlights for the given Token on the given pane + * @param pane + * @param token + * @param marker + */ + public static void markToken(JTextComponent pane, Token token, SimpleMarker marker) { + markText(pane, token.start, token.end(), marker); + } + + /** + * add highlights for the given region on the given pane + * @param pane + * @param start + * @param end + * @param marker + */ + public static void markText(JTextComponent pane, int start, int end, SimpleMarker marker) { + try { + Highlighter hiliter = pane.getHighlighter(); + int selStart = pane.getSelectionStart(); + int selEnd = pane.getSelectionEnd(); + // if there is no selection or selection does not overlap + if(selStart == selEnd || end < selStart || start > selStart) { + hiliter.addHighlight(start, end, marker); + return; + } + // selection starts within the highlight, highlight before slection + if(selStart > start && selStart < end ) { + hiliter.addHighlight(start, selStart, marker); + } + // selection ends within the highlight, highlight remaining + if(selEnd > start && selEnd < end ) { + hiliter.addHighlight(selEnd, end, marker); + } + + } catch (BadLocationException ex) { + // nothing we can do if the request is out of bound + LOG.log(Level.SEVERE, null, ex); + } + } + + /** + * Mark all text in the document that matches the given pattern + * @param pane control to use + * @param pattern pattern to match + * @param marker marker to use for highlighting + */ + public static void markAll(JTextComponent pane, Pattern pattern, SimpleMarker marker) { + SyntaxDocument sDoc = ActionUtils.getSyntaxDocument(pane); + if(sDoc == null || pattern == null) { + return; + } + Matcher matcher = sDoc.getMatcher(pattern); + // we may not have any matcher (due to undo or something, so don't do anything. + if(matcher==null) { + return; + } + while(matcher.find()) { + markText(pane, matcher.start(), matcher.end(), marker); + } + } + + private static final Logger LOG = Logger.getLogger(Markers.class.getName()); +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/components/PairsMarker.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/components/PairsMarker.java new file mode 100644 index 000000000..561e5abf0 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/components/PairsMarker.java @@ -0,0 +1,97 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.components; + +import java.awt.Color; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import jsyntaxpane.actions.*; +import javax.swing.JEditorPane; +import javax.swing.event.CaretEvent; +import javax.swing.event.CaretListener; +import javax.swing.text.JTextComponent; +import jsyntaxpane.SyntaxDocument; +import jsyntaxpane.Token; +import jsyntaxpane.util.Configuration; + +/** + * This class highlights any pairs of the given language. Pairs are defined + * with the Token.pairValue. + * + * @author Ayman Al-Sairafi + */ +public class PairsMarker implements CaretListener, SyntaxComponent, PropertyChangeListener { + + public static final String PROPERTY_COLOR = "PairMarker.Color"; + private JTextComponent pane; + private Markers.SimpleMarker marker; + private Status status; + + public PairsMarker() { + } + + @Override + public void caretUpdate(CaretEvent e) { + removeMarkers(); + int pos = e.getDot(); + SyntaxDocument doc = ActionUtils.getSyntaxDocument(pane); + Token token = doc.getTokenAt(pos); + if (token != null && token.pairValue != 0) { + Markers.markToken(pane, token, marker); + Token other = doc.getPairFor(token); + if (other != null) { + Markers.markToken(pane, other, marker); + } + } + } + + /** + * Remove all the highlights from the editor pane. This should be called + * when the editorkit is removed. + */ + public void removeMarkers() { + Markers.removeMarkers(pane, marker); + } + + @Override + public void config(Configuration config) { + Color markerColor = config.getColor(PROPERTY_COLOR, new Color(0xeeee33)); + this.marker = new Markers.SimpleMarker(markerColor); + } + + @Override + public void install(JEditorPane editor) { + pane = editor; + pane.addCaretListener(this); + status = Status.INSTALLING; + } + + @Override + public void deinstall(JEditorPane editor) { + status = Status.DEINSTALLING; + pane.removeCaretListener(this); + removeMarkers(); + } + + @Override + public void propertyChange(PropertyChangeEvent evt) { + if (evt.getPropertyName().equals("document")) { + pane.removeCaretListener(this); + if (status.equals(Status.INSTALLING)) { + pane.addCaretListener(this); + removeMarkers(); + } + } + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/components/SyntaxComponent.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/components/SyntaxComponent.java new file mode 100644 index 000000000..4095ba5cd --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/components/SyntaxComponent.java @@ -0,0 +1,55 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.components; + +import javax.swing.JEditorPane; +import jsyntaxpane.util.Configuration; + +/** + * A Component that is installed to the EditorKit to perform GUI operations + * on the Editor. + * + * @author Ayman Al-Sairafi + */ +public interface SyntaxComponent { + + /** + * Configure the component using the given properties. The keys + * needed for configuration will be prefixed by the given prefix + * @param config configuration data + */ + public void config(Configuration config); + + /** + * Called to install the component on an editor + * @param editor + */ + public void install(JEditorPane editor); + + /** + * Called when the component is to be removed from the editor + * @param editor + */ + public void deinstall(JEditorPane editor); + + /** + * The status is used to have proper propertyCHange support. We need to know if we are INSTALLING + * the component or DE-INSTALLING it + */ + static enum Status { + + INSTALLING, + DEINSTALLING + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/components/TokenMarker.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/components/TokenMarker.java new file mode 100644 index 000000000..2dd2d8bee --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/components/TokenMarker.java @@ -0,0 +1,146 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.components; + +import java.beans.PropertyChangeEvent; +import jsyntaxpane.actions.*; +import java.awt.Color; +import java.beans.PropertyChangeListener; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Set; +import java.util.logging.Logger; +import javax.swing.JEditorPane; +import javax.swing.event.CaretEvent; +import javax.swing.event.CaretListener; +import jsyntaxpane.SyntaxDocument; +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; +import jsyntaxpane.util.Configuration; + +/** + * This class highlights Tokens within a document whenever the caret is moved + * to a TokenType provided in the config file. + * + * @author Ayman Al-Sairafi + */ +public class TokenMarker implements SyntaxComponent, CaretListener, PropertyChangeListener { + + public static final String DEFAULT_TOKENTYPES = "IDENTIFIER, TYPE, TYPE2, TYPE3"; + public static final String PROPERTY_COLOR = "TokenMarker.Color"; + public static final String PROPERTY_TOKENTYPES = "TokenMarker.TokenTypes"; + private static final Color DEFAULT_COLOR = new Color(0xFFEE66); + private JEditorPane pane; + private Set tokenTypes = new HashSet(); + private Markers.SimpleMarker marker; + private Status status; + + /** + * Constructs a new Token highlighter + */ + public TokenMarker() { + } + + @Override + public void caretUpdate(CaretEvent e) { + markTokenAt(e.getDot()); + } + + public void markTokenAt(int pos) { + SyntaxDocument doc = ActionUtils.getSyntaxDocument(pane); + if (doc != null) { + Token token = doc.getTokenAt(pos); + removeMarkers(); + if (token != null && tokenTypes.contains(token.type)) { + addMarkers(token); + } + } + } + + /** + * removes all markers from the pane. + */ + public void removeMarkers() { + Markers.removeMarkers(pane, marker); + } + + /** + * add highlights for the given pattern + * @param pattern + */ + void addMarkers(Token tok) { + SyntaxDocument sDoc = (SyntaxDocument) pane.getDocument(); + sDoc.readLock(); + // we need to create a STring, because the CharSequence does not have an + // equals method and Object.equals is called. It will not match + String text = tok.getText(sDoc).toString(); + Iterator it = sDoc.getTokens(0, sDoc.getLength()); + while (it.hasNext()) { + Token nextToken = it.next(); + String nextText = nextToken.getText(sDoc).toString(); + if (text.equals(nextText)) { + Markers.markToken(pane, nextToken, marker); + } + + } + sDoc.readUnlock(); + } + + @Override + public void config(Configuration config) { + Color markerColor = config.getColor( + PROPERTY_COLOR, DEFAULT_COLOR); + this.marker = new Markers.SimpleMarker(markerColor); + String types = config.getString( + PROPERTY_TOKENTYPES, DEFAULT_TOKENTYPES); + + for (String type : types.split("\\s*,\\s*")) { + try { + TokenType tt = TokenType.valueOf(type); + tokenTypes.add(tt); + } catch (IllegalArgumentException e) { + LOG.warning("Error in setting up TokenMarker " + + " - Invalid TokenType: " + type); + } + + } + } + + @Override + public void install(JEditorPane editor) { + this.pane = editor; + pane.addCaretListener(this); + markTokenAt(editor.getCaretPosition()); + status = Status.INSTALLING; + } + + @Override + public void deinstall(JEditorPane editor) { + status = Status.DEINSTALLING; + removeMarkers(); + pane.removeCaretListener(this); + } + private static final Logger LOG = Logger.getLogger(TokenMarker.class.getName()); + + @Override + public void propertyChange(PropertyChangeEvent evt) { + if (evt.getPropertyName().equals("document")) { + pane.removeCaretListener(this); + if (status.equals(Status.INSTALLING)) { + pane.addCaretListener(this); + removeMarkers(); + } + } + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/lexers/DefaultJFlexLexer.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/lexers/DefaultJFlexLexer.java new file mode 100644 index 000000000..affa35078 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/lexers/DefaultJFlexLexer.java @@ -0,0 +1,159 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.lexers; + +import java.io.CharArrayReader; +import jsyntaxpane.*; +import java.io.IOException; +import java.io.Reader; +import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.swing.text.Segment; + +/** + * This is a default, and abstract implemenatation of a Lexer using JFLex + * with some utility methods that Lexers can implement. + * + * @author Ayman Al-Sairafi + */ +public abstract class DefaultJFlexLexer implements Lexer { + + protected int tokenStart; + protected int tokenLength; + protected int offset; + + /** + * Helper method to create and return a new Token from of TokenType + * tokenStart and tokenLength will be modified to the newStart and + * newLength params + * @param type + * @param tStart + * @param tLength + * @param newStart + * @param newLength + * @return + */ + protected Token token(TokenType type, int tStart, int tLength, + int newStart, int newLength) { + tokenStart = newStart; + tokenLength = newLength; + return new Token(type, tStart + offset, tLength); + } + + /** + * Create and return a Token of given type from start with length + * offset is added to start + * @param type + * @param start + * @param length + * @return + */ + protected Token token(TokenType type, int start, int length) { + return new Token(type, start + offset, length); + } + + /** + * Create and return a Token of given type. start is obtained from {@link yychar()} + * and length from {@link yylength()} + * offset is added to start + + * @param type + * @return + */ + protected Token token(TokenType type) { + return new Token(type, yychar() + offset, yylength()); + } + + /** + * Create and return a Token of given type and pairValue. + * start is obtained from {@link yychar()} + * and length from {@link yylength()} + * offset is added to start + * + * @param type + * @param pairValue + * @return + */ + protected Token token(TokenType type, int pairValue) { + return new Token(type, yychar() + offset, yylength(), (byte) pairValue); + } + + /** + * The DefaultJFlexLexer simply calls the yylex method of a JFLex compatible + * Lexer and adds the tokens obtained to an ArrayList. + */ + @Override + public void parse(Segment segment, int ofst, List tokens) { + try { + CharArrayReader reader = new CharArrayReader(segment.array, segment.offset, segment.count); + yyreset(reader); + this.offset = ofst; + for (Token t = yylex(); t != null; t = yylex()) { + tokens.add(t); + } + } catch (IOException ex) { + Logger.getLogger(DefaultJFlexLexer.class.getName()).log(Level.SEVERE, null, ex); + } + } + + /** + * This will be called to reset the the lexer. + * This is created automatically by JFlex. + * @param reader + */ + public abstract void yyreset(Reader reader); + + /** + * This is called to return the next Token from the Input Reader + * @return next token, or null if no more tokens. + * @throws java.io.IOException + */ + public abstract Token yylex() throws java.io.IOException; + + /** + * 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 abstract char yycharat(int pos); + + /** + * Returns the length of the matched text region. + * This method is automatically implemented by JFlex lexers + * @return + */ + public abstract int yylength(); + + /** + * Returns the text matched by the current regular expression. + * This method is automatically implemented by JFlex lexers + * @return + */ + public abstract String yytext(); + + /** + * Return the char number from beginning of input stream. + * This is NOT implemented by JFLex, so the code must be + * added to create this and return the private yychar field + * @return + */ + public abstract int yychar(); +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/lexers/EmptyLexer.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/lexers/EmptyLexer.java new file mode 100644 index 000000000..30d918dd6 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/lexers/EmptyLexer.java @@ -0,0 +1,30 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jsyntaxpane.lexers; + +import jsyntaxpane.*; +import java.util.List; +import javax.swing.text.Segment; + +/** + * A lexer that does nothing. Used for plain document editing. + * @author Ayman Al-Sairafi + */ +public class EmptyLexer implements Lexer { + + @Override + public void parse(Segment segment, int ofst, List tokens) { + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/lexers/SimpleRegexLexer.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/lexers/SimpleRegexLexer.java new file mode 100644 index 000000000..0068a08fc --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/lexers/SimpleRegexLexer.java @@ -0,0 +1,99 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.lexers; + +import java.io.FileReader; +import java.io.IOException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Properties; +import java.util.TreeSet; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import javax.swing.text.Segment; +import jsyntaxpane.Lexer; +import jsyntaxpane.Token; +import jsyntaxpane.TokenComparators; +import jsyntaxpane.TokenType; + +/** + * This is a "dynamic" Lexer that will use Regex patterns to parse any document, + * It is NOT as fast as other JFLex generated lexers. + * + * The current implementation is about 20x slower than a JFLex lexer + * (5000 lines in 100ms, vs 5ms for JFlex lexer) + * + * This is still usable for a few 100 lines. 500 lines parse in about 10ms. + * + * It also depends on how complex the Regexp and how many of them will actually + * provide a match. + * + * Since KEYWORD TokenType is by order less than IDENTIFIER, the higher + * precedence of KEYWORD token will be used, even if the same regex matches + * an IDENTIFIER. This is a neat side-effect of the ordering of the TokenTypes. + * We now just need to add any non-overlapping matches. And since longer matches + * are found first, we will properly match the longer identifiers which start with + * a keyword. + * + * This behaviour can easily be modified by overriding the {@link compareTo} method + * + * @author Ayman Al-Sairafi + */ +public class SimpleRegexLexer implements Lexer { + + public SimpleRegexLexer(Map props) { + putPatterns(props); + } + + public SimpleRegexLexer(String propsLocation) throws IOException { + Properties props = new Properties(); + props.load(new FileReader(propsLocation)); + putPatterns(props); + } + + @Override + public void parse(Segment segment, int ofst, List tokens) { + TreeSet allMatches = new TreeSet(TokenComparators.LONGEST_FIRST); + // add to ourset all the matches by all our regexes + for (Map.Entry e : patterns.entrySet()) { + Matcher m = e.getValue().matcher(segment); + while (m.find()) { + Token t = new Token(e.getKey(), m.start() + ofst, m.end() - m.start()); + allMatches.add(t); + } + } + int end = -1; + for (Token t : allMatches) { + if (t.start > end) { + tokens.add(t); + end = t.end(); + } + } + } + Map patterns = new HashMap(); + + public SimpleRegexLexer putPattern(TokenType type, String regex) { + patterns.put(type, Pattern.compile(regex)); + return this; + } + + public SimpleRegexLexer putPatterns(Map props) { + for (Object key : props.keySet()) { + TokenType t = TokenType.valueOf(key.toString()); + patterns.put(t, Pattern.compile(props.get(key).toString())); + } + return this; + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/ActionScriptSyntaxKit.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/ActionScriptSyntaxKit.java new file mode 100644 index 000000000..bb94d9778 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/ActionScriptSyntaxKit.java @@ -0,0 +1,33 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.syntaxkits; + +import jsyntaxpane.DefaultSyntaxKit; +import jsyntaxpane.Lexer; +import jsyntaxpane.lexers.ActionScriptLexer; + +/** + * + * @author JPEXS + */ +public class ActionScriptSyntaxKit extends DefaultSyntaxKit { + + public ActionScriptSyntaxKit() { + super(new ActionScriptLexer()); + } + + ActionScriptSyntaxKit(Lexer lexer) { + super(lexer); + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/BashSyntaxKit.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/BashSyntaxKit.java new file mode 100644 index 000000000..27dfb75f4 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/BashSyntaxKit.java @@ -0,0 +1,28 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.syntaxkits; + +import jsyntaxpane.DefaultSyntaxKit; +import jsyntaxpane.lexers.BashLexer; + +/** + * + * @author Ayman Al-Sairafi + */ +public class BashSyntaxKit extends DefaultSyntaxKit { + + public BashSyntaxKit() { + super(new BashLexer()); + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/CSyntaxKit.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/CSyntaxKit.java new file mode 100644 index 000000000..2be3481c7 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/CSyntaxKit.java @@ -0,0 +1,38 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.syntaxkits; + +import jsyntaxpane.DefaultSyntaxKit; +import jsyntaxpane.Lexer; +import jsyntaxpane.lexers.CLexer; + +/** + * + * @author Ayman Al-Sairafi + */ +public class CSyntaxKit extends DefaultSyntaxKit { + + public CSyntaxKit() { + super(new CLexer()); + } + + /** + * Construct a JavaSyntaxKit user the supplied lexer. This is protected so + * only subclasses may extend this with a new lexer. + * @param lexer + */ + CSyntaxKit(Lexer lexer) { + super(lexer); + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/ClojureSyntaxKit.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/ClojureSyntaxKit.java new file mode 100644 index 000000000..d6a4bb79d --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/ClojureSyntaxKit.java @@ -0,0 +1,33 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.syntaxkits; + +import jsyntaxpane.DefaultSyntaxKit; +import jsyntaxpane.Lexer; +import jsyntaxpane.lexers.ClojureLexer; + +/** + * + * @author Ayman Al-Sairafi + */ +public class ClojureSyntaxKit extends DefaultSyntaxKit { + + public ClojureSyntaxKit() { + super(new ClojureLexer()); + } + + public ClojureSyntaxKit(Lexer lexer) { + super(lexer); + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/CppSyntaxKit.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/CppSyntaxKit.java new file mode 100644 index 000000000..c624968ce --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/CppSyntaxKit.java @@ -0,0 +1,27 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.syntaxkits; + +import jsyntaxpane.lexers.CppLexer; + +/** + * + * @author Ayman Al-Sairafi + */ +public class CppSyntaxKit extends CSyntaxKit { + + public CppSyntaxKit() { + super(new CppLexer()); + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/DOSBatchSyntaxKit.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/DOSBatchSyntaxKit.java new file mode 100644 index 000000000..6e2e9e003 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/DOSBatchSyntaxKit.java @@ -0,0 +1,28 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.syntaxkits; + +import jsyntaxpane.DefaultSyntaxKit; +import jsyntaxpane.lexers.DOSBatchLexer; + +/** + * + * @author Ayman Al-Sairafi + */ +public class DOSBatchSyntaxKit extends DefaultSyntaxKit { + + public DOSBatchSyntaxKit() { + super(new DOSBatchLexer()); + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/Flasm3SyntaxKit.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/Flasm3SyntaxKit.java new file mode 100644 index 000000000..19fe5a092 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/Flasm3SyntaxKit.java @@ -0,0 +1,32 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.syntaxkits; + +import jsyntaxpane.DefaultSyntaxKit; +import jsyntaxpane.Lexer; +import jsyntaxpane.lexers.Flasm3Lexer; + +/** + * @author JPEXS + */ +public class Flasm3SyntaxKit extends DefaultSyntaxKit { + + public Flasm3SyntaxKit() { + super(new Flasm3Lexer()); + } + + Flasm3SyntaxKit(Lexer lexer) { + super(lexer); + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/FlasmSyntaxKit.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/FlasmSyntaxKit.java new file mode 100644 index 000000000..b27e06df9 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/FlasmSyntaxKit.java @@ -0,0 +1,32 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.syntaxkits; + +import jsyntaxpane.DefaultSyntaxKit; +import jsyntaxpane.Lexer; +import jsyntaxpane.lexers.FlasmLexer; + +/** + * @author JPEXS + */ +public class FlasmSyntaxKit extends DefaultSyntaxKit { + + public FlasmSyntaxKit() { + super(new FlasmLexer()); + } + + FlasmSyntaxKit(Lexer lexer) { + super(lexer); + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/GroovySyntaxKit.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/GroovySyntaxKit.java new file mode 100644 index 000000000..4c482e525 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/GroovySyntaxKit.java @@ -0,0 +1,27 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.syntaxkits; + +import jsyntaxpane.lexers.GroovyLexer; + +/** + * + * @author Ayman Al-Sairafi + */ +public class GroovySyntaxKit extends JavaSyntaxKit { + + public GroovySyntaxKit() { + super(new GroovyLexer()); + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/JFlexSyntaxKit.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/JFlexSyntaxKit.java new file mode 100644 index 000000000..205350dc3 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/JFlexSyntaxKit.java @@ -0,0 +1,27 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.syntaxkits; + +import jsyntaxpane.lexers.JFlexLexer; + +/** + * JFlex lexer + * @author Ayman Al-Sairafi + */ +public class JFlexSyntaxKit extends JavaSyntaxKit { + + public JFlexSyntaxKit() { + super(new JFlexLexer()); + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/JavaScriptSyntaxKit.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/JavaScriptSyntaxKit.java new file mode 100644 index 000000000..63071d046 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/JavaScriptSyntaxKit.java @@ -0,0 +1,28 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.syntaxkits; + +import jsyntaxpane.DefaultSyntaxKit; +import jsyntaxpane.lexers.JavaScriptLexer; + +/** + * + * @author Ayman Al-Sairafi + */ +public class JavaScriptSyntaxKit extends DefaultSyntaxKit { + + public JavaScriptSyntaxKit() { + super(new JavaScriptLexer()); + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/JavaSyntaxKit.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/JavaSyntaxKit.java new file mode 100644 index 000000000..e78e035c1 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/JavaSyntaxKit.java @@ -0,0 +1,33 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.syntaxkits; + +import jsyntaxpane.DefaultSyntaxKit; +import jsyntaxpane.Lexer; +import jsyntaxpane.lexers.JavaLexer; + +/** + * + * @author Ayman Al-Sairafi + */ +public class JavaSyntaxKit extends DefaultSyntaxKit { + + public JavaSyntaxKit() { + super(new JavaLexer()); + } + + JavaSyntaxKit(Lexer lexer) { + super(lexer); + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/LuaSyntaxKit.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/LuaSyntaxKit.java new file mode 100644 index 000000000..7aa860156 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/LuaSyntaxKit.java @@ -0,0 +1,28 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.syntaxkits; + +import jsyntaxpane.DefaultSyntaxKit; +import jsyntaxpane.lexers.LuaLexer; + +/** + * + * @author Michael Leung + */ +public class LuaSyntaxKit extends DefaultSyntaxKit { + + public LuaSyntaxKit() { + super(new LuaLexer()); + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/PlainSyntaxKit.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/PlainSyntaxKit.java new file mode 100644 index 000000000..441e47759 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/PlainSyntaxKit.java @@ -0,0 +1,28 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.syntaxkits; + +import jsyntaxpane.DefaultSyntaxKit; +import jsyntaxpane.lexers.EmptyLexer; + +/** + * + * @author Ayman Al-Sairafi + */ +public class PlainSyntaxKit extends DefaultSyntaxKit { + + public PlainSyntaxKit() { + super(new EmptyLexer()); + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/PropertiesSyntaxKit.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/PropertiesSyntaxKit.java new file mode 100644 index 000000000..976437c26 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/PropertiesSyntaxKit.java @@ -0,0 +1,28 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.syntaxkits; + +import jsyntaxpane.DefaultSyntaxKit; +import jsyntaxpane.lexers.PropertiesLexer; + +/** + * + * @author Ayman Al-Sairafi + */ +public class PropertiesSyntaxKit extends DefaultSyntaxKit { + + public PropertiesSyntaxKit() { + super(new PropertiesLexer()); + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/PythonSyntaxKit.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/PythonSyntaxKit.java new file mode 100644 index 000000000..5668838f9 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/PythonSyntaxKit.java @@ -0,0 +1,29 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.syntaxkits; + +import jsyntaxpane.DefaultSyntaxKit; +import jsyntaxpane.lexers.PythonLexer; + +/** + * + * @author Ayman Al-Sairafi + */ +public class PythonSyntaxKit extends DefaultSyntaxKit { + + public PythonSyntaxKit() { + super(new PythonLexer()); + } + +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/RubySyntaxKit.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/RubySyntaxKit.java new file mode 100644 index 000000000..296e9a4b2 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/RubySyntaxKit.java @@ -0,0 +1,28 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.syntaxkits; + +import jsyntaxpane.DefaultSyntaxKit; +import jsyntaxpane.lexers.RubyLexer; + +/** + * + * @author Ayman Al-Sairafi + */ +public class RubySyntaxKit extends DefaultSyntaxKit { + + public RubySyntaxKit() { + super(new RubyLexer()); + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/ScalaSyntaxKit.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/ScalaSyntaxKit.java new file mode 100644 index 000000000..6f5c3f928 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/ScalaSyntaxKit.java @@ -0,0 +1,33 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.syntaxkits; + +import jsyntaxpane.DefaultSyntaxKit; +import jsyntaxpane.Lexer; +import jsyntaxpane.lexers.ScalaLexer; + +/** + * + * @author Ayman Al-Sairafi + */ +public class ScalaSyntaxKit extends DefaultSyntaxKit { + + public ScalaSyntaxKit() { + super(new ScalaLexer()); + } + + public ScalaSyntaxKit(Lexer lexer) { + super(lexer); + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/SqlSyntaxKit.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/SqlSyntaxKit.java new file mode 100644 index 000000000..2dfcf5815 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/SqlSyntaxKit.java @@ -0,0 +1,28 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.syntaxkits; + +import jsyntaxpane.DefaultSyntaxKit; +import jsyntaxpane.lexers.SqlLexer; + +/** + * + * @author Ayman Al-Sairafi + */ +public class SqlSyntaxKit extends DefaultSyntaxKit { + + public SqlSyntaxKit() { + super(new SqlLexer()); + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/TALSyntaxKit.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/TALSyntaxKit.java new file mode 100644 index 000000000..31a55368b --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/TALSyntaxKit.java @@ -0,0 +1,28 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.syntaxkits; + +import jsyntaxpane.DefaultSyntaxKit; +import jsyntaxpane.lexers.TALLexer; + +/** + * + * @author Ayman Al-Sairafi + */ +public class TALSyntaxKit extends DefaultSyntaxKit { + + public TALSyntaxKit() { + super(new TALLexer()); + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/XHTMLSyntaxKit.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/XHTMLSyntaxKit.java new file mode 100644 index 000000000..f3be11c46 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/XHTMLSyntaxKit.java @@ -0,0 +1,28 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.syntaxkits; + +import jsyntaxpane.DefaultSyntaxKit; +import jsyntaxpane.lexers.XHTMLLexer; + +/** + * + * @author Ayman Al-Sairafi + */ +public class XHTMLSyntaxKit extends DefaultSyntaxKit { + + public XHTMLSyntaxKit() { + super(new XHTMLLexer()); + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/XPathSyntaxKit.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/XPathSyntaxKit.java new file mode 100644 index 000000000..8c9640a37 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/XPathSyntaxKit.java @@ -0,0 +1,28 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.syntaxkits; + +import jsyntaxpane.DefaultSyntaxKit; +import jsyntaxpane.lexers.XPathLexer; + +/** + * + * @author Ayman Al-Sairafi + */ +public class XPathSyntaxKit extends DefaultSyntaxKit { + + public XPathSyntaxKit() { + super(new XPathLexer()); + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/XmlSyntaxKit.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/XmlSyntaxKit.java new file mode 100644 index 000000000..0a749e63e --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/syntaxkits/XmlSyntaxKit.java @@ -0,0 +1,29 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.syntaxkits; + +import jsyntaxpane.DefaultSyntaxKit; +import jsyntaxpane.lexers.XmlLexer; + +/** + * + * @author Ayman Al-Sairafi + */ +public class XmlSyntaxKit extends DefaultSyntaxKit { + + public XmlSyntaxKit() { + super(new XmlLexer()); + } + +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/util/Configuration.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/util/Configuration.java new file mode 100644 index 000000000..d0875280d --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/util/Configuration.java @@ -0,0 +1,379 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.util; + +import java.awt.Color; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; +import java.util.logging.Level; +import java.util.logging.Logger; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * Wrapper around the Properties class with supprt for Heirarchical confogurations + * and more functionality. + * + * Except for the getXXXX methods, all other Map Interface methods operate on the + * current (non-parent) collection and do NOT touch the parent. + * + * @author Ayman Al-Sairafi + */ +public class Configuration implements Map { + + /** + * Our parent + */ + Configuration parent; + /** + * Our Class for the configuration + */ + Class clazz; + /** + * The properties we have, excluding the parents defaults + */ + Map props; + + /** + * Creates a new COnfiguration that uses parent as its parent + * Configuration. + * + * @param theClass + * @param parent + */ + public Configuration(Class theClass, Configuration parent) { + this(theClass); + this.parent = parent; + } + + /** + * Creates an empty Configuration + * @param theClass + */ + public Configuration(Class theClass) { + super(); + this.clazz = theClass; + } + + /** + * Get a string from this object or one of its parents. If nothing + * is found, null is returned. + * If the Regex ${key} is found, then it is replaced by the value of that + * key within this (or parent's) map. + * Special COnstructs in ${}: + *
  • class_path will be replaced by the name of the + * Configuration (usually ClassName) with "." replaced by "/", and then + * converted to all lowercase
  • + *
  • class_simpleName
  • is replaced by class.SimpleName + * @param key + * @return + */ + public String getString(String key) { + String value = null; + if (props != null) { + value = props.get(key); + } + for (Configuration p = parent; value == null && p != null; p = p.parent) { + value = p.get(key); + } + // if we have a parent, then perform ${} replacements + if (value != null) { + Matcher m = PARENT_KEY.matcher(value); + StringBuffer sb = new StringBuffer(); + while (m.find()) { + String p_key = m.group(1); + String p_value = getString(p_key); + if (p_key.equals("class_path")) { + p_value = clazz.getName().replace(".", "/").toLowerCase(); + } else if (p_key.equals("class_simpleName")) { + p_value = clazz.getSimpleName(); + } else { + p_value = getString(p_key); + if (p_value == null) { + Logger.getLogger(this.getClass().getName()).warning( + "no value for ${" + p_key + + "} is defined"); + } + } + m.appendReplacement(sb, p_value); + } + m.appendTail(sb); + value = sb.toString(); + } + return value; + } + + /** + * Returns a non-null value either by traversing the current + * and parent(s) map, or returning the defaultValue + * @param key + * @param defaultValue + * @throws NullPointerException if defaultValue is null + * @return + */ + public String getString(String key, String defaultValue) { + if (defaultValue == null) { + throw new NullPointerException("defaultValue cannot be null"); + } + String value = getString(key); + return (value == null) ? defaultValue : value; + } + + /** + * Gets an integer from the properties. If number cannot be found + * or if it cannot be decoded, the default is returned + * The integer is decoded using {@link Integer.decode(String)} + * @param key + * @param Default + * @return + */ + public int getInteger(String key, int Default) { + String v = getString(key); + if (v == null) { + return Default; + } + try { + int i = Integer.decode(v); + return i; + } catch (NumberFormatException e) { + LOG.log(Level.WARNING, null, e); + return Default; + } + } + + /** + * Returns a String[] of the comma separated items in the value. + * + * Does NOT return null. If the key is not found, + * then an empty string array is returned. So the return of this method + * can always be used directly in a foreach loop + * @param key + * @return non-null String[] + */ + public String[] getPropertyList(String key) { + String v = getString(key); + if (v == null) { + return EMPTY_LIST; + } else { + return COMMA_SEPARATOR.split(v); + } + } + + /** + * Returns a boolean from the configuration + * @param key + * @param Default + * @return + */ + public boolean getBoolean(String key, boolean Default) { + String b = getString(key); + if (b == null) { + return Default; + } + return Boolean.parseBoolean(b.trim()); + } + + /** + * return the Color that has the given key or the Default + * @param key + * @param Default + * @return + */ + public Color getColor(String key, Color Default) { + String c = getString(key); + if (c == null) { + return Default; + } else { + try { + return Color.decode(c); + } catch (NumberFormatException e) { + return Default; + } + } + } + + @SuppressWarnings("unchecked") + @Override + public void putAll(Map config) { + if (props == null) { + props = new HashMap(); + } + props.putAll(config); + } + + /** + * Returns ALL property names from this Configuration's parents and + * this Configuration. As usual, parents are added first so they + * are overriden by children. + * + * @return Set of all String keys in this and parents + */ + public Set stringPropertyNames() { + Set propNames = new HashSet(); + if (parent != null) { + propNames.addAll(parent.stringPropertyNames()); + } + if (props != null) { + for (Object k : props.keySet()) { + propNames.add(k.toString()); + } + } + return propNames; + } + + @Override + public String put(String key, String value) { + if (props == null) { + props = new HashMap(); + } + Object old = props.put(key, value); + return (old == null) ? null : old.toString(); + } + + @Override + public int size() { + return (props == null) ? 0 : props.size(); + } + + @Override + public boolean isEmpty() { + return (props == null) ? true : props.isEmpty(); + } + + @Override + public boolean containsKey(Object key) { + return (props == null) ? false : props.containsKey(key); + } + + @Override + public boolean containsValue(Object value) { + return (props == null) ? false : props.containsValue(value); + } + + @Override + public String get(Object key) { + return (props == null) ? null : props.get(key); + } + + @Override + public String remove(Object key) { + if (props == null) { + return null; + } + Object old = props.remove(key); + return (old == null) ? null : old.toString(); + } + + @Override + public void clear() { + if (props != null) { + props.clear(); + } + } + + @Override + @SuppressWarnings("unchecked") + public Set keySet() { + if (props == null) { + return Collections.EMPTY_SET; + } else { + return props.keySet(); + } + } + + @Override + @SuppressWarnings("unchecked") + public Collection values() { + if (props == null) { + return Collections.EMPTY_SET; + } else { + return props.values(); + } + } + + @Override + @SuppressWarnings("unchecked") + public Set> entrySet() { + if (props == null) { + return Collections.EMPTY_SET; + } else { + return props.entrySet(); + } + } + + @Override + public String toString() { + return "Configuration " + clazz + " for " + parent; + } + + /** + * Utility class to hold data for {@link getKeys} method. + */ + public static class StringKeyMatcher { + + private StringKeyMatcher(String key, Matcher matcher, String group1, String value) { + this.key = key; + this.matcher = matcher; + this.group1 = group1; + this.value = value; + } + /** + * The full key matched + */ + public final String key; + /** + * matcher instance for the key + */ + public final Matcher matcher; + /** + * Matched group 1. Could be null if no Group 1 is found + */ + public final String group1; + /** + * Value for key matched + */ + public final String value; + } + + /** + * Obtain a set of all keys (and parent's keys) that match the given pattern. + * If no keys match, then an empty set is returned. + * Use this instead of the {@link stringPropertyNames} + * @param pattern + * @return + */ + public Set getKeys(Pattern pattern) { + Set matched = new HashSet(); + Set all = stringPropertyNames(); + for (String k : all) { + Matcher m = pattern.matcher(k); + if (m.matches()) { + StringKeyMatcher skm = new StringKeyMatcher(k, m, + (m.groupCount() >= 1) ? m.group(1) : null, + getString(k)); + matched.add(skm); + } + } + return matched; + } + public static final String[] EMPTY_LIST = new String[0]; + public static final Pattern COMMA_SEPARATOR = Pattern.compile("\\s*,\\s*"); + private static Pattern PARENT_KEY = Pattern.compile("\\$\\{(\\w+)\\}"); + private static final Logger LOG = Logger.getLogger(Configuration.class.getName()); +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/util/JarServiceProvider.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/util/JarServiceProvider.java new file mode 100644 index 000000000..2ef1d5669 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/util/JarServiceProvider.java @@ -0,0 +1,238 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.util; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.URL; +import java.nio.charset.Charset; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Properties; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * + * @author subwiz + * @author Ayman Al-Sairafi + */ +public class JarServiceProvider { + + public static final String SERVICES_ROOT = "META-INF/services/"; + private static final Logger LOG = Logger.getLogger(JarServiceProvider.class.getName()); + + /** + * Prevent anyone from instantiating this class. + * Just use the static method + */ + private JarServiceProvider() { + } + + private static ClassLoader getClassLoader() { + ClassLoader cl = JarServiceProvider.class.getClassLoader(); + return cl == null ? ClassLoader.getSystemClassLoader() : cl; + } + + /** + * Return an Object array from the file in META-INF/resources/{classname} + * @param cls + * @return + * @throws java.io.IOException + */ + public static List getServiceProviders(Class cls) throws IOException { + ArrayList l = new ArrayList(); + ClassLoader cl = getClassLoader(); + String serviceFile = SERVICES_ROOT + cls.getName(); + Enumeration e = cl.getResources(serviceFile); + while (e.hasMoreElements()) { + URL u = e.nextElement(); + InputStream is = u.openStream(); + BufferedReader br = null; + try { + br = new BufferedReader( + new InputStreamReader(is, Charset.forName("UTF-8"))); + String str = null; + while ((str = br.readLine()) != null) { + int commentStartIdx = str.indexOf("#"); + if (commentStartIdx != -1) { + str = str.substring(0, commentStartIdx); + } + str = str.trim(); + if (str.length() == 0) { + continue; + } + try { + Object obj = cl.loadClass(str).newInstance(); + l.add(obj); + } catch (Exception ex) { + LOG.warning("Could not load: " + str); + LOG.warning(ex.getMessage()); + } + } + } finally { + if (br != null) { + br.close(); + } + } + } + return l; + } + + /** + * Read a file in the META-INF/services location. File name will be + * fully qualified classname, in all lower-case, appended with ".properties" + * If no file is found, then a an empty Property instance will be returned + * @param clazz + * @return Property file read. + */ + public static Properties readProperties(Class clazz) { + return readProperties(clazz.getName()); + } + + /** + * Read a file in the META-INF/services named name appended with + * ".properties" + * + * If no file is found, then a an empty Property instance will be returned + * @param name name of file (use dots to separate subfolders). + * @return Property file read. + */ + public static Properties readProperties(String name) { + Properties props = new Properties(); + String serviceFile = name.toLowerCase(); + if (!serviceFile.endsWith(".properties")) { + serviceFile += ".properties"; + } + InputStream is = findResource(serviceFile); + if (is != null) { + try { + props.load(is); + } catch (IOException ex) { + Logger.getLogger(JarServiceProvider.class.getName()).log(Level.SEVERE, null, ex); + } + } + return props; + } + + /** + * Read a file in the META-INF/services named name appended with + * ".properties", and returns it as a Map + * If no file is found, then a an empty Property instance will be returned + * @param name name of file (use dots to separate subfolders). + * @return Map of keys and values + */ + public static Map readStringsMap(String name) { + Properties props = readProperties(name); + HashMap map = new HashMap(); + if (props != null) { + for (Map.Entry e : props.entrySet()) { + map.put(e.getKey().toString(), e.getValue().toString()); + } + } + return map; + } + + /** + * Read the given URL and returns a List of Strings for each input line + * Each line will not have the line terminator. + * + * The resource is searched in /META-INF/services/url, then in + * url, then the url is treated as a location in the current classpath + * and an attempt to read it from that location is done. + * + * @param url location of file to read + * @return List of Strings for each line read. or EMPTY_LIST if URL is not found + */ + @SuppressWarnings("unchecked") + public static List readLines(String url) { + InputStream is = findResource(url); + if (is == null) { + return Collections.EMPTY_LIST; + } + List lines = new ArrayList(); + try { + BufferedReader br = new BufferedReader(new InputStreamReader(is)); + for (String line = br.readLine(); line != null; line = br.readLine()) { + // Trim and unescape some control chars + line = line.trim().replace("\\n", "\n").replace("\\t", "\t"); + lines.add(line); + } + } catch (IOException ex) { + LOG.log(Level.SEVERE, null, ex); + } finally { + try { + is.close(); + } catch (IOException ex) { + LOG.log(Level.SEVERE, null, ex); + } + return lines; + } + + } + + /** + * Attempt to find a location url. The following locations are searched in + * sequence: + * url, + * SERVICES_ROOT/url + * all classpath/url + * @param url + * @param cl classloader + * @return InputSTream at that location, or null if not found + * @see JarServiceProvider#findResource(java.lang.String) + */ + public static InputStream findResource(String url, ClassLoader cl) { + InputStream is = null; + + URL loc = cl.getResource(url); + if (loc == null) { + loc = cl.getResource(url); + } + if (loc == null) { + loc = cl.getResource(SERVICES_ROOT + url); + } + if (loc == null) { + is = ClassLoader.getSystemResourceAsStream(url); + } else { + try { + is = loc.openStream(); + } catch (IOException ex) { + Logger.getLogger(JarServiceProvider.class.getName()).log(Level.SEVERE, null, ex); + } + } + return is; + } + + /** + * Attempt to find a location url. The following locations are searched in + * sequence: + * url, + * SERVICES_ROOT/url + * all classpath/url + * The System ClassLoader is used. + * @param url + * @return InputSTream at that location, or null if not found + * @see JarServiceProvider#findResource(java.lang.String, java.lang.ClassLoader) + */ + public static InputStream findResource(String url) { + return findResource(url, getClassLoader()); + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/util/ReflectUtils.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/util/ReflectUtils.java new file mode 100644 index 000000000..5ada9877e --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/util/ReflectUtils.java @@ -0,0 +1,362 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.util; + +import java.io.File; +import java.io.IOException; +import java.lang.reflect.Constructor; +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Member; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.net.URL; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * Reflection Utility methods + * @author Ayman Al-Sairafi + */ +public class ReflectUtils { + + /** + * Adds all methods (from Class.getMethodCalls) to the list + * @param aClass + * @param list + * @return number of methods added + */ + public static int addMethods(Class aClass, List list) { + Method[] methods = aClass.getMethods(); + for (Method m : methods) { + list.add(m); + } + return methods.length; + } + + /** + * Adds all static methods (from Class.getMethodCalls) to the list + * @param aClass + * @param list + * @return number of methods added + */ + public static int addStaticMethods(Class aClass, List list) { + Method[] methods = aClass.getMethods(); + for (Method m : methods) { + if (Modifier.isStatic(m.getModifiers())) { + list.add(m); + } + } + return methods.length; + } + + /** + * Adds all static Fields (from Class.getFields) to the list + * @param aClass + * @param list + * @return number of fields added + */ + public static int addStaticFields(Class aClass, List list) { + Field[] fields = aClass.getFields(); + for (Field f : fields) { + if (Modifier.isStatic(f.getModifiers())) { + list.add(f); + } + } + return fields.length; + } + + /** + * Adds all Fields (from Class.getFields) to the list + * @param aClass + * @param list + * @return number of fields added + */ + public static int addFields(Class aClass, List list) { + Field[] fields = aClass.getFields(); + for (Field f : fields) { + list.add(f); + } + return fields.length; + } + + /** + * Adds all Constructor (from Class.getConstructorCalls) to the list + * @param aClass + * @param list + * @return number of constructors added + */ + public static int addConstrcutors(Class aClass, List list) { + Constructor[] constructors = aClass.getConstructors(); + for (Constructor c : constructors) { + list.add(c); + } + return constructors.length; + } + + /** + * Convert the constructor to a Java Code String + * (arguments are replaced by the simple types) + * @param c Constructor + * @return + */ + public static String getJavaCallString(Constructor c) { + StringBuilder call = new StringBuilder(); + call.append(c.getDeclaringClass().getSimpleName()); + addParamsString(call, c.getParameterTypes()); + return call.toString(); + } + + /** + * Convert the Method to a Java Code String + * (arguments are replaced by the simple types) + * @param method Method + * @return + */ + public static String getJavaCallString(Method method) { + StringBuilder call = new StringBuilder(); + call.append(method.getName()); + addParamsString(call, method.getParameterTypes()); + return call.toString(); + } + + /** + * Adds the class SimpleNames, comma sepearated and surrounded by paranthesis to the + * call StringBuffer + * @param call + * @param params + * @return + */ + public static StringBuilder addParamsString(StringBuilder call, Class[] params) { + call.append("("); + boolean firstArg = true; + for (Class arg : params) { + if (firstArg) { + firstArg = false; + } else { + call.append(", "); + } + call.append(arg.getSimpleName()); + } + call.append(")"); + return call; + } + + /** + * Gets a String array of all method calls for the given class + * @param aClass + * @return + */ + public static String[] getMethodCalls(Class aClass) { + String[] methods = new String[aClass.getMethods().length]; + int i = 0; + for (Method method : aClass.getMethods()) { + methods[i++] = getJavaCallString(method); + } + return methods; + } + + /** + * Gets an array of all Constructor calls for the given class + * @param aClass + * @return + */ + public static String[] getConstructorCalls(Class aClass) { + Constructor[] constructors = aClass.getConstructors(); + String[] cons = new String[constructors.length]; + int i = 0; + for (Constructor c : constructors) { + cons[i++] = getJavaCallString(c); + } + return cons; + } + + /** + * Return a paranthesis enclosed, comma sepearated String of all + * SimpleClass names in params. + * @param params + * @return + */ + public static String getParamsString(Class[] params) { + StringBuilder sb = new StringBuilder(); + addParamsString(sb, params); + return sb.toString(); + } + + /** + * Scans all classes accessible from the context class loader which belong to the given package and subpackages. + * + * @param packageName The base package + * @return The classes + * @throws ClassNotFoundException + * @throws IOException + */ + private static Class[] getClasses(String packageName) + throws ClassNotFoundException, IOException { +// ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); + ClassLoader classLoader = ClassLoader.getSystemClassLoader(); + assert classLoader != null; + String path = packageName.replace('.', '/'); + Enumeration resources = classLoader.getResources(path); + List dirs = new ArrayList(); + while (resources.hasMoreElements()) { + URL resource = resources.nextElement(); + dirs.add(new File(resource.getFile())); + } + ArrayList classes = new ArrayList(); + for (File directory : dirs) { + classes.addAll(findClasses(directory, packageName)); + } + return classes.toArray(new Class[classes.size()]); + } + + /** + * Recursive method used to find all classes in a given directory and subdirs. + * + * @param directory The base directory + * @param packageName The package name for classes found inside the base directory + * @return The classes + * @throws ClassNotFoundException + */ + private static List findClasses(File directory, String packageName) throws ClassNotFoundException { + List classes = new ArrayList(); + if (!directory.exists()) { + return classes; + } + File[] files = directory.listFiles(); + for (File file : files) { + if (file.isDirectory()) { + assert !file.getName().contains("."); + classes.addAll(findClasses(file, packageName + "." + file.getName())); + } else if (file.getName().endsWith(".class")) { + classes.add(Class.forName(packageName + '.' + file.getName().substring(0, file.getName().length() - 6))); + } + } + return classes; + } + + /** + * Attempt to find the given className within any of the packages. + * If the class is not found, then null is returned + * @param className Fully or partially qualified classname within any of the packages + * @param packages List of packages for search + * @return CLass object or null if not found. + */ + public static Class findClass(String className, List packages) { + try { + return Class.forName(className); + } catch (ClassNotFoundException ex) { + } catch (NoClassDefFoundError ex) { + } + for (String pack : packages) { + try { + return Class.forName(pack + "." + className); + } catch (ClassNotFoundException ex) { + } catch (NoClassDefFoundError ex) { + } + } + return null; + } + + /** + * Find a setter method for the give object's property and try to call it. + * No exceptions are thrown. You typically call this method because either + * you are sure no exceptions will be thrown, or to silently ignore + * any that may be thrown. + * This will also find a setter that accepts an interface that the value + * implements. + * This is still not very effcient and should only be called if + * performance is not of an issue. + * You can check the return value to see if the call was seuccessful or + * not. + * @param obj Object to receive the call + * @param property property name (without set. First letter will be + * capitalized) + * @param value Value of the property. + * @return + */ + public static boolean callSetter(Object obj, String property, Object value) { + String key = String.format("%s.%s(%s)", obj.getClass().getName(), + property, value.getClass().getName()); + Method m = null; + boolean result = false; + if(!SETTERS_MAP.containsKey(key)) { + m = findMethod(obj, property, value); + SETTERS_MAP.put(key, m); + } else { + m = SETTERS_MAP.get(key); + } + if(m != null) { + try { + m.invoke(obj, value); + result = true; + } catch (IllegalAccessException ex) { + Logger.getLogger(ReflectUtils.class.getName()).log(Level.SEVERE, null, ex); + } catch (IllegalArgumentException ex) { + Logger.getLogger(ReflectUtils.class.getName()).log(Level.SEVERE, null, ex); + } catch (InvocationTargetException ex) { + Logger.getLogger(ReflectUtils.class.getName()).log(Level.SEVERE, null, ex); + } + } + return result; + } + + private static synchronized Method findMethod(Object obj, + String property, Object value) { + Method m = null; + Class theClass = obj.getClass(); + String setter = String.format("set%C%s", + property.charAt(0), property.substring(1)); + Class paramType = value.getClass(); + while (paramType != null) { + try { + m = theClass.getMethod(setter, paramType); + return m; + } catch (NoSuchMethodException ex) { + // try on the interfaces of this class + for (Class iface : paramType.getInterfaces()) { + try { + m = theClass.getMethod(setter, iface); + return m; + } catch (NoSuchMethodException ex1) { + } + } + paramType = paramType.getSuperclass(); + } + } + return m; + } + public static final List DEFAULT_PACKAGES = new ArrayList(3); + + static { + DEFAULT_PACKAGES.add("java.lang"); + DEFAULT_PACKAGES.add("java.util"); + DEFAULT_PACKAGES.add("jsyntaxpane"); + } + /** + * To speed up find setter methods, this map will be used. + * The Key String will be of the format objectClass.property(valueclass) + * Where: + * objectClass = obj.getClass().getName + * property = property (as passed in to callSetter), before set is appended + * valueCLass = value.getClass().getName() + * The Method will be either the method, or null if a search was not and no + * method is found. + */ + private static HashMap SETTERS_MAP = new HashMap(); +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/util/StringUtils.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/util/StringUtils.java new file mode 100644 index 000000000..50c09c01f --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/util/StringUtils.java @@ -0,0 +1,60 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.util; + +import java.io.Serializable; +import java.util.Comparator; + +/** + * Don't we all need one of those? + * + * @author Ayman Al-Sairafi + */ +public class StringUtils { + + /** + * Perfrom a String startsWith match with support for CamelCase. + * @param word full word + * @param abbr abbriviated word + * @return true if the word startsWith abbr, or if any uppercase char in abbr + * matches the next uppercase char in word + * + * FIXME: not so effecient as it creates a StringBuilder, but works + * FIXME: add {@code Comparator} + */ + public static boolean camelCaseMatch(String word, String abbr) { + StringBuilder sb = new StringBuilder(); + sb.append(word.charAt(0)); + for (int i = 1; i < word.length(); i++) { + char c = word.charAt(i); + if (Character.isUpperCase(c)) { + sb.append(c); + } + } + String cc = sb.toString(); + if (cc.startsWith(abbr)) { + return true; + } else { + return word.startsWith(abbr); + } + } + + static class CamelCaseCompare implements Comparator, Serializable { + + @Override + public int compare(String o1, String o2) { + throw new UnsupportedOperationException("Not supported yet."); + } + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/util/SwingUtils.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/util/SwingUtils.java new file mode 100644 index 000000000..0e7991b67 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/util/SwingUtils.java @@ -0,0 +1,49 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.util; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.KeyEvent; +import javax.swing.JComponent; +import javax.swing.KeyStroke; +import jsyntaxpane.actions.gui.EscapeListener; + +/** + * As always, some general purpose handy Swing Utility methods + * @author Ayman Al-Sairafi + */ +public class SwingUtils { + + /** + * FIXME: These two addEscapeListener can be called on a new interface + * that implements RootPainCOntainer (Swing) and a new method that + * is called + * @param dialog + */ + public static void addEscapeListener(final EscapeListener dialog) { + ActionListener escListener = new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + dialog.escapePressed(); + } + }; + + dialog.getRootPane().registerKeyboardAction(escListener, + KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), + JComponent.WHEN_IN_FOCUSED_WINDOW); + + } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/actionscript.flex b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/actionscript.flex new file mode 100644 index 000000000..c4db6e2e2 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/actionscript.flex @@ -0,0 +1,266 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jsyntaxpane.lexers; + + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + +%% + +%public +%class ActionScriptLexer +%extends DefaultJFlexLexer +%final +%unicode +%char +%type Token + + +%{ + /** + * Create an empty lexer, yyrset will be called later to reset and assign + * the reader + */ + public ActionScriptLexer() { + super(); + } + + @Override + public int yychar() { + return yychar; + } + + private static final byte PARAN = 1; + private static final byte BRACKET = 2; + private static final byte CURLY = 3; + +%} + +/* main character classes */ +LineTerminator = \r|\n|\r\n +InputCharacter = [^\r\n] + +WhiteSpace = {LineTerminator} | [ \t\f]+ + +/* comments */ +Comment = {TraditionalComment} | {EndOfLineComment} + +TraditionalComment = "/*" [^*] ~"*/" | "/*" "*"+ "/" +EndOfLineComment = "//" {InputCharacter}* {LineTerminator}? + +/* identifiers */ +Identifier = [:jletter:][:jletterdigit:]* + +/* integer literals */ +DecIntegerLiteral = 0 | [1-9][0-9]* + +HexIntegerLiteral = 0 [xX] 0* {HexDigit} {1,8} +HexDigit = [0-9a-fA-F] + +OctIntegerLiteral = 0+ [1-3]? {OctDigit} {1,15} +OctDigit = [0-7] + +/* floating point literals */ +DoubleLiteral = ({FLit1}|{FLit2}|{FLit3}) {Exponent}? + +FLit1 = [0-9]+ \. [0-9]* +FLit2 = \. [0-9]+ +FLit3 = [0-9]+ +Exponent = [eE] [+-]? [0-9]+ + +/* string and character literals */ +StringCharacter = [^\r\n\"\\] +SingleCharacter = [^\r\n\'\\] + +%state STRING, CHARLITERAL + +%% + + { + + /* keywords */ + "abstract" | + "boolean" | + "break" | + "case" | + "catch" | + "char" | + "class" | + "const" | + "continue" | + "do" | + "else" | + "extends" | + "final" | + "finally" | + "for" | + "default" | + "implements" | + "import" | + "instanceof" | + "interface" | + "new" | + "if" | + "public" | + "super" | + "switch" | + "package" | + "private" | + "protected" | + "return" | + "void" | + "static" | + "while" | + "this" | + "throw" | + "throws" | + "try" | + "var" | + + "true" | + "false" | + "NaN" | + "function" | + "dynamic" | + "override" | +"with" | +"each" | + "null" { return token(TokenType.KEYWORD); } + + + /* operators */ + + "(" { return token(TokenType.OPERATOR, PARAN); } + ")" { return token(TokenType.OPERATOR, -PARAN); } + "{" { return token(TokenType.OPERATOR, CURLY); } + "}" { return token(TokenType.OPERATOR, -CURLY); } + "[" { return token(TokenType.OPERATOR, BRACKET); } + "]" { return token(TokenType.OPERATOR, -BRACKET); } + ";" | + "," | + "." | + "=" | + ">" | + "<" | + "!" | + "~" | + "?" | + ":" | + "==" | + "<=" | + ">=" | + "!=" | + "&&" | + "||" | + "++" | + "--" | + "+" | + "-" | + "*" | + "/" | + "&" | + "|" | + "^" | + "%" | + "<<" | + ">>" | + ">>>" | + "+=" | + "-=" | + "*=" | + "/=" | + "&=" | + "|=" | + "^=" | + "%=" | + "<<=" | + ">>=" | + ">>>=" { return token(TokenType.OPERATOR); } + + /* string literal */ + \" { + yybegin(STRING); + tokenStart = yychar; + tokenLength = 1; + } + + /* character literal */ + \' { + yybegin(CHARLITERAL); + tokenStart = yychar; + tokenLength = 1; + } + + /* numeric literals */ + + {DecIntegerLiteral} | + + {HexIntegerLiteral} | + + {OctIntegerLiteral} | + + {DoubleLiteral} | + {DoubleLiteral}[dD] { return token(TokenType.NUMBER); } + + // JavaDoc comments need a state so that we can highlight the @ controls + + /* comments */ + {Comment} { return token(TokenType.COMMENT); } + + /* whitespace */ + {WhiteSpace} { } + + /* identifiers */ + {Identifier} { return token(TokenType.IDENTIFIER); } +} + + + { + \" { + yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + + {StringCharacter}+ { tokenLength += yylength(); } + + \\[0-3]?{OctDigit}?{OctDigit} { tokenLength += yylength(); } + + /* escape sequences */ + + \\. { tokenLength += 2; } + {LineTerminator} { yybegin(YYINITIAL); } +} + + { + \' { + yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + + {SingleCharacter}+ { tokenLength += yylength(); } + + /* escape sequences */ + + \\. { tokenLength += 2; } + {LineTerminator} { yybegin(YYINITIAL); } +} + +/* error fallback */ +.|\n { } +<> { return null; } + diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/bash.flex b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/bash.flex new file mode 100644 index 000000000..98e8d1791 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/bash.flex @@ -0,0 +1,365 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jsyntaxpane.lexers; + + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + +%% + +%public +%class BashLexer +%extends DefaultJFlexLexer +%final +%unicode +%char +%type Token + +%{ + /** + * Create an empty lexer, yyrset will be called later to reset and assign + * the reader + */ + public BashLexer() { + super(); + } + + private static final byte PARAN = 1; + private static final byte BRACKET = 2; + private static final byte CURLY = 3; + private static final byte DO = 4; + private static final byte CASE = 5; + private static final byte IF = 5; + private static final byte INT_EXPR = 6; + + @Override + public int yychar() { + return yychar; + } + +%} + +LineTerminator = \r|\n|\r\n +InputCharacter = [^\r\n] + +Identifier = [a-zA-Z][a-zA-Z0-9_]* + +Comment = "#" {InputCharacter}* {LineTerminator}? +Shebang = "#!" {InputCharacter}* {LineTerminator}? + +StringCharacter = [^\r\n\"\\] +SingleCharacter = [^\r\n\'\\] +BackQuoteChars = [^\r\n\`\\] + + +%% + + +{ + /* Bash keywords */ + "if" { return token(TokenType.KEYWORD, IF); } + "fi" { return token(TokenType.KEYWORD, -IF); } + "do" { return token(TokenType.KEYWORD, DO); } + "done" { return token(TokenType.KEYWORD, -DO); } + "case" { return token(TokenType.KEYWORD, CASE); } + "esac" { return token(TokenType.KEYWORD, -CASE); } + "$((" { return token(TokenType.KEYWORD, INT_EXPR); } + "))" { return token(TokenType.KEYWORD, -INT_EXPR); } + + "(" { return token(TokenType.OPERATOR, PARAN); } + ")" { return token(TokenType.OPERATOR, -PARAN); } + "{" { return token(TokenType.OPERATOR, CURLY); } + "}" { return token(TokenType.OPERATOR, -CURLY); } + "[" { return token(TokenType.OPERATOR, BRACKET); } + "]" { return token(TokenType.OPERATOR, -BRACKET); } + + "-eq" | + "-ne" | + "-lt" | + "-gt" | + "-ge" | + "-le" | + ">=" | + "<=" | + "==" | + "!=" | + "-z" | + "-n" | + "=~" | + + "$" | + "#" | + "&" | + "." | + ";" | + "+" | + "-" | + "=" | + "/" | + "++" | + "@" { return token(TokenType.OPERATOR); } + + "then" | + "else" | + "elif" | + "for" | + "in" | + "until" | + "while" | + "break" | + "local" | + "continue" { return token(TokenType.KEYWORD); } + + /* string literal */ + \"{StringCharacter}+\" | + + \'{SingleCharacter}+\ { return token(TokenType.STRING); } + + \`{BackQuoteChars}+\` { return token(TokenType.STRING2); } + + + /* Other commands */ + "alias" | + "apropos" | + "apt" | + "aspell" | + "awk" | + "bash" | + "basename" | + "bc" | + "bg" | + "builtin" | + "bzip2" | + "cal" | + "cat" | + "cd" | + "cfdisk" | + "chgrp" | + "chmod" | + "chown" | + "chroot" | + "chkconfig" | + "cksum" | + "clear" | + "cmp" | + "comm" | + "command" | + "continue" | + "cp" | + "cron" | + "crontab" | + "csplit" | + "cut" | + "date" | + "dc" | + "dd" | + "ddrescue" | + "declare" | + "df" | + "diff" | + "diff3" | + "dig" | + "dir" | + "dircolors" | + "dirname" | + "dirs" | + "dmesg" | + "du" | + "echo" | + "egrep" | + "eject" | + "enable" | + "env" | + "ethtool" | + "eval" | + "exec" | + "exit" | + "expect" | + "expand" | + "export" | + "expr" | + "false" | + "fdformat" | + "fdisk" | + "fg" | + "fgrep" | + "file" | + "find" | + "fmt" | + "fold" | + "format" | + "free" | + "fsck" | + "ftp" | + "function" | + "gawk" | + "getopts" | + "grep" | + "groups" | + "gzip" | + "hash" | + "head" | + "history" | + "hostname" | + "id" | + "ifconfig" | + "ifdown" | + "ifup" | + "import" | + "install" | + "join" | + "kill" | + "killall" | + "less" | + "let" | + "ln" | + "locate" | + "logname" | + "logout" | + "look" | + "lpc" | + "lpr" | + "lprint" | + "lprintd" | + "lprintq" | + "lprm" | + "ls" | + "lsof" | + "man" | + "mkdir" | + "mkfifo" | + "mkisofs" | + "mknod" | + "more" | + "mount" | + "mtools" | + "mv" | + "mmv" | + "netstat" | + "nice" | + "nl" | + "nohup" | + "nslookup" | + "open" | + "op" | + "passwd" | + "paste" | + "pathchk" | + "ping" | + "popd" | + "pr" | + "printcap" | + "printenv" | + "printf" | + "ps" | + "pushd" | + "pwd" | + "quota" | + "quotacheck" | + "quotactl" | + "ram" | + "rcp" | + "read" | + "readonly" | + "reboot" | + "renice" | + "remsync" | + "return" | + "rev" | + "rm" | + "rmdir" | + "rsync" | + "screen" | + "scp" | + "sdiff" | + "sed" | + "select" | + "seq" | + "set" | + "sftp" | + "shift" | + "shopt" | + "shutdown" | + "sleep" | + "slocate" | + "sort" | + "source" | + "split" | + "ssh" | + "strace" | + "su" | + "sudo" | + "sum" | + "symlink" | + "sync" | + "tail" | + "tar" | + "tee" | + "test" | + "time" | + "times" | + "touch" | + "top" | + "traceroute" | + "trap" | + "tr" | + "true" | + "tsort" | + "tty" | + "type" | + "ulimit" | + "umask" | + "umount" | + "unalias" | + "uname" | + "unexpand" | + "uniq" | + "units" | + "unset" | + "unshar" | + "useradd" | + "usermod" | + "users" | + "uuencode" | + "uudecode" | + "v" | + "vdir" | + "vi" | + "vmstat" | + "watch" | + "wc" | + "whereis" | + "which" | + "who" | + "whoami" | + "Wget" | + "write" | + "xargs" | + "yes" { return token(TokenType.KEYWORD); } + + {Identifier} { return token(TokenType.IDENTIFIER); } + + /* labels */ + ":" [a-zA-Z][a-zA-Z0-9_]* { return token(TokenType.TYPE); } + + /* comments */ + {Shebang} { return token(TokenType.COMMENT2); } + {Comment} { return token(TokenType.COMMENT); } + . | {LineTerminator} { /* skip */ } + +} + +<> { return null; } \ No newline at end of file diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/c.flex b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/c.flex new file mode 100644 index 000000000..e394822bc --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/c.flex @@ -0,0 +1,241 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * Copyright 2006 Arnout Engelen . + * Copyright 2000-2006 Omnicore Software, Hans Kratz & Dennis Strein GbR, + * Geert Bevin . + * Distributed under the terms of either: + * - the common development and distribution license (CDDL), v1.0; or + * - the GNU Lesser General Public License, v2.1 or later + */ +package jsyntaxpane.lexers; + + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + +%% + +%public +%class CLexer +%extends DefaultJFlexLexer +%final +%unicode +%char +%type Token + + +%{ + + public CLexer() { + super(); + } + + private static final byte PARAN = 1; + private static final byte BRACKET = 2; + private static final byte CURLY = 3; + + @Override + public int yychar() { + return yychar; + } +%} + +/* main character classes */ +LineTerminator = \r|\n|\r\n +InputCharacter = [^\r\n] + +WhiteSpace = {LineTerminator} | [ \t\f]+ + +/* comments */ +Comment = {TraditionalComment} | {EndOfLineComment} + +TraditionalComment = "/*" [^*] ~"*/" | "/*" "*"+ "/" +EndOfLineComment = "//" {InputCharacter}* {LineTerminator}? + +/* identifiers */ + +ConstantIdentifier = {SimpleConstantIdentifier} +SimpleConstantIdentifier = [#A-Z0-9_]+ + +Identifier = [:jletter:][:jletterdigit:]* + +TypeIdentifier = {SimpleTypeIdentifier} +SimpleTypeIdentifier = [A-Z][:jletterdigit:]* + +/* int literals */ + +DecLiteral = 0 | [1-9][0-9]* {IntegerSuffix} + +HexLiteral = 0 [xX] 0* {HexDigit}* {IntegerSuffix} +HexDigit = [0-9a-fA-F] + +OctLiteral = 0+ {OctDigit}* {IntegerSuffix} +OctDigit = [0-7] + +IntegerSuffix = [uU]? [lL]? [uU]? + +/* float literals */ + +FloatLiteral = ({FLit1}|{FLit2}|{FLit3}|{FLit4}) ([fF]|[dD])? + +FLit1 = [0-9]+ \. [0-9]* {Exponent}? +FLit2 = \. [0-9]+ {Exponent}? +FLit3 = [0-9]+ {Exponent} +FLit4 = [0-9]+ {Exponent}? + +Exponent = [eE] [+\-]? [0-9]+ + +%% + + { + + /* keywords */ + "break" | + "case" | + "catch" | + "continue" | + "default" | + "do" | + "else" | + "for" | + "goto" | + "enum" | + "if" | + "inline" | + "mutable" | + "noinline" | + "return" | + "safecast" | + "sealed" | + "selectany" | + "sizeof" | + "static_cast" | + "switch" | + "template" | + "this" | + "thread" | + "throw" | + "try" | + "typedef" | + "typeid" | + "typename" | + "using" | + "uuid" | + "value" | + "virtual" | + "while" + { return token(TokenType.KEYWORD); } + + "static" | + "struct" | + "union" | + "volatile" | + "register" | + "extern" | + "const" | + "signed" | + "unsigned" | + "bool" | + "char" | + "double" | + "int" | + "long" | + "float" | + "short" | + "void" { return token(TokenType.TYPE); } + + /* literals */ + + + (\" ( [^\"\n\\] | \\[^\n] )* (\n | \\\n | \")) | + (\' ( [^\'\n\\] | \\[^\n] )* (\n | \\\n | \')) + { return token(TokenType.STRING); } + + "true" | + "false" | + {DecLiteral} | + {OctLiteral} | + {HexLiteral} | + + {FloatLiteral} + { return token(TokenType.NUMBER); } + + /* preprocessor symbols */ + "#define" | + "#elif" | + "#else" | + "#endif" | + "#error" | + "#ifdef" | + "#ifndef" | + "#if" | + "#import" | + "#include" | + "#line" | + "#pragma" | + "#undef" | + "#using" + { return token(TokenType.KEYWORD2); } + + + /* separators */ + "(" { return token(TokenType.OPERATOR, PARAN); } + ")" { return token(TokenType.OPERATOR, -PARAN); } + "{" { return token(TokenType.OPERATOR, CURLY); } + "}" { return token(TokenType.OPERATOR, -CURLY); } + "[" { return token(TokenType.OPERATOR, BRACKET); } + "]" { return token(TokenType.OPERATOR, -BRACKET); } + + /* operators */ + "=" | + ";" | + "," | + "." | + ">" | + "<" | + "!" | + "~" | + "?" | + ":" | + "+" | + "-" | + "*" | + "/" | + "&" | + "|" | + "^" | + ">>" | + "<<" | + "%" { return token(TokenType.OPERATOR); } + + {ConstantIdentifier} { return token(TokenType.IDENTIFIER); } + + {TypeIdentifier} { return token(TokenType.IDENTIFIER); } + + \n | + {Identifier} | + {WhiteSpace} { return token(TokenType.IDENTIFIER); } + + + + {Comment} { return token(TokenType.COMMENT); } + +} + + + +/* error fallback */ +.|\n { } +<> { return null; } diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/clojure.flex b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/clojure.flex new file mode 100644 index 000000000..7b0216676 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/clojure.flex @@ -0,0 +1,496 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jsyntaxpane.lexers; + + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + +%% + +%public +%class ClojureLexer +%extends DefaultJFlexLexer +%final +%unicode +%char +%type Token + + +%{ + /** + * Create an empty lexer, yyrset will be called later to reset and assign + * the reader + */ + public ClojureLexer() { + super(); + } + + @Override + public int yychar() { + return yychar; + } + + private static final byte PARAN = 1; + private static final byte BRACKET = 2; + private static final byte CURLY = 3; + +%} + +/* main character classes */ +LineTerminator = \r|\n|\r\n +InputCharacter = [^\r\n] + +WhiteSpace = {LineTerminator} | [ \t\f]+ + +/* comments */ +Comment = {EndOfLineComment} + +EndOfLineComment = ";" {InputCharacter}* {LineTerminator}? + +/* identifiers */ +Identifier = [:jletter:][:jletterdigit:]* + +/* integer literals */ +DecIntegerLiteral = 0 | [1-9][0-9]* +DecLongLiteral = {DecIntegerLiteral} [lL] + +HexIntegerLiteral = 0 [xX] 0* {HexDigit} {1,8} +HexLongLiteral = 0 [xX] 0* {HexDigit} {1,16} [lL] +HexDigit = [0-9a-fA-F] + +OctIntegerLiteral = 0+ [1-3]? {OctDigit} {1,15} +OctLongLiteral = 0+ 1? {OctDigit} {1,21} [lL] +OctDigit = [0-7] + +/* floating point literals */ +FloatLiteral = ({FLit1}|{FLit2}|{FLit3}) {Exponent}? [fF] +DoubleLiteral = ({FLit1}|{FLit2}|{FLit3}) {Exponent}? + +FLit1 = [0-9]+ \. [0-9]* +FLit2 = \. [0-9]+ +FLit3 = [0-9]+ +Exponent = [eE] [+-]? [0-9]+ + +/* string and character literals */ +StringCharacter = [^\r\n\"\\] +SingleCharacter = [^\r\n\'\\] + +%state STRING, CHARLITERAL + +%% + + { + + /* keywords */ + "fn" | + "fn*" | + "if" | + "def" | + "let" | + "let*" | + "loop*" | + "new" | + "nil" | + "recur" | + "loop" | + "do" | + "quote" | + "the-var" | + "identical?" | + "throw" | + "set!" | + "monitor-enter" | + "monitor-exit" | + "try" | + "catch" | + "finally" | + "in-ns" { return token(TokenType.KEYWORD); } + + /* Built-ins */ + "*agent*" | + "*command-line-args*" | + "*in*" | + "*macro-meta*" | + "*ns*" | + "*out*" | + "*print-meta*" | + "*print-readably*" | + "*proxy-classes*" | + "*warn-on-reflection*" | + "+" | + "-" | + "->" | + ".." | + "/" | + "<" | + "<=" | + "=" | + "==" | + ">" | + ">=" | + "accessor" | + "agent" | + "agent-errors" | + "aget" | + "alength" | + "all-ns" | + "alter" | + "and" | + "apply" | + "array-map" | + "aset" | + "aset-boolean" | + "aset-byte" | + "aset-char" | + "aset-double" | + "aset-float" | + "aset-int" | + "aset-long" | + "aset-short" | + "assert" | + "assoc" | + "await" | + "await-for" | + "bean" | + "binding" | + "bit-and" | + "bit-not" | + "bit-or" | + "bit-shift-left" | + "bit-shift-right" | + "bit-xor" | + "boolean" | + "butlast" | + "byte" | + "cast" | + "char" | + "class" | + "clear-agent-errors" | + "comment" | + "commute" | + "comp" | + "comparator" | + "complement" | + "concat" | + "cond" | + "conj" | + "cons" | + "constantly" | + "construct-proxy" | + "contains?" | + "count" | + "create-ns" | + "create-struct" | + "cycle" | + "dec" | + "defmacro" | + "defmethod" | + "defmulti" | + "defn" | + "defn-" | + "defstruct" | + "deref" | + "destructure" | + "disj" | + "dissoc" | + "distinct" | + "doall" | + "doc" | + "dorun" | + "doseq" | + "dosync" | + "dotimes" | + "doto" | + "double" | + "drop" | + "drop-while" | + "ensure" | + "eval" | + "every?" | + "false?" | + "ffirst" | + "file-seq" | + "filter" | + "find" | + "find-doc" | + "find-ns" | + "find-var" | + "first" | + "float" | + "flush" | + "fnseq" | + "for" | + "frest" | + "gensym" | + "gen-class" | + "gen-interface" | + "get" | + "get-proxy-class" | + "hash-map" | + "hash-set" | + "identity" | + "if-let" | + "import" | + "inc" | + "instance?" | + "int" | + "interleave" | + "into" | + "into-array" | + "iterate" | + "key" | + "keys" | + "keyword" | + "keyword?" | + "last" | + "lazy-cat" | + "lazy-cons" | + "line-seq" | + "list" | + "list*" | + "load" | + "load-file" | + "locking" | + "long" | + "macroexpand" | + "macroexpand-1" | + "make-array" | + "map" | + "map?" | + "mapcat" | + "max" | + "max-key" | + "memfn" | + "merge" | + "merge-with" | + "meta" | + "min" | + "min-key" | + "name" | + "namespace" | + "neg?" | + "newline" | + "nil?" | + "not" | + "not-any?" | + "not-every?" | + "not=" | + "ns-imports" | + "ns-interns" | + "ns-map" | + "ns-name" | + "ns-publics" | + "ns-refers" | + "ns-resolve" | + "ns-unmap" | + "nth" | + "nthrest" | + "or" | + "partial" | + "peek" | + "pmap" | + "pop" | + "pos?" | + "pr" | + "pr-str" | + "print" | + "print-doc" | + "print-str" | + "println" | + "println-str" | + "prn" | + "prn-str" | + "proxy" | + "proxy-mappings" | + "quot" | + "rand" | + "rand-int" | + "range" | + "re-find" | + "re-groups" | + "re-matcher" | + "re-matches" | + "re-pattern" | + "re-seq" | + "read" | + "read-line" | + "reduce" | + "ref" | + "ref-set" | + "refer" | + "rem" | + "remove-method" | + "remove-ns" | + "repeat" | + "replace" | + "replicate" | + "require" | + "resolve" | + "rest" | + "resultset-seq" | + "reverse" | + "rfirst" | + "rrest" | + "rseq" | + "scan" | + "second" | + "select-keys" | + "send" | + "send-off" | + "seq" | + "seq?" | + "set" | + "short" | + "slurp" | + "some" | + "sort" | + "sort-by" | + "sorted-map" | + "sorted-map-by" | + "sorted-set" | + "special-symbol?" | + "split-at" | + "split-with" | + "str" | + "string?" | + "struct" | + "struct-map" | + "subs" | + "subvec" | + "symbol" | + "symbol?" | + "sync" | + "take" | + "take-nth" | + "take-while" | + "test" | + "time" | + "to-array" | + "to-array-2d" | + "touch" | + "tree-seq" | + "true?" | + "update-proxy" | + "val" | + "vals" | + "var-get" | + "var-set" | + "var?" | + "vector" | + "vector?" | + "when" | + "when-first" | + "when-let" | + "when-not" | + "while" | + "with-local-vars" | + "with-meta" | + "with-open" | + "with-out-str" | + "xml-seq" | + "zero?" | + "zipmap" | + "repeatedly" | + "add-classpath" | + "vec" | + "hash" { return token(TokenType.KEYWORD2); } + + + /* operators */ + + "(" { return token(TokenType.OPERATOR, PARAN); } + ")" { return token(TokenType.OPERATOR, -PARAN); } + "{" { return token(TokenType.OPERATOR, CURLY); } + "}" { return token(TokenType.OPERATOR, -CURLY); } + "[" { return token(TokenType.OPERATOR, BRACKET); } + "]" { return token(TokenType.OPERATOR, -BRACKET); } + + /* string literal */ + \" { + yybegin(STRING); + tokenStart = yychar; + tokenLength = 1; + } + + /* character literal */ + \' { + yybegin(CHARLITERAL); + tokenStart = yychar; + tokenLength = 1; + } + + /* numeric literals */ + + {DecIntegerLiteral} | + {DecLongLiteral} | + + {HexIntegerLiteral} | + {HexLongLiteral} | + + {OctIntegerLiteral} | + {OctLongLiteral} | + + {FloatLiteral} | + {DoubleLiteral} | + {DoubleLiteral}[dD] { return token(TokenType.NUMBER); } + + /* comments */ + {Comment} { return token(TokenType.COMMENT); } + + /* whitespace */ + {WhiteSpace} { } + + /* identifiers */ + {Identifier} { return token(TokenType.IDENTIFIER); } +} + + + { + \" { + yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + + {StringCharacter}+ { tokenLength += yylength(); } + + \\[0-3]?{OctDigit}?{OctDigit} { tokenLength += yylength(); } + + /* escape sequences */ + + \\. { tokenLength += 2; } + {LineTerminator} { yybegin(YYINITIAL); } +} + + { + \' { + yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + + {SingleCharacter}+ { tokenLength += yylength(); } + + /* escape sequences */ + + \\. { tokenLength += 2; } + {LineTerminator} { yybegin(YYINITIAL); } +} + +/* error fallback */ +.|\n { } +<> { return null; } + diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/cpp.flex b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/cpp.flex new file mode 100644 index 000000000..f7393cb62 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/cpp.flex @@ -0,0 +1,274 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * Copyright 2006 Arnout Engelen . + * Copyright 2000-2006 Omnicore Software, Hans Kratz & Dennis Strein GbR, + * Geert Bevin . + * Distributed under the terms of either: + * - the common development and distribution license (CDDL), v1.0; or + * - the GNU Lesser General Public License, v2.1 or later + */ +package jsyntaxpane.lexers; + + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + +%% + +%public +%class CppLexer +%extends DefaultJFlexLexer +%final +%unicode +%char +%type Token + + +%{ + + public CppLexer() { + super(); + } + + @Override + public int yychar() { + return yychar; + } + + private static final byte PARAN = 1; + private static final byte BRACKET = 2; + private static final byte CURLY = 3; + +%} + +/* main character classes */ +LineTerminator = \r|\n|\r\n +InputCharacter = [^\r\n] + +/* comments */ +Comment = {TraditionalComment} | {EndOfLineComment} + +TraditionalComment = "/*" [^*] ~"*/" | "/*" "*"+ "/" +EndOfLineComment = "//" {InputCharacter}* {LineTerminator}? + +/* identifiers */ + +ConstantIdentifier = {SimpleConstantIdentifier} +SimpleConstantIdentifier = [#A-Z0-9_]+ + +Identifier = [:jletter:][:jletterdigit:]* + +/* int literals */ + +DecLiteral = 0 | [1-9][0-9]* {IntegerSuffix} + +HexLiteral = 0 [xX] 0* {HexDigit}* {IntegerSuffix} +HexDigit = [0-9a-fA-F] + +OctLiteral = 0+ {OctDigit}* {IntegerSuffix} +OctDigit = [0-7] + +IntegerSuffix = [uU]? [lL]? [uU]? + +/* float literals */ + +FloatLiteral = ({FLit1}|{FLit2}|{FLit3}|{FLit4}) ([fF]|[dD])? + +FLit1 = [0-9]+ \. [0-9]* {Exponent}? +FLit2 = \. [0-9]+ {Exponent}? +FLit3 = [0-9]+ {Exponent} +FLit4 = [0-9]+ {Exponent}? + +Exponent = [eE] [+\-]? [0-9]+ + +%% + + { + + /* keywords */ + "break" | + "case" | + "catch" | + "continue" | + "default" | + "do" | + "else" | + "for" | + "goto" | + "enum" | + "if" | + "inline" | + "mutable" | + "noinline" | + "return" | + "safecast" | + "sealed" | + "selectany" | + "sizeof" | + "static_cast" | + "switch" | + "template" | + "this" | + "thread" | + "throw" | + "try" | + "typedef" | + "typeid" | + "typename" | + "using" | + "uuid" | + "value" | + "virtual" | + "while" | + /* C++ Keywords */ + "new" | + "delete" | + "this" | + "friend" | + "using" | + "throw" | + "try" | + "catch" | + "class" | + "typename" | + "template" | + "namespace" + { return token(TokenType.KEYWORD); } + + "static" | + "struct" | + "union" | + "volatile" | + "register" | + "extern" | + "const" | + "signed" | + "unsigned" | + "bool" | + "char" | + "double" | + "int" | + "long" | + "float" | + "short" | + "void" | + + "public" | + "protected" | + "private" | + "virtual" | + "inline" | + "virtual" | + "explicit" | + "export" | + "bool" | + "wchar_t" + { return token(TokenType.TYPE); } + + /* literals */ + + + (\" ( [^\"\n\\] | \\[^\n] )* (\n | \\\n | \")) | + (\' ( [^\'\n\\] | \\[^\n] )* (\n | \\\n | \')) + { return token(TokenType.STRING); } + + "true" | + "false" | + {DecLiteral} | + {OctLiteral} | + {HexLiteral} | + + {FloatLiteral} + { return token(TokenType.NUMBER); } + + /* preprocessor symbols */ + "#define" | + "#elif" | + "#else" | + "#endif" | + "#error" | + "#ifdef" | + "#ifndef" | + "#if" | + "#import" | + "#include" | + "#line" | + "#pragma" | + "#undef" | + "#using" + { return token(TokenType.KEYWORD2); } + + + /* separators */ + "(" { return token(TokenType.OPERATOR, PARAN); } + ")" { return token(TokenType.OPERATOR, -PARAN); } + "{" { return token(TokenType.OPERATOR, CURLY); } + "}" { return token(TokenType.OPERATOR, -CURLY); } + "[" { return token(TokenType.OPERATOR, BRACKET); } + "]" { return token(TokenType.OPERATOR, -BRACKET); } + + /* operators */ + "=" | + ";" | + "," | + "." | + ">" | + "<" | + "!" | + "~" | + "?" | + ":" | + "+" | + "-" | + "*" | + "/" | + "&" | + "|" | + "^" | + "%" | + ">>" | + "<<" | + "operator" | + "typeid" | + "and" | + "bitor" | + "or" | + "xor" | + "compl" | + "bitand" | + "and_eq" | + "or_eq" | + "xor_eq" | + "not" | + "not_eq" + { return token(TokenType.OPERATOR); } + + /** C++ standard and built-in objects */ + "cin" | + "cout" + { return token(TokenType.TYPE2); } + + {ConstantIdentifier} { return token(TokenType.TYPE); } + + {Identifier} { return token(TokenType.IDENTIFIER); } + + {Comment} { return token(TokenType.COMMENT); } +} + + + +/* error fallback */ +.|\n { } +<> { return null; } diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/dosbatch.flex b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/dosbatch.flex new file mode 100644 index 000000000..f733059ab --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/dosbatch.flex @@ -0,0 +1,170 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jsyntaxpane.lexers; + + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + +%% + +%public +%class DOSBatchLexer +%extends DefaultJFlexLexer +%final +%unicode +%char +%type Token +%ignorecase +%state ECHO_TEXT + +%{ + /** + * Create an empty lexer, yyrset will be called later to reset and assign + * the reader + */ + public DOSBatchLexer() { + super(); + } + + @Override + public int yychar() { + return yychar; + } +%} + +StartComment = "rem" +LineTerminator = \r|\n|\r\n +InputCharacter = [^\r\n] + +Comment = {StartComment} {InputCharacter}* {LineTerminator}? + +%% + + { + /* DOS keywords */ + "@" | + "goto" | + "call" | + "exit" | + "if" | + "else" | + "for" | + "copy" | + "set" | + "dir" | + "cd" | + "set" | + "errorlevel" { return token(TokenType.KEYWORD); } + + "%" [:jletter:] [:jletterdigit:]* "%" { return token(TokenType.STRING2); } + + "%" [:digit:]+ { return token(TokenType.KEYWORD2); } + + "echo" { + yybegin(ECHO_TEXT); + return token(TokenType.KEYWORD); + } + + /* DOS commands */ + "append" | + "assoc" | + "at" | + "attrib" | + "break" | + "cacls" | + "cd" | + "chcp" | + "chdir" | + "chkdsk" | + "chkntfs" | + "cls" | + "cmd" | + "color" | + "comp" | + "compact" | + "convert" | + "copy" | + "date" | + "del" | + "dir" | + "diskcomp" | + "diskcopy" | + "doskey" | + "exist" | + "endlocal" | + "erase" | + "fc" | + "find" | + "findstr" | + "format" | + "ftype" | + "graftabl" | + "help" | + "keyb" | + "label" | + "md" | + "mkdir" | + "mode" | + "more" | + "move" | + "path" | + "pause" | + "popd" | + "print" | + "prompt" | + "pushd" | + "rd" | + "recover" | + "rem" | + "ren" | + "rename" | + "replace" | + "restore" | + "rmdir" | + "set" | + "setlocal" | + "shift" | + "sort" | + "start" | + "subst" | + "time" | + "title" | + "tree" | + "type" | + "ver" | + "verify" | + "vol" | + "xcopy" { return token(TokenType.KEYWORD); } + + [:jletterdigit:]+ { return token(TokenType.IDENTIFIER); } + + /* labels */ + ":" [a-zA-Z][a-zA-Z0-9_]* { return token(TokenType.TYPE3); } + + /* comments */ + {Comment} { return token(TokenType.COMMENT); } + . | {LineTerminator} { /* skip */ } +} + + { + "%" [:jletter:] [:jletterdigit:]* "%" { return token(TokenType.STRING2); } + + "%" [:digit:]+ { return token(TokenType.KEYWORD2); } + + . * { return token(TokenType.STRING); } + {LineTerminator} { yybegin(YYINITIAL) ; } +} +<> { return null; } \ No newline at end of file diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/flasm.flex b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/flasm.flex new file mode 100644 index 000000000..02c36593f --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/flasm.flex @@ -0,0 +1,153 @@ +/* Flash assembler language lexer specification */ + +package jsyntaxpane.lexers; + + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + +%% + +%public +%class FlasmLexer +%extends DefaultJFlexLexer +%final +%unicode +%char +%type Token + +%{ + + StringBuffer string = new StringBuffer(); + + + /** + * Create an empty lexer, yyrset will be called later to reset and assign + * the reader + */ + public FlasmLexer() { + + } + + public int yychar() { + return yychar; + } + +%} + +/* main character classes */ +LineTerminator = \r|\n|\r\n + +InputCharacter = [^\r\n] +Comment = ";" {InputCharacter}* + +WhiteSpace = [ \t\f]+ + + +/* identifiers */ + +Identifier = [:jletter:][:jletterdigit:]* + +InstructionName = [a-zA-Z][a-zA-Z0-9_]* + +Label = {Identifier}: + +StartOfBlock = "{" + +EndOfBlock = "}" + +True = "true" +False = "false" +False = "false" +Null = "null" +Undefined = "undefined" + + + +/* integer literals */ +NumberLiteral = 0 | -?[1-9][0-9]* + +/* floating point literals */ +FloatLiteral = -?({FLit1}|{FLit2}|{FLit3}) {Exponent}? + +FLit1 = [0-9]+ \. [0-9]* +FLit2 = \. [0-9]+ +FLit3 = [0-9]+ +Exponent = [eE] [+-]? [0-9]+ + +OctDigit = [0-7] + +/* string and character literals */ +StringCharacter = [^\r\n\"\\] + +Register= register{NumberLiteral} +Constant= constant{NumberLiteral} + +%state STRING,PARAMETERS + +%% + + { + + + /* whitespace */ + {WhiteSpace} { } + + {Label} { + return token(TokenType.IDENTIFIER,yychar,yylength()-1); + } + + /* identifiers */ + {InstructionName} { yybegin(PARAMETERS); + return token(TokenType.KEYWORD); + } + {EndOfBlock} { } +} + + { + /* string literal */ + \" { + yybegin(STRING); + tokenStart = yychar; + tokenLength = 1; + } + + /* numeric literals */ + + {NumberLiteral} { return token(TokenType.NUMBER); } + {FloatLiteral} { return token(TokenType.NUMBER); } + {LineTerminator} {yybegin(YYINITIAL); } + {Comment} {return token(TokenType.COMMENT);} + {StartOfBlock} { } + {True} {return token(TokenType.KEYWORD);} + {False} {return token(TokenType.KEYWORD);} + {Null} {return token(TokenType.KEYWORD);} + {Undefined} {return token(TokenType.KEYWORD);} + + {Register} { return token(TokenType.KEYWORD2); } + {Constant} { return token(TokenType.KEYWORD2); } + {Identifier} { return token(TokenType.IDENTIFIER); } + +} + + { + \" { + yybegin(PARAMETERS); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + +{StringCharacter}+ { tokenLength += yylength(); } + + \\[0-3]?{OctDigit}?{OctDigit} { tokenLength += yylength(); } + + /* escape sequences */ + + \\. { tokenLength += 2; } + {LineTerminator} { yybegin(YYINITIAL); + return token(TokenType.ERROR,tokenStart, tokenLength);} +} + +/* error fallback */ +.|\n { } +<> { return null; } diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/flasm3.flex b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/flasm3.flex new file mode 100644 index 000000000..3b309ce76 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/flasm3.flex @@ -0,0 +1,140 @@ +/* Flash assembler language lexer specification */ + +package jsyntaxpane.lexers; + + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + +%% + +%public +%class Flasm3Lexer +%extends DefaultJFlexLexer +%final +%unicode +%char +%type Token + +%{ + + StringBuffer string = new StringBuffer(); + boolean isMultiname=false; + + + /** + * Create an empty lexer, yyrset will be called later to reset and assign + * the reader + */ + public Flasm3Lexer() { + super(); + } + + @Override + public int yychar() { + return yychar; + } + +%} + +/* main character classes */ +LineTerminator = \r|\n|\r\n + +WhiteSpace = [ \t\f]+ + +Multiname = m\[[0-9]+\] + +/* identifiers */ + +Identifier = [:jletter:][:jletterdigit:]* + +InstructionName = [a-z][a-z0-9_]* + +Label = {Identifier}: + + + +/* integer literals */ +NumberLiteral = 0 | -?[1-9][0-9]* + +/* floating point literals */ +FloatLiteral = -?({FLit1}|{FLit2}|{FLit3}) {Exponent}? + +FLit1 = [0-9]+ \. [0-9]* +FLit2 = \. [0-9]+ +FLit3 = [0-9]+ +Exponent = [eE] [+-]? [0-9]+ + +OctDigit = [0-7] + +InputCharacter = [^\r\n] +Comment = ";" {InputCharacter}* {LineTerminator}? + +/* string and character literals */ +StringCharacter = [^\r\n\"\\] + +%state STRING,PARAMETERS + +%% + + { + + + /* whitespace */ + {WhiteSpace} { } + + {Label} {return token(TokenType.IDENTIFIER,yychar,yylength()-1); } + + /* identifiers */ + {InstructionName} { yybegin(PARAMETERS); + return token(TokenType.KEYWORD); } +} + + { + /* string literal */ + \" { + yybegin(STRING); + tokenStart = yychar; + tokenLength = 1; + isMultiname=false; + } + {Multiname}\" { + isMultiname=true; + yybegin(STRING); + tokenStart = yychar; + tokenLength = yylength(); } + + /* numeric literals */ + + {NumberLiteral} { return token(TokenType.NUMBER); } + {FloatLiteral} { return token(TokenType.NUMBER); } + {Identifier} { return token(TokenType.IDENTIFIER); } + {LineTerminator} {yybegin(YYINITIAL);} + {Comment} {yybegin(YYINITIAL); return token(TokenType.COMMENT);} +} + + { + \" { + yybegin(PARAMETERS); + // length also includes the trailing quote + if(isMultiname){ + return token(TokenType.IDENTIFIER, tokenStart, tokenLength + 1);//multiname + }else{ + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + } + + {StringCharacter}+ { tokenLength += yylength(); } + + \\[0-3]?{OctDigit}?{OctDigit} { tokenLength += yylength(); } + + /* escape sequences */ + + \\. { tokenLength += 2; } + {LineTerminator} { yybegin(YYINITIAL); + return token(TokenType.ERROR,tokenStart, tokenLength);} +} + +/* error fallback */ +.|\n { } +<> { return null; } diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/groovy.flex b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/groovy.flex new file mode 100644 index 000000000..3560a120d --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/groovy.flex @@ -0,0 +1,491 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jsyntaxpane.lexers; + + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + +%% + +%public +%class GroovyLexer +%extends DefaultJFlexLexer +%final +%unicode +%char +%type Token + + +%{ + /** + * Default constructor is needed as we will always call the yyreset + */ + public GroovyLexer() { + super(); + } + + @Override + public int yychar() { + return yychar; + } + + private static final byte PARAN = 1; + private static final byte BRACKET = 2; + private static final byte CURLY = 3; +%} + +/* main character classes */ +LineTerminator = \r|\n|\r\n +InputCharacter = [^\r\n] + +WhiteSpace = {LineTerminator} | [ \t\f] + +/* comments */ +Comment = {TraditionalComment} | {EndOfLineComment} + +TraditionalComment = "/*" [^*] ~"*/" | "/*" "*"+ "/" +EndOfLineComment = "//" {InputCharacter}* {LineTerminator}? + +/* identifiers */ +Identifier = [:jletter:][:jletterdigit:]* + +/* Groovy and generally Java types have first UpperCase Letter */ +// Type = [:uppercase:][:jletterdigit:]* + +/* integer literals */ +DecIntegerLiteral = 0 | [1-9][0-9]* +DecLongLiteral = {DecIntegerLiteral} [lL] + +HexIntegerLiteral = 0 [xX] 0* {HexDigit} {1,8} +HexLongLiteral = 0 [xX] 0* {HexDigit} {1,16} [lL] +HexDigit = [0-9a-fA-F] + +OctIntegerLiteral = 0+ [1-3]? {OctDigit} {1,15} +OctLongLiteral = 0+ 1? {OctDigit} {1,21} [lL] +OctDigit = [0-7] + +/* floating point literals */ +FloatLiteral = ({FLit1}|{FLit2}|{FLit3}) {Exponent}? [fF] +DoubleLiteral = ({FLit1}|{FLit2}|{FLit3}) {Exponent}? + +FLit1 = [0-9]+ \. [0-9]* +FLit2 = \. [0-9]+ +FLit3 = [0-9]+ +Exponent = [eE] [+-]? [0-9]+ + +/* string and character literals */ +StringCharacter = [^\r\n\"\\\$] +SingleCharacter = [^\r\n\'\\] +RegexCharacter = [^\r\n\/] + +%state STRING, CHARLITERAL, REGEX, GSTRING_EXPR, CHARLITERAL, JDOC, JDOC_TAG +%state ML_STRING, ML_STRING_EXPR + +%% + + { + + /* keywords */ + "abstract" | + "boolean" | + "break" | + "byte" | + "case" | + "catch" | + "char" | + "class" | + "const" | + "continue" | + "do" | + "double" | + "enum" | + "else" | + "extends" | + "final" | + "finally" | + "float" | + "for" | + "default" | + "implements" | + "import" | + "instanceof" | + "int" | + "interface" | + "long" | + "native" | + "new" | + "goto" | + "if" | + "public" | + "short" | + "super" | + "switch" | + "synchronized" | + "package" | + "private" | + "protected" | + "transient" | + "return" | + "void" | + "static" | + "while" | + "this" | + "throw" | + "throws" | + "try" | + "volatile" | + "strictfp" | + + /* Groovy reserved words not in Java */ + "as" | + "asssert" | + "def" | + "in" | + "threadsafe" | + + /* Booleans and null */ + "true" | + "false" | + "null" { return token(TokenType.KEYWORD); } + + + /* Builtin Types and Object Wrappers */ + "Boolean" | + "Byte" | + "Character" | + "Double" | + "Float" | + "Integer" | + "Object" | + "Short" | + "String" | + "Void" | + "Class" | + "Number" | + "Package" | + "StringBuffer" | + "StringBuilder" | + "CharSequence" | + "Thread" | + "Regex" { return token(TokenType.TYPE); } + + /* Some Java standard Library Types */ + "Throwable" | + "Cloneable" | + "Comparable" | + "Serializable" | + "Runnable" { return token(TokenType.TYPE); } + + /* Groovy commonly used methods */ + "print" | + "println" { return token(TokenType.KEYWORD); } + + /* Frequently used Standard Exceptions */ + "ArithmeticException" | + "ArrayIndexOutOfBoundsException" | + "ClassCastException" | + "ClassNotFoundException" | + "CloneNotSupportedException" | + "Exception" | + "IllegalAccessException" | + "IllegalArgumentException" | + "IllegalStateException" | + "IllegalThreadStateException" | + "IndexOutOfBoundsException" | + "InstantiationException" | + "InterruptedException" | + "NegativeArraySizeException" | + "NoSuchFieldException" | + "NoSuchMethodException" | + "NullPointerException" | + "NumberFormatException" | + "RuntimeException" | + "SecurityException" | + "StringIndexOutOfBoundsException" | + "UnsupportedOperationException" { return token(TokenType.TYPE2); } + + /* operators */ + "(" { return token(TokenType.OPERATOR, PARAN); } + ")" { return token(TokenType.OPERATOR, -PARAN); } + "{" { return token(TokenType.OPERATOR, CURLY); } + "}" { return token(TokenType.OPERATOR, -CURLY); } + "[" { return token(TokenType.OPERATOR, BRACKET); } + "]" { return token(TokenType.OPERATOR, -BRACKET); } + + ";" | + "," | + "." | + "@" | + "=" | + ">" | + "<" | + "!" | + "~" | + "?" | + ":" | + "==" | + "<=" | + ">=" | + "!=" | + "&&" | + "||" | + "++" | + "--" | + "+" | + "-" | + "*" | + "/" | + "&" | + "|" | + "^" | + "%" | + "<<" | + ">>" | + ">>>" | + "+=" | + "-=" | + "*=" | + "/=" | + "&=" | + "|=" | + "^=" | + "%=" | + "<<=" | + ">>=" | + ">>>=" { return token(TokenType.OPERATOR); } + + "~=" | + "?." { return token(TokenType.OPERATOR); } + + /* string literal */ + \"{3} { + yybegin(ML_STRING); + tokenStart = yychar; + tokenLength = 3; + } + + /* string literal */ + \" { + yybegin(STRING); + tokenStart = yychar; + tokenLength = 1; + } + + /* character literal */ + \' { + yybegin(CHARLITERAL); + tokenStart = yychar; + tokenLength = 1; + } + + /* numeric literals */ + + {DecIntegerLiteral} | + {DecLongLiteral} | + + {HexIntegerLiteral} | + {HexLongLiteral} | + + {OctIntegerLiteral} | + {OctLongLiteral} | + + {FloatLiteral} | + {DoubleLiteral} | + {DoubleLiteral}[dD] { return token(TokenType.NUMBER); } + + // JavaDoc comments need a state so that we can highlight the @ controls + "/**" { + yybegin(JDOC); + tokenStart = yychar; + tokenLength = 3; + } + + /* comments */ + {Comment} { return token(TokenType.COMMENT); } + + /* whitespace */ + {WhiteSpace}+ { /* skip */ } + + /* identifiers */ + {Identifier} { return token(TokenType.IDENTIFIER); } + + /* + Groovy Regex -- state cannot be easily used here due to / by itself being + a valid operator. So if we flip into the REGEX state, we cannot distinguish + a regular / + */ + "/" [^*] {RegexCharacter}+ "/" { return token(TokenType.REGEX); } + +} + + + { + + \" { + yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + + "${" { + yybegin(GSTRING_EXPR); + // length also includes the trailing quote + int s = tokenStart; + int l = tokenLength; + tokenStart = yychar; + tokenLength = 2; + return token(TokenType.STRING, s, l); + } + + {StringCharacter}+ { tokenLength += yylength(); } + + \\[0-3]?{OctDigit}?{OctDigit} { tokenLength += yylength(); } + + /* escape sequences */ + + + \\. { tokenLength += 2; } + {LineTerminator} { yybegin(YYINITIAL); } + +} + + { + "}" { + yybegin(STRING); + // length also includes the trailing quote + int s = tokenStart; + int l = tokenLength + 1; + tokenStart = yychar + 1; + tokenLength = 0; + return token(TokenType.STRING2, s, l); + } + + {StringCharacter} { tokenLength ++; } +} + + { + + \"{3} { + yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 3); + } + + "${" { + yybegin(ML_STRING_EXPR); + // length also includes the trailing quote + int s = tokenStart; + int l = tokenLength; + tokenStart = yychar; + tokenLength = 2; + return token(TokenType.STRING, s, l); + } + + \\[0-3]?{OctDigit}?{OctDigit} { tokenLength += yylength(); } + + /* escape sequences */ + + \\. { tokenLength += 2; } + .|{LineTerminator} { tokenLength += yylength(); } + +} + + { + "}" { + yybegin(ML_STRING); + // length also includes the trailing quote + int s = tokenStart; + int l = tokenLength + 1; + tokenStart = yychar + 1; + tokenLength = 0; + return token(TokenType.STRING2, s, l); + } + + .|\n|\r { tokenLength ++; } +} + + { + \' { + yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + + {SingleCharacter}+ { tokenLength += yylength(); } + + /* escape sequences */ + + \\. { tokenLength += 2; } + {LineTerminator} { yybegin(YYINITIAL); } +} + + { + "*/" { + yybegin(YYINITIAL); + return token(TokenType.COMMENT, tokenStart, tokenLength + 2); + } + + "@" { + yybegin(JDOC_TAG); + int start = tokenStart; + tokenStart = yychar; + int len = tokenLength; + tokenLength = 1; + return token(TokenType.COMMENT, start, len); + } + + .|\n { tokenLength ++; } + +} + + { + ([:letter:])+ ":"? { tokenLength += yylength(); } + + "*/" { + yybegin(YYINITIAL); + return token(TokenType.COMMENT, tokenStart, tokenLength + 2); + } + + .|\n { + yybegin(JDOC); + // length also includes the trailing quote + int start = tokenStart; + tokenStart = yychar; + int len = tokenLength; + tokenLength = 1; + return token(TokenType.COMMENT2, start, len); + } +} + + { + "/" { + yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.REGEX, tokenStart, tokenLength + 1); + } + + {RegexCharacter}+ { tokenLength += yylength(); } + + /* escape sequences */ + + \\. { tokenLength += 2; } + {LineTerminator} { yybegin(YYINITIAL); } +} + +/* error fallback */ +.|\n { } +<> { return null; } + diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/java.flex b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/java.flex new file mode 100644 index 000000000..e67524635 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/java.flex @@ -0,0 +1,376 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jsyntaxpane.lexers; + + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + +%% + +%public +%class JavaLexer +%extends DefaultJFlexLexer +%final +%unicode +%char +%type Token + + +%{ + /** + * Create an empty lexer, yyrset will be called later to reset and assign + * the reader + */ + public JavaLexer() { + super(); + } + + @Override + public int yychar() { + return yychar; + } + + private static final byte PARAN = 1; + private static final byte BRACKET = 2; + private static final byte CURLY = 3; + +%} + +/* main character classes */ +LineTerminator = \r|\n|\r\n +InputCharacter = [^\r\n] + +WhiteSpace = {LineTerminator} | [ \t\f]+ + +/* comments */ +Comment = {TraditionalComment} | {EndOfLineComment} + +TraditionalComment = "/*" [^*] ~"*/" | "/*" "*"+ "/" +EndOfLineComment = "//" {InputCharacter}* {LineTerminator}? + +/* identifiers */ +Identifier = [:jletter:][:jletterdigit:]* + +/* integer literals */ +DecIntegerLiteral = 0 | [1-9][0-9]* +DecLongLiteral = {DecIntegerLiteral} [lL] + +HexIntegerLiteral = 0 [xX] 0* {HexDigit} {1,8} +HexLongLiteral = 0 [xX] 0* {HexDigit} {1,16} [lL] +HexDigit = [0-9a-fA-F] + +OctIntegerLiteral = 0+ [1-3]? {OctDigit} {1,15} +OctLongLiteral = 0+ 1? {OctDigit} {1,21} [lL] +OctDigit = [0-7] + +/* floating point literals */ +FloatLiteral = ({FLit1}|{FLit2}|{FLit3}) {Exponent}? [fF] +DoubleLiteral = ({FLit1}|{FLit2}|{FLit3}) {Exponent}? + +FLit1 = [0-9]+ \. [0-9]* +FLit2 = \. [0-9]+ +FLit3 = [0-9]+ +Exponent = [eE] [+-]? [0-9]+ + +/* string and character literals */ +StringCharacter = [^\r\n\"\\] +SingleCharacter = [^\r\n\'\\] + +%state STRING, CHARLITERAL, JDOC, JDOC_TAG + +%% + + { + + /* keywords */ + "abstract" | + "boolean" | + "break" | + "byte" | + "case" | + "catch" | + "char" | + "class" | + "const" | + "continue" | + "do" | + "double" | + "enum" | + "else" | + "extends" | + "final" | + "finally" | + "float" | + "for" | + "default" | + "implements" | + "import" | + "instanceof" | + "int" | + "interface" | + "long" | + "native" | + "new" | + "goto" | + "if" | + "public" | + "short" | + "super" | + "switch" | + "synchronized" | + "package" | + "private" | + "protected" | + "transient" | + "return" | + "void" | + "static" | + "while" | + "this" | + "throw" | + "throws" | + "try" | + "volatile" | + "strictfp" | + + "true" | + "false" | + "null" { return token(TokenType.KEYWORD); } + + /* Java Built in types and wrappers */ + "Boolean" | + "Byte" | + "Character" | + "Double" | + "Float" | + "Integer" | + "Object" | + "Short" | + "Void" | + "Class" | + "Number" | + "Package" | + "StringBuffer" | + "StringBuilder" | + "CharSequence" | + "Thread" | + "String" { return token(TokenType.TYPE); } + + /* Some Java standard Library Types */ + "Throwable" | + "Cloneable" | + "Comparable" | + "Serializable" | + "Runnable" { return token(TokenType.TYPE); } + + "WARNING" { return token(TokenType.WARNING); } + "ERROR" { return token(TokenType.ERROR); } + + /* Frequently used Standard Exceptions */ + "ArithmeticException" | + "ArrayIndexOutOfBoundsException" | + "ClassCastException" | + "ClassNotFoundException" | + "CloneNotSupportedException" | + "Exception" | + "IllegalAccessException" | + "IllegalArgumentException" | + "IllegalStateException" | + "IllegalThreadStateException" | + "IndexOutOfBoundsException" | + "InstantiationException" | + "InterruptedException" | + "NegativeArraySizeException" | + "NoSuchFieldException" | + "NoSuchMethodException" | + "NullPointerException" | + "NumberFormatException" | + "RuntimeException" | + "SecurityException" | + "StringIndexOutOfBoundsException" | + "UnsupportedOperationException" { return token(TokenType.TYPE2); } + + /* operators */ + + "(" { return token(TokenType.OPERATOR, PARAN); } + ")" { return token(TokenType.OPERATOR, -PARAN); } + "{" { return token(TokenType.OPERATOR, CURLY); } + "}" { return token(TokenType.OPERATOR, -CURLY); } + "[" { return token(TokenType.OPERATOR, BRACKET); } + "]" { return token(TokenType.OPERATOR, -BRACKET); } + ";" | + "," | + "." | + "=" | + ">" | + "<" | + "!" | + "~" | + "?" | + ":" | + "==" | + "<=" | + ">=" | + "!=" | + "&&" | + "||" | + "++" | + "--" | + "+" | + "-" | + "*" | + "/" | + "&" | + "|" | + "^" | + "%" | + "<<" | + ">>" | + ">>>" | + "+=" | + "-=" | + "*=" | + "/=" | + "&=" | + "|=" | + "^=" | + "%=" | + "<<=" | + ">>=" | + ">>>=" { return token(TokenType.OPERATOR); } + + /* string literal */ + \" { + yybegin(STRING); + tokenStart = yychar; + tokenLength = 1; + } + + /* character literal */ + \' { + yybegin(CHARLITERAL); + tokenStart = yychar; + tokenLength = 1; + } + + /* numeric literals */ + + {DecIntegerLiteral} | + {DecLongLiteral} | + + {HexIntegerLiteral} | + {HexLongLiteral} | + + {OctIntegerLiteral} | + {OctLongLiteral} | + + {FloatLiteral} | + {DoubleLiteral} | + {DoubleLiteral}[dD] { return token(TokenType.NUMBER); } + + // JavaDoc comments need a state so that we can highlight the @ controls + "/**" { + yybegin(JDOC); + tokenStart = yychar; + tokenLength = 3; + } + + /* comments */ + {Comment} { return token(TokenType.COMMENT); } + + /* whitespace */ + {WhiteSpace} { } + + /* identifiers */ + {Identifier} { return token(TokenType.IDENTIFIER); } +} + + + { + \" { + yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + + {StringCharacter}+ { tokenLength += yylength(); } + + \\[0-3]?{OctDigit}?{OctDigit} { tokenLength += yylength(); } + + /* escape sequences */ + + \\. { tokenLength += 2; } + {LineTerminator} { yybegin(YYINITIAL); } +} + + { + \' { + yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + + {SingleCharacter}+ { tokenLength += yylength(); } + + /* escape sequences */ + + \\. { tokenLength += 2; } + {LineTerminator} { yybegin(YYINITIAL); } +} + + { + "*/" { + yybegin(YYINITIAL); + return token(TokenType.COMMENT, tokenStart, tokenLength + 2); + } + + "@" { + yybegin(JDOC_TAG); + int start = tokenStart; + tokenStart = yychar; + int len = tokenLength; + tokenLength = 1; + return token(TokenType.COMMENT, start, len); + } + + .|\n { tokenLength ++; } + +} + + { + ([:letter:])+ ":"? { tokenLength += yylength(); } + + "*/" { + yybegin(YYINITIAL); + return token(TokenType.COMMENT, tokenStart, tokenLength + 2); + } + + .|\n { + yybegin(JDOC); + // length also includes the trailing quote + int start = tokenStart; + tokenStart = yychar; + int len = tokenLength; + tokenLength = 1; + return token(TokenType.COMMENT2, start, len); + } +} + + +/* error fallback */ +.|\n { } +<> { return null; } + diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/javascript.flex b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/javascript.flex new file mode 100644 index 000000000..e1a01580e --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/javascript.flex @@ -0,0 +1,279 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jsyntaxpane.lexers; + + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + +%% + +%public +%class JavaScriptLexer +%extends DefaultJFlexLexer +%final +%unicode +%char +%type Token + + +%{ + /** + * Create an empty lexer, yyrset will be called later to reset and assign + * the reader + */ + public JavaScriptLexer() { + super(); + } + + @Override + public int yychar() { + return yychar; + } + + private static final byte PARAN = 1; + private static final byte BRACKET = 2; + private static final byte CURLY = 3; + +%} + +/* main character classes */ +LineTerminator = \r|\n|\r\n +InputCharacter = [^\r\n] + +WhiteSpace = {LineTerminator} | [ \t\f]+ + +/* comments */ +Comment = {TraditionalComment} | {EndOfLineComment} + +TraditionalComment = "/*" [^*] ~"*/" | "/*" "*"+ "/" +EndOfLineComment = "//" {InputCharacter}* {LineTerminator}? + +/* identifiers */ +Identifier = [:jletter:][:jletterdigit:]* + +/* integer literals */ +DecIntegerLiteral = 0 | [1-9][0-9]* +DecLongLiteral = {DecIntegerLiteral} [lL] + +HexIntegerLiteral = 0 [xX] 0* {HexDigit} {1,8} +HexLongLiteral = 0 [xX] 0* {HexDigit} {1,16} [lL] +HexDigit = [0-9a-fA-F] + +OctIntegerLiteral = 0+ [1-3]? {OctDigit} {1,15} +OctLongLiteral = 0+ 1? {OctDigit} {1,21} [lL] +OctDigit = [0-7] + +/* floating point literals */ +FloatLiteral = ({FLit1}|{FLit2}|{FLit3}) {Exponent}? [fF] +DoubleLiteral = ({FLit1}|{FLit2}|{FLit3}) {Exponent}? + +FLit1 = [0-9]+ \. [0-9]* +FLit2 = \. [0-9]+ +FLit3 = [0-9]+ +Exponent = [eE] [+-]? [0-9]+ + +/* string and character literals */ +StringCharacter = [^\r\n\"\\] +SStringCharacter = [^\r\n\'\\] + +%state STRING SSTRING + +%% + + { + + /* keywords */ + "break" | + "case" | + "catch" | + "continue" | + "do" | + "else" | + "finally" | + "for" | + "default" | + "delete" | + "new" | + "goto" | + "if" | + "switch" | + "return" | + "while" | + "this" | + "try" | + "var" | + "function" | + "with" | + "in" | + + /* boolean literals */ + "true" | + "false" | + + /* null literal */ + "null" { return token(TokenType.KEYWORD); } + + /* standard / builtin functions */ + "Infinity" | + "NaN" | + "undefined" | + "decodeURI" | + "encodeURIComponent" | + "escape" | + "eval" | + "isFinite" | + "isNaN" | + "parseFloat" | + "parseInt" | + "unescape" { return token(TokenType.KEYWORD2); } + + /* Built-in Types*/ + "Array" | + "Boolean" | + "Date" | + "Math" | + "Number" | + "Object" | + "RegExp" | + "String" | + {Identifier} ":" { return token(TokenType.TYPE); } + + + /* operators */ + + "(" { return token(TokenType.OPERATOR, PARAN); } + ")" { return token(TokenType.OPERATOR, -PARAN); } + "{" { return token(TokenType.OPERATOR, CURLY); } + "}" { return token(TokenType.OPERATOR, -CURLY); } + "[" { return token(TokenType.OPERATOR, BRACKET); } + "]" { return token(TokenType.OPERATOR, -BRACKET); } + ";" | + "," | + "." | + "=" | + ">" | + "<" | + "!" | + "~" | + "?" | + ":" | + "==" | + "<=" | + ">=" | + "!=" | + "&&" | + "||" | + "++" | + "--" | + "+" | + "-" | + "*" | + "/" | + "&" | + "|" | + "^" | + "%" | + "<<" | + ">>" | + ">>>" | + "+=" | + "-=" | + "*=" | + "/=" | + "&=" | + "|=" | + "^=" | + "%=" | + "<<=" | + ">>=" | + ">>>=" { return token(TokenType.OPERATOR); } + + /* string literal */ + \" { + yybegin(STRING); + tokenStart = yychar; + tokenLength = 1; + } + + \' { + yybegin(SSTRING); + tokenStart = yychar; + tokenLength = 1; + } + + /* numeric literals */ + + {DecIntegerLiteral} | + {DecLongLiteral} | + + {HexIntegerLiteral} | + {HexLongLiteral} | + + {OctIntegerLiteral} | + {OctLongLiteral} | + + {FloatLiteral} | + {DoubleLiteral} | + {DoubleLiteral}[dD] { return token(TokenType.NUMBER); } + + /* comments */ + {Comment} { return token(TokenType.COMMENT); } + + /* whitespace */ + {WhiteSpace} { } + + /* identifiers */ + {Identifier} { return token(TokenType.IDENTIFIER); } +} + + { + \" { + yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + + {StringCharacter}+ { tokenLength += yylength(); } + + \\[0-3]?{OctDigit}?{OctDigit} { tokenLength += yylength(); } + + /* escape sequences */ + + \\. { tokenLength += 2; } + {LineTerminator} { yybegin(YYINITIAL); } +} + + { + \' { + yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + + {SStringCharacter}+ { tokenLength += yylength(); } + + \\[0-3]?{OctDigit}?{OctDigit} { tokenLength += yylength(); } + + /* escape sequences */ + + \\. { tokenLength += 2; } + {LineTerminator} { yybegin(YYINITIAL); } +} + +/* error fallback */ +.|\n { } +<> { return null; } + diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/jflex.flex b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/jflex.flex new file mode 100644 index 000000000..a0696912a --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/jflex.flex @@ -0,0 +1,400 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jsyntaxpane.lexers; + + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + +%% + +%public +%class JFlexLexer +%extends DefaultJFlexLexer +%final +%unicode +%char +%type Token + + +%{ + /** + * Create an empty lexer, yyrset will be called later to reset and assign + * the reader + */ + public JFlexLexer() { + super(); + } + + @Override + public int yychar() { + return yychar; + } +%} + +/* main character classes */ +LineTerminator = \r|\n|\r\n +InputCharacter = [^\r\n] + +WhiteSpace = {LineTerminator} | [ \t\f]+ + +/* comments */ +Comment = {TraditionalComment} | {EndOfLineComment} + +TraditionalComment = "/*" [^*] ~"*/" | "/*" "*"+ "/" +EndOfLineComment = "//" {InputCharacter}* {LineTerminator}? + +/* identifiers */ +Identifier = [:jletter:][:jletterdigit:]* + +/* integer literals */ +DecIntegerLiteral = 0 | [1-9][0-9]* +DecLongLiteral = {DecIntegerLiteral} [lL] + +HexIntegerLiteral = 0 [xX] 0* {HexDigit} {1,8} +HexLongLiteral = 0 [xX] 0* {HexDigit} {1,16} [lL] +HexDigit = [0-9a-fA-F] + +OctIntegerLiteral = 0+ [1-3]? {OctDigit} {1,15} +OctLongLiteral = 0+ 1? {OctDigit} {1,21} [lL] +OctDigit = [0-7] + +/* floating point literals */ +FloatLiteral = ({FLit1}|{FLit2}|{FLit3}) {Exponent}? [fF] +DoubleLiteral = ({FLit1}|{FLit2}|{FLit3}) {Exponent}? + +FLit1 = [0-9]+ \. [0-9]* +FLit2 = \. [0-9]+ +FLit3 = [0-9]+ +Exponent = [eE] [+-]? [0-9]+ + +/* string and character literals */ +StringCharacter = [^\r\n\"\\] +SingleCharacter = [^\r\n\'\\] + +%state STRING, CHARLITERAL, JDOC, JDOC_TAG + +%% + + { + + /* keywords */ + "abstract" | + "boolean" | + "break" | + "byte" | + "case" | + "catch" | + "char" | + "class" | + "const" | + "continue" | + "do" | + "double" | + "enum" | + "else" | + "extends" | + "final" | + "finally" | + "float" | + "for" | + "default" | + "implements" | + "import" | + "instanceof" | + "int" | + "interface" | + "long" | + "native" | + "new" | + "goto" | + "if" | + "public" | + "short" | + "super" | + "switch" | + "synchronized" | + "package" | + "private" | + "protected" | + "transient" | + "return" | + "void" | + "static" | + "while" | + "this" | + "throw" | + "throws" | + "try" | + "volatile" | + "strictfp" | + "true" | + "false" | + "null" { return token(TokenType.KEYWORD); } + + /* JFlex special types */ + "<>" | + "[:jletter:]" | + "[:jletterdigit:]" | + "[:letter:]" | + "[:digit:]" | + "[:uppercase:]" | + "[:lowercase:]" | + "<" [a-zA-Z][a-zA-Z0-9_]* ">" { return token(TokenType.TYPE2); } + + /* JFlex Specials */ + "%%" | + "%{" | + "%}" | + "%class" | + "%implements" | + "%extends" | + "%public" | + "%final" | + "%abstract" | + "%apiprivate" | + "%init{" | + "%init}" | + "%initthrow{" | + "%initthrow}" | + "%initthrow" | + "%ctorarg" | + "%scanerror" | + "%buffer" | + "%include" | + "%function" | + "%integer" | + "%int" | + "%intwrap" | + "%yylexthrow{" | + "%yylexthrow}" | + "%yylexthrow" | + "%eofval{" | + "%eofval}" | + "%eof{" | + "%eof}" | + "%eofthrow{" | + "%eofthrow}" | + "%eofthrow" | + "%eofclose" | + "%debug" | + "%standalone" | + "%cup" | + "%cupsym" | + "%cupdebug" | + "%byacc" | + "%switch" | + "%table" | + "%pack" | + "%7bit" | + "%8bit" | + "%full" | + "%unicode" | + "%16bit" | + "%caseless" | + "%ignorecase" | + "%char" | + "%line" | + "%column" | + "%notunix" | + "%yyeof" | + "%s" | + "%state" | + "%x" | + "%xstate" | + "%type" { return token(TokenType.KEYWORD2); } + + + /* Java Built in types and wrappers */ + "Boolean" | + "Byte" | + "Double" | + "Float" | + "Integer" | + "Object" | + "Short" | + "String" { return token(TokenType.TYPE); } + + /* operators */ + + "(" | + ")" | + "{" | + "}" | + "[" | + "]" | + ";" | + "," | + "." | + "=" | + ">" | + "<" | + "!" | + "~" | + "?" | + ":" | + "==" | + "<=" | + ">=" | + "!=" | + "&&" | + "||" | + "++" | + "--" | + "+" | + "-" | + "*" | + "/" | + "&" | + "|" | + "^" | + "%" | + "<<" | + ">>" | + ">>>" | + "+=" | + "-=" | + "*=" | + "/=" | + "&=" | + "|=" | + "^=" | + "%=" | + "<<=" | + ">>=" | + ">>>=" { return token(TokenType.OPERATOR); } + + /* string literal */ + \" { + yybegin(STRING); + tokenStart = yychar; + tokenLength = 1; + } + + /* character literal */ + \' { + yybegin(CHARLITERAL); + tokenStart = yychar; + tokenLength = 1; + } + + /* numeric literals */ + + {DecIntegerLiteral} | + {DecLongLiteral} | + + {HexIntegerLiteral} | + {HexLongLiteral} | + + {OctIntegerLiteral} | + {OctLongLiteral} | + + {FloatLiteral} | + {DoubleLiteral} | + {DoubleLiteral}[dD] { return token(TokenType.NUMBER); } + + // JavaDoc comments need a state so that we can highlight the @ controls + "/**" { + yybegin(JDOC); + tokenStart = yychar; + tokenLength = 3; + } + + /* comments */ + {Comment} { return token(TokenType.COMMENT); } + + /* whitespace */ + {WhiteSpace} { } + + /* identifiers */ + {Identifier} { return token(TokenType.IDENTIFIER); } +} + + + { + \" { + yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + + {StringCharacter}+ { tokenLength += yylength(); } + + \\[0-3]?{OctDigit}?{OctDigit} { tokenLength += yylength(); } + + /* escape sequences */ + + \\. { tokenLength += 2; } + {LineTerminator} { yybegin(YYINITIAL); } +} + + { + \' { + yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + + {SingleCharacter}+ { tokenLength += yylength(); } + + /* escape sequences */ + + \\. { tokenLength += 2; } + {LineTerminator} { yybegin(YYINITIAL); } +} + + { + "*/" { + yybegin(YYINITIAL); + return token(TokenType.COMMENT, tokenStart, tokenLength + 2); + } + + "@" { + yybegin(JDOC_TAG); + int start = tokenStart; + tokenStart = yychar; + int len = tokenLength; + tokenLength = 1; + return token(TokenType.COMMENT, start, len); + } + + .|\n { tokenLength ++; } + +} + + { + ([:letter:])+ ":"? { tokenLength += yylength(); } + + "*/" { + yybegin(YYINITIAL); + return token(TokenType.COMMENT, tokenStart, tokenLength + 2); + } + + .|\n { + yybegin(JDOC); + // length also includes the trailing quote + int start = tokenStart; + tokenStart = yychar; + int len = tokenLength; + tokenLength = 1; + return token(TokenType.COMMENT2, start, len); + } +} + + +/* error fallback */ +.|\n { } +<> { return null; } + diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/lua.flex b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/lua.flex new file mode 100644 index 000000000..7ddcdce35 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/lua.flex @@ -0,0 +1,298 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jsyntaxpane.lexers; + + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + +%% + +%public +%class LuaLexer +%extends DefaultJFlexLexer +%final +%unicode +%char +%type Token + + +%{ + /** + * Create an empty lexer, yyrset will be called later to reset and assign + * the reader + */ + public LuaLexer() { + super(); + } + + @Override + public int yychar() { + return yychar; + } + + private static final byte PARAN = 1; + private static final byte BRACKET = 2; + private static final byte CURLY = 3; + private static final byte ENDBLOCK = 4; + private static final byte REPEATBLOCK = 5; + + TokenType longType; + int longLen; +%} + +/* main character classes */ +LineTerminator = \r|\n|\r\n + +WhiteSpace = {LineTerminator} | [ \t\f]+ + +LongStart = \[=*\[ +LongEnd = \]=*\] + +/* identifiers */ +Identifier = [:jletter:][:jletterdigit:]* + +/* integer literals */ +DecIntegerLiteral = [0-9]+ +HexDigit = [0-9a-fA-F] + +HexIntegerLiteral = 0x{HexDigit}+ + +/* floating point literals */ +DoubleLiteral = ({FLit1}|{FLit2}) {Exponent}? + +FLit1 = [0-9]+(\.[0-9]*)? +FLit2 = \.[0-9]+ +Exponent = [eE] [+-]? [0-9]+ + +/* string and character literals */ +StringCharacter1 = [^\r\n\"\\] +StringCharacter2 = [^\r\n\'\\] + +%state STRING1 +%state STRING2 +%state LONGSTRING + +%state COMMENT +%state LINECOMMENT + +%% + + { + + /* keywords */ + "and" | + "break" | + "for" | + "if" | + "in" | + "local" | + "not" | + "or" | + "return" | + "while" | + + /* boolean literals */ + "true" | + "false" | + + /* nil literal */ + "nil" { return token(TokenType.KEYWORD); } + + "repeat" { return token(TokenType.KEYWORD, REPEATBLOCK); } + "until" { return token(TokenType.KEYWORD, -REPEATBLOCK); } + + "function" { return token(TokenType.KEYWORD, ENDBLOCK); } + "then" { return token(TokenType.KEYWORD, ENDBLOCK); } + "do" { return token(TokenType.KEYWORD, ENDBLOCK); } + + "else" { return token(TokenType.KEYWORD); } + "elseif" { return token(TokenType.KEYWORD); } + + "end" { return token(TokenType.KEYWORD, -ENDBLOCK); } + + /* operators */ + + "+" | + "-" | + "*" | + "/" | + "%" | + "^" | + "#" | + "==" | + "~=" | + "<=" | + ">=" | + "<" | + ">" | + "=" | + ";" | + ":" | + "," | + "." | + ".." | + "..." { return token(TokenType.OPERATOR); } + + "(" { return token(TokenType.OPERATOR, PARAN); } + ")" { return token(TokenType.OPERATOR, -PARAN); } + "{" { return token(TokenType.OPERATOR, CURLY); } + "}" { return token(TokenType.OPERATOR, -CURLY); } + "[" { return token(TokenType.OPERATOR, BRACKET); } + "]" { return token(TokenType.OPERATOR, -BRACKET); } + + + {LongStart} { + longType = TokenType.STRING; + yybegin(LONGSTRING); + tokenStart = yychar; + tokenLength = yylength(); + longLen = tokenLength; + } + + "--" { + yybegin(COMMENT); + tokenStart = yychar; + tokenLength = yylength(); + } + + + /* string literal */ + \" { + yybegin(STRING1); + tokenStart = yychar; + tokenLength = 1; + } + \' { + yybegin(STRING2); + tokenStart = yychar; + tokenLength = 1; + } + + /* numeric literals */ + + {DecIntegerLiteral} | + + {HexIntegerLiteral} | + + {DoubleLiteral} { return token(TokenType.NUMBER); } + + /* whitespace */ + {WhiteSpace} { } + + /* identifiers */ + {Identifier} { return token(TokenType.IDENTIFIER); } +} + + { + {LongEnd} { + if (longLen == yylength()) { + tokenLength += yylength(); + yybegin(YYINITIAL); + return token(longType, tokenStart, tokenLength); + } else { + tokenLength++; + yypushback(yylength() - 1); + } + + } + {LineTerminator} { tokenLength += yylength(); } + . { tokenLength++; } + <> { + yybegin(YYINITIAL); + return token(longType, tokenStart, tokenLength); + } +} + + { + {LongStart} { + longType = TokenType.COMMENT; + yybegin(LONGSTRING); + tokenLength += yylength(); + longLen = yylength(); + } + + {LineTerminator} { + yybegin(YYINITIAL); + return token(TokenType.COMMENT, tokenStart, tokenLength); + } + + . { + yybegin(LINECOMMENT); + tokenLength += yylength(); + } + <> { + yybegin(YYINITIAL); + return token(TokenType.COMMENT, tokenStart, tokenLength); + } + +} + + { + {LineTerminator} { + yybegin(YYINITIAL); + tokenLength += yylength(); + return token(TokenType.COMMENT, tokenStart, tokenLength); + } + {LineTerminator} { tokenLength += yylength(); } + . { tokenLength++; } + <> { + yybegin(YYINITIAL); + return token(TokenType.COMMENT, tokenStart, tokenLength); + } +} + + { + \" { + yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + + {StringCharacter1}+ { tokenLength += yylength(); } + + /* escape sequences */ + + \\. { tokenLength += 2; } + {LineTerminator} { yybegin(YYINITIAL); } + <> { + yybegin(YYINITIAL); + return token(TokenType.STRING, tokenStart, tokenLength); + } +} + + { + \' { + yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + + {StringCharacter2}+ { tokenLength += yylength(); } + + /* escape sequences */ + + \\. { tokenLength += 2; } + {LineTerminator} { yybegin(YYINITIAL); } + <> { + yybegin(YYINITIAL); + return token(TokenType.STRING, tokenStart, tokenLength); + } +} + +/* error fallback */ +.|\n { } +<> { return null; } + diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/properties.flex b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/properties.flex new file mode 100644 index 000000000..68fdaad14 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/properties.flex @@ -0,0 +1,63 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jsyntaxpane.lexers; + + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + +%% + +%public +%class PropertiesLexer +%extends DefaultJFlexLexer +%final +%unicode +%char +%type Token + + +%{ + /** + * Create an empty lexer, yyrset will be called later to reset and assign + * the reader + */ + public PropertiesLexer() { + super(); + } + + @Override + public int yychar() { + return yychar; + } +%} + +StartComment = # +WhiteSpace = [ \t] +LineTerminator = \r|\n|\r\n +InputCharacter = [^\r\n] +KeyCharacter = [a-zA-Z0-9._ ] + +%% + + +{ + {KeyCharacter}+{WhiteSpace}*= { return token(TokenType.KEYWORD); } + {StartComment} {InputCharacter}* {LineTerminator}? + { return token(TokenType.COMMENT); } + . | {LineTerminator} { /* skip */ } +} + +<> { return null; } \ No newline at end of file diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/python.flex b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/python.flex new file mode 100644 index 000000000..5f32d45fe --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/python.flex @@ -0,0 +1,386 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jsyntaxpane.lexers; + + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + +%% + +%public +%class PythonLexer +%extends DefaultJFlexLexer +%final +%unicode +%char +%type Token + + +%{ + /** + * Create an empty lexer, yyrset will be called later to reset and assign + * the reader + */ + public PythonLexer() { + super(); + } + + @Override + public int yychar() { + return yychar; + } + + private static final byte PARAN = 1; + private static final byte BRACKET = 2; + private static final byte CURLY = 3; + +%} + +/* main character classes */ +LineTerminator = \r|\n|\r\n +InputCharacter = [^\r\n] + +WhiteSpace = {LineTerminator} | [ \t\f]+ + +/* comments */ +Comment = "#" {InputCharacter}* {LineTerminator}? + +/* identifiers */ +Identifier = [a-zA-Z][a-zA-Z0-9_]* + +/* integer literals */ +DecIntegerLiteral = 0 | [1-9][0-9]* +DecLongLiteral = {DecIntegerLiteral} [lL] + +HexIntegerLiteral = 0 [xX] 0* {HexDigit} {1,8} +HexLongLiteral = 0 [xX] 0* {HexDigit} {1,16} [lL] +HexDigit = [0-9a-fA-F] + +OctIntegerLiteral = 0+ [1-3]? {OctDigit} {1,15} +OctLongLiteral = 0+ 1? {OctDigit} {1,21} [lL] +OctDigit = [0-7] + +/* floating point literals */ +FloatLiteral = ({FLit1}|{FLit2}|{FLit3}) {Exponent}? [fF] +DoubleLiteral = ({FLit1}|{FLit2}|{FLit3}) {Exponent}? + +FLit1 = [0-9]+ \. [0-9]* +FLit2 = \. [0-9]+ +FLit3 = [0-9]+ +Exponent = [eE] [+-]? [0-9]+ + +/* string and character literals */ +StringCharacter = [^\r\n\"\\] +SQStringCharacter = [^\r\n\'\\] + +%state STRING, ML_STRING, SQSTRING, SQML_STRING + +%% + + { + + /* keywords */ + "and" | + "as" | + "assert" | + "break" | + "class" | + "continue" | + "def" | + "del" | + "elif" | + "else" | + "except" | + "exec" | + "finally" | + "for" | + "from" | + "global" | + "if" | + "import" | + "in" | + "is" | + "lambda" | + "not" | + "or" | + "pass" | + "print" | + "self" | /* not exactly keyword, but almost */ + "raise" | + "return" | + "try" | + "while" | + "with" | + "yield" { return token(TokenType.KEYWORD); } + + /* Built-in Types*/ + "yield" | + "Ellipsis" | + "False" | + "None" | + "NotImplemented" | + "True" | + "__import__" | + "__name__" | + "abs" | + "apply" | + "bool" | + "buffer" | + "callable" | + "chr" | + "classmethod" | + "cmp" | + "coerce" | + "compile" | + "complex" | + "delattr" | + "dict" | + "dir" | + "divmod" | + "enumerate" | + "eval" | + "execfile" | + "file" | + "filter" | + "float" | + "frozenset" | + "getattr" | + "globals" | + "hasattr" | + "hash" | + "help" | + "hex" | + "id" | + "input" | + "int" | + "intern" | + "isinstance" | + "issubclass" | + "iter" | + "len" | + "list" | + "locals" | + "long" | + "map" | + "max" | + "min" | + "object" | + "oct" | + "open" | + "ord" | + "pow" | + "property" | + "range" | + "raw_input" | + "reduce" | + "reload" | + "repr" | + "reversed" | + "round" | + "set" | + "setattr" | + "slice" | + "sorted" | + "staticmethod" | + "str" | + "sum" | + "super" | + "tuple" | + "type" | + "unichr" | + "unicode" | + "vars" | + "xrange" | + "zip" { return token(TokenType.TYPE); } + + + + /* operators */ + + "(" { return token(TokenType.OPERATOR, PARAN); } + ")" { return token(TokenType.OPERATOR, -PARAN); } + "{" { return token(TokenType.OPERATOR, CURLY); } + "}" { return token(TokenType.OPERATOR, -CURLY); } + "[" { return token(TokenType.OPERATOR, BRACKET); } + "]" { return token(TokenType.OPERATOR, -BRACKET); } + "+" | + "-" | + "*" | + "**" | + "/" | + "//" | + "%" | + "<<" | + ">>" | + "&" | + "|" | + "^" | + "~" | + "<" | + ">" | + "<=" | + ">=" | + "==" | + "!=" | + "<>" | + "@" | + "," | + ":" | + "." | + "`" | + "=" | + ";" | + "+=" | + "-=" | + "*=" | + "/=" | + "//=" | + "%=" | + "&=" | + "|=" | + "^=" | + ">>=" | + "<<=" | + "**=" { return token(TokenType.OPERATOR); } + + /* string literal */ + \"{3} { + yybegin(ML_STRING); + tokenStart = yychar; + tokenLength = 3; + } + + \" { + yybegin(STRING); + tokenStart = yychar; + tokenLength = 1; + } + + \'{3} { + yybegin(SQML_STRING); + tokenStart = yychar; + tokenLength = 3; + } + + \' { + yybegin(SQSTRING); + tokenStart = yychar; + tokenLength = 1; + } + + /* numeric literals */ + + {DecIntegerLiteral} | + {DecLongLiteral} | + + {HexIntegerLiteral} | + {HexLongLiteral} | + + {OctIntegerLiteral} | + {OctLongLiteral} | + + {FloatLiteral} | + {DoubleLiteral} | + {FloatLiteral}[jJ] { return token(TokenType.NUMBER); } + + /* comments */ + {Comment} { return token(TokenType.COMMENT); } + + /* whitespace */ + {WhiteSpace} { } + + /* identifiers */ + {Identifier} { return token(TokenType.IDENTIFIER); } + + "$" | "?" { return token(TokenType.ERROR); } +} + + { + \" { + yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + + {StringCharacter}+ { tokenLength += yylength(); } + + \\[0-3]?{OctDigit}?{OctDigit} { tokenLength += yylength(); } + + /* escape sequences */ + + \\. { tokenLength += 2; } + {LineTerminator} { yybegin(YYINITIAL); } +} + + { + \"{3} { + yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 3); + } + + {StringCharacter}+ { tokenLength += yylength(); } + + \\[0-3]?{OctDigit}?{OctDigit} { tokenLength += yylength(); } + + \" { tokenLength ++; } + + /* escape sequences */ + + \\. { tokenLength += 2; } + {LineTerminator} { tokenLength ++; } +} + + { + "'" { + yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + + {SQStringCharacter}+ { tokenLength += yylength(); } + + \\[0-3]?{OctDigit}?{OctDigit} { tokenLength += yylength(); } + + /* escape sequences */ + + \\. { tokenLength += 2; } + {LineTerminator} { yybegin(YYINITIAL); } +} + + { + \'{3} { + yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 3); + } + + {SQStringCharacter}+ { tokenLength += yylength(); } + + \\[0-3]?{OctDigit}?{OctDigit} { tokenLength += yylength(); } + + \' { tokenLength ++; } + + /* escape sequences */ + + \\. { tokenLength += 2; } + {LineTerminator} { tokenLength ++; } +} + +/* error fallback */ +.|\n { } +<> { return null; } + diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/ruby.flex b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/ruby.flex new file mode 100644 index 000000000..61b49d3dd --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/ruby.flex @@ -0,0 +1,276 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jsyntaxpane.lexers; + + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + +%% + +%public +%class RubyLexer +%extends DefaultJFlexLexer +%final +%unicode +%char +%type Token + + +%{ + /** + * Create an empty lexer, yyrset will be called later to reset and assign + * the reader + */ + public RubyLexer() { + super(); + } + + @Override + public int yychar() { + return yychar; + } + + private static final byte PARAN = 1; + private static final byte BRACKET = 2; + private static final byte CURLY = 3; + private static final byte WORD = 4; + +%} + +/* main character classes */ +LineTerminator = \r|\n|\r\n +InputCharacter = [^\r\n] + +WhiteSpace = {LineTerminator} | [ \t\f]+ + +/* comments */ +Comment = "#" {InputCharacter}* {LineTerminator}? + +/* identifiers */ +Identifier = [a-zA-Z][a-zA-Z0-9_]* + +/* integer literals */ +DecIntegerLiteral = 0 | [1-9][0-9]* +DecLongLiteral = {DecIntegerLiteral} [lL] + +HexIntegerLiteral = 0 [xX] 0* {HexDigit} {1,8} +HexLongLiteral = 0 [xX] 0* {HexDigit} {1,16} [lL] +HexDigit = [0-9a-fA-F] + +OctIntegerLiteral = 0+ [1-3]? {OctDigit} {1,15} +OctLongLiteral = 0+ 1? {OctDigit} {1,21} [lL] +OctDigit = [0-7] + +/* floating point literals */ +FloatLiteral = ({FLit1}|{FLit2}|{FLit3}) {Exponent}? [fF] +DoubleLiteral = ({FLit1}|{FLit2}|{FLit3}) {Exponent}? + +FLit1 = [0-9]+ \. [0-9]* +FLit2 = \. [0-9]+ +FLit3 = [0-9]+ +Exponent = [eE] [+-]? [0-9]+ + +/* string and character literals */ +StringCharacter = [^\r\n\"\\] + +%state STRING, ML_STRING + +%% + + { + + /* keywords */ + "BEGIN" | + "ensure" | + "assert" | + "nil" | + "self" | + "when" | + "END" | + "false" | + "not" | + "super" | + "alias" | + "defined" | + "or" | + "then" | + "yield" | + "and" | + "redo" | + "true" | + "else" | + "in" | + "rescue" | + "undef" | + "break" | + "elsif" | + "module" | + "retry" | + "unless" | + "next" | + "return" { return token(TokenType.KEYWORD); } + + "begin" | + "case" | + "class" | + "def" | + "for" | + "while" | + "until" | + "do" | + "if" { return token(TokenType.KEYWORD, WORD); } + + "end" { return token(TokenType.KEYWORD, -WORD); } + + + /* Built-in Types*/ + "self" | + "nil" | + "true" | + "false" | + "__FILE__" | + "__LINE__" { return token(TokenType.TYPE); } + + + + /* operators */ + + "(" { return token(TokenType.OPERATOR, PARAN); } + ")" { return token(TokenType.OPERATOR, -PARAN); } + "{" { return token(TokenType.OPERATOR, CURLY); } + "}" { return token(TokenType.OPERATOR, -CURLY); } + "[" { return token(TokenType.OPERATOR, BRACKET); } + "]" { return token(TokenType.OPERATOR, -BRACKET); } + "+" | + "-" | + "*" | + "**" | + "/" | + "//" | + "%" | + "<<" | + ">>" | + "&" | + "|" | + "^" | + "~" | + "<" | + ">" | + "<=" | + ">=" | + "==" | + "!=" | + "<>" | + "@" | + "," | + ":" | + "." | + ".." | + "`" | + "=" | + ";" | + "+=" | + "-=" | + "*=" | + "/=" | + "//=" | + "%=" | + "&=" | + "|=" | + "^=" | + ">>=" | + "<<=" | + "**=" { return token(TokenType.OPERATOR); } + + /* string literal */ + \"{3} { + yybegin(ML_STRING); + tokenStart = yychar; + tokenLength = 3; + } + + \" { + yybegin(STRING); + tokenStart = yychar; + tokenLength = 1; + } + + + /* numeric literals */ + + {DecIntegerLiteral} | + {DecLongLiteral} | + + {HexIntegerLiteral} | + {HexLongLiteral} | + + {OctIntegerLiteral} | + {OctLongLiteral} | + + {FloatLiteral} | + {DoubleLiteral} | + {FloatLiteral}[jJ] { return token(TokenType.NUMBER); } + + /* comments */ + {Comment} { return token(TokenType.COMMENT); } + + /* whitespace */ + {WhiteSpace} { } + + /* identifiers */ + {Identifier}"?" { return token(TokenType.TYPE2); } + {Identifier} { return token(TokenType.IDENTIFIER); } +} + + { + \" { + yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + + {StringCharacter}+ { tokenLength += yylength(); } + + \\[0-3]?{OctDigit}?{OctDigit} { tokenLength += yylength(); } + + /* escape sequences */ + + \\. { tokenLength += 2; } + {LineTerminator} { yybegin(YYINITIAL); } +} + + { + \"{3} { + yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 3); + } + + {StringCharacter}+ { tokenLength += yylength(); } + + \\[0-3]?{OctDigit}?{OctDigit} { tokenLength += yylength(); } + + /* escape sequences */ + + \\. { tokenLength += 2; } + {LineTerminator} { tokenLength ++; } +} + + +/* error fallback */ +.|\n { } +<> { return null; } + diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/scala.flex b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/scala.flex new file mode 100644 index 000000000..34376a318 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/scala.flex @@ -0,0 +1,344 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jsyntaxpane.lexers; + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + +%% + +%public +%class ScalaLexer +%extends DefaultJFlexLexer +%final +%unicode +%char +%type Token + + +%{ + /** + * Create an empty lexer, yyrset will be called later to reset and assign + * the reader + */ + public ScalaLexer() { + super(); + } + + @Override + public int yychar() { + return yychar; + } + + private static final byte PARAN = 1; + private static final byte BRACKET = 2; + private static final byte CURLY = 3; + +%} + +/* main character classes */ +LineTerminator = \r|\n|\r\n +InputCharacter = [^\r\n] + +WhiteSpace = {LineTerminator} | [ \t\f]+ + +/* comments */ +Comment = {TraditionalComment} | {EndOfLineComment} + +TraditionalComment = "/*" [^*] ~"*/" | "/*" "*"+ "/" +EndOfLineComment = "//" {InputCharacter}* {LineTerminator}? + +/* identifiers */ +Identifier = [:jletter:][:jletterdigit:]* + +/* integer literals */ +DecIntegerLiteral = 0 | [1-9][0-9]* +DecLongLiteral = {DecIntegerLiteral} [lL] + +HexIntegerLiteral = 0 [xX] 0* {HexDigit} {1,8} +HexLongLiteral = 0 [xX] 0* {HexDigit} {1,16} [lL] +HexDigit = [0-9a-fA-F] + +OctIntegerLiteral = 0+ [1-3]? {OctDigit} {1,15} +OctLongLiteral = 0+ 1? {OctDigit} {1,21} [lL] +OctDigit = [0-7] + +/* floating point literals */ +FloatLiteral = ({FLit1}|{FLit2}|{FLit3}) {Exponent}? [fF] +DoubleLiteral = ({FLit1}|{FLit2}|{FLit3}) {Exponent}? + +FLit1 = [0-9]+ \. [0-9]* +FLit2 = \. [0-9]+ +FLit3 = [0-9]+ +Exponent = [eE] [+-]? [0-9]+ + +/* string and character literals */ +StringCharacter = [^\r\n\"\\] +SingleCharacter = [^\r\n\'\\] + +%state STRING, CHARLITERAL, JDOC, JDOC_TAG + +%% + + { + + /* keywords */ + "def" | + "import" | + "package" | + "if" | + "then" | + "else" | + "while" | + "for" | + "do" | + "boolean" | + "int" | + "double" | + "byte" | + "short" | + "char" | + "long" | + "float" | + "unit" | + "val" | + "with" | + "type" | + "var" | + "yield" | + "return" | + "true" | + "false" | + "null" | + "this" | + "super" | + "String" | + "Array" | + "private" | + "protected" | + "override" | + "abstract" | + "final" | + "sealed" | + "throw" | + "try" | + "catch" | + "finally" | + "extends" { return token(TokenType.KEYWORD); } + + /* Java Built in types and wrappers */ + "object" | + "Boolean" | + "Byte" | + "Character" | + "Double" | + "Float" | + "Integer" | + "Object" | + "Short" | + "Void" | + "Class" | + "Number" | + "Package" | + "StringBuffer" | + "StringBuilder" | + "CharSequence" | + "Thread" | + "String" { return token(TokenType.TYPE); } + + /* Some Scala predefines */ + "println" { return token(TokenType.KEYWORD2); } + + /* Some Java standard Library Types */ + "Throwable" | + "Cloneable" | + "Comparable" | + "Serializable" | + "Runnable" { return token(TokenType.TYPE); } + + "WARNING" { return token(TokenType.WARNING); } + "ERROR" { return token(TokenType.ERROR); } + + /* operators */ + + "(" { return token(TokenType.OPERATOR, PARAN); } + ")" { return token(TokenType.OPERATOR, -PARAN); } + "{" { return token(TokenType.OPERATOR, CURLY); } + "}" { return token(TokenType.OPERATOR, -CURLY); } + "[" { return token(TokenType.OPERATOR, BRACKET); } + "]" { return token(TokenType.OPERATOR, -BRACKET); } + ";" | + "," | + "." | + "=" | + ">" | + "<" | + "!" | + "~" | + "?" | + ":" | + "==" | + "<=" | + ">=" | + "!=" | + "&&" | + "||" | + "++" | + "--" | + "+" | + "-" | + "*" | + "/" | + "&" | + "|" | + "^" | + "%" | + "<<" | + ">>" | + ">>>" | + "+=" | + "-=" | + "*=" | + "/=" | + "&=" | + "|=" | + "^=" | + "%=" | + "<<=" | + ">>=" | + ">>>=" { return token(TokenType.OPERATOR); } + + /* string literal */ + \" { + yybegin(STRING); + tokenStart = yychar; + tokenLength = 1; + } + + /* character literal */ + \' { + yybegin(CHARLITERAL); + tokenStart = yychar; + tokenLength = 1; + } + + /* numeric literals */ + + {DecIntegerLiteral} | + {DecLongLiteral} | + + {HexIntegerLiteral} | + {HexLongLiteral} | + + {OctIntegerLiteral} | + {OctLongLiteral} | + + {FloatLiteral} | + {DoubleLiteral} | + {DoubleLiteral}[dD] { return token(TokenType.NUMBER); } + + // JavaDoc comments need a state so that we can highlight the @ controls + "/**" { + yybegin(JDOC); + tokenStart = yychar; + tokenLength = 3; + } + + /* comments */ + {Comment} { return token(TokenType.COMMENT); } + + /* whitespace */ + {WhiteSpace} { } + + /* identifiers */ + {Identifier} { return token(TokenType.IDENTIFIER); } +} + + + { + \" { + yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + + {StringCharacter}+ { tokenLength += yylength(); } + + \\[0-3]?{OctDigit}?{OctDigit} { tokenLength += yylength(); } + + /* escape sequences */ + + \\. { tokenLength += 2; } + {LineTerminator} { yybegin(YYINITIAL); } +} + + { + \' { + yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + + {SingleCharacter}+ { tokenLength += yylength(); } + + /* escape sequences */ + + \\. { tokenLength += 2; } + {LineTerminator} { yybegin(YYINITIAL); } +} + + { + "*/" { + yybegin(YYINITIAL); + return token(TokenType.COMMENT, tokenStart, tokenLength + 2); + } + + "@" { + yybegin(JDOC_TAG); + int start = tokenStart; + tokenStart = yychar; + int len = tokenLength; + tokenLength = 1; + return token(TokenType.COMMENT, start, len); + } + + .|\n { tokenLength ++; } + +} + + { + ([:letter:])+ ":"? { tokenLength += yylength(); } + + "*/" { + yybegin(YYINITIAL); + return token(TokenType.COMMENT, tokenStart, tokenLength + 2); + } + + .|\n { + yybegin(JDOC); + // length also includes the trailing quote + int start = tokenStart; + tokenStart = yychar; + int len = tokenLength; + tokenLength = 1; + return token(TokenType.COMMENT2, start, len); + } +} + + +/* error fallback */ +.|\n { } +<> { return null; } + diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/sql.flex b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/sql.flex new file mode 100644 index 000000000..f3c20e2fb --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/sql.flex @@ -0,0 +1,383 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.lexers; + + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + +%% + +%public +%class SqlLexer +%extends DefaultJFlexLexer +%final +%unicode +%char +%type Token +%caseless + + +%{ + /** + * Default constructor is needed as we will always call the yyreset + */ + public SqlLexer() { + super(); + } + + @Override + public int yychar() { + return yychar; + } + +%} + +/* main character classes */ +LineTerminator = \r|\n|\r\n +InputCharacter = [^\r\n] + +WhiteSpace = {LineTerminator} | [ \t\f] + +/* comments */ +Comment = {TraditionalComment} | {EndOfLineComment} | {DocumentationComment} + +TraditionalComment = "/*" [^*] ~"*/" | "/*" "*"+ "/" +DocumentationComment = "/**" {CommentContent} "*"+ "/" +CommentContent = ( [^*] | \*+ [^/*] )* +EndOfLineComment = "--" {InputCharacter}* {LineTerminator}? + +/* identifiers */ +Identifier = [:jletter:][:jletterdigit:]* + +/* integer literals */ +DecIntegerLiteral = 0 | [1-9][0-9]* + +/* floating point literals */ +FloatLiteral = ({FLit1}|{FLit2}|{FLit3}) {Exponent}? [fF] + +FLit1 = [0-9]+ \. [0-9]* +FLit2 = \. [0-9]+ +FLit3 = [0-9]+ +Exponent = [eE] [+-]? [0-9]+ + +/* string and character literals */ +StringCharacter = [^\r\n\"\\] +SingleCharacter = [^\r\n\'\\] + +// Create states for Double Quoted and Single Quoted Strings +%state DQ_STRING, SQ_STRING + +Reserved = + "ADD" | + "ALL" | + "ALLOW REVERSE SCANS" | + "ALTER" | + "ANALYZE" | + "AND" | + "AS" | + "ASC" | + "AUTOMATIC" | + "BEGIN" | + "BEFORE" | + "BETWEEN" | + "BIGINT" | + "BINARY" | + "BLOB" | + "BOTH" | + "BUFFERPOOL" | + "BY" | + "CACHE" | + "CALL" | + "CASCADE" | + "CASE" | + "CHANGE" | + "CHAR" | + "CHARACTER" | + "CHECK" | + "COLLATE" | + "COLUMN" | + "COMMIT" | + "CONDITION" | + "CONSTANT" | + "CONSTRAINT" | + "CONTINUE" | + "CONVERT" | + "CREATE" | + "CROSS" | + "CURSOR" | + "DATE" | + "DATABASE" | + "DATABASES" | + "DEC" | + "DECIMAL" | + "DECODE" | + "DECLARE" | + "DEFAULT" | + "DELAYED" | + "DELETE" | + "DESC" | + "DESCRIBE" | + "DETERMINISTIC" | + "DISTINCT" | + "DISTINCTROW" | + "DIV" | + "DOUBLE" | + "DROP" | + "DUAL" | + "EACH" | + "ELSE" | + "ELSEIF" | + "ENCLOSED" | + "END" | + "ESCAPED" | + "EXCEPTION" | + "EXISTS" | + "EXIT" | + "EXPLAIN" | + "FALSE" | + "FETCH" | + "FLOAT" | + "FLOAT4" | + "FLOAT8" | + "FOR" | + "FORCE" | + "FOREIGN" | + "FROM" | + "FUNCTION" | + "FULLTEXT" | + "GLOBAL TEMPORARY" | + "GRANT" | + "GROUP" | + "HAVING" | + "IF" | + "IGNORE" | + "IN" | + "INDEX" | + "INFILE" | + "INNER" | + "INOUT" | + "INSENSITIVE" | + "INSERT" | + "INT" | + "INTEGER" | + "INTERVAL" | + "INTO" | + "IS" | + "IS REF CURSOR" | + "ITERATE" | + "JOIN" | + "KEY" | + "KEYS" | + "KILL" | + "LEADING" | + "LEAVE" | + "LEFT" | + "LIKE" | + "LIMIT" | + "LINES" | + "LOAD" | + "LOCK" | + "LONG" | + "LOOP" | + "MATCH" | + "MERGE" | + "MINVALUE" | + "MAXVALUE" | + "MOD" | + "MODIFIES" | + "NATURAL" | + "NOCYCLE" | + "NOORDER" | + "NOT" | + "NULL" | + "NUMERIC" | + "NUMBER" | + "ON" | + "OPEN" | + "OPTIMIZE" | + "OPTION" | + "OPTIONALLY" | + "OR" | + "ORDER" | + "OTHERS" | + "OUT" | + "OUTER" | + "OUTFILE" | + "PACKAGE" | + "PACKAGE BODY" | + "PAGESIZE" | + "PLS_INTEGER" | + "PRAGMA" | + "PRECISION" | + "PRIMARY" | + "PROCEDURE" | + "PURGE" | + "RAISE" | + "READ" | + "READS" | + "REAL" | + "REFERENCES" | + "REGEXP" | + "RELEASE" | + "RENAME" | + "REPEAT" | + "REPLACE" | + "REQUIRE" | + "RESTRICT" | + "RETURN" | + "REVOKE" | + "RIGHT" | + "RLIKE" | + "ROLLBACK" | + "ROWCOUNT" | + "ROWTYPE" | + "SIZE" | + "SCHEMA" | + "SCHEMAS" | + "SELECT" | + "SENSITIVE" | + "SEPARATOR" | + "SEQUENCE" | + "SET" | + "SHOW" | + "SMALLINT" | + "SONAME" | + "SPATIAL" | + "SPECIFIC" | + "SQL" | + "SQLEXCEPTION" | + "SQLSTATE" | + "SQLWARNING" | + "STARTING" | + "SYSDATE" | + "TABLE" | + "TABLESPACE" | + "TERMINATED" | + "THEN" | + "TO" | + "TO_CHAR" | + "TO_DATE" | + "TRAILING" | + "TRIGGER" | + "TRUE" | + "TRUNCATE" | + "TYPE" | + "UNDO" | + "UNION" | + "UNIQUE" | + "UNLOCK" | + "UNSIGNED" | + "UPDATE" | + "USAGE" | + "USE" | + "USER" | + "USING" | + "VALUES" | + "VARBINARY" | + "VARCHAR" | + "VARCHAR2" | + "VARCHARACTER" | + "VARYING" | + "WHEN" | + "WHERE" | + "WHILE" | + "WITH" | + "WRITE" | + "XOR" | + "ZEROFILL" +%% + + { + + /* keywords */ + {Reserved} { return token(TokenType.KEYWORD); } + + /* operators */ + + "(" | + ")" | + "{" | + "}" | + "[" | + "]" | + ";" | + "," | + "." | + "@" | + "=" | + ">" | + "<" | + "!" | + "~" | + "?" | + ":" { return token(TokenType.OPERATOR); } + + /* string literal */ + \" { + yybegin(DQ_STRING); + tokenStart = yychar; + tokenLength = 1; + } + \' { + yybegin(SQ_STRING); + tokenStart = yychar; + tokenLength = 1; + } + + /* numeric literals */ + + {DecIntegerLiteral} | + + {FloatLiteral} { return token(TokenType.NUMBER); } + + /* comments */ + {Comment} { return token(TokenType.COMMENT); } + + /* whitespace */ + {WhiteSpace}+ { /* skip */ } + + /* identifiers */ + {Identifier} { return token(TokenType.IDENTIFIER); } + +} + + { + {StringCharacter}+ { tokenLength += yylength(); } + \"\" { tokenLength += 2; } + \\. { tokenLength += 2; } + {LineTerminator} { yybegin(YYINITIAL); } + \" { + yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } +} + + { + {SingleCharacter}+ { tokenLength += yylength(); } + \'\' { tokenLength += 2; } + \\. { tokenLength += 2; } + {LineTerminator} { yybegin(YYINITIAL); } + \' { + yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } +} + +/* error fallback */ +.|\n { } +<> { return null; } + diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/tal.flex b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/tal.flex new file mode 100644 index 000000000..74cb7272e --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/tal.flex @@ -0,0 +1,166 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.lexers; + + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + +%% + +%public +%class TALLexer +%extends DefaultJFlexLexer +%final +%unicode +%char +%type Token +%caseless + + +%{ + /** + * Create an empty lexer, yyrset will be called later to reset and assign + * the reader + */ + public TALLexer() { + super(); + } + + @Override + public int yychar() { + return yychar; + } +%} + +/* main character classes */ +LineTerminator = \r|\n|\r\n +InputCharacter = [^\r\n] + +WhiteSpace = {LineTerminator} | [ \t\f]+ + +/* comments */ +Comment = {TraditionalComment} | {EndOfLineComment} + +TraditionalComment = "!" [^\r\n!]* ( "!" | {LineTerminator} ) +EndOfLineComment = "--" {InputCharacter}* {LineTerminator}? + +/* identifiers */ +Identifier = [A-Za-z_][A-Za-z0-9\^_]* + +/* integer literals */ +DecIntegerLiteral = 0 | [1-9][0-9]* + +HexIntegerLiteral = 0 [xX] 0* {HexDigit} {1,8} +HexLongLiteral = 0 [xX] 0* {HexDigit} {1,16} [lL] +HexDigit = [0-9a-fA-F] + +OctIntegerLiteral = "%" [1-3]? {OctDigit} {1,15} +OctLongLiteral = 0+ 1? {OctDigit} {1,21} [lL] +OctDigit = [0-7] + +FixedLiteral = DecIntegerLiteral [fF] +DoubleLiteral = DecIntegerLiteral [dD] + +/* string and character literals */ +StringCharacter = [^\r\n\"\\] +SingleCharacter = [^\r\n\'\\] + +%% + + { + + /* keywords */ + "begin" | + "end" | + "struct" | + "fieldalign" | + "shared" | + "shared2" | + "literal" | + "for" | + "do" | + "while" | + "?page" | + "?section" { return token(TokenType.KEYWORD); } + + "int" | + "string" | + "int(32)" | + "fixed" | + "byte" | + "float" | + "filler" { return token(TokenType.TYPE); } + + + "(" | + ")" | + "{" | + "}" | + "[" | + "]" | + ";" | + "," | + "." | + "=" | + ">" | + "<" | + "!" | + "?" | + ":" | + ":=" | + "':='" | + "'=:'" | + "<>" | + "+" | + "-" | + "*" | + "/" | + "<<" | + ">>" { return token(TokenType.OPERATOR); } + + /* string literal */ + \"{StringCharacter}+\" { return token(TokenType.STRING); } + + /* character literal */ + \'{SingleCharacter}\' { return token(TokenType.STRING); } + + /* numeric literals */ + + {DecIntegerLiteral} | + + {HexIntegerLiteral} | + {HexLongLiteral} | + + {OctIntegerLiteral} | + {OctLongLiteral} | + + {FixedLiteral} | + {DoubleLiteral} { return token(TokenType.NUMBER); } + + /* comments */ + {Comment} { return token(TokenType.COMMENT); } + + /* whitespace */ + {WhiteSpace} { } + + /* identifiers */ + {Identifier} { return token(TokenType.IDENTIFIER); } +} + + +/* error fallback */ +.|\n { } +<> { return null; } + diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/xhtml.flex b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/xhtml.flex new file mode 100644 index 000000000..07b9bb166 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/xhtml.flex @@ -0,0 +1,371 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jsyntaxpane.lexers; + + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + +%% + +%public +%class XHTMLLexer +%extends DefaultJFlexLexer +%final +%unicode +%char +%type Token +%ignorecase + +%{ + /** + * Create an empty lexer, yyrset will be called later to reset and assign + * the reader + */ + public XHTMLLexer() { + super(); + } + + @Override + public int yychar() { + return yychar; + } + + private static final byte TAG_OPEN = 1; + private static final byte TAG_CLOSE = -1; + + private static final byte INSTR_OPEN = 2; + private static final byte INSTR_CLOSE = -2; + + private static final byte CDATA_OPEN = 3; + private static final byte CDATA_CLOSE = -3; + + private static final byte COMMENT_OPEN = 4; + private static final byte COMMENT_CLOSE = -4; +%} + +%xstate COMMENT, CDATA, TAG, INSTR, DOCTYPE + +/* main character classes */ + +/* white space */ +S = (\u0020 | \u0009 | \u000D | \u000A)+ + +/* characters */ +// Char = \u0009 | \u000A | \u000D | [\u0020-\uD7FF] | [\uE000-\uFFFD] | [\u10000-\u10FFFF] + +/* comments */ +CommentStart = "" + +NameStartChar = ":" | [A-Z] | "_" | [a-z] +NameChar = {NameStartChar} | "-" | "." | [0-9] | \u00B7 +Name = {NameStartChar} {NameChar}* + +/* XML Processing Instructions */ +InstrStart = "" + +DocTypeStart = "" + +/* Tags */ +OpenTagStart = "<" {Name} +OpenTagClose = "/>" +OpenTagEnd = ">" +CloseTag = "" + +/* attribute */ +Attribute = {Name} "=" + +/* HTML specifics */ +HTMLTagName = + "address" | + "applet" | + "area" | + "a" | + "b" | + "base" | + "basefont" | + "big" | + "blockquote" | + "body" | + "br" | + "caption" | + "center" | + "cite" | + "code" | + "dd" | + "dfn" | + "dir" | + "div" | + "dl" | + "dt" | + "font" | + "form" | + "h"[1-6] | + "head" | + "hr" | + "html" | + "img" | + "input" | + "isindex" | + "kbd" | + "li" | + "link" | + "LINK" | + "map" | + "META" | + "menu" | + "meta" | + "ol" | + "option" | + "param" | + "pre" | + "p" | + "samp" | + "span" | + "select" | + "small" | + "strike" | + "sub" | + "sup" | + "table" | + "td" | + "textarea" | + "th" | + "title" | + "tr" | + "tt" | + "ul" | + "var" | + "xmp" | + "script" | + "noscript" | + "style" + +HTMLAttrName = + "action" | + "align" | + "alink" | + "alt" | + "archive" | + "background" | + "bgcolor" | + "border" | + "bordercolor" | + "cellpadding" | + "cellspacing" | + "checked" | + "class" | + "clear" | + "code" | + "codebase" | + "color" | + "cols" | + "colspan" | + "content" | + "coords" | + "enctype" | + "face" | + "gutter" | + "height" | + "hspace" | + "href" | + "id" | + "link" | + "lowsrc" | + "marginheight" | + "marginwidth" | + "maxlength" | + "method" | + "name" | + "prompt" | + "rel" | + "rev" | + "rows" | + "rowspan" | + "scrolling" | + "selected" | + "shape" | + "size" | + "src" | + "start" | + "target" | + "text" | + "type" | + "url" | + "usemap" | + "ismap" | + "valign" | + "value" | + "vlink" | + "vspace" | + "width" | + "wrap" | + "abbr" | + "accept" | + "accesskey" | + "axis" | + "char" | + "charoff" | + "charset" | + "cite" | + "classid" | + "codetype" | + "compact" | + "data" | + "datetime" | + "declare" | + "defer" | + "dir" | + "disabled" | + "for" | + "frame" | + "headers" | + "hreflang" | + "lang" | + "language" | + "longdesc" | + "multiple" | + "nohref" | + "nowrap" | + "object" | + "profile" | + "readonly" | + "rules" | + "scheme" | + "scope" | + "span" | + "standby" | + "style" | + "summary" | + "tabindex" | + "valuetype" | + "version" + +HTMLOpenTagStart = "<" {HTMLTagName} +HTMLCloseTag = "" +HTMLAttribute = {HTMLAttrName} "=" + +/* string and character literals */ +DQuoteStringChar = [^\r\n\"] +SQuoteStringChar = [^\r\n\'] + +%% + + { + + "&" [a-z]+ ";" | + "&#" [:digit:]+ ";" { return token(TokenType.KEYWORD2); } + + {InstrStart} { + yybegin(INSTR); + return token(TokenType.TYPE2, INSTR_OPEN); + } + {DocTypeStart} { + yybegin(DOCTYPE); + return token(TokenType.TYPE2, INSTR_OPEN); + } + {HTMLOpenTagStart} { + yybegin(TAG); + return token(TokenType.KEYWORD2, TAG_OPEN); + } + {HTMLCloseTag} { return token(TokenType.KEYWORD2, TAG_CLOSE); } + {OpenTagStart} { + yybegin(TAG); + return token(TokenType.KEYWORD, TAG_OPEN); + } + {CloseTag} { return token(TokenType.KEYWORD, TAG_CLOSE); } + {CommentStart} { + yybegin(COMMENT); + return token(TokenType.COMMENT2, COMMENT_OPEN); + } + {CDataStart} { + yybegin(CDATA); + return token(TokenType.COMMENT2, CDATA_OPEN); + } +} + + { + {Attribute} { return token(TokenType.IDENTIFIER); } + + \"{DQuoteStringChar}*\" | + \'{SQuoteStringChar}*\' { return token(TokenType.STRING); } + + {InstrEnd} { + yybegin(YYINITIAL); + return token(TokenType.TYPE2, INSTR_CLOSE); + } +} + + { + [^>]* { } + + {OpenTagEnd} { + yybegin(YYINITIAL); + return token(TokenType.TYPE2, INSTR_CLOSE); + } +} + + { + {HTMLAttribute} { return token(TokenType.KEYWORD2); } + {Attribute} { return token(TokenType.IDENTIFIER); } + + \"{DQuoteStringChar}*\" | + \'{SQuoteStringChar}*\' { return token(TokenType.STRING); } + + + {OpenTagClose} { + yybegin(YYINITIAL); + return token(TokenType.KEYWORD, TAG_CLOSE); +} + + {OpenTagEnd} { + yybegin(YYINITIAL); + return token(TokenType.KEYWORD); + } +} + + { + {CommentEnd} { + yybegin(YYINITIAL); + return token(TokenType.COMMENT2, COMMENT_CLOSE); + } + ~{CommentEnd} { + yypushback(3); + return token(TokenType.COMMENT); + } +} + + { + {CDataEnd} { + yybegin(YYINITIAL); + return token(TokenType.COMMENT2, CDATA_CLOSE); + } + ~{CDataEnd} { + yypushback(3); + return token(TokenType.COMMENT); + } +} + + { +/* error fallback */ + .|\n { } + <> { return null; } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/xml.flex b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/xml.flex new file mode 100644 index 000000000..741b71773 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/xml.flex @@ -0,0 +1,196 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jsyntaxpane.lexers; + + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + +%% + +%public +%class XmlLexer +%extends DefaultJFlexLexer +%final +%unicode +%char +%type Token + +%{ + /** + * Create an empty lexer, yyrset will be called later to reset and assign + * the reader + */ + public XmlLexer() { + super(); + } + + @Override + public int yychar() { + return yychar; + } + + private static final byte TAG_OPEN = 1; + private static final byte TAG_CLOSE = -1; + + private static final byte INSTR_OPEN = 2; + private static final byte INSTR_CLOSE = -2; + + private static final byte CDATA_OPEN = 3; + private static final byte CDATA_CLOSE = -3; + + private static final byte COMMENT_OPEN = 4; + private static final byte COMMENT_CLOSE = -4; +%} + +%xstate COMMENT, CDATA, TAG, INSTR + +/* main character classes */ + +/* white space */ +S = (\u0020 | \u0009 | \u000D | \u000A)+ + +/* characters */ + +Char = \u0009 | \u000A | \u000D | [\u0020-\uD7FF] | [\uE000-\uFFFD] | [\u10000-\u10FFFF] + +/* comments */ +CommentStart = "" + +NameStartChar = ":" | [A-Z] | "_" | [a-z] +NameStartCharUnicode = [\u00C0-\u00D6] | + [\u00D8-\u00F6] | + [\u00F8-\u02FF] | + [\u0370-\u037D] | + [\u037F-\u1FFF] | + [\u200C-\u200D] | + [\u2070-\u218F] | + [\u2C00-\u2FEF] | + [\u3001-\uD7FF] | + [\uF900-\uFDCF] | + [\uFDF0-\uFFFD] | + [\u10000-\uEFFFF] + +NameChar = {NameStartChar} | "-" | "." | [0-9] | \u00B7 +NameCharUnicode = [\u0300-\u036F] | [\u0203F-\u2040] +Name = {NameStartChar} {NameChar}* +NameUnicode = ({NameStartChar}|{NameStartCharUnicode}) ({NameChar}|{NameCharUnicode})* + +/* XML Processing Instructions */ +InstrStart = "" + +/* CDATA */ +CDataStart = "" + +/* Tags */ +OpenTagStart = "<" {Name} +OpenTagClose = "/>" +OpenTagEnd = ">" + +CloseTag = "" + +/* attribute */ +Attribute = {Name} "=" + +/* string and character literals */ +DQuoteStringChar = [^\r\n\"] +SQuoteStringChar = [^\r\n\'] + +%% + + { + + "&" [a-z]+ ";" | + "&#" [:digit:]+ ";" { return token(TokenType.KEYWORD2); } + + {InstrStart} { + yybegin(INSTR); + return token(TokenType.TYPE2, INSTR_OPEN); + } + {OpenTagStart} { + yybegin(TAG); + return token(TokenType.TYPE, TAG_OPEN); + } + {CloseTag} { return token(TokenType.TYPE, TAG_CLOSE); } + {CommentStart} { + yybegin(COMMENT); + return token(TokenType.COMMENT2, COMMENT_OPEN); + } + {CDataStart} { + yybegin(CDATA); + return token(TokenType.COMMENT2, CDATA_OPEN); + } +} + + { + {Attribute} { return token(TokenType.IDENTIFIER); } + + \"{DQuoteStringChar}*\" | + \'{SQuoteStringChar}*\' { return token(TokenType.STRING); } + + {InstrEnd} { + yybegin(YYINITIAL); + return token(TokenType.TYPE2, INSTR_CLOSE); + } + } + + { + {Attribute} { return token(TokenType.IDENTIFIER); } + + \"{DQuoteStringChar}*\" | + \'{SQuoteStringChar}*\' { return token(TokenType.STRING); } + + + {OpenTagClose} { + yybegin(YYINITIAL); + return token(TokenType.TYPE, TAG_CLOSE); +} + + {OpenTagEnd} { + yybegin(YYINITIAL); + return token(TokenType.TYPE); + } +} + + { + {CommentEnd} { + yybegin(YYINITIAL); + return token(TokenType.COMMENT2, COMMENT_CLOSE); + } + ~{CommentEnd} { + yypushback(3); + return token(TokenType.COMMENT); + } +} + + { + {CDataEnd} { + yybegin(YYINITIAL); + return token(TokenType.COMMENT2, CDATA_CLOSE); + } + ~{CDataEnd} { + yypushback(3); + return token(TokenType.COMMENT); + } +} + + { +/* error fallback */ + .|\n { } + <> { return null; } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/xpath.flex b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/xpath.flex new file mode 100644 index 000000000..fe514e1c4 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/xpath.flex @@ -0,0 +1,266 @@ +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This flex file originally donated to the project by HeyChinaski + * + */ + +package jsyntaxpane.lexers; + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + +%% + +%public +%class XPathLexer +%extends DefaultJFlexLexer +%final +%unicode +%char +%type Token + + +%{ + /** + * Create an empty lexer, yyrset will be called later to reset and assign + * the reader + */ + public XPathLexer() { + super(); + } + + @Override + public int yychar() { + return yychar; + } + + private static final byte PARAN = 1; + private static final byte BRACKET = 2; + private static final byte CURLY = 3; + +%} + +Digits = [0-9]+ +Letter = {BaseChar} | {Ideographic} +BaseChar = [\u0041-\u005A] | [\u0061-\u007A] | [\u00C0-\u00D6] | [\u00D8-\u00F6] | [\u00F8-\u00FF] | [\u0100-\u0131] | [\u0134-\u013E] | [\u0141-\u0148] | [\u014A-\u017E] | [\u0180-\u01C3] | [\u01CD-\u01F0] | [\u01F4-\u01F5] | [\u01FA-\u0217] | [\u0250-\u02A8] | [\u02BB-\u02C1] | \u0386 | [\u0388-\u038A] | \u038C | [\u038E-\u03A1] | [\u03A3-\u03CE] | [\u03D0-\u03D6] | \u03DA | \u03DC | \u03DE | \u03E0 | [\u03E2-\u03F3] | [\u0401-\u040C] | [\u040E-\u044F] | [\u0451-\u045C] | [\u045E-\u0481] | [\u0490-\u04C4] | [\u04C7-\u04C8] | [\u04CB-\u04CC] | [\u04D0-\u04EB] | [\u04EE-\u04F5] | [\u04F8-\u04F9] | [\u0531-\u0556] | \u0559 | [\u0561-\u0586] | [\u05D0-\u05EA] | [\u05F0-\u05F2] | [\u0621-\u063A] | [\u0641-\u064A] | [\u0671-\u06B7] | [\u06BA-\u06BE] | [\u06C0-\u06CE] | [\u06D0-\u06D3] | \u06D5 | [\u06E5-\u06E6] | [\u0905-\u0939] | \u093D | [\u0958-\u0961] | [\u0985-\u098C] | [\u098F-\u0990] | [\u0993-\u09A8] | [\u09AA-\u09B0] | \u09B2 | [\u09B6-\u09B9] | [\u09DC-\u09DD] | [\u09DF-\u09E1] | [\u09F0-\u09F1] | [\u0A05-\u0A0A] | [\u0A0F-\u0A10] | [\u0A13-\u0A28] | [\u0A2A-\u0A30] | [\u0A32-\u0A33] | [\u0A35-\u0A36] | [\u0A38-\u0A39] | [\u0A59-\u0A5C] | \u0A5E | [\u0A72-\u0A74] | [\u0A85-\u0A8B] | \u0A8D | [\u0A8F-\u0A91] | [\u0A93-\u0AA8] | [\u0AAA-\u0AB0] | [\u0AB2-\u0AB3] | [\u0AB5-\u0AB9] | \u0ABD | \u0AE0 | [\u0B05-\u0B0C] | [\u0B0F-\u0B10] | [\u0B13-\u0B28] | [\u0B2A-\u0B30] | [\u0B32-\u0B33] | [\u0B36-\u0B39] | \u0B3D | [\u0B5C-\u0B5D] | [\u0B5F-\u0B61] | [\u0B85-\u0B8A] | [\u0B8E-\u0B90] | [\u0B92-\u0B95] | [\u0B99-\u0B9A] | \u0B9C | [\u0B9E-\u0B9F] | [\u0BA3-\u0BA4] | [\u0BA8-\u0BAA] | [\u0BAE-\u0BB5] | [\u0BB7-\u0BB9] | [\u0C05-\u0C0C] | [\u0C0E-\u0C10] | [\u0C12-\u0C28] | [\u0C2A-\u0C33] | [\u0C35-\u0C39] | [\u0C60-\u0C61] | [\u0C85-\u0C8C] | [\u0C8E-\u0C90] | [\u0C92-\u0CA8] | [\u0CAA-\u0CB3] | [\u0CB5-\u0CB9] | \u0CDE | [\u0CE0-\u0CE1] | [\u0D05-\u0D0C] | [\u0D0E-\u0D10] | [\u0D12-\u0D28] | [\u0D2A-\u0D39] | [\u0D60-\u0D61] | [\u0E01-\u0E2E] | \u0E30 | [\u0E32-\u0E33] | [\u0E40-\u0E45] | [\u0E81-\u0E82] | \u0E84 | [\u0E87-\u0E88] | \u0E8A | \u0E8D | [\u0E94-\u0E97] | [\u0E99-\u0E9F] | [\u0EA1-\u0EA3] | \u0EA5 | \u0EA7 | [\u0EAA-\u0EAB] | [\u0EAD-\u0EAE] | \u0EB0 | [\u0EB2-\u0EB3] | \u0EBD | [\u0EC0-\u0EC4] | [\u0F40-\u0F47] | [\u0F49-\u0F69] | [\u10A0-\u10C5] | [\u10D0-\u10F6] | \u1100 | [\u1102-\u1103] | [\u1105-\u1107] | \u1109 | [\u110B-\u110C] | [\u110E-\u1112] | \u113C | \u113E | \u1140 | \u114C | \u114E | \u1150 | [\u1154-\u1155] | \u1159 | [\u115F-\u1161] | \u1163 | \u1165 | \u1167 | \u1169 | [\u116D-\u116E] | [\u1172-\u1173] | \u1175 | \u119E | \u11A8 | \u11AB | [\u11AE-\u11AF] | [\u11B7-\u11B8] | \u11BA | [\u11BC-\u11C2] | \u11EB | \u11F0 | \u11F9 | [\u1E00-\u1E9B] | [\u1EA0-\u1EF9] | [\u1F00-\u1F15] | [\u1F18-\u1F1D] | [\u1F20-\u1F45] | [\u1F48-\u1F4D] | [\u1F50-\u1F57] | \u1F59 | \u1F5B | \u1F5D | [\u1F5F-\u1F7D] | [\u1F80-\u1FB4] | [\u1FB6-\u1FBC] | \u1FBE | [\u1FC2-\u1FC4] | [\u1FC6-\u1FCC] | [\u1FD0-\u1FD3] | [\u1FD6-\u1FDB] | [\u1FE0-\u1FEC] | [\u1FF2-\u1FF4] | [\u1FF6-\u1FFC] | \u2126 | [\u212A-\u212B] | \u212E | [\u2180-\u2182] | [\u3041-\u3094] | [\u30A1-\u30FA] | [\u3105-\u312C] | [\uAC00-\uD7A3] +Ideographic = [\u4E00-\u9FA5] | \u3007 | [\u3021-\u3029] +NCNameStartChar = {Letter} | "_" +NameStartCharMinusColon = [A-Z] | "_" | [a-z] | [\uC0-\uD6] | [\uD8-\uF6] | [\uF8-\u2FF] | [\u370-\u37D] | [\u37F-\u1FFF] | [\u200C-\u200D] | [\u2070-\u218F] | [\u2C00-\u2FEF] | [\u3001-\uD7FF] | [\uF900-\uFDCF] | [\uFDF0-\uFFFD] +NCNameChar = {NameStartCharMinusColon} | "-" | "." | [0-9] | \uB7 | [\u0300-\u036F] | [\u203F-\u2040] +NCName = {NCNameStartChar} {NCNameChar}* +LocalPart = {NCName} +UnprefixedName = {LocalPart} +Prefix = {NCName} +PrefixedName = {Prefix} ":" {LocalPart} +QName = {PrefixedName} | {UnprefixedName} +NameTest = "*" | {NCName} ":" "*" | {QName} +VariableReference = "$" {QName} +LineTerminator = \r|\n|\r\n + +NodeType = "comment" + | "text" + | "processing-instruction" + | "node" + +OperatorName = "and" | "or" | "mod" | "div" + +Operator = {OperatorName} | "*" | "/" | "//" | "|" | "+" | "-" | "=" | "!=" | "<" | "<=" | ">" | ">=" + +FunctionName = {QName} + +XPathFunction = "default" + | "node-name" + | "nilled" + | "data" + | "base-uri" + | "document-uri" + | "error" + | "trace" + | "number" + | "abs" + | "ceiling" + | "floor" + | "round" + | "round-half-to-even" + | "string" + | "codepoints-to-string" + | "string-to-codepoints" + | "codepoint-equal" + | "compare" + | "concat" + | "string-join" + | "substring" + | "string-length" + | "normalize-space" + | "normalize-unicode" + | "upper-case" + | "lower-case" + | "translate" + | "escape-uri" + | "contains" + | "starts-with" + | "ends-with" + | "substring-before" + | "substring-after" + | "matches" + | "replace" + | "tokenize" + | "resolve-uri" + | "boolean" + | "not" + | "true" + | "false" + | "dateTime" + | "years-from-duration" + | "months-from-duration" + | "days-from-duration" + | "hours-from-duration" + | "minutes-from-duration" + | "seconds-from-duration" + | "year-from-dateTime" + | "month-from-dateTime" + | "day-from-dateTime" + | "hours-from-dateTime" + | "minutes-from-dateTime" + | "seconds-from-dateTime" + | "timezone-from-dateTime" + | "year-from-date" + | "month-from-date" + | "day-from-date" + | "timezone-from-date" + | "hours-from-time" + | "minutes-from-time" + | "seconds-from-time" + | "timezone-from-time" + | "adjust-dateTime-to-timezone" + | "adjust-date-to-timezone" + | "adjust-time-to-timezone" + | "QName" + | "local-name-from-QName" + | "namespace-uri-from-QName" + | "namespace-uri-for-prefix" + | "in-scope-prefixes" + | "resolve-QName" + | "name" + | "local-name" + | "namespace-uri" + | "lang" + | "root" + | "index-of" + | "remove" + | "empty" + | "exists" + | "distinct-values" + | "insert-before" + | "reverse" + | "subsequence" + | "unordered" + | "zero-or-one" + | "one-or-more" + | "exactly-one" + | "deep-equal" + | "count" + | "avg" + | "max" + | "min" + | "sum" + | "id" + | "idref" + | "doc" + | "doc-available" + | "collection" + | "position" + | "last" + | "current-dateTime" + | "current-date" + | "current-time" + | "implicit-timezone" + | "default-collation" + | "static-base-uri" + +AxisName = "ancestor" + | "ancestor-or-self" + | "attribute" + | "child" + | "descendant" + | "descendant-or-self" + | "following" + | "following-sibling" + | "namespace" + | "parent" + | "preceding" + | "preceding-sibling" + | "self" + +Number = {Digits} | {Digits} "." {Digits} + +S = [\u20] | [\u9] | [\uD] | [\uA] + +%state STRING_DOUBLE, STRING_SINGLE + +%% + + { + {VariableReference} { return token(TokenType.IDENTIFIER); } + {Number} { return token(TokenType.NUMBER); } + {AxisName} { return token(TokenType.TYPE); } + "(" { return token(TokenType.OPERATOR, PARAN); } + ")" { return token(TokenType.OPERATOR, -PARAN); } + "{" { return token(TokenType.OPERATOR, CURLY); } + "}" { return token(TokenType.OPERATOR, -CURLY); } + "[" { return token(TokenType.OPERATOR, BRACKET); } + "]" { return token(TokenType.OPERATOR, -BRACKET); } + "." | ".." | "@" | "," | "::" { return token(TokenType.OPERATOR); } + {Operator} { return token(TokenType.OPERATOR); } + {NodeType} { return token(TokenType.KEYWORD); } + {XPathFunction} { return token(TokenType.KEYWORD2); } + {FunctionName} { return token(TokenType.IDENTIFIER); } + {NameTest} { return token(TokenType.IDENTIFIER); } + + /* string literal */ + \" { + yybegin(STRING_DOUBLE); + tokenStart = yychar; + tokenLength = 1; + } + + /* string literal */ + \' { + yybegin(STRING_SINGLE); + tokenStart = yychar; + tokenLength = 1; + } + ":" | {S} | "\"" {} + . | {LineTerminator} { /* skip */ } +} + + { + \" { + yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + + [^\"] { tokenLength += yylength(); } +} + + { + \' { + yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + + [^\'] { tokenLength += yylength(); } +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/completions/annotation_type.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/completions/annotation_type.png new file mode 100644 index 0000000000000000000000000000000000000000..52ff9d6ee2cfe77fc0ca73694a77cdadfc7c94ed GIT binary patch literal 733 zcmV<30wVp1P)x&Z(I#PaLckKE*>bcPKZcQ8D8 z`kWy@H;F+=NDwUf7vvqk@NAS&2M8dRe}DfdiwFxboH%is zAvr0UVcGJv47YCG1xrroZ)Lc5?>>W=m-S+K_Pe!SsX@#z|IZxP+R~IKyU;8|NF~u>CzR3pFh4mvUd;v3lkR-I5XK6IGj+t+V!1-yKG40Vll z3?&7{FHRlaCW#)6009K@uaLHZb+4|0VS=x}A21-*7}(g@;0kVBzroPi+V%?QwN+Oy z9L+^H03d+CDG}%_X$4i?NNyg!5M~w@0|o|0c9?>{fB&5Q{`K>Udp9pG1*(0HZU8_4 zF~V{q&=64S5d~r%sLNpB3lP5os(X(uDFXx$Bev|!2+IsW@Si|_2M90#Tl*7(v}@U~ P00000NkvXXu0mjfz9TMg literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/completions/class.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/completions/class.png new file mode 100644 index 0000000000000000000000000000000000000000..220e6f385e0aef0c0aa7ab28d6623b2a2b7d0374 GIT binary patch literal 785 zcmV+s1Md8ZP)FfD0{{dNhKZ}H zL;^MyGyMPg^7Q|&w^o8_5FaFt%>@7f#0Vl_U`d&9Am`6_>%2>LGyHyY87|H$qRX(g z$CcqbyHHR}*W2~T4gd%sxB+tugu*#~zF!ekx}M?J%hMPxWfM1LSl1oM@Pl12B6-5Q zl`wID0D^}B)7SSa0*h8L{Cs+t;s2i>7#JiDk_V|nHW(m)7~|?^fSthdY!8F+k2MU@ zX~ifu|M~Tw;l-_=46pD1V)*gpAH%PIzuvJiu}uO>P4t*L=L0|hF~-zP{a>Av!0_qg z2ZrlMmN2~AQ_hf@UjfzpkKy{Ej|`lGnhc7j<_!FjQVbuTKV!Im`Xs~SOBXgXGBCse z1Q65Tzke8>efq`lg^`OvP(Pf3$*PrMN_PhX13NpzgX=#SSh*A#3>+L8__?_l7(RUf z(;&X2x`yxf-+u}K0*K|$@81mHfHr}{frFPp!X%R6!JmH&z4f&Wx^l4$4vv-#3~ydx z1ges}Jj0Fi=i>na2xtJ%_Md-|f}4jy)G&hK@sFPjpDy2E5Ml;~^ZR!g27tu>{Qau{ z5I{^I1AYK)M8-^*cjeFf6l=0<2wchiGTU|^D#gGfem10X2HOG0>TWx z6!jP`-@VJgz{!DuLE`2F`UgQ1oNgOG>_ z!@DzI=5FAb>zt8#CYspw#*Vh=qZe9f*Gd@mnB%1+?HVK!5=N6-#svo^p^a P00000NkvXXu0mjf*;Qhm literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/completions/constructor.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/completions/constructor.png new file mode 100644 index 0000000000000000000000000000000000000000..fd95f9d19736070afb33685281ddb3ab122e1620 GIT binary patch literal 492 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP>?0v z(btiIVPjv-@4(4GzCyA`kS_y6l_~>6Lo)-z&;LOBB?CjL0RzLU1O^7H84L{K`IF+0 zx-l>?CV9FzhE&{2`t$$4J+mr! zwe(Trn)`9<3N&^fWmx1`lTz8hki>A5NpH_8FO`H~!^8jQ>-+!zUzM#ogYBc^BLhitQq!k!vKRfU*?w+!iuvL9=F=ZOTBEd!C%QUDa^Gfd)}tkRWBCOfB6w#+D~O!? z`1xCF?1>M}u?9>E4IA1RFJJ$z&D0%c_@}07#>4;fF5quGsBWV W))gX#GQb#OVDNPHb6Mw<&;$TO53g{0s_~8Rs5=P?#00G1}JBeWrBO`+?kj;kOj|{8Da+YWFUG*=QhAGEPrDk!cXqL$z^0e$ zVe$Y0#PahG1H<=gr@@>hTk_x-BjC5WTa@blvJ|(ZJBw*Be0c z00G4G>o+hEKfD3s_~@k!AU=qOiGlb(pB`rT`{gN^cFo_-!1U$K`Xyz;fgl3_0*L7c zP{G$GcbOBw{C8MP&hyUF+Kb) zP_zEza)xg|zA~@~2msT>Rxl0XgT$5fEg1g)`GJB#E(t7J#lZCS{R)5pViXk?67@0u zoh8EjxdA-@b&O3I%#2MLBt^I|0(a@GUWN;=II92xh!GSMKr95r3P|#NHrg!yu4;es z3rfown3xz*G|!&c!EoUvTj`>Gzvco25Y8kD1OkzEEXD1?4F5l$uZLq0A0!Tv2dM)H zAiU`uq$tFixun4lVhD%^@nM=l7$ATc2xS(qA(l*))!snOKpI&y2m=HVBP=`PP4A41 mf2rvMj%yXwTG$%&@0000uJ-y_3`78c0AeUEt4mACEBpWX%Xc^i@j>Ds z!wF%40AfhWF8=@S{pbHpo&Eolb4tJ%#0QBJV*o$^G5z`ThvCQ1-wY2QKV<;1=}A$I(DONE~L%rUvow-IWagK{UDx00IbPhKQ$kKy7$J z`u}S;AN>c>9$x;HAaRg_b+uxF+shdK|9*e#KZpkLkqrO{Aebpa!7<7IFI>L&A4G%r zAn{dIA_1F<8UFu#dHVm?TPwjdhz}Bn82}JKOd#Dr#=F0Nelz_3{f7ZW`-jK9El%^9 z!SvH1AhNz_zN^(>&`t4jV*Ny-exjj z8~^|Lfq_Bdfkmqrn7+PW0T4iN1HOOy(ACgV%kb^P+vZ>QH%$FY5a z{4r-0Kmakqq5>!=2Bc(x_#qJgjdNm4HW2^Sotj^P5%setb}(Fc$yT~(->6{lL*@Vg002ov JPDHLkV1n>uDV6{L literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/completions/field.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/completions/field.png new file mode 100644 index 0000000000000000000000000000000000000000..06a86fb1d9c2eb820ac2002e89a1de3ffbf954ad GIT binary patch literal 342 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP>?0v z(btiIVPjv-@4(4GzCyA`kS_y6l_~>6Lo)-z&;LOBB?CjL0RzLU1O^7H84L{K`IF+0 zx&hUm@pN$vskoK&=l_3uW>p4-h8YqXEDVe;8yTU*ktSb*eTixp8JPtfB6xp%e=qM` zT4v*Tc5Se@5d(`r8S}q?i4`AznmaN(ykcPDSj|}f|4-tNkH6)i0=pUOJ53l?@F_HG zkoxfadw$#ddJbuZAa(%sLXKz8?l@_B4S2o5u*dc!yZ;K zF}6iXj0z1B8=tzhuh?_@%o&{`2Q_I$XRuv8Jv~tlUCc*RQWzW>7#T7T1wM(g?&t;ucLK6VZBx$bz literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/completions/field_private.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/completions/field_private.png new file mode 100644 index 0000000000000000000000000000000000000000..1d0ee3e4de68c445663da5d572eac4b01a63a0ee GIT binary patch literal 601 zcmV-f0;c_mP)q$gGRCwBA z{Qv(y0|@j@nx6aO)vHMiP@t)yHeKFJqS#5u@jC+^01!Y7AOrGCtJ0dg{0s_~8Rs5=P?#00G1}JBeWrBO`+?kj;io!D~)qhU>zq zI1K;@AeO)X7@XsZj^k9YsLzU_vL+U*T|3> z^Ur^V7oUG)HQ?XhKMVi?#Pka&_xHmaFpiI2$^hbnXqXs?|Ks;RtoZMrKMVi?#PS2E z;OnnX4E$U|4F8_qW%%=-1x&NBurPf5_Kx8P)BtSYFVF=50mSt1yFktQlgk;t{rJkj zA|L=v6I;PFhz}BHHpyf7{^uW7{O9*?27mx!*?5X+)?edqEYG)gHlW+UZI;F$q@Td> z>kn=h00a;tC@O(i2#6J664pV%A_P)uJ-y_3`78c0AeUEt4mACEBpWX%Xc^i@j>Ds z!wF%40AfhWF8=@S{pbHpo&Eolb4tJ%#0QBJV*o$^G5z`ThvCQ1-wY2QKV<;1@N$1PuTPAW*o8czOq9@`;K!)mK(C zG`6=g{9)x~C@#!n5EK%|tGRXRLI!{UVgdT&4I?At)Zm!preDAQfSt}LD8lfQm5<@Y z=ihh@`1kh@13&;VffztT-u?aao8kBGKMY{{*)@hsr;aiF`27zr{tL7WAb?n4rv3Tz zm*LOfe+56W_Vrj7w7_j074k>`!`VFAH&w2dlZ5JCK%`Yrw?5XEwv2aKD=%I#xBU9Z0f}D3upj73~~WL0Kr{waR07eAhimJ zA9|%()ba|65{$yXKoWhasRIZg zMsS8e0}fGnx0#t)R07*qo IM6N<$f~genO8@`> literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/completions/field_static.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/completions/field_static.png new file mode 100644 index 0000000000000000000000000000000000000000..32394788ceaff1feea709c8da50f6871f2ebd5e8 GIT binary patch literal 366 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmUzPnffIy#(?lOI#yL zg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+AuIMGI+W;hE&{2`t$$4J+mrdlV@b-%wH)nGg5@cK$C4+CS%-G=@35^**Edaqiac%)DY6uAl% z`DgIw$6x-{j8Gw?Vmhb`HU2v2skd5IgBa1*^$%pBQC#U#X#Jfexo^ump zX9Vh-HAPZVvUlQ7Kf~7agg3R`zkDY=WnkiASh1qYsP3j?7BIjVJYD@<);T3K0RUX2 BiE97= literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/completions/field_static_private.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/completions/field_static_private.png new file mode 100644 index 0000000000000000000000000000000000000000..3b1c00aa0a25253b2f5e54348a27326074d4023a GIT binary patch literal 656 zcmV;B0&o3^P) zdl(rRY=LYxY&N{+G-kLioXSv{8OzYnH{zTiHrKI7#M^R ze2_sf&^mP?13&<={QSef@cr6pu)vZnd2q=XA4r7!{PQ2hz!#r?!`c7-{$T(JAf{hH z{@)L8z&Jj7DFcWPqG4jcexthR$M1h|{P)iv27mx!`Tub3Ob@>c)T}?boZ;J#uM8{#0>Ct}6-^Ue}4aF z000Aj%=@$c_nh9y%v;d~iobvPSY90ULYh!K{ZQ3M$o qjgk3IF@-h literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/completions/field_static_protected.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/completions/field_static_protected.png new file mode 100644 index 0000000000000000000000000000000000000000..09cb7fb97bae9dcd0ea9c237d4fd1bb1daf601c9 GIT binary patch literal 633 zcmV-<0*3vGP)uJ-y_3`78c0AeUEt4mACEBpWX%Xc^i@j>Ds z!wF%40AfhWF8=@S{pbHpo&Eolb4tJ%#0QBJV*o$^vHbb-hvCQ1-wY2QKV<;1l@;Z| zd=MK3;u~gye8%we`!|LaorR3ZJ^%gL)SxL{p#3&U?#9tI9^MYvdH zW-LQP-%JK}PA-%n00y4-i01K!3d1zIDS?kduG?`U7@4BaaBfPgXvL7oUHFF*1OOf$+b-e;5D) zhzTSJH00giKff7%|Ng@Ork`D7xOD0m!;jzpz!(|8#6b8j&@zAkVuDHh`SX|I&)IG7(fcT+T znnf+QfH1?q|ClKkS?n*+1pomAcL6XUUjgx1P^^GVCI*1i0R#{eR*64E8UR!W5I`*0 zB>w&V%dlihC!8;%tPW=*i-Q0_05O7d6dGV;WHd(RJH-^9fwA{3={G@^0|+nx5Y>7l Tpu7I-00000NkvXXu0mjfg~kpS literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/completions/method.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/completions/method.png new file mode 100644 index 0000000000000000000000000000000000000000..7be8a378a3747d5a82416effd17e4b7fab5af00a GIT binary patch literal 556 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP>?0v z(btiIVPjv-@4(4GzCyA`kS_y6l_~>6Lo)-z&;LOBB?CjL0RzLU1O^7H84L{K`IF+0 zx-l>?F7kA745_%4^ymM7duCMzg@zdt8Y~QqE*lx4#E~ZdBKNW`vk9k|A7v;!V|%pT zVUI|MdZo|YV$mgR3Jns4tdFjpSrVYfcrZ2S)-Ii-RjYXZ2u@Yyb5G^E}~_dGPl4_k>cQD@=LfYJYC} z`|-0l56>AN3qudNC434E8>9-}9$hUd{@(sa_5YW~Y;0v^JUl||C!4P@vIvCfud%8B z$sw+tef52P{q3H6`_scFOidLK6HKf4{Y>|8^YMPkb9ZE|4Wt@rK!{@MBW&gAFX-|p_*&VHhvU%;W~$0lPB;R!;_Ns1Z! mezG5V?{JXChzA(J2N*Js?XY=Uzpw!qvkacDelF{r5}E+&8r}5( literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/completions/method_private.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/completions/method_private.png new file mode 100644 index 0000000000000000000000000000000000000000..5bbdd17828aee4f3665bc9a3b48fef6ac0f71504 GIT binary patch literal 779 zcmV+m1N8ifP)JNRCwBA z{Qv(y0|@j@nx6aO)vHMiP@t)yHeKFJqS#5u@jC+^01!Y7AOrGCtJ0dg{0s_~8Rs5=P?#00G1}JBeWrBO`+?kj;io0UM+EJyA9v zaUhc$pA|z`#$g722}y>JFP<~Jx_z7B z+11N`zI}Kf0NU^c0}FDnGyMMZhYKKpST>$wn)TQC z8_V;poek)=7^%B4SjYe)=-XEe7rcG{9_YH?-vI)M5fl?Z3=Aa(1(;-uJ-y_3`78c0AeUEt4mACEBpWX%Xc^i@j>Ds z!wF%40AfhWF8=@S{pbHpo&Eolb4tJ%#0QBJV*o$^G5z`ThvCQ1-wY2QKV<;1lhGJJgXqRNBw-%CAJ)tOS-x-4RU~tC#d-}Z900G1V^v9d+TQ^JvIr-PGKVYXD{`q)NQ&DlIs)ZGc zx|unHpr8-~)6bt^8pH>Qv-0pR+mIHo4G=&~AZGv#dH46vZ-(E$|1f~)Yl3n|UvlxY z$Vf>tFnoNEfkEO@3JNUWfBh~32p|@izyJLC%kby#KL%%eTLu#oTZZP2CWcs>_c#Mj zLQs(5;{X2<00D$B;P-Eazd!@F?%cz$b;oXo0983)kbS{vfFK7u!|y+TxBvo(2`2FU z(}%8xmRg2yAKo?_e0llPPK1Yn;oDc7`0ev&3_pJV{tgg8a2FihzpEEWtpehQ&YsTN z-#&i{Vqj*%>4L}4UogD-@?|?f0KruN1M(FRp9RIrwHL2uT)h9_@BOFG7#P^uF)&CR zBo9&t5I`*0Oka8a@)0gp)~etC{77yunefakwdqgns}002ovPDHLkV1k^(Srh;O literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/completions/method_static.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/completions/method_static.png new file mode 100644 index 0000000000000000000000000000000000000000..414e584d2e01ce515d709b2d332aae080654cbf9 GIT binary patch literal 541 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP>?0v z(btiIVPjv-@4(4GzCyA`kS_y6l_~>6Lo)-z&;LOBB?CjL0RzLU1O^7H84L{K`IF+0 zx-l>?PWE(h45_%4^ymM7duCMzg@zdt8Y~QqE*lvc7>_vhERwycnNVN%`|E7QjBieE zDV7ZkNlFU>r90A_Zpi&SYOrypLg5Ul28KhK2dRIMkGpG{S>}mH3U(ecD*TU_ zSp>qE&6XU^-u&r`pzOS#p z-E(h$y4y7C+HW$4cUqVKpSS1x2CgL_^Q9QhEW9r%DVc6x^Znt!x#H`U=4>@-N+??0 zClg=(?&N3D-|z0+W(HZ<^JA0o1pz+=RWog?FN{7qxi7O=0}L8Xntw1bvN7<^Uwv`y TdWUbosATYT^>bP0l+XkK`^C^o literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/completions/method_static_private.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/completions/method_static_private.png new file mode 100644 index 0000000000000000000000000000000000000000..0a5e4b1607e5cdf0ce2418a531afce9ddf5420f6 GIT binary patch literal 779 zcmV+m1N8ifP)JNRCwBA z{Qv(y0|@j@nx6aO)vHMiP@t)yHeKFJqS#5u@jC+^01!Y7AOrGCtJ0dqNPpRv#Xbrwq_725w$nmTN~2E!&V5e+?jjn1J45`1|1v7{^C1WdQL(G)xS{M*$z-Gss9uGDs;X zuzdgZy9gkFn0^2ieEs!_frW*I;osA{41fMZXb>MH{sY~B5AVTPLQs(5-~ay+00G4G z@Vh|G`jg8UzWw;hz#8up*HRBaHQ?(PFc#!sXZZc+4;MfHv1~lWH0!VN zH_m6-~ax$8NGkcj4XHh z>^X*Wckcc@dGBErNF6``vEayH-x(PhXFq)R;r^W$uOghaG=gAqtBxFBckapa75nbo z+XGSu5I~Hu?2HWn4dDb*VzZ({AHc-YmabL+Qm;UoL41G!0{~W=Q|e}uFfafB002ov JPDHLkV1jV7Yh?fc literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/completions/method_static_protected.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/completions/method_static_protected.png new file mode 100644 index 0000000000000000000000000000000000000000..e5f9c9bf81abbf2ae63aa02883461b40aa715430 GIT binary patch literal 768 zcmV+b1ONPqP)uJ-y_3`78c0AeUEt4mACEBpWX%Xc^i@j>Ds z!wF%40AfhWF8=@S{pbHpo&Eolb4tJ%#0QBJV*o$^vHbb-hvCQ1-wY2QKV<;1l@;Z| zd=MK3c4Vi3e8%wY*KdZP*$WwweE<+Zi~&L6EnI>k)y=gvaKXCf7KX3y-?XMn@GJ*% z^ME+bBfpqoU3Uiq7aJ=mY$kb3opTkW79fC_HmqAY;r)xJbyW=w3_pQ3gXp)k2q1u%VB&xN{AKv__aB3^y)8pUNfpD2t9Ka~KD>uuWB?VD z5ENwi_y2zcKmf784fy?=;V;mDtvmNHY~8V&AwX4*f#K^H%!C6K6XalL`2FV(7eD~P zUGV+WhpvW}T83{Q-ZmS2dHK^$ga;UJUm+M7K*ioZf5!0R_wVlj0R(r!!Tq~>fz&D> ze(3D!to`ltmmmgaCQKJV#U4L@!SL$Km+b%n1XlqJ$X7so78EPjUc8!d@&1Fq_n$sv zU|?rQH2}y5iG$=p>Hq?W1zY}DdH(VdE>_m6-~ax$8NGkcj4XHh>^X*Wckcc@dGBEr zNF6``VKo5gitmh!jI$rU`*8oxi&qiOS{gwxxm8DwuRHhT`HFpa?(G4o0|+2SaE`(O yfQE1aDY046p$}kUX-iit04b1nzk~Py0R{jAy@D{rjJWjx0000=*Xw84e!y*JHU6V)U5f0r&s` zKnS46m=0oMfCShEz$t)`0%X8efE=Izwga>PC9nga0;mBRfF585xPYC&E`R}G1ek!` z01LnlumXF4y#O1q58wd!0Zw2)zzs+PJOD4i2OI#z0Rcb|5CVh&5kM3W0}cX500}@6 zkOB??hXJ&#G7!st{d^Q+Ip7!|4=4bN04n!)4<`^Sc-h0TkVY&awndzwWNQ!Gkd43D zJbJGDyRaqCdztD(6&4W)U9kBgiJk{P6L63XSl=FlwdAz{go4nM7lIUG0HroS&ca?W z{qog!y>CG_{8oN+JJy=G^lQb6p1(g6(DGwJ253FJR{d!CNl=4_fF27p{Z-f>m^YZW z$d;prWe+1*km*TyA((d9MYuQ{aW~@N;%>yn!^6cV+(Jl5KtM>onS^M|c5+I}?d03G zQPJ+Er=n)0*|u%xzMYKBEPM9u*+I{~pPhC8Zq_}lXeL;AczA^Pgj)#-x3W@gqhkH; zfGI*q@zIUK#$rG=kYZtzVqr?r`UGnuY%RLMUjx<#Y}j5rd;-EvAdmq^2n!o~0}l4a zjX1EEu-xHy1c!7Z*)A>#+^tFmcnmh=+!q5L;4@057E_#fHO|Cy%Jvcg;kNCRJE(Ru zv#{>j%ge`qKtNDP>X7tdnIp1Cl~q*L)HO7<42_IUOi!Dgv9otL=ji0@a`}p<*VSv+ zy#s@81&4&*zH|3sRCG*iTzo=e+SBxm%&hF3+~*~wFUra*DyteAUpFFw)( zH!%2qXn11s)713L?A+&hv|LyS_LpM)ROE+#*)tc!0K+_-#IO^SL7>hfF<<@R}4< z6|=>UI~6-FGUs|MPFgJzW?+!MjK>D9#^(vr!z=v?_t4k4Hl{pEvAnpz8&h$j+ukoy zNn4U~-lpN9d0qW9*R4}w1D6}$%~N)d-yOmrpDGK-_qJdVzgMtDk0LRMNEim$km4~n zYHz+}?`B0tKDGI=x?(xq8bf5m`4dhow4P@|PPQBnS_u6dL~qJcO{u$BV>Kslk3l~7 zch6CnW03OG801QeA_j?&#~>Hg3K!2k^w>6Zaxv?u%#y9gcna|W-G+~M7`@-8*Df;f z(@u1_?^Q0(r;wiI{3OJ3<<@rI1YtJ}Qjze-4Kg#+nvRXGN*&<0m9%u~5Tva!DSYz!X@{(S^$fMdhqifyi4tXPqETbsA5p14CL{e| z&U8WgMs0td;Y|YM`jhh~6>X+cTEokC=Ik9O;M@o^IUVbxTg+{6Yw{c*Vn7Nabu<&x~@2kY<6 zX4wt3Q$E5VMQTbZfn7Y}ZFDSZ$YOSPd!d1j>eZ{G4}3qrViOdV%2Hr6>=8*OFH=y_ zmc4+t#7hyoi7Kfn@Li@?tG9A-rE+LV-bdGaE!U>4KHOueQ|a7=eVUOm9#6zytCzQS zo5xmNS$D>A8bvl-!Xs86ZHlLpA_RgTbMP*>^^@#B3Hm*rKUs9`F^_FXaX8JA?$x$Q zz|e#14S(;O`eTLzv?Cp{`6)rIOilp_(?om2#RT>BD*Bi4%|e!$CMdcd*6y?3ozy;x zgWEyJUoXk!HT}r7w7E;ajM$~_<#KOxm*CCnS^u$Kkv_jw5YxP(eD>&0hh3hyL}OR}f#VqDX0xv-M>Ga`Mb>if-j+Gj zPB>AeG)SaJ_b~`zfW;l<0_i z>C9>36CzC>BctL|$5e~m^e<^!m@4Lb?_k<^r;hxs1?lXg;g=YsbU}rFYLnoxPTHHq?w zmUz2MfIgFU^?-eSn{#iDn&KucTeEq(0Y<90u^ts2Q4diCbJhI(RO#+G9mb$n7x8H3 z{m*pG>BdPERZC3(!DqYYmja)d8^Qh;focT8I z-Kx@RMXE((F6w%l*fbpXhPsN@bJF`?dhlUS+vteZNKKEM!zRswNC!%j`r9=&MRi>m z6>J=?L%SM{F~$eC;yUM z#e1Unrj$e$#9hxEH+tj}j6qCe>?3hvC)m9%KEP-HXxLbjoFqts4CZP%A$-g~S zp5)SU%v2%V-qG})KCy3^>QcY+se*o;3GzXu3FCCOPl>fuV|wRj>W>a}ilnGZ`78wG zE+3awb))YYvS@lVy@krr_#_S9UX_R&L8IzcB#SCq>Pzmj804YxV;<`5wMP|`TLvyu zsBM0|Cof()Y4#korQ*zTJXZ07j>kOn-uHx6HlhChGbD2@qLv=LQLhU}#>AJlQrI^= z(x=$dT=+?>;Or;!Jl1*63eR3=T&Dd`rcQraIz#_NI?pl4EU%@4zE7P^xKt}$h|b?8 zzQgy$=FXCc58I!J6$B40uohqtS1whiOyd`_cUp0GEUA~GNX;k;TOd78{0B13;UX_W=SUFljK=NXU3j$J04bu5xu0P z{V0j=5*ud)$2s4=9c6t}iCfQ5;iTes4N4m$tks9D@g$lP&9{^|_WEy#h|F2p2b8ao9=+ccxHF6+Fyt4Yal zIFwcMb_9Zz!*uuT2klZJ2_~A33MUNmh+ExjuAuKw=nFBd{P7QJuiACb(7WJ^+-oA?(HkqmXu+4#-aIe5gE@aXcxWtR84%Pbc_3*!}+ zdg!9s1YhWdf?ZOH=A=6ERvx^zhcXkBizHLWIw<1@t;+}&+1#G?r7W|2PCa!misX=q z(?U^O=v8*!RPzb!@{i8v{ImoeGIw%csi0I^>g&o9-)xfM?$GOhU4OF!fg0rpj)wVxS`|{(8>3AZg5o=G^_+Oo%sfSUpd4|c zTt@%N8b@JqCak58N5iG}NQMmzKN3>y6J>J51tF>2%B`rGD9)qUEVNNm4;KjT5`a zvn-E!CUuiqJqxX8H@znhPtM)>)IGXY(7%jdN&tf#l)@kZyB|Gg$I1}jp~wHYXKAl4 zZ&?a$V=;Bb*oMuvvV8-iZ`8xjH`;xe$iGm&SP~`vd7IY9jHJigGvoHT9DFHOK^VNC zey@;nM_rfDAYGH+?i}UV7Ss97qZ*ZnWB}5WtXsTK8l? znJUxXb3w&#Y0ilseV(8G+9G2lEX)-z&r9=!F;|6;F9Szo&Q(DLsON{&72*!@kQ89C^wf>}wFKIAD&%H;PF25UcWb9$s#1;&6MHdZDVifKPRXCSou(I<(jRsN&)Yz5Q0PcS)A( zb(Q54`En1nZLDm&Z#uf=69(~bGNg+M#~=ne8076C@kL!H?qI?If1%)ptP=4_QB9>F z%Ubu5#riO@13G8AcqjN`qoU^wORbA3?rNuX41Gw}5V;YM#Ykz;-JBbyxV_vgxi(Si ztrb;RtFmFmT|@qZ?d|8qubdmztK1zM#iC0%xD3Y+{u;{7vM@5?e!gHC$9zq6-TR8DaDIeb@i&0{V%NdC!d=H}$M>?f`o7M=afvZPOM z85gyc4(=lnpv29w;g5g++}GHcX?X`bM_#m*!i4gzwkAj2d__#_YCnEG{snsg^_m=j zH`E=3`jGz2|BL$iQC|`2|3&@9sPFU7{J*Gg81(`F(f^C4LH)w09~t!n?*w)M3;-j* z1fc$3)IW^+fKmT1n&w;oFX|UYeZZ^!U(|ny`p~}h|DtJ7AMn5P|DyikgMb7e37}~X zL5%v6Q6Dhs|3&@7s1NvG`F~OQUSKX&fPT0#I+R3*ZX4 z0q($gzyr7dYynR{y8lmp0~UN9z8Wcr`f6Qa5AnhtmICki0oYUg;F*^Ouev0_4!;}% zFFZGVl7wF+R(|D%{VuTbKNoy+2!2KXlUULG#YevZ@<(pz@-l>0uK0pcec0H45C7v9 zWXrn$amBCtxA#BJeB3^~^?eu7>x?;e-1{^7rz4zVU&m(9shCKfqfoDQyT7rBW}0$< z&GhxDtI~OenN;pgwO#cL#3x)!xu_j&@?7o{2Q-?M;fajbla|}L_v9_%>I#jglztpI zl0bBwiCyrV4sYUlqutI!5mzaBh7Yvd&5U^%?ZUp4tTt<6w)@_Lw(XU{2o{rJc3!R{i$`KWIN_z4yPpZDel#mQ0IEIATJl22A!)zr zN5>0)Cj3bG(J@V;ulmuk%%2IUesm}aA6RSoQJrL8_5bSeoAvs0bzJK2Uw;lcY+2rw z+88a@^l7=thN=Bdv&!|V+kFJwxoKm*W0S4cl7lvV+odLurVQ!4M!zUx|Cy_;_vMmY zD~?@bh_u^w`-)q-hlBc_tO3EZ#I%Romzdc?UVZG=d}5wzY#+Gi`k@BPjeT3=Zs%yU zn>#99BH`P3%Tdm%CxwHUM@1w3^K7-F(@VF$ieNcX>d4zqFF)@K(#-s5{(ZIRYW+zH z_V9NY|6I49|1;pdH9{`&pkq@GmDu{I}*0Xtij|@`$ty0XlE@rzd24*}3^MyKOHCUu#eaWi)B2YfwDQt92 z9nPqY9wF<{ydHP?U6DpdCIwF&|6oWl&Lx(NaUBce*!E$^8`hb}qme^Iatv{uOqNXa zI&>ZqF%A^+Lh^#T`tG@lbw|mPhbvX|KFa&A$z1-askdrBxa;<_KL6&=CKmm7>}Ph! zVl-paPW7tVp@@bu)hzF3rCbKLTfx!BB3w%YxONww8L|k@yB0s3d-S|sR--5FS-|~} zHqy+UhZJ`@C_N8&H!6TFoKuI(KG#*JE2^#6NE_IrM>%$ia0jz*_K6w-N@Fz^o1G^O zva!jR={2Q1TwRkZY7YePXt!pnls|d6E#PPfPN1e;_Beju-B&8!v-+o~9M^Wy`NoP? z?Pmm>O6%93@4x<_e$t-_Khpn|0)?|HPQWid+Mm^r`m9mE^jiDB=-gd$sBh6A_$B(` z_a7<04rs&ws(=5=Oz0n04|BCQU=c!c)DG5Kelw6|{;Gd{{^Fm`%>3WxFU}50bQ^4Z zrgo%3i~2g#-Ih8Qs}Lbv<)A{rnb>EuZSE|0Z##F@+1$3VDD{fh?tpud zP6qi$6EEC1x@i-sx98g)?rQyqo=@xb-}l#l>*xOupa1jNrK$C}S!S+VNNz7?%PteB zgtUkI5|F1wbP&zNyU~i4B_!#eDYR{qco#hF=1bz9h}0(?$ajvr&c|+5Mkl)bTvu|k zOW0lal#oLrWtCQ0iF--q*nSlne}l4tIkg4tanl=yb2! zbZpSPP}D!}++IHlgY$+h%N3EkKezDZq&(_wsjm6HcKE9OEUvd7*4y8|w*5V`BU0hX ztMowoyiH+wVH$T-N0r)SSh;IlrbWW(6m4y^&XeXJaTp1c^V#IiZT8l`+KUJ$;8umk zc+^12X3_1BX(STfQ?<0FM_Ca^RmL6KMa@BArjE}|aT7Uz(Ai2UVmiRxA>sXeb7Zo) zmYu}LyaUutcP3*L@R^LTZ*J!Cd&8WG>&b-sd~@)lb!Ln!8+Lz&mn-nQiv;2|ic$NomgAT#VeTdbkR97hGrC zxz7~P7dB+DyVOZgJbJ4ct!BoZ9KC^Z65E=xzwa?oQ~Bjm)g+38VA46?*u`#(HCum88XPHQdyP0)|`RX^{~>&HUpW1(}g)~f#=$Zq_q{~~<81fX+< zu0ZSwcmY>|Yru8D8}I>qfg6Ay;18f_0w4|qf`D524a9%AP$HJ5&$$!62!?s3h)Sc3_Jl+fi&PLkPc)3nE;w58{!-w7svyi z0r@}yPzV$O#lUl*1VGcgfVd1O2P%L{pbDr4YJggx4yXrS0%)2Bh#P^|Koigmv;c2_ zR-g@N2RZ;$z6;`R;4RPt^a6cAKkyD100x2gzz~3@8G-l%Fba$TAAxaT0+<9o0aL&< zFaw}z<{%08$Nw|qk5lzjXF`@4^Db%f<}iAf z312(f9nHSb$i#SssC*~m^easx1T!5HvHz$ zOFF!abK<0K;srZ0w0Q;hZtP|4kEbNN*b)DB{&DWbV{=wL(VoicIX-54&sX>g63TD~ zym|80g)@(8f>uPPMKv=M?nbQW6F>WJuaI!E{+mDqzrksYpp$^s{U7W8k6$?cIP33C z$B_4umt2>dx+GptjyB`j%Y(Z~^D2BQL`;dS_uESI6h*M+PHfKT#oGPo0qreyJ=MpN zmhk~sjx@b|BFH(gLqM>IHh!YTi{qKpV<(%aoY%Wjv$D+|X?67<-g?&R-OYTt?Z*A4 z2;HrZo&_||#xaOj-*Qv-Gxx(o5xoOD2Fa372Uu(qKc8LF&UAlYf>q&CoYZpJ%2#WcP6*XCT>9K0xq7v=6 z>SClNOs6TMQ8}h!E2`cpe`>Dxxj0cJIg3h&#^c`XTVVs9Hmreks?QTDH!sP)byfAi zdY>7wEAJlTYom+%7_)BkU4C9#Wprz?KEv%;|r~ za=w_dOu1ZoZHhx_RC!Eu)%P?r3A!v5dwDdoqtGy+i)HNIh(x zZ?MJ1W5lsjd&VATE)-@~pR%uVW6+LG^4Yxgg|-)xu}{*_+!Q+L(Dz8zwrifIvcOzh z`6sOB%eW=lew$ynpTER@_ueu4jhelp09{5$l&0@+VsZ)o^`y#CP4LMyKv z?e-IeukSbN4efqrZOL$>v#Of;l~=JP+>CdQM%n(&)I$E=7L_Nu%qoEcuS-Pl-Mkpe zbN{45uU#E}AI)VAJ+1}|2VKVFzQdUzvjKAFsx6qVCD#rfQ9W-$Sx>Vt5L%Q=d(~@- zHMy@TGk^aFR4HOAKTBY zkNDP3eYazU<4d^*_wg=J4&JLfc4J?1@xc#>#+!(o4xy8S+6yO6FUrjjsJh)@=-z=H ze!0$rue?uFO^-4sbuKvGe4LlL`goc*!OcKgqwBX5Xii>Y+BwPf#G!L?#KX9j<@)(< zHqHPVZARo%pmTkH_M$mq_`L1xqEMJ}e@j?a-^-tBd!Qz?+I}Zo_aCj>&#!I2f85pB z{o-!c^)SsQKHN*sr>@=qRD2oN?54>9VcZQwbi&iTL1rI&MD-6sNg$o(_r9B`FdICe=+#JW64ujy!Gnj9C$F_-(yX*$Ibl_Z)W+e@1(R zUN1Ny&TLz=g7N3UTm!EN!<_mjAEK6m5!Zk6vaX*0f7kmr1b@E&v9i`P9b8M-+W+bV z+12}x(bXecYcTdS&)S_XjcOFe@OqX@6e9}4i~ns z`eDDVub=xjT|XC3XF?()JEW_a(d62wvk^|b)tD#FHpW6mimEx+Qvc}girvAFEFKv< z$4Q^q@GNla?NAnaC*mC8Jhu+MCE=37Hae!)jLkQm7p2wiBb8x1OmAOj`{IZ|n=;L; zSn$)H$N1$jUDb|`JF^3J2Yv9?cyfumMm^+Rq*mYW zReZad8dJZwLB3jlqU#~7kKeA3-~P(+TVe$!u`SKh{Mq^2ty4ylQu-6gqbjoqsc9@| z3^T09JBP*J%&R?QdUm8{-gYT^*paEKp&EDm)X6Ogn@e^Ew6{>tPuHc;d-5%9<0KhY z?&$F8_d4C5MM}@t&wAcW3hS!QM8q@oO>t&=yMh#6CBGXVOAFo7VfIinVusO*##(OE z5w}8-{^ikYdoO(Qb*Lxr)Rfoc4O%3W6|G;p6|LIO%n!D|(Ph&&0I)3g%ABE%5aR-P z06stf5CWS3B7hj!43Gd@0Cb)a8N^!wa)1KZ25bi?fgJ!9Kn>6Us5~9Su)aC66W9eX z0E_?=up3|oSO8XF4}hj&gLogn4sZaRziXlz;VVh9N-8z z0nUI6;0m|_?!bA#13=TSum7^Xe*d35nc#oB|81Ittaf*Pg}H@T!@GBP`zt2fn38R5 z7<>Z>-Xn{9$Nce~kHI?5X^PCltx6A{YUs+|!z#h5D3hU~d976;%b_Xu>a;)2?5+mw z9&8RvCWA7&ik-`RiankEJWglX%VPM-VmRXPNp%d2CPVDG_UmAOl1`IZ9!dAP(x!C4 zk}&d)_X)d6@wL~KU)tM$d|$0U>DSvI>;8*h?7tYnAk^AzBMEU5(ZituVHL?t`4>-Z zkrsaYLAYPtB2kJ<`lOKQ&WrbY3a=>*->rVrX_oawN-V)KwzbRo=&s;O9RMn zWOLN_bY_#vCd?fj5GR$2*Dx8zx1v_^?&@8r^xM-)OHcTO>!j3JwcyUFHg00hO>-V9 zPbQe}=K7jUww3LO5RACan5@7$FmA&a7$v0WIiX zz5k!@KcpYkjfS<9WiRMoU4M}O=k>3Y`-}Fq>6Zol=>2+V_&Yy8NbGqXb+zeT$81xx z7#yGL%XFF1Z-?>v1e^hfmcxm8q!s&{;{0}T>^IPv~nw~!AIcco;Ho(tO2wkI- zFXjFpCJV0Cf9v<(uRlNQPah2S-wadEnte-00AF34gZ)g18U{HNjMI3Bl3_8< z6HAT@89iiDhLvb|ys=Ann>?fHb~{<2=oI3PKpBQ~G67??a~lbcOAN*-UzQ`dTdlpI z+Z>kAk)IVwn|tULeoM`rdy#i=W%c*ja%Z1)hY@?1Gg65f#5{+ZQdGK@Vh3ESZ}$`X zI9?+=lw3E+x@rGDn`&z|{&%(Cx%}d9ss#%Am4Q{- z4IzIEcp0xeBlKHIeh}LDPm;>WA!sy%GM|F~4E{-<2&BYEQ>Ur=f6?av>DHE(36c?@ zX}i5{qG?S)54xwn-8v5VnGluvn*XW{J4hPCI{fy(lScRMCRExaoRrVI49j$-1V-@g z2=af-7j0pz>P98Mlou^6n)kQT%pgdNN(a@F{Ucuo*el;k@q)l+REj7&04>jH$k77! z9y`d{LXPJkXJgosZ_}`XI6BLAHO-ej@Xu!hnm2kUG9ow>h~|9;&Pof&cXdx&!?7^~ zE#KyS2*gRhNrTGR!8W1ijtR)3XWsvIe9>b>hUQ^Hbqm#to=FC9c6_S`l|g3-ugaih zMfdr)GU$;(XVM}K?^rFtQcxL_m2=tf565sn2vMMtL2|*UMmvy1&v{gi9dw_C*S9&N zXUH~Go|Sg{$rx1r^vdx@WlzED_hF-K|S|b&jE?~9&yBR8&_3^v)@w;C*em8BQ zH%u#~-V~{l)6N&}7t*f%?g|?X1*5iQP~Kd=A0pZ{$L`d9Bi5&RG7N8MR#_5av`{#F0e z{*@;ep;hUR1@M1;xBuq?=wE&Q#+sLZU|nDT;rGuK|Jy&mVJctyMVgZzF>5^$m77g= zzCQE36ju!gsnd;vf&q$MjDFJ%b5>>Mw=$ah^{f+IFC;1&?0kQ9>A_^=jKW5n^E<~$ z$ET?5DuvF7+4~qhq!!$!bWPvThH--(m9GVML{p2CVo|{J)Q%CQ1V*9|=Z-|z9V9a1 zAN+55q&q(*^Gz-2YLKhx_erWZ`N5^LR}5yg{#?I*aNU3KtNjPvQ6z3n+J)V3VUB9i@10E88@f_Gd$LYr3GEXKH6J!$NyPW-C3HfAn0@zR#C_lp%cj zw#R|?lF)k|f8WpiS3O;{pO4-d`FqKK^fOVf#qWDQs6T;rCBi0b#)SrNE>FKXq zv}*tB{`YnJ|Hbw{y<}C^cB3H5(VW7wi1gS*QrXjc#TvdCq&#YK$pglSxPclf8zA1oq#c?iEJ2j`~Cbl;_k?U(pArRXc=3R&C=sI=P`5E#I<>yDq| zJR?oGUra$`MVRT>RNc)lk&CYU41N$v}?$^=ylX@h6QU!ZC8@2_4nuuI!y%QRj9_unEZrr3q5{ z-&MsrSae*l_o+n($#+$trYp55>PJQIfI?_lZ~kjPsw1>m%vL;IVlXO>uBU;BpMOqVmKLF!X0_8Y0H9B(SC$pm&J=W~{Bt?nfj z6V{w2e>HIXu-MD0n)=IrcF!l4UFB1p)F%5%4`kU&SKo>yJ& z`>qQ2%dzL<=L}?RF|TvXR5n11Xv##nYL152g=#H_U4Fj z>W_?zc~yD03h=!%O2Hs8%le_;X-up3^H;S$)~`SRf3H98R?6nj{hqo<;K!(6+rLob zw^_%?G`Or|qI;mnp4Vf`oiVkpg(|h17iq2$Uh>G5V8OfWr*Nh&_2H(<5OdQ>BU43j zoX58>-pa)9=f~w1@*_FL!*AqB8yX|P+Wu1u7_Qq79)k@z_r-t*>;A`I?0=jYJ)-&$;c{D7|9fqYc0JO#6&(7A1<@Iq%&eVH?6 z4xcRHvju|A>O=qg{p>Mx#@S9Zhc4+DgMZ3lb(Y-k#~9F=V7t&XUuRc+nK}9UnPB_i ZXY`&HWHcodoq>hQ{MoEGRP65>{s*RO-fjQ@ literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/comment.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/comment.png new file mode 100644 index 0000000000000000000000000000000000000000..fb1aa5ca66d18aeb1093058c203f07482264970b GIT binary patch literal 620 zcmV-y0+aoTP);&r!)LloyM>R8y_162p|-W@??hppZ-4o z52CU0v0;D!Vq$;-y*|bicf}xv%O7_${P}^&#{~ca2y9C2v_w|vW`_T_zVH3-zr^4_ zHy@`tGGEo3Arho6udw(l5WffFdq50!6+i%i4N$6M=uTMS^?&)(qW@AgEdSB@f+E~J zV8sj!hCplp#5zE13=#tfAQq75htCWpxqi_MrSqE^UUxE@^5!s{hVj|X{!e}S`pXxP zy6n8db3p0_5Nkj^zz7gPU>ERZGW=imF6O^rHuHaUzN86*7(B#*wgRy>lm@#1Ab`Lw z`1ORLJ*9X_KF>9VWOV-XGYoHF;gyt{-UFl@kb;mAAb?;di-P>dr@MI}?0|gBba|7`;Al3)s2SBU<#7BTw7>G4Du3g0l5I|r97#SIj zkqr0)#2~Nz1!7P-0i^;?kk5da4T!%$51 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/complete-word.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/complete-word.png new file mode 100644 index 0000000000000000000000000000000000000000..32943e985ed8de7eb7b153709957715ba183561d GIT binary patch literal 542 zcmV+(0^$9MP)7k$Bmw`a zJ@?k3K+d(ssentk)8ef!g=pBU_|PqhC1{~v4s zNVC+_Cm$5&&pEjZn?HdD=rOEW^EgU>;rl;--Z4CX{)*wv8)k<1=({l>1H^zf=>gU4 zHa3+__Vm{J28{(Npm-nD08@tT+aFGjkI!1QLZ;#U`xgu;G4H#7{r!6hWB|yi-avJ8 zfC_Vg^h;3G0marMxxkm literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/completions.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/completions.png new file mode 100644 index 0000000000000000000000000000000000000000..8851b99ba1060109ab8387fd9254870480e9284c GIT binary patch literal 863 zcmV-l1EBngP)Mh53JODVWnpw>WFU8GbZ8({Xk{Qr zNlj3Y*^6%g00OH?L_t(I%axK#NK|nY#=rmEJLA1N*GDEB)OrZasDZh+oSvYeh-b)!X&wkCqi5%=xUSx|_F{6#zu1AgWFc?@DNvi{=o` zb31h=C3AB8Z6^Sj!X$=0S8gvrAf%45EJH13#vp`HP#BtSD3rqJ8l3DdD$D`Ha;MgE zVZf?F;{_`ZSZ+ivaM`C+Z(3 zy#C(dnS~`$HdpLVs~B>P!OCIcuN!O=LdQG1`sJDF`RueL>!EAy12@kc&bs9OG9O}C zlIXN&Rr?p0a@>O>s=)e6!>h0VgJY)~t7IxXFDosw6duS%G|xfRb@-M=47tYf&NZUN zanj`{?Kd7o1OPy7T|;7sZgB-3|fr;X0czA^&R5dAdz!r1Ht08mwZ p@_LOR#2;B$Sa_Y67yBrZ={HtPHeP&+9RvUX002ovPDHLkV1i2wZan}1 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/copy-to-clipboard.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/copy-to-clipboard.png new file mode 100644 index 0000000000000000000000000000000000000000..8dd48c494924874a088590a749193994d075c22f GIT binary patch literal 498 zcmVl*+}S4tk-SEw(HMMH$UOFgT8OyWIuox(>z|!eNT?Q)#FJN+p=4fyzsz3(&M5 z1Oj8QEH>2c<<$iq9`D@|1fH*+ou9fEhcV03wkV2NSzd)@nNYt}lHgoRaN9}vHG1pg5Cj3DD1s1zdc6*S;N$b%7N-)ik literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/cut-to-clipboard.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/cut-to-clipboard.png new file mode 100644 index 0000000000000000000000000000000000000000..dc9eb9a7ad3e9500991938d0da531c06f90fea85 GIT binary patch literal 807 zcmV+?1K9kDP) z1Hh-$q?nqWnZ{11 z1JXGjGT#nH5JGSEt3`W-F{81UPnb`417>0bwH3tCzhB0pcmY+{X4F+L%h_RSnk|a_^$fF6B>ZO8Zd4#b& zIcbiYQS<4l$&8G?%anG5EK?xFunXWgL9J9WU-R-}CY`QnUJ$&B%*-pvkEGQ$e0RAv z4j($yFl({I2&EV>4gdf!007lmt}-!W5XkX| l!x~>C;!~(p=dGgX{tck>ItSb|!8`x}002ovPDHLkV1ju0W~TrE literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/edit-find-replace-all.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/edit-find-replace-all.png new file mode 100644 index 0000000000000000000000000000000000000000..8bf48cbddfd81ecd046b1df1995c2ae2f26f08c8 GIT binary patch literal 762 zcmVPx#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy32;bRa{vGf5&!@T5&_cPe*6Fc00(qQO+^RR0R|QX1NC-jf&c&j z8FWQhbW?9;ba!ELWdKlNX>N2bPDNB8b~7$DE;UJt{NMlp0xL;GK~y+Tg_B)R6G0S) z!9?Rd{s#YmiHVnb?JW|cm);0LYxK^L)^yI*m zFTcU@SYm*!EtMrj@A*SKFES8oe=-5@h=f^b18?(HtZw|k@LV2uqwg3XnOtB1GFRmV zWS?DQV+P;{I2h02cI=Z5DdEWrz5U7e%$!@2470kK#8RXck6g{a4S*mxA%;XIj-^&$ z59jdUd5+ER4fM0>B zPs8IANJHj2fPw&;wrBh1G*#*EyE0bN&o-=07*qoM6N<$f&;roKL7v# literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/edit-find-replace.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/edit-find-replace.png new file mode 100644 index 0000000000000000000000000000000000000000..6edbef6145d36c42557ab8ddf6c4d3fe635d04ad GIT binary patch literal 776 zcmV+j1NZ!iP)e`3}G0@e>1bQwMe(jEWv?R(23xniG!fHG;ttONr|sxONv@Sq(l&ciXw5X zL=(g|648T8eY8YKiI1J7MPgf()NXfYKe}DJJFf#fX)jLx$&)T4&ykbYdjUyqZayIe%^>;0FS}?m3e!eJnU;Km-E&p)Ev2?U6I=wMZS2a~h~; zm3BU#p8#mOWwUN+vnYy! zs;Ym>1z=AAD2j6XLd&`BLWl`d6ibqve}~88X$Nxr5B&yt%^M8Py{%aQ0000Px#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy32;bRa{vGf5&!@T5&_cPe*6Fc00(qQO+^RQ3k47l1ttBhF8}}l z7<5HgbW?9;ba!ELWdKlNX>N2bPDNB8b~7$BHmT?0B>(^c@JU2LR5(wKlS@lmK^TU| zLiXlI)UCL%-C8yN0*e&7kfu;bjJIf-E+j{d*2W8hi(pg`BQcezc!Ai17X)pBK~18K zQIwV{^+JqdkuD^8{pN@v#~e!rp3Rx>d%pJ!GdYd{doX?(&u3XIl}hC?)|p<*N^M=A z6UcIP*xHaW=Sye1B)Gb|{4cylQSgv}3w*xsitxQB1y3c2M1G*TRglqQ6*7N8DS`W| zOKO}H{ctUWF(U53{cS_~W^AZ^D?5ku1ZML`==C}jy()s+>xaz~#`5+F)^^V^DDI(m zA|Oc&HTr^-Bt3yvs|7>`1Q?3TKj7fcHBRIIa2&hA`hE;OGf~*50tqfj2{dITNkI_6 zr*kk(f)ygfP*rcnuk*h+Jh{fo&KZW6exlhGOv(hMnvx_;)X+}Yi7~=U_=qTjq5cy# z4ldx|i(w&n3SlfHPf)5UPQXCLO++^_L`)D%#OA%EQrC#B!#JFa`{a%W@6;K*cv%=yt8+m~Bw(XP2Qkj@=6y9f zJzEgmA@t7%rDo@-Q=+O`7gc&b76{bb%aE7%eD(1~>h9^n{Jb|Mv07U)E|!I?>0}H^ kmnaFcc+~6}mvFe?4qrVP^7p8@NdN!<07*qoM6N<$f(0QT&j0`b literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/find.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/find.png new file mode 100644 index 0000000000000000000000000000000000000000..d072d3cbe2dadb1494f77e950952123813613677 GIT binary patch literal 617 zcmV-v0+#)WP)4+SOttuFuo0rp8m zK~y-)osvy!6Hyq2pF7DUO`2wgN>U06wOwc$MHIn>xD*Oicj6|$z;CJaABeUjK|~aE zS$9RDeGK5zq#vnP18H_P9en3BbiKg914X(U4?fX zv=3%78D?M10+5(X0MN8+cL(3TuaZiqIeKc0ZN-aeE4XBZ)ck8EZr_Z=qW7OQ{wVDZ zG+iT=PIKtw7@rGX1_uI+90*bpKD5zs{F**C6zm9u?EJ zQ5_2JmL<2Flg761XDbP7v)0}Ku5Shi%_G^x}q%2kVgpPOH0wIvBfN{N(qOE7M? z3xuFtwW!u4n_D&9s)POg9;6U0U2p=nX__rgY-58pql(|7qW8J5Es5XbtmWcc6+03YVxryf3dbXat2*wyQorvicCWHaaM z^${Ko^E;cZ_ht1ff`3FT9+eG|{}KR{SUhS0lnsNw28{O8e>3MU00000NkvXXu0mjf D_c;L2 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/go-down.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/go-down.png new file mode 100644 index 0000000000000000000000000000000000000000..3dd7fccdf06321880f69d65631a363e4b813ba04 GIT binary patch literal 683 zcmV;c0#yBpP)i}4~9FCHr5K@{qtRq-ka(iJ?ZP=uTm zA)-=KTXM11RS2~$6nm&uv{cQSuKf$?CbP4jht?XK7~kVJ-#qia^UW|KLbc-EY953z z>WRV7dqi_}NvUZfgl}C)!*&F0M_|b+V97E80CykVr~%gk05Haon|Y41T|%KagO77# zXg_$ht|?xxSRKlv`0H+L2mld?91sx{?rsQB5|>q-9K_b`yI?say^?H5vawt?QN0%L zQr8VKjyDQ9NJT;|(TgXq`xKW7BF8I9f|vxjL{S!?dO5hlaQ@UaF9;B#f^;@jnqQnt zF(N{uTTQn`k0*~rlb-kaSCCvlqKp-L5!3TI5NItHN89$(7@Zg?Pfm^Zz3vh1d@XXv z%dw2{#h9WC`nbQFn~GCVFR$PcMeY21IKx0j@A8ZjM9Y6Ue=LTlryr z>(@2W+wdKbgN~t*f$yfVK)ah_*yWGG{JKoJQ9bX-)!YpMx+aPwk<4VDSzECWL8lc@ z`=3~j{FA#{Y~yeIt$3GuF4Da7HUP}#KVRBt{l5SJIDAFD4*5 zl1oTbVI0MO-{a21M#B_R#9l-oXcPp6(?)2~B7y{4Mu9@O$#RS~LMu0okc%jC6BNCq zMPfd15iMrWDWnuP(IPA}ow0!)<9P4f`?UyPGZWN-v-$pq!}*{8hcSkHhP!mEu~WAd zo8?nd1jeIrclCk3aF;a@j#!~$nl%(P0Jzf98$5aR>}dqE;fU4n-v&x*nhu}wwKrd{ z4f;b9;fU2%OeY#6`YVQ=TOJkJo9%;vsn26nmF>ePxAA!V*2;(ZnPFo%AB#FaHw-$p z>A83xDHKX5gpddX0EtgSc(|1Lcd)Cxp7`{*Gd4M}fH9|HQD+7~1Grv}*vDrmsZm0K z5C{Q60m5V1o+G_9&%wGQR!!BO+NWc8C&Ce{BNlb~H9*c=C7oHocC*-S7Ns<$C1sQZ zLijB|M!48sj(1C=)P(9pYjao0(5pv%$FEw)G{Dl2Io>Bnm(2P=eF~WywGEfv2*dEE+1BNH1p0gO_(!va6Ym6#!ZeU0XL$ zmOyFA$XqYlC#eqYr*8WRCf~&E#M}5+`DMhod1o}n6nu_w#4?v#yZPlMNv2Zf#pvLQ?bsc$8%}?|wxEMGI60fdRAO~{ zc52bv6uF?Yza^+BugrY=o*FhT7dA)!rvyS0Urwj)#iE6g^YI%&-U+mBcICDJ0000< KMNUMnLSTZVNH5j^ literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/go-previous.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/go-previous.png new file mode 100644 index 0000000000000000000000000000000000000000..659cd90d7f80488a8a6a2c12f6f9e5ad98720461 GIT binary patch literal 655 zcmV;A0&x9_P)_fWZPlDqB9?#%D^>oA$FjP8SXdVl!5?|TnYO4RbBH?=GA zTUy2|reO<?=@r%h} zW6#cJQfPC~s>mwxzQ}>D!BbZalds_8_h}r7_JCAa@f4F))r6lUrCf(hQ;9=;jU5L& z+1FnmP_XjQREAhnABYqX00}@!0U-tMq%XJx@e~^h8rvWApSa|&uWz9Di?6_?1E%N@ zl4EB68Hfl3f`qGnd$iXb;n;2VsHt)P`R?O`My|Agci-NCF&}hI2Ui3vQGjU{P_$N1 zwo6b*g`Wk{x;wF^0p~U>`wvX#H%c-OZ~=##s0b5Wa!4-09SO%4;Ep?Tu9$V#I5TQr z&Mtkq{`h6ugzb~9dlQg)8A30C1pt3Qg&t7B3bbY+H`>YWThbX9oF#2!=nK7F-=6arTX3U&+XWy2~<%(BYwFX|c pI#R>7P%^)q3wROKeC1m2{15 zlTT<9K@`TnH@h?0jfHw>O#jh>1nt2m6SAzrkW<%*%=Q}tRboP9pC%r$9&(LA+0sq)ybQD9srhR zz3Fxu)^6aqJl)?FN%nOeOgb)4?+M_zJQ@)DvRBSb2FFH|!GH*69hXP{3*flC1BAti zbJNzAm&ca3iTKDR3xq|-Y2`eKx?tij|4I5$vH1yqf%5H^Fb8J54jK)5$VM-C5%i8b<|k&Kxh=#FG>Ox&>r z4?sb}hlkg>1-vahgJcyDBP0eg&{{(&pkA-x@zeQAv9vj35<}`!ZpEItce&w-qk8xH z6RRw9@QrP7!N5#{!3lE@ZdYYZTfgiFi6Lb!&3aDLCbZTHrTP~zgJ5t59%w*hOo z(kDN9khkEGrH51=+k9k%f^zz*SVF*`y(c@lkVzfc%kp3`cZ! z_%um2tYKWj`J`TeZKLu>Nd{vHTL#B_ik1wH>lzprF$+A|BekMF(a-HW--+24jGGuY zFtA9na61G@JTPTQ*(4Rhd`9fcmxl9<2|F9P9h&?WcQP^T6jDp#5498qx{|@u)z4*} HQ$iB}=h{-K literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/highlight.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/highlight.png new file mode 100644 index 0000000000000000000000000000000000000000..fd9e6ec52146f6f9dce5a687d4bf9e5eea34d9db GIT binary patch literal 482 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*fm;ZK886+f`vVkYFY)wsWxvY9Ca9u#?&jJ!ppayVYeY$Kep*R+Vo@qXKw@TI ziJqTph(ejMo~fRxXV;$xKt~CCx;Tbd_@A8^=zWMmr1ic3cl|FSE&?o$0!|7dqOOe! z9)?oVv(NPAZnM05L&j?EvYM6aH$HTBWk2`$@42Tk6YCecEnb*&wlQpMh53JODVWnpw>WFU8GbZ8({Xk{Qr zNlj3Y*^6%g00QhuL_t(I%dL}LXj^3*hoASH_nc#sG-;dWqm6CW(4s83b+X9Bt0|~3 z6mOI%-9=?M5O0K`ptn*G#rs`|6-PnD>5WW=H?uIcvzCo^E3WHYKeL=HA5C(SbCR6b z3)#f&*5~^FdoKR`eu4)${@&~<;4NLs{R%AQ`wgX7&~)wW+|1M$58jLW!S}zMGrL#P4P+<|J^kR=q!LjUR<=1mzj7BLp1miL0MTgZr{|x^iYGDyl!|!#OL6OV`f;PXlOge)!c#$#{SGXl@)s^XbSCXaYk@OhXc|B#CG* zL-81~z96~mqojuij=b@~*=YbR90{B}oE@c7E^@~W5Fg%$Qs65I} literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/indent.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/indent.png new file mode 100644 index 0000000000000000000000000000000000000000..6bad6bbacb8d7eb919713468900e18e862eb7e9a GIT binary patch literal 435 zcmV;k0ZjghP)A=UJU>M0YFJa zK~y-)m6PF00znjozX|t;=>rJ5K7zeT)Q@_FAfk|VVosaq{q;>qTKMYe`Fg&u=RJJyC($356xs|}Vw3A_mZXdnfM1AM?O@XRKXh#UoE%pQ<_<%Dc?Ixq|pXFwNz+m1KNdX7%#q)(_5Ba z6CJ4-v3q=ttEUf}(5~2ko2EnhUF_atqNdCQIRh^c;6{lcn&v!Jd0uMl__6P?bz;}M z2JQS`3_g`mucKzORxaT(+!Ev_Iy_WrbJMgwg{++=at3EVG_eM}6KZ1U8I4HS!OsM3 zIrL2L&zPhvvKFfC?i+vGr0aSM8qdkor$L(8r`*+3ny<~F{OW8v5py7Y86-1!k0%uY w17AluS+MViQN9zS{34HXIG-u3-}u}027y}0CHzW)ivR!s07*qoM6N<$f~;%cS^xk5 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/paste-from-clipboard.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/paste-from-clipboard.png new file mode 100644 index 0000000000000000000000000000000000000000..24588a3a4d2356be517b0e066a489284f0326842 GIT binary patch literal 561 zcmV-10?z%3P)FTwJtjVg%6=aCXokI21)~9mK^!mx4G5j`|NYgS(rkOVuvAI4O}*sL@D5 zUT?|aXkli7aX_q`X+NwHimYrk&*ZqAx3 z1|BMmD;{?861m(FJkJ0iqO7cZU|;Pi1_5ZQ>aE8wSu*oyiTIugE}S_S`_jqqF38ff z9j2$JFlHMdtgWq+Ohh@F{LG}k&a>C6R#a0FAm({yEE@57U(d35{}DkDP^nZxtIf?F zB9%&U@9u3bX1*b+F(4Z0|J2@sL?VHzFf(&(FdpLZI9q?fsp)w=fNCfkmfyS$y$ksq zyD7pDoj#T4A6yV|!vVTWVS55qMMcP+JpO+Z6!JMl1Q9`1u+}m$ksb}u-zd^;ZvAMD zK7okqL8@P?G#d3CA%_72HRrm3R?E_;*C`gy58D)P*aX&YQ2Sm(M0)=9`Kw%>S{}Z_ z-Z7;aG)bp3q|+I)*~3`7fvRw0;aacRHyQ$LisH0h#)QuLQNI1SZtsXO8U^GGfgrxxh}+}VkxnAb?)YabMHAocX%9NxLrB| zzyY8MfO-Y6yO;d<*y~_0mS+_>8utCg%c)OS>fRtAV|%-`d2TE9!@1|a7y6KHYMyRt(@|#< z{cBq{wZeZJJbqvRywOcgMZ;bX8R({V0eC(qv{bfm zby!V}<`4o^j$zq9DScbv%ILiw6A^$HfESPQ`SbEnPO8~uyxOOpbRU~FfUe28J$qL8 z@C5Mk;kD~GW0^Bpm31snBktM&3_1-q+s@zOgv6zhyDTl6DE{o}owMVUv2>RDuXiL` z4H7gMZdG_i0!QlYIz4!@dkqC(K-FfCk4>lJ)_b!1Rd%EVnj)wji8Jm)7Zot;7MWwG z*gs|t5o;aT9wf2Ok6$@g1dX*be!bT##gp?c3Eq+E#Mh2RWxi- zG;9IzHaQf6fo=!vH>>VST}Z(FqG7KdPT<2cMZ+#dZlbEl2Y?p^`wGFq1RKr0vRaV6 z7^XIV*yPVOq9g;1-Im=i2krW;ncR=mZuykZ)veF3J9a;RB)EwqzyeSOHl8Hi?*hE} dMW^#GgWuOnx&>a(HQoRK002ovPDHLkV1oBE0Zsq_ literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/reflect.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/reflect.png new file mode 100644 index 0000000000000000000000000000000000000000..01cfa6e961fab41fe595e5008c187f2272186695 GIT binary patch literal 673 zcmV;S0$%-zP)7cD6vzL3*ji+1ZEU@(v6sepG0{e&F%Viqwi#L==eN2fbKr zOk>oGmnI}$xN+=_BR3+k#n3E`k%isGnc0PGsgwM7UNUcf^WNL{bN~#hjOwm~vUD1| zwVJA0wnQDe5{ZP+;Rrzx+N#xR+xC{7$z=9ZfQbP9`2Btb+my+-PVf!P1tZMS?Hhub zGm^6=bwH)^7e4nYvf1oG3g8H!N&(HLNG{fyD8%o5&Rz?KkD}fXAW1R|20h73kI8Fa zk;~H=kUb+!j8CTsReH5q$aN#AcaCUr!IZ zNwYQt5yPVk6s`bVE*HP}aVOx+u{euhIX!_l=^u#PvtrO0w6(_DoDS-6>XS3O=)UmVY|2G3vn#DTNL}XTF z)Jz(+cN2BD=8LFCBxNTTIm!wM8Jkt0FhzD;V>#|)C00000NkvXX Hu0mjf5cfCH literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/select-all.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/select-all.png new file mode 100644 index 0000000000000000000000000000000000000000..f4b0b19e0911c64b51a27f62439117b771c89a2d GIT binary patch literal 441 zcmV;q0Y?6bP)5 zlRZwuKoEuBShkdo6Ce-`g&oB%5D1AAAQ1N;1q8tjkfK1KNiIPN7oddNiR2Ov5h<~E z_fdp3{)rVb&8)pM-@G@{3Q0UZ4Mtk4OKcFX>yB@(@46s~{@~tdt!a#*F@{=eYOSf1 zqEd=kmNCmRrfJGFO}SVs_%Q4nl5l^40st@X2}ET1qmqkpcDR%GSO7!>B7!7IO2xkK zV>+FdzDri@f#k|*B7z_Yns?E7Q-Rnx+21PNIsZ`*$1&nK&TTd-5E1ykpBLKVPN(xX z(Q%pq7E)}k=0*TX0KjB2soAg*MG+jw$!k|yXt&!X1sBJAc>Vao`Oz-kKEKy1r~+;C zY&KiDbCm>MlzSK^K=cW00000NkvXXu0mjf50ACM literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/show-abbs.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/show-abbs.png new file mode 100644 index 0000000000000000000000000000000000000000..7406c9566fcb208134ea21938747746f7681a39e GIT binary patch literal 410 zcmV;L0cHM)P)j({110x@DiRe}5N9?J^&qz*kqUv=uyfAPwaH0vo_1Au*X-RP;{frAsSk7#TJF z`t&K)I3vT)x}@asion1Up!|KG>C-nqK6Z?EYgX1CIXk;#uSt^*0JZ)A8=w&oVEN?u z@ng(vYz)Tf>0Vb?uH5D`V}^^YmDTt8c6LXZSXdYsnV1+}YVBdLkZjMlt*kr((hS7k zzy>t@{|^c%Hjr=7FdG!JK*Q!=cOJv`(n$=KAkF9oZ~!GA6Pp5oh8O~=FI01Z5RzhS znn9QesChR~vo+NJC}F^dq?ip2gEhlk0K|Vl(FZdG09=lS^_{}s`v3p{07*qoM6N<$ Ef^o*L0ssI2 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/surround-comment.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/surround-comment.png new file mode 100644 index 0000000000000000000000000000000000000000..8c2b0ce4fdf1c4e3fdcf3d63ec074c438be9e5a2 GIT binary patch literal 631 zcmV--0*L*IP)oMqIz6^Yj7pqJ)FdfF;t${_A&wCVNU&bc11yB2le%kg-A-_QBo-}#*`0D2|^o4fG; zArm!-L>k;vEEe|3EiWBUIN&)SS)`YBR7+DHwD{EH1sl#^zV>r81nZt9Uv87O_~Y4M?R@g2OSUm=mv(N)}GnxH8j} z6NwBaZ_VI)WsTJ1FeYz4M>3gg1LE z=WqSqxo(LL0#G}#m#B})z+Rff=FUOmb!-+}Z=r|i5K}kXl>hORTl+MXz27}&PMJ2* Rw8sDd002ovPDHLkV1oYgDrx`# literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/surround-debug.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/surround-debug.png new file mode 100644 index 0000000000000000000000000000000000000000..39b906d0f46219cb6daf880a2c307ca421099651 GIT binary patch literal 626 zcmV-&0*(ENP)(=Ixt40R5`W>fDF_ z51B|LYAeA5wOZ})Pj9>3Myu5_NDu^r9SVhPB=kT53=+V;)9LIzMi%KoGCfSvzr(9* zU>IhUEbJ+OAp+R#1{gORLCm8h!r|~)V(cq`VFKVafGo=h1_MYWUg$8EUBkS8MhAsf z5{O2lD#n$1_Ep z8}&LSuibzs{nYPoHreoI{S_vzULtD}mKL8OlgV@d`Fx)DdZ+1z?8_XsNZQZiPiVoK z%_c@{4t#EG;GF#o1uooqid-(&0kAB~`}`j2>^Gex=_cXx-=g=;W{X(3y9`16rWesS z7e=8_=m65`G=Fb#R=w|OtiLVe%EV>7tG~zf$yt1Aye0)4)qkaTW)-DUsRKwRll;>C z+vnR<*$rPBEeu~>``1m}JS$-RwZY$yqC7X#8edLIl$B9Yy{^?SFi zNf`v7cj6$?2~}qGrAg}CJ(PHpI=8jAFhF!%)iKp6|KllZekGNIBQugcnZ_R__W%F@ M07*qoM6N<$f_l{;RR910 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/surround-if.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/surround-if.png new file mode 100644 index 0000000000000000000000000000000000000000..8391c248f5f0fa284610a26ec5145215b7a56176 GIT binary patch literal 628 zcmV-)0*n2LP)j20}_O^g{?s2->0v3e_GI zqXj+aK@UPD>4wr{Z#MDPQ;(@$HZ(NR)$QAHKe97Dau^Y{LJC zMCy=4dGkP}QaL_p6-5#4cH5v{- zNlj1o*7M5qJE&H-u)eX%)`2%sgu~%6TKr{za=9$HTrQYQz4~o$f5!c(2?f+8?{6_Z zJxTxWvb0_;Zy*|tj;b{nE*6V|-ELzcr_-D4kZ<-0Hq%+m%`F=0((e4i(#r_q@wi-r zV+P3Q^Mc3YW**Jv%h;=bC)gOve~14{;eSD7eML)aVg5am$)pa*X0w9V`w)%hKCIVn zV*mF~)M`H{MZKS6QgL^>47*MzQSYDE|pe zPTkRp>zfH8m&@sZL?R))n15`%Zz@)^*}!${E!6g^l+uXS2i`|(C=?1hAQp=W3yV+n z>yvt*e#;G1w?0uSw+#*Daj&9OD(SZniA01Y|ICTQ=Xaobtq)ursCTqJ7z%|#2j}(s z>9s0(5J2n1LDCgPeacJgD)Z?f?>8&6sJ?{((j`Uxicz}YDXVrll%s#Q13Q_~ncIB; O0000+6+)oG%~)c!36dLN)-O=KufyFf`OnV`yz{ zRR;=u1sT8xG~gr50FY)TCT6T2|NZwV*pTYVDGXg*U1~ticd!BL*RTH=5Drj87?P4B!8XI>%1S0N^!N9xz`}rU)v8q=LqdX4G{1TCia}gVnPKOy)eKI~Rw!~s z`4btYOql`-gP&jnmM&fTF)}g~#jjVdU1iYIv1Yhx z;A31|I7)!+-Ls#;-7S>i`O6CoA|m`Kav3ST4D;vDM;I`B_Uw;I$q^{F%$>WK;o8+3 z3_ZQo7%`C?-_5XO$r6MCQ>RY-n2{Nc5>+L|^$c3tDh!E9!6=$RI4-J_Vdct|2m>Ze znD8+tF9xpp&70Q@lHvvo+jlNtaCWgk(F_8Sp)CyS)~!RtLU(uf$HL+`l&C^?HcT@J zgap(x0MiaU9q_ibwSB^t-qHCm3<5v{;3<&{h|002ovPDHLkV1k|2_c#Cm literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/surround-while.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/surround-while.png new file mode 100644 index 0000000000000000000000000000000000000000..890e2fc39151e69ebbf427c8d61f8acce2f2095e GIT binary patch literal 633 zcmV-<0*3vGP)xm@1=b5)WgbUK{@wA<~0*zfnBpsjlSW&>0GTGJ;a6B--tEQdO|IxdDr123@(OCCg0NXqbc~*I8wcA4L$2Mo;(d zV4_echz`e1mQblw@Kz8IiSVTA1GngA^XDuV(dlln@yf$6;_(|_*I>usd zfk!r*?Gq#t3Gx1tTfZ#T>WvM0i3Vn-XIb3te$}7Sb88Lxe7;W*i^as{2e;V)o?he&5nQF1#~tp5-Ulw{DvHHo{}saFu(;w~_^qHEY@ES{lHsriK)s{)!FVtj z-1%F-563;IMg)2%juDP(Fls+d*8H%k`wg0xdVgV*a74plZBhBhSMIH=rR@CzJ6uAU TMb*a900000NkvXXu0mjf674eo literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/surround-with.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/surround-with.png new file mode 100644 index 0000000000000000000000000000000000000000..d4f01a6161faf11a2fb76c824e4bc8499175161b GIT binary patch literal 450 zcmV;z0X_bSP)o^Cq8JE8osEcsAUXu$-{W5piqJuV{(+!F1|2#Cb*O_UDTq20 zR8+35Vpf*6eWzyQshb52eCF-Udwgg1y*Hfwb8uacIbjDtH&A|vtAZl9ZB6`hKOA#mI%5QLooL!b@lVqf~jcTEB%b`61aoq(7YmzG6f0d#>A zFa|Dw7aRcbo1;eWO`a@r(+)CCNfguU{DQc_83+*H zn?wj{z!wYz*lIG)n*`(yD!@*BI-yE@nI?g$nK==31p0x;q>NX&!A={S>uV`a zZ%~$1u$c%L`6vMg+0W1_7~>xFwW`Y2=0?OU2ej*yU#fCyRt011g9xq4?#?!E^%la3 z#Nl`-&D#p-l+vRtmLI~;avsZ^EB)a;cp-2} s1zfO$pa)nF&b5kiqQh5!Hn07*qoM6N<$f~YLPLI3~& literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/surround.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/surround.png new file mode 100644 index 0000000000000000000000000000000000000000..d0d333169c47f70a318776649e1e6e2e286dff66 GIT binary patch literal 448 zcmV;x0YCnUP)_SygM8Yr@>vvabP~5OPbAQlC5dl z0Un(&KnwxnWHPxLhAzB7)C=Y=*GB0RbX`Bh4_^!rN5Ciykey|a{$hh+7$<0q86bfG zA^?=qfP))y{+0G@L8VeTM&sK93i7576m!h^nSHMi$p9=!hbHK5&Y`+!=lMsD*L^8co**@$)Kyae5D*9X|PO$v9Hp~&u^eW0da zq2KTOf59|OQhdm6j4Xb@?P)BeF zn;M0&;3k4et3mubXWloz7kqH|-gm!y&Uf#5_ch?3=L-n(C}77Qjlk1?xxP4wQDTP3 zx%dX=xsP#e<~pK0AJGmbJW>HTodwF=E0*2?N*6$Z?|Z~Lkrk&dVu?AsN$P9Fu9wgW zRI0%FCveT&0`odta-VJ%nP|0xBG)l{4<&(T=ByBTifnR?y8>wm+ydPUW(;MkA~Q$Q z2Jm_eT#|M8P9a{jLk?4;638r)p#Haj`z~OWvC%hR+&EDQ$aOiMa9maC zMRPm14pe)7E2}+>*IFiqwCT0Yh$FD3vMru%10Hy$_B;WPGc19yB~Ge5A}hmGwtA-f z+g>~7O@R5s#u)&OXp$ic^aE21z>y5wXA9QznJX{|wAiOs3!2tiPjOS+uJFcX;6>(I z#lCq^-;DLsu1l&Xj#}CazN|kzKtGKb}-&In5|Xy00HCy1EiiSP0sv5wY6np`TXrpKpmCHr&E1;l75D^8HfH4NKND)LdpoK-i2tiUA)Y5d^ie5kUl- zSOh`vuh`kxYqQUJo6CL0Kn@;vw>vZYK4t^d;Nb{$U`s-tpTH-5HNtwk)6123c)& zGiN$kZTGM`Fj%lsnk@kJ9RcvuBJ+F7iI+I@ev~;k%<5#4xw2dh!6I9?KtV5-mu#|n zT=0_LlFr^{NDEk_CPH1iT0l-j20~VQqxxhn#k^U`{(4tc03+2|ut95D;AV#Tey&QC zv@fUX$hu7F2b$_0VN|WO{;Jh>R%r-{7@Aer&?|^aBL(XpH5AXS8NXsP@y{rOz-(Av zDcI@PO2GWj(2EK{x7ti_CH`YrA4ep_%9cyTfsTo^fcQX212kdz+;b0H_RiLkYpL2J r5kWXpE(=7{T2O56Keef=*#zhh0asVDr#~8{00000NkvXXu0mjf(oO9+ literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/undo.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/undo.png new file mode 100644 index 0000000000000000000000000000000000000000..8b0fef9a8319452009247864c41e033694859278 GIT binary patch literal 650 zcmV;50(Jd~P)kSC&LBJ zfVRcM$?V1P3B6PcAX~#mZX7Dr0E-up6>u&Ai1M4+$6px*d6g)50zul{6fOZfD5 zx^(<(+NuITAZTdtF*`7sbB~Mx0Ae$D>fg&k;5u>{h0Ft(%sL2>YF!TkK|`BOGW-0q z$<55rD9F$#2!Mm7ygZedyZydz;2gN<0Fly!zty-=mBaVpcsEVu>hcW{d1#Z{npnGY zBY*fjmK0%?8^t(;YR@+XG=oH^Fxc%lEVS$r0NiT$nf{@pT|4*Ae2zV-96O_3`)`13 k>$j#pJbyuT?P=Bf1qBx3B`dxp6aWAK07*qoM6N<$g68)pi~s-t literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/unindent.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/images/small-icons/unindent.png new file mode 100644 index 0000000000000000000000000000000000000000..1787a7ff480ef4c79c433a779bddfb8c1b7fe6f5 GIT binary patch literal 436 zcmV;l0ZaagP) z1PDMPpWjX5xmCdD*GGz^a$N<*WJb%e6hXCe6K7WZax@wtM0|~vEZWYx21!B^;UJ{d zX(nIbfV%HZoe@Y#QKD>Z2}$PR0DlGsnyn^w$;Lh`QL=50Pfj-|kQl6h zNxHvq-c-WRFr3RyQ~Xa*cFP2Quy*riJAg8pC<)g+qTvN=8Kks3)kFZ-b@06g!BYc( z+WkYajYt&t53Aq +PopupMenu = \ + ${DEFAULT_EDIT_MENU} , \ + - , \ + toggle-comments , \ + html-preview , \ + - , \ + toggle-lines \ No newline at end of file diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/syntaxkits/xmlsyntaxkit/config.properties b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/syntaxkits/xmlsyntaxkit/config.properties new file mode 100644 index 000000000..dc342eb24 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/syntaxkits/xmlsyntaxkit/config.properties @@ -0,0 +1,24 @@ +Components = jsyntaxpane.components.PairsMarker, \ + jsyntaxpane.components.LineNumbersRuler +PairMarker.Color = 0xffeeaa +Action.toggle-comments = jsyntaxpane.actions.TemplateAction, control SLASH +Action.toggle-comments.MenuText = Comment Block +Action.toggle-comments.SmallIcon = comment.png +Action.toggle-comments.MustHaveSelection = true +Action.toggle-comments.Template = +Action.prettify = jsyntaxpane.actions.XmlPrettifyAction, control P +Action.prettify.MenuText = Reformat XML +Action.prettify.ToolTip = Reformat XML +# The XmlPrettifyAction takes these config parameters: +# IndentAmount = int (amount of spaces for indentation, default = 4) +# StandAlone = yes/no, default = yes. see OutputKeys.STANDALONE +# OmitDeclaration = yes/no, default = yes. see OutputKeys.OMIT_XML_DECLARATION +# Indent = yes/no, default = yes. see OutputKeys.INDENT +Action.prettify.IndentAmount = 2 +Action.tag-close = jsyntaxpane.actions.XmlTagCompleteAction, typed > +PopupMenu = \ + ${DEFAULT_EDIT_MENU} , \ + - , \ + toggle-comments , \ + prettify , \ + toggle-lines \ No newline at end of file diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/syntaxkits/xpathsyntaxkit/config.properties b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/syntaxkits/xpathsyntaxkit/config.properties new file mode 100644 index 000000000..3bcbe61bd --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/syntaxkits/xpathsyntaxkit/config.properties @@ -0,0 +1,4 @@ +PopupMenu = \ + ${DEFAULT_EDIT_MENU} , \ + - , \ + Toggle Line Numbers = toggle-lines diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/completions/annotation_type.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/completions/annotation_type.png new file mode 100644 index 0000000000000000000000000000000000000000..52ff9d6ee2cfe77fc0ca73694a77cdadfc7c94ed GIT binary patch literal 733 zcmV<30wVp1P)x&Z(I#PaLckKE*>bcPKZcQ8D8 z`kWy@H;F+=NDwUf7vvqk@NAS&2M8dRe}DfdiwFxboH%is zAvr0UVcGJv47YCG1xrroZ)Lc5?>>W=m-S+K_Pe!SsX@#z|IZxP+R~IKyU;8|NF~u>CzR3pFh4mvUd;v3lkR-I5XK6IGj+t+V!1-yKG40Vll z3?&7{FHRlaCW#)6009K@uaLHZb+4|0VS=x}A21-*7}(g@;0kVBzroPi+V%?QwN+Oy z9L+^H03d+CDG}%_X$4i?NNyg!5M~w@0|o|0c9?>{fB&5Q{`K>Udp9pG1*(0HZU8_4 zF~V{q&=64S5d~r%sLNpB3lP5os(X(uDFXx$Bev|!2+IsW@Si|_2M90#Tl*7(v}@U~ P00000NkvXXu0mjfz9TMg literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/completions/class.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/completions/class.png new file mode 100644 index 0000000000000000000000000000000000000000..220e6f385e0aef0c0aa7ab28d6623b2a2b7d0374 GIT binary patch literal 785 zcmV+s1Md8ZP)FfD0{{dNhKZ}H zL;^MyGyMPg^7Q|&w^o8_5FaFt%>@7f#0Vl_U`d&9Am`6_>%2>LGyHyY87|H$qRX(g z$CcqbyHHR}*W2~T4gd%sxB+tugu*#~zF!ekx}M?J%hMPxWfM1LSl1oM@Pl12B6-5Q zl`wID0D^}B)7SSa0*h8L{Cs+t;s2i>7#JiDk_V|nHW(m)7~|?^fSthdY!8F+k2MU@ zX~ifu|M~Tw;l-_=46pD1V)*gpAH%PIzuvJiu}uO>P4t*L=L0|hF~-zP{a>Av!0_qg z2ZrlMmN2~AQ_hf@UjfzpkKy{Ej|`lGnhc7j<_!FjQVbuTKV!Im`Xs~SOBXgXGBCse z1Q65Tzke8>efq`lg^`OvP(Pf3$*PrMN_PhX13NpzgX=#SSh*A#3>+L8__?_l7(RUf z(;&X2x`yxf-+u}K0*K|$@81mHfHr}{frFPp!X%R6!JmH&z4f&Wx^l4$4vv-#3~ydx z1ges}Jj0Fi=i>na2xtJ%_Md-|f}4jy)G&hK@sFPjpDy2E5Ml;~^ZR!g27tu>{Qau{ z5I{^I1AYK)M8-^*cjeFf6l=0<2wchiGTU|^D#gGfem10X2HOG0>TWx z6!jP`-@VJgz{!DuLE`2F`UgQ1oNgOG>_ z!@DzI=5FAb>zt8#CYspw#*Vh=qZe9f*Gd@mnB%1+?HVK!5=N6-#svo^p^a P00000NkvXXu0mjf*;Qhm literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/completions/constructor.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/completions/constructor.png new file mode 100644 index 0000000000000000000000000000000000000000..fd95f9d19736070afb33685281ddb3ab122e1620 GIT binary patch literal 492 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP>?0v z(btiIVPjv-@4(4GzCyA`kS_y6l_~>6Lo)-z&;LOBB?CjL0RzLU1O^7H84L{K`IF+0 zx-l>?CV9FzhE&{2`t$$4J+mr! zwe(Trn)`9<3N&^fWmx1`lTz8hki>A5NpH_8FO`H~!^8jQ>-+!zUzM#ogYBc^BLhitQq!k!vKRfU*?w+!iuvL9=F=ZOTBEd!C%QUDa^Gfd)}tkRWBCOfB6w#+D~O!? z`1xCF?1>M}u?9>E4IA1RFJJ$z&D0%c_@}07#>4;fF5quGsBWV W))gX#GQb#OVDNPHb6Mw<&;$TO53g{0s_~8Rs5=P?#00G1}JBeWrBO`+?kj;kOj|{8Da+YWFUG*=QhAGEPrDk!cXqL$z^0e$ zVe$Y0#PahG1H<=gr@@>hTk_x-BjC5WTa@blvJ|(ZJBw*Be0c z00G4G>o+hEKfD3s_~@k!AU=qOiGlb(pB`rT`{gN^cFo_-!1U$K`Xyz;fgl3_0*L7c zP{G$GcbOBw{C8MP&hyUF+Kb) zP_zEza)xg|zA~@~2msT>Rxl0XgT$5fEg1g)`GJB#E(t7J#lZCS{R)5pViXk?67@0u zoh8EjxdA-@b&O3I%#2MLBt^I|0(a@GUWN;=II92xh!GSMKr95r3P|#NHrg!yu4;es z3rfown3xz*G|!&c!EoUvTj`>Gzvco25Y8kD1OkzEEXD1?4F5l$uZLq0A0!Tv2dM)H zAiU`uq$tFixun4lVhD%^@nM=l7$ATc2xS(qA(l*))!snOKpI&y2m=HVBP=`PP4A41 mf2rvMj%yXwTG$%&@0000uJ-y_3`78c0AeUEt4mACEBpWX%Xc^i@j>Ds z!wF%40AfhWF8=@S{pbHpo&Eolb4tJ%#0QBJV*o$^G5z`ThvCQ1-wY2QKV<;1=}A$I(DONE~L%rUvow-IWagK{UDx00IbPhKQ$kKy7$J z`u}S;AN>c>9$x;HAaRg_b+uxF+shdK|9*e#KZpkLkqrO{Aebpa!7<7IFI>L&A4G%r zAn{dIA_1F<8UFu#dHVm?TPwjdhz}Bn82}JKOd#Dr#=F0Nelz_3{f7ZW`-jK9El%^9 z!SvH1AhNz_zN^(>&`t4jV*Ny-exjj z8~^|Lfq_Bdfkmqrn7+PW0T4iN1HOOy(ACgV%kb^P+vZ>QH%$FY5a z{4r-0Kmakqq5>!=2Bc(x_#qJgjdNm4HW2^Sotj^P5%setb}(Fc$yT~(->6{lL*@Vg002ov JPDHLkV1n>uDV6{L literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/completions/field.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/completions/field.png new file mode 100644 index 0000000000000000000000000000000000000000..06a86fb1d9c2eb820ac2002e89a1de3ffbf954ad GIT binary patch literal 342 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP>?0v z(btiIVPjv-@4(4GzCyA`kS_y6l_~>6Lo)-z&;LOBB?CjL0RzLU1O^7H84L{K`IF+0 zx&hUm@pN$vskoK&=l_3uW>p4-h8YqXEDVe;8yTU*ktSb*eTixp8JPtfB6xp%e=qM` zT4v*Tc5Se@5d(`r8S}q?i4`AznmaN(ykcPDSj|}f|4-tNkH6)i0=pUOJ53l?@F_HG zkoxfadw$#ddJbuZAa(%sLXKz8?l@_B4S2o5u*dc!yZ;K zF}6iXj0z1B8=tzhuh?_@%o&{`2Q_I$XRuv8Jv~tlUCc*RQWzW>7#T7T1wM(g?&t;ucLK6VZBx$bz literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/completions/field_private.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/completions/field_private.png new file mode 100644 index 0000000000000000000000000000000000000000..1d0ee3e4de68c445663da5d572eac4b01a63a0ee GIT binary patch literal 601 zcmV-f0;c_mP)q$gGRCwBA z{Qv(y0|@j@nx6aO)vHMiP@t)yHeKFJqS#5u@jC+^01!Y7AOrGCtJ0dg{0s_~8Rs5=P?#00G1}JBeWrBO`+?kj;io!D~)qhU>zq zI1K;@AeO)X7@XsZj^k9YsLzU_vL+U*T|3> z^Ur^V7oUG)HQ?XhKMVi?#Pka&_xHmaFpiI2$^hbnXqXs?|Ks;RtoZMrKMVi?#PS2E z;OnnX4E$U|4F8_qW%%=-1x&NBurPf5_Kx8P)BtSYFVF=50mSt1yFktQlgk;t{rJkj zA|L=v6I;PFhz}BHHpyf7{^uW7{O9*?27mx!*?5X+)?edqEYG)gHlW+UZI;F$q@Td> z>kn=h00a;tC@O(i2#6J664pV%A_P)uJ-y_3`78c0AeUEt4mACEBpWX%Xc^i@j>Ds z!wF%40AfhWF8=@S{pbHpo&Eolb4tJ%#0QBJV*o$^G5z`ThvCQ1-wY2QKV<;1@N$1PuTPAW*o8czOq9@`;K!)mK(C zG`6=g{9)x~C@#!n5EK%|tGRXRLI!{UVgdT&4I?At)Zm!preDAQfSt}LD8lfQm5<@Y z=ihh@`1kh@13&;VffztT-u?aao8kBGKMY{{*)@hsr;aiF`27zr{tL7WAb?n4rv3Tz zm*LOfe+56W_Vrj7w7_j074k>`!`VFAH&w2dlZ5JCK%`Yrw?5XEwv2aKD=%I#xBU9Z0f}D3upj73~~WL0Kr{waR07eAhimJ zA9|%()ba|65{$yXKoWhasRIZg zMsS8e0}fGnx0#t)R07*qo IM6N<$f~genO8@`> literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/completions/field_static.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/completions/field_static.png new file mode 100644 index 0000000000000000000000000000000000000000..32394788ceaff1feea709c8da50f6871f2ebd5e8 GIT binary patch literal 366 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmUzPnffIy#(?lOI#yL zg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+AuIMGI+W;hE&{2`t$$4J+mrdlV@b-%wH)nGg5@cK$C4+CS%-G=@35^**Edaqiac%)DY6uAl% z`DgIw$6x-{j8Gw?Vmhb`HU2v2skd5IgBa1*^$%pBQC#U#X#Jfexo^ump zX9Vh-HAPZVvUlQ7Kf~7agg3R`zkDY=WnkiASh1qYsP3j?7BIjVJYD@<);T3K0RUX2 BiE97= literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/completions/field_static_private.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/completions/field_static_private.png new file mode 100644 index 0000000000000000000000000000000000000000..3b1c00aa0a25253b2f5e54348a27326074d4023a GIT binary patch literal 656 zcmV;B0&o3^P) zdl(rRY=LYxY&N{+G-kLioXSv{8OzYnH{zTiHrKI7#M^R ze2_sf&^mP?13&<={QSef@cr6pu)vZnd2q=XA4r7!{PQ2hz!#r?!`c7-{$T(JAf{hH z{@)L8z&Jj7DFcWPqG4jcexthR$M1h|{P)iv27mx!`Tub3Ob@>c)T}?boZ;J#uM8{#0>Ct}6-^Ue}4aF z000Aj%=@$c_nh9y%v;d~iobvPSY90ULYh!K{ZQ3M$o qjgk3IF@-h literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/completions/field_static_protected.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/completions/field_static_protected.png new file mode 100644 index 0000000000000000000000000000000000000000..09cb7fb97bae9dcd0ea9c237d4fd1bb1daf601c9 GIT binary patch literal 633 zcmV-<0*3vGP)uJ-y_3`78c0AeUEt4mACEBpWX%Xc^i@j>Ds z!wF%40AfhWF8=@S{pbHpo&Eolb4tJ%#0QBJV*o$^vHbb-hvCQ1-wY2QKV<;1l@;Z| zd=MK3;u~gye8%we`!|LaorR3ZJ^%gL)SxL{p#3&U?#9tI9^MYvdH zW-LQP-%JK}PA-%n00y4-i01K!3d1zIDS?kduG?`U7@4BaaBfPgXvL7oUHFF*1OOf$+b-e;5D) zhzTSJH00giKff7%|Ng@Ork`D7xOD0m!;jzpz!(|8#6b8j&@zAkVuDHh`SX|I&)IG7(fcT+T znnf+QfH1?q|ClKkS?n*+1pomAcL6XUUjgx1P^^GVCI*1i0R#{eR*64E8UR!W5I`*0 zB>w&V%dlihC!8;%tPW=*i-Q0_05O7d6dGV;WHd(RJH-^9fwA{3={G@^0|+nx5Y>7l Tpu7I-00000NkvXXu0mjfg~kpS literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/completions/method.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/completions/method.png new file mode 100644 index 0000000000000000000000000000000000000000..7be8a378a3747d5a82416effd17e4b7fab5af00a GIT binary patch literal 556 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP>?0v z(btiIVPjv-@4(4GzCyA`kS_y6l_~>6Lo)-z&;LOBB?CjL0RzLU1O^7H84L{K`IF+0 zx-l>?F7kA745_%4^ymM7duCMzg@zdt8Y~QqE*lx4#E~ZdBKNW`vk9k|A7v;!V|%pT zVUI|MdZo|YV$mgR3Jns4tdFjpSrVYfcrZ2S)-Ii-RjYXZ2u@Yyb5G^E}~_dGPl4_k>cQD@=LfYJYC} z`|-0l56>AN3qudNC434E8>9-}9$hUd{@(sa_5YW~Y;0v^JUl||C!4P@vIvCfud%8B z$sw+tef52P{q3H6`_scFOidLK6HKf4{Y>|8^YMPkb9ZE|4Wt@rK!{@MBW&gAFX-|p_*&VHhvU%;W~$0lPB;R!;_Ns1Z! mezG5V?{JXChzA(J2N*Js?XY=Uzpw!qvkacDelF{r5}E+&8r}5( literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/completions/method_private.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/completions/method_private.png new file mode 100644 index 0000000000000000000000000000000000000000..5bbdd17828aee4f3665bc9a3b48fef6ac0f71504 GIT binary patch literal 779 zcmV+m1N8ifP)JNRCwBA z{Qv(y0|@j@nx6aO)vHMiP@t)yHeKFJqS#5u@jC+^01!Y7AOrGCtJ0dg{0s_~8Rs5=P?#00G1}JBeWrBO`+?kj;io0UM+EJyA9v zaUhc$pA|z`#$g722}y>JFP<~Jx_z7B z+11N`zI}Kf0NU^c0}FDnGyMMZhYKKpST>$wn)TQC z8_V;poek)=7^%B4SjYe)=-XEe7rcG{9_YH?-vI)M5fl?Z3=Aa(1(;-uJ-y_3`78c0AeUEt4mACEBpWX%Xc^i@j>Ds z!wF%40AfhWF8=@S{pbHpo&Eolb4tJ%#0QBJV*o$^G5z`ThvCQ1-wY2QKV<;1lhGJJgXqRNBw-%CAJ)tOS-x-4RU~tC#d-}Z900G1V^v9d+TQ^JvIr-PGKVYXD{`q)NQ&DlIs)ZGc zx|unHpr8-~)6bt^8pH>Qv-0pR+mIHo4G=&~AZGv#dH46vZ-(E$|1f~)Yl3n|UvlxY z$Vf>tFnoNEfkEO@3JNUWfBh~32p|@izyJLC%kby#KL%%eTLu#oTZZP2CWcs>_c#Mj zLQs(5;{X2<00D$B;P-Eazd!@F?%cz$b;oXo0983)kbS{vfFK7u!|y+TxBvo(2`2FU z(}%8xmRg2yAKo?_e0llPPK1Yn;oDc7`0ev&3_pJV{tgg8a2FihzpEEWtpehQ&YsTN z-#&i{Vqj*%>4L}4UogD-@?|?f0KruN1M(FRp9RIrwHL2uT)h9_@BOFG7#P^uF)&CR zBo9&t5I`*0Oka8a@)0gp)~etC{77yunefakwdqgns}002ovPDHLkV1k^(Srh;O literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/completions/method_static.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/completions/method_static.png new file mode 100644 index 0000000000000000000000000000000000000000..414e584d2e01ce515d709b2d332aae080654cbf9 GIT binary patch literal 541 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP>?0v z(btiIVPjv-@4(4GzCyA`kS_y6l_~>6Lo)-z&;LOBB?CjL0RzLU1O^7H84L{K`IF+0 zx-l>?PWE(h45_%4^ymM7duCMzg@zdt8Y~QqE*lvc7>_vhERwycnNVN%`|E7QjBieE zDV7ZkNlFU>r90A_Zpi&SYOrypLg5Ul28KhK2dRIMkGpG{S>}mH3U(ecD*TU_ zSp>qE&6XU^-u&r`pzOS#p z-E(h$y4y7C+HW$4cUqVKpSS1x2CgL_^Q9QhEW9r%DVc6x^Znt!x#H`U=4>@-N+??0 zClg=(?&N3D-|z0+W(HZ<^JA0o1pz+=RWog?FN{7qxi7O=0}L8Xntw1bvN7<^Uwv`y TdWUbosATYT^>bP0l+XkK`^C^o literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/completions/method_static_private.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/completions/method_static_private.png new file mode 100644 index 0000000000000000000000000000000000000000..0a5e4b1607e5cdf0ce2418a531afce9ddf5420f6 GIT binary patch literal 779 zcmV+m1N8ifP)JNRCwBA z{Qv(y0|@j@nx6aO)vHMiP@t)yHeKFJqS#5u@jC+^01!Y7AOrGCtJ0dqNPpRv#Xbrwq_725w$nmTN~2E!&V5e+?jjn1J45`1|1v7{^C1WdQL(G)xS{M*$z-Gss9uGDs;X zuzdgZy9gkFn0^2ieEs!_frW*I;osA{41fMZXb>MH{sY~B5AVTPLQs(5-~ay+00G4G z@Vh|G`jg8UzWw;hz#8up*HRBaHQ?(PFc#!sXZZc+4;MfHv1~lWH0!VN zH_m6-~ax$8NGkcj4XHh z>^X*Wckcc@dGBErNF6``vEayH-x(PhXFq)R;r^W$uOghaG=gAqtBxFBckapa75nbo z+XGSu5I~Hu?2HWn4dDb*VzZ({AHc-YmabL+Qm;UoL41G!0{~W=Q|e}uFfafB002ov JPDHLkV1jV7Yh?fc literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/completions/method_static_protected.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/completions/method_static_protected.png new file mode 100644 index 0000000000000000000000000000000000000000..e5f9c9bf81abbf2ae63aa02883461b40aa715430 GIT binary patch literal 768 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 ZXY`&HWHcodoq>hQ{MoEGRP65>{s*RO-fjQ@ literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/comment.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/comment.png new file mode 100644 index 0000000000000000000000000000000000000000..fb1aa5ca66d18aeb1093058c203f07482264970b GIT binary patch literal 620 zcmV-y0+aoTP);&r!)LloyM>R8y_162p|-W@??hppZ-4o z52CU0v0;D!Vq$;-y*|bicf}xv%O7_${P}^&#{~ca2y9C2v_w|vW`_T_zVH3-zr^4_ zHy@`tGGEo3Arho6udw(l5WffFdq50!6+i%i4N$6M=uTMS^?&)(qW@AgEdSB@f+E~J zV8sj!hCplp#5zE13=#tfAQq75htCWpxqi_MrSqE^UUxE@^5!s{hVj|X{!e}S`pXxP zy6n8db3p0_5Nkj^zz7gPU>ERZGW=imF6O^rHuHaUzN86*7(B#*wgRy>lm@#1Ab`Lw z`1ORLJ*9X_KF>9VWOV-XGYoHF;gyt{-UFl@kb;mAAb?;di-P>dr@MI}?0|gBba|7`;Al3)s2SBU<#7BTw7>G4Du3g0l5I|r97#SIj zkqr0)#2~Nz1!7P-0i^;?kk5da4T!%$51 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/complete-word.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/complete-word.png new file mode 100644 index 0000000000000000000000000000000000000000..32943e985ed8de7eb7b153709957715ba183561d GIT binary patch literal 542 zcmV+(0^$9MP)7k$Bmw`a zJ@?k3K+d(ssentk)8ef!g=pBU_|PqhC1{~v4s zNVC+_Cm$5&&pEjZn?HdD=rOEW^EgU>;rl;--Z4CX{)*wv8)k<1=({l>1H^zf=>gU4 zHa3+__Vm{J28{(Npm-nD08@tT+aFGjkI!1QLZ;#U`xgu;G4H#7{r!6hWB|yi-avJ8 zfC_Vg^h;3G0marMxxkm literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/completions.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/completions.png new file mode 100644 index 0000000000000000000000000000000000000000..8851b99ba1060109ab8387fd9254870480e9284c GIT binary patch literal 863 zcmV-l1EBngP)Mh53JODVWnpw>WFU8GbZ8({Xk{Qr zNlj3Y*^6%g00OH?L_t(I%axK#NK|nY#=rmEJLA1N*GDEB)OrZasDZh+oSvYeh-b)!X&wkCqi5%=xUSx|_F{6#zu1AgWFc?@DNvi{=o` zb31h=C3AB8Z6^Sj!X$=0S8gvrAf%45EJH13#vp`HP#BtSD3rqJ8l3DdD$D`Ha;MgE zVZf?F;{_`ZSZ+ivaM`C+Z(3 zy#C(dnS~`$HdpLVs~B>P!OCIcuN!O=LdQG1`sJDF`RueL>!EAy12@kc&bs9OG9O}C zlIXN&Rr?p0a@>O>s=)e6!>h0VgJY)~t7IxXFDosw6duS%G|xfRb@-M=47tYf&NZUN zanj`{?Kd7o1OPy7T|;7sZgB-3|fr;X0czA^&R5dAdz!r1Ht08mwZ p@_LOR#2;B$Sa_Y67yBrZ={HtPHeP&+9RvUX002ovPDHLkV1i2wZan}1 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/copy-to-clipboard.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/copy-to-clipboard.png new file mode 100644 index 0000000000000000000000000000000000000000..8dd48c494924874a088590a749193994d075c22f GIT binary patch literal 498 zcmVl*+}S4tk-SEw(HMMH$UOFgT8OyWIuox(>z|!eNT?Q)#FJN+p=4fyzsz3(&M5 z1Oj8QEH>2c<<$iq9`D@|1fH*+ou9fEhcV03wkV2NSzd)@nNYt}lHgoRaN9}vHG1pg5Cj3DD1s1zdc6*S;N$b%7N-)ik literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/cut-to-clipboard.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/cut-to-clipboard.png new file mode 100644 index 0000000000000000000000000000000000000000..dc9eb9a7ad3e9500991938d0da531c06f90fea85 GIT binary patch literal 807 zcmV+?1K9kDP) z1Hh-$q?nqWnZ{11 z1JXGjGT#nH5JGSEt3`W-F{81UPnb`417>0bwH3tCzhB0pcmY+{X4F+L%h_RSnk|a_^$fF6B>ZO8Zd4#b& zIcbiYQS<4l$&8G?%anG5EK?xFunXWgL9J9WU-R-}CY`QnUJ$&B%*-pvkEGQ$e0RAv z4j($yFl({I2&EV>4gdf!007lmt}-!W5XkX| l!x~>C;!~(p=dGgX{tck>ItSb|!8`x}002ovPDHLkV1ju0W~TrE literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/edit-find-replace-all.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/edit-find-replace-all.png new file mode 100644 index 0000000000000000000000000000000000000000..8bf48cbddfd81ecd046b1df1995c2ae2f26f08c8 GIT binary patch literal 762 zcmVPx#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy32;bRa{vGf5&!@T5&_cPe*6Fc00(qQO+^RR0R|QX1NC-jf&c&j z8FWQhbW?9;ba!ELWdKlNX>N2bPDNB8b~7$DE;UJt{NMlp0xL;GK~y+Tg_B)R6G0S) z!9?Rd{s#YmiHVnb?JW|cm);0LYxK^L)^yI*m zFTcU@SYm*!EtMrj@A*SKFES8oe=-5@h=f^b18?(HtZw|k@LV2uqwg3XnOtB1GFRmV zWS?DQV+P;{I2h02cI=Z5DdEWrz5U7e%$!@2470kK#8RXck6g{a4S*mxA%;XIj-^&$ z59jdUd5+ER4fM0>B zPs8IANJHj2fPw&;wrBh1G*#*EyE0bN&o-=07*qoM6N<$f&;roKL7v# literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/edit-find-replace.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/edit-find-replace.png new file mode 100644 index 0000000000000000000000000000000000000000..6edbef6145d36c42557ab8ddf6c4d3fe635d04ad GIT binary patch literal 776 zcmV+j1NZ!iP)e`3}G0@e>1bQwMe(jEWv?R(23xniG!fHG;ttONr|sxONv@Sq(l&ciXw5X zL=(g|648T8eY8YKiI1J7MPgf()NXfYKe}DJJFf#fX)jLx$&)T4&ykbYdjUyqZayIe%^>;0FS}?m3e!eJnU;Km-E&p)Ev2?U6I=wMZS2a~h~; zm3BU#p8#mOWwUN+vnYy! zs;Ym>1z=AAD2j6XLd&`BLWl`d6ibqve}~88X$Nxr5B&yt%^M8Py{%aQ0000Px#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy32;bRa{vGf5&!@T5&_cPe*6Fc00(qQO+^RQ3k47l1ttBhF8}}l z7<5HgbW?9;ba!ELWdKlNX>N2bPDNB8b~7$BHmT?0B>(^c@JU2LR5(wKlS@lmK^TU| zLiXlI)UCL%-C8yN0*e&7kfu;bjJIf-E+j{d*2W8hi(pg`BQcezc!Ai17X)pBK~18K zQIwV{^+JqdkuD^8{pN@v#~e!rp3Rx>d%pJ!GdYd{doX?(&u3XIl}hC?)|p<*N^M=A z6UcIP*xHaW=Sye1B)Gb|{4cylQSgv}3w*xsitxQB1y3c2M1G*TRglqQ6*7N8DS`W| zOKO}H{ctUWF(U53{cS_~W^AZ^D?5ku1ZML`==C}jy()s+>xaz~#`5+F)^^V^DDI(m zA|Oc&HTr^-Bt3yvs|7>`1Q?3TKj7fcHBRIIa2&hA`hE;OGf~*50tqfj2{dITNkI_6 zr*kk(f)ygfP*rcnuk*h+Jh{fo&KZW6exlhGOv(hMnvx_;)X+}Yi7~=U_=qTjq5cy# z4ldx|i(w&n3SlfHPf)5UPQXCLO++^_L`)D%#OA%EQrC#B!#JFa`{a%W@6;K*cv%=yt8+m~Bw(XP2Qkj@=6y9f zJzEgmA@t7%rDo@-Q=+O`7gc&b76{bb%aE7%eD(1~>h9^n{Jb|Mv07U)E|!I?>0}H^ kmnaFcc+~6}mvFe?4qrVP^7p8@NdN!<07*qoM6N<$f(0QT&j0`b literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/find.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/find.png new file mode 100644 index 0000000000000000000000000000000000000000..d072d3cbe2dadb1494f77e950952123813613677 GIT binary patch literal 617 zcmV-v0+#)WP)4+SOttuFuo0rp8m zK~y-)osvy!6Hyq2pF7DUO`2wgN>U06wOwc$MHIn>xD*Oicj6|$z;CJaABeUjK|~aE zS$9RDeGK5zq#vnP18H_P9en3BbiKg914X(U4?fX zv=3%78D?M10+5(X0MN8+cL(3TuaZiqIeKc0ZN-aeE4XBZ)ck8EZr_Z=qW7OQ{wVDZ zG+iT=PIKtw7@rGX1_uI+90*bpKD5zs{F**C6zm9u?EJ zQ5_2JmL<2Flg761XDbP7v)0}Ku5Shi%_G^x}q%2kVgpPOH0wIvBfN{N(qOE7M? z3xuFtwW!u4n_D&9s)POg9;6U0U2p=nX__rgY-58pql(|7qW8J5Es5XbtmWcc6+03YVxryf3dbXat2*wyQorvicCWHaaM z^${Ko^E;cZ_ht1ff`3FT9+eG|{}KR{SUhS0lnsNw28{O8e>3MU00000NkvXXu0mjf D_c;L2 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/go-down.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/go-down.png new file mode 100644 index 0000000000000000000000000000000000000000..3dd7fccdf06321880f69d65631a363e4b813ba04 GIT binary patch literal 683 zcmV;c0#yBpP)i}4~9FCHr5K@{qtRq-ka(iJ?ZP=uTm zA)-=KTXM11RS2~$6nm&uv{cQSuKf$?CbP4jht?XK7~kVJ-#qia^UW|KLbc-EY953z z>WRV7dqi_}NvUZfgl}C)!*&F0M_|b+V97E80CykVr~%gk05Haon|Y41T|%KagO77# zXg_$ht|?xxSRKlv`0H+L2mld?91sx{?rsQB5|>q-9K_b`yI?say^?H5vawt?QN0%L zQr8VKjyDQ9NJT;|(TgXq`xKW7BF8I9f|vxjL{S!?dO5hlaQ@UaF9;B#f^;@jnqQnt zF(N{uTTQn`k0*~rlb-kaSCCvlqKp-L5!3TI5NItHN89$(7@Zg?Pfm^Zz3vh1d@XXv z%dw2{#h9WC`nbQFn~GCVFR$PcMeY21IKx0j@A8ZjM9Y6Ue=LTlryr z>(@2W+wdKbgN~t*f$yfVK)ah_*yWGG{JKoJQ9bX-)!YpMx+aPwk<4VDSzECWL8lc@ z`=3~j{FA#{Y~yeIt$3GuF4Da7HUP}#KVRBt{l5SJIDAFD4*5 zl1oTbVI0MO-{a21M#B_R#9l-oXcPp6(?)2~B7y{4Mu9@O$#RS~LMu0okc%jC6BNCq zMPfd15iMrWDWnuP(IPA}ow0!)<9P4f`?UyPGZWN-v-$pq!}*{8hcSkHhP!mEu~WAd zo8?nd1jeIrclCk3aF;a@j#!~$nl%(P0Jzf98$5aR>}dqE;fU4n-v&x*nhu}wwKrd{ z4f;b9;fU2%OeY#6`YVQ=TOJkJo9%;vsn26nmF>ePxAA!V*2;(ZnPFo%AB#FaHw-$p z>A83xDHKX5gpddX0EtgSc(|1Lcd)Cxp7`{*Gd4M}fH9|HQD+7~1Grv}*vDrmsZm0K z5C{Q60m5V1o+G_9&%wGQR!!BO+NWc8C&Ce{BNlb~H9*c=C7oHocC*-S7Ns<$C1sQZ zLijB|M!48sj(1C=)P(9pYjao0(5pv%$FEw)G{Dl2Io>Bnm(2P=eF~WywGEfv2*dEE+1BNH1p0gO_(!va6Ym6#!ZeU0XL$ zmOyFA$XqYlC#eqYr*8WRCf~&E#M}5+`DMhod1o}n6nu_w#4?v#yZPlMNv2Zf#pvLQ?bsc$8%}?|wxEMGI60fdRAO~{ zc52bv6uF?Yza^+BugrY=o*FhT7dA)!rvyS0Urwj)#iE6g^YI%&-U+mBcICDJ0000< KMNUMnLSTZVNH5j^ literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/go-previous.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/go-previous.png new file mode 100644 index 0000000000000000000000000000000000000000..659cd90d7f80488a8a6a2c12f6f9e5ad98720461 GIT binary patch literal 655 zcmV;A0&x9_P)_fWZPlDqB9?#%D^>oA$FjP8SXdVl!5?|TnYO4RbBH?=GA zTUy2|reO<?=@r%h} zW6#cJQfPC~s>mwxzQ}>D!BbZalds_8_h}r7_JCAa@f4F))r6lUrCf(hQ;9=;jU5L& z+1FnmP_XjQREAhnABYqX00}@!0U-tMq%XJx@e~^h8rvWApSa|&uWz9Di?6_?1E%N@ zl4EB68Hfl3f`qGnd$iXb;n;2VsHt)P`R?O`My|Agci-NCF&}hI2Ui3vQGjU{P_$N1 zwo6b*g`Wk{x;wF^0p~U>`wvX#H%c-OZ~=##s0b5Wa!4-09SO%4;Ep?Tu9$V#I5TQr z&Mtkq{`h6ugzb~9dlQg)8A30C1pt3Qg&t7B3bbY+H`>YWThbX9oF#2!=nK7F-=6arTX3U&+XWy2~<%(BYwFX|c pI#R>7P%^)q3wROKeC1m2{15 zlTT<9K@`TnH@h?0jfHw>O#jh>1nt2m6SAzrkW<%*%=Q}tRboP9pC%r$9&(LA+0sq)ybQD9srhR zz3Fxu)^6aqJl)?FN%nOeOgb)4?+M_zJQ@)DvRBSb2FFH|!GH*69hXP{3*flC1BAti zbJNzAm&ca3iTKDR3xq|-Y2`eKx?tij|4I5$vH1yqf%5H^Fb8J54jK)5$VM-C5%i8b<|k&Kxh=#FG>Ox&>r z4?sb}hlkg>1-vahgJcyDBP0eg&{{(&pkA-x@zeQAv9vj35<}`!ZpEItce&w-qk8xH z6RRw9@QrP7!N5#{!3lE@ZdYYZTfgiFi6Lb!&3aDLCbZTHrTP~zgJ5t59%w*hOo z(kDN9khkEGrH51=+k9k%f^zz*SVF*`y(c@lkVzfc%kp3`cZ! z_%um2tYKWj`J`TeZKLu>Nd{vHTL#B_ik1wH>lzprF$+A|BekMF(a-HW--+24jGGuY zFtA9na61G@JTPTQ*(4Rhd`9fcmxl9<2|F9P9h&?WcQP^T6jDp#5498qx{|@u)z4*} HQ$iB}=h{-K literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/highlight.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/highlight.png new file mode 100644 index 0000000000000000000000000000000000000000..fd9e6ec52146f6f9dce5a687d4bf9e5eea34d9db GIT binary patch literal 482 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*fm;ZK886+f`vVkYFY)wsWxvY9Ca9u#?&jJ!ppayVYeY$Kep*R+Vo@qXKw@TI ziJqTph(ejMo~fRxXV;$xKt~CCx;Tbd_@A8^=zWMmr1ic3cl|FSE&?o$0!|7dqOOe! z9)?oVv(NPAZnM05L&j?EvYM6aH$HTBWk2`$@42Tk6YCecEnb*&wlQpMh53JODVWnpw>WFU8GbZ8({Xk{Qr zNlj3Y*^6%g00QhuL_t(I%dL}LXj^3*hoASH_nc#sG-;dWqm6CW(4s83b+X9Bt0|~3 z6mOI%-9=?M5O0K`ptn*G#rs`|6-PnD>5WW=H?uIcvzCo^E3WHYKeL=HA5C(SbCR6b z3)#f&*5~^FdoKR`eu4)${@&~<;4NLs{R%AQ`wgX7&~)wW+|1M$58jLW!S}zMGrL#P4P+<|J^kR=q!LjUR<=1mzj7BLp1miL0MTgZr{|x^iYGDyl!|!#OL6OV`f;PXlOge)!c#$#{SGXl@)s^XbSCXaYk@OhXc|B#CG* zL-81~z96~mqojuij=b@~*=YbR90{B}oE@c7E^@~W5Fg%$Qs65I} literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/indent.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/indent.png new file mode 100644 index 0000000000000000000000000000000000000000..6bad6bbacb8d7eb919713468900e18e862eb7e9a GIT binary patch literal 435 zcmV;k0ZjghP)A=UJU>M0YFJa zK~y-)m6PF00znjozX|t;=>rJ5K7zeT)Q@_FAfk|VVosaq{q;>qTKMYe`Fg&u=RJJyC($356xs|}Vw3A_mZXdnfM1AM?O@XRKXh#UoE%pQ<_<%Dc?Ixq|pXFwNz+m1KNdX7%#q)(_5Ba z6CJ4-v3q=ttEUf}(5~2ko2EnhUF_atqNdCQIRh^c;6{lcn&v!Jd0uMl__6P?bz;}M z2JQS`3_g`mucKzORxaT(+!Ev_Iy_WrbJMgwg{++=at3EVG_eM}6KZ1U8I4HS!OsM3 zIrL2L&zPhvvKFfC?i+vGr0aSM8qdkor$L(8r`*+3ny<~F{OW8v5py7Y86-1!k0%uY w17AluS+MViQN9zS{34HXIG-u3-}u}027y}0CHzW)ivR!s07*qoM6N<$f~;%cS^xk5 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/paste-from-clipboard.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/paste-from-clipboard.png new file mode 100644 index 0000000000000000000000000000000000000000..24588a3a4d2356be517b0e066a489284f0326842 GIT binary patch literal 561 zcmV-10?z%3P)FTwJtjVg%6=aCXokI21)~9mK^!mx4G5j`|NYgS(rkOVuvAI4O}*sL@D5 zUT?|aXkli7aX_q`X+NwHimYrk&*ZqAx3 z1|BMmD;{?861m(FJkJ0iqO7cZU|;Pi1_5ZQ>aE8wSu*oyiTIugE}S_S`_jqqF38ff z9j2$JFlHMdtgWq+Ohh@F{LG}k&a>C6R#a0FAm({yEE@57U(d35{}DkDP^nZxtIf?F zB9%&U@9u3bX1*b+F(4Z0|J2@sL?VHzFf(&(FdpLZI9q?fsp)w=fNCfkmfyS$y$ksq zyD7pDoj#T4A6yV|!vVTWVS55qMMcP+JpO+Z6!JMl1Q9`1u+}m$ksb}u-zd^;ZvAMD zK7okqL8@P?G#d3CA%_72HRrm3R?E_;*C`gy58D)P*aX&YQ2Sm(M0)=9`Kw%>S{}Z_ z-Z7;aG)bp3q|+I)*~3`7fvRw0;aacRHyQ$LisH0h#)QuLQNI1SZtsXO8U^GGfgrxxh}+}VkxnAb?)YabMHAocX%9NxLrB| zzyY8MfO-Y6yO;d<*y~_0mS+_>8utCg%c)OS>fRtAV|%-`d2TE9!@1|a7y6KHYMyRt(@|#< z{cBq{wZeZJJbqvRywOcgMZ;bX8R({V0eC(qv{bfm zby!V}<`4o^j$zq9DScbv%ILiw6A^$HfESPQ`SbEnPO8~uyxOOpbRU~FfUe28J$qL8 z@C5Mk;kD~GW0^Bpm31snBktM&3_1-q+s@zOgv6zhyDTl6DE{o}owMVUv2>RDuXiL` z4H7gMZdG_i0!QlYIz4!@dkqC(K-FfCk4>lJ)_b!1Rd%EVnj)wji8Jm)7Zot;7MWwG z*gs|t5o;aT9wf2Ok6$@g1dX*be!bT##gp?c3Eq+E#Mh2RWxi- zG;9IzHaQf6fo=!vH>>VST}Z(FqG7KdPT<2cMZ+#dZlbEl2Y?p^`wGFq1RKr0vRaV6 z7^XIV*yPVOq9g;1-Im=i2krW;ncR=mZuykZ)veF3J9a;RB)EwqzyeSOHl8Hi?*hE} dMW^#GgWuOnx&>a(HQoRK002ovPDHLkV1oBE0Zsq_ literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/reflect.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/reflect.png new file mode 100644 index 0000000000000000000000000000000000000000..01cfa6e961fab41fe595e5008c187f2272186695 GIT binary patch literal 673 zcmV;S0$%-zP)7cD6vzL3*ji+1ZEU@(v6sepG0{e&F%Viqwi#L==eN2fbKr zOk>oGmnI}$xN+=_BR3+k#n3E`k%isGnc0PGsgwM7UNUcf^WNL{bN~#hjOwm~vUD1| zwVJA0wnQDe5{ZP+;Rrzx+N#xR+xC{7$z=9ZfQbP9`2Btb+my+-PVf!P1tZMS?Hhub zGm^6=bwH)^7e4nYvf1oG3g8H!N&(HLNG{fyD8%o5&Rz?KkD}fXAW1R|20h73kI8Fa zk;~H=kUb+!j8CTsReH5q$aN#AcaCUr!IZ zNwYQt5yPVk6s`bVE*HP}aVOx+u{euhIX!_l=^u#PvtrO0w6(_DoDS-6>XS3O=)UmVY|2G3vn#DTNL}XTF z)Jz(+cN2BD=8LFCBxNTTIm!wM8Jkt0FhzD;V>#|)C00000NkvXX Hu0mjf5cfCH literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/select-all.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/select-all.png new file mode 100644 index 0000000000000000000000000000000000000000..f4b0b19e0911c64b51a27f62439117b771c89a2d GIT binary patch literal 441 zcmV;q0Y?6bP)5 zlRZwuKoEuBShkdo6Ce-`g&oB%5D1AAAQ1N;1q8tjkfK1KNiIPN7oddNiR2Ov5h<~E z_fdp3{)rVb&8)pM-@G@{3Q0UZ4Mtk4OKcFX>yB@(@46s~{@~tdt!a#*F@{=eYOSf1 zqEd=kmNCmRrfJGFO}SVs_%Q4nl5l^40st@X2}ET1qmqkpcDR%GSO7!>B7!7IO2xkK zV>+FdzDri@f#k|*B7z_Yns?E7Q-Rnx+21PNIsZ`*$1&nK&TTd-5E1ykpBLKVPN(xX z(Q%pq7E)}k=0*TX0KjB2soAg*MG+jw$!k|yXt&!X1sBJAc>Vao`Oz-kKEKy1r~+;C zY&KiDbCm>MlzSK^K=cW00000NkvXXu0mjf50ACM literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/show-abbs.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/show-abbs.png new file mode 100644 index 0000000000000000000000000000000000000000..7406c9566fcb208134ea21938747746f7681a39e GIT binary patch literal 410 zcmV;L0cHM)P)j({110x@DiRe}5N9?J^&qz*kqUv=uyfAPwaH0vo_1Au*X-RP;{frAsSk7#TJF z`t&K)I3vT)x}@asion1Up!|KG>C-nqK6Z?EYgX1CIXk;#uSt^*0JZ)A8=w&oVEN?u z@ng(vYz)Tf>0Vb?uH5D`V}^^YmDTt8c6LXZSXdYsnV1+}YVBdLkZjMlt*kr((hS7k zzy>t@{|^c%Hjr=7FdG!JK*Q!=cOJv`(n$=KAkF9oZ~!GA6Pp5oh8O~=FI01Z5RzhS znn9QesChR~vo+NJC}F^dq?ip2gEhlk0K|Vl(FZdG09=lS^_{}s`v3p{07*qoM6N<$ Ef^o*L0ssI2 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/surround-comment.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/surround-comment.png new file mode 100644 index 0000000000000000000000000000000000000000..8c2b0ce4fdf1c4e3fdcf3d63ec074c438be9e5a2 GIT binary patch literal 631 zcmV--0*L*IP)oMqIz6^Yj7pqJ)FdfF;t${_A&wCVNU&bc11yB2le%kg-A-_QBo-}#*`0D2|^o4fG; zArm!-L>k;vEEe|3EiWBUIN&)SS)`YBR7+DHwD{EH1sl#^zV>r81nZt9Uv87O_~Y4M?R@g2OSUm=mv(N)}GnxH8j} z6NwBaZ_VI)WsTJ1FeYz4M>3gg1LE z=WqSqxo(LL0#G}#m#B})z+Rff=FUOmb!-+}Z=r|i5K}kXl>hORTl+MXz27}&PMJ2* Rw8sDd002ovPDHLkV1oYgDrx`# literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/surround-debug.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/surround-debug.png new file mode 100644 index 0000000000000000000000000000000000000000..39b906d0f46219cb6daf880a2c307ca421099651 GIT binary patch literal 626 zcmV-&0*(ENP)(=Ixt40R5`W>fDF_ z51B|LYAeA5wOZ})Pj9>3Myu5_NDu^r9SVhPB=kT53=+V;)9LIzMi%KoGCfSvzr(9* zU>IhUEbJ+OAp+R#1{gORLCm8h!r|~)V(cq`VFKVafGo=h1_MYWUg$8EUBkS8MhAsf z5{O2lD#n$1_Ep z8}&LSuibzs{nYPoHreoI{S_vzULtD}mKL8OlgV@d`Fx)DdZ+1z?8_XsNZQZiPiVoK z%_c@{4t#EG;GF#o1uooqid-(&0kAB~`}`j2>^Gex=_cXx-=g=;W{X(3y9`16rWesS z7e=8_=m65`G=Fb#R=w|OtiLVe%EV>7tG~zf$yt1Aye0)4)qkaTW)-DUsRKwRll;>C z+vnR<*$rPBEeu~>``1m}JS$-RwZY$yqC7X#8edLIl$B9Yy{^?SFi zNf`v7cj6$?2~}qGrAg}CJ(PHpI=8jAFhF!%)iKp6|KllZekGNIBQugcnZ_R__W%F@ M07*qoM6N<$f_l{;RR910 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/surround-if.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/surround-if.png new file mode 100644 index 0000000000000000000000000000000000000000..8391c248f5f0fa284610a26ec5145215b7a56176 GIT binary patch literal 628 zcmV-)0*n2LP)j20}_O^g{?s2->0v3e_GI zqXj+aK@UPD>4wr{Z#MDPQ;(@$HZ(NR)$QAHKe97Dau^Y{LJC zMCy=4dGkP}QaL_p6-5#4cH5v{- zNlj1o*7M5qJE&H-u)eX%)`2%sgu~%6TKr{za=9$HTrQYQz4~o$f5!c(2?f+8?{6_Z zJxTxWvb0_;Zy*|tj;b{nE*6V|-ELzcr_-D4kZ<-0Hq%+m%`F=0((e4i(#r_q@wi-r zV+P3Q^Mc3YW**Jv%h;=bC)gOve~14{;eSD7eML)aVg5am$)pa*X0w9V`w)%hKCIVn zV*mF~)M`H{MZKS6QgL^>47*MzQSYDE|pe zPTkRp>zfH8m&@sZL?R))n15`%Zz@)^*}!${E!6g^l+uXS2i`|(C=?1hAQp=W3yV+n z>yvt*e#;G1w?0uSw+#*Daj&9OD(SZniA01Y|ICTQ=Xaobtq)ursCTqJ7z%|#2j}(s z>9s0(5J2n1LDCgPeacJgD)Z?f?>8&6sJ?{((j`Uxicz}YDXVrll%s#Q13Q_~ncIB; O0000+6+)oG%~)c!36dLN)-O=KufyFf`OnV`yz{ zRR;=u1sT8xG~gr50FY)TCT6T2|NZwV*pTYVDGXg*U1~ticd!BL*RTH=5Drj87?P4B!8XI>%1S0N^!N9xz`}rU)v8q=LqdX4G{1TCia}gVnPKOy)eKI~Rw!~s z`4btYOql`-gP&jnmM&fTF)}g~#jjVdU1iYIv1Yhx z;A31|I7)!+-Ls#;-7S>i`O6CoA|m`Kav3ST4D;vDM;I`B_Uw;I$q^{F%$>WK;o8+3 z3_ZQo7%`C?-_5XO$r6MCQ>RY-n2{Nc5>+L|^$c3tDh!E9!6=$RI4-J_Vdct|2m>Ze znD8+tF9xpp&70Q@lHvvo+jlNtaCWgk(F_8Sp)CyS)~!RtLU(uf$HL+`l&C^?HcT@J zgap(x0MiaU9q_ibwSB^t-qHCm3<5v{;3<&{h|002ovPDHLkV1k|2_c#Cm literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/surround-while.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/surround-while.png new file mode 100644 index 0000000000000000000000000000000000000000..890e2fc39151e69ebbf427c8d61f8acce2f2095e GIT binary patch literal 633 zcmV-<0*3vGP)xm@1=b5)WgbUK{@wA<~0*zfnBpsjlSW&>0GTGJ;a6B--tEQdO|IxdDr123@(OCCg0NXqbc~*I8wcA4L$2Mo;(d zV4_echz`e1mQblw@Kz8IiSVTA1GngA^XDuV(dlln@yf$6;_(|_*I>usd zfk!r*?Gq#t3Gx1tTfZ#T>WvM0i3Vn-XIb3te$}7Sb88Lxe7;W*i^as{2e;V)o?he&5nQF1#~tp5-Ulw{DvHHo{}saFu(;w~_^qHEY@ES{lHsriK)s{)!FVtj z-1%F-563;IMg)2%juDP(Fls+d*8H%k`wg0xdVgV*a74plZBhBhSMIH=rR@CzJ6uAU TMb*a900000NkvXXu0mjf674eo literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/surround-with.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/surround-with.png new file mode 100644 index 0000000000000000000000000000000000000000..d4f01a6161faf11a2fb76c824e4bc8499175161b GIT binary patch literal 450 zcmV;z0X_bSP)o^Cq8JE8osEcsAUXu$-{W5piqJuV{(+!F1|2#Cb*O_UDTq20 zR8+35Vpf*6eWzyQshb52eCF-Udwgg1y*Hfwb8uacIbjDtH&A|vtAZl9ZB6`hKOA#mI%5QLooL!b@lVqf~jcTEB%b`61aoq(7YmzG6f0d#>A zFa|Dw7aRcbo1;eWO`a@r(+)CCNfguU{DQc_83+*H zn?wj{z!wYz*lIG)n*`(yD!@*BI-yE@nI?g$nK==31p0x;q>NX&!A={S>uV`a zZ%~$1u$c%L`6vMg+0W1_7~>xFwW`Y2=0?OU2ej*yU#fCyRt011g9xq4?#?!E^%la3 z#Nl`-&D#p-l+vRtmLI~;avsZ^EB)a;cp-2} s1zfO$pa)nF&b5kiqQh5!Hn07*qoM6N<$f~YLPLI3~& literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/surround.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/surround.png new file mode 100644 index 0000000000000000000000000000000000000000..d0d333169c47f70a318776649e1e6e2e286dff66 GIT binary patch literal 448 zcmV;x0YCnUP)_SygM8Yr@>vvabP~5OPbAQlC5dl z0Un(&KnwxnWHPxLhAzB7)C=Y=*GB0RbX`Bh4_^!rN5Ciykey|a{$hh+7$<0q86bfG zA^?=qfP))y{+0G@L8VeTM&sK93i7576m!h^nSHMi$p9=!hbHK5&Y`+!=lMsD*L^8co**@$)Kyae5D*9X|PO$v9Hp~&u^eW0da zq2KTOf59|OQhdm6j4Xb@?P)BeF zn;M0&;3k4et3mubXWloz7kqH|-gm!y&Uf#5_ch?3=L-n(C}77Qjlk1?xxP4wQDTP3 zx%dX=xsP#e<~pK0AJGmbJW>HTodwF=E0*2?N*6$Z?|Z~Lkrk&dVu?AsN$P9Fu9wgW zRI0%FCveT&0`odta-VJ%nP|0xBG)l{4<&(T=ByBTifnR?y8>wm+ydPUW(;MkA~Q$Q z2Jm_eT#|M8P9a{jLk?4;638r)p#Haj`z~OWvC%hR+&EDQ$aOiMa9maC zMRPm14pe)7E2}+>*IFiqwCT0Yh$FD3vMru%10Hy$_B;WPGc19yB~Ge5A}hmGwtA-f z+g>~7O@R5s#u)&OXp$ic^aE21z>y5wXA9QznJX{|wAiOs3!2tiPjOS+uJFcX;6>(I z#lCq^-;DLsu1l&Xj#}CazN|kzKtGKb}-&In5|Xy00HCy1EiiSP0sv5wY6np`TXrpKpmCHr&E1;l75D^8HfH4NKND)LdpoK-i2tiUA)Y5d^ie5kUl- zSOh`vuh`kxYqQUJo6CL0Kn@;vw>vZYK4t^d;Nb{$U`s-tpTH-5HNtwk)6123c)& zGiN$kZTGM`Fj%lsnk@kJ9RcvuBJ+F7iI+I@ev~;k%<5#4xw2dh!6I9?KtV5-mu#|n zT=0_LlFr^{NDEk_CPH1iT0l-j20~VQqxxhn#k^U`{(4tc03+2|ut95D;AV#Tey&QC zv@fUX$hu7F2b$_0VN|WO{;Jh>R%r-{7@Aer&?|^aBL(XpH5AXS8NXsP@y{rOz-(Av zDcI@PO2GWj(2EK{x7ti_CH`YrA4ep_%9cyTfsTo^fcQX212kdz+;b0H_RiLkYpL2J r5kWXpE(=7{T2O56Keef=*#zhh0asVDr#~8{00000NkvXXu0mjf(oO9+ literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/undo.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/undo.png new file mode 100644 index 0000000000000000000000000000000000000000..8b0fef9a8319452009247864c41e033694859278 GIT binary patch literal 650 zcmV;50(Jd~P)kSC&LBJ zfVRcM$?V1P3B6PcAX~#mZX7Dr0E-up6>u&Ai1M4+$6px*d6g)50zul{6fOZfD5 zx^(<(+NuITAZTdtF*`7sbB~Mx0Ae$D>fg&k;5u>{h0Ft(%sL2>YF!TkK|`BOGW-0q z$<55rD9F$#2!Mm7ygZedyZydz;2gN<0Fly!zty-=mBaVpcsEVu>hcW{d1#Z{npnGY zBY*fjmK0%?8^t(;YR@+XG=oH^Fxc%lEVS$r0NiT$nf{@pT|4*Ae2zV-96O_3`)`13 k>$j#pJbyuT?P=Bf1qBx3B`dxp6aWAK07*qoM6N<$g68)pi~s-t literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/unindent.png b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/images/small-icons/unindent.png new file mode 100644 index 0000000000000000000000000000000000000000..1787a7ff480ef4c79c433a779bddfb8c1b7fe6f5 GIT binary patch literal 436 zcmV;l0ZaagP) z1PDMPpWjX5xmCdD*GGz^a$N<*WJb%e6hXCe6K7WZax@wtM0|~vEZWYx21!B^;UJ{d zX(nIbfV%HZoe@Y#QKD>Z2}$PR0DlGsnyn^w$;Lh`QL=50Pfj-|kQl6h zNxHvq-c-WRFr3RyQ~Xa*cFP2Quy*riJAg8pC<)g+qTvN=8Kks3)kFZ-b@06g!BYc( z+WkYajYt&t53Aq +PopupMenu = \ + ${DEFAULT_EDIT_MENU} , \ + - , \ + toggle-comments , \ + html-preview , \ + - , \ + toggle-lines \ No newline at end of file diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/services/jsyntaxpane/syntaxkits/xmlsyntaxkit/config.properties b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/services/jsyntaxpane/syntaxkits/xmlsyntaxkit/config.properties new file mode 100644 index 000000000..dc342eb24 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/services/jsyntaxpane/syntaxkits/xmlsyntaxkit/config.properties @@ -0,0 +1,24 @@ +Components = jsyntaxpane.components.PairsMarker, \ + jsyntaxpane.components.LineNumbersRuler +PairMarker.Color = 0xffeeaa +Action.toggle-comments = jsyntaxpane.actions.TemplateAction, control SLASH +Action.toggle-comments.MenuText = Comment Block +Action.toggle-comments.SmallIcon = comment.png +Action.toggle-comments.MustHaveSelection = true +Action.toggle-comments.Template = +Action.prettify = jsyntaxpane.actions.XmlPrettifyAction, control P +Action.prettify.MenuText = Reformat XML +Action.prettify.ToolTip = Reformat XML +# The XmlPrettifyAction takes these config parameters: +# IndentAmount = int (amount of spaces for indentation, default = 4) +# StandAlone = yes/no, default = yes. see OutputKeys.STANDALONE +# OmitDeclaration = yes/no, default = yes. see OutputKeys.OMIT_XML_DECLARATION +# Indent = yes/no, default = yes. see OutputKeys.INDENT +Action.prettify.IndentAmount = 2 +Action.tag-close = jsyntaxpane.actions.XmlTagCompleteAction, typed > +PopupMenu = \ + ${DEFAULT_EDIT_MENU} , \ + - , \ + toggle-comments , \ + prettify , \ + toggle-lines \ No newline at end of file diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/services/jsyntaxpane/syntaxkits/xpathsyntaxkit/config.properties b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/services/jsyntaxpane/syntaxkits/xpathsyntaxkit/config.properties new file mode 100644 index 000000000..3bcbe61bd --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/META-INF/services/jsyntaxpane/syntaxkits/xpathsyntaxkit/config.properties @@ -0,0 +1,4 @@ +PopupMenu = \ + ${DEFAULT_EDIT_MENU} , \ + - , \ + Toggle Line Numbers = toggle-lines diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/CompoundUndoMan$MyCompoundEdit.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/CompoundUndoMan$MyCompoundEdit.class new file mode 100644 index 0000000000000000000000000000000000000000..c8a1424d89036e1053638a3e9099decb4de51d60 GIT binary patch literal 1032 zcmah|O-~b16g_XIFfa^I5dlTC)T(W%wju5`Y#K~RT4MrYV&dX4eZj%cQkr9**C zJ!~m~#YUjjqweXEiVoyanN{>z(TWshPvAd5&>^dYZcYoGL9AF zm2t3ze~Zc23*tTfI0}y=6|>qdmY$IqKPenIWI4Z|NdIM1c2XYhZqHYpBnWlv;Ff^9 zA9f>OJq!%<V7mX+j)1-s>4&agoiM@zb*T&cOp$O6wjhK7d=^`V3M23hN_13k#If%mLb1 zq%`@=LKYXPxnW#NJ5;Dm%(6ciIZ_#oR9eGIZkt&KTTz?JeEAc^H`qThpITp#A(biP zF);nqaIy!TS1?7pPbP23;Vsti4x4yCf|O5@)&@0V8JB5f2y}&T>$ELg#S*p4Glzfo G1>g@l(fCRL literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/CompoundUndoMan.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/CompoundUndoMan.class new file mode 100644 index 0000000000000000000000000000000000000000..dc2b41f0b3a07bd55b72e7ff2dcee2b2d141e45a GIT binary patch literal 2592 zcma)8Yg5}s6g_JjWQ=&f3WNfIv_?)bkTj$vr4S$ujh#n%HKeqaZ2=-ic5RuGztH}J ze(FzXW`fhlOefzu)8CZo^sHoo1cYQfqh0OZd+s^+-d*|M|Ni_Nz!ZLHKsV-M=)t_4 z-IkAq7*s6E$5JEi;ENdUVp+kx823^!G$5_uz8txu;(?q!jNuW!ieUw-^0B61J%$c! zNS9RwUn_Vl(42m@P}naPDpqbOXW9blvSk^ig}h!a8)d#`1G|H%J^esGOqPE%t(_#D z3Q52F3?0h0Ub4BEF)c$tYzjmPW~bcOWr6xzre)f*0)z3?Uiq12>xV_%GLkFKbg_`F z>>HLnGqx@eSt#TP(juMjSN1bTX;shUxze60WcB>IUNYr-Z82i+nxs4sK=tUYk!xDF z$S|BMWCbn-tWL!i=#<(dw#>?1y;w9XBPS3iWnTh}12RoYXwP&>t~lHUX&h zmJXQx&P8KeujFkn3l5yX%>a&V9NNkGOxZ5!*<;Jm^E|0GYEXci{H7IK&pu7-MJHcu z9)UKmTD}gL3u<(V?3Xw*7GUG-ds&v*V$gcsa=YoAehEOa8gW_Zn4ZlVq`4&O%5^<6dR|=I<*0^KJ4(&WedtCO7iazwK7{auQ zOBhh`J_c26;)#lHu%+Nz72n}|1vJbctAHJM!{2Z3UU?PQa9xFgZGpZwpE4CY*i~W5 zpnEEwVpl<4#Xc+*1xyQQe&17)MuT^U)KwJdzrcgX&M(JlomyG-9it@Bqvvw|21%J^ znB7^;t5tbF0wLJqW|6q9055E)Fsn_G6w~YJo-~dY8i+G&1}dliO=zCuG3%jGKC{lHR67*fioBoBOsC_YCE=9sT}%D7F+OBDDe zfA_GC6rLc>8|D#o{t?*4Dr~GdQZ-k^vD6Ava+MOJyaGN#l8KmbkOmoVl98GaevM%T zQ?D^3db!P8#?1&02o4I$N3hYI@);g z_3=^~VPR!0hFr{Jf^mF|8;n>-3zs186inARTqmNSSG^WtBb-z`#&zH)dj0I6s;-rb z+8V`8d{RS5a+C;lL5i~Hz;=+7T<1FGp6x;B8QiKl&ycJPq-cpv>ON8EcXzu>aowdc d%hykU5N7!nVj+7uwsY3OPJEB^29|Lg;(tvDhc^HK literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/DefaultSyntaxKit.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/DefaultSyntaxKit.class new file mode 100644 index 0000000000000000000000000000000000000000..0a77e51dd5f1dc446844b1ec8d0f2645a2938609 GIT binary patch literal 19645 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 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/JavaRegexKit.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/JavaRegexKit.class new file mode 100644 index 0000000000000000000000000000000000000000..d0b6f69c8efd52ecbd2f1078a6e3417b390a90db GIT binary patch literal 484 zcmYjNO;5r=5Pe%J#ma|(Ac7a;1w7EiE5wT*iP~sl4T;AES6ousrd>?^S)NEV@dx;$ zjI-64?q+A^y`6bGvtQrup8$^0v(PA^X@gyKHBdZ_cp#iB{=)CXT%^}hjTr3n zbS5Gt!yvKHA?$^#cqT5SR;}lghYPA?ILwRrA{BAscybx}B2#rWLsRJFj2K377>QU( zk(6O!Pn#}7CohwKhG9Q{btazp%2!@C0JY4})Y6U&oy*(*-WghbH{*RC%pFg~GMJC_ zkF|-#Gq;Q)dpa3+13FuT1UimHmv{v literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/SyntaxDocument$TokenIterator.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/SyntaxDocument$TokenIterator.class new file mode 100644 index 0000000000000000000000000000000000000000..524eebeb0b31932825e034f77e7810532ddb800f GIT binary patch literal 3122 zcmb7G=}#PG82`O{FuU8KrBI43U=OK)I>j2(`qT!8jmkE(J%fz##n#P?6BPdwy7m~=6T=uIe*Ww{o~&se+IAz zXCtV?V3_1&1oz>Ta8C&t5;7ddX^gDF(|AV1Xc%L7Hi9soi{N>@AlEO-aa=efOm0ZS zL1bWg5Q(;|S(lQ6~GZSWZ*qBK1 zrn)a3H&P=;HYsQKQZcL=kI~`u8PlTEpe+pTNstPa&V9@_vxc3{D(ErGGP6A?BbPJz z9QD}nX3*qOrRmBc+lZg(H!@BT4p7qsoQ#4tW#k6TIfmtLZW*I{%Q@6Gw|G1(MOl$G zXVSCGj?zqi4Yf~Z&Dmr+&!9q?A{!PnF)Lvbc8anPl}nFHw>gteH+m5+xDm@rd>9GV zu9hOktkIS-tjV^)iD@%#cZq~=j+Lxl`KGWzf?uwp;fw+l4tqU%q3eppJZXDho7!E+ z?c#lpki81`-(5o?Jd~WY3_G7?N{3elR=COA$y8fkGG{N9yxU{80L&p4GcuIUXXEDa zr1V&gH^5zzwT`XWrsIBW5$=GFM%3%rETjST8m4umFr&fJkp`1kUpfnp9}O8DFC#1Z zISsasJZ5#gf;lnKsbe0U3OnyWeA>$8GnsVOHWPyx>DXl2>Ya<58DVrB#z7t3LOQTd z$6oAHXfE~Y&BEKi3RQO;70S=HajsTirm(rZS&n`A$0nAv!j=hSA6G3a2~l6`b;!9% z=6Yu`_B{Ku)T)Eu@O*}~(Rv2^`+En573x-&QbcIB!P|^QZT6wGcgR^T$ zA&ujF*-AiFl{6R6>)?}Kqx5!8)(KSb4>%WXU4SpT2!GVSfIzfi0l{eF0xDXsLA!;# zd~P75Z~@7i2#oVi9XP15tV06!-zUXkJ6$B6_3pwF8Mj;vzKvSI~=R%80z2 zZ=lkLUlHyMZVFz<+J;N0jE?d?FixSXjLMG(NDrWr^i}?roW)wah8n!iY~MgD-b5GP z!V`EKgLsDn@-AQBBlkW�O}i);LlboP*4$ZV6|IRsx`5aC#^W!1% zyWzi$aRfCytYMc@8rndz`!+(}OCK-Q-?XdH&R0`RTBj~>@IlJc@ zSf}uXdnp2?c=QpVDqd7L0)fl4Q$S)neFGmMf{&r&6V~%QD|rF?@hOhrA|Au%PSzU> zzTFJ>v*wb&a`KA6uW$GVTb+DltlfxviI1Z7dN)F+5@Sv&mg;nc&pxLl6^`g7$C+MG zbDb#$bHFvZhtgs)bQ9}G7g7DoGX1Yh^g~7cM~Wbxr@nyL;f7QM@w2kPv5hDkyd(lE zfcu8PeM{i3u!XLo7T==<*9gD@BVH^4uEUL`Wd(4dB5+)aZkA<$OR$H_0ryi$;`PPE zA4R8YvfTyF>59O(G(aitzm=$KMfI*S>WSs*w^mi>s&~D2yRerl+n*&+EtQQ$#v!N2 z_;Y#Bmj1e%rK+Q}bi|G6pc_*-+RBA-9W}BZN->!&F%@<(0awOR4uztr?y{yf{9jWY z=y9XsM&KW~DzBq<`E(Q_DojVP5E0|pyQ=cWdr=1W_Hozq7vx)pL;T zCzV;+bRojA#fdnC$GPcbxI)~Yvh#$C;RNma@gz?^^r7GR4j{^JHE-(pU;h^J$M{86 F=s)n>TQdLv literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/SyntaxDocument.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/SyntaxDocument.class new file mode 100644 index 0000000000000000000000000000000000000000..c5df0af73b3f283223bc146cd7f21c7c5e94a102 GIT binary patch literal 11013 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 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/SyntaxStyle.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/SyntaxStyle.class new file mode 100644 index 0000000000000000000000000000000000000000..5f31f60ecb26614d95a3ec343589d224a9af54f6 GIT binary patch literal 4113 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 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/SyntaxStyles.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/SyntaxStyles.class new file mode 100644 index 0000000000000000000000000000000000000000..505231af78ed1ece4efe1dac69d1db5a7325ecaa GIT binary patch literal 4818 zcmbVQ33Lpe!20@Ht%YX__o7AQhV+;|Pn9!u@mb6Ltru)9{dwWjX(>A^Tk1UOfA?NfYXY}>;{#)+7 z@BJ|k{pX(h0BpwJG`s*Wti_A);##}}FBOlMsd#xUe0YV17Mu{P+cdlquTt@94H|CO z(1h2hcx{lMuT$}Q4fQw~z#GKp8^z;}gVJJ9`0w6Ie}PmcZyT8e-L1HsVV-t1@x8mGNjd3sHknLilF>Ln zO^YUrcJ%G+xj8;`L{=&*bmij?te|$%w34PwgJp)=T$SvzvN_YTQ)a%qeOQ6FH#^4U z>f@=5IZ&7!HLW3IG|ipHcs60AhYc$wzLz#Vwyj`URUs816lk_UMTS-2F{c%@IFZu^ zD~YAkX3|LaSjobqnX&t(6K2j%Wd$Qac~HP90!!xPkwM!c1~l+V$`mLx@bzVEYes<{ z%VbQeH*Mteg3P6^B1vY8wBk`uszt#P*N-vEz_7CdQ?EUd;?XA8uP%Iqs%#^1jNWAZ zDn3TttGJ(yq~haj6>4cqDwDFelEF3sXI;WF4cm;BSzp=KUImwnC&9b!P$;WoBDG1= zuAKGK*O-DWq|e2)lyq-4GoDHoScd@ciXptVgjJbTaFv7S9&@JOuoDxerC`%z_-^^% zBTU+#kkJ){ALFnM;Z-Y-3%Aw(wuq&93!+1nT23ZAbD~*4-S)t=eV6!c&SUURL zUPz_MhVb@O1#42ys0m9v!lD7fSt~5NEIgjIy23iXhOevmhK_II5e3UHlO47DEgj#+ zcXae%yN+&b(QyP%)A4vbfx6c5U3^bL)P4NY{=B4zbbKFi9X~)^#SeA-NTBs&{6xXJ zSmwBqPK|{nXJIiA!w1*p4~wM3Qvc!Xc$ke`sekY2Q8Qt49O?Keex~Dk+(0@j)ZA#~ zCrFQg_~$x)fnVzQ6@IPb$=IgiH#$u0(vic{b^I1nIxPH-Q%Qz8w6X2bR7bmt-|P4T z{;1+lI{u8m2#o*AF3@u-b++ss7 zs@kA=sx;L(&8y7klj9k6!pINE8NgwE3#WfZepxbaFRvU2&*})ok5i8$h?A3{?Cg9M z)kmFOF>Po%Y@`cptflTcC9BRYr;_J_xp!Pahcl0&?hCJal$DRs_0ol`dGYv-T+Yn! zw%D+cfdii_LaATqaCrsD>Q@fpHDy>C&PWB)1OOqqx3z{?pGDV6pOhl3(!qR0YPyCcDrj9Gj60vQ(*`%OQfKmA%dqI=CdbKwH`o7hQO3lz=nU>l znI%h!>|{>fMORSpr3Z;=on%~G*}d6xmOAupkN5QM;n;DIE&oE>B_&`gd$IOmtl{4m zE&RL5hmaWTTtUoHkZZ0y=;GfP9Q|Cc5cdy1H8DT=8Kezw20nWMWjAUN;BKy?2;~Ai z3i{VyK#jsbdX8}6Rd7Fi0~;>Dub>FE%gbfJS^7fWIRv}>7om-WeCJWyrA9*jkXnR( z3ah*Pv#7g>`jPXvs_juJLmO-A zWIbK1sE-x(vyy%Mwx2bnSx=S~_0jqetLegG?8Gkkxf8&RtWl-i3dFFRdu{Z+2XT1m zPxy%wv1aVW0B&Mjjd#g@3=%IQfFX&OSY3~sncpyXBk=wUnu-ID(!F2BQ&f!bn~Gah z9OVB{R2=#{uKp)|c*Iri;L2!xd*OLsdxfOi%vghxf@=$E?(2yFsmPBuytq4d*YbPiX?BePgpM02%TV)JTQHL&3v>GyU> zc?favdzkVl>B7fCidZv;wT;(!??uZU^VubYel!ejCOhBZ)1h<6< zMOf2T64%2@dYR*4jI*Mota>Z6>?QdFB;QBNPTC3bTS)#mCP;Y$@tLQ56e%2~Z{hhE zaVk^(Z!}1%$$At%6=~<2iphD(|KU)sh}S>|Bff{!@IPR6d$+UZ%W7koQu)X8vDRL(Tk;u&T20IlT|T1zRE0-sCZN?096q;`)%g-dsV)ZOMo6Oe|#^=ZZ5WsWGt=KQEf%e8tbJ%gb8kAEA>!V+nLVu_`3(s=R^VndYHnk O*y|VnVss~E82m4R9_Uj5 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/SyntaxTester$1.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/SyntaxTester$1.class new file mode 100644 index 0000000000000000000000000000000000000000..696dce4c6d44e46b14817a43c18aa2a6bde73918 GIT binary patch literal 788 zcmaJ#oYqWH(`C zww*>Y>Bua${xIm+;sOu|j67W9Jt{ z;{lZ)MNYtzuXujJB+sC*eN1779`^z-hX|jC2wvkS#LgqC{{j30`iNz}79jJ5?+rmL djXAs`OcnD4t>85lcspG6Mbv0nk`8Zv{{XAmz48D6 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/SyntaxTester$2.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/SyntaxTester$2.class new file mode 100644 index 0000000000000000000000000000000000000000..cb4cc3c042fc1693aa59014b8f8af77ecd363e22 GIT binary patch literal 777 zcmaJHYUcp^-*gdS~W`Df~kw(hl(Ieg+hGLE&V>59lEn*CncG#`m+Q@ z@q<6WA0?iND=HWRnYs6H=iGB2-@bqO3ZRF30X(dSSinYz>)7;h!^ce@TLO!AtgCoe zU@e_g?~IjiPo+`Gpf-vME4U~@9UU|CtvY=jSD=Z+77XVWqMo&T%I#Ln==I64-h+_(f&;k*3^egJE%!k iYCo8hI2l)Pl{9UvkhFzsSmo_;zt_;AkAOV_2eRIvh9TT!9aqSm(>UusPnsYW3r>eH|t+red)><)$|{*SNr zLBKZg1N1jngS)4c2zPuQMS?2jMmIWEnh*P2iFz{*TO!gTtZZ#luW+Ck7|~v9bom!v_qjT( z?+!iD*D_FaBHPs5`@GNlaVHYb;536l=!uuo$XT4_+%y~{dRKXV5J`2oFZ5Ax;9?yc zE?i`7JaF+4S%&4ybh+3>onh%ea$Gzz6pvl9cZ;ET8AXLQ7cTH`I$hyua_*w^ZlKiE zPOHZySx~5coH3xOLlVDj=1`t(@gmkogOgF|qdm literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/SyntaxTester.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/SyntaxTester.class new file mode 100644 index 0000000000000000000000000000000000000000..1e9bad8d01a570a729c380c3a06dac4fd03cc5a2 GIT binary patch literal 7904 zcmb7J33yc3b^gz2q&FHpgcbw{uq|weg;->R@gfl$NeGaT1V#cP?8JE*J;aF7j64en zJGEmcwzJyV9Vd3;Bwn*R)I8zPY+al^ZMvjQ+jLFaba$IBuG`}N=e`-~JxM^#C*Hm9 z-gD3L-*eA7@6LD6edTKaHp`deNa1;XoQ|UaPkYmqe4MfHLL4r>5=RBj#<3i~62n)u z{hEcZE5$eT@y$4F{Hldti=zgfgDu46@H;X5ZX9dzd;0!k3%?)7I{bmY{KUc^#<2l^tS>)R zxqlMFpX%}-$M9z=?a%e`7Z(09j;%_z96wXxf29u&|Fz2fn>gC=^Emz%e^-gW$3N)n zKWguvwD-?(yo7(z$G=wM7x*{r{d*k$f&bLr%i8-deY~Q?|E(ndqZ9wD49;oqRZa*f zNF**1DT_-~%HvWYR$O9IS;IrrHIu@$S+5 zkeka38pA~0qse?GyU$6xB(ui{6WL5ErLR}dBb}WiY32A(CX?!PvZPxYW?7sdQB`Ur z)#YT}{Jsp;TM{Pgb4J{h>PDiW%rQ4DsMwZFC-XN7%9__56hyl+qpo0aUo!0u6edR8 z?2t2(;z(UzCgG$GI@zSY7YC#Hqe)6x(Kntuna(>?lQg1r&~(*uH%nR7%AdGQX3}mt zPwI-4b23wy2g|N(rZCxOrnsuUgr2eGz~rctrxL51L-x4G$+6W?bZfU=Ehx|LaPp2| zxgl*$ai3bdjyl;v_x6IDPAKL=;q@V%4H%p$bB}ZG(hEx=O1T}GgkV*Ohi^A03KOb} zV9{XSNgV5UCJkDaY_g=)lB>AMGY-^~cPB`dcd21|%pDb6;+xp&oXEHO_9@M*c{QW% z5vP#K`_lF#eRTuy@0c@BMI!E$puxu@nQ86W+dY+VC-ccnnv+pQNcUGA*@tT|pQSf* z&dQ`lhukU3C_AQ-XmG&W^PFk*otb)&oPMA@7E;}kt1a2gqeg)fPLhtdwE33#B8>|= zSv^_x3rsUoIEjRt%dNTUD&p8qtOAz%kQ5y+r0If=5}6{4$P^D#iRsnK^ty{NUC=&N zJU*ByWE1Yrq@I`Bpf;Nn7aNb@V>aH6_t>}x_u6=eK91vrpeYDzaRW=Cq@M>eWy==1 zhRbBDE!WC*j0FaK!&a`B80`X@;-)9vY}0_t zjjS_)q^Xb|+5VEgzRhZFvm$7QL^PfzOX?`&~!%AdGacPsk@V*{B1B zBO?rE)#V+&+IjHa?)iC zZfIV&U=$9=?!6=9Zo*H#v7DPX0gFjAoU2R0z|5LNy_mFvZi-9YQO$8GE|3udT(1wa zGJ5w8G5gGv744yL?*}s@WI2VD0%|IgbN5cVSw~|C^H6h-Mr~DjD4Exo9g<&6f=aTK zB)c=&V`)wC%#XU(HJLZg)u*Q&+&S z*^;L;Z*-|5tNpB!Gso3{>RCtCgrT*>I^T1A&A3Y}U$yuw?Lv6mXlxEgXq;JPKi2Q0oiVc2<*S1SDG;L91iYg%(6{=!J9hL8FxOlWa@7TwQt|pk)@50^&&fKe zl$$bS%ye_!`@%c9Ff$*T(ryQ7Lfj}cHnhK^r_X5F;LG=m=6upAX|Qy_oY}%_$R(@p+ReZcVEX)H*1UyA<-9RMl|#+?8~}G+-%kzH8u{1cl070UW=`Q zwLwGA>j!iLYGtM^d5+&xrYkrW)-1Sw#?QlHI7njp?dRW_xvp5DI_RcvGT|@;Ymo2U z9Tn_8zn-sEiS4i5!{*wdfpIo<7zG5EUsOd#n92hKGj4S#yx<~UaekENqZRAy80_Ye z?-ulig#=N)7;y9X*3j;QZZ@Cfr9si^C@b<~g3E&Gs`R1KVLn(6y z7K;s<93?T$p~jLc7psv7f2~7aV?(8Ls-m z+84!zs#kxEMG0^Z{A`8K}YjwpM;mX>Lh@qe`Cd6b_;#qb$e z(};Pf)PcIVhpMx%hxxLI|Es65_|TUP)3@`vf@%OwWVHq{Ug)5S7jV0_hu)Fj$rOps6V|O`68&9L0 z-4*PvJdIT?6&@~Wsk_v}WvXFKm4_zn)UEb#x$0eag@-lTIg7Q!b+0R{Su~9+Jv946 z>xOIbNG-l!i&v-7;$gi%ykVH2Z1k{+uS;~uLo1tQhR0Q9HMZe#wGP#7_63#KEb)jZ zVJq`+jkag8RoPtY;X1yqih8(STTb6_7Hz|n);^7GecG<~@cQ-ZPvJ%nH=V+EzIJ%% zR349(H-y zt>PoKk?)zw9= zraDs7Fe8n|M3kz>!+@`}hrKj^->gq%v5LNO4XXGH&r)1Vhrf4I{NT!4B$uDi=SX0eopF__*=}&7?vmwi;Y|4 zL5xSra57@?o=|;tsqc@zuktsYDBg*8(OV;W|LJ=z*O#H3w4=0Z(HY#_zu`q3-ay>< zdl($p_#$>}+~8rTExPe}9H?o20*f1?Wi`z&;9wcr^n}rU4$*DjK*t*PaJcRkJ{sv3 zw|aOZo#<)UN>ukI_7#yb=qcMoEWjfj<5j55quju&%SImMCZ48sJj`3E{~_vqnD?^@ z>Z;aULp_^_*?aLIPiF(McnI$!Kk8mQjoN!ZQDc6)scM~62~BS{wHPh(kIc|B4dCe9#z3K?mnv`HoN za66-saCeU&iDN~)I{AYkXm5-b*VC?*cojK1+nuKWzwKE>5f zaQ%}+`5EH(tifspuO8!E`8Y9Ii4pqT8qm_$I3kN^RMAPK0D1c-!ynSerD@sW9%3`}N*nF#^A zxYpWzv75EpmfBL4YDF`kSf#bKt=(I@+P&4bcHgYFD*euVZ;}}j{*~pud(S=hoO93l z&bjB!ldnAdD1hav$HWHQW#Vq!Q-Y)Tw2ba8!5ZA>$7f93k7F`Uy;X? zCT8NRrT7}YE{|^*_+|;_;#)%gwu$fHyE1)B^nB0c==-wi2L^s9N`F*>ALD5QKQXZw zKlS5h^8UGrCj3H1zm&(XO#B+Zk@G$yhCCzto;6X8-wN$_Li@dm=kNyue>CwY{8{+_ zV&bp(n;(Cd_dg8$)4;z>bl`ad|2FV~!a3Xewr=a{>)*M%uY2RB{@q*F^=<6#-QBUZ zXKSBARnK1gfZY;;~fPj-_|l(Gf?X?yMrVZ|Til4tDo$?CEl4 z?+$kLbanJA6h`A=g;}nmk#r>5LPD6DT6*|)lA^G)Ys0$jJ^j0b{X2WQ6l#0+rVho@ z_Q8Z5b6SFW7)&3EI^>;};?}6s5s$``K_}`Aq!rXI(vy+!Pb~6?KN4Sh_v$h}tdm`d}nHlC;y2c&vTl4h3IFJVgIj^h9D# z@5t~TC)scBiIP&)6CbdnJM3gc<{r_P9*WSinR$|3=k16%qcqH*zeIU998(%b`vO<^Q02_@~(?Xi@OgcIuL5h>k0xAxA)q@5Uw45Zq-`DY;mQaHT(AVV|6|75Ms zQ_&ya=fr5Jit<0tq9O`4ImqcwJ9JN6FjGW?CMlr6p|k~){k+}|iIc>aT?Yr8gmx-J z820SZshiSSpWY5_S84vmq{StC)zo5NJk;ENT?-WTE%~(;@FfuKzpZ z10y=>j6uo?pEU+Sca3tV=STQZA{*s}Q@CSIo=Vq=7g0!AFl`U)+hQj)LRdBoylCJ* zES4;G2L5Z{B~~$(C>9H*g@n>gscaz4an~^zl_@8kgLTP*nNtLMd8fv1VR(5+Au!>v ztdF^_V2va~cG~H*hwU)&+?Ssy&H;k7CF`^5RFZR~TF+Bo8VypXU#y= zD+q;+lGa8#9*^#eaEDiZWk9vr&4n27T0B22?R;jgE>)TF`LKD?M;FgGZ-I94mcYkQe!G6O2-n}X<-*$ zF>usUd@gtEoG`w zDpHn(er%`Ad=6H13w;P$s!Wwz*n!KL#^X{a5N6>WcqhSbsR~tTscEXpQq`)4m1*+D zl7*S20&2RYW~iBls##2t~!q?W2t#+zNOAr3us@iJe_zJ z;$mN;T4<;yOEs%SmRc;7X0^mpEh2EKVpW+hW@jO(F*Q}ive1JqhFWf^3)BjQ8Tza_ zxAppwNR*e4#O8K|(mrSZh?7b?p|;tUTB%wswMrDOR2N!mwQ4g|I|ZsW790#(xB@#Z zwN_nZ;XSy;QWvXB47JWu>qXS`+=ERZ!B8ER>Qrr(>QWmFwb4?W+%=7_eqIGEAzsHsZ{}?uXW?Ey6=|gk%V} zSkJQM*zC2YdsjgYINNtEWMd{=-LbU8R&Q!9-4*y6yLHEtbZlN5Yx3=#ti1iKhKtt> zs&u11P28IWhj(R*U%UcTmAkBI+${mh76pm4DqiC$<%Bw*XJU2Y zUN84d+v2d>9?)0l85Vjg6kU^N`S^|!-fPLrBcU`~C|_fT^i(C3y2+7Z%DbRZD1Khn z-XW{K$Ve`@XB1ES<+c~Y>8?iIn~^ATG&r_*YhqD0d*D%Q*Q957`R8`EOF$RCrNtEndRAp9` zW?&sh*%->XTESIo43$lbPGH&?s_v(p0=$OL1{i#I z*{)vf##Nlr0@&C?t7J5Q5GDDfWpeE-+((I(fV#T*6sk|4ra6N^TQQ&0+l;0RW}L#z zHa`coZ6!?)qVf(blNZ-#RSsux&QPl<;|%IrOPje;olrJ)QOYW)FUpeTcL z+suHkwY1iJ2(uM##VsW2KZsJ=avdVnW6_GO)D`4u#(0J(N9DBVaSS8I z9fSPQkslx^rKY(&#eUL=)GV?&N+Ko5<|s|R0zDexh?z&)0gilnG|EvC%G5B#wqjJ% z)~lJt2I^@2YiW@mb9t86;|=_=^%{EFqFmRKYpL}*?RWDuooE`k-oOote+=Ac;Ee`u zGVmtQTjd6BRxjZa18;tr;#B1enD-*)^%{6f(!g6QY0TSrr~+Leo}(FlitQ)D{kO7C zOqpGhi8{NCiR>z_5AdHM+11osS194n7z#~HL9rQAXdnYmiWH9Y9GbnSHv#`Rc$ z8_LXu+7ph`%xS^6_)1P%WN1nSm^4!gl=WdQXcXQ;rTb$-Y!J1OM zU5^yuTOuE`Zs}q9Dv;o@3Le9%3@)4~bEbrnA94n6(bh>Y$cJ~~-C7bq@jMy(siBCp z>ZayJi;rV9D^**Yuhy4A`-HeEK>=%y!Kz$_+la~!Yq2Zbt>Xu*#(VKTt*RRDXQqe| z)%YNH7II%Pci%=ye(t{AQ-2>XBNBe+9$atVK7h-B?9FdIl^fHK1C&Rbtx+Bz@5I5{{cU` Bdf@;7 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/Token.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/Token.class new file mode 100644 index 0000000000000000000000000000000000000000..946878c18502d12421ce4c001ab9672b32cdbcc2 GIT binary patch literal 3197 zcma)8S#uOs6#nk?%=Bbvwk$xxlDGsW$-o!{1%fOIL8A%VgkXpZok?dhVbUFDdLW?U zE&}pmi6xd*^5zQkGAPS&S%zdeq2pB@!*QI%NDQyV@jBj!<4v53!Hi=R8MztLVa2fm$Ch9m zSsfE`Y2<4#1zS!|4AXLbMn^$MQ6cP}pSBcM_fHnj+pak?ZQ539&^c|{gS_Zc zh!kD3;3}v-g=pTgv+jgK&9s>-44L^7O;tC&oX*)}Jf;g)hJ7?$I zJqqg*iv;THYa61U9%qa$m-pvv>riQG)G7>`qj^ed`<;xLA2JI$`SyijcOu6W>Z)B5 z_xi;nbxWwIb*5zIY2H9Z^Q@W5n|3yJcy!XrxLs{0nYb$~C}_^;qyVT=VyRUGsB%$M-Ziib z?|Yp@@q<4$49Wc7Cjhu1IvNTBU!=Q$v%w9vA- z*xlz{f~iY%2g8YwvFd^$dhOCwmyC6DqOWi9PM4II&$;i(n?=4fGPZ}zDMs?@o+`Py zd@Ao`vogB<+$DP%i`ny*U}zt=k8lB7VqNXUoPTGXwen;v-8DrRHJT;$ykYn+Wfk7sb*L zUI0wL4`zU14iU^@f;qxKM?Emx$}THlnk!(MD`1-C@gf+8mKTivlsrv7tm}j&cRMe3hg1b>Dazc{moBB^XIur6;s@W--y7H zcp)!d)DxOs45O^zdsd9GlM*rhk_?IQ2#up(BT*ZV{sMhilVsAvVR3mMOVY#QJR+z2 zFmBf_)gP}k92Ix>vCLDa`!WT~JSxXYL6%T*0cayWG)a|xktC*F=<+ds4w z-^0p*j#*d92dE7rdHYZuVs}x09}PcXmD+q4tCP2Pg_E~w7{h8batLIX>1$*#**7yg z*~?WZGjNGom#KG+T35)zRq9^zz{vzR@kQCssg~C7tZ>oE89zXvF}6-G4l-Hcq7k8g zxoBiV$BQ~%g3{5K*6}h`UqQd0*&lvp$=Wq@Nj*TLhJnW>rEzlVnUw4ahO6f@CVPTi zE_*Pk&-wKQ^}eFkbu_TMH}X9DEHwm@N>-9e`blX_YJhJ@AgTJfqz(s@I>N9a9Q_Z3 CKBA}q literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/TokenComparators$1.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/TokenComparators$1.class new file mode 100644 index 0000000000000000000000000000000000000000..ac6c0451f5dcd459503b4fef4faf663db00398f2 GIT binary patch literal 223 zcmaKm!4APd5QhJuEG5y4n}~z6hF54v9K?Ya7`3U^+HH1Acr^zP;Gx9!>R|rNO#Wp4 zFZ2F9UjP>93kZRb5bn&?rgD`lNf_?US?a`GO14}X>t+Stm@ruCR2i4+Y$L0aISTX$ z0 Q-vQcwc72EbhH4jez8efV1poj5 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/TokenComparators$LongestFirst.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/TokenComparators$LongestFirst.class new file mode 100644 index 0000000000000000000000000000000000000000..30366dc2e5a0997cd989645347bdbc403f7d17de GIT binary patch literal 1369 zcmaJ=+fEZv6kVscp>;;erQijz3P>+V0Tsm}#x#-;t3I^h{ZJ-lpv*KgQv-g4zu*t> zVq!4y!T9V)8P}N>D4oWKIs3lXzRjP%KYsyO!|N21$fb}%E(r~J^%T@oOkoL+H7qNK zl7>|cYZ{(tcq)+Cv~0`Y5{TyVy8^L_vu_HFRxR87&^g{S-MZXsQ8Qk38nU%3T}#P5 zWz0XYJORDx*iF;(w=LK6Del;|=~i0O^GsTc)kE*p_T@=i+GeTl9GP~-Ic`f=`i|?( z_s5n6v_@bfVm=oREDurTcLXB-s=&k$qcW`t7&Tuuj^4|5ukc0YmY-y)CGBSEJOnkyQJ`;ez+>lcHdt5E6*=ED_U3U^l)~u#2{f^82Yhlo?rsG?! z(pBVUIBj{W*Nx?rY9?3KvOcS|alWaV({UT-wxyPu8QjLQ>Qje-n>yC5*Q0@Q^yphHSmV=A=_1%*EcPY9vrE_WS|;o??OG$ioooD!FUgG&zCOmQSd+# zEz@rL2Rv~9w9U?^!$YgnzyW1KX_bMiX><>>?(ow3&*!b(IWDVHnF&Sqb&o9ny%Zw2 z0iAzqj2x%T+Zm-)BIO|=Uig8?H!=~V`6dG8493XoT?dRKLrJKS^HsrL=p7|pFMdaK ziQiWk7wrBSxfqo(Diu*;po~+BpCfU`$Y_8zg*f>v3w%I~hveo^z(RnY?IQHhiG^FZ z9aOZAJLDp`%UCv*nM}W7Z8N>v-Z4(qW)zCQp)K({$B2RqH`s+RE+Guu!)yRy;6Aws zCt|RyZqpm25#~`76T>Gq)pfW`7-zychD9+S6tI9t0bRr-={UWUSiuCBlqE%a;;erQij%5tO!6hJvD4#26w85%r-B?}svhfily~Obz%E{(?Wi zi;2O+2jjCJWn5>b+&Ya9bIv~dw${GPpT9qU0a(QA9I`0okV7d84P|vy)G?Ps6;CwG zD+g0UO~aywB@IsnGOM;@2WtY!Qh8e-weId(0>fLjV}0lz?O0w@?zE{H-Ev#9y)8Xk zy?e@3uy6YUMq}Ug0?Q9JY|jq_^i9XHy!E#9eT(Mm)`5TG1oF5e9m{OGhnBPM9(ANA z1K0Cst_9Zxv{q;&X1NrPtPfC?Hw6+wO<-(*QJEGM$3V6Y-^)&q`YdzHPtt5lXV3h& zb6~Xsrta5-nU5D#`7s+4AG4Fs1RyXyfa=vEYjxG#Vw~S~CxL9k-g9Ko^;mx+4jO5? zf!#JQBUj^T>ubGgY}ag999rA{tOm#a<{EC-Ygrq%8f&3{9P_G99R_adSjKZ5FVwMu zmm2CiR`E(;BsNYR6PVP%Evm$9mo)oEEs*c;sla%s>Z|Wu-B*ji{r{qIA<}*zJ#M7n zhGg27vlr}h$Agm&OP`E)tw{qrREVWj2F|7xZD!Nus$Jcmw@&w{u6AWA7I~$76#4t* zkiZS-{9#j+*k&%zFkdEbZW7X!A4q(okU*YiCRA21LRpU-Fp2_SLiL=d3jRXxB=6<9 z??_hpeT8u@?w(RgQJIRAp%^ODRHo06Ib~!rM4LdG@;nKe#8@EV8Y)-{(Tfp651m-J zh1(&cW!#~Zz+J|&sKR*u4Y^JAxV>YX;$~FlenYGBJHwEIj29R|7#9!*?%{q2Vc-F! z1Uq8jVK4Ct?*#Lxj)}n?n}{4P5~i7Onqf)IgajVpad^*SocAcbv#ffILn`t{e&`?J C{yxnB literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/TokenComparators.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/TokenComparators.class new file mode 100644 index 0000000000000000000000000000000000000000..23bf9e2ec0c9fb51834f400e53371ce35e0acff9 GIT binary patch literal 810 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 L8QkK&4Y>U;=nb)i literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/ActionUtils.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/ActionUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..44213d52919c7e52ce80888013bcdc7e76c122d3 GIT binary patch literal 13824 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 KaU#YPpY;D-N<@SJ literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/CaretMonitor.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/CaretMonitor.class new file mode 100644 index 0000000000000000000000000000000000000000..c156f94b4990c3e37d9192d7bf179a8a885e20ce GIT binary patch literal 2985 zcmai0TT@eK6kR8`1MzT+s8vDG3WT7h_bMnA5EKny8`R>ZdPoisOmfoX1ktv(wfD;( z=v&|VT4zdh+G%I{+Q+_jrk(zXKG|uz_ICnFAWR?fUH4_}z1RLue);G7p8!0EFN0{s z`378QL>FQWn38!~h8Y!-?5ve_DB6~_<5t>AI4L_jVdpa@^+HN7nl@=O z?&N8jf-Qy3Vu6#XY|0tda6J6Kj%ozTIQuUX>6o3gXgrq6TGPeMyp^9d=hHk1#q5Nc zzHH`GvM(R{oTXGj!=c!6;cnJ3S9508ikb?0Av$K}EoaImBs)*MI})Nwi7H%!7=l+p-qalY*K^ATGh~3 zV^Y;&)J#f%lJ)V`gq4#8L3?vH<7A^iY+FgCqhh75*amc{aIIJUQ;7#NW6yO+m9xv!98d#Cd z9WcxLs!0)7{5WGLiW!#Iz+Dl$2iB%laJUi9%rBGpI^HtyHr~;3-@v>7cD<1DU{!OGjUxTlQhhcq zeb-elmm}(>xa6eL(qz=BygICJZM1cgG&I@IsM;zCp3FMdq9k2kG1EnBWULON4CJS@lr} zn7N#KnvT}-vDILiy^J8p2&Sw;!CaL0$g$T!@61~nd&R0D54*OD-z#z&K6s>u`5pC0 z8>^WuuVywl=LX7!(a$l$-2=*bIfo;UphZHSHFzT--x~apBWnmm2G*btL`rCg43yAV zLhzxoG{Er?EdejnV?Tm;k^YZk7fxUw28m_}eK?6Dl<0Qt<0y`CM^6furdEQ~LnKi= zQ^qsGy@z*=;&4Ze!=So2O}8V;@NQRd!*C;><(~&OzPwhhIqgpb;0Lt6$am07Fn&hU zSNO}_G`myF*BIf-8~72eb6z>y{}^q)TaOWn&-u#xo#nlsccJ)Wv`_IOaHND?-{67B zl+b+2om+-E`&;!5a~+$^alc_sR5~m7f%1O+UhnKkDjW?|BAnI$g_Zw7K^EBSQwT07 zG(TX^+#@^{+FQatBHPcYgbpPT5n=wyLHd+2pF8>0#E>ZYkZEheZ}^>mhP;p}52JrZfhRL80AUY48B zIpu}TG7GbsB#)$RCs}=NJ&oJQ?9{6k{C4Y?QN@^-BuB z<-((K6HtdsRc8EUGa55CUREBav@lvVleYrKrE{9}%v8}iupTpsD}5`DC+Y(6Zw8X9 a3*>BlApXrj90DnB14JGU0dh`-KKUPNguIdf literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/ComboCompletionAction.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/ComboCompletionAction.class new file mode 100644 index 0000000000000000000000000000000000000000..be4b562232d7307e7755617c00bac56fa17d7c64 GIT binary patch literal 2274 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 t0OHo}33|9P5Z8jS_ zD&CSi0Z)c2QB4NhGWPYpdzek%`ia1F8v9YG!gTpq^r}g;7S);!eOET# zt~^X#b-)9+lgiWfvMwl-qynN$Lxp;28Mymm@6S({>x@>bj(uCMi0!iaPs0*B~rn2__ncO$M<`f0&YSfHtYTefZIe((R3p$>F zv*uO2E$>aGyy;aP3}V^BeFqP)V&S2KM_6_67%L7++FFArFnMAGy&9r%|7Xq?)*bwc zCl<;MHt^I!#lbUdI(Uv3Y=7?{yRsRio#}RFC{XBV!wn>rQB7kC#LRU31l{9`5g6js zs??v+9UB?5=M*?)aPesN<6@%7>81s1Jf83FCVKYSVp%&59u4V*l64#s-qxW(n7-+-(3#a~oBgTk1{lNqt z#{~M(2c7z=2{%a!Q%pBa0<*j=;s$20h&e;&711`ST)-G|M4iG#T6toIaS4}sMnYY( p+PcE1x_~7{`@xj9#GZ^XqduF!brx}hwuQ`&g~<_ur?|~v`ZJj_iS_^h literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/DocumentSearchData.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/DocumentSearchData.class new file mode 100644 index 0000000000000000000000000000000000000000..5ed38b4c5aabcdb0cf75e0ee6fc133fb517c901a GIT binary patch literal 5958 zcma)Ad0-UP8UM{*lPtp(h#`~5Cj>pH#>#y4?G7~jIJ#kdW(%kB>0_-$G46w13~w^b;= zBg@^g+#_fA%Cb!u-6!|H8^-srUB`|vPQYbFxL=+R$nszjcFHqbgk53m#vU=_Asu_e zsKfVVd00*!(eZ;YPLY#S@TiW*G#IVRmb5l4Ti$-bqNa8YCC%&1jb>fKOm^0_+39$) zbB>1L4XI?tHk0-WGtpyd(7R3Bw$e!r<<9jUJD#XZTb)*4U90noRDs^K*{wlar6HWQ zx)Wy1YD{!$nAW^5vngqtecfi#sxxDDoZRa=d*XG=+*@%okrKJahMstA{epP1LlK^M zM8c){dpXk3+;}o>&(q+qK5+$gX-IWY@sZ8(q_w!GYqgbLZmv%7q@+0&GZQP!bXmz2Ltbg> zi&@C1;C)t~3SoM!K$$bm4hbbeH4iTXW0)KH5-|+J3?a}^ zQ4m;dDj9OvkVfw^?buq2NDof07Uz}RB18hZjvwpziH?0NH5!WZX7Z4(?np`cw5F|% z8m4@>&EkK5M@r&}37_WEZzVhOd=^t4ZR*N&E>77CQa$o27o%pcUFQh^LN(Swu<(V3 z(V4ZW-hxy=Hr2>+jF29d>{PBT)sv1{3*wT{WjP=R@^iYRn1M6VU|=@p7?_LGnFt2< z<8d8N7ag*{$QJ2A;)p8m10aw+4$d@H6~e19UuZ;03&BU?I+? zmkhjwU(inmUdAg1eu>8o{0gsXI6?IL&|uQ>nt|7GK*t*f-o#rv-Zt=Sykp=u_^pB8 z;edhP;|~Ttg^dRODBS;qb_1Ja*C)%L@fQPsmEBADn}JWDUB}-Iyo-MjHdTf^!G2~> zJkcRBIKqLV%IOAG2L6fnWce3Ss!FEpsx=Y^2L6o$3~-4y9se=#U%YQ%9?lT+j-}j- zfBt8nALknQ80Is_jzo5t{|y|(=QNBOFu+Osf+I(HapBO_*2%$q;%XT0m0p;k8YT^L zSYi3g!Re|0Zr-w>C9Gtpy;e0Q7HH491kAZv0jnd;Kl(y4AMZEqraUPavE>gu5)$2}rhcaMi`+7M)(;+kW`{GQ}R zJvSN5R};cH95L9FM^mB0-Eqb-)U~5mTxs8V56yJd9qbfoYlp?pKt0aQII6uAAmz?c zUZnD)RWT(uyAh$gy+XRv!i64$+}rA;z>D*3j%cfUY^%*;&n18(m43<@4GA+tz;p^& zY<96Sj?IlFo-C*P#|@aosjE{udNZGr`bs%>KU5HU;V7gfUr%J`-&q?i_TEri(~72L zO@-~P;10?CJkZeK^+n;8BjDqVuFKb^Q@t|LIjBg`SP9MoR)@4qmIfDU=afBLL#a1P zb1oyKD&iC|uW_D|rWjbmGDkx)>YUAz{!;Mg1<4p7S5EaBP&gqEk-`JfG~Sz(Z8B#` z0>tgOln)r*u0!Bu5L5pZR;fn-z!oNciG;u9KfNMS18Wf|J z2dRD2ix&igdryeIlnRUpmLgr~LZJegw7cku3C*qCF_~p*i{(!dnoIK8kQl&Gx+rx9`HR7UxFI z9vFVqNVqtVPbF8NlcuhvbJsBr*P|Q>Ohgx|kU}-OF%uh4!NQ=*BEc*Cn1TIiJ ziQ5Zdl1~YyU^QaYQ2;N7FVv569UVNdu*Okcn@B^IpKJCbR5H9Jx*H=F*X~DP2X!1N z&sy1JF=}?8JW!Lx=-I(qe{B{e8%7==qQ8k-qFm($KGa6JG06U9}eyOxw!^P}M!hSqh;-m^$G zmo{}OY$Pz9ER>ztE1|XoaR!->yc>w#dP+W?ftDb80rH)KB;N)V8q*kM{V3Lv(hm{Z zkP5kOhM}Bb12@ogq{onLCWjTSBx`YV1@o$WAIhS{tf*u-bBVZ&kMMND%7OfGipY&r z`zDm~ze^KvvofU0;gMIrBCmdhtG>9a68@z+Y{>_IUOD)9MBR$0Ru49EWg2MpWGF6N z<9ICS-zH9Mp>nd#qGDc+$A#+DS0D7%hspz4uo_g!b7JLfQUu1zeo}o<9o2`n9(uhr zbPI+@OM|6!YgJ&I$}=Zgm(jPt?Ua27qw7xk_b&Q}Ja9L?c@MF_mvOlb5o~7--GP&E zKk`KHYGTDXNVbHG=5zv(3e@l@TIk^M)f}IC&m{ zoGf78iqK}iR!NVS+=e1~IPg|x@exUpeVF9pS{7AcR$i#Uth`X+NB+leL5fH z+m8~>=tqRmn~~eLqG;_M)ym%1(dMPE40G2KdQ` zXK6n{JxCxAp@MZp0C7ZB=0#PyfQZR{Xk#hu;vr?uaAcmMWX{})8I(DLfph9%GBqZx T7Qk37M49@r%DjZ)eYo`h#5U8d literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/DuplicateLinesAction.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/DuplicateLinesAction.class new file mode 100644 index 0000000000000000000000000000000000000000..2d6a9b03cf69235bbb91c435f79b284c6b1b0c46 GIT binary patch literal 1696 zcma)6U31%15IxslN{mX{q)wYs`T>MEPKcn807?0X9Ti;MG*oVQfngN;CRLFok0dwd z7x7#k48sFIfd9f@U^pwAnHXyr{BXT@wR_K=yJznofBp75fP4664jW}GV6%*OuvLbI zcg1>7tb4M&FUto8whio*@gY7c<74d3V-NSm`ozGe3Z?sA;3YKj)%9bALL=;Ig@u+E z=)*zpL`QA+#HVMm6?RJjgTx*7-9TGzC-K4{whjh;-|M)E zmb2ph)Vs%{$KQ{1bQ(rI-BtLm+IsH3aEDfW?geL7qKAp~u+6m*_WEIP)w??na^de^p_iW#SPI4Lmk+gs%-eG2x(X;wjj_ zwajz$sXOqKu@=T1SE!7YG}Td2!0nler(2_Ng*|k%uTz!sS|fIV6G743xQIS2Jt~N4 zBBnIs@#$$SN+?vDlDKg3NIRg=FHfSm`6t$(OQf!_Tx~Yjvjk~+L9C->EKr5*>O}At zWjm|A{e*%(86?`#<0)83rIaQ$d^hIU3ihGfqfo9^Gm)>SDTBoGEk8Uvli_UfUq=e_ zLSUuP}ec zCAGrvS6`+WHNNfh$U~}lBRzSQ)x6Cr)<~m@8a5cQ&L_Xd5#CIz`<5AH+`$TNph(X$ zUZYiF{5)>rb=GZ>?k#dDN~IGPV%=ekFsl>m&6IN;Z!tHY`c{csAg(aa^$b*(7`)DH H4z<4l7RmYJ!e&99Kg?SnK6_WOL-l*_Mhi&Bvyj!iG$}@T4MCX2R>=0_v8>C{_u}ql~pY*6}2d4QvW54m-jinZU}hq^dfS z-InP|-xFA1d1z*TE>|51O!p@2v?S--G$F?vPiCBBsfD_|N1uO_;k{IP4<_7pxRm59KC0;4`kK~;wuuL z;sce4nIV_moyA=wiJ2z8NZt~o RqY%GQ%wV3ld-M~y{}*3kB1ixL literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/FindReplaceAction.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/FindReplaceAction.class new file mode 100644 index 0000000000000000000000000000000000000000..11fccceb3d61d6c3613a6d0ddfbe24a7540b23b7 GIT binary patch literal 1022 zcma)5+iuf95Ivili-}vB(n6t7(pwTLVF`&Bf+|(HNP(!TnksJyZS8HcmF*4orU{?L z3m_i&06q#awu36vKx@gfyK^~b=ZyXH*Y_U)UZS>u4HE@CG4T|ev3X{oY+#F_@J0qw zA24LAwLU|xpV%sHk41Q{LSMKH@2lMle#xhHG?Br;)?%vdx2I$q${(pf z1iJngdM_brDrfA+u})HL^NF^_B{}Srsul0+aYF^o!-3EY>WD2O3r}syu`jD^EpW{$(j@Zl@+jsyR<7(0j1Gu(aNxhr5VIW%8a3{{cp&= z&adb9zaV!7w1_MPE0j{D;#vZBkQU6qs1*0GoDf(jVI`rqa38Blt%Wr_K#pn*Jj6P6 L!tjVNGkE+PUw#nh literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/GotoLineAction.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/GotoLineAction.class new file mode 100644 index 0000000000000000000000000000000000000000..d3525939fcaae2c87ff426a610af954a301d75ef GIT binary patch literal 831 zcmah{TWb?R6#gc+ZDVRRwO-?;Y0*}}0nw+3AWd2#ODiPgMMS2%({##ar_9ba@n`v@ z_}~xlM~P=3Q?tU1rDfPy*oQ{XVjVHG{@0OciZ$V}KK;ZBCDZ-? zaRY|>K<6fsd&)7mc9D?hu99JS|8RKtDeNEg8mQr6fJY5%pv}-;%qhc@%aXeCSmcQ< z$SNpdSTCsNi6Ei}))3#GqQ{pZjC1v8eO)CIJ!V+RPV{t7n_jG}HnjA`yW1JjC>45g z?kj=zfq>)^S+Bee1W%jnD@tE{!ZOJ^1waq9h8F2Sg9<1OS4actE4Vs`_&}$Fu0H#Q t^4|ciZ`%XBERyB`l#W$g^Pp8+N7J{fVhuM?c3@b?O{!(MMOF#7e*^uP)VKfu literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/HTMLPreviewAction.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/HTMLPreviewAction.class new file mode 100644 index 0000000000000000000000000000000000000000..21e04fc10f543e99c746400608462782f8abf1c0 GIT binary patch literal 1381 zcmah}TTc@~6#j;`yKN~Ji-<)8QGrr{6%+-Ew{VFy1sY09Br#-KhO*f1HrpweU*xli zfkYGIn~A@`A7hMXb}P2h#D|?d^UaxazH^)Jzdn5dFoPFCB*N&#co4}j?qfp7WEcTV zsg0qe2O)$ptz$;VLx!GLTWgu!?B+^7y|TT#onBww*k*`j4*3x`%G@d$Iq8^IDaFvW zWLq`KEt%)#x?s>2P0N(e7<`HGJcED9-Xk=cF)guPuM~u{#S3LZVi~*0%X#jYYTp3; z^1!SyjAagMri;Z3#=JTCC?>N6U7xUQuUhFGhYW4RJ((;kjB-a!Li{+bfqCk}Wp= zFf7&0W|pfCuLvTkN$!+{WElQ0HA+~GxG)T~IQWO8Vqud#mZpz#Ny@4)?MaieT{vv5 z-bUe26s4+OPV(ZrHC}ZKpyLrkIA_pE zRg|IoZ#R4SVCeOlr=`VJ(fgZ?wibh-lWLoF?5c3&DZ^;9iAJ8sz52L=bCLSNHjR4G zhRSJYwcccRtc~5vX4SoLO~|}iGu<)sCw3I33rmd|%?I1TFpYXAy$cL+M9@Y5E41r? zk3JeHbklm3kXd&R=*bv6N5=_jFF23xgRGaNfJF{n7|ySTtb_q)kjg?pa?ZO2{j}l(jcj%e%y44&tm|$+>que ms3G#FPH$75{A6bucW{?p$a{o_(D4%q9V1b?I7&bV#(o2%v|VWc literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/IndentAction.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/IndentAction.class new file mode 100644 index 0000000000000000000000000000000000000000..1f678e693778e2128edc576eade7c12bc8136033 GIT binary patch literal 4048 zcma)9S#%p$8UC(qX{6Cea_rdYq;ZxK65C2DD2)ShFgQ!86DM{n*QQBZGM2{9B(fw% zBReTeDJ?B6l(Iu8WeFu_E3`CKoVKK4YoLX)l@}g(=>spE!)p)cgz()N$sReP!RPqS zUBCbTzkj(`FaPJc^8jwZYatv}(Su_lx56R(&BlrkDDu?%k@G%vuaj!i3aTWLB{s=yS2g2+!Tmt^y0*?dJdUsZ5Y!Pf+|xq_W7jT(+)+Iaze z_^2^!B+HJKOWNkNc|2KN>K6#^u=18OAkf_1GcM4wtB^GX;=@+nJW!sQH0?2CGRK*= z;X=m9jT^Ql$JNOe=ZIAjxNi7p=|tW!ju(x*nKUwvRmhi;L;0+kcLv=N1;xGjQPZ9( z*fVBU;LdJWuj9$moRyzWI_7aFxp$21uEI>Qkmuq4I^eV`V|O7_o{?)qo>j)2lQd^J zk@Q6Ek^O#YOW2s4w51_bvHg&@J7-W*+Oa8+IH~AbRGM7$qfgJBWh<9;g$229+N7inS0$B_N@P)BO`TcG=w(D?3sQ3` z$c@sz##9T0N@mW?IMSl#V;0YN`|BLLCu=zcd!OZyn4qM6me$2RTsJWH8$~X4)`!`N zVlC9R)oA zm&yyMR=#A~&Q?a2hAohU-Z7U@a7x2>@Pvk5aPXLh@8Yz;DtV?x@?MYNQD&fqd3=vf z@F(SNbIK^^9M8w}f`;$o2joG+5Ah=fPipuvenJ*BJcXw<{1ne9IHTcNR5YALMWA*4 zvOf(AIH%z`WXYd~=kWrm)bKN$*KiXCG`uL!Uck>a`~truz;gF6v{Vhh!ml;Fgo_$} zgWqa+8Lw#gofPO==cm0I>ynqP8h(#gHT(g8l+B+s{28Y;{6(Hy?>DjpNqYiBMe*jWGyimEPgT7s(Q47Dv36yp zXSK?(s=9%@cQ><9sL)DaDR{q-wJ8Ia*v~3iR?8%w((h}&ZZLep=Tc)wsToG}L zM`HwZual9fDHbXB%BCtIEANa;ZOBxqJXvxtH&?GZ#TGBUR@*G*jEw2IlvlOKu(vK5 zc0-{~y~R7%Z|NdnBvat!&&svWJh7}`j!Yiq#n9h#kjk2Qmb0LDRj__`4-LsW+DxMa zHu*!ccF0%It5fnmEav15v)O;3s!317JHFj3sqQ;q%$%X=4w>5Cz{+KBj|ON`;gud< z+9H&>1lV_VK%YG|jfp3dpq5>(k^=t+R%2UNEMn2E)t5(*bBu0*ZCBT@p?iZyvFQ5l zP3nfP4lF%M)^zW>5^!lb

    T#7v#%l+Bt#^d}82MN@BE^8#9)Mc`@9H6h71hGw=s2x0!Fyyjuz$2qkv zQ9&>jNL+wYK`0f}gBK94Kusxn;3A&c($#wgfeIq2P+|ev0-~w#maYn7=Mbm2)UFOS z+ZWM!qP4^O6tjJruDpbh9=eFOMB9qy4y}T=3fkvk=%FnYtV~69MUS3CM-xtBFrkOe zpi>W3u&RP2;e;Mtz}k7l>jhX;avfEz zV0~Zsd2G1-EUrtbdMFjqBj@|H=Dui0v_m_EUOmzgy@9YQ54@#kbSPnKHrjnBM7MJt~=s2(!B;9e+tdr=qB)JFM*z3apwqrNm zi7~tjcOk_eQ#(+`yKyg99>sg`INpoX7{rrwaD_Wx-~-}CybrHnFJ8qyyoO=?4g2vr z4&V|-go05K$1P$N4u~$K#U_l28!_%W`|s!^RwpI*F&N66-A>6->T-(GQwUL`ljx@g zVM>35S`0v?%m=B*03y_Jj@k?`XfE+**dWiw@DF0`q)_8COsLCPk67bX1qLNd$`3)`z}7cNxj+V4FSAHolQa+EUdC2^ zimL9yLGpFT^;oC3vBnbFGig0vhnT{26)x$Hfq+cJr->sKN*wad%n& E1%CiFx&QzG literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/JIndentAction.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/JIndentAction.class new file mode 100644 index 0000000000000000000000000000000000000000..81426e0c5192b04aedfa7262e6c27b366ffb1eb1 GIT binary patch literal 2993 zcmai0>sJ(I9DZIdJG;Xu3WBaT5WFl1OpsVEYATlk5m69R(;9XM7+iL?-QnV;va)+> zb``DcPWN*x&q{TUr_X)tOP~8II;RiS^UkiqvXC5@`OW+OF3m=QH~Bji|iG@*C2N5f{++3kKd(PwI-+l&v`@ewmDa6HgCY>XKbdScv) z4(g6M;piQ`d^X!7F*{1*rVP(LZjcr`G&&;p+Ffhi7tNb#5xWFfHn|L8F#VVnL$JO2os$`bngbg3M(nTq^`8aClPU1)d#FVc^Om+-QJS2VmTzhBevIxf(&hKsnQ;SF5Y z@Fw0;@V16`@UDjUaD~~?t2IpGDy3>&!!=wb5)BWbNyGd2Kwv{w5zUu4Cgz@1s^CKn z*KtL`M;boHCkj5*@EJbW@CBxLaMc3K=hn}jQ7aNQZ*W1wx46VFRl|2U&)S<0S&KPfj7FSP(WgpVpe&1PW^DF6+QEB9!?QT+`YlfdSPVe+)N!DWT zsTjwC&q~~#L8T0tWm`qt2s}oxE8qy+d((T;7fD)#EW@F&>ye?ZPBxRY7`) z5QNvUQ}+@<%epZ7d1+BN6ir`dW?0^k?AEv$ix?rZ$BdZn6^nH!=6@UVCkLD<2=H0O zuSWM9P^yc>E#%yA6{`7ExdBwdgZ0=SNdNxnP6IA?4Zb^QLC!B;5^!k-)c!NGy%@NM0z{OVVdCvuo&8ozoIOOjX`)cl(3X$t3pS}}@~ST>E4A5bd%bg_I27Ohse z&Q|{d|B+i*>GvhEs%SMINvsL_rqD)}wezTy&8SpTB?ZZ!;iY^=<*46F@I~ufxNB!? zk$=UEUPDcZN1jfl5ZcG^x?Aha;K`d9$7vKH7cyI8Si@&6vsK4L z>-_)jKBl{#D-BHX{n&vmXrXir5707*7@BCmlODF?EO#$bzRYX$8g}6(cH=ho;14w8 zPg?zjHlg5QQGs?*gS}!KI>iC(7Z$qR%D93;`coLOo>g*|m>L*Sqvel`T8{!+ZD4Fl zvP#kwB&DrH!>Xe6AhyYRqZA~vTvysoTzT+_FtIfuAI0LZyx7Un&-lCOPr*jfLbUbp zqE_r6=6d+hC>n{pg%#Y&GuZ;)zoe}xXd?*)kC02d;G^Tt?_LVP2?d>{6%~J@EN4?4 LQSGB`4!ZsWSKkl7 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/JUnindentAction.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/JUnindentAction.class new file mode 100644 index 0000000000000000000000000000000000000000..69b326cecdb27b1e453735546b960366bf76d77e GIT binary patch literal 2274 zcmbVNZBrXn6n-uw*<{(al$W-ttw^yY6iT!fS_4*jH%KWOsC}`@l3ZY6*1PpSwwwB+RrUGo0Le?s-4YIs5m^KmG!669-9rsN({1I>s=r z<0IT{!^ikU#{?!7nMz_>v1b&SRb(!OPmxz|^NM_?V*&RxEb3^-eMOcO`CN&9p`oA* zFKbxQ@IW9jZaG$XSD-aBz-w&EElGhh3zj1n%R6h*UpCilayk~=qG>-ceM{YI%viW- z1p-$Wwt@pEH1|Ezky*1CTCNjh=T{udDM=@sh!|tET76oQ{<`b$$dbU*%)*wrYwl-* zJz?H0>B>Mb8>XU)AZD|gArR$a}g^O#B}>6wuPo*lr)L(I4W#i_C8j1!=pfT}-fpu&c*o0+Z3)>oOgWw)Eumi_{3y(n<_!dtD&Nnt@vTWHU z=_`j94fqHQgeV)>#U8rPtV<=FBHT%CD6}S&-FDpfluX zq$il+xu{yfe>>~duq&x0u8djN7sxQTCK+ba#1lB%#N_1EiliKlzP?Pg{x#G|8OcXm zRN&f4NUJV`TZt`Gyo^-fpZ@iIeZSDw{Waz#scvt4c25P?aY_rH&AI;?d zUrX9+CJNG)(I*1EIL|Mi`fGtu(@**qZzIti(5`og7if7N30xx8`2bu-0&kN71{EmA zTMvH)-l56JgxEtIZR8yeR?s>cAL@=*5c?f*#-A8GLL#T7wIgW1V3kiDNl`&+C=${u zXv-xP9!s(no)SXCc6`YB!{)zTSFK{+Z`HqexNd=v>()A2o zx#XbYoO^~;_3)fQ^}<7dZnQ!rGRY4#aE*!dqZ1kCK0t{ZQTGb^kfQVzyvvhLi5#xdev(?sM}{XBqgE(&8lW## zyhC~&ipqLOzr&1A@v`(AqvlU|pS(C@^wl~iCk>l%^s(r-DA|tKOL#(P7@5>Cs>f;b JHu){M^AFMTVJH9q literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/JumpToPairAction.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/JumpToPairAction.class new file mode 100644 index 0000000000000000000000000000000000000000..99edb29783c74a1bc64c12e8d8faa5dc2d342de0 GIT binary patch literal 1140 zcma)5?@!ZE6g_WjEzIHs1ROsFCTxIIQ8WQ#LO|lk(8W!@8S>Z)7PfY2-vIwC5`&2! z{HTe46EU9G@&OErO?vy@efOSo@42r(e|`N1U=hzdF_A_mCexTgPMZf^n8r*Rc@#{{ znwS$XUbvpCUJ7*N3)=$8HNWl%WJ<2*ylFRgouDdr8}#&+{F-cR%fQw93ujV&bVGsZ z(n0viQ}U!GJ;#DQs$Z6Fuo`(*2pgZ3onX%onoeEdL%wt%kK~CR9=qPY zt(+5OZ&qp7{ASDd98axW0k1?n>wc}>)Mv#g+m^@5c8=({X@s2BFPr@5$LWcSv%a4 ztw>lC^8)FL-wtZdhO5=@|5MBb%_?ARzTYbERNwBDSBvi~bm5_i1q(JFS$K>^0$F&1 zK@(3cEa90z?tdmFFmqkly0a(S4Hb_d7FwX^a%9vMtBr?hHzY?|Q2{3#4P)qX?A1xK zUydotU!_yhmQX4*1%aiBQ#fvq)J}(vWA`p1|hTA4^Cv?=B3`paLuD;0} z606z91Wf)+`bj`g>NM>w?v|oGV9xf6FG!q50TykV2fzpnjG~(>iwO+FZDjZ*6M8Nn z&KPOZmzy6wL&tI|oBDy|>3lYIhUBu5HNL}|%Nn1-y`k|thy{#AIg_+g+~>$KgMR+o zLnzQQ7jeFhaW6Q@fL`=Pb>wiD(YnGM1~5oWy}E}ilFS(;$}m!l$gqRqs0R=wagJ^i PW9R6nCC)gr61e{xhFcy_ literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/MapCompletionAction.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/MapCompletionAction.class new file mode 100644 index 0000000000000000000000000000000000000000..7e0691c4fc1d4a5730f070e02e5f7ba002e27f01 GIT binary patch literal 2085 zcmah~ZBrXn6n<_X*(7WW1VK`Zm9|peWJ_yb1jJ&X3JoM0if=7-liY-buuC_al+N^z zIQ{@XJ5yuzgX1SZ_>cV3@wvN6XVW6iWNywq=k7VrdCoca{{8azKLA|AejK-w7{cu& zKEgs0i&#n^g^&BNj8D{ZN5e`IaeS(lOdP9mtSRxX`rxx9KF7LRHj=o9tcFbuTLOJ0 z=kTZ|JGdZ;*(3^3}^wyuXY`N7qEJ}CVEY_$=Wu1~)+c8~B?c2&;Z_gsKsqB9J zsqLA^N2VkrI%=~f)~P?iNAPWs4>jrtS9G(36i85`SN)z^+K zZI94H{tJGnRj1TARJQdXFY}3K$R-s=5Nb`yi+)N@rS1ucbrRMlRE15w$p_gmi$&LJ zQt(W-D*4&?|AHfFb)peCe;P~@Ty_);a>;|Lk|#qJh8wl3H6#&I0epbuH+wO za+~?=+V*;GOUEd#Ysl;P0$*w<=-9@69dBV+!;X%x@U@O_@U6grpJph!j_>e5$3yIr zh-U)O@d)4RFj3S{(ox2)4vC6}s*XKa0$0M7Kc%z&mwjOW4hAIJ9SIlPE@IZ=~k&k>F!dvAU?|*DkryTm1N#^npRo5oC#N&ozbRK;#Wj|_7Aj$F{@yATGVNKog_jvj=d7d&`d4(hj4|aiuf^trp4vMTCK?%8|KIs2UFyxh&dFaG=sz%}ff_#%T*%w;f-g?{Am z?3 zqGDjvz_$Xa^`+8AMIc+=mrtbK2^`mcAY1bS{S~L~$)Mvaf!UX>3(?V)Ufr$)zT?&B zU)L-WBfa2wPOvDDC=|B@lFQ8+(XwU7Q>&eWUFC1eU6-0%xmlI&mh>Hc?kST&!)Xg# zDDSs_@dA0+lAf|MuUX<(}-RM=6dJ9?VtM=%fi@f5EU`u_c-k{NJD_2zmU5>#@Age#KuVHC9 zNVG0g-ClDtm1f7Us=JPEMfSL|Gn#_HfF6;@OUs+3wN(q}v1Q<)h3~L!;RB2r_};=J z{2(wCGLCUEuw&szYzqv(YP#KV+?w(=+yx7d@skCq0e7)wp^BOXrNtiV0;j^4!^ylS z+YM%+U!y@3xQZ4UaJYHIwZk>RH6?H^-rm=zMquhBhZVIaJ8lq-L)3JEGtn^FvDCsL z7!8S?*dkVg;}HRH$D>55UblGD%%B;mn4qs(uB@sEnU^xkd0F}@SZ}r+ zeNV%S&xuaE%Bu$rdbCyWibt|g(l;v6>X6utIG zO%r2KyS`WJBC9zjpgB&2aVKGr%~|ppLxD*Z`MsaUHahlh+mI8nbNNq=F`As z`sz#@^uIz}y_`CtE|Ns%J`H!1E0||i@q0FGB6wcCK=}Q|10Z; zV8E^C7}_?DaOw{vS(;of_x>}SPT-+FoXMR%J`CrEj}Ifck?5e)6=AxgBmhzyAcYYU Tm}K{^G2%^Jr^j{L`f%evb&bC# literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/PythonIndentAction.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/PythonIndentAction.class new file mode 100644 index 0000000000000000000000000000000000000000..226ea7d11c3aa574a36f25aad6515b998a7acebf GIT binary patch literal 2198 zcma)7ZBrXn6n<{=vSHa4nl>$|R9dJdP-rYIXhUsnf!b6E(F7{>^^$C0+hjLxHjp~w zH~j&A>iE$aXPohyj+4IV_|XskDC=`~GYYXFyxhI_o^zh_oO92)_s_qc{|;aZ+c8|# zF@TJYlbF?U4R7hVjvG4O#?4;b!kpTh*Rg=xYW9vA?xO0v2t zT}!Pyn_+L$Y6zqjA2c4>o@~{nZKh?(vmCpT&Oh=t9Xo56P20Qa@68f8kmgOd;AIQ7`hoKvfDsc87hRcUXe3!ZD)8w3qE=ADwj;4T^k zpAiL3Wl612-62gW^l(Ym{UrM5u&Uvnh7UBX3Frl<>6Xmf zmdg6c|0eOGVj^JV*NS(RbJ^VdLat~aiTegV#77!FHt-2PC7^-NAc<;V9VHEA116+_ z3O4A+z$PpM5Ae`H6*U7k9EO@PP{-%=+nwcGO{-cqUFGPM0T)bF|Cz2I10Ea$O;|+I z4Q%1Q!1;rfhQR2{6z9!~Y*xMCEQ7ibIJNg#u$+`|p94_lJBoF8l`yF8zy%VW0^M12 zsx13?;=9gP;Ku&7e1PH@+DR_xl}4u_Ry?c9v>&D0Zq^;Y`-D9^wtsV|VCJN2dh7yA z^{;;+uvd;zke9C9aAkdSp=t(gcsi9OV0WfFV)oj=UNV6riofc=o&_7Y(Ohr%mw~{ERJKE{TZwLh%ZNq!vLg*zd^fUABerR95u7^!J!ULS zCN+WMsUSmLG-9S*ZrroH%{>Z>EfbaXI<*8Q4@9%mn#_94bAmgO_auq0*rnjwG|Q?^ zS+TBJuga2HFsr72A>%Axm;pXIz#$0L+Zdb#&}{6ZU{rHMcA^Tbnxa}#YuX2O$+a2wHQ&;({8+>d3V z$!I7MPDILW^klST^eOaAjFR4&o}|`>5kK69J} zVn1MJG7(YG$1{3T|JQ10KdXt3FrFZek4vyNPN=9uj1_!x`#HYGsLwM4qkK$LNMH=Z z80YK)(>1{-c#?V-v5Yh?(@SXKGQP$Ye1|vi3|IYZ)tQl&Z#P1mKKzJtL=6$^dm@iA zW5ak%#8E^zenZU>`kcmB^fSUNU&EL5Hi8&EZPVu{dQ^rx*;lhkGGGPa7qWPrXLX74 oDTH2-lCEJ&!(|OuG)xPjVJ7(F0ZzSO9fbao(?*cBDvCG%1~qj#1poj5 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/QuickFindAction.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/QuickFindAction.class new file mode 100644 index 0000000000000000000000000000000000000000..37db64f83be121924e7fcc7539ab6e27d3815ad0 GIT binary patch literal 949 zcma))TW`}a7=~ZBU9*OcZQaIc<{I7JH4O%*gt-L`wrj{Hm7mRMH$O3>bPx(I}YwTxW`a_Dr0G$ zF%-A9dkm#r6$pmej*P{tG&&UefFFkBsdbdk!yebt+7oBV3}wQw-Z@G>#)glNc`Q8c z8>!;Ndy`84eOt!C^UTpC)jafC=)TgC2pHaOb&mK6AA8A2#sklYvGHCU(73CjV-<_o zG*4-FvoOk*>%$%r);<$2*c30un(O*Az_C4|2h((;HbxhHCT&R7>(u4H(ug(W8e3rs$E|uK-3Ur)jK^^(3Yx15QbkTA)5_p1A+2U+R{)}6jWge!6^s{HAN~4A8M-JIJmoRyJfSEcAYl- zEG{5%;K+d=g?R0a1eKtywD!z+=AH2)|M>a!8-T}HYhba7OSsd-5|#t31h^|uf0ks4 zeJ)Vlc(5-}+cL2hXb+N1znP2Jqni5cRD{b`AEkC?>7b~>Qqf-ah7C9((0*|ulBfZnbFu}Ip;gg`*J?at)f}2h9_g2fquKrq=aEz41iRb)w=LAM8lc<4Jp=+P7h@H; z|F?v`K2(#`mb^+T0t+Q=nJTg#+MLKerNuuL&Lbwm*tj{-MUC&qeHAc@fNO)^Q||-8 z!;biZ$|s)?a&7Ved}Vbk(*{~BU>Yvd0_{1>&m>arPCDHDj$rdMs!pT|Co<0+1X05p tyRCbnCuQF;#5G*^wILR8gY`GPrf4wn7R?H7{{sDUztjK# literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/ReflectCompletionAction.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/ReflectCompletionAction.class new file mode 100644 index 0000000000000000000000000000000000000000..8116056ed71053c095877471ce417681a8d42f71 GIT binary patch literal 1305 zcmb7DYflqF6g|_|(si*?L@n|VLFofnK&eU*!BUc%@(686{9w$`4s~I>+w5+6{45iM zsEHpn@i!Ucoh=_A7Kv&1W*%qmIdkuspTEC+12Bu%U3jcQ!?=nhQc zdBxzSUC%K@77WYq7AZwCwapO9+cm)uD;btpZ#8y=Q{g)%t;9=qm7Ck#G35MwG30$P zT!zVxynk^n`+|rw)|R#@oL$>#h#JGYWND8d@FU$lG_1Pri6c*cQ=upo+m^7r+$D~( zf6W!U+G@zXqJLWFhn_ADXhCmN734T4uNCpQQx_h?$hACF1D6sr4E&2xmfWU%tVkb~ zhrp!&3IzlqXz!(b6?l$LnDtM;hIbKjg4f7b(ki&w4ml_uFN<%kpGU)&57MXZS!!ni_ zGM&y|A(dgg6M9AL@|NkfTiI?HL(fH|Un7RTwmEc@lQqhoLk{tq+J6yy*%4GkYPWxW znM!{rSxj}Te%K{r5FjWlav?ndYUl7ZP9!(ELcS)3aI#pG_8Pn1z7nR^47X|W<5kG)@P{Xd!?{e*pXOPu2hc literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/ScriptAction.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/ScriptAction.class new file mode 100644 index 0000000000000000000000000000000000000000..665682e35e3276f5d9673d4107a39878c7ecd2eb GIT binary patch literal 4627 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 X3PFOsq1TIJTL|PR&kzKoM3?;+VED~= literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/ShowAbbsAction.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/ShowAbbsAction.class new file mode 100644 index 0000000000000000000000000000000000000000..95978df28bd168a7d6c2cba3497044e80627eabf GIT binary patch literal 1569 zcmah}U2hvj6g`vJyT;v+#-%NWk~;keah!AmCD42j2uTWU(+|ld2qYfH&eWaM-nDke z`S>aP0-kxH1ti2%ANUdc5TsU|*|mcgMZ}WVJ9qA!d+#}C{O9Xme+Td(zAT_xgooK8 zYM3ix9yiXw$3g)g6uEuV#YZj{izwh@7oWJeCE%>;K$|sz(V6OwKyD-4RRZJNI#3UK zora1Y%SM}#(stOC?Hw6uyY2^b=BbVau5ItdM}d)tT^T4}HjNI0*snhg57rxvcs*IK z5H#I+q@pKb)KR+v-_LCC$$fd~#|JuS`9>WY|L$WxH^NRg3{+rNGSKy;%4XQ?b?n}q zygRi<;`TwnCrF>UP88Q2v-|&Xdka?Q59`>|qQm zE>=B!iZw!c_za&D&%-*t5SV)qRw)0!`4x4jV^g8_6>FPHGYkxcsu+&tV#C8Gwgje6 zvQn$3kL|RnWjkyMT(pf1oO5?;SDP?;ME}{gZVOyF2`4+6!22g9Wpqd#MLmZzGZ|Eh zye4c93?^_sHFk!7YskyPFzI!O`>y?(?xa^e+Va=}0_&&Wkm_kJI!nlm5&{!5JY@|s zXqnz{b-dN-nxo{e;Jg14{IF|9w*>RFHN$-s$Fijca#Z^hTgMOI-eVU&Z0xCKdM#_& zp@zik+xEDt>JFxGhW}{xGXfHgH~AdrYB5;@?rcds$H-4f!dX6x+yJh?!BtG~&Eo;4 zp@eh%6?hBh`w)L2$2hQ5dx6pAd^!IT3+4RJ$Spf%=OxC<&M(Ld`~a_3a$dmw5fi_m z@NMl6yisSBrG%nyG^H{dul6`v{ z<)qCeyn}a>0hVwH?_o5_o5W?-afnkPYM#TTW0hdhu5#xZBjXr-g((-;T}&7LCRH>z I!y}ma2U=&SB>(^b literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/SmartHomeAction.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/SmartHomeAction.class new file mode 100644 index 0000000000000000000000000000000000000000..b15b733c8ec38906cfbe546d8693d48de13f33ca GIT binary patch literal 2374 zcmbtW-*XdH6#j0q*-e%$g_b~zMWk3rDG)^o&;nZ0AjP&6Qj4G{OR`B8lHItwr3H1y zhw|csPrTrZGy2dMU+|%z&iDuTZ}{NMhTW|$Mxy;G! z_vGHZj;nZIO4s7R+M1NEYxqDwJ#9O7a8@9m8J-tV@^0A@=$^72Yi6Nw%kt*TTXpXA zOt~eqK5u%qd~ad z;(86MEN~+;b=$maE@k~i+o@&)YbnTHoa35z8%@`-oM3E|?_wBc!YwT{tgP2P!TgUL&kiZ9`f|4-V6B^;adlxh_6 zlBc@B?)Ib$bt@#AdH7bfqe{`Lwp8>Qi@gr9i+Rf?T7OqEWn&$Y!3^xe#|94L2z?s32_6r%HB_f!3+(?7 zJ*(lCffC9Z7^;G*hMEBzw+-AuojDk2z!B(c3)vz?;_G9g23#}^d?FVQzJUM>8txic z#FBw~xNqQ7+-IkD!Zcx3%!PUowSL5ez}~iyoBNZcdePVBx#@(sRcV2A)LYrQ$$=~e z9_KO~rEToIyy;oNtn1ryUN`}nNjYTQ5=*3?ubV#0sIh5h%!aICW;km37u~huXBPsy zo~^sps+|2PJ}plmMcZ}xXeTU@zYew>;9Vh<&1bwB*xYKdFkiUBf$HyMFLh`hCm4Zz zD{8wNUPc?Kwy1ewXRhYCi}H31`RZjJv!-WOJ+oQcV0RBG3r#j%dC$jes~mUULc#jn z@LJ}u8r&{8<@HU;Z!}GNGn3IJxXIu8Ov>u0rJCuDbMR!fIO@I6Q^@m#SF&W?u>Gqw zJFxtwSz_6gOn&&fK%!!MK1~UNmWsmx#y53pdIQFPY`=d zF^1h-bv_ZA4dNwAMx=%T?BSch%h=m;@f{R82L?w*4)1x2_$rhY>>5qjr7B_P9SBitQEHx4o8;V|M^dhJFJUg3_^8f?Xu(jfMSz6S9s zhC-x+IDmunDo-=?q|g)7LTp;YNH3D|x}hR-7Rx+L@$liuz$&)P{0!sT6LgI#BS(J3 zRspWv;Yzuzl>3!cY>Vd-1JP+Yr^a(yJeN!-)9SYv=vUIoRcwEXp0ANoa@q<~%So}a z_FGzggk)NKgagt;uQce{@eTUYN$Nhrw&jG72kBgLW$pLKcRF$Nd*X_yIgjm>Un2>x zlZInV=S^mC94C;&C{AJmr*N6l9LD%B;UsQg995iy!~Yzgqku1{@g**VR8~mv84`Jv z6eX!KfGj;HB?lpu6evk5WiLDosf;o5SB!m(c)IZbZ!o?>1XW@<$by_;#2h7+7_Rf} wB*~VPAAq{XU?~l!G>i%jV;W8iet`aGNTmLNDxMM58R{yGm*Dp-2G|cHp zV_wGs7JFdgo|@g)u*48uwQ81JV+bcx`wWq+QxXiZyj2rBjp~7L_xOQLmU!MNa(kb< zmRh%s5qW5N4C(xl_n{_vv(9V689k(h< z4DXWpBYw=Argvi1Dy9@oX};d0G3!+8PEFKg=1PTvUu@GUHmYiG%a1nsi8RGA8O&Cx zoSJ9Up+cg`Fxy#UgO}8)6x>|1DC%lL0Hcz-6(JcWJ41ehMTB{TgJJA%0Eyg^L;2Vi z{fSF*rsMtrFhg%a^5Xk#UiVoh{TTFu({PL8rKO}84P^%z#5)wcwt~28wRr2BmsgFZHh8) z*s`T)OE-qWRzH|Fr*0@nmzu)YaVjXoFETEoMp@(8G=8HjWwekhTQhyHxhAPSG`)o zcj-LKCClES>zt@3gcQXjqV!m)UkHraw3o)~v|9GpfHoIrUl2O=9bz=MhCamU%g~R3c8ZUPkQb0hr{~Ad5k5oY6NXm0`Vl>Yc8>1P=wTyWXV6dm96A;6 zLKv#bO`3roP#sCK&X8@Epr-taYm_xc)dt&MiFR$Ogdq(3xe^$`sE;&(TNtCPYImG) UM+mpV8`{=zr=OfBX&FM|CmKnR<^TWy literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/SyntaxAction.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/SyntaxAction.class new file mode 100644 index 0000000000000000000000000000000000000000..ab5ff80bf9b91dc8a608d2711992791e41c1ddfb GIT binary patch literal 224 zcmYk1F$%&!5JmsQnAO;*C$QAU1;Hwn2vz}$fc?6xVMEwRve9@o3lHF-#B3}~F~jix zpEu0=^Lzo=V8SqB7&C-~Ko;hrQ^Ix`XVt@4(OiX5ytX>$`_8LNVRd1mI1@L)b74}R z*ixG`TAc`CQq-kX2c0XzEa?b4=@!;5PgwM^qH`+V&k?47^6{K0X$f;DHN3jFcleJN V5C~pdgZ2yZ2|k8yLeO>(>-NGwVs-Y#{$ERR;=&H9aU4ls%tL{h;hRUJiRE8nZEEy zAiET9(OuE}b+6TUs-jK#)K3V6b?HBnk!Q|rWmZ4;=>Giri}<%d%e|%ylq(bD*xhWC zuOw&EEv7g3RrD;38fr`6$#lYd&y9B(k*n37cJFRdE`^O|7^pxmyaQcJyex


    Rz_ zrBTaW?W!Fr+|<>I*)N!Aa#}{)N(-Dj(GNq9x5B!>*$;VSnzlmXi8X%A3XM%!dNU9h ztZ7;Qbwf7W`5KIs{<*6t<7xcwl-2O=-;sWc@B_3zOd}oA@fbB5?^n^Tg{`QrRy|Xy z(ZgTTbj%ov4n9K3!3ahjoW{6?B?rq`aj$(-!_Za8+Di!&HWzlE)fxAA_Gs(&(NmjNG z*M11L)W?*c@U%!f!PO~^h`-QR68p%!O03UNo=JhQ_R;iwK-%*&v1YQE}+zorb2u3N1;?cz~DZtqqNw`#ZBayKI8awYS?jHK$#`r zOyXh(&LrBvcJkhVOeSG6DMeJg z;N2(RSibqfk~duvSh5zcuH`>+EtmM6nNU(1frp;6XP0kf;@d!XazSnUy ziXOb9W1<7E;+R^FYj`(`2qtx$Q2Tp2vTC1-;v`N*F^%`5IE^zJ&PLINNu~ZEigP%x zj}grE?aY! zX|m^CQ)hy!7P(sb1o5Mx>Q?J41;VOtgmT5%z;1C@!_}bWn&)Fm%+@S18?NQ^emR}wNAAio ztKv7wCy=e7q`}d!kCfC>3M*X3I4tDhzBaII+1NLQI}6=+MIH&DS<#!n@8 zrc(x7R5f@8YM9e-&A>daYp@M`h#LZ{mU>fY82AVuvt9$A;3l1J={N8xK2x4QSIZX$ zZeh&8m$+fzD}2pXZ5DurZw!2k?*x)BOKgGdtxQK{-m2MNz}SG70zE3(=dfL1ZL_b% zbXSM}OQa{THof!)&B<=7Qjrd+)7PreE$HO8gU>_v%E5RMSeZ;MF{DM%%ch_UlSd;7 zDn4VL6LslD`s`_jAQ&0d#>+m*IYz>E^Q~s3EpwinQBS#iyeViaho@y)ZI=0j_{w@ntq7L z>HE-PdL13qg}B9{TxuBApE02vCBkvN zzmDaD9SL5H-NuT9mgtDBsAFXv@##BQlh6X^@oAm})=KPVs8!RqbaChLZ@mevj@5On z>5WI?5%rO{SjSpbZM$FXFuEz5oL9S8SwE%S*o!?F;yR82{vYxNF5pd+F^KEPaMm5b z4?O!32k{dQ;TIhC(a95mY3lp16CKo@pr>8X6)FwHl=M0yDE#j-${ymaq`kCj_oV^G z3h~|z#@mN5Pil<1i=7yP&Di^yZV5sCB z)jU_aYTG`N0;$bI``EUswp+0Zs_wXzC4tyI$92@QKqQmh6Ns*QWu_)K9anBQkM?D~ zXzy43Vy|RZ_w2f(*I_WKesmfFGnIm~Wf(RXvD zr_^)$wgrZje-HV#8BBbDYm66kw*^_1B_+!n@|A&g6C2nxv4w3D|mEIXZXvS_zq9PsvdHhD46y0mM)N6AH}hsyJ`VH&5)A_Di{@A&`WF_WNy@o8upK74CkI<@ynA{p4K zZBv1{fWuiu=QHXMApG!T`Am#sE!ob2zZ5@+PiwWd=3)2vc0q5V#iNEwieR zu~=^AHDc!|2|t=fKQcbTc#st$FrQ2(h#~Zg2(h-9qq$B03FFx*;<-}{w2(**a>)IL zn4X&)S{VA7X#w4sUozW4bGl9QCO!$FU$dzgYZh`dEnM1~eT(Ez$jrV$ay#F`@EeTW zjZQ}M!6~W5e(EyT|2r;+%0zr+ruZiUd`_Tw3}FE&++zGT(pY5Vj!$8kyD6&kDWke- tg8gTC2Wbo0CxrI&yp;$ z&jqR*5B3FWTPD^5?Lm_1oyq7x=ez14Wu!AOkxKVfo;ZINtl8tF5Lg|Y6dyCIrel?9 zsUn-0tdM(IY+iV~N5L}sPUnXvAL&@&{l?%#ovNuU&XVj%T0OP$^)A;fGa8#rXSR1v zcIZ3wO*9#~vu$53)tQz0lmS_`dg<(*yGh-u{774Y?tlC6+69FLmM-c@M6scs*yc|n zOy>Omm_T4|XjSy#jT+BbHHT)BNBULbXtsaDdE`_$!QM{)Z3}g*2I#hM4}rkS#aIRI z|1F`f57i{KC9jf-z(Pq|ri!eGHYajVY4J~m^N5KsHf~OIQRBODUj>XJ;M$<~)cZj2 zup_>p^2sNJT$?-qUs)Z?w1E~2n1;)=Kzk1JGl`VDlMXk(BiQ_msuQWgiOh2cLDaCu tZtGs?NtrwoVj0@F;>AN;MaQ=daShjfZHNWjVEs+6DH=??MYDq2zW`YUzz_fc literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/UnindentAction.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/UnindentAction.class new file mode 100644 index 0000000000000000000000000000000000000000..ac90afc51815a92b19d6a6669aa3de8696ad443a GIT binary patch literal 1968 zcma)7-*XdH6#j0TvuODpfsgsCTH)x=iKjn=hyDv|Nij|z$iB2 z$QkIygn@JTOp8ea=kdA31p_f$G%$r}EoQWs)n{MC@uhy|wYa3MFY6Tz&SOsEip0D? z?408|!K6TYW@t$uGF2@rfzCO{RrB@DqVg8(VudHExoXL-EZLr;_q&IYV8ihR2IlVg z-?@RkRkK}{wM&6hb^Yw3>$qj*1{cEp1VNjcYsy=zdYh^&u$q~>W8bs4vi^O?UC#z; zE6842pq#31)~YTqPwas%gkGkrrTV7U<-^-q`+ksB_jr(Px|-4Ji7=W9!_eHdmu$tR zk3!(l71=~=&l?cvzS&Y)Q7)AtFVN<25esZ@T?GQC4kb)vp9}?hUPqnzE?0>sNRNh^ zUh6REyO~CTsE&r|j{0Q7yKR0^z}iRuV%@2fmB$b}3V~g^d&RDW+)qjJ3DVwDQ0L33R<0xIntu*Lyln_hawNPMXu;?>6mX;8a-K7`u$s z5*RytG=}z-o;B|xKtWYhDNtoS#Kau`A5bl);K*|<4m5j7HyvLS910_BL4Vl^HV%lE z9TDRYt!smXUoZOM+-c){OWrZNR#PtD38!1-ZeOG?n!G17wIA?>Iv!M;BQJ0?v)@o> z%u}_BT~f`gF;X)3!whoNGWq<_5>6q-SFirHfjCH09^-B-+yinrC7z<~Noa7K(x3w9 z;oJ5toZ!mj1)9OaNj?SMq%MRIe<6Yno^6l(j`m!XGLnmpG!Pw^eT8Cjbm24xlS}-G>}|=gaOM;nV~YJm67L)q~2;9 zE8a!hj^zhQ@o4Aqh!t<(jRrbL(lRaert5YCM|4o_&_PY2ld_*dy~BV8n3H!I$a~Df zAipRXT*nY@VHkJuK75?P_tgD}5AZY2;#YpcbRr%w*fGp9EpHQ}7e)U2kRaMBv)s?b z4Pu4({YcV!dpBWvH9&7ViQ7aS4AZ+!pZ(;f&xYtXLT0~Ugve21KO~Djo}};-PSZ}3 z>knj=MVy>~%ZTm}$douMF)Hz)koZVqOk$j?kM)D@{=qQMPRJedP8?uLFo91f+wkds D$&=@E literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/XmlPrettifyAction.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/XmlPrettifyAction.class new file mode 100644 index 0000000000000000000000000000000000000000..c0fcc7a2ce999b36b31bfd0d3e1de84d7e2a18f9 GIT binary patch literal 5829 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 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/ComboCompletionDialog$2.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/ComboCompletionDialog$2.class new file mode 100644 index 0000000000000000000000000000000000000000..e6d879599fb397a57246bad4955680810730c872 GIT binary patch literal 877 zcmb7D-EPw`7(H%7yN1BZfWgN2T`smxkgeiw2x%%qLMsS~srPPbbsm{rC2pawg5V*L zKp-x703Hf)997~1c9BT2zwgWE8uAyNNpj4R@l8 zcvm3lpB8iDE1lyS+CnjiXL-_xwCnG;w$w})tN>@-i+bM48m|5vO>eg~fQ z(4?6yv>Crt?!=CoxEtXf?nh{#8DYss53oruDp?VCN$}q@9E{||sa)V;B{YG{-d69o zHB^Bb*SEY9p-fY17Vquywj5Qp{9FOI2b3V-y`;JAwpW5tjqeg#v^!+`` zoo}dpE_*I=Y_JFTfQVyM#vv}D%}n45Ru%{c3xrnZ3&hTM)c*p6CGYx15PeRTq;VG#3Y31)Lc51HRoRkqYgMTVMM6rrfO2;>R_bxP{*rCy;PNUrL||q<2U2??0^5St^u?V)evBX;{jGVmataEiz?O`D(+0# zXrCeOoZGM3i7#WJWh@e>jJEM`qT;q0^$iWBs!oL?>fiHK#ZNt81@R`F+B3} zdfkmCCW!0uwr7KjB$3uet$n&R-J;UpL*h=4Xb9+rlFW^UXM?N~{d1_1@SLo-ryz2x$y+o8uuG4@peCN+DZ!NSj6h3R#B-VhdQHoylf`K*pqaiKbIs=) literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/ComboCompletionDialog.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/ComboCompletionDialog.class new file mode 100644 index 0000000000000000000000000000000000000000..11ddb7e9b481c0df9068fc87588abd5dfd9e281b GIT binary patch literal 8743 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 QB46V8E0wGynhq literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/ConstructorCell.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/ConstructorCell.class new file mode 100644 index 0000000000000000000000000000000000000000..84179528311322929b5387e10e5ef96c6c6b8316 GIT binary patch literal 2426 zcmbVN-*XdH6#j0Sc9V2zY4~MZQvMuS17chC9GIp6v2+3)`O>Kgzr;9ds% z@Om11F`2;|cr$~uIHy*{45n~it)|u2w^F!};k%T7vF1Deb*}p^je|i zU})L$E!&te8~l>4ST)D=Tb>j+z4_}z47TL>vL?Mkcx2x3jZ)pL$-*Qd2Bu5r%TqT? z#ktv=<+-9jHs)CIJG+GL-D0r53CpqkNr5Z*!2GV!yhBUlV%ci?h3lO_ zMb~BxG01Ku#y%Hqv)L?+E|Q+2yUa*~Wy_JXt@@Jm7R)7^C)u)FHSI;yv(!F1O!~Jh zk~vylZLT}MdADIY(lD#OMJA0}%ZgK4l(x;9k~VV{*wv)~fsECxNYx9uEFjpe^paV< z9aJN*b8CIU1&U&?0T{=EXQC{%AW8}!n+FHs02V8g%DNmkQ>}dTra08KaB~A1+!hh`gaDRnTwF^g4&UkwYx37$!~1Q?`-)Wr2kJ`z~4cRd&4{;rus31m+=a- ne3b|q5`SU87)J`P;Y^hJNI)&nE10Bez38yd1_%^*mcYcnZ5Lk@ literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/EscapeListener.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/EscapeListener.class new file mode 100644 index 0000000000000000000000000000000000000000..255168124626caa9b0b8a821dffce26db336bc3f GIT binary patch literal 200 zcmY+8F$%&!6h!AI(P%^vtZhXb7rcUKB^VU!*Z2t=!fwcJG+xcZ19&KLV`nj+VR+1+ z_viTnu*N9HAjU98LKw5nWW{OC*7B7QE|zCPaxzVw@lKUYm~MZ_URlSQ>s29dk}xmq zLp#}4QnQemQ$|~nH%k1|gh|JXQtDhBE(K?fFzcdL*t_!K(HNKdl8y0o%0K862!U7V P*HT1?(CZxf{sxG@6dN`h literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/FieldCell.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/FieldCell.class new file mode 100644 index 0000000000000000000000000000000000000000..f4d1748d46f27c76e5d28dd7af347c0d0c6f7758 GIT binary patch literal 2139 zcmbVNZBrXn6n<_9YzRw%v`}e5(^e}`>DF4cHi*&`G&O;?q1fUJF5!|c-R#EAhL(Qt zA339~rfSvEFLuV4(Q*7aj^lH87qTFZGs4W>d+t3i&w0){H$VRM)wcl7;=?qCkn6@E zrc!t{jcL4=#_O0-yNl{LpTeayzq4t~;f)@=i9$Cn<1G!vG3Vzv)SVbGvV+Vh#(AFRRkag-7Nc-ze0~s?1H(#euoPZ1K`cA-^!cQe4OjWMYP8 z-?N-5wR-bJ;G2%WWZF#z>zcA0%bymwIu@wkH5zxQXZi{zXrZZx(W-@IEl z9ch>q-y&k8+O$F%^U}7NN75!ffrI;i7D!u-vQ*4V7DOzQ-c_@5JIFwwe{W8#OT{+t z-4hu2M-~ElRr)htwONynPjrXI#$!rtTB&tSvVP9uR-FlIlnX32Q{6UbSBvQVKuZ)@ zkg`u~?1G4e)KtZeO42c=NKBXArdN@3mLjgNBo&Q{gwv|ebY$_ij>C9D02*%SxQS&A z@920JXLP)W_jL^8h`@29G`l!6S(u+QEY&g%qvF=;whY+~dRNB^KF~m)tEgyL(;>00 zp{nB+EP=!Az7EsA*tG05=_v^31xBwss+L*b%`*3_>h$co>t$7@7qU7wa9b_5jvCHr zaCEq+vugvdJKP8y`_Jk#nSax1vmtg*JL(@O4|#bS8uG*+MO(d|idO?8r*j4-3{ZHZbh>c-epGSChb zJr@MGsiu8lU0`Ue5O3h^2Zd+?vu!^NPc#B2;~^JTH#k$dxP5fQscJ_pZ#8^bqX+4E z0)yeWSgvt}PmoX8(yVcSyUcoBI-JkRc!=Fu1qAMDHX4rX&S39#%6G#fJ`Mq<-I2*f zUE#1fnuGgAUSc~B^49|BKt>G~cWE_45ID+x0wa`0@g(J^0y%|F?z1??^*B#9(Zzot zGjVEUayU8M`4D1aIQcmep9cCTxE`Q);1PQ8H3skvo~AS%THzU-q(pl>i!u6CyKzh~ zvf7=(bAfG$Eg76m;xsWNVc<-JVUk~E*^%k^gr5Xd(5~R<`yiMeUPr-_cz(z9#mKa0 z;xi;#NVd?q*ToMp7d<;J&f*1{Dh56#LWTB5=%TB?@1v>v&>lmd$fR26egKW)(Jzqx z56Fb(*_}lFS%RYY z;1BReiD%Y;2vV}JckaE+oH_U0J3oJY{{i3uwju<$9b*nFF>Yct#GMdpA=U-v-H9%n zy8_$Y)AFNn^23=lDwUbj)|BaRtkWawY*!ogOv~I3_j%@#HrhQFXwQ6Trza3}>_7=D zdaUE|sIQ8*vY#_^rE4>p_hg}cJWU3km;eNl7sjZflgqMH%(P}C+T0`6#Xp6-R>eD8 zjMPA2jhy8~rt-Z@)kGPW9#pj+dVk;ZtgDF=SUGQ-K>Wszi%dP&zJR5FCA#k~;N6EN z%WbL6@TGDmb`WAC!6xn|2yr1n^DQTo}GZ|(^+D(<;7!}L}ERAnT(`rmT8x^#-N z32e=VF0kOc+OeZEYbXVku5WueVwq*Cv%0Zw_JZSs|F(DQ4rM@JZe&1e~vgEo;Znp(~mWf2; z2Y!G*$}oF2Atr|0B{w@W*?snzXJ&u@`E>=LiH!gr9*3B~Qiw$?`*`AG#m6ecq&=1< z-e%ZrpO_0}`S~eVBH^i(TA8Fjl*ysCx-FG>C3&X%yL4txDrsLbG)f=Z>M(dM-4hJc z4(sD^&=vVt-pwd;zpYcAb$BjaJWhI!7y}rhw@Qh;m2qPPW$Gn~#!aF+{kM?MB0tjk zK=c?^h%+DYgrC_&jD)hueo^az^LHK3su)>@rQ5bKgkSV9PsMBL3Yh&@qUY`cy8A$- znKn}OKL~rQdp@2zGC5NRuew%z-9jwwsPEd0v!D=-p2n}k5 z{s19m?~?a|VwVZ)jZ3il4^+Mtdm^%QitHQQBO4Wdh$+laMAL-XF~a^BA*g=`Yy3p@ t1|Te;-_f=23y}FD4#psk#ska|OcnD4TEPMy((2LUd4w8yj-*E`eb>AR+YA5z literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/GotoLineDialog.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/GotoLineDialog.class new file mode 100644 index 0000000000000000000000000000000000000000..63c291081d40376de68f990ac39e8d427bf03f82 GIT binary patch literal 6385 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 bzgf+rWXJeEgYV<&OtoZtgIdY)s&e%|(YyBK literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/HTMLPreviewFrame$1.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/HTMLPreviewFrame$1.class new file mode 100644 index 0000000000000000000000000000000000000000..6c4ad32ac7208e27f770a50e7ab231722ebc3dd1 GIT binary patch literal 856 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 E3nAz0*#H0l literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/MembersListRenderer.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/MembersListRenderer.class new file mode 100644 index 0000000000000000000000000000000000000000..e1f5bf15cd1f9600842f3d6d83340b430c998e72 GIT binary patch literal 2156 zcmbVN&r=*l6#kl>-G*U-0D)vNNJ3(OUC1Ue#t4YYB8Ipm29OB;9G2c?aG2TJnI%}| z!K*i`IC;y>EB=BiQ)TJZKPG>HrG7mNWGHqI=F-#s`s=UX``&v!fBo~@?*MM%a}zz7 zXu(-bns^gadiIvY+Y;}Xm`2V-0y7ftO3a!t@t(w8i8&K(xTjCPZz7L*iTg1;`}diN zPCStKK;of*skW8t=RC)&2%O1pTH99EdK_d!%Y;B|-6;v&$Zz^zxq-D)wp^993W4pp zezsJ#vkR)|s6vqQw#tsu<{8^^yb@0)CT-UarUY&c|L@Zy%K}EuTUP=ddD~U@t6OWT zvSh6}v~=aYg5@k*6d7-2NZOSRfIWp^5 zJXg7az!Y7lB0E|CvF((@L+9|!B5Psu8u^dJ3OyN*iylUw=U2ZIaR4? zmYomxh>90&SAahYW`y2y}NH6}=X#0?7geyleThUZF}ajWw(Ar9j(a!0)_O z4wJKi{3$TVWCqou%Q&2g0X8CA5Z&Z!0v=!~Mms%J9UD$`77 zsp3^#roC(UM9uR7Vew@fIn&^s5NIXs(uT@8me0cJJ|YckFEo;Mp@I^^$9a)$2(Tj3MvLB7(xwl=B+#f$rZT`uWbl0wrJmBF&Iy^VBjEnqb z^zdiW#3o|r9L`ew#=z$ZFLAuU)hrQB{F>N02K- zb9Ip`p3_ZAF7^xtYn-A8iDvHY_Q%V{6PTHO#C|~HCm7?2(LWLY9s{F)AU-aiBC(R` zF;aeU-B~ zeftKtn7jmDqqPI^_GyXRf8z?r!9i;LI_}gorvo}yK-*Jvu5@)Bp!;VSI+c8*I3~hd M`#8SARTIYl1K|5PrT_o{ literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/MethodCell.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/MethodCell.class new file mode 100644 index 0000000000000000000000000000000000000000..3912315b5fa675027938b4e7511a3e1d51fa966f GIT binary patch literal 1907 zcmbtUTW=dh6#mBXCEje~#DUPH4VR`A$0c1TEjOD$a2x7k$0be!q)64onYbI)>u9}B zFAw|<;DHxj03pOR6dn+7Nc<**_-1#Fmo|k5WNAHT=FBmpffwlw&kfEN40#b9-Nf~Qg*BB_5^aFQ{T58t1kC=l5N^;SNeTV37q@qX*m|L z>iVj!yi&L&Z~9iXBipL9#1Ogq#q~>#3)ica#_IK2qau)x-E8`v?Y8N5q(TV3bo~wK z^qDPPwq4s_5?Ct)?zgPoO?q0FYj)2sZ4NV4x=weH`LOb0$tsTQ^-2pH0?A5un@Mst z+f}Rm&X)4l<(9*pe68D(&W7}CZAY6)|AtL^PS$pNw_RV}+LNxbWXrb+*=qOgh{=j_ z99EKah)`ha5ZD5S-D@h%zG73vCK=w6t@nc(1SamSimhom^3ENB$@|I>Fx$#s_S*f9 za(%*ksIU-o8WKydHN_UX>$mq?<5*n!$Rk%OSp|Y78h$9A^0f(>y3=|1dG;Q6bRU!^WS?_M!JGSzOfI^{? zvYwLLT6El*59c|2iXxRp2x1S<Xs`*3lp3zt`m5elAgvRw2uaM7AdZ0Fw5^T?(8GY zACNDeKE61UoJsu%QJhKsfW$X}|8aiD86Ef#WB7;}KE@oarSKLW#bdO1pGclyOuagR zd1ltDlXx~`x2Vc=T%e@4i`wJSw%{u@9 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/QuickFindDialog$1.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/QuickFindDialog$1.class new file mode 100644 index 0000000000000000000000000000000000000000..57ddd7ca19109e96d68ee9bf7698c817917d5191 GIT binary patch literal 2023 zcmb7FZFdtz6n-WRU7Ic@ltRS=7BonjL^j2jibWLCR*Ok(X)G;@I&9{oOEx^pqv-$nm|2Aru(dPqZT>CBn0dv*!R8Vwf7%Fmdqk5H|Cz>-1Pt|WPDGj$g{Y>ZE%~eOW{3%#LL=ogD%; z*gFD~Y_cWaZq`{60+%xEpyTb`9RhEmg-BFoG?xNuq@%e?u}Q~U1bf_Ik4P{zvZa5z)WVfR|MU; zakRfvp^Az!P|-SDQI7=9IttVCv!NaMuB(N$nb7IZyO~~$j@i-jM%4)$e#nN;y*%&( zLBeHzUsC+u#8N5U^8i;40L|h59L{r!&Tw~==P|CyZ0;FEHvbH<>~9!*+7*0*bew`f z1s6!o?mme(afv6E0%i}){6#Zy@^-SnBDRk>7x4n8V$f%Oc#iSsFnYV!en$R~Ke3NQ zdEhvyPx*bAzaYM*Rrc}vQ$CbI8S6Mrf3;&-BuKZ3a)*vQ)yQO7ct()+yrtMHE$KR#JEzi9 zSAmLesx;F^s=-@f_jTXLN`(7(5W&Z#2!XR=JS6!`svox)Y6bg@t3k5UI}j;RUHorD z9cio}SKHRZL#;>+QoFk96bX5n3S;7DYcwmb%U}CN64tv|roo(|8=eNM z)tn|YuNC?OgcQ9@)^qY*By2Rlfi=FP@})Qv(Mnmg9^(qFQDKLe!Bz5Tq;P$LurWah z8ehShKTtgb2n*;FDtlUh%olzz0dX|uaD!l~m?zK*ZsHd09=)MEsFCGJdbHE`7ft=% Av;Y7A literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/QuickFindDialog$3.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/QuickFindDialog$3.class new file mode 100644 index 0000000000000000000000000000000000000000..d8980962cfabed2ae099db23b6a9e889acb4e019 GIT binary patch literal 877 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 B-B$nr literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/ReflectCompletionDialog$3.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/ReflectCompletionDialog$3.class new file mode 100644 index 0000000000000000000000000000000000000000..a326652936534c5c707de79451fab00ab359ec04 GIT binary patch literal 891 zcmb7DO>fgc5Ph4Nq*)9N1qy}m?L(VNxHP>LAyuJBh!i0}xo@2%U2xZty$R&!Aov4F zAP@(B06z-x){4XdFKe~U#sJkk+ngVsC1}u0BVLh$nE~ z3+$E8EV&@p^-a%*R7pbSqTLQp((Jdp>B@_^zNu;U%p-`aUAN z+utC%-%Yx15PeRTq%jK(Z7CluE{t|)% z5(vbBAHa`7j8~DkK&4%2?V0iT&CHweuirm@0(gX^g$Oq#E?`aKI@X)G)x?HC!=GrE z>x)*0^*u)#)pGlT+q@-!%XM~2LxBx0LCsXE-uaYfWPExU&JTjP7m}^h%nPiY<0T+p+i8)}GaZUp{||8w zLL9F8z+|~~+Kdj#pV(m&w`1JF-53otV=M&e9`18zDmEtRa+?3DWq+t9o(h4qBBH?M z(C9D$)-WH;d3`f*B2|`=bII-wPteQiLvRk6TLUH|;(6tUx7&demTLSjpv5B~S?aPL zEV8rx6{7PEwa=x`MP3{11AIWtYh20_m(XTS;0l)J2>Ww{R_6=E_IK3(0>~2jBZvD` mf~=N$YYqZVVi_w8Q^!>Xtzi|{c#rsP-M}JClFuUE`TGO$`0W<} literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/ReflectCompletionDialog$5.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/ReflectCompletionDialog$5.class new file mode 100644 index 0000000000000000000000000000000000000000..65a4790c89d7bcb04e0eda7c5df8ba0ac8d7a0ce GIT binary patch literal 926 zcmb7D+iuf95Ivi?H8!S%TY+AnP=nf3!UfW&A|w=wR4KF)MS0&i(_|}Wx5{n;d=`QN z;(-s~qY$%JBwomaEqQllw0maG%-P?6e*OaR438rOSdFoOwHSA?9^zhz`yn<27Tr+U zbXVYM=gfZ6PJTR>nlhO?Wwgx(6P3NA(}Hr>Hly=`eE7AJg&FMgRr&UI zS0HGcJ_%gyC{0I`QIE#&Wv}4K^^VD9(UoK6{aG;Zr3yeGIn=T7mxa;XAs$41%XcZ3c}~`*tzDMYQFUd^Z|`;&8?597mcSxJ zqv89+0R4vb8gAnb?*Tu$6*SoLMFza{_ZRU0 B^Sl56 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/ReflectCompletionDialog.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/ReflectCompletionDialog.class new file mode 100644 index 0000000000000000000000000000000000000000..35f230ef3b2c07712241ff8a75d35cd6ffd9780f GIT binary patch literal 12044 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 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/ReplaceDialog$3.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/ReplaceDialog$3.class new file mode 100644 index 0000000000000000000000000000000000000000..94d6c36c03e44baeb0faad7f863c5ef03d848567 GIT binary patch literal 863 zcma)5ZEF)j5Pmkf_Il^p#<%*`+E%Z&Nx>_v-zq|hEeKJImVDn_#&pYNH{5Na{tD55 zQm80?@CW###Mv_-f|NVB-I-zMnP;Az{rT(r4*)xO7{J5b5HnZ`aU07%?)g~pu_`cY zPgD_a3v6^wix1k$_amt(k*QTi7s+6(lGilKWJ=GJ%*{Ef(X2qOlSHNqV zJ_#&zl%|*CVUO}-*~>U`wPRA5b!D!cKMi`0mH-5z=UP+V&SX&#N1D}2#=A^(;ZGMw zl)p9kkop2E%verjBH!7BCZuh$Up9K+>^(=bP7^DzbkQ+^@QoSgDIKbk|3CUXa`;^O zK&P20lpeewdt&-N)*{@;g9tw6A_UHgvCgtrQa#=kXq3z|sRzlc-YKO_bNRo`bW~x9 zH4|8`1THY|F0^fiBcoXdR=K|Ev6%@v@+i*mz0N{38cq$K z&>H^%LXKWy>oNN-61KL!K(xN1c2=H=c;zf!KjJd4QE7*m#})Q?kZ^5^us=lzTIUd3 x-%$Sx5SGxNxa{W=WU=&vDTt$S9XA-JjztEo;U;eJ?(wU+g9clUq{lmdzX5)n*%|-< literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/ReplaceDialog$4.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/ReplaceDialog$4.class new file mode 100644 index 0000000000000000000000000000000000000000..52ed1d01d7b590071c95e07cc334294bf0343fe1 GIT binary patch literal 863 zcma)5ZEF)j5Pmkf_Pq0KQ>*o@wbfo-zq|hEeP=im3-e^rsy+Hd{ZPeC0!(kWur&VK5#VaG%W;H&pRd%zA}?MrDIj{|3{yD4xdXO z=`=G|>ETlRFB&NjgomL^)PwfKckdsuKl-}uCfKO zW&&H4zy%iEg?7wnY&7e@D%W?N7NJa2vNnFO&+~Cy^|H^CuGzx|kK!EP>pVoG;nd&> zt??fq7(7*n$wXsO0reXJ>!@`u+pJ6Kn~&BB2TCA~`A>J$Ck?qgkg(A+UVaF@f-{8RsdTsFMFb`aE{{T>4n2 znXyU_UQ%&p`aT{-SjR>LA9E1`XT{iL*(<3Y9|$x`=9$!k7Q~tf zY*qpnn0FW2Hp7w8tOKiD-*H-mGEK?acz=)QGq_X|YpD{2?znTS`;;`IX8d5uat#5``W$Ag5MQ-q@_LeRQ|*!_n3 uUx2WL{>)`BOOU0~52hfF#x2}tm^zjiw1zvl%e%*~<~|y1Ig%dl{QU;3P}zn6 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/ReplaceDialog.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/ReplaceDialog.class new file mode 100644 index 0000000000000000000000000000000000000000..bede088fc262480938ec2b8185ae090e35b9e748 GIT binary patch literal 10881 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 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/ShowAbbsDialog.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/actions/gui/ShowAbbsDialog.class new file mode 100644 index 0000000000000000000000000000000000000000..b4bdd5b8af6e939eef3a233dfdbf264440b0c2fe GIT binary patch literal 5157 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 HBu>A-Q*SL) literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/components/LineNumbersRuler.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/components/LineNumbersRuler.class new file mode 100644 index 0000000000000000000000000000000000000000..61a924fe3d3a6f9f806920f841af9a6efda4c804 GIT binary patch literal 9253 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 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/components/Markers$SimpleMarker.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/components/Markers$SimpleMarker.class new file mode 100644 index 0000000000000000000000000000000000000000..c03625665f62ed7a6842f4120536209f43a8a566 GIT binary patch literal 576 zcmb7BO-}+b5Pe-fR@PMzRP;Hcffd5ra}^4336UOaSf@KI W6bV@KDB8#j;x(qg{s_+TP&Y39y literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/components/Markers.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/components/Markers.class new file mode 100644 index 0000000000000000000000000000000000000000..e730f0f053260df7ccfe556a01afb455e8db2ccf GIT binary patch literal 3853 zcmb7HX>$}s7=AjLgIy*G*BU~ifD+8ff?(7HLX0B*pyX*A-V zH15TH3$Y*fFT_SXVB$eZen?UtPGdRj6b>Mt=1`EIj^sZmhf&EgX2MO8Jf6Y?yfh|J zOrwOUG#)`Y4IhCVrsYsDaVU+$n2}tMns`jW%DIzMo-=5dC!8`r`-?@V-0RuC@Av}M z1H11KSTQheAF{L4f$L?x(&(sL9L)}JcFH{h#%8zZ2Dg&8rFEZx)>|q#0(Ap!(HWYa zJm8c^>;oPtO9o1L+uLWCUHKgmwP4JpnpFei{-edfo|&?XPBvefoGKNaV&G>(vwW(l zDLa#;Ly?_4a#xEoY9{L+mgWS`Opx6*!m;7F@+u8DizBW*XwF2K+^ud@Qe<*#2L zRk2-Q^_&J0yvYc6W6bs3fG}M%`_xW%bj;%~PZ|MtwC=y+(KQuTiDoXa z^Am&il!}9iCrsSPv=dk}H>?t=v{P_{QhAu+q7l-GkhDhosRXi;gqO<~6*QL30^jinX_=}FF8hiFfhuQ4;QHAy z*=`qPDFkk**f*1RrsRSl(f#mzwNqr7GM`Lo{x;7O7@ymEr6#PBew;Z3=EOAc@29f4-4KGAJ17e@=%V5Nz7Exd>KO?+VC zLwsc7V+%*|2|cy&DL$jS7Cy%pQso=0_$%9O;!6u(;cE-W@QuJC)rvivJ#Y7caVO7= zTRY3NN~t^Li)GJfU5SxxK5j@dmIC!kuet)l1dHM)uyU5vWFHo&9d&}3N$mG6t+VSQ z#vwaY{0#ejd&_+KTbiebZMVo0FmaryRfI=Wfemxma1prZ2#qqFN2YC$)?~tp%*Nu- z(|RATz3`T*X!{>dcF@Ifu%qV58)X?pEae0b0a|`BODbFHp}^+>2?D(laLKoX z)WA+99~lbKTu|nv9;b|ql}m@^!$DotE92nV3MfCjP0f4xNMV2!h>3P2uyyV>N=#x8 zkz@_fJ(*UOyx$aeCE0W%XlGXoWoQRoc{?!HGG8wGtlnH~nN%@kPqOhXixM;e32$36 z3`Cf&i>F}(T3mNB22|cTuN1**J}VpfP-SnBjg2dlYqnsH*Yay4XTe!-`w`+K7ge~9 zW12I#(y$h5xUxbfH1ius$&MQd_zTrANV}`;6siV0&Y)UgsJctbXq{(|VM}L5yWtEp zfnT5>MN8%LXXxE}`){xs^!8IQj-sX`+%v22f+kM<`>QmjS{bvJ3V|-@xQT|`f~(L? zLwacYX55A?*hShfTfQ{(RvNPr^=L&K`Rhn+M+e=Yf#}3K&T^IIF7Im$U_Ca_RSSK5 z%HK$RUEE&|?L6vC++^ZraSrQE-0}}n|Bzog-W@rW|1(!m%lid9==nUE` zwWnzFmPo=d?W!iNwypgKqzFU0<1`jtDrpaDkW-RYh1~Qp^rIGA>A$q0R(VuK>Ad(t z>0%qDo80qdV7fJqR+rAPrpw6a8RJXTHD&a#k!sB7$5GdyH8ypgL9K?nPiFMS>`4vR&Db_z>Qs_a>h0t2uCwwl9GcGFbgK?dm| zg8nd;@E=h#@(e?PoTG$hjId2$FFc+rlUl+-`7elnePnp|U;)qWM=!ZGO4y4X46jZ( zyBWd`?j0occHF^Tx?X|Gmu~|Fl~4H{%06F#7KVHojPqz_$c0!~|2OKlo7h!DIPYYN zgoSdJ5_QV#YCDakL!H0DZ2ukF$xeoCS+~}p$q(s#<|s04a&eU$>SaVv{QKvn$@~Om zJ;}g6MLeEChHs!1c%Fs&A`|{4CgKt0?WRy;#fvTsVn}(>6$M-;4!fEB)s(TCiM@wb z$`oD%?Hp=MCeArnCPo^F+ulmiH!B%H%~C8sg@)5u@jVtv6NRcbLv6oGkoJ*Qg}ZSz Z=M_|p%&Ye5w?z7LiXP=vY?)~*QfDZhwU^|iu zwqabs1YWA*>}3U$IIZ9e&Q{?ZUJ+~O66?W~NxnE4YM0C5j3xloT$PWX#LBEMq~&6&bHes2&*|9_brRPM(hs zCx%BQgcGycycWx9#&m4VDrAi5E(x3Brctys!A*YEjytVGUDA`3|cc8Qg2$%>xh;q6dnF_wK1g?bZb1H)+~{_ zW?$~~d1fmX7Z!bD+9lY8OlwADuHNS$Y0l{e@g$<`crXaV%9~^;4RDq=QxdlMpq#Yy znyFIGIjoQ+za%iEF4cwNRDTrKE1bKX5c!d9eA<6>r7!V?U}b9yB!lZ~-r z_^njXtc+>c;p}>t5p(1eOWe$wjJwt;MeQ;(BUTu+oDp@H%`y^y0#Ej(GnQExVfEO~ zDs=l@Ld2IMubG6Zv|h%m&KJzQUa+pjXIT2otq4jeVM^DGVr<0sb>)l#`n)B9p*`4C zf-+{73MsumBg(1PQyT4JtBQ8SRKyXJ@urHacuPeS_R4r$#XESHC!pdzyw77$@c}+m zu@5aWK2q^9K2h;0J`;OCcY&RfYj?9)ZBr{JQF!`7#+NF-!q*a7y$AOY*@>;+$oN*p zcetkFd$g&Dis1(_{D^BZ7FGO&pCweX+U%l|@r#OI@tcG_>v-~{g8Xf=cJmpYn$=Ux z?M|_@++#dCNo0za&K4qJ-#W;vR8P^_=xZJ53Rv5tfw?V2!d9=nUr-Y2ydQ1hvT)al z$F3=gYFf8?O~%cRMA`22B4{ZgredteevVUSRAC)AtoD1%FOIc3bBj-negFzhA*xNd zhg3E<5BSZOdr(!LEzZ3Yq~q*IUbgpF6BQ=}?j|DraFRZbj#J;#{Vx3Xgy^Co5>aFQ zqNOy`XL048aUj=@?bQFI_b6O~Oe87!(sX~fq zj;BpcSy^zaW*u&vHJg?c-n^ZpM^ToFO@W*k4A3-ou<;&avHn&S7|!}*nyqc zg&-na*#owH{!iNgl|S}hd(KvCKiTT|lxf3W&G9L|9pF>qGZeiE=?~lNX^slFgWH1a zj~$$;juFid@=d}sc$T98_?Hwa_#BKbVMFT@0?$XUBX|p;p|)*HsOStvf_Kmn30{Z1 zh^Y7$339Bwg{rnla0yChC=$AZTKh}L{UV42Ac#as1>_qf<0?9=uR9Dj2=!!Vv~o$MJa_rKc@6${~8`<{k!n4+%*| zkBsBo!As2zwv)R=wp78^;kt2k(z>w`J)Weg<)rnZ&&5fRTYxy*Tf^#YY?=&L-$cz4 zY6qjYQ8&5&Cc-yRxdL2m8~33W{XFy&Hux?Fpd8+IhSg8_TK>B}ffsC|132kA9Ot_@ z(Z*=&4V!t8$5kKw6Ad@exZ)_x3;-{ZU4k%!Xuy!|Y_qeu?5vSC2|`P>S$2_hT{IAN zGg0jnE#Way7ppytvI@sggCy!P?(xu2_RvuFFoa<@h^wxLc9z+eaAXNv7tvI9a~+Kg zX9`bNdQtC-H&p* Xfz+G%40Be;txvL~S}DT)-I4zQbv$ey literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/components/SyntaxComponent$Status.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/components/SyntaxComponent$Status.class new file mode 100644 index 0000000000000000000000000000000000000000..178e861930501994480b4d52c5f7f7b1874df0f5 GIT binary patch literal 1195 zcmb7ETW=CU6#j-?SXj0#g{lSXrHU1(g@WY?(m)U!k_~;>O49hW;EGF@p@F5*f2B0B zMx*JoKgxJ!!Gf0unN4PLuHQH3oZ0U`K7RvHKrsXvJ1QO{r68stqe8>3*q#KjqLOh> zcw~cE7iUhvK7-n58Yfj0)}h4;}L__;M^M49CI|XNX+TI(L3&%Z_i9_$FOX;O)M)g6*bXw-n7Wro&GB^8# z75y84s$I6Z?H)4R{0Dv`-C~g4H#XfnWY}F!jTurVDJ2ZSa>tnkR~J&(`M6(RlK3HY zOEm`LVaIxIi@I$5(bTM{jfSWgshEa53JRVw>@77C8a8pD;STQ3wiQG)tRup(IICc~d{>a(lf-a~_JC(AkpCv)Gyfudo;DnVocRR* z6=V_M`z;_r8g1%^+t~8#R6Oz$kak@$vo_P^(9DL82y1kzQbohB-??5sr^CoGBkB% zubsDq-Lfkw!qXzK<#g8mLOA+eUVWQU|Dg$^me<}$=k3GXR*7)>zwF`H1Q~&_CIbPz dz6<~bh;CreY2K>%o83Lcx@azmo}B*W-X{X>VI}|o literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/components/TokenMarker.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/components/TokenMarker.class new file mode 100644 index 0000000000000000000000000000000000000000..7b47344b1af40897a314b4dfe378344987b0626f GIT binary patch literal 5722 zcma)A33yc175;BB$(u|bB!na~frJ22L$*N#DhZ1r2^!5NNuapYz9f$@Fqs)=-UO(% z)>dun*4mxg+SV>~Z$%kEtF@c0cHj4Xv8!F|Vy#O5bKjfEOh~GHA8)zu+_U`WKj+-Z zqtD*=Ab_>%%mB{E9R}VWKmqP3!DhT8fIIQd0H59^ukQ}vF1#mzMR>2Qy{`m8yuTDj z@Bw-Kpon}ZfDhv%0elo6Gw^W{{X~FLcZ=$y@_LV4?k&YJq~&tlz=;4(;y&4TzkK_o z9}kG82Lt#N9y0Lh0P67>KR)Zn=Va;gempEYz7W6{@rYP|)WDZy$CnL!C4gq!;m23y z{x!MK=-2TLap;?J`Bn*b;@cwq9eMh$tbH$l@8bu4{4l_k`waZ35T_pB6F@tDY~UvW z{1iVEB|kUt3j@D2@GAqqR;cLi+1@$YH*)33;Ke-yBfE!shPl|c&ziPE5i2?w8g>%l z=wye&g05IJ=~z)`rxi)r3JZsJ3=Z||7}f4t*6m_hFVk9(@QPZ)7+lr^G#C|)WU=D|;;t{()^V%DY+KH}+ zl}w7g);tyCv8i}0YDb-9$dykv=17h z6|g2Iyj&_&Gql-^(eac-?SqbXLcy<}`A#S3EIm)s zByWyhD+u#LWlrXL9Xnx>&h)1`KNqC5mygwR$j`xEGS|Rw4Lrv5kH?~W!jlTC@_p8o z!E)ud6wQWXQ5`^mL$A&_Jvu2XIz}R7tG+i9u_vuaXJS&r*mH2)j%z&st4AuBlA5 zfN@-&Y--_uQ!P|whAKDJB2{6k#dtztrN&-QxA}N(VmB^jvCK%i+}@T7M;draC+cZ_&&q;kY8&sArQOAkzjI`w^&=MN5#Mcj~I zTnbzBJCqEC&_yG>W?}4Lx6di9d za%QGIzvZLcN@BB_I!=y^j?yMtk32pS* z(Me}7he;+O#CAzzuOvifLLU35)Yxk!2eez{58?L7L4jw1JOf@jWK><1vV=q>*<+Bx z#2oR=B2QidTr%V>J)fKe1k2HAM5F0vbl&(~mrERPqPwwX+m4V|f}dI7LBQKKvnGib z)G{ESH?QK{9~!v{^Q`kokc>yV0;$TaE{%{hVCIJ{Ib{#-;Y^xKS00Ml zZOm&SkBH2d6_49dKD5rgSwP7N#+w%0zGQ|h`G|X$XJqt=uUyh9r}Cj#GAzA|jiq;Bc%-whuXo@A{_g4S$$eeyo{MMMs?)yD z)y=(@Sw<_F1Jr;uMU>0*7Psi+SCm_>?l)aj`Ui|c+x#%Vpe^5UUQ3nrF`kAAc_Zm3{ z@E)KHk8QkO!MAPnK=EGQbR4SbeiZCJj>2Q`-OaTEyolF@lmOPjhgOtfJ+9=N>F&Xc zVew624C9`@PVOq;T1iuL8bxUo&nS|=VE`N9=g)XiQtb+QO1K3Ru&GALdC^mMCuMw; zUDI?gj1%zpw>*rqT9&3!GSHMpp!H!a;TK=)y(m2ivjB(TZ)#0rfmkin?$_}c2tw`0 z7P`F^6$HJSpf@q}5CIiWnrNc}wb+ZW4t7n}r#0Az{q)6;Mno`0Z=#gI#i(7-mY1ABMeyJ>2+E(vq45R%C(&4dT}QCI-G3BR*35cnsUW4= zg3Lu*8lg1STwkn?oO1p>Db)Mmq|#p_ul(g@y=H8AC+n6S-Q zsLWcZ%vyLO-sA;zt!JT)A-tgCJY6*n856v(V@PRiJd84L@f`6%Y`cx7MknJYrt)S~ z;uaRgtt7^6ETP+Td}z!1(1thTEwn9(VGnL)&fl8tCF{8)|AP0UeRoC2acsH=b&Ih% wjV&jz^&T{dU8PIcZL7_+dm|$_%=H4ijZ_0$S^?_$N8BAOlAUaMyUq{(4{m|!Gynhq literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/ActionScriptLexer.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/ActionScriptLexer.class new file mode 100644 index 0000000000000000000000000000000000000000..7bf36e543236365edb38b453f0bf600b69712f58 GIT binary patch literal 15708 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 Cm&3*Y literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/CLexer.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/CLexer.class new file mode 100644 index 0000000000000000000000000000000000000000..099925f52ef2419cd2df8ae464775858f1ef0c6a GIT binary patch literal 15565 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 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/ClojureLexer.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/ClojureLexer.class new file mode 100644 index 0000000000000000000000000000000000000000..00431633bbda49b49405426d33d8ac832993df28 GIT binary patch literal 38527 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 S%VM{fX^lYYCrCGmpZ;Hqpw*uM literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/CppLexer.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/CppLexer.class new file mode 100644 index 0000000000000000000000000000000000000000..3ea83907cbc78108511ff03b2d1ba5804117c9c0 GIT binary patch literal 18070 zcmcg!d0xs$n*VPgM!uXxWr_nhy1 z-|ySbId|?!zy0~yiy|^iUGJ0c_@z+3>zAwLZ5H42$@kgv1E0LZ`@25*A@4u(%OrU( z3AG=y_z8=jvUs1x&%E-1U()2~B>m77CBo)ku=u54nx%!cRu*l3`IY>d#eeYeH>~}Z zwcoM$J&Qkh<&VVjCqDeyD}V9IfBNNG`7d(+D~tbT&)-=54~xIE_y>!RSp1VDAG7vJ zl6)$k@$qxkE~8L_N2ORZSePs<79JKh3$IW4NR`CG&mx&cz^77ts*6u`HuKVeup-sz^!7gxZ=#_2o77v&yR%SDKgcKQzvnGk5&VNs|goW)#gSG(~QMfs)F~ zil!Bn7LA*N20=qIsHPO&J)?A7X`vG19&qb|rU_HWO`kh`+=M#|Cn`yw@?iPHiTN{VNLuS4L}V+ed0Ra!D` z+6*OW?bVp>RJ6^UcIUL>+0*70mXs8iIM}BZ&z(B1bi!n+qm+G@VdIN# zXS<;!fOb7+9cPu-&F6EZ(XOjpw79w+NNcOA7FD9sYrvH@ zFS@5_AXs}UY8Tgl#PcxY7h@>C61uDTxE{n+jd+GlDju3zzAz#I=5=tE)Gk3Q06sAP z{s%zU-d!or2{Vr3m%3u1un7SY3XI$0R=VX1Z%(N$ElaB)47rLug%t?bW; zMoMgtcD7$1zcORc!3i! z{=%gdl?&;}MPAhnJ&2d;+C{JdYVZ*~17A7ejHX3S?4ovG<^9yj8c;<1K1hHAwDFcL ztFK&&aoq3>Cy$)CZjM~L@6_u0b zGw)K`Lvt{vXC-S?D5#WSC{tO=G(5JYj4qa;l&!qVr;?OkC8IY$GSdzPy&he&JY6l7 zk`7`EcfZBPE@mib1d>qeiki}d9@SUea!FQhw1%J2#*ZENJM-8Fi zdq+aSAMXzZf3iCi{OK#9;QKFzf(wLA@cEgOKZWh3ylJOg|!n}ClFYk3wJ zTQ&n@%X7fk@;orMya0?XF92i9i@@0O5-_%GA@R$=NEeJmeJh~S6)oEc_Z7fp>vkgE zLBuDvZju7op zqCG~@$AMOBae|0X5b;SOZXn`QM0^^ETh7p`X9@Eht$LmqFA(DeV!TLS~2#l?d z0b}b5U~GLH7+Y5YW9uqlY+VhEtxo`B>l47(`Xn&6t^vl@wZPcA4j5aX0>;+$z}WgU zFt%<0#@3C%*!m3cwLSxUt($CB}Wk_&PD}C&mNB zc#s(1AjU()c!(Ge6XOwLJW6QCfU)&B@tq*Plf>6Re5Z)-6!D!VzB9ykmiW#Q-+AJ@ zKztX8?-KB}1%Z$1wmk-nZI1zC+X`T8dmI?sRsv(&Dqw6|4UBD10At&ez}U717~9qY zW7|4lY+DD6ZBGGX+j?LeiTl%JxdAZSHUehbGl1E)2{5&&X92ZsGoZF@2Gq9a0JZIT zKy7;gP}^Pv)V7xZwQUQaw!I9fZCeR-8=$tmLYS`*=61r|L71-+=1#)gMVPw@^EJZU zLzsIBb01;uBh1$cb3b6V9U#Vo#P|j=9wNrWz}R+#_>L0aQQ|vBe8-9J#KC|(DM8h% z*>u(bkDmFB$lUK$$$A|KpiIHl1y@&VdMS>ZLMOmdZA`cI2qu zs*k!#87fy@t@^5KR6ljC>W@*^sR7C!jro6|%7bB5J{J!bMr>^mnyzo}8%&ZRD&LRW zP^*2+4c$Y*G@Aoiq}u^>*dE)#9UR#azI{@rZFkq|Otf)fJYMg0f z(>(!bC;FmPep?mVQ7X_+0@dwF(SFw?;6Awn_ac`&c;2Dz#PbxFLXT8a(S?QHR?{Lq zSkjG~Y4w|jVzIVWF{Dp-Ir(gLS0d?PQv&K4xR<)<9T_vVjEKvixr-UxX2o$+vo$sB zaW}3qH3#KA;QVh!N1fG|G#!dB1KnIu-0SH`fq_uNR^@Q~eX3(0w!jgi&co~0VqQIDHcMQNRNR9Tn_JOb(;HyRd z!iZIkuc*2_TxwDBSB!d9mtU_It2%%E2SPI8ugJSd zTO|0ok;~VyJ_NPpeEcdo{`>VPzIG#uN4Vj86fRWZU>?iIy0BbfuzZ}O!Ye^+6d1$v z@erHhkw>IG6N?GP7FT30hfz@HgQA`8sLW`zB4o`1@HB22h$6g-Ask-CIV8NgUvwl1 z!cSL)F1G%!X9`z-=Tik$84W|4qm5z4aC0=FvcNRM;%b)% zIwBL#XjIzgE6zp{dfn^PlR2!zEX0iHB-X-Dc1;k32*B_f6s>4sY zVU6?&uP4dVc7n0&-H<4|kTchKF-55u!?Gu#~kt5&&I<$xE_6n;q$h#N&KZE>xXh#jW0@XMsz8aHuiR@x&e zQInExTc`X~_!S^YjG6}6p2z@{zax>u+3_mn@AO9Hry`=Rv<+>r%QYH+hj+V?f_XOl zS|a0gFll&?3h#9XxqSq_FA;Fs;&sZ}Z$COZZ44_fhwwk)25Ua;U<`I`vXly(Z}mPdmA`96=vjgNEbYFs&q zCuF9JvG|YS?V{qvy!U^lBIEd+$^FRpN+GW zOHaeT5pUSW&7IPd|8sHt(Z*PKJ}%Hz;|pKbqDZQCBo0BIpoHfs~9^D zyB!R`HHiX%k#QtZhs%ndKAOnWAZa`n6RY7hUmP;TblkzTgcCe|BnXL;&Y-F_X*(?u-LjAD5&UFiI zcK(ZPh6JigH0f~*^LnBV?uHu@g#k;7Pn>!bWk~ zM*5YB=+V)*K2e9O1$vuS#i@;*Oq>Llp0ZZE=?RNBJ@Liy0qcf0c1VS$C)-t{4e@4| z@LkJU0vgYEuoRdzt#z5XxM;$4t_guFcDI>mIbpP|N$9`u*|oHU7JwDi>`+B z)pMQtiW3w=&NUTX{d}V6;i7cD-GwfF2fk`0;R{(~tMJp6uwN0{tZz>)eZP*I}7zJ7|T?CZ&xEp_uY(=pK9=q-34E#GF65L z2U&bL9D#2_0bIk?VEsL3Al=_vW#i*k4}8ArPH;eJexoY5+6Q!&&EElR;`Di0(~rR0ld*Xfi>6C97J@qV1Z@0{?6DbGc3LQS zHx=vV-f0-pUHaL-5ch&~6=+6SjGeW`e3RW#2g0Il&fn>u*45!*xlaN4c0J)Ar z(rCn`F${j2IwOd_=kc$ zC=xkNT2NZ;!@V4!N0~laF#?eiBfKmsq`BENSR6M!l|%|~0%#akGtsbV0zD0B8wQ{r z45OLpsYd(8g{Jv<+M#LlXj;?J5k{e{AjYq)Z=<18H9PXMX`YChKGqyhP)*b#>{2y; z+Q_DjG&qYj%}WQ9;XLYI6qrLJEIbsT!B~zRfh|eb7(5Y_niz!+Wo+{!F^FTQ(Xk*l zILvTxrSlQJ5kYZd9fR9fj0cklTCH3sOj0QV;TM&y{ZH$3l$}nUdl9Ynna)iw+jOwl z+7%k3PYXh{3`O7?fCc_OC(8Z4>&O>8^l-PPm})vgba1-K>e8VX+_W6ng3*DsE~24^ z@23ui-Ir}WX)v(#GxBsaMhajteAZWUSQ~8wIEnEs}R&rXR2C*sJF>?XN_{daN$o2{4XW^XtZ$ zFv&MK6r9N%`_@4k%14xX3c8aHGnp|dl#Z~bf#6!_W^lsNJ=z2Mak!mJ)%AP&MImGLQYeb)jIj9mXk*@Kzdo4vo}R9t|G}z+6#`&v=Vd*rD=2NNh!sdd36U=w0!uLz~e(c8+JEpz*&eMbb^%= znzD1LejjK}%!-=YK15Gs!GT|^Z08kOXP zt)9~Kax;qxIr9(|n#)lGXqGQ?`RZlg%ys9jAkH`KX|V4I1%JJIk39z`?bh2L9>wMS7^m94OB5rMqEQZ+}veBM&3zKb;ITJE*FcIM)&&l&V zpSYZdWl*e@TVGq7TU}mve=X5>wJg}=|5IDylUj29)JSf?pMp%n>H2FVQ*M{Z__K>5{#k;fyVLCgYA?+njQ$8upUIk`p7Yjh=$ zn~i^u0h5j1G+BX~mssR+=*|C)iXdiUY9pW?Y zlvHENzcAX`sL_5G3Bs}QMjPC2wAdhA>AjpF4&RNnULN3!fp{_Q5|2?L$;J#xGfE}f zm?_s9vt)oVTW&G#mQhAoOf2?^#$xwqERK!Zb8OU}W25#Q9ku7ks6B_r*fS;;bJ}AO zYwZ@$Ss#X3m%yw`Vb*2;!mR6}X8k|NZR2aO=_9b|qp)cZHhl~>T>+au zE(OL)*mPBlJ^w#)Tk#jMs67qTM0(|&lH@$|qy+NPZj~5($l!0u?HL;^0aIKy~3|+8zcOO;7z7GiFs z$dtTul2(>~O43hBH&=w8oyG?eFn%7xG9}6~1uQp%m7n|42+OyTshnnRN$-B%GsPTj zj>$>0|GHE1@^V%hdbO~kHBUZQkPOevmDc49Yun}j#$u7rRV!w#Fn*0#`Va9Mzkwfq zi|GEHWEsDge#ReUxba6BVf;x$8v~(P_{X)vl75(xSI7(WAyyM-t?-T@$+)S2*Wkr_hu|R z!K4$~%omS22(}$8-OVAAZ4T8CorKPbz#$0yJ$7~nu{)z_`V69q=tt{()YAqXnZu$_ zUYQ(6IdJ<0NwBzQO-Vm8%fNQMy&D*4_IS$yyOCNKB3@|6k2(u7d zuSpsww`&j_&A-vIOQ&?2>`piZ1>&Y4b83vb?Nd;iye4~KNbV)aKmbM9dD$I6>WRRd z4Ul)o0I{P$Y}u>*mnQq<^$4#C$QHUM^PF5=rsK~^6({^pNndw+stL`xG2k*ItkYz_ z9EdQy4PGI*Ks&SSdxys>SQ`T`5QP_zgAsW6ZV=%%9J~mRk>Ws#=d~mTk3Yi8;75lD zhjqYXQNd$!P4=*Cjpi|QSk``cNmg(0a2%i$$+$c%r({T6(Ni{cV zLCh0BY<3uXbIvmDCSdKThHoPkj$z+x=sXFCQRJ25pNj3pep+Ea-43igVyIr(*sWi; zTYPz*Q!+qLJ=yb4N~W6>`n|y1EEFP zcl>`xsA0G_<9;3Pf57!ETzl}Gh5IqwVME3Eei_$4aJ`3XBd!;5?ZR~!*Ew9@!1XS! z4{`k#*WYkm##n4~a1FsV64z*$^M(c)c4Y78D^b1CsV+lxxZNN(p?Lx89;aT; zxgNuLM?ZX~A3pmC41VNmU6B6fCA?vMU2ZlTrO>!Rll;*)gP_y>MvFg^^w&}ePU%9rj>(l3Vram(78sM z)z`?j`Wbz!{>A`nfRS(I88=#ki~?)0F~%BdjI)Lt6RiTH)EZ%wS+^MXSfh0|AH=db z7j`?NbNHcXZCkYVs0_rr_gC-^c}8wRkWEJI9qbs-qZVLlM`nV3>Rg1&%|^alK(8T% zMjwPX-?#f4qvaB67T!g^Bq7v1*gDRZuVdx6@g`6rVbr|R!mPz=>yU`A0Sef*3vPx^!z$K{&SGV!&bz+`YL=kha<)q)u7_sVaT`t7qOq;RsaA1 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/DOSBatchLexer.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/DOSBatchLexer.class new file mode 100644 index 0000000000000000000000000000000000000000..cdd26f4493acd41128ffcdfe96b07d2c949bd833 GIT binary patch literal 14423 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 Ci+qy+ literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/EmptyLexer.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/EmptyLexer.class new file mode 100644 index 0000000000000000000000000000000000000000..6f0c61db87f3277be5cff2546cdd66aa7bc09ca3 GIT binary patch literal 713 zcmb7C%T59@6g}nP2%-ooDvHL139_JxTL>GX3CTnk7&op8RxA!PWTvCTXSp(Q;RpCp z#@hj-7&UP*ZSUipx#zU6Z_h6Pjw#=1Aa0Z>xpg74Tkhs z_yMuhtM*Xbi--pg${lbmBh9;VFp{orbm9^ZwQ{(v0^Kn4Si!W)Q2rfBV|zD&W?&r> zq`f=o(p0P8`4~#`A|~SxA&1|3n{$dT3}d53Ix<}~aD@(i($fBimY?~Iz--qG{k}X^ z#^n5`X?5dM4rwefRQ|M=l$u`d2y*niH@hAc(rU`UHZrv4rVYqqi6TbvGLabY6@7*>1}5N8O@CX dk(gW&Yc$(Bou@xCnGMR6D3ib@b!^3_?RUF1se=Fj literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/Flasm3Lexer.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/Flasm3Lexer.class new file mode 100644 index 0000000000000000000000000000000000000000..b081c64bf3e243da2c09a0325e5bdf5c251f0ce6 GIT binary patch literal 10924 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 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/FlasmLexer.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/FlasmLexer.class new file mode 100644 index 0000000000000000000000000000000000000000..06e279d972208ccbd7b736b5cedc7e144e21e6f1 GIT binary patch literal 12175 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 U7;D2Kv5H#6I$-hIA?exw1*$vOm;e9( literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/GroovyLexer.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/GroovyLexer.class new file mode 100644 index 0000000000000000000000000000000000000000..989c1a8abf1919439657c70f8e981fbbde08ec3c GIT binary patch literal 30219 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 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/JFlexLexer.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/JFlexLexer.class new file mode 100644 index 0000000000000000000000000000000000000000..2a9b2d4abd8ac9b3e3952a03e9de0ef123e6cce8 GIT binary patch literal 26319 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%0Di%X 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 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/JavaLexer.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/JavaLexer.class new file mode 100644 index 0000000000000000000000000000000000000000..615da1171294125483f4063cd80f64148351f1b6 GIT binary patch literal 26900 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 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/JavaScriptLexer.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/JavaScriptLexer.class new file mode 100644 index 0000000000000000000000000000000000000000..1ce88d70868d41326e19f90cc3a05097d47bf50d GIT binary patch literal 17914 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 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/ScalaLexer.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/ScalaLexer.class new file mode 100644 index 0000000000000000000000000000000000000000..db6d5e3633f4d1e9341de3bbb1afa611e032fcef GIT binary patch literal 20419 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 QQMqvzz5WU92L1HE0h~ccRR910 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/SimpleRegexLexer.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/SimpleRegexLexer.class new file mode 100644 index 0000000000000000000000000000000000000000..2eedd40ad0f3d710f79bcdd191084e272a6cc448 GIT binary patch literal 3698 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 N@(xP1Am2eB{~tc^#ybE2 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/TALLexer.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/TALLexer.class new file mode 100644 index 0000000000000000000000000000000000000000..9ec89bae15142c69bb25f698bb36bf108968cbff GIT binary patch literal 12480 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 N5D!4=ztAtq|1aY(S!4hJ literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/XHTMLLexer.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/XHTMLLexer.class new file mode 100644 index 0000000000000000000000000000000000000000..71c5781e43d40731bead8cb16c2a5b30285ebc5b GIT binary patch literal 27252 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 QoGmvsL+Teu7wnh+3lGZ^fB*mh literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/XPathLexer.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/XPathLexer.class new file mode 100644 index 0000000000000000000000000000000000000000..ab9ff24c6c4742e78b90795d0b8dd8bfb2abeb18 GIT binary patch literal 23940 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 V{)*eSC6eY^j#B@D>xO*ue*ynVtt$Wk literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/XmlLexer.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/lexers/XmlLexer.class new file mode 100644 index 0000000000000000000000000000000000000000..eba64bf78a0dc5a93a7cbc5887190c3ea6f0f1ef GIT binary patch literal 9485 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 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/ActionScriptSyntaxKit.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/ActionScriptSyntaxKit.class new file mode 100644 index 0000000000000000000000000000000000000000..04ae29cda9b627eb15dc2a086e4390016a2b9776 GIT binary patch literal 540 zcmaiw&q~8U5XQghzi6yht47d*3La{e7Cc%hh~mZIrBd*?jVo>&lag$uK9;9~f)C(B ziL+_J6awyHn3?^}H{b5}&&L;lGwfKX+8}J&C}PXPwgrb!x=?}A9YVf-+#?jO!beG{ zxGIo$q=dDA8OrlWZ)b z1j~d~!fATozZVc{Y5ZC~iLw9pKpdjLUu;f}|C^U^T;l2+dCq`x;}i5SMQ)1xdqOR9 yw3!C>u!0)rOwCxX%Ur?uoa=O$G;FDHlA*BAyAKitXGWzI)=*&$!a7gqu<;AE!F~$> literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/BashSyntaxKit.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/BashSyntaxKit.class new file mode 100644 index 0000000000000000000000000000000000000000..3a7243242d27a13b0bc575f4eb2a48ccbf3a7d62 GIT binary patch literal 402 zcmZ`#O-sW-5Pg%xMq{*EKMv|e5NSPF@Ysq66)y%am4L@-UFp`CNV1Xovpf|l_yhb= z;v^Ai1$W`?dozzW!+w5EKLDIy%SGJ-Va>w=)?GAQY!GUvI@aclU^iPK!MRB86`>yJ zSl#4LeU;vFKaxr#NCq5*oa#dV6dg0v8R0M(Wv{W}@iWJ&UC~Evvi3P=!(Q3B)}~AF zdP$xR)Rit1=eoxueqqAiY*M7gDy>q2g8HbzEnt&yFl+p8=sw&M!Yun_F%&?WtGqP6;4-is{MzxmNXnZM1P68|APb6sL}28%nuYkh!jrzlNfz2($0SC?sE4=bp1&(w@% m?XiLhH}~l>X;`~;yujgrcOT{swHZ}#ScA_Vgmr#h!p09F0BflL literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/ClojureSyntaxKit.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/ClojureSyntaxKit.class new file mode 100644 index 0000000000000000000000000000000000000000..7cd6f2ac5e1bd582451b2c5418ffc1cb3d61dd4d GIT binary patch literal 520 zcmaKo%}&BV6ot<%g=z&+l)8`vT?v>-;!+G7j2jy_7!sEQj&W*jO@9nNmMaoXd;lNH zc&89j4RIDX_vf2)&&=2N`zL@?>{+PUAne#EV%I|5fr2bqF1rxps#V-r=@AZ+n%1KU5{Ms@rE literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/CppSyntaxKit.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/CppSyntaxKit.class new file mode 100644 index 0000000000000000000000000000000000000000..85969f774073911c34832faa29059f7c26786d77 GIT binary patch literal 403 zcmZ`#O-sW-6r7jDrp9PL`~dY-L}+`k(4#HA6ucO`R01Bib-}GM3CULK&+=5L;1BRe ziEmSpc<3(7&b&9gdFa19(0F3P?wd4$$B*WXTrllH&ei=;s( zL<z;1qi}W6rLPm$lD|u+M1W;0G*b BWS;;4 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/DOSBatchSyntaxKit.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/DOSBatchSyntaxKit.class new file mode 100644 index 0000000000000000000000000000000000000000..93e19b41acd5d4d5cb72d7da8f25b09b69415dfe GIT binary patch literal 418 zcmaJ-O-sW-6r7jDMq{*EKMv|aZ)pz}JX-Of#fw1?k$}f-T$m4`gvA1}RrsVV;OI7KJkUtLW&VDhZu%R6b=|j2}cMyEA&HblL4+Mkhii!)SVY zu5^#!MR`>u@=Teon|~bpBk?E*yY-H#9LwUTTWF+@23!N{grIKzFP^YdxAx_&s8ans z9nTZ|ddf7Z*N(9Vhd<3M;?2p7^Q;bGGXwn2E9iOxYXbY3wS@&nk56C=i`Zt)u9=s$ L&x)|bXkqyic4cWb literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/Flasm3SyntaxKit.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/Flasm3SyntaxKit.class new file mode 100644 index 0000000000000000000000000000000000000000..a97a54bde4535ba292a1a2efcdb235fd9356ed9b GIT binary patch literal 516 zcmZ{g!A`qwf@@qX#k7mT$MQs?i4WjI z8E0EG#b^(cncZ){{ktEZukQekvFV`fg0Su)kBWm02Ogntrb4A#1iN<7CFIUWw~|ou zRVc5aBV^9S*BsKw+_gtC#g4@$?4b|B*6NhjI6 zRJuv<=2>4(WYjbl=L6Gnx;a<6PjEYWujDmX^#ftNf4^p5Q*(OKw>GP0LPSN z!hRP0KQCb?3tq@OF%I<4?_du(eoFIM{I0C$y1>&ZZ0>+!{S9<8g*Ao!l2D6WU8aF8 tEMc2_rc##YB2O?0XPy?5hAq?&|1ebf?%l-TrBueSf)YCjt9;tR+843fb2|V4 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/FlasmSyntaxKit.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/FlasmSyntaxKit.class new file mode 100644 index 0000000000000000000000000000000000000000..1eb7507e9bb2fa9cb217bee96d68e90d26e30772 GIT binary patch literal 512 zcmZ{g%}T>S6ot=C(?nyn+G+%UaUs?U7F=5CM(M`jrc!V@ts_pGCX%F5AInui!3Xf6 z#5+lm6zVK4_vf2)&&>DF#}|MLY}=?fAXFU`v1wz=hD)%nRG^X;p-?;R63pxHQ4-3Y z3gq2*)RWP@==t2Kcwt}oT@fi=&zffPtYX56H;CVYL`+^pARAdaR7u=u`yw87($TF- zngq8thk9}%qo&?l^mWSS7R(7wCmct8*;d*~bzb#+AYKJwKW`xwo2^fGlwiTuVU=*4 zC;v4|*voS_@=1*SKvE2xXoEAI7L%H_>SqfS4tV!rs^Df+PGJpY)*!6&Z37#>y907- literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/GroovySyntaxKit.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/GroovySyntaxKit.class new file mode 100644 index 0000000000000000000000000000000000000000..0d3388ba78f2f0c44fec29865943dd895d715610 GIT binary patch literal 418 zcmZ`#!Ab)$6r8uac6D8CtyR#2Ac(XcEO>0ii=d#3m&$_2v<6IFH2NT#W=TO^el4OoY6;Ri{_=#dN}S(d)Lag z2~kH6Oix}YH?#Jyf7};CLD-w0mdTMcKa&zCVw4a%s1Xk5t&4*R2Mdf>ocMb`!uH>% zO!L}}6#EGH)7&E7oX@z-ss*1J5FfpP?k4ai@LyPaSYeF#1a`2BUFPhXd0EG-2y2WU G*1rHyQfqkt literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/JFlexSyntaxKit.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/JFlexSyntaxKit.class new file mode 100644 index 0000000000000000000000000000000000000000..6cfe40a47eb27fa3b932c5ce36441fa5d53ebc1d GIT binary patch literal 414 zcmZ`#K}!Nb7=7RF=GL}lY6S%yf+Fpp&{3m{;Gvc-#zM!@1{<Wp@nyS)PQ1etP^8M}^`@ggRYtfAdf6z}V%Qh4tgYym(pl}f70F?HS$a{r zLGaqiAnnSQGA&EnI;A;~Do^)nPLO{QD{BeFAF&d(7Ix0i(w&aDhWyGH2Jy%i3o}IAXML FyZ``+Xu$vg literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/JavaScriptSyntaxKit.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/JavaScriptSyntaxKit.class new file mode 100644 index 0000000000000000000000000000000000000000..6e3c96e7b0eecf6f880af7b3b81e71b3233aaaab GIT binary patch literal 426 zcmaJ-O-sW-5Pg%xMq{+Lejw^aPi-j{JhtLR@u0y=B;auySKJztl5C{@EKdame}F$q zoNWaoh`aE1-pt!Kv-|P+`VQa-n=a}e2x}e|&~VXou}-KRt5oR|g57FI1m`rnm4ter zQh8NA4rP8Vh6!hyK^BW761g(`JL%|qRS>$tsCZ7bn2bd#d-L!?>7sWbod zjD)S$uP4oV4cZa*;qd2~MZCE;<07*@Y>oiG^9H(^!kWT@is9@x5TE z1~L*i*{Cm)Tiy?8rxwHm9`<-5^*r6Q)T2xp4uWC&8Yw=0=8?UPh#>x#edZhmqt zRhz+Y%#eW?i=?e>E1_;F+njR-w;N~4KwQc^$c*UmkSrMLVV*m9u;J*k%&=bu z|4aHu??OEAEL6V_!5%F7LcI+7PZFoPK+`Eq>Hx3#0d_ZmF@gD(Q;SqxqJeEJp-w$f o1xvF>6Lh|*PKQX%+RdXm3OnSzn=AMQRZ>_%l{6Su>9&EjAGD2drvLx| literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/LuaSyntaxKit.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/LuaSyntaxKit.class new file mode 100644 index 0000000000000000000000000000000000000000..daf737da27843820de042aec2da881c4a7306442 GIT binary patch literal 398 zcmZ`#O-sW-6r7jDMq{+LejKb95ux?af=4S}TD-V;sRTT3>xx@rBFU!IpXI5b;1BRe ziEmSpcyJeHXWkp$JofYJ?E}Cmc74hLZTf^@ zlor`UU1~e9QEhgoawZ9_>YP~3RaVXrmW8Onx3EJvs`~!PBOFv+Lv=5U*!-?T*lYh; zyA0`fA{@fw53+~&awy{}t24OFfbirUbi07FfcwhY!5U-0FR+hww3xGN>17?VB5W`^ G*!%{26k>@0 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/PlainSyntaxKit.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/PlainSyntaxKit.class new file mode 100644 index 0000000000000000000000000000000000000000..aa0842ea09a453e98ca2eae9e0eb82ff3b2de6d1 GIT binary patch literal 406 zcmZ`#O-sW-6r7jDMq{+LRS$j~Jcz9a10GxP;>X1xLM7mFTUXq=O-izn_Gfu2DEI^X zQQ}K0k{;ZJ*_ro-H;?`Le*Xk;iY*sa4}=X5OQ^Z1yJ!$9XDU|aoM1Ow5y81g9wng~ zs#xCU!=6m!did@)O^%^tP?87Dplr$;5M2u!8^@vC7~Lr zR9+U31F5gYAYrE-WkZp~LMyAkP0!q`oY0O&`EzQ-WGqtInbQYl^3Ijc#!?$4^ZxAq zLYW>R=x2o<%5!DwZvT-v9Em4EI4D<5yQ;;h0($47f93BCE#&eSGqNBB-u#&S)K|N`~W{n zeA}u-!Cjc0d2e{LyYC;K=omv0WKN^Z>LD(x#OXNsq-;*LMLR8>es1pv#*8hVEyJh3Kycb1ce(pus z`u&7iPNx}TA0B^}UBsJn85dc#;W7il!&lJl1kMER3u^~Ui~*m(HkPr&oLzG->yQ;; Ih0($4C&%1q6#xJL literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/RubySyntaxKit.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/RubySyntaxKit.class new file mode 100644 index 0000000000000000000000000000000000000000..eea212c7310c1ec4a701aae9da22aeb25d7adcd7 GIT binary patch literal 402 zcmZ`#!AiqG6r7jDMq{*Etq1Kz5NSPF@My)0(n~`Rtpq%7+7-9PM3RlPpXI5b;0O3o z(w9V}72Ji{nfHcykNx_7{{(P>x{ay>!j6MA?AoZ=*dtV~RHXDZ!ECmCf^`#*C86r6 zNcOYmKqhx02)R=8;*kh_k*Hk%6fOOzQo^Y>NoSE3(-#rRc1fR`T<%7sV{ksw2pt-Vo zF{RV;aSV$;DL=%Qr!uayx`fFLaL+zK_j4F?m~X5NY%n_f0*Bbd5p#BxUe+!v!WN@} F?F9#ZWQ_m- literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/ScalaSyntaxKit.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/ScalaSyntaxKit.class new file mode 100644 index 0000000000000000000000000000000000000000..4788a1c7707d5f7b44b3b53dae0772745706cc27 GIT binary patch literal 512 zcmZ{g&q~8U5Ql%$w28*lYOD2NMLmeMf(4IOdQrR>yhI8fw{^v>F_HX{`dFR{3O;}j zCC;WnQmA_vW_G{*W_G`SKE42)V#`9^2BBf2f(;9s7McX}Tm>rW6O8uJfKa{&?wL4EJgS&*=#JyJAQ6)n5y_4tbLvZHI2 z^a#!N9O}x6jC#6n#n&khx8R&$dtn-l8VD;lPBYLzQq) zB>x?j&?<75@9!J`!~iWh^INWkN^uDEqgYO;~~vpf|P`~m(b z@og#+5AMS3%zML|$9{gjeE>MZrjKR-!did@w0yLEtP>h1Dplr`;C6cn!8^-tC7~Iq zR9=;jLz!QTq2@|E%0@ybB3D-b6g_jV3c`LgE?!b2rW29M{+vE2Q}p8}9aoJ@Wd?*G z&dPiwFO(hFsy7eE;#m+n^*LHjWnRsQEDO({CD?_>A7l^lyFe0pY9!DB0eC|+E=v;;hE>xx@rBFRST&+=5L;1BRe ziEmSpcyJeHXWkp$JofWz{sG_w+dk?62pa*G(D2dpu}P?%>O`9}g4^yy1n(lfQ-r$E ziMlDCMk*W1QOuR5NXIgcWTvhDDSGBX=Y&Hs$zKyAr_VA`-35KrChrc<#h`3lYtttL zgS5!T>Pp*zjcW6FB3~q-Rh<*7smjV3!mH>r&mzA~wJ45O&&s z)-FT(oe2Bz_=D^rz8uQ9%&G^M84w=5gKlSVW^mtFJ6K^1_yu;ciWYNrExfElR)jT1 G2kYOPMqz~j literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/XHTMLSyntaxKit.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/XHTMLSyntaxKit.class new file mode 100644 index 0000000000000000000000000000000000000000..a978eac8bffa030fe685af5a996c43571b0f4694 GIT binary patch literal 406 zcmZ`#O-sW-6r7jDMq{+vss}#~9>msz1&>y|C?dFeX$gAV))lwLM3RlvpXI5b;1BRe ziErB?>A_u?oq2C~^Vsj7k1qg6Socv4Kv)SdhgBanA9X_IL?_yu65K{JB6w%%y&_bF zPSj2D+*4Us_F}HoMB0~eBr|RGwCI^fofG!OAb(4Y9KOgzwI=jQo4j><*}WE>aqCK( zHX-PwMb=jr+K#NxwhssLRT6f}vtl(=*>sMuJVXV)g*C!n+4*lOVY}=*R}Zp?&EHal zjmFISxbLhTEHDQA0-IRG7ISt@ysSf3 Jge67?%fFHkWIX@? literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/XPathSyntaxKit.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/XPathSyntaxKit.class new file mode 100644 index 0000000000000000000000000000000000000000..e39aaadc37277a5e858e5b84aca9dfdda6523f91 GIT binary patch literal 406 zcmZ`#O-sW-6r7jDMq{+vS`U64Jcz9a3m&a_QM@#WPzie6)|GBe6G=8wf0n0$f9Qkl3mLLxQ`NC13QG{qH}2~;h^ZdkuM^T^#4+X z-TK1%)0kEx#1S0+D07G}$1<+6x`53L@K3)%Ph(hP*q^K|tTB500()4;K67@>ysUjz JgbhXun}5a2Wt{*3 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/XmlSyntaxKit.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/syntaxkits/XmlSyntaxKit.class new file mode 100644 index 0000000000000000000000000000000000000000..2a5b128d843dcf1c80f6aed775e9081d5fb40449 GIT binary patch literal 398 zcmZ`#O-sW-6r7jDMq{+LejKb95ux>9!DB046fXuZm7vFMU2*F+kz^zFXL%}A@CW## z#J8zPJh%(9Gw%&=9{c$<{{V1;Z6EajgpB}8X!vOQ*d)|WRiexp!EJY9f_I+YOF}(T ziM%c*Lz&%(q2@|6N=HJ+B2!lX6g~5(a>8LW&R-KFrq3dg-35J8Chy)(^q_29Dbpte zgS5y-@>1D>jcW6FEM5emRh^^dRA%Lj$g&VM_!hPZ2UXucd4#>H>q0(=LYv=p2s`aR zYnLJYPK55qE~a_0X&qLF5Nhvnc>6y z$Gkt!7l0MU0zx1r#0T5dh1zJN2-Dp1S(i;My|%olvdS8-P4*L=F9{%wx6G=}jdV^qLec^=Be~4>$4V8RF#FF*(m?5ikK5`7A-D*= Rup{)t9EOg=4Ye*Ad;v*ZIYa;e literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/util/Configuration$StringKeyMatcher.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/util/Configuration$StringKeyMatcher.class new file mode 100644 index 0000000000000000000000000000000000000000..d67b376e1262e2f5fe45b9c670f248561c8eb4a6 GIT binary patch literal 1094 zcmb_a+iuf95IyTSabirHq})=Vlu{sdlA4sh1@$Eo0-ClGMSb6dt?S_0m19@Q8^6Ru zREY;ZfR94VI2Pri5+NZ=bJ-oAb7pqFe*63dz!n@61|FFxV!cGsV>VCNJY`ciU>j%% z6s_ z&kptY#2X2eXFctzNv2!CdL0BR>iTjtQdH6I4M&q8mg6%SC?{>S8wSUon?y49!eIS( zgpPrx00iRy-Q_$b?GDdD8$V-1bJxaOY@V~(7Fe7AzkqodCec8>^wP=w(&;8|f`vtt z*|aQ_U|P5a%ffYz7GN6K6mb4=VDt)?J9f|?szEHUItPT>%hkEvmA@C_A?v@@&v!DQlY#$@7N#$@7t#$;lJnHU!juu2>n&5I|ohFj#T P6dBmSP11XZJj%uIpZWQk literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/util/Configuration.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/util/Configuration.class new file mode 100644 index 0000000000000000000000000000000000000000..93b9c5d9b48f0bb945ed0727b8e662270b00b73c GIT binary patch literal 8963 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 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/util/JarServiceProvider.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/util/JarServiceProvider.class new file mode 100644 index 0000000000000000000000000000000000000000..36e52b5e437066b5961a989fdaa54aa9c998d684 GIT binary patch literal 6730 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 literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/util/StringUtils$CamelCaseCompare.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/util/StringUtils$CamelCaseCompare.class new file mode 100644 index 0000000000000000000000000000000000000000..d1dca33bbd3bf08b342859a84af39640e755b97a GIT binary patch literal 1037 zcmb7?UvJYe6vdCzZs|hHN?G|kSb@RXZfjr?52({5RDqbNHi@!HJi47#T%}HwxTxbZ z@xlv}KmwlmP>Aa!+u9Bx@etqZo8zB-uKnxx*Y5zf&~T8$JsbCPc;LXos*Q&ZY&^12 zwNbNCx3SJJzb%#2I}Dj>?T{hc@{a_=Vp}S)HyUX@E6kdx*qU8?*9+Eu2tCR>^9*-hH3b#Foj+N%)fGgpSwDjDL4yEcJP#Ueyu5U8f zy;Ia$wLRb;xa)D%PggZBR%*KpmjA>Y^n%*_*0}*m9ef4786M;#{$)2w(XNtZ2s4cO`(!LFf7INnMRzJXIwLs|8mdfNiP5EAgIuj&e8K;fJ4tdLmxE<3{@KN|DZnGL2^OD}ouE^9|O!QsxBNA2gdJJc|jH zM3oXqk88LdQytu(%ql)7>dln;I;9rs>pwBKLEjh5f0_X&M@ztkGjIX7a61MUuuPdn Xs5|k>yI6^11tp3OX>6?F3UYq{cUAV( literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/util/StringUtils.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/util/StringUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..df4a2b7a76d4a47dfb325fd3c3fc04a5cc5d0773 GIT binary patch literal 1119 zcmaJ=%Tg0T6g{0xG9e5Qd59dC`_qE72pDal3iz*g26CJ%}jjk{Ry^i z+^}&IEUoeb{0aAdg5~RU2nA&9l%AvXhEWUl9AXTt?E7!rK)$X>*Unc1 zr<7k0JjdPLpyzDNbAL_tki2^XLZ~bh_9Eco@GCFRLzNV zRZOUS20D-s=>0c$1DXg1?qJ5iUCbJ|hxz57y8mrhy#MnpS3_)Ve5{6+LqxQrtdfoh z7=|J;QD;4h7;aKep&w}s^Kp(L%h#O3ET8NGqaGoTCz!00Eg;I64$|*q0o@qERa_$; zN%DM>yOIVdvAaAui0dqOfjt?bEsPuVcR~AwZXLrS`2&%kXx9l7!YExKQfcQN=W&Do HHpKn{IR*Ko literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/util/SwingUtils$1.class b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/classes/jsyntaxpane/util/SwingUtils$1.class new file mode 100644 index 0000000000000000000000000000000000000000..e5fed2eb4a2bfca0a96584da7a903afca6747f12 GIT binary patch literal 812 zcma)4ZBNud5Ps&aP_7j3KtT}@Un(4sP&IzTkSIA5lT%4hzVEf`v7~HCckj@jMFJuE z!5`p{GS2qS01=2EI&YnM=9!)O_4~(9057mygNL~QBbXn@0v`BS^zqQgBSO#@S(GY~ zGs0E505IEn|^bm1`4sdn#_3L>$VtGFEC?Y!F6YDXr`#VeP+*R(1*AR-Q^i zy{)wT&^zeJ;*;oP9GPn8iO6(@@0kmVh07n1jo;u)XS2ybT;)M&U7 z`PwS{)evxWoUNDayGXFQb_!ZOL*=;430ZO#%Lo%J!_p3L3zO{eIpFpX;SK8n!U^a* vs)Tcdp#0P1ek&!)%ph}!!d-C((_CN045LcXrK(GETJT6sewm|kWd9uU<8Oj5RcBp8XSh1YR2jES-h}H zd;lMXxSo)vK_bErw(oMzy~o!-e|`G_;4XG-Ea8HMH5)lxDq|g&ZEWC*jjOn3;ktz; zL+QSXlzzaFZ?*djg}rzv87iKNPpQ z7DxLcl63SQGK-DRkW;qX!Fi+$;-RLe*v3|p-^knpvNqm&0@#phFZOde2v9RS}8@CwT1#}G6tm9Bb0e?OiNnbN; zo(BB;%}9J8^~*TcFK8kRYpr%B|A?n%F8s+fM6y>+m1*FqJnrcveoq*O7*3gPtJ|F? zISKwva>CBgNMv9}o>1~27Rhk(>J0a2kPGKA*YB)Ux80}TYthFxD@X55bD_OV7N?U& zfMVw}*vBmF&|b=%F3!;1nIvEZ6|$C5MU6ZL{00T01KjV(y(NOY*ZGP9{nM(O|AJ!i u6G}76733+kNd()th}#);V**DVXEW+L&S90vb7+vA!+E%LnqEyAVCgqwF7Q+U literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/ActionScriptLexer.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/ActionScriptLexer.java new file mode 100644 index 000000000..766aa396e --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/ActionScriptLexer.java @@ -0,0 +1,1025 @@ +/* The following code was generated by JFlex 1.4.3 on 28.7.10 14:58 */ + +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jsyntaxpane.lexers; + + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + + +/** + * This class is a scanner generated by + * JFlex 1.4.3 + * on 28.7.10 14:58 from the specification file + * D:/Dokumenty/Programovani/JavaSE/ASDec/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/actionscript.flex + */ +public final class ActionScriptLexer extends DefaultJFlexLexer { + + /** + * This character denotes the end of file + */ + public static final int YYEOF = -1; + + /** + * initial size of the lookahead buffer + */ + private static final int ZZ_BUFFERSIZE = 16384; + + /** + * lexical states + */ + public static final int STRING = 2; + public static final int YYINITIAL = 0; + public static final int CHARLITERAL = 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, 0, 1, 1, 2, 2 + }; + + /** + * Translates characters to character classes + */ + private static final String ZZ_CMAP_PACKED = + "\11\7\1\3\1\2\1\0\1\3\1\1\16\7\4\0\1\3\1\66" + + "\1\21\1\0\1\6\1\66\1\67\1\22\1\54\1\55\1\5\1\71" + + "\1\62\1\20\1\16\1\4\1\10\3\14\4\15\2\11\1\62\1\62" + + "\1\65\1\63\1\64\1\62\1\0\3\13\1\72\1\17\1\13\7\6" + + "\1\53\11\6\1\12\2\6\1\60\1\23\1\61\1\66\1\6\1\0" + + "\1\24\1\25\1\31\1\42\1\34\1\44\1\51\1\37\1\40\1\6" + + "\1\36\1\33\1\46\1\35\1\32\1\47\1\6\1\30\1\26\1\27" + + "\1\41\1\52\1\50\1\43\1\45\1\6\1\56\1\70\1\57\1\62" + + "\41\7\2\0\4\6\4\0\1\6\2\0\1\7\7\0\1\6\4\0" + + "\1\6\5\0\27\6\1\0\37\6\1\0\u013f\6\31\0\162\6\4\0" + + "\14\6\16\0\5\6\11\0\1\6\21\0\130\7\5\0\23\7\12\0" + + "\1\6\13\0\1\6\1\0\3\6\1\0\1\6\1\0\24\6\1\0" + + "\54\6\1\0\46\6\1\0\5\6\4\0\202\6\1\0\4\7\3\0" + + "\105\6\1\0\46\6\2\0\2\6\6\0\20\6\41\0\46\6\2\0" + + "\1\6\7\0\47\6\11\0\21\7\1\0\27\7\1\0\3\7\1\0" + + "\1\7\1\0\2\7\1\0\1\7\13\0\33\6\5\0\3\6\15\0" + + "\4\7\14\0\6\7\13\0\32\6\5\0\13\6\16\7\7\0\12\7" + + "\4\0\2\6\1\7\143\6\1\0\1\6\10\7\1\0\6\7\2\6" + + "\2\7\1\0\4\7\2\6\12\7\3\6\2\0\1\6\17\0\1\7" + + "\1\6\1\7\36\6\33\7\2\0\3\6\60\0\46\6\13\7\1\6" + + "\u014f\0\3\7\66\6\2\0\1\7\1\6\20\7\2\0\1\6\4\7" + + "\3\0\12\6\2\7\2\0\12\7\21\0\3\7\1\0\10\6\2\0" + + "\2\6\2\0\26\6\1\0\7\6\1\0\1\6\3\0\4\6\2\0" + + "\1\7\1\6\7\7\2\0\2\7\2\0\3\7\11\0\1\7\4\0" + + "\2\6\1\0\3\6\2\7\2\0\12\7\4\6\15\0\3\7\1\0" + + "\6\6\4\0\2\6\2\0\26\6\1\0\7\6\1\0\2\6\1\0" + + "\2\6\1\0\2\6\2\0\1\7\1\0\5\7\4\0\2\7\2\0" + + "\3\7\13\0\4\6\1\0\1\6\7\0\14\7\3\6\14\0\3\7" + + "\1\0\11\6\1\0\3\6\1\0\26\6\1\0\7\6\1\0\2\6" + + "\1\0\5\6\2\0\1\7\1\6\10\7\1\0\3\7\1\0\3\7" + + "\2\0\1\6\17\0\2\6\2\7\2\0\12\7\1\0\1\6\17\0" + + "\3\7\1\0\10\6\2\0\2\6\2\0\26\6\1\0\7\6\1\0" + + "\2\6\1\0\5\6\2\0\1\7\1\6\6\7\3\0\2\7\2\0" + + "\3\7\10\0\2\7\4\0\2\6\1\0\3\6\4\0\12\7\1\0" + + "\1\6\20\0\1\7\1\6\1\0\6\6\3\0\3\6\1\0\4\6" + + "\3\0\2\6\1\0\1\6\1\0\2\6\3\0\2\6\3\0\3\6" + + "\3\0\10\6\1\0\3\6\4\0\5\7\3\0\3\7\1\0\4\7" + + "\11\0\1\7\17\0\11\7\11\0\1\6\7\0\3\7\1\0\10\6" + + "\1\0\3\6\1\0\27\6\1\0\12\6\1\0\5\6\4\0\7\7" + + "\1\0\3\7\1\0\4\7\7\0\2\7\11\0\2\6\4\0\12\7" + + "\22\0\2\7\1\0\10\6\1\0\3\6\1\0\27\6\1\0\12\6" + + "\1\0\5\6\2\0\1\7\1\6\7\7\1\0\3\7\1\0\4\7" + + "\7\0\2\7\7\0\1\6\1\0\2\6\4\0\12\7\22\0\2\7" + + "\1\0\10\6\1\0\3\6\1\0\27\6\1\0\20\6\4\0\6\7" + + "\2\0\3\7\1\0\4\7\11\0\1\7\10\0\2\6\4\0\12\7" + + "\22\0\2\7\1\0\22\6\3\0\30\6\1\0\11\6\1\0\1\6" + + "\2\0\7\6\3\0\1\7\4\0\6\7\1\0\1\7\1\0\10\7" + + "\22\0\2\7\15\0\60\6\1\7\2\6\7\7\4\0\10\6\10\7" + + "\1\0\12\7\47\0\2\6\1\0\1\6\2\0\2\6\1\0\1\6" + + "\2\0\1\6\6\0\4\6\1\0\7\6\1\0\3\6\1\0\1\6" + + "\1\0\1\6\2\0\2\6\1\0\4\6\1\7\2\6\6\7\1\0" + + "\2\7\1\6\2\0\5\6\1\0\1\6\1\0\6\7\2\0\12\7" + + "\2\0\2\6\42\0\1\6\27\0\2\7\6\0\12\7\13\0\1\7" + + "\1\0\1\7\1\0\1\7\4\0\2\7\10\6\1\0\42\6\6\0" + + "\24\7\1\0\2\7\4\6\4\0\10\7\1\0\44\7\11\0\1\7" + + "\71\0\42\6\1\0\5\6\1\0\2\6\1\0\7\7\3\0\4\7" + + "\6\0\12\7\6\0\6\6\4\7\106\0\46\6\12\0\51\6\7\0" + + "\132\6\5\0\104\6\5\0\122\6\6\0\7\6\1\0\77\6\1\0" + + "\1\6\1\0\4\6\2\0\7\6\1\0\1\6\1\0\4\6\2\0" + + "\47\6\1\0\1\6\1\0\4\6\2\0\37\6\1\0\1\6\1\0" + + "\4\6\2\0\7\6\1\0\1\6\1\0\4\6\2\0\7\6\1\0" + + "\7\6\1\0\27\6\1\0\37\6\1\0\1\6\1\0\4\6\2\0" + + "\7\6\1\0\47\6\1\0\23\6\16\0\11\7\56\0\125\6\14\0" + + "\u026c\6\2\0\10\6\12\0\32\6\5\0\113\6\3\0\3\6\17\0" + + "\15\6\1\0\4\6\3\7\13\0\22\6\3\7\13\0\22\6\2\7" + + "\14\0\15\6\1\0\3\6\1\0\2\7\14\0\64\6\40\7\3\0" + + "\1\6\3\0\2\6\1\7\2\0\12\7\41\0\3\7\2\0\12\7" + + "\6\0\130\6\10\0\51\6\1\7\126\0\35\6\3\0\14\7\4\0" + + "\14\7\12\0\12\7\36\6\2\0\5\6\u038b\0\154\6\224\0\234\6" + + "\4\0\132\6\6\0\26\6\2\0\6\6\2\0\46\6\2\0\6\6" + + "\2\0\10\6\1\0\1\6\1\0\1\6\1\0\1\6\1\0\37\6" + + "\2\0\65\6\1\0\7\6\1\0\1\6\3\0\3\6\1\0\7\6" + + "\3\0\4\6\2\0\6\6\4\0\15\6\5\0\3\6\1\0\7\6" + + "\17\0\4\7\32\0\5\7\20\0\2\6\23\0\1\6\13\0\4\7" + + "\6\0\6\7\1\0\1\6\15\0\1\6\40\0\22\6\36\0\15\7" + + "\4\0\1\7\3\0\6\7\27\0\1\6\4\0\1\6\2\0\12\6" + + "\1\0\1\6\3\0\5\6\6\0\1\6\1\0\1\6\1\0\1\6" + + "\1\0\4\6\1\0\3\6\1\0\7\6\3\0\3\6\5\0\5\6" + + "\26\0\44\6\u0e81\0\3\6\31\0\11\6\6\7\1\0\5\6\2\0" + + "\5\6\4\0\126\6\2\0\2\7\2\0\3\6\1\0\137\6\5\0" + + "\50\6\4\0\136\6\21\0\30\6\70\0\20\6\u0200\0\u19b6\6\112\0" + + "\u51a6\6\132\0\u048d\6\u0773\0\u2ba4\6\u215c\0\u012e\6\2\0\73\6\225\0" + + "\7\6\14\0\5\6\5\0\1\6\1\7\12\6\1\0\15\6\1\0" + + "\5\6\1\0\1\6\1\0\2\6\1\0\2\6\1\0\154\6\41\0" + + "\u016b\6\22\0\100\6\2\0\66\6\50\0\15\6\3\0\20\7\20\0" + + "\4\7\17\0\2\6\30\0\3\6\31\0\1\6\6\0\5\6\1\0" + + "\207\6\2\0\1\7\4\0\1\6\13\0\12\7\7\0\32\6\4\0" + + "\1\6\1\0\32\6\12\0\132\6\3\0\6\6\2\0\6\6\2\0" + + "\6\6\2\0\3\6\3\0\2\6\3\0\2\6\22\0\3\7\4\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\3\1\2\2\1\3\2\4\2\2\1\5\1\6" + + "\20\3\1\7\1\10\1\11\1\12\1\13\1\14\6\2" + + "\1\15\2\16\1\17\1\1\1\15\1\1\1\20\2\0" + + "\1\4\1\0\1\4\24\3\1\21\16\3\1\2\1\22" + + "\2\15\2\20\2\0\3\4\1\0\35\3\1\15\1\0" + + "\1\4\25\3\1\4\3\3\1\21\10\3\1\21\4\3" + + "\1\4\11\3\1\4\4\3\1\4\2\3\1\4\1\3"; + + private static int[] zzUnpackAction() { + int[] result = new int[194]; + 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\u02c4\0\261\0\261\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\261" + + "\0\261\0\261\0\261\0\261\0\261\0\261\0\u06af\0\u06ea" + + "\0\u0725\0\u0760\0\u079b\0\u07d6\0\u0811\0\261\0\261\0\u084c" + + "\0\u0887\0\u08c2\0\u08fd\0\u0938\0\u0973\0\u09ae\0\u09e9\0\261" + + "\0\u0a24\0\u0a5f\0\u0a9a\0\u0ad5\0\u0b10\0\u0b4b\0\u0b86\0\u0bc1" + + "\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\u01d8\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\261\0\u1235\0\u1270\0\u12ab" + + "\0\261\0\u12e6\0\u1321\0\u0973\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\u18a9\0\u18e4\0\u191f\0\u195a\0\u1995" + + "\0\u19d0\0\u1a0b\0\u1a46\0\u1a81\0\261\0\u1abc\0\u1af7\0\u1b32" + + "\0\u1b6d\0\u1ba8\0\u1be3\0\u1c1e\0\u1c59\0\u1c94\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\u1f93\0\u1fce\0\u2009\0\u2044\0\u207f\0\u20ba" + + "\0\u15e5\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\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"; + + private static int[] zzUnpackRowMap() { + int[] result = new int[194]; + 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\4\1\6\1\7\1\10\1\11\1\4" + + "\1\12\1\13\2\11\2\13\1\14\1\11\1\15\1\16" + + "\1\17\1\4\1\20\1\21\1\22\1\23\1\24\1\25" + + "\1\26\1\11\1\27\1\30\2\11\1\31\1\11\1\32" + + "\1\11\1\33\2\11\1\34\1\35\1\11\1\36\1\37" + + "\1\40\1\41\1\42\1\43\1\44\1\45\1\46\1\10" + + "\1\47\1\50\1\10\1\51\1\52\1\53\1\11\1\54" + + "\1\55\1\56\16\54\1\57\1\54\1\60\47\54\1\61" + + "\1\55\1\56\17\61\1\57\1\62\47\61\75\0\1\4" + + "\73\0\1\6\73\0\1\63\1\64\55\0\1\46\72\0" + + "\1\46\15\0\10\11\1\0\1\11\4\0\30\11\16\0" + + "\1\11\10\0\2\13\1\65\1\0\2\13\1\66\1\67" + + "\14\0\1\67\5\0\1\70\1\65\26\0\1\70\10\0" + + "\2\13\2\0\2\13\1\66\1\67\14\0\1\67\5\0" + + "\1\70\27\0\1\70\10\0\2\66\2\0\2\66\75\0" + + "\1\46\42\0\1\46\15\0\10\11\1\0\1\11\4\0" + + "\1\11\1\71\26\11\16\0\1\11\6\0\10\11\1\0" + + "\1\11\4\0\4\11\1\72\1\11\1\73\21\11\16\0" + + "\1\11\6\0\10\11\1\0\1\11\4\0\3\11\1\74" + + "\11\11\1\75\6\11\1\76\3\11\16\0\1\11\6\0" + + "\10\11\1\0\1\11\4\0\4\11\1\77\6\11\1\100" + + "\14\11\16\0\1\11\6\0\10\11\1\0\1\11\4\0" + + "\10\11\1\101\17\11\16\0\1\11\6\0\10\11\1\0" + + "\1\11\4\0\1\102\5\11\1\103\1\104\3\11\1\105" + + "\14\11\16\0\1\11\6\0\10\11\1\0\1\11\4\0" + + "\26\11\1\106\1\11\16\0\1\11\6\0\10\11\1\0" + + "\1\11\4\0\1\107\6\11\1\110\7\11\1\111\10\11" + + "\16\0\1\11\6\0\10\11\1\0\1\11\4\0\10\11" + + "\1\112\4\11\1\113\12\11\16\0\1\11\6\0\10\11" + + "\1\0\1\11\4\0\11\11\1\114\6\11\1\115\1\11" + + "\1\116\5\11\16\0\1\11\6\0\10\11\1\0\1\11" + + "\4\0\6\11\1\115\1\11\1\117\10\11\1\120\6\11" + + "\16\0\1\11\6\0\10\11\1\0\1\11\4\0\1\121" + + "\5\11\1\122\5\11\1\123\1\124\12\11\16\0\1\11" + + "\6\0\10\11\1\0\1\11\4\0\1\125\3\11\1\126" + + "\10\11\1\127\12\11\16\0\1\11\6\0\10\11\1\0" + + "\1\11\4\0\13\11\1\130\1\131\13\11\16\0\1\11" + + "\6\0\10\11\1\0\1\11\4\0\1\122\5\11\1\132" + + "\21\11\16\0\1\11\6\0\10\11\1\0\1\11\4\0" + + "\1\133\27\11\16\0\1\11\63\0\1\46\1\134\71\0" + + "\1\46\1\0\1\10\70\0\1\46\3\0\1\46\66\0" + + "\1\46\4\0\1\46\65\0\1\46\5\0\1\46\1\0" + + "\1\54\2\0\16\54\1\0\1\54\1\0\47\54\2\0" + + "\1\56\70\0\2\135\1\0\5\135\1\136\3\135\1\136" + + "\1\137\55\135\1\61\2\0\17\61\2\0\47\61\2\135" + + "\1\0\70\135\1\63\1\140\1\141\70\63\5\142\1\143" + + "\65\142\10\0\1\144\1\145\1\0\3\145\1\0\1\145" + + "\4\0\2\145\3\0\1\145\2\0\1\145\5\0\1\145" + + "\1\0\1\145\25\0\1\145\10\0\2\66\2\0\2\66" + + "\1\0\1\67\14\0\1\67\5\0\1\70\27\0\1\70" + + "\10\0\2\146\2\0\2\146\2\0\1\147\50\0\1\147" + + "\7\0\10\11\1\0\1\11\4\0\2\11\1\150\25\11" + + "\16\0\1\11\6\0\10\11\1\0\1\11\4\0\10\11" + + "\1\151\17\11\16\0\1\11\6\0\10\11\1\0\1\11" + + "\4\0\6\11\1\152\21\11\16\0\1\11\6\0\10\11" + + "\1\0\1\11\4\0\1\153\27\11\16\0\1\11\6\0" + + "\10\11\1\0\1\11\4\0\23\11\1\154\4\11\16\0" + + "\1\11\6\0\10\11\1\0\1\11\4\0\14\11\1\155" + + "\13\11\16\0\1\11\6\0\10\11\1\0\1\11\4\0" + + "\15\11\1\156\3\11\1\115\6\11\16\0\1\11\6\0" + + "\10\11\1\0\1\11\4\0\4\11\1\157\7\11\1\160" + + "\13\11\16\0\1\11\6\0\10\11\1\0\1\11\4\0" + + "\3\11\1\161\24\11\16\0\1\11\6\0\10\11\1\0" + + "\1\11\4\0\2\11\1\156\1\107\24\11\16\0\1\11" + + "\6\0\10\11\1\0\1\11\4\0\11\11\1\162\16\11" + + "\16\0\1\11\6\0\10\11\1\0\1\11\4\0\1\163" + + "\27\11\16\0\1\11\6\0\10\11\1\0\1\11\4\0" + + "\1\122\27\11\16\0\1\11\6\0\10\11\1\0\1\11" + + "\4\0\10\11\1\164\17\11\16\0\1\11\6\0\10\11" + + "\1\0\1\11\4\0\5\11\1\165\22\11\16\0\1\11" + + "\6\0\10\11\1\0\1\11\4\0\2\11\1\156\25\11" + + "\16\0\1\11\6\0\10\11\1\0\1\11\4\0\3\11" + + "\1\166\24\11\16\0\1\11\6\0\10\11\1\0\1\11" + + "\4\0\24\11\1\115\3\11\16\0\1\11\6\0\10\11" + + "\1\0\1\11\4\0\7\11\1\167\20\11\16\0\1\11" + + "\6\0\10\11\1\0\1\11\4\0\2\11\1\170\1\171" + + "\24\11\16\0\1\11\6\0\10\11\1\0\1\11\4\0" + + "\23\11\1\172\4\11\16\0\1\11\6\0\10\11\1\0" + + "\1\11\4\0\20\11\1\173\7\11\16\0\1\11\6\0" + + "\10\11\1\0\1\11\4\0\11\11\1\174\16\11\16\0" + + "\1\11\6\0\10\11\1\0\1\11\4\0\7\11\1\110" + + "\20\11\16\0\1\11\6\0\10\11\1\0\1\11\4\0" + + "\4\11\1\115\23\11\16\0\1\11\6\0\10\11\1\0" + + "\1\11\4\0\11\11\1\175\16\11\16\0\1\11\6\0" + + "\10\11\1\0\1\11\4\0\11\11\1\176\16\11\16\0" + + "\1\11\6\0\10\11\1\0\1\11\4\0\5\11\1\177" + + "\22\11\16\0\1\11\6\0\10\11\1\0\1\11\4\0" + + "\6\11\1\200\5\11\1\201\13\11\16\0\1\11\6\0" + + "\10\11\1\0\1\11\4\0\1\11\1\202\26\11\16\0" + + "\1\11\6\0\10\11\1\0\1\11\4\0\14\11\1\203" + + "\13\11\16\0\1\11\6\0\10\11\1\0\1\11\4\0" + + "\3\11\1\165\24\11\16\0\1\11\6\0\10\11\1\0" + + "\1\11\4\0\14\11\1\204\13\11\16\0\1\11\6\0" + + "\10\11\1\0\1\11\4\0\27\11\1\115\16\0\1\11" + + "\63\0\1\46\1\10\16\0\1\137\3\0\2\137\65\0" + + "\1\205\3\0\2\205\57\0\1\141\70\0\5\142\1\206" + + "\65\142\4\0\1\141\1\143\75\0\2\207\1\0\3\207" + + "\1\0\1\207\4\0\2\207\3\0\1\207\2\0\1\207" + + "\5\0\1\207\1\0\1\207\25\0\1\207\10\0\2\146" + + "\2\0\2\146\24\0\1\70\27\0\1\70\10\0\2\146" + + "\2\0\2\146\63\0\10\11\1\0\1\11\4\0\3\11" + + "\1\210\24\11\16\0\1\11\6\0\10\11\1\0\1\11" + + "\4\0\1\211\27\11\16\0\1\11\6\0\10\11\1\0" + + "\1\11\4\0\7\11\1\212\20\11\16\0\1\11\6\0" + + "\10\11\1\0\1\11\4\0\3\11\1\213\24\11\16\0" + + "\1\11\6\0\10\11\1\0\1\11\4\0\10\11\1\122" + + "\17\11\16\0\1\11\6\0\10\11\1\0\1\11\4\0" + + "\3\11\1\107\24\11\16\0\1\11\6\0\10\11\1\0" + + "\1\11\4\0\10\11\1\115\17\11\16\0\1\11\6\0" + + "\10\11\1\0\1\11\4\0\6\11\1\214\21\11\16\0" + + "\1\11\6\0\10\11\1\0\1\11\4\0\2\11\1\115" + + "\25\11\16\0\1\11\6\0\10\11\1\0\1\11\4\0" + + "\15\11\1\215\12\11\16\0\1\11\6\0\10\11\1\0" + + "\1\11\4\0\2\11\1\216\1\217\24\11\16\0\1\11" + + "\6\0\10\11\1\0\1\11\4\0\2\11\1\160\25\11" + + "\16\0\1\11\6\0\10\11\1\0\1\11\4\0\4\11" + + "\1\220\23\11\16\0\1\11\6\0\10\11\1\0\1\11" + + "\4\0\13\11\1\115\14\11\16\0\1\11\6\0\10\11" + + "\1\0\1\11\4\0\10\11\1\221\17\11\16\0\1\11" + + "\6\0\10\11\1\0\1\11\4\0\7\11\1\115\20\11" + + "\16\0\1\11\6\0\10\11\1\0\1\11\4\0\3\11" + + "\1\222\24\11\16\0\1\11\6\0\10\11\1\0\1\11" + + "\4\0\10\11\1\223\17\11\16\0\1\11\6\0\10\11" + + "\1\0\1\11\4\0\6\11\1\224\1\225\20\11\16\0" + + "\1\11\6\0\10\11\1\0\1\11\4\0\1\226\27\11" + + "\16\0\1\11\6\0\10\11\1\0\1\11\4\0\1\227" + + "\27\11\16\0\1\11\6\0\10\11\1\0\1\11\4\0" + + "\1\230\27\11\16\0\1\11\6\0\10\11\1\0\1\11" + + "\4\0\5\11\1\231\22\11\16\0\1\11\6\0\10\11" + + "\1\0\1\11\4\0\12\11\1\232\15\11\16\0\1\11" + + "\6\0\10\11\1\0\1\11\4\0\3\11\1\233\24\11" + + "\16\0\1\11\6\0\10\11\1\0\1\11\4\0\26\11" + + "\1\234\1\11\16\0\1\11\6\0\10\11\1\0\1\11" + + "\4\0\7\11\1\213\20\11\16\0\1\11\6\0\10\11" + + "\1\0\1\11\4\0\7\11\1\156\20\11\16\0\1\11" + + "\6\0\10\11\1\0\1\11\4\0\16\11\1\115\11\11" + + "\16\0\1\11\4\142\1\141\1\206\65\142\10\0\2\235" + + "\1\0\3\235\1\0\1\235\4\0\2\235\3\0\1\235" + + "\2\0\1\235\5\0\1\235\1\0\1\235\25\0\1\235" + + "\6\0\10\11\1\0\1\11\4\0\4\11\1\236\23\11" + + "\16\0\1\11\6\0\10\11\1\0\1\11\4\0\12\11" + + "\1\115\15\11\16\0\1\11\6\0\10\11\1\0\1\11" + + "\4\0\10\11\1\237\17\11\16\0\1\11\6\0\10\11" + + "\1\0\1\11\4\0\14\11\1\240\13\11\16\0\1\11" + + "\6\0\10\11\1\0\1\11\4\0\24\11\1\241\3\11" + + "\16\0\1\11\6\0\10\11\1\0\1\11\4\0\4\11" + + "\1\242\23\11\16\0\1\11\6\0\10\11\1\0\1\11" + + "\4\0\3\11\1\115\24\11\16\0\1\11\6\0\10\11" + + "\1\0\1\11\4\0\14\11\1\243\13\11\16\0\1\11" + + "\6\0\10\11\1\0\1\11\4\0\4\11\1\244\23\11" + + "\16\0\1\11\6\0\10\11\1\0\1\11\4\0\11\11" + + "\1\245\16\11\16\0\1\11\6\0\10\11\1\0\1\11" + + "\4\0\1\246\27\11\16\0\1\11\6\0\10\11\1\0" + + "\1\11\4\0\4\11\1\247\23\11\16\0\1\11\6\0" + + "\10\11\1\0\1\11\4\0\4\11\1\216\23\11\16\0" + + "\1\11\6\0\10\11\1\0\1\11\4\0\10\11\1\250" + + "\17\11\16\0\1\11\6\0\10\11\1\0\1\11\4\0" + + "\15\11\1\251\12\11\16\0\1\11\6\0\10\11\1\0" + + "\1\11\4\0\22\11\1\213\5\11\16\0\1\11\6\0" + + "\10\11\1\0\1\11\4\0\7\11\1\252\20\11\16\0" + + "\1\11\6\0\10\11\1\0\1\11\4\0\3\11\1\253" + + "\24\11\16\0\1\11\6\0\10\11\1\0\1\11\4\0" + + "\1\254\27\11\16\0\1\11\6\0\10\11\1\0\1\11" + + "\4\0\10\11\1\255\17\11\16\0\1\11\6\0\10\11" + + "\1\0\1\11\4\0\1\256\27\11\16\0\1\11\10\0" + + "\2\257\1\0\3\257\1\0\1\257\4\0\2\257\3\0" + + "\1\257\2\0\1\257\5\0\1\257\1\0\1\257\25\0" + + "\1\257\6\0\10\11\1\0\1\11\4\0\1\260\27\11" + + "\16\0\1\11\6\0\10\11\1\0\1\11\4\0\1\242" + + "\27\11\16\0\1\11\6\0\10\11\1\0\1\11\4\0" + + "\5\11\1\115\22\11\16\0\1\11\6\0\10\11\1\0" + + "\1\11\4\0\11\11\1\115\16\11\16\0\1\11\6\0" + + "\10\11\1\0\1\11\4\0\11\11\1\261\16\11\16\0" + + "\1\11\6\0\10\11\1\0\1\11\4\0\14\11\1\262" + + "\13\11\16\0\1\11\6\0\10\11\1\0\1\11\4\0" + + "\16\11\1\160\11\11\16\0\1\11\6\0\10\11\1\0" + + "\1\11\4\0\11\11\1\263\16\11\16\0\1\11\6\0" + + "\10\11\1\0\1\11\4\0\20\11\1\264\7\11\16\0" + + "\1\11\6\0\10\11\1\0\1\11\4\0\22\11\1\265" + + "\5\11\16\0\1\11\6\0\10\11\1\0\1\11\4\0" + + "\7\11\1\216\20\11\16\0\1\11\6\0\10\11\1\0" + + "\1\11\4\0\7\11\1\266\20\11\16\0\1\11\6\0" + + "\10\11\1\0\1\11\4\0\14\11\1\267\13\11\16\0" + + "\1\11\6\0\10\11\1\0\1\11\4\0\25\11\1\156" + + "\2\11\16\0\1\11\6\0\10\11\1\0\1\11\4\0" + + "\5\11\1\270\22\11\16\0\1\11\6\0\10\11\1\0" + + "\1\11\4\0\3\11\1\156\24\11\16\0\1\11\10\0" + + "\2\271\1\0\3\271\1\0\1\271\4\0\2\271\3\0" + + "\1\271\2\0\1\271\5\0\1\271\1\0\1\271\25\0" + + "\1\271\6\0\10\11\1\0\1\11\4\0\5\11\1\216" + + "\22\11\16\0\1\11\6\0\10\11\1\0\1\11\4\0" + + "\15\11\1\156\12\11\16\0\1\11\6\0\10\11\1\0" + + "\1\11\4\0\16\11\1\156\11\11\16\0\1\11\6\0" + + "\10\11\1\0\1\11\4\0\5\11\1\272\22\11\16\0" + + "\1\11\6\0\10\11\1\0\1\11\4\0\1\273\27\11" + + "\16\0\1\11\6\0\10\11\1\0\1\11\4\0\10\11" + + "\1\274\17\11\16\0\1\11\6\0\10\11\1\0\1\11" + + "\4\0\21\11\1\115\6\11\16\0\1\11\6\0\10\11" + + "\1\0\1\11\4\0\6\11\1\242\21\11\16\0\1\11" + + "\6\0\10\11\1\0\1\11\4\0\3\11\1\275\24\11" + + "\16\0\1\11\10\0\2\276\1\0\3\276\1\0\1\276" + + "\4\0\2\276\3\0\1\276\2\0\1\276\5\0\1\276" + + "\1\0\1\276\25\0\1\276\6\0\10\11\1\0\1\11" + + "\4\0\10\11\1\277\17\11\16\0\1\11\6\0\10\11" + + "\1\0\1\11\4\0\5\11\1\156\22\11\16\0\1\11" + + "\6\0\10\11\1\0\1\11\4\0\11\11\1\300\16\11" + + "\16\0\1\11\6\0\10\11\1\0\1\11\4\0\10\11" + + "\1\204\17\11\16\0\1\11\10\0\2\301\1\0\3\301" + + "\1\0\1\301\4\0\2\301\3\0\1\301\2\0\1\301" + + "\5\0\1\301\1\0\1\301\25\0\1\301\6\0\10\11" + + "\1\0\1\11\4\0\6\11\1\302\21\11\16\0\1\11" + + "\6\0\10\11\1\0\1\11\4\0\3\11\1\160\24\11" + + "\16\0\1\11\10\0\2\70\1\0\3\70\1\0\1\70" + + "\4\0\2\70\3\0\1\70\2\0\1\70\5\0\1\70" + + "\1\0\1\70\25\0\1\70\6\0\10\11\1\0\1\11" + + "\4\0\20\11\1\115\7\11\16\0\1\11"; + + private static int[] zzUnpackTrans() { + int[] result = new int[10384]; + 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\11\1\2\11\20\1\7\11\7\1\2\11" + + "\4\1\2\0\1\1\1\0\1\11\44\1\1\11\3\1" + + "\1\11\2\0\3\1\1\0\35\1\1\11\1\0\74\1"; + + private static int[] zzUnpackAttribute() { + int[] result = new int[194]; + 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[] = new char[ZZ_BUFFERSIZE]; + + /** + * 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; + + /** + * number of newlines encountered up to the start of the matched text + */ + private int yyline; + + /** + * the number of characters up to the start of the matched text + */ + private int yychar; + + /** + * the number of characters from the last newline up to the start of the + * matched text + */ + private int yycolumn; + + /** + * 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; + + /** + * denotes if the user-EOF-code has already been executed + */ + private boolean zzEOFDone; + + /* user code: */ + + /** + * Create an empty lexer, yyrset will be called later to reset and assign + * the reader + */ + public ActionScriptLexer() { + super(); + } + + @Override + public int yychar() { + return yychar; + } + + private static final byte PARAN = 1; + private static final byte BRACKET = 2; + private static final byte CURLY = 3; + + + /** + * 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 ActionScriptLexer(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 ActionScriptLexer(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 < 1780) { + int count = packed.charAt(i++); + char value = packed.charAt(i++); + do map[j++] = value; while (--count > 0); + } + return map; + } + + + /** + * Refills the input buffer. + * + * @return false, iff there was new input. + * @throws java.io.IOException if any I/O-Error occurs + */ + private boolean zzRefill() throws java.io.IOException { + + /* first: make room (if you can) */ + if (zzStartRead > 0) { + System.arraycopy(zzBuffer, zzStartRead, + zzBuffer, 0, + zzEndRead - zzStartRead); + + /* translate stored positions */ + zzEndRead -= zzStartRead; + zzCurrentPos -= zzStartRead; + zzMarkedPos -= zzStartRead; + zzStartRead = 0; + } + + /* is the buffer big enough? */ + if (zzCurrentPos >= zzBuffer.length) { + /* if not: blow it up */ + char newBuffer[] = new char[zzCurrentPos * 2]; + System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); + zzBuffer = newBuffer; + } + + /* finally: fill the buffer with new input */ + int numRead = zzReader.read(zzBuffer, zzEndRead, + zzBuffer.length - zzEndRead); + + if (numRead > 0) { + zzEndRead += numRead; + return false; + } + // unlikely but not impossible: read 0 characters, but not at end of stream + if (numRead == 0) { + int c = zzReader.read(); + if (c == -1) { + return true; + } else { + zzBuffer[zzEndRead++] = (char) c; + return false; + } + } + + // numRead < 0 + return true; + } + + + /** + * 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(); + } + + + /** + * 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 ZZ_INITIAL. + * + * @param reader the new input stream + */ + public final void yyreset(java.io.Reader reader) { + zzReader = reader; + zzAtBOL = true; + zzAtEOF = false; + zzEOFDone = false; + zzEndRead = zzStartRead = 0; + zzCurrentPos = zzMarkedPos = 0; + yyline = yychar = yycolumn = 0; + zzLexicalState = YYINITIAL; + } + + + /** + * Returns the current lexical state. + */ + public final int yystate() { + return zzLexicalState; + } + + + /** + * Enters a new lexical state + * + * @param newState the new lexical state + */ + 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 + * @throws java.io.IOException if any I/O-Error occurs + */ + public 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; + + yychar += zzMarkedPosL - zzStartRead; + + zzAction = -1; + + zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; + + 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 8: { + return token(TokenType.OPERATOR, -PARAN); + } + case 19: + break; + case 17: { + return token(TokenType.KEYWORD); + } + case 20: + break; + case 4: { + return token(TokenType.NUMBER); + } + case 21: + break; + case 2: { + return token(TokenType.OPERATOR); + } + case 22: + break; + case 9: { + return token(TokenType.OPERATOR, CURLY); + } + case 23: + break; + case 10: { + return token(TokenType.OPERATOR, -CURLY); + } + case 24: + break; + case 13: { + tokenLength += yylength(); + } + case 25: + break; + case 14: { + yybegin(YYINITIAL); + } + case 26: + break; + case 6: { + yybegin(CHARLITERAL); + tokenStart = yychar; + tokenLength = 1; + } + case 27: + break; + case 15: { + yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + case 28: + break; + case 12: { + return token(TokenType.OPERATOR, -BRACKET); + } + case 29: + break; + case 7: { + return token(TokenType.OPERATOR, PARAN); + } + case 30: + break; + case 3: { + return token(TokenType.IDENTIFIER); + } + case 31: + break; + case 18: { + tokenLength += 2; + } + case 32: + break; + case 11: { + return token(TokenType.OPERATOR, BRACKET); + } + case 33: + break; + case 16: { + return token(TokenType.COMMENT); + } + case 34: + break; + case 5: { + yybegin(STRING); + tokenStart = yychar; + tokenLength = 1; + } + case 35: + break; + case 1: { + } + case 36: + break; + default: + if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { + zzAtEOF = true; + { + return null; + } + } else { + zzScanError(ZZ_NO_MATCH); + } + } + } + } + + +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/ActionScriptLexer.java~ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/ActionScriptLexer.java~ new file mode 100644 index 000000000..dedac0348 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/ActionScriptLexer.java~ @@ -0,0 +1,982 @@ +/* The following code was generated by JFlex 1.4.3 on 22.7.10 20:11 */ + +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jsyntaxpane.lexers; + + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + + +/** + * This class is a scanner generated by + * JFlex 1.4.3 + * on 22.7.10 20:11 from the specification file + * D:/Dokumenty/Programovani/JavaSE/JPSWFDec/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/actionscript.flex + */ +public final class ActionScriptLexer extends DefaultJFlexLexer { + + /** This character denotes the end of file */ + public static final int YYEOF = -1; + + /** initial size of the lookahead buffer */ + private static final int ZZ_BUFFERSIZE = 16384; + + /** lexical states */ + public static final int STRING = 2; + public static final int YYINITIAL = 0; + public static final int CHARLITERAL = 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, 0, 1, 1, 2, 2 + }; + + /** + * Translates characters to character classes + */ + private static final String ZZ_CMAP_PACKED = + "\11\7\1\3\1\2\1\0\1\3\1\1\16\7\4\0\1\3\1\66"+ + "\1\21\1\0\1\6\1\66\1\67\1\22\1\54\1\55\1\5\1\71"+ + "\1\62\1\20\1\16\1\4\1\10\3\14\4\15\2\11\1\62\1\62"+ + "\1\65\1\63\1\64\1\62\1\0\3\13\1\72\1\17\1\13\7\6"+ + "\1\53\11\6\1\12\2\6\1\60\1\23\1\61\1\66\1\6\1\0"+ + "\1\24\1\25\1\31\1\42\1\34\1\44\1\51\1\37\1\40\1\6"+ + "\1\36\1\33\1\46\1\35\1\32\1\47\1\6\1\30\1\26\1\27"+ + "\1\41\1\52\1\50\1\43\1\45\1\6\1\56\1\70\1\57\1\62"+ + "\41\7\2\0\4\6\4\0\1\6\2\0\1\7\7\0\1\6\4\0"+ + "\1\6\5\0\27\6\1\0\37\6\1\0\u013f\6\31\0\162\6\4\0"+ + "\14\6\16\0\5\6\11\0\1\6\21\0\130\7\5\0\23\7\12\0"+ + "\1\6\13\0\1\6\1\0\3\6\1\0\1\6\1\0\24\6\1\0"+ + "\54\6\1\0\46\6\1\0\5\6\4\0\202\6\1\0\4\7\3\0"+ + "\105\6\1\0\46\6\2\0\2\6\6\0\20\6\41\0\46\6\2\0"+ + "\1\6\7\0\47\6\11\0\21\7\1\0\27\7\1\0\3\7\1\0"+ + "\1\7\1\0\2\7\1\0\1\7\13\0\33\6\5\0\3\6\15\0"+ + "\4\7\14\0\6\7\13\0\32\6\5\0\13\6\16\7\7\0\12\7"+ + "\4\0\2\6\1\7\143\6\1\0\1\6\10\7\1\0\6\7\2\6"+ + "\2\7\1\0\4\7\2\6\12\7\3\6\2\0\1\6\17\0\1\7"+ + "\1\6\1\7\36\6\33\7\2\0\3\6\60\0\46\6\13\7\1\6"+ + "\u014f\0\3\7\66\6\2\0\1\7\1\6\20\7\2\0\1\6\4\7"+ + "\3\0\12\6\2\7\2\0\12\7\21\0\3\7\1\0\10\6\2\0"+ + "\2\6\2\0\26\6\1\0\7\6\1\0\1\6\3\0\4\6\2\0"+ + "\1\7\1\6\7\7\2\0\2\7\2\0\3\7\11\0\1\7\4\0"+ + "\2\6\1\0\3\6\2\7\2\0\12\7\4\6\15\0\3\7\1\0"+ + "\6\6\4\0\2\6\2\0\26\6\1\0\7\6\1\0\2\6\1\0"+ + "\2\6\1\0\2\6\2\0\1\7\1\0\5\7\4\0\2\7\2\0"+ + "\3\7\13\0\4\6\1\0\1\6\7\0\14\7\3\6\14\0\3\7"+ + "\1\0\11\6\1\0\3\6\1\0\26\6\1\0\7\6\1\0\2\6"+ + "\1\0\5\6\2\0\1\7\1\6\10\7\1\0\3\7\1\0\3\7"+ + "\2\0\1\6\17\0\2\6\2\7\2\0\12\7\1\0\1\6\17\0"+ + "\3\7\1\0\10\6\2\0\2\6\2\0\26\6\1\0\7\6\1\0"+ + "\2\6\1\0\5\6\2\0\1\7\1\6\6\7\3\0\2\7\2\0"+ + "\3\7\10\0\2\7\4\0\2\6\1\0\3\6\4\0\12\7\1\0"+ + "\1\6\20\0\1\7\1\6\1\0\6\6\3\0\3\6\1\0\4\6"+ + "\3\0\2\6\1\0\1\6\1\0\2\6\3\0\2\6\3\0\3\6"+ + "\3\0\10\6\1\0\3\6\4\0\5\7\3\0\3\7\1\0\4\7"+ + "\11\0\1\7\17\0\11\7\11\0\1\6\7\0\3\7\1\0\10\6"+ + "\1\0\3\6\1\0\27\6\1\0\12\6\1\0\5\6\4\0\7\7"+ + "\1\0\3\7\1\0\4\7\7\0\2\7\11\0\2\6\4\0\12\7"+ + "\22\0\2\7\1\0\10\6\1\0\3\6\1\0\27\6\1\0\12\6"+ + "\1\0\5\6\2\0\1\7\1\6\7\7\1\0\3\7\1\0\4\7"+ + "\7\0\2\7\7\0\1\6\1\0\2\6\4\0\12\7\22\0\2\7"+ + "\1\0\10\6\1\0\3\6\1\0\27\6\1\0\20\6\4\0\6\7"+ + "\2\0\3\7\1\0\4\7\11\0\1\7\10\0\2\6\4\0\12\7"+ + "\22\0\2\7\1\0\22\6\3\0\30\6\1\0\11\6\1\0\1\6"+ + "\2\0\7\6\3\0\1\7\4\0\6\7\1\0\1\7\1\0\10\7"+ + "\22\0\2\7\15\0\60\6\1\7\2\6\7\7\4\0\10\6\10\7"+ + "\1\0\12\7\47\0\2\6\1\0\1\6\2\0\2\6\1\0\1\6"+ + "\2\0\1\6\6\0\4\6\1\0\7\6\1\0\3\6\1\0\1\6"+ + "\1\0\1\6\2\0\2\6\1\0\4\6\1\7\2\6\6\7\1\0"+ + "\2\7\1\6\2\0\5\6\1\0\1\6\1\0\6\7\2\0\12\7"+ + "\2\0\2\6\42\0\1\6\27\0\2\7\6\0\12\7\13\0\1\7"+ + "\1\0\1\7\1\0\1\7\4\0\2\7\10\6\1\0\42\6\6\0"+ + "\24\7\1\0\2\7\4\6\4\0\10\7\1\0\44\7\11\0\1\7"+ + "\71\0\42\6\1\0\5\6\1\0\2\6\1\0\7\7\3\0\4\7"+ + "\6\0\12\7\6\0\6\6\4\7\106\0\46\6\12\0\51\6\7\0"+ + "\132\6\5\0\104\6\5\0\122\6\6\0\7\6\1\0\77\6\1\0"+ + "\1\6\1\0\4\6\2\0\7\6\1\0\1\6\1\0\4\6\2\0"+ + "\47\6\1\0\1\6\1\0\4\6\2\0\37\6\1\0\1\6\1\0"+ + "\4\6\2\0\7\6\1\0\1\6\1\0\4\6\2\0\7\6\1\0"+ + "\7\6\1\0\27\6\1\0\37\6\1\0\1\6\1\0\4\6\2\0"+ + "\7\6\1\0\47\6\1\0\23\6\16\0\11\7\56\0\125\6\14\0"+ + "\u026c\6\2\0\10\6\12\0\32\6\5\0\113\6\3\0\3\6\17\0"+ + "\15\6\1\0\4\6\3\7\13\0\22\6\3\7\13\0\22\6\2\7"+ + "\14\0\15\6\1\0\3\6\1\0\2\7\14\0\64\6\40\7\3\0"+ + "\1\6\3\0\2\6\1\7\2\0\12\7\41\0\3\7\2\0\12\7"+ + "\6\0\130\6\10\0\51\6\1\7\126\0\35\6\3\0\14\7\4\0"+ + "\14\7\12\0\12\7\36\6\2\0\5\6\u038b\0\154\6\224\0\234\6"+ + "\4\0\132\6\6\0\26\6\2\0\6\6\2\0\46\6\2\0\6\6"+ + "\2\0\10\6\1\0\1\6\1\0\1\6\1\0\1\6\1\0\37\6"+ + "\2\0\65\6\1\0\7\6\1\0\1\6\3\0\3\6\1\0\7\6"+ + "\3\0\4\6\2\0\6\6\4\0\15\6\5\0\3\6\1\0\7\6"+ + "\17\0\4\7\32\0\5\7\20\0\2\6\23\0\1\6\13\0\4\7"+ + "\6\0\6\7\1\0\1\6\15\0\1\6\40\0\22\6\36\0\15\7"+ + "\4\0\1\7\3\0\6\7\27\0\1\6\4\0\1\6\2\0\12\6"+ + "\1\0\1\6\3\0\5\6\6\0\1\6\1\0\1\6\1\0\1\6"+ + "\1\0\4\6\1\0\3\6\1\0\7\6\3\0\3\6\5\0\5\6"+ + "\26\0\44\6\u0e81\0\3\6\31\0\11\6\6\7\1\0\5\6\2\0"+ + "\5\6\4\0\126\6\2\0\2\7\2\0\3\6\1\0\137\6\5\0"+ + "\50\6\4\0\136\6\21\0\30\6\70\0\20\6\u0200\0\u19b6\6\112\0"+ + "\u51a6\6\132\0\u048d\6\u0773\0\u2ba4\6\u215c\0\u012e\6\2\0\73\6\225\0"+ + "\7\6\14\0\5\6\5\0\1\6\1\7\12\6\1\0\15\6\1\0"+ + "\5\6\1\0\1\6\1\0\2\6\1\0\2\6\1\0\154\6\41\0"+ + "\u016b\6\22\0\100\6\2\0\66\6\50\0\15\6\3\0\20\7\20\0"+ + "\4\7\17\0\2\6\30\0\3\6\31\0\1\6\6\0\5\6\1\0"+ + "\207\6\2\0\1\7\4\0\1\6\13\0\12\7\7\0\32\6\4\0"+ + "\1\6\1\0\32\6\12\0\132\6\3\0\6\6\2\0\6\6\2\0"+ + "\6\6\2\0\3\6\3\0\2\6\3\0\2\6\22\0\3\7\4\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\3\1\2\2\1\3\2\4\2\2\1\5\1\6"+ + "\20\3\1\7\1\10\1\11\1\12\1\13\1\14\6\2"+ + "\1\15\2\16\1\17\1\1\1\15\1\1\1\20\2\0"+ + "\1\4\1\0\1\4\24\3\1\21\16\3\1\2\1\22"+ + "\2\15\2\20\2\0\3\4\1\0\35\3\1\15\1\0"+ + "\1\4\25\3\1\4\3\3\1\21\10\3\1\21\4\3"+ + "\1\4\11\3\1\4\4\3\1\4\2\3\1\4\1\3"; + + private static int [] zzUnpackAction() { + int [] result = new int[194]; + 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\u02c4\0\261\0\261\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\261"+ + "\0\261\0\261\0\261\0\261\0\261\0\261\0\u06af\0\u06ea"+ + "\0\u0725\0\u0760\0\u079b\0\u07d6\0\u0811\0\261\0\261\0\u084c"+ + "\0\u0887\0\u08c2\0\u08fd\0\u0938\0\u0973\0\u09ae\0\u09e9\0\261"+ + "\0\u0a24\0\u0a5f\0\u0a9a\0\u0ad5\0\u0b10\0\u0b4b\0\u0b86\0\u0bc1"+ + "\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\u01d8\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\261\0\u1235\0\u1270\0\u12ab"+ + "\0\261\0\u12e6\0\u1321\0\u0973\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\u18a9\0\u18e4\0\u191f\0\u195a\0\u1995"+ + "\0\u19d0\0\u1a0b\0\u1a46\0\u1a81\0\261\0\u1abc\0\u1af7\0\u1b32"+ + "\0\u1b6d\0\u1ba8\0\u1be3\0\u1c1e\0\u1c59\0\u1c94\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\u1f93\0\u1fce\0\u2009\0\u2044\0\u207f\0\u20ba"+ + "\0\u15e5\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\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"; + + private static int [] zzUnpackRowMap() { + int [] result = new int[194]; + 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\4\1\6\1\7\1\10\1\11\1\4"+ + "\1\12\1\13\2\11\2\13\1\14\1\11\1\15\1\16"+ + "\1\17\1\4\1\20\1\21\1\22\1\23\1\24\1\25"+ + "\1\26\1\11\1\27\1\30\2\11\1\31\1\11\1\32"+ + "\1\11\1\33\2\11\1\34\1\35\1\11\1\36\1\37"+ + "\1\40\1\41\1\42\1\43\1\44\1\45\1\46\1\10"+ + "\1\47\1\50\1\10\1\51\1\52\1\53\1\11\1\54"+ + "\1\55\1\56\16\54\1\57\1\54\1\60\47\54\1\61"+ + "\1\55\1\56\17\61\1\57\1\62\47\61\75\0\1\4"+ + "\73\0\1\6\73\0\1\63\1\64\55\0\1\46\72\0"+ + "\1\46\15\0\10\11\1\0\1\11\4\0\30\11\16\0"+ + "\1\11\10\0\2\13\1\65\1\0\2\13\1\66\1\67"+ + "\14\0\1\67\5\0\1\70\1\65\26\0\1\70\10\0"+ + "\2\13\2\0\2\13\1\66\1\67\14\0\1\67\5\0"+ + "\1\70\27\0\1\70\10\0\2\66\2\0\2\66\75\0"+ + "\1\46\42\0\1\46\15\0\10\11\1\0\1\11\4\0"+ + "\1\11\1\71\26\11\16\0\1\11\6\0\10\11\1\0"+ + "\1\11\4\0\4\11\1\72\1\11\1\73\21\11\16\0"+ + "\1\11\6\0\10\11\1\0\1\11\4\0\3\11\1\74"+ + "\11\11\1\75\6\11\1\76\3\11\16\0\1\11\6\0"+ + "\10\11\1\0\1\11\4\0\4\11\1\77\6\11\1\100"+ + "\14\11\16\0\1\11\6\0\10\11\1\0\1\11\4\0"+ + "\10\11\1\101\17\11\16\0\1\11\6\0\10\11\1\0"+ + "\1\11\4\0\1\102\5\11\1\103\1\104\3\11\1\105"+ + "\14\11\16\0\1\11\6\0\10\11\1\0\1\11\4\0"+ + "\26\11\1\106\1\11\16\0\1\11\6\0\10\11\1\0"+ + "\1\11\4\0\1\107\6\11\1\110\7\11\1\111\10\11"+ + "\16\0\1\11\6\0\10\11\1\0\1\11\4\0\10\11"+ + "\1\112\4\11\1\113\12\11\16\0\1\11\6\0\10\11"+ + "\1\0\1\11\4\0\11\11\1\114\6\11\1\115\1\11"+ + "\1\116\5\11\16\0\1\11\6\0\10\11\1\0\1\11"+ + "\4\0\6\11\1\115\1\11\1\117\10\11\1\120\6\11"+ + "\16\0\1\11\6\0\10\11\1\0\1\11\4\0\1\121"+ + "\5\11\1\122\5\11\1\123\1\124\12\11\16\0\1\11"+ + "\6\0\10\11\1\0\1\11\4\0\1\125\3\11\1\126"+ + "\10\11\1\127\12\11\16\0\1\11\6\0\10\11\1\0"+ + "\1\11\4\0\13\11\1\130\1\131\13\11\16\0\1\11"+ + "\6\0\10\11\1\0\1\11\4\0\1\122\5\11\1\132"+ + "\21\11\16\0\1\11\6\0\10\11\1\0\1\11\4\0"+ + "\1\133\27\11\16\0\1\11\63\0\1\46\1\134\71\0"+ + "\1\46\1\0\1\10\70\0\1\46\3\0\1\46\66\0"+ + "\1\46\4\0\1\46\65\0\1\46\5\0\1\46\1\0"+ + "\1\54\2\0\16\54\1\0\1\54\1\0\47\54\2\0"+ + "\1\56\70\0\2\135\1\0\5\135\1\136\3\135\1\136"+ + "\1\137\55\135\1\61\2\0\17\61\2\0\47\61\2\135"+ + "\1\0\70\135\1\63\1\140\1\141\70\63\5\142\1\143"+ + "\65\142\10\0\1\144\1\145\1\0\3\145\1\0\1\145"+ + "\4\0\2\145\3\0\1\145\2\0\1\145\5\0\1\145"+ + "\1\0\1\145\25\0\1\145\10\0\2\66\2\0\2\66"+ + "\1\0\1\67\14\0\1\67\5\0\1\70\27\0\1\70"+ + "\10\0\2\146\2\0\2\146\2\0\1\147\50\0\1\147"+ + "\7\0\10\11\1\0\1\11\4\0\2\11\1\150\25\11"+ + "\16\0\1\11\6\0\10\11\1\0\1\11\4\0\10\11"+ + "\1\151\17\11\16\0\1\11\6\0\10\11\1\0\1\11"+ + "\4\0\6\11\1\152\21\11\16\0\1\11\6\0\10\11"+ + "\1\0\1\11\4\0\1\153\27\11\16\0\1\11\6\0"+ + "\10\11\1\0\1\11\4\0\23\11\1\154\4\11\16\0"+ + "\1\11\6\0\10\11\1\0\1\11\4\0\14\11\1\155"+ + "\13\11\16\0\1\11\6\0\10\11\1\0\1\11\4\0"+ + "\15\11\1\156\3\11\1\115\6\11\16\0\1\11\6\0"+ + "\10\11\1\0\1\11\4\0\4\11\1\157\7\11\1\160"+ + "\13\11\16\0\1\11\6\0\10\11\1\0\1\11\4\0"+ + "\3\11\1\161\24\11\16\0\1\11\6\0\10\11\1\0"+ + "\1\11\4\0\2\11\1\156\1\107\24\11\16\0\1\11"+ + "\6\0\10\11\1\0\1\11\4\0\11\11\1\162\16\11"+ + "\16\0\1\11\6\0\10\11\1\0\1\11\4\0\1\163"+ + "\27\11\16\0\1\11\6\0\10\11\1\0\1\11\4\0"+ + "\1\122\27\11\16\0\1\11\6\0\10\11\1\0\1\11"+ + "\4\0\10\11\1\164\17\11\16\0\1\11\6\0\10\11"+ + "\1\0\1\11\4\0\5\11\1\165\22\11\16\0\1\11"+ + "\6\0\10\11\1\0\1\11\4\0\2\11\1\156\25\11"+ + "\16\0\1\11\6\0\10\11\1\0\1\11\4\0\3\11"+ + "\1\166\24\11\16\0\1\11\6\0\10\11\1\0\1\11"+ + "\4\0\24\11\1\115\3\11\16\0\1\11\6\0\10\11"+ + "\1\0\1\11\4\0\7\11\1\167\20\11\16\0\1\11"+ + "\6\0\10\11\1\0\1\11\4\0\2\11\1\170\1\171"+ + "\24\11\16\0\1\11\6\0\10\11\1\0\1\11\4\0"+ + "\23\11\1\172\4\11\16\0\1\11\6\0\10\11\1\0"+ + "\1\11\4\0\20\11\1\173\7\11\16\0\1\11\6\0"+ + "\10\11\1\0\1\11\4\0\11\11\1\174\16\11\16\0"+ + "\1\11\6\0\10\11\1\0\1\11\4\0\7\11\1\110"+ + "\20\11\16\0\1\11\6\0\10\11\1\0\1\11\4\0"+ + "\4\11\1\115\23\11\16\0\1\11\6\0\10\11\1\0"+ + "\1\11\4\0\11\11\1\175\16\11\16\0\1\11\6\0"+ + "\10\11\1\0\1\11\4\0\11\11\1\176\16\11\16\0"+ + "\1\11\6\0\10\11\1\0\1\11\4\0\5\11\1\177"+ + "\22\11\16\0\1\11\6\0\10\11\1\0\1\11\4\0"+ + "\6\11\1\200\5\11\1\201\13\11\16\0\1\11\6\0"+ + "\10\11\1\0\1\11\4\0\1\11\1\202\26\11\16\0"+ + "\1\11\6\0\10\11\1\0\1\11\4\0\14\11\1\203"+ + "\13\11\16\0\1\11\6\0\10\11\1\0\1\11\4\0"+ + "\3\11\1\165\24\11\16\0\1\11\6\0\10\11\1\0"+ + "\1\11\4\0\14\11\1\204\13\11\16\0\1\11\6\0"+ + "\10\11\1\0\1\11\4\0\27\11\1\115\16\0\1\11"+ + "\63\0\1\46\1\10\16\0\1\137\3\0\2\137\65\0"+ + "\1\205\3\0\2\205\57\0\1\141\70\0\5\142\1\206"+ + "\65\142\4\0\1\141\1\143\75\0\2\207\1\0\3\207"+ + "\1\0\1\207\4\0\2\207\3\0\1\207\2\0\1\207"+ + "\5\0\1\207\1\0\1\207\25\0\1\207\10\0\2\146"+ + "\2\0\2\146\24\0\1\70\27\0\1\70\10\0\2\146"+ + "\2\0\2\146\63\0\10\11\1\0\1\11\4\0\3\11"+ + "\1\210\24\11\16\0\1\11\6\0\10\11\1\0\1\11"+ + "\4\0\1\211\27\11\16\0\1\11\6\0\10\11\1\0"+ + "\1\11\4\0\7\11\1\212\20\11\16\0\1\11\6\0"+ + "\10\11\1\0\1\11\4\0\3\11\1\213\24\11\16\0"+ + "\1\11\6\0\10\11\1\0\1\11\4\0\10\11\1\122"+ + "\17\11\16\0\1\11\6\0\10\11\1\0\1\11\4\0"+ + "\3\11\1\107\24\11\16\0\1\11\6\0\10\11\1\0"+ + "\1\11\4\0\10\11\1\115\17\11\16\0\1\11\6\0"+ + "\10\11\1\0\1\11\4\0\6\11\1\214\21\11\16\0"+ + "\1\11\6\0\10\11\1\0\1\11\4\0\2\11\1\115"+ + "\25\11\16\0\1\11\6\0\10\11\1\0\1\11\4\0"+ + "\15\11\1\215\12\11\16\0\1\11\6\0\10\11\1\0"+ + "\1\11\4\0\2\11\1\216\1\217\24\11\16\0\1\11"+ + "\6\0\10\11\1\0\1\11\4\0\2\11\1\160\25\11"+ + "\16\0\1\11\6\0\10\11\1\0\1\11\4\0\4\11"+ + "\1\220\23\11\16\0\1\11\6\0\10\11\1\0\1\11"+ + "\4\0\13\11\1\115\14\11\16\0\1\11\6\0\10\11"+ + "\1\0\1\11\4\0\10\11\1\221\17\11\16\0\1\11"+ + "\6\0\10\11\1\0\1\11\4\0\7\11\1\115\20\11"+ + "\16\0\1\11\6\0\10\11\1\0\1\11\4\0\3\11"+ + "\1\222\24\11\16\0\1\11\6\0\10\11\1\0\1\11"+ + "\4\0\10\11\1\223\17\11\16\0\1\11\6\0\10\11"+ + "\1\0\1\11\4\0\6\11\1\224\1\225\20\11\16\0"+ + "\1\11\6\0\10\11\1\0\1\11\4\0\1\226\27\11"+ + "\16\0\1\11\6\0\10\11\1\0\1\11\4\0\1\227"+ + "\27\11\16\0\1\11\6\0\10\11\1\0\1\11\4\0"+ + "\1\230\27\11\16\0\1\11\6\0\10\11\1\0\1\11"+ + "\4\0\5\11\1\231\22\11\16\0\1\11\6\0\10\11"+ + "\1\0\1\11\4\0\12\11\1\232\15\11\16\0\1\11"+ + "\6\0\10\11\1\0\1\11\4\0\3\11\1\233\24\11"+ + "\16\0\1\11\6\0\10\11\1\0\1\11\4\0\26\11"+ + "\1\234\1\11\16\0\1\11\6\0\10\11\1\0\1\11"+ + "\4\0\7\11\1\213\20\11\16\0\1\11\6\0\10\11"+ + "\1\0\1\11\4\0\7\11\1\156\20\11\16\0\1\11"+ + "\6\0\10\11\1\0\1\11\4\0\16\11\1\115\11\11"+ + "\16\0\1\11\4\142\1\141\1\206\65\142\10\0\2\235"+ + "\1\0\3\235\1\0\1\235\4\0\2\235\3\0\1\235"+ + "\2\0\1\235\5\0\1\235\1\0\1\235\25\0\1\235"+ + "\6\0\10\11\1\0\1\11\4\0\4\11\1\236\23\11"+ + "\16\0\1\11\6\0\10\11\1\0\1\11\4\0\12\11"+ + "\1\115\15\11\16\0\1\11\6\0\10\11\1\0\1\11"+ + "\4\0\10\11\1\237\17\11\16\0\1\11\6\0\10\11"+ + "\1\0\1\11\4\0\14\11\1\240\13\11\16\0\1\11"+ + "\6\0\10\11\1\0\1\11\4\0\24\11\1\241\3\11"+ + "\16\0\1\11\6\0\10\11\1\0\1\11\4\0\4\11"+ + "\1\242\23\11\16\0\1\11\6\0\10\11\1\0\1\11"+ + "\4\0\3\11\1\115\24\11\16\0\1\11\6\0\10\11"+ + "\1\0\1\11\4\0\14\11\1\243\13\11\16\0\1\11"+ + "\6\0\10\11\1\0\1\11\4\0\4\11\1\244\23\11"+ + "\16\0\1\11\6\0\10\11\1\0\1\11\4\0\11\11"+ + "\1\245\16\11\16\0\1\11\6\0\10\11\1\0\1\11"+ + "\4\0\1\246\27\11\16\0\1\11\6\0\10\11\1\0"+ + "\1\11\4\0\4\11\1\247\23\11\16\0\1\11\6\0"+ + "\10\11\1\0\1\11\4\0\4\11\1\216\23\11\16\0"+ + "\1\11\6\0\10\11\1\0\1\11\4\0\10\11\1\250"+ + "\17\11\16\0\1\11\6\0\10\11\1\0\1\11\4\0"+ + "\15\11\1\251\12\11\16\0\1\11\6\0\10\11\1\0"+ + "\1\11\4\0\22\11\1\213\5\11\16\0\1\11\6\0"+ + "\10\11\1\0\1\11\4\0\7\11\1\252\20\11\16\0"+ + "\1\11\6\0\10\11\1\0\1\11\4\0\3\11\1\253"+ + "\24\11\16\0\1\11\6\0\10\11\1\0\1\11\4\0"+ + "\1\254\27\11\16\0\1\11\6\0\10\11\1\0\1\11"+ + "\4\0\10\11\1\255\17\11\16\0\1\11\6\0\10\11"+ + "\1\0\1\11\4\0\1\256\27\11\16\0\1\11\10\0"+ + "\2\257\1\0\3\257\1\0\1\257\4\0\2\257\3\0"+ + "\1\257\2\0\1\257\5\0\1\257\1\0\1\257\25\0"+ + "\1\257\6\0\10\11\1\0\1\11\4\0\1\260\27\11"+ + "\16\0\1\11\6\0\10\11\1\0\1\11\4\0\1\242"+ + "\27\11\16\0\1\11\6\0\10\11\1\0\1\11\4\0"+ + "\5\11\1\115\22\11\16\0\1\11\6\0\10\11\1\0"+ + "\1\11\4\0\11\11\1\115\16\11\16\0\1\11\6\0"+ + "\10\11\1\0\1\11\4\0\11\11\1\261\16\11\16\0"+ + "\1\11\6\0\10\11\1\0\1\11\4\0\14\11\1\262"+ + "\13\11\16\0\1\11\6\0\10\11\1\0\1\11\4\0"+ + "\16\11\1\160\11\11\16\0\1\11\6\0\10\11\1\0"+ + "\1\11\4\0\11\11\1\263\16\11\16\0\1\11\6\0"+ + "\10\11\1\0\1\11\4\0\20\11\1\264\7\11\16\0"+ + "\1\11\6\0\10\11\1\0\1\11\4\0\22\11\1\265"+ + "\5\11\16\0\1\11\6\0\10\11\1\0\1\11\4\0"+ + "\7\11\1\216\20\11\16\0\1\11\6\0\10\11\1\0"+ + "\1\11\4\0\7\11\1\266\20\11\16\0\1\11\6\0"+ + "\10\11\1\0\1\11\4\0\14\11\1\267\13\11\16\0"+ + "\1\11\6\0\10\11\1\0\1\11\4\0\25\11\1\156"+ + "\2\11\16\0\1\11\6\0\10\11\1\0\1\11\4\0"+ + "\5\11\1\270\22\11\16\0\1\11\6\0\10\11\1\0"+ + "\1\11\4\0\3\11\1\156\24\11\16\0\1\11\10\0"+ + "\2\271\1\0\3\271\1\0\1\271\4\0\2\271\3\0"+ + "\1\271\2\0\1\271\5\0\1\271\1\0\1\271\25\0"+ + "\1\271\6\0\10\11\1\0\1\11\4\0\5\11\1\216"+ + "\22\11\16\0\1\11\6\0\10\11\1\0\1\11\4\0"+ + "\15\11\1\156\12\11\16\0\1\11\6\0\10\11\1\0"+ + "\1\11\4\0\16\11\1\156\11\11\16\0\1\11\6\0"+ + "\10\11\1\0\1\11\4\0\5\11\1\272\22\11\16\0"+ + "\1\11\6\0\10\11\1\0\1\11\4\0\1\273\27\11"+ + "\16\0\1\11\6\0\10\11\1\0\1\11\4\0\10\11"+ + "\1\274\17\11\16\0\1\11\6\0\10\11\1\0\1\11"+ + "\4\0\21\11\1\115\6\11\16\0\1\11\6\0\10\11"+ + "\1\0\1\11\4\0\6\11\1\242\21\11\16\0\1\11"+ + "\6\0\10\11\1\0\1\11\4\0\3\11\1\275\24\11"+ + "\16\0\1\11\10\0\2\276\1\0\3\276\1\0\1\276"+ + "\4\0\2\276\3\0\1\276\2\0\1\276\5\0\1\276"+ + "\1\0\1\276\25\0\1\276\6\0\10\11\1\0\1\11"+ + "\4\0\10\11\1\277\17\11\16\0\1\11\6\0\10\11"+ + "\1\0\1\11\4\0\5\11\1\156\22\11\16\0\1\11"+ + "\6\0\10\11\1\0\1\11\4\0\11\11\1\300\16\11"+ + "\16\0\1\11\6\0\10\11\1\0\1\11\4\0\10\11"+ + "\1\204\17\11\16\0\1\11\10\0\2\301\1\0\3\301"+ + "\1\0\1\301\4\0\2\301\3\0\1\301\2\0\1\301"+ + "\5\0\1\301\1\0\1\301\25\0\1\301\6\0\10\11"+ + "\1\0\1\11\4\0\6\11\1\302\21\11\16\0\1\11"+ + "\6\0\10\11\1\0\1\11\4\0\3\11\1\160\24\11"+ + "\16\0\1\11\10\0\2\70\1\0\3\70\1\0\1\70"+ + "\4\0\2\70\3\0\1\70\2\0\1\70\5\0\1\70"+ + "\1\0\1\70\25\0\1\70\6\0\10\11\1\0\1\11"+ + "\4\0\20\11\1\115\7\11\16\0\1\11"; + + private static int [] zzUnpackTrans() { + int [] result = new int[10384]; + 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\11\1\2\11\20\1\7\11\7\1\2\11"+ + "\4\1\2\0\1\1\1\0\1\11\44\1\1\11\3\1"+ + "\1\11\2\0\3\1\1\0\35\1\1\11\1\0\74\1"; + + private static int [] zzUnpackAttribute() { + int [] result = new int[194]; + 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[] = new char[ZZ_BUFFERSIZE]; + + /** 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; + + /** number of newlines encountered up to the start of the matched text */ + private int yyline; + + /** the number of characters up to the start of the matched text */ + private int yychar; + + /** + * the number of characters from the last newline up to the start of the + * matched text + */ + private int yycolumn; + + /** + * 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; + + /** denotes if the user-EOF-code has already been executed */ + private boolean zzEOFDone; + + /* user code: */ + /** + * Create an empty lexer, yyrset will be called later to reset and assign + * the reader + */ + public ActionScriptLexer() { + super(); + } + + @Override + public int yychar() { + return yychar; + } + + private static final byte PARAN = 1; + private static final byte BRACKET = 2; + private static final byte CURLY = 3; + + + + /** + * 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 ActionScriptLexer(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 ActionScriptLexer(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 < 1780) { + int count = packed.charAt(i++); + char value = packed.charAt(i++); + do map[j++] = value; while (--count > 0); + } + return map; + } + + + /** + * Refills the input buffer. + * + * @return false, iff there was new input. + * + * @exception java.io.IOException if any I/O-Error occurs + */ + private boolean zzRefill() throws java.io.IOException { + + /* first: make room (if you can) */ + if (zzStartRead > 0) { + System.arraycopy(zzBuffer, zzStartRead, + zzBuffer, 0, + zzEndRead-zzStartRead); + + /* translate stored positions */ + zzEndRead-= zzStartRead; + zzCurrentPos-= zzStartRead; + zzMarkedPos-= zzStartRead; + zzStartRead = 0; + } + + /* is the buffer big enough? */ + if (zzCurrentPos >= zzBuffer.length) { + /* if not: blow it up */ + char newBuffer[] = new char[zzCurrentPos*2]; + System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); + zzBuffer = newBuffer; + } + + /* finally: fill the buffer with new input */ + int numRead = zzReader.read(zzBuffer, zzEndRead, + zzBuffer.length-zzEndRead); + + if (numRead > 0) { + zzEndRead+= numRead; + return false; + } + // unlikely but not impossible: read 0 characters, but not at end of stream + if (numRead == 0) { + int c = zzReader.read(); + if (c == -1) { + return true; + } else { + zzBuffer[zzEndRead++] = (char) c; + return false; + } + } + + // numRead < 0 + return true; + } + + + /** + * 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(); + } + + + /** + * 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 ZZ_INITIAL. + * + * @param reader the new input stream + */ + public final void yyreset(java.io.Reader reader) { + zzReader = reader; + zzAtBOL = true; + zzAtEOF = false; + zzEOFDone = false; + zzEndRead = zzStartRead = 0; + zzCurrentPos = zzMarkedPos = 0; + yyline = yychar = yycolumn = 0; + zzLexicalState = YYINITIAL; + } + + + /** + * Returns the current lexical state. + */ + public final int yystate() { + return zzLexicalState; + } + + + /** + * Enters a new lexical state + * + * @param newState the new lexical state + */ + 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 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; + + yychar+= zzMarkedPosL-zzStartRead; + + zzAction = -1; + + zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; + + 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 8: + { return token(TokenType.OPERATOR, -PARAN); + } + case 19: break; + case 17: + { return token(TokenType.KEYWORD); + } + case 20: break; + case 4: + { return token(TokenType.NUMBER); + } + case 21: break; + case 2: + { return token(TokenType.OPERATOR); + } + case 22: break; + case 9: + { return token(TokenType.OPERATOR, CURLY); + } + case 23: break; + case 10: + { return token(TokenType.OPERATOR, -CURLY); + } + case 24: break; + case 13: + { tokenLength += yylength(); + } + case 25: break; + case 14: + { yybegin(YYINITIAL); + } + case 26: break; + case 6: + { yybegin(CHARLITERAL); + tokenStart = yychar; + tokenLength = 1; + } + case 27: break; + case 15: + { yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + case 28: break; + case 12: + { return token(TokenType.OPERATOR, -BRACKET); + } + case 29: break; + case 7: + { return token(TokenType.OPERATOR, PARAN); + } + case 30: break; + case 3: + { return token(TokenType.IDENTIFIER); + } + case 31: break; + case 18: + { tokenLength += 2; + } + case 32: break; + case 11: + { return token(TokenType.OPERATOR, BRACKET); + } + case 33: break; + case 16: + { return token(TokenType.COMMENT); + } + case 34: break; + case 5: + { yybegin(STRING); + tokenStart = yychar; + tokenLength = 1; + } + case 35: break; + case 1: + { + } + case 36: break; + default: + if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { + zzAtEOF = true; + { + return null; + } + } + else { + zzScanError(ZZ_NO_MATCH); + } + } + } + } + + +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/BashLexer.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/BashLexer.java new file mode 100644 index 000000000..f26f9f904 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/BashLexer.java @@ -0,0 +1,1338 @@ +/* The following code was generated by JFlex 1.4.3 on 21.7.10 18:14 */ + +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jsyntaxpane.lexers; + + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + + +/** + * This class is a scanner generated by + * JFlex 1.4.3 + * on 21.7.10 18:14 from the specification file + * D:/Dokumenty/Programovani/JavaSE/JPSWFDec/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/bash.flex + */ +public final class BashLexer extends DefaultJFlexLexer { + + /** This character denotes the end of file */ + public static final int YYEOF = -1; + + /** initial size of the lookahead buffer */ + private static final int ZZ_BUFFERSIZE = 16384; + + /** 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, 0 + }; + + /** + * Translates characters to character classes + */ + private static final String ZZ_CMAP_PACKED = + "\12\0\1\2\2\0\1\1\22\0\1\54\1\6\1\7\1\5\1\24"+ + "\1\0\1\44\1\10\1\25\1\26\1\0\1\45\1\0\1\33\1\44"+ + "\1\44\2\4\1\57\1\60\6\4\1\66\1\44\1\40\1\41\1\40"+ + "\1\0\1\44\26\3\1\65\3\3\1\31\1\11\1\32\1\0\1\4"+ + "\1\12\1\22\1\52\1\21\1\15\1\20\1\14\1\37\1\46\1\13"+ + "\1\61\1\53\1\35\1\56\1\17\1\16\1\55\1\34\1\47\1\23"+ + "\1\36\1\50\1\62\1\51\1\63\1\64\1\42\1\27\1\0\1\30"+ + "\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 = + "\1\0\2\1\1\2\1\3\4\1\11\2\1\3\1\4"+ + "\1\5\1\6\1\7\1\10\1\11\1\3\4\2\3\3"+ + "\11\2\1\12\3\2\1\1\3\13\1\14\3\0\1\15"+ + "\2\12\1\2\1\16\5\2\1\12\4\2\1\12\1\17"+ + "\3\2\1\12\42\2\1\12\2\2\1\0\1\20\1\3"+ + "\2\0\3\2\1\12\10\2\1\12\14\2\1\12\20\2"+ + "\1\12\15\2\1\21\2\14\2\22\1\23\6\2\1\12"+ + "\4\2\1\12\50\2\1\24\3\2\1\12\30\2\1\12"+ + "\27\2\1\12\3\2\1\25\3\2\1\26\3\2\1\12"+ + "\1\27\1\2\1\12\11\2\1\12\5\2\1\12\10\2"+ + "\1\12\23\2\1\12\23\2\1\12\10\2"; + + private static int [] zzUnpackAction() { + int [] result = new int[373]; + 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\u01b8\0\u01ef\0\u0226\0\u025d\0\u0294\0\u02cb\0\u0302\0\u0339"+ + "\0\u0370\0\u03a7\0\u03de\0\67\0\u0415\0\67\0\67\0\67"+ + "\0\67\0\u044c\0\u0483\0\u04ba\0\u04f1\0\u0528\0\u055f\0\67"+ + "\0\u0596\0\u05cd\0\u0604\0\u063b\0\u0672\0\u06a9\0\u06e0\0\u0717"+ + "\0\u074e\0\u0785\0\u07bc\0\u07f3\0\u082a\0\u0861\0\u0898\0\u08cf"+ + "\0\u0906\0\67\0\u093d\0\u0974\0\u09ab\0\u09e2\0\u0a19\0\245"+ + "\0\u0a50\0\u0a87\0\u0abe\0\u0af5\0\u0b2c\0\u0b63\0\u0b9a\0\u0bd1"+ + "\0\u0c08\0\u0c3f\0\u0c76\0\u0cad\0\u0ce4\0\u0d1b\0\u0d52\0\u0d89"+ + "\0\u0dc0\0\u0df7\0\u0e2e\0\u0e65\0\u0e9c\0\u0ed3\0\u0f0a\0\u0f41"+ + "\0\u0f78\0\u0faf\0\u0fe6\0\u101d\0\u0c08\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\67\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\u0e2e\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\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\67"+ + "\0\67\0\u09ab\0\67\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\67"+ + "\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\u3246\0\u327d\0\u32b4\0\u32eb\0\u3322\0\u3359"+ + "\0\u3390\0\u33c7\0\u33fe\0\u3435\0\u346c\0\u34a3\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\u3813\0\u384a\0\u3881"+ + "\0\u38b8\0\u38ef\0\u3926\0\u395d\0\u3994\0\u39cb\0\u3a02\0\u3a39"+ + "\0\245\0\u3a70\0\u3aa7\0\u3ade\0\245\0\u3b15\0\u3b4c\0\u3b83"+ + "\0\u3bba\0\245\0\u3bf1\0\u3c28\0\u3c5f\0\u3c96\0\u3ccd\0\u3d04"+ + "\0\u3d3b\0\u3d72\0\u3da9\0\u3de0\0\u3e17\0\u2260\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\u38b8\0\u4150\0\u4187\0\u41be"+ + "\0\u41f5\0\u422c\0\u4263\0\u429a\0\u2486\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\u3bba\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\u497a\0\u49b1\0\u49e8"+ + "\0\u4a1f\0\u4a56\0\u4a8d\0\u4ac4\0\u4afb"; + + private static int [] zzUnpackRowMap() { + int [] result = new int[373]; + 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\2\1\4\1\2\1\5\1\6\1\7"+ + "\1\10\1\2\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\6\1\37\1\4\1\2\1\40\1\41\1\42\1\43"+ + "\1\44\1\45\1\46\1\47\1\2\1\50\1\51\2\2"+ + "\1\52\1\53\1\54\1\55\1\56\1\57\71\0\1\2"+ + "\67\0\2\4\6\0\11\4\10\0\4\4\2\0\1\4"+ + "\3\0\6\4\1\0\11\4\1\0\1\60\1\61\1\62"+ + "\3\60\1\63\60\60\41\0\1\40\25\0\1\64\2\0"+ + "\4\64\1\0\1\64\1\0\55\64\1\65\2\0\5\65"+ + "\2\0\55\65\1\66\2\0\6\66\2\0\54\66\3\0"+ + "\2\4\6\0\1\4\1\67\1\70\1\4\1\71\4\4"+ + "\10\0\4\4\2\0\1\4\3\0\6\4\1\0\1\4"+ + "\1\72\7\4\4\0\2\4\6\0\1\73\1\4\1\74"+ + "\1\75\3\4\1\76\1\77\10\0\2\4\1\100\1\101"+ + "\2\0\1\4\3\0\1\4\1\102\1\103\3\4\1\0"+ + "\1\4\1\104\7\4\4\0\2\4\6\0\1\105\1\70"+ + "\1\106\1\107\1\4\1\110\1\70\1\111\1\4\10\0"+ + "\4\4\2\0\1\4\3\0\2\4\1\70\3\4\1\0"+ + "\1\4\1\112\7\4\4\0\2\4\6\0\11\4\10\0"+ + "\4\4\2\0\1\4\3\0\6\4\1\0\1\113\10\4"+ + "\4\0\2\4\6\0\1\114\2\4\1\115\1\4\1\116"+ + "\2\4\1\117\10\0\1\4\1\70\2\4\2\0\1\4"+ + "\3\0\6\4\1\0\11\4\4\0\2\4\6\0\4\4"+ + "\1\120\1\4\1\121\1\4\1\122\10\0\1\4\1\123"+ + "\1\124\1\125\2\0\1\4\3\0\6\4\1\0\4\4"+ + "\1\126\1\127\1\130\2\4\4\0\2\4\6\0\1\4"+ + "\1\131\1\70\1\132\3\4\1\133\1\134\10\0\1\4"+ + "\1\135\2\4\2\0\1\4\3\0\1\136\1\137\1\104"+ + "\2\4\1\140\1\0\1\70\1\100\7\4\4\0\2\4"+ + "\6\0\10\4\1\141\10\0\1\4\1\142\2\4\2\0"+ + "\1\4\3\0\3\4\1\143\2\4\1\0\1\144\10\4"+ + "\4\0\2\4\6\0\1\4\1\145\1\146\1\147\1\4"+ + "\1\150\1\151\1\4\1\152\10\0\1\4\1\153\1\154"+ + "\1\4\2\0\1\4\3\0\1\155\1\4\1\156\3\4"+ + "\1\0\1\157\6\4\1\160\1\4\26\0\1\161\67\0"+ + "\1\162\57\0\1\163\1\164\14\0\1\165\1\0\1\165"+ + "\2\0\1\40\27\0\2\4\6\0\11\4\10\0\4\4"+ + "\2\0\1\4\3\0\2\4\1\166\3\4\1\0\11\4"+ + "\4\0\2\4\6\0\3\4\1\167\1\70\1\170\2\4"+ + "\1\171\10\0\4\4\2\0\1\4\3\0\6\4\1\0"+ + "\1\172\10\4\4\0\2\4\6\0\1\173\2\4\1\174"+ + "\1\4\1\175\1\4\1\176\1\177\10\0\2\4\1\200"+ + "\1\4\2\0\1\4\3\0\1\201\1\202\4\4\1\0"+ + "\7\4\1\203\1\4\4\0\2\4\6\0\5\4\1\204"+ + "\1\4\1\205\1\4\10\0\4\4\2\0\1\206\3\0"+ + "\1\4\1\207\4\4\1\0\11\4\42\0\1\40\1\0"+ + "\1\40\70\0\1\40\24\0\2\4\6\0\1\210\2\4"+ + "\1\211\1\4\1\212\1\4\1\213\1\4\10\0\4\4"+ + "\2\0\1\4\3\0\6\4\1\0\11\4\4\0\2\4"+ + "\6\0\5\4\1\214\1\100\1\215\1\216\10\0\4\4"+ + "\2\0\1\4\3\0\6\4\1\0\1\4\1\217\7\4"+ + "\4\0\2\4\6\0\4\4\1\220\3\4\1\221\10\0"+ + "\1\4\1\222\2\4\2\0\1\4\3\0\2\4\1\223"+ + "\3\4\1\0\1\4\1\224\7\4\4\0\2\4\6\0"+ + "\6\4\1\70\1\225\1\4\10\0\4\4\2\0\1\4"+ + "\3\0\1\226\1\227\4\4\1\0\11\4\4\0\2\4"+ + "\6\0\6\4\1\70\1\230\1\4\10\0\3\4\1\70"+ + "\2\0\1\231\3\0\1\4\1\232\1\233\3\4\1\0"+ + "\11\4\4\0\2\4\6\0\1\234\10\4\10\0\4\4"+ + "\2\0\1\4\3\0\6\4\1\0\11\4\4\0\2\4"+ + "\6\0\1\235\2\4\1\236\3\4\1\237\1\70\10\0"+ + "\4\4\2\0\1\4\3\0\1\4\1\240\1\241\1\242"+ + "\2\4\1\0\11\4\4\0\2\4\6\0\3\4\1\243"+ + "\3\4\1\244\1\4\10\0\2\4\1\245\1\4\2\0"+ + "\1\4\3\0\5\4\1\246\1\0\1\4\1\247\3\4"+ + "\1\70\3\4\4\0\2\4\6\0\3\4\1\250\5\4"+ + "\10\0\4\4\2\0\1\4\3\0\6\4\1\0\11\4"+ + "\4\0\2\4\6\0\1\70\1\4\1\251\6\4\10\0"+ + "\4\4\2\0\1\4\3\0\6\4\1\0\1\4\1\252"+ + "\7\4\4\0\2\4\6\0\7\4\1\253\1\4\10\0"+ + "\4\4\2\0\1\4\3\0\6\4\1\0\11\4\4\0"+ + "\2\4\6\0\5\4\1\254\3\4\10\0\4\4\2\0"+ + "\1\4\3\0\6\4\1\0\11\4\4\0\2\4\6\0"+ + "\11\4\10\0\3\4\1\255\2\0\1\4\3\0\6\4"+ + "\1\0\11\4\4\0\1\256\7\0\11\256\10\0\4\256"+ + "\2\0\1\256\3\0\6\256\1\0\2\256\2\0\5\256"+ + "\1\0\1\60\1\61\1\62\64\60\2\0\1\62\64\0"+ + "\1\63\1\257\1\260\64\63\1\64\2\0\4\64\1\261"+ + "\1\64\1\0\55\64\1\65\2\0\5\65\2\0\42\65"+ + "\1\262\12\65\1\66\2\0\6\66\1\0\1\263\54\66"+ + "\3\0\2\4\6\0\2\4\1\264\3\4\1\265\2\4"+ + "\10\0\4\4\2\0\1\4\3\0\2\4\1\100\3\4"+ + "\1\0\11\4\4\0\2\4\6\0\10\4\1\266\10\0"+ + "\4\4\2\0\1\4\3\0\6\4\1\0\11\4\4\0"+ + "\2\4\6\0\11\4\10\0\4\4\2\0\1\4\3\0"+ + "\6\4\1\0\1\177\10\4\4\0\2\4\6\0\4\4"+ + "\1\242\4\4\10\0\1\4\1\267\2\4\2\0\1\4"+ + "\3\0\6\4\1\0\11\4\4\0\2\4\6\0\1\270"+ + "\1\271\7\4\10\0\4\4\2\0\1\4\3\0\6\4"+ + "\1\0\11\4\4\0\2\4\6\0\11\4\10\0\1\4"+ + "\1\242\2\4\2\0\1\4\3\0\1\4\1\272\4\4"+ + "\1\0\11\4\4\0\2\4\6\0\11\4\10\0\1\4"+ + "\1\273\2\4\2\0\1\4\3\0\6\4\1\0\11\4"+ + "\4\0\2\4\6\0\6\4\1\143\2\4\10\0\4\4"+ + "\2\0\1\4\3\0\6\4\1\0\11\4\4\0\2\4"+ + "\6\0\11\4\10\0\4\4\2\0\1\4\3\0\6\4"+ + "\1\0\1\70\10\4\4\0\2\4\6\0\11\4\10\0"+ + "\4\4\2\0\1\4\3\0\1\4\1\274\4\4\1\0"+ + "\11\4\4\0\2\4\6\0\5\4\1\267\3\4\10\0"+ + "\4\4\2\0\1\4\3\0\6\4\1\0\11\4\4\0"+ + "\2\4\6\0\4\4\1\275\4\4\10\0\4\4\2\0"+ + "\1\4\3\0\6\4\1\0\11\4\4\0\2\4\6\0"+ + "\11\4\10\0\2\4\1\70\1\4\2\0\1\4\3\0"+ + "\6\4\1\0\11\4\4\0\2\4\6\0\1\4\1\276"+ + "\7\4\10\0\3\4\1\70\2\0\1\4\3\0\1\4"+ + "\1\277\4\4\1\0\11\4\4\0\2\4\6\0\11\4"+ + "\10\0\4\4\2\0\1\4\3\0\1\4\1\300\4\4"+ + "\1\0\11\4\4\0\2\4\6\0\4\4\1\301\4\4"+ + "\10\0\4\4\2\0\1\4\3\0\6\4\1\0\11\4"+ + "\4\0\2\4\6\0\6\4\1\302\2\4\10\0\4\4"+ + "\2\0\1\4\3\0\6\4\1\0\11\4\4\0\2\4"+ + "\6\0\11\4\10\0\2\4\1\267\1\4\2\0\1\4"+ + "\3\0\6\4\1\0\11\4\4\0\2\4\6\0\5\4"+ + "\1\303\3\4\10\0\4\4\2\0\1\4\3\0\6\4"+ + "\1\0\11\4\4\0\2\4\6\0\5\4\1\244\3\4"+ + "\10\0\4\4\2\0\1\4\3\0\6\4\1\0\11\4"+ + "\4\0\2\4\6\0\6\4\1\267\2\4\10\0\4\4"+ + "\2\0\1\4\3\0\6\4\1\0\11\4\4\0\2\4"+ + "\6\0\11\4\10\0\4\4\2\0\1\4\3\0\1\304"+ + "\5\4\1\0\11\4\4\0\2\4\6\0\11\4\10\0"+ + "\2\4\1\252\1\4\2\0\1\4\3\0\6\4\1\0"+ + "\11\4\4\0\2\4\6\0\11\4\10\0\1\4\1\305"+ + "\2\4\2\0\1\4\3\0\6\4\1\0\11\4\4\0"+ + "\2\4\6\0\7\4\1\306\1\4\10\0\4\4\2\0"+ + "\1\4\3\0\6\4\1\0\5\4\1\70\3\4\4\0"+ + "\2\4\6\0\11\4\10\0\4\4\2\0\1\4\3\0"+ + "\1\307\5\4\1\0\11\4\4\0\2\4\6\0\7\4"+ + "\1\310\1\4\10\0\4\4\2\0\1\4\3\0\6\4"+ + "\1\0\11\4\4\0\2\4\6\0\1\311\7\4\1\267"+ + "\10\0\4\4\2\0\1\4\3\0\6\4\1\0\11\4"+ + "\4\0\2\4\6\0\11\4\10\0\4\4\2\0\1\4"+ + "\3\0\1\312\5\4\1\0\11\4\4\0\2\4\6\0"+ + "\5\4\1\313\3\4\10\0\4\4\2\0\1\4\3\0"+ + "\6\4\1\0\11\4\4\0\2\4\6\0\7\4\1\314"+ + "\1\4\10\0\4\4\2\0\1\4\3\0\6\4\1\0"+ + "\11\4\4\0\2\4\6\0\1\104\4\4\1\315\3\4"+ + "\10\0\4\4\2\0\1\4\3\0\6\4\1\0\1\316"+ + "\10\4\4\0\2\4\6\0\2\4\1\317\6\4\10\0"+ + "\4\4\2\0\1\4\3\0\6\4\1\0\11\4\4\0"+ + "\2\4\6\0\4\4\1\320\4\4\10\0\4\4\2\0"+ + "\1\4\3\0\6\4\1\0\1\4\1\321\7\4\4\0"+ + "\2\4\6\0\10\4\1\322\10\0\1\4\2\70\1\4"+ + "\2\0\1\4\3\0\6\4\1\0\11\4\4\0\2\4"+ + "\6\0\11\4\10\0\4\4\2\0\1\4\3\0\6\4"+ + "\1\0\1\157\10\4\4\0\2\4\6\0\5\4\1\323"+ + "\3\4\10\0\4\4\2\0\1\4\3\0\6\4\1\0"+ + "\11\4\4\0\2\4\6\0\3\4\1\324\5\4\10\0"+ + "\3\4\1\325\2\0\1\4\3\0\1\4\1\326\3\4"+ + "\1\327\1\0\1\4\1\330\7\4\4\0\2\4\6\0"+ + "\3\4\1\331\5\4\10\0\4\4\2\0\1\4\3\0"+ + "\6\4\1\0\11\4\4\0\2\4\6\0\10\4\1\332"+ + "\10\0\4\4\2\0\1\4\3\0\6\4\1\0\11\4"+ + "\4\0\2\4\6\0\11\4\10\0\4\4\2\0\1\4"+ + "\3\0\6\4\1\0\1\333\10\4\4\0\2\4\6\0"+ + "\1\334\10\4\10\0\4\4\2\0\1\4\3\0\6\4"+ + "\1\0\11\4\4\0\2\4\6\0\11\4\10\0\4\4"+ + "\2\0\1\4\3\0\5\4\1\70\1\0\11\4\4\0"+ + "\2\4\6\0\11\4\10\0\2\4\1\70\1\4\2\0"+ + "\1\4\3\0\1\4\1\335\4\4\1\0\11\4\4\0"+ + "\2\4\6\0\11\4\10\0\2\4\1\100\1\4\2\0"+ + "\1\4\3\0\6\4\1\0\11\4\4\0\2\4\6\0"+ + "\1\336\10\4\10\0\4\4\2\0\1\4\3\0\6\4"+ + "\1\0\11\4\4\0\2\4\6\0\11\4\10\0\4\4"+ + "\2\0\1\4\3\0\1\4\1\104\1\337\3\4\1\0"+ + "\11\4\4\0\2\4\6\0\2\4\1\70\6\4\10\0"+ + "\1\70\1\126\1\70\1\4\2\0\1\4\3\0\6\4"+ + "\1\0\11\4\4\0\2\4\6\0\11\4\10\0\4\4"+ + "\2\0\1\4\3\0\1\4\1\340\4\4\1\0\1\70"+ + "\10\4\4\0\2\4\6\0\11\4\10\0\4\4\2\0"+ + "\1\4\3\0\1\70\5\4\1\0\11\4\4\0\2\4"+ + "\6\0\3\4\1\341\1\4\1\274\3\4\10\0\4\4"+ + "\2\0\1\4\3\0\6\4\1\0\11\4\4\0\2\4"+ + "\6\0\11\4\10\0\4\4\2\0\1\4\3\0\1\4"+ + "\1\342\4\4\1\0\11\4\4\0\2\4\6\0\1\343"+ + "\2\4\1\344\5\4\10\0\4\4\2\0\1\4\3\0"+ + "\2\4\1\345\3\4\1\0\11\4\4\0\2\4\6\0"+ + "\2\4\1\307\6\4\10\0\4\4\2\0\1\4\3\0"+ + "\6\4\1\0\1\4\1\70\7\4\4\0\2\4\6\0"+ + "\11\4\10\0\1\4\1\346\2\4\2\0\1\4\3\0"+ + "\6\4\1\0\11\4\4\0\2\4\6\0\4\4\1\315"+ + "\4\4\10\0\4\4\2\0\1\4\3\0\6\4\1\0"+ + "\1\4\1\347\7\4\26\0\1\350\61\0\1\40\102\0"+ + "\1\40\52\0\1\40\15\0\1\40\33\0\2\4\6\0"+ + "\3\4\1\351\5\4\10\0\4\4\2\0\1\4\3\0"+ + "\6\4\1\0\11\4\4\0\2\4\6\0\3\4\1\143"+ + "\2\4\1\352\2\4\10\0\3\4\1\353\2\0\1\4"+ + "\3\0\6\4\1\0\11\4\4\0\2\4\6\0\10\4"+ + "\1\254\10\0\2\4\1\70\1\4\2\0\1\4\3\0"+ + "\6\4\1\0\11\4\4\0\2\4\6\0\3\4\1\311"+ + "\5\4\10\0\4\4\2\0\1\4\3\0\6\4\1\0"+ + "\11\4\4\0\2\4\6\0\6\4\1\70\2\4\10\0"+ + "\4\4\2\0\1\4\3\0\1\4\1\354\4\4\1\0"+ + "\11\4\4\0\2\4\6\0\11\4\10\0\4\4\2\0"+ + "\1\4\3\0\6\4\1\0\1\4\1\355\7\4\4\0"+ + "\2\4\6\0\11\4\10\0\4\4\2\0\1\4\3\0"+ + "\2\4\1\356\3\4\1\0\1\70\10\4\4\0\2\4"+ + "\6\0\5\4\1\70\2\4\1\104\10\0\4\4\2\0"+ + "\1\4\3\0\6\4\1\0\11\4\4\0\2\4\6\0"+ + "\1\314\10\4\10\0\4\4\2\0\1\4\3\0\1\4"+ + "\1\70\4\4\1\0\11\4\4\0\2\4\6\0\3\4"+ + "\1\357\5\4\10\0\4\4\2\0\1\4\3\0\6\4"+ + "\1\0\11\4\4\0\2\4\6\0\11\4\10\0\4\4"+ + "\2\0\1\4\3\0\6\4\1\0\7\4\1\70\1\4"+ + "\4\0\2\4\6\0\7\4\1\360\1\4\10\0\4\4"+ + "\2\0\1\4\3\0\2\4\1\267\3\4\1\0\11\4"+ + "\4\0\2\4\6\0\11\4\10\0\4\4\2\0\1\4"+ + "\3\0\6\4\1\0\1\267\10\4\4\0\2\4\6\0"+ + "\11\4\10\0\2\4\1\361\1\4\2\0\1\4\3\0"+ + "\6\4\1\0\11\4\4\0\2\4\6\0\11\4\10\0"+ + "\4\4\2\0\1\4\3\0\3\4\1\143\2\4\1\0"+ + "\11\4\4\0\2\4\6\0\1\100\10\4\10\0\4\4"+ + "\2\0\1\4\3\0\6\4\1\0\11\4\4\0\2\4"+ + "\6\0\3\4\1\362\1\4\1\100\3\4\10\0\4\4"+ + "\2\0\1\4\3\0\6\4\1\0\11\4\4\0\2\4"+ + "\6\0\10\4\1\363\10\0\4\4\2\0\1\4\3\0"+ + "\6\4\1\0\11\4\4\0\2\4\6\0\10\4\1\364"+ + "\10\0\4\4\2\0\1\4\3\0\6\4\1\0\11\4"+ + "\4\0\2\4\6\0\7\4\1\242\1\4\10\0\4\4"+ + "\2\0\1\4\3\0\6\4\1\0\11\4\4\0\2\4"+ + "\6\0\10\4\1\152\10\0\4\4\2\0\1\4\3\0"+ + "\6\4\1\0\11\4\4\0\2\4\6\0\4\4\1\365"+ + "\2\4\1\366\1\4\10\0\2\4\1\367\1\4\2\0"+ + "\1\4\3\0\4\4\1\326\1\4\1\0\1\4\1\370"+ + "\3\4\1\70\3\4\4\0\2\4\6\0\11\4\10\0"+ + "\4\4\2\0\1\4\3\0\6\4\1\0\1\4\1\70"+ + "\7\4\4\0\2\4\6\0\11\4\10\0\4\4\2\0"+ + "\1\4\3\0\6\4\1\0\7\4\1\371\1\4\4\0"+ + "\2\4\6\0\2\4\1\251\6\4\10\0\4\4\2\0"+ + "\1\4\3\0\6\4\1\0\11\4\4\0\2\4\6\0"+ + "\1\372\4\4\1\373\1\4\1\374\1\375\10\0\2\4"+ + "\1\376\1\4\2\0\1\4\3\0\6\4\1\0\11\4"+ + "\4\0\2\4\6\0\5\4\1\377\3\4\10\0\4\4"+ + "\2\0\1\4\3\0\6\4\1\0\11\4\4\0\2\4"+ + "\6\0\1\u0100\10\4\10\0\4\4\2\0\1\4\3\0"+ + "\6\4\1\0\11\4\4\0\2\4\6\0\2\4\1\u0101"+ + "\2\4\1\u0102\3\4\10\0\4\4\2\0\1\4\3\0"+ + "\6\4\1\0\11\4\4\0\2\4\6\0\3\4\1\u0103"+ + "\3\4\1\270\1\4\10\0\4\4\2\0\1\4\3\0"+ + "\6\4\1\0\11\4\4\0\2\4\6\0\11\4\10\0"+ + "\2\4\1\356\1\4\2\0\1\4\3\0\6\4\1\0"+ + "\11\4\4\0\2\4\6\0\1\u0104\2\4\1\u0105\1\4"+ + "\1\u0106\3\4\10\0\4\4\2\0\1\4\3\0\6\4"+ + "\1\0\11\4\4\0\2\4\6\0\1\111\10\4\10\0"+ + "\4\4\2\0\1\4\3\0\6\4\1\0\11\4\4\0"+ + "\2\4\6\0\10\4\1\u0107\10\0\4\4\2\0\1\4"+ + "\3\0\6\4\1\0\11\4\4\0\2\4\6\0\1\u0108"+ + "\10\4\10\0\4\4\2\0\1\4\3\0\6\4\1\0"+ + "\11\4\4\0\2\4\6\0\5\4\1\u0109\3\4\10\0"+ + "\4\4\2\0\1\4\3\0\6\4\1\0\11\4\4\0"+ + "\2\4\6\0\1\u010a\10\4\10\0\4\4\2\0\1\4"+ + "\3\0\6\4\1\0\11\4\4\0\2\4\6\0\11\4"+ + "\10\0\1\4\1\u010b\2\4\2\0\1\4\3\0\6\4"+ + "\1\0\11\4\4\0\2\4\6\0\4\4\1\u010c\4\4"+ + "\10\0\4\4\2\0\1\4\3\0\6\4\1\0\11\4"+ + "\4\0\2\4\6\0\11\4\10\0\4\4\2\0\1\4"+ + "\3\0\6\4\1\0\1\242\10\4\4\0\2\4\6\0"+ + "\10\4\1\u010d\10\0\2\4\1\u010e\1\4\2\0\1\4"+ + "\3\0\6\4\1\0\11\4\4\0\2\4\6\0\1\u010f"+ + "\10\4\10\0\4\4\2\0\1\4\3\0\6\4\1\0"+ + "\11\4\4\0\2\4\6\0\10\4\1\u0110\10\0\4\4"+ + "\2\0\1\4\3\0\6\4\1\0\11\4\4\0\2\4"+ + "\6\0\2\4\1\70\6\4\10\0\4\4\2\0\1\4"+ + "\3\0\6\4\1\0\11\4\4\0\2\4\6\0\11\4"+ + "\10\0\4\4\2\0\1\4\3\0\1\4\1\267\1\u0111"+ + "\3\4\1\0\11\4\4\0\2\4\6\0\4\4\1\70"+ + "\4\4\10\0\4\4\2\0\1\4\3\0\6\4\1\0"+ + "\11\4\4\0\2\4\6\0\3\4\1\u0112\5\4\10\0"+ + "\4\4\2\0\1\4\3\0\6\4\1\0\11\4\4\0"+ + "\2\4\6\0\1\u0113\1\u0114\1\251\1\4\1\330\4\4"+ + "\10\0\4\4\2\0\1\4\3\0\6\4\1\0\11\4"+ + "\4\0\2\4\6\0\11\4\10\0\4\4\2\0\1\4"+ + "\3\0\6\4\1\0\5\4\1\70\3\4\4\0\2\4"+ + "\6\0\1\244\10\4\10\0\4\4\2\0\1\4\3\0"+ + "\6\4\1\0\11\4\4\0\2\4\6\0\1\u0115\10\4"+ + "\10\0\4\4\2\0\1\4\3\0\6\4\1\0\11\4"+ + "\4\0\2\4\6\0\10\4\1\u0116\10\0\4\4\2\0"+ + "\1\4\3\0\6\4\1\0\11\4\4\0\2\4\6\0"+ + "\11\4\10\0\4\4\2\0\1\4\3\0\1\4\1\u0117"+ + "\4\4\1\0\11\4\4\0\2\4\6\0\10\4\1\70"+ + "\10\0\4\4\2\0\1\4\3\0\6\4\1\0\11\4"+ + "\4\0\2\4\6\0\5\4\1\104\3\4\10\0\4\4"+ + "\2\0\1\4\3\0\6\4\1\0\11\4\4\0\2\256"+ + "\6\0\11\256\10\0\4\256\2\0\1\256\3\0\6\256"+ + "\1\0\11\256\3\0\1\260\67\0\2\4\6\0\3\4"+ + "\1\324\5\4\10\0\4\4\2\0\1\4\3\0\6\4"+ + "\1\0\11\4\4\0\2\4\6\0\3\4\1\u0118\5\4"+ + "\10\0\4\4\2\0\1\4\3\0\6\4\1\0\11\4"+ + "\4\0\2\4\6\0\11\4\10\0\2\4\1\u0119\1\4"+ + "\2\0\1\4\3\0\6\4\1\0\11\4\4\0\2\4"+ + "\6\0\5\4\1\70\3\4\10\0\4\4\2\0\1\4"+ + "\3\0\6\4\1\0\11\4\4\0\2\4\6\0\10\4"+ + "\1\143\10\0\4\4\2\0\1\4\3\0\6\4\1\0"+ + "\11\4\4\0\2\4\6\0\3\4\1\u011a\5\4\10\0"+ + "\4\4\2\0\1\4\3\0\6\4\1\0\11\4\4\0"+ + "\2\4\6\0\11\4\10\0\4\4\2\0\1\4\3\0"+ + "\6\4\1\0\1\4\1\u011b\7\4\4\0\2\4\6\0"+ + "\10\4\1\267\10\0\4\4\2\0\1\4\3\0\6\4"+ + "\1\0\11\4\4\0\2\4\6\0\5\4\1\100\3\4"+ + "\10\0\4\4\2\0\1\4\3\0\6\4\1\0\11\4"+ + "\4\0\2\4\6\0\6\4\1\u011c\2\4\10\0\4\4"+ + "\2\0\1\4\3\0\6\4\1\0\11\4\4\0\2\4"+ + "\6\0\1\4\1\u011d\7\4\10\0\4\4\2\0\1\4"+ + "\3\0\6\4\1\0\11\4\4\0\2\4\6\0\4\4"+ + "\1\u011e\1\4\1\u011f\1\4\1\70\10\0\4\4\2\0"+ + "\1\4\3\0\6\4\1\0\11\4\4\0\2\4\6\0"+ + "\5\4\1\u0120\3\4\10\0\4\4\2\0\1\4\3\0"+ + "\6\4\1\0\11\4\4\0\2\4\6\0\5\4\1\u0121"+ + "\3\4\10\0\4\4\2\0\1\4\3\0\6\4\1\0"+ + "\11\4\4\0\2\4\6\0\11\4\10\0\1\4\1\u0122"+ + "\2\4\2\0\1\4\3\0\6\4\1\0\11\4\4\0"+ + "\2\4\6\0\10\4\1\u010c\10\0\4\4\2\0\1\4"+ + "\3\0\6\4\1\0\11\4\4\0\2\4\6\0\11\4"+ + "\10\0\4\4\2\0\1\4\3\0\2\4\1\100\3\4"+ + "\1\0\11\4\4\0\2\4\6\0\3\4\1\u0123\5\4"+ + "\10\0\4\4\2\0\1\4\3\0\6\4\1\0\11\4"+ + "\4\0\2\4\6\0\11\4\10\0\4\4\2\0\1\4"+ + "\3\0\4\4\1\u0124\1\4\1\0\11\4\4\0\2\4"+ + "\6\0\3\4\1\70\5\4\10\0\4\4\2\0\1\4"+ + "\3\0\6\4\1\0\11\4\4\0\2\4\6\0\6\4"+ + "\1\u0125\2\4\10\0\4\4\2\0\1\4\3\0\6\4"+ + "\1\0\11\4\4\0\2\4\6\0\1\4\1\70\7\4"+ + "\10\0\4\4\2\0\1\4\3\0\6\4\1\0\11\4"+ + "\4\0\2\4\6\0\11\4\10\0\2\4\1\u0126\1\4"+ + "\2\0\1\4\3\0\6\4\1\0\11\4\4\0\2\4"+ + "\6\0\6\4\1\104\2\4\10\0\4\4\2\0\1\4"+ + "\3\0\6\4\1\0\11\4\4\0\2\4\6\0\11\4"+ + "\10\0\1\4\1\70\2\4\2\0\1\4\3\0\6\4"+ + "\1\0\11\4\4\0\2\4\6\0\6\4\1\70\2\4"+ + "\10\0\4\4\2\0\1\4\3\0\6\4\1\0\11\4"+ + "\4\0\2\4\6\0\3\4\1\357\1\4\1\313\1\4"+ + "\1\u0127\1\4\10\0\4\4\2\0\1\4\3\0\1\4"+ + "\1\70\4\4\1\0\11\4\4\0\2\4\6\0\1\270"+ + "\10\4\10\0\4\4\2\0\1\4\3\0\6\4\1\0"+ + "\11\4\4\0\2\4\6\0\11\4\10\0\2\4\1\u0128"+ + "\1\4\2\0\1\4\3\0\6\4\1\0\11\4\4\0"+ + "\2\4\6\0\11\4\10\0\4\4\2\0\1\4\3\0"+ + "\6\4\1\0\1\4\1\u0129\7\4\4\0\2\4\6\0"+ + "\5\4\1\u012a\3\4\10\0\4\4\2\0\1\4\3\0"+ + "\6\4\1\0\11\4\4\0\2\4\6\0\7\4\1\u0115"+ + "\1\4\10\0\4\4\2\0\1\4\3\0\6\4\1\0"+ + "\11\4\4\0\2\4\6\0\11\4\10\0\4\4\2\0"+ + "\1\4\3\0\3\4\1\244\2\4\1\0\11\4\4\0"+ + "\2\4\6\0\11\4\10\0\4\4\2\0\1\4\3\0"+ + "\1\4\1\100\4\4\1\0\11\4\4\0\2\4\6\0"+ + "\3\4\1\u012b\5\4\10\0\4\4\2\0\1\4\3\0"+ + "\6\4\1\0\11\4\4\0\2\4\6\0\6\4\1\265"+ + "\2\4\10\0\4\4\2\0\1\4\3\0\6\4\1\0"+ + "\11\4\4\0\2\4\6\0\3\4\1\242\5\4\10\0"+ + "\4\4\2\0\1\4\3\0\6\4\1\0\11\4\4\0"+ + "\2\4\6\0\4\4\1\u012c\4\4\10\0\4\4\2\0"+ + "\1\4\3\0\6\4\1\0\11\4\4\0\2\4\6\0"+ + "\11\4\10\0\4\4\2\0\1\4\3\0\2\4\1\215"+ + "\3\4\1\0\11\4\4\0\2\4\6\0\5\4\1\u012d"+ + "\3\4\10\0\4\4\2\0\1\4\3\0\6\4\1\0"+ + "\11\4\4\0\2\4\6\0\7\4\1\254\1\4\10\0"+ + "\4\4\2\0\1\4\3\0\6\4\1\0\11\4\4\0"+ + "\2\4\6\0\3\4\1\u012e\5\4\10\0\4\4\2\0"+ + "\1\4\3\0\6\4\1\0\11\4\4\0\2\4\6\0"+ + "\1\4\1\311\7\4\10\0\4\4\2\0\1\4\3\0"+ + "\6\4\1\0\11\4\4\0\2\4\6\0\11\4\10\0"+ + "\4\4\2\0\1\4\3\0\1\4\1\114\4\4\1\0"+ + "\11\4\4\0\2\4\6\0\5\4\1\201\3\4\10\0"+ + "\4\4\2\0\1\4\3\0\6\4\1\0\11\4\4\0"+ + "\2\4\6\0\6\4\1\u012f\2\4\10\0\4\4\2\0"+ + "\1\4\3\0\6\4\1\0\11\4\4\0\2\4\6\0"+ + "\7\4\1\114\1\4\10\0\4\4\2\0\1\4\3\0"+ + "\6\4\1\0\11\4\4\0\2\4\6\0\1\4\1\104"+ + "\7\4\10\0\4\4\2\0\1\4\3\0\6\4\1\0"+ + "\11\4\4\0\2\4\6\0\11\4\10\0\4\4\2\0"+ + "\1\4\3\0\6\4\1\0\1\104\10\4\4\0\2\4"+ + "\6\0\11\4\10\0\2\4\1\u0130\1\4\2\0\1\4"+ + "\3\0\6\4\1\0\11\4\4\0\2\4\6\0\1\104"+ + "\10\4\10\0\4\4\2\0\1\4\3\0\6\4\1\0"+ + "\11\4\4\0\2\4\6\0\11\4\10\0\1\4\1\u0131"+ + "\2\4\2\0\1\4\3\0\6\4\1\0\11\4\4\0"+ + "\2\4\6\0\11\4\10\0\2\4\1\u0132\1\4\2\0"+ + "\1\4\3\0\6\4\1\0\11\4\4\0\2\4\6\0"+ + "\7\4\1\u0133\1\4\10\0\4\4\2\0\1\4\3\0"+ + "\6\4\1\0\11\4\4\0\2\4\6\0\3\4\1\u0134"+ + "\1\u011e\4\4\10\0\4\4\2\0\1\4\3\0\6\4"+ + "\1\0\11\4\4\0\2\4\6\0\1\u0135\10\4\10\0"+ + "\4\4\2\0\1\4\3\0\6\4\1\0\1\4\1\70"+ + "\7\4\4\0\2\4\6\0\5\4\1\u0136\3\4\10\0"+ + "\4\4\2\0\1\4\3\0\6\4\1\0\11\4\4\0"+ + "\2\4\6\0\6\4\1\152\2\4\10\0\4\4\2\0"+ + "\1\4\3\0\6\4\1\0\11\4\4\0\2\4\6\0"+ + "\11\4\10\0\4\4\2\0\1\4\3\0\1\4\1\104"+ + "\4\4\1\0\11\4\4\0\2\4\6\0\6\4\1\u0137"+ + "\2\4\10\0\4\4\2\0\1\4\3\0\6\4\1\0"+ + "\1\70\10\4\4\0\2\4\6\0\3\4\1\u0138\5\4"+ + "\10\0\4\4\2\0\1\4\3\0\6\4\1\0\11\4"+ + "\4\0\2\4\6\0\11\4\10\0\4\4\2\0\1\4"+ + "\3\0\2\4\1\u0139\3\4\1\0\11\4\4\0\2\4"+ + "\6\0\11\4\10\0\2\4\1\u013a\1\4\2\0\1\4"+ + "\3\0\6\4\1\0\11\4\4\0\2\4\6\0\11\4"+ + "\10\0\2\4\1\u013b\1\4\2\0\1\4\3\0\6\4"+ + "\1\0\11\4\4\0\2\4\6\0\1\114\10\4\10\0"+ + "\4\4\2\0\1\4\3\0\6\4\1\0\11\4\4\0"+ + "\2\4\6\0\2\4\1\u013c\6\4\10\0\4\4\2\0"+ + "\1\4\3\0\6\4\1\0\11\4\4\0\2\4\6\0"+ + "\11\4\10\0\4\4\2\0\1\4\3\0\2\4\1\u013d"+ + "\3\4\1\0\11\4\4\0\2\4\6\0\10\4\1\216"+ + "\10\0\4\4\2\0\1\4\3\0\6\4\1\0\11\4"+ + "\4\0\2\4\6\0\4\4\1\315\4\4\10\0\4\4"+ + "\2\0\1\4\3\0\6\4\1\0\11\4\4\0\2\4"+ + "\6\0\11\4\10\0\1\70\1\4\1\254\1\4\2\0"+ + "\1\4\3\0\6\4\1\0\11\4\4\0\2\4\6\0"+ + "\11\4\10\0\4\4\2\0\1\4\3\0\6\4\1\0"+ + "\6\4\1\u013e\2\4\4\0\2\4\6\0\11\4\10\0"+ + "\1\4\1\142\2\4\2\0\1\4\3\0\6\4\1\0"+ + "\1\4\1\267\7\4\4\0\2\4\6\0\5\4\1\104"+ + "\3\4\10\0\4\4\2\0\1\4\3\0\1\323\5\4"+ + "\1\0\11\4\4\0\2\4\6\0\1\314\10\4\10\0"+ + "\4\4\2\0\1\4\3\0\6\4\1\0\11\4\4\0"+ + "\2\4\6\0\11\4\10\0\4\4\2\0\1\4\3\0"+ + "\1\4\1\u013f\4\4\1\0\11\4\4\0\2\4\6\0"+ + "\11\4\10\0\4\4\2\0\1\4\3\0\6\4\1\0"+ + "\1\4\1\346\7\4\4\0\2\4\6\0\5\4\1\u0140"+ + "\3\4\10\0\4\4\2\0\1\4\3\0\6\4\1\0"+ + "\11\4\4\0\2\4\6\0\4\4\1\u0140\4\4\10\0"+ + "\4\4\2\0\1\4\3\0\6\4\1\0\11\4\4\0"+ + "\2\4\6\0\11\4\10\0\4\4\2\0\1\4\3\0"+ + "\2\4\1\u0111\3\4\1\0\11\4\4\0\2\4\6\0"+ + "\6\4\1\152\2\4\10\0\1\4\1\267\2\4\2\0"+ + "\1\4\3\0\6\4\1\0\11\4\4\0\2\4\6\0"+ + "\7\4\1\u0141\1\4\10\0\4\4\2\0\1\4\3\0"+ + "\6\4\1\0\11\4\4\0\2\4\6\0\11\4\10\0"+ + "\4\4\2\0\1\4\3\0\1\4\1\u0142\4\4\1\0"+ + "\11\4\4\0\2\4\6\0\5\4\1\u013b\3\4\10\0"+ + "\4\4\2\0\1\4\3\0\1\70\5\4\1\0\11\4"+ + "\4\0\2\4\6\0\11\4\10\0\4\4\2\0\1\4"+ + "\3\0\6\4\1\0\1\u0143\10\4\4\0\2\4\6\0"+ + "\7\4\1\143\1\4\10\0\4\4\2\0\1\4\3\0"+ + "\6\4\1\0\11\4\4\0\2\4\6\0\11\4\10\0"+ + "\1\4\1\u0144\2\4\2\0\1\4\3\0\6\4\1\0"+ + "\11\4\4\0\2\4\6\0\11\4\10\0\1\4\1\u0145"+ + "\2\4\2\0\1\4\3\0\6\4\1\0\11\4\4\0"+ + "\2\4\6\0\11\4\10\0\3\4\1\70\2\0\1\4"+ + "\3\0\6\4\1\0\11\4\4\0\2\4\6\0\10\4"+ + "\1\u0146\10\0\2\4\1\267\1\4\2\0\1\4\3\0"+ + "\6\4\1\0\11\4\4\0\2\4\6\0\11\4\10\0"+ + "\4\4\2\0\1\4\3\0\1\u0147\5\4\1\0\11\4"+ + "\4\0\2\4\6\0\4\4\1\u0148\4\4\10\0\4\4"+ + "\2\0\1\4\3\0\6\4\1\0\11\4\4\0\2\4"+ + "\6\0\11\4\10\0\4\4\2\0\1\4\3\0\1\242"+ + "\5\4\1\0\11\4\4\0\2\4\6\0\4\4\1\104"+ + "\4\4\10\0\4\4\2\0\1\4\3\0\6\4\1\0"+ + "\11\4\4\0\2\4\6\0\3\4\1\u0149\5\4\10\0"+ + "\4\4\2\0\1\4\3\0\6\4\1\0\11\4\4\0"+ + "\2\4\6\0\10\4\1\u014a\10\0\4\4\2\0\1\4"+ + "\3\0\6\4\1\0\11\4\4\0\2\4\6\0\1\u014b"+ + "\10\4\10\0\4\4\2\0\1\4\3\0\6\4\1\0"+ + "\11\4\4\0\2\4\6\0\11\4\10\0\4\4\2\0"+ + "\1\4\3\0\1\4\1\70\4\4\1\0\11\4\4\0"+ + "\2\4\6\0\11\4\10\0\2\4\1\u011b\1\4\2\0"+ + "\1\4\3\0\6\4\1\0\11\4\4\0\2\4\6\0"+ + "\11\4\10\0\3\4\1\254\2\0\1\4\3\0\6\4"+ + "\1\0\11\4\4\0\2\4\6\0\4\4\1\u014c\4\4"+ + "\10\0\4\4\2\0\1\4\3\0\6\4\1\0\11\4"+ + "\4\0\2\4\6\0\7\4\1\u012d\1\4\10\0\4\4"+ + "\2\0\1\4\3\0\6\4\1\0\11\4\4\0\2\4"+ + "\6\0\11\4\10\0\4\4\2\0\1\4\3\0\1\4"+ + "\1\u014d\4\4\1\0\11\4\4\0\2\4\6\0\7\4"+ + "\1\104\1\4\10\0\4\4\2\0\1\4\3\0\6\4"+ + "\1\0\11\4\4\0\2\4\6\0\11\4\10\0\2\4"+ + "\1\u014e\1\4\2\0\1\4\3\0\6\4\1\0\11\4"+ + "\4\0\2\4\6\0\11\4\10\0\4\4\2\0\1\4"+ + "\3\0\6\4\1\0\3\4\1\70\5\4\4\0\2\4"+ + "\6\0\7\4\1\u014f\1\4\10\0\4\4\2\0\1\4"+ + "\3\0\6\4\1\0\11\4\4\0\2\4\6\0\3\4"+ + "\1\u0150\5\4\10\0\4\4\2\0\1\4\3\0\6\4"+ + "\1\0\11\4\4\0\2\4\6\0\10\4\1\u0151\10\0"+ + "\4\4\2\0\1\4\3\0\6\4\1\0\11\4\4\0"+ + "\2\4\6\0\7\4\1\u0152\1\4\10\0\4\4\2\0"+ + "\1\4\3\0\6\4\1\0\11\4\4\0\2\4\6\0"+ + "\3\4\1\u0153\5\4\10\0\4\4\2\0\1\4\3\0"+ + "\6\4\1\0\11\4\4\0\2\4\6\0\11\4\10\0"+ + "\1\4\1\267\2\4\2\0\1\4\3\0\6\4\1\0"+ + "\11\4\4\0\2\4\6\0\3\4\1\u0154\5\4\10\0"+ + "\4\4\2\0\1\4\3\0\6\4\1\0\11\4\4\0"+ + "\2\4\6\0\4\4\1\242\4\4\10\0\4\4\2\0"+ + "\1\4\3\0\6\4\1\0\11\4\4\0\2\4\6\0"+ + "\1\u0155\10\4\10\0\4\4\2\0\1\4\3\0\6\4"+ + "\1\0\11\4\4\0\2\4\6\0\7\4\1\u0127\1\4"+ + "\10\0\4\4\2\0\1\4\3\0\6\4\1\0\11\4"+ + "\4\0\2\4\6\0\3\4\1\104\5\4\10\0\4\4"+ + "\2\0\1\4\3\0\6\4\1\0\11\4\4\0\2\4"+ + "\6\0\11\4\10\0\2\4\1\u0156\1\4\2\0\1\4"+ + "\3\0\6\4\1\0\11\4\4\0\2\4\6\0\11\4"+ + "\10\0\1\4\1\314\2\4\2\0\1\4\3\0\6\4"+ + "\1\0\11\4\4\0\2\4\6\0\11\4\10\0\4\4"+ + "\2\0\1\4\3\0\6\4\1\0\1\u0157\10\4\4\0"+ + "\2\4\6\0\7\4\1\111\1\4\10\0\4\4\2\0"+ + "\1\4\3\0\6\4\1\0\11\4\4\0\2\4\6\0"+ + "\2\4\1\264\6\4\10\0\4\4\2\0\1\4\3\0"+ + "\6\4\1\0\11\4\4\0\2\4\6\0\1\u0158\10\4"+ + "\10\0\4\4\2\0\1\4\3\0\6\4\1\0\11\4"+ + "\4\0\2\4\6\0\7\4\1\u0159\1\4\10\0\4\4"+ + "\2\0\1\4\3\0\6\4\1\0\11\4\4\0\2\4"+ + "\6\0\11\4\10\0\1\4\1\70\1\267\1\4\2\0"+ + "\1\4\3\0\6\4\1\0\11\4\4\0\2\4\6\0"+ + "\11\4\10\0\4\4\2\0\1\4\3\0\2\4\1\104"+ + "\3\4\1\0\11\4\4\0\2\4\6\0\4\4\1\u015a"+ + "\4\4\10\0\4\4\2\0\1\4\3\0\6\4\1\0"+ + "\11\4\4\0\2\4\6\0\5\4\1\u015b\3\4\10\0"+ + "\4\4\2\0\1\4\3\0\6\4\1\0\11\4\4\0"+ + "\2\4\6\0\11\4\10\0\4\4\2\0\1\4\3\0"+ + "\6\4\1\0\1\u015c\10\4\4\0\2\4\6\0\11\4"+ + "\10\0\4\4\2\0\1\4\3\0\6\4\1\0\1\254"+ + "\10\4\4\0\2\4\6\0\3\4\1\u015d\5\4\10\0"+ + "\4\4\2\0\1\4\3\0\6\4\1\0\11\4\4\0"+ + "\2\4\6\0\4\4\1\u011e\4\4\10\0\4\4\2\0"+ + "\1\4\3\0\6\4\1\0\11\4\4\0\2\4\6\0"+ + "\3\4\1\u015e\5\4\10\0\4\4\2\0\1\4\3\0"+ + "\6\4\1\0\11\4\4\0\2\4\6\0\11\4\10\0"+ + "\4\4\2\0\1\4\3\0\1\4\1\244\4\4\1\0"+ + "\11\4\4\0\2\4\6\0\11\4\10\0\4\4\2\0"+ + "\1\4\3\0\6\4\1\0\1\u015f\10\4\4\0\2\4"+ + "\6\0\7\4\1\u0160\1\70\10\0\4\4\2\0\1\4"+ + "\3\0\6\4\1\0\1\4\1\330\7\4\4\0\2\4"+ + "\6\0\6\4\1\u0161\2\4\10\0\4\4\2\0\1\4"+ + "\3\0\6\4\1\0\11\4\4\0\2\4\6\0\11\4"+ + "\10\0\4\4\2\0\1\4\3\0\6\4\1\0\1\4"+ + "\1\u0162\7\4\4\0\2\4\6\0\5\4\1\u0163\3\4"+ + "\10\0\4\4\2\0\1\4\3\0\6\4\1\0\11\4"+ + "\4\0\2\4\6\0\11\4\10\0\4\4\2\0\1\4"+ + "\3\0\6\4\1\0\2\4\1\70\6\4\4\0\2\4"+ + "\6\0\11\4\10\0\2\4\1\250\1\4\2\0\1\4"+ + "\3\0\6\4\1\0\11\4\4\0\2\4\6\0\11\4"+ + "\10\0\4\4\2\0\1\4\3\0\3\4\1\242\2\4"+ + "\1\0\11\4\4\0\2\4\6\0\6\4\1\u0164\2\4"+ + "\10\0\4\4\2\0\1\4\3\0\6\4\1\0\11\4"+ + "\4\0\2\4\6\0\11\4\10\0\2\4\1\u0165\1\4"+ + "\2\0\1\4\3\0\6\4\1\0\11\4\4\0\2\4"+ + "\6\0\11\4\10\0\1\4\1\254\2\4\2\0\1\4"+ + "\3\0\6\4\1\0\11\4\4\0\2\4\6\0\3\4"+ + "\1\u0166\5\4\10\0\4\4\2\0\1\4\3\0\6\4"+ + "\1\0\11\4\4\0\2\4\6\0\1\4\1\307\7\4"+ + "\10\0\4\4\2\0\1\4\3\0\6\4\1\0\11\4"+ + "\4\0\2\4\6\0\1\4\1\u0167\7\4\10\0\4\4"+ + "\2\0\1\4\3\0\6\4\1\0\11\4\4\0\2\4"+ + "\6\0\1\u0168\10\4\10\0\4\4\2\0\1\4\3\0"+ + "\6\4\1\0\11\4\4\0\2\4\6\0\11\4\10\0"+ + "\4\4\2\0\1\4\3\0\6\4\1\0\1\4\1\267"+ + "\7\4\4\0\2\4\6\0\11\4\10\0\1\4\1\u0169"+ + "\2\4\2\0\1\4\3\0\6\4\1\0\11\4\4\0"+ + "\2\4\6\0\6\4\1\u016a\2\4\10\0\4\4\2\0"+ + "\1\4\3\0\6\4\1\0\11\4\4\0\2\4\6\0"+ + "\11\4\10\0\4\4\2\0\1\4\3\0\1\4\1\267"+ + "\4\4\1\0\11\4\4\0\2\4\6\0\11\4\10\0"+ + "\4\4\2\0\1\4\3\0\5\4\1\304\1\0\11\4"+ + "\4\0\2\4\6\0\3\4\1\314\5\4\10\0\4\4"+ + "\2\0\1\4\3\0\6\4\1\0\11\4\4\0\2\4"+ + "\6\0\4\4\1\u016a\4\4\10\0\4\4\2\0\1\4"+ + "\3\0\6\4\1\0\11\4\4\0\2\4\6\0\7\4"+ + "\1\u016b\1\4\10\0\4\4\2\0\1\4\3\0\6\4"+ + "\1\0\11\4\4\0\2\4\6\0\3\4\1\254\5\4"+ + "\10\0\4\4\2\0\1\4\3\0\6\4\1\0\11\4"+ + "\4\0\2\4\6\0\4\4\1\143\4\4\10\0\4\4"+ + "\2\0\1\4\3\0\6\4\1\0\11\4\4\0\2\4"+ + "\6\0\6\4\1\u016c\2\4\10\0\4\4\2\0\1\4"+ + "\3\0\6\4\1\0\11\4\4\0\2\4\6\0\11\4"+ + "\10\0\2\4\1\u016d\1\4\2\0\1\4\3\0\6\4"+ + "\1\0\11\4\4\0\2\4\6\0\11\4\10\0\4\4"+ + "\2\0\1\4\3\0\1\4\1\u016e\4\4\1\0\11\4"+ + "\4\0\2\4\6\0\11\4\10\0\2\4\1\254\1\4"+ + "\2\0\1\4\3\0\6\4\1\0\11\4\4\0\2\4"+ + "\6\0\11\4\10\0\4\4\2\0\1\4\3\0\1\4"+ + "\1\200\4\4\1\0\11\4\4\0\2\4\6\0\4\4"+ + "\1\u016f\4\4\10\0\4\4\2\0\1\4\3\0\6\4"+ + "\1\0\11\4\4\0\2\4\6\0\2\4\1\242\6\4"+ + "\10\0\4\4\2\0\1\4\3\0\6\4\1\0\11\4"+ + "\4\0\2\4\6\0\3\4\1\u0170\5\4\10\0\4\4"+ + "\2\0\1\4\3\0\6\4\1\0\11\4\4\0\2\4"+ + "\6\0\1\70\10\4\10\0\4\4\2\0\1\4\3\0"+ + "\6\4\1\0\11\4\4\0\2\4\6\0\1\254\10\4"+ + "\10\0\4\4\2\0\1\4\3\0\6\4\1\0\11\4"+ + "\4\0\2\4\6\0\11\4\10\0\4\4\2\0\1\4"+ + "\3\0\1\143\5\4\1\0\11\4\4\0\2\4\6\0"+ + "\1\4\1\70\3\4\1\u0171\1\u0172\2\4\10\0\4\4"+ + "\2\0\1\4\3\0\6\4\1\0\11\4\4\0\2\4"+ + "\6\0\1\4\1\254\7\4\10\0\4\4\2\0\1\4"+ + "\3\0\6\4\1\0\11\4\4\0\2\4\6\0\1\u010c"+ + "\10\4\10\0\4\4\2\0\1\4\3\0\6\4\1\0"+ + "\11\4\4\0\2\4\6\0\3\4\1\244\5\4\10\0"+ + "\4\4\2\0\1\4\3\0\6\4\1\0\11\4\4\0"+ + "\2\4\6\0\3\4\1\u0173\5\4\10\0\4\4\2\0"+ + "\1\4\3\0\6\4\1\0\11\4\4\0\2\4\6\0"+ + "\11\4\10\0\4\4\2\0\1\4\3\0\2\4\1\267"+ + "\3\4\1\0\11\4\4\0\2\4\6\0\11\4\10\0"+ + "\4\4\2\0\1\4\3\0\4\4\1\70\1\4\1\0"+ + "\11\4\4\0\2\4\6\0\11\4\10\0\2\4\1\314"+ + "\1\4\2\0\1\4\3\0\1\u0174\5\4\1\0\11\4"+ + "\4\0\2\4\6\0\2\4\1\70\6\4\10\0\1\70"+ + "\3\4\2\0\1\4\3\0\6\4\1\0\11\4\4\0"+ + "\2\4\6\0\3\4\1\u0175\5\4\10\0\4\4\2\0"+ + "\1\4\3\0\6\4\1\0\11\4\4\0\2\4\6\0"+ + "\11\4\10\0\1\4\1\200\2\4\2\0\1\4\3\0"+ + "\6\4\1\0\11\4\4\0\2\4\6\0\2\4\1\267"+ + "\6\4\10\0\4\4\2\0\1\4\3\0\6\4\1\0"+ + "\11\4\4\0\2\4\6\0\4\4\1\247\4\4\10\0"+ + "\4\4\2\0\1\4\3\0\6\4\1\0\11\4\4\0"+ + "\2\4\6\0\7\4\1\100\1\4\10\0\4\4\2\0"+ + "\1\4\3\0\6\4\1\0\11\4\4\0\2\4\6\0"+ + "\11\4\10\0\4\4\2\0\1\4\3\0\1\4\1\254"+ + "\4\4\1\0\11\4\4\0\2\4\6\0\5\4\1\77"+ + "\3\4\10\0\4\4\2\0\1\4\3\0\6\4\1\0"+ + "\11\4\4\0\2\4\6\0\11\4\10\0\4\4\2\0"+ + "\1\4\3\0\2\4\1\111\3\4\1\0\11\4\1\0"; + + private static int [] zzUnpackTrans() { + int [] result = new int[19250]; + 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\21\1\1\11\1\1\4\11\6\1\1\11"+ + "\21\1\1\11\1\1\3\0\72\1\1\0\1\11\1\1"+ + "\2\0\72\1\2\11\1\1\1\11\64\1\1\11\215\1"; + + private static int [] zzUnpackAttribute() { + int [] result = new int[373]; + 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[] = new char[ZZ_BUFFERSIZE]; + + /** 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; + + /** number of newlines encountered up to the start of the matched text */ + private int yyline; + + /** the number of characters up to the start of the matched text */ + private int yychar; + + /** + * the number of characters from the last newline up to the start of the + * matched text + */ + private int yycolumn; + + /** + * 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; + + /** denotes if the user-EOF-code has already been executed */ + private boolean zzEOFDone; + + /* user code: */ + /** + * Create an empty lexer, yyrset will be called later to reset and assign + * the reader + */ + public BashLexer() { + super(); + } + + private static final byte PARAN = 1; + private static final byte BRACKET = 2; + private static final byte CURLY = 3; + private static final byte DO = 4; + private static final byte CASE = 5; + private static final byte IF = 5; + private static final byte INT_EXPR = 6; + + @Override + public int yychar() { + return yychar; + } + + + + /** + * 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 BashLexer(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 BashLexer(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 < 144) { + int count = packed.charAt(i++); + char value = packed.charAt(i++); + do map[j++] = value; while (--count > 0); + } + return map; + } + + + /** + * Refills the input buffer. + * + * @return false, iff there was new input. + * + * @exception java.io.IOException if any I/O-Error occurs + */ + private boolean zzRefill() throws java.io.IOException { + + /* first: make room (if you can) */ + if (zzStartRead > 0) { + System.arraycopy(zzBuffer, zzStartRead, + zzBuffer, 0, + zzEndRead-zzStartRead); + + /* translate stored positions */ + zzEndRead-= zzStartRead; + zzCurrentPos-= zzStartRead; + zzMarkedPos-= zzStartRead; + zzStartRead = 0; + } + + /* is the buffer big enough? */ + if (zzCurrentPos >= zzBuffer.length) { + /* if not: blow it up */ + char newBuffer[] = new char[zzCurrentPos*2]; + System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); + zzBuffer = newBuffer; + } + + /* finally: fill the buffer with new input */ + int numRead = zzReader.read(zzBuffer, zzEndRead, + zzBuffer.length-zzEndRead); + + if (numRead > 0) { + zzEndRead+= numRead; + return false; + } + // unlikely but not impossible: read 0 characters, but not at end of stream + if (numRead == 0) { + int c = zzReader.read(); + if (c == -1) { + return true; + } else { + zzBuffer[zzEndRead++] = (char) c; + return false; + } + } + + // numRead < 0 + return true; + } + + + /** + * 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(); + } + + + /** + * 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 ZZ_INITIAL. + * + * @param reader the new input stream + */ + public final void yyreset(java.io.Reader reader) { + zzReader = reader; + zzAtBOL = true; + zzAtEOF = false; + zzEOFDone = false; + zzEndRead = zzStartRead = 0; + zzCurrentPos = zzMarkedPos = 0; + yyline = yychar = yycolumn = 0; + zzLexicalState = YYINITIAL; + } + + + /** + * Returns the current lexical state. + */ + public final int yystate() { + return zzLexicalState; + } + + + /** + * Enters a new lexical state + * + * @param newState the new lexical state + */ + 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 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; + + yychar+= zzMarkedPosL-zzStartRead; + + zzAction = -1; + + zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; + + 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 5: + { return token(TokenType.OPERATOR, -PARAN); + } + case 24: break; + case 10: + { return token(TokenType.KEYWORD); + } + case 25: break; + case 3: + { return token(TokenType.OPERATOR); + } + case 26: break; + case 6: + { return token(TokenType.OPERATOR, CURLY); + } + case 27: break; + case 7: + { return token(TokenType.OPERATOR, -CURLY); + } + case 28: break; + case 20: + { return token(TokenType.KEYWORD, INT_EXPR); + } + case 29: break; + case 18: + { return token(TokenType.STRING); + } + case 30: break; + case 17: + { return token(TokenType.TYPE); + } + case 31: break; + case 12: + { return token(TokenType.COMMENT2); + } + case 32: break; + case 1: + { /* skip */ + } + case 33: break; + case 9: + { return token(TokenType.OPERATOR, -BRACKET); + } + case 34: break; + case 4: + { return token(TokenType.OPERATOR, PARAN); + } + case 35: break; + case 13: + { return token(TokenType.KEYWORD, IF); + } + case 36: break; + case 2: + { return token(TokenType.IDENTIFIER); + } + case 37: break; + case 14: + { return token(TokenType.KEYWORD, -IF); + } + case 38: break; + case 16: + { return token(TokenType.KEYWORD, -INT_EXPR); + } + case 39: break; + case 23: + { return token(TokenType.KEYWORD, CASE); + } + case 40: break; + case 8: + { return token(TokenType.OPERATOR, BRACKET); + } + case 41: break; + case 22: + { return token(TokenType.KEYWORD, -CASE); + } + case 42: break; + case 11: + { return token(TokenType.COMMENT); + } + case 43: break; + case 15: + { return token(TokenType.KEYWORD, DO); + } + case 44: break; + case 21: + { return token(TokenType.KEYWORD, -DO); + } + case 45: break; + case 19: + { return token(TokenType.STRING2); + } + case 46: break; + default: + if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { + zzAtEOF = true; + { + return null; + } + } + else { + zzScanError(ZZ_NO_MATCH); + } + } + } + } + + +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/CLexer.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/CLexer.java new file mode 100644 index 000000000..612f1bfad --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/CLexer.java @@ -0,0 +1,973 @@ +/* The following code was generated by JFlex 1.4.3 on 21.7.10 18:14 */ + +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * Copyright 2006 Arnout Engelen . + * Copyright 2000-2006 Omnicore Software, Hans Kratz & Dennis Strein GbR, + * Geert Bevin . + * Distributed under the terms of either: + * - the common development and distribution license (CDDL), v1.0; or + * - the GNU Lesser General Public License, v2.1 or later + */ +package jsyntaxpane.lexers; + + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + + +/** + * This class is a scanner generated by + * JFlex 1.4.3 + * on 21.7.10 18:14 from the specification file + * D:/Dokumenty/Programovani/JavaSE/JPSWFDec/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/c.flex + */ +public final class CLexer extends DefaultJFlexLexer { + + /** This character denotes the end of file */ + public static final int YYEOF = -1; + + /** initial size of the lookahead buffer */ + private static final int ZZ_BUFFERSIZE = 16384; + + /** 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, 0 + }; + + /** + * Translates characters to character classes + */ + private static final String ZZ_CMAP_PACKED = + "\11\11\1\3\1\2\1\0\1\3\1\1\16\11\4\0\1\3\1\67"+ + "\1\56\1\6\1\7\1\67\1\67\1\60\1\61\1\62\1\5\1\34"+ + "\1\67\1\34\1\31\1\4\1\14\7\21\2\12\1\67\1\67\1\71"+ + "\1\67\1\70\1\67\1\0\3\20\1\27\1\33\1\27\5\13\1\25"+ + "\10\13\1\23\2\13\1\16\2\13\1\65\1\57\1\66\1\67\1\10"+ + "\1\0\1\37\1\35\1\17\1\30\1\32\1\26\1\47\1\43\1\46"+ + "\1\7\1\40\1\24\1\50\1\45\1\44\1\54\1\7\1\36\1\41"+ + "\1\42\1\22\1\55\1\53\1\15\1\51\1\52\1\63\1\67\1\64"+ + "\1\67\41\11\2\0\4\7\4\0\1\7\2\0\1\11\7\0\1\7"+ + "\4\0\1\7\5\0\27\7\1\0\37\7\1\0\u013f\7\31\0\162\7"+ + "\4\0\14\7\16\0\5\7\11\0\1\7\21\0\130\11\5\0\23\11"+ + "\12\0\1\7\13\0\1\7\1\0\3\7\1\0\1\7\1\0\24\7"+ + "\1\0\54\7\1\0\46\7\1\0\5\7\4\0\202\7\1\0\4\11"+ + "\3\0\105\7\1\0\46\7\2\0\2\7\6\0\20\7\41\0\46\7"+ + "\2\0\1\7\7\0\47\7\11\0\21\11\1\0\27\11\1\0\3\11"+ + "\1\0\1\11\1\0\2\11\1\0\1\11\13\0\33\7\5\0\3\7"+ + "\15\0\4\11\14\0\6\11\13\0\32\7\5\0\13\7\16\11\7\0"+ + "\12\11\4\0\2\7\1\11\143\7\1\0\1\7\10\11\1\0\6\11"+ + "\2\7\2\11\1\0\4\11\2\7\12\11\3\7\2\0\1\7\17\0"+ + "\1\11\1\7\1\11\36\7\33\11\2\0\3\7\60\0\46\7\13\11"+ + "\1\7\u014f\0\3\11\66\7\2\0\1\11\1\7\20\11\2\0\1\7"+ + "\4\11\3\0\12\7\2\11\2\0\12\11\21\0\3\11\1\0\10\7"+ + "\2\0\2\7\2\0\26\7\1\0\7\7\1\0\1\7\3\0\4\7"+ + "\2\0\1\11\1\7\7\11\2\0\2\11\2\0\3\11\11\0\1\11"+ + "\4\0\2\7\1\0\3\7\2\11\2\0\12\11\4\7\15\0\3\11"+ + "\1\0\6\7\4\0\2\7\2\0\26\7\1\0\7\7\1\0\2\7"+ + "\1\0\2\7\1\0\2\7\2\0\1\11\1\0\5\11\4\0\2\11"+ + "\2\0\3\11\13\0\4\7\1\0\1\7\7\0\14\11\3\7\14\0"+ + "\3\11\1\0\11\7\1\0\3\7\1\0\26\7\1\0\7\7\1\0"+ + "\2\7\1\0\5\7\2\0\1\11\1\7\10\11\1\0\3\11\1\0"+ + "\3\11\2\0\1\7\17\0\2\7\2\11\2\0\12\11\1\0\1\7"+ + "\17\0\3\11\1\0\10\7\2\0\2\7\2\0\26\7\1\0\7\7"+ + "\1\0\2\7\1\0\5\7\2\0\1\11\1\7\6\11\3\0\2\11"+ + "\2\0\3\11\10\0\2\11\4\0\2\7\1\0\3\7\4\0\12\11"+ + "\1\0\1\7\20\0\1\11\1\7\1\0\6\7\3\0\3\7\1\0"+ + "\4\7\3\0\2\7\1\0\1\7\1\0\2\7\3\0\2\7\3\0"+ + "\3\7\3\0\10\7\1\0\3\7\4\0\5\11\3\0\3\11\1\0"+ + "\4\11\11\0\1\11\17\0\11\11\11\0\1\7\7\0\3\11\1\0"+ + "\10\7\1\0\3\7\1\0\27\7\1\0\12\7\1\0\5\7\4\0"+ + "\7\11\1\0\3\11\1\0\4\11\7\0\2\11\11\0\2\7\4\0"+ + "\12\11\22\0\2\11\1\0\10\7\1\0\3\7\1\0\27\7\1\0"+ + "\12\7\1\0\5\7\2\0\1\11\1\7\7\11\1\0\3\11\1\0"+ + "\4\11\7\0\2\11\7\0\1\7\1\0\2\7\4\0\12\11\22\0"+ + "\2\11\1\0\10\7\1\0\3\7\1\0\27\7\1\0\20\7\4\0"+ + "\6\11\2\0\3\11\1\0\4\11\11\0\1\11\10\0\2\7\4\0"+ + "\12\11\22\0\2\11\1\0\22\7\3\0\30\7\1\0\11\7\1\0"+ + "\1\7\2\0\7\7\3\0\1\11\4\0\6\11\1\0\1\11\1\0"+ + "\10\11\22\0\2\11\15\0\60\7\1\11\2\7\7\11\4\0\10\7"+ + "\10\11\1\0\12\11\47\0\2\7\1\0\1\7\2\0\2\7\1\0"+ + "\1\7\2\0\1\7\6\0\4\7\1\0\7\7\1\0\3\7\1\0"+ + "\1\7\1\0\1\7\2\0\2\7\1\0\4\7\1\11\2\7\6\11"+ + "\1\0\2\11\1\7\2\0\5\7\1\0\1\7\1\0\6\11\2\0"+ + "\12\11\2\0\2\7\42\0\1\7\27\0\2\11\6\0\12\11\13\0"+ + "\1\11\1\0\1\11\1\0\1\11\4\0\2\11\10\7\1\0\42\7"+ + "\6\0\24\11\1\0\2\11\4\7\4\0\10\11\1\0\44\11\11\0"+ + "\1\11\71\0\42\7\1\0\5\7\1\0\2\7\1\0\7\11\3\0"+ + "\4\11\6\0\12\11\6\0\6\7\4\11\106\0\46\7\12\0\51\7"+ + "\7\0\132\7\5\0\104\7\5\0\122\7\6\0\7\7\1\0\77\7"+ + "\1\0\1\7\1\0\4\7\2\0\7\7\1\0\1\7\1\0\4\7"+ + "\2\0\47\7\1\0\1\7\1\0\4\7\2\0\37\7\1\0\1\7"+ + "\1\0\4\7\2\0\7\7\1\0\1\7\1\0\4\7\2\0\7\7"+ + "\1\0\7\7\1\0\27\7\1\0\37\7\1\0\1\7\1\0\4\7"+ + "\2\0\7\7\1\0\47\7\1\0\23\7\16\0\11\11\56\0\125\7"+ + "\14\0\u026c\7\2\0\10\7\12\0\32\7\5\0\113\7\3\0\3\7"+ + "\17\0\15\7\1\0\4\7\3\11\13\0\22\7\3\11\13\0\22\7"+ + "\2\11\14\0\15\7\1\0\3\7\1\0\2\11\14\0\64\7\40\11"+ + "\3\0\1\7\3\0\2\7\1\11\2\0\12\11\41\0\3\11\2\0"+ + "\12\11\6\0\130\7\10\0\51\7\1\11\126\0\35\7\3\0\14\11"+ + "\4\0\14\11\12\0\12\11\36\7\2\0\5\7\u038b\0\154\7\224\0"+ + "\234\7\4\0\132\7\6\0\26\7\2\0\6\7\2\0\46\7\2\0"+ + "\6\7\2\0\10\7\1\0\1\7\1\0\1\7\1\0\1\7\1\0"+ + "\37\7\2\0\65\7\1\0\7\7\1\0\1\7\3\0\3\7\1\0"+ + "\7\7\3\0\4\7\2\0\6\7\4\0\15\7\5\0\3\7\1\0"+ + "\7\7\17\0\4\11\32\0\5\11\20\0\2\7\23\0\1\7\13\0"+ + "\4\11\6\0\6\11\1\0\1\7\15\0\1\7\40\0\22\7\36\0"+ + "\15\11\4\0\1\11\3\0\6\11\27\0\1\7\4\0\1\7\2\0"+ + "\12\7\1\0\1\7\3\0\5\7\6\0\1\7\1\0\1\7\1\0"+ + "\1\7\1\0\4\7\1\0\3\7\1\0\7\7\3\0\3\7\5\0"+ + "\5\7\26\0\44\7\u0e81\0\3\7\31\0\11\7\6\11\1\0\5\7"+ + "\2\0\5\7\4\0\126\7\2\0\2\11\2\0\3\7\1\0\137\7"+ + "\5\0\50\7\4\0\136\7\21\0\30\7\70\0\20\7\u0200\0\u19b6\7"+ + "\112\0\u51a6\7\132\0\u048d\7\u0773\0\u2ba4\7\u215c\0\u012e\7\2\0\73\7"+ + "\225\0\7\7\14\0\5\7\5\0\1\7\1\11\12\7\1\0\15\7"+ + "\1\0\5\7\1\0\1\7\1\0\2\7\1\0\2\7\1\0\154\7"+ + "\41\0\u016b\7\22\0\100\7\2\0\66\7\50\0\15\7\3\0\20\11"+ + "\20\0\4\11\17\0\2\7\30\0\3\7\31\0\1\7\6\0\5\7"+ + "\1\0\207\7\2\0\1\11\4\0\1\7\13\0\12\11\7\0\32\7"+ + "\4\0\1\7\1\0\32\7\12\0\132\7\3\0\6\7\2\0\6\7"+ + "\2\0\6\7\2\0\3\7\3\0\2\7\3\0\2\7\22\0\3\11"+ + "\4\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\3\2\2\3\3\2\2\4\5\2\1\3"+ + "\13\2\2\1\1\5\1\6\1\7\1\10\1\11\1\12"+ + "\2\3\1\13\1\0\1\2\6\0\7\4\1\0\1\2"+ + "\4\4\13\2\1\14\21\2\1\14\7\2\1\0\1\15"+ + "\3\0\2\13\11\0\1\16\3\0\1\4\1\0\1\4"+ + "\43\2\1\17\7\2\12\0\24\2\1\4\10\2\1\0"+ + "\1\16\4\0\16\2\3\0\4\2\1\17\5\2"; + + private static int [] zzUnpackAction() { + int [] result = new int[236]; + 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\72\0\164\0\72\0\256\0\350\0\72\0\u0122"+ + "\0\u015c\0\u0196\0\u01d0\0\u020a\0\u0244\0\u027e\0\u02b8\0\u02f2"+ + "\0\u032c\0\u0366\0\u03a0\0\u03da\0\u0414\0\u044e\0\u0488\0\u04c2"+ + "\0\u04fc\0\u0536\0\u0570\0\u05aa\0\u05e4\0\u061e\0\u0658\0\72"+ + "\0\72\0\72\0\72\0\72\0\72\0\u0692\0\u06cc\0\u0706"+ + "\0\u0740\0\u077a\0\u07b4\0\u07ee\0\u0828\0\u0862\0\u089c\0\u08d6"+ + "\0\u0910\0\u094a\0\u0984\0\u09be\0\72\0\u077a\0\u09f8\0\u0a32"+ + "\0\u0a6c\0\u0aa6\0\u0ae0\0\u0b1a\0\u0b54\0\u0b8e\0\u0bc8\0\u0c02"+ + "\0\u0c3c\0\u0c76\0\u0cb0\0\u0cea\0\u0d24\0\u0d5e\0\u0d98\0\u0dd2"+ + "\0\u0e0c\0\u0e46\0\u0e80\0\u0eba\0\u0ef4\0\u0f2e\0\u0f68\0\u0fa2"+ + "\0\u0fdc\0\u1016\0\u1050\0\u108a\0\u10c4\0\u10fe\0\u1138\0\u1172"+ + "\0\u11ac\0\u11e6\0\u015c\0\u1220\0\u125a\0\u1294\0\u12ce\0\u1308"+ + "\0\u1342\0\u137c\0\u061e\0\72\0\u13b6\0\u0658\0\u13f0\0\u142a"+ + "\0\72\0\u1464\0\u149e\0\u14d8\0\u1512\0\u154c\0\u1586\0\u15c0"+ + "\0\u15fa\0\u1634\0\u166e\0\u16a8\0\u16e2\0\u171c\0\u1756\0\u1790"+ + "\0\u17ca\0\u1804\0\u183e\0\u1878\0\u18b2\0\u18ec\0\u1926\0\u1960"+ + "\0\u199a\0\u19d4\0\u1a0e\0\u1a48\0\u1a82\0\u1abc\0\u1af6\0\u1b30"+ + "\0\u1b6a\0\u1ba4\0\u1bde\0\u1c18\0\u1c52\0\u1c8c\0\u1cc6\0\u1d00"+ + "\0\u1d3a\0\u1d74\0\u1dae\0\u1de8\0\u1e22\0\u1e5c\0\u1e96\0\u1ed0"+ + "\0\u1f0a\0\u1f44\0\u1f7e\0\u1fb8\0\u015c\0\u1ff2\0\u202c\0\u2066"+ + "\0\u20a0\0\u20da\0\u2114\0\u214e\0\u2188\0\u21c2\0\u21fc\0\u2236"+ + "\0\u2270\0\u22aa\0\u22e4\0\u231e\0\u2358\0\u2392\0\u23cc\0\u2406"+ + "\0\u2440\0\u247a\0\u24b4\0\u24ee\0\u2528\0\u2562\0\u259c\0\u25d6"+ + "\0\u2610\0\u264a\0\u2684\0\u26be\0\u26f8\0\u2732\0\u276c\0\u27a6"+ + "\0\u27e0\0\u281a\0\u015c\0\u2854\0\u288e\0\u28c8\0\u2902\0\u293c"+ + "\0\u2976\0\u29b0\0\u29ea\0\u2a24\0\72\0\u2a5e\0\u2a98\0\u2ad2"+ + "\0\u2b0c\0\u2b46\0\u2b80\0\u2bba\0\u2bf4\0\u2c2e\0\u2c68\0\u2ca2"+ + "\0\u2cdc\0\u2d16\0\u2d50\0\u2d8a\0\u2dc4\0\u2dfe\0\u2e38\0\u2e72"+ + "\0\u2eac\0\u2ee6\0\u2f20\0\u2f5a\0\u2f94\0\u2fce\0\u3008\0\u3042"+ + "\0\u307c\0\u30b6\0\u30f0\0\u312a"; + + private static int [] zzUnpackRowMap() { + int [] result = new int[236]; + 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\6\1\7\1\10\1\11"+ + "\1\12\1\2\1\13\1\12\1\14\1\11\1\12\1\15"+ + "\1\12\1\13\1\16\1\12\1\17\1\12\1\20\1\12"+ + "\1\21\1\22\1\23\1\12\1\7\1\24\1\25\2\11"+ + "\1\26\1\27\2\11\1\30\1\31\1\32\1\33\2\11"+ + "\1\34\1\11\1\35\1\36\1\2\1\37\1\40\1\41"+ + "\1\42\1\43\1\44\1\45\1\7\1\46\1\47\74\0"+ + "\1\4\72\0\1\5\72\0\1\50\1\51\72\0\1\52"+ + "\1\0\1\52\1\0\3\52\1\0\1\52\1\0\2\52"+ + "\1\53\1\52\1\54\1\52\1\0\1\52\1\55\1\0"+ + "\1\56\1\52\12\0\1\57\5\0\1\60\24\0\22\11"+ + "\1\0\2\11\1\0\21\11\22\0\1\52\1\11\1\12"+ + "\1\11\3\12\1\11\1\12\1\11\2\12\1\11\1\12"+ + "\1\11\1\12\1\11\1\12\1\11\1\0\1\11\1\12"+ + "\1\0\21\11\22\0\1\52\1\0\1\52\1\0\1\13"+ + "\1\52\1\13\1\0\1\52\1\0\1\52\1\13\1\61"+ + "\1\62\1\63\1\64\1\65\1\66\1\65\1\67\1\70"+ + "\1\71\44\0\1\52\1\0\1\52\1\0\1\72\1\52"+ + "\1\73\1\74\1\75\1\0\1\52\1\73\1\61\1\62"+ + "\1\63\1\64\1\65\1\66\1\65\1\67\1\70\1\71"+ + "\45\0\22\11\1\0\2\11\1\0\2\11\1\76\3\11"+ + "\1\77\1\100\11\11\23\0\13\11\1\101\6\11\1\0"+ + "\2\11\1\0\4\11\1\102\3\11\1\103\10\11\23\0"+ + "\22\11\1\0\2\11\1\0\7\11\1\104\11\11\23\0"+ + "\15\11\1\105\4\11\1\0\2\11\1\0\2\11\1\106"+ + "\4\11\1\107\11\11\23\0\22\11\1\0\1\110\1\11"+ + "\1\0\7\11\1\111\11\11\26\0\1\67\1\0\1\67"+ + "\4\0\1\67\57\0\6\11\1\112\6\11\1\113\4\11"+ + "\1\0\2\11\1\0\10\11\1\114\10\11\23\0\22\11"+ + "\1\0\2\11\1\0\1\11\1\115\5\11\1\116\11\11"+ + "\23\0\22\11\1\0\1\117\1\11\1\0\21\11\23\0"+ + "\22\11\1\0\1\120\1\11\1\0\2\11\1\121\2\11"+ + "\1\122\1\123\2\11\1\124\4\11\1\125\2\11\23\0"+ + "\22\11\1\0\1\126\1\11\1\0\1\11\1\127\4\11"+ + "\1\130\5\11\1\131\4\11\23\0\22\11\1\0\2\11"+ + "\1\0\7\11\1\132\11\11\23\0\17\11\1\133\2\11"+ + "\1\0\2\11\1\0\10\11\1\134\10\11\23\0\22\11"+ + "\1\0\2\11\1\0\7\11\1\135\11\11\23\0\13\11"+ + "\1\136\6\11\1\0\2\11\1\0\21\11\23\0\22\11"+ + "\1\0\2\11\1\0\6\11\1\137\12\11\23\0\22\11"+ + "\1\0\2\11\1\0\2\11\1\140\4\11\1\141\1\11"+ + "\1\142\7\11\14\0\2\143\1\144\53\143\1\144\1\145"+ + "\12\143\2\146\1\144\54\146\1\147\1\144\11\146\70\0"+ + "\1\7\72\0\1\7\1\50\1\150\1\151\67\50\5\152"+ + "\1\153\64\152\6\0\1\52\1\0\1\52\1\0\3\52"+ + "\1\0\1\52\1\0\2\52\1\0\1\52\1\0\1\52"+ + "\1\0\1\52\3\0\1\52\77\0\1\154\3\0\1\155"+ + "\72\0\1\156\55\0\1\157\63\0\1\160\11\0\1\161"+ + "\6\0\1\162\52\0\1\163\16\0\1\164\2\0\1\165"+ + "\57\0\1\166\55\0\2\65\2\63\52\0\1\52\1\0"+ + "\1\52\1\0\3\52\1\0\1\52\1\0\2\52\1\65"+ + "\1\66\1\63\1\64\1\0\1\52\3\0\1\52\60\0"+ + "\2\65\54\0\1\52\1\0\1\52\1\0\3\52\1\0"+ + "\1\52\1\0\2\52\1\65\1\66\1\0\1\52\1\0"+ + "\1\52\3\0\1\52\50\0\1\67\1\0\1\67\4\0"+ + "\1\67\4\0\3\65\1\0\2\70\50\0\1\167\1\0"+ + "\1\167\4\0\1\167\12\0\1\170\43\0\1\52\1\0"+ + "\1\52\1\0\1\171\1\52\1\171\1\0\1\52\1\0"+ + "\1\52\1\171\1\0\1\52\1\0\1\52\1\0\1\52"+ + "\3\0\1\52\1\170\43\0\1\52\1\0\1\52\1\0"+ + "\1\72\1\52\1\72\1\0\1\52\1\0\1\52\1\72"+ + "\1\0\1\52\1\0\1\52\1\65\1\66\1\65\1\67"+ + "\1\70\1\71\44\0\1\52\1\0\1\52\1\0\1\72"+ + "\1\52\1\73\1\0\1\52\1\0\1\52\1\73\1\61"+ + "\1\62\1\63\1\64\1\65\1\66\1\65\1\67\1\70"+ + "\1\71\50\0\1\74\1\0\1\74\2\0\3\74\2\61"+ + "\2\63\3\74\1\0\2\74\1\0\1\74\1\0\1\74"+ + "\40\0\1\52\1\0\1\52\1\0\1\75\1\52\1\75"+ + "\1\0\1\52\1\74\2\75\1\61\1\62\1\63\1\64"+ + "\1\74\1\75\1\74\1\0\1\74\1\75\1\0\1\74"+ + "\1\0\1\74\41\0\22\11\1\0\2\11\1\0\4\11"+ + "\1\172\1\173\13\11\23\0\22\11\1\0\2\11\1\0"+ + "\2\11\1\174\16\11\23\0\22\11\1\0\2\11\1\0"+ + "\10\11\1\175\10\11\23\0\22\11\1\0\2\11\1\0"+ + "\11\11\1\176\7\11\23\0\22\11\1\0\2\11\1\0"+ + "\11\11\1\177\7\11\23\0\22\11\1\0\2\11\1\0"+ + "\4\11\1\200\4\11\1\201\7\11\23\0\22\11\1\0"+ + "\2\11\1\0\10\11\1\202\10\11\23\0\22\11\1\0"+ + "\2\11\1\0\7\11\1\203\11\11\23\0\15\11\1\204"+ + "\4\11\1\0\2\11\1\0\21\11\23\0\22\11\1\0"+ + "\2\11\1\0\1\11\1\133\17\11\23\0\17\11\1\205"+ + "\2\11\1\0\2\11\1\0\21\11\23\0\13\11\1\206"+ + "\6\11\1\0\2\11\1\0\21\11\23\0\22\11\1\0"+ + "\2\11\1\0\5\11\1\207\13\11\23\0\22\11\1\0"+ + "\2\11\1\0\4\11\1\172\14\11\23\0\13\11\1\210"+ + "\6\11\1\0\2\11\1\0\21\11\23\0\22\11\1\0"+ + "\1\211\1\11\1\0\21\11\23\0\22\11\1\0\2\11"+ + "\1\0\7\11\1\212\11\11\23\0\22\11\1\0\2\11"+ + "\1\0\5\11\1\213\4\11\1\214\6\11\23\0\15\11"+ + "\1\215\4\11\1\0\2\11\1\0\2\11\1\216\16\11"+ + "\23\0\17\11\1\217\2\11\1\0\2\11\1\0\21\11"+ + "\23\0\22\11\1\0\2\11\1\0\1\11\1\220\1\221"+ + "\16\11\23\0\22\11\1\0\2\11\1\0\7\11\1\222"+ + "\11\11\23\0\22\11\1\0\2\11\1\0\12\11\1\223"+ + "\2\11\1\224\3\11\23\0\22\11\1\0\2\11\1\0"+ + "\11\11\1\225\7\11\23\0\22\11\1\0\2\11\1\0"+ + "\13\11\1\226\5\11\23\0\13\11\1\227\6\11\1\0"+ + "\2\11\1\0\14\11\1\133\4\11\23\0\22\11\1\0"+ + "\2\11\1\0\1\11\1\230\7\11\1\231\7\11\23\0"+ + "\22\11\1\0\2\11\1\0\17\11\1\232\1\11\23\0"+ + "\22\11\1\0\2\11\1\0\11\11\1\233\7\11\23\0"+ + "\15\11\1\234\4\11\1\0\2\11\1\0\5\11\1\235"+ + "\13\11\23\0\22\11\1\0\2\11\1\0\5\11\1\236"+ + "\13\11\23\0\22\11\1\0\2\11\1\0\5\11\1\237"+ + "\13\11\23\0\22\11\1\0\2\11\1\0\11\11\1\240"+ + "\7\11\23\0\15\11\1\241\4\11\1\0\2\11\1\0"+ + "\21\11\23\0\15\11\1\242\4\11\1\0\2\11\1\0"+ + "\11\11\1\243\7\11\23\0\22\11\1\0\2\11\1\0"+ + "\1\11\1\244\17\11\14\0\2\143\1\144\67\143\2\146"+ + "\1\144\67\146\2\0\1\151\67\0\5\152\1\245\64\152"+ + "\4\0\1\151\1\153\132\0\1\246\53\0\1\247\106\0"+ + "\1\250\52\0\1\54\104\0\1\250\4\0\1\251\61\0"+ + "\1\252\63\0\1\253\71\0\1\247\14\0\1\155\43\0"+ + "\1\254\126\0\1\255\54\0\1\256\44\0\1\167\1\0"+ + "\1\167\4\0\1\167\4\0\3\65\53\0\1\167\1\0"+ + "\1\167\4\0\1\167\56\0\1\52\1\0\1\52\1\0"+ + "\1\171\1\52\1\171\1\0\1\52\1\0\1\52\1\171"+ + "\1\0\1\52\1\0\1\52\1\65\1\66\1\65\2\0"+ + "\1\52\45\0\22\11\1\0\1\133\1\11\1\0\21\11"+ + "\23\0\10\11\1\257\11\11\1\0\2\11\1\0\21\11"+ + "\23\0\22\11\1\0\2\11\1\0\1\11\1\235\17\11"+ + "\23\0\22\11\1\0\2\11\1\0\4\11\1\260\1\261"+ + "\13\11\23\0\21\11\1\133\1\0\2\11\1\0\21\11"+ + "\23\0\22\11\1\0\2\11\1\0\10\11\1\262\10\11"+ + "\23\0\22\11\1\0\2\11\1\0\11\11\1\263\7\11"+ + "\23\0\22\11\1\0\2\11\1\0\7\11\1\264\11\11"+ + "\23\0\22\11\1\0\2\11\1\0\12\11\1\235\6\11"+ + "\23\0\22\11\1\0\2\11\1\0\2\11\1\260\16\11"+ + "\23\0\22\11\1\0\2\11\1\0\4\11\1\227\14\11"+ + "\23\0\22\11\1\0\2\11\1\0\2\11\1\265\16\11"+ + "\23\0\22\11\1\0\2\11\1\0\1\266\20\11\23\0"+ + "\22\11\1\0\1\267\1\11\1\0\21\11\23\0\22\11"+ + "\1\0\2\11\1\0\13\11\1\133\5\11\23\0\22\11"+ + "\1\0\2\11\1\0\2\11\1\270\16\11\23\0\15\11"+ + "\1\235\4\11\1\0\2\11\1\0\21\11\23\0\13\11"+ + "\1\271\6\11\1\0\2\11\1\0\21\11\23\0\22\11"+ + "\1\0\2\11\1\0\11\11\1\272\7\11\23\0\22\11"+ + "\1\0\1\273\1\11\1\0\21\11\23\0\15\11\1\274"+ + "\4\11\1\0\2\11\1\0\21\11\23\0\22\11\1\0"+ + "\1\275\1\11\1\0\21\11\23\0\13\11\1\276\6\11"+ + "\1\0\2\11\1\0\21\11\23\0\22\11\1\0\2\11"+ + "\1\0\5\11\1\277\13\11\23\0\22\11\1\0\2\11"+ + "\1\0\1\11\1\260\17\11\23\0\22\11\1\0\2\11"+ + "\1\0\10\11\1\300\10\11\23\0\22\11\1\0\1\301"+ + "\1\11\1\0\21\11\23\0\22\11\1\0\2\11\1\0"+ + "\5\11\1\173\13\11\23\0\22\11\1\0\2\11\1\0"+ + "\17\11\1\302\1\11\23\0\22\11\1\0\1\303\1\11"+ + "\1\0\21\11\23\0\22\11\1\0\1\304\1\11\1\0"+ + "\7\11\1\305\11\11\23\0\22\11\1\0\2\11\1\0"+ + "\4\11\1\133\14\11\23\0\22\11\1\0\1\306\1\11"+ + "\1\0\21\11\23\0\22\11\1\0\2\11\1\0\10\11"+ + "\1\307\10\11\23\0\22\11\1\0\2\11\1\0\11\11"+ + "\1\310\7\11\23\0\22\11\1\0\2\11\1\0\7\11"+ + "\1\133\11\11\23\0\22\11\1\0\2\11\1\0\2\11"+ + "\1\311\16\11\23\0\15\11\1\172\4\11\1\0\2\11"+ + "\1\0\21\11\23\0\13\11\1\172\6\11\1\0\2\11"+ + "\1\0\21\11\23\0\22\11\1\0\2\11\1\0\2\11"+ + "\1\312\16\11\23\0\21\11\1\235\1\0\2\11\1\0"+ + "\21\11\23\0\22\11\1\0\2\11\1\0\5\11\1\313"+ + "\13\11\14\0\4\152\1\151\1\245\64\152\45\0\1\314"+ + "\56\0\1\251\71\0\1\315\65\0\1\315\107\0\1\316"+ + "\73\0\1\251\47\0\1\317\111\0\1\320\74\0\1\321"+ + "\31\0\22\11\1\0\2\11\1\0\6\11\1\133\12\11"+ + "\23\0\22\11\1\0\2\11\1\0\5\11\1\235\13\11"+ + "\23\0\22\11\1\0\2\11\1\0\11\11\1\322\7\11"+ + "\23\0\22\11\1\0\2\11\1\0\12\11\1\133\6\11"+ + "\23\0\22\11\1\0\2\11\1\0\12\11\1\223\6\11"+ + "\23\0\22\11\1\0\2\11\1\0\10\11\1\235\10\11"+ + "\23\0\13\11\1\323\6\11\1\0\2\11\1\0\21\11"+ + "\23\0\15\11\1\324\4\11\1\0\2\11\1\0\21\11"+ + "\23\0\22\11\1\0\2\11\1\0\1\11\1\264\17\11"+ + "\23\0\22\11\1\0\2\11\1\0\3\11\1\133\15\11"+ + "\23\0\22\11\1\0\2\11\1\0\1\11\1\325\17\11"+ + "\23\0\22\11\1\0\2\11\1\0\4\11\1\326\14\11"+ + "\23\0\10\11\1\327\11\11\1\0\2\11\1\0\21\11"+ + "\23\0\22\11\1\0\1\176\1\11\1\0\21\11\23\0"+ + "\10\11\1\330\11\11\1\0\2\11\1\0\21\11\23\0"+ + "\10\11\1\260\11\11\1\0\2\11\1\0\21\11\23\0"+ + "\22\11\1\0\2\11\1\0\11\11\1\331\7\11\23\0"+ + "\22\11\1\0\1\243\1\11\1\0\21\11\23\0\22\11"+ + "\1\0\2\11\1\0\7\11\1\332\11\11\23\0\15\11"+ + "\1\333\4\11\1\0\2\11\1\0\21\11\23\0\22\11"+ + "\1\0\2\11\1\0\2\11\1\176\16\11\23\0\22\11"+ + "\1\0\2\11\1\0\16\11\1\133\2\11\23\0\21\11"+ + "\1\334\1\0\2\11\1\0\10\11\1\335\1\176\7\11"+ + "\23\0\15\11\1\234\4\11\1\0\2\11\1\0\21\11"+ + "\23\0\22\11\1\0\2\11\1\0\10\11\1\172\10\11"+ + "\23\0\22\11\1\0\2\11\1\0\1\240\20\11\23\0"+ + "\22\11\1\0\2\11\1\0\5\11\1\336\13\11\23\0"+ + "\13\11\1\337\6\11\1\0\2\11\1\0\21\11\63\0"+ + "\1\315\60\0\1\315\55\0\1\340\105\0\1\341\103\0"+ + "\1\342\30\0\22\11\1\0\2\11\1\0\10\11\1\241"+ + "\10\11\23\0\15\11\1\343\4\11\1\0\2\11\1\0"+ + "\21\11\23\0\22\11\1\0\1\235\1\11\1\0\21\11"+ + "\23\0\22\11\1\0\2\11\1\0\10\11\1\133\10\11"+ + "\23\0\22\11\1\0\2\11\1\0\5\11\1\344\13\11"+ + "\23\0\22\11\1\0\2\11\1\0\5\11\1\345\13\11"+ + "\23\0\22\11\1\0\2\11\1\0\2\11\1\346\16\11"+ + "\23\0\10\11\1\347\11\11\1\0\2\11\1\0\21\11"+ + "\23\0\17\11\1\133\2\11\1\0\2\11\1\0\21\11"+ + "\23\0\22\11\1\0\2\11\1\0\2\11\1\350\16\11"+ + "\23\0\22\11\1\0\1\332\1\11\1\0\21\11\23\0"+ + "\22\11\1\0\2\11\1\0\2\11\1\351\16\11\23\0"+ + "\22\11\1\0\2\11\1\0\11\11\1\266\7\11\23\0"+ + "\22\11\1\0\2\11\1\0\2\11\1\352\16\11\44\0"+ + "\1\250\103\0\1\315\66\0\1\315\41\0\22\11\1\0"+ + "\2\11\1\0\5\11\1\133\13\11\23\0\22\11\1\0"+ + "\1\174\1\11\1\0\21\11\23\0\22\11\1\0\2\11"+ + "\1\0\2\11\1\353\16\11\23\0\22\11\1\0\2\11"+ + "\1\0\4\11\1\343\14\11\23\0\1\11\1\275\20\11"+ + "\1\0\2\11\1\0\21\11\23\0\22\11\1\0\2\11"+ + "\1\0\5\11\1\172\13\11\23\0\22\11\1\0\2\11"+ + "\1\0\13\11\1\172\5\11\23\0\15\11\1\133\4\11"+ + "\1\0\2\11\1\0\21\11\23\0\22\11\1\0\2\11"+ + "\1\0\10\11\1\354\10\11\23\0\22\11\1\0\2\11"+ + "\1\0\14\11\1\133\4\11\14\0"; + + private static int [] zzUnpackTrans() { + int [] result = new int[12644]; + 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\2\1\1\11\30\1\6\11"+ + "\3\1\1\0\1\1\6\0\4\1\1\11\2\1\1\0"+ + "\52\1\1\0\1\11\3\0\1\1\1\11\11\0\1\1"+ + "\3\0\1\1\1\0\54\1\12\0\35\1\1\0\1\11"+ + "\4\0\16\1\3\0\12\1"; + + private static int [] zzUnpackAttribute() { + int [] result = new int[236]; + 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[] = new char[ZZ_BUFFERSIZE]; + + /** 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; + + /** number of newlines encountered up to the start of the matched text */ + private int yyline; + + /** the number of characters up to the start of the matched text */ + private int yychar; + + /** + * the number of characters from the last newline up to the start of the + * matched text + */ + private int yycolumn; + + /** + * 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; + + /** denotes if the user-EOF-code has already been executed */ + private boolean zzEOFDone; + + /* user code: */ + + public CLexer() { + super(); + } + + private static final byte PARAN = 1; + private static final byte BRACKET = 2; + private static final byte CURLY = 3; + + @Override + public int yychar() { + return yychar; + } + + + /** + * 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 CLexer(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 CLexer(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 < 1782) { + int count = packed.charAt(i++); + char value = packed.charAt(i++); + do map[j++] = value; while (--count > 0); + } + return map; + } + + + /** + * Refills the input buffer. + * + * @return false, iff there was new input. + * + * @exception java.io.IOException if any I/O-Error occurs + */ + private boolean zzRefill() throws java.io.IOException { + + /* first: make room (if you can) */ + if (zzStartRead > 0) { + System.arraycopy(zzBuffer, zzStartRead, + zzBuffer, 0, + zzEndRead-zzStartRead); + + /* translate stored positions */ + zzEndRead-= zzStartRead; + zzCurrentPos-= zzStartRead; + zzMarkedPos-= zzStartRead; + zzStartRead = 0; + } + + /* is the buffer big enough? */ + if (zzCurrentPos >= zzBuffer.length) { + /* if not: blow it up */ + char newBuffer[] = new char[zzCurrentPos*2]; + System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); + zzBuffer = newBuffer; + } + + /* finally: fill the buffer with new input */ + int numRead = zzReader.read(zzBuffer, zzEndRead, + zzBuffer.length-zzEndRead); + + if (numRead > 0) { + zzEndRead+= numRead; + return false; + } + // unlikely but not impossible: read 0 characters, but not at end of stream + if (numRead == 0) { + int c = zzReader.read(); + if (c == -1) { + return true; + } else { + zzBuffer[zzEndRead++] = (char) c; + return false; + } + } + + // numRead < 0 + return true; + } + + + /** + * 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(); + } + + + /** + * 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 ZZ_INITIAL. + * + * @param reader the new input stream + */ + public final void yyreset(java.io.Reader reader) { + zzReader = reader; + zzAtBOL = true; + zzAtEOF = false; + zzEOFDone = false; + zzEndRead = zzStartRead = 0; + zzCurrentPos = zzMarkedPos = 0; + yyline = yychar = yycolumn = 0; + zzLexicalState = YYINITIAL; + } + + + /** + * Returns the current lexical state. + */ + public final int yystate() { + return zzLexicalState; + } + + + /** + * Enters a new lexical state + * + * @param newState the new lexical state + */ + 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 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; + + yychar+= zzMarkedPosL-zzStartRead; + + zzAction = -1; + + zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; + + 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 12: + { return token(TokenType.KEYWORD); + } + case 16: break; + case 7: + { return token(TokenType.OPERATOR, CURLY); + } + case 17: break; + case 9: + { return token(TokenType.OPERATOR, BRACKET); + } + case 18: break; + case 3: + { return token(TokenType.OPERATOR); + } + case 19: break; + case 6: + { return token(TokenType.OPERATOR, -PARAN); + } + case 20: break; + case 14: + { return token(TokenType.KEYWORD2); + } + case 21: break; + case 2: + { return token(TokenType.IDENTIFIER); + } + case 22: break; + case 5: + { return token(TokenType.OPERATOR, PARAN); + } + case 23: break; + case 13: + { return token(TokenType.STRING); + } + case 24: break; + case 11: + { return token(TokenType.COMMENT); + } + case 25: break; + case 10: + { return token(TokenType.OPERATOR, -BRACKET); + } + case 26: break; + case 8: + { return token(TokenType.OPERATOR, -CURLY); + } + case 27: break; + case 15: + { return token(TokenType.TYPE); + } + case 28: break; + case 4: + { return token(TokenType.NUMBER); + } + case 29: break; + case 1: + { + } + case 30: break; + default: + if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { + zzAtEOF = true; + { + return null; + } + } + else { + zzScanError(ZZ_NO_MATCH); + } + } + } + } + + +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/ClojureLexer.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/ClojureLexer.java new file mode 100644 index 000000000..b946071f5 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/ClojureLexer.java @@ -0,0 +1,2022 @@ +/* The following code was generated by JFlex 1.4.3 on 21.7.10 18:14 */ + +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jsyntaxpane.lexers; + + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + + +/** + * This class is a scanner generated by + * JFlex 1.4.3 + * on 21.7.10 18:14 from the specification file + * D:/Dokumenty/Programovani/JavaSE/JPSWFDec/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/clojure.flex + */ +public final class ClojureLexer extends DefaultJFlexLexer { + + /** This character denotes the end of file */ + public static final int YYEOF = -1; + + /** initial size of the lookahead buffer */ + private static final int ZZ_BUFFERSIZE = 16384; + + /** lexical states */ + public static final int STRING = 2; + public static final int YYINITIAL = 0; + public static final int CHARLITERAL = 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, 0, 1, 1, 2, 2 + }; + + /** + * Translates characters to character classes + */ + private static final String ZZ_CMAP_PACKED = + "\11\6\1\3\1\2\1\0\1\3\1\1\16\6\4\0\1\3\1\53"+ + "\1\23\1\0\1\5\2\0\1\24\1\71\1\72\1\30\1\22\1\0"+ + "\1\46\1\20\1\62\1\7\1\15\1\70\1\14\4\16\2\10\1\0"+ + "\1\4\1\63\1\64\1\61\1\51\1\0\3\13\1\17\1\21\1\17"+ + "\5\5\1\11\13\5\1\12\2\5\1\75\1\25\1\76\1\0\1\5"+ + "\1\0\1\50\1\60\1\42\1\32\1\33\1\26\1\57\1\45\1\31"+ + "\1\65\1\66\1\34\1\54\1\27\1\36\1\37\1\44\1\41\1\52"+ + "\1\35\1\43\1\47\1\40\1\55\1\56\1\67\1\73\1\0\1\74"+ + "\1\0\41\6\2\0\4\5\4\0\1\5\2\0\1\6\7\0\1\5"+ + "\4\0\1\5\5\0\27\5\1\0\37\5\1\0\u013f\5\31\0\162\5"+ + "\4\0\14\5\16\0\5\5\11\0\1\5\21\0\130\6\5\0\23\6"+ + "\12\0\1\5\13\0\1\5\1\0\3\5\1\0\1\5\1\0\24\5"+ + "\1\0\54\5\1\0\46\5\1\0\5\5\4\0\202\5\1\0\4\6"+ + "\3\0\105\5\1\0\46\5\2\0\2\5\6\0\20\5\41\0\46\5"+ + "\2\0\1\5\7\0\47\5\11\0\21\6\1\0\27\6\1\0\3\6"+ + "\1\0\1\6\1\0\2\6\1\0\1\6\13\0\33\5\5\0\3\5"+ + "\15\0\4\6\14\0\6\6\13\0\32\5\5\0\13\5\16\6\7\0"+ + "\12\6\4\0\2\5\1\6\143\5\1\0\1\5\10\6\1\0\6\6"+ + "\2\5\2\6\1\0\4\6\2\5\12\6\3\5\2\0\1\5\17\0"+ + "\1\6\1\5\1\6\36\5\33\6\2\0\3\5\60\0\46\5\13\6"+ + "\1\5\u014f\0\3\6\66\5\2\0\1\6\1\5\20\6\2\0\1\5"+ + "\4\6\3\0\12\5\2\6\2\0\12\6\21\0\3\6\1\0\10\5"+ + "\2\0\2\5\2\0\26\5\1\0\7\5\1\0\1\5\3\0\4\5"+ + "\2\0\1\6\1\5\7\6\2\0\2\6\2\0\3\6\11\0\1\6"+ + "\4\0\2\5\1\0\3\5\2\6\2\0\12\6\4\5\15\0\3\6"+ + "\1\0\6\5\4\0\2\5\2\0\26\5\1\0\7\5\1\0\2\5"+ + "\1\0\2\5\1\0\2\5\2\0\1\6\1\0\5\6\4\0\2\6"+ + "\2\0\3\6\13\0\4\5\1\0\1\5\7\0\14\6\3\5\14\0"+ + "\3\6\1\0\11\5\1\0\3\5\1\0\26\5\1\0\7\5\1\0"+ + "\2\5\1\0\5\5\2\0\1\6\1\5\10\6\1\0\3\6\1\0"+ + "\3\6\2\0\1\5\17\0\2\5\2\6\2\0\12\6\1\0\1\5"+ + "\17\0\3\6\1\0\10\5\2\0\2\5\2\0\26\5\1\0\7\5"+ + "\1\0\2\5\1\0\5\5\2\0\1\6\1\5\6\6\3\0\2\6"+ + "\2\0\3\6\10\0\2\6\4\0\2\5\1\0\3\5\4\0\12\6"+ + "\1\0\1\5\20\0\1\6\1\5\1\0\6\5\3\0\3\5\1\0"+ + "\4\5\3\0\2\5\1\0\1\5\1\0\2\5\3\0\2\5\3\0"+ + "\3\5\3\0\10\5\1\0\3\5\4\0\5\6\3\0\3\6\1\0"+ + "\4\6\11\0\1\6\17\0\11\6\11\0\1\5\7\0\3\6\1\0"+ + "\10\5\1\0\3\5\1\0\27\5\1\0\12\5\1\0\5\5\4\0"+ + "\7\6\1\0\3\6\1\0\4\6\7\0\2\6\11\0\2\5\4\0"+ + "\12\6\22\0\2\6\1\0\10\5\1\0\3\5\1\0\27\5\1\0"+ + "\12\5\1\0\5\5\2\0\1\6\1\5\7\6\1\0\3\6\1\0"+ + "\4\6\7\0\2\6\7\0\1\5\1\0\2\5\4\0\12\6\22\0"+ + "\2\6\1\0\10\5\1\0\3\5\1\0\27\5\1\0\20\5\4\0"+ + "\6\6\2\0\3\6\1\0\4\6\11\0\1\6\10\0\2\5\4\0"+ + "\12\6\22\0\2\6\1\0\22\5\3\0\30\5\1\0\11\5\1\0"+ + "\1\5\2\0\7\5\3\0\1\6\4\0\6\6\1\0\1\6\1\0"+ + "\10\6\22\0\2\6\15\0\60\5\1\6\2\5\7\6\4\0\10\5"+ + "\10\6\1\0\12\6\47\0\2\5\1\0\1\5\2\0\2\5\1\0"+ + "\1\5\2\0\1\5\6\0\4\5\1\0\7\5\1\0\3\5\1\0"+ + "\1\5\1\0\1\5\2\0\2\5\1\0\4\5\1\6\2\5\6\6"+ + "\1\0\2\6\1\5\2\0\5\5\1\0\1\5\1\0\6\6\2\0"+ + "\12\6\2\0\2\5\42\0\1\5\27\0\2\6\6\0\12\6\13\0"+ + "\1\6\1\0\1\6\1\0\1\6\4\0\2\6\10\5\1\0\42\5"+ + "\6\0\24\6\1\0\2\6\4\5\4\0\10\6\1\0\44\6\11\0"+ + "\1\6\71\0\42\5\1\0\5\5\1\0\2\5\1\0\7\6\3\0"+ + "\4\6\6\0\12\6\6\0\6\5\4\6\106\0\46\5\12\0\51\5"+ + "\7\0\132\5\5\0\104\5\5\0\122\5\6\0\7\5\1\0\77\5"+ + "\1\0\1\5\1\0\4\5\2\0\7\5\1\0\1\5\1\0\4\5"+ + "\2\0\47\5\1\0\1\5\1\0\4\5\2\0\37\5\1\0\1\5"+ + "\1\0\4\5\2\0\7\5\1\0\1\5\1\0\4\5\2\0\7\5"+ + "\1\0\7\5\1\0\27\5\1\0\37\5\1\0\1\5\1\0\4\5"+ + "\2\0\7\5\1\0\47\5\1\0\23\5\16\0\11\6\56\0\125\5"+ + "\14\0\u026c\5\2\0\10\5\12\0\32\5\5\0\113\5\3\0\3\5"+ + "\17\0\15\5\1\0\4\5\3\6\13\0\22\5\3\6\13\0\22\5"+ + "\2\6\14\0\15\5\1\0\3\5\1\0\2\6\14\0\64\5\40\6"+ + "\3\0\1\5\3\0\2\5\1\6\2\0\12\6\41\0\3\6\2\0"+ + "\12\6\6\0\130\5\10\0\51\5\1\6\126\0\35\5\3\0\14\6"+ + "\4\0\14\6\12\0\12\6\36\5\2\0\5\5\u038b\0\154\5\224\0"+ + "\234\5\4\0\132\5\6\0\26\5\2\0\6\5\2\0\46\5\2\0"+ + "\6\5\2\0\10\5\1\0\1\5\1\0\1\5\1\0\1\5\1\0"+ + "\37\5\2\0\65\5\1\0\7\5\1\0\1\5\3\0\3\5\1\0"+ + "\7\5\3\0\4\5\2\0\6\5\4\0\15\5\5\0\3\5\1\0"+ + "\7\5\17\0\4\6\32\0\5\6\20\0\2\5\23\0\1\5\13\0"+ + "\4\6\6\0\6\6\1\0\1\5\15\0\1\5\40\0\22\5\36\0"+ + "\15\6\4\0\1\6\3\0\6\6\27\0\1\5\4\0\1\5\2\0"+ + "\12\5\1\0\1\5\3\0\5\5\6\0\1\5\1\0\1\5\1\0"+ + "\1\5\1\0\4\5\1\0\3\5\1\0\7\5\3\0\3\5\5\0"+ + "\5\5\26\0\44\5\u0e81\0\3\5\31\0\11\5\6\6\1\0\5\5"+ + "\2\0\5\5\4\0\126\5\2\0\2\6\2\0\3\5\1\0\137\5"+ + "\5\0\50\5\4\0\136\5\21\0\30\5\70\0\20\5\u0200\0\u19b6\5"+ + "\112\0\u51a6\5\132\0\u048d\5\u0773\0\u2ba4\5\u215c\0\u012e\5\2\0\73\5"+ + "\225\0\7\5\14\0\5\5\5\0\1\5\1\6\12\5\1\0\15\5"+ + "\1\0\5\5\1\0\1\5\1\0\2\5\1\0\2\5\1\0\154\5"+ + "\41\0\u016b\5\22\0\100\5\2\0\66\5\50\0\15\5\3\0\20\6"+ + "\20\0\4\6\17\0\2\5\30\0\3\5\31\0\1\5\6\0\5\5"+ + "\1\0\207\5\2\0\1\6\4\0\1\5\13\0\12\6\7\0\32\5"+ + "\4\0\1\5\1\0\32\5\12\0\132\5\3\0\6\5\2\0\6\5"+ + "\2\0\6\5\2\0\3\5\3\0\2\5\3\0\2\5\22\0\3\6"+ + "\4\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\3\1\1\2\1\3\2\4\1\1\1\5\1\6"+ + "\1\7\2\3\1\1\15\3\1\5\7\3\1\5\2\3"+ + "\1\10\1\11\1\12\1\13\1\14\1\15\1\16\2\17"+ + "\1\20\1\1\1\16\1\1\2\2\3\4\1\0\3\4"+ + "\1\0\1\3\1\21\12\3\10\0\1\21\6\3\1\21"+ + "\15\3\1\5\2\3\1\5\61\3\1\22\2\16\4\4"+ + "\1\0\1\3\1\21\5\3\2\21\1\3\2\5\1\3"+ + "\11\0\1\5\1\0\4\3\1\21\15\3\1\21\10\3"+ + "\1\0\1\3\1\21\4\3\1\5\2\3\1\0\5\3"+ + "\1\5\4\3\1\0\3\3\1\5\14\3\2\5\16\3"+ + "\1\5\1\3\1\5\1\3\1\5\10\3\1\5\4\3"+ + "\1\5\4\3\1\5\4\3\1\5\2\3\1\16\2\4"+ + "\1\5\3\3\1\0\1\5\15\0\1\3\1\5\1\0"+ + "\5\3\1\5\6\3\1\5\2\3\1\5\1\3\1\5"+ + "\1\3\2\0\1\3\1\5\2\3\1\0\2\3\1\5"+ + "\1\0\5\3\5\0\1\3\1\5\3\3\1\5\3\3"+ + "\2\5\4\3\2\5\1\3\2\0\1\3\1\0\4\3"+ + "\1\5\1\3\1\5\4\3\1\5\4\3\1\0\4\3"+ + "\2\0\1\3\2\0\3\3\2\4\1\0\2\3\2\0"+ + "\1\3\15\0\1\3\1\0\11\3\1\0\1\3\5\0"+ + "\2\5\1\0\1\3\2\0\2\3\5\0\1\3\1\0"+ + "\3\3\1\0\7\3\1\0\1\3\1\0\1\3\1\0"+ + "\1\5\2\3\1\0\1\5\1\0\4\3\1\0\3\3"+ + "\1\0\1\5\2\3\2\0\1\3\4\0\1\3\2\4"+ + "\2\0\1\3\2\0\1\3\13\0\1\3\1\0\10\3"+ + "\6\0\1\3\6\0\1\5\5\0\2\3\2\0\7\3"+ + "\2\0\1\3\10\0\1\3\1\5\1\3\1\0\1\3"+ + "\2\0\2\3\4\0\1\3\2\4\15\0\1\3\1\0"+ + "\5\3\11\0\1\3\4\0\1\3\2\0\5\3\15\0"+ + "\1\3\1\0\2\3\4\0\2\4\11\0\1\3\1\5"+ + "\10\0\1\3\2\0\1\3\15\0\1\3\3\0\2\4"+ + "\5\0\1\3\17\0\1\3\3\0\2\4\15\0\1\5"+ + "\3\0\1\3\4\0\1\4\14\0\1\5\4\0\1\4"+ + "\13\0\1\4\6\0\1\4\4\0\1\4\3\0\1\4"+ + "\3\0\1\4\2\0\5\4"; + + private static int [] zzUnpackAction() { + int [] result = new int[814]; + 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\275\0\275\0\275\0\u02b5\0\u02f4"+ + "\0\u0333\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\u0723\0\u0762\0\u07a1\0\u07e0\0\u081f\0\u085e\0\u089d\0\u08dc"+ + "\0\u091b\0\275\0\275\0\275\0\275\0\275\0\275\0\u095a"+ + "\0\u0999\0\275\0\275\0\u09d8\0\u0a17\0\u0a56\0\u0a95\0\275"+ + "\0\u0ad4\0\u0b13\0\275\0\u0b52\0\u0b91\0\u0bd0\0\u0c0f\0\u0c4e"+ + "\0\u0c8d\0\u0ccc\0\u0d0b\0\u0d4a\0\u0d89\0\u0dc8\0\u0e07\0\u0e46"+ + "\0\u0e85\0\u0ec4\0\u0f03\0\u0f42\0\u0f81\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\u146d\0\u14ac\0\u14eb\0\u152a\0\u1569\0\u15a8\0\u15e7\0\u1626"+ + "\0\u1665\0\u01b9\0\u16a4\0\u16e3\0\u1722\0\u1761\0\u17a0\0\u17df"+ + "\0\u181e\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\u1e06\0\u1e45\0\u1e84\0\u1ec3\0\u1f02\0\u1f41\0\u1f80\0\u1fbf"+ + "\0\u1ffe\0\u203d\0\u207c\0\u20bb\0\u20fa\0\u2139\0\u2178\0\u21b7"+ + "\0\u21f6\0\u2235\0\u2274\0\u22b3\0\u22f2\0\u2331\0\275\0\u2370"+ + "\0\u23af\0\u23ee\0\u242d\0\u246c\0\u24ab\0\u24ea\0\u2529\0\275"+ + "\0\u2568\0\u25a7\0\u25e6\0\u2625\0\u2664\0\u26a3\0\u26e2\0\u26a3"+ + "\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\u2c4c\0\u2c8b\0\u2cca"+ + "\0\u2d09\0\u2d48\0\u2d87\0\u2dc6\0\u2e05\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\u01b9\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\u3918\0\u3957\0\u3996\0\u39d5\0\u3a14\0\u3a53"+ + "\0\u3a92\0\u3ad1\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\u26a3\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\275\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\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\u4c89\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\0\u52ef\0\u532e\0\u536d"+ + "\0\u53ac\0\u53eb\0\u542a\0\u5469\0\u54a8\0\u54e7\0\u5526\0\u5565"+ + "\0\u55a4\0\u55e3\0\u5622\0\u5661\0\u56a0\0\u56df\0\u3a92\0\u571e"+ + "\0\u575d\0\u579c\0\u57db\0\u581a\0\u5859\0\u5898\0\u58d7\0\u5916"+ + "\0\u5955\0\u5994\0\u59d3\0\u5a12\0\u5a51\0\u5a90\0\u5acf\0\u5b0e"+ + "\0\u5b4d\0\u5b8c\0\u5bcb\0\u5c0a\0\u5c49\0\u5c88\0\u5cc7\0\u5d06"+ + "\0\u5d45\0\u5d84\0\u5dc3\0\u5e02\0\u5e41\0\u5e80\0\u5ebf\0\u5efe"+ + "\0\u5f3d\0\u4b0f\0\u5f7c\0\u5fbb\0\u5ffa\0\u6039\0\u6078\0\u60b7"+ + "\0\u60f6\0\u6135\0\u6174\0\u61b3\0\u61f2\0\u6231\0\u6270\0\u62af"+ + "\0\u62ee\0\u632d\0\u636c\0\u63ab\0\u63ea\0\u6429\0\u6468\0\u64a7"+ + "\0\u64e6\0\u6525\0\u6564\0\u65a3\0\u65e2\0\u6621\0\u6660\0\u669f"+ + "\0\u66de\0\u671d\0\u675c\0\u679b\0\u67da\0\u6819\0\u6858\0\u6897"+ + "\0\u68d6\0\u6915\0\u6954\0\u6993\0\u69d2\0\u6a11\0\u6a50\0\u6a8f"+ + "\0\u6ace\0\u6b0d\0\u6b4c\0\u6b8b\0\u6bca\0\u6c09\0\u6c48\0\u6c87"+ + "\0\u6cc6\0\u6d05\0\u6d44\0\u6d83\0\u6dc2\0\u6e01\0\u6e40\0\u6e7f"+ + "\0\u6ebe\0\u6efd\0\u6f3c\0\u6f7b\0\u6fba\0\u6ff9\0\u7038\0\u7077"+ + "\0\u70b6\0\u70f5\0\u7134\0\u7173\0\u71b2\0\u71f1\0\u7230\0\u726f"+ + "\0\u72ae\0\u72ed\0\u732c\0\u736b\0\u73aa\0\u73e9\0\u7428\0\u7467"+ + "\0\u74a6\0\u74e5\0\u7524\0\u7563\0\u75a2\0\u75e1\0\u7620\0\u765f"+ + "\0\u769e\0\u76dd\0\u771c\0\u775b\0\u779a\0\u77d9\0\u7818\0\u7857"+ + "\0\u7896\0\u78d5\0\u7914\0\u7953\0\u7992\0\u79d1\0\u7a10\0\u7a4f"+ + "\0\u7a8e\0\u7acd\0\u7b0c\0\u7b4b\0\u7b8a\0\u7bc9\0\u7c08\0\u7c47"+ + "\0\u7c86\0\u7cc5\0\u7d04\0\u7d43\0\u7d82\0\u7dc1\0\u7e00\0\u7e3f"+ + "\0\u7e7e\0\u7ebd\0\u7efc\0\u7f3b\0\u7f7a\0\u7fb9\0\u7ff8\0\u8037"+ + "\0\u8076\0\u80b5\0\u80f4\0\u8133\0\u8172\0\u81b1\0\u81f0\0\u822f"+ + "\0\u826e\0\u82ad\0\u82ec\0\u832b\0\u836a\0\u83a9\0\u83e8\0\u8427"+ + "\0\u8466\0\u84a5\0\u84e4\0\u8523\0\u8562\0\u85a1\0\u85e0\0\u861f"+ + "\0\u865e\0\u869d\0\u86dc\0\u871b\0\u875a\0\u8799\0\u87d8\0\u8817"+ + "\0\u8856\0\u8895\0\u88d4\0\u8913\0\u8952\0\u8991\0\u89d0\0\u8a0f"+ + "\0\u8a4e\0\u72ed\0\u8a8d\0\u8acc\0\u8b0b\0\u8b4a\0\u8b89\0\u8bc8"+ + "\0\u8c07\0\u8c46\0\u8c85\0\u8cc4\0\u8d03\0\u8d42\0\u8d81\0\u8dc0"+ + "\0\u8dff\0\u8e3e\0\u8e7d\0\u8ebc\0\u8efb\0\u8f3a\0\u8f79\0\u8fb8"+ + "\0\u8ff7\0\u9036\0\u9075\0\u90b4\0\u90f3\0\u9132\0\u9171\0\u91b0"+ + "\0\u91ef\0\u922e\0\u926d\0\u92ac\0\u92eb\0\u932a\0\u9369\0\u93a8"+ + "\0\u93e7\0\u9426\0\u9465\0\u94a4\0\u94e3\0\u9522\0\u9561\0\u95a0"+ + "\0\u95df\0\u961e\0\u965d\0\u969c\0\u96db\0\u971a\0\u9759\0\u9798"+ + "\0\u97d7\0\u9816\0\u9855\0\u9894\0\u98d3\0\u9912\0\u9951\0\u9990"+ + "\0\u99cf\0\u9a0e\0\u9a4d\0\u9a8c\0\u9acb\0\u9b0a\0\u9b49\0\u9b88"+ + "\0\u9bc7\0\u9c06\0\u9c45\0\u9c84\0\u9cc3\0\u9d02\0\u9d41\0\u9d80"+ + "\0\u9dbf\0\u9dfe\0\u9e3d\0\u9e7c\0\u9ebb\0\u9efa\0\u9f39\0\u9f78"+ + "\0\u9fb7\0\u9ff6\0\ua035\0\ua074\0\ua0b3\0\ua0f2\0\ua131\0\ua170"+ + "\0\ua1af\0\ua1ee\0\ua22d\0\ua26c\0\ua2ab\0\ua2ea\0\ua329\0\ua368"+ + "\0\ua3a7\0\ua3e6\0\ua425\0\ua464\0\ua4a3\0\ua4e2\0\ua521\0\ua560"+ + "\0\ua59f\0\ua5de\0\ua61d\0\ua65c\0\ua69b\0\ua6da\0\ua719\0\ua758"+ + "\0\ua797\0\ua7d6\0\ua815\0\ua854\0\ua893\0\ua8d2\0\ua911\0\ua950"+ + "\0\ua98f\0\ua9ce\0\uaa0d\0\uaa4c\0\uaa8b\0\uaaca\0\uab09\0\uab48"+ + "\0\uab87\0\uabc6\0\uac05\0\uac44\0\uac83\0\uacc2\0\uad01\0\uad40"+ + "\0\uad7f\0\uadbe\0\uadfd\0\uae3c\0\uae7b\0\uaeba\0\uaef9\0\uaf38"+ + "\0\uaf77\0\uafb6\0\uaff5\0\ub034\0\ub073\0\ub0b2\0\ub0f1\0\ub130"+ + "\0\ub16f\0\ub1ae\0\ub1ed\0\ub22c\0\ub26b\0\ub2aa\0\ub2e9\0\ub328"+ + "\0\ub367\0\ub3a6\0\ub3e5\0\ub424\0\ub463\0\ub4a2\0\ub4e1\0\ub520"+ + "\0\ub55f\0\ub59e\0\ub5dd\0\ub61c\0\ub65b\0\ub69a\0\ub6d9\0\ub718"+ + "\0\ub757\0\ub796\0\ub7d5\0\ub814\0\ub853\0\ub892\0\ub8d1\0\ub910"+ + "\0\ub94f\0\ub98e\0\ub9cd\0\uba0c\0\uba4b\0\uba8a\0\ubac9\0\ubb08"+ + "\0\ubb47\0\ubb86\0\ubbc5\0\ubc04\0\ubc43\0\ubc82\0\ubcc1\0\ubd00"+ + "\0\ubd3f\0\ubd7e\0\ubdbd\0\ubdfc\0\ube3b\0\ube7a\0\ubeb9\0\ubef8"+ + "\0\ubf37\0\ubf76\0\ubfb5\0\ubff4\0\uc033\0\uc072\0\uc0b1\0\uc0f0"+ + "\0\uc12f\0\uc16e\0\uc1ad\0\uc1ec\0\uc22b\0\uc26a"; + + private static int [] zzUnpackRowMap() { + int [] result = new int[814]; + 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\4\1\6\1\7\1\10\1\4\1\11"+ + "\1\12\3\10\3\12\1\10\1\13\1\10\1\14\1\15"+ + "\1\16\1\4\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\4\1\42\1\4"+ + "\1\43\1\44\1\10\1\45\1\46\1\47\1\14\2\47"+ + "\1\10\1\50\1\51\1\12\1\52\1\53\1\54\1\55"+ + "\1\56\1\57\1\60\1\61\1\62\20\60\1\63\1\60"+ + "\1\64\51\60\1\65\1\61\1\62\21\65\1\63\1\66"+ + "\51\65\101\0\1\4\77\0\1\6\73\0\1\7\1\67"+ + "\1\70\74\7\5\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\0\15\10\1\0\2\10\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\15\0\1\71\1\72\1\73\1\74\1\0"+ + "\1\75\1\76\1\75\1\73\1\77\1\100\4\0\1\73"+ + "\3\0\1\73\1\100\1\73\20\0\1\74\12\0\1\75"+ + "\15\0\2\12\1\73\2\0\3\12\1\73\1\77\1\100"+ + "\4\0\1\73\3\0\1\73\1\100\1\73\33\0\1\12"+ + "\15\0\2\77\3\0\3\77\1\0\1\14\47\0\1\77"+ + "\13\0\13\10\1\0\1\10\4\0\1\101\1\102\1\0"+ + "\1\103\2\10\1\104\1\10\1\27\2\10\1\105\4\10"+ + "\1\0\1\10\1\106\1\0\1\10\1\0\5\10\4\0"+ + "\4\10\13\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\1\107\1\10\1\110\1\10\1\111\1\112\7\10\1\0"+ + "\1\10\1\113\1\0\1\114\1\0\5\10\4\0\4\10"+ + "\35\0\1\115\1\0\1\116\4\0\1\117\1\120\1\121"+ + "\1\0\1\122\5\0\1\123\3\0\1\124\27\0\13\10"+ + "\1\0\1\10\4\0\1\125\1\126\1\0\1\10\1\127"+ + "\2\10\1\130\10\10\1\0\2\10\1\0\1\10\1\0"+ + "\1\131\4\10\4\0\4\10\13\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\1\132\1\10\1\133\2\10\1\134"+ + "\2\10\1\135\4\10\1\0\2\10\1\0\1\10\1\0"+ + "\5\10\4\0\4\10\13\0\13\10\1\0\1\10\4\0"+ + "\1\10\1\136\1\0\15\10\1\0\1\137\1\10\1\0"+ + "\1\10\1\0\5\10\4\0\4\10\13\0\13\10\1\0"+ + "\1\10\4\0\2\10\1\0\1\140\1\10\1\141\2\10"+ + "\1\142\7\10\1\0\1\10\1\143\1\0\1\10\1\0"+ + "\5\10\4\0\4\10\13\0\13\10\1\0\1\10\4\0"+ + "\2\10\1\0\1\144\1\10\1\145\2\10\1\146\2\10"+ + "\1\147\3\10\1\150\1\0\1\10\1\151\1\0\1\10"+ + "\1\0\5\10\4\0\4\10\13\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\10\10\1\152\4\10\1\0\2\10"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\2\10\1\153\2\10"+ + "\1\154\2\10\1\155\4\10\1\0\1\10\1\156\1\0"+ + "\1\10\1\0\1\157\4\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\1\160\13\10\1\161"+ + "\1\0\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\1\101\1\10\1\0"+ + "\2\10\1\162\5\10\1\105\4\10\1\0\1\10\1\163"+ + "\1\0\1\164\1\0\5\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\3\10\1\165\1\10"+ + "\1\166\2\10\1\167\3\10\1\170\1\0\1\10\1\171"+ + "\1\0\1\10\1\0\2\10\1\172\2\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\6\10"+ + "\1\173\6\10\1\0\2\10\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\13\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\0\12\10\1\174\2\10\1\0\2\10\1\0\1\10"+ + "\1\0\5\10\4\0\4\10\13\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\15\10\1\0\1\10\1\175\1\0"+ + "\1\10\1\0\5\10\4\0\4\10\67\0\1\14\22\0"+ + "\13\10\1\0\1\10\4\0\2\10\1\0\2\10\1\176"+ + "\12\10\1\0\1\10\1\177\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\13\0\13\10\1\0\1\10\4\0\1\10"+ + "\1\200\1\0\1\10\1\201\1\10\1\202\2\10\1\203"+ + "\1\204\1\205\1\206\3\10\1\0\2\10\1\0\1\207"+ + "\1\0\3\10\1\210\1\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\2\10\1\211\1\212"+ + "\1\213\1\214\1\215\2\10\1\216\1\217\1\10\1\220"+ + "\1\0\2\10\1\0\1\10\1\0\2\10\1\221\2\10"+ + "\4\0\4\10\13\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\0\1\222\1\10\1\223\2\10\1\224\7\10\1\0"+ + "\1\10\1\225\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\15\10"+ + "\1\0\2\10\1\0\1\10\1\0\1\226\4\10\4\0"+ + "\4\10\13\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\2\10\1\227\12\10\1\0\2\10\1\0\1\10\1\0"+ + "\5\10\4\0\4\10\13\0\13\10\1\0\1\10\4\0"+ + "\2\10\1\0\1\230\1\10\1\216\2\10\1\231\4\10"+ + "\1\232\2\10\1\0\2\10\1\0\1\10\1\0\2\10"+ + "\1\233\2\10\4\0\4\10\72\0\1\14\17\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\2\10\1\234\12\10"+ + "\1\0\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\1\235"+ + "\1\10\1\236\12\10\1\0\2\10\1\0\1\10\1\0"+ + "\5\10\4\0\4\10\6\0\1\60\2\0\20\60\1\0"+ + "\1\60\1\0\51\60\2\0\1\62\74\0\2\237\1\0"+ + "\4\237\1\240\4\237\2\240\1\241\51\237\1\240\6\237"+ + "\1\65\2\0\21\65\2\0\51\65\2\237\1\0\74\237"+ + "\2\0\1\70\103\0\1\71\1\72\1\73\2\0\1\75"+ + "\1\76\1\75\1\73\1\77\1\100\4\0\1\73\3\0"+ + "\1\73\1\100\1\73\33\0\1\75\15\0\2\72\3\0"+ + "\3\72\1\73\1\77\1\100\4\0\1\73\3\0\1\73"+ + "\1\100\34\0\1\72\15\0\1\242\1\243\2\0\5\243"+ + "\1\0\1\243\4\0\1\243\3\0\2\243\6\0\1\243"+ + "\5\0\1\243\7\0\1\243\7\0\1\243\15\0\1\244"+ + "\1\72\1\73\2\0\3\244\1\73\1\77\1\100\4\0"+ + "\1\73\3\0\1\73\1\100\1\73\33\0\1\244\15\0"+ + "\1\75\1\72\1\73\2\0\3\75\1\73\1\77\1\100"+ + "\4\0\1\73\3\0\1\73\1\100\1\73\33\0\1\75"+ + "\15\0\2\77\3\0\3\77\1\73\1\0\1\100\4\0"+ + "\1\73\3\0\1\73\1\100\34\0\1\77\15\0\2\245"+ + "\3\0\3\245\3\0\1\246\23\0\1\246\21\0\1\245"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\1\247"+ + "\14\10\1\0\2\10\1\0\1\10\1\0\5\10\4\0"+ + "\4\10\13\0\13\10\1\0\1\10\4\0\2\10\1\250"+ + "\15\10\1\0\2\10\1\0\1\164\1\0\5\10\4\0"+ + "\4\10\13\0\13\10\1\0\1\10\4\0\1\10\1\251"+ + "\1\0\3\10\1\252\4\10\1\145\4\10\1\0\2\10"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\5\10\1\253\4\10"+ + "\1\254\2\10\1\0\2\10\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\13\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\0\2\10\1\145\12\10\1\0\2\10\1\0\1\10"+ + "\1\0\5\10\4\0\4\10\13\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\3\10\1\255\11\10\1\0\2\10"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\3\10\1\256\11\10"+ + "\1\0\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\7\10"+ + "\1\257\5\10\1\0\2\10\1\0\1\10\1\0\3\10"+ + "\1\260\1\10\4\0\4\10\13\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\14\10\1\261\1\0\2\10\1\0"+ + "\1\10\1\0\5\10\4\0\4\10\13\0\13\10\1\0"+ + "\1\10\4\0\2\10\1\0\4\10\1\262\10\10\1\0"+ + "\2\10\1\0\1\10\1\0\5\10\4\0\4\10\13\0"+ + "\13\10\1\0\1\10\4\0\2\10\1\0\15\10\1\0"+ + "\2\10\1\0\1\10\1\0\1\263\4\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\15\10"+ + "\1\264\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\60\0\1\265\53\0\1\265\112\0\1\266\74\0\1\267"+ + "\105\0\1\270\64\0\1\271\117\0\1\272\67\0\1\273"+ + "\33\0\13\10\1\0\1\10\4\0\2\10\1\0\15\10"+ + "\1\274\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\4\10"+ + "\1\275\4\10\1\152\3\10\1\276\2\10\1\0\1\277"+ + "\1\0\5\10\4\0\4\10\13\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\2\10\1\300\12\10\1\0\2\10"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\2\10\1\301\12\10"+ + "\1\0\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\6\10"+ + "\1\220\6\10\1\0\2\10\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\13\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\0\15\10\1\0\2\10\1\0\1\302\1\0\5\10"+ + "\4\0\4\10\13\0\13\10\1\0\1\10\4\0\1\303"+ + "\1\10\1\0\10\10\1\304\1\152\3\10\1\0\2\10"+ + "\1\0\1\305\1\0\5\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\4\10\1\306\3\10"+ + "\1\307\1\152\1\310\2\10\1\0\1\10\1\311\1\0"+ + "\1\312\1\0\5\10\4\0\4\10\13\0\13\10\1\0"+ + "\1\10\4\0\2\10\1\0\5\10\1\313\7\10\1\0"+ + "\2\10\1\0\1\10\1\0\5\10\4\0\4\10\13\0"+ + "\13\10\1\0\1\10\4\0\2\10\1\0\15\10\1\0"+ + "\2\10\1\0\1\314\1\0\5\10\4\0\4\10\13\0"+ + "\13\10\1\0\1\10\4\0\2\10\1\0\2\10\1\315"+ + "\12\10\1\0\1\10\1\316\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\13\0\13\10\1\0\1\10\4\0\1\10"+ + "\1\317\1\0\15\10\1\0\2\10\1\0\1\320\1\0"+ + "\5\10\4\0\4\10\13\0\13\10\1\0\1\10\4\0"+ + "\2\10\1\0\4\10\1\321\10\10\1\0\2\10\1\0"+ + "\1\10\1\0\5\10\4\0\4\10\13\0\13\10\1\0"+ + "\1\10\4\0\1\10\1\322\1\0\5\10\1\323\3\10"+ + "\1\324\3\10\1\0\1\10\1\325\1\0\1\10\1\0"+ + "\5\10\4\0\4\10\13\0\13\10\1\0\1\10\4\0"+ + "\2\10\1\0\15\10\1\0\2\10\1\0\1\326\1\0"+ + "\5\10\4\0\2\10\1\327\1\10\13\0\13\10\1\0"+ + "\1\10\4\0\2\10\1\0\15\10\1\0\2\10\1\0"+ + "\1\10\1\0\1\330\4\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\15\10\1\0\2\10"+ + "\1\0\1\326\1\0\5\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\12\10\1\331\2\10"+ + "\1\332\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\2\10"+ + "\1\317\7\10\1\333\2\10\1\0\2\10\1\0\1\10"+ + "\1\0\2\10\1\334\2\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\2\10\1\335\5\10"+ + "\1\336\4\10\1\0\2\10\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\13\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\0\15\10\1\0\2\10\1\0\1\10\1\0\5\10"+ + "\4\0\1\10\1\337\2\10\13\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\2\10\1\340\12\10\1\0\2\10"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\6\10\1\152\6\10"+ + "\1\0\2\10\1\0\1\260\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\1\10\1\341\1\0"+ + "\1\342\4\10\1\343\7\10\1\344\2\10\1\0\1\10"+ + "\1\0\5\10\4\0\4\10\13\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\10\10\1\345\4\10\1\0\2\10"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\15\10\1\0\1\10"+ + "\1\346\1\0\1\10\1\0\5\10\4\0\4\10\13\0"+ + "\13\10\1\0\1\10\4\0\2\10\1\0\4\10\1\347"+ + "\10\10\1\0\2\10\1\0\1\10\1\0\5\10\4\0"+ + "\4\10\13\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\1\350\1\10\1\351\12\10\1\0\2\10\1\0\1\10"+ + "\1\0\5\10\4\0\4\10\13\0\13\10\1\0\1\10"+ + "\4\0\1\352\1\10\1\0\1\10\1\353\4\10\1\354"+ + "\2\10\1\355\1\10\1\356\1\10\1\357\1\360\1\361"+ + "\1\0\1\362\1\0\1\363\4\10\4\0\4\10\13\0"+ + "\13\10\1\0\1\10\4\0\1\10\1\364\1\0\15\10"+ + "\1\0\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\2\10"+ + "\1\365\12\10\1\0\2\10\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\13\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\0\2\10\1\366\12\10\1\0\1\10\1\367\1\0"+ + "\1\10\1\0\5\10\4\0\4\10\13\0\13\10\1\0"+ + "\1\10\4\0\1\10\1\370\1\0\12\10\1\371\2\10"+ + "\1\0\2\10\1\0\1\10\1\0\1\372\4\10\4\0"+ + "\4\10\13\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\2\10\1\373\12\10\1\0\2\10\1\0\1\10\1\0"+ + "\5\10\4\0\4\10\13\0\13\10\1\0\1\10\4\0"+ + "\2\10\1\0\15\10\1\0\1\10\1\27\1\0\1\10"+ + "\1\0\5\10\4\0\4\10\13\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\4\10\1\374\10\10\1\0\2\10"+ + "\1\0\1\326\1\0\5\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\11\10\1\350\3\10"+ + "\1\0\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\1\10"+ + "\1\375\13\10\1\0\2\10\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\13\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\0\5\10\1\376\7\10\1\0\2\10\1\0\1\10"+ + "\1\0\5\10\4\0\4\10\13\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\15\10\1\0\2\10\1\0\1\377"+ + "\1\0\5\10\4\0\4\10\13\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\11\10\1\u0100\3\10\1\0\2\10"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\3\10\1\u0101\4\10"+ + "\1\u0102\4\10\1\0\2\10\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\13\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\0\1\10\1\152\13\10\1\0\2\10\1\0\1\10"+ + "\1\0\5\10\4\0\4\10\13\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\1\10\1\u0103\13\10\1\0\2\10"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\2\10\1\u0104\1\u0105"+ + "\1\u0106\10\10\1\0\2\10\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\13\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\0\6\10\1\u0107\6\10\1\0\2\10\1\0\1\10"+ + "\1\0\5\10\4\0\4\10\13\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\15\10\1\0\1\10\1\u0108\1\0"+ + "\1\10\1\0\5\10\4\0\4\10\13\0\13\10\1\0"+ + "\1\10\4\0\2\10\1\0\10\10\1\u0109\4\10\1\0"+ + "\2\10\1\0\1\10\1\0\5\10\4\0\4\10\13\0"+ + "\13\10\1\0\1\10\4\0\2\10\1\0\11\10\1\u010a"+ + "\3\10\1\0\2\10\1\0\1\10\1\0\5\10\4\0"+ + "\4\10\13\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\2\10\1\u010b\12\10\1\0\2\10\1\0\1\u010c\1\0"+ + "\5\10\4\0\4\10\13\0\13\10\1\0\1\10\4\0"+ + "\2\10\1\0\2\10\1\u010d\12\10\1\0\2\10\1\0"+ + "\1\10\1\0\5\10\4\0\4\10\13\0\13\10\1\0"+ + "\1\10\4\0\1\10\1\u010e\1\0\3\10\1\u010f\1\u0110"+ + "\4\10\1\u0111\1\10\1\u0112\1\10\1\0\2\10\1\0"+ + "\1\10\1\0\5\10\4\0\4\10\13\0\13\10\1\0"+ + "\1\10\4\0\2\10\1\0\12\10\1\u0113\2\10\1\0"+ + "\2\10\1\0\1\10\1\0\5\10\4\0\4\10\13\0"+ + "\13\10\1\0\1\10\4\0\2\10\1\0\10\10\1\u0114"+ + "\4\10\1\0\2\10\1\0\1\10\1\0\5\10\4\0"+ + "\4\10\13\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\10\10\1\u0115\4\10\1\0\2\10\1\0\1\10\1\0"+ + "\1\330\4\10\4\0\4\10\13\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\2\10\1\u0116\1\u0117\11\10\1\0"+ + "\2\10\1\0\1\10\1\0\5\10\4\0\4\10\13\0"+ + "\13\10\1\0\1\10\4\0\2\10\1\0\15\10\1\0"+ + "\1\10\1\u0118\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\15\10"+ + "\1\0\2\10\1\0\1\10\1\0\4\10\1\u0119\4\0"+ + "\4\10\13\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\5\10\1\u011a\7\10\1\0\2\10\1\0\1\10\1\0"+ + "\5\10\4\0\4\10\13\0\13\10\1\0\1\10\4\0"+ + "\1\10\1\u011b\1\0\15\10\1\0\2\10\1\0\1\10"+ + "\1\0\1\u011c\4\10\4\0\4\10\13\0\13\10\1\0"+ + "\1\10\4\0\1\10\1\u011d\1\0\15\10\1\0\2\10"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\4\10\1\u011e\3\10"+ + "\1\u011f\4\10\1\0\2\10\1\0\1\10\1\0\1\u0120"+ + "\4\10\4\0\4\10\13\0\13\10\1\0\1\10\4\0"+ + "\1\10\1\u0121\1\0\15\10\1\0\2\10\1\0\1\10"+ + "\1\0\5\10\4\0\4\10\13\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\6\10\1\u0122\2\10\1\u0123\3\10"+ + "\1\0\2\10\1\0\1\10\1\0\1\10\1\u011d\3\10"+ + "\4\0\1\10\1\u0124\2\10\13\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\3\10\1\u0125\11\10\1\0\2\10"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\1\10\1\u0126\1\0\4\10\1\u0127"+ + "\10\10\1\0\2\10\1\0\1\10\1\0\5\10\4\0"+ + "\4\10\13\0\13\10\1\0\1\10\4\0\1\10\1\u0128"+ + "\1\0\4\10\1\u0129\10\10\1\0\2\10\1\0\1\10"+ + "\1\0\5\10\4\0\4\10\13\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\5\10\1\u012a\7\10\1\0\2\10"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\4\10\1\u012b\10\10"+ + "\1\0\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\4\10"+ + "\1\330\10\10\1\0\2\10\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\13\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\0\15\10\1\0\2\10\1\0\1\10\1\0\2\10"+ + "\1\u012c\2\10\4\0\4\10\13\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\6\10\1\u012d\6\10\1\0\2\10"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\10\10\1\u012e\4\10"+ + "\1\0\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\15\0\1\241\4\0\3\241\51\0\1\241\15\0\1\u012f"+ + "\4\0\3\u012f\51\0\1\u012f\15\0\1\242\1\243\1\73"+ + "\1\0\5\243\1\0\1\243\4\0\1\243\3\0\2\243"+ + "\1\73\5\0\1\243\5\0\1\243\7\0\1\243\7\0"+ + "\1\243\15\0\2\u0130\1\73\1\0\5\u0130\1\0\1\u0130"+ + "\4\0\1\u0130\3\0\2\u0130\1\73\5\0\1\u0130\5\0"+ + "\1\u0130\7\0\1\u0130\7\0\1\u0130\15\0\1\u0131\1\72"+ + "\1\73\2\0\3\u0131\1\73\1\77\1\100\4\0\1\73"+ + "\3\0\1\73\1\100\1\73\33\0\1\u0131\15\0\2\245"+ + "\3\0\3\245\1\73\6\0\1\73\3\0\1\73\35\0"+ + "\1\245\15\0\2\245\3\0\3\245\51\0\1\245\13\0"+ + "\13\10\1\0\1\10\4\0\2\10\1\0\10\10\1\145"+ + "\4\10\1\0\2\10\1\0\1\10\1\0\5\10\4\0"+ + "\4\10\13\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\1\10\1\u0132\13\10\1\0\1\10\1\u0133\1\0\1\10"+ + "\1\0\5\10\4\0\4\10\13\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\2\10\1\u0125\1\10\1\u0106\10\10"+ + "\1\0\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\15\10"+ + "\1\0\1\10\1\326\1\0\1\10\1\0\5\10\4\0"+ + "\4\10\13\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\15\10\1\0\2\10\1\0\1\u0134\1\0\5\10\4\0"+ + "\4\10\13\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\15\10\1\0\2\10\1\0\1\333\1\0\5\10\4\0"+ + "\4\10\13\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\15\10\1\0\2\10\1\14\1\10\1\0\5\10\4\0"+ + "\4\10\13\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\3\10\1\u0135\11\10\1\0\2\10\1\0\1\10\1\0"+ + "\5\10\4\0\4\10\13\0\13\10\1\0\1\10\4\0"+ + "\2\10\1\0\10\10\1\105\4\10\1\0\2\10\1\0"+ + "\1\10\1\0\5\10\4\0\4\10\13\0\13\10\1\0"+ + "\1\10\4\0\2\10\1\0\15\10\1\u0136\2\10\1\0"+ + "\1\10\1\0\5\10\3\0\1\14\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\2\10\1\u0137\12\10"+ + "\1\0\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\35\0\1\u0138\1\0\1\u0139\5\0\1\u013a\1\0\1\u013b"+ + "\1\0\1\u013c\10\0\1\u013d\52\0\1\14\103\0\1\265"+ + "\72\0\1\u013e\4\0\1\u013f\101\0\1\u0140\111\0\1\u0141"+ + "\55\0\1\u0142\105\0\1\u0143\70\0\1\u0144\47\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\2\10\1\u0145\2\10"+ + "\1\u0146\7\10\1\0\2\10\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\35\0\1\u0147\54\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\4\10\1\u0148\10\10\1\0\2\10"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\1\10\1\u0149\1\0\15\10\1\0"+ + "\2\10\1\0\1\10\1\0\5\10\4\0\4\10\13\0"+ + "\13\10\1\0\1\10\4\0\2\10\1\0\10\10\1\u014a"+ + "\4\10\1\0\2\10\1\0\1\10\1\0\5\10\4\0"+ + "\4\10\13\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\4\10\1\u014b\10\10\1\0\2\10\1\0\1\u014c\1\0"+ + "\5\10\4\0\1\152\3\10\13\0\13\10\1\0\1\10"+ + "\4\0\1\10\1\u014d\1\0\15\10\1\0\2\10\1\0"+ + "\1\u014e\1\0\1\u014f\4\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\2\10\1\u0150\12\10"+ + "\1\0\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\4\10"+ + "\1\u0151\10\10\1\0\2\10\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\13\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\0\1\u0152\4\10\1\152\7\10\1\0\2\10\1\0"+ + "\1\10\1\0\5\10\4\0\4\10\13\0\13\10\1\0"+ + "\1\10\4\0\2\10\1\0\12\10\1\u0118\2\10\1\0"+ + "\2\10\1\0\1\10\1\0\5\10\4\0\4\10\13\0"+ + "\13\10\1\0\1\10\4\0\2\10\1\0\15\10\1\0"+ + "\2\10\1\0\1\10\1\0\4\10\1\350\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\3\10"+ + "\1\316\11\10\1\0\2\10\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\13\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\0\2\10\1\365\12\10\1\0\2\10\1\0\1\10"+ + "\1\0\2\10\1\u0153\2\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\6\10\1\u0154\6\10"+ + "\1\0\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\12\10"+ + "\1\u0155\2\10\1\0\2\10\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\13\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\0\10\10\1\u0156\4\10\1\0\2\10\1\0\1\10"+ + "\1\0\5\10\4\0\4\10\13\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\3\10\1\152\11\10\1\0\2\10"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\2\10\1\u0125\12\10"+ + "\1\0\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\4\10"+ + "\1\u0157\10\10\1\0\2\10\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\13\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\250\15\10\1\0\2\10\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\13\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\0\15\10\1\0\2\10\1\0\1\10\1\0\3\10"+ + "\1\152\1\10\4\0\4\10\13\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\6\10\1\321\6\10\1\0\2\10"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\15\10\1\0\2\10"+ + "\1\0\1\10\1\0\5\10\4\0\1\10\1\u0158\2\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\1\10"+ + "\1\u0159\13\10\1\0\2\10\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\13\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\0\4\10\1\152\10\10\1\0\2\10\1\0\1\10"+ + "\1\0\5\10\4\0\4\10\13\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\15\10\1\0\2\10\1\0\1\10"+ + "\1\0\2\10\1\u015a\2\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\2\10\1\152\12\10"+ + "\1\0\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\11\10"+ + "\1\u0134\3\10\1\0\2\10\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\56\0\1\u015b\33\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\2\10\1\260\12\10\1\0\2\10"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\15\10\1\u015c\2\10"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\5\10\1\u015d\7\10"+ + "\1\0\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\2\10"+ + "\1\u015e\12\10\1\0\2\10\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\13\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\0\15\10\1\0\2\10\1\0\1\10\1\0\5\10"+ + "\4\0\1\10\1\152\2\10\13\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\15\10\1\344\2\10\1\0\1\10"+ + "\1\0\5\10\4\0\4\10\13\0\13\10\1\0\1\10"+ + "\4\0\1\10\1\u015f\1\0\15\10\1\0\2\10\1\0"+ + "\1\10\1\0\5\10\4\0\4\10\13\0\13\10\1\0"+ + "\1\10\4\0\2\10\1\0\15\10\1\0\2\10\1\0"+ + "\1\10\1\0\1\10\1\u0160\3\10\4\0\4\10\60\0"+ + "\1\u0161\31\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\4\10\1\u0162\10\10\1\0\2\10\1\0\1\10\1\0"+ + "\5\10\4\0\4\10\13\0\13\10\1\0\1\10\4\0"+ + "\2\10\1\0\6\10\1\152\6\10\1\0\2\10\1\0"+ + "\1\10\1\0\5\10\4\0\4\10\13\0\13\10\1\0"+ + "\1\10\4\0\2\10\1\0\14\10\1\u0163\1\0\2\10"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\3\10\1\330\11\10"+ + "\1\0\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\1\10\1\u0164\1\0"+ + "\15\10\1\0\2\10\1\0\1\10\1\0\5\10\4\0"+ + "\4\10\13\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\2\10\1\27\12\10\1\u0165\2\10\1\0\1\10\1\0"+ + "\5\10\4\0\4\10\13\0\13\10\1\0\1\10\4\0"+ + "\2\10\1\0\12\10\1\u0166\2\10\1\0\2\10\1\0"+ + "\1\10\1\0\5\10\4\0\4\10\13\0\13\10\1\0"+ + "\1\10\4\0\2\10\1\0\2\10\1\u0167\1\u0168\11\10"+ + "\1\0\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\12\10"+ + "\1\u0169\2\10\1\0\2\10\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\13\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\0\12\10\1\u016a\2\10\1\0\2\10\1\0\1\10"+ + "\1\0\5\10\4\0\4\10\34\0\1\u016b\10\0\1\u016c"+ + "\12\0\1\u016d\1\0\1\u016e\2\0\1\u016f\24\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\2\10\1\u0170\12\10"+ + "\1\0\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\1\10"+ + "\1\u0171\13\10\1\0\2\10\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\13\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\0\4\10\1\152\1\u0172\4\10\1\u0173\2\10\1\0"+ + "\2\10\1\0\1\10\1\0\5\10\4\0\4\10\13\0"+ + "\13\10\1\0\1\10\4\0\2\10\1\0\5\10\1\u0174"+ + "\7\10\1\0\2\10\1\0\1\10\1\0\5\10\4\0"+ + "\4\10\13\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\1\10\1\u0175\13\10\1\0\2\10\1\0\1\10\1\0"+ + "\3\10\1\330\1\10\4\0\4\10\13\0\13\10\1\0"+ + "\1\10\4\0\2\10\1\0\13\10\1\152\1\10\1\0"+ + "\2\10\1\0\1\10\1\0\5\10\4\0\4\10\13\0"+ + "\13\10\1\0\1\10\4\0\2\10\1\0\15\10\1\0"+ + "\1\10\1\u0176\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\15\10"+ + "\1\0\2\10\1\0\1\u0177\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\1\10"+ + "\1\152\2\10\1\u0178\4\10\1\253\3\10\1\0\2\10"+ + "\1\0\1\u0179\1\0\5\10\4\0\1\152\3\10\13\0"+ + "\13\10\1\0\1\10\4\0\1\10\1\326\1\0\15\10"+ + "\1\0\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\6\10"+ + "\1\u017a\6\10\1\0\2\10\1\0\1\10\1\0\1\u017b"+ + "\4\10\4\0\4\10\13\0\13\10\1\0\1\10\4\0"+ + "\2\10\1\0\15\10\1\0\1\10\1\u017c\1\0\1\10"+ + "\1\0\5\10\4\0\4\10\13\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\11\10\1\u017d\3\10\1\0\2\10"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\15\10\1\0\1\10"+ + "\1\u017e\1\0\1\10\1\0\5\10\4\0\4\10\13\0"+ + "\13\10\1\0\1\10\4\0\2\10\1\0\4\10\1\u017f"+ + "\10\10\1\0\2\10\1\0\1\10\1\0\5\10\4\0"+ + "\4\10\13\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\14\10\1\u0180\1\0\2\10\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\13\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\0\4\10\1\u0181\10\10\1\0\2\10\1\0\1\10"+ + "\1\0\5\10\4\0\4\10\13\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\15\10\1\0\2\10\1\0\1\152"+ + "\1\0\5\10\4\0\4\10\13\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\15\10\1\u0182\2\10\1\14\1\10"+ + "\1\0\5\10\4\0\4\10\13\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\15\10\1\u0183\2\10\1\0\1\10"+ + "\1\0\5\10\4\0\4\10\13\0\13\10\1\0\1\10"+ + "\4\0\1\10\1\u0184\1\0\15\10\1\0\2\10\1\0"+ + "\1\10\1\0\5\10\4\0\4\10\13\0\13\10\1\0"+ + "\1\10\4\0\2\10\1\0\15\10\1\u0185\2\10\1\0"+ + "\1\10\1\0\5\10\4\0\4\10\13\0\13\10\1\0"+ + "\1\10\4\0\2\10\1\0\2\10\1\27\12\10\1\0"+ + "\2\10\1\0\1\10\1\0\5\10\4\0\4\10\13\0"+ + "\13\10\1\0\1\10\4\0\2\10\1\0\3\10\1\u0186"+ + "\11\10\1\0\2\10\1\0\1\10\1\0\5\10\4\0"+ + "\4\10\13\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\1\u0187\14\10\1\0\2\10\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\13\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\0\15\10\1\0\1\10\1\u0188\1\0\1\10\1\0"+ + "\5\10\4\0\4\10\13\0\13\10\1\0\1\10\4\0"+ + "\2\10\1\0\2\10\1\u0189\12\10\1\0\2\10\1\0"+ + "\1\10\1\0\5\10\4\0\4\10\13\0\13\10\1\0"+ + "\1\10\4\0\2\10\1\0\4\10\1\u018a\10\10\1\0"+ + "\2\10\1\0\1\10\1\0\5\10\4\0\4\10\13\0"+ + "\13\10\1\0\1\10\4\0\2\10\1\0\2\10\1\u011a"+ + "\2\10\1\u011b\7\10\1\0\2\10\1\0\1\10\1\0"+ + "\5\10\4\0\4\10\13\0\13\10\1\0\1\10\4\0"+ + "\1\10\1\u018b\1\0\4\10\1\152\10\10\1\0\2\10"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\1\10\1\u018c\13\10"+ + "\1\0\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\2\10"+ + "\1\u018d\12\10\1\0\2\10\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\13\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\0\15\10\1\0\2\10\1\0\1\10\1\250\5\10"+ + "\4\0\4\10\13\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\0\5\10\1\u018e\7\10\1\0\2\10\1\0\1\10"+ + "\1\0\5\10\4\0\4\10\13\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\10\10\1\346\4\10\1\0\2\10"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\1\u018f\11\10\1\u0190"+ + "\2\10\1\0\2\10\1\0\1\10\1\0\5\10\4\0"+ + "\4\10\13\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\4\10\1\u0191\10\10\1\0\2\10\1\0\1\10\1\0"+ + "\5\10\4\0\4\10\13\0\13\10\1\0\1\10\4\0"+ + "\2\10\1\0\11\10\1\u0192\3\10\1\0\2\10\1\0"+ + "\1\10\1\0\5\10\4\0\4\10\13\0\13\10\1\0"+ + "\1\10\4\0\2\10\1\0\1\u0193\14\10\1\0\2\10"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\1\10\1\152\1\0\15\10\1\0"+ + "\2\10\1\0\1\10\1\0\5\10\4\0\4\10\13\0"+ + "\13\10\1\0\1\10\4\0\2\10\1\0\15\10\1\0"+ + "\1\u0194\1\10\1\0\1\152\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\10\10"+ + "\1\326\4\10\1\0\2\10\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\13\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\0\11\10\1\152\3\10\1\0\2\10\1\0\1\10"+ + "\1\0\5\10\4\0\4\10\13\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\15\10\1\0\2\10\1\0\1\10"+ + "\1\0\4\10\1\u0195\4\0\4\10\13\0\13\10\1\0"+ + "\1\10\4\0\2\10\1\0\15\10\1\u0196\2\10\1\0"+ + "\1\10\1\0\5\10\4\0\4\10\13\0\13\10\1\0"+ + "\1\10\4\0\2\10\1\0\15\10\1\0\1\10\1\152"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\15\10\1\0\2\10"+ + "\1\0\1\10\1\0\3\10\1\u0197\1\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\1\u0118\1\10\1\0"+ + "\15\10\1\0\2\10\1\0\1\10\1\0\5\10\4\0"+ + "\4\10\13\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\1\u0198\14\10\1\0\2\10\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\13\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\0\11\10\1\253\3\10\1\0\2\10\1\14\1\10"+ + "\1\0\5\10\4\0\4\10\13\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\10\10\1\u0199\4\10\1\0\2\10"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\2\10\1\u019a\12\10"+ + "\1\0\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\15\10"+ + "\1\u019b\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\15\10"+ + "\1\u019c\2\10\1\0\1\u019d\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\15\10"+ + "\1\u019e\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\1\10"+ + "\1\u0158\13\10\1\0\2\10\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\13\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\0\15\10\1\u019f\2\10\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\13\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\0\3\10\1\u01a0\11\10\1\0\2\10\1\0\1\10"+ + "\1\0\5\10\4\0\4\10\13\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\3\10\1\u01a1\11\10\1\0\2\10"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\7\10\1\u01a2\5\10"+ + "\1\0\2\10\1\0\1\152\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\15\10"+ + "\1\0\2\10\1\0\1\10\1\0\1\157\4\10\4\0"+ + "\4\10\13\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\5\10\1\260\7\10\1\0\2\10\1\0\1\10\1\0"+ + "\5\10\4\0\4\10\15\0\2\u01a3\1\73\1\0\5\u01a3"+ + "\1\0\1\u01a3\4\0\1\u01a3\3\0\2\u01a3\1\73\5\0"+ + "\1\u01a3\5\0\1\u01a3\7\0\1\u01a3\7\0\1\u01a3\15\0"+ + "\1\u01a4\1\72\1\73\2\0\3\u01a4\1\73\1\77\1\100"+ + "\4\0\1\73\3\0\1\73\1\100\1\73\33\0\1\u01a4"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\15\10"+ + "\1\u01a5\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\3\10"+ + "\1\u01a6\11\10\1\0\2\10\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\13\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\0\14\10\1\152\1\0\2\10\1\0\1\10\1\0"+ + "\5\10\4\0\4\10\13\0\13\10\1\0\1\10\4\0"+ + "\2\10\1\0\1\u01a7\14\10\1\0\2\10\1\0\1\10"+ + "\1\0\5\10\4\0\4\10\41\0\1\u01a8\14\0\1\u01a9"+ + "\33\0\13\10\1\0\1\10\4\0\2\10\1\0\15\10"+ + "\1\0\2\10\1\0\1\u01aa\1\0\5\10\4\0\4\10"+ + "\56\0\1\u01ab\55\0\1\u01ac\24\0\1\u01ad\65\0\1\u01ae"+ + "\66\0\1\u01af\72\0\1\u01b0\117\0\1\u01b1\55\0\1\u01b2"+ + "\124\0\1\u01b3\50\0\1\u01b4\123\0\1\u01b5\51\0\1\266"+ + "\110\0\1\u01b6\70\0\1\u01b7\50\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\10\10\1\u01b8\4\10\1\0\2\10"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\15\10\1\u01b9\2\10"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\60\0\1\250"+ + "\31\0\13\10\1\0\1\10\4\0\2\10\1\0\15\10"+ + "\1\0\1\10\1\u01ba\1\0\1\10\1\0\5\10\4\0"+ + "\4\10\13\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\4\10\1\u01bb\10\10\1\0\2\10\1\0\1\10\1\0"+ + "\5\10\4\0\4\10\13\0\13\10\1\0\1\10\4\0"+ + "\2\10\1\0\15\10\1\0\1\10\1\233\1\0\1\10"+ + "\1\0\5\10\4\0\4\10\13\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\1\u01bc\14\10\1\0\2\10\1\0"+ + "\1\10\1\0\5\10\4\0\4\10\13\0\13\10\1\0"+ + "\1\10\4\0\2\10\1\0\5\10\1\u011b\7\10\1\0"+ + "\2\10\1\0\1\10\1\0\5\10\4\0\4\10\13\0"+ + "\13\10\1\0\1\10\4\0\2\10\1\0\15\10\1\14"+ + "\2\10\1\0\1\10\1\0\5\10\4\0\4\10\13\0"+ + "\13\10\1\0\1\10\4\0\2\10\1\0\4\10\1\u01bd"+ + "\10\10\1\0\2\10\1\0\1\10\1\0\5\10\4\0"+ + "\4\10\13\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\2\10\1\u01be\7\10\1\u01bf\2\10\1\0\1\10\1\u01c0"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\1\152\1\10\1\0\15\10\1\0"+ + "\2\10\1\0\1\10\1\0\5\10\4\0\4\10\13\0"+ + "\13\10\1\0\1\10\4\0\2\10\1\0\10\10\1\u01c1"+ + "\4\10\1\0\2\10\1\0\1\10\1\0\5\10\4\0"+ + "\4\10\13\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\15\10\1\0\2\10\1\0\1\10\1\0\1\u01c2\4\10"+ + "\4\0\4\10\13\0\13\10\1\0\1\10\4\0\1\10"+ + "\1\u011b\1\0\15\10\1\0\2\10\1\0\1\10\1\0"+ + "\5\10\4\0\4\10\13\0\13\10\1\0\1\10\4\0"+ + "\2\10\1\0\15\10\1\u01c3\2\10\1\0\1\10\1\0"+ + "\5\10\4\0\4\10\13\0\13\10\1\0\1\10\4\0"+ + "\2\10\1\0\10\10\1\330\4\10\1\0\2\10\1\0"+ + "\1\10\1\0\5\10\4\0\4\10\13\0\13\10\1\0"+ + "\1\10\4\0\2\10\1\0\15\10\1\0\2\10\1\0"+ + "\1\10\1\0\2\10\1\260\2\10\4\0\4\10\13\0"+ + "\13\10\1\0\1\10\4\0\2\10\1\14\15\10\1\0"+ + "\2\10\1\0\1\10\1\0\5\10\4\0\4\10\13\0"+ + "\13\10\1\0\1\10\4\0\2\10\1\0\1\u01c4\14\10"+ + "\1\0\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\15\10"+ + "\1\u01c5\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\15\10"+ + "\1\u01c6\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\47\0\1\u01c7\104\0\1\u01c8\34\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\7\10\1\334\5\10\1\0\2\10"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\15\10\1\u01c9\2\10"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\4\10\1\u01ca\10\10"+ + "\1\0\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\15\10"+ + "\1\0\2\10\1\0\1\10\1\0\2\10\1\u01cb\2\10"+ + "\4\0\4\10\43\0\1\u01cc\46\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\1\u01cd\14\10\1\0\2\10\1\0"+ + "\1\10\1\0\5\10\4\0\4\10\13\0\13\10\1\0"+ + "\1\10\4\0\2\10\1\0\15\10\1\u01ce\2\10\1\0"+ + "\1\10\1\0\5\10\4\0\4\10\13\0\13\10\1\0"+ + "\1\10\4\0\2\10\1\0\15\10\1\u01cf\2\10\1\0"+ + "\1\10\1\0\5\10\4\0\4\10\60\0\1\u0144\31\0"+ + "\13\10\1\0\1\10\4\0\2\10\1\0\11\10\1\330"+ + "\3\10\1\0\2\10\1\0\1\10\1\0\5\10\4\0"+ + "\4\10\13\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\15\10\1\0\1\10\1\u01d0\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\13\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\0\1\u01d1\14\10\1\0\1\10\1\u0166\1\0\1\10"+ + "\1\0\5\10\4\0\4\10\13\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\10\10\1\334\4\10\1\0\2\10"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\1\u0155\14\10\1\0"+ + "\2\10\1\0\1\10\1\0\5\10\4\0\4\10\37\0"+ + "\1\u01d2\115\0\1\u01d3\61\0\1\u01d4\113\0\1\u01d5\67\0"+ + "\1\u01d6\42\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\10\10\1\u01d7\4\10\1\0\2\10\1\0\1\10\1\0"+ + "\5\10\4\0\4\10\13\0\13\10\1\0\1\10\4\0"+ + "\2\10\1\0\15\10\1\u01d8\2\10\1\0\1\10\1\0"+ + "\5\10\4\0\4\10\13\0\13\10\1\0\1\10\4\0"+ + "\2\10\1\0\3\10\1\u01d9\11\10\1\0\2\10\1\0"+ + "\1\10\1\0\5\10\4\0\4\10\13\0\13\10\1\0"+ + "\1\10\4\0\2\10\1\0\3\10\1\u01da\11\10\1\0"+ + "\2\10\1\0\1\10\1\0\5\10\4\0\4\10\13\0"+ + "\13\10\1\0\1\10\4\0\2\10\1\0\15\10\1\0"+ + "\1\u01db\1\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\15\10"+ + "\1\u01dc\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\10\10"+ + "\1\u01dd\4\10\1\0\2\10\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\13\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\0\15\10\1\0\1\10\1\u01de\1\0\1\10\1\0"+ + "\5\10\4\0\4\10\13\0\13\10\1\0\1\10\4\0"+ + "\2\10\1\0\4\10\1\u01df\10\10\1\0\2\10\1\0"+ + "\1\10\1\0\5\10\4\0\4\10\13\0\13\10\1\0"+ + "\1\10\4\0\2\10\1\0\3\10\1\u01e0\11\10\1\0"+ + "\1\10\1\u01e1\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\2\10"+ + "\1\371\7\10\1\233\2\10\1\0\2\10\1\0\1\10"+ + "\1\0\5\10\4\0\4\10\13\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\4\10\1\u01e2\10\10\1\0\2\10"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\14\10\1\334\1\0"+ + "\2\10\1\0\1\10\1\0\5\10\4\0\4\10\13\0"+ + "\13\10\1\0\1\10\4\0\2\10\1\0\4\10\1\u01e3"+ + "\10\10\1\0\2\10\1\0\1\10\1\0\5\10\4\0"+ + "\4\10\13\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\2\10\1\334\12\10\1\0\2\10\1\0\1\10\1\0"+ + "\5\10\4\0\4\10\13\0\13\10\1\0\1\10\4\0"+ + "\2\10\1\0\15\10\1\u01e4\2\10\1\0\1\10\1\0"+ + "\5\10\4\0\4\10\13\0\13\10\1\0\1\10\4\0"+ + "\2\10\1\0\5\10\1\u01e5\7\10\1\0\2\10\1\0"+ + "\1\10\1\0\5\10\4\0\4\10\60\0\1\u0144\4\0"+ + "\1\u0144\61\0\1\u01e6\41\0\13\10\1\0\1\10\4\0"+ + "\2\10\1\0\15\10\1\0\2\10\1\0\1\10\1\0"+ + "\3\10\1\u01e7\1\10\4\0\4\10\35\0\1\u01e8\54\0"+ + "\13\10\1\0\1\10\4\0\2\10\1\0\15\10\1\0"+ + "\2\10\1\0\1\10\1\0\2\10\1\152\2\10\4\0"+ + "\4\10\13\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\4\10\1\u01e9\10\10\1\0\2\10\1\0\1\10\1\0"+ + "\5\10\4\0\4\10\13\0\13\10\1\0\1\10\4\0"+ + "\2\10\1\0\15\10\1\0\2\10\1\0\1\10\1\0"+ + "\2\10\1\u01ea\2\10\4\0\4\10\13\0\13\10\1\0"+ + "\1\10\4\0\2\10\1\0\15\10\1\0\2\10\1\0"+ + "\1\u01eb\1\0\5\10\4\0\4\10\13\0\13\10\1\0"+ + "\1\10\4\0\2\10\1\0\15\10\1\u01ec\2\10\1\0"+ + "\1\10\1\0\5\10\4\0\4\10\13\0\13\10\1\0"+ + "\1\10\4\0\2\10\1\0\4\10\1\u01ed\10\10\1\0"+ + "\2\10\1\0\1\10\1\0\5\10\4\0\4\10\13\0"+ + "\13\10\1\0\1\10\4\0\2\10\1\0\15\10\1\u01ee"+ + "\2\10\1\0\1\10\1\0\5\10\4\0\4\10\13\0"+ + "\13\10\1\0\1\10\4\0\2\10\1\0\11\10\1\u01ef"+ + "\3\10\1\0\2\10\1\0\1\10\1\0\5\10\4\0"+ + "\4\10\13\0\13\10\1\0\1\10\4\0\1\10\1\200"+ + "\1\0\15\10\1\0\2\10\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\13\0\13\10\1\0\1\10\4\0\1\10"+ + "\1\u01f0\1\0\15\10\1\0\2\10\1\0\1\10\1\0"+ + "\5\10\4\0\4\10\13\0\13\10\1\0\1\10\4\0"+ + "\2\10\1\0\11\10\1\u01f1\3\10\1\0\2\10\1\0"+ + "\1\10\1\0\5\10\4\0\4\10\13\0\13\10\1\0"+ + "\1\10\4\0\2\10\1\0\2\10\1\u01f2\12\10\1\u01f3"+ + "\2\10\1\0\1\10\1\0\5\10\4\0\4\10\13\0"+ + "\13\10\1\0\1\10\4\0\2\10\1\0\1\u01f4\14\10"+ + "\1\0\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\4\10"+ + "\1\u01f5\10\10\1\0\2\10\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\13\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\0\2\10\1\u011b\12\10\1\0\2\10\1\0\1\10"+ + "\1\0\5\10\4\0\4\10\13\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\5\10\1\u01f6\7\10\1\0\2\10"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\74\0\1\u01f7"+ + "\15\0\13\10\1\0\1\10\4\0\2\10\1\0\2\10"+ + "\1\u01f8\12\10\1\0\2\10\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\13\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\0\4\10\1\u01f9\10\10\1\0\2\10\1\0\1\10"+ + "\1\0\5\10\4\0\4\10\13\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\5\10\1\u01fa\7\10\1\0\2\10"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\60\0\1\u016d"+ + "\55\0\1\u01fb\10\0\1\u01fc\41\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\15\10\1\0\2\10\1\0\1\10"+ + "\1\0\2\10\1\u01fd\2\10\4\0\4\10\45\0\1\u01fe"+ + "\66\0\1\u01ff\6\0\1\u01cc\11\0\1\u01d2\1\0\1\u0200"+ + "\2\0\1\u0201\26\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\0\2\10\1\216\12\10\1\0\2\10\1\0\1\10"+ + "\1\0\5\10\4\0\4\10\13\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\15\10\1\0\1\10\1\145\1\0"+ + "\1\10\1\0\5\10\4\0\4\10\13\0\13\10\1\0"+ + "\1\10\4\0\2\10\1\0\5\10\1\u0202\7\10\1\0"+ + "\2\10\1\0\1\10\1\0\5\10\4\0\4\10\15\0"+ + "\2\u0203\1\73\1\0\5\u0203\1\0\1\u0203\4\0\1\u0203"+ + "\3\0\2\u0203\1\73\5\0\1\u0203\5\0\1\u0203\7\0"+ + "\1\u0203\7\0\1\u0203\15\0\1\u0204\1\72\1\73\2\0"+ + "\3\u0204\1\73\1\77\1\100\4\0\1\73\3\0\1\73"+ + "\1\100\1\73\33\0\1\u0204\35\0\1\u01e8\2\0\1\u0205"+ + "\14\0\1\u0206\34\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\0\3\10\1\u0207\11\10\1\0\2\10\1\0\1\10"+ + "\1\0\5\10\4\0\4\10\13\0\13\10\1\0\1\10"+ + "\4\0\1\10\1\330\1\0\15\10\1\0\2\10\1\0"+ + "\1\10\1\0\5\10\4\0\4\10\55\0\1\u0208\56\0"+ + "\1\u0209\54\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\6\10\1\u020a\6\10\1\0\2\10\1\0\1\10\1\0"+ + "\5\10\4\0\4\10\62\0\1\u020b\57\0\1\u020c\100\0"+ + "\1\u020d\117\0\1\u020e\44\0\1\u020f\23\0\1\u0210\100\0"+ + "\1\u013d\61\0\1\14\74\0\1\u0211\117\0\1\u0212\66\0"+ + "\1\u0213\100\0\1\u0214\64\0\1\u0215\75\0\1\14\46\0"+ + "\13\10\1\0\1\10\4\0\2\10\1\0\3\10\1\u0216"+ + "\11\10\1\0\2\10\1\0\1\10\1\0\5\10\4\0"+ + "\4\10\56\0\1\u0217\33\0\13\10\1\0\1\10\4\0"+ + "\1\10\1\u0218\1\0\15\10\1\0\2\10\1\0\1\10"+ + "\1\0\5\10\4\0\4\10\13\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\1\u0219\14\10\1\0\2\10\1\0"+ + "\1\10\1\0\5\10\4\0\4\10\13\0\13\10\1\0"+ + "\1\10\4\0\1\10\1\u021a\1\0\15\10\1\0\2\10"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\10\10\1\u021b\4\10"+ + "\1\0\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\4\10"+ + "\1\u021c\10\10\1\0\2\10\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\13\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\0\3\10\1\u021d\11\10\1\0\2\10\1\0\1\10"+ + "\1\0\5\10\4\0\4\10\13\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\11\10\1\u021e\3\10\1\0\2\10"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\12\10\1\u021f\2\10"+ + "\1\0\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\2\10"+ + "\1\u0177\12\10\1\0\2\10\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\46\0\1\u0220\43\0\13\10\1\0\1\10"+ + "\4\0\1\10\1\322\1\0\15\10\1\0\2\10\1\0"+ + "\1\10\1\0\5\10\4\0\4\10\34\0\1\u0221\112\0"+ + "\1\u0222\75\0\1\u0223\105\0\1\u0224\55\0\1\u0225\10\0"+ + "\1\u0220\43\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\3\10\1\u0226\11\10\1\u0227\2\10\1\0\1\10\1\0"+ + "\5\10\4\0\4\10\13\0\13\10\1\0\1\10\4\0"+ + "\2\10\1\0\15\10\1\u0228\2\10\1\0\1\10\1\0"+ + "\5\10\4\0\4\10\47\0\1\14\42\0\13\10\1\0"+ + "\1\10\4\0\2\10\1\0\15\10\1\0\1\10\1\316"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\42\0\1\u0229"+ + "\1\0\1\u022a\15\0\1\u022b\50\0\1\u022c\1\u01ff\4\0"+ + "\1\u0144\47\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\4\10\1\u022d\10\10\1\0\2\10\1\0\1\10\1\0"+ + "\5\10\4\0\4\10\13\0\13\10\1\0\1\10\4\0"+ + "\2\10\1\0\11\10\1\u014a\3\10\1\0\2\10\1\0"+ + "\1\10\1\0\5\10\4\0\4\10\35\0\1\u022e\104\0"+ + "\1\u022f\105\0\1\14\67\0\1\u0230\77\0\1\u0231\45\0"+ + "\13\10\1\0\1\10\4\0\2\10\1\0\15\10\1\0"+ + "\2\10\1\0\1\330\1\0\5\10\4\0\4\10\42\0"+ + "\1\u0232\47\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\15\10\1\0\1\330\1\10\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\13\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\0\4\10\1\u0233\10\10\1\0\2\10\1\0\1\10"+ + "\1\0\5\10\4\0\4\10\13\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\2\10\1\u0234\12\10\1\0\2\10"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\37\0\1\u0235"+ + "\52\0\13\10\1\0\1\10\4\0\2\10\1\0\15\10"+ + "\1\u0236\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\1\u0237"+ + "\14\10\1\0\2\10\1\0\1\10\1\0\5\10\4\0"+ + "\4\10\13\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\10\10\1\u0238\4\10\1\0\1\10\1\u0239\1\0\1\10"+ + "\1\0\5\10\4\0\4\10\13\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\2\10\1\u023a\12\10\1\0\2\10"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\10\10\1\u023b\4\10"+ + "\1\0\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\2\10"+ + "\1\u023c\12\10\1\0\2\10\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\13\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\0\2\10\1\u023d\12\10\1\0\2\10\1\0\1\10"+ + "\1\0\5\10\4\0\4\10\60\0\1\u0144\1\0\1\u013d"+ + "\27\0\13\10\1\0\1\10\4\0\2\10\1\0\10\10"+ + "\1\u0112\4\10\1\0\2\10\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\42\0\1\u023e\47\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\4\10\1\u0134\10\10\1\0\2\10"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\60\0\1\14"+ + "\31\0\13\10\1\0\1\10\4\0\2\10\1\0\15\10"+ + "\1\u023f\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\15\10"+ + "\1\u01b0\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\15\10"+ + "\1\0\2\10\1\0\1\u0240\1\0\5\10\4\0\4\10"+ + "\34\0\1\u0241\2\0\1\u0235\1\u0242\1\0\1\u0243\5\0"+ + "\1\u0244\7\0\1\u0245\5\0\1\u0246\23\0\13\10\1\0"+ + "\1\10\4\0\2\10\1\0\15\10\1\u0247\2\10\1\0"+ + "\1\10\1\0\5\10\4\0\4\10\44\0\1\u0248\45\0"+ + "\13\10\1\0\1\10\4\0\2\10\1\0\4\10\1\u0249"+ + "\10\10\1\0\2\10\1\0\1\10\1\0\5\10\4\0"+ + "\4\10\13\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\15\10\1\0\2\10\1\0\1\10\1\0\3\10\1\260"+ + "\1\10\4\0\4\10\13\0\13\10\1\0\1\10\4\0"+ + "\2\10\1\0\4\10\1\u024a\10\10\1\0\2\10\1\0"+ + "\1\10\1\0\5\10\4\0\4\10\13\0\13\10\1\0"+ + "\1\10\4\0\2\10\1\0\1\10\1\u024b\13\10\1\0"+ + "\2\10\1\0\1\10\1\0\5\10\4\0\4\10\66\0"+ + "\1\u024c\23\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\15\10\1\0\1\10\1\u024d\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\13\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\0\15\10\1\u024e\2\10\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\13\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\0\3\10\1\u0112\11\10\1\0\2\10\1\0\1\10"+ + "\1\0\5\10\4\0\4\10\41\0\1\u024c\50\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\15\10\1\u024f\2\10"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\5\10\1\u0250\7\10"+ + "\1\0\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\2\10"+ + "\1\u0251\12\10\1\0\2\10\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\35\0\1\u0252\103\0\1\u0253\47\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\15\10\1\0\2\10"+ + "\1\0\1\10\1\0\1\152\4\10\4\0\4\10\47\0"+ + "\1\u0254\73\0\1\u01b7\105\0\1\u0255\67\0\1\u01cc\45\0"+ + "\13\10\1\0\1\10\4\0\2\10\1\0\10\10\1\u0256"+ + "\4\10\1\0\2\10\1\0\1\10\1\0\5\10\4\0"+ + "\4\10\15\0\2\u0257\1\73\1\0\5\u0257\1\0\1\u0257"+ + "\4\0\1\u0257\3\0\2\u0257\1\73\5\0\1\u0257\5\0"+ + "\1\u0257\7\0\1\u0257\7\0\1\u0257\15\0\1\u0258\1\72"+ + "\1\73\2\0\3\u0258\1\73\1\77\1\100\4\0\1\73"+ + "\3\0\1\73\1\100\1\73\33\0\1\u0258\44\0\1\u0259"+ + "\110\0\1\u01cc\33\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\0\15\10\1\0\2\10\1\0\1\10\1\0\2\10"+ + "\1\334\2\10\4\0\4\10\41\0\1\u025a\121\0\1\u025b"+ + "\25\0\13\10\1\0\1\10\4\0\2\10\1\0\15\10"+ + "\1\0\1\10\1\u0166\1\0\1\10\1\0\5\10\4\0"+ + "\4\10\41\0\1\14\76\0\1\u025c\101\0\1\u025d\74\0"+ + "\1\u025e\75\0\1\u025f\101\0\1\u0260\106\0\1\u0261\76\0"+ + "\1\u0262\66\0\1\u0263\67\0\1\u0264\115\0\1\u0265\35\0"+ + "\13\10\1\0\1\10\4\0\2\10\1\0\2\10\1\u0266"+ + "\12\10\1\0\2\10\1\0\1\10\1\0\5\10\4\0"+ + "\4\10\47\0\1\u0267\42\0\13\10\1\0\1\10\4\0"+ + "\2\10\1\0\11\10\1\333\3\10\1\0\2\10\1\0"+ + "\1\10\1\0\5\10\4\0\4\10\13\0\13\10\1\0"+ + "\1\10\4\0\2\10\1\0\4\10\1\u0186\4\10\1\u0268"+ + "\3\10\1\0\2\10\1\0\1\10\1\0\5\10\4\0"+ + "\4\10\13\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\11\10\1\326\3\10\1\0\2\10\1\0\1\10\1\0"+ + "\5\10\4\0\4\10\13\0\13\10\1\0\1\10\4\0"+ + "\2\10\1\0\12\10\1\u021a\2\10\1\0\2\10\1\0"+ + "\1\10\1\0\5\10\4\0\4\10\13\0\13\10\1\0"+ + "\1\10\4\0\2\10\1\0\14\10\1\u0269\1\0\2\10"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\4\10\1\u026a\10\10"+ + "\1\0\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\10\10"+ + "\1\u026b\4\10\1\0\2\10\1\0\1\10\1\0\5\10"+ + "\4\0\4\10\13\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\0\11\10\1\u026c\3\10\1\0\2\10\1\0\1\10"+ + "\1\0\5\10\4\0\4\10\53\0\1\u0221\62\0\1\u026d"+ + "\103\0\1\u0185\11\0\1\u01b7\76\0\1\u026e\67\0\1\250"+ + "\72\0\1\u026f\46\0\13\10\1\0\1\10\4\0\1\10"+ + "\1\341\1\0\15\10\1\0\2\10\1\0\1\10\1\0"+ + "\5\10\4\0\4\10\40\0\1\u0205\17\0\1\u0161\100\0"+ + "\1\u0270\60\0\1\u0271\77\0\1\u0272\3\0\1\u0273\66\0"+ + "\1\u0274\74\0\1\u0275\52\0\13\10\1\0\1\10\4\0"+ + "\2\10\1\0\2\10\1\u0276\12\10\1\0\2\10\1\0"+ + "\1\10\1\0\5\10\4\0\4\10\40\0\1\14\101\0"+ + "\1\u0277\103\0\1\u0278\77\0\1\u0279\64\0\1\u027a\52\0"+ + "\13\10\1\0\1\10\4\0\2\10\1\0\15\10\1\0"+ + "\2\10\1\0\1\u027b\1\0\5\10\4\0\4\10\13\0"+ + "\13\10\1\0\1\10\4\0\2\10\1\0\15\10\1\u027c"+ + "\2\10\1\0\1\10\1\0\5\10\4\0\4\10\35\0"+ + "\1\u01b7\117\0\1\u027d\33\0\13\10\1\0\1\10\4\0"+ + "\1\10\1\u027e\1\0\15\10\1\0\2\10\1\0\1\10"+ + "\1\0\5\10\4\0\4\10\13\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\12\10\1\u027f\2\10\1\0\2\10"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\1\10\1\u0280\1\0\15\10\1\0"+ + "\2\10\1\0\1\10\1\0\5\10\4\0\4\10\13\0"+ + "\13\10\1\0\1\10\4\0\2\10\1\0\15\10\1\0"+ + "\2\10\1\0\1\10\1\0\1\u0281\4\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\15\10"+ + "\1\0\1\10\1\u0282\1\0\1\10\1\0\5\10\4\0"+ + "\4\10\13\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\15\10\1\u0283\2\10\1\0\1\10\1\0\5\10\4\0"+ + "\4\10\13\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\15\10\1\u0284\2\10\1\0\1\10\1\0\5\10\4\0"+ + "\4\10\56\0\1\u0285\54\0\1\u0201\55\0\13\10\1\0"+ + "\1\10\4\0\2\10\1\0\5\10\1\27\7\10\1\0"+ + "\2\10\1\0\1\10\1\0\5\10\4\0\4\10\42\0"+ + "\1\u0286\100\0\1\u0287\76\0\1\u0288\105\0\1\u0206\76\0"+ + "\1\u0289\67\0\1\u028a\17\0\1\u028b\53\0\1\u028c\71\0"+ + "\1\u028d\55\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\15\10\1\u028e\2\10\1\0\1\10\1\0\5\10\4\0"+ + "\4\10\13\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\15\10\1\u028f\2\10\1\0\1\10\1\0\5\10\4\0"+ + "\4\10\64\0\1\14\25\0\13\10\1\0\1\10\4\0"+ + "\2\10\1\0\3\10\1\u0290\11\10\1\0\2\10\1\0"+ + "\1\10\1\0\5\10\4\0\4\10\46\0\1\u0291\7\0"+ + "\1\u01b7\66\0\1\u0291\43\0\13\10\1\0\1\10\4\0"+ + "\2\10\1\0\10\10\1\u0292\4\10\1\0\2\10\1\0"+ + "\1\10\1\0\5\10\4\0\4\10\13\0\13\10\1\0"+ + "\1\10\4\0\2\10\1\0\15\10\1\0\2\10\1\0"+ + "\1\10\1\0\1\10\1\u0293\3\10\4\0\4\10\43\0"+ + "\1\u0294\111\0\1\u0295\64\0\1\u0296\71\0\1\u0297\52\0"+ + "\13\10\1\0\1\10\4\0\2\10\1\0\1\10\1\u0112"+ + "\13\10\1\0\2\10\1\0\1\10\1\0\5\10\4\0"+ + "\4\10\15\0\2\u0298\1\73\1\0\5\u0298\1\0\1\u0298"+ + "\4\0\1\u0298\3\0\2\u0298\1\73\5\0\1\u0298\5\0"+ + "\1\u0298\7\0\1\u0298\7\0\1\u0298\15\0\1\u0299\1\72"+ + "\1\73\2\0\3\u0299\1\73\1\77\1\100\4\0\1\73"+ + "\3\0\1\73\1\100\1\73\33\0\1\u0299\50\0\1\14"+ + "\75\0\1\u0209\106\0\1\14\66\0\1\u0185\76\0\1\u029a"+ + "\66\0\1\u029b\106\0\1\u01e8\71\0\1\u029c\103\0\1\u029d"+ + "\12\0\1\u029e\64\0\1\u029f\63\0\1\u02a0\101\0\1\u02a1"+ + "\120\0\1\u029e\27\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\0\15\10\1\0\1\10\1\u01d9\1\0\1\10\1\0"+ + "\5\10\4\0\4\10\47\0\1\u02a2\42\0\13\10\1\0"+ + "\1\10\4\0\2\10\1\0\15\10\1\0\1\10\1\u02a3"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\13\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\5\10\1\200\7\10"+ + "\1\0\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\13\0\13\10\1\0\1\10\4\0\2\10\1\0\1\152"+ + "\14\10\1\0\2\10\1\0\1\10\1\0\5\10\4\0"+ + "\4\10\13\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\5\10\1\152\7\10\1\0\2\10\1\0\1\10\1\0"+ + "\5\10\4\0\4\10\13\0\13\10\1\0\1\10\4\0"+ + "\2\10\1\0\4\10\1\314\10\10\1\0\2\10\1\0"+ + "\1\10\1\0\5\10\4\0\4\10\42\0\1\u020b\120\0"+ + "\1\u02a4\65\0\1\14\101\0\1\u02a5\70\0\1\u02a6\67\0"+ + "\1\u02a7\100\0\1\u02a8\76\0\1\u02a9\102\0\1\u02aa\42\0"+ + "\13\10\1\0\1\10\4\0\2\10\1\0\1\10\1\u0107"+ + "\13\10\1\0\2\10\1\0\1\10\1\0\5\10\4\0"+ + "\4\10\41\0\1\u02ab\110\0\1\u02ac\70\0\1\u01e8\66\0"+ + "\1\u020b\54\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\2\10\1\u02ad\12\10\1\0\2\10\1\0\1\10\1\0"+ + "\5\10\4\0\4\10\35\0\1\u01e8\24\0\1\u02ae\101\0"+ + "\1\u02af\24\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\15\10\1\0\2\10\1\0\1\260\1\0\5\10\4\0"+ + "\4\10\13\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\11\10\1\u02b0\3\10\1\0\2\10\1\0\1\10\1\0"+ + "\5\10\4\0\4\10\13\0\13\10\1\0\1\10\4\0"+ + "\2\10\1\0\4\10\1\u0107\10\10\1\0\2\10\1\0"+ + "\1\10\1\0\5\10\4\0\4\10\13\0\13\10\1\0"+ + "\1\10\4\0\2\10\1\0\2\10\1\371\12\10\1\0"+ + "\2\10\1\0\1\10\1\0\5\10\4\0\4\10\13\0"+ + "\13\10\1\0\1\10\4\0\2\10\1\0\4\10\1\u0240"+ + "\10\10\1\0\2\10\1\0\1\10\1\0\5\10\4\0"+ + "\4\10\35\0\1\u01e8\22\0\1\u02b1\63\0\1\u02b2\111\0"+ + "\1\u02b3\62\0\1\u02b4\103\0\1\u02b5\62\0\1\u02b6\105\0"+ + "\1\u02b7\76\0\1\u02b8\75\0\1\u020b\102\0\1\u02b9\63\0"+ + "\1\14\136\0\1\u02ba\62\0\1\u0144\1\0\1\u02bb\27\0"+ + "\13\10\1\0\1\10\4\0\2\10\1\0\15\10\1\u02bc"+ + "\2\10\1\0\1\10\1\0\5\10\4\0\4\10\37\0"+ + "\1\u0225\52\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\15\10\1\u02bd\2\10\1\0\1\10\1\0\5\10\4\0"+ + "\4\10\13\0\13\10\1\0\1\10\4\0\2\10\1\0"+ + "\6\10\1\u02be\6\10\1\0\2\10\1\0\1\10\1\0"+ + "\5\10\4\0\4\10\41\0\1\u02bf\115\0\1\u01e8\101\0"+ + "\1\u02c0\47\0\1\u02c1\57\0\2\u02c2\1\73\1\0\5\u02c2"+ + "\1\0\1\u02c2\4\0\1\u02c2\3\0\2\u02c2\1\73\5\0"+ + "\1\u02c2\5\0\1\u02c2\7\0\1\u02c2\7\0\1\u02c2\15\0"+ + "\1\u02c3\1\72\1\73\2\0\3\u02c3\1\73\1\77\1\100"+ + "\4\0\1\73\3\0\1\73\1\100\1\73\33\0\1\u02c3"+ + "\43\0\1\u01e8\103\0\1\u01e8\103\0\1\u020b\62\0\1\u02c4"+ + "\76\0\1\u02c5\77\0\1\u02c6\110\0\1\u02c7\76\0\1\u02c8"+ + "\100\0\1\u024c\33\0\13\10\1\0\1\10\4\0\2\10"+ + "\1\0\3\10\1\u02c9\11\10\1\0\2\10\1\0\1\10"+ + "\1\0\5\10\4\0\4\10\54\0\1\u02ca\67\0\1\u02cb"+ + "\107\0\1\u02cc\55\0\1\14\115\0\1\344\100\0\1\14"+ + "\100\0\1\u01b7\65\0\1\u02a7\70\0\1\u02cd\50\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\4\10\1\u0125\10\10"+ + "\1\0\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\41\0\1\u02ce\76\0\1\u02cf\50\0\13\10\1\0\1\10"+ + "\4\0\2\10\1\0\4\10\1\u023d\10\10\1\0\2\10"+ + "\1\0\1\10\1\0\5\10\4\0\4\10\43\0\1\u02d0"+ + "\102\0\1\u02d1\107\0\1\u02d2\74\0\1\u01b7\106\0\1\u026d"+ + "\75\0\1\14\60\0\1\u01b7\71\0\1\u02d3\103\0\1\u02d4"+ + "\70\0\1\u02d5\113\0\1\u02d6\100\0\1\u02d7\57\0\1\u02d8"+ + "\50\0\13\10\1\0\1\10\4\0\2\10\1\0\15\10"+ + "\1\0\1\10\1\u02d9\1\0\1\10\1\0\5\10\4\0"+ + "\4\10\47\0\1\u02da\113\0\1\u02db\55\0\1\u02dc\50\0"+ + "\2\u02dd\1\73\1\0\5\u02dd\1\0\1\u02dd\4\0\1\u02dd"+ + "\3\0\2\u02dd\1\73\5\0\1\u02dd\5\0\1\u02dd\7\0"+ + "\1\u02dd\7\0\1\u02dd\15\0\1\u02de\1\72\1\73\2\0"+ + "\3\u02de\1\73\1\77\1\100\4\0\1\73\3\0\1\73"+ + "\1\100\1\73\33\0\1\u02de\56\0\1\u02df\63\0\1\u02e0"+ + "\111\0\1\u02e1\67\0\1\u02e2\71\0\1\u02e3\47\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\15\10\1\0\2\10"+ + "\1\250\1\10\1\0\5\10\4\0\4\10\76\0\1\u022e"+ + "\45\0\1\u02e4\73\0\1\u02e5\103\0\1\14\10\0\1\14"+ + "\61\0\1\u02e6\70\0\1\u02e7\110\0\1\u02e8\73\0\1\u02e9"+ + "\77\0\1\u02ea\72\0\1\u02eb\101\0\1\u025f\116\0\1\u01e8"+ + "\57\0\1\u02ec\115\0\1\u02ed\47\0\1\u02ee\25\0\1\u02ef"+ + "\26\0\13\10\1\0\1\10\4\0\1\10\1\u02f0\1\0"+ + "\15\10\1\0\2\10\1\0\1\10\1\0\5\10\4\0"+ + "\4\10\34\0\1\u02f1\116\0\1\u02f2\76\0\1\u02f3\37\0"+ + "\2\u02f4\1\73\1\0\5\u02f4\1\0\1\u02f4\4\0\1\u02f4"+ + "\3\0\2\u02f4\1\73\5\0\1\u02f4\5\0\1\u02f4\7\0"+ + "\1\u02f4\7\0\1\u02f4\15\0\1\u02f5\1\72\1\73\2\0"+ + "\3\u02f5\1\73\1\77\1\100\4\0\1\73\3\0\1\73"+ + "\1\100\1\73\33\0\1\u02f5\40\0\1\u02f6\114\0\1\265"+ + "\100\0\1\u02f7\57\0\1\u02f8\74\0\1\u02f9\76\0\1\u02fa"+ + "\113\0\1\u02fb\75\0\1\u02fc\66\0\1\u02fd\104\0\1\u02fe"+ + "\110\0\1\u024c\71\0\1\u0225\76\0\1\u02a7\74\0\1\u01f3"+ + "\104\0\1\u02ff\57\0\1\u0300\72\0\1\u0301\52\0\13\10"+ + "\1\0\1\10\4\0\2\10\1\0\1\10\1\u0302\13\10"+ + "\1\0\2\10\1\0\1\10\1\0\5\10\4\0\4\10"+ + "\56\0\1\u0303\70\0\1\u01fc\70\0\1\u0304\4\0\1\u0305"+ + "\44\0\2\u0306\1\73\1\0\5\u0306\1\0\1\u0306\4\0"+ + "\1\u0306\3\0\2\u0306\1\73\5\0\1\u0306\5\0\1\u0306"+ + "\7\0\1\u0306\7\0\1\u0306\15\0\1\u0307\1\72\1\73"+ + "\2\0\3\u0307\1\73\1\77\1\100\4\0\1\73\3\0"+ + "\1\73\1\100\1\73\33\0\1\u0307\56\0\1\u0308\100\0"+ + "\1\u0309\52\0\1\u030a\77\0\1\u030b\76\0\1\u030c\116\0"+ + "\1\u030d\65\0\1\u022e\106\0\1\u0247\72\0\1\u01b7\114\0"+ + "\1\u030e\51\0\1\u0224\100\0\1\250\46\0\13\10\1\0"+ + "\1\10\4\0\2\10\1\0\15\10\1\u030f\2\10\1\0"+ + "\1\10\1\0\5\10\4\0\4\10\50\0\1\u020b\67\0"+ + "\1\u0310\74\0\1\u0311\54\0\2\u0312\1\73\1\0\5\u0312"+ + "\1\0\1\u0312\4\0\1\u0312\3\0\2\u0312\1\73\5\0"+ + "\1\u0312\5\0\1\u0312\7\0\1\u0312\7\0\1\u0312\15\0"+ + "\1\u0313\1\72\1\73\2\0\3\u0313\1\73\1\77\1\100"+ + "\4\0\1\73\3\0\1\73\1\100\1\73\33\0\1\u0313"+ + "\66\0\1\u0314\51\0\1\115\77\0\1\u0315\75\0\1\u0316"+ + "\122\0\1\u01e8\67\0\1\u025f\64\0\1\u0317\55\0\1\14"+ + "\107\0\1\u01b7\127\0\1\u0318\26\0\2\u0319\1\73\1\0"+ + "\5\u0319\1\0\1\u0319\4\0\1\u0319\3\0\2\u0319\1\73"+ + "\5\0\1\u0319\5\0\1\u0319\7\0\1\u0319\7\0\1\u0319"+ + "\15\0\1\u031a\1\72\1\73\2\0\3\u031a\1\73\1\77"+ + "\1\100\4\0\1\73\3\0\1\73\1\100\1\73\33\0"+ + "\1\u031a\42\0\1\u031b\75\0\1\u031c\111\0\1\u031d\64\0"+ + "\1\u025b\107\0\1\u01b7\40\0\2\u031e\1\73\1\0\5\u031e"+ + "\1\0\1\u031e\4\0\1\u031e\3\0\2\u031e\1\73\5\0"+ + "\1\u031e\5\0\1\u031e\7\0\1\u031e\7\0\1\u031e\15\0"+ + "\1\u031f\1\72\1\73\2\0\3\u031f\1\73\1\77\1\100"+ + "\4\0\1\73\3\0\1\73\1\100\1\73\33\0\1\u031f"+ + "\64\0\1\265\62\0\1\u0320\104\0\1\u0321\35\0\2\u0322"+ + "\1\73\1\0\5\u0322\1\0\1\u0322\4\0\1\u0322\3\0"+ + "\2\u0322\1\73\5\0\1\u0322\5\0\1\u0322\7\0\1\u0322"+ + "\7\0\1\u0322\15\0\1\u0323\1\72\1\73\2\0\3\u0323"+ + "\1\73\1\77\1\100\4\0\1\73\3\0\1\73\1\100"+ + "\1\73\33\0\1\u0323\43\0\1\u0324\102\0\1\u0325\44\0"+ + "\2\u0326\1\73\1\0\5\u0326\1\0\1\u0326\4\0\1\u0326"+ + "\3\0\2\u0326\1\73\5\0\1\u0326\5\0\1\u0326\7\0"+ + "\1\u0326\7\0\1\u0326\15\0\1\u0327\1\72\1\73\2\0"+ + "\3\u0327\1\73\1\77\1\100\4\0\1\73\3\0\1\73"+ + "\1\100\1\73\33\0\1\u0327\37\0\1\u0328\124\0\1\115"+ + "\26\0\2\u0329\1\73\1\0\5\u0329\1\0\1\u0329\4\0"+ + "\1\u0329\3\0\2\u0329\1\73\5\0\1\u0329\5\0\1\u0329"+ + "\7\0\1\u0329\7\0\1\u0329\15\0\1\u032a\1\72\1\73"+ + "\2\0\3\u032a\1\73\1\77\1\100\4\0\1\73\3\0"+ + "\1\73\1\100\1\73\33\0\1\u032a\44\0\1\116\51\0"+ + "\1\73\22\0\1\73\51\0\1\u032b\1\72\1\73\2\0"+ + "\3\u032b\1\73\1\77\1\100\4\0\1\73\3\0\1\73"+ + "\1\100\1\73\33\0\1\u032b\15\0\1\u032c\1\72\1\73"+ + "\2\0\3\u032c\1\73\1\77\1\100\4\0\1\73\3\0"+ + "\1\73\1\100\1\73\33\0\1\u032c\15\0\1\u032d\1\72"+ + "\1\73\2\0\3\u032d\1\73\1\77\1\100\4\0\1\73"+ + "\3\0\1\73\1\100\1\73\33\0\1\u032d\15\0\1\u032e"+ + "\1\72\1\73\2\0\3\u032e\1\73\1\77\1\100\4\0"+ + "\1\73\3\0\1\73\1\100\1\73\33\0\1\u032e\15\0"+ + "\2\72\1\73\2\0\3\72\1\73\1\77\1\100\4\0"+ + "\1\73\3\0\1\73\1\100\1\73\33\0\1\72\6\0"; + + private static int [] zzUnpackTrans() { + int [] result = new int[49833]; + 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\7\1\3\11\33\1\6\11\2\1\2\11"+ + "\4\1\1\11\2\1\1\11\1\0\3\1\1\0\14\1"+ + "\10\0\112\1\1\11\6\1\1\0\1\1\1\11\13\1"+ + "\11\0\1\1\1\0\33\1\1\0\11\1\1\0\12\1"+ + "\1\0\77\1\1\11\6\1\1\0\1\1\15\0\2\1"+ + "\1\0\23\1\2\0\4\1\1\0\3\1\1\0\5\1"+ + "\5\0\22\1\2\0\1\1\1\0\20\1\1\0\4\1"+ + "\2\0\1\1\2\0\5\1\1\0\2\1\2\0\1\1"+ + "\15\0\1\1\1\0\11\1\1\0\1\1\5\0\2\1"+ + "\1\0\1\1\2\0\2\1\5\0\1\1\1\0\3\1"+ + "\1\0\7\1\1\0\1\1\1\0\1\1\1\0\3\1"+ + "\1\0\1\1\1\0\4\1\1\0\3\1\1\0\3\1"+ + "\2\0\1\1\4\0\3\1\2\0\1\1\2\0\1\1"+ + "\13\0\1\1\1\0\10\1\6\0\1\1\6\0\1\1"+ + "\5\0\2\1\2\0\7\1\2\0\1\1\10\0\3\1"+ + "\1\0\1\1\2\0\2\1\4\0\3\1\15\0\1\1"+ + "\1\0\5\1\11\0\1\1\4\0\1\1\2\0\5\1"+ + "\15\0\1\1\1\0\2\1\4\0\2\1\11\0\2\1"+ + "\10\0\1\1\2\0\1\1\15\0\1\1\3\0\2\1"+ + "\5\0\1\1\17\0\1\1\3\0\2\1\15\0\1\1"+ + "\3\0\1\1\4\0\1\1\14\0\1\1\4\0\1\1"+ + "\13\0\1\1\6\0\1\1\4\0\1\1\3\0\1\1"+ + "\3\0\1\1\2\0\5\1"; + + private static int [] zzUnpackAttribute() { + int [] result = new int[814]; + 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[] = new char[ZZ_BUFFERSIZE]; + + /** 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; + + /** number of newlines encountered up to the start of the matched text */ + private int yyline; + + /** the number of characters up to the start of the matched text */ + private int yychar; + + /** + * the number of characters from the last newline up to the start of the + * matched text + */ + private int yycolumn; + + /** + * 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; + + /** denotes if the user-EOF-code has already been executed */ + private boolean zzEOFDone; + + /* user code: */ + /** + * Create an empty lexer, yyrset will be called later to reset and assign + * the reader + */ + public ClojureLexer() { + super(); + } + + @Override + public int yychar() { + return yychar; + } + + private static final byte PARAN = 1; + private static final byte BRACKET = 2; + private static final byte CURLY = 3; + + + + /** + * 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 ClojureLexer(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 ClojureLexer(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 < 1782) { + int count = packed.charAt(i++); + char value = packed.charAt(i++); + do map[j++] = value; while (--count > 0); + } + return map; + } + + + /** + * Refills the input buffer. + * + * @return false, iff there was new input. + * + * @exception java.io.IOException if any I/O-Error occurs + */ + private boolean zzRefill() throws java.io.IOException { + + /* first: make room (if you can) */ + if (zzStartRead > 0) { + System.arraycopy(zzBuffer, zzStartRead, + zzBuffer, 0, + zzEndRead-zzStartRead); + + /* translate stored positions */ + zzEndRead-= zzStartRead; + zzCurrentPos-= zzStartRead; + zzMarkedPos-= zzStartRead; + zzStartRead = 0; + } + + /* is the buffer big enough? */ + if (zzCurrentPos >= zzBuffer.length) { + /* if not: blow it up */ + char newBuffer[] = new char[zzCurrentPos*2]; + System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); + zzBuffer = newBuffer; + } + + /* finally: fill the buffer with new input */ + int numRead = zzReader.read(zzBuffer, zzEndRead, + zzBuffer.length-zzEndRead); + + if (numRead > 0) { + zzEndRead+= numRead; + return false; + } + // unlikely but not impossible: read 0 characters, but not at end of stream + if (numRead == 0) { + int c = zzReader.read(); + if (c == -1) { + return true; + } else { + zzBuffer[zzEndRead++] = (char) c; + return false; + } + } + + // numRead < 0 + return true; + } + + + /** + * 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(); + } + + + /** + * 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 ZZ_INITIAL. + * + * @param reader the new input stream + */ + public final void yyreset(java.io.Reader reader) { + zzReader = reader; + zzAtBOL = true; + zzAtEOF = false; + zzEOFDone = false; + zzEndRead = zzStartRead = 0; + zzCurrentPos = zzMarkedPos = 0; + yyline = yychar = yycolumn = 0; + zzLexicalState = YYINITIAL; + } + + + /** + * Returns the current lexical state. + */ + public final int yystate() { + return zzLexicalState; + } + + + /** + * Enters a new lexical state + * + * @param newState the new lexical state + */ + 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 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; + + yychar+= zzMarkedPosL-zzStartRead; + + zzAction = -1; + + zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; + + 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 9: + { return token(TokenType.OPERATOR, -PARAN); + } + case 19: break; + case 17: + { return token(TokenType.KEYWORD); + } + case 20: break; + case 4: + { return token(TokenType.NUMBER); + } + case 21: break; + case 10: + { return token(TokenType.OPERATOR, CURLY); + } + case 22: break; + case 11: + { return token(TokenType.OPERATOR, -CURLY); + } + case 23: break; + case 14: + { tokenLength += yylength(); + } + case 24: break; + case 15: + { yybegin(YYINITIAL); + } + case 25: break; + case 7: + { yybegin(CHARLITERAL); + tokenStart = yychar; + tokenLength = 1; + } + case 26: break; + case 16: + { yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + case 27: break; + case 13: + { return token(TokenType.OPERATOR, -BRACKET); + } + case 28: break; + case 8: + { return token(TokenType.OPERATOR, PARAN); + } + case 29: break; + case 3: + { return token(TokenType.IDENTIFIER); + } + case 30: break; + case 5: + { return token(TokenType.KEYWORD2); + } + case 31: break; + case 18: + { tokenLength += 2; + } + case 32: break; + case 12: + { return token(TokenType.OPERATOR, BRACKET); + } + case 33: break; + case 2: + { return token(TokenType.COMMENT); + } + case 34: break; + case 6: + { yybegin(STRING); + tokenStart = yychar; + tokenLength = 1; + } + case 35: break; + case 1: + { + } + case 36: break; + default: + if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { + zzAtEOF = true; + { + return null; + } + } + else { + zzScanError(ZZ_NO_MATCH); + } + } + } + } + + +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/CppLexer.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/CppLexer.java new file mode 100644 index 000000000..f302a9c29 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/CppLexer.java @@ -0,0 +1,1092 @@ +/* The following code was generated by JFlex 1.4.3 on 21.7.10 18:14 */ + +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * Copyright 2006 Arnout Engelen . + * Copyright 2000-2006 Omnicore Software, Hans Kratz & Dennis Strein GbR, + * Geert Bevin . + * Distributed under the terms of either: + * - the common development and distribution license (CDDL), v1.0; or + * - the GNU Lesser General Public License, v2.1 or later + */ +package jsyntaxpane.lexers; + + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + + +/** + * This class is a scanner generated by + * JFlex 1.4.3 + * on 21.7.10 18:14 from the specification file + * D:/Dokumenty/Programovani/JavaSE/JPSWFDec/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/cpp.flex + */ +public final class CppLexer extends DefaultJFlexLexer { + + /** This character denotes the end of file */ + public static final int YYEOF = -1; + + /** initial size of the lookahead buffer */ + private static final int ZZ_BUFFERSIZE = 16384; + + /** 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, 0 + }; + + /** + * Translates characters to character classes + */ + private static final String ZZ_CMAP_PACKED = + "\11\10\1\0\1\2\2\0\1\1\16\10\5\0\1\66\1\55\1\5"+ + "\1\6\1\66\1\66\1\57\1\60\1\61\1\4\1\32\1\66\1\32"+ + "\1\27\1\3\1\12\7\17\2\11\1\66\1\66\1\70\1\66\1\67"+ + "\1\66\1\0\3\16\1\25\1\31\1\25\5\7\1\23\10\7\1\21"+ + "\2\7\1\14\2\7\1\64\1\56\1\65\1\66\1\51\1\0\1\35"+ + "\1\33\1\15\1\26\1\30\1\24\1\45\1\41\1\44\1\6\1\36"+ + "\1\22\1\46\1\43\1\42\1\53\1\71\1\34\1\37\1\40\1\20"+ + "\1\54\1\52\1\13\1\47\1\50\1\62\1\66\1\63\1\66\41\10"+ + "\2\0\4\6\4\0\1\6\2\0\1\10\7\0\1\6\4\0\1\6"+ + "\5\0\27\6\1\0\37\6\1\0\u013f\6\31\0\162\6\4\0\14\6"+ + "\16\0\5\6\11\0\1\6\21\0\130\10\5\0\23\10\12\0\1\6"+ + "\13\0\1\6\1\0\3\6\1\0\1\6\1\0\24\6\1\0\54\6"+ + "\1\0\46\6\1\0\5\6\4\0\202\6\1\0\4\10\3\0\105\6"+ + "\1\0\46\6\2\0\2\6\6\0\20\6\41\0\46\6\2\0\1\6"+ + "\7\0\47\6\11\0\21\10\1\0\27\10\1\0\3\10\1\0\1\10"+ + "\1\0\2\10\1\0\1\10\13\0\33\6\5\0\3\6\15\0\4\10"+ + "\14\0\6\10\13\0\32\6\5\0\13\6\16\10\7\0\12\10\4\0"+ + "\2\6\1\10\143\6\1\0\1\6\10\10\1\0\6\10\2\6\2\10"+ + "\1\0\4\10\2\6\12\10\3\6\2\0\1\6\17\0\1\10\1\6"+ + "\1\10\36\6\33\10\2\0\3\6\60\0\46\6\13\10\1\6\u014f\0"+ + "\3\10\66\6\2\0\1\10\1\6\20\10\2\0\1\6\4\10\3\0"+ + "\12\6\2\10\2\0\12\10\21\0\3\10\1\0\10\6\2\0\2\6"+ + "\2\0\26\6\1\0\7\6\1\0\1\6\3\0\4\6\2\0\1\10"+ + "\1\6\7\10\2\0\2\10\2\0\3\10\11\0\1\10\4\0\2\6"+ + "\1\0\3\6\2\10\2\0\12\10\4\6\15\0\3\10\1\0\6\6"+ + "\4\0\2\6\2\0\26\6\1\0\7\6\1\0\2\6\1\0\2\6"+ + "\1\0\2\6\2\0\1\10\1\0\5\10\4\0\2\10\2\0\3\10"+ + "\13\0\4\6\1\0\1\6\7\0\14\10\3\6\14\0\3\10\1\0"+ + "\11\6\1\0\3\6\1\0\26\6\1\0\7\6\1\0\2\6\1\0"+ + "\5\6\2\0\1\10\1\6\10\10\1\0\3\10\1\0\3\10\2\0"+ + "\1\6\17\0\2\6\2\10\2\0\12\10\1\0\1\6\17\0\3\10"+ + "\1\0\10\6\2\0\2\6\2\0\26\6\1\0\7\6\1\0\2\6"+ + "\1\0\5\6\2\0\1\10\1\6\6\10\3\0\2\10\2\0\3\10"+ + "\10\0\2\10\4\0\2\6\1\0\3\6\4\0\12\10\1\0\1\6"+ + "\20\0\1\10\1\6\1\0\6\6\3\0\3\6\1\0\4\6\3\0"+ + "\2\6\1\0\1\6\1\0\2\6\3\0\2\6\3\0\3\6\3\0"+ + "\10\6\1\0\3\6\4\0\5\10\3\0\3\10\1\0\4\10\11\0"+ + "\1\10\17\0\11\10\11\0\1\6\7\0\3\10\1\0\10\6\1\0"+ + "\3\6\1\0\27\6\1\0\12\6\1\0\5\6\4\0\7\10\1\0"+ + "\3\10\1\0\4\10\7\0\2\10\11\0\2\6\4\0\12\10\22\0"+ + "\2\10\1\0\10\6\1\0\3\6\1\0\27\6\1\0\12\6\1\0"+ + "\5\6\2\0\1\10\1\6\7\10\1\0\3\10\1\0\4\10\7\0"+ + "\2\10\7\0\1\6\1\0\2\6\4\0\12\10\22\0\2\10\1\0"+ + "\10\6\1\0\3\6\1\0\27\6\1\0\20\6\4\0\6\10\2\0"+ + "\3\10\1\0\4\10\11\0\1\10\10\0\2\6\4\0\12\10\22\0"+ + "\2\10\1\0\22\6\3\0\30\6\1\0\11\6\1\0\1\6\2\0"+ + "\7\6\3\0\1\10\4\0\6\10\1\0\1\10\1\0\10\10\22\0"+ + "\2\10\15\0\60\6\1\10\2\6\7\10\4\0\10\6\10\10\1\0"+ + "\12\10\47\0\2\6\1\0\1\6\2\0\2\6\1\0\1\6\2\0"+ + "\1\6\6\0\4\6\1\0\7\6\1\0\3\6\1\0\1\6\1\0"+ + "\1\6\2\0\2\6\1\0\4\6\1\10\2\6\6\10\1\0\2\10"+ + "\1\6\2\0\5\6\1\0\1\6\1\0\6\10\2\0\12\10\2\0"+ + "\2\6\42\0\1\6\27\0\2\10\6\0\12\10\13\0\1\10\1\0"+ + "\1\10\1\0\1\10\4\0\2\10\10\6\1\0\42\6\6\0\24\10"+ + "\1\0\2\10\4\6\4\0\10\10\1\0\44\10\11\0\1\10\71\0"+ + "\42\6\1\0\5\6\1\0\2\6\1\0\7\10\3\0\4\10\6\0"+ + "\12\10\6\0\6\6\4\10\106\0\46\6\12\0\51\6\7\0\132\6"+ + "\5\0\104\6\5\0\122\6\6\0\7\6\1\0\77\6\1\0\1\6"+ + "\1\0\4\6\2\0\7\6\1\0\1\6\1\0\4\6\2\0\47\6"+ + "\1\0\1\6\1\0\4\6\2\0\37\6\1\0\1\6\1\0\4\6"+ + "\2\0\7\6\1\0\1\6\1\0\4\6\2\0\7\6\1\0\7\6"+ + "\1\0\27\6\1\0\37\6\1\0\1\6\1\0\4\6\2\0\7\6"+ + "\1\0\47\6\1\0\23\6\16\0\11\10\56\0\125\6\14\0\u026c\6"+ + "\2\0\10\6\12\0\32\6\5\0\113\6\3\0\3\6\17\0\15\6"+ + "\1\0\4\6\3\10\13\0\22\6\3\10\13\0\22\6\2\10\14\0"+ + "\15\6\1\0\3\6\1\0\2\10\14\0\64\6\40\10\3\0\1\6"+ + "\3\0\2\6\1\10\2\0\12\10\41\0\3\10\2\0\12\10\6\0"+ + "\130\6\10\0\51\6\1\10\126\0\35\6\3\0\14\10\4\0\14\10"+ + "\12\0\12\10\36\6\2\0\5\6\u038b\0\154\6\224\0\234\6\4\0"+ + "\132\6\6\0\26\6\2\0\6\6\2\0\46\6\2\0\6\6\2\0"+ + "\10\6\1\0\1\6\1\0\1\6\1\0\1\6\1\0\37\6\2\0"+ + "\65\6\1\0\7\6\1\0\1\6\3\0\3\6\1\0\7\6\3\0"+ + "\4\6\2\0\6\6\4\0\15\6\5\0\3\6\1\0\7\6\17\0"+ + "\4\10\32\0\5\10\20\0\2\6\23\0\1\6\13\0\4\10\6\0"+ + "\6\10\1\0\1\6\15\0\1\6\40\0\22\6\36\0\15\10\4\0"+ + "\1\10\3\0\6\10\27\0\1\6\4\0\1\6\2\0\12\6\1\0"+ + "\1\6\3\0\5\6\6\0\1\6\1\0\1\6\1\0\1\6\1\0"+ + "\4\6\1\0\3\6\1\0\7\6\3\0\3\6\5\0\5\6\26\0"+ + "\44\6\u0e81\0\3\6\31\0\11\6\6\10\1\0\5\6\2\0\5\6"+ + "\4\0\126\6\2\0\2\10\2\0\3\6\1\0\137\6\5\0\50\6"+ + "\4\0\136\6\21\0\30\6\70\0\20\6\u0200\0\u19b6\6\112\0\u51a6\6"+ + "\132\0\u048d\6\u0773\0\u2ba4\6\u215c\0\u012e\6\2\0\73\6\225\0\7\6"+ + "\14\0\5\6\5\0\1\6\1\10\12\6\1\0\15\6\1\0\5\6"+ + "\1\0\1\6\1\0\2\6\1\0\2\6\1\0\154\6\41\0\u016b\6"+ + "\22\0\100\6\2\0\66\6\50\0\15\6\3\0\20\10\20\0\4\10"+ + "\17\0\2\6\30\0\3\6\31\0\1\6\6\0\5\6\1\0\207\6"+ + "\2\0\1\10\4\0\1\6\13\0\12\10\7\0\32\6\4\0\1\6"+ + "\1\0\32\6\12\0\132\6\3\0\6\6\2\0\6\6\2\0\6\6"+ + "\2\0\3\6\3\0\2\6\3\0\2\6\22\0\3\10\4\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\2\1\3\1\4\1\3\2\5\6\4"+ + "\1\2\16\4\2\1\1\6\1\7\1\10\1\11\1\12"+ + "\1\13\2\2\1\14\1\0\1\3\6\0\7\5\1\0"+ + "\1\3\4\5\17\4\1\15\22\4\1\2\4\4\1\15"+ + "\12\4\1\0\1\16\3\0\2\14\11\0\1\17\3\0"+ + "\1\5\1\0\1\5\7\4\1\20\46\4\1\3\13\4"+ + "\12\0\32\4\1\5\16\4\1\0\1\17\4\0\1\4"+ + "\1\2\25\4\3\0\5\4\1\3\10\4"; + + private static int [] zzUnpackAction() { + int [] result = new int[290]; + 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\72\0\164\0\72\0\256\0\350\0\u0122\0\u015c"+ + "\0\u0196\0\u01d0\0\u020a\0\u0244\0\u027e\0\u02b8\0\u02f2\0\u032c"+ + "\0\u0366\0\u03a0\0\u03da\0\u0414\0\u044e\0\u0488\0\u04c2\0\u04fc"+ + "\0\u0536\0\u0570\0\u05aa\0\u05e4\0\u061e\0\u0658\0\u0692\0\u06cc"+ + "\0\72\0\72\0\72\0\72\0\72\0\72\0\u0706\0\u0740"+ + "\0\u077a\0\u07b4\0\u07ee\0\u0828\0\u0862\0\u089c\0\u08d6\0\u0910"+ + "\0\u094a\0\u0984\0\u09be\0\u09f8\0\u0a32\0\72\0\u07ee\0\u0a6c"+ + "\0\u0aa6\0\u0ae0\0\u0b1a\0\u0b54\0\u0b8e\0\u0bc8\0\u0c02\0\u0c3c"+ + "\0\u0c76\0\u0cb0\0\u0cea\0\u0d24\0\u0d5e\0\u0d98\0\u0dd2\0\u0e0c"+ + "\0\u0e46\0\u0e80\0\u0eba\0\u0ef4\0\u0f2e\0\u0f68\0\u0fa2\0\u0fdc"+ + "\0\u1016\0\u1050\0\u108a\0\u10c4\0\u10fe\0\u1138\0\u1172\0\u11ac"+ + "\0\u11e6\0\u1220\0\u125a\0\u1294\0\u12ce\0\u1308\0\u1342\0\u137c"+ + "\0\u13b6\0\u13f0\0\u142a\0\u1464\0\u149e\0\350\0\u14d8\0\u1512"+ + "\0\u154c\0\u1586\0\u15c0\0\u15fa\0\u1634\0\u166e\0\u16a8\0\u16e2"+ + "\0\u0692\0\72\0\u171c\0\u06cc\0\u1756\0\u1790\0\72\0\u17ca"+ + "\0\u1804\0\u183e\0\u1878\0\u18b2\0\u18ec\0\u1926\0\u1960\0\u199a"+ + "\0\u19d4\0\u1a0e\0\u1a48\0\u1a82\0\u1abc\0\u1af6\0\u1b30\0\u1b6a"+ + "\0\u1ba4\0\u1bde\0\u1c18\0\u1c52\0\u1c8c\0\u1cc6\0\350\0\u1d00"+ + "\0\u1d3a\0\u1d74\0\u1dae\0\u1de8\0\u1e22\0\u1e5c\0\u1e96\0\u1ed0"+ + "\0\u1f0a\0\u1f44\0\u1f7e\0\u1fb8\0\u1ff2\0\u202c\0\u2066\0\u20a0"+ + "\0\u20da\0\u2114\0\u214e\0\u2188\0\u21c2\0\u21fc\0\u2236\0\u2270"+ + "\0\u22aa\0\u22e4\0\u231e\0\u2358\0\u2392\0\u23cc\0\u2406\0\u2440"+ + "\0\u247a\0\u24b4\0\u24ee\0\u2528\0\u2562\0\350\0\u259c\0\u25d6"+ + "\0\u2610\0\u264a\0\u2684\0\u26be\0\u26f8\0\u2732\0\u276c\0\u27a6"+ + "\0\u27e0\0\u281a\0\u2854\0\u288e\0\u28c8\0\u2902\0\u293c\0\u2976"+ + "\0\u29b0\0\u29ea\0\u2a24\0\u2a5e\0\u2a98\0\u2ad2\0\u2b0c\0\u2b46"+ + "\0\u2b80\0\u2bba\0\u2bf4\0\u2c2e\0\u2c68\0\u2ca2\0\u2cdc\0\u2d16"+ + "\0\u2d50\0\u2d8a\0\u2dc4\0\u2dfe\0\u2e38\0\u2e72\0\u2eac\0\u2ee6"+ + "\0\u2f20\0\u2f5a\0\u2f94\0\u2fce\0\u3008\0\350\0\u3042\0\u307c"+ + "\0\u30b6\0\u30f0\0\u312a\0\u3164\0\u319e\0\u31d8\0\u3212\0\u324c"+ + "\0\u3286\0\u32c0\0\u32fa\0\u3334\0\u336e\0\72\0\u33a8\0\u33e2"+ + "\0\u341c\0\u3456\0\u3490\0\350\0\u34ca\0\u3504\0\u353e\0\u3578"+ + "\0\u35b2\0\u35ec\0\u3626\0\u3660\0\u369a\0\u36d4\0\u370e\0\u3748"+ + "\0\u3782\0\u37bc\0\u37f6\0\u3830\0\u386a\0\u38a4\0\u38de\0\u3918"+ + "\0\u3952\0\u398c\0\u39c6\0\u3a00\0\u3a3a\0\u3a74\0\u3aae\0\u3ae8"+ + "\0\u3b22\0\u3b5c\0\u3b96\0\u3bd0\0\u3c0a\0\u3c44\0\u3c7e\0\u3cb8"+ + "\0\u3cf2\0\u3d2c"; + + private static int [] zzUnpackRowMap() { + int [] result = new int[290]; + 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\2\1\3\1\4\1\5\1\6\1\7\1\2\1\10"+ + "\1\11\1\12\1\7\1\13\1\7\1\10\1\14\1\7"+ + "\1\15\1\7\1\16\1\7\1\17\1\20\1\21\1\7"+ + "\1\4\1\22\1\23\1\24\1\6\1\25\1\26\1\6"+ + "\1\27\1\30\1\31\1\32\1\33\2\6\1\7\1\34"+ + "\1\35\1\36\1\37\1\2\1\40\1\41\1\42\1\43"+ + "\1\44\1\45\1\46\1\4\1\47\1\50\1\6\75\0"+ + "\1\51\1\52\72\0\1\53\1\0\1\53\1\0\2\53"+ + "\1\0\1\53\1\0\2\53\1\54\1\53\1\55\1\53"+ + "\1\0\1\53\1\56\1\0\1\57\1\53\12\0\1\60"+ + "\4\0\1\53\1\0\1\61\24\0\21\6\1\0\2\6"+ + "\1\0\22\6\14\0\1\6\5\0\1\53\1\6\1\7"+ + "\1\6\2\7\1\6\1\7\1\6\2\7\1\6\1\7"+ + "\1\6\1\7\1\6\1\7\1\6\1\0\1\6\1\7"+ + "\1\0\16\6\1\7\3\6\14\0\1\6\5\0\1\53"+ + "\1\0\1\53\1\0\2\10\1\0\1\53\1\0\1\53"+ + "\1\10\1\62\1\63\1\64\1\65\1\66\1\67\1\66"+ + "\1\70\1\71\1\72\17\0\1\53\25\0\1\53\1\0"+ + "\1\53\1\0\1\73\1\74\1\75\1\76\1\0\1\53"+ + "\1\74\1\62\1\63\1\64\1\65\1\66\1\67\1\66"+ + "\1\70\1\71\1\72\17\0\1\53\26\0\21\6\1\0"+ + "\2\6\1\0\7\6\1\77\12\6\14\0\1\6\6\0"+ + "\14\6\1\100\4\6\1\0\2\6\1\0\2\6\1\101"+ + "\3\6\1\102\1\103\1\6\1\104\10\6\14\0\1\6"+ + "\6\0\12\6\1\105\6\6\1\0\2\6\1\0\4\6"+ + "\1\106\3\6\1\107\11\6\14\0\1\6\6\0\21\6"+ + "\1\0\2\6\1\0\7\6\1\110\12\6\14\0\1\6"+ + "\6\0\14\6\1\111\4\6\1\0\2\6\1\0\1\6"+ + "\1\112\1\113\4\6\1\114\12\6\14\0\1\6\6\0"+ + "\21\6\1\0\1\115\1\6\1\0\7\6\1\116\12\6"+ + "\14\0\1\6\11\0\2\70\4\0\1\70\60\0\5\6"+ + "\1\117\6\6\1\120\4\6\1\0\2\6\1\0\10\6"+ + "\1\121\11\6\14\0\1\6\6\0\21\6\1\0\2\6"+ + "\1\0\1\6\1\122\5\6\1\123\1\6\1\124\10\6"+ + "\14\0\1\6\6\0\21\6\1\0\1\125\1\6\1\0"+ + "\22\6\14\0\1\6\6\0\21\6\1\0\2\6\1\0"+ + "\10\6\1\126\11\6\14\0\1\6\6\0\21\6\1\0"+ + "\1\127\1\6\1\0\2\6\1\130\2\6\1\131\1\132"+ + "\2\6\1\133\5\6\1\134\2\6\14\0\1\6\6\0"+ + "\21\6\1\0\1\135\1\6\1\0\1\6\1\136\4\6"+ + "\1\137\5\6\1\140\5\6\14\0\1\6\6\0\21\6"+ + "\1\0\2\6\1\0\1\6\1\141\16\6\1\142\1\6"+ + "\14\0\1\6\6\0\21\6\1\0\1\143\1\6\1\0"+ + "\2\6\1\144\4\6\1\145\12\6\14\0\1\6\6\0"+ + "\16\6\1\146\2\6\1\0\2\6\1\0\10\6\1\147"+ + "\11\6\14\0\1\6\6\0\21\6\1\0\2\6\1\0"+ + "\7\6\1\150\12\6\14\0\1\6\6\0\12\6\1\151"+ + "\6\6\1\0\2\6\1\0\22\6\14\0\1\6\6\0"+ + "\7\6\1\152\11\6\1\0\2\6\1\0\6\6\1\153"+ + "\13\6\14\0\1\6\6\0\12\6\1\154\6\6\1\0"+ + "\2\6\1\0\1\6\1\155\20\6\14\0\1\6\6\0"+ + "\21\6\1\0\2\6\1\0\2\6\1\156\4\6\1\157"+ + "\1\6\1\160\10\6\14\0\1\6\2\161\1\162\52\161"+ + "\1\162\1\163\13\161\2\164\1\162\53\164\1\165\1\162"+ + "\12\164\67\0\1\4\72\0\1\4\1\0\1\51\1\166"+ + "\1\167\67\51\4\170\1\171\65\170\5\0\1\53\1\0"+ + "\1\53\1\0\2\53\1\0\1\53\1\0\2\53\1\0"+ + "\1\53\1\0\1\53\1\0\1\53\3\0\1\53\17\0"+ + "\1\53\57\0\1\172\3\0\1\173\72\0\1\174\55\0"+ + "\1\175\63\0\1\176\11\0\1\177\6\0\1\200\52\0"+ + "\1\201\16\0\1\202\2\0\1\203\57\0\1\204\55\0"+ + "\2\66\2\64\53\0\1\53\1\0\1\53\1\0\2\53"+ + "\1\0\1\53\1\0\2\53\1\66\1\67\1\64\1\65"+ + "\1\0\1\53\3\0\1\53\17\0\1\53\40\0\2\66"+ + "\55\0\1\53\1\0\1\53\1\0\2\53\1\0\1\53"+ + "\1\0\2\53\1\66\1\67\1\0\1\53\1\0\1\53"+ + "\3\0\1\53\17\0\1\53\31\0\2\70\4\0\1\70"+ + "\4\0\3\66\1\0\2\71\51\0\2\205\4\0\1\205"+ + "\12\0\1\206\44\0\1\53\1\0\1\53\1\0\2\207"+ + "\1\0\1\53\1\0\1\53\1\207\1\0\1\53\1\0"+ + "\1\53\1\0\1\53\3\0\1\53\1\206\16\0\1\53"+ + "\25\0\1\53\1\0\1\53\1\0\2\73\1\0\1\53"+ + "\1\0\1\53\1\73\1\0\1\53\1\0\1\53\1\66"+ + "\1\67\1\66\1\70\1\71\1\72\17\0\1\53\25\0"+ + "\1\53\1\0\1\53\1\0\1\73\1\74\1\0\1\53"+ + "\1\0\1\53\1\74\1\62\1\63\1\64\1\65\1\66"+ + "\1\67\1\66\1\70\1\71\1\72\17\0\1\53\31\0"+ + "\2\75\2\0\3\75\2\62\2\64\3\75\1\0\2\75"+ + "\1\0\1\75\1\0\1\75\41\0\1\53\1\0\1\53"+ + "\1\0\2\76\1\0\1\53\1\75\2\76\1\62\1\63"+ + "\1\64\1\65\1\75\1\76\1\75\1\0\1\75\1\76"+ + "\1\0\1\75\1\0\1\75\13\0\1\53\26\0\21\6"+ + "\1\0\2\6\1\0\1\6\1\141\20\6\14\0\1\6"+ + "\6\0\21\6\1\0\2\6\1\0\2\6\1\210\17\6"+ + "\14\0\1\6\6\0\21\6\1\0\2\6\1\0\4\6"+ + "\1\211\1\212\14\6\14\0\1\6\6\0\21\6\1\0"+ + "\2\6\1\0\2\6\1\213\17\6\14\0\1\6\6\0"+ + "\12\6\1\214\6\6\1\0\2\6\1\0\10\6\1\215"+ + "\2\6\1\216\6\6\14\0\1\6\6\0\21\6\1\0"+ + "\2\6\1\0\10\6\1\217\11\6\14\0\1\6\6\0"+ + "\21\6\1\0\2\6\1\0\11\6\1\220\10\6\14\0"+ + "\1\6\6\0\21\6\1\0\2\6\1\0\11\6\1\221"+ + "\10\6\14\0\1\6\6\0\21\6\1\0\2\6\1\0"+ + "\4\6\1\222\4\6\1\223\10\6\14\0\1\6\6\0"+ + "\21\6\1\0\2\6\1\0\10\6\1\224\11\6\14\0"+ + "\1\6\6\0\21\6\1\0\2\6\1\0\7\6\1\225"+ + "\12\6\14\0\1\6\6\0\21\6\1\0\2\6\1\0"+ + "\11\6\1\226\10\6\14\0\1\6\6\0\14\6\1\227"+ + "\4\6\1\0\2\6\1\0\22\6\14\0\1\6\6\0"+ + "\21\6\1\0\2\6\1\0\1\6\1\146\20\6\14\0"+ + "\1\6\6\0\14\6\1\230\1\6\1\231\2\6\1\0"+ + "\2\6\1\0\22\6\14\0\1\6\6\0\12\6\1\232"+ + "\6\6\1\0\2\6\1\0\22\6\14\0\1\6\6\0"+ + "\21\6\1\0\2\6\1\0\5\6\1\233\12\6\1\234"+ + "\1\6\14\0\1\6\6\0\21\6\1\0\2\6\1\0"+ + "\4\6\1\211\15\6\14\0\1\6\6\0\12\6\1\235"+ + "\6\6\1\0\2\6\1\0\22\6\14\0\1\6\6\0"+ + "\21\6\1\0\1\236\1\6\1\0\22\6\14\0\1\6"+ + "\6\0\21\6\1\0\2\6\1\0\7\6\1\237\12\6"+ + "\14\0\1\6\6\0\21\6\1\0\2\6\1\0\5\6"+ + "\1\240\14\6\14\0\1\6\6\0\21\6\1\0\2\6"+ + "\1\0\5\6\1\241\4\6\1\242\7\6\14\0\1\6"+ + "\6\0\20\6\1\141\1\0\2\6\1\0\22\6\14\0"+ + "\1\6\6\0\14\6\1\243\4\6\1\0\2\6\1\0"+ + "\2\6\1\244\17\6\14\0\1\6\6\0\16\6\1\245"+ + "\2\6\1\0\2\6\1\0\22\6\14\0\1\6\6\0"+ + "\21\6\1\0\2\6\1\0\1\6\1\246\1\247\17\6"+ + "\14\0\1\6\6\0\21\6\1\0\2\6\1\0\7\6"+ + "\1\250\12\6\14\0\1\6\6\0\21\6\1\0\2\6"+ + "\1\0\12\6\1\251\2\6\1\252\4\6\14\0\1\6"+ + "\6\0\21\6\1\0\2\6\1\0\11\6\1\253\10\6"+ + "\14\0\1\6\6\0\21\6\1\0\2\6\1\0\13\6"+ + "\1\254\6\6\14\0\1\6\6\0\12\6\1\255\6\6"+ + "\1\0\2\6\1\0\14\6\1\146\5\6\14\0\1\6"+ + "\6\0\21\6\1\0\2\6\1\0\1\6\1\256\7\6"+ + "\1\257\10\6\14\0\1\6\6\0\21\6\1\0\2\6"+ + "\1\0\20\6\1\260\1\6\14\0\1\6\6\0\21\6"+ + "\1\0\2\6\1\0\16\6\1\261\3\6\14\0\1\6"+ + "\6\0\21\6\1\0\1\262\1\6\1\0\22\6\14\0"+ + "\1\6\6\0\21\6\1\0\2\6\1\0\17\6\1\146"+ + "\2\6\14\0\1\6\6\0\21\6\1\0\2\6\1\0"+ + "\13\6\1\263\6\6\14\0\1\6\6\0\21\6\1\0"+ + "\2\6\1\0\5\6\1\141\3\6\1\264\10\6\14\0"+ + "\1\6\6\0\14\6\1\265\4\6\1\0\2\6\1\0"+ + "\5\6\1\266\14\6\14\0\1\6\6\0\21\6\1\0"+ + "\2\6\1\0\5\6\1\267\14\6\14\0\1\6\6\0"+ + "\21\6\1\0\2\6\1\0\5\6\1\270\14\6\14\0"+ + "\1\6\6\0\21\6\1\0\2\6\1\0\6\6\1\271"+ + "\13\6\14\0\1\6\6\0\21\6\1\0\2\6\1\0"+ + "\11\6\1\272\10\6\14\0\1\6\6\0\21\6\1\0"+ + "\2\6\1\0\1\273\21\6\14\0\1\6\6\0\21\6"+ + "\1\0\2\6\1\0\7\6\1\274\1\6\1\275\10\6"+ + "\14\0\1\6\6\0\14\6\1\276\4\6\1\0\2\6"+ + "\1\0\22\6\14\0\1\6\6\0\14\6\1\277\4\6"+ + "\1\0\2\6\1\0\11\6\1\300\10\6\14\0\1\6"+ + "\6\0\21\6\1\0\2\6\1\0\1\6\1\301\20\6"+ + "\14\0\1\6\2\161\1\162\67\161\2\164\1\162\67\164"+ + "\2\0\1\167\67\0\4\170\1\302\65\170\3\0\1\167"+ + "\1\171\131\0\1\303\53\0\1\304\106\0\1\305\52\0"+ + "\1\55\104\0\1\305\4\0\1\306\61\0\1\307\63\0"+ + "\1\310\71\0\1\304\14\0\1\173\43\0\1\311\127\0"+ + "\1\312\53\0\1\313\45\0\2\205\4\0\1\205\4\0"+ + "\3\66\54\0\2\205\4\0\1\205\57\0\1\53\1\0"+ + "\1\53\1\0\2\207\1\0\1\53\1\0\1\53\1\207"+ + "\1\0\1\53\1\0\1\53\1\66\1\67\1\66\2\0"+ + "\1\53\17\0\1\53\26\0\21\6\1\0\2\6\1\0"+ + "\4\6\1\257\15\6\14\0\1\6\6\0\21\6\1\0"+ + "\1\146\1\6\1\0\22\6\14\0\1\6\6\0\7\6"+ + "\1\314\11\6\1\0\2\6\1\0\22\6\14\0\1\6"+ + "\6\0\21\6\1\0\2\6\1\0\1\6\1\266\20\6"+ + "\14\0\1\6\6\0\21\6\1\0\2\6\1\0\5\6"+ + "\1\217\14\6\14\0\1\6\6\0\21\6\1\0\2\6"+ + "\1\0\4\6\1\315\1\316\14\6\14\0\1\6\6\0"+ + "\21\6\1\0\2\6\1\0\20\6\1\317\1\6\14\0"+ + "\1\6\6\0\20\6\1\146\1\0\2\6\1\0\22\6"+ + "\14\0\1\6\6\0\21\6\1\0\2\6\1\0\10\6"+ + "\1\320\11\6\14\0\1\6\6\0\21\6\1\0\2\6"+ + "\1\0\11\6\1\321\10\6\14\0\1\6\6\0\21\6"+ + "\1\0\2\6\1\0\7\6\1\322\12\6\14\0\1\6"+ + "\6\0\21\6\1\0\2\6\1\0\12\6\1\266\7\6"+ + "\14\0\1\6\6\0\21\6\1\0\2\6\1\0\2\6"+ + "\1\315\17\6\14\0\1\6\6\0\21\6\1\0\1\323"+ + "\1\6\1\0\22\6\14\0\1\6\6\0\21\6\1\0"+ + "\2\6\1\0\4\6\1\255\15\6\14\0\1\6\6\0"+ + "\21\6\1\0\1\324\1\6\1\0\22\6\14\0\1\6"+ + "\6\0\21\6\1\0\2\6\1\0\2\6\1\325\17\6"+ + "\14\0\1\6\6\0\21\6\1\0\2\6\1\0\1\326"+ + "\21\6\14\0\1\6\6\0\21\6\1\0\1\327\1\6"+ + "\1\0\22\6\14\0\1\6\6\0\14\6\1\330\4\6"+ + "\1\0\2\6\1\0\7\6\1\250\12\6\14\0\1\6"+ + "\6\0\21\6\1\0\2\6\1\0\13\6\1\146\6\6"+ + "\14\0\1\6\6\0\21\6\1\0\2\6\1\0\2\6"+ + "\1\331\17\6\14\0\1\6\6\0\14\6\1\266\4\6"+ + "\1\0\2\6\1\0\22\6\14\0\1\6\6\0\21\6"+ + "\1\0\2\6\1\0\2\6\1\332\4\6\1\333\12\6"+ + "\14\0\1\6\6\0\12\6\1\334\6\6\1\0\2\6"+ + "\1\0\22\6\14\0\1\6\6\0\21\6\1\0\2\6"+ + "\1\0\11\6\1\335\10\6\14\0\1\6\6\0\21\6"+ + "\1\0\1\336\1\6\1\0\22\6\14\0\1\6\6\0"+ + "\14\6\1\337\4\6\1\0\2\6\1\0\22\6\14\0"+ + "\1\6\6\0\21\6\1\0\1\340\1\6\1\0\22\6"+ + "\14\0\1\6\6\0\12\6\1\341\6\6\1\0\2\6"+ + "\1\0\22\6\14\0\1\6\6\0\21\6\1\0\2\6"+ + "\1\0\5\6\1\342\14\6\14\0\1\6\6\0\21\6"+ + "\1\0\2\6\1\0\1\6\1\315\20\6\14\0\1\6"+ + "\6\0\21\6\1\0\2\6\1\0\10\6\1\343\11\6"+ + "\14\0\1\6\6\0\21\6\1\0\1\344\1\6\1\0"+ + "\22\6\14\0\1\6\6\0\21\6\1\0\2\6\1\0"+ + "\5\6\1\212\14\6\14\0\1\6\6\0\21\6\1\0"+ + "\2\6\1\0\20\6\1\345\1\6\14\0\1\6\6\0"+ + "\21\6\1\0\1\346\1\6\1\0\22\6\14\0\1\6"+ + "\6\0\21\6\1\0\1\347\1\6\1\0\7\6\1\143"+ + "\12\6\14\0\1\6\6\0\21\6\1\0\2\6\1\0"+ + "\4\6\1\146\15\6\14\0\1\6\6\0\21\6\1\0"+ + "\1\350\1\6\1\0\22\6\14\0\1\6\6\0\21\6"+ + "\1\0\1\351\1\6\1\0\22\6\14\0\1\6\6\0"+ + "\21\6\1\0\2\6\1\0\1\6\1\352\20\6\14\0"+ + "\1\6\6\0\21\6\1\0\1\353\1\6\1\0\22\6"+ + "\14\0\1\6\6\0\21\6\1\0\2\6\1\0\10\6"+ + "\1\354\11\6\14\0\1\6\6\0\21\6\1\0\2\6"+ + "\1\0\11\6\1\355\10\6\14\0\1\6\6\0\21\6"+ + "\1\0\2\6\1\0\7\6\1\146\12\6\14\0\1\6"+ + "\6\0\21\6\1\0\2\6\1\0\2\6\1\356\17\6"+ + "\14\0\1\6\6\0\21\6\1\0\2\6\1\0\2\6"+ + "\1\357\17\6\14\0\1\6\6\0\14\6\1\211\4\6"+ + "\1\0\2\6\1\0\22\6\14\0\1\6\6\0\14\6"+ + "\1\360\4\6\1\0\2\6\1\0\22\6\14\0\1\6"+ + "\6\0\21\6\1\0\2\6\1\0\5\6\1\361\14\6"+ + "\14\0\1\6\6\0\21\6\1\0\2\6\1\0\21\6"+ + "\1\362\14\0\1\6\6\0\12\6\1\211\6\6\1\0"+ + "\2\6\1\0\22\6\14\0\1\6\6\0\21\6\1\0"+ + "\2\6\1\0\2\6\1\363\17\6\14\0\1\6\6\0"+ + "\20\6\1\266\1\0\2\6\1\0\22\6\14\0\1\6"+ + "\6\0\21\6\1\0\2\6\1\0\5\6\1\364\14\6"+ + "\14\0\1\6\3\170\1\167\1\302\65\170\43\0\1\365"+ + "\56\0\1\306\71\0\1\366\65\0\1\366\107\0\1\367"+ + "\73\0\1\306\47\0\1\370\111\0\1\371\74\0\1\372"+ + "\32\0\21\6\1\0\2\6\1\0\6\6\1\146\13\6"+ + "\14\0\1\6\6\0\21\6\1\0\2\6\1\0\5\6"+ + "\1\266\14\6\14\0\1\6\6\0\21\6\1\0\2\6"+ + "\1\0\11\6\1\373\10\6\14\0\1\6\6\0\14\6"+ + "\1\374\4\6\1\0\2\6\1\0\22\6\14\0\1\6"+ + "\6\0\21\6\1\0\2\6\1\0\12\6\1\146\7\6"+ + "\14\0\1\6\6\0\21\6\1\0\2\6\1\0\12\6"+ + "\1\251\7\6\14\0\1\6\6\0\21\6\1\0\2\6"+ + "\1\0\10\6\1\266\11\6\14\0\1\6\6\0\21\6"+ + "\1\0\2\6\1\0\10\6\1\220\11\6\14\0\1\6"+ + "\6\0\21\6\1\0\2\6\1\0\5\6\1\211\14\6"+ + "\14\0\1\6\6\0\12\6\1\375\6\6\1\0\2\6"+ + "\1\0\22\6\14\0\1\6\6\0\14\6\1\376\4\6"+ + "\1\0\2\6\1\0\22\6\14\0\1\6\6\0\21\6"+ + "\1\0\2\6\1\0\1\6\1\322\20\6\14\0\1\6"+ + "\6\0\21\6\1\0\2\6\1\0\11\6\1\377\10\6"+ + "\14\0\1\6\6\0\21\6\1\0\2\6\1\0\3\6"+ + "\1\146\16\6\14\0\1\6\6\0\21\6\1\0\2\6"+ + "\1\0\10\6\1\u0100\11\6\14\0\1\6\6\0\21\6"+ + "\1\0\2\6\1\0\1\6\1\374\20\6\14\0\1\6"+ + "\6\0\21\6\1\0\2\6\1\0\1\6\1\u0101\20\6"+ + "\14\0\1\6\6\0\21\6\1\0\2\6\1\0\4\6"+ + "\1\u0102\15\6\14\0\1\6\6\0\7\6\1\u0103\11\6"+ + "\1\0\2\6\1\0\22\6\14\0\1\6\6\0\21\6"+ + "\1\0\1\220\1\6\1\0\22\6\14\0\1\6\6\0"+ + "\7\6\1\u0104\11\6\1\0\2\6\1\0\22\6\14\0"+ + "\1\6\6\0\7\6\1\315\11\6\1\0\2\6\1\0"+ + "\22\6\14\0\1\6\6\0\21\6\1\0\2\6\1\0"+ + "\11\6\1\u0105\10\6\14\0\1\6\6\0\21\6\1\0"+ + "\1\300\1\6\1\0\22\6\14\0\1\6\6\0\21\6"+ + "\1\0\2\6\1\0\7\6\1\u0106\12\6\14\0\1\6"+ + "\6\0\14\6\1\u0107\4\6\1\0\2\6\1\0\22\6"+ + "\14\0\1\6\6\0\21\6\1\0\2\6\1\0\2\6"+ + "\1\220\17\6\14\0\1\6\6\0\20\6\1\u0108\1\0"+ + "\2\6\1\0\10\6\1\u0109\1\220\10\6\14\0\1\6"+ + "\6\0\21\6\1\0\2\6\1\0\22\6\14\0\1\374"+ + "\6\0\21\6\1\0\2\6\1\0\2\6\1\u010a\17\6"+ + "\14\0\1\6\6\0\21\6\1\0\2\6\1\0\4\6"+ + "\1\u010b\15\6\14\0\1\6\6\0\14\6\1\265\4\6"+ + "\1\0\2\6\1\0\22\6\14\0\1\6\6\0\21\6"+ + "\1\0\2\6\1\0\10\6\1\211\11\6\14\0\1\6"+ + "\6\0\21\6\1\0\2\6\1\0\1\272\21\6\14\0"+ + "\1\6\6\0\21\6\1\0\2\6\1\0\1\6\1\u010c"+ + "\20\6\14\0\1\6\6\0\21\6\1\0\2\6\1\0"+ + "\11\6\1\u010d\10\6\14\0\1\6\6\0\21\6\1\0"+ + "\1\u010e\1\6\1\0\22\6\14\0\1\6\6\0\21\6"+ + "\1\0\2\6\1\0\2\6\1\u010f\17\6\14\0\1\6"+ + "\6\0\21\6\1\0\2\6\1\0\5\6\1\u0110\14\6"+ + "\14\0\1\6\6\0\12\6\1\u0111\6\6\1\0\2\6"+ + "\1\0\22\6\14\0\1\6\45\0\1\366\60\0\1\366"+ + "\55\0\1\u0112\105\0\1\u0113\103\0\1\u0114\31\0\21\6"+ + "\1\0\2\6\1\0\10\6\1\276\11\6\14\0\1\6"+ + "\6\0\14\6\1\u0115\4\6\1\0\2\6\1\0\22\6"+ + "\14\0\1\6\6\0\21\6\1\0\1\266\1\6\1\0"+ + "\22\6\14\0\1\6\6\0\7\6\1\u0116\11\6\1\0"+ + "\2\6\1\0\22\6\14\0\1\6\6\0\20\6\1\374"+ + "\1\0\2\6\1\0\22\6\14\0\1\6\6\0\21\6"+ + "\1\0\2\6\1\0\10\6\1\146\11\6\14\0\1\6"+ + "\6\0\21\6\1\0\2\6\1\0\5\6\1\u0117\14\6"+ + "\14\0\1\6\6\0\21\6\1\0\2\6\1\0\5\6"+ + "\1\u0118\14\6\14\0\1\6\6\0\21\6\1\0\2\6"+ + "\1\0\2\6\1\u0119\17\6\14\0\1\6\6\0\7\6"+ + "\1\u011a\11\6\1\0\2\6\1\0\22\6\14\0\1\6"+ + "\6\0\16\6\1\146\2\6\1\0\2\6\1\0\22\6"+ + "\14\0\1\6\6\0\21\6\1\0\2\6\1\0\2\6"+ + "\1\324\17\6\14\0\1\6\6\0\21\6\1\0\1\u0106"+ + "\1\6\1\0\22\6\14\0\1\6\6\0\21\6\1\0"+ + "\2\6\1\0\2\6\1\u011b\17\6\14\0\1\6\6\0"+ + "\21\6\1\0\2\6\1\0\5\6\1\u011c\14\6\14\0"+ + "\1\6\6\0\21\6\1\0\2\6\1\0\20\6\1\u011d"+ + "\1\6\14\0\1\6\6\0\21\6\1\0\2\6\1\0"+ + "\16\6\1\315\3\6\14\0\1\6\6\0\7\6\1\266"+ + "\11\6\1\0\2\6\1\0\22\6\14\0\1\6\6\0"+ + "\7\6\1\u011e\11\6\1\0\2\6\1\0\22\6\14\0"+ + "\1\6\6\0\21\6\1\0\2\6\1\0\5\6\1\376"+ + "\14\6\14\0\1\6\6\0\21\6\1\0\2\6\1\0"+ + "\11\6\1\326\10\6\14\0\1\6\6\0\21\6\1\0"+ + "\2\6\1\0\2\6\1\u011f\17\6\14\0\1\6\26\0"+ + "\1\305\103\0\1\366\66\0\1\366\42\0\21\6\1\0"+ + "\2\6\1\0\5\6\1\146\14\6\14\0\1\6\6\0"+ + "\21\6\1\0\2\6\1\0\11\6\1\315\10\6\14\0"+ + "\1\6\6\0\21\6\1\0\1\213\1\6\1\0\22\6"+ + "\14\0\1\6\6\0\21\6\1\0\2\6\1\0\2\6"+ + "\1\u0120\17\6\14\0\1\6\6\0\21\6\1\0\2\6"+ + "\1\0\4\6\1\u0115\15\6\14\0\1\6\6\0\21\6"+ + "\1\0\2\6\1\0\16\6\1\340\3\6\14\0\1\6"+ + "\6\0\21\6\1\0\2\6\1\0\13\6\1\211\6\6"+ + "\14\0\1\6\6\0\21\6\1\0\2\6\1\0\7\6"+ + "\1\333\12\6\14\0\1\6\6\0\21\6\1\0\2\6"+ + "\1\0\2\6\1\u0121\17\6\14\0\1\6\6\0\21\6"+ + "\1\0\2\6\1\0\5\6\1\343\14\6\14\0\1\6"+ + "\6\0\14\6\1\146\4\6\1\0\2\6\1\0\22\6"+ + "\14\0\1\6\6\0\21\6\1\0\2\6\1\0\10\6"+ + "\1\u0122\11\6\14\0\1\6\6\0\7\6\1\211\11\6"+ + "\1\0\2\6\1\0\22\6\14\0\1\6\6\0\21\6"+ + "\1\0\2\6\1\0\14\6\1\146\5\6\14\0\1\6"; + + private static int [] zzUnpackTrans() { + int [] result = new int[15718]; + 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\34\1\6\11\3\1\1\0"+ + "\1\1\6\0\4\1\1\11\2\1\1\0\67\1\1\0"+ + "\1\11\3\0\1\1\1\11\11\0\1\1\3\0\1\1"+ + "\1\0\73\1\12\0\51\1\1\0\1\11\4\0\27\1"+ + "\3\0\16\1"; + + private static int [] zzUnpackAttribute() { + int [] result = new int[290]; + 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[] = new char[ZZ_BUFFERSIZE]; + + /** 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; + + /** number of newlines encountered up to the start of the matched text */ + private int yyline; + + /** the number of characters up to the start of the matched text */ + private int yychar; + + /** + * the number of characters from the last newline up to the start of the + * matched text + */ + private int yycolumn; + + /** + * 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; + + /** denotes if the user-EOF-code has already been executed */ + private boolean zzEOFDone; + + /* user code: */ + + public CppLexer() { + super(); + } + + @Override + public int yychar() { + return yychar; + } + + private static final byte PARAN = 1; + private static final byte BRACKET = 2; + private static final byte CURLY = 3; + + + + /** + * 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 CppLexer(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 CppLexer(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 < 1778) { + int count = packed.charAt(i++); + char value = packed.charAt(i++); + do map[j++] = value; while (--count > 0); + } + return map; + } + + + /** + * Refills the input buffer. + * + * @return false, iff there was new input. + * + * @exception java.io.IOException if any I/O-Error occurs + */ + private boolean zzRefill() throws java.io.IOException { + + /* first: make room (if you can) */ + if (zzStartRead > 0) { + System.arraycopy(zzBuffer, zzStartRead, + zzBuffer, 0, + zzEndRead-zzStartRead); + + /* translate stored positions */ + zzEndRead-= zzStartRead; + zzCurrentPos-= zzStartRead; + zzMarkedPos-= zzStartRead; + zzStartRead = 0; + } + + /* is the buffer big enough? */ + if (zzCurrentPos >= zzBuffer.length) { + /* if not: blow it up */ + char newBuffer[] = new char[zzCurrentPos*2]; + System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); + zzBuffer = newBuffer; + } + + /* finally: fill the buffer with new input */ + int numRead = zzReader.read(zzBuffer, zzEndRead, + zzBuffer.length-zzEndRead); + + if (numRead > 0) { + zzEndRead+= numRead; + return false; + } + // unlikely but not impossible: read 0 characters, but not at end of stream + if (numRead == 0) { + int c = zzReader.read(); + if (c == -1) { + return true; + } else { + zzBuffer[zzEndRead++] = (char) c; + return false; + } + } + + // numRead < 0 + return true; + } + + + /** + * 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(); + } + + + /** + * 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 ZZ_INITIAL. + * + * @param reader the new input stream + */ + public final void yyreset(java.io.Reader reader) { + zzReader = reader; + zzAtBOL = true; + zzAtEOF = false; + zzEOFDone = false; + zzEndRead = zzStartRead = 0; + zzCurrentPos = zzMarkedPos = 0; + yyline = yychar = yycolumn = 0; + zzLexicalState = YYINITIAL; + } + + + /** + * Returns the current lexical state. + */ + public final int yystate() { + return zzLexicalState; + } + + + /** + * Enters a new lexical state + * + * @param newState the new lexical state + */ + 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 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; + + yychar+= zzMarkedPosL-zzStartRead; + + zzAction = -1; + + zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; + + 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 16: + { return token(TokenType.TYPE2); + } + case 17: break; + case 13: + { return token(TokenType.KEYWORD); + } + case 18: break; + case 8: + { return token(TokenType.OPERATOR, CURLY); + } + case 19: break; + case 10: + { return token(TokenType.OPERATOR, BRACKET); + } + case 20: break; + case 2: + { return token(TokenType.OPERATOR); + } + case 21: break; + case 7: + { return token(TokenType.OPERATOR, -PARAN); + } + case 22: break; + case 15: + { return token(TokenType.KEYWORD2); + } + case 23: break; + case 4: + { return token(TokenType.IDENTIFIER); + } + case 24: break; + case 6: + { return token(TokenType.OPERATOR, PARAN); + } + case 25: break; + case 14: + { return token(TokenType.STRING); + } + case 26: break; + case 12: + { return token(TokenType.COMMENT); + } + case 27: break; + case 11: + { return token(TokenType.OPERATOR, -BRACKET); + } + case 28: break; + case 9: + { return token(TokenType.OPERATOR, -CURLY); + } + case 29: break; + case 5: + { return token(TokenType.NUMBER); + } + case 30: break; + case 3: + { return token(TokenType.TYPE); + } + case 31: break; + case 1: + { + } + case 32: break; + default: + if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { + zzAtEOF = true; + { + return null; + } + } + else { + zzScanError(ZZ_NO_MATCH); + } + } + } + } + + +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/DOSBatchLexer.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/DOSBatchLexer.java new file mode 100644 index 000000000..9f089216a --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/DOSBatchLexer.java @@ -0,0 +1,914 @@ +/* The following code was generated by JFlex 1.4.3 on 21.7.10 18:14 */ + +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jsyntaxpane.lexers; + + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + + +/** + * This class is a scanner generated by + * JFlex 1.4.3 + * on 21.7.10 18:14 from the specification file + * D:/Dokumenty/Programovani/JavaSE/JPSWFDec/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/dosbatch.flex + */ +public final class DOSBatchLexer extends DefaultJFlexLexer { + + /** This character denotes the end of file */ + public static final int YYEOF = -1; + + /** initial size of the lookahead buffer */ + private static final int ZZ_BUFFERSIZE = 16384; + + /** lexical states */ + public static final int ECHO_TEXT = 2; + 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, 0, 1, 1 + }; + + /** + * Translates characters to character classes + */ + private static final String ZZ_CMAP_PACKED = + "\11\27\1\0\1\5\2\0\1\4\16\27\10\0\1\26\1\25\12\0"+ + "\12\41\1\36\5\0\1\6\1\13\1\33\1\12\1\23\1\2\1\17"+ + "\1\7\1\31\1\16\1\37\1\34\1\14\1\3\1\32\1\10\1\21"+ + "\1\37\1\1\1\20\1\11\1\35\1\24\1\37\1\15\1\22\1\37"+ + "\4\0\1\40\1\0\1\13\1\33\1\12\1\23\1\2\1\17\1\7"+ + "\1\31\1\16\1\37\1\34\1\14\1\3\1\32\1\10\1\21\1\37"+ + "\1\1\1\20\1\11\1\35\1\24\1\37\1\15\1\22\1\37\4\0"+ + "\41\27\2\0\4\26\4\0\1\26\2\0\1\27\7\0\1\26\4\0"+ + "\1\26\5\0\27\26\1\0\37\26\1\0\u013f\26\31\0\162\26\4\0"+ + "\14\26\16\0\5\26\11\0\1\26\21\0\130\27\5\0\23\27\12\0"+ + "\1\26\13\0\1\26\1\0\3\26\1\0\1\26\1\0\24\26\1\0"+ + "\54\26\1\0\46\26\1\0\5\26\4\0\202\26\1\0\4\27\3\0"+ + "\105\26\1\0\46\26\2\0\2\26\6\0\20\26\41\0\46\26\2\0"+ + "\1\26\7\0\47\26\11\0\21\27\1\0\27\27\1\0\3\27\1\0"+ + "\1\27\1\0\2\27\1\0\1\27\13\0\33\26\5\0\3\26\15\0"+ + "\4\27\14\0\6\27\13\0\32\26\5\0\13\26\16\27\7\0\12\30"+ + "\4\0\2\26\1\27\143\26\1\0\1\26\10\27\1\0\6\27\2\26"+ + "\2\27\1\0\4\27\2\26\12\30\3\26\2\0\1\26\17\0\1\27"+ + "\1\26\1\27\36\26\33\27\2\0\3\26\60\0\46\26\13\27\1\26"+ + "\u014f\0\3\27\66\26\2\0\1\27\1\26\20\27\2\0\1\26\4\27"+ + "\3\0\12\26\2\27\2\0\12\30\21\0\3\27\1\0\10\26\2\0"+ + "\2\26\2\0\26\26\1\0\7\26\1\0\1\26\3\0\4\26\2\0"+ + "\1\27\1\26\7\27\2\0\2\27\2\0\3\27\11\0\1\27\4\0"+ + "\2\26\1\0\3\26\2\27\2\0\12\30\4\26\15\0\3\27\1\0"+ + "\6\26\4\0\2\26\2\0\26\26\1\0\7\26\1\0\2\26\1\0"+ + "\2\26\1\0\2\26\2\0\1\27\1\0\5\27\4\0\2\27\2\0"+ + "\3\27\13\0\4\26\1\0\1\26\7\0\12\30\2\27\3\26\14\0"+ + "\3\27\1\0\11\26\1\0\3\26\1\0\26\26\1\0\7\26\1\0"+ + "\2\26\1\0\5\26\2\0\1\27\1\26\10\27\1\0\3\27\1\0"+ + "\3\27\2\0\1\26\17\0\2\26\2\27\2\0\12\30\1\0\1\26"+ + "\17\0\3\27\1\0\10\26\2\0\2\26\2\0\26\26\1\0\7\26"+ + "\1\0\2\26\1\0\5\26\2\0\1\27\1\26\6\27\3\0\2\27"+ + "\2\0\3\27\10\0\2\27\4\0\2\26\1\0\3\26\4\0\12\30"+ + "\1\0\1\26\20\0\1\27\1\26\1\0\6\26\3\0\3\26\1\0"+ + "\4\26\3\0\2\26\1\0\1\26\1\0\2\26\3\0\2\26\3\0"+ + "\3\26\3\0\10\26\1\0\3\26\4\0\5\27\3\0\3\27\1\0"+ + "\4\27\11\0\1\27\17\0\11\30\11\0\1\26\7\0\3\27\1\0"+ + "\10\26\1\0\3\26\1\0\27\26\1\0\12\26\1\0\5\26\4\0"+ + "\7\27\1\0\3\27\1\0\4\27\7\0\2\27\11\0\2\26\4\0"+ + "\12\30\22\0\2\27\1\0\10\26\1\0\3\26\1\0\27\26\1\0"+ + "\12\26\1\0\5\26\2\0\1\27\1\26\7\27\1\0\3\27\1\0"+ + "\4\27\7\0\2\27\7\0\1\26\1\0\2\26\4\0\12\30\22\0"+ + "\2\27\1\0\10\26\1\0\3\26\1\0\27\26\1\0\20\26\4\0"+ + "\6\27\2\0\3\27\1\0\4\27\11\0\1\27\10\0\2\26\4\0"+ + "\12\30\22\0\2\27\1\0\22\26\3\0\30\26\1\0\11\26\1\0"+ + "\1\26\2\0\7\26\3\0\1\27\4\0\6\27\1\0\1\27\1\0"+ + "\10\27\22\0\2\27\15\0\60\26\1\27\2\26\7\27\4\0\10\26"+ + "\10\27\1\0\12\30\47\0\2\26\1\0\1\26\2\0\2\26\1\0"+ + "\1\26\2\0\1\26\6\0\4\26\1\0\7\26\1\0\3\26\1\0"+ + "\1\26\1\0\1\26\2\0\2\26\1\0\4\26\1\27\2\26\6\27"+ + "\1\0\2\27\1\26\2\0\5\26\1\0\1\26\1\0\6\27\2\0"+ + "\12\30\2\0\2\26\42\0\1\26\27\0\2\27\6\0\12\30\13\0"+ + "\1\27\1\0\1\27\1\0\1\27\4\0\2\27\10\26\1\0\42\26"+ + "\6\0\24\27\1\0\2\27\4\26\4\0\10\27\1\0\44\27\11\0"+ + "\1\27\71\0\42\26\1\0\5\26\1\0\2\26\1\0\7\27\3\0"+ + "\4\27\6\0\12\30\6\0\6\26\4\27\106\0\46\26\12\0\51\26"+ + "\7\0\132\26\5\0\104\26\5\0\122\26\6\0\7\26\1\0\77\26"+ + "\1\0\1\26\1\0\4\26\2\0\7\26\1\0\1\26\1\0\4\26"+ + "\2\0\47\26\1\0\1\26\1\0\4\26\2\0\37\26\1\0\1\26"+ + "\1\0\4\26\2\0\7\26\1\0\1\26\1\0\4\26\2\0\7\26"+ + "\1\0\7\26\1\0\27\26\1\0\37\26\1\0\1\26\1\0\4\26"+ + "\2\0\7\26\1\0\47\26\1\0\23\26\16\0\11\30\56\0\125\26"+ + "\14\0\u026c\26\2\0\10\26\12\0\32\26\5\0\113\26\3\0\3\26"+ + "\17\0\15\26\1\0\4\26\3\27\13\0\22\26\3\27\13\0\22\26"+ + "\2\27\14\0\15\26\1\0\3\26\1\0\2\27\14\0\64\26\40\27"+ + "\3\0\1\26\3\0\2\26\1\27\2\0\12\30\41\0\3\27\2\0"+ + "\12\30\6\0\130\26\10\0\51\26\1\27\126\0\35\26\3\0\14\27"+ + "\4\0\14\27\12\0\12\30\36\26\2\0\5\26\u038b\0\154\26\224\0"+ + "\234\26\4\0\132\26\6\0\26\26\2\0\6\26\2\0\46\26\2\0"+ + "\6\26\2\0\10\26\1\0\1\26\1\0\1\26\1\0\1\26\1\0"+ + "\37\26\2\0\65\26\1\0\7\26\1\0\1\26\3\0\3\26\1\0"+ + "\7\26\3\0\4\26\2\0\6\26\4\0\15\26\5\0\3\26\1\0"+ + "\7\26\17\0\4\27\32\0\5\27\20\0\2\26\23\0\1\26\13\0"+ + "\4\27\6\0\6\27\1\0\1\26\15\0\1\26\40\0\22\26\36\0"+ + "\15\27\4\0\1\27\3\0\6\27\27\0\1\26\4\0\1\26\2\0"+ + "\12\26\1\0\1\26\3\0\5\26\6\0\1\26\1\0\1\26\1\0"+ + "\1\26\1\0\4\26\1\0\3\26\1\0\7\26\3\0\3\26\5\0"+ + "\5\26\26\0\44\26\u0e81\0\3\26\31\0\11\26\6\27\1\0\5\26"+ + "\2\0\5\26\4\0\126\26\2\0\2\27\2\0\3\26\1\0\137\26"+ + "\5\0\50\26\4\0\136\26\21\0\30\26\70\0\20\26\u0200\0\u19b6\26"+ + "\112\0\u51a6\26\132\0\u048d\26\u0773\0\u2ba4\26\u215c\0\u012e\26\2\0\73\26"+ + "\225\0\7\26\14\0\5\26\5\0\1\26\1\27\12\26\1\0\15\26"+ + "\1\0\5\26\1\0\1\26\1\0\2\26\1\0\2\26\1\0\154\26"+ + "\41\0\u016b\26\22\0\100\26\2\0\66\26\50\0\15\26\3\0\20\27"+ + "\20\0\4\27\17\0\2\26\30\0\3\26\31\0\1\26\6\0\5\26"+ + "\1\0\207\26\2\0\1\27\4\0\1\26\13\0\12\30\7\0\32\26"+ + "\4\0\1\26\1\0\32\26\12\0\132\26\3\0\6\26\2\0\6\26"+ + "\2\0\6\26\2\0\3\26\3\0\2\26\3\0\2\26\22\0\3\27"+ + "\4\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\3\3\1\2\1\4\15\3\1\2"+ + "\3\3\1\2\2\1\1\5\1\1\2\3\1\4\20\3"+ + "\1\4\25\3\1\0\1\6\3\3\1\7\1\1\1\6"+ + "\1\4\3\3\1\4\25\3\1\4\1\3\1\4\11\3"+ + "\1\4\1\10\2\3\1\10\1\11\1\3\2\11\6\3"+ + "\1\12\2\3\1\4\7\3\1\4\24\3"; + + private static int [] zzUnpackAction() { + int [] result = new int[164]; + 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\42\0\104\0\146\0\210\0\252\0\314\0\104"+ + "\0\356\0\u0110\0\u0132\0\u0154\0\u0176\0\u0198\0\u01ba\0\u01dc"+ + "\0\u01fe\0\u0220\0\u0242\0\u0264\0\u0286\0\u02a8\0\u02ca\0\u02ec"+ + "\0\u030e\0\u0330\0\u0352\0\u0374\0\104\0\u0396\0\u03b8\0\u03da"+ + "\0\u0110\0\u03fc\0\u041e\0\u0440\0\u0462\0\u0484\0\u04a6\0\u04c8"+ + "\0\u04ea\0\u050c\0\u052e\0\u0550\0\u0572\0\u0594\0\u05b6\0\u05d8"+ + "\0\u05fa\0\u061c\0\u063e\0\u0660\0\u0682\0\u06a4\0\u06c6\0\u06e8"+ + "\0\u070a\0\u072c\0\u074e\0\u0770\0\u0792\0\u07b4\0\u07d6\0\u07f8"+ + "\0\u081a\0\u083c\0\u085e\0\u0880\0\u08a2\0\u08c4\0\u08e6\0\u0908"+ + "\0\u092a\0\u094c\0\u096e\0\u0990\0\u09b2\0\u09d4\0\u09f6\0\u0a18"+ + "\0\u0a3a\0\u0a5c\0\u0a7e\0\u0aa0\0\u0ac2\0\u0ae4\0\u0b06\0\u0b28"+ + "\0\u0b4a\0\u0b6c\0\u0b8e\0\u0bb0\0\u0bd2\0\u0bf4\0\u0c16\0\u0c38"+ + "\0\u0c5a\0\u0c7c\0\u0c9e\0\u0cc0\0\u0ce2\0\u0d04\0\u0d26\0\u0d48"+ + "\0\u0d6a\0\u0d8c\0\u0dae\0\u0b6c\0\u0dd0\0\u0df2\0\u0e14\0\u0e36"+ + "\0\u0e58\0\u0e7a\0\u0e9c\0\u0ebe\0\u0ee0\0\u0f02\0\104\0\u0f24"+ + "\0\u0f46\0\u0352\0\u0f68\0\u0a18\0\u0f8a\0\104\0\u0fac\0\u0fce"+ + "\0\u0ff0\0\u1012\0\u1034\0\u1056\0\u0110\0\u1078\0\u109a\0\u10bc"+ + "\0\u10de\0\u1100\0\u1122\0\u1144\0\u1166\0\u1188\0\u11aa\0\u11cc"+ + "\0\u11ee\0\u1210\0\u1232\0\u1254\0\u1276\0\u1298\0\u12ba\0\u12dc"+ + "\0\u12fe\0\u1320\0\u1342\0\u1364\0\u1386\0\u13a8\0\u13ca\0\u13ec"+ + "\0\u140e\0\u1430\0\u1452\0\u1474"; + + private static int [] zzUnpackRowMap() { + int [] result = new int[164]; + 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\1\7\1\3\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\12\1\24\1\25\1\26\3\12\1\27"+ + "\1\12\1\30\1\31\1\12\1\32\3\12\4\33\1\34"+ + "\1\35\17\33\1\36\14\33\43\0\1\12\1\37\1\40"+ + "\3\0\14\12\1\41\1\12\1\0\10\12\1\0\3\12"+ + "\1\0\1\42\2\12\3\0\3\12\1\43\1\12\1\44"+ + "\1\45\7\12\1\0\4\12\1\46\3\12\1\0\3\12"+ + "\1\0\3\12\3\0\1\12\1\47\12\12\1\41\1\12"+ + "\1\0\6\12\1\40\1\12\1\0\3\12\5\0\1\3"+ + "\35\0\1\50\2\12\3\0\1\12\1\51\14\12\1\0"+ + "\10\12\1\0\3\12\1\0\3\12\3\0\16\12\1\0"+ + "\10\12\1\0\3\12\1\0\1\52\2\12\3\0\7\12"+ + "\1\53\3\12\1\54\2\12\1\0\10\12\1\0\3\12"+ + "\1\0\2\12\1\55\3\0\1\12\1\56\2\12\1\57"+ + "\1\60\6\12\1\41\1\12\1\0\3\12\1\61\4\12"+ + "\1\0\3\12\1\0\3\12\3\0\2\12\1\62\6\12"+ + "\1\63\1\64\3\12\1\0\10\12\1\0\3\12\1\0"+ + "\3\12\3\0\4\12\1\65\11\12\1\0\10\12\1\0"+ + "\3\12\1\0\3\12\3\0\3\12\1\66\12\12\1\0"+ + "\10\12\1\0\3\12\1\0\3\12\3\0\10\12\1\41"+ + "\5\12\1\0\10\12\1\0\3\12\1\0\3\12\3\0"+ + "\1\12\1\67\1\70\1\41\3\12\1\71\6\12\1\0"+ + "\10\12\1\0\3\12\1\0\1\12\1\72\1\12\3\0"+ + "\1\12\1\73\1\74\13\12\1\0\3\12\1\75\3\12"+ + "\1\76\1\0\3\12\1\0\1\77\2\12\3\0\1\12"+ + "\1\100\2\12\1\101\11\12\1\0\7\12\1\102\1\0"+ + "\3\12\1\0\1\12\1\103\1\12\3\0\1\12\1\104"+ + "\2\12\1\105\2\12\1\106\6\12\1\0\10\12\1\0"+ + "\3\12\1\0\1\12\1\107\1\12\3\0\1\12\1\103"+ + "\14\12\1\0\10\12\1\0\3\12\1\0\3\110\3\0"+ + "\16\110\1\0\1\110\1\0\1\111\5\110\1\0\2\110"+ + "\1\111\1\0\1\12\1\112\1\12\3\0\16\12\1\0"+ + "\10\12\1\0\3\12\1\0\1\113\2\12\3\0\16\12"+ + "\1\0\10\12\1\0\3\12\1\0\1\12\1\114\1\12"+ + "\3\0\16\12\1\0\10\12\1\0\3\12\1\0\3\115"+ + "\3\0\16\115\4\0\5\115\1\0\1\115\2\0\5\33"+ + "\1\0\41\33\1\35\35\33\3\116\1\33\1\0\1\33"+ + "\16\116\1\33\1\116\1\33\1\117\5\116\1\33\2\116"+ + "\1\117\1\0\2\12\1\120\3\0\3\12\1\121\5\12"+ + "\1\122\1\123\3\12\1\0\4\12\1\124\3\12\1\0"+ + "\3\12\1\0\3\12\3\0\14\12\1\125\1\12\1\0"+ + "\10\12\1\0\3\12\1\0\1\126\2\12\3\0\4\12"+ + "\1\44\11\12\1\0\10\12\1\0\3\12\1\0\3\12"+ + "\3\0\16\12\1\0\3\12\1\127\4\12\1\0\3\12"+ + "\1\0\3\12\3\0\11\12\1\130\4\12\1\0\10\12"+ + "\1\0\3\12\1\0\3\12\3\0\7\12\1\131\6\12"+ + "\1\0\10\12\1\0\3\12\1\0\3\12\3\0\14\12"+ + "\1\132\1\12\1\0\10\12\1\0\3\12\1\0\1\130"+ + "\2\12\3\0\14\12\2\130\1\0\10\12\1\0\3\12"+ + "\1\0\3\12\3\0\4\12\1\133\11\12\1\0\10\12"+ + "\1\0\3\12\1\0\3\12\3\0\2\12\1\134\13\12"+ + "\1\0\10\12\1\0\3\12\1\0\1\12\1\130\1\12"+ + "\3\0\16\12\1\0\10\12\1\0\3\12\1\0\2\12"+ + "\1\130\3\0\2\12\1\135\13\12\1\0\10\12\1\0"+ + "\3\12\1\0\3\12\3\0\12\12\1\130\3\12\1\0"+ + "\10\12\1\0\3\12\1\0\3\12\3\0\14\12\1\41"+ + "\1\12\1\0\10\12\1\0\3\12\1\0\2\12\1\136"+ + "\3\0\5\12\1\137\4\12\1\140\3\12\1\0\4\12"+ + "\1\141\3\12\1\0\3\12\1\0\3\12\3\0\3\12"+ + "\1\142\1\12\1\103\10\12\1\0\10\12\1\0\3\12"+ + "\1\0\3\12\3\0\11\12\1\41\4\12\1\0\10\12"+ + "\1\0\3\12\1\0\3\12\3\0\3\12\1\143\10\12"+ + "\1\125\1\12\1\0\6\12\1\144\1\12\1\0\3\12"+ + "\1\0\3\12\3\0\2\12\1\145\13\12\1\0\10\12"+ + "\1\0\3\12\1\0\3\12\3\0\11\12\1\146\4\12"+ + "\1\0\10\12\1\0\3\12\1\0\3\12\3\0\12\12"+ + "\1\147\3\12\1\0\10\12\1\0\3\12\1\0\3\12"+ + "\3\0\16\12\1\0\5\12\1\150\2\12\1\0\3\12"+ + "\1\0\3\12\3\0\1\12\1\151\14\12\1\0\10\12"+ + "\1\0\3\12\1\0\1\152\2\12\3\0\16\12\1\0"+ + "\10\12\1\0\3\12\1\0\3\12\3\0\13\12\1\54"+ + "\2\12\1\0\10\12\1\0\3\12\1\0\3\12\3\0"+ + "\16\12\1\0\4\12\1\153\3\12\1\0\3\12\1\0"+ + "\3\12\3\0\2\12\1\154\13\12\1\0\10\12\1\0"+ + "\3\12\1\0\1\155\2\12\3\0\16\12\1\0\10\12"+ + "\1\0\3\12\1\0\3\12\3\0\4\12\1\73\11\12"+ + "\1\0\10\12\1\0\3\12\1\0\3\12\3\0\7\12"+ + "\1\156\6\12\1\0\10\12\1\0\3\12\1\0\3\12"+ + "\3\0\16\12\1\0\5\12\1\157\2\12\1\0\3\12"+ + "\1\0\3\12\3\0\1\12\1\160\5\12\1\161\6\12"+ + "\1\0\10\12\1\0\3\12\1\0\3\12\3\0\12\12"+ + "\1\55\3\12\1\0\10\12\1\0\3\12\1\0\3\12"+ + "\3\0\2\12\1\162\13\12\1\0\7\12\1\44\1\0"+ + "\3\12\1\0\3\12\3\0\11\12\1\163\4\12\1\0"+ + "\10\12\1\0\3\12\1\0\3\12\3\0\5\12\1\41"+ + "\10\12\1\0\10\12\1\0\3\12\1\0\3\12\3\0"+ + "\11\12\1\164\4\12\1\0\10\12\1\0\3\12\1\0"+ + "\3\12\3\0\2\12\1\130\13\12\1\0\10\12\1\0"+ + "\3\12\1\0\1\41\2\12\3\0\11\12\1\165\4\12"+ + "\1\0\10\12\1\0\3\12\1\0\1\166\2\12\3\0"+ + "\16\12\1\0\10\12\1\0\3\12\1\0\3\110\3\0"+ + "\16\110\1\167\10\110\1\0\3\110\30\0\1\111\10\0"+ + "\1\111\1\0\3\12\3\0\5\12\1\143\10\12\1\0"+ + "\10\12\1\0\3\12\1\0\1\12\1\170\1\12\3\0"+ + "\16\12\1\0\10\12\1\0\3\12\1\0\3\12\3\0"+ + "\13\12\1\171\2\12\1\0\10\12\1\0\3\12\1\0"+ + "\3\115\3\0\16\115\4\0\5\115\1\0\3\115\1\33"+ + "\3\116\1\33\1\0\1\33\16\116\1\172\10\116\1\33"+ + "\3\116\5\33\1\0\22\33\1\117\10\33\1\117\1\173"+ + "\3\174\1\175\1\176\1\173\16\174\1\173\10\174\1\173"+ + "\3\174\1\0\3\12\3\0\1\12\1\177\14\12\1\0"+ + "\10\12\1\0\3\12\1\0\3\12\3\0\2\12\1\200"+ + "\13\12\1\0\10\12\1\0\3\12\1\0\3\12\3\0"+ + "\5\12\1\201\10\12\1\0\10\12\1\0\3\12\1\0"+ + "\3\12\3\0\4\12\1\202\11\12\1\0\10\12\1\0"+ + "\3\12\1\0\3\12\3\0\7\12\1\203\6\12\1\0"+ + "\10\12\1\0\3\12\1\0\3\12\3\0\1\12\1\204"+ + "\14\12\1\0\10\12\1\0\3\12\1\0\3\12\3\0"+ + "\1\12\1\205\14\12\1\0\10\12\1\0\3\12\1\0"+ + "\1\12\1\41\1\12\3\0\16\12\1\0\10\12\1\0"+ + "\3\12\1\0\3\12\3\0\2\12\1\41\6\12\1\155"+ + "\4\12\1\0\10\12\1\0\3\12\1\0\3\12\3\0"+ + "\5\12\1\206\10\12\1\0\10\12\1\0\3\12\1\0"+ + "\3\12\3\0\10\12\1\207\5\12\1\0\10\12\1\0"+ + "\3\12\1\0\3\12\3\0\1\12\1\41\14\12\1\0"+ + "\10\12\1\0\3\12\1\0\3\12\3\0\5\12\1\130"+ + "\10\12\1\0\10\12\1\0\3\12\1\0\3\12\3\0"+ + "\12\12\1\210\3\12\1\0\10\12\1\0\3\12\1\0"+ + "\3\12\3\0\1\12\1\203\14\12\1\0\10\12\1\0"+ + "\3\12\1\0\3\12\3\0\13\12\1\41\2\12\1\0"+ + "\10\12\1\0\3\12\1\0\3\12\3\0\15\12\1\211"+ + "\1\0\10\12\1\0\3\12\1\0\3\12\3\0\5\12"+ + "\1\60\10\12\1\0\10\12\1\0\3\12\1\0\3\12"+ + "\3\0\12\12\1\41\3\12\1\0\10\12\1\0\3\12"+ + "\1\0\3\12\3\0\14\12\1\212\1\12\1\0\4\12"+ + "\1\213\3\12\1\0\3\12\1\0\1\214\2\12\3\0"+ + "\16\12\1\0\10\12\1\0\3\12\1\0\3\12\3\0"+ + "\1\12\1\215\14\12\1\0\10\12\1\0\3\12\1\0"+ + "\1\12\1\216\1\12\3\0\16\12\1\0\10\12\1\0"+ + "\3\12\1\0\1\12\1\103\1\12\3\0\16\12\1\0"+ + "\10\12\1\0\3\12\1\0\3\12\3\0\12\12\1\140"+ + "\3\12\1\0\10\12\1\0\3\12\1\0\2\12\1\217"+ + "\3\0\16\12\1\0\10\12\1\0\3\12\1\0\3\12"+ + "\3\0\14\12\1\220\1\12\1\0\10\12\1\0\3\12"+ + "\1\0\3\12\3\0\2\12\1\41\13\12\1\0\10\12"+ + "\1\0\3\12\1\0\3\12\3\0\10\12\1\155\5\12"+ + "\1\0\10\12\1\0\3\12\1\0\3\12\3\0\11\12"+ + "\1\155\4\12\1\0\10\12\1\0\3\12\1\0\2\12"+ + "\1\221\3\0\16\12\1\0\10\12\1\0\3\12\1\0"+ + "\3\12\3\0\16\12\1\0\4\12\1\155\3\12\1\0"+ + "\3\12\1\0\3\12\3\0\16\12\1\0\3\12\1\41"+ + "\4\12\1\0\3\12\1\0\3\12\3\0\16\12\1\0"+ + "\3\12\1\55\4\12\1\0\3\12\1\0\3\12\3\0"+ + "\16\12\1\0\6\12\1\222\1\12\1\0\3\12\1\0"+ + "\3\12\3\0\16\12\1\0\6\12\1\223\1\12\1\0"+ + "\3\12\1\0\3\12\3\0\7\12\1\224\6\12\1\0"+ + "\10\12\1\0\3\12\1\0\3\12\3\0\4\12\1\225"+ + "\11\12\1\0\10\12\1\0\3\12\1\0\3\12\3\0"+ + "\16\12\1\0\5\12\1\41\2\12\1\0\3\12\4\173"+ + "\1\175\1\176\34\173\5\0\1\176\35\0\3\12\3\0"+ + "\15\12\1\226\1\0\10\12\1\0\3\12\1\0\3\12"+ + "\3\0\1\12\1\227\14\12\1\0\10\12\1\0\3\12"+ + "\1\0\3\12\3\0\4\12\1\230\11\12\1\0\10\12"+ + "\1\0\3\12\1\0\2\12\1\130\3\0\16\12\1\0"+ + "\10\12\1\0\3\12\1\0\1\41\2\12\3\0\16\12"+ + "\1\0\10\12\1\0\3\12\1\0\1\231\2\12\3\0"+ + "\16\12\1\0\10\12\1\0\3\12\1\0\3\12\3\0"+ + "\1\12\1\232\14\12\1\0\10\12\1\0\3\12\1\0"+ + "\3\12\3\0\2\12\1\233\13\12\1\0\10\12\1\0"+ + "\3\12\1\0\3\12\3\0\4\12\1\234\11\12\1\0"+ + "\10\12\1\0\3\12\1\0\1\12\1\73\1\12\3\0"+ + "\16\12\1\0\10\12\1\0\3\12\1\0\3\12\3\0"+ + "\11\12\1\225\4\12\1\0\10\12\1\0\3\12\1\0"+ + "\3\12\3\0\2\12\1\235\13\12\1\0\10\12\1\0"+ + "\3\12\1\0\3\12\3\0\7\12\1\171\6\12\1\0"+ + "\10\12\1\0\3\12\1\0\3\12\3\0\3\12\1\41"+ + "\12\12\1\0\10\12\1\0\3\12\1\0\3\12\3\0"+ + "\16\12\1\0\4\12\1\55\3\12\1\0\3\12\1\0"+ + "\3\12\3\0\4\12\1\155\11\12\1\0\10\12\1\0"+ + "\3\12\1\0\3\12\3\0\11\12\1\236\4\12\1\0"+ + "\10\12\1\0\3\12\1\0\3\12\3\0\12\12\1\155"+ + "\3\12\1\0\10\12\1\0\3\12\1\0\1\12\1\140"+ + "\1\12\3\0\16\12\1\0\10\12\1\0\3\12\1\0"+ + "\3\12\3\0\3\12\1\237\12\12\1\0\10\12\1\0"+ + "\3\12\1\0\3\12\3\0\10\12\1\140\5\12\1\0"+ + "\10\12\1\0\3\12\1\0\3\12\3\0\16\12\1\0"+ + "\6\12\1\41\1\12\1\0\3\12\1\0\1\12\1\203"+ + "\1\12\3\0\16\12\1\0\10\12\1\0\3\12\1\0"+ + "\1\130\2\12\3\0\16\12\1\0\10\12\1\0\3\12"+ + "\1\0\3\12\3\0\3\12\1\130\12\12\1\0\10\12"+ + "\1\0\3\12\1\0\3\12\3\0\5\12\1\240\10\12"+ + "\1\0\10\12\1\0\3\12\1\0\3\12\3\0\3\12"+ + "\1\241\12\12\1\0\10\12\1\0\3\12\1\0\3\12"+ + "\3\0\4\12\1\242\11\12\1\0\10\12\1\0\3\12"+ + "\1\0\3\12\3\0\3\12\1\155\12\12\1\0\10\12"+ + "\1\0\3\12\1\0\3\12\3\0\10\12\1\60\5\12"+ + "\1\0\10\12\1\0\3\12\1\0\3\12\3\0\2\12"+ + "\1\203\13\12\1\0\10\12\1\0\3\12\1\0\3\12"+ + "\3\0\1\12\1\243\14\12\1\0\10\12\1\0\3\12"+ + "\1\0\1\12\1\244\1\12\3\0\16\12\1\0\10\12"+ + "\1\0\3\12\1\0\3\12\3\0\4\12\1\103\11\12"+ + "\1\0\10\12\1\0\3\12\1\0\3\12\3\0\16\12"+ + "\1\0\5\12\1\103\2\12\1\0\3\12\1\0\2\12"+ + "\1\143\3\0\12\12\1\140\3\12\1\0\10\12\1\0"+ + "\3\12\1\0\3\12\3\0\15\12\1\150\1\0\10\12"+ + "\1\0\3\12"; + + private static int [] zzUnpackTrans() { + int [] result = new int[5270]; + 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\1\11\4\1\1\11\24\1\1\11\52\1"+ + "\1\0\56\1\1\11\6\1\1\11\46\1"; + + private static int [] zzUnpackAttribute() { + int [] result = new int[164]; + 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[] = new char[ZZ_BUFFERSIZE]; + + /** 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; + + /** number of newlines encountered up to the start of the matched text */ + private int yyline; + + /** the number of characters up to the start of the matched text */ + private int yychar; + + /** + * the number of characters from the last newline up to the start of the + * matched text + */ + private int yycolumn; + + /** + * 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; + + /** denotes if the user-EOF-code has already been executed */ + private boolean zzEOFDone; + + /* user code: */ + /** + * Create an empty lexer, yyrset will be called later to reset and assign + * the reader + */ + public DOSBatchLexer() { + super(); + } + + @Override + public int yychar() { + return yychar; + } + + + /** + * 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 DOSBatchLexer(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 DOSBatchLexer(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 < 1762) { + int count = packed.charAt(i++); + char value = packed.charAt(i++); + do map[j++] = value; while (--count > 0); + } + return map; + } + + + /** + * Refills the input buffer. + * + * @return false, iff there was new input. + * + * @exception java.io.IOException if any I/O-Error occurs + */ + private boolean zzRefill() throws java.io.IOException { + + /* first: make room (if you can) */ + if (zzStartRead > 0) { + System.arraycopy(zzBuffer, zzStartRead, + zzBuffer, 0, + zzEndRead-zzStartRead); + + /* translate stored positions */ + zzEndRead-= zzStartRead; + zzCurrentPos-= zzStartRead; + zzMarkedPos-= zzStartRead; + zzStartRead = 0; + } + + /* is the buffer big enough? */ + if (zzCurrentPos >= zzBuffer.length) { + /* if not: blow it up */ + char newBuffer[] = new char[zzCurrentPos*2]; + System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); + zzBuffer = newBuffer; + } + + /* finally: fill the buffer with new input */ + int numRead = zzReader.read(zzBuffer, zzEndRead, + zzBuffer.length-zzEndRead); + + if (numRead > 0) { + zzEndRead+= numRead; + return false; + } + // unlikely but not impossible: read 0 characters, but not at end of stream + if (numRead == 0) { + int c = zzReader.read(); + if (c == -1) { + return true; + } else { + zzBuffer[zzEndRead++] = (char) c; + return false; + } + } + + // numRead < 0 + return true; + } + + + /** + * 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(); + } + + + /** + * 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 ZZ_INITIAL. + * + * @param reader the new input stream + */ + public final void yyreset(java.io.Reader reader) { + zzReader = reader; + zzAtBOL = true; + zzAtEOF = false; + zzEOFDone = false; + zzEndRead = zzStartRead = 0; + zzCurrentPos = zzMarkedPos = 0; + yyline = yychar = yycolumn = 0; + zzLexicalState = YYINITIAL; + } + + + /** + * Returns the current lexical state. + */ + public final int yystate() { + return zzLexicalState; + } + + + /** + * Enters a new lexical state + * + * @param newState the new lexical state + */ + 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 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; + + yychar+= zzMarkedPosL-zzStartRead; + + zzAction = -1; + + zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; + + 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 5: + { yybegin(YYINITIAL) ; + } + case 11: break; + case 8: + { return token(TokenType.STRING2); + } + case 12: break; + case 10: + { yybegin(ECHO_TEXT); + return token(TokenType.KEYWORD); + } + case 13: break; + case 4: + { return token(TokenType.KEYWORD); + } + case 14: break; + case 7: + { return token(TokenType.TYPE3); + } + case 15: break; + case 6: + { return token(TokenType.KEYWORD2); + } + case 16: break; + case 3: + { return token(TokenType.IDENTIFIER); + } + case 17: break; + case 1: + { return token(TokenType.STRING); + } + case 18: break; + case 9: + { return token(TokenType.COMMENT); + } + case 19: break; + case 2: + { /* skip */ + } + case 20: break; + default: + if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { + zzAtEOF = true; + { + return null; + } + } + else { + zzScanError(ZZ_NO_MATCH); + } + } + } + } + + +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/Flasm3Lexer.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/Flasm3Lexer.java new file mode 100644 index 000000000..c85450b06 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/Flasm3Lexer.java @@ -0,0 +1,740 @@ +/* The following code was generated by JFlex 1.4.3 on 18.8.10 12:21 */ + +/* Flash assembler language lexer specification */ + +package jsyntaxpane.lexers; + + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + + +/** + * This class is a scanner generated by + * JFlex 1.4.3 + * on 18.8.10 12:21 from the specification file + * D:/Dokumenty/Programovani/JavaSE/ASDec/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/flasm3.flex + */ +public final class Flasm3Lexer extends DefaultJFlexLexer { + + /** This character denotes the end of file */ + public static final int YYEOF = -1; + + /** initial size of the lookahead buffer */ + private static final int ZZ_BUFFERSIZE = 16384; + + /** lexical states */ + public static final int STRING = 2; + public static final int YYINITIAL = 0; + public static final int PARAMETERS = 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, 0, 1, 1, 2, 2 + }; + + /** + * Translates characters to character classes + */ + private static final String ZZ_CMAP_PACKED = + "\11\11\1\3\1\2\1\0\1\3\1\1\16\11\4\0\1\3\1\0"+ + "\1\26\1\0\1\10\6\0\1\22\1\0\1\16\1\17\1\0\1\15"+ + "\3\15\4\23\2\6\1\14\1\24\5\0\4\10\1\20\25\10\1\5"+ + "\1\25\1\7\1\0\1\13\1\0\4\12\1\21\7\12\1\4\15\12"+ + "\4\0\41\11\2\0\4\10\4\0\1\10\2\0\1\11\7\0\1\10"+ + "\4\0\1\10\5\0\27\10\1\0\37\10\1\0\u013f\10\31\0\162\10"+ + "\4\0\14\10\16\0\5\10\11\0\1\10\21\0\130\11\5\0\23\11"+ + "\12\0\1\10\13\0\1\10\1\0\3\10\1\0\1\10\1\0\24\10"+ + "\1\0\54\10\1\0\46\10\1\0\5\10\4\0\202\10\1\0\4\11"+ + "\3\0\105\10\1\0\46\10\2\0\2\10\6\0\20\10\41\0\46\10"+ + "\2\0\1\10\7\0\47\10\11\0\21\11\1\0\27\11\1\0\3\11"+ + "\1\0\1\11\1\0\2\11\1\0\1\11\13\0\33\10\5\0\3\10"+ + "\15\0\4\11\14\0\6\11\13\0\32\10\5\0\13\10\16\11\7\0"+ + "\12\11\4\0\2\10\1\11\143\10\1\0\1\10\10\11\1\0\6\11"+ + "\2\10\2\11\1\0\4\11\2\10\12\11\3\10\2\0\1\10\17\0"+ + "\1\11\1\10\1\11\36\10\33\11\2\0\3\10\60\0\46\10\13\11"+ + "\1\10\u014f\0\3\11\66\10\2\0\1\11\1\10\20\11\2\0\1\10"+ + "\4\11\3\0\12\10\2\11\2\0\12\11\21\0\3\11\1\0\10\10"+ + "\2\0\2\10\2\0\26\10\1\0\7\10\1\0\1\10\3\0\4\10"+ + "\2\0\1\11\1\10\7\11\2\0\2\11\2\0\3\11\11\0\1\11"+ + "\4\0\2\10\1\0\3\10\2\11\2\0\12\11\4\10\15\0\3\11"+ + "\1\0\6\10\4\0\2\10\2\0\26\10\1\0\7\10\1\0\2\10"+ + "\1\0\2\10\1\0\2\10\2\0\1\11\1\0\5\11\4\0\2\11"+ + "\2\0\3\11\13\0\4\10\1\0\1\10\7\0\14\11\3\10\14\0"+ + "\3\11\1\0\11\10\1\0\3\10\1\0\26\10\1\0\7\10\1\0"+ + "\2\10\1\0\5\10\2\0\1\11\1\10\10\11\1\0\3\11\1\0"+ + "\3\11\2\0\1\10\17\0\2\10\2\11\2\0\12\11\1\0\1\10"+ + "\17\0\3\11\1\0\10\10\2\0\2\10\2\0\26\10\1\0\7\10"+ + "\1\0\2\10\1\0\5\10\2\0\1\11\1\10\6\11\3\0\2\11"+ + "\2\0\3\11\10\0\2\11\4\0\2\10\1\0\3\10\4\0\12\11"+ + "\1\0\1\10\20\0\1\11\1\10\1\0\6\10\3\0\3\10\1\0"+ + "\4\10\3\0\2\10\1\0\1\10\1\0\2\10\3\0\2\10\3\0"+ + "\3\10\3\0\10\10\1\0\3\10\4\0\5\11\3\0\3\11\1\0"+ + "\4\11\11\0\1\11\17\0\11\11\11\0\1\10\7\0\3\11\1\0"+ + "\10\10\1\0\3\10\1\0\27\10\1\0\12\10\1\0\5\10\4\0"+ + "\7\11\1\0\3\11\1\0\4\11\7\0\2\11\11\0\2\10\4\0"+ + "\12\11\22\0\2\11\1\0\10\10\1\0\3\10\1\0\27\10\1\0"+ + "\12\10\1\0\5\10\2\0\1\11\1\10\7\11\1\0\3\11\1\0"+ + "\4\11\7\0\2\11\7\0\1\10\1\0\2\10\4\0\12\11\22\0"+ + "\2\11\1\0\10\10\1\0\3\10\1\0\27\10\1\0\20\10\4\0"+ + "\6\11\2\0\3\11\1\0\4\11\11\0\1\11\10\0\2\10\4\0"+ + "\12\11\22\0\2\11\1\0\22\10\3\0\30\10\1\0\11\10\1\0"+ + "\1\10\2\0\7\10\3\0\1\11\4\0\6\11\1\0\1\11\1\0"+ + "\10\11\22\0\2\11\15\0\60\10\1\11\2\10\7\11\4\0\10\10"+ + "\10\11\1\0\12\11\47\0\2\10\1\0\1\10\2\0\2\10\1\0"+ + "\1\10\2\0\1\10\6\0\4\10\1\0\7\10\1\0\3\10\1\0"+ + "\1\10\1\0\1\10\2\0\2\10\1\0\4\10\1\11\2\10\6\11"+ + "\1\0\2\11\1\10\2\0\5\10\1\0\1\10\1\0\6\11\2\0"+ + "\12\11\2\0\2\10\42\0\1\10\27\0\2\11\6\0\12\11\13\0"+ + "\1\11\1\0\1\11\1\0\1\11\4\0\2\11\10\10\1\0\42\10"+ + "\6\0\24\11\1\0\2\11\4\10\4\0\10\11\1\0\44\11\11\0"+ + "\1\11\71\0\42\10\1\0\5\10\1\0\2\10\1\0\7\11\3\0"+ + "\4\11\6\0\12\11\6\0\6\10\4\11\106\0\46\10\12\0\51\10"+ + "\7\0\132\10\5\0\104\10\5\0\122\10\6\0\7\10\1\0\77\10"+ + "\1\0\1\10\1\0\4\10\2\0\7\10\1\0\1\10\1\0\4\10"+ + "\2\0\47\10\1\0\1\10\1\0\4\10\2\0\37\10\1\0\1\10"+ + "\1\0\4\10\2\0\7\10\1\0\1\10\1\0\4\10\2\0\7\10"+ + "\1\0\7\10\1\0\27\10\1\0\37\10\1\0\1\10\1\0\4\10"+ + "\2\0\7\10\1\0\47\10\1\0\23\10\16\0\11\11\56\0\125\10"+ + "\14\0\u026c\10\2\0\10\10\12\0\32\10\5\0\113\10\3\0\3\10"+ + "\17\0\15\10\1\0\4\10\3\11\13\0\22\10\3\11\13\0\22\10"+ + "\2\11\14\0\15\10\1\0\3\10\1\0\2\11\14\0\64\10\40\11"+ + "\3\0\1\10\3\0\2\10\1\11\2\0\12\11\41\0\3\11\2\0"+ + "\12\11\6\0\130\10\10\0\51\10\1\11\126\0\35\10\3\0\14\11"+ + "\4\0\14\11\12\0\12\11\36\10\2\0\5\10\u038b\0\154\10\224\0"+ + "\234\10\4\0\132\10\6\0\26\10\2\0\6\10\2\0\46\10\2\0"+ + "\6\10\2\0\10\10\1\0\1\10\1\0\1\10\1\0\1\10\1\0"+ + "\37\10\2\0\65\10\1\0\7\10\1\0\1\10\3\0\3\10\1\0"+ + "\7\10\3\0\4\10\2\0\6\10\4\0\15\10\5\0\3\10\1\0"+ + "\7\10\17\0\4\11\32\0\5\11\20\0\2\10\23\0\1\10\13\0"+ + "\4\11\6\0\6\11\1\0\1\10\15\0\1\10\40\0\22\10\36\0"+ + "\15\11\4\0\1\11\3\0\6\11\27\0\1\10\4\0\1\10\2\0"+ + "\12\10\1\0\1\10\3\0\5\10\6\0\1\10\1\0\1\10\1\0"+ + "\1\10\1\0\4\10\1\0\3\10\1\0\7\10\3\0\3\10\5\0"+ + "\5\10\26\0\44\10\u0e81\0\3\10\31\0\11\10\6\11\1\0\5\10"+ + "\2\0\5\10\4\0\126\10\2\0\2\11\2\0\3\10\1\0\137\10"+ + "\5\0\50\10\4\0\136\10\21\0\30\10\70\0\20\10\u0200\0\u19b6\10"+ + "\112\0\u51a6\10\132\0\u048d\10\u0773\0\u2ba4\10\u215c\0\u012e\10\2\0\73\10"+ + "\225\0\7\10\14\0\5\10\5\0\1\10\1\11\12\10\1\0\15\10"+ + "\1\0\5\10\1\0\1\10\1\0\2\10\1\0\2\10\1\0\154\10"+ + "\41\0\u016b\10\22\0\100\10\2\0\66\10\50\0\15\10\3\0\20\11"+ + "\20\0\4\11\17\0\2\10\30\0\3\10\31\0\1\10\6\0\5\10"+ + "\1\0\207\10\2\0\1\11\4\0\1\10\13\0\12\11\7\0\32\10"+ + "\4\0\1\10\1\0\32\10\12\0\132\10\3\0\6\10\2\0\6\10"+ + "\2\0\6\10\2\0\3\10\3\0\2\10\3\0\2\10\22\0\3\11"+ + "\4\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\1\1\3\2\4\1\1\1\5"+ + "\2\6\1\7\1\10\1\7\2\1\1\11\1\12\1\0"+ + "\1\13\1\14\2\3\1\0\1\10\2\0\2\11\1\3"+ + "\1\0\1\10\2\0\1\15"; + + private static int [] zzUnpackAction() { + int [] result = new int[38]; + 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\27\0\56\0\105\0\134\0\163\0\212\0\241"+ + "\0\270\0\105\0\317\0\105\0\346\0\105\0\375\0\u0114"+ + "\0\u012b\0\u0142\0\u0159\0\u0170\0\105\0\212\0\105\0\105"+ + "\0\u0187\0\u019e\0\u01b5\0\u01cc\0\u01e3\0\u0159\0\u01fa\0\105"+ + "\0\105\0\u0211\0\u0228\0\u0228\0\u023f\0\105"; + + private static int [] zzUnpackRowMap() { + int [] result = new int[38]; + 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\4\1\5\1\6\3\4\1\7\1\4\1\6\1\7"+ + "\4\4\1\7\1\6\5\4\1\10\1\11\1\12\22\10"+ + "\1\13\1\14\1\4\1\15\1\16\1\4\1\17\1\4"+ + "\1\20\1\4\1\21\1\4\2\21\1\4\1\20\1\22"+ + "\1\23\2\21\1\4\1\20\1\24\1\4\1\25\32\0"+ + "\1\5\27\0\1\6\1\0\1\6\1\0\2\26\2\6"+ + "\1\27\1\6\2\0\1\26\1\6\1\0\1\6\7\0"+ + "\1\26\1\0\1\26\1\0\4\26\1\27\1\26\2\0"+ + "\2\26\1\0\1\26\3\0\1\10\2\0\22\10\4\0"+ + "\1\12\24\0\2\30\1\0\12\30\1\31\5\30\1\32"+ + "\3\30\2\0\1\16\30\0\1\21\1\33\1\21\1\0"+ + "\4\21\1\0\1\21\2\0\2\21\1\0\1\21\11\0"+ + "\1\20\6\0\1\20\1\0\1\34\2\35\1\0\1\20"+ + "\7\0\1\21\1\0\1\21\1\0\4\21\1\0\1\21"+ + "\2\0\2\21\1\0\1\21\11\0\1\20\6\0\1\20"+ + "\1\0\1\36\3\0\1\20\11\0\1\34\6\0\1\34"+ + "\5\0\1\34\3\0\1\24\1\37\1\40\24\24\15\0"+ + "\1\32\5\0\1\32\20\0\1\41\5\0\1\41\11\0"+ + "\1\42\6\0\1\42\5\0\1\42\11\0\1\34\6\0"+ + "\1\34\2\0\2\35\1\0\1\34\11\0\1\43\6\0"+ + "\1\43\1\44\3\0\1\44\1\43\5\0\1\40\32\0"+ + "\1\42\1\45\5\0\1\42\5\0\1\42\11\0\1\43"+ + "\6\0\1\43\5\0\1\43\31\0\1\46"; + + private static int [] zzUnpackTrans() { + int [] result = new int[598]; + 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\5\1\1\11\1\1\1\11\1\1\1\11"+ + "\6\1\1\11\1\0\2\11\2\1\1\0\1\1\2\0"+ + "\1\1\2\11\1\0\1\1\2\0\1\11"; + + private static int [] zzUnpackAttribute() { + int [] result = new int[38]; + 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[] = new char[ZZ_BUFFERSIZE]; + + /** 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; + + /** number of newlines encountered up to the start of the matched text */ + private int yyline; + + /** the number of characters up to the start of the matched text */ + private int yychar; + + /** + * the number of characters from the last newline up to the start of the + * matched text + */ + private int yycolumn; + + /** + * 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; + + /** denotes if the user-EOF-code has already been executed */ + private boolean zzEOFDone; + + /* user code: */ + + StringBuffer string = new StringBuffer(); + boolean isMultiname=false; + + + /** + * Create an empty lexer, yyrset will be called later to reset and assign + * the reader + */ + public Flasm3Lexer() { + super(); + } + + @Override + public int yychar() { + return yychar; + } + + + + /** + * 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 Flasm3Lexer(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 Flasm3Lexer(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 < 1702) { + int count = packed.charAt(i++); + char value = packed.charAt(i++); + do map[j++] = value; while (--count > 0); + } + return map; + } + + + /** + * Refills the input buffer. + * + * @return false, iff there was new input. + * + * @exception java.io.IOException if any I/O-Error occurs + */ + private boolean zzRefill() throws java.io.IOException { + + /* first: make room (if you can) */ + if (zzStartRead > 0) { + System.arraycopy(zzBuffer, zzStartRead, + zzBuffer, 0, + zzEndRead-zzStartRead); + + /* translate stored positions */ + zzEndRead-= zzStartRead; + zzCurrentPos-= zzStartRead; + zzMarkedPos-= zzStartRead; + zzStartRead = 0; + } + + /* is the buffer big enough? */ + if (zzCurrentPos >= zzBuffer.length) { + /* if not: blow it up */ + char newBuffer[] = new char[zzCurrentPos*2]; + System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); + zzBuffer = newBuffer; + } + + /* finally: fill the buffer with new input */ + int numRead = zzReader.read(zzBuffer, zzEndRead, + zzBuffer.length-zzEndRead); + + if (numRead > 0) { + zzEndRead+= numRead; + return false; + } + // unlikely but not impossible: read 0 characters, but not at end of stream + if (numRead == 0) { + int c = zzReader.read(); + if (c == -1) { + return true; + } else { + zzBuffer[zzEndRead++] = (char) c; + return false; + } + } + + // numRead < 0 + return true; + } + + + /** + * 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(); + } + + + /** + * 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 ZZ_INITIAL. + * + * @param reader the new input stream + */ + public final void yyreset(java.io.Reader reader) { + zzReader = reader; + zzAtBOL = true; + zzAtEOF = false; + zzEOFDone = false; + zzEndRead = zzStartRead = 0; + zzCurrentPos = zzMarkedPos = 0; + yyline = yychar = yycolumn = 0; + zzLexicalState = YYINITIAL; + } + + + /** + * Returns the current lexical state. + */ + public final int yystate() { + return zzLexicalState; + } + + + /** + * Enters a new lexical state + * + * @param newState the new lexical state + */ + 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 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; + + yychar+= zzMarkedPosL-zzStartRead; + + zzAction = -1; + + zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; + + 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 5: + { yybegin(PARAMETERS); + // length also includes the trailing quote + if(isMultiname){ + return token(TokenType.IDENTIFIER, tokenStart, tokenLength + 1);//multiname + }else{ + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + } + case 14: break; + case 9: + { yybegin(YYINITIAL); return token(TokenType.COMMENT); + } + case 15: break; + case 4: + { yybegin(YYINITIAL); + return token(TokenType.ERROR,tokenStart, tokenLength); + } + case 16: break; + case 11: + { return token(TokenType.IDENTIFIER,yychar,yylength()-1); + } + case 17: break; + case 10: + { yybegin(STRING); + tokenStart = yychar; + tokenLength = 1; + isMultiname=false; + } + case 18: break; + case 13: + { isMultiname=true; + yybegin(STRING); + tokenStart = yychar; + tokenLength = yylength(); + } + case 19: break; + case 12: + { tokenLength += 2; + } + case 20: break; + case 7: + { return token(TokenType.IDENTIFIER); + } + case 21: break; + case 2: + { yybegin(PARAMETERS); + return token(TokenType.KEYWORD); + } + case 22: break; + case 8: + { return token(TokenType.NUMBER); + } + case 23: break; + case 6: + { yybegin(YYINITIAL); + } + case 24: break; + case 1: + { + } + case 25: break; + case 3: + { tokenLength += yylength(); + } + case 26: break; + default: + if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { + zzAtEOF = true; + { + return null; + } + } + else { + zzScanError(ZZ_NO_MATCH); + } + } + } + } + + +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/Flasm3Lexer.java~ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/Flasm3Lexer.java~ new file mode 100644 index 000000000..cb20fbfe5 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/Flasm3Lexer.java~ @@ -0,0 +1,739 @@ +/* The following code was generated by JFlex 1.4.3 on 28.7.10 15:00 */ + +/* Flash assembler language lexer specification */ + +package jsyntaxpane.lexers; + + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + + +/** + * This class is a scanner generated by + * JFlex 1.4.3 + * on 28.7.10 15:00 from the specification file + * D:/Dokumenty/Programovani/JavaSE/ASDec/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/flasm3.flex + */ +public final class Flasm3Lexer extends DefaultJFlexLexer { + + /** This character denotes the end of file */ + public static final int YYEOF = -1; + + /** initial size of the lookahead buffer */ + private static final int ZZ_BUFFERSIZE = 16384; + + /** lexical states */ + public static final int STRING = 2; + public static final int YYINITIAL = 0; + public static final int PARAMETERS = 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, 0, 1, 1, 2, 2 + }; + + /** + * Translates characters to character classes + */ + private static final String ZZ_CMAP_PACKED = + "\11\11\1\3\1\2\1\0\1\3\1\1\16\11\4\0\1\3\1\0"+ + "\1\25\1\0\1\10\6\0\1\21\1\0\1\21\1\16\1\0\1\15"+ + "\3\15\4\22\2\6\1\14\1\23\5\0\4\10\1\17\25\10\1\5"+ + "\1\24\1\7\1\0\1\13\1\0\4\12\1\20\7\12\1\4\15\12"+ + "\4\0\41\11\2\0\4\10\4\0\1\10\2\0\1\11\7\0\1\10"+ + "\4\0\1\10\5\0\27\10\1\0\37\10\1\0\u013f\10\31\0\162\10"+ + "\4\0\14\10\16\0\5\10\11\0\1\10\21\0\130\11\5\0\23\11"+ + "\12\0\1\10\13\0\1\10\1\0\3\10\1\0\1\10\1\0\24\10"+ + "\1\0\54\10\1\0\46\10\1\0\5\10\4\0\202\10\1\0\4\11"+ + "\3\0\105\10\1\0\46\10\2\0\2\10\6\0\20\10\41\0\46\10"+ + "\2\0\1\10\7\0\47\10\11\0\21\11\1\0\27\11\1\0\3\11"+ + "\1\0\1\11\1\0\2\11\1\0\1\11\13\0\33\10\5\0\3\10"+ + "\15\0\4\11\14\0\6\11\13\0\32\10\5\0\13\10\16\11\7\0"+ + "\12\11\4\0\2\10\1\11\143\10\1\0\1\10\10\11\1\0\6\11"+ + "\2\10\2\11\1\0\4\11\2\10\12\11\3\10\2\0\1\10\17\0"+ + "\1\11\1\10\1\11\36\10\33\11\2\0\3\10\60\0\46\10\13\11"+ + "\1\10\u014f\0\3\11\66\10\2\0\1\11\1\10\20\11\2\0\1\10"+ + "\4\11\3\0\12\10\2\11\2\0\12\11\21\0\3\11\1\0\10\10"+ + "\2\0\2\10\2\0\26\10\1\0\7\10\1\0\1\10\3\0\4\10"+ + "\2\0\1\11\1\10\7\11\2\0\2\11\2\0\3\11\11\0\1\11"+ + "\4\0\2\10\1\0\3\10\2\11\2\0\12\11\4\10\15\0\3\11"+ + "\1\0\6\10\4\0\2\10\2\0\26\10\1\0\7\10\1\0\2\10"+ + "\1\0\2\10\1\0\2\10\2\0\1\11\1\0\5\11\4\0\2\11"+ + "\2\0\3\11\13\0\4\10\1\0\1\10\7\0\14\11\3\10\14\0"+ + "\3\11\1\0\11\10\1\0\3\10\1\0\26\10\1\0\7\10\1\0"+ + "\2\10\1\0\5\10\2\0\1\11\1\10\10\11\1\0\3\11\1\0"+ + "\3\11\2\0\1\10\17\0\2\10\2\11\2\0\12\11\1\0\1\10"+ + "\17\0\3\11\1\0\10\10\2\0\2\10\2\0\26\10\1\0\7\10"+ + "\1\0\2\10\1\0\5\10\2\0\1\11\1\10\6\11\3\0\2\11"+ + "\2\0\3\11\10\0\2\11\4\0\2\10\1\0\3\10\4\0\12\11"+ + "\1\0\1\10\20\0\1\11\1\10\1\0\6\10\3\0\3\10\1\0"+ + "\4\10\3\0\2\10\1\0\1\10\1\0\2\10\3\0\2\10\3\0"+ + "\3\10\3\0\10\10\1\0\3\10\4\0\5\11\3\0\3\11\1\0"+ + "\4\11\11\0\1\11\17\0\11\11\11\0\1\10\7\0\3\11\1\0"+ + "\10\10\1\0\3\10\1\0\27\10\1\0\12\10\1\0\5\10\4\0"+ + "\7\11\1\0\3\11\1\0\4\11\7\0\2\11\11\0\2\10\4\0"+ + "\12\11\22\0\2\11\1\0\10\10\1\0\3\10\1\0\27\10\1\0"+ + "\12\10\1\0\5\10\2\0\1\11\1\10\7\11\1\0\3\11\1\0"+ + "\4\11\7\0\2\11\7\0\1\10\1\0\2\10\4\0\12\11\22\0"+ + "\2\11\1\0\10\10\1\0\3\10\1\0\27\10\1\0\20\10\4\0"+ + "\6\11\2\0\3\11\1\0\4\11\11\0\1\11\10\0\2\10\4\0"+ + "\12\11\22\0\2\11\1\0\22\10\3\0\30\10\1\0\11\10\1\0"+ + "\1\10\2\0\7\10\3\0\1\11\4\0\6\11\1\0\1\11\1\0"+ + "\10\11\22\0\2\11\15\0\60\10\1\11\2\10\7\11\4\0\10\10"+ + "\10\11\1\0\12\11\47\0\2\10\1\0\1\10\2\0\2\10\1\0"+ + "\1\10\2\0\1\10\6\0\4\10\1\0\7\10\1\0\3\10\1\0"+ + "\1\10\1\0\1\10\2\0\2\10\1\0\4\10\1\11\2\10\6\11"+ + "\1\0\2\11\1\10\2\0\5\10\1\0\1\10\1\0\6\11\2\0"+ + "\12\11\2\0\2\10\42\0\1\10\27\0\2\11\6\0\12\11\13\0"+ + "\1\11\1\0\1\11\1\0\1\11\4\0\2\11\10\10\1\0\42\10"+ + "\6\0\24\11\1\0\2\11\4\10\4\0\10\11\1\0\44\11\11\0"+ + "\1\11\71\0\42\10\1\0\5\10\1\0\2\10\1\0\7\11\3\0"+ + "\4\11\6\0\12\11\6\0\6\10\4\11\106\0\46\10\12\0\51\10"+ + "\7\0\132\10\5\0\104\10\5\0\122\10\6\0\7\10\1\0\77\10"+ + "\1\0\1\10\1\0\4\10\2\0\7\10\1\0\1\10\1\0\4\10"+ + "\2\0\47\10\1\0\1\10\1\0\4\10\2\0\37\10\1\0\1\10"+ + "\1\0\4\10\2\0\7\10\1\0\1\10\1\0\4\10\2\0\7\10"+ + "\1\0\7\10\1\0\27\10\1\0\37\10\1\0\1\10\1\0\4\10"+ + "\2\0\7\10\1\0\47\10\1\0\23\10\16\0\11\11\56\0\125\10"+ + "\14\0\u026c\10\2\0\10\10\12\0\32\10\5\0\113\10\3\0\3\10"+ + "\17\0\15\10\1\0\4\10\3\11\13\0\22\10\3\11\13\0\22\10"+ + "\2\11\14\0\15\10\1\0\3\10\1\0\2\11\14\0\64\10\40\11"+ + "\3\0\1\10\3\0\2\10\1\11\2\0\12\11\41\0\3\11\2\0"+ + "\12\11\6\0\130\10\10\0\51\10\1\11\126\0\35\10\3\0\14\11"+ + "\4\0\14\11\12\0\12\11\36\10\2\0\5\10\u038b\0\154\10\224\0"+ + "\234\10\4\0\132\10\6\0\26\10\2\0\6\10\2\0\46\10\2\0"+ + "\6\10\2\0\10\10\1\0\1\10\1\0\1\10\1\0\1\10\1\0"+ + "\37\10\2\0\65\10\1\0\7\10\1\0\1\10\3\0\3\10\1\0"+ + "\7\10\3\0\4\10\2\0\6\10\4\0\15\10\5\0\3\10\1\0"+ + "\7\10\17\0\4\11\32\0\5\11\20\0\2\10\23\0\1\10\13\0"+ + "\4\11\6\0\6\11\1\0\1\10\15\0\1\10\40\0\22\10\36\0"+ + "\15\11\4\0\1\11\3\0\6\11\27\0\1\10\4\0\1\10\2\0"+ + "\12\10\1\0\1\10\3\0\5\10\6\0\1\10\1\0\1\10\1\0"+ + "\1\10\1\0\4\10\1\0\3\10\1\0\7\10\3\0\3\10\5\0"+ + "\5\10\26\0\44\10\u0e81\0\3\10\31\0\11\10\6\11\1\0\5\10"+ + "\2\0\5\10\4\0\126\10\2\0\2\11\2\0\3\10\1\0\137\10"+ + "\5\0\50\10\4\0\136\10\21\0\30\10\70\0\20\10\u0200\0\u19b6\10"+ + "\112\0\u51a6\10\132\0\u048d\10\u0773\0\u2ba4\10\u215c\0\u012e\10\2\0\73\10"+ + "\225\0\7\10\14\0\5\10\5\0\1\10\1\11\12\10\1\0\15\10"+ + "\1\0\5\10\1\0\1\10\1\0\2\10\1\0\2\10\1\0\154\10"+ + "\41\0\u016b\10\22\0\100\10\2\0\66\10\50\0\15\10\3\0\20\11"+ + "\20\0\4\11\17\0\2\10\30\0\3\10\31\0\1\10\6\0\5\10"+ + "\1\0\207\10\2\0\1\11\4\0\1\10\13\0\12\11\7\0\32\10"+ + "\4\0\1\10\1\0\32\10\12\0\132\10\3\0\6\10\2\0\6\10"+ + "\2\0\6\10\2\0\3\10\3\0\2\10\3\0\2\10\22\0\3\11"+ + "\4\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\1\1\3\2\4\1\1\1\5"+ + "\2\6\1\7\1\10\1\7\1\1\1\11\1\12\1\0"+ + "\1\13\1\14\2\3\1\0\1\10\1\0\2\11\1\3"+ + "\1\0\1\10\2\0\1\15"; + + private static int [] zzUnpackAction() { + int [] result = new int[36]; + 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\26\0\54\0\102\0\130\0\156\0\204\0\232"+ + "\0\260\0\102\0\306\0\102\0\334\0\102\0\362\0\u0108"+ + "\0\u011e\0\u0134\0\u014a\0\102\0\204\0\102\0\102\0\u0160"+ + "\0\u0176\0\u018c\0\u01a2\0\u01b8\0\u01ce\0\102\0\102\0\u01e4"+ + "\0\u01fa\0\u01fa\0\u0210\0\102"; + + private static int [] zzUnpackRowMap() { + int [] result = new int[36]; + 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\4\1\5\1\6\3\4\1\7\1\4\1\6\1\7"+ + "\3\4\1\7\1\6\5\4\1\10\1\11\1\12\21\10"+ + "\1\13\1\14\1\4\1\15\1\16\1\4\1\17\1\4"+ + "\1\20\1\4\1\21\1\4\2\21\1\4\1\20\1\22"+ + "\2\21\1\4\1\20\1\23\1\4\1\24\31\0\1\5"+ + "\26\0\1\6\1\0\1\6\1\0\2\25\2\6\1\26"+ + "\1\6\1\0\1\25\1\6\1\0\1\6\7\0\1\25"+ + "\1\0\1\25\1\0\4\25\1\26\1\25\1\0\2\25"+ + "\1\0\1\25\3\0\1\10\2\0\21\10\4\0\1\12"+ + "\23\0\2\27\1\0\12\27\1\30\4\27\1\31\3\27"+ + "\2\0\1\16\27\0\1\21\1\32\1\21\1\0\4\21"+ + "\1\0\1\21\1\0\2\21\1\0\1\21\11\0\1\20"+ + "\6\0\1\20\1\33\2\34\1\0\1\20\7\0\1\21"+ + "\1\0\1\21\1\0\4\21\1\0\1\21\1\0\2\21"+ + "\1\0\1\21\11\0\1\33\6\0\1\33\4\0\1\33"+ + "\3\0\1\23\1\35\1\36\23\23\15\0\1\31\4\0"+ + "\1\31\20\0\1\37\4\0\1\37\11\0\1\40\6\0"+ + "\1\40\4\0\1\40\11\0\1\33\6\0\1\33\1\0"+ + "\2\34\1\0\1\33\11\0\1\41\6\0\1\41\3\0"+ + "\1\42\1\41\5\0\1\36\31\0\1\40\1\43\5\0"+ + "\1\40\4\0\1\40\11\0\1\41\6\0\1\41\4\0"+ + "\1\41\30\0\1\44"; + + private static int [] zzUnpackTrans() { + int [] result = new int[550]; + 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\5\1\1\11\1\1\1\11\1\1\1\11"+ + "\5\1\1\11\1\0\2\11\2\1\1\0\1\1\1\0"+ + "\1\1\2\11\1\0\1\1\2\0\1\11"; + + private static int [] zzUnpackAttribute() { + int [] result = new int[36]; + 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[] = new char[ZZ_BUFFERSIZE]; + + /** 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; + + /** number of newlines encountered up to the start of the matched text */ + private int yyline; + + /** the number of characters up to the start of the matched text */ + private int yychar; + + /** + * the number of characters from the last newline up to the start of the + * matched text + */ + private int yycolumn; + + /** + * 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; + + /** denotes if the user-EOF-code has already been executed */ + private boolean zzEOFDone; + + /* user code: */ + + StringBuffer string = new StringBuffer(); + boolean isMultiname=false; + + + /** + * Create an empty lexer, yyrset will be called later to reset and assign + * the reader + */ + public Flasm3Lexer() { + super(); + } + + @Override + public int yychar() { + return yychar; + } + + + + /** + * 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 Flasm3Lexer(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 Flasm3Lexer(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 < 1702) { + int count = packed.charAt(i++); + char value = packed.charAt(i++); + do map[j++] = value; while (--count > 0); + } + return map; + } + + + /** + * Refills the input buffer. + * + * @return false, iff there was new input. + * + * @exception java.io.IOException if any I/O-Error occurs + */ + private boolean zzRefill() throws java.io.IOException { + + /* first: make room (if you can) */ + if (zzStartRead > 0) { + System.arraycopy(zzBuffer, zzStartRead, + zzBuffer, 0, + zzEndRead-zzStartRead); + + /* translate stored positions */ + zzEndRead-= zzStartRead; + zzCurrentPos-= zzStartRead; + zzMarkedPos-= zzStartRead; + zzStartRead = 0; + } + + /* is the buffer big enough? */ + if (zzCurrentPos >= zzBuffer.length) { + /* if not: blow it up */ + char newBuffer[] = new char[zzCurrentPos*2]; + System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); + zzBuffer = newBuffer; + } + + /* finally: fill the buffer with new input */ + int numRead = zzReader.read(zzBuffer, zzEndRead, + zzBuffer.length-zzEndRead); + + if (numRead > 0) { + zzEndRead+= numRead; + return false; + } + // unlikely but not impossible: read 0 characters, but not at end of stream + if (numRead == 0) { + int c = zzReader.read(); + if (c == -1) { + return true; + } else { + zzBuffer[zzEndRead++] = (char) c; + return false; + } + } + + // numRead < 0 + return true; + } + + + /** + * 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(); + } + + + /** + * 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 ZZ_INITIAL. + * + * @param reader the new input stream + */ + public final void yyreset(java.io.Reader reader) { + zzReader = reader; + zzAtBOL = true; + zzAtEOF = false; + zzEOFDone = false; + zzEndRead = zzStartRead = 0; + zzCurrentPos = zzMarkedPos = 0; + yyline = yychar = yycolumn = 0; + zzLexicalState = YYINITIAL; + } + + + /** + * Returns the current lexical state. + */ + public final int yystate() { + return zzLexicalState; + } + + + /** + * Enters a new lexical state + * + * @param newState the new lexical state + */ + 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 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; + + yychar+= zzMarkedPosL-zzStartRead; + + zzAction = -1; + + zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; + + 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 5: + { yybegin(PARAMETERS); + // length also includes the trailing quote + if(isMultiname){ + return token(TokenType.IDENTIFIER, tokenStart, tokenLength + 1);//multiname + }else{ + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + } + case 14: break; + case 9: + { yybegin(YYINITIAL); return token(TokenType.COMMENT); + } + case 15: break; + case 4: + { yybegin(YYINITIAL); + return token(TokenType.ERROR,tokenStart, tokenLength); + } + case 16: break; + case 11: + { return token(TokenType.IDENTIFIER,yychar,yylength()-1); + } + case 17: break; + case 10: + { yybegin(STRING); + tokenStart = yychar; + tokenLength = 1; + isMultiname=false; + } + case 18: break; + case 13: + { isMultiname=true; + yybegin(STRING); + tokenStart = yychar; + tokenLength = yylength(); + } + case 19: break; + case 12: + { tokenLength += 2; + } + case 20: break; + case 7: + { return token(TokenType.IDENTIFIER); + } + case 21: break; + case 2: + { yybegin(PARAMETERS); + return token(TokenType.KEYWORD); + } + case 22: break; + case 8: + { return token(TokenType.NUMBER); + } + case 23: break; + case 6: + { yybegin(YYINITIAL); + } + case 24: break; + case 1: + { + } + case 25: break; + case 3: + { tokenLength += yylength(); + } + case 26: break; + default: + if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { + zzAtEOF = true; + { + return null; + } + } + else { + zzScanError(ZZ_NO_MATCH); + } + } + } + } + + +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/FlasmLexer.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/FlasmLexer.java new file mode 100644 index 000000000..794a7559a --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/FlasmLexer.java @@ -0,0 +1,838 @@ +/* The following code was generated by JFlex 1.4.3 on 18.8.10 12:21 */ + +/* Flash assembler language lexer specification */ + +package jsyntaxpane.lexers; + + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + + +/** + * This class is a scanner generated by + * JFlex 1.4.3 + * on 18.8.10 12:21 from the specification file + * D:/Dokumenty/Programovani/JavaSE/ASDec/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/flasm.flex + */ +public final class FlasmLexer extends DefaultJFlexLexer { + + /** + * This character denotes the end of file + */ + public static final int YYEOF = -1; + + /** + * initial size of the lookahead buffer + */ + private static final int ZZ_BUFFERSIZE = 16384; + + /** + * lexical states + */ + public static final int STRING = 2; + public static final int YYINITIAL = 0; + public static final int PARAMETERS = 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, 0, 1, 1, 2, 2 + }; + + /** + * Translates characters to character classes + */ + private static final String ZZ_CMAP_PACKED = + "\11\6\1\4\1\2\1\0\1\4\1\1\16\6\4\0\1\4\1\0" + + "\1\40\1\0\1\5\6\0\1\32\1\0\1\27\1\30\1\0\1\26" + + "\3\41\4\33\2\11\1\12\1\3\5\0\4\7\1\31\25\7\1\0" + + "\1\34\2\0\1\10\1\0\1\20\1\7\1\36\1\24\1\16\1\17" + + "\1\35\1\7\1\25\2\7\1\21\1\7\1\23\1\37\2\7\1\14" + + "\1\22\1\13\1\15\5\7\1\0\1\0\1\0\1\0\41\6\2\0" + + "\4\5\4\0\1\5\2\0\1\6\7\0\1\5\4\0\1\5\5\0" + + "\27\5\1\0\37\5\1\0\u013f\5\31\0\162\5\4\0\14\5\16\0" + + "\5\5\11\0\1\5\21\0\130\6\5\0\23\6\12\0\1\5\13\0" + + "\1\5\1\0\3\5\1\0\1\5\1\0\24\5\1\0\54\5\1\0" + + "\46\5\1\0\5\5\4\0\202\5\1\0\4\6\3\0\105\5\1\0" + + "\46\5\2\0\2\5\6\0\20\5\41\0\46\5\2\0\1\5\7\0" + + "\47\5\11\0\21\6\1\0\27\6\1\0\3\6\1\0\1\6\1\0" + + "\2\6\1\0\1\6\13\0\33\5\5\0\3\5\15\0\4\6\14\0" + + "\6\6\13\0\32\5\5\0\13\5\16\6\7\0\12\6\4\0\2\5" + + "\1\6\143\5\1\0\1\5\10\6\1\0\6\6\2\5\2\6\1\0" + + "\4\6\2\5\12\6\3\5\2\0\1\5\17\0\1\6\1\5\1\6" + + "\36\5\33\6\2\0\3\5\60\0\46\5\13\6\1\5\u014f\0\3\6" + + "\66\5\2\0\1\6\1\5\20\6\2\0\1\5\4\6\3\0\12\5" + + "\2\6\2\0\12\6\21\0\3\6\1\0\10\5\2\0\2\5\2\0" + + "\26\5\1\0\7\5\1\0\1\5\3\0\4\5\2\0\1\6\1\5" + + "\7\6\2\0\2\6\2\0\3\6\11\0\1\6\4\0\2\5\1\0" + + "\3\5\2\6\2\0\12\6\4\5\15\0\3\6\1\0\6\5\4\0" + + "\2\5\2\0\26\5\1\0\7\5\1\0\2\5\1\0\2\5\1\0" + + "\2\5\2\0\1\6\1\0\5\6\4\0\2\6\2\0\3\6\13\0" + + "\4\5\1\0\1\5\7\0\14\6\3\5\14\0\3\6\1\0\11\5" + + "\1\0\3\5\1\0\26\5\1\0\7\5\1\0\2\5\1\0\5\5" + + "\2\0\1\6\1\5\10\6\1\0\3\6\1\0\3\6\2\0\1\5" + + "\17\0\2\5\2\6\2\0\12\6\1\0\1\5\17\0\3\6\1\0" + + "\10\5\2\0\2\5\2\0\26\5\1\0\7\5\1\0\2\5\1\0" + + "\5\5\2\0\1\6\1\5\6\6\3\0\2\6\2\0\3\6\10\0" + + "\2\6\4\0\2\5\1\0\3\5\4\0\12\6\1\0\1\5\20\0" + + "\1\6\1\5\1\0\6\5\3\0\3\5\1\0\4\5\3\0\2\5" + + "\1\0\1\5\1\0\2\5\3\0\2\5\3\0\3\5\3\0\10\5" + + "\1\0\3\5\4\0\5\6\3\0\3\6\1\0\4\6\11\0\1\6" + + "\17\0\11\6\11\0\1\5\7\0\3\6\1\0\10\5\1\0\3\5" + + "\1\0\27\5\1\0\12\5\1\0\5\5\4\0\7\6\1\0\3\6" + + "\1\0\4\6\7\0\2\6\11\0\2\5\4\0\12\6\22\0\2\6" + + "\1\0\10\5\1\0\3\5\1\0\27\5\1\0\12\5\1\0\5\5" + + "\2\0\1\6\1\5\7\6\1\0\3\6\1\0\4\6\7\0\2\6" + + "\7\0\1\5\1\0\2\5\4\0\12\6\22\0\2\6\1\0\10\5" + + "\1\0\3\5\1\0\27\5\1\0\20\5\4\0\6\6\2\0\3\6" + + "\1\0\4\6\11\0\1\6\10\0\2\5\4\0\12\6\22\0\2\6" + + "\1\0\22\5\3\0\30\5\1\0\11\5\1\0\1\5\2\0\7\5" + + "\3\0\1\6\4\0\6\6\1\0\1\6\1\0\10\6\22\0\2\6" + + "\15\0\60\5\1\6\2\5\7\6\4\0\10\5\10\6\1\0\12\6" + + "\47\0\2\5\1\0\1\5\2\0\2\5\1\0\1\5\2\0\1\5" + + "\6\0\4\5\1\0\7\5\1\0\3\5\1\0\1\5\1\0\1\5" + + "\2\0\2\5\1\0\4\5\1\6\2\5\6\6\1\0\2\6\1\5" + + "\2\0\5\5\1\0\1\5\1\0\6\6\2\0\12\6\2\0\2\5" + + "\42\0\1\5\27\0\2\6\6\0\12\6\13\0\1\6\1\0\1\6" + + "\1\0\1\6\4\0\2\6\10\5\1\0\42\5\6\0\24\6\1\0" + + "\2\6\4\5\4\0\10\6\1\0\44\6\11\0\1\6\71\0\42\5" + + "\1\0\5\5\1\0\2\5\1\0\7\6\3\0\4\6\6\0\12\6" + + "\6\0\6\5\4\6\106\0\46\5\12\0\51\5\7\0\132\5\5\0" + + "\104\5\5\0\122\5\6\0\7\5\1\0\77\5\1\0\1\5\1\0" + + "\4\5\2\0\7\5\1\0\1\5\1\0\4\5\2\0\47\5\1\0" + + "\1\5\1\0\4\5\2\0\37\5\1\0\1\5\1\0\4\5\2\0" + + "\7\5\1\0\1\5\1\0\4\5\2\0\7\5\1\0\7\5\1\0" + + "\27\5\1\0\37\5\1\0\1\5\1\0\4\5\2\0\7\5\1\0" + + "\47\5\1\0\23\5\16\0\11\6\56\0\125\5\14\0\u026c\5\2\0" + + "\10\5\12\0\32\5\5\0\113\5\3\0\3\5\17\0\15\5\1\0" + + "\4\5\3\6\13\0\22\5\3\6\13\0\22\5\2\6\14\0\15\5" + + "\1\0\3\5\1\0\2\6\14\0\64\5\40\6\3\0\1\5\3\0" + + "\2\5\1\6\2\0\12\6\41\0\3\6\2\0\12\6\6\0\130\5" + + "\10\0\51\5\1\6\126\0\35\5\3\0\14\6\4\0\14\6\12\0" + + "\12\6\36\5\2\0\5\5\u038b\0\154\5\224\0\234\5\4\0\132\5" + + "\6\0\26\5\2\0\6\5\2\0\46\5\2\0\6\5\2\0\10\5" + + "\1\0\1\5\1\0\1\5\1\0\1\5\1\0\37\5\2\0\65\5" + + "\1\0\7\5\1\0\1\5\3\0\3\5\1\0\7\5\3\0\4\5" + + "\2\0\6\5\4\0\15\5\5\0\3\5\1\0\7\5\17\0\4\6" + + "\32\0\5\6\20\0\2\5\23\0\1\5\13\0\4\6\6\0\6\6" + + "\1\0\1\5\15\0\1\5\40\0\22\5\36\0\15\6\4\0\1\6" + + "\3\0\6\6\27\0\1\5\4\0\1\5\2\0\12\5\1\0\1\5" + + "\3\0\5\5\6\0\1\5\1\0\1\5\1\0\1\5\1\0\4\5" + + "\1\0\3\5\1\0\7\5\3\0\3\5\5\0\5\5\26\0\44\5" + + "\u0e81\0\3\5\31\0\11\5\6\6\1\0\5\5\2\0\5\5\4\0" + + "\126\5\2\0\2\6\2\0\3\5\1\0\137\5\5\0\50\5\4\0" + + "\136\5\21\0\30\5\70\0\20\5\u0200\0\u19b6\5\112\0\u51a6\5\132\0" + + "\u048d\5\u0773\0\u2ba4\5\u215c\0\u012e\5\2\0\73\5\225\0\7\5\14\0" + + "\5\5\5\0\1\5\1\6\12\5\1\0\15\5\1\0\5\5\1\0" + + "\1\5\1\0\2\5\1\0\2\5\1\0\154\5\41\0\u016b\5\22\0" + + "\100\5\2\0\66\5\50\0\15\5\3\0\20\6\20\0\4\6\17\0" + + "\2\5\30\0\3\5\31\0\1\5\6\0\5\5\1\0\207\5\2\0" + + "\1\6\4\0\1\5\13\0\12\6\7\0\32\5\4\0\1\5\1\0" + + "\32\5\12\0\132\5\3\0\6\5\2\0\6\5\2\0\6\5\2\0" + + "\3\5\3\0\2\5\3\0\2\5\22\0\3\6\4\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\3\1\1\2\1\3\2\4\1\1\1\5\2\6" + + "\1\7\1\10\1\11\5\10\2\1\1\10\1\12\1\0" + + "\1\13\1\14\2\3\1\0\1\11\5\10\1\0\1\10" + + "\1\3\1\11\1\0\6\10\1\15\16\10\2\16\1\0" + + "\1\16"; + + private static int[] zzUnpackAction() { + int[] result = new int[68]; + 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\42\0\104\0\146\0\210\0\252\0\314\0\356" + + "\0\u0110\0\146\0\u0132\0\146\0\u0154\0\146\0\u0176\0\u0198" + + "\0\u01ba\0\u01dc\0\u01fe\0\u0220\0\u0242\0\u0264\0\u0286\0\u02a8" + + "\0\u02ca\0\146\0\252\0\146\0\146\0\u02ec\0\u030e\0\u0330" + + "\0\u0352\0\u0374\0\u0396\0\u03b8\0\u03da\0\u03fc\0\u02a8\0\u041e" + + "\0\146\0\u0440\0\u0440\0\u0462\0\u0484\0\u04a6\0\u04c8\0\u04ea" + + "\0\u050c\0\u0198\0\u052e\0\u0550\0\u0572\0\u0594\0\u05b6\0\u05d8" + + "\0\u05fa\0\u061c\0\u063e\0\u0660\0\u0682\0\u06a4\0\u06c6\0\u06e8" + + "\0\u070a\0\u0198\0\u072c\0\u074e"; + + private static int[] zzUnpackRowMap() { + int[] result = new int[68]; + 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 = + "\4\4\1\5\1\6\1\4\1\7\1\6\2\4\13\7" + + "\3\4\1\7\3\4\3\7\2\4\1\10\1\11\1\12" + + "\31\10\1\13\3\10\1\14\1\10\1\4\1\15\1\16" + + "\1\17\1\4\1\20\1\4\2\20\1\21\1\4\1\22" + + "\1\23\1\24\1\20\1\25\3\20\1\26\2\20\1\21" + + "\1\27\1\30\1\20\1\4\1\21\1\4\1\20\1\31" + + "\1\20\1\32\1\21\46\0\1\5\42\0\5\33\1\34" + + "\14\33\2\0\1\33\1\0\1\33\1\0\3\33\1\0" + + "\1\33\5\0\2\33\3\7\1\34\14\7\2\0\1\7" + + "\1\0\1\7\1\0\3\7\1\0\1\7\1\10\2\0" + + "\31\10\1\0\3\10\1\0\1\10\2\0\1\12\37\0" + + "\2\35\1\0\23\35\1\36\4\35\1\37\5\35\1\36" + + "\2\0\1\16\37\0\1\17\2\0\37\17\5\0\5\20" + + "\1\0\14\20\2\0\1\20\1\0\1\20\1\0\3\20" + + "\1\0\1\20\11\0\1\21\4\0\1\40\7\0\1\21" + + "\1\0\1\41\1\40\1\0\1\21\5\0\1\21\5\0" + + "\5\20\1\0\1\20\1\42\12\20\2\0\1\20\1\0" + + "\1\20\1\0\3\20\1\0\1\20\5\0\5\20\1\0" + + "\3\20\1\43\10\20\2\0\1\20\1\0\1\20\1\0" + + "\3\20\1\0\1\20\5\0\5\20\1\0\10\20\1\44" + + "\3\20\2\0\1\20\1\0\1\20\1\0\3\20\1\0" + + "\1\20\5\0\5\20\1\0\5\20\1\45\6\20\2\0" + + "\1\20\1\0\1\20\1\0\3\20\1\0\1\20\5\0" + + "\5\20\1\0\2\20\1\46\11\20\2\0\1\20\1\0" + + "\1\20\1\0\3\20\1\0\1\20\11\0\1\21\14\0" + + "\1\21\1\0\1\47\2\0\1\21\5\0\1\21\11\0" + + "\1\41\14\0\1\41\4\0\1\41\5\0\1\41\5\0" + + "\5\20\1\0\14\20\2\0\1\20\1\0\1\20\1\0" + + "\2\20\1\50\1\0\1\20\26\0\1\37\4\0\1\37" + + "\5\0\1\37\26\0\1\51\4\0\1\51\5\0\1\51" + + "\11\0\1\52\14\0\1\52\1\53\2\0\1\53\1\52" + + "\5\0\1\52\11\0\1\41\4\0\1\40\7\0\1\41" + + "\2\0\1\40\1\0\1\41\5\0\1\41\5\0\5\20" + + "\1\0\2\20\1\54\11\20\2\0\1\20\1\0\1\20" + + "\1\0\3\20\1\0\1\20\5\0\5\20\1\0\14\20" + + "\2\0\1\20\1\0\1\20\1\0\1\55\2\20\1\0" + + "\1\20\5\0\5\20\1\0\11\20\1\56\2\20\2\0" + + "\1\20\1\0\1\20\1\0\3\20\1\0\1\20\5\0" + + "\5\20\1\0\6\20\1\57\5\20\2\0\1\20\1\0" + + "\1\20\1\0\3\20\1\0\1\20\5\0\5\20\1\0" + + "\6\20\1\60\5\20\2\0\1\20\1\0\1\20\1\0" + + "\3\20\1\0\1\20\5\0\5\20\1\0\10\20\1\61" + + "\3\20\2\0\1\20\1\0\1\20\1\0\3\20\1\0" + + "\1\20\11\0\1\52\14\0\1\52\4\0\1\52\5\0" + + "\1\52\5\0\5\20\1\0\3\20\1\62\10\20\2\0" + + "\1\20\1\0\1\20\1\0\3\20\1\0\1\20\5\0" + + "\5\20\1\0\12\20\1\63\1\20\2\0\1\20\1\0" + + "\1\20\1\0\3\20\1\0\1\20\5\0\5\20\1\0" + + "\3\20\1\64\10\20\2\0\1\20\1\0\1\20\1\0" + + "\3\20\1\0\1\20\5\0\5\20\1\0\7\20\1\54" + + "\4\20\2\0\1\20\1\0\1\20\1\0\3\20\1\0" + + "\1\20\5\0\5\20\1\0\6\20\1\62\5\20\2\0" + + "\1\20\1\0\1\20\1\0\3\20\1\0\1\20\5\0" + + "\5\20\1\0\7\20\1\65\4\20\2\0\1\20\1\0" + + "\1\20\1\0\3\20\1\0\1\20\5\0\5\20\1\0" + + "\7\20\1\66\4\20\2\0\1\20\1\0\1\20\1\0" + + "\3\20\1\0\1\20\5\0\5\20\1\0\4\20\1\67" + + "\7\20\2\0\1\20\1\0\1\20\1\0\3\20\1\0" + + "\1\20\5\0\5\20\1\0\1\70\13\20\2\0\1\20" + + "\1\0\1\20\1\0\3\20\1\0\1\20\5\0\5\20" + + "\1\0\1\71\13\20\2\0\1\20\1\0\1\20\1\0" + + "\3\20\1\0\1\20\5\0\5\20\1\0\12\20\1\72" + + "\1\20\2\0\1\20\1\0\1\20\1\0\3\20\1\0" + + "\1\20\5\0\5\20\1\0\5\20\1\73\6\20\2\0" + + "\1\20\1\0\1\20\1\0\3\20\1\0\1\20\5\0" + + "\5\20\1\0\3\20\1\74\10\20\2\0\1\20\1\0" + + "\1\20\1\0\3\20\1\0\1\20\5\0\5\20\1\0" + + "\10\20\1\75\3\20\2\0\1\20\1\0\1\20\1\0" + + "\3\20\1\0\1\20\5\0\5\20\1\0\10\20\1\76" + + "\3\20\2\0\1\20\1\0\1\20\1\0\3\20\1\0" + + "\1\20\5\0\5\20\1\0\1\20\1\77\12\20\2\0" + + "\1\20\1\0\1\20\1\0\3\20\1\0\1\20\5\0" + + "\5\20\1\0\3\20\1\100\10\20\2\0\1\20\1\0" + + "\1\20\1\0\3\20\1\0\1\20\5\0\5\20\1\0" + + "\1\77\13\20\2\0\1\20\1\0\1\20\1\0\3\20" + + "\1\0\1\20\5\0\4\20\1\101\1\0\13\20\1\102" + + "\1\103\1\0\1\20\1\0\1\101\1\0\3\20\1\0" + + "\1\101\5\0\5\20\1\0\11\20\1\62\2\20\2\0" + + "\1\20\1\0\1\20\1\0\3\20\1\0\1\20\5\0" + + "\4\20\1\101\1\0\13\20\1\101\2\0\1\20\1\0" + + "\1\101\1\0\3\20\1\0\1\101\11\0\1\104\21\0" + + "\1\104\5\0\1\104\11\0\1\104\14\0\1\104\4\0" + + "\1\104\5\0\1\104"; + + private static int[] zzUnpackTrans() { + int[] result = new int[1904]; + 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\5\1\1\11\1\1\1\11\1\1\1\11" + + "\13\1\1\11\1\0\2\11\2\1\1\0\6\1\1\0" + + "\1\1\1\11\1\1\1\0\27\1\1\0\1\1"; + + private static int[] zzUnpackAttribute() { + int[] result = new int[68]; + 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[] = new char[ZZ_BUFFERSIZE]; + + /** + * 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; + + /** + * number of newlines encountered up to the start of the matched text + */ + private int yyline; + + /** + * the number of characters up to the start of the matched text + */ + private int yychar; + + /** + * the number of characters from the last newline up to the start of the + * matched text + */ + private int yycolumn; + + /** + * 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; + + /** + * denotes if the user-EOF-code has already been executed + */ + private boolean zzEOFDone; + + /* user code: */ + + StringBuffer string = new StringBuffer(); + + + /** + * Create an empty lexer, yyrset will be called later to reset and assign + * the reader + */ + public FlasmLexer() { + + } + + public int yychar() { + return yychar; + } + + + /** + * 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 FlasmLexer(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 FlasmLexer(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 < 1736) { + int count = packed.charAt(i++); + char value = packed.charAt(i++); + do map[j++] = value; while (--count > 0); + } + return map; + } + + + /** + * Refills the input buffer. + * + * @return false, iff there was new input. + * @throws java.io.IOException if any I/O-Error occurs + */ + private boolean zzRefill() throws java.io.IOException { + + /* first: make room (if you can) */ + if (zzStartRead > 0) { + System.arraycopy(zzBuffer, zzStartRead, + zzBuffer, 0, + zzEndRead - zzStartRead); + + /* translate stored positions */ + zzEndRead -= zzStartRead; + zzCurrentPos -= zzStartRead; + zzMarkedPos -= zzStartRead; + zzStartRead = 0; + } + + /* is the buffer big enough? */ + if (zzCurrentPos >= zzBuffer.length) { + /* if not: blow it up */ + char newBuffer[] = new char[zzCurrentPos * 2]; + System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); + zzBuffer = newBuffer; + } + + /* finally: fill the buffer with new input */ + int numRead = zzReader.read(zzBuffer, zzEndRead, + zzBuffer.length - zzEndRead); + + if (numRead > 0) { + zzEndRead += numRead; + return false; + } + // unlikely but not impossible: read 0 characters, but not at end of stream + if (numRead == 0) { + int c = zzReader.read(); + if (c == -1) { + return true; + } else { + zzBuffer[zzEndRead++] = (char) c; + return false; + } + } + + // numRead < 0 + return true; + } + + + /** + * 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(); + } + + + /** + * 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 ZZ_INITIAL. + * + * @param reader the new input stream + */ + public final void yyreset(java.io.Reader reader) { + zzReader = reader; + zzAtBOL = true; + zzAtEOF = false; + zzEOFDone = false; + zzEndRead = zzStartRead = 0; + zzCurrentPos = zzMarkedPos = 0; + yyline = yychar = yycolumn = 0; + zzLexicalState = YYINITIAL; + } + + + /** + * Returns the current lexical state. + */ + public final int yystate() { + return zzLexicalState; + } + + + /** + * Enters a new lexical state + * + * @param newState the new lexical state + */ + 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 + * @throws java.io.IOException if any I/O-Error occurs + */ + public 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; + + yychar += zzMarkedPosL - zzStartRead; + + zzAction = -1; + + zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; + + 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 4: { + yybegin(YYINITIAL); + return token(TokenType.ERROR, tokenStart, tokenLength); + } + case 15: + break; + case 13: { + return token(TokenType.KEYWORD); + } + case 16: + break; + case 11: { + return token(TokenType.IDENTIFIER, yychar, yylength() - 1); + } + case 17: + break; + case 10: { + yybegin(STRING); + tokenStart = yychar; + tokenLength = 1; + } + case 18: + break; + case 14: { + return token(TokenType.KEYWORD2); + } + case 19: + break; + case 12: { + tokenLength += 2; + } + case 20: + break; + case 5: { + yybegin(PARAMETERS); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + case 21: + break; + case 8: { + return token(TokenType.IDENTIFIER); + } + case 22: + break; + case 2: { + yybegin(PARAMETERS); + return token(TokenType.KEYWORD); + } + case 23: + break; + case 7: { + return token(TokenType.COMMENT); + } + case 24: + break; + case 9: { + return token(TokenType.NUMBER); + } + case 25: + break; + case 6: { + yybegin(YYINITIAL); + } + case 26: + break; + case 1: { + } + case 27: + break; + case 3: { + tokenLength += yylength(); + } + case 28: + break; + default: + if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { + zzAtEOF = true; + { + return null; + } + } else { + zzScanError(ZZ_NO_MATCH); + } + } + } + } + + +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/FlasmLexer.java~ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/FlasmLexer.java~ new file mode 100644 index 000000000..23f57eaf8 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/FlasmLexer.java~ @@ -0,0 +1,794 @@ +/* The following code was generated by JFlex 1.4.3 on 10.8.10 18:04 */ + +/* Flash assembler language lexer specification */ + +package jsyntaxpane.lexers; + + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + + +/** + * This class is a scanner generated by + * JFlex 1.4.3 + * on 10.8.10 18:04 from the specification file + * D:/Dokumenty/Programovani/JavaSE/ASDec/trunk/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/flasm.flex + */ +public final class FlasmLexer extends DefaultJFlexLexer { + + /** This character denotes the end of file */ + public static final int YYEOF = -1; + + /** initial size of the lookahead buffer */ + private static final int ZZ_BUFFERSIZE = 16384; + + /** lexical states */ + public static final int STRING = 2; + public static final int YYINITIAL = 0; + public static final int PARAMETERS = 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, 0, 1, 1, 2, 2 + }; + + /** + * Translates characters to character classes + */ + private static final String ZZ_CMAP_PACKED = + "\11\6\1\4\1\2\1\0\1\4\1\1\16\6\4\0\1\4\1\0"+ + "\1\37\1\0\1\5\6\0\1\31\1\0\1\31\1\27\1\0\1\26"+ + "\3\40\4\32\2\11\1\12\1\3\5\0\4\7\1\30\25\7\1\0"+ + "\1\33\2\0\1\10\1\0\1\20\1\7\1\35\1\24\1\16\1\17"+ + "\1\34\1\7\1\25\2\7\1\21\1\7\1\23\1\36\2\7\1\14"+ + "\1\22\1\13\1\15\5\7\1\0\1\0\1\0\1\0\41\6\2\0"+ + "\4\5\4\0\1\5\2\0\1\6\7\0\1\5\4\0\1\5\5\0"+ + "\27\5\1\0\37\5\1\0\u013f\5\31\0\162\5\4\0\14\5\16\0"+ + "\5\5\11\0\1\5\21\0\130\6\5\0\23\6\12\0\1\5\13\0"+ + "\1\5\1\0\3\5\1\0\1\5\1\0\24\5\1\0\54\5\1\0"+ + "\46\5\1\0\5\5\4\0\202\5\1\0\4\6\3\0\105\5\1\0"+ + "\46\5\2\0\2\5\6\0\20\5\41\0\46\5\2\0\1\5\7\0"+ + "\47\5\11\0\21\6\1\0\27\6\1\0\3\6\1\0\1\6\1\0"+ + "\2\6\1\0\1\6\13\0\33\5\5\0\3\5\15\0\4\6\14\0"+ + "\6\6\13\0\32\5\5\0\13\5\16\6\7\0\12\6\4\0\2\5"+ + "\1\6\143\5\1\0\1\5\10\6\1\0\6\6\2\5\2\6\1\0"+ + "\4\6\2\5\12\6\3\5\2\0\1\5\17\0\1\6\1\5\1\6"+ + "\36\5\33\6\2\0\3\5\60\0\46\5\13\6\1\5\u014f\0\3\6"+ + "\66\5\2\0\1\6\1\5\20\6\2\0\1\5\4\6\3\0\12\5"+ + "\2\6\2\0\12\6\21\0\3\6\1\0\10\5\2\0\2\5\2\0"+ + "\26\5\1\0\7\5\1\0\1\5\3\0\4\5\2\0\1\6\1\5"+ + "\7\6\2\0\2\6\2\0\3\6\11\0\1\6\4\0\2\5\1\0"+ + "\3\5\2\6\2\0\12\6\4\5\15\0\3\6\1\0\6\5\4\0"+ + "\2\5\2\0\26\5\1\0\7\5\1\0\2\5\1\0\2\5\1\0"+ + "\2\5\2\0\1\6\1\0\5\6\4\0\2\6\2\0\3\6\13\0"+ + "\4\5\1\0\1\5\7\0\14\6\3\5\14\0\3\6\1\0\11\5"+ + "\1\0\3\5\1\0\26\5\1\0\7\5\1\0\2\5\1\0\5\5"+ + "\2\0\1\6\1\5\10\6\1\0\3\6\1\0\3\6\2\0\1\5"+ + "\17\0\2\5\2\6\2\0\12\6\1\0\1\5\17\0\3\6\1\0"+ + "\10\5\2\0\2\5\2\0\26\5\1\0\7\5\1\0\2\5\1\0"+ + "\5\5\2\0\1\6\1\5\6\6\3\0\2\6\2\0\3\6\10\0"+ + "\2\6\4\0\2\5\1\0\3\5\4\0\12\6\1\0\1\5\20\0"+ + "\1\6\1\5\1\0\6\5\3\0\3\5\1\0\4\5\3\0\2\5"+ + "\1\0\1\5\1\0\2\5\3\0\2\5\3\0\3\5\3\0\10\5"+ + "\1\0\3\5\4\0\5\6\3\0\3\6\1\0\4\6\11\0\1\6"+ + "\17\0\11\6\11\0\1\5\7\0\3\6\1\0\10\5\1\0\3\5"+ + "\1\0\27\5\1\0\12\5\1\0\5\5\4\0\7\6\1\0\3\6"+ + "\1\0\4\6\7\0\2\6\11\0\2\5\4\0\12\6\22\0\2\6"+ + "\1\0\10\5\1\0\3\5\1\0\27\5\1\0\12\5\1\0\5\5"+ + "\2\0\1\6\1\5\7\6\1\0\3\6\1\0\4\6\7\0\2\6"+ + "\7\0\1\5\1\0\2\5\4\0\12\6\22\0\2\6\1\0\10\5"+ + "\1\0\3\5\1\0\27\5\1\0\20\5\4\0\6\6\2\0\3\6"+ + "\1\0\4\6\11\0\1\6\10\0\2\5\4\0\12\6\22\0\2\6"+ + "\1\0\22\5\3\0\30\5\1\0\11\5\1\0\1\5\2\0\7\5"+ + "\3\0\1\6\4\0\6\6\1\0\1\6\1\0\10\6\22\0\2\6"+ + "\15\0\60\5\1\6\2\5\7\6\4\0\10\5\10\6\1\0\12\6"+ + "\47\0\2\5\1\0\1\5\2\0\2\5\1\0\1\5\2\0\1\5"+ + "\6\0\4\5\1\0\7\5\1\0\3\5\1\0\1\5\1\0\1\5"+ + "\2\0\2\5\1\0\4\5\1\6\2\5\6\6\1\0\2\6\1\5"+ + "\2\0\5\5\1\0\1\5\1\0\6\6\2\0\12\6\2\0\2\5"+ + "\42\0\1\5\27\0\2\6\6\0\12\6\13\0\1\6\1\0\1\6"+ + "\1\0\1\6\4\0\2\6\10\5\1\0\42\5\6\0\24\6\1\0"+ + "\2\6\4\5\4\0\10\6\1\0\44\6\11\0\1\6\71\0\42\5"+ + "\1\0\5\5\1\0\2\5\1\0\7\6\3\0\4\6\6\0\12\6"+ + "\6\0\6\5\4\6\106\0\46\5\12\0\51\5\7\0\132\5\5\0"+ + "\104\5\5\0\122\5\6\0\7\5\1\0\77\5\1\0\1\5\1\0"+ + "\4\5\2\0\7\5\1\0\1\5\1\0\4\5\2\0\47\5\1\0"+ + "\1\5\1\0\4\5\2\0\37\5\1\0\1\5\1\0\4\5\2\0"+ + "\7\5\1\0\1\5\1\0\4\5\2\0\7\5\1\0\7\5\1\0"+ + "\27\5\1\0\37\5\1\0\1\5\1\0\4\5\2\0\7\5\1\0"+ + "\47\5\1\0\23\5\16\0\11\6\56\0\125\5\14\0\u026c\5\2\0"+ + "\10\5\12\0\32\5\5\0\113\5\3\0\3\5\17\0\15\5\1\0"+ + "\4\5\3\6\13\0\22\5\3\6\13\0\22\5\2\6\14\0\15\5"+ + "\1\0\3\5\1\0\2\6\14\0\64\5\40\6\3\0\1\5\3\0"+ + "\2\5\1\6\2\0\12\6\41\0\3\6\2\0\12\6\6\0\130\5"+ + "\10\0\51\5\1\6\126\0\35\5\3\0\14\6\4\0\14\6\12\0"+ + "\12\6\36\5\2\0\5\5\u038b\0\154\5\224\0\234\5\4\0\132\5"+ + "\6\0\26\5\2\0\6\5\2\0\46\5\2\0\6\5\2\0\10\5"+ + "\1\0\1\5\1\0\1\5\1\0\1\5\1\0\37\5\2\0\65\5"+ + "\1\0\7\5\1\0\1\5\3\0\3\5\1\0\7\5\3\0\4\5"+ + "\2\0\6\5\4\0\15\5\5\0\3\5\1\0\7\5\17\0\4\6"+ + "\32\0\5\6\20\0\2\5\23\0\1\5\13\0\4\6\6\0\6\6"+ + "\1\0\1\5\15\0\1\5\40\0\22\5\36\0\15\6\4\0\1\6"+ + "\3\0\6\6\27\0\1\5\4\0\1\5\2\0\12\5\1\0\1\5"+ + "\3\0\5\5\6\0\1\5\1\0\1\5\1\0\1\5\1\0\4\5"+ + "\1\0\3\5\1\0\7\5\3\0\3\5\5\0\5\5\26\0\44\5"+ + "\u0e81\0\3\5\31\0\11\5\6\6\1\0\5\5\2\0\5\5\4\0"+ + "\126\5\2\0\2\6\2\0\3\5\1\0\137\5\5\0\50\5\4\0"+ + "\136\5\21\0\30\5\70\0\20\5\u0200\0\u19b6\5\112\0\u51a6\5\132\0"+ + "\u048d\5\u0773\0\u2ba4\5\u215c\0\u012e\5\2\0\73\5\225\0\7\5\14\0"+ + "\5\5\5\0\1\5\1\6\12\5\1\0\15\5\1\0\5\5\1\0"+ + "\1\5\1\0\2\5\1\0\2\5\1\0\154\5\41\0\u016b\5\22\0"+ + "\100\5\2\0\66\5\50\0\15\5\3\0\20\6\20\0\4\6\17\0"+ + "\2\5\30\0\3\5\31\0\1\5\6\0\5\5\1\0\207\5\2\0"+ + "\1\6\4\0\1\5\13\0\12\6\7\0\32\5\4\0\1\5\1\0"+ + "\32\5\12\0\132\5\3\0\6\5\2\0\6\5\2\0\6\5\2\0"+ + "\3\5\3\0\2\5\3\0\2\5\22\0\3\6\4\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\3\1\1\2\1\3\2\4\1\1\1\5\2\6"+ + "\1\7\1\10\1\11\5\10\1\1\1\10\1\12\1\0"+ + "\1\13\1\14\2\3\1\0\1\11\6\10\1\3\1\11"+ + "\1\0\6\10\1\15\16\10\2\16"; + + private static int [] zzUnpackAction() { + int [] result = new int[64]; + 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\41\0\102\0\143\0\204\0\245\0\306\0\347"+ + "\0\u0108\0\143\0\u0129\0\143\0\u014a\0\143\0\u016b\0\u018c"+ + "\0\u01ad\0\u01ce\0\u01ef\0\u0210\0\u0231\0\u0252\0\u0273\0\u0294"+ + "\0\143\0\245\0\143\0\143\0\u02b5\0\u02d6\0\u02f7\0\u0318"+ + "\0\u0339\0\u035a\0\u037b\0\u039c\0\u03bd\0\u03de\0\143\0\u03ff"+ + "\0\u03ff\0\u0420\0\u0441\0\u0462\0\u0483\0\u04a4\0\u04c5\0\u018c"+ + "\0\u04e6\0\u0507\0\u0528\0\u0549\0\u056a\0\u058b\0\u05ac\0\u05cd"+ + "\0\u05ee\0\u060f\0\u0630\0\u0651\0\u0672\0\u0693\0\u06b4\0\u018c"; + + private static int [] zzUnpackRowMap() { + int [] result = new int[64]; + 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 = + "\4\4\1\5\1\6\1\4\1\7\1\6\2\4\13\7"+ + "\2\4\1\7\3\4\3\7\2\4\1\10\1\11\1\12"+ + "\30\10\1\13\3\10\1\14\1\10\1\4\1\15\1\16"+ + "\1\17\1\4\1\20\1\4\2\20\1\21\1\4\1\22"+ + "\1\23\1\24\1\20\1\25\3\20\1\26\2\20\1\21"+ + "\1\27\1\20\1\4\1\21\1\4\1\20\1\30\1\20"+ + "\1\31\1\21\45\0\1\5\41\0\5\32\1\33\14\32"+ + "\1\0\1\32\1\0\1\32\1\0\3\32\1\0\1\32"+ + "\5\0\2\32\3\7\1\33\14\7\1\0\1\7\1\0"+ + "\1\7\1\0\3\7\1\0\1\7\1\10\2\0\30\10"+ + "\1\0\3\10\1\0\1\10\2\0\1\12\36\0\2\34"+ + "\1\0\23\34\1\35\3\34\1\36\5\34\1\35\2\0"+ + "\1\16\36\0\1\17\2\0\36\17\5\0\5\20\1\0"+ + "\14\20\1\0\1\20\1\0\1\20\1\0\3\20\1\0"+ + "\1\20\11\0\1\21\4\0\1\37\7\0\1\21\1\40"+ + "\1\37\1\0\1\21\5\0\1\21\5\0\5\20\1\0"+ + "\1\20\1\41\12\20\1\0\1\20\1\0\1\20\1\0"+ + "\3\20\1\0\1\20\5\0\5\20\1\0\3\20\1\42"+ + "\10\20\1\0\1\20\1\0\1\20\1\0\3\20\1\0"+ + "\1\20\5\0\5\20\1\0\10\20\1\43\3\20\1\0"+ + "\1\20\1\0\1\20\1\0\3\20\1\0\1\20\5\0"+ + "\5\20\1\0\5\20\1\44\6\20\1\0\1\20\1\0"+ + "\1\20\1\0\3\20\1\0\1\20\5\0\5\20\1\0"+ + "\2\20\1\45\11\20\1\0\1\20\1\0\1\20\1\0"+ + "\3\20\1\0\1\20\11\0\1\40\14\0\1\40\3\0"+ + "\1\40\5\0\1\40\5\0\5\20\1\0\14\20\1\0"+ + "\1\20\1\0\1\20\1\0\2\20\1\46\1\0\1\20"+ + "\26\0\1\36\3\0\1\36\5\0\1\36\26\0\1\47"+ + "\3\0\1\47\5\0\1\47\11\0\1\50\14\0\1\50"+ + "\2\0\1\51\1\50\5\0\1\50\11\0\1\40\4\0"+ + "\1\37\7\0\1\40\1\0\1\37\1\0\1\40\5\0"+ + "\1\40\5\0\5\20\1\0\2\20\1\52\11\20\1\0"+ + "\1\20\1\0\1\20\1\0\3\20\1\0\1\20\5\0"+ + "\5\20\1\0\14\20\1\0\1\20\1\0\1\20\1\0"+ + "\1\53\2\20\1\0\1\20\5\0\5\20\1\0\11\20"+ + "\1\54\2\20\1\0\1\20\1\0\1\20\1\0\3\20"+ + "\1\0\1\20\5\0\5\20\1\0\6\20\1\55\5\20"+ + "\1\0\1\20\1\0\1\20\1\0\3\20\1\0\1\20"+ + "\5\0\5\20\1\0\6\20\1\56\5\20\1\0\1\20"+ + "\1\0\1\20\1\0\3\20\1\0\1\20\5\0\5\20"+ + "\1\0\10\20\1\57\3\20\1\0\1\20\1\0\1\20"+ + "\1\0\3\20\1\0\1\20\11\0\1\50\14\0\1\50"+ + "\3\0\1\50\5\0\1\50\5\0\5\20\1\0\3\20"+ + "\1\60\10\20\1\0\1\20\1\0\1\20\1\0\3\20"+ + "\1\0\1\20\5\0\5\20\1\0\12\20\1\61\1\20"+ + "\1\0\1\20\1\0\1\20\1\0\3\20\1\0\1\20"+ + "\5\0\5\20\1\0\3\20\1\62\10\20\1\0\1\20"+ + "\1\0\1\20\1\0\3\20\1\0\1\20\5\0\5\20"+ + "\1\0\7\20\1\52\4\20\1\0\1\20\1\0\1\20"+ + "\1\0\3\20\1\0\1\20\5\0\5\20\1\0\6\20"+ + "\1\60\5\20\1\0\1\20\1\0\1\20\1\0\3\20"+ + "\1\0\1\20\5\0\5\20\1\0\7\20\1\63\4\20"+ + "\1\0\1\20\1\0\1\20\1\0\3\20\1\0\1\20"+ + "\5\0\5\20\1\0\7\20\1\64\4\20\1\0\1\20"+ + "\1\0\1\20\1\0\3\20\1\0\1\20\5\0\5\20"+ + "\1\0\4\20\1\65\7\20\1\0\1\20\1\0\1\20"+ + "\1\0\3\20\1\0\1\20\5\0\5\20\1\0\1\66"+ + "\13\20\1\0\1\20\1\0\1\20\1\0\3\20\1\0"+ + "\1\20\5\0\5\20\1\0\1\67\13\20\1\0\1\20"+ + "\1\0\1\20\1\0\3\20\1\0\1\20\5\0\5\20"+ + "\1\0\12\20\1\70\1\20\1\0\1\20\1\0\1\20"+ + "\1\0\3\20\1\0\1\20\5\0\5\20\1\0\5\20"+ + "\1\71\6\20\1\0\1\20\1\0\1\20\1\0\3\20"+ + "\1\0\1\20\5\0\5\20\1\0\3\20\1\72\10\20"+ + "\1\0\1\20\1\0\1\20\1\0\3\20\1\0\1\20"+ + "\5\0\5\20\1\0\10\20\1\73\3\20\1\0\1\20"+ + "\1\0\1\20\1\0\3\20\1\0\1\20\5\0\5\20"+ + "\1\0\10\20\1\74\3\20\1\0\1\20\1\0\1\20"+ + "\1\0\3\20\1\0\1\20\5\0\5\20\1\0\1\20"+ + "\1\75\12\20\1\0\1\20\1\0\1\20\1\0\3\20"+ + "\1\0\1\20\5\0\5\20\1\0\3\20\1\76\10\20"+ + "\1\0\1\20\1\0\1\20\1\0\3\20\1\0\1\20"+ + "\5\0\5\20\1\0\1\75\13\20\1\0\1\20\1\0"+ + "\1\20\1\0\3\20\1\0\1\20\5\0\4\20\1\77"+ + "\1\0\13\20\1\100\1\0\1\20\1\0\1\77\1\0"+ + "\3\20\1\0\1\77\5\0\5\20\1\0\11\20\1\60"+ + "\2\20\1\0\1\20\1\0\1\20\1\0\3\20\1\0"+ + "\1\20\5\0\4\20\1\77\1\0\13\20\1\77\1\0"+ + "\1\20\1\0\1\77\1\0\3\20\1\0\1\77"; + + private static int [] zzUnpackTrans() { + int [] result = new int[1749]; + 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\5\1\1\11\1\1\1\11\1\1\1\11"+ + "\12\1\1\11\1\0\2\11\2\1\1\0\7\1\1\11"+ + "\1\1\1\0\27\1"; + + private static int [] zzUnpackAttribute() { + int [] result = new int[64]; + 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[] = new char[ZZ_BUFFERSIZE]; + + /** 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; + + /** number of newlines encountered up to the start of the matched text */ + private int yyline; + + /** the number of characters up to the start of the matched text */ + private int yychar; + + /** + * the number of characters from the last newline up to the start of the + * matched text + */ + private int yycolumn; + + /** + * 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; + + /** denotes if the user-EOF-code has already been executed */ + private boolean zzEOFDone; + + /* user code: */ + + StringBuffer string = new StringBuffer(); + + + /** + * Create an empty lexer, yyrset will be called later to reset and assign + * the reader + */ + public FlasmLexer() { + + } + + public int yychar() { + return yychar; + } + + + + /** + * 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 FlasmLexer(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 FlasmLexer(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 < 1736) { + int count = packed.charAt(i++); + char value = packed.charAt(i++); + do map[j++] = value; while (--count > 0); + } + return map; + } + + + /** + * Refills the input buffer. + * + * @return false, iff there was new input. + * + * @exception java.io.IOException if any I/O-Error occurs + */ + private boolean zzRefill() throws java.io.IOException { + + /* first: make room (if you can) */ + if (zzStartRead > 0) { + System.arraycopy(zzBuffer, zzStartRead, + zzBuffer, 0, + zzEndRead-zzStartRead); + + /* translate stored positions */ + zzEndRead-= zzStartRead; + zzCurrentPos-= zzStartRead; + zzMarkedPos-= zzStartRead; + zzStartRead = 0; + } + + /* is the buffer big enough? */ + if (zzCurrentPos >= zzBuffer.length) { + /* if not: blow it up */ + char newBuffer[] = new char[zzCurrentPos*2]; + System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); + zzBuffer = newBuffer; + } + + /* finally: fill the buffer with new input */ + int numRead = zzReader.read(zzBuffer, zzEndRead, + zzBuffer.length-zzEndRead); + + if (numRead > 0) { + zzEndRead+= numRead; + return false; + } + // unlikely but not impossible: read 0 characters, but not at end of stream + if (numRead == 0) { + int c = zzReader.read(); + if (c == -1) { + return true; + } else { + zzBuffer[zzEndRead++] = (char) c; + return false; + } + } + + // numRead < 0 + return true; + } + + + /** + * 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(); + } + + + /** + * 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 ZZ_INITIAL. + * + * @param reader the new input stream + */ + public final void yyreset(java.io.Reader reader) { + zzReader = reader; + zzAtBOL = true; + zzAtEOF = false; + zzEOFDone = false; + zzEndRead = zzStartRead = 0; + zzCurrentPos = zzMarkedPos = 0; + yyline = yychar = yycolumn = 0; + zzLexicalState = YYINITIAL; + } + + + /** + * Returns the current lexical state. + */ + public final int yystate() { + return zzLexicalState; + } + + + /** + * Enters a new lexical state + * + * @param newState the new lexical state + */ + 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 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; + + yychar+= zzMarkedPosL-zzStartRead; + + zzAction = -1; + + zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; + + 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 4: + { yybegin(YYINITIAL); + return token(TokenType.ERROR,tokenStart, tokenLength); + } + case 15: break; + case 13: + { return token(TokenType.KEYWORD); + } + case 16: break; + case 11: + { return token(TokenType.IDENTIFIER,yychar,yylength()-1); + } + case 17: break; + case 10: + { yybegin(STRING); + tokenStart = yychar; + tokenLength = 1; + } + case 18: break; + case 14: + { return token(TokenType.KEYWORD2); + } + case 19: break; + case 12: + { tokenLength += 2; + } + case 20: break; + case 5: + { yybegin(PARAMETERS); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + case 21: break; + case 8: + { return token(TokenType.IDENTIFIER); + } + case 22: break; + case 2: + { yybegin(PARAMETERS); + return token(TokenType.KEYWORD); + } + case 23: break; + case 7: + { return token(TokenType.COMMENT); + } + case 24: break; + case 9: + { return token(TokenType.NUMBER); + } + case 25: break; + case 6: + { yybegin(YYINITIAL); + } + case 26: break; + case 1: + { + } + case 27: break; + case 3: + { tokenLength += yylength(); + } + case 28: break; + default: + if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { + zzAtEOF = true; + { + return null; + } + } + else { + zzScanError(ZZ_NO_MATCH); + } + } + } + } + + +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/GroovyLexer.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/GroovyLexer.java new file mode 100644 index 000000000..a9e7bdd5e --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/GroovyLexer.java @@ -0,0 +1,1708 @@ +/* The following code was generated by JFlex 1.4.3 on 21.7.10 18:14 */ + +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jsyntaxpane.lexers; + + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + + +/** + * This class is a scanner generated by + * JFlex 1.4.3 + * on 21.7.10 18:14 from the specification file + * D:/Dokumenty/Programovani/JavaSE/JPSWFDec/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/groovy.flex + */ +public final class GroovyLexer extends DefaultJFlexLexer { + + /** This character denotes the end of file */ + public static final int YYEOF = -1; + + /** initial size of the lookahead buffer */ + private static final int ZZ_BUFFERSIZE = 16384; + + /** lexical states */ + public static final int JDOC = 10; + public static final int REGEX = 6; + public static final int STRING = 2; + public static final int GSTRING_EXPR = 8; + public static final int CHARLITERAL = 4; + public static final int ML_STRING = 14; + public static final int YYINITIAL = 0; + public static final int JDOC_TAG = 12; + public static final int ML_STRING_EXPR = 16; + + /** + * 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, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, + 8, 8 + }; + + /** + * Translates characters to character classes + */ + private static final String ZZ_CMAP_PACKED = + "\11\7\1\3\1\2\1\0\1\3\1\1\16\7\4\0\1\3\1\112"+ + "\1\24\1\0\1\25\1\112\1\115\1\26\1\77\1\100\1\5\1\117"+ + "\1\105\1\23\1\21\1\4\1\10\1\16\2\15\4\17\2\11\1\114"+ + "\1\105\1\111\1\107\1\110\1\113\1\106\1\14\1\60\1\61\1\62"+ + "\1\22\1\20\2\120\1\63\2\120\1\12\1\75\1\70\1\64\1\71"+ + "\1\120\1\74\1\66\1\73\1\76\1\67\1\120\1\13\2\120\1\103"+ + "\1\27\1\104\1\112\1\6\1\0\1\30\1\31\1\35\1\47\1\40"+ + "\1\52\1\54\1\44\1\45\1\65\1\42\1\37\1\50\1\41\1\36"+ + "\1\53\1\72\1\34\1\32\1\33\1\46\1\55\1\56\1\51\1\43"+ + "\1\57\1\101\1\116\1\102\1\112\41\7\2\0\4\6\4\0\1\120"+ + "\2\0\1\7\7\0\1\120\4\0\1\120\5\0\27\120\1\0\37\120"+ + "\1\0\u013f\120\31\0\162\120\4\0\14\120\16\0\5\120\11\0\1\120"+ + "\21\0\130\7\5\0\23\7\12\0\1\120\13\0\1\120\1\0\3\120"+ + "\1\0\1\120\1\0\24\120\1\0\54\120\1\0\46\120\1\0\5\120"+ + "\4\0\202\120\1\0\4\7\3\0\105\120\1\0\46\120\2\0\2\120"+ + "\6\0\20\120\41\0\46\120\2\0\1\120\7\0\47\120\11\0\21\7"+ + "\1\0\27\7\1\0\3\7\1\0\1\7\1\0\2\7\1\0\1\7"+ + "\13\0\33\120\5\0\3\120\15\0\4\7\14\0\6\7\13\0\32\120"+ + "\5\0\13\120\16\7\7\0\12\7\4\0\2\120\1\7\143\120\1\0"+ + "\1\120\10\7\1\0\6\7\2\120\2\7\1\0\4\7\2\120\12\7"+ + "\3\120\2\0\1\120\17\0\1\7\1\120\1\7\36\120\33\7\2\0"+ + "\3\120\60\0\46\120\13\7\1\120\u014f\0\3\7\66\120\2\0\1\7"+ + "\1\120\20\7\2\0\1\120\4\7\3\0\12\120\2\7\2\0\12\7"+ + "\21\0\3\7\1\0\10\120\2\0\2\120\2\0\26\120\1\0\7\120"+ + "\1\0\1\120\3\0\4\120\2\0\1\7\1\120\7\7\2\0\2\7"+ + "\2\0\3\7\11\0\1\7\4\0\2\120\1\0\3\120\2\7\2\0"+ + "\12\7\2\120\2\6\15\0\3\7\1\0\6\120\4\0\2\120\2\0"+ + "\26\120\1\0\7\120\1\0\2\120\1\0\2\120\1\0\2\120\2\0"+ + "\1\7\1\0\5\7\4\0\2\7\2\0\3\7\13\0\4\120\1\0"+ + "\1\120\7\0\14\7\3\120\14\0\3\7\1\0\11\120\1\0\3\120"+ + "\1\0\26\120\1\0\7\120\1\0\2\120\1\0\5\120\2\0\1\7"+ + "\1\120\10\7\1\0\3\7\1\0\3\7\2\0\1\120\17\0\2\120"+ + "\2\7\2\0\12\7\1\0\1\6\17\0\3\7\1\0\10\120\2\0"+ + "\2\120\2\0\26\120\1\0\7\120\1\0\2\120\1\0\5\120\2\0"+ + "\1\7\1\120\6\7\3\0\2\7\2\0\3\7\10\0\2\7\4\0"+ + "\2\120\1\0\3\120\4\0\12\7\1\0\1\120\20\0\1\7\1\120"+ + "\1\0\6\120\3\0\3\120\1\0\4\120\3\0\2\120\1\0\1\120"+ + "\1\0\2\120\3\0\2\120\3\0\3\120\3\0\10\120\1\0\3\120"+ + "\4\0\5\7\3\0\3\7\1\0\4\7\11\0\1\7\17\0\11\7"+ + "\11\0\1\6\7\0\3\7\1\0\10\120\1\0\3\120\1\0\27\120"+ + "\1\0\12\120\1\0\5\120\4\0\7\7\1\0\3\7\1\0\4\7"+ + "\7\0\2\7\11\0\2\120\4\0\12\7\22\0\2\7\1\0\10\120"+ + "\1\0\3\120\1\0\27\120\1\0\12\120\1\0\5\120\2\0\1\7"+ + "\1\120\7\7\1\0\3\7\1\0\4\7\7\0\2\7\7\0\1\120"+ + "\1\0\2\120\4\0\12\7\22\0\2\7\1\0\10\120\1\0\3\120"+ + "\1\0\27\120\1\0\20\120\4\0\6\7\2\0\3\7\1\0\4\7"+ + "\11\0\1\7\10\0\2\120\4\0\12\7\22\0\2\7\1\0\22\120"+ + "\3\0\30\120\1\0\11\120\1\0\1\120\2\0\7\120\3\0\1\7"+ + "\4\0\6\7\1\0\1\7\1\0\10\7\22\0\2\7\15\0\60\120"+ + "\1\7\2\120\7\7\4\0\1\6\7\120\10\7\1\0\12\7\47\0"+ + "\2\120\1\0\1\120\2\0\2\120\1\0\1\120\2\0\1\120\6\0"+ + "\4\120\1\0\7\120\1\0\3\120\1\0\1\120\1\0\1\120\2\0"+ + "\2\120\1\0\4\120\1\7\2\120\6\7\1\0\2\7\1\120\2\0"+ + "\5\120\1\0\1\120\1\0\6\7\2\0\12\7\2\0\2\120\42\0"+ + "\1\120\27\0\2\7\6\0\12\7\13\0\1\7\1\0\1\7\1\0"+ + "\1\7\4\0\2\7\10\120\1\0\42\120\6\0\24\7\1\0\2\7"+ + "\4\120\4\0\10\7\1\0\44\7\11\0\1\7\71\0\42\120\1\0"+ + "\5\120\1\0\2\120\1\0\7\7\3\0\4\7\6\0\12\7\6\0"+ + "\6\120\4\7\106\0\46\120\12\0\51\120\7\0\132\120\5\0\104\120"+ + "\5\0\122\120\6\0\7\120\1\0\77\120\1\0\1\120\1\0\4\120"+ + "\2\0\7\120\1\0\1\120\1\0\4\120\2\0\47\120\1\0\1\120"+ + "\1\0\4\120\2\0\37\120\1\0\1\120\1\0\4\120\2\0\7\120"+ + "\1\0\1\120\1\0\4\120\2\0\7\120\1\0\7\120\1\0\27\120"+ + "\1\0\37\120\1\0\1\120\1\0\4\120\2\0\7\120\1\0\47\120"+ + "\1\0\23\120\16\0\11\7\56\0\125\120\14\0\u026c\120\2\0\10\120"+ + "\12\0\32\120\5\0\113\120\3\0\3\6\17\0\15\120\1\0\4\120"+ + "\3\7\13\0\22\120\3\7\13\0\22\120\2\7\14\0\15\120\1\0"+ + "\3\120\1\0\2\7\14\0\64\120\40\7\3\0\1\120\3\0\1\6"+ + "\1\120\1\7\2\0\12\7\41\0\3\7\2\0\12\7\6\0\130\120"+ + "\10\0\51\120\1\7\126\0\35\120\3\0\14\7\4\0\14\7\12\0"+ + "\12\7\36\120\2\0\5\120\u038b\0\154\120\224\0\234\120\4\0\132\120"+ + "\6\0\26\120\2\0\6\120\2\0\46\120\2\0\6\120\2\0\10\120"+ + "\1\0\1\120\1\0\1\120\1\0\1\120\1\0\37\120\2\0\65\120"+ + "\1\0\7\120\1\0\1\120\3\0\3\120\1\0\7\120\3\0\4\120"+ + "\2\0\6\120\4\0\15\120\5\0\3\120\1\0\7\120\17\0\4\7"+ + "\32\0\5\7\20\0\2\6\23\0\1\6\13\0\4\7\6\0\6\7"+ + "\1\0\1\120\15\0\1\120\40\0\22\6\36\0\15\7\4\0\1\7"+ + "\3\0\6\7\27\0\1\120\4\0\1\120\2\0\12\120\1\0\1\120"+ + "\3\0\5\120\6\0\1\120\1\0\1\120\1\0\1\120\1\0\4\120"+ + "\1\0\3\120\1\0\7\120\3\0\3\120\5\0\5\120\26\0\44\6"+ + "\u0e81\0\2\120\1\6\31\0\11\6\6\7\1\0\5\120\2\0\3\6"+ + "\2\120\4\0\126\120\2\0\2\7\2\0\3\120\1\0\132\120\1\6"+ + "\4\120\5\0\50\120\4\0\136\120\21\0\30\120\70\0\20\120\u0200\0"+ + "\u19b6\120\112\0\u51a6\120\132\0\u048d\120\u0773\0\u2ba4\120\u215c\0\u012e\120\2\0"+ + "\73\120\225\0\7\120\14\0\5\120\5\0\1\120\1\7\12\120\1\0"+ + "\15\120\1\0\5\120\1\0\1\120\1\0\2\120\1\0\2\120\1\0"+ + "\154\120\41\0\u016b\120\22\0\100\120\2\0\66\120\50\0\14\120\1\6"+ + "\3\0\20\7\20\0\4\7\17\0\2\6\30\0\3\6\31\0\1\6"+ + "\6\0\5\120\1\0\207\120\2\0\1\7\4\0\1\6\13\0\12\7"+ + "\7\0\32\120\4\0\1\6\1\0\32\120\12\0\1\6\131\120\3\0"+ + "\6\120\2\0\6\120\2\0\6\120\2\0\3\120\3\0\2\6\3\0"+ + "\2\6\22\0\3\7\4\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\4\2\5\2\4\1\3"+ + "\1\4\1\3\1\6\1\7\34\4\1\10\1\11\1\12"+ + "\1\13\1\14\1\15\7\3\1\16\2\17\1\20\2\1"+ + "\1\16\1\21\1\1\1\16\1\22\1\16\1\23\1\24"+ + "\1\23\1\25\2\26\6\16\1\27\1\0\1\30\1\0"+ + "\1\3\3\5\1\0\3\5\1\0\3\4\1\0\1\4"+ + "\1\31\26\4\1\31\1\4\2\31\40\4\1\3\1\32"+ + "\1\33\2\16\1\34\1\0\1\35\1\0\2\30\1\0"+ + "\1\36\4\5\1\0\4\4\1\37\30\4\1\31\2\4"+ + "\1\31\44\4\1\40\1\41\2\0\2\5\37\4\1\42"+ + "\30\4\2\5\11\4\1\31\10\4\1\31\2\4\1\31"+ + "\2\4\1\42\22\4\2\5\31\4\1\42\5\4\1\42"+ + "\2\4\2\5\35\4\2\5\27\4\2\5\1\4\1\43"+ + "\24\4\2\5\20\4\1\0\1\5\11\4\1\0\1\5"+ + "\10\4\1\0\1\5\6\4\1\0\1\5\3\4\1\0"+ + "\1\5\1\4\1\0\1\5\1\0\1\5\1\0\5\5"; + + private static int [] zzUnpackAction() { + int [] result = new int[540]; + 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\121\0\242\0\363\0\u0144\0\u0195\0\u01e6\0\u0237"+ + "\0\u0288\0\u02d9\0\u032a\0\u037b\0\u03cc\0\u041d\0\u046e\0\u04bf"+ + "\0\u0510\0\u0561\0\u05b2\0\u0603\0\u0654\0\u06a5\0\u02d9\0\u06f6"+ + "\0\u0747\0\u0798\0\u07e9\0\u083a\0\u088b\0\u08dc\0\u092d\0\u097e"+ + "\0\u09cf\0\u0a20\0\u0a71\0\u0ac2\0\u0b13\0\u0b64\0\u0bb5\0\u0c06"+ + "\0\u0c57\0\u0ca8\0\u0cf9\0\u0d4a\0\u0d9b\0\u0dec\0\u0e3d\0\u0e8e"+ + "\0\u0edf\0\u0f30\0\u0f81\0\u02d9\0\u02d9\0\u02d9\0\u02d9\0\u02d9"+ + "\0\u02d9\0\u02d9\0\u0fd2\0\u1023\0\u1074\0\u10c5\0\u1116\0\u1167"+ + "\0\u11b8\0\u1209\0\u02d9\0\u02d9\0\u125a\0\u12ab\0\u12fc\0\u02d9"+ + "\0\u134d\0\u139e\0\u02d9\0\u13ef\0\u02d9\0\u02d9\0\u1440\0\u02d9"+ + "\0\u02d9\0\u1440\0\u1491\0\u02d9\0\u14e2\0\u1533\0\u1584\0\u12ab"+ + "\0\u02d9\0\u15d5\0\u1626\0\u1677\0\u15d5\0\u16c8\0\u1719\0\u02d9"+ + "\0\u176a\0\u17bb\0\u180c\0\u185d\0\u18ae\0\u18ff\0\u1950\0\u19a1"+ + "\0\u19f2\0\u1a43\0\u1a94\0\u1ae5\0\u1b36\0\u1b87\0\u1bd8\0\u1c29"+ + "\0\u1c7a\0\u1ccb\0\u1d1c\0\u1d6d\0\u1dbe\0\u1e0f\0\u1e60\0\u1eb1"+ + "\0\u1f02\0\u1f53\0\u1fa4\0\u1ff5\0\u2046\0\u2097\0\u20e8\0\u2139"+ + "\0\u218a\0\u21db\0\u222c\0\u041d\0\u227d\0\u22ce\0\u231f\0\u2370"+ + "\0\u23c1\0\u2412\0\u2463\0\u24b4\0\u2505\0\u2556\0\u25a7\0\u25f8"+ + "\0\u2649\0\u269a\0\u26eb\0\u273c\0\u278d\0\u27de\0\u282f\0\u2880"+ + "\0\u28d1\0\u2922\0\u2973\0\u29c4\0\u2a15\0\u2a66\0\u2ab7\0\u2b08"+ + "\0\u2b59\0\u2baa\0\u2bfb\0\u2c4c\0\u2c9d\0\u2cee\0\u02d9\0\u02d9"+ + "\0\u2d3f\0\u2d90\0\u02d9\0\u2de1\0\u02d9\0\u2e32\0\u2e83\0\u02d9"+ + "\0\u2ed4\0\u2f25\0\u2f76\0\u2fc7\0\u3018\0\u3069\0\u30ba\0\u310b"+ + "\0\u315c\0\u31ad\0\u31fe\0\u02d9\0\u324f\0\u32a0\0\u32f1\0\u3342"+ + "\0\u3393\0\u33e4\0\u3435\0\u3486\0\u34d7\0\u3528\0\u3579\0\u35ca"+ + "\0\u361b\0\u366c\0\u36bd\0\u370e\0\u375f\0\u37b0\0\u3801\0\u3852"+ + "\0\u38a3\0\u38f4\0\u3945\0\u3996\0\u39e7\0\u3a38\0\u3a89\0\u3ada"+ + "\0\u3b2b\0\u3b7c\0\u3bcd\0\u3c1e\0\u3c6f\0\u3cc0\0\u3d11\0\u3d62"+ + "\0\u3db3\0\u3e04\0\u3e55\0\u3ea6\0\u3ef7\0\u3f48\0\u3f99\0\u3fea"+ + "\0\u403b\0\u408c\0\u40dd\0\u412e\0\u417f\0\u41d0\0\u4221\0\u4272"+ + "\0\u42c3\0\u4314\0\u4365\0\u43b6\0\u4407\0\u4458\0\u44a9\0\u44fa"+ + "\0\u454b\0\u459c\0\u45ed\0\u463e\0\u02d9\0\u02d9\0\u468f\0\u2f25"+ + "\0\u46e0\0\u4731\0\u4782\0\u47d3\0\u4824\0\u4875\0\u48c6\0\u4917"+ + "\0\u4968\0\u49b9\0\u4a0a\0\u4a5b\0\u4aac\0\u4afd\0\u4b4e\0\u4b9f"+ + "\0\u4bf0\0\u4c41\0\u4c92\0\u4ce3\0\u4d34\0\u4d85\0\u4dd6\0\u4e27"+ + "\0\u4e78\0\u4ec9\0\u4f1a\0\u4f6b\0\u4fbc\0\u500d\0\u505e\0\u50af"+ + "\0\u5100\0\u041d\0\u5151\0\u51a2\0\u51f3\0\u5244\0\u5295\0\u52e6"+ + "\0\u5337\0\u5388\0\u53d9\0\u542a\0\u547b\0\u54cc\0\u551d\0\u556e"+ + "\0\u55bf\0\u5610\0\u5661\0\u56b2\0\u5703\0\u5754\0\u57a5\0\u57f6"+ + "\0\u5847\0\u5898\0\u58e9\0\u593a\0\u598b\0\u59dc\0\u5a2d\0\u5a7e"+ + "\0\u5acf\0\u5b20\0\u5b71\0\u5bc2\0\u5c13\0\u366c\0\u5c64\0\u5cb5"+ + "\0\u5d06\0\u5d57\0\u5da8\0\u5df9\0\u5e4a\0\u5e9b\0\u5eec\0\u5f3d"+ + "\0\u5f8e\0\u5fdf\0\u6030\0\u6081\0\u60d2\0\u6123\0\u6174\0\u61c5"+ + "\0\u6216\0\u6267\0\u62b8\0\u6309\0\u635a\0\u63ab\0\u63fc\0\u644d"+ + "\0\u649e\0\u64ef\0\u6540\0\u6591\0\u65e2\0\u6633\0\u6684\0\u66d5"+ + "\0\u6726\0\u6777\0\u67c8\0\u6819\0\u686a\0\u68bb\0\u690c\0\u695d"+ + "\0\u69ae\0\u69ff\0\u6a50\0\u6aa1\0\u6af2\0\u6b43\0\u6b94\0\u6be5"+ + "\0\u6c36\0\u6c87\0\u6cd8\0\u6d29\0\u6d7a\0\u6dcb\0\u6e1c\0\u6e6d"+ + "\0\u6ebe\0\u6f0f\0\u6f60\0\u6fb1\0\u7002\0\u7053\0\u70a4\0\u70f5"+ + "\0\u7146\0\u7197\0\u71e8\0\u7239\0\u728a\0\u72db\0\u732c\0\u737d"+ + "\0\u73ce\0\u741f\0\u7470\0\u74c1\0\u7512\0\u7563\0\u75b4\0\u7605"+ + "\0\u7656\0\u76a7\0\u76f8\0\u7749\0\u779a\0\u77eb\0\u783c\0\u788d"+ + "\0\u78de\0\u792f\0\u7980\0\u79d1\0\u7a22\0\u7a73\0\u7ac4\0\u7b15"+ + "\0\u7b66\0\u7bb7\0\u7c08\0\u7c59\0\u7caa\0\u7cfb\0\u7d4c\0\u7d9d"+ + "\0\u7dee\0\u7e3f\0\u7e90\0\u7ee1\0\u7f32\0\u7f83\0\u7fd4\0\u8025"+ + "\0\u8076\0\u80c7\0\u8118\0\u8169\0\u81ba\0\u820b\0\u825c\0\u82ad"+ + "\0\u82fe\0\u834f\0\u83a0\0\u83f1\0\u8442\0\u8493\0\u041d\0\u84e4"+ + "\0\u8535\0\u8586\0\u85d7\0\u8628\0\u8679\0\u86ca\0\u871b\0\u876c"+ + "\0\u87bd\0\u880e\0\u885f\0\u88b0\0\u8901\0\u8952\0\u89a3\0\u89f4"+ + "\0\u8a45\0\u8a96\0\u8ae7\0\u8b38\0\u8b89\0\u8bda\0\u8c2b\0\u8c7c"+ + "\0\u8ccd\0\u8d1e\0\u8d6f\0\u8dc0\0\u8e11\0\u8e62\0\u8eb3\0\u8f04"+ + "\0\u8f55\0\u8fa6\0\u8ff7\0\u9048\0\u9099\0\u90ea\0\u913b\0\u918c"+ + "\0\u91dd\0\u922e\0\u927f\0\u92d0\0\u9321\0\u9372\0\u93c3\0\u9414"+ + "\0\u9465\0\u94b6\0\u9507\0\u9558\0\u95a9\0\u95fa\0\u964b\0\u969c"+ + "\0\u96ed\0\u973e\0\u978f\0\u97e0\0\u9831\0\u9882\0\u98d3\0\u9924"+ + "\0\u9975\0\u99c6\0\u9a17\0\u9a68\0\u9ab9\0\u9b0a\0\u9b5b\0\u9bac"+ + "\0\u9bfd\0\u9c4e\0\u9c9f\0\u9cf0\0\u9d41\0\u9d92\0\u9de3\0\u9e34"+ + "\0\u9e85\0\u9ed6\0\u9f27\0\u9f78"; + + private static int [] zzUnpackRowMap() { + int [] result = new int[540]; + 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\3\13\1\14\1\15\1\16\1\12\1\17\1\20"+ + "\2\16\1\21\3\20\1\22\1\23\1\24\1\25\1\26"+ + "\1\16\1\27\1\12\1\30\1\31\1\32\1\33\1\34"+ + "\1\35\1\16\1\36\1\37\1\40\3\16\1\41\1\16"+ + "\1\42\2\16\1\43\1\44\1\45\1\46\1\47\1\16"+ + "\1\50\1\51\1\52\1\53\1\54\1\16\1\55\1\56"+ + "\1\57\1\60\1\16\1\61\1\62\1\16\1\63\1\64"+ + "\1\65\1\66\1\67\1\70\1\71\2\72\1\15\1\73"+ + "\1\74\1\15\1\75\1\72\1\76\1\77\1\100\1\16"+ + "\1\101\1\102\1\103\21\101\1\104\1\105\1\101\1\106"+ + "\71\101\1\107\1\102\1\103\23\107\1\110\1\111\71\107"+ + "\1\112\1\102\1\103\1\112\1\113\22\112\1\114\71\112"+ + "\1\115\2\12\21\115\2\12\1\115\1\12\52\115\1\116"+ + "\23\115\1\117\100\115\1\120\12\115\5\121\1\122\4\121"+ + "\3\123\3\121\1\123\1\121\1\123\5\121\47\123\21\121"+ + "\1\123\1\124\1\125\22\124\1\126\1\127\1\124\1\130"+ + "\71\124\102\115\1\131\16\115\122\0\3\13\115\0\4\132"+ + "\1\133\1\134\101\132\1\135\11\132\107\0\1\72\17\0"+ + "\13\16\1\0\1\16\2\0\1\16\2\0\47\16\21\0"+ + "\1\16\10\0\1\136\1\137\1\140\1\141\1\0\1\142"+ + "\1\143\1\142\1\140\1\144\1\145\14\0\1\140\1\145"+ + "\6\0\1\140\1\0\1\141\1\140\7\0\1\140\46\0"+ + "\2\20\1\140\2\0\3\20\1\140\1\144\1\145\14\0"+ + "\1\140\1\145\6\0\1\140\2\0\1\140\7\0\1\140"+ + "\44\0\13\16\1\0\1\16\2\0\1\16\2\0\4\16"+ + "\1\146\42\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\7\16\1\147\37\16\21\0\1\16"+ + "\10\0\2\144\3\0\3\144\107\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\21\16\1\150\25\16\21\0\1\16"+ + "\23\0\1\72\63\0\1\72\35\0\1\151\102\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\1\16\1\152\1\153"+ + "\44\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\4\16\1\154\1\16\1\155\4\16\1\156"+ + "\33\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\3\16\1\157\7\16\1\160\1\161\1\16"+ + "\1\162\7\16\1\163\20\16\21\0\1\16\6\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\4\16\1\164\7\16"+ + "\1\165\32\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\10\16\1\166\36\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\1\167"+ + "\5\16\1\170\1\171\4\16\1\172\32\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\6\16"+ + "\1\173\40\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\7\16\1\174\1\16\1\175\7\16"+ + "\1\176\25\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\1\177\7\16\1\200\5\16\1\201"+ + "\30\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\11\16\1\202\6\16\1\203\1\16\1\204"+ + "\24\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\6\16\1\205\1\16\1\206\36\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\1\207\5\16\1\210\1\211\5\16\1\212\31\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\1\213\3\16\1\214\11\16\1\215\30\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\6\16"+ + "\1\216\40\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\6\16\1\217\40\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\14\16"+ + "\1\220\32\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\6\16\1\221\4\16\1\222\33\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\6\16\1\223\1\224\4\16\1\225\32\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\6\16\1\226\40\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\7\16\1\227\1\16\1\230"+ + "\35\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\1\16\1\231\45\16\21\0\1\16\6\0"+ + "\13\16\1\0\1\16\2\0\1\16\2\0\3\16\1\232"+ + "\4\16\1\233\3\16\1\234\32\16\21\0\1\16\6\0"+ + "\13\16\1\0\1\16\2\0\1\16\2\0\6\16\1\235"+ + "\40\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\6\16\1\236\1\16\1\237\5\16\1\240"+ + "\30\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\1\241\46\16\21\0\1\16\6\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\14\16\1\242\32\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\10\16\1\243\5\16\1\244\30\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\11\16"+ + "\1\245\35\16\21\0\1\16\107\0\1\72\1\246\117\0"+ + "\1\72\1\0\1\15\30\0\1\72\206\0\1\72\5\0"+ + "\1\72\112\0\1\72\6\0\1\72\111\0\1\72\7\0"+ + "\1\72\1\0\1\101\2\0\21\101\2\0\1\101\1\0"+ + "\71\101\2\0\1\103\217\0\1\247\17\0\2\250\1\0"+ + "\5\250\1\251\4\250\2\251\1\252\101\250\1\107\2\0"+ + "\23\107\2\0\71\107\2\250\1\0\116\250\1\112\2\0"+ + "\1\112\1\0\115\112\1\250\1\0\1\112\1\250\114\112"+ + "\4\0\1\253\126\0\3\123\3\0\1\123\1\0\1\123"+ + "\5\0\47\123\15\0\1\124\3\0\1\123\2\0\1\124"+ + "\142\0\1\254\175\0\1\255\17\0\1\256\2\0\1\256"+ + "\1\0\114\256\1\133\1\257\1\260\116\133\5\261\1\262"+ + "\113\261\10\0\1\136\1\137\1\140\2\0\1\142\1\143"+ + "\1\142\1\140\1\144\1\145\14\0\1\140\1\145\6\0"+ + "\1\140\2\0\1\140\7\0\1\140\46\0\2\137\3\0"+ + "\3\137\1\140\1\144\1\145\15\0\1\145\6\0\1\140"+ + "\2\0\1\140\7\0\1\140\46\0\1\263\1\264\2\0"+ + "\5\264\1\0\1\264\5\0\2\264\3\0\1\264\2\0"+ + "\1\264\6\0\1\264\2\0\1\264\5\0\3\264\46\0"+ + "\1\265\1\137\1\140\2\0\3\265\1\140\1\144\1\145"+ + "\14\0\1\140\1\145\6\0\1\140\2\0\1\140\7\0"+ + "\1\140\46\0\1\142\1\137\1\140\2\0\3\142\1\140"+ + "\1\144\1\145\14\0\1\140\1\145\6\0\1\140\2\0"+ + "\1\140\7\0\1\140\46\0\2\144\3\0\3\144\1\140"+ + "\1\0\1\145\15\0\1\145\6\0\1\140\2\0\1\140"+ + "\7\0\1\140\46\0\2\266\3\0\3\266\3\0\1\267"+ + "\73\0\1\267\7\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\4\16\1\270\10\16\1\271\31\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\6\16"+ + "\1\272\40\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\5\16\1\273\41\16\21\0\1\16"+ + "\24\0\1\274\102\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\2\16\1\275\44\16\21\0\1\16\6\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\2\16\1\276\44\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\10\16\1\277\36\16\21\0\1\16\6\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\6\16\1\300\40\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\3\16\1\301\43\16\21\0\1\16\6\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\1\302\3\16\1\303"+ + "\42\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\11\16\1\304\35\16\21\0\1\16\6\0"+ + "\13\16\1\0\1\16\2\0\1\16\2\0\6\16\1\305"+ + "\40\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\23\16\1\306\23\16\21\0\1\16\6\0"+ + "\13\16\1\0\1\16\2\0\1\16\2\0\15\16\1\307"+ + "\31\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\1\310\12\16\1\204\2\16\1\301\30\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\4\16\1\311\10\16\1\312\31\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\3\16"+ + "\1\313\43\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\2\16\1\301\1\314\43\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\11\16\1\315\35\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\1\316\46\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\1\210"+ + "\46\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\11\16\1\317\35\16\21\0\1\16\6\0"+ + "\13\16\1\0\1\16\2\0\1\16\2\0\2\16\1\301"+ + "\44\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\16\16\1\320\30\16\21\0\1\16\6\0"+ + "\13\16\1\0\1\16\2\0\1\16\2\0\3\16\1\321"+ + "\43\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\3\16\1\322\43\16\21\0\1\16\6\0"+ + "\13\16\1\0\1\16\2\0\1\16\2\0\26\16\1\204"+ + "\20\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\7\16\1\323\37\16\21\0\1\16\6\0"+ + "\13\16\1\0\1\16\2\0\1\16\2\0\2\16\1\324"+ + "\1\325\43\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\23\16\1\326\23\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\16\16"+ + "\1\327\30\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\22\16\1\330\24\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\7\16"+ + "\1\174\37\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\4\16\1\204\42\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\6\16"+ + "\1\331\40\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\11\16\1\332\35\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\5\16"+ + "\1\333\41\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\6\16\1\334\6\16\1\335\31\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\1\16\1\336\45\16\21\0\1\16\6\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\3\16\1\337\43\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\7\16\1\340\5\16\1\341\31\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\15\16"+ + "\1\342\31\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\6\16\1\343\40\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\3\16"+ + "\1\344\43\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\20\16\1\345\26\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\1\346"+ + "\5\16\1\347\40\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\1\350\46\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\16\16"+ + "\1\351\30\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\7\16\1\352\37\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\2\16"+ + "\1\353\1\354\13\16\1\355\27\16\21\0\1\16\6\0"+ + "\13\16\1\0\1\16\2\0\1\16\2\0\35\16\1\356"+ + "\11\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\4\16\1\357\42\16\21\0\1\16\6\0"+ + "\13\16\1\0\1\16\2\0\1\16\2\0\4\16\1\360"+ + "\1\361\41\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\6\16\1\362\40\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\15\16"+ + "\1\363\31\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\36\16\1\364\10\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\24\16"+ + "\1\365\22\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\7\16\1\366\10\16\1\367\26\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\5\16\1\370\41\16\21\0\1\16\6\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\4\16\1\371\42\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\24\16\1\372\22\16\21\0\1\16\6\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\11\16\1\373\35\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\2\16\1\374\44\16\21\0\1\16\107\0\1\72"+ + "\1\15\20\0\1\252\4\0\3\252\111\0\1\124\4\0"+ + "\3\124\125\0\1\375\74\0\1\256\2\0\1\256\1\376"+ + "\114\256\2\0\1\260\116\0\5\261\1\377\113\261\4\0"+ + "\1\260\1\u0100\123\0\1\263\1\264\1\140\1\0\5\264"+ + "\1\0\1\264\5\0\2\264\3\0\1\264\1\0\1\140"+ + "\1\264\6\0\1\264\2\0\1\264\5\0\3\264\46\0"+ + "\2\u0101\1\140\1\0\5\u0101\1\0\1\u0101\5\0\2\u0101"+ + "\3\0\1\u0101\1\0\1\140\1\u0101\6\0\1\u0101\2\0"+ + "\1\u0101\5\0\3\u0101\46\0\1\u0102\1\137\1\140\2\0"+ + "\3\u0102\1\140\1\144\1\145\14\0\1\140\1\145\6\0"+ + "\1\140\2\0\1\140\7\0\1\140\46\0\2\266\3\0"+ + "\3\266\1\140\26\0\1\140\2\0\1\140\7\0\1\140"+ + "\46\0\2\266\3\0\3\266\107\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\1\u0103\46\16\21\0\1\16\6\0"+ + "\13\16\1\0\1\16\2\0\1\16\2\0\3\16\1\u0104"+ + "\43\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\1\u0105\46\16\21\0\1\16\6\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\10\16\1\u0106\36\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\3\16\1\u0107\43\16\21\0\1\16\6\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\2\16\1\u0108\44\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\1\u0109\46\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\7\16\1\u010a\37\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\10\16\1\204\36\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\3\16\1\u010b\43\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\15\16\1\u010c\31\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\5\16\1\u010d\41\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\4\16\1\u010e\42\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\10\16\1\210\36\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\3\16\1\314\43\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\11\16\1\u010f\35\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\6\16\1\u0110\1\16\1\u0111\36\16\21\0\1\16\6\0"+ + "\13\16\1\0\1\16\2\0\1\16\2\0\2\16\1\204"+ + "\44\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\16\16\1\u0112\30\16\21\0\1\16\6\0"+ + "\13\16\1\0\1\16\2\0\1\16\2\0\5\16\1\u0113"+ + "\41\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\2\16\1\u010e\1\u0114\43\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\2\16"+ + "\1\312\44\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\24\16\1\204\22\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\20\16"+ + "\1\204\26\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\10\16\1\u0115\36\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\15\16"+ + "\1\u0116\31\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\7\16\1\204\37\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\3\16"+ + "\1\u0117\43\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\10\16\1\u0118\36\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\6\16"+ + "\1\305\1\u0119\37\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\1\16\1\342\45\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\1\u011a\46\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\1\u010e\46\16\21\0\1\16\6\0"+ + "\13\16\1\0\1\16\2\0\1\16\2\0\1\u011b\46\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\12\16\1\u011c\34\16\21\0\1\16\6\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\3\16\1\u011d\43\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\11\16\1\u011e\13\16\1\u011f\21\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\7\16"+ + "\1\u010b\37\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\6\16\1\204\40\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\1\u0120"+ + "\46\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\17\16\1\204\27\16\21\0\1\16\6\0"+ + "\13\16\1\0\1\16\2\0\1\16\2\0\7\16\1\301"+ + "\37\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\7\16\1\u0121\37\16\21\0\1\16\6\0"+ + "\13\16\1\0\1\16\2\0\1\16\2\0\10\16\1\u0122"+ + "\36\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\23\16\1\u0123\23\16\21\0\1\16\6\0"+ + "\13\16\1\0\1\16\2\0\1\16\2\0\2\16\1\u0124"+ + "\44\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\11\16\1\u0125\35\16\21\0\1\16\6\0"+ + "\13\16\1\0\1\16\2\0\1\16\2\0\4\16\1\u0126"+ + "\42\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\1\16\1\u0127\45\16\21\0\1\16\6\0"+ + "\13\16\1\0\1\16\2\0\1\16\2\0\10\16\1\u0128"+ + "\36\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\3\16\1\u0129\43\16\21\0\1\16\6\0"+ + "\13\16\1\0\1\16\2\0\1\16\2\0\10\16\1\u012a"+ + "\36\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\10\16\1\u012b\36\16\21\0\1\16\6\0"+ + "\13\16\1\0\1\16\2\0\1\16\2\0\10\16\1\u012c"+ + "\36\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\15\16\1\u012d\31\16\21\0\1\16\6\0"+ + "\13\16\1\0\1\16\2\0\1\16\2\0\15\16\1\u012e"+ + "\31\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\16\16\1\u012f\30\16\21\0\1\16\6\0"+ + "\13\16\1\0\1\16\2\0\1\16\2\0\4\16\1\u0105"+ + "\42\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\17\16\1\u0122\27\16\21\0\1\16\6\0"+ + "\13\16\1\0\1\16\2\0\1\16\2\0\16\16\1\u0130"+ + "\30\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\1\u0131\46\16\21\0\1\16\6\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\7\16\1\u0132\37\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\1\16\1\u0133\45\16\21\0\1\16\6\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\12\16\1\u0134\34\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\6\16\1\u0135\1\16\1\u0136\36\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\10\16"+ + "\1\u0137\36\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\3\16\1\u0138\5\16\1\u0139\35\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\16\16\1\u013a\30\16\21\0\1\16\4\261\1\260"+ + "\1\377\113\261\10\0\2\u013b\1\140\1\0\5\u013b\1\0"+ + "\1\u013b\5\0\2\u013b\3\0\1\u013b\1\0\1\140\1\u013b"+ + "\6\0\1\u013b\2\0\1\u013b\5\0\3\u013b\46\0\1\u013c"+ + "\1\137\1\140\2\0\3\u013c\1\140\1\144\1\145\14\0"+ + "\1\140\1\145\6\0\1\140\2\0\1\140\7\0\1\140"+ + "\44\0\13\16\1\0\1\16\2\0\1\16\2\0\13\16"+ + "\1\u013d\33\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\14\16\1\u013e\32\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\3\16"+ + "\1\u0122\43\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\23\16\1\u013f\23\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\4\16"+ + "\1\u0140\42\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\10\16\1\305\36\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\12\16"+ + "\1\204\34\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\10\16\1\u0141\36\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\15\16"+ + "\1\u0142\31\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\5\16\1\u0143\41\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\14\16"+ + "\1\u0144\32\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\3\16\1\204\43\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\2\16"+ + "\1\u0145\44\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\26\16\1\u0146\20\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\1\u0147"+ + "\46\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\4\16\1\u0148\42\16\21\0\1\16\6\0"+ + "\13\16\1\0\1\16\2\0\1\16\2\0\14\16\1\204"+ + "\32\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\15\16\1\u0149\31\16\21\0\1\16\6\0"+ + "\13\16\1\0\1\16\2\0\1\16\2\0\11\16\1\u014a"+ + "\35\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\25\16\1\301\21\16\21\0\1\16\6\0"+ + "\13\16\1\0\1\16\2\0\1\16\2\0\1\u014b\46\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\4\16\1\u014c\42\16\21\0\1\16\6\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\10\16\1\u014d\36\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\16\16\1\u014e\30\16\21\0\1\16\6\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\7\16\1\u014f\37\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\1\u0150\46\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\10\16\1\u0151\36\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\3\16\1\u0152\43\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\1\156\46\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\3\16"+ + "\1\220\43\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\10\16\1\u0153\36\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\1\u0154"+ + "\46\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\2\16\1\u0155\44\16\21\0\1\16\6\0"+ + "\13\16\1\0\1\16\2\0\1\16\2\0\10\16\1\u0156"+ + "\36\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\1\u0157\35\16\1\u0158\10\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\7\16"+ + "\1\344\37\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\24\16\1\u0159\22\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\1\u015a"+ + "\46\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\4\16\1\u015b\17\16\1\u015c\22\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\21\16\1\u015d\25\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\5\16\1\u0105\41\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\11\16\1\u015e\35\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\1\u015f\46\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\4\16"+ + "\1\u0160\42\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\5\16\1\u0161\41\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\3\16"+ + "\1\u0162\43\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\41\16\1\u0163\5\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\10\16"+ + "\1\u0164\36\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\1\u0165\46\16\21\0\1\16\6\0"+ + "\13\16\1\0\1\16\2\0\1\16\2\0\26\16\1\u0139"+ + "\20\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\1\363\46\16\21\0\1\16\6\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\21\16\1\u0122\25\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\15\16\1\u0166\31\16\21\0\1\16\6\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\1\351\46\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\23\16\1\u0167\23\16\21\0\1\16\10\0\2\u0168\1\140"+ + "\1\0\5\u0168\1\0\1\u0168\5\0\2\u0168\3\0\1\u0168"+ + "\1\0\1\140\1\u0168\6\0\1\u0168\2\0\1\u0168\5\0"+ + "\3\u0168\46\0\1\u0169\1\137\1\140\2\0\3\u0169\1\140"+ + "\1\144\1\145\14\0\1\140\1\145\6\0\1\140\2\0"+ + "\1\140\7\0\1\140\44\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\33\16\1\u016a\13\16\21\0\1\16\6\0"+ + "\13\16\1\0\1\16\2\0\1\16\2\0\20\16\1\u016b"+ + "\26\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\3\16\1\u016c\43\16\21\0\1\16\6\0"+ + "\13\16\1\0\1\16\2\0\1\16\2\0\1\u016d\46\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\1\u0148\46\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\5\16\1\204\41\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\3\16\1\u016e\43\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\4\16\1\u016f\42\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\15\16\1\u0170\31\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\17\16\1\u0171\27\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\11\16\1\204\35\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\11\16\1\u0172\35\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\17\16\1\312\27\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\11\16\1\u0173\35\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\22\16\1\u0174\24\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\20\16\1\u0175\26\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\7\16\1\u010e\37\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\7\16\1\u0176\37\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\24\16\1\301\22\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\5\16\1\u0177\41\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\7\16\1\u0148\37\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\1\u0178\46\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\4\16"+ + "\1\u0139\42\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\31\16\1\u0179\6\16\1\u017a\6\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\1\351\37\16\1\u017b\6\16\21\0\1\16\6\0"+ + "\13\16\1\0\1\16\2\0\1\16\2\0\5\16\1\u017c"+ + "\41\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\10\16\1\u017d\36\16\21\0\1\16\6\0"+ + "\13\16\1\0\1\16\2\0\1\16\2\0\1\u017e\46\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\11\16\1\u017f\35\16\21\0\1\16\6\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\4\16\1\u0180\42\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\10\16\1\u0181\36\16\21\0\1\16\6\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\34\16\1\u0182\12\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\24\16\1\u0183\22\16\21\0\1\16\6\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\7\16\1\u0184\37\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\15\16\1\u0185\31\16\21\0\1\16\6\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\14\16\1\u0186\32\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\15\16\1\u0187\31\16\21\0\1\16\6\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\6\16\1\u0188\40\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\4\16\1\u0189\42\16\21\0\1\16\6\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\24\16\1\344\22\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\20\16\1\u018a\26\16\21\0\1\16\6\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\23\16\1\u018b\23\16"+ + "\21\0\1\16\10\0\2\u018c\1\140\1\0\5\u018c\1\0"+ + "\1\u018c\5\0\2\u018c\3\0\1\u018c\1\0\1\140\1\u018c"+ + "\6\0\1\u018c\2\0\1\u018c\5\0\3\u018c\46\0\1\u018d"+ + "\1\137\1\140\2\0\3\u018d\1\140\1\144\1\145\14\0"+ + "\1\140\1\145\6\0\1\140\2\0\1\140\7\0\1\140"+ + "\44\0\13\16\1\0\1\16\2\0\1\16\2\0\11\16"+ + "\1\u018e\35\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\10\16\1\u018f\36\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\15\16"+ + "\1\u0190\31\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\5\16\1\u010e\41\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\22\16"+ + "\1\u0191\24\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\6\16\1\u0192\40\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\10\16"+ + "\1\u0193\36\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\2\16\1\u0194\44\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\16\16"+ + "\1\301\30\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\5\16\1\u0195\41\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\1\u0196"+ + "\46\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\10\16\1\u0197\36\16\21\0\1\16\6\0"+ + "\13\16\1\0\1\16\2\0\1\16\2\0\13\16\1\204"+ + "\33\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\3\16\1\u0198\43\16\21\0\1\16\6\0"+ + "\13\16\1\0\1\16\2\0\1\16\2\0\11\16\1\u0122"+ + "\35\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\1\u0199\46\16\21\0\1\16\6\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\6\16\1\u019a\40\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\6\16\1\u019b\40\16\21\0\1\16\6\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\3\16\1\u015c\43\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\42\16\1\u019c\4\16\21\0\1\16\6\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\7\16\1\u019d\37\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\3\16\1\u019e\43\16\21\0\1\16\6\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\16\16\1\u019f\30\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\4\16\1\u0122\42\16\21\0\1\16\6\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\16\16\1\u01a0\30\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\30\16\1\u01a1\2\16\1\u016a\13\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\15\16"+ + "\1\u01a2\31\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\3\16\1\u01a3\43\16\21\0\1\16"+ + "\6\0\12\16\1\u01a4\1\0\1\16\2\0\1\16\2\0"+ + "\45\16\1\u01a5\1\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\25\16\1\u01a6\21\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\15\16\1\u01a7\31\16\21\0\1\16\6\0\12\16\1\u01a8"+ + "\1\0\1\16\2\0\1\16\2\0\47\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\10\16"+ + "\1\u01a9\36\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\6\16\1\u01aa\40\16\21\0\1\16"+ + "\10\0\2\u01ab\1\140\1\0\5\u01ab\1\0\1\u01ab\5\0"+ + "\2\u01ab\3\0\1\u01ab\1\0\1\140\1\u01ab\6\0\1\u01ab"+ + "\2\0\1\u01ab\5\0\3\u01ab\46\0\1\u01ac\1\137\1\140"+ + "\2\0\3\u01ac\1\140\1\144\1\145\14\0\1\140\1\145"+ + "\6\0\1\140\2\0\1\140\7\0\1\140\44\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\17\16\1\355\27\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\3\16\1\u01ad\43\16\21\0\1\16\6\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\6\16\1\u01ae\40\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\23\16\1\204\23\16\21\0\1\16\6\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\11\16\1\u01af\35\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\11\16\1\u010e\35\16\21\0\1\16\6\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\1\u01b0\46\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\10\16\1\u01b1\36\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\5\16\1\301\41\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\11\16\1\u01b2\35\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\10\16\1\341\36\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\2\16\1\u01b3\44\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\3\16\1\u01b4\43\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\3\16\1\u01b5\43\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\16\16\1\u01b6\30\16\21\0"+ + "\1\16\6\0\6\16\1\u01b7\4\16\1\0\1\16\2\0"+ + "\1\16\2\0\36\16\1\u01b8\4\16\1\u01b9\3\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\15\16\1\u01ba\31\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\23\16\1\u01bb\23\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\3\16\1\u01bc\43\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\16\16\1\u01bd\30\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\27\16\1\u0139\17\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\13\16\1\u01a9\33\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\15\16\1\u01be\31\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\10\16\1\u01bf\36\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\10\16\1\u01c0\36\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\11\16\1\u01c1\35\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\6\16\1\u01c2\40\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\24\2\0\1\16\2\0\47\16\21\0\1\16\6\0"+ + "\13\16\1\0\1\16\2\0\1\16\2\0\4\16\1\u01c3"+ + "\42\16\21\0\1\16\10\0\2\u01c4\1\140\1\0\5\u01c4"+ + "\1\0\1\u01c4\5\0\2\u01c4\3\0\1\u01c4\1\0\1\140"+ + "\1\u01c4\6\0\1\u01c4\2\0\1\u01c4\5\0\3\u01c4\46\0"+ + "\1\u01c5\1\137\1\140\2\0\3\u01c5\1\140\1\144\1\145"+ + "\14\0\1\140\1\145\6\0\1\140\2\0\1\140\7\0"+ + "\1\140\44\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\15\16\1\u01c6\31\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\11\16\1\u01c7\35\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\15\16\1\u01c8\31\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\22\16\1\301\24\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\6\16\1\u01c9\40\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\3\16\1\312\43\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\3\16\1\u01a9\43\16\21\0\1\16\6\0\12\16\1\u01ca"+ + "\1\0\1\16\2\0\1\16\2\0\47\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\36\16"+ + "\1\u01cb\10\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\10\16\1\u01cc\36\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\4\16"+ + "\1\u01cd\1\u01ce\41\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\3\16\1\u01cf\43\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\14\16\1\u01d0\32\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\1\u01d1\46\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\3\16"+ + "\1\u01d2\43\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\34\16\1\u01d3\12\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\15\16"+ + "\1\u01d4\4\16\1\u01d5\24\16\21\0\1\16\6\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\10\16\1\u01d6\36\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\3\16\1\u01d7\43\16\21\0\1\16\6\0\6\16"+ + "\1\u01d8\4\16\1\0\1\16\2\0\1\16\2\0\47\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\3\16\1\u01d9\43\16\21\0\1\16\6\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\4\16\1\u01da\42\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\3\16\1\u01db\43\16\21\0\1\16\10\0\2\u01dc"+ + "\1\140\1\0\5\u01dc\1\0\1\u01dc\5\0\2\u01dc\3\0"+ + "\1\u01dc\1\0\1\140\1\u01dc\6\0\1\u01dc\2\0\1\u01dc"+ + "\5\0\3\u01dc\46\0\1\u01dd\1\137\1\140\2\0\3\u01dd"+ + "\1\140\1\144\1\145\14\0\1\140\1\145\6\0\1\140"+ + "\2\0\1\140\7\0\1\140\44\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\5\16\1\u01a9\41\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\27\16"+ + "\1\u0198\17\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\22\16\1\204\24\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\6\16"+ + "\1\u01de\40\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\16\16\1\u01df\30\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\11\16"+ + "\1\u01e0\35\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\24\16\1\u01e1\22\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\5\16"+ + "\1\u01e2\41\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\1\u01e3\46\16\21\0\1\16\6\0"+ + "\13\16\1\0\1\16\2\0\1\16\2\0\4\16\1\u01e4"+ + "\42\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\3\16\1\u01e5\43\16\21\0\1\16\6\0"+ + "\13\16\1\0\1\16\2\0\1\16\2\0\10\16\1\u01e6"+ + "\36\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\22\16\1\u01e7\24\16\21\0\1\16\6\0"+ + "\13\16\1\0\1\16\2\0\1\16\2\0\7\16\1\u01e8"+ + "\37\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\22\16\1\u015c\24\16\21\0\1\16\6\0"+ + "\13\16\1\0\1\16\2\0\1\16\2\0\7\16\1\u01e6"+ + "\37\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\14\16\1\u01e9\32\16\21\0\1\16\6\0"+ + "\13\16\1\0\1\16\2\0\1\16\2\0\4\16\1\u01ea"+ + "\42\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\10\16\1\u01eb\36\16\21\0\1\16\6\0"+ + "\13\16\1\0\1\16\2\0\1\16\2\0\20\16\1\u01ec"+ + "\26\16\21\0\1\16\6\0\13\16\1\0\1\16\2\0"+ + "\1\16\2\0\10\16\1\u01ed\36\16\21\0\1\16\10\0"+ + "\2\u01ee\1\140\1\0\5\u01ee\1\0\1\u01ee\5\0\2\u01ee"+ + "\3\0\1\u01ee\1\0\1\140\1\u01ee\6\0\1\u01ee\2\0"+ + "\1\u01ee\5\0\3\u01ee\46\0\1\u01ef\1\137\1\140\2\0"+ + "\3\u01ef\1\140\1\144\1\145\14\0\1\140\1\145\6\0"+ + "\1\140\2\0\1\140\7\0\1\140\44\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\16\16\1\u01f0\30\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\23\16\1\u01f1\23\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\5\16\1\344\41\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\16\16\1\u01f2\30\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\10\16\1\u01f3\36\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\3\16\1\u018a\43\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\10\16\1\u01f4\36\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\15\16\1\u01f5\31\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\17\16\1\u01a9\27\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\30\16\1\u01f6\16\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\17\16\1\u015c\27\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\6\16\1\u01e6\40\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\4\16\1\u01f7\42\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\4\16\1\u01a9\42\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\1\u01b3\46\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\17\16"+ + "\1\u01f8\27\16\21\0\1\16\10\0\2\u01f9\1\140\1\0"+ + "\5\u01f9\1\0\1\u01f9\5\0\2\u01f9\3\0\1\u01f9\1\0"+ + "\1\140\1\u01f9\6\0\1\u01f9\2\0\1\u01f9\5\0\3\u01f9"+ + "\46\0\1\u01fa\1\137\1\140\2\0\3\u01fa\1\140\1\144"+ + "\1\145\14\0\1\140\1\145\6\0\1\140\2\0\1\140"+ + "\7\0\1\140\44\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\11\16\1\u01e6\35\16\21\0\1\16\6\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\23\16\1\u01fb\23\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\20\16\1\u01fc\26\16\21\0\1\16\6\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\2\16\1\u01fd\44\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\1\u01fe\46\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\6\16\1\u01ff\40\16\21\0"+ + "\1\16\6\0\13\16\1\0\1\16\2\0\1\16\2\0"+ + "\6\16\1\u0200\40\16\21\0\1\16\6\0\13\16\1\0"+ + "\1\16\2\0\1\16\2\0\1\u0201\46\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\34\16"+ + "\1\u0202\12\16\21\0\1\16\10\0\2\u0203\1\140\1\0"+ + "\5\u0203\1\0\1\u0203\5\0\2\u0203\3\0\1\u0203\1\0"+ + "\1\140\1\u0203\6\0\1\u0203\2\0\1\u0203\5\0\3\u0203"+ + "\46\0\1\u0204\1\137\1\140\2\0\3\u0204\1\140\1\144"+ + "\1\145\14\0\1\140\1\145\6\0\1\140\2\0\1\140"+ + "\7\0\1\140\44\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\6\16\1\u0205\40\16\21\0\1\16\6\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\10\16\1\u0206\36\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\2\16\1\u01a9\44\16\21\0\1\16\6\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\17\16\1\u0207\27\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\11\16\1\u01a9\35\16\21\0\1\16\6\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\16\16\1\u0208\30\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\13\16\1\u0209\33\16\21\0\1\16\6\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\23\16\1\u020a\23\16"+ + "\21\0\1\16\10\0\2\u020b\1\140\1\0\5\u020b\1\0"+ + "\1\u020b\5\0\2\u020b\3\0\1\u020b\1\0\1\140\1\u020b"+ + "\6\0\1\u020b\2\0\1\u020b\5\0\3\u020b\46\0\1\u020c"+ + "\1\137\1\140\2\0\3\u020c\1\140\1\144\1\145\14\0"+ + "\1\140\1\145\6\0\1\140\2\0\1\140\7\0\1\140"+ + "\44\0\13\16\1\0\1\16\2\0\1\16\2\0\4\16"+ + "\1\u01bb\42\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\11\16\1\u01b3\35\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\36\16"+ + "\1\u01b8\10\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\11\16\1\u020d\35\16\21\0\1\16"+ + "\6\0\13\16\1\0\1\16\2\0\1\16\2\0\36\16"+ + "\1\u020e\10\16\21\0\1\16\6\0\13\16\1\0\1\16"+ + "\2\0\1\16\2\0\10\16\1\u020f\36\16\21\0\1\16"+ + "\10\0\2\u0210\1\140\1\0\5\u0210\1\0\1\u0210\5\0"+ + "\2\u0210\3\0\1\u0210\1\0\1\140\1\u0210\6\0\1\u0210"+ + "\2\0\1\u0210\5\0\3\u0210\46\0\1\u0211\1\137\1\140"+ + "\2\0\3\u0211\1\140\1\144\1\145\14\0\1\140\1\145"+ + "\6\0\1\140\2\0\1\140\7\0\1\140\44\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\17\16\1\u01fd\27\16"+ + "\21\0\1\16\6\0\13\16\1\0\1\16\2\0\1\16"+ + "\2\0\15\16\1\u0212\31\16\21\0\1\16\6\0\13\16"+ + "\1\0\1\16\2\0\1\16\2\0\4\16\1\u01ba\42\16"+ + "\21\0\1\16\10\0\2\u0213\1\140\1\0\5\u0213\1\0"+ + "\1\u0213\5\0\2\u0213\3\0\1\u0213\1\0\1\140\1\u0213"+ + "\6\0\1\u0213\2\0\1\u0213\5\0\3\u0213\46\0\1\u0214"+ + "\1\137\1\140\2\0\3\u0214\1\140\1\144\1\145\14\0"+ + "\1\140\1\145\6\0\1\140\2\0\1\140\7\0\1\140"+ + "\44\0\13\16\1\0\1\16\2\0\1\16\2\0\27\16"+ + "\1\u018a\17\16\21\0\1\16\10\0\2\u0215\1\140\1\0"+ + "\5\u0215\1\0\1\u0215\5\0\2\u0215\3\0\1\u0215\1\0"+ + "\1\140\1\u0215\6\0\1\u0215\2\0\1\u0215\5\0\3\u0215"+ + "\46\0\1\u0216\1\137\1\140\2\0\3\u0216\1\140\1\144"+ + "\1\145\14\0\1\140\1\145\6\0\1\140\2\0\1\140"+ + "\7\0\1\140\46\0\2\u0217\1\140\1\0\5\u0217\1\0"+ + "\1\u0217\5\0\2\u0217\3\0\1\u0217\1\0\1\140\1\u0217"+ + "\6\0\1\u0217\2\0\1\u0217\5\0\3\u0217\46\0\1\u0218"+ + "\1\137\1\140\2\0\3\u0218\1\140\1\144\1\145\14\0"+ + "\1\140\1\145\6\0\1\140\2\0\1\140\7\0\1\140"+ + "\50\0\1\140\24\0\1\140\71\0\1\u0219\1\137\1\140"+ + "\2\0\3\u0219\1\140\1\144\1\145\14\0\1\140\1\145"+ + "\6\0\1\140\2\0\1\140\7\0\1\140\46\0\1\u021a"+ + "\1\137\1\140\2\0\3\u021a\1\140\1\144\1\145\14\0"+ + "\1\140\1\145\6\0\1\140\2\0\1\140\7\0\1\140"+ + "\46\0\1\u021b\1\137\1\140\2\0\3\u021b\1\140\1\144"+ + "\1\145\14\0\1\140\1\145\6\0\1\140\2\0\1\140"+ + "\7\0\1\140\46\0\1\u021c\1\137\1\140\2\0\3\u021c"+ + "\1\140\1\144\1\145\14\0\1\140\1\145\6\0\1\140"+ + "\2\0\1\140\7\0\1\140\46\0\2\137\1\140\2\0"+ + "\3\137\1\140\1\144\1\145\14\0\1\140\1\145\6\0"+ + "\1\140\2\0\1\140\7\0\1\140\36\0"; + + private static int [] zzUnpackTrans() { + int [] result = new int[40905]; + 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\1\11\14\1\1\11\34\1\7\11\10\1\2\11"+ + "\3\1\1\11\2\1\1\11\1\1\2\11\1\1\2\11"+ + "\2\1\1\11\4\1\1\11\1\0\1\1\1\0\3\1"+ + "\1\11\1\0\3\1\1\0\3\1\1\0\75\1\2\11"+ + "\2\1\1\11\1\0\1\11\1\0\1\1\1\11\1\0"+ + "\5\1\1\0\4\1\1\11\100\1\2\11\2\0\355\1"+ + "\1\0\12\1\1\0\11\1\1\0\7\1\1\0\4\1"+ + "\1\0\2\1\1\0\1\1\1\0\1\1\1\0\5\1"; + + private static int [] zzUnpackAttribute() { + int [] result = new int[540]; + 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[] = new char[ZZ_BUFFERSIZE]; + + /** 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; + + /** number of newlines encountered up to the start of the matched text */ + private int yyline; + + /** the number of characters up to the start of the matched text */ + private int yychar; + + /** + * the number of characters from the last newline up to the start of the + * matched text + */ + private int yycolumn; + + /** + * 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; + + /** denotes if the user-EOF-code has already been executed */ + private boolean zzEOFDone; + + /* user code: */ + /** + * Default constructor is needed as we will always call the yyreset + */ + public GroovyLexer() { + super(); + } + + @Override + public int yychar() { + return yychar; + } + + private static final byte PARAN = 1; + private static final byte BRACKET = 2; + private static final byte CURLY = 3; + + + /** + * 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 GroovyLexer(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 GroovyLexer(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 < 1828) { + int count = packed.charAt(i++); + char value = packed.charAt(i++); + do map[j++] = value; while (--count > 0); + } + return map; + } + + + /** + * Refills the input buffer. + * + * @return false, iff there was new input. + * + * @exception java.io.IOException if any I/O-Error occurs + */ + private boolean zzRefill() throws java.io.IOException { + + /* first: make room (if you can) */ + if (zzStartRead > 0) { + System.arraycopy(zzBuffer, zzStartRead, + zzBuffer, 0, + zzEndRead-zzStartRead); + + /* translate stored positions */ + zzEndRead-= zzStartRead; + zzCurrentPos-= zzStartRead; + zzMarkedPos-= zzStartRead; + zzStartRead = 0; + } + + /* is the buffer big enough? */ + if (zzCurrentPos >= zzBuffer.length) { + /* if not: blow it up */ + char newBuffer[] = new char[zzCurrentPos*2]; + System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); + zzBuffer = newBuffer; + } + + /* finally: fill the buffer with new input */ + int numRead = zzReader.read(zzBuffer, zzEndRead, + zzBuffer.length-zzEndRead); + + if (numRead > 0) { + zzEndRead+= numRead; + return false; + } + // unlikely but not impossible: read 0 characters, but not at end of stream + if (numRead == 0) { + int c = zzReader.read(); + if (c == -1) { + return true; + } else { + zzBuffer[zzEndRead++] = (char) c; + return false; + } + } + + // numRead < 0 + return true; + } + + + /** + * 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(); + } + + + /** + * 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 ZZ_INITIAL. + * + * @param reader the new input stream + */ + public final void yyreset(java.io.Reader reader) { + zzReader = reader; + zzAtBOL = true; + zzAtEOF = false; + zzEOFDone = false; + zzEndRead = zzStartRead = 0; + zzCurrentPos = zzMarkedPos = 0; + yyline = yychar = yycolumn = 0; + zzLexicalState = YYINITIAL; + } + + + /** + * Returns the current lexical state. + */ + public final int yystate() { + return zzLexicalState; + } + + + /** + * Enters a new lexical state + * + * @param newState the new lexical state + */ + 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 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; + + yychar+= zzMarkedPosL-zzStartRead; + + zzAction = -1; + + zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; + + 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 26: + { yybegin(GSTRING_EXPR); + // length also includes the trailing quote + int s = tokenStart; + int l = tokenLength; + tokenStart = yychar; + tokenLength = 2; + return token(TokenType.STRING, s, l); + } + case 36: break; + case 18: + { yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.REGEX, tokenStart, tokenLength + 1); + } + case 37: break; + case 9: + { return token(TokenType.OPERATOR, -PARAN); + } + case 38: break; + case 25: + { return token(TokenType.KEYWORD); + } + case 39: break; + case 28: + { yybegin(YYINITIAL); + return token(TokenType.COMMENT, tokenStart, tokenLength + 2); + } + case 40: break; + case 5: + { return token(TokenType.NUMBER); + } + case 41: break; + case 3: + { return token(TokenType.OPERATOR); + } + case 42: break; + case 10: + { return token(TokenType.OPERATOR, CURLY); + } + case 43: break; + case 11: + { return token(TokenType.OPERATOR, -CURLY); + } + case 44: break; + case 33: + { return token(TokenType.REGEX); + } + case 45: break; + case 21: + { yybegin(JDOC_TAG); + int start = tokenStart; + tokenStart = yychar; + int len = tokenLength; + tokenLength = 1; + return token(TokenType.COMMENT, start, len); + } + case 46: break; + case 16: + { yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + case 47: break; + case 31: + { yybegin(ML_STRING); + tokenStart = yychar; + tokenLength = 3; + } + case 48: break; + case 23: + { yybegin(ML_STRING); + // length also includes the trailing quote + int s = tokenStart; + int l = tokenLength + 1; + tokenStart = yychar + 1; + tokenLength = 0; + return token(TokenType.STRING2, s, l); + } + case 49: break; + case 14: + { tokenLength += yylength(); + } + case 50: break; + case 15: + { yybegin(YYINITIAL); + } + case 51: break; + case 7: + { yybegin(CHARLITERAL); + tokenStart = yychar; + tokenLength = 1; + } + case 52: break; + case 17: + { yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + case 53: break; + case 34: + { return token(TokenType.TYPE); + } + case 54: break; + case 32: + { yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 3); + } + case 55: break; + case 2: + { /* skip */ + } + case 56: break; + case 13: + { return token(TokenType.OPERATOR, -BRACKET); + } + case 57: break; + case 8: + { return token(TokenType.OPERATOR, PARAN); + } + case 58: break; + case 4: + { return token(TokenType.IDENTIFIER); + } + case 59: break; + case 27: + { tokenLength += 2; + } + case 60: break; + case 35: + { return token(TokenType.TYPE2); + } + case 61: break; + case 30: + { yybegin(JDOC); + tokenStart = yychar; + tokenLength = 3; + } + case 62: break; + case 19: + { tokenLength ++; + } + case 63: break; + case 12: + { return token(TokenType.OPERATOR, BRACKET); + } + case 64: break; + case 24: + { return token(TokenType.COMMENT); + } + case 65: break; + case 6: + { yybegin(STRING); + tokenStart = yychar; + tokenLength = 1; + } + case 66: break; + case 29: + { yybegin(ML_STRING_EXPR); + // length also includes the trailing quote + int s = tokenStart; + int l = tokenLength; + tokenStart = yychar; + tokenLength = 2; + return token(TokenType.STRING, s, l); + } + case 67: break; + case 22: + { yybegin(JDOC); + // length also includes the trailing quote + int start = tokenStart; + tokenStart = yychar; + int len = tokenLength; + tokenLength = 1; + return token(TokenType.COMMENT2, start, len); + } + case 68: break; + case 20: + { yybegin(STRING); + // length also includes the trailing quote + int s = tokenStart; + int l = tokenLength + 1; + tokenStart = yychar + 1; + tokenLength = 0; + return token(TokenType.STRING2, s, l); + } + case 69: break; + case 1: + { + } + case 70: break; + default: + if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { + zzAtEOF = true; + { + return null; + } + } + else { + zzScanError(ZZ_NO_MATCH); + } + } + } + } + + +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/JFlexLexer.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/JFlexLexer.java new file mode 100644 index 000000000..09e445191 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/JFlexLexer.java @@ -0,0 +1,1470 @@ +/* The following code was generated by JFlex 1.4.3 on 21.7.10 18:14 */ + +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jsyntaxpane.lexers; + + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + + +/** + * This class is a scanner generated by + * JFlex 1.4.3 + * on 21.7.10 18:14 from the specification file + * D:/Dokumenty/Programovani/JavaSE/JPSWFDec/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/jflex.flex + */ +public final class JFlexLexer extends DefaultJFlexLexer { + + /** This character denotes the end of file */ + public static final int YYEOF = -1; + + /** initial size of the lookahead buffer */ + private static final int ZZ_BUFFERSIZE = 16384; + + /** lexical states */ + public static final int STRING = 2; + public static final int JDOC_TAG = 8; + public static final int JDOC = 6; + public static final int YYINITIAL = 0; + public static final int CHARLITERAL = 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, 0, 1, 1, 2, 2, 3, 3, 4, 4 + }; + + /** + * Translates characters to character classes + */ + private static final String ZZ_CMAP_PACKED = + "\11\7\1\3\1\2\1\0\1\3\1\1\16\7\4\0\1\3\1\103"+ + "\1\24\1\0\1\6\1\70\1\104\1\25\1\101\1\101\1\5\1\106"+ + "\1\101\1\23\1\21\1\4\1\10\1\16\2\15\2\17\1\74\1\72"+ + "\1\73\1\11\1\63\1\101\1\57\1\102\1\61\1\101\1\107\1\14"+ + "\1\75\1\14\1\76\1\22\1\20\2\66\1\77\2\66\1\12\2\66"+ + "\1\60\3\66\1\100\4\66\1\13\2\66\1\62\1\26\1\65\1\103"+ + "\1\67\1\0\1\27\1\30\1\34\1\46\1\37\1\51\1\53\1\43"+ + "\1\44\1\64\1\41\1\36\1\47\1\40\1\35\1\52\1\66\1\33"+ + "\1\31\1\32\1\45\1\54\1\55\1\50\1\42\1\56\1\71\1\105"+ + "\1\71\1\101\41\7\2\0\4\6\4\0\1\110\2\0\1\7\7\0"+ + "\1\110\4\0\1\110\5\0\27\110\1\0\37\110\1\0\u013f\110\31\0"+ + "\162\110\4\0\14\110\16\0\5\110\11\0\1\110\21\0\130\7\5\0"+ + "\23\7\12\0\1\110\13\0\1\110\1\0\3\110\1\0\1\110\1\0"+ + "\24\110\1\0\54\110\1\0\46\110\1\0\5\110\4\0\202\110\1\0"+ + "\4\7\3\0\105\110\1\0\46\110\2\0\2\110\6\0\20\110\41\0"+ + "\46\110\2\0\1\110\7\0\47\110\11\0\21\7\1\0\27\7\1\0"+ + "\3\7\1\0\1\7\1\0\2\7\1\0\1\7\13\0\33\110\5\0"+ + "\3\110\15\0\4\7\14\0\6\7\13\0\32\110\5\0\13\110\16\7"+ + "\7\0\12\7\4\0\2\110\1\7\143\110\1\0\1\110\10\7\1\0"+ + "\6\7\2\110\2\7\1\0\4\7\2\110\12\7\3\110\2\0\1\110"+ + "\17\0\1\7\1\110\1\7\36\110\33\7\2\0\3\110\60\0\46\110"+ + "\13\7\1\110\u014f\0\3\7\66\110\2\0\1\7\1\110\20\7\2\0"+ + "\1\110\4\7\3\0\12\110\2\7\2\0\12\7\21\0\3\7\1\0"+ + "\10\110\2\0\2\110\2\0\26\110\1\0\7\110\1\0\1\110\3\0"+ + "\4\110\2\0\1\7\1\110\7\7\2\0\2\7\2\0\3\7\11\0"+ + "\1\7\4\0\2\110\1\0\3\110\2\7\2\0\12\7\2\110\2\6"+ + "\15\0\3\7\1\0\6\110\4\0\2\110\2\0\26\110\1\0\7\110"+ + "\1\0\2\110\1\0\2\110\1\0\2\110\2\0\1\7\1\0\5\7"+ + "\4\0\2\7\2\0\3\7\13\0\4\110\1\0\1\110\7\0\14\7"+ + "\3\110\14\0\3\7\1\0\11\110\1\0\3\110\1\0\26\110\1\0"+ + "\7\110\1\0\2\110\1\0\5\110\2\0\1\7\1\110\10\7\1\0"+ + "\3\7\1\0\3\7\2\0\1\110\17\0\2\110\2\7\2\0\12\7"+ + "\1\0\1\6\17\0\3\7\1\0\10\110\2\0\2\110\2\0\26\110"+ + "\1\0\7\110\1\0\2\110\1\0\5\110\2\0\1\7\1\110\6\7"+ + "\3\0\2\7\2\0\3\7\10\0\2\7\4\0\2\110\1\0\3\110"+ + "\4\0\12\7\1\0\1\110\20\0\1\7\1\110\1\0\6\110\3\0"+ + "\3\110\1\0\4\110\3\0\2\110\1\0\1\110\1\0\2\110\3\0"+ + "\2\110\3\0\3\110\3\0\10\110\1\0\3\110\4\0\5\7\3\0"+ + "\3\7\1\0\4\7\11\0\1\7\17\0\11\7\11\0\1\6\7\0"+ + "\3\7\1\0\10\110\1\0\3\110\1\0\27\110\1\0\12\110\1\0"+ + "\5\110\4\0\7\7\1\0\3\7\1\0\4\7\7\0\2\7\11\0"+ + "\2\110\4\0\12\7\22\0\2\7\1\0\10\110\1\0\3\110\1\0"+ + "\27\110\1\0\12\110\1\0\5\110\2\0\1\7\1\110\7\7\1\0"+ + "\3\7\1\0\4\7\7\0\2\7\7\0\1\110\1\0\2\110\4\0"+ + "\12\7\22\0\2\7\1\0\10\110\1\0\3\110\1\0\27\110\1\0"+ + "\20\110\4\0\6\7\2\0\3\7\1\0\4\7\11\0\1\7\10\0"+ + "\2\110\4\0\12\7\22\0\2\7\1\0\22\110\3\0\30\110\1\0"+ + "\11\110\1\0\1\110\2\0\7\110\3\0\1\7\4\0\6\7\1\0"+ + "\1\7\1\0\10\7\22\0\2\7\15\0\60\110\1\7\2\110\7\7"+ + "\4\0\1\6\7\110\10\7\1\0\12\7\47\0\2\110\1\0\1\110"+ + "\2\0\2\110\1\0\1\110\2\0\1\110\6\0\4\110\1\0\7\110"+ + "\1\0\3\110\1\0\1\110\1\0\1\110\2\0\2\110\1\0\4\110"+ + "\1\7\2\110\6\7\1\0\2\7\1\110\2\0\5\110\1\0\1\110"+ + "\1\0\6\7\2\0\12\7\2\0\2\110\42\0\1\110\27\0\2\7"+ + "\6\0\12\7\13\0\1\7\1\0\1\7\1\0\1\7\4\0\2\7"+ + "\10\110\1\0\42\110\6\0\24\7\1\0\2\7\4\110\4\0\10\7"+ + "\1\0\44\7\11\0\1\7\71\0\42\110\1\0\5\110\1\0\2\110"+ + "\1\0\7\7\3\0\4\7\6\0\12\7\6\0\6\110\4\7\106\0"+ + "\46\110\12\0\51\110\7\0\132\110\5\0\104\110\5\0\122\110\6\0"+ + "\7\110\1\0\77\110\1\0\1\110\1\0\4\110\2\0\7\110\1\0"+ + "\1\110\1\0\4\110\2\0\47\110\1\0\1\110\1\0\4\110\2\0"+ + "\37\110\1\0\1\110\1\0\4\110\2\0\7\110\1\0\1\110\1\0"+ + "\4\110\2\0\7\110\1\0\7\110\1\0\27\110\1\0\37\110\1\0"+ + "\1\110\1\0\4\110\2\0\7\110\1\0\47\110\1\0\23\110\16\0"+ + "\11\7\56\0\125\110\14\0\u026c\110\2\0\10\110\12\0\32\110\5\0"+ + "\113\110\3\0\3\6\17\0\15\110\1\0\4\110\3\7\13\0\22\110"+ + "\3\7\13\0\22\110\2\7\14\0\15\110\1\0\3\110\1\0\2\7"+ + "\14\0\64\110\40\7\3\0\1\110\3\0\1\6\1\110\1\7\2\0"+ + "\12\7\41\0\3\7\2\0\12\7\6\0\130\110\10\0\51\110\1\7"+ + "\126\0\35\110\3\0\14\7\4\0\14\7\12\0\12\7\36\110\2\0"+ + "\5\110\u038b\0\154\110\224\0\234\110\4\0\132\110\6\0\26\110\2\0"+ + "\6\110\2\0\46\110\2\0\6\110\2\0\10\110\1\0\1\110\1\0"+ + "\1\110\1\0\1\110\1\0\37\110\2\0\65\110\1\0\7\110\1\0"+ + "\1\110\3\0\3\110\1\0\7\110\3\0\4\110\2\0\6\110\4\0"+ + "\15\110\5\0\3\110\1\0\7\110\17\0\4\7\32\0\5\7\20\0"+ + "\2\6\23\0\1\6\13\0\4\7\6\0\6\7\1\0\1\110\15\0"+ + "\1\110\40\0\22\6\36\0\15\7\4\0\1\7\3\0\6\7\27\0"+ + "\1\110\4\0\1\110\2\0\12\110\1\0\1\110\3\0\5\110\6\0"+ + "\1\110\1\0\1\110\1\0\1\110\1\0\4\110\1\0\3\110\1\0"+ + "\7\110\3\0\3\110\5\0\5\110\26\0\44\6\u0e81\0\2\110\1\6"+ + "\31\0\11\6\6\7\1\0\5\110\2\0\3\6\2\110\4\0\126\110"+ + "\2\0\2\7\2\0\3\110\1\0\132\110\1\6\4\110\5\0\50\110"+ + "\4\0\136\110\21\0\30\110\70\0\20\110\u0200\0\u19b6\110\112\0\u51a6\110"+ + "\132\0\u048d\110\u0773\0\u2ba4\110\u215c\0\u012e\110\2\0\73\110\225\0\7\110"+ + "\14\0\5\110\5\0\1\110\1\7\12\110\1\0\15\110\1\0\5\110"+ + "\1\0\1\110\1\0\2\110\1\0\2\110\1\0\154\110\41\0\u016b\110"+ + "\22\0\100\110\2\0\66\110\50\0\14\110\1\6\3\0\20\7\20\0"+ + "\4\7\17\0\2\6\30\0\3\6\31\0\1\6\6\0\5\110\1\0"+ + "\207\110\2\0\1\7\4\0\1\6\13\0\12\7\7\0\32\110\4\0"+ + "\1\6\1\0\32\110\12\0\1\6\131\110\3\0\6\110\2\0\6\110"+ + "\2\0\6\110\2\0\3\110\3\0\2\6\3\0\2\6\22\0\3\7"+ + "\4\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\3\1\2\2\1\3\2\4\1\3\2\2\1\5"+ + "\1\6\20\3\1\2\1\3\4\2\4\3\3\2\1\7"+ + "\2\10\1\11\1\1\1\7\1\1\2\12\1\13\2\14"+ + "\1\7\1\15\1\0\3\4\1\0\3\4\1\0\32\3"+ + "\2\16\13\3\1\0\1\2\1\3\1\2\4\0\1\17"+ + "\11\0\1\17\2\0\1\17\1\0\6\3\1\20\2\7"+ + "\1\21\1\7\2\15\1\0\1\22\4\4\1\0\30\3"+ + "\1\16\15\3\1\23\1\0\1\3\43\0\6\3\2\0"+ + "\2\4\30\3\1\0\1\3\23\0\1\17\5\0\1\17"+ + "\15\0\1\3\1\24\3\3\2\4\6\3\1\16\7\3"+ + "\1\16\2\3\43\0\3\3\2\4\12\3\31\0\2\3"+ + "\2\4\7\3\20\0\2\4\3\3\10\0\2\4\2\3"+ + "\2\0\1\17\1\0\2\4\2\0\1\4\1\0\1\4"+ + "\1\0\1\4\1\0\1\4\1\0\1\4\1\0\1\4"+ + "\1\0\1\4\1\0\5\4"; + + private static int [] zzUnpackAction() { + int [] result = new int[473]; + 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\111\0\222\0\333\0\u0124\0\u016d\0\u01b6\0\u01ff"+ + "\0\u0248\0\u0291\0\u02da\0\u0323\0\u036c\0\u03b5\0\u03fe\0\u0447"+ + "\0\u016d\0\u016d\0\u0490\0\u04d9\0\u0522\0\u056b\0\u05b4\0\u05fd"+ + "\0\u0646\0\u068f\0\u06d8\0\u0721\0\u076a\0\u07b3\0\u07fc\0\u0845"+ + "\0\u088e\0\u08d7\0\u0920\0\u0969\0\u09b2\0\u09fb\0\u016d\0\u0a44"+ + "\0\u0a8d\0\u0ad6\0\u0b1f\0\u0b68\0\u0bb1\0\u0bfa\0\u0c43\0\u0c8c"+ + "\0\u0cd5\0\u016d\0\u016d\0\u0d1e\0\u0d67\0\u0db0\0\u016d\0\u0df9"+ + "\0\u016d\0\u016d\0\u0df9\0\u0e42\0\u0e8b\0\u0ed4\0\u0f1d\0\u0f66"+ + "\0\u016d\0\u0faf\0\u0ff8\0\u1041\0\u108a\0\u10d3\0\u111c\0\u1165"+ + "\0\u11ae\0\u11f7\0\u1240\0\u1289\0\u12d2\0\u131b\0\u1364\0\u13ad"+ + "\0\u13f6\0\u143f\0\u1488\0\u14d1\0\u151a\0\u1563\0\u15ac\0\u15f5"+ + "\0\u163e\0\u1687\0\u16d0\0\u1719\0\u1762\0\u17ab\0\u17f4\0\u183d"+ + "\0\u02da\0\u1886\0\u18cf\0\u1918\0\u1961\0\u19aa\0\u19f3\0\u1a3c"+ + "\0\u1a85\0\u1ace\0\u1b17\0\u1b60\0\u1ba9\0\u1bf2\0\u1c3b\0\u1c84"+ + "\0\u1ccd\0\u1d16\0\u1d5f\0\u1da8\0\u1df1\0\u1e3a\0\u1e83\0\u1ecc"+ + "\0\u1f15\0\u1f5e\0\u1fa7\0\u1ff0\0\u2039\0\u2082\0\u20cb\0\u2114"+ + "\0\u215d\0\u21a6\0\u016d\0\u21ef\0\u2238\0\u2281\0\u22ca\0\u2313"+ + "\0\u235c\0\u23a5\0\u016d\0\u23ee\0\u2437\0\u016d\0\u016d\0\u2480"+ + "\0\u016d\0\u24c9\0\u2512\0\u255b\0\u25a4\0\u25ed\0\u2636\0\u267f"+ + "\0\u26c8\0\u2711\0\u275a\0\u27a3\0\u27ec\0\u2835\0\u287e\0\u28c7"+ + "\0\u2910\0\u2959\0\u29a2\0\u29eb\0\u2a34\0\u2a7d\0\u2ac6\0\u2b0f"+ + "\0\u2b58\0\u2ba1\0\u2bea\0\u2c33\0\u2c7c\0\u2cc5\0\u2d0e\0\u2d57"+ + "\0\u2da0\0\u2de9\0\u2e32\0\u2e7b\0\u2ec4\0\u2f0d\0\u2f56\0\u2f9f"+ + "\0\u2fe8\0\u3031\0\u307a\0\u30c3\0\u310c\0\u3155\0\u016d\0\u319e"+ + "\0\u31e7\0\u3230\0\u3279\0\u32c2\0\u330b\0\u3354\0\u339d\0\u33e6"+ + "\0\u342f\0\u3478\0\u34c1\0\u350a\0\u3553\0\u359c\0\u35e5\0\u362e"+ + "\0\u3677\0\u36c0\0\u3709\0\u3752\0\u379b\0\u37e4\0\u382d\0\u3876"+ + "\0\u38bf\0\u3908\0\u3951\0\u399a\0\u39e3\0\u3a2c\0\u3a75\0\u3abe"+ + "\0\u3b07\0\u3b50\0\u3b99\0\u3be2\0\u3c2b\0\u3c74\0\u3cbd\0\u3d06"+ + "\0\u3d4f\0\u3d98\0\u3de1\0\u2512\0\u3e2a\0\u3e73\0\u3ebc\0\u3f05"+ + "\0\u3f4e\0\u3f97\0\u3fe0\0\u4029\0\u4072\0\u40bb\0\u4104\0\u414d"+ + "\0\u4196\0\u41df\0\u4228\0\u4271\0\u42ba\0\u4303\0\u434c\0\u4395"+ + "\0\u43de\0\u4427\0\u4470\0\u44b9\0\u4502\0\u454b\0\u4594\0\u45dd"+ + "\0\u4626\0\u466f\0\u46b8\0\u4701\0\u474a\0\u4793\0\u47dc\0\u4825"+ + "\0\u486e\0\u48b7\0\u4900\0\u4949\0\u4992\0\u49db\0\u4a24\0\u4a6d"+ + "\0\u4ab6\0\u4aff\0\u4b48\0\u4b91\0\u4bda\0\u4c23\0\u4c6c\0\u4cb5"+ + "\0\u4cfe\0\u4d47\0\u4d90\0\u4dd9\0\u4e22\0\u4e6b\0\u4eb4\0\u4efd"+ + "\0\u4f46\0\u4f8f\0\u4fd8\0\u5021\0\u506a\0\u50b3\0\u50fc\0\u5145"+ + "\0\u02da\0\u518e\0\u51d7\0\u5220\0\u5269\0\u52b2\0\u52fb\0\u5344"+ + "\0\u538d\0\u53d6\0\u541f\0\u5468\0\u2a7d\0\u54b1\0\u54fa\0\u5543"+ + "\0\u558c\0\u55d5\0\u561e\0\u5667\0\u56b0\0\u56f9\0\u5742\0\u578b"+ + "\0\u57d4\0\u581d\0\u5866\0\u58af\0\u58f8\0\u5941\0\u598a\0\u59d3"+ + "\0\u5a1c\0\u5a65\0\u5aae\0\u5af7\0\u5b40\0\u5b89\0\u5bd2\0\u5c1b"+ + "\0\u5c64\0\u5cad\0\u5cf6\0\u5d3f\0\u5d88\0\u5dd1\0\u5e1a\0\u5e63"+ + "\0\u5eac\0\u5ef5\0\u5f3e\0\u5f87\0\u5fd0\0\u6019\0\u6062\0\u60ab"+ + "\0\u60f4\0\u613d\0\u6186\0\u61cf\0\u6218\0\u6261\0\u62aa\0\u62f3"+ + "\0\u633c\0\u6385\0\u63ce\0\u6417\0\u6460\0\u64a9\0\u64f2\0\u653b"+ + "\0\u6584\0\u65cd\0\u6616\0\u665f\0\u66a8\0\u66f1\0\u673a\0\u6783"+ + "\0\u67cc\0\u6815\0\u685e\0\u68a7\0\u68f0\0\u6939\0\u6982\0\u69cb"+ + "\0\u6a14\0\u6a5d\0\u6aa6\0\u6aef\0\u6b38\0\u6b81\0\u6bca\0\u6c13"+ + "\0\u6c5c\0\u6ca5\0\u6cee\0\u6d37\0\u6d80\0\u6dc9\0\u6e12\0\u6e5b"+ + "\0\u6ea4\0\u6eed\0\u6f36\0\u6f7f\0\u6fc8\0\u7011\0\u705a\0\u70a3"+ + "\0\u70ec\0\u7135\0\u717e\0\u71c7\0\u7210\0\u7259\0\u72a2\0\u72eb"+ + "\0\u7334\0\u737d\0\u73c6\0\u740f\0\u7458\0\u74a1\0\u74ea\0\u7533"+ + "\0\u757c\0\u75c5\0\u760e\0\u7657\0\u76a0\0\u76e9\0\u7732\0\u777b"+ + "\0\u77c4\0\u780d\0\u7856\0\u789f\0\u78e8\0\u7931\0\u797a\0\u79c3"+ + "\0\u72eb\0\u7a0c\0\u7a55\0\u7a9e\0\u7ae7\0\u7b30\0\u7b79\0\u7bc2"+ + "\0\u7c0b\0\u7c54\0\u7c9d\0\u7ce6\0\u7d2f\0\u7d78\0\u7dc1\0\u7e0a"+ + "\0\u7e53\0\u7e9c\0\u7ee5\0\u7f2e\0\u7f77\0\u7fc0\0\u8009\0\u8052"+ + "\0\u809b"; + + private static int [] zzUnpackRowMap() { + int [] result = new int[473]; + 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\6\1\10\1\11\1\12\1\13\1\6"+ + "\1\14\1\15\3\13\3\15\1\16\1\17\1\13\1\20"+ + "\1\21\1\22\1\6\1\23\1\24\1\25\1\26\1\27"+ + "\1\30\1\13\1\31\1\32\1\33\3\13\1\34\1\13"+ + "\1\35\2\13\1\36\1\37\1\40\1\41\1\42\1\13"+ + "\1\43\1\44\1\45\1\46\1\47\1\13\1\47\2\13"+ + "\1\50\1\47\3\15\1\51\1\52\1\53\1\54\1\47"+ + "\2\12\1\55\1\56\1\57\1\6\1\13\1\60\1\61"+ + "\1\62\21\60\1\63\1\60\1\64\62\60\1\65\1\61"+ + "\1\62\22\65\1\63\1\66\62\65\5\67\1\70\101\67"+ + "\1\71\1\67\5\72\1\73\4\72\3\74\3\72\1\74"+ + "\1\72\1\74\4\72\30\74\1\72\1\74\3\72\1\74"+ + "\1\72\1\74\6\72\4\74\7\72\1\74\113\0\1\6"+ + "\111\0\1\10\111\0\1\75\1\76\74\0\1\47\110\0"+ + "\1\47\14\0\13\13\1\0\1\13\4\0\30\13\1\0"+ + "\1\13\3\0\1\13\1\0\2\13\2\0\7\13\7\0"+ + "\1\13\10\0\1\77\1\100\1\101\1\102\1\0\1\103"+ + "\1\104\1\103\1\101\1\105\1\106\13\0\1\101\1\106"+ + "\6\0\1\101\1\0\1\102\1\101\20\0\1\103\1\100"+ + "\1\103\1\0\1\101\22\0\2\15\1\101\2\0\3\15"+ + "\1\101\1\105\1\106\13\0\1\101\1\106\6\0\1\101"+ + "\2\0\1\101\20\0\3\15\1\0\1\101\20\0\13\13"+ + "\1\0\1\13\4\0\7\13\1\107\20\13\1\0\1\13"+ + "\3\0\1\13\1\0\2\13\2\0\7\13\7\0\1\13"+ + "\10\0\2\105\3\0\3\105\52\0\3\105\37\0\1\47"+ + "\56\0\1\47\14\0\13\13\1\0\1\13\4\0\1\13"+ + "\1\110\26\13\1\0\1\13\3\0\1\13\1\0\2\13"+ + "\2\0\7\13\7\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\4\13\1\111\1\13\1\112\4\13\1\113\14\13"+ + "\1\0\1\13\3\0\1\13\1\0\2\13\2\0\7\13"+ + "\7\0\1\13\6\0\13\13\1\0\1\13\4\0\3\13"+ + "\1\114\7\13\1\115\1\116\1\13\1\117\7\13\1\120"+ + "\1\13\1\0\1\13\3\0\1\13\1\0\2\13\2\0"+ + "\7\13\7\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\4\13\1\121\7\13\1\122\13\13\1\0\1\13\3\0"+ + "\1\13\1\0\2\13\2\0\7\13\7\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\10\13\1\123\17\13\1\0"+ + "\1\13\3\0\1\13\1\0\2\13\2\0\7\13\7\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\1\124\5\13"+ + "\1\125\1\126\4\13\1\127\13\13\1\0\1\13\3\0"+ + "\1\13\1\0\2\13\2\0\7\13\7\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\6\13\1\130\21\13\1\0"+ + "\1\13\3\0\1\13\1\0\2\13\2\0\7\13\7\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\7\13\1\131"+ + "\1\13\1\132\7\13\1\133\6\13\1\0\1\13\3\0"+ + "\1\13\1\0\2\13\2\0\7\13\7\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\1\134\7\13\1\135\5\13"+ + "\1\136\11\13\1\0\1\13\3\0\1\13\1\0\2\13"+ + "\2\0\7\13\7\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\11\13\1\137\6\13\1\140\1\13\1\141\5\13"+ + "\1\0\1\13\3\0\1\13\1\0\2\13\2\0\7\13"+ + "\7\0\1\13\6\0\13\13\1\0\1\13\4\0\6\13"+ + "\1\142\1\13\1\143\17\13\1\0\1\13\3\0\1\13"+ + "\1\0\2\13\2\0\7\13\7\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\1\144\5\13\1\145\1\146\5\13"+ + "\1\147\12\13\1\0\1\13\3\0\1\13\1\0\2\13"+ + "\2\0\7\13\7\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\1\150\3\13\1\151\11\13\1\152\11\13\1\0"+ + "\1\13\3\0\1\13\1\0\2\13\2\0\7\13\7\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\6\13\1\153"+ + "\21\13\1\0\1\13\3\0\1\13\1\0\2\13\2\0"+ + "\7\13\7\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\6\13\1\154\21\13\1\0\1\13\3\0\1\13\1\0"+ + "\2\13\2\0\7\13\7\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\14\13\1\155\13\13\1\0\1\13\3\0"+ + "\1\13\1\0\2\13\2\0\7\13\7\0\1\13\12\0"+ + "\3\156\3\0\1\156\1\0\1\156\4\0\30\156\1\157"+ + "\1\156\3\0\1\156\1\0\1\156\6\0\4\156\1\0"+ + "\1\47\14\0\13\13\1\0\1\13\4\0\1\13\1\160"+ + "\26\13\1\0\1\13\3\0\1\13\1\0\2\13\2\0"+ + "\7\13\7\0\1\13\61\0\1\161\20\0\1\47\71\0"+ + "\1\162\43\0\1\163\10\0\1\164\1\165\1\166\1\167"+ + "\1\0\1\170\1\0\1\171\1\172\1\173\1\0\1\174"+ + "\1\0\1\175\1\176\1\177\1\0\1\200\1\201\1\202"+ + "\15\0\2\203\2\204\6\0\1\47\14\0\13\13\1\0"+ + "\1\13\4\0\6\13\1\205\4\13\1\206\14\13\1\0"+ + "\1\13\3\0\1\13\1\0\2\13\2\0\7\13\7\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\6\13\1\207"+ + "\21\13\1\0\1\13\3\0\1\13\1\0\2\13\2\0"+ + "\7\13\7\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\11\13\1\210\16\13\1\0\1\13\3\0\1\13\1\0"+ + "\2\13\2\0\7\13\7\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\3\13\1\211\10\13\1\212\13\13\1\0"+ + "\1\13\3\0\1\13\1\0\2\13\2\0\7\13\7\0"+ + "\1\13\102\0\1\47\1\0\1\47\106\0\1\47\2\0"+ + "\1\47\105\0\1\47\3\0\1\47\2\0\1\60\2\0"+ + "\21\60\1\0\1\60\1\0\62\60\2\0\1\62\106\0"+ + "\2\213\1\0\5\213\1\214\4\213\2\214\1\215\52\213"+ + "\1\215\1\213\1\215\14\213\1\65\2\0\22\65\2\0"+ + "\62\65\2\213\1\0\106\213\4\0\1\216\116\0\3\74"+ + "\3\0\1\74\1\0\1\74\4\0\30\74\1\0\1\74"+ + "\2\0\1\217\1\74\1\0\1\74\6\0\4\74\7\0"+ + "\1\74\1\75\1\220\1\221\106\75\5\222\1\223\103\222"+ + "\10\0\1\77\1\100\1\101\2\0\1\103\1\104\1\103"+ + "\1\101\1\105\1\106\13\0\1\101\1\106\6\0\1\101"+ + "\2\0\1\101\20\0\1\103\1\100\1\103\1\0\1\101"+ + "\22\0\2\100\3\0\3\100\1\101\1\105\1\106\14\0"+ + "\1\106\6\0\1\101\2\0\1\101\20\0\3\100\1\0"+ + "\1\101\22\0\1\224\1\225\2\0\5\225\1\0\1\225"+ + "\4\0\2\225\3\0\1\225\2\0\1\225\6\0\1\225"+ + "\2\0\1\225\20\0\5\225\22\0\1\226\1\100\1\101"+ + "\2\0\3\226\1\101\1\105\1\106\13\0\1\101\1\106"+ + "\6\0\1\101\2\0\1\101\20\0\1\226\1\100\1\226"+ + "\1\0\1\101\22\0\1\103\1\100\1\101\2\0\3\103"+ + "\1\101\1\105\1\106\13\0\1\101\1\106\6\0\1\101"+ + "\2\0\1\101\20\0\1\103\1\100\1\103\1\0\1\101"+ + "\22\0\2\105\3\0\3\105\1\101\1\0\1\106\14\0"+ + "\1\106\6\0\1\101\2\0\1\101\20\0\3\105\1\0"+ + "\1\101\22\0\2\227\3\0\3\227\3\0\1\230\46\0"+ + "\3\227\11\0\1\230\10\0\13\13\1\0\1\13\4\0"+ + "\6\13\1\231\21\13\1\0\1\13\3\0\1\13\1\0"+ + "\2\13\2\0\7\13\7\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\2\13\1\232\25\13\1\0\1\13\3\0"+ + "\1\13\1\0\2\13\2\0\7\13\7\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\10\13\1\233\17\13\1\0"+ + "\1\13\3\0\1\13\1\0\2\13\2\0\7\13\7\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\6\13\1\234"+ + "\21\13\1\0\1\13\3\0\1\13\1\0\2\13\2\0"+ + "\7\13\7\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\3\13\1\235\24\13\1\0\1\13\3\0\1\13\1\0"+ + "\2\13\2\0\7\13\7\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\1\236\3\13\1\237\23\13\1\0\1\13"+ + "\3\0\1\13\1\0\2\13\2\0\7\13\7\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\11\13\1\240\16\13"+ + "\1\0\1\13\3\0\1\13\1\0\2\13\2\0\7\13"+ + "\7\0\1\13\6\0\13\13\1\0\1\13\4\0\6\13"+ + "\1\241\21\13\1\0\1\13\3\0\1\13\1\0\2\13"+ + "\2\0\7\13\7\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\23\13\1\242\4\13\1\0\1\13\3\0\1\13"+ + "\1\0\2\13\2\0\7\13\7\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\15\13\1\243\12\13\1\0\1\13"+ + "\3\0\1\13\1\0\2\13\2\0\7\13\7\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\1\244\12\13\1\141"+ + "\2\13\1\235\11\13\1\0\1\13\3\0\1\13\1\0"+ + "\2\13\2\0\7\13\7\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\4\13\1\245\10\13\1\246\12\13\1\0"+ + "\1\13\3\0\1\13\1\0\2\13\2\0\7\13\7\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\3\13\1\247"+ + "\24\13\1\0\1\13\3\0\1\13\1\0\2\13\2\0"+ + "\7\13\7\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\2\13\1\235\1\250\24\13\1\0\1\13\3\0\1\13"+ + "\1\0\2\13\2\0\7\13\7\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\11\13\1\251\16\13\1\0\1\13"+ + "\3\0\1\13\1\0\2\13\2\0\7\13\7\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\1\252\27\13\1\0"+ + "\1\13\3\0\1\13\1\0\2\13\2\0\7\13\7\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\1\145\27\13"+ + "\1\0\1\13\3\0\1\13\1\0\2\13\2\0\7\13"+ + "\7\0\1\13\6\0\13\13\1\0\1\13\4\0\11\13"+ + "\1\253\16\13\1\0\1\13\3\0\1\13\1\0\2\13"+ + "\2\0\7\13\7\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\2\13\1\235\25\13\1\0\1\13\3\0\1\13"+ + "\1\0\2\13\2\0\7\13\7\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\16\13\1\254\11\13\1\0\1\13"+ + "\3\0\1\13\1\0\2\13\2\0\7\13\7\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\3\13\1\255\24\13"+ + "\1\0\1\13\3\0\1\13\1\0\2\13\2\0\7\13"+ + "\7\0\1\13\6\0\13\13\1\0\1\13\4\0\3\13"+ + "\1\256\24\13\1\0\1\13\3\0\1\13\1\0\2\13"+ + "\2\0\7\13\7\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\26\13\1\141\1\13\1\0\1\13\3\0\1\13"+ + "\1\0\2\13\2\0\7\13\7\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\7\13\1\257\20\13\1\0\1\13"+ + "\3\0\1\13\1\0\2\13\2\0\7\13\7\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\2\13\1\260\1\261"+ + "\24\13\1\0\1\13\3\0\1\13\1\0\2\13\2\0"+ + "\7\13\7\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\23\13\1\262\4\13\1\0\1\13\3\0\1\13\1\0"+ + "\2\13\2\0\7\13\7\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\16\13\1\263\11\13\1\0\1\13\3\0"+ + "\1\13\1\0\2\13\2\0\7\13\7\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\22\13\1\264\5\13\1\0"+ + "\1\13\3\0\1\13\1\0\2\13\2\0\7\13\7\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\7\13\1\131"+ + "\20\13\1\0\1\13\3\0\1\13\1\0\2\13\2\0"+ + "\7\13\7\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\4\13\1\141\23\13\1\0\1\13\3\0\1\13\1\0"+ + "\2\13\2\0\7\13\7\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\6\13\1\265\21\13\1\0\1\13\3\0"+ + "\1\13\1\0\2\13\2\0\7\13\7\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\11\13\1\266\16\13\1\0"+ + "\1\13\3\0\1\13\1\0\2\13\2\0\7\13\7\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\5\13\1\267"+ + "\22\13\1\0\1\13\3\0\1\13\1\0\2\13\2\0"+ + "\7\13\7\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\6\13\1\270\6\13\1\271\12\13\1\0\1\13\3\0"+ + "\1\13\1\0\2\13\2\0\7\13\7\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\1\13\1\272\26\13\1\0"+ + "\1\13\3\0\1\13\1\0\2\13\2\0\7\13\7\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\3\13\1\273"+ + "\24\13\1\0\1\13\3\0\1\13\1\0\2\13\2\0"+ + "\7\13\7\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\7\13\1\274\5\13\1\275\12\13\1\0\1\13\3\0"+ + "\1\13\1\0\2\13\2\0\7\13\7\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\15\13\1\276\12\13\1\0"+ + "\1\13\3\0\1\13\1\0\2\13\2\0\7\13\7\0"+ + "\1\13\10\0\11\156\1\0\1\156\4\0\30\156\1\0"+ + "\1\156\1\277\2\0\1\156\1\0\2\156\2\0\7\156"+ + "\32\0\1\300\57\0\1\47\14\0\13\13\1\0\1\13"+ + "\4\0\30\13\1\0\1\13\3\0\1\301\1\0\2\13"+ + "\2\0\7\13\7\0\1\13\61\0\1\12\20\0\1\47"+ + "\44\0\1\302\6\0\1\303\1\304\15\0\1\305\120\0"+ + "\1\204\44\0\1\306\21\0\1\307\100\0\1\310\2\0"+ + "\1\311\75\0\1\312\1\0\1\313\20\0\1\314\62\0"+ + "\1\315\12\0\1\316\75\0\1\317\2\0\1\320\2\0"+ + "\1\321\1\322\4\0\1\323\1\0\1\324\107\0\1\325"+ + "\101\0\1\326\12\0\1\327\75\0\1\330\115\0\1\331"+ + "\106\0\1\332\6\0\1\333\3\0\1\334\75\0\1\335"+ + "\107\0\1\336\102\0\1\337\123\0\1\340\1\341\72\0"+ + "\1\342\15\0\1\343\73\0\1\344\66\0\13\13\1\0"+ + "\1\13\4\0\6\13\1\345\21\13\1\0\1\13\3\0"+ + "\1\13\1\0\2\13\2\0\7\13\7\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\3\13\1\346\24\13\1\0"+ + "\1\13\3\0\1\13\1\0\2\13\2\0\7\13\7\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\16\13\1\347"+ + "\11\13\1\0\1\13\3\0\1\13\1\0\2\13\2\0"+ + "\7\13\7\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\3\13\1\350\24\13\1\0\1\13\3\0\1\13\1\0"+ + "\2\13\2\0\7\13\7\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\4\13\1\351\23\13\1\0\1\13\3\0"+ + "\1\13\1\0\2\13\2\0\7\13\7\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\6\13\1\352\21\13\1\0"+ + "\1\13\3\0\1\13\1\0\2\13\2\0\7\13\7\0"+ + "\1\13\10\0\1\215\4\0\3\215\52\0\1\215\1\0"+ + "\1\215\24\0\1\217\4\0\3\217\52\0\1\217\1\0"+ + "\1\217\16\0\1\221\106\0\5\222\1\353\103\222\4\0"+ + "\1\221\1\354\113\0\1\224\1\225\1\101\1\0\5\225"+ + "\1\0\1\225\4\0\2\225\3\0\1\225\1\0\1\101"+ + "\1\225\6\0\1\225\2\0\1\225\20\0\5\225\22\0"+ + "\2\355\1\101\1\0\5\355\1\0\1\355\4\0\2\355"+ + "\3\0\1\355\1\0\1\101\1\355\6\0\1\355\2\0"+ + "\1\355\20\0\5\355\22\0\1\356\1\100\1\101\2\0"+ + "\3\356\1\101\1\105\1\106\13\0\1\101\1\106\6\0"+ + "\1\101\2\0\1\101\20\0\1\356\1\100\1\356\1\0"+ + "\1\101\22\0\2\227\3\0\3\227\1\101\25\0\1\101"+ + "\2\0\1\101\20\0\3\227\1\0\1\101\22\0\2\227"+ + "\3\0\3\227\52\0\3\227\22\0\13\13\1\0\1\13"+ + "\4\0\1\357\27\13\1\0\1\13\3\0\1\13\1\0"+ + "\2\13\2\0\7\13\7\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\3\13\1\360\24\13\1\0\1\13\3\0"+ + "\1\13\1\0\2\13\2\0\7\13\7\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\1\361\27\13\1\0\1\13"+ + "\3\0\1\13\1\0\2\13\2\0\7\13\7\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\7\13\1\362\20\13"+ + "\1\0\1\13\3\0\1\13\1\0\2\13\2\0\7\13"+ + "\7\0\1\13\6\0\13\13\1\0\1\13\4\0\10\13"+ + "\1\141\17\13\1\0\1\13\3\0\1\13\1\0\2\13"+ + "\2\0\7\13\7\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\3\13\1\363\24\13\1\0\1\13\3\0\1\13"+ + "\1\0\2\13\2\0\7\13\7\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\15\13\1\364\12\13\1\0\1\13"+ + "\3\0\1\13\1\0\2\13\2\0\7\13\7\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\5\13\1\365\22\13"+ + "\1\0\1\13\3\0\1\13\1\0\2\13\2\0\7\13"+ + "\7\0\1\13\6\0\13\13\1\0\1\13\4\0\4\13"+ + "\1\366\23\13\1\0\1\13\3\0\1\13\1\0\2\13"+ + "\2\0\7\13\7\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\10\13\1\145\17\13\1\0\1\13\3\0\1\13"+ + "\1\0\2\13\2\0\7\13\7\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\3\13\1\250\24\13\1\0\1\13"+ + "\3\0\1\13\1\0\2\13\2\0\7\13\7\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\11\13\1\367\16\13"+ + "\1\0\1\13\3\0\1\13\1\0\2\13\2\0\7\13"+ + "\7\0\1\13\6\0\13\13\1\0\1\13\4\0\6\13"+ + "\1\370\21\13\1\0\1\13\3\0\1\13\1\0\2\13"+ + "\2\0\7\13\7\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\2\13\1\141\25\13\1\0\1\13\3\0\1\13"+ + "\1\0\2\13\2\0\7\13\7\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\16\13\1\371\11\13\1\0\1\13"+ + "\3\0\1\13\1\0\2\13\2\0\7\13\7\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\5\13\1\372\22\13"+ + "\1\0\1\13\3\0\1\13\1\0\2\13\2\0\7\13"+ + "\7\0\1\13\6\0\13\13\1\0\1\13\4\0\2\13"+ + "\1\366\1\373\24\13\1\0\1\13\3\0\1\13\1\0"+ + "\2\13\2\0\7\13\7\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\2\13\1\246\25\13\1\0\1\13\3\0"+ + "\1\13\1\0\2\13\2\0\7\13\7\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\24\13\1\141\3\13\1\0"+ + "\1\13\3\0\1\13\1\0\2\13\2\0\7\13\7\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\20\13\1\141"+ + "\7\13\1\0\1\13\3\0\1\13\1\0\2\13\2\0"+ + "\7\13\7\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\10\13\1\374\17\13\1\0\1\13\3\0\1\13\1\0"+ + "\2\13\2\0\7\13\7\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\15\13\1\375\12\13\1\0\1\13\3\0"+ + "\1\13\1\0\2\13\2\0\7\13\7\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\7\13\1\141\20\13\1\0"+ + "\1\13\3\0\1\13\1\0\2\13\2\0\7\13\7\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\3\13\1\376"+ + "\24\13\1\0\1\13\3\0\1\13\1\0\2\13\2\0"+ + "\7\13\7\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\10\13\1\377\17\13\1\0\1\13\3\0\1\13\1\0"+ + "\2\13\2\0\7\13\7\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\6\13\1\241\1\u0100\20\13\1\0\1\13"+ + "\3\0\1\13\1\0\2\13\2\0\7\13\7\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\1\13\1\276\26\13"+ + "\1\0\1\13\3\0\1\13\1\0\2\13\2\0\7\13"+ + "\7\0\1\13\6\0\13\13\1\0\1\13\4\0\1\u0101"+ + "\27\13\1\0\1\13\3\0\1\13\1\0\2\13\2\0"+ + "\7\13\7\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\1\366\27\13\1\0\1\13\3\0\1\13\1\0\2\13"+ + "\2\0\7\13\7\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\1\u0102\27\13\1\0\1\13\3\0\1\13\1\0"+ + "\2\13\2\0\7\13\7\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\12\13\1\u0103\15\13\1\0\1\13\3\0"+ + "\1\13\1\0\2\13\2\0\7\13\7\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\3\13\1\u0104\24\13\1\0"+ + "\1\13\3\0\1\13\1\0\2\13\2\0\7\13\7\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\25\13\1\u0105"+ + "\2\13\1\0\1\13\3\0\1\13\1\0\2\13\2\0"+ + "\7\13\7\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\7\13\1\363\20\13\1\0\1\13\3\0\1\13\1\0"+ + "\2\13\2\0\7\13\7\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\6\13\1\141\21\13\1\0\1\13\3\0"+ + "\1\13\1\0\2\13\2\0\7\13\7\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\1\u0106\27\13\1\0\1\13"+ + "\3\0\1\13\1\0\2\13\2\0\7\13\7\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\17\13\1\141\10\13"+ + "\1\0\1\13\3\0\1\13\1\0\2\13\2\0\7\13"+ + "\7\0\1\13\6\0\13\13\1\0\1\13\4\0\7\13"+ + "\1\235\20\13\1\0\1\13\3\0\1\13\1\0\2\13"+ + "\2\0\7\13\7\0\1\13\60\0\1\u0107\36\0\13\13"+ + "\1\0\1\13\4\0\10\13\1\u0108\17\13\1\0\1\13"+ + "\3\0\1\13\1\0\2\13\2\0\7\13\7\0\1\13"+ + "\35\0\1\u0109\1\0\1\u010a\123\0\1\u010b\102\0\1\u010c"+ + "\102\0\1\u010d\103\0\1\u010e\123\0\1\u010f\73\0\1\u0110"+ + "\132\0\1\u0111\66\0\1\u0112\110\0\1\u0113\125\0\1\u0114"+ + "\74\0\1\u0115\132\0\1\u0116\67\0\1\u0117\114\0\1\u0118"+ + "\111\0\1\u0119\101\0\1\u011a\110\0\1\u011b\133\0\1\u011c"+ + "\76\0\1\u0116\121\0\1\u011d\71\0\1\u011e\110\0\1\u011f"+ + "\114\0\1\u0120\1\u0121\103\0\1\u0122\1\0\1\u0123\7\0"+ + "\1\u0124\116\0\1\u0125\76\0\1\u0126\114\0\1\u0127\74\0"+ + "\1\u0128\112\0\1\u0129\116\0\1\u012a\106\0\1\u012b\1\0"+ + "\1\u012c\104\0\1\u012d\104\0\1\u012e\124\0\1\u012f\52\0"+ + "\13\13\1\0\1\13\4\0\7\13\1\u0130\20\13\1\0"+ + "\1\13\3\0\1\13\1\0\2\13\2\0\7\13\7\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\10\13\1\u0131"+ + "\17\13\1\0\1\13\3\0\1\13\1\0\2\13\2\0"+ + "\7\13\7\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\1\13\1\u0132\26\13\1\0\1\13\3\0\1\13\1\0"+ + "\2\13\2\0\7\13\7\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\10\13\1\u0133\17\13\1\0\1\13\3\0"+ + "\1\13\1\0\2\13\2\0\7\13\7\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\15\13\1\u0134\12\13\1\0"+ + "\1\13\3\0\1\13\1\0\2\13\2\0\7\13\7\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\4\13\1\357"+ + "\23\13\1\0\1\13\3\0\1\13\1\0\2\13\2\0"+ + "\7\13\7\0\1\13\4\222\1\221\1\353\103\222\10\0"+ + "\2\u0135\1\101\1\0\5\u0135\1\0\1\u0135\4\0\2\u0135"+ + "\3\0\1\u0135\1\0\1\101\1\u0135\6\0\1\u0135\2\0"+ + "\1\u0135\20\0\5\u0135\22\0\1\u0136\1\100\1\101\2\0"+ + "\3\u0136\1\101\1\105\1\106\13\0\1\101\1\106\6\0"+ + "\1\101\2\0\1\101\20\0\1\u0136\1\100\1\u0136\1\0"+ + "\1\101\20\0\13\13\1\0\1\13\4\0\3\13\1\u0131"+ + "\24\13\1\0\1\13\3\0\1\13\1\0\2\13\2\0"+ + "\7\13\7\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\4\13\1\u0137\23\13\1\0\1\13\3\0\1\13\1\0"+ + "\2\13\2\0\7\13\7\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\12\13\1\141\15\13\1\0\1\13\3\0"+ + "\1\13\1\0\2\13\2\0\7\13\7\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\10\13\1\u0138\17\13\1\0"+ + "\1\13\3\0\1\13\1\0\2\13\2\0\7\13\7\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\15\13\1\u0139"+ + "\12\13\1\0\1\13\3\0\1\13\1\0\2\13\2\0"+ + "\7\13\7\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\5\13\1\u013a\22\13\1\0\1\13\3\0\1\13\1\0"+ + "\2\13\2\0\7\13\7\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\14\13\1\u013b\13\13\1\0\1\13\3\0"+ + "\1\13\1\0\2\13\2\0\7\13\7\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\3\13\1\141\24\13\1\0"+ + "\1\13\3\0\1\13\1\0\2\13\2\0\7\13\7\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\2\13\1\u013c"+ + "\25\13\1\0\1\13\3\0\1\13\1\0\2\13\2\0"+ + "\7\13\7\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\26\13\1\u013d\1\13\1\0\1\13\3\0\1\13\1\0"+ + "\2\13\2\0\7\13\7\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\4\13\1\u013e\23\13\1\0\1\13\3\0"+ + "\1\13\1\0\2\13\2\0\7\13\7\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\14\13\1\141\13\13\1\0"+ + "\1\13\3\0\1\13\1\0\2\13\2\0\7\13\7\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\15\13\1\u013f"+ + "\12\13\1\0\1\13\3\0\1\13\1\0\2\13\2\0"+ + "\7\13\7\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\11\13\1\u0140\16\13\1\0\1\13\3\0\1\13\1\0"+ + "\2\13\2\0\7\13\7\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\25\13\1\235\2\13\1\0\1\13\3\0"+ + "\1\13\1\0\2\13\2\0\7\13\7\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\1\u0141\27\13\1\0\1\13"+ + "\3\0\1\13\1\0\2\13\2\0\7\13\7\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\4\13\1\u0142\23\13"+ + "\1\0\1\13\3\0\1\13\1\0\2\13\2\0\7\13"+ + "\7\0\1\13\6\0\13\13\1\0\1\13\4\0\10\13"+ + "\1\u0143\17\13\1\0\1\13\3\0\1\13\1\0\2\13"+ + "\2\0\7\13\7\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\16\13\1\u0144\11\13\1\0\1\13\3\0\1\13"+ + "\1\0\2\13\2\0\7\13\7\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\7\13\1\u0145\20\13\1\0\1\13"+ + "\3\0\1\13\1\0\2\13\2\0\7\13\7\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\1\u0146\27\13\1\0"+ + "\1\13\3\0\1\13\1\0\2\13\2\0\7\13\7\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\10\13\1\u0147"+ + "\17\13\1\0\1\13\3\0\1\13\1\0\2\13\2\0"+ + "\7\13\7\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\1\113\27\13\1\0\1\13\3\0\1\13\1\0\2\13"+ + "\2\0\7\13\7\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\3\13\1\155\24\13\1\0\1\13\3\0\1\13"+ + "\1\0\2\13\2\0\7\13\7\0\1\13\20\0\1\u0148"+ + "\76\0\13\13\1\0\1\13\4\0\5\13\1\357\22\13"+ + "\1\0\1\13\3\0\1\13\1\0\2\13\2\0\7\13"+ + "\7\0\1\13\55\0\1\u0149\65\0\1\u014a\130\0\1\u0149"+ + "\111\0\1\u014b\74\0\1\u014c\103\0\1\u014d\130\0\1\u014e"+ + "\72\0\1\u014f\125\0\1\u0150\71\0\1\u0116\5\0\1\u0151"+ + "\110\0\1\u0152\102\0\1\u0153\114\0\1\u0116\111\0\1\203"+ + "\110\0\1\u0154\104\0\1\u0155\122\0\1\u0156\74\0\1\u0157"+ + "\112\0\1\203\106\0\1\u0158\14\0\1\177\74\0\1\u0159"+ + "\1\0\1\u015a\17\0\1\u015b\14\0\1\203\56\0\1\u015c"+ + "\116\0\1\u015d\102\0\1\u015e\106\0\1\u015f\112\0\1\u0160"+ + "\15\0\1\u0161\71\0\1\u0162\104\0\1\u0163\114\0\1\u0164"+ + "\107\0\1\u0165\107\0\1\u0166\121\0\1\u0167\72\0\1\u0168"+ + "\110\0\1\u012b\117\0\1\203\106\0\1\u0169\115\0\1\203"+ + "\105\0\1\u016a\104\0\1\203\64\0\13\13\1\0\1\13"+ + "\4\0\10\13\1\u016b\17\13\1\0\1\13\3\0\1\13"+ + "\1\0\2\13\2\0\7\13\7\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\7\13\1\346\20\13\1\0\1\13"+ + "\3\0\1\13\1\0\2\13\2\0\7\13\7\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\24\13\1\u016c\3\13"+ + "\1\0\1\13\3\0\1\13\1\0\2\13\2\0\7\13"+ + "\7\0\1\13\6\0\13\13\1\0\1\13\4\0\11\13"+ + "\1\u016d\16\13\1\0\1\13\3\0\1\13\1\0\2\13"+ + "\2\0\7\13\7\0\1\13\10\0\2\u016e\1\101\1\0"+ + "\5\u016e\1\0\1\u016e\4\0\2\u016e\3\0\1\u016e\1\0"+ + "\1\101\1\u016e\6\0\1\u016e\2\0\1\u016e\20\0\5\u016e"+ + "\22\0\1\u016f\1\100\1\101\2\0\3\u016f\1\101\1\105"+ + "\1\106\13\0\1\101\1\106\6\0\1\101\2\0\1\101"+ + "\20\0\1\u016f\1\100\1\u016f\1\0\1\101\20\0\13\13"+ + "\1\0\1\13\4\0\1\u0170\27\13\1\0\1\13\3\0"+ + "\1\13\1\0\2\13\2\0\7\13\7\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\1\u013e\27\13\1\0\1\13"+ + "\3\0\1\13\1\0\2\13\2\0\7\13\7\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\5\13\1\141\22\13"+ + "\1\0\1\13\3\0\1\13\1\0\2\13\2\0\7\13"+ + "\7\0\1\13\6\0\13\13\1\0\1\13\4\0\3\13"+ + "\1\u0171\24\13\1\0\1\13\3\0\1\13\1\0\2\13"+ + "\2\0\7\13\7\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\4\13\1\u0172\23\13\1\0\1\13\3\0\1\13"+ + "\1\0\2\13\2\0\7\13\7\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\15\13\1\u0173\12\13\1\0\1\13"+ + "\3\0\1\13\1\0\2\13\2\0\7\13\7\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\11\13\1\141\16\13"+ + "\1\0\1\13\3\0\1\13\1\0\2\13\2\0\7\13"+ + "\7\0\1\13\6\0\13\13\1\0\1\13\4\0\11\13"+ + "\1\u0174\16\13\1\0\1\13\3\0\1\13\1\0\2\13"+ + "\2\0\7\13\7\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\17\13\1\246\10\13\1\0\1\13\3\0\1\13"+ + "\1\0\2\13\2\0\7\13\7\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\11\13\1\u0175\16\13\1\0\1\13"+ + "\3\0\1\13\1\0\2\13\2\0\7\13\7\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\22\13\1\u0176\5\13"+ + "\1\0\1\13\3\0\1\13\1\0\2\13\2\0\7\13"+ + "\7\0\1\13\6\0\13\13\1\0\1\13\4\0\20\13"+ + "\1\u0177\7\13\1\0\1\13\3\0\1\13\1\0\2\13"+ + "\2\0\7\13\7\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\7\13\1\366\20\13\1\0\1\13\3\0\1\13"+ + "\1\0\2\13\2\0\7\13\7\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\7\13\1\u0178\20\13\1\0\1\13"+ + "\3\0\1\13\1\0\2\13\2\0\7\13\7\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\24\13\1\235\3\13"+ + "\1\0\1\13\3\0\1\13\1\0\2\13\2\0\7\13"+ + "\7\0\1\13\6\0\13\13\1\0\1\13\4\0\5\13"+ + "\1\u0179\22\13\1\0\1\13\3\0\1\13\1\0\2\13"+ + "\2\0\7\13\7\0\1\13\61\0\1\u017a\66\0\1\u017b"+ + "\103\0\1\u017c\122\0\1\u017d\76\0\1\u017e\111\0\1\u017f"+ + "\110\0\1\u0180\111\0\1\203\113\0\1\u011b\117\0\1\u0181"+ + "\101\0\1\u0182\105\0\1\u0183\112\0\1\u0184\101\0\1\u0185"+ + "\130\0\1\u0186\72\0\1\203\121\0\1\u0187\111\0\1\u0188"+ + "\103\0\1\u0189\101\0\1\u018a\121\0\1\u018b\110\0\1\u018c"+ + "\120\0\1\u018d\111\0\1\203\112\0\1\u0150\70\0\1\u018e"+ + "\122\0\1\u018f\75\0\1\u0159\36\0\1\203\56\0\1\u0190"+ + "\104\0\1\u0191\112\0\1\u018f\126\0\1\203\67\0\1\u0116"+ + "\110\0\1\u0192\122\0\1\u014f\52\0\13\13\1\0\1\13"+ + "\4\0\1\u0193\27\13\1\0\1\13\3\0\1\13\1\0"+ + "\2\13\2\0\7\13\7\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\10\13\1\u0194\17\13\1\0\1\13\3\0"+ + "\1\13\1\0\2\13\2\0\7\13\7\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\24\13\1\u0131\3\13\1\0"+ + "\1\13\3\0\1\13\1\0\2\13\2\0\7\13\7\0"+ + "\1\13\10\0\2\u0195\1\101\1\0\5\u0195\1\0\1\u0195"+ + "\4\0\2\u0195\3\0\1\u0195\1\0\1\101\1\u0195\6\0"+ + "\1\u0195\2\0\1\u0195\20\0\5\u0195\22\0\1\u0196\1\100"+ + "\1\101\2\0\3\u0196\1\101\1\105\1\106\13\0\1\101"+ + "\1\106\6\0\1\101\2\0\1\101\20\0\1\u0196\1\100"+ + "\1\u0196\1\0\1\101\20\0\13\13\1\0\1\13\4\0"+ + "\5\13\1\366\22\13\1\0\1\13\3\0\1\13\1\0"+ + "\2\13\2\0\7\13\7\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\22\13\1\u0197\5\13\1\0\1\13\3\0"+ + "\1\13\1\0\2\13\2\0\7\13\7\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\6\13\1\u0198\21\13\1\0"+ + "\1\13\3\0\1\13\1\0\2\13\2\0\7\13\7\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\10\13\1\u0199"+ + "\17\13\1\0\1\13\3\0\1\13\1\0\2\13\2\0"+ + "\7\13\7\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\16\13\1\235\11\13\1\0\1\13\3\0\1\13\1\0"+ + "\2\13\2\0\7\13\7\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\5\13\1\u019a\22\13\1\0\1\13\3\0"+ + "\1\13\1\0\2\13\2\0\7\13\7\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\1\u019b\27\13\1\0\1\13"+ + "\3\0\1\13\1\0\2\13\2\0\7\13\7\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\10\13\1\u019c\17\13"+ + "\1\0\1\13\3\0\1\13\1\0\2\13\2\0\7\13"+ + "\7\0\1\13\6\0\13\13\1\0\1\13\4\0\13\13"+ + "\1\141\14\13\1\0\1\13\3\0\1\13\1\0\2\13"+ + "\2\0\7\13\7\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\3\13\1\u019d\24\13\1\0\1\13\3\0\1\13"+ + "\1\0\2\13\2\0\7\13\7\0\1\13\61\0\1\277"+ + "\62\0\1\u019e\114\0\1\u019f\103\0\1\u01a0\110\0\1\u01a1"+ + "\105\0\1\u01a2\125\0\1\u01a3\73\0\1\u01a4\114\0\1\u01a5"+ + "\120\0\1\203\104\0\1\u011a\104\0\1\u0167\115\0\1\203"+ + "\117\0\1\203\74\0\1\u01a6\112\0\1\u01a7\111\0\1\u01a8"+ + "\120\0\1\u0157\106\0\1\u01a9\76\0\1\u0159\105\0\1\u01aa"+ + "\127\0\1\u0116\111\0\1\u01ab\100\0\1\u01ac\115\0\1\u01ad"+ + "\52\0\13\13\1\0\1\13\4\0\11\13\1\u0131\16\13"+ + "\1\0\1\13\3\0\1\13\1\0\2\13\2\0\7\13"+ + "\7\0\1\13\6\0\13\13\1\0\1\13\4\0\4\13"+ + "\1\u0131\23\13\1\0\1\13\3\0\1\13\1\0\2\13"+ + "\2\0\7\13\7\0\1\13\10\0\2\u01ae\1\101\1\0"+ + "\5\u01ae\1\0\1\u01ae\4\0\2\u01ae\3\0\1\u01ae\1\0"+ + "\1\101\1\u01ae\6\0\1\u01ae\2\0\1\u01ae\20\0\5\u01ae"+ + "\22\0\1\u01af\1\100\1\101\2\0\3\u01af\1\101\1\105"+ + "\1\106\13\0\1\101\1\106\6\0\1\101\2\0\1\101"+ + "\20\0\1\u01af\1\100\1\u01af\1\0\1\101\20\0\13\13"+ + "\1\0\1\13\4\0\23\13\1\141\4\13\1\0\1\13"+ + "\3\0\1\13\1\0\2\13\2\0\7\13\7\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\11\13\1\u01b0\16\13"+ + "\1\0\1\13\3\0\1\13\1\0\2\13\2\0\7\13"+ + "\7\0\1\13\6\0\13\13\1\0\1\13\4\0\11\13"+ + "\1\366\16\13\1\0\1\13\3\0\1\13\1\0\2\13"+ + "\2\0\7\13\7\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\10\13\1\u01b1\17\13\1\0\1\13\3\0\1\13"+ + "\1\0\2\13\2\0\7\13\7\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\5\13\1\235\22\13\1\0\1\13"+ + "\3\0\1\13\1\0\2\13\2\0\7\13\7\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\11\13\1\u01b2\16\13"+ + "\1\0\1\13\3\0\1\13\1\0\2\13\2\0\7\13"+ + "\7\0\1\13\6\0\13\13\1\0\1\13\4\0\10\13"+ + "\1\275\17\13\1\0\1\13\3\0\1\13\1\0\2\13"+ + "\2\0\7\13\7\0\1\13\34\0\1\u01b3\107\0\1\u01a0"+ + "\140\0\1\u01b4\64\0\1\u01b5\105\0\1\u012f\130\0\1\u0129"+ + "\72\0\1\u01b6\105\0\1\u01b7\112\0\1\u01b8\104\0\1\u0116"+ + "\150\0\1\203\67\0\1\203\112\0\1\203\75\0\1\u01b9"+ + "\105\0\1\u01ba\111\0\1\u0186\63\0\2\u01bb\1\101\1\0"+ + "\5\u01bb\1\0\1\u01bb\4\0\2\u01bb\3\0\1\u01bb\1\0"+ + "\1\101\1\u01bb\6\0\1\u01bb\2\0\1\u01bb\20\0\5\u01bb"+ + "\22\0\1\u01bc\1\100\1\101\2\0\3\u01bc\1\101\1\105"+ + "\1\106\13\0\1\101\1\106\6\0\1\101\2\0\1\101"+ + "\20\0\1\u01bc\1\100\1\u01bc\1\0\1\101\20\0\13\13"+ + "\1\0\1\13\4\0\15\13\1\u01bd\12\13\1\0\1\13"+ + "\3\0\1\13\1\0\2\13\2\0\7\13\7\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\6\13\1\u01be\21\13"+ + "\1\0\1\13\3\0\1\13\1\0\2\13\2\0\7\13"+ + "\7\0\1\13\6\0\13\13\1\0\1\13\4\0\3\13"+ + "\1\246\24\13\1\0\1\13\3\0\1\13\1\0\2\13"+ + "\2\0\7\13\7\0\1\13\27\0\1\u01bf\146\0\1\277"+ + "\56\0\1\u01c0\112\0\1\325\110\0\1\u011b\130\0\1\u01c1"+ + "\73\0\1\u01c2\77\0\1\u01a7\71\0\2\u01c3\1\101\1\0"+ + "\5\u01c3\1\0\1\u01c3\4\0\2\u01c3\3\0\1\u01c3\1\0"+ + "\1\101\1\u01c3\6\0\1\u01c3\2\0\1\u01c3\20\0\5\u01c3"+ + "\22\0\1\u01c4\1\100\1\101\2\0\3\u01c4\1\101\1\105"+ + "\1\106\13\0\1\101\1\106\6\0\1\101\2\0\1\101"+ + "\20\0\1\u01c4\1\100\1\u01c4\1\0\1\101\20\0\13\13"+ + "\1\0\1\13\4\0\27\13\1\u019d\1\0\1\13\3\0"+ + "\1\13\1\0\2\13\2\0\7\13\7\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\22\13\1\141\5\13\1\0"+ + "\1\13\3\0\1\13\1\0\2\13\2\0\7\13\7\0"+ + "\1\13\31\0\1\u01c5\125\0\1\304\14\0\1\u01b4\57\0"+ + "\1\u0157\66\0\2\u01c6\1\101\1\0\5\u01c6\1\0\1\u01c6"+ + "\4\0\2\u01c6\3\0\1\u01c6\1\0\1\101\1\u01c6\6\0"+ + "\1\u01c6\2\0\1\u01c6\20\0\5\u01c6\22\0\1\u01c7\1\100"+ + "\1\101\2\0\3\u01c7\1\101\1\105\1\106\13\0\1\101"+ + "\1\106\6\0\1\101\2\0\1\101\20\0\1\u01c7\1\100"+ + "\1\u01c7\1\0\1\101\51\0\1\u01a0\61\0\2\u01c8\1\101"+ + "\1\0\5\u01c8\1\0\1\u01c8\4\0\2\u01c8\3\0\1\u01c8"+ + "\1\0\1\101\1\u01c8\6\0\1\u01c8\2\0\1\u01c8\20\0"+ + "\5\u01c8\22\0\1\u01c9\1\100\1\101\2\0\3\u01c9\1\101"+ + "\1\105\1\106\13\0\1\101\1\106\6\0\1\101\2\0"+ + "\1\101\20\0\1\u01c9\1\100\1\u01c9\1\0\1\101\22\0"+ + "\2\u01ca\1\101\1\0\5\u01ca\1\0\1\u01ca\4\0\2\u01ca"+ + "\3\0\1\u01ca\1\0\1\101\1\u01ca\6\0\1\u01ca\2\0"+ + "\1\u01ca\20\0\5\u01ca\22\0\1\u01cb\1\100\1\101\2\0"+ + "\3\u01cb\1\101\1\105\1\106\13\0\1\101\1\106\6\0"+ + "\1\101\2\0\1\101\20\0\1\u01cb\1\100\1\u01cb\1\0"+ + "\1\101\22\0\2\u01cc\1\101\1\0\5\u01cc\1\0\1\u01cc"+ + "\4\0\2\u01cc\3\0\1\u01cc\1\0\1\101\1\u01cc\6\0"+ + "\1\u01cc\2\0\1\u01cc\20\0\5\u01cc\22\0\1\u01cd\1\100"+ + "\1\101\2\0\3\u01cd\1\101\1\105\1\106\13\0\1\101"+ + "\1\106\6\0\1\101\2\0\1\101\20\0\1\u01cd\1\100"+ + "\1\u01cd\1\0\1\101\22\0\2\u01ce\1\101\1\0\5\u01ce"+ + "\1\0\1\u01ce\4\0\2\u01ce\3\0\1\u01ce\1\0\1\101"+ + "\1\u01ce\6\0\1\u01ce\2\0\1\u01ce\20\0\5\u01ce\22\0"+ + "\1\u01cf\1\100\1\101\2\0\3\u01cf\1\101\1\105\1\106"+ + "\13\0\1\101\1\106\6\0\1\101\2\0\1\101\20\0"+ + "\1\u01cf\1\100\1\u01cf\1\0\1\101\22\0\2\u01d0\1\101"+ + "\1\0\5\u01d0\1\0\1\u01d0\4\0\2\u01d0\3\0\1\u01d0"+ + "\1\0\1\101\1\u01d0\6\0\1\u01d0\2\0\1\u01d0\20\0"+ + "\5\u01d0\22\0\1\u01d1\1\100\1\101\2\0\3\u01d1\1\101"+ + "\1\105\1\106\13\0\1\101\1\106\6\0\1\101\2\0"+ + "\1\101\20\0\1\u01d1\1\100\1\u01d1\1\0\1\101\22\0"+ + "\2\u01d2\1\101\1\0\5\u01d2\1\0\1\u01d2\4\0\2\u01d2"+ + "\3\0\1\u01d2\1\0\1\101\1\u01d2\6\0\1\u01d2\2\0"+ + "\1\u01d2\20\0\5\u01d2\22\0\1\u01d3\1\100\1\101\2\0"+ + "\3\u01d3\1\101\1\105\1\106\13\0\1\101\1\106\6\0"+ + "\1\101\2\0\1\101\20\0\1\u01d3\1\100\1\u01d3\1\0"+ + "\1\101\22\0\2\u01d4\1\101\1\0\5\u01d4\1\0\1\u01d4"+ + "\4\0\2\u01d4\3\0\1\u01d4\1\0\1\101\1\u01d4\6\0"+ + "\1\u01d4\2\0\1\u01d4\20\0\5\u01d4\22\0\1\u01d5\1\100"+ + "\1\101\2\0\3\u01d5\1\101\1\105\1\106\13\0\1\101"+ + "\1\106\6\0\1\101\2\0\1\101\20\0\1\u01d5\1\100"+ + "\1\u01d5\1\0\1\101\24\0\1\101\23\0\1\101\62\0"+ + "\1\u01d6\1\100\1\101\2\0\3\u01d6\1\101\1\105\1\106"+ + "\13\0\1\101\1\106\6\0\1\101\2\0\1\101\20\0"+ + "\1\u01d6\1\100\1\u01d6\1\0\1\101\22\0\1\u01d7\1\100"+ + "\1\101\2\0\3\u01d7\1\101\1\105\1\106\13\0\1\101"+ + "\1\106\6\0\1\101\2\0\1\101\20\0\1\u01d7\1\100"+ + "\1\u01d7\1\0\1\101\22\0\1\u01d8\1\100\1\101\2\0"+ + "\3\u01d8\1\101\1\105\1\106\13\0\1\101\1\106\6\0"+ + "\1\101\2\0\1\101\20\0\1\u01d8\1\100\1\u01d8\1\0"+ + "\1\101\22\0\1\u01d9\1\100\1\101\2\0\3\u01d9\1\101"+ + "\1\105\1\106\13\0\1\101\1\106\6\0\1\101\2\0"+ + "\1\101\20\0\1\u01d9\1\100\1\u01d9\1\0\1\101\22\0"+ + "\2\100\1\101\2\0\3\100\1\101\1\105\1\106\13\0"+ + "\1\101\1\106\6\0\1\101\2\0\1\101\20\0\3\100"+ + "\1\0\1\101\12\0"; + + private static int [] zzUnpackTrans() { + int [] result = new int[32996]; + 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\1\11\12\1\2\11\24\1\1\11\12\1\2\11"+ + "\3\1\1\11\1\1\2\11\3\1\1\0\2\1\1\11"+ + "\1\0\3\1\1\0\47\1\1\0\3\1\4\0\1\1"+ + "\11\0\1\1\2\0\1\11\1\0\6\1\1\11\2\1"+ + "\2\11\1\1\1\11\1\0\5\1\1\0\46\1\1\11"+ + "\1\0\1\1\43\0\6\1\2\0\32\1\1\0\1\1"+ + "\23\0\1\1\5\0\1\1\15\0\30\1\43\0\17\1"+ + "\31\0\13\1\20\0\5\1\10\0\4\1\2\0\1\1"+ + "\1\0\2\1\2\0\1\1\1\0\1\1\1\0\1\1"+ + "\1\0\1\1\1\0\1\1\1\0\1\1\1\0\1\1"+ + "\1\0\5\1"; + + private static int [] zzUnpackAttribute() { + int [] result = new int[473]; + 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[] = new char[ZZ_BUFFERSIZE]; + + /** 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; + + /** number of newlines encountered up to the start of the matched text */ + private int yyline; + + /** the number of characters up to the start of the matched text */ + private int yychar; + + /** + * the number of characters from the last newline up to the start of the + * matched text + */ + private int yycolumn; + + /** + * 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; + + /** denotes if the user-EOF-code has already been executed */ + private boolean zzEOFDone; + + /* user code: */ + /** + * Create an empty lexer, yyrset will be called later to reset and assign + * the reader + */ + public JFlexLexer() { + super(); + } + + @Override + public int yychar() { + return yychar; + } + + + /** + * 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 JFlexLexer(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 JFlexLexer(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 < 1822) { + int count = packed.charAt(i++); + char value = packed.charAt(i++); + do map[j++] = value; while (--count > 0); + } + return map; + } + + + /** + * Refills the input buffer. + * + * @return false, iff there was new input. + * + * @exception java.io.IOException if any I/O-Error occurs + */ + private boolean zzRefill() throws java.io.IOException { + + /* first: make room (if you can) */ + if (zzStartRead > 0) { + System.arraycopy(zzBuffer, zzStartRead, + zzBuffer, 0, + zzEndRead-zzStartRead); + + /* translate stored positions */ + zzEndRead-= zzStartRead; + zzCurrentPos-= zzStartRead; + zzMarkedPos-= zzStartRead; + zzStartRead = 0; + } + + /* is the buffer big enough? */ + if (zzCurrentPos >= zzBuffer.length) { + /* if not: blow it up */ + char newBuffer[] = new char[zzCurrentPos*2]; + System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); + zzBuffer = newBuffer; + } + + /* finally: fill the buffer with new input */ + int numRead = zzReader.read(zzBuffer, zzEndRead, + zzBuffer.length-zzEndRead); + + if (numRead > 0) { + zzEndRead+= numRead; + return false; + } + // unlikely but not impossible: read 0 characters, but not at end of stream + if (numRead == 0) { + int c = zzReader.read(); + if (c == -1) { + return true; + } else { + zzBuffer[zzEndRead++] = (char) c; + return false; + } + } + + // numRead < 0 + return true; + } + + + /** + * 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(); + } + + + /** + * 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 ZZ_INITIAL. + * + * @param reader the new input stream + */ + public final void yyreset(java.io.Reader reader) { + zzReader = reader; + zzAtBOL = true; + zzAtEOF = false; + zzEOFDone = false; + zzEndRead = zzStartRead = 0; + zzCurrentPos = zzMarkedPos = 0; + yyline = yychar = yycolumn = 0; + zzLexicalState = YYINITIAL; + } + + + /** + * Returns the current lexical state. + */ + public final int yystate() { + return zzLexicalState; + } + + + /** + * Enters a new lexical state + * + * @param newState the new lexical state + */ + 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 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; + + yychar+= zzMarkedPosL-zzStartRead; + + zzAction = -1; + + zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; + + 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 14: + { return token(TokenType.KEYWORD); + } + case 21: break; + case 4: + { return token(TokenType.NUMBER); + } + case 22: break; + case 12: + { yybegin(JDOC); + // length also includes the trailing quote + int start = tokenStart; + tokenStart = yychar; + int len = tokenLength; + tokenLength = 1; + return token(TokenType.COMMENT2, start, len); + } + case 23: break; + case 2: + { return token(TokenType.OPERATOR); + } + case 24: break; + case 17: + { yybegin(YYINITIAL); + return token(TokenType.COMMENT, tokenStart, tokenLength + 2); + } + case 25: break; + case 11: + { yybegin(JDOC_TAG); + int start = tokenStart; + tokenStart = yychar; + int len = tokenLength; + tokenLength = 1; + return token(TokenType.COMMENT, start, len); + } + case 26: break; + case 7: + { tokenLength += yylength(); + } + case 27: break; + case 8: + { yybegin(YYINITIAL); + } + case 28: break; + case 6: + { yybegin(CHARLITERAL); + tokenStart = yychar; + tokenLength = 1; + } + case 29: break; + case 18: + { yybegin(JDOC); + tokenStart = yychar; + tokenLength = 3; + } + case 30: break; + case 9: + { yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + case 31: break; + case 20: + { return token(TokenType.TYPE); + } + case 32: break; + case 3: + { return token(TokenType.IDENTIFIER); + } + case 33: break; + case 15: + { return token(TokenType.KEYWORD2); + } + case 34: break; + case 16: + { tokenLength += 2; + } + case 35: break; + case 19: + { return token(TokenType.TYPE2); + } + case 36: break; + case 10: + { tokenLength ++; + } + case 37: break; + case 13: + { return token(TokenType.COMMENT); + } + case 38: break; + case 5: + { yybegin(STRING); + tokenStart = yychar; + tokenLength = 1; + } + case 39: break; + case 1: + { + } + case 40: break; + default: + if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { + zzAtEOF = true; + { + return null; + } + } + else { + zzScanError(ZZ_NO_MATCH); + } + } + } + } + + +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/JavaLexer.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/JavaLexer.java new file mode 100644 index 000000000..c7e88e751 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/JavaLexer.java @@ -0,0 +1,1520 @@ +/* The following code was generated by JFlex 1.4.3 on 21.7.10 18:14 */ + +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jsyntaxpane.lexers; + + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + + +/** + * This class is a scanner generated by + * JFlex 1.4.3 + * on 21.7.10 18:14 from the specification file + * D:/Dokumenty/Programovani/JavaSE/JPSWFDec/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/java.flex + */ +public final class JavaLexer extends DefaultJFlexLexer { + + /** This character denotes the end of file */ + public static final int YYEOF = -1; + + /** initial size of the lookahead buffer */ + private static final int ZZ_BUFFERSIZE = 16384; + + /** lexical states */ + public static final int STRING = 2; + public static final int JDOC_TAG = 8; + public static final int JDOC = 6; + public static final int YYINITIAL = 0; + public static final int CHARLITERAL = 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, 0, 1, 1, 2, 2, 3, 3, 4, 4 + }; + + /** + * Translates characters to character classes + */ + private static final String ZZ_CMAP_PACKED = + "\11\7\1\3\1\2\1\0\1\3\1\1\16\7\4\0\1\3\1\112"+ + "\1\24\1\0\1\6\1\112\1\114\1\25\1\100\1\101\1\5\1\116"+ + "\1\106\1\23\1\21\1\4\1\10\1\16\2\15\4\17\2\11\1\113"+ + "\1\106\1\111\1\107\1\110\1\106\1\117\1\14\1\57\1\60\1\61"+ + "\1\22\1\20\1\75\1\120\1\62\2\120\1\12\1\76\1\67\1\63"+ + "\1\70\1\120\1\73\1\65\1\72\1\77\1\66\1\74\1\13\2\120"+ + "\1\104\1\26\1\105\1\112\1\6\1\0\1\27\1\30\1\34\1\46"+ + "\1\37\1\51\1\53\1\43\1\44\1\64\1\41\1\36\1\47\1\40"+ + "\1\35\1\52\1\71\1\33\1\31\1\32\1\45\1\54\1\55\1\50"+ + "\1\42\1\56\1\102\1\115\1\103\1\106\41\7\2\0\4\6\4\0"+ + "\1\120\2\0\1\7\7\0\1\120\4\0\1\120\5\0\27\120\1\0"+ + "\37\120\1\0\u013f\120\31\0\162\120\4\0\14\120\16\0\5\120\11\0"+ + "\1\120\21\0\130\7\5\0\23\7\12\0\1\120\13\0\1\120\1\0"+ + "\3\120\1\0\1\120\1\0\24\120\1\0\54\120\1\0\46\120\1\0"+ + "\5\120\4\0\202\120\1\0\4\7\3\0\105\120\1\0\46\120\2\0"+ + "\2\120\6\0\20\120\41\0\46\120\2\0\1\120\7\0\47\120\11\0"+ + "\21\7\1\0\27\7\1\0\3\7\1\0\1\7\1\0\2\7\1\0"+ + "\1\7\13\0\33\120\5\0\3\120\15\0\4\7\14\0\6\7\13\0"+ + "\32\120\5\0\13\120\16\7\7\0\12\7\4\0\2\120\1\7\143\120"+ + "\1\0\1\120\10\7\1\0\6\7\2\120\2\7\1\0\4\7\2\120"+ + "\12\7\3\120\2\0\1\120\17\0\1\7\1\120\1\7\36\120\33\7"+ + "\2\0\3\120\60\0\46\120\13\7\1\120\u014f\0\3\7\66\120\2\0"+ + "\1\7\1\120\20\7\2\0\1\120\4\7\3\0\12\120\2\7\2\0"+ + "\12\7\21\0\3\7\1\0\10\120\2\0\2\120\2\0\26\120\1\0"+ + "\7\120\1\0\1\120\3\0\4\120\2\0\1\7\1\120\7\7\2\0"+ + "\2\7\2\0\3\7\11\0\1\7\4\0\2\120\1\0\3\120\2\7"+ + "\2\0\12\7\2\120\2\6\15\0\3\7\1\0\6\120\4\0\2\120"+ + "\2\0\26\120\1\0\7\120\1\0\2\120\1\0\2\120\1\0\2\120"+ + "\2\0\1\7\1\0\5\7\4\0\2\7\2\0\3\7\13\0\4\120"+ + "\1\0\1\120\7\0\14\7\3\120\14\0\3\7\1\0\11\120\1\0"+ + "\3\120\1\0\26\120\1\0\7\120\1\0\2\120\1\0\5\120\2\0"+ + "\1\7\1\120\10\7\1\0\3\7\1\0\3\7\2\0\1\120\17\0"+ + "\2\120\2\7\2\0\12\7\1\0\1\6\17\0\3\7\1\0\10\120"+ + "\2\0\2\120\2\0\26\120\1\0\7\120\1\0\2\120\1\0\5\120"+ + "\2\0\1\7\1\120\6\7\3\0\2\7\2\0\3\7\10\0\2\7"+ + "\4\0\2\120\1\0\3\120\4\0\12\7\1\0\1\120\20\0\1\7"+ + "\1\120\1\0\6\120\3\0\3\120\1\0\4\120\3\0\2\120\1\0"+ + "\1\120\1\0\2\120\3\0\2\120\3\0\3\120\3\0\10\120\1\0"+ + "\3\120\4\0\5\7\3\0\3\7\1\0\4\7\11\0\1\7\17\0"+ + "\11\7\11\0\1\6\7\0\3\7\1\0\10\120\1\0\3\120\1\0"+ + "\27\120\1\0\12\120\1\0\5\120\4\0\7\7\1\0\3\7\1\0"+ + "\4\7\7\0\2\7\11\0\2\120\4\0\12\7\22\0\2\7\1\0"+ + "\10\120\1\0\3\120\1\0\27\120\1\0\12\120\1\0\5\120\2\0"+ + "\1\7\1\120\7\7\1\0\3\7\1\0\4\7\7\0\2\7\7\0"+ + "\1\120\1\0\2\120\4\0\12\7\22\0\2\7\1\0\10\120\1\0"+ + "\3\120\1\0\27\120\1\0\20\120\4\0\6\7\2\0\3\7\1\0"+ + "\4\7\11\0\1\7\10\0\2\120\4\0\12\7\22\0\2\7\1\0"+ + "\22\120\3\0\30\120\1\0\11\120\1\0\1\120\2\0\7\120\3\0"+ + "\1\7\4\0\6\7\1\0\1\7\1\0\10\7\22\0\2\7\15\0"+ + "\60\120\1\7\2\120\7\7\4\0\1\6\7\120\10\7\1\0\12\7"+ + "\47\0\2\120\1\0\1\120\2\0\2\120\1\0\1\120\2\0\1\120"+ + "\6\0\4\120\1\0\7\120\1\0\3\120\1\0\1\120\1\0\1\120"+ + "\2\0\2\120\1\0\4\120\1\7\2\120\6\7\1\0\2\7\1\120"+ + "\2\0\5\120\1\0\1\120\1\0\6\7\2\0\12\7\2\0\2\120"+ + "\42\0\1\120\27\0\2\7\6\0\12\7\13\0\1\7\1\0\1\7"+ + "\1\0\1\7\4\0\2\7\10\120\1\0\42\120\6\0\24\7\1\0"+ + "\2\7\4\120\4\0\10\7\1\0\44\7\11\0\1\7\71\0\42\120"+ + "\1\0\5\120\1\0\2\120\1\0\7\7\3\0\4\7\6\0\12\7"+ + "\6\0\6\120\4\7\106\0\46\120\12\0\51\120\7\0\132\120\5\0"+ + "\104\120\5\0\122\120\6\0\7\120\1\0\77\120\1\0\1\120\1\0"+ + "\4\120\2\0\7\120\1\0\1\120\1\0\4\120\2\0\47\120\1\0"+ + "\1\120\1\0\4\120\2\0\37\120\1\0\1\120\1\0\4\120\2\0"+ + "\7\120\1\0\1\120\1\0\4\120\2\0\7\120\1\0\7\120\1\0"+ + "\27\120\1\0\37\120\1\0\1\120\1\0\4\120\2\0\7\120\1\0"+ + "\47\120\1\0\23\120\16\0\11\7\56\0\125\120\14\0\u026c\120\2\0"+ + "\10\120\12\0\32\120\5\0\113\120\3\0\3\6\17\0\15\120\1\0"+ + "\4\120\3\7\13\0\22\120\3\7\13\0\22\120\2\7\14\0\15\120"+ + "\1\0\3\120\1\0\2\7\14\0\64\120\40\7\3\0\1\120\3\0"+ + "\1\6\1\120\1\7\2\0\12\7\41\0\3\7\2\0\12\7\6\0"+ + "\130\120\10\0\51\120\1\7\126\0\35\120\3\0\14\7\4\0\14\7"+ + "\12\0\12\7\36\120\2\0\5\120\u038b\0\154\120\224\0\234\120\4\0"+ + "\132\120\6\0\26\120\2\0\6\120\2\0\46\120\2\0\6\120\2\0"+ + "\10\120\1\0\1\120\1\0\1\120\1\0\1\120\1\0\37\120\2\0"+ + "\65\120\1\0\7\120\1\0\1\120\3\0\3\120\1\0\7\120\3\0"+ + "\4\120\2\0\6\120\4\0\15\120\5\0\3\120\1\0\7\120\17\0"+ + "\4\7\32\0\5\7\20\0\2\6\23\0\1\6\13\0\4\7\6\0"+ + "\6\7\1\0\1\120\15\0\1\120\40\0\22\6\36\0\15\7\4\0"+ + "\1\7\3\0\6\7\27\0\1\120\4\0\1\120\2\0\12\120\1\0"+ + "\1\120\3\0\5\120\6\0\1\120\1\0\1\120\1\0\1\120\1\0"+ + "\4\120\1\0\3\120\1\0\7\120\3\0\3\120\5\0\5\120\26\0"+ + "\44\6\u0e81\0\2\120\1\6\31\0\11\6\6\7\1\0\5\120\2\0"+ + "\3\6\2\120\4\0\126\120\2\0\2\7\2\0\3\120\1\0\132\120"+ + "\1\6\4\120\5\0\50\120\4\0\136\120\21\0\30\120\70\0\20\120"+ + "\u0200\0\u19b6\120\112\0\u51a6\120\132\0\u048d\120\u0773\0\u2ba4\120\u215c\0\u012e\120"+ + "\2\0\73\120\225\0\7\120\14\0\5\120\5\0\1\120\1\7\12\120"+ + "\1\0\15\120\1\0\5\120\1\0\1\120\1\0\2\120\1\0\2\120"+ + "\1\0\154\120\41\0\u016b\120\22\0\100\120\2\0\66\120\50\0\14\120"+ + "\1\6\3\0\20\7\20\0\4\7\17\0\2\6\30\0\3\6\31\0"+ + "\1\6\6\0\5\120\1\0\207\120\2\0\1\7\4\0\1\6\13\0"+ + "\12\7\7\0\32\120\4\0\1\6\1\0\32\120\12\0\1\6\131\120"+ + "\3\0\6\120\2\0\6\120\2\0\6\120\2\0\3\120\3\0\2\6"+ + "\3\0\2\6\22\0\3\7\4\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\3\1\2\2\1\3\2\4\2\3\1\2\1\3"+ + "\1\2\1\5\1\6\35\3\1\7\1\10\1\11\1\12"+ + "\1\13\1\14\6\2\1\15\2\16\1\17\1\1\1\15"+ + "\1\1\2\20\1\21\2\22\1\15\1\23\1\0\3\4"+ + "\1\0\3\4\1\0\35\3\2\24\40\3\1\2\1\25"+ + "\2\15\1\26\1\15\2\23\1\0\1\27\4\4\1\0"+ + "\34\3\1\24\47\3\2\0\2\4\35\3\1\30\30\3"+ + "\2\4\3\3\1\31\6\3\1\24\7\3\1\24\4\3"+ + "\1\30\23\3\2\4\30\3\1\30\5\3\1\30\3\3"+ + "\2\4\33\3\1\32\1\3\2\4\27\3\2\4\1\3"+ + "\1\33\24\3\2\4\20\3\1\0\1\4\11\3\1\0"+ + "\1\4\10\3\1\0\1\4\6\3\1\0\1\4\3\3"+ + "\1\0\1\4\1\3\1\0\1\4\1\0\1\4\1\0"+ + "\5\4"; + + private static int [] zzUnpackAction() { + int [] result = new int[514]; + 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\121\0\242\0\363\0\u0144\0\u0195\0\u01e6\0\u0237"+ + "\0\u0288\0\u02d9\0\u032a\0\u037b\0\u03cc\0\u041d\0\u046e\0\u04bf"+ + "\0\u0510\0\u0561\0\u0195\0\u0195\0\u05b2\0\u0603\0\u0654\0\u06a5"+ + "\0\u06f6\0\u0747\0\u0798\0\u07e9\0\u083a\0\u088b\0\u08dc\0\u092d"+ + "\0\u097e\0\u09cf\0\u0a20\0\u0a71\0\u0ac2\0\u0b13\0\u0b64\0\u0bb5"+ + "\0\u0c06\0\u0c57\0\u0ca8\0\u0cf9\0\u0d4a\0\u0d9b\0\u0dec\0\u0e3d"+ + "\0\u0e8e\0\u0195\0\u0195\0\u0195\0\u0195\0\u0195\0\u0195\0\u0195"+ + "\0\u0edf\0\u0f30\0\u0f81\0\u0fd2\0\u1023\0\u1074\0\u10c5\0\u0195"+ + "\0\u0195\0\u1116\0\u1167\0\u11b8\0\u0195\0\u1209\0\u0195\0\u0195"+ + "\0\u1209\0\u125a\0\u12ab\0\u12fc\0\u134d\0\u139e\0\u0195\0\u13ef"+ + "\0\u1440\0\u1491\0\u14e2\0\u1533\0\u1584\0\u15d5\0\u1626\0\u1677"+ + "\0\u16c8\0\u1719\0\u176a\0\u17bb\0\u180c\0\u185d\0\u18ae\0\u18ff"+ + "\0\u1950\0\u19a1\0\u19f2\0\u1a43\0\u1a94\0\u1ae5\0\u1b36\0\u1b87"+ + "\0\u1bd8\0\u1c29\0\u1c7a\0\u1ccb\0\u1d1c\0\u1d6d\0\u1dbe\0\u1e0f"+ + "\0\u1e60\0\u032a\0\u1eb1\0\u1f02\0\u1f53\0\u1fa4\0\u1ff5\0\u2046"+ + "\0\u2097\0\u20e8\0\u2139\0\u218a\0\u21db\0\u222c\0\u227d\0\u22ce"+ + "\0\u231f\0\u2370\0\u23c1\0\u2412\0\u2463\0\u24b4\0\u2505\0\u2556"+ + "\0\u25a7\0\u25f8\0\u2649\0\u269a\0\u26eb\0\u273c\0\u278d\0\u27de"+ + "\0\u282f\0\u2880\0\u28d1\0\u2922\0\u0195\0\u2973\0\u29c4\0\u0195"+ + "\0\u0195\0\u2a15\0\u0195\0\u2a66\0\u2ab7\0\u2b08\0\u2b59\0\u2baa"+ + "\0\u2bfb\0\u2c4c\0\u2c9d\0\u2cee\0\u2d3f\0\u2d90\0\u2de1\0\u2e32"+ + "\0\u2e83\0\u2ed4\0\u2f25\0\u2f76\0\u2fc7\0\u3018\0\u3069\0\u30ba"+ + "\0\u310b\0\u315c\0\u31ad\0\u31fe\0\u324f\0\u32a0\0\u32f1\0\u3342"+ + "\0\u3393\0\u33e4\0\u3435\0\u3486\0\u34d7\0\u3528\0\u3579\0\u35ca"+ + "\0\u361b\0\u366c\0\u36bd\0\u370e\0\u375f\0\u37b0\0\u3801\0\u3852"+ + "\0\u38a3\0\u38f4\0\u3945\0\u3996\0\u39e7\0\u3a38\0\u3a89\0\u3ada"+ + "\0\u3b2b\0\u3b7c\0\u3bcd\0\u3c1e\0\u3c6f\0\u3cc0\0\u3d11\0\u3d62"+ + "\0\u3db3\0\u3e04\0\u3e55\0\u3ea6\0\u3ef7\0\u3f48\0\u3f99\0\u3fea"+ + "\0\u403b\0\u408c\0\u40dd\0\u412e\0\u417f\0\u41d0\0\u4221\0\u2ab7"+ + "\0\u4272\0\u42c3\0\u4314\0\u4365\0\u43b6\0\u4407\0\u4458\0\u44a9"+ + "\0\u44fa\0\u454b\0\u459c\0\u45ed\0\u463e\0\u468f\0\u46e0\0\u4731"+ + "\0\u4782\0\u47d3\0\u4824\0\u4875\0\u48c6\0\u4917\0\u4968\0\u49b9"+ + "\0\u4a0a\0\u4a5b\0\u4aac\0\u4afd\0\u4b4e\0\u4b9f\0\u4bf0\0\u032a"+ + "\0\u4c41\0\u4c92\0\u4ce3\0\u4d34\0\u4d85\0\u4dd6\0\u4e27\0\u4e78"+ + "\0\u4ec9\0\u4f1a\0\u4f6b\0\u4fbc\0\u500d\0\u505e\0\u50af\0\u5100"+ + "\0\u5151\0\u51a2\0\u51f3\0\u5244\0\u5295\0\u52e6\0\u5337\0\u5388"+ + "\0\u53d9\0\u542a\0\u547b\0\u54cc\0\u551d\0\u032a\0\u556e\0\u55bf"+ + "\0\u5610\0\u5661\0\u56b2\0\u5703\0\u31fe\0\u5754\0\u57a5\0\u57f6"+ + "\0\u5847\0\u5898\0\u58e9\0\u593a\0\u598b\0\u59dc\0\u5a2d\0\u5a7e"+ + "\0\u5acf\0\u5b20\0\u5b71\0\u5bc2\0\u5c13\0\u5c64\0\u5cb5\0\u5d06"+ + "\0\u5d57\0\u5da8\0\u5df9\0\u5e4a\0\u5e9b\0\u5eec\0\u5f3d\0\u5f8e"+ + "\0\u5fdf\0\u6030\0\u6081\0\u60d2\0\u6123\0\u6174\0\u61c5\0\u6216"+ + "\0\u6267\0\u62b8\0\u6309\0\u635a\0\u63ab\0\u63fc\0\u644d\0\u649e"+ + "\0\u64ef\0\u6540\0\u6591\0\u65e2\0\u6633\0\u6684\0\u66d5\0\u6726"+ + "\0\u6777\0\u67c8\0\u6819\0\u686a\0\u68bb\0\u690c\0\u695d\0\u69ae"+ + "\0\u69ff\0\u6a50\0\u6aa1\0\u6af2\0\u6b43\0\u6b94\0\u6be5\0\u6c36"+ + "\0\u6c87\0\u6cd8\0\u6d29\0\u6d7a\0\u6dcb\0\u6e1c\0\u6e6d\0\u6ebe"+ + "\0\u6f0f\0\u6f60\0\u6fb1\0\u7002\0\u7053\0\u70a4\0\u70f5\0\u7146"+ + "\0\u7197\0\u71e8\0\u7239\0\u728a\0\u72db\0\u732c\0\u737d\0\u73ce"+ + "\0\u741f\0\u7470\0\u74c1\0\u7512\0\u7563\0\u75b4\0\u032a\0\u7605"+ + "\0\u7656\0\u76a7\0\u76f8\0\u7749\0\u779a\0\u77eb\0\u783c\0\u788d"+ + "\0\u78de\0\u792f\0\u7980\0\u79d1\0\u7a22\0\u7a73\0\u7ac4\0\u7b15"+ + "\0\u7b66\0\u7bb7\0\u7c08\0\u7c59\0\u7caa\0\u7cfb\0\u7d4c\0\u7d9d"+ + "\0\u7dee\0\u7e3f\0\u7e90\0\u7ee1\0\u032a\0\u7f32\0\u7f83\0\u7fd4"+ + "\0\u8025\0\u8076\0\u80c7\0\u8118\0\u8169\0\u81ba\0\u820b\0\u825c"+ + "\0\u82ad\0\u82fe\0\u834f\0\u83a0\0\u83f1\0\u8442\0\u8493\0\u84e4"+ + "\0\u8535\0\u8586\0\u85d7\0\u8628\0\u8679\0\u86ca\0\u871b\0\u876c"+ + "\0\u87bd\0\u880e\0\u885f\0\u88b0\0\u8901\0\u8952\0\u89a3\0\u89f4"+ + "\0\u8a45\0\u8a96\0\u8ae7\0\u8b38\0\u8b89\0\u8bda\0\u8c2b\0\u8c7c"+ + "\0\u8ccd\0\u8d1e\0\u8d6f\0\u8dc0\0\u8e11\0\u8e62\0\u8eb3\0\u8f04"+ + "\0\u8f55\0\u8fa6\0\u8ff7\0\u9048\0\u9099\0\u90ea\0\u913b\0\u918c"+ + "\0\u91dd\0\u922e\0\u927f\0\u92d0\0\u9321\0\u9372\0\u93c3\0\u9414"+ + "\0\u9465\0\u94b6\0\u9507\0\u9558\0\u95a9\0\u95fa\0\u964b\0\u969c"+ + "\0\u96ed\0\u973e\0\u978f\0\u97e0\0\u9831\0\u9882\0\u98d3\0\u9924"+ + "\0\u9975\0\u99c6"; + + private static int [] zzUnpackRowMap() { + int [] result = new int[514]; + 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\6\1\10\1\11\1\12\1\13\1\6"+ + "\1\14\1\15\2\13\1\16\3\15\1\17\1\20\1\21"+ + "\1\22\1\23\1\24\1\6\1\25\1\26\1\27\1\30"+ + "\1\31\1\32\1\13\1\33\1\34\1\35\3\13\1\36"+ + "\1\13\1\37\2\13\1\40\1\41\1\42\1\43\1\44"+ + "\1\13\1\45\1\46\1\47\1\50\1\51\1\13\1\52"+ + "\1\53\1\54\1\55\1\13\1\56\1\57\1\60\2\13"+ + "\1\61\1\62\1\63\1\64\1\65\1\66\1\67\1\70"+ + "\1\12\1\71\1\72\1\12\1\70\1\73\1\74\1\75"+ + "\1\6\1\13\1\76\1\77\1\100\21\76\1\101\1\76"+ + "\1\102\72\76\1\103\1\77\1\100\22\103\1\101\1\104"+ + "\72\103\5\105\1\106\111\105\1\107\1\105\5\110\1\111"+ + "\4\110\3\112\3\110\1\112\1\110\1\112\4\110\51\112"+ + "\20\110\1\112\123\0\1\6\121\0\1\10\121\0\1\113"+ + "\1\114\101\0\1\70\120\0\1\70\17\0\13\13\1\0"+ + "\1\13\4\0\51\13\20\0\1\13\10\0\1\115\1\116"+ + "\1\117\1\120\1\0\1\121\1\122\1\121\1\117\1\123"+ + "\1\124\13\0\1\117\1\124\6\0\1\117\1\0\1\120"+ + "\1\117\7\0\1\117\47\0\2\15\1\117\2\0\3\15"+ + "\1\117\1\123\1\124\13\0\1\117\1\124\6\0\1\117"+ + "\2\0\1\117\7\0\1\117\45\0\13\13\1\0\1\13"+ + "\4\0\4\13\1\125\44\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\7\13\1\126\41\13\20\0\1\13"+ + "\10\0\2\123\3\0\3\123\107\0\13\13\1\0\1\13"+ + "\4\0\21\13\1\127\22\13\1\130\4\13\20\0\1\13"+ + "\23\0\1\70\63\0\1\70\17\0\13\13\1\0\1\13"+ + "\4\0\1\13\1\131\47\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\4\13\1\132\1\13\1\133\4\13"+ + "\1\134\35\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\3\13\1\135\7\13\1\136\1\137\1\13\1\140"+ + "\7\13\1\141\22\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\4\13\1\142\7\13\1\143\34\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\10\13\1\144"+ + "\40\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\1\145\5\13\1\146\1\147\4\13\1\150\34\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\6\13\1\151"+ + "\42\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\7\13\1\152\1\13\1\153\7\13\1\154\27\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\1\155\7\13"+ + "\1\156\5\13\1\157\32\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\11\13\1\160\6\13\1\161\1\13"+ + "\1\162\26\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\6\13\1\163\1\13\1\164\40\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\1\165\5\13\1\166"+ + "\1\167\5\13\1\170\33\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\1\171\3\13\1\172\11\13\1\173"+ + "\32\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\6\13\1\174\42\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\6\13\1\175\42\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\14\13\1\176\34\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\6\13\1\177"+ + "\4\13\1\200\35\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\6\13\1\201\1\202\4\13\1\203\34\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\6\13"+ + "\1\204\42\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\7\13\1\205\1\13\1\206\37\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\1\13\1\207\47\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\3\13"+ + "\1\210\4\13\1\211\3\13\1\212\34\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\6\13\1\213\42\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\6\13"+ + "\1\214\1\13\1\215\5\13\1\216\32\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\1\217\50\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\14\13\1\220"+ + "\34\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\16\13\1\221\32\13\20\0\1\13\6\0\6\13\1\222"+ + "\4\13\1\0\1\13\4\0\51\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\11\13\1\223\37\13\20\0"+ + "\1\13\107\0\1\70\1\224\117\0\1\70\1\0\1\12"+ + "\116\0\1\70\4\0\1\70\113\0\1\70\5\0\1\70"+ + "\112\0\1\70\6\0\1\70\2\0\1\76\2\0\21\76"+ + "\1\0\1\76\1\0\72\76\2\0\1\100\116\0\2\225"+ + "\1\0\5\225\1\226\4\225\2\226\1\227\101\225\1\103"+ + "\2\0\22\103\2\0\72\103\2\225\1\0\116\225\4\0"+ + "\1\230\126\0\3\112\3\0\1\112\1\0\1\112\4\0"+ + "\51\112\13\0\1\231\4\0\1\112\1\113\1\232\1\233"+ + "\116\113\5\234\1\235\113\234\10\0\1\115\1\116\1\117"+ + "\2\0\1\121\1\122\1\121\1\117\1\123\1\124\13\0"+ + "\1\117\1\124\6\0\1\117\2\0\1\117\7\0\1\117"+ + "\47\0\2\116\3\0\3\116\1\117\1\123\1\124\14\0"+ + "\1\124\6\0\1\117\2\0\1\117\7\0\1\117\47\0"+ + "\1\236\1\237\2\0\5\237\1\0\1\237\4\0\2\237"+ + "\3\0\1\237\2\0\1\237\6\0\1\237\2\0\1\237"+ + "\5\0\3\237\47\0\1\240\1\116\1\117\2\0\3\240"+ + "\1\117\1\123\1\124\13\0\1\117\1\124\6\0\1\117"+ + "\2\0\1\117\7\0\1\117\47\0\1\121\1\116\1\117"+ + "\2\0\3\121\1\117\1\123\1\124\13\0\1\117\1\124"+ + "\6\0\1\117\2\0\1\117\7\0\1\117\47\0\2\123"+ + "\3\0\3\123\1\117\1\0\1\124\14\0\1\124\6\0"+ + "\1\117\2\0\1\117\7\0\1\117\47\0\2\241\3\0"+ + "\3\241\3\0\1\242\72\0\1\242\10\0\13\13\1\0"+ + "\1\13\4\0\4\13\1\243\10\13\1\244\33\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\6\13\1\245"+ + "\42\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\5\13\1\246\43\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\44\13\1\247\4\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\2\13\1\250\46\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\10\13\1\251"+ + "\40\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\6\13\1\252\42\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\3\13\1\253\45\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\1\254\3\13\1\255\44\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\11\13"+ + "\1\256\37\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\6\13\1\257\42\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\23\13\1\260\25\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\15\13\1\261\33\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\1\262"+ + "\12\13\1\162\2\13\1\253\32\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\4\13\1\263\10\13\1\264"+ + "\33\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\3\13\1\265\45\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\2\13\1\253\1\266\45\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\11\13\1\267\37\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\1\270"+ + "\50\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\1\166\50\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\11\13\1\271\37\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\2\13\1\253\46\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\16\13\1\272\32\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\3\13"+ + "\1\273\45\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\3\13\1\274\45\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\26\13\1\162\22\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\7\13\1\275\41\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\2\13"+ + "\1\276\1\277\45\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\23\13\1\300\25\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\16\13\1\301\32\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\22\13\1\302"+ + "\26\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\7\13\1\152\41\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\4\13\1\162\44\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\6\13\1\303\42\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\11\13\1\304"+ + "\37\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\5\13\1\305\43\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\6\13\1\306\6\13\1\307\33\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\1\13\1\310"+ + "\47\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\3\13\1\311\45\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\7\13\1\312\5\13\1\313\33\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\15\13\1\314"+ + "\33\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\6\13\1\315\42\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\3\13\1\316\45\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\20\13\1\317\30\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\1\320\5\13"+ + "\1\321\42\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\1\322\50\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\16\13\1\323\32\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\7\13\1\324\41\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\2\13\1\325"+ + "\1\326\13\13\1\327\31\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\35\13\1\330\13\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\4\13\1\331\44\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\4\13"+ + "\1\332\1\333\43\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\6\13\1\334\42\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\15\13\1\335\33\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\36\13\1\336"+ + "\12\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\24\13\1\337\24\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\7\13\1\340\10\13\1\341\30\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\5\13\1\342"+ + "\43\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\4\13\1\343\44\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\11\13\1\344\37\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\44\13\1\345\4\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\2\13\1\346"+ + "\46\13\20\0\1\13\107\0\1\70\1\12\20\0\1\227"+ + "\4\0\3\227\111\0\1\231\4\0\3\231\103\0\1\233"+ + "\116\0\5\234\1\347\113\234\4\0\1\233\1\350\123\0"+ + "\1\236\1\237\1\117\1\0\5\237\1\0\1\237\4\0"+ + "\2\237\3\0\1\237\1\0\1\117\1\237\6\0\1\237"+ + "\2\0\1\237\5\0\3\237\47\0\2\351\1\117\1\0"+ + "\5\351\1\0\1\351\4\0\2\351\3\0\1\351\1\0"+ + "\1\117\1\351\6\0\1\351\2\0\1\351\5\0\3\351"+ + "\47\0\1\352\1\116\1\117\2\0\3\352\1\117\1\123"+ + "\1\124\13\0\1\117\1\124\6\0\1\117\2\0\1\117"+ + "\7\0\1\117\47\0\2\241\3\0\3\241\1\117\25\0"+ + "\1\117\2\0\1\117\7\0\1\117\47\0\2\241\3\0"+ + "\3\241\107\0\13\13\1\0\1\13\4\0\1\353\50\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\3\13"+ + "\1\354\45\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\1\355\50\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\10\13\1\356\40\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\34\13\1\357\14\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\3\13\1\360"+ + "\45\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\1\361\50\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\7\13\1\362\41\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\10\13\1\162\40\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\3\13\1\363\45\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\15\13"+ + "\1\364\33\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\5\13\1\365\43\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\4\13\1\366\44\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\10\13\1\166\40\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\3\13"+ + "\1\266\45\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\11\13\1\367\37\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\6\13\1\370\42\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\2\13\1\162\46\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\16\13"+ + "\1\371\32\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\5\13\1\372\43\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\2\13\1\366\1\373\45\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\2\13\1\264"+ + "\46\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\24\13\1\162\24\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\20\13\1\162\30\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\10\13\1\374\40\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\15\13\1\375"+ + "\33\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\7\13\1\162\41\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\3\13\1\376\45\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\10\13\1\377\40\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\6\13\1\257"+ + "\1\u0100\41\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\1\13\1\314\47\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\1\u0101\50\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\1\366\50\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\1\u0102\50\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\12\13\1\u0103"+ + "\36\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\3\13\1\u0104\45\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\25\13\1\u0105\23\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\7\13\1\363\41\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\6\13\1\162"+ + "\42\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\1\u0106\50\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\17\13\1\162\31\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\7\13\1\253\41\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\7\13\1\u0107\41\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\10\13"+ + "\1\u0108\40\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\23\13\1\u0109\25\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\2\13\1\u010a\46\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\11\13\1\u010b\37\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\4\13"+ + "\1\u010c\44\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\1\13\1\u010d\47\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\10\13\1\u010e\40\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\3\13\1\u010f\45\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\10\13"+ + "\1\u0110\40\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\10\13\1\u0111\40\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\10\13\1\u0112\40\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\15\13\1\u0113\33\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\15\13"+ + "\1\u0114\33\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\16\13\1\u0115\32\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\4\13\1\355\44\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\17\13\1\u0108\31\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\16\13"+ + "\1\u0116\32\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\1\u0117\50\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\7\13\1\u0118\41\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\1\13\1\u0119\47\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\12\13\1\u011a"+ + "\36\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\6\13\1\u011b\1\13\1\u011c\40\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\3\13\1\u011d\5\13\1\u011e"+ + "\37\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\40\13\1\u011f\10\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\16\13\1\u0120\32\13\20\0\1\13\4\234"+ + "\1\233\1\347\113\234\10\0\2\u0121\1\117\1\0\5\u0121"+ + "\1\0\1\u0121\4\0\2\u0121\3\0\1\u0121\1\0\1\117"+ + "\1\u0121\6\0\1\u0121\2\0\1\u0121\5\0\3\u0121\47\0"+ + "\1\u0122\1\116\1\117\2\0\3\u0122\1\117\1\123\1\124"+ + "\13\0\1\117\1\124\6\0\1\117\2\0\1\117\7\0"+ + "\1\117\45\0\13\13\1\0\1\13\4\0\13\13\1\u0123"+ + "\35\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\14\13\1\u0124\34\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\3\13\1\u0108\45\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\23\13\1\u0125\25\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\44\13\1\u0126"+ + "\4\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\4\13\1\u0127\44\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\12\13\1\162\36\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\10\13\1\u0128\40\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\15\13\1\u0129"+ + "\33\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\5\13\1\u012a\43\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\14\13\1\u012b\34\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\3\13\1\162\45\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\2\13\1\u012c"+ + "\46\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\26\13\1\u012d\22\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\4\13\1\u012e\44\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\14\13\1\162\34\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\15\13\1\u012f"+ + "\33\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\11\13\1\u0130\37\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\25\13\1\253\23\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\1\u0131\50\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\4\13\1\u0132\44\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\10\13"+ + "\1\u0133\40\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\16\13\1\u0134\32\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\7\13\1\u0135\41\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\1\u0136\50\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\10\13\1\u0137"+ + "\40\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\1\134\50\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\3\13\1\176\45\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\10\13\1\u0138\40\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\1\u0139\50\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\2\13\1\u013a"+ + "\46\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\10\13\1\u013b\40\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\1\u013c\35\13\1\u013d\12\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\7\13\1\316\41\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\24\13"+ + "\1\u013e\24\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\1\u013f\50\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\4\13\1\u0140\17\13\1\u0141\24\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\21\13\1\u0142"+ + "\27\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\5\13\1\355\43\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\11\13\1\u0143\37\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\1\u0144\50\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\4\13\1\u0145\44\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\5\13"+ + "\1\u0146\43\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\3\13\1\u0147\45\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\41\13\1\u0148\7\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\10\13\1\u0149\40\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\1\u014a"+ + "\50\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\26\13\1\u011e\22\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\1\335\50\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\15\13\1\u014b\33\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\1\323\50\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\33\13\1\u014c"+ + "\15\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\23\13\1\u014d\25\13\20\0\1\13\10\0\2\u014e\1\117"+ + "\1\0\5\u014e\1\0\1\u014e\4\0\2\u014e\3\0\1\u014e"+ + "\1\0\1\117\1\u014e\6\0\1\u014e\2\0\1\u014e\5\0"+ + "\3\u014e\47\0\1\u014f\1\116\1\117\2\0\3\u014f\1\117"+ + "\1\123\1\124\13\0\1\117\1\124\6\0\1\117\2\0"+ + "\1\117\7\0\1\117\45\0\13\13\1\0\1\13\4\0"+ + "\33\13\1\u0150\15\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\20\13\1\u0151\30\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\3\13\1\u0152\45\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\1\u0153\50\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\1\u012e"+ + "\50\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\5\13\1\162\43\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\3\13\1\u0154\45\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\4\13\1\u0155\44\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\15\13\1\u0156"+ + "\33\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\11\13\1\162\37\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\11\13\1\u0157\37\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\17\13\1\264\31\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\11\13\1\u0158"+ + "\37\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\22\13\1\u0159\26\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\20\13\1\u015a\30\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\7\13\1\366\41\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\7\13\1\u015b"+ + "\41\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\24\13\1\253\24\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\5\13\1\u015c\43\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\1\u015d\50\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\4\13\1\u011e\44\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\31\13"+ + "\1\u015e\6\13\1\u015f\10\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\1\323\37\13\1\u0160\10\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\5\13\1\u0161"+ + "\43\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\10\13\1\u0162\40\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\1\u0163\50\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\11\13\1\u0164\37\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\4\13\1\u0165\44\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\10\13"+ + "\1\u0166\40\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\34\13\1\u0167\14\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\24\13\1\u0168\24\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\7\13\1\u0169\41\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\15\13"+ + "\1\u016a\33\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\14\13\1\u016b\34\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\15\13\1\u016c\33\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\6\13\1\u016d\42\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\4\13"+ + "\1\u016e\44\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\24\13\1\316\24\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\20\13\1\u016f\30\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\40\13\1\u0170\10\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\23\13"+ + "\1\u0171\25\13\20\0\1\13\10\0\2\u0172\1\117\1\0"+ + "\5\u0172\1\0\1\u0172\4\0\2\u0172\3\0\1\u0172\1\0"+ + "\1\117\1\u0172\6\0\1\u0172\2\0\1\u0172\5\0\3\u0172"+ + "\47\0\1\u0173\1\116\1\117\2\0\3\u0173\1\117\1\123"+ + "\1\124\13\0\1\117\1\124\6\0\1\117\2\0\1\117"+ + "\7\0\1\117\45\0\13\13\1\0\1\13\4\0\11\13"+ + "\1\u0174\37\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\10\13\1\u0175\40\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\15\13\1\u0176\33\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\5\13\1\366\43\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\22\13"+ + "\1\u0177\26\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\6\13\1\u0178\42\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\10\13\1\u0179\40\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\16\13\1\253\32\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\5\13"+ + "\1\u017a\43\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\1\u017b\50\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\10\13\1\u017c\40\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\13\13\1\162\35\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\3\13\1\u017d"+ + "\45\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\11\13\1\u0108\37\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\1\u017e\50\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\6\13\1\u017f\42\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\6\13\1\u0180\42\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\3\13"+ + "\1\u0141\45\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\42\13\1\u0181\6\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\7\13\1\u0182\41\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\3\13\1\u0183\45\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\16\13"+ + "\1\u0184\32\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\4\13\1\u0108\44\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\16\13\1\u0185\32\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\30\13\1\u0186\2\13"+ + "\1\u0150\15\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\15\13\1\u0187\33\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\3\13\1\u0188\45\13\20\0\1\13"+ + "\6\0\12\13\1\u0189\1\0\1\13\4\0\47\13\1\u018a"+ + "\1\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\25\13\1\u018b\23\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\15\13\1\u018c\33\13\20\0\1\13\6\0"+ + "\12\13\1\u018d\1\0\1\13\4\0\51\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\10\13\1\u018e\40\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\46\13"+ + "\1\u018f\2\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\6\13\1\u0190\42\13\20\0\1\13\10\0\2\u0191"+ + "\1\117\1\0\5\u0191\1\0\1\u0191\4\0\2\u0191\3\0"+ + "\1\u0191\1\0\1\117\1\u0191\6\0\1\u0191\2\0\1\u0191"+ + "\5\0\3\u0191\47\0\1\u0192\1\116\1\117\2\0\3\u0192"+ + "\1\117\1\123\1\124\13\0\1\117\1\124\6\0\1\117"+ + "\2\0\1\117\7\0\1\117\45\0\13\13\1\0\1\13"+ + "\4\0\17\13\1\327\31\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\3\13\1\u0193\45\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\6\13\1\u0194\42\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\23\13"+ + "\1\162\25\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\11\13\1\u0195\37\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\11\13\1\366\37\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\10\13\1\u0196\40\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\5\13"+ + "\1\253\43\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\11\13\1\u0197\37\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\10\13\1\313\40\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\2\13\1\u0198\46\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\3\13"+ + "\1\u0199\45\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\3\13\1\u019a\45\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\16\13\1\u019b\32\13\20\0\1\13"+ + "\6\0\6\13\1\u019c\4\13\1\0\1\13\4\0\36\13"+ + "\1\u019d\4\13\1\u019e\5\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\15\13\1\u019f\33\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\23\13\1\u01a0\25\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\3\13"+ + "\1\u01a1\45\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\16\13\1\u01a2\32\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\27\13\1\u011e\21\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\13\13\1\u018e\35\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\15\13"+ + "\1\u01a3\33\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\10\13\1\u01a4\40\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\10\13\1\u01a5\40\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\11\13\1\u01a6\37\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\6\13"+ + "\1\u01a7\42\13\20\0\1\13\6\0\13\13\1\0\1\u01a8"+ + "\4\0\51\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\4\13\1\u01a9\44\13\20\0\1\13\10\0\2\u01aa"+ + "\1\117\1\0\5\u01aa\1\0\1\u01aa\4\0\2\u01aa\3\0"+ + "\1\u01aa\1\0\1\117\1\u01aa\6\0\1\u01aa\2\0\1\u01aa"+ + "\5\0\3\u01aa\47\0\1\u01ab\1\116\1\117\2\0\3\u01ab"+ + "\1\117\1\123\1\124\13\0\1\117\1\124\6\0\1\117"+ + "\2\0\1\117\7\0\1\117\45\0\13\13\1\0\1\13"+ + "\4\0\15\13\1\u01ac\33\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\11\13\1\u01ad\37\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\15\13\1\u01ae\33\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\6\13"+ + "\1\u01af\42\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\3\13\1\264\45\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\3\13\1\u018e\45\13\20\0\1\13"+ + "\6\0\12\13\1\u01b0\1\0\1\13\4\0\51\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\36\13\1\u01b1"+ + "\12\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\10\13\1\u01b2\40\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\4\13\1\u01b3\1\u01b4\43\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\3\13\1\u01b5\45\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\14\13"+ + "\1\u01b6\34\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\1\u01b7\50\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\3\13\1\u01b8\45\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\34\13\1\u01b9\14\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\15\13\1\u01ba"+ + "\4\13\1\u01bb\26\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\10\13\1\u01bc\40\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\3\13\1\u01bd\45\13\20\0"+ + "\1\13\6\0\6\13\1\u01be\4\13\1\0\1\13\4\0"+ + "\51\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\3\13\1\u01bf\45\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\4\13\1\u01c0\44\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\21\13\1\127\27\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\3\13\1\u01c1"+ + "\45\13\20\0\1\13\10\0\2\u01c2\1\117\1\0\5\u01c2"+ + "\1\0\1\u01c2\4\0\2\u01c2\3\0\1\u01c2\1\0\1\117"+ + "\1\u01c2\6\0\1\u01c2\2\0\1\u01c2\5\0\3\u01c2\47\0"+ + "\1\u01c3\1\116\1\117\2\0\3\u01c3\1\117\1\123\1\124"+ + "\13\0\1\117\1\124\6\0\1\117\2\0\1\117\7\0"+ + "\1\117\45\0\13\13\1\0\1\13\4\0\5\13\1\u018e"+ + "\43\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\27\13\1\u017d\21\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\22\13\1\162\26\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\6\13\1\u01c4\42\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\16\13\1\u01c5"+ + "\32\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\11\13\1\u01c6\37\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\24\13\1\u01c7\24\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\5\13\1\u01c8\43\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\1\u01c9\50\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\4\13"+ + "\1\u01ca\44\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\3\13\1\u01cb\45\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\10\13\1\u01cc\40\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\22\13\1\u01cd\26\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\7\13"+ + "\1\u01ce\41\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\22\13\1\u0141\26\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\7\13\1\u01cc\41\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\14\13\1\u01cf\34\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\4\13"+ + "\1\u01d0\44\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\10\13\1\u01d1\40\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\20\13\1\u01d2\30\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\10\13\1\u01d3\40\13"+ + "\20\0\1\13\10\0\2\u01d4\1\117\1\0\5\u01d4\1\0"+ + "\1\u01d4\4\0\2\u01d4\3\0\1\u01d4\1\0\1\117\1\u01d4"+ + "\6\0\1\u01d4\2\0\1\u01d4\5\0\3\u01d4\47\0\1\u01d5"+ + "\1\116\1\117\2\0\3\u01d5\1\117\1\123\1\124\13\0"+ + "\1\117\1\124\6\0\1\117\2\0\1\117\7\0\1\117"+ + "\45\0\13\13\1\0\1\13\4\0\16\13\1\u01d6\32\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\23\13"+ + "\1\u01d7\25\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\5\13\1\316\43\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\16\13\1\u01d8\32\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\10\13\1\u01d9\40\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\3\13"+ + "\1\u016f\45\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\10\13\1\u01da\40\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\15\13\1\u01db\33\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\17\13\1\u018e\31\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\30\13"+ + "\1\u01dc\20\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\17\13\1\u0141\31\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\6\13\1\u01cc\42\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\4\13\1\u01dd\44\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\4\13"+ + "\1\u018e\44\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\1\u0198\50\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\17\13\1\u01de\31\13\20\0\1\13\10\0"+ + "\2\u01df\1\117\1\0\5\u01df\1\0\1\u01df\4\0\2\u01df"+ + "\3\0\1\u01df\1\0\1\117\1\u01df\6\0\1\u01df\2\0"+ + "\1\u01df\5\0\3\u01df\47\0\1\u01e0\1\116\1\117\2\0"+ + "\3\u01e0\1\117\1\123\1\124\13\0\1\117\1\124\6\0"+ + "\1\117\2\0\1\117\7\0\1\117\45\0\13\13\1\0"+ + "\1\13\4\0\11\13\1\u01cc\37\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\23\13\1\u01e1\25\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\20\13\1\u01e2"+ + "\30\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\2\13\1\u01e3\46\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\1\u01e4\50\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\6\13\1\u01e5\42\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\6\13\1\u01e6\42\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\1\u01e7"+ + "\50\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\34\13\1\u01e8\14\13\20\0\1\13\10\0\2\u01e9\1\117"+ + "\1\0\5\u01e9\1\0\1\u01e9\4\0\2\u01e9\3\0\1\u01e9"+ + "\1\0\1\117\1\u01e9\6\0\1\u01e9\2\0\1\u01e9\5\0"+ + "\3\u01e9\47\0\1\u01ea\1\116\1\117\2\0\3\u01ea\1\117"+ + "\1\123\1\124\13\0\1\117\1\124\6\0\1\117\2\0"+ + "\1\117\7\0\1\117\45\0\13\13\1\0\1\13\4\0"+ + "\6\13\1\u01eb\42\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\10\13\1\u01ec\40\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\2\13\1\u018e\46\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\17\13\1\u01ed"+ + "\31\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\11\13\1\u018e\37\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\16\13\1\u01ee\32\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\13\13\1\u01ef\35\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\23\13\1\u01f0"+ + "\25\13\20\0\1\13\10\0\2\u01f1\1\117\1\0\5\u01f1"+ + "\1\0\1\u01f1\4\0\2\u01f1\3\0\1\u01f1\1\0\1\117"+ + "\1\u01f1\6\0\1\u01f1\2\0\1\u01f1\5\0\3\u01f1\47\0"+ + "\1\u01f2\1\116\1\117\2\0\3\u01f2\1\117\1\123\1\124"+ + "\13\0\1\117\1\124\6\0\1\117\2\0\1\117\7\0"+ + "\1\117\45\0\13\13\1\0\1\13\4\0\4\13\1\u01a0"+ + "\44\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\11\13\1\u0198\37\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\36\13\1\u019d\12\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\11\13\1\u01f3\37\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\36\13\1\u01f4"+ + "\12\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\10\13\1\u01f5\40\13\20\0\1\13\10\0\2\u01f6\1\117"+ + "\1\0\5\u01f6\1\0\1\u01f6\4\0\2\u01f6\3\0\1\u01f6"+ + "\1\0\1\117\1\u01f6\6\0\1\u01f6\2\0\1\u01f6\5\0"+ + "\3\u01f6\47\0\1\u01f7\1\116\1\117\2\0\3\u01f7\1\117"+ + "\1\123\1\124\13\0\1\117\1\124\6\0\1\117\2\0"+ + "\1\117\7\0\1\117\45\0\13\13\1\0\1\13\4\0"+ + "\17\13\1\u01e3\31\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\15\13\1\u01f8\33\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\4\13\1\u019f\44\13\20\0"+ + "\1\13\10\0\2\u01f9\1\117\1\0\5\u01f9\1\0\1\u01f9"+ + "\4\0\2\u01f9\3\0\1\u01f9\1\0\1\117\1\u01f9\6\0"+ + "\1\u01f9\2\0\1\u01f9\5\0\3\u01f9\47\0\1\u01fa\1\116"+ + "\1\117\2\0\3\u01fa\1\117\1\123\1\124\13\0\1\117"+ + "\1\124\6\0\1\117\2\0\1\117\7\0\1\117\45\0"+ + "\13\13\1\0\1\13\4\0\27\13\1\u016f\21\13\20\0"+ + "\1\13\10\0\2\u01fb\1\117\1\0\5\u01fb\1\0\1\u01fb"+ + "\4\0\2\u01fb\3\0\1\u01fb\1\0\1\117\1\u01fb\6\0"+ + "\1\u01fb\2\0\1\u01fb\5\0\3\u01fb\47\0\1\u01fc\1\116"+ + "\1\117\2\0\3\u01fc\1\117\1\123\1\124\13\0\1\117"+ + "\1\124\6\0\1\117\2\0\1\117\7\0\1\117\47\0"+ + "\2\u01fd\1\117\1\0\5\u01fd\1\0\1\u01fd\4\0\2\u01fd"+ + "\3\0\1\u01fd\1\0\1\117\1\u01fd\6\0\1\u01fd\2\0"+ + "\1\u01fd\5\0\3\u01fd\47\0\1\u01fe\1\116\1\117\2\0"+ + "\3\u01fe\1\117\1\123\1\124\13\0\1\117\1\124\6\0"+ + "\1\117\2\0\1\117\7\0\1\117\51\0\1\117\23\0"+ + "\1\117\72\0\1\u01ff\1\116\1\117\2\0\3\u01ff\1\117"+ + "\1\123\1\124\13\0\1\117\1\124\6\0\1\117\2\0"+ + "\1\117\7\0\1\117\47\0\1\u0200\1\116\1\117\2\0"+ + "\3\u0200\1\117\1\123\1\124\13\0\1\117\1\124\6\0"+ + "\1\117\2\0\1\117\7\0\1\117\47\0\1\u0201\1\116"+ + "\1\117\2\0\3\u0201\1\117\1\123\1\124\13\0\1\117"+ + "\1\124\6\0\1\117\2\0\1\117\7\0\1\117\47\0"+ + "\1\u0202\1\116\1\117\2\0\3\u0202\1\117\1\123\1\124"+ + "\13\0\1\117\1\124\6\0\1\117\2\0\1\117\7\0"+ + "\1\117\47\0\2\116\1\117\2\0\3\116\1\117\1\123"+ + "\1\124\13\0\1\117\1\124\6\0\1\117\2\0\1\117"+ + "\7\0\1\117\37\0"; + + private static int [] zzUnpackTrans() { + int [] result = new int[39447]; + 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\1\11\14\1\2\11\35\1\7\11\7\1\2\11"+ + "\3\1\1\11\1\1\2\11\3\1\1\0\2\1\1\11"+ + "\1\0\3\1\1\0\100\1\1\11\2\1\2\11\1\1"+ + "\1\11\1\0\5\1\1\0\104\1\2\0\353\1\1\0"+ + "\12\1\1\0\11\1\1\0\7\1\1\0\4\1\1\0"+ + "\2\1\1\0\1\1\1\0\1\1\1\0\5\1"; + + private static int [] zzUnpackAttribute() { + int [] result = new int[514]; + 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[] = new char[ZZ_BUFFERSIZE]; + + /** 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; + + /** number of newlines encountered up to the start of the matched text */ + private int yyline; + + /** the number of characters up to the start of the matched text */ + private int yychar; + + /** + * the number of characters from the last newline up to the start of the + * matched text + */ + private int yycolumn; + + /** + * 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; + + /** denotes if the user-EOF-code has already been executed */ + private boolean zzEOFDone; + + /* user code: */ + /** + * Create an empty lexer, yyrset will be called later to reset and assign + * the reader + */ + public JavaLexer() { + super(); + } + + @Override + public int yychar() { + return yychar; + } + + private static final byte PARAN = 1; + private static final byte BRACKET = 2; + private static final byte CURLY = 3; + + + + /** + * 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 JavaLexer(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 JavaLexer(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 < 1830) { + int count = packed.charAt(i++); + char value = packed.charAt(i++); + do map[j++] = value; while (--count > 0); + } + return map; + } + + + /** + * Refills the input buffer. + * + * @return false, iff there was new input. + * + * @exception java.io.IOException if any I/O-Error occurs + */ + private boolean zzRefill() throws java.io.IOException { + + /* first: make room (if you can) */ + if (zzStartRead > 0) { + System.arraycopy(zzBuffer, zzStartRead, + zzBuffer, 0, + zzEndRead-zzStartRead); + + /* translate stored positions */ + zzEndRead-= zzStartRead; + zzCurrentPos-= zzStartRead; + zzMarkedPos-= zzStartRead; + zzStartRead = 0; + } + + /* is the buffer big enough? */ + if (zzCurrentPos >= zzBuffer.length) { + /* if not: blow it up */ + char newBuffer[] = new char[zzCurrentPos*2]; + System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); + zzBuffer = newBuffer; + } + + /* finally: fill the buffer with new input */ + int numRead = zzReader.read(zzBuffer, zzEndRead, + zzBuffer.length-zzEndRead); + + if (numRead > 0) { + zzEndRead+= numRead; + return false; + } + // unlikely but not impossible: read 0 characters, but not at end of stream + if (numRead == 0) { + int c = zzReader.read(); + if (c == -1) { + return true; + } else { + zzBuffer[zzEndRead++] = (char) c; + return false; + } + } + + // numRead < 0 + return true; + } + + + /** + * 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(); + } + + + /** + * 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 ZZ_INITIAL. + * + * @param reader the new input stream + */ + public final void yyreset(java.io.Reader reader) { + zzReader = reader; + zzAtBOL = true; + zzAtEOF = false; + zzEOFDone = false; + zzEndRead = zzStartRead = 0; + zzCurrentPos = zzMarkedPos = 0; + yyline = yychar = yycolumn = 0; + zzLexicalState = YYINITIAL; + } + + + /** + * Returns the current lexical state. + */ + public final int yystate() { + return zzLexicalState; + } + + + /** + * Enters a new lexical state + * + * @param newState the new lexical state + */ + 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 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; + + yychar+= zzMarkedPosL-zzStartRead; + + zzAction = -1; + + zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; + + 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 8: + { return token(TokenType.OPERATOR, -PARAN); + } + case 28: break; + case 20: + { return token(TokenType.KEYWORD); + } + case 29: break; + case 4: + { return token(TokenType.NUMBER); + } + case 30: break; + case 18: + { yybegin(JDOC); + // length also includes the trailing quote + int start = tokenStart; + tokenStart = yychar; + int len = tokenLength; + tokenLength = 1; + return token(TokenType.COMMENT2, start, len); + } + case 31: break; + case 22: + { yybegin(YYINITIAL); + return token(TokenType.COMMENT, tokenStart, tokenLength + 2); + } + case 32: break; + case 2: + { return token(TokenType.OPERATOR); + } + case 33: break; + case 9: + { return token(TokenType.OPERATOR, CURLY); + } + case 34: break; + case 10: + { return token(TokenType.OPERATOR, -CURLY); + } + case 35: break; + case 17: + { yybegin(JDOC_TAG); + int start = tokenStart; + tokenStart = yychar; + int len = tokenLength; + tokenLength = 1; + return token(TokenType.COMMENT, start, len); + } + case 36: break; + case 13: + { tokenLength += yylength(); + } + case 37: break; + case 14: + { yybegin(YYINITIAL); + } + case 38: break; + case 6: + { yybegin(CHARLITERAL); + tokenStart = yychar; + tokenLength = 1; + } + case 39: break; + case 23: + { yybegin(JDOC); + tokenStart = yychar; + tokenLength = 3; + } + case 40: break; + case 15: + { yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + case 41: break; + case 24: + { return token(TokenType.TYPE); + } + case 42: break; + case 26: + { return token(TokenType.WARNING); + } + case 43: break; + case 12: + { return token(TokenType.OPERATOR, -BRACKET); + } + case 44: break; + case 7: + { return token(TokenType.OPERATOR, PARAN); + } + case 45: break; + case 3: + { return token(TokenType.IDENTIFIER); + } + case 46: break; + case 21: + { tokenLength += 2; + } + case 47: break; + case 27: + { return token(TokenType.TYPE2); + } + case 48: break; + case 25: + { return token(TokenType.ERROR); + } + case 49: break; + case 16: + { tokenLength ++; + } + case 50: break; + case 11: + { return token(TokenType.OPERATOR, BRACKET); + } + case 51: break; + case 19: + { return token(TokenType.COMMENT); + } + case 52: break; + case 5: + { yybegin(STRING); + tokenStart = yychar; + tokenLength = 1; + } + case 53: break; + case 1: + { + } + case 54: break; + default: + if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { + zzAtEOF = true; + { + return null; + } + } + else { + zzScanError(ZZ_NO_MATCH); + } + } + } + } + + +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/JavaScriptLexer.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/JavaScriptLexer.java new file mode 100644 index 000000000..fd7104d83 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/JavaScriptLexer.java @@ -0,0 +1,1096 @@ +/* The following code was generated by JFlex 1.4.3 on 21.7.10 18:14 */ + +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jsyntaxpane.lexers; + + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + + +/** + * This class is a scanner generated by + * JFlex 1.4.3 + * on 21.7.10 18:14 from the specification file + * D:/Dokumenty/Programovani/JavaSE/JPSWFDec/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/javascript.flex + */ +public final class JavaScriptLexer extends DefaultJFlexLexer { + + /** This character denotes the end of file */ + public static final int YYEOF = -1; + + /** initial size of the lookahead buffer */ + private static final int ZZ_BUFFERSIZE = 16384; + + /** lexical states */ + public static final int STRING = 2; + public static final int YYINITIAL = 0; + public static final int SSTRING = 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, 0, 1, 1, 2, 2 + }; + + /** + * Translates characters to character classes + */ + private static final String ZZ_CMAP_PACKED = + "\11\7\1\3\1\2\1\0\1\3\1\1\16\7\4\0\1\3\1\104"+ + "\1\24\1\0\1\6\1\104\1\105\1\25\1\72\1\73\1\5\1\107"+ + "\1\100\1\23\1\21\1\4\1\10\1\16\2\15\4\17\2\11\1\71"+ + "\1\100\1\103\1\101\1\102\1\100\1\0\1\62\1\63\1\57\1\14"+ + "\1\22\1\20\2\6\1\53\2\6\1\12\1\64\1\54\1\65\2\6"+ + "\1\56\1\70\1\6\1\55\2\6\1\13\2\6\1\76\1\26\1\77"+ + "\1\104\1\6\1\0\1\32\1\27\1\34\1\44\1\31\1\46\1\51"+ + "\1\37\1\42\1\66\1\33\1\45\1\60\1\41\1\40\1\61\1\6"+ + "\1\30\1\35\1\36\1\43\1\52\1\50\1\67\1\47\1\6\1\74"+ + "\1\106\1\75\1\100\41\7\2\0\4\6\4\0\1\6\2\0\1\7"+ + "\7\0\1\6\4\0\1\6\5\0\27\6\1\0\37\6\1\0\u013f\6"+ + "\31\0\162\6\4\0\14\6\16\0\5\6\11\0\1\6\21\0\130\7"+ + "\5\0\23\7\12\0\1\6\13\0\1\6\1\0\3\6\1\0\1\6"+ + "\1\0\24\6\1\0\54\6\1\0\46\6\1\0\5\6\4\0\202\6"+ + "\1\0\4\7\3\0\105\6\1\0\46\6\2\0\2\6\6\0\20\6"+ + "\41\0\46\6\2\0\1\6\7\0\47\6\11\0\21\7\1\0\27\7"+ + "\1\0\3\7\1\0\1\7\1\0\2\7\1\0\1\7\13\0\33\6"+ + "\5\0\3\6\15\0\4\7\14\0\6\7\13\0\32\6\5\0\13\6"+ + "\16\7\7\0\12\7\4\0\2\6\1\7\143\6\1\0\1\6\10\7"+ + "\1\0\6\7\2\6\2\7\1\0\4\7\2\6\12\7\3\6\2\0"+ + "\1\6\17\0\1\7\1\6\1\7\36\6\33\7\2\0\3\6\60\0"+ + "\46\6\13\7\1\6\u014f\0\3\7\66\6\2\0\1\7\1\6\20\7"+ + "\2\0\1\6\4\7\3\0\12\6\2\7\2\0\12\7\21\0\3\7"+ + "\1\0\10\6\2\0\2\6\2\0\26\6\1\0\7\6\1\0\1\6"+ + "\3\0\4\6\2\0\1\7\1\6\7\7\2\0\2\7\2\0\3\7"+ + "\11\0\1\7\4\0\2\6\1\0\3\6\2\7\2\0\12\7\4\6"+ + "\15\0\3\7\1\0\6\6\4\0\2\6\2\0\26\6\1\0\7\6"+ + "\1\0\2\6\1\0\2\6\1\0\2\6\2\0\1\7\1\0\5\7"+ + "\4\0\2\7\2\0\3\7\13\0\4\6\1\0\1\6\7\0\14\7"+ + "\3\6\14\0\3\7\1\0\11\6\1\0\3\6\1\0\26\6\1\0"+ + "\7\6\1\0\2\6\1\0\5\6\2\0\1\7\1\6\10\7\1\0"+ + "\3\7\1\0\3\7\2\0\1\6\17\0\2\6\2\7\2\0\12\7"+ + "\1\0\1\6\17\0\3\7\1\0\10\6\2\0\2\6\2\0\26\6"+ + "\1\0\7\6\1\0\2\6\1\0\5\6\2\0\1\7\1\6\6\7"+ + "\3\0\2\7\2\0\3\7\10\0\2\7\4\0\2\6\1\0\3\6"+ + "\4\0\12\7\1\0\1\6\20\0\1\7\1\6\1\0\6\6\3\0"+ + "\3\6\1\0\4\6\3\0\2\6\1\0\1\6\1\0\2\6\3\0"+ + "\2\6\3\0\3\6\3\0\10\6\1\0\3\6\4\0\5\7\3\0"+ + "\3\7\1\0\4\7\11\0\1\7\17\0\11\7\11\0\1\6\7\0"+ + "\3\7\1\0\10\6\1\0\3\6\1\0\27\6\1\0\12\6\1\0"+ + "\5\6\4\0\7\7\1\0\3\7\1\0\4\7\7\0\2\7\11\0"+ + "\2\6\4\0\12\7\22\0\2\7\1\0\10\6\1\0\3\6\1\0"+ + "\27\6\1\0\12\6\1\0\5\6\2\0\1\7\1\6\7\7\1\0"+ + "\3\7\1\0\4\7\7\0\2\7\7\0\1\6\1\0\2\6\4\0"+ + "\12\7\22\0\2\7\1\0\10\6\1\0\3\6\1\0\27\6\1\0"+ + "\20\6\4\0\6\7\2\0\3\7\1\0\4\7\11\0\1\7\10\0"+ + "\2\6\4\0\12\7\22\0\2\7\1\0\22\6\3\0\30\6\1\0"+ + "\11\6\1\0\1\6\2\0\7\6\3\0\1\7\4\0\6\7\1\0"+ + "\1\7\1\0\10\7\22\0\2\7\15\0\60\6\1\7\2\6\7\7"+ + "\4\0\10\6\10\7\1\0\12\7\47\0\2\6\1\0\1\6\2\0"+ + "\2\6\1\0\1\6\2\0\1\6\6\0\4\6\1\0\7\6\1\0"+ + "\3\6\1\0\1\6\1\0\1\6\2\0\2\6\1\0\4\6\1\7"+ + "\2\6\6\7\1\0\2\7\1\6\2\0\5\6\1\0\1\6\1\0"+ + "\6\7\2\0\12\7\2\0\2\6\42\0\1\6\27\0\2\7\6\0"+ + "\12\7\13\0\1\7\1\0\1\7\1\0\1\7\4\0\2\7\10\6"+ + "\1\0\42\6\6\0\24\7\1\0\2\7\4\6\4\0\10\7\1\0"+ + "\44\7\11\0\1\7\71\0\42\6\1\0\5\6\1\0\2\6\1\0"+ + "\7\7\3\0\4\7\6\0\12\7\6\0\6\6\4\7\106\0\46\6"+ + "\12\0\51\6\7\0\132\6\5\0\104\6\5\0\122\6\6\0\7\6"+ + "\1\0\77\6\1\0\1\6\1\0\4\6\2\0\7\6\1\0\1\6"+ + "\1\0\4\6\2\0\47\6\1\0\1\6\1\0\4\6\2\0\37\6"+ + "\1\0\1\6\1\0\4\6\2\0\7\6\1\0\1\6\1\0\4\6"+ + "\2\0\7\6\1\0\7\6\1\0\27\6\1\0\37\6\1\0\1\6"+ + "\1\0\4\6\2\0\7\6\1\0\47\6\1\0\23\6\16\0\11\7"+ + "\56\0\125\6\14\0\u026c\6\2\0\10\6\12\0\32\6\5\0\113\6"+ + "\3\0\3\6\17\0\15\6\1\0\4\6\3\7\13\0\22\6\3\7"+ + "\13\0\22\6\2\7\14\0\15\6\1\0\3\6\1\0\2\7\14\0"+ + "\64\6\40\7\3\0\1\6\3\0\2\6\1\7\2\0\12\7\41\0"+ + "\3\7\2\0\12\7\6\0\130\6\10\0\51\6\1\7\126\0\35\6"+ + "\3\0\14\7\4\0\14\7\12\0\12\7\36\6\2\0\5\6\u038b\0"+ + "\154\6\224\0\234\6\4\0\132\6\6\0\26\6\2\0\6\6\2\0"+ + "\46\6\2\0\6\6\2\0\10\6\1\0\1\6\1\0\1\6\1\0"+ + "\1\6\1\0\37\6\2\0\65\6\1\0\7\6\1\0\1\6\3\0"+ + "\3\6\1\0\7\6\3\0\4\6\2\0\6\6\4\0\15\6\5\0"+ + "\3\6\1\0\7\6\17\0\4\7\32\0\5\7\20\0\2\6\23\0"+ + "\1\6\13\0\4\7\6\0\6\7\1\0\1\6\15\0\1\6\40\0"+ + "\22\6\36\0\15\7\4\0\1\7\3\0\6\7\27\0\1\6\4\0"+ + "\1\6\2\0\12\6\1\0\1\6\3\0\5\6\6\0\1\6\1\0"+ + "\1\6\1\0\1\6\1\0\4\6\1\0\3\6\1\0\7\6\3\0"+ + "\3\6\5\0\5\6\26\0\44\6\u0e81\0\3\6\31\0\11\6\6\7"+ + "\1\0\5\6\2\0\5\6\4\0\126\6\2\0\2\7\2\0\3\6"+ + "\1\0\137\6\5\0\50\6\4\0\136\6\21\0\30\6\70\0\20\6"+ + "\u0200\0\u19b6\6\112\0\u51a6\6\132\0\u048d\6\u0773\0\u2ba4\6\u215c\0\u012e\6"+ + "\2\0\73\6\225\0\7\6\14\0\5\6\5\0\1\6\1\7\12\6"+ + "\1\0\15\6\1\0\5\6\1\0\1\6\1\0\2\6\1\0\2\6"+ + "\1\0\154\6\41\0\u016b\6\22\0\100\6\2\0\66\6\50\0\15\6"+ + "\3\0\20\7\20\0\4\7\17\0\2\6\30\0\3\6\31\0\1\6"+ + "\6\0\5\6\1\0\207\6\2\0\1\7\4\0\1\6\13\0\12\7"+ + "\7\0\32\6\4\0\1\6\1\0\32\6\12\0\132\6\3\0\6\6"+ + "\2\0\6\6\2\0\6\6\2\0\3\6\3\0\2\6\3\0\2\6"+ + "\22\0\3\7\4\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\3\1\2\2\1\3\2\4\1\3\2\2\1\5"+ + "\1\6\27\3\1\2\1\7\1\10\1\11\1\12\1\13"+ + "\1\14\5\2\1\15\2\16\1\17\1\1\1\15\1\20"+ + "\1\21\1\0\1\22\3\4\1\0\3\4\1\0\17\3"+ + "\1\23\23\3\1\2\1\24\2\15\2\21\2\0\4\4"+ + "\1\0\31\3\1\25\10\3\1\15\1\0\2\4\1\22"+ + "\24\3\2\4\21\3\2\4\14\3\2\4\6\3\2\4"+ + "\4\3\2\4\1\3\2\4\1\3\1\0\1\4\1\3"+ + "\1\0\1\4\1\3\1\0\1\4\1\3\1\0\1\4"+ + "\1\3\1\0\1\4\1\3\1\0\1\4\1\0\1\4"+ + "\1\0\5\4"; + + private static int [] zzUnpackAction() { + int [] result = new int[254]; + 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\u0120\0\u0168\0\u01b0\0\u01f8"+ + "\0\u0240\0\u0288\0\u02d0\0\u0318\0\u0360\0\u03a8\0\330\0\330"+ + "\0\u03f0\0\u0438\0\u0480\0\u04c8\0\u0510\0\u0558\0\u05a0\0\u05e8"+ + "\0\u0630\0\u0678\0\u06c0\0\u0708\0\u0750\0\u0798\0\u07e0\0\u0828"+ + "\0\u0870\0\u08b8\0\u0900\0\u0948\0\u0990\0\u09d8\0\u0a20\0\330"+ + "\0\330\0\330\0\330\0\330\0\330\0\330\0\u0a68\0\u0ab0"+ + "\0\u0af8\0\u0b40\0\u0b88\0\u0bd0\0\u0c18\0\330\0\330\0\u0c60"+ + "\0\u0ca8\0\330\0\u0cf0\0\u0d38\0\330\0\u0d80\0\u0dc8\0\330"+ + "\0\u0e10\0\u0e58\0\u0ea0\0\u0ee8\0\u0f30\0\u0f78\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\u1368\0\u0240\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\330\0\u1950\0\u1998\0\u19e0\0\330\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\u22e0\0\u0240\0\u2328"+ + "\0\u2370\0\u23b8\0\u2400\0\u2448\0\u2490\0\u24d8\0\u2520\0\330"+ + "\0\u2568\0\u25b0\0\u25f8\0\u0240\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\u2a30\0\u2a78\0\u2ac0\0\u2b08\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\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\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\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\u40f8\0\u4140\0\u4188"; + + private static int [] zzUnpackRowMap() { + int [] result = new int[254]; + 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\4\1\6\1\7\1\10\1\11\1\4"+ + "\1\12\1\13\2\11\1\14\3\13\1\11\1\15\1\11"+ + "\1\16\1\17\1\20\1\4\1\21\1\22\1\23\2\11"+ + "\1\24\1\25\1\26\2\11\1\27\1\30\1\31\1\32"+ + "\1\11\1\33\1\11\1\34\1\35\1\36\1\37\1\40"+ + "\1\11\1\41\2\11\1\42\1\43\1\44\1\45\1\46"+ + "\2\11\1\47\1\50\1\51\1\52\1\53\1\54\1\55"+ + "\1\56\1\50\1\10\1\57\1\60\1\10\1\61\1\62"+ + "\1\63\1\64\1\65\1\66\21\64\1\67\1\64\1\70"+ + "\61\64\1\71\1\65\1\66\22\71\1\72\1\70\61\71"+ + "\112\0\1\4\110\0\1\6\110\0\1\73\1\74\73\0"+ + "\1\50\107\0\1\50\14\0\13\11\1\0\1\11\4\0"+ + "\42\11\1\75\26\0\1\76\1\77\1\100\1\101\1\100"+ + "\1\102\1\103\1\102\1\100\1\104\1\105\6\0\1\105"+ + "\12\0\3\100\20\0\1\101\30\0\2\13\1\100\1\0"+ + "\1\100\3\13\1\100\1\104\1\105\6\0\1\105\12\0"+ + "\3\100\47\0\13\11\1\0\1\11\4\0\3\11\1\106"+ + "\36\11\1\75\26\0\2\104\3\0\3\104\113\0\1\50"+ + "\55\0\1\50\14\0\13\11\1\0\1\11\4\0\1\11"+ + "\1\107\40\11\1\75\24\0\13\11\1\0\1\11\4\0"+ + "\2\11\1\110\37\11\1\75\24\0\13\11\1\0\1\11"+ + "\4\0\6\11\1\111\3\11\1\112\3\11\1\113\4\11"+ + "\1\114\16\11\1\75\24\0\13\11\1\0\1\11\4\0"+ + "\3\11\1\115\5\11\1\116\30\11\1\75\24\0\13\11"+ + "\1\0\1\11\4\0\21\11\1\117\20\11\1\75\24\0"+ + "\13\11\1\0\1\11\4\0\1\11\1\120\6\11\1\121"+ + "\31\11\1\75\24\0\13\11\1\0\1\11\4\0\2\11"+ + "\1\122\11\11\1\123\25\11\1\75\24\0\13\11\1\0"+ + "\1\11\4\0\6\11\1\124\3\11\1\125\4\11\1\125"+ + "\22\11\1\75\24\0\13\11\1\0\1\11\4\0\12\11"+ + "\1\126\27\11\1\75\24\0\13\11\1\0\1\11\4\0"+ + "\2\11\1\127\6\11\1\125\30\11\1\75\24\0\13\11"+ + "\1\0\1\11\4\0\3\11\1\130\5\11\1\131\1\11"+ + "\1\132\1\133\25\11\1\75\24\0\13\11\1\0\1\11"+ + "\4\0\10\11\1\134\2\11\1\135\26\11\1\75\24\0"+ + "\13\11\1\0\1\11\4\0\11\11\1\136\30\11\1\75"+ + "\24\0\13\11\1\0\1\11\4\0\3\11\1\131\36\11"+ + "\1\75\24\0\13\11\1\0\1\11\4\0\12\11\1\137"+ + "\27\11\1\75\24\0\13\11\1\0\1\11\4\0\3\11"+ + "\1\140\10\11\1\141\25\11\1\75\24\0\13\11\1\0"+ + "\1\11\4\0\2\11\1\142\37\11\1\75\24\0\13\11"+ + "\1\0\1\11\4\0\3\11\1\143\36\11\1\75\24\0"+ + "\13\11\1\0\1\11\4\0\1\11\1\144\40\11\1\75"+ + "\24\0\13\11\1\0\1\11\4\0\11\11\1\145\30\11"+ + "\1\75\24\0\13\11\1\0\1\11\4\0\3\11\1\146"+ + "\36\11\1\75\24\0\13\11\1\0\1\11\4\0\1\147"+ + "\41\11\1\75\24\0\13\11\1\0\1\11\4\0\7\11"+ + "\1\150\32\11\1\75\117\0\1\50\1\151\106\0\1\50"+ + "\1\0\1\10\105\0\1\50\3\0\1\50\103\0\1\50"+ + "\4\0\1\50\102\0\1\50\5\0\1\50\1\64\2\0"+ + "\21\64\1\0\1\64\1\0\61\64\2\0\1\66\105\0"+ + "\2\152\1\0\5\152\1\153\4\152\2\153\1\154\70\152"+ + "\1\71\2\0\22\71\2\0\61\71\1\73\1\155\1\156"+ + "\105\73\5\157\1\160\102\157\10\0\1\76\1\77\1\100"+ + "\1\0\1\100\1\102\1\103\1\102\1\100\1\104\1\105"+ + "\6\0\1\105\12\0\3\100\51\0\2\77\2\0\1\100"+ + "\3\77\1\100\1\104\1\105\6\0\1\105\12\0\1\100"+ + "\1\0\1\100\51\0\1\161\1\162\2\0\5\162\1\0"+ + "\1\162\4\0\1\162\1\0\2\162\1\0\1\162\7\0"+ + "\1\162\1\0\1\162\10\0\1\162\2\0\2\162\34\0"+ + "\1\163\1\77\1\100\1\0\1\100\3\163\1\100\1\104"+ + "\1\105\6\0\1\105\12\0\3\100\51\0\1\102\1\77"+ + "\1\100\1\0\1\100\3\102\1\100\1\104\1\105\6\0"+ + "\1\105\12\0\3\100\51\0\2\104\2\0\1\100\3\104"+ + "\1\100\1\0\1\105\6\0\1\105\12\0\1\100\1\0"+ + "\1\100\51\0\2\164\3\0\3\164\3\0\1\165\63\0"+ + "\1\165\6\0\13\11\1\0\1\11\4\0\7\11\1\166"+ + "\32\11\1\75\24\0\13\11\1\0\1\11\4\0\2\11"+ + "\1\167\37\11\1\75\24\0\13\11\1\0\1\11\4\0"+ + "\7\11\1\170\32\11\1\75\24\0\13\11\1\0\1\11"+ + "\4\0\5\11\1\171\34\11\1\75\24\0\13\11\1\0"+ + "\1\11\4\0\5\11\1\172\34\11\1\75\24\0\13\11"+ + "\1\0\1\11\4\0\6\11\1\173\33\11\1\75\24\0"+ + "\13\11\1\0\1\11\4\0\3\11\1\174\36\11\1\75"+ + "\24\0\13\11\1\0\1\11\4\0\6\11\1\173\1\175"+ + "\32\11\1\75\24\0\13\11\1\0\1\11\4\0\12\11"+ + "\1\176\27\11\1\75\24\0\13\11\1\0\1\11\4\0"+ + "\13\11\1\177\26\11\1\75\24\0\13\11\1\0\1\11"+ + "\4\0\14\11\1\173\3\11\1\125\21\11\1\75\24\0"+ + "\13\11\1\0\1\11\4\0\13\11\1\200\26\11\1\75"+ + "\24\0\13\11\1\0\1\11\4\0\21\11\1\125\20\11"+ + "\1\75\24\0\13\11\1\0\1\11\4\0\16\11\1\201"+ + "\23\11\1\75\24\0\12\11\1\202\1\0\1\11\4\0"+ + "\25\11\1\203\14\11\1\75\24\0\13\11\1\0\1\11"+ + "\4\0\2\11\1\204\12\11\1\205\24\11\1\75\24\0"+ + "\13\11\1\0\1\11\4\0\5\11\1\206\10\11\1\207"+ + "\1\210\22\11\1\75\24\0\13\11\1\0\1\11\4\0"+ + "\16\11\1\113\23\11\1\75\24\0\13\11\1\0\1\11"+ + "\4\0\1\11\1\125\40\11\1\75\24\0\13\11\1\0"+ + "\1\11\4\0\12\11\1\211\27\11\1\75\24\0\13\11"+ + "\1\0\1\11\4\0\12\11\1\212\27\11\1\75\24\0"+ + "\13\11\1\0\1\11\4\0\13\11\1\213\26\11\1\75"+ + "\24\0\13\11\1\0\1\11\4\0\7\11\1\214\32\11"+ + "\1\75\24\0\13\11\1\0\1\11\4\0\7\11\1\215"+ + "\32\11\1\75\24\0\13\11\1\0\1\11\4\0\17\11"+ + "\1\216\22\11\1\75\24\0\13\11\1\0\1\11\4\0"+ + "\25\11\1\217\14\11\1\75\24\0\13\11\1\0\1\11"+ + "\4\0\31\11\1\220\10\11\1\75\24\0\13\11\1\0"+ + "\1\11\4\0\22\11\1\221\17\11\1\75\24\0\13\11"+ + "\1\0\1\11\4\0\1\11\1\222\40\11\1\75\24\0"+ + "\13\11\1\0\1\11\4\0\1\11\1\223\40\11\1\75"+ + "\24\0\13\11\1\0\1\11\4\0\11\11\1\224\30\11"+ + "\1\75\24\0\13\11\1\0\1\11\4\0\7\11\1\225"+ + "\32\11\1\75\24\0\13\11\1\0\1\11\4\0\37\11"+ + "\1\226\2\11\1\75\24\0\13\11\1\0\1\11\4\0"+ + "\1\11\1\227\40\11\1\75\117\0\1\50\1\10\15\0"+ + "\1\154\4\0\3\154\100\0\1\230\4\0\3\230\72\0"+ + "\1\156\105\0\5\157\1\231\102\157\4\0\1\156\1\160"+ + "\112\0\1\161\1\162\1\100\1\0\5\162\1\0\1\162"+ + "\4\0\1\162\1\0\2\162\1\0\1\162\7\0\1\162"+ + "\1\100\1\162\10\0\1\162\2\0\2\162\34\0\2\232"+ + "\1\100\1\0\5\232\1\0\1\232\4\0\1\232\1\0"+ + "\2\232\1\0\1\232\7\0\1\232\1\100\1\232\10\0"+ + "\1\232\2\0\2\232\34\0\1\233\1\77\1\100\1\0"+ + "\1\100\3\233\1\100\1\104\1\105\6\0\1\105\12\0"+ + "\3\100\51\0\2\164\2\0\1\100\3\164\1\100\23\0"+ + "\1\100\1\0\1\100\51\0\2\164\3\0\3\164\76\0"+ + "\13\11\1\0\1\11\4\0\2\11\1\234\37\11\1\75"+ + "\24\0\13\11\1\0\1\11\4\0\3\11\1\235\36\11"+ + "\1\75\24\0\13\11\1\0\1\11\4\0\14\11\1\236"+ + "\25\11\1\75\24\0\13\11\1\0\1\11\4\0\3\11"+ + "\1\237\36\11\1\75\24\0\13\11\1\0\1\11\4\0"+ + "\11\11\1\240\30\11\1\75\24\0\13\11\1\0\1\11"+ + "\4\0\2\11\1\125\37\11\1\75\24\0\13\11\1\0"+ + "\1\11\4\0\16\11\1\217\23\11\1\75\24\0\13\11"+ + "\1\0\1\11\4\0\5\11\1\214\34\11\1\75\24\0"+ + "\13\11\1\0\1\11\4\0\7\11\1\241\32\11\1\75"+ + "\24\0\13\11\1\0\1\11\4\0\7\11\1\175\32\11"+ + "\1\75\24\0\13\11\1\0\1\11\4\0\6\11\1\125"+ + "\33\11\1\75\24\0\13\11\1\0\1\11\4\0\16\11"+ + "\1\125\23\11\1\75\24\0\13\11\1\0\1\11\4\0"+ + "\13\11\1\242\26\11\1\75\24\0\13\11\1\0\1\11"+ + "\4\0\3\11\1\140\36\11\1\75\24\0\13\11\1\0"+ + "\1\11\4\0\6\11\1\111\33\11\1\75\24\0\13\11"+ + "\1\0\1\11\4\0\2\11\1\243\37\11\1\75\24\0"+ + "\13\11\1\0\1\11\4\0\11\11\1\244\30\11\1\75"+ + "\24\0\13\11\1\0\1\11\4\0\2\11\1\245\37\11"+ + "\1\75\24\0\13\11\1\0\1\11\4\0\3\11\1\246"+ + "\36\11\1\75\24\0\13\11\1\0\1\11\4\0\3\11"+ + "\1\247\36\11\1\75\24\0\13\11\1\0\1\11\4\0"+ + "\5\11\1\250\34\11\1\75\24\0\13\11\1\0\1\11"+ + "\4\0\16\11\1\173\23\11\1\75\24\0\13\11\1\0"+ + "\1\11\4\0\10\11\1\125\31\11\1\75\24\0\13\11"+ + "\1\0\1\11\4\0\11\11\1\125\30\11\1\75\24\0"+ + "\13\11\1\0\1\11\4\0\13\11\1\251\26\11\1\75"+ + "\24\0\13\11\1\0\1\11\4\0\1\252\41\11\1\75"+ + "\24\0\13\11\1\0\1\253\4\0\42\11\1\75\24\0"+ + "\13\11\1\0\1\11\4\0\6\11\1\254\33\11\1\75"+ + "\24\0\13\11\1\0\1\11\4\0\3\11\1\255\36\11"+ + "\1\75\24\0\13\11\1\0\1\11\4\0\16\11\1\256"+ + "\23\11\1\75\24\0\13\11\1\0\1\11\4\0\10\11"+ + "\1\234\31\11\1\75\24\0\13\11\1\0\1\11\4\0"+ + "\2\11\1\257\37\11\1\75\24\0\13\11\1\0\1\11"+ + "\4\0\13\11\1\260\26\11\1\75\16\0\4\157\1\156"+ + "\1\231\102\157\10\0\2\261\1\100\1\0\5\261\1\0"+ + "\1\261\4\0\1\261\1\0\2\261\1\0\1\261\7\0"+ + "\1\261\1\100\1\261\10\0\1\261\2\0\2\261\34\0"+ + "\1\262\1\77\1\100\1\0\1\100\3\262\1\100\1\104"+ + "\1\105\6\0\1\105\12\0\3\100\47\0\13\11\1\0"+ + "\1\11\4\0\4\11\1\125\35\11\1\75\24\0\13\11"+ + "\1\0\1\11\4\0\1\11\1\263\40\11\1\75\24\0"+ + "\13\11\1\0\1\11\4\0\32\11\1\264\7\11\1\75"+ + "\24\0\13\11\1\0\1\11\4\0\15\11\1\265\24\11"+ + "\1\75\24\0\13\11\1\0\1\11\4\0\13\11\1\266"+ + "\26\11\1\75\24\0\13\11\1\0\1\11\4\0\12\11"+ + "\1\267\27\11\1\75\24\0\13\11\1\0\1\11\4\0"+ + "\17\11\1\270\22\11\1\75\24\0\13\11\1\0\1\11"+ + "\4\0\15\11\1\271\24\11\1\75\24\0\13\11\1\0"+ + "\1\11\4\0\7\11\1\173\32\11\1\75\24\0\13\11"+ + "\1\0\1\11\4\0\14\11\1\272\25\11\1\75\24\0"+ + "\13\11\1\0\1\11\4\0\16\11\1\273\23\11\1\75"+ + "\24\0\13\11\1\0\1\11\4\0\7\11\1\274\32\11"+ + "\1\75\24\0\13\11\1\0\1\11\4\0\12\11\1\275"+ + "\27\11\1\75\24\0\13\11\1\0\1\11\4\0\2\11"+ + "\1\276\37\11\1\75\24\0\13\11\1\0\1\11\4\0"+ + "\40\11\1\277\1\11\1\75\24\0\13\11\1\0\1\11"+ + "\4\0\2\11\1\300\37\11\1\75\24\0\13\11\1\0"+ + "\1\11\4\0\20\11\1\234\21\11\1\75\24\0\13\11"+ + "\1\0\1\11\4\0\2\11\1\301\37\11\1\75\24\0"+ + "\13\11\1\0\1\11\4\0\5\11\1\302\34\11\1\75"+ + "\24\0\13\11\1\0\1\11\4\0\12\11\1\303\27\11"+ + "\1\75\26\0\2\304\1\100\1\0\5\304\1\0\1\304"+ + "\4\0\1\304\1\0\2\304\1\0\1\304\7\0\1\304"+ + "\1\100\1\304\10\0\1\304\2\0\2\304\34\0\1\305"+ + "\1\77\1\100\1\0\1\100\3\305\1\100\1\104\1\105"+ + "\6\0\1\105\12\0\3\100\47\0\13\11\1\0\1\11"+ + "\4\0\12\11\1\125\27\11\1\75\24\0\13\11\1\0"+ + "\1\11\4\0\2\11\1\217\37\11\1\75\24\0\13\11"+ + "\1\0\1\11\4\0\2\11\1\306\37\11\1\75\24\0"+ + "\13\11\1\0\1\11\4\0\12\11\1\307\27\11\1\75"+ + "\24\0\13\11\1\0\1\11\4\0\13\11\1\310\26\11"+ + "\1\75\24\0\13\11\1\0\1\11\4\0\13\11\1\311"+ + "\26\11\1\75\24\0\13\11\1\0\1\11\4\0\2\11"+ + "\1\312\37\11\1\75\24\0\13\11\1\0\1\11\4\0"+ + "\16\11\1\313\23\11\1\75\24\0\13\11\1\0\1\11"+ + "\4\0\16\11\1\314\23\11\1\75\24\0\13\11\1\0"+ + "\1\11\4\0\13\11\1\315\26\11\1\75\24\0\13\11"+ + "\1\0\1\11\4\0\13\11\1\316\26\11\1\75\24\0"+ + "\13\11\1\0\1\11\4\0\1\11\1\234\40\11\1\75"+ + "\24\0\13\11\1\0\1\11\4\0\32\11\1\234\7\11"+ + "\1\75\24\0\12\11\1\317\1\0\1\11\4\0\24\11"+ + "\1\320\15\11\1\75\24\0\13\11\1\0\1\11\4\0"+ + "\3\11\1\321\36\11\1\75\24\0\13\11\1\0\1\11"+ + "\4\0\7\11\1\234\32\11\1\75\24\0\13\11\1\0"+ + "\1\11\4\0\22\11\1\234\17\11\1\75\26\0\2\322"+ + "\1\100\1\0\5\322\1\0\1\322\4\0\1\322\1\0"+ + "\2\322\1\0\1\322\7\0\1\322\1\100\1\322\10\0"+ + "\1\322\2\0\2\322\34\0\1\323\1\77\1\100\1\0"+ + "\1\100\3\323\1\100\1\104\1\105\6\0\1\105\12\0"+ + "\3\100\47\0\13\11\1\0\1\11\4\0\26\11\1\324"+ + "\13\11\1\75\24\0\13\11\1\0\1\11\4\0\14\11"+ + "\1\173\25\11\1\75\24\0\13\11\1\0\1\11\4\0"+ + "\7\11\1\264\32\11\1\75\24\0\13\11\1\0\1\11"+ + "\4\0\12\11\1\325\27\11\1\75\24\0\13\11\1\0"+ + "\1\11\4\0\26\11\1\326\13\11\1\75\24\0\13\11"+ + "\1\0\1\11\4\0\7\11\1\125\32\11\1\75\24\0"+ + "\13\11\1\0\1\11\4\0\20\11\1\125\21\11\1\75"+ + "\24\0\13\11\1\0\1\11\4\0\11\11\1\263\30\11"+ + "\1\75\24\0\13\11\1\0\1\11\4\0\7\11\1\327"+ + "\32\11\1\75\24\0\13\11\1\0\1\11\4\0\16\11"+ + "\1\330\23\11\1\75\24\0\13\11\1\0\1\11\4\0"+ + "\12\11\1\331\27\11\1\75\24\0\13\11\1\0\1\11"+ + "\4\0\12\11\1\234\27\11\1\75\26\0\2\332\1\100"+ + "\1\0\5\332\1\0\1\332\4\0\1\332\1\0\2\332"+ + "\1\0\1\332\7\0\1\332\1\100\1\332\10\0\1\332"+ + "\2\0\2\332\34\0\1\333\1\77\1\100\1\0\1\100"+ + "\3\333\1\100\1\104\1\105\6\0\1\105\12\0\3\100"+ + "\47\0\13\11\1\0\1\11\4\0\27\11\1\334\12\11"+ + "\1\75\24\0\13\11\1\0\1\11\4\0\2\11\1\335"+ + "\37\11\1\75\24\0\13\11\1\0\1\11\4\0\27\11"+ + "\1\336\12\11\1\75\24\0\13\11\1\0\1\11\4\0"+ + "\20\11\1\217\21\11\1\75\24\0\13\11\1\0\1\11"+ + "\4\0\11\11\1\337\30\11\1\75\24\0\13\11\1\0"+ + "\1\11\4\0\7\11\1\217\32\11\1\75\26\0\2\340"+ + "\1\100\1\0\5\340\1\0\1\340\4\0\1\340\1\0"+ + "\2\340\1\0\1\340\7\0\1\340\1\100\1\340\10\0"+ + "\1\340\2\0\2\340\34\0\1\341\1\77\1\100\1\0"+ + "\1\100\3\341\1\100\1\104\1\105\6\0\1\105\12\0"+ + "\3\100\47\0\13\11\1\0\1\11\4\0\24\11\1\342"+ + "\15\11\1\75\24\0\13\11\1\0\1\11\4\0\15\11"+ + "\1\217\24\11\1\75\24\0\13\11\1\0\1\11\4\0"+ + "\24\11\1\217\15\11\1\75\24\0\13\11\1\0\1\11"+ + "\4\0\3\11\1\331\36\11\1\75\26\0\2\343\1\100"+ + "\1\0\5\343\1\0\1\343\4\0\1\343\1\0\2\343"+ + "\1\0\1\343\7\0\1\343\1\100\1\343\10\0\1\343"+ + "\2\0\2\343\34\0\1\344\1\77\1\100\1\0\1\100"+ + "\3\344\1\100\1\104\1\105\6\0\1\105\12\0\3\100"+ + "\47\0\13\11\1\0\1\11\4\0\30\11\1\345\11\11"+ + "\1\75\26\0\2\346\1\100\1\0\5\346\1\0\1\346"+ + "\4\0\1\346\1\0\2\346\1\0\1\346\7\0\1\346"+ + "\1\100\1\346\10\0\1\346\2\0\2\346\34\0\1\347"+ + "\1\77\1\100\1\0\1\100\3\347\1\100\1\104\1\105"+ + "\6\0\1\105\12\0\3\100\47\0\13\11\1\0\1\11"+ + "\4\0\11\11\1\350\30\11\1\75\26\0\2\351\1\100"+ + "\1\0\5\351\1\0\1\351\4\0\1\351\1\0\2\351"+ + "\1\0\1\351\7\0\1\351\1\100\1\351\10\0\1\351"+ + "\2\0\2\351\34\0\1\352\1\77\1\100\1\0\1\100"+ + "\3\352\1\100\1\104\1\105\6\0\1\105\12\0\3\100"+ + "\47\0\13\11\1\0\1\11\4\0\31\11\1\353\10\11"+ + "\1\75\26\0\2\354\1\100\1\0\5\354\1\0\1\354"+ + "\4\0\1\354\1\0\2\354\1\0\1\354\7\0\1\354"+ + "\1\100\1\354\10\0\1\354\2\0\2\354\34\0\1\355"+ + "\1\77\1\100\1\0\1\100\3\355\1\100\1\104\1\105"+ + "\6\0\1\105\12\0\3\100\47\0\13\11\1\0\1\11"+ + "\4\0\32\11\1\356\7\11\1\75\26\0\2\357\1\100"+ + "\1\0\5\357\1\0\1\357\4\0\1\357\1\0\2\357"+ + "\1\0\1\357\7\0\1\357\1\100\1\357\10\0\1\357"+ + "\2\0\2\357\34\0\1\360\1\77\1\100\1\0\1\100"+ + "\3\360\1\100\1\104\1\105\6\0\1\105\12\0\3\100"+ + "\47\0\13\11\1\0\1\11\4\0\11\11\1\361\30\11"+ + "\1\75\26\0\2\362\1\100\1\0\5\362\1\0\1\362"+ + "\4\0\1\362\1\0\2\362\1\0\1\362\7\0\1\362"+ + "\1\100\1\362\10\0\1\362\2\0\2\362\34\0\1\363"+ + "\1\77\1\100\1\0\1\100\3\363\1\100\1\104\1\105"+ + "\6\0\1\105\12\0\3\100\47\0\13\11\1\0\1\11"+ + "\4\0\12\11\1\364\27\11\1\75\26\0\2\365\1\100"+ + "\1\0\5\365\1\0\1\365\4\0\1\365\1\0\2\365"+ + "\1\0\1\365\7\0\1\365\1\100\1\365\10\0\1\365"+ + "\2\0\2\365\34\0\1\366\1\77\1\100\1\0\1\100"+ + "\3\366\1\100\1\104\1\105\6\0\1\105\12\0\3\100"+ + "\47\0\13\11\1\0\1\11\4\0\2\11\1\320\37\11"+ + "\1\75\26\0\2\367\1\100\1\0\5\367\1\0\1\367"+ + "\4\0\1\367\1\0\2\367\1\0\1\367\7\0\1\367"+ + "\1\100\1\367\10\0\1\367\2\0\2\367\34\0\1\370"+ + "\1\77\1\100\1\0\1\100\3\370\1\100\1\104\1\105"+ + "\6\0\1\105\12\0\3\100\51\0\2\371\1\100\1\0"+ + "\5\371\1\0\1\371\4\0\1\371\1\0\2\371\1\0"+ + "\1\371\7\0\1\371\1\100\1\371\10\0\1\371\2\0"+ + "\2\371\34\0\1\372\1\77\1\100\1\0\1\100\3\372"+ + "\1\100\1\104\1\105\6\0\1\105\12\0\3\100\53\0"+ + "\1\100\32\0\1\100\52\0\1\373\1\77\1\100\1\0"+ + "\1\100\3\373\1\100\1\104\1\105\6\0\1\105\12\0"+ + "\3\100\51\0\1\374\1\77\1\100\1\0\1\100\3\374"+ + "\1\100\1\104\1\105\6\0\1\105\12\0\3\100\51\0"+ + "\1\375\1\77\1\100\1\0\1\100\3\375\1\100\1\104"+ + "\1\105\6\0\1\105\12\0\3\100\51\0\1\376\1\77"+ + "\1\100\1\0\1\100\3\376\1\100\1\104\1\105\6\0"+ + "\1\105\12\0\3\100\51\0\2\77\1\100\1\0\1\100"+ + "\3\77\1\100\1\104\1\105\6\0\1\105\12\0\3\100"+ + "\41\0"; + + private static int [] zzUnpackTrans() { + int [] result = new int[16848]; + 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\12\1\2\11\27\1\7\11\7\1\2\11"+ + "\2\1\1\11\1\1\1\0\1\11\2\1\1\11\1\0"+ + "\3\1\1\0\44\1\1\11\3\1\1\11\2\0\4\1"+ + "\1\0\42\1\1\11\1\0\114\1\1\0\2\1\1\0"+ + "\2\1\1\0\2\1\1\0\2\1\1\0\2\1\1\0"+ + "\1\1\1\0\1\1\1\0\5\1"; + + private static int [] zzUnpackAttribute() { + int [] result = new int[254]; + 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[] = new char[ZZ_BUFFERSIZE]; + + /** 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; + + /** number of newlines encountered up to the start of the matched text */ + private int yyline; + + /** the number of characters up to the start of the matched text */ + private int yychar; + + /** + * the number of characters from the last newline up to the start of the + * matched text + */ + private int yycolumn; + + /** + * 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; + + /** denotes if the user-EOF-code has already been executed */ + private boolean zzEOFDone; + + /* user code: */ + /** + * Create an empty lexer, yyrset will be called later to reset and assign + * the reader + */ + public JavaScriptLexer() { + super(); + } + + @Override + public int yychar() { + return yychar; + } + + private static final byte PARAN = 1; + private static final byte BRACKET = 2; + private static final byte CURLY = 3; + + + + /** + * 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 JavaScriptLexer(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 JavaScriptLexer(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 < 1806) { + int count = packed.charAt(i++); + char value = packed.charAt(i++); + do map[j++] = value; while (--count > 0); + } + return map; + } + + + /** + * Refills the input buffer. + * + * @return false, iff there was new input. + * + * @exception java.io.IOException if any I/O-Error occurs + */ + private boolean zzRefill() throws java.io.IOException { + + /* first: make room (if you can) */ + if (zzStartRead > 0) { + System.arraycopy(zzBuffer, zzStartRead, + zzBuffer, 0, + zzEndRead-zzStartRead); + + /* translate stored positions */ + zzEndRead-= zzStartRead; + zzCurrentPos-= zzStartRead; + zzMarkedPos-= zzStartRead; + zzStartRead = 0; + } + + /* is the buffer big enough? */ + if (zzCurrentPos >= zzBuffer.length) { + /* if not: blow it up */ + char newBuffer[] = new char[zzCurrentPos*2]; + System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); + zzBuffer = newBuffer; + } + + /* finally: fill the buffer with new input */ + int numRead = zzReader.read(zzBuffer, zzEndRead, + zzBuffer.length-zzEndRead); + + if (numRead > 0) { + zzEndRead+= numRead; + return false; + } + // unlikely but not impossible: read 0 characters, but not at end of stream + if (numRead == 0) { + int c = zzReader.read(); + if (c == -1) { + return true; + } else { + zzBuffer[zzEndRead++] = (char) c; + return false; + } + } + + // numRead < 0 + return true; + } + + + /** + * 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(); + } + + + /** + * 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 ZZ_INITIAL. + * + * @param reader the new input stream + */ + public final void yyreset(java.io.Reader reader) { + zzReader = reader; + zzAtBOL = true; + zzAtEOF = false; + zzEOFDone = false; + zzEndRead = zzStartRead = 0; + zzCurrentPos = zzMarkedPos = 0; + yyline = yychar = yycolumn = 0; + zzLexicalState = YYINITIAL; + } + + + /** + * Returns the current lexical state. + */ + public final int yystate() { + return zzLexicalState; + } + + + /** + * Enters a new lexical state + * + * @param newState the new lexical state + */ + 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 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; + + yychar+= zzMarkedPosL-zzStartRead; + + zzAction = -1; + + zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; + + 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 8: + { return token(TokenType.OPERATOR, -PARAN); + } + case 22: break; + case 19: + { return token(TokenType.KEYWORD); + } + case 23: break; + case 4: + { return token(TokenType.NUMBER); + } + case 24: break; + case 2: + { return token(TokenType.OPERATOR); + } + case 25: break; + case 9: + { return token(TokenType.OPERATOR, CURLY); + } + case 26: break; + case 10: + { return token(TokenType.OPERATOR, -CURLY); + } + case 27: break; + case 6: + { yybegin(SSTRING); + tokenStart = yychar; + tokenLength = 1; + } + case 28: break; + case 15: + { yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + case 29: break; + case 13: + { tokenLength += yylength(); + } + case 30: break; + case 14: + { yybegin(YYINITIAL); + } + case 31: break; + case 16: + { yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + case 32: break; + case 18: + { return token(TokenType.TYPE); + } + case 33: break; + case 12: + { return token(TokenType.OPERATOR, -BRACKET); + } + case 34: break; + case 7: + { return token(TokenType.OPERATOR, PARAN); + } + case 35: break; + case 21: + { return token(TokenType.KEYWORD2); + } + case 36: break; + case 3: + { return token(TokenType.IDENTIFIER); + } + case 37: break; + case 20: + { tokenLength += 2; + } + case 38: break; + case 11: + { return token(TokenType.OPERATOR, BRACKET); + } + case 39: break; + case 17: + { return token(TokenType.COMMENT); + } + case 40: break; + case 5: + { yybegin(STRING); + tokenStart = yychar; + tokenLength = 1; + } + case 41: break; + case 1: + { + } + case 42: break; + default: + if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { + zzAtEOF = true; + { + return null; + } + } + else { + zzScanError(ZZ_NO_MATCH); + } + } + } + } + + +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/LuaLexer.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/LuaLexer.java new file mode 100644 index 000000000..71aa5f14d --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/LuaLexer.java @@ -0,0 +1,936 @@ +/* The following code was generated by JFlex 1.4.3 on 21.7.10 18:14 */ + +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jsyntaxpane.lexers; + + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + + +/** + * This class is a scanner generated by + * JFlex 1.4.3 + * on 21.7.10 18:14 from the specification file + * D:/Dokumenty/Programovani/JavaSE/JPSWFDec/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/lua.flex + */ +public final class LuaLexer extends DefaultJFlexLexer { + + /** This character denotes the end of file */ + public static final int YYEOF = -1; + + /** initial size of the lookahead buffer */ + private static final int ZZ_BUFFERSIZE = 16384; + + /** lexical states */ + public static final int YYINITIAL = 0; + public static final int COMMENT = 8; + public static final int LONGSTRING = 6; + public static final int STRING2 = 4; + public static final int LINECOMMENT = 10; + public static final int STRING1 = 2; + + /** + * 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, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5 + }; + + /** + * Translates characters to character classes + */ + private static final String ZZ_CMAP_PACKED = + "\11\10\1\3\1\2\1\0\1\3\1\1\16\10\4\0\1\3\1\0"+ + "\1\20\1\46\1\7\1\46\1\0\1\21\1\51\1\52\1\46\1\45"+ + "\1\46\1\17\1\15\1\46\1\13\11\11\1\46\1\46\1\50\1\5"+ + "\1\50\2\0\4\12\1\16\1\12\24\7\1\4\1\22\1\6\1\46"+ + "\1\7\1\0\1\23\1\26\1\36\1\25\1\30\1\32\1\7\1\42"+ + "\1\34\1\7\1\31\1\35\1\7\1\24\1\33\1\44\1\7\1\27"+ + "\1\43\1\37\1\40\1\7\1\41\1\14\2\7\1\53\1\0\1\54"+ + "\1\47\41\10\2\0\4\7\4\0\1\7\2\0\1\10\7\0\1\7"+ + "\4\0\1\7\5\0\27\7\1\0\37\7\1\0\u013f\7\31\0\162\7"+ + "\4\0\14\7\16\0\5\7\11\0\1\7\21\0\130\10\5\0\23\10"+ + "\12\0\1\7\13\0\1\7\1\0\3\7\1\0\1\7\1\0\24\7"+ + "\1\0\54\7\1\0\46\7\1\0\5\7\4\0\202\7\1\0\4\10"+ + "\3\0\105\7\1\0\46\7\2\0\2\7\6\0\20\7\41\0\46\7"+ + "\2\0\1\7\7\0\47\7\11\0\21\10\1\0\27\10\1\0\3\10"+ + "\1\0\1\10\1\0\2\10\1\0\1\10\13\0\33\7\5\0\3\7"+ + "\15\0\4\10\14\0\6\10\13\0\32\7\5\0\13\7\16\10\7\0"+ + "\12\10\4\0\2\7\1\10\143\7\1\0\1\7\10\10\1\0\6\10"+ + "\2\7\2\10\1\0\4\10\2\7\12\10\3\7\2\0\1\7\17\0"+ + "\1\10\1\7\1\10\36\7\33\10\2\0\3\7\60\0\46\7\13\10"+ + "\1\7\u014f\0\3\10\66\7\2\0\1\10\1\7\20\10\2\0\1\7"+ + "\4\10\3\0\12\7\2\10\2\0\12\10\21\0\3\10\1\0\10\7"+ + "\2\0\2\7\2\0\26\7\1\0\7\7\1\0\1\7\3\0\4\7"+ + "\2\0\1\10\1\7\7\10\2\0\2\10\2\0\3\10\11\0\1\10"+ + "\4\0\2\7\1\0\3\7\2\10\2\0\12\10\4\7\15\0\3\10"+ + "\1\0\6\7\4\0\2\7\2\0\26\7\1\0\7\7\1\0\2\7"+ + "\1\0\2\7\1\0\2\7\2\0\1\10\1\0\5\10\4\0\2\10"+ + "\2\0\3\10\13\0\4\7\1\0\1\7\7\0\14\10\3\7\14\0"+ + "\3\10\1\0\11\7\1\0\3\7\1\0\26\7\1\0\7\7\1\0"+ + "\2\7\1\0\5\7\2\0\1\10\1\7\10\10\1\0\3\10\1\0"+ + "\3\10\2\0\1\7\17\0\2\7\2\10\2\0\12\10\1\0\1\7"+ + "\17\0\3\10\1\0\10\7\2\0\2\7\2\0\26\7\1\0\7\7"+ + "\1\0\2\7\1\0\5\7\2\0\1\10\1\7\6\10\3\0\2\10"+ + "\2\0\3\10\10\0\2\10\4\0\2\7\1\0\3\7\4\0\12\10"+ + "\1\0\1\7\20\0\1\10\1\7\1\0\6\7\3\0\3\7\1\0"+ + "\4\7\3\0\2\7\1\0\1\7\1\0\2\7\3\0\2\7\3\0"+ + "\3\7\3\0\10\7\1\0\3\7\4\0\5\10\3\0\3\10\1\0"+ + "\4\10\11\0\1\10\17\0\11\10\11\0\1\7\7\0\3\10\1\0"+ + "\10\7\1\0\3\7\1\0\27\7\1\0\12\7\1\0\5\7\4\0"+ + "\7\10\1\0\3\10\1\0\4\10\7\0\2\10\11\0\2\7\4\0"+ + "\12\10\22\0\2\10\1\0\10\7\1\0\3\7\1\0\27\7\1\0"+ + "\12\7\1\0\5\7\2\0\1\10\1\7\7\10\1\0\3\10\1\0"+ + "\4\10\7\0\2\10\7\0\1\7\1\0\2\7\4\0\12\10\22\0"+ + "\2\10\1\0\10\7\1\0\3\7\1\0\27\7\1\0\20\7\4\0"+ + "\6\10\2\0\3\10\1\0\4\10\11\0\1\10\10\0\2\7\4\0"+ + "\12\10\22\0\2\10\1\0\22\7\3\0\30\7\1\0\11\7\1\0"+ + "\1\7\2\0\7\7\3\0\1\10\4\0\6\10\1\0\1\10\1\0"+ + "\10\10\22\0\2\10\15\0\60\7\1\10\2\7\7\10\4\0\10\7"+ + "\10\10\1\0\12\10\47\0\2\7\1\0\1\7\2\0\2\7\1\0"+ + "\1\7\2\0\1\7\6\0\4\7\1\0\7\7\1\0\3\7\1\0"+ + "\1\7\1\0\1\7\2\0\2\7\1\0\4\7\1\10\2\7\6\10"+ + "\1\0\2\10\1\7\2\0\5\7\1\0\1\7\1\0\6\10\2\0"+ + "\12\10\2\0\2\7\42\0\1\7\27\0\2\10\6\0\12\10\13\0"+ + "\1\10\1\0\1\10\1\0\1\10\4\0\2\10\10\7\1\0\42\7"+ + "\6\0\24\10\1\0\2\10\4\7\4\0\10\10\1\0\44\10\11\0"+ + "\1\10\71\0\42\7\1\0\5\7\1\0\2\7\1\0\7\10\3\0"+ + "\4\10\6\0\12\10\6\0\6\7\4\10\106\0\46\7\12\0\51\7"+ + "\7\0\132\7\5\0\104\7\5\0\122\7\6\0\7\7\1\0\77\7"+ + "\1\0\1\7\1\0\4\7\2\0\7\7\1\0\1\7\1\0\4\7"+ + "\2\0\47\7\1\0\1\7\1\0\4\7\2\0\37\7\1\0\1\7"+ + "\1\0\4\7\2\0\7\7\1\0\1\7\1\0\4\7\2\0\7\7"+ + "\1\0\7\7\1\0\27\7\1\0\37\7\1\0\1\7\1\0\4\7"+ + "\2\0\7\7\1\0\47\7\1\0\23\7\16\0\11\10\56\0\125\7"+ + "\14\0\u026c\7\2\0\10\7\12\0\32\7\5\0\113\7\3\0\3\7"+ + "\17\0\15\7\1\0\4\7\3\10\13\0\22\7\3\10\13\0\22\7"+ + "\2\10\14\0\15\7\1\0\3\7\1\0\2\10\14\0\64\7\40\10"+ + "\3\0\1\7\3\0\2\7\1\10\2\0\12\10\41\0\3\10\2\0"+ + "\12\10\6\0\130\7\10\0\51\7\1\10\126\0\35\7\3\0\14\10"+ + "\4\0\14\10\12\0\12\10\36\7\2\0\5\7\u038b\0\154\7\224\0"+ + "\234\7\4\0\132\7\6\0\26\7\2\0\6\7\2\0\46\7\2\0"+ + "\6\7\2\0\10\7\1\0\1\7\1\0\1\7\1\0\1\7\1\0"+ + "\37\7\2\0\65\7\1\0\7\7\1\0\1\7\3\0\3\7\1\0"+ + "\7\7\3\0\4\7\2\0\6\7\4\0\15\7\5\0\3\7\1\0"+ + "\7\7\17\0\4\10\32\0\5\10\20\0\2\7\23\0\1\7\13\0"+ + "\4\10\6\0\6\10\1\0\1\7\15\0\1\7\40\0\22\7\36\0"+ + "\15\10\4\0\1\10\3\0\6\10\27\0\1\7\4\0\1\7\2\0"+ + "\12\7\1\0\1\7\3\0\5\7\6\0\1\7\1\0\1\7\1\0"+ + "\1\7\1\0\4\7\1\0\3\7\1\0\7\7\3\0\3\7\5\0"+ + "\5\7\26\0\44\7\u0e81\0\3\7\31\0\11\7\6\10\1\0\5\7"+ + "\2\0\5\7\4\0\126\7\2\0\2\10\2\0\3\7\1\0\137\7"+ + "\5\0\50\7\4\0\136\7\21\0\30\7\70\0\20\7\u0200\0\u19b6\7"+ + "\112\0\u51a6\7\132\0\u048d\7\u0773\0\u2ba4\7\u215c\0\u012e\7\2\0\73\7"+ + "\225\0\7\7\14\0\5\7\5\0\1\7\1\10\12\7\1\0\15\7"+ + "\1\0\5\7\1\0\1\7\1\0\2\7\1\0\2\7\1\0\154\7"+ + "\41\0\u016b\7\22\0\100\7\2\0\66\7\50\0\15\7\3\0\20\10"+ + "\20\0\4\10\17\0\2\7\30\0\3\7\31\0\1\7\6\0\5\7"+ + "\1\0\207\7\2\0\1\10\4\0\1\7\13\0\12\10\7\0\32\7"+ + "\4\0\1\7\1\0\32\7\12\0\132\7\3\0\6\7\2\0\6\7"+ + "\2\0\6\7\2\0\3\7\3\0\2\7\3\0\2\7\22\0\3\10"+ + "\4\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\3\1\1\2\1\3\1\4\1\5\2\6\2\3"+ + "\1\7\1\10\15\5\1\3\1\1\1\11\1\12\1\13"+ + "\1\14\1\15\2\16\1\17\1\1\1\15\1\20\1\21"+ + "\2\15\1\21\1\22\2\23\1\22\2\24\1\25\1\0"+ + "\1\6\2\0\1\3\1\26\3\5\1\27\6\5\1\30"+ + "\5\5\1\31\1\0\1\32\1\33\1\0\1\6\1\0"+ + "\1\6\3\5\1\34\13\5\1\30\6\5\1\35\1\36"+ + "\1\5"; + + private static int [] zzUnpackAction() { + int [] result = new int[111]; + 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\55\0\132\0\207\0\264\0\341\0\u010e\0\u013b"+ + "\0\u0168\0\u0195\0\u01c2\0\u010e\0\u01ef\0\u021c\0\u0249\0\u0276"+ + "\0\u02a3\0\u010e\0\u010e\0\u02d0\0\u02fd\0\u032a\0\u0357\0\u0384"+ + "\0\u03b1\0\u03de\0\u040b\0\u0438\0\u0465\0\u0492\0\u04bf\0\u04ec"+ + "\0\u010e\0\u01c2\0\u010e\0\u010e\0\u010e\0\u010e\0\u0519\0\u0546"+ + "\0\u010e\0\u010e\0\u0573\0\u05a0\0\u010e\0\u010e\0\u05cd\0\u010e"+ + "\0\u05fa\0\u010e\0\u0627\0\u010e\0\u0654\0\u0681\0\u010e\0\u010e"+ + "\0\u0195\0\u06ae\0\u06db\0\u0708\0\u0735\0\u010e\0\u0762\0\u078f"+ + "\0\u07bc\0\u01ef\0\u07e9\0\u0816\0\u0843\0\u0870\0\u089d\0\u08ca"+ + "\0\u01ef\0\u08f7\0\u0924\0\u0951\0\u097e\0\u09ab\0\u010e\0\u05fa"+ + "\0\u010e\0\u010e\0\u0654\0\u09d8\0\u09d8\0\u0708\0\u0a05\0\u0a32"+ + "\0\u0a5f\0\u01ef\0\u0a8c\0\u0ab9\0\u0ae6\0\u0b13\0\u0b40\0\u0b6d"+ + "\0\u0b9a\0\u0bc7\0\u0bf4\0\u0c21\0\u0c4e\0\u0c7b\0\u0ca8\0\u0cd5"+ + "\0\u0d02\0\u0d2f\0\u0d5c\0\u0d89\0\u01ef\0\u01ef\0\u0db6"; + + private static int [] zzUnpackRowMap() { + int [] result = new int[111]; + 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\1\7\1\11\1\12\1\13\1\14\1\15"+ + "\1\7\1\16\1\15\1\17\1\15\1\20\1\15\1\21"+ + "\1\22\1\23\1\7\1\24\1\25\1\26\1\27\1\30"+ + "\1\31\1\15\1\32\1\33\1\34\1\35\1\15\1\36"+ + "\1\37\1\40\3\15\2\41\1\42\1\13\1\43\1\44"+ + "\1\45\1\46\1\47\1\50\1\51\15\47\1\52\1\47"+ + "\1\53\32\47\1\54\1\50\1\51\16\54\1\55\1\53"+ + "\32\54\1\56\1\57\1\60\3\56\1\61\46\56\1\62"+ + "\1\63\1\64\1\62\1\65\50\62\1\56\1\66\1\67"+ + "\52\56\57\0\1\7\55\0\1\11\55\0\1\70\1\71"+ + "\54\0\1\41\56\0\6\15\1\0\1\15\4\0\22\15"+ + "\21\0\1\16\1\0\1\16\1\0\1\72\1\73\11\0"+ + "\1\73\35\0\1\16\1\0\1\16\1\74\1\72\1\73"+ + "\11\0\1\73\35\0\1\72\1\0\1\72\1\0\1\75"+ + "\56\0\1\76\44\0\6\15\1\0\1\15\4\0\1\15"+ + "\1\77\20\15\17\0\6\15\1\0\1\15\4\0\10\15"+ + "\1\100\1\101\10\15\17\0\6\15\1\0\1\15\4\0"+ + "\10\15\1\102\11\15\17\0\6\15\1\0\1\15\4\0"+ + "\4\15\1\103\15\15\17\0\6\15\1\0\1\15\4\0"+ + "\5\15\1\104\14\15\17\0\6\15\1\0\1\15\4\0"+ + "\1\15\1\105\10\15\1\106\7\15\17\0\6\15\1\0"+ + "\1\15\4\0\1\107\7\15\1\33\4\15\1\110\4\15"+ + "\17\0\6\15\1\0\1\15\4\0\4\15\1\111\15\15"+ + "\17\0\6\15\1\0\1\15\4\0\1\15\1\111\5\15"+ + "\1\111\12\15\17\0\6\15\1\0\1\15\4\0\10\15"+ + "\1\112\11\15\17\0\6\15\1\0\1\15\4\0\4\15"+ + "\1\113\12\15\1\114\2\15\17\0\6\15\1\0\1\15"+ + "\4\0\1\15\1\115\20\15\17\0\6\15\1\0\1\15"+ + "\4\0\17\15\1\116\2\15\10\0\1\47\2\0\15\47"+ + "\1\0\1\47\1\0\32\47\2\0\1\51\52\0\2\117"+ + "\1\0\52\117\1\54\2\0\16\54\2\0\32\54\2\0"+ + "\1\60\57\0\1\120\1\121\50\0\1\64\56\0\1\122"+ + "\1\123\51\0\1\67\63\0\1\72\1\0\1\72\2\0"+ + "\1\73\11\0\1\73\35\0\1\124\1\0\1\124\3\0"+ + "\1\125\25\0\1\125\20\0\3\126\2\0\1\126\4\0"+ + "\1\126\1\0\2\126\1\0\1\126\1\0\1\126\3\0"+ + "\1\126\33\0\1\41\46\0\6\15\1\0\1\15\4\0"+ + "\2\15\1\111\17\15\17\0\6\15\1\0\1\15\4\0"+ + "\14\15\1\111\5\15\17\0\6\15\1\0\1\15\4\0"+ + "\12\15\1\111\7\15\17\0\6\15\1\0\1\15\4\0"+ + "\5\15\1\127\14\15\17\0\6\15\1\0\1\15\4\0"+ + "\14\15\1\130\4\15\1\131\17\0\6\15\1\0\1\15"+ + "\4\0\2\15\1\132\17\15\17\0\6\15\1\0\1\15"+ + "\4\0\20\15\1\133\1\15\17\0\6\15\1\0\1\15"+ + "\4\0\12\15\1\134\7\15\17\0\6\15\1\0\1\15"+ + "\4\0\1\15\1\135\20\15\17\0\6\15\1\0\1\15"+ + "\4\0\13\15\1\136\6\15\17\0\6\15\1\0\1\15"+ + "\4\0\15\15\1\137\4\15\17\0\6\15\1\0\1\15"+ + "\4\0\5\15\1\140\14\15\17\0\6\15\1\0\1\15"+ + "\4\0\14\15\1\141\5\15\17\0\6\15\1\0\1\15"+ + "\4\0\11\15\1\142\10\15\21\0\1\124\1\0\1\124"+ + "\50\0\6\15\1\0\1\15\4\0\1\143\21\15\17\0"+ + "\6\15\1\0\1\15\4\0\15\15\1\144\4\15\17\0"+ + "\6\15\1\0\1\15\4\0\5\15\1\145\14\15\17\0"+ + "\6\15\1\0\1\15\4\0\5\15\1\146\14\15\17\0"+ + "\6\15\1\0\1\15\4\0\20\15\1\137\1\15\17\0"+ + "\6\15\1\0\1\15\4\0\13\15\1\147\6\15\17\0"+ + "\6\15\1\0\1\15\4\0\1\101\21\15\17\0\6\15"+ + "\1\0\1\15\4\0\5\15\1\111\14\15\17\0\6\15"+ + "\1\0\1\15\4\0\1\15\1\102\20\15\17\0\6\15"+ + "\1\0\1\15\4\0\11\15\1\150\10\15\17\0\6\15"+ + "\1\0\1\15\4\0\12\15\1\137\7\15\17\0\6\15"+ + "\1\0\1\15\4\0\6\15\1\111\13\15\17\0\6\15"+ + "\1\0\1\15\4\0\4\15\1\151\15\15\17\0\6\15"+ + "\1\0\1\15\4\0\1\152\21\15\17\0\6\15\1\0"+ + "\1\15\4\0\11\15\1\153\10\15\17\0\6\15\1\0"+ + "\1\15\4\0\14\15\1\154\5\15\17\0\6\15\1\0"+ + "\1\15\4\0\12\15\1\155\7\15\17\0\6\15\1\0"+ + "\1\15\4\0\1\15\1\111\20\15\17\0\6\15\1\0"+ + "\1\15\4\0\14\15\1\156\5\15\17\0\6\15\1\0"+ + "\1\15\4\0\7\15\1\111\12\15\17\0\6\15\1\0"+ + "\1\15\4\0\11\15\1\157\10\15\17\0\6\15\1\0"+ + "\1\15\4\0\10\15\1\140\11\15\10\0"; + + private static int [] zzUnpackTrans() { + int [] result = new int[3555]; + 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\4\1\1\11\5\1\2\11\15\1\1\11"+ + "\1\1\4\11\2\1\2\11\2\1\2\11\1\1\1\11"+ + "\1\1\1\11\1\1\1\11\2\1\2\11\1\0\1\1"+ + "\2\0\1\1\1\11\20\1\1\11\1\0\2\11\1\0"+ + "\1\1\1\0\32\1"; + + private static int [] zzUnpackAttribute() { + int [] result = new int[111]; + 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[] = new char[ZZ_BUFFERSIZE]; + + /** 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; + + /** number of newlines encountered up to the start of the matched text */ + private int yyline; + + /** the number of characters up to the start of the matched text */ + private int yychar; + + /** + * the number of characters from the last newline up to the start of the + * matched text + */ + private int yycolumn; + + /** + * 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; + + /** denotes if the user-EOF-code has already been executed */ + private boolean zzEOFDone; + + /* user code: */ + /** + * Create an empty lexer, yyrset will be called later to reset and assign + * the reader + */ + public LuaLexer() { + super(); + } + + @Override + public int yychar() { + return yychar; + } + + private static final byte PARAN = 1; + private static final byte BRACKET = 2; + private static final byte CURLY = 3; + private static final byte ENDBLOCK = 4; + private static final byte REPEATBLOCK = 5; + + TokenType longType; + int longLen; + + + /** + * 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 LuaLexer(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 LuaLexer(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 < 1762) { + int count = packed.charAt(i++); + char value = packed.charAt(i++); + do map[j++] = value; while (--count > 0); + } + return map; + } + + + /** + * Refills the input buffer. + * + * @return false, iff there was new input. + * + * @exception java.io.IOException if any I/O-Error occurs + */ + private boolean zzRefill() throws java.io.IOException { + + /* first: make room (if you can) */ + if (zzStartRead > 0) { + System.arraycopy(zzBuffer, zzStartRead, + zzBuffer, 0, + zzEndRead-zzStartRead); + + /* translate stored positions */ + zzEndRead-= zzStartRead; + zzCurrentPos-= zzStartRead; + zzMarkedPos-= zzStartRead; + zzStartRead = 0; + } + + /* is the buffer big enough? */ + if (zzCurrentPos >= zzBuffer.length) { + /* if not: blow it up */ + char newBuffer[] = new char[zzCurrentPos*2]; + System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); + zzBuffer = newBuffer; + } + + /* finally: fill the buffer with new input */ + int numRead = zzReader.read(zzBuffer, zzEndRead, + zzBuffer.length-zzEndRead); + + if (numRead > 0) { + zzEndRead+= numRead; + return false; + } + // unlikely but not impossible: read 0 characters, but not at end of stream + if (numRead == 0) { + int c = zzReader.read(); + if (c == -1) { + return true; + } else { + zzBuffer[zzEndRead++] = (char) c; + return false; + } + } + + // numRead < 0 + return true; + } + + + /** + * 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(); + } + + + /** + * 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 ZZ_INITIAL. + * + * @param reader the new input stream + */ + public final void yyreset(java.io.Reader reader) { + zzReader = reader; + zzAtBOL = true; + zzAtEOF = false; + zzEOFDone = false; + zzEndRead = zzStartRead = 0; + zzCurrentPos = zzMarkedPos = 0; + yyline = yychar = yycolumn = 0; + zzLexicalState = YYINITIAL; + } + + + /** + * Returns the current lexical state. + */ + public final int yystate() { + return zzLexicalState; + } + + + /** + * Enters a new lexical state + * + * @param newState the new lexical state + */ + 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 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; + + yychar+= zzMarkedPosL-zzStartRead; + + zzAction = -1; + + zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; + + 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 8: + { yybegin(STRING2); + tokenStart = yychar; + tokenLength = 1; + } + case 31: break; + case 10: + { return token(TokenType.OPERATOR, -PARAN); + } + case 32: break; + case 24: + { return token(TokenType.KEYWORD); + } + case 33: break; + case 21: + { longType = TokenType.STRING; + yybegin(LONGSTRING); + tokenStart = yychar; + tokenLength = yylength(); + longLen = tokenLength; + } + case 34: break; + case 6: + { return token(TokenType.NUMBER); + } + case 35: break; + case 16: + { yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + case 36: break; + case 20: + { yybegin(YYINITIAL); + tokenLength += yylength(); + return token(TokenType.COMMENT, tokenStart, tokenLength); + } + case 37: break; + case 3: + { return token(TokenType.OPERATOR); + } + case 38: break; + case 11: + { return token(TokenType.OPERATOR, CURLY); + } + case 39: break; + case 12: + { return token(TokenType.OPERATOR, -CURLY); + } + case 40: break; + case 13: + { tokenLength += yylength(); + } + case 41: break; + case 14: + { yybegin(YYINITIAL); + } + case 42: break; + case 15: + { yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + case 43: break; + case 17: + { tokenLength++; + } + case 44: break; + case 4: + { return token(TokenType.OPERATOR, -BRACKET); + } + case 45: break; + case 9: + { return token(TokenType.OPERATOR, PARAN); + } + case 46: break; + case 5: + { return token(TokenType.IDENTIFIER); + } + case 47: break; + case 7: + { yybegin(STRING1); + tokenStart = yychar; + tokenLength = 1; + } + case 48: break; + case 30: + { return token(TokenType.KEYWORD, REPEATBLOCK); + } + case 49: break; + case 25: + { tokenLength += 2; + } + case 50: break; + case 2: + { return token(TokenType.OPERATOR, BRACKET); + } + case 51: break; + case 26: + { if (longLen == yylength()) { + tokenLength += yylength(); + yybegin(YYINITIAL); + return token(longType, tokenStart, tokenLength); + } else { + tokenLength++; + yypushback(yylength() - 1); + } + } + case 52: break; + case 23: + { return token(TokenType.KEYWORD, ENDBLOCK); + } + case 53: break; + case 19: + { yybegin(YYINITIAL); + return token(TokenType.COMMENT, tokenStart, tokenLength); + } + case 54: break; + case 18: + { yybegin(LINECOMMENT); + tokenLength += yylength(); + } + case 55: break; + case 22: + { yybegin(COMMENT); + tokenStart = yychar; + tokenLength = yylength(); + } + case 56: break; + case 29: + { return token(TokenType.KEYWORD, -REPEATBLOCK); + } + case 57: break; + case 28: + { return token(TokenType.KEYWORD, -ENDBLOCK); + } + case 58: break; + case 27: + { longType = TokenType.COMMENT; + yybegin(LONGSTRING); + tokenLength += yylength(); + longLen = yylength(); + } + case 59: break; + case 1: + { + } + case 60: break; + default: + if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { + zzAtEOF = true; + switch (zzLexicalState) { + case COMMENT: { + yybegin(YYINITIAL); + return token(TokenType.COMMENT, tokenStart, tokenLength); + } + case 112: break; + case LONGSTRING: { + yybegin(YYINITIAL); + return token(longType, tokenStart, tokenLength); + } + case 113: break; + case STRING2: { + yybegin(YYINITIAL); + return token(TokenType.STRING, tokenStart, tokenLength); + } + case 114: break; + case LINECOMMENT: { + yybegin(YYINITIAL); + return token(TokenType.COMMENT, tokenStart, tokenLength); + } + case 115: break; + case STRING1: { + yybegin(YYINITIAL); + return token(TokenType.STRING, tokenStart, tokenLength); + } + case 116: break; + default: + { + return null; + } + } + } + else { + zzScanError(ZZ_NO_MATCH); + } + } + } + } + + +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/PropertiesLexer.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/PropertiesLexer.java new file mode 100644 index 000000000..3fca3d192 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/PropertiesLexer.java @@ -0,0 +1,580 @@ +/* The following code was generated by JFlex 1.4.3 on 21.7.10 18:14 */ + +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jsyntaxpane.lexers; + + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + + +/** + * This class is a scanner generated by + * JFlex 1.4.3 + * on 21.7.10 18:14 from the specification file + * D:/Dokumenty/Programovani/JavaSE/JPSWFDec/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/properties.flex + */ +public final class PropertiesLexer extends DefaultJFlexLexer { + + /** This character denotes the end of file */ + public static final int YYEOF = -1; + + /** initial size of the lookahead buffer */ + private static final int ZZ_BUFFERSIZE = 16384; + + /** 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, 0 + }; + + /** + * Translates characters to character classes + */ + private static final String ZZ_CMAP_PACKED = + "\11\0\1\2\1\4\2\0\1\3\22\0\1\6\2\0\1\1\12\0"+ + "\1\5\1\0\12\5\3\0\1\7\3\0\32\5\4\0\1\5\1\0"+ + "\32\5\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\1\1\1\2\2\1\2\2\2\0\1\3"; + + private static int [] zzUnpackAction() { + int [] result = new int[10]; + 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\10\0\20\0\30\0\40\0\50\0\10\0\60"+ + "\0\40\0\10"; + + private static int [] zzUnpackRowMap() { + int [] result = new int[10]; + 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\2\1\4\1\2\2\5\1\2\10\0"+ + "\3\3\1\6\1\7\3\3\4\0\1\2\5\0\1\10"+ + "\2\0\2\11\1\12\4\0\1\7\5\0\1\10\3\0"+ + "\1\10\1\12"; + + private static int [] zzUnpackTrans() { + int [] result = new int[56]; + 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\4\1\1\11\2\0\1\11"; + + private static int [] zzUnpackAttribute() { + int [] result = new int[10]; + 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[] = new char[ZZ_BUFFERSIZE]; + + /** 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; + + /** number of newlines encountered up to the start of the matched text */ + private int yyline; + + /** the number of characters up to the start of the matched text */ + private int yychar; + + /** + * the number of characters from the last newline up to the start of the + * matched text + */ + private int yycolumn; + + /** + * 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; + + /** denotes if the user-EOF-code has already been executed */ + private boolean zzEOFDone; + + /* user code: */ + /** + * Create an empty lexer, yyrset will be called later to reset and assign + * the reader + */ + public PropertiesLexer() { + super(); + } + + @Override + public int yychar() { + return yychar; + } + + + /** + * 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 PropertiesLexer(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 PropertiesLexer(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 < 44) { + int count = packed.charAt(i++); + char value = packed.charAt(i++); + do map[j++] = value; while (--count > 0); + } + return map; + } + + + /** + * Refills the input buffer. + * + * @return false, iff there was new input. + * + * @exception java.io.IOException if any I/O-Error occurs + */ + private boolean zzRefill() throws java.io.IOException { + + /* first: make room (if you can) */ + if (zzStartRead > 0) { + System.arraycopy(zzBuffer, zzStartRead, + zzBuffer, 0, + zzEndRead-zzStartRead); + + /* translate stored positions */ + zzEndRead-= zzStartRead; + zzCurrentPos-= zzStartRead; + zzMarkedPos-= zzStartRead; + zzStartRead = 0; + } + + /* is the buffer big enough? */ + if (zzCurrentPos >= zzBuffer.length) { + /* if not: blow it up */ + char newBuffer[] = new char[zzCurrentPos*2]; + System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); + zzBuffer = newBuffer; + } + + /* finally: fill the buffer with new input */ + int numRead = zzReader.read(zzBuffer, zzEndRead, + zzBuffer.length-zzEndRead); + + if (numRead > 0) { + zzEndRead+= numRead; + return false; + } + // unlikely but not impossible: read 0 characters, but not at end of stream + if (numRead == 0) { + int c = zzReader.read(); + if (c == -1) { + return true; + } else { + zzBuffer[zzEndRead++] = (char) c; + return false; + } + } + + // numRead < 0 + return true; + } + + + /** + * 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(); + } + + + /** + * 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 ZZ_INITIAL. + * + * @param reader the new input stream + */ + public final void yyreset(java.io.Reader reader) { + zzReader = reader; + zzAtBOL = true; + zzAtEOF = false; + zzEOFDone = false; + zzEndRead = zzStartRead = 0; + zzCurrentPos = zzMarkedPos = 0; + yyline = yychar = yycolumn = 0; + zzLexicalState = YYINITIAL; + } + + + /** + * Returns the current lexical state. + */ + public final int yystate() { + return zzLexicalState; + } + + + /** + * Enters a new lexical state + * + * @param newState the new lexical state + */ + 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 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; + + yychar+= zzMarkedPosL-zzStartRead; + + zzAction = -1; + + zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; + + 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 3: + { return token(TokenType.KEYWORD); + } + case 4: break; + case 1: + { /* skip */ + } + case 5: break; + case 2: + { return token(TokenType.COMMENT); + } + case 6: break; + default: + if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { + zzAtEOF = true; + { + return null; + } + } + else { + zzScanError(ZZ_NO_MATCH); + } + } + } + } + + +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/PythonLexer.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/PythonLexer.java new file mode 100644 index 000000000..b4041d6c2 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/PythonLexer.java @@ -0,0 +1,1166 @@ +/* The following code was generated by JFlex 1.4.3 on 21.7.10 18:14 */ + +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jsyntaxpane.lexers; + + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + + +/** + * This class is a scanner generated by + * JFlex 1.4.3 + * on 21.7.10 18:14 from the specification file + * D:/Dokumenty/Programovani/JavaSE/JPSWFDec/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/python.flex + */ +public final class PythonLexer extends DefaultJFlexLexer { + + /** This character denotes the end of file */ + public static final int YYEOF = -1; + + /** initial size of the lookahead buffer */ + private static final int ZZ_BUFFERSIZE = 16384; + + /** lexical states */ + public static final int SQSTRING = 6; + public static final int ML_STRING = 4; + public static final int STRING = 2; + public static final int SQML_STRING = 8; + 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, 0, 1, 1, 2, 2, 3, 3, 4, 4 + }; + + /** + * Translates characters to character classes + */ + private static final String ZZ_CMAP_PACKED = + "\11\0\1\3\1\2\1\0\1\3\1\1\22\0\1\3\1\77\1\23"+ + "\1\4\1\101\1\72\1\72\1\24\1\62\1\63\1\70\1\22\1\75"+ + "\1\22\1\20\1\71\1\7\1\15\2\14\4\16\2\10\1\75\1\75"+ + "\1\73\1\76\1\74\1\101\1\75\4\13\1\21\1\17\2\5\1\55"+ + "\1\100\1\5\1\11\1\5\1\54\5\5\1\56\3\5\1\12\2\5"+ + "\1\66\1\25\1\67\1\72\1\6\1\75\1\26\1\35\1\37\1\30"+ + "\1\32\1\44\1\51\1\53\1\42\1\61\1\36\1\40\1\50\1\27"+ + "\1\41\1\46\1\5\1\33\1\31\1\34\1\43\1\57\1\52\1\45"+ + "\1\47\1\60\1\64\1\72\1\65\1\75\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\3\1\1\2\1\3\1\1\2\4\1\3\1\5"+ + "\1\3\1\5\1\6\1\7\31\3\1\10\1\11\1\12"+ + "\1\13\1\14\1\15\5\5\1\1\1\16\1\17\2\20"+ + "\1\21\1\1\3\22\1\17\1\23\1\22\2\2\1\0"+ + "\3\4\1\0\4\4\1\0\2\3\2\0\1\3\1\24"+ + "\40\3\1\24\3\3\1\24\1\25\1\24\1\3\1\24"+ + "\25\3\1\26\2\17\4\0\4\4\1\0\2\3\1\27"+ + "\1\30\2\3\1\24\1\3\1\25\36\3\1\25\24\3"+ + "\1\17\1\31\2\0\2\4\10\3\1\24\27\3\2\0"+ + "\2\4\11\3\1\24\13\3\2\0\2\4\13\3\1\24"+ + "\1\3\2\0\2\4\6\3\1\25\2\4\3\3\2\4"+ + "\1\3\2\4\1\3\1\0\1\4\1\0\1\4\1\0"+ + "\1\4\1\0\1\4\1\0\1\4\1\0\1\4\1\0"+ + "\1\4\1\0\5\4"; + + private static int [] zzUnpackAction() { + int [] result = new int[342]; + 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\u0318\0\u035a\0\u039c\0\u03de"+ + "\0\u0420\0\u0462\0\u04a4\0\u04e6\0\u0528\0\u056a\0\u05ac\0\u05ee"+ + "\0\u0630\0\u0672\0\u06b4\0\u06f6\0\u0738\0\u077a\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\u0b16\0\u014a\0\u014a\0\u014a\0\u014a"+ + "\0\u014a\0\u014a\0\u0b58\0\u0b9a\0\u0bdc\0\u0c1e\0\u014a\0\u0420"+ + "\0\u014a\0\u0c60\0\u0ca2\0\u014a\0\u014a\0\u0ce4\0\u0d26\0\u014a"+ + "\0\u0d68\0\u0daa\0\u014a\0\u0dec\0\u0e2e\0\u014a\0\u0e70\0\u0eb2"+ + "\0\u0ef4\0\u014a\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\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\u0252\0\u1bd8\0\u1c1a\0\u0252\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\u203a\0\u207c"+ + "\0\u20be\0\u2100\0\u2142\0\u2184\0\u014a\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\u014a\0\u014a\0\u2520\0\u2562\0\u25a4\0\u25e6"+ + "\0\u25a4\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\u2cdc\0\u2d1e\0\u2d60\0\u2da2\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\u25a4\0\u31c2"+ + "\0\u3204\0\u3246\0\u3288\0\u32ca\0\u014a\0\u014a\0\u330c\0\u334e"+ + "\0\u3390\0\u33d2\0\u3414\0\u3456\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\u1a8e\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\u3f6c\0\u43ce\0\u4410\0\u4452\0\u4494\0\u44d6\0\u4518\0\u455a"+ + "\0\u459c\0\u45de\0\u124e\0\u4620\0\u4662\0\u46a4\0\u46e6\0\u4728"+ + "\0\u476a\0\u47ac\0\u47ee\0\u4830\0\u4872\0\u48b4\0\u014a\0\u48f6"+ + "\0\u4938\0\u497a\0\u49bc\0\u49fe\0\u4a40\0\u4a82\0\u4ac4\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"; + + private static int [] zzUnpackRowMap() { + int [] result = new int[342]; + 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\6\1\10\1\11\1\12\1\13\1\14"+ + "\1\15\3\12\3\15\1\16\1\17\1\20\1\21\1\22"+ + "\1\23\1\6\1\24\1\25\1\26\1\27\1\30\1\31"+ + "\1\32\1\33\1\12\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\12\1\52\1\53\1\54\1\12\1\55\1\56"+ + "\1\57\1\60\1\61\1\62\1\63\1\64\1\21\1\65"+ + "\1\66\1\67\1\21\1\70\1\12\1\71\1\72\1\73"+ + "\1\74\20\72\1\75\1\72\1\76\55\72\1\77\1\100"+ + "\20\72\1\101\1\72\1\76\54\72\1\102\1\73\1\74"+ + "\21\102\1\103\1\76\55\102\1\77\1\100\21\102\1\104"+ + "\1\76\54\102\104\0\1\6\102\0\1\10\76\0\1\11"+ + "\1\105\1\106\77\11\5\0\13\12\1\0\1\12\4\0"+ + "\34\12\16\0\1\12\7\0\1\107\102\0\1\110\1\111"+ + "\1\112\1\113\1\0\1\114\1\115\1\114\1\116\1\117"+ + "\1\120\10\0\1\120\5\0\1\112\3\0\1\116\1\113"+ + "\43\0\2\15\1\112\2\0\3\15\1\116\1\117\1\120"+ + "\10\0\1\120\5\0\1\112\3\0\1\116\42\0\13\12"+ + "\1\0\1\12\4\0\1\121\33\12\16\0\1\12\10\0"+ + "\2\117\3\0\3\117\70\0\13\12\1\0\1\12\4\0"+ + "\12\12\1\122\21\12\16\0\1\12\77\0\1\67\26\0"+ + "\1\123\102\0\1\124\62\0\13\12\1\0\1\12\4\0"+ + "\1\12\1\125\1\12\1\126\3\12\1\127\10\12\1\130"+ + "\13\12\16\0\1\12\6\0\13\12\1\0\1\12\4\0"+ + "\13\12\1\131\20\12\16\0\1\12\6\0\13\12\1\0"+ + "\1\12\4\0\4\12\1\132\7\12\1\133\17\12\16\0"+ + "\1\12\6\0\13\12\1\0\1\12\4\0\4\12\1\134"+ + "\1\12\1\135\3\12\1\136\1\137\1\12\1\140\16\12"+ + "\16\0\1\12\6\0\13\12\1\0\1\12\4\0\1\12"+ + "\1\141\10\12\1\142\4\12\1\143\11\12\1\144\2\12"+ + "\16\0\1\12\6\0\13\12\1\0\1\12\4\0\1\145"+ + "\3\12\1\146\6\12\1\147\20\12\16\0\1\12\6\0"+ + "\13\12\1\0\1\12\4\0\5\12\1\150\7\12\1\151"+ + "\3\12\1\152\12\12\16\0\1\12\6\0\13\12\1\0"+ + "\1\12\4\0\5\12\1\153\5\12\1\154\1\12\1\155"+ + "\16\12\16\0\1\12\6\0\13\12\1\0\1\12\4\0"+ + "\1\156\11\12\1\157\1\160\6\12\1\161\2\12\1\162"+ + "\6\12\16\0\1\12\6\0\13\12\1\0\1\12\4\0"+ + "\1\163\3\12\1\164\6\12\1\165\1\166\17\12\16\0"+ + "\1\12\6\0\13\12\1\0\1\12\4\0\5\12\1\167"+ + "\1\12\1\170\1\12\1\171\6\12\1\172\13\12\16\0"+ + "\1\12\6\0\13\12\1\0\1\12\4\0\1\12\1\173"+ + "\1\174\1\175\2\12\1\176\7\12\1\177\3\12\1\200"+ + "\11\12\16\0\1\12\6\0\13\12\1\0\1\12\4\0"+ + "\1\12\1\201\32\12\16\0\1\12\6\0\13\12\1\0"+ + "\1\12\4\0\5\12\1\202\4\12\1\203\1\204\1\205"+ + "\17\12\16\0\1\12\6\0\13\12\1\0\1\12\4\0"+ + "\5\12\1\206\26\12\16\0\1\12\6\0\13\12\1\0"+ + "\1\12\4\0\1\207\4\12\1\210\5\12\1\211\20\12"+ + "\16\0\1\12\6\0\13\12\1\0\1\12\4\0\14\12"+ + "\1\212\17\12\16\0\1\12\6\0\13\12\1\0\1\12"+ + "\4\0\1\213\13\12\1\164\17\12\16\0\1\12\6\0"+ + "\13\12\1\0\1\12\4\0\4\12\1\214\5\12\1\215"+ + "\21\12\16\0\1\12\6\0\13\12\1\0\1\12\4\0"+ + "\14\12\1\216\10\12\1\217\6\12\16\0\1\12\6\0"+ + "\13\12\1\0\1\12\4\0\1\220\3\12\1\221\27\12"+ + "\16\0\1\12\6\0\13\12\1\0\1\12\4\0\13\12"+ + "\1\222\20\12\16\0\1\12\6\0\13\12\1\0\1\12"+ + "\4\0\5\12\1\223\26\12\16\0\1\12\6\0\13\12"+ + "\1\0\1\12\4\0\1\224\33\12\16\0\1\12\6\0"+ + "\13\12\1\0\1\12\4\0\14\12\1\161\17\12\16\0"+ + "\1\12\71\0\1\21\5\0\1\67\74\0\1\21\4\0"+ + "\1\67\76\0\1\21\1\67\1\0\1\67\77\0\1\21"+ + "\1\0\1\67\3\0\1\72\2\0\20\72\1\0\1\72"+ + "\1\0\54\72\2\0\1\74\77\0\2\225\1\0\4\225"+ + "\1\226\4\225\2\226\1\227\63\225\2\0\1\100\122\0"+ + "\1\230\56\0\1\102\2\0\21\102\2\0\54\102\24\0"+ + "\1\231\57\0\1\106\126\0\1\232\12\0\1\233\46\0"+ + "\1\110\1\111\1\112\2\0\1\114\1\115\1\114\1\116"+ + "\1\117\1\120\10\0\1\120\5\0\1\112\3\0\1\116"+ + "\44\0\2\111\3\0\3\111\1\116\1\117\1\120\10\0"+ + "\1\120\11\0\1\116\44\0\1\234\1\235\2\0\5\235"+ + "\1\0\1\235\4\0\1\235\1\0\1\235\1\0\1\235"+ + "\2\0\1\235\1\0\1\235\4\0\1\235\44\0\1\236"+ + "\1\111\1\112\2\0\3\236\1\116\1\117\1\120\10\0"+ + "\1\120\5\0\1\112\3\0\1\116\44\0\1\114\1\111"+ + "\1\112\2\0\3\114\1\116\1\117\1\120\10\0\1\120"+ + "\5\0\1\112\3\0\1\116\116\0\1\112\16\0\1\112"+ + "\10\0\2\117\3\0\3\117\1\116\1\0\1\120\10\0"+ + "\1\120\11\0\1\116\44\0\2\237\3\0\3\237\3\0"+ + "\1\240\64\0\13\12\1\0\1\12\4\0\12\12\1\241"+ + "\21\12\16\0\1\12\6\0\13\12\1\0\1\12\4\0"+ + "\12\12\1\242\21\12\16\0\1\12\24\0\1\243\102\0"+ + "\1\244\62\0\13\12\1\0\1\12\4\0\2\12\1\177"+ + "\31\12\16\0\1\12\6\0\13\12\1\0\1\12\4\0"+ + "\3\12\1\245\30\12\16\0\1\12\6\0\13\12\1\0"+ + "\1\12\4\0\3\12\1\174\30\12\16\0\1\12\6\0"+ + "\13\12\1\0\1\12\4\0\20\12\1\246\13\12\16\0"+ + "\1\12\6\0\13\12\1\0\1\12\4\0\6\12\1\177"+ + "\25\12\16\0\1\12\6\0\13\12\1\0\1\12\4\0"+ + "\12\12\1\247\3\12\1\177\15\12\16\0\1\12\6\0"+ + "\13\12\1\0\1\12\4\0\5\12\1\174\3\12\1\171"+ + "\17\12\1\250\2\12\16\0\1\12\6\0\13\12\1\0"+ + "\1\12\4\0\6\12\1\251\3\12\1\252\21\12\16\0"+ + "\1\12\6\0\13\12\1\0\1\12\4\0\1\253\4\12"+ + "\1\174\26\12\16\0\1\12\6\0\13\12\1\0\1\12"+ + "\4\0\14\12\1\254\17\12\16\0\1\12\6\0\13\12"+ + "\1\0\1\12\4\0\5\12\1\255\26\12\16\0\1\12"+ + "\6\0\13\12\1\0\1\12\4\0\20\12\1\176\1\12"+ + "\1\174\11\12\16\0\1\12\6\0\13\12\1\0\1\12"+ + "\4\0\15\12\1\256\16\12\16\0\1\12\6\0\13\12"+ + "\1\0\1\12\4\0\3\12\1\257\10\12\1\252\17\12"+ + "\16\0\1\12\6\0\13\12\1\0\1\12\4\0\4\12"+ + "\1\260\4\12\1\261\22\12\16\0\1\12\6\0\13\12"+ + "\1\0\1\12\4\0\1\262\33\12\16\0\1\12\6\0"+ + "\13\12\1\0\1\12\4\0\1\12\1\263\12\12\1\264"+ + "\7\12\1\265\7\12\16\0\1\12\6\0\13\12\1\0"+ + "\1\12\4\0\2\12\1\266\3\12\1\267\3\12\1\270"+ + "\5\12\1\162\10\12\1\271\2\12\16\0\1\12\6\0"+ + "\13\12\1\0\1\12\4\0\15\12\1\272\16\12\16\0"+ + "\1\12\6\0\13\12\1\0\1\12\4\0\21\12\1\177"+ + "\12\12\16\0\1\12\6\0\13\12\1\0\1\12\4\0"+ + "\20\12\1\273\13\12\16\0\1\12\6\0\13\12\1\0"+ + "\1\12\4\0\20\12\1\274\13\12\16\0\1\12\6\0"+ + "\13\12\1\0\1\12\4\0\4\12\1\275\27\12\16\0"+ + "\1\12\6\0\13\12\1\0\1\12\4\0\13\12\1\262"+ + "\20\12\16\0\1\12\6\0\13\12\1\0\1\12\4\0"+ + "\16\12\1\276\15\12\16\0\1\12\6\0\13\12\1\0"+ + "\1\12\4\0\12\12\1\277\21\12\16\0\1\12\6\0"+ + "\13\12\1\0\1\12\4\0\1\300\33\12\16\0\1\12"+ + "\6\0\13\12\1\0\1\12\4\0\1\12\1\301\2\12"+ + "\1\302\15\12\1\303\11\12\16\0\1\12\6\0\13\12"+ + "\1\0\1\12\4\0\20\12\1\174\13\12\16\0\1\12"+ + "\6\0\13\12\1\0\1\12\4\0\5\12\1\174\26\12"+ + "\16\0\1\12\6\0\13\12\1\0\1\12\4\0\22\12"+ + "\1\304\11\12\16\0\1\12\6\0\13\12\1\0\1\12"+ + "\4\0\1\12\1\174\32\12\16\0\1\12\6\0\13\12"+ + "\1\0\1\12\4\0\1\12\1\305\7\12\1\306\22\12"+ + "\16\0\1\12\6\0\13\12\1\0\1\12\4\0\3\12"+ + "\1\171\30\12\16\0\1\12\6\0\13\12\1\0\1\12"+ + "\4\0\2\12\1\174\31\12\16\0\1\12\6\0\13\12"+ + "\1\0\1\12\4\0\33\12\1\307\16\0\1\12\6\0"+ + "\13\12\1\0\1\12\4\0\6\12\1\174\25\12\16\0"+ + "\1\12\6\0\13\12\1\0\1\12\4\0\4\12\1\164"+ + "\27\12\16\0\1\12\6\0\13\12\1\0\1\12\4\0"+ + "\6\12\1\310\11\12\1\311\13\12\16\0\1\12\6\0"+ + "\13\12\1\0\1\12\4\0\3\12\1\312\10\12\1\313"+ + "\17\12\16\0\1\12\6\0\13\12\1\0\1\12\4\0"+ + "\4\12\1\162\27\12\16\0\1\12\6\0\13\12\1\0"+ + "\1\12\4\0\20\12\1\314\13\12\16\0\1\12\6\0"+ + "\13\12\1\0\1\12\4\0\14\12\1\315\17\12\16\0"+ + "\1\12\6\0\13\12\1\0\1\12\4\0\13\12\1\316"+ + "\20\12\16\0\1\12\6\0\13\12\1\0\1\12\4\0"+ + "\13\12\1\317\20\12\16\0\1\12\6\0\13\12\1\0"+ + "\1\12\4\0\5\12\1\177\26\12\16\0\1\12\6\0"+ + "\13\12\1\0\1\12\4\0\1\12\1\320\10\12\1\321"+ + "\21\12\16\0\1\12\6\0\13\12\1\0\1\12\4\0"+ + "\1\322\33\12\16\0\1\12\6\0\13\12\1\0\1\12"+ + "\4\0\3\12\1\323\30\12\16\0\1\12\6\0\13\12"+ + "\1\0\1\12\4\0\13\12\1\324\1\325\17\12\16\0"+ + "\1\12\6\0\13\12\1\0\1\12\4\0\24\12\1\174"+ + "\7\12\16\0\1\12\6\0\13\12\1\0\1\12\4\0"+ + "\4\12\1\326\27\12\16\0\1\12\6\0\13\12\1\0"+ + "\1\12\4\0\17\12\2\174\13\12\16\0\1\12\6\0"+ + "\13\12\1\0\1\12\4\0\6\12\1\327\25\12\16\0"+ + "\1\12\6\0\13\12\1\0\1\12\4\0\13\12\1\330"+ + "\20\12\16\0\1\12\6\0\13\12\1\0\1\12\4\0"+ + "\6\12\1\331\25\12\16\0\1\12\6\0\13\12\1\0"+ + "\1\12\4\0\14\12\1\332\17\12\16\0\1\12\6\0"+ + "\13\12\1\0\1\12\4\0\3\12\1\333\30\12\16\0"+ + "\1\12\6\0\13\12\1\0\1\12\4\0\12\12\1\161"+ + "\4\12\1\174\14\12\16\0\1\12\6\0\13\12\1\0"+ + "\1\12\4\0\1\12\1\274\4\12\1\334\25\12\16\0"+ + "\1\12\6\0\13\12\1\0\1\12\4\0\15\12\1\274"+ + "\16\12\16\0\1\12\6\0\13\12\1\0\1\12\4\0"+ + "\5\12\1\127\26\12\16\0\1\12\10\0\1\227\4\0"+ + "\3\227\72\0\1\335\4\0\3\335\106\0\1\336\102\0"+ + "\1\336\103\0\1\337\123\0\1\340\40\0\1\234\1\235"+ + "\1\112\1\0\5\235\1\0\1\235\4\0\1\235\1\0"+ + "\1\235\1\0\1\235\2\0\1\235\1\0\1\235\1\112"+ + "\3\0\1\235\44\0\2\341\1\112\1\0\5\341\1\0"+ + "\1\341\4\0\1\341\1\0\1\341\1\0\1\341\2\0"+ + "\1\341\1\0\1\341\1\112\3\0\1\341\44\0\1\342"+ + "\1\111\1\112\2\0\3\342\1\116\1\117\1\120\10\0"+ + "\1\120\5\0\1\112\3\0\1\116\44\0\2\237\3\0"+ + "\3\237\1\116\24\0\1\116\44\0\2\237\3\0\3\237"+ + "\70\0\13\12\1\0\1\12\4\0\3\12\1\274\30\12"+ + "\16\0\1\12\6\0\13\12\1\0\1\12\4\0\14\12"+ + "\1\343\17\12\16\0\1\12\6\0\13\12\1\0\1\12"+ + "\4\0\4\12\1\344\27\12\16\0\1\12\6\0\13\12"+ + "\1\0\1\12\4\0\12\12\1\345\21\12\16\0\1\12"+ + "\6\0\13\12\1\0\1\12\4\0\1\346\33\12\16\0"+ + "\1\12\6\0\13\12\1\0\1\12\4\0\22\12\1\347"+ + "\11\12\16\0\1\12\6\0\13\12\1\0\1\12\4\0"+ + "\16\12\1\177\15\12\16\0\1\12\6\0\13\12\1\0"+ + "\1\12\4\0\6\12\1\350\25\12\16\0\1\12\6\0"+ + "\13\12\1\0\1\12\4\0\11\12\1\274\22\12\16\0"+ + "\1\12\6\0\13\12\1\0\1\12\4\0\6\12\1\351"+ + "\25\12\16\0\1\12\6\0\13\12\1\0\1\12\4\0"+ + "\22\12\1\352\11\12\16\0\1\12\6\0\13\12\1\0"+ + "\1\12\4\0\4\12\1\177\27\12\16\0\1\12\6\0"+ + "\13\12\1\0\1\12\4\0\11\12\1\353\22\12\16\0"+ + "\1\12\6\0\13\12\1\0\1\12\4\0\4\12\1\354"+ + "\27\12\16\0\1\12\6\0\13\12\1\0\1\12\4\0"+ + "\12\12\1\174\21\12\16\0\1\12\6\0\13\12\1\0"+ + "\1\12\4\0\23\12\1\274\10\12\16\0\1\12\6\0"+ + "\13\12\1\0\1\12\4\0\3\12\1\257\30\12\16\0"+ + "\1\12\6\0\1\12\1\355\11\12\1\0\1\12\4\0"+ + "\34\12\16\0\1\12\6\0\13\12\1\0\1\12\4\0"+ + "\15\12\1\254\16\12\16\0\1\12\6\0\13\12\1\0"+ + "\1\12\4\0\15\12\1\356\16\12\16\0\1\12\6\0"+ + "\13\12\1\0\1\12\4\0\13\12\1\357\20\12\16\0"+ + "\1\12\6\0\13\12\1\0\1\12\4\0\4\12\1\360"+ + "\27\12\16\0\1\12\6\0\13\12\1\0\1\12\4\0"+ + "\1\12\1\361\32\12\16\0\1\12\6\0\13\12\1\0"+ + "\1\12\4\0\12\12\1\274\21\12\16\0\1\12\6\0"+ + "\13\12\1\0\1\12\4\0\4\12\1\174\27\12\16\0"+ + "\1\12\6\0\13\12\1\0\1\12\4\0\1\362\33\12"+ + "\16\0\1\12\6\0\13\12\1\0\1\12\4\0\16\12"+ + "\1\176\15\12\16\0\1\12\6\0\13\12\1\0\1\12"+ + "\4\0\12\12\1\363\21\12\16\0\1\12\6\0\13\12"+ + "\1\0\1\12\4\0\3\12\1\364\30\12\16\0\1\12"+ + "\6\0\13\12\1\0\1\12\4\0\6\12\1\365\25\12"+ + "\16\0\1\12\6\0\13\12\1\0\1\12\4\0\5\12"+ + "\1\254\26\12\16\0\1\12\6\0\13\12\1\0\1\12"+ + "\4\0\20\12\1\366\13\12\16\0\1\12\6\0\13\12"+ + "\1\0\1\12\4\0\7\12\1\367\24\12\16\0\1\12"+ + "\6\0\13\12\1\0\1\12\4\0\23\12\1\174\10\12"+ + "\16\0\1\12\6\0\13\12\1\0\1\12\4\0\1\370"+ + "\33\12\16\0\1\12\6\0\13\12\1\0\1\12\4\0"+ + "\4\12\1\371\27\12\16\0\1\12\6\0\13\12\1\0"+ + "\1\12\4\0\4\12\1\372\27\12\16\0\1\12\6\0"+ + "\13\12\1\0\1\12\4\0\15\12\1\171\16\12\16\0"+ + "\1\12\6\0\13\12\1\0\1\12\4\0\15\12\1\373"+ + "\16\12\16\0\1\12\6\0\13\12\1\0\1\12\4\0"+ + "\1\12\1\374\32\12\16\0\1\12\6\0\13\12\1\0"+ + "\1\12\4\0\13\12\1\344\20\12\16\0\1\12\6\0"+ + "\13\12\1\0\1\12\4\0\11\12\1\375\22\12\16\0"+ + "\1\12\6\0\13\12\1\0\1\12\4\0\22\12\1\177"+ + "\7\12\1\376\1\12\16\0\1\12\6\0\13\12\1\0"+ + "\1\12\4\0\1\171\33\12\16\0\1\12\6\0\13\12"+ + "\1\0\1\12\4\0\1\377\33\12\16\0\1\12\6\0"+ + "\13\12\1\0\1\12\4\0\4\12\1\174\1\12\1\176"+ + "\25\12\16\0\1\12\6\0\13\12\1\0\1\12\4\0"+ + "\1\12\1\263\32\12\16\0\1\12\6\0\13\12\1\0"+ + "\1\12\4\0\3\12\1\177\30\12\16\0\1\12\6\0"+ + "\13\12\1\0\1\12\4\0\20\12\1\u0100\13\12\16\0"+ + "\1\12\6\0\13\12\1\0\1\12\4\0\1\12\1\131"+ + "\32\12\16\0\1\12\6\0\13\12\1\0\1\12\4\0"+ + "\12\12\1\125\21\12\16\0\1\12\6\0\13\12\1\0"+ + "\1\12\4\0\7\12\1\u0101\24\12\16\0\1\12\6\0"+ + "\13\12\1\0\1\12\4\0\25\12\1\177\6\12\16\0"+ + "\1\12\6\0\13\12\1\0\1\12\4\0\12\12\1\257"+ + "\21\12\16\0\1\12\6\0\13\12\1\0\1\12\4\0"+ + "\1\346\24\12\1\174\6\12\16\0\1\12\6\0\13\12"+ + "\1\0\1\12\4\0\27\12\1\u0102\4\12\16\0\1\12"+ + "\51\0\1\u0103\77\0\1\u0104\42\0\2\u0105\1\112\1\0"+ + "\5\u0105\1\0\1\u0105\4\0\1\u0105\1\0\1\u0105\1\0"+ + "\1\u0105\2\0\1\u0105\1\0\1\u0105\1\112\3\0\1\u0105"+ + "\44\0\1\u0106\1\111\1\112\2\0\3\u0106\1\116\1\117"+ + "\1\120\10\0\1\120\5\0\1\112\3\0\1\116\42\0"+ + "\13\12\1\0\1\12\4\0\20\12\1\u0107\13\12\16\0"+ + "\1\12\6\0\13\12\1\0\1\12\4\0\5\12\1\131"+ + "\26\12\16\0\1\12\6\0\13\12\1\0\1\12\4\0"+ + "\21\12\1\174\12\12\16\0\1\12\6\0\13\12\1\0"+ + "\1\12\4\0\6\12\1\u0108\25\12\16\0\1\12\6\0"+ + "\13\12\1\0\1\12\4\0\13\12\1\361\20\12\16\0"+ + "\1\12\6\0\13\12\1\0\1\12\4\0\14\12\1\u0109"+ + "\17\12\16\0\1\12\6\0\13\12\1\0\1\12\4\0"+ + "\4\12\1\361\27\12\16\0\1\12\6\0\13\12\1\0"+ + "\1\12\4\0\4\12\1\u010a\27\12\16\0\1\12\6\0"+ + "\13\12\1\0\1\12\4\0\16\12\1\u010b\15\12\16\0"+ + "\1\12\6\0\13\12\1\0\1\12\4\0\20\12\1\131"+ + "\13\12\16\0\1\12\6\0\13\12\1\0\1\12\4\0"+ + "\14\12\1\u010c\17\12\16\0\1\12\6\0\13\12\1\0"+ + "\1\12\4\0\5\12\1\u010d\26\12\16\0\1\12\6\0"+ + "\13\12\1\0\1\12\4\0\1\361\33\12\16\0\1\12"+ + "\6\0\13\12\1\0\1\12\4\0\5\12\1\u010e\26\12"+ + "\16\0\1\12\6\0\13\12\1\0\1\12\4\0\10\12"+ + "\1\177\23\12\16\0\1\12\6\0\13\12\1\0\1\12"+ + "\4\0\1\u010f\33\12\16\0\1\12\6\0\13\12\1\0"+ + "\1\12\4\0\3\12\1\u0110\30\12\16\0\1\12\6\0"+ + "\13\12\1\0\1\12\4\0\14\12\1\u0111\17\12\16\0"+ + "\1\12\6\0\13\12\1\0\1\12\4\0\12\12\1\u0112"+ + "\1\12\1\273\17\12\16\0\1\12\6\0\13\12\1\0"+ + "\1\12\4\0\2\12\1\u0113\31\12\16\0\1\12\6\0"+ + "\13\12\1\0\1\12\4\0\12\12\1\127\21\12\16\0"+ + "\1\12\6\0\13\12\1\0\1\12\4\0\11\12\1\171"+ + "\22\12\16\0\1\12\6\0\13\12\1\0\1\12\4\0"+ + "\5\12\1\164\26\12\16\0\1\12\6\0\13\12\1\0"+ + "\1\12\4\0\7\12\1\u0114\24\12\16\0\1\12\6\0"+ + "\13\12\1\0\1\12\4\0\3\12\1\u0115\30\12\16\0"+ + "\1\12\6\0\13\12\1\0\1\12\4\0\13\12\1\u0116"+ + "\11\12\1\162\6\12\16\0\1\12\6\0\13\12\1\0"+ + "\1\12\4\0\4\12\1\u0117\27\12\16\0\1\12\6\0"+ + "\13\12\1\0\1\12\4\0\12\12\1\u0118\21\12\16\0"+ + "\1\12\6\0\13\12\1\0\1\12\4\0\4\12\1\u0119"+ + "\27\12\16\0\1\12\6\0\13\12\1\0\1\12\4\0"+ + "\1\u011a\33\12\16\0\1\12\6\0\13\12\1\0\1\12"+ + "\4\0\22\12\1\u011b\11\12\16\0\1\12\33\0\1\u011c"+ + "\110\0\1\u011d\47\0\2\u011e\1\112\1\0\5\u011e\1\0"+ + "\1\u011e\4\0\1\u011e\1\0\1\u011e\1\0\1\u011e\2\0"+ + "\1\u011e\1\0\1\u011e\1\112\3\0\1\u011e\44\0\1\u011f"+ + "\1\111\1\112\2\0\3\u011f\1\116\1\117\1\120\10\0"+ + "\1\120\5\0\1\112\3\0\1\116\42\0\13\12\1\0"+ + "\1\12\4\0\3\12\1\u0120\30\12\16\0\1\12\6\0"+ + "\13\12\1\0\1\12\4\0\6\12\1\162\25\12\16\0"+ + "\1\12\6\0\13\12\1\0\1\12\4\0\11\12\1\u0121"+ + "\22\12\16\0\1\12\6\0\13\12\1\0\1\12\4\0"+ + "\5\12\1\u0122\26\12\16\0\1\12\6\0\13\12\1\0"+ + "\1\12\4\0\14\12\1\273\17\12\16\0\1\12\6\0"+ + "\13\12\1\0\1\12\4\0\1\12\1\u0123\32\12\16\0"+ + "\1\12\6\0\13\12\1\0\1\12\4\0\1\12\1\177"+ + "\32\12\16\0\1\12\6\0\13\12\1\0\1\12\4\0"+ + "\3\12\1\351\30\12\16\0\1\12\6\0\13\12\1\0"+ + "\1\12\4\0\7\12\1\273\24\12\16\0\1\12\6\0"+ + "\13\12\1\0\1\12\4\0\22\12\1\u0124\11\12\16\0"+ + "\1\12\6\0\13\12\1\0\1\12\4\0\1\12\1\u0125"+ + "\32\12\16\0\1\12\6\0\13\12\1\0\1\12\4\0"+ + "\4\12\1\u0126\27\12\16\0\1\12\6\0\13\12\1\0"+ + "\1\12\4\0\1\177\33\12\16\0\1\12\6\0\13\12"+ + "\1\0\1\12\4\0\11\12\1\u0127\22\12\16\0\1\12"+ + "\6\0\13\12\1\0\1\12\4\0\6\12\1\u0128\25\12"+ + "\16\0\1\12\6\0\13\12\1\0\1\12\4\0\2\12"+ + "\1\274\31\12\16\0\1\12\6\0\13\12\1\0\1\12"+ + "\4\0\1\12\1\u0129\32\12\16\0\1\12\6\0\13\12"+ + "\1\0\1\12\4\0\12\12\1\150\21\12\16\0\1\12"+ + "\6\0\13\12\1\0\1\12\4\0\5\12\1\u012a\26\12"+ + "\16\0\1\12\6\0\13\12\1\0\1\12\4\0\12\12"+ + "\1\u012b\21\12\16\0\1\12\6\0\13\12\1\0\1\12"+ + "\4\0\20\12\1\u012c\13\12\16\0\1\12\7\0\1\u012d"+ + "\126\0\1\u012e\55\0\2\u012f\1\112\1\0\5\u012f\1\0"+ + "\1\u012f\4\0\1\u012f\1\0\1\u012f\1\0\1\u012f\2\0"+ + "\1\u012f\1\0\1\u012f\1\112\3\0\1\u012f\44\0\1\u0130"+ + "\1\111\1\112\2\0\3\u0130\1\116\1\117\1\120\10\0"+ + "\1\120\5\0\1\112\3\0\1\116\42\0\13\12\1\0"+ + "\1\12\4\0\14\12\1\127\17\12\16\0\1\12\6\0"+ + "\13\12\1\0\1\12\4\0\1\u0131\33\12\16\0\1\12"+ + "\6\0\13\12\1\0\1\12\4\0\20\12\1\311\13\12"+ + "\16\0\1\12\6\0\13\12\1\0\1\12\4\0\4\12"+ + "\1\u0132\27\12\16\0\1\12\6\0\13\12\1\0\1\12"+ + "\4\0\15\12\1\257\16\12\16\0\1\12\6\0\13\12"+ + "\1\0\1\12\4\0\17\12\1\174\14\12\16\0\1\12"+ + "\6\0\13\12\1\0\1\12\4\0\12\12\1\u0133\21\12"+ + "\16\0\1\12\6\0\13\12\1\0\1\12\4\0\1\u0134"+ + "\33\12\16\0\1\12\6\0\13\12\1\0\1\12\4\0"+ + "\3\12\1\u0135\30\12\16\0\1\12\6\0\13\12\1\0"+ + "\1\12\4\0\6\12\1\345\25\12\16\0\1\12\6\0"+ + "\13\12\1\0\1\12\4\0\12\12\1\u0136\21\12\16\0"+ + "\1\12\7\0\1\u0137\127\0\1\u011c\54\0\2\u0138\1\112"+ + "\1\0\5\u0138\1\0\1\u0138\4\0\1\u0138\1\0\1\u0138"+ + "\1\0\1\u0138\2\0\1\u0138\1\0\1\u0138\1\112\3\0"+ + "\1\u0138\44\0\1\u0139\1\111\1\112\2\0\3\u0139\1\116"+ + "\1\117\1\120\10\0\1\120\5\0\1\112\3\0\1\116"+ + "\42\0\13\12\1\0\1\12\4\0\6\12\1\274\25\12"+ + "\16\0\1\12\6\0\13\12\1\0\1\12\4\0\6\12"+ + "\1\u013a\25\12\16\0\1\12\6\0\13\12\1\0\1\12"+ + "\4\0\1\u013b\33\12\16\0\1\12\6\0\13\12\1\0"+ + "\1\12\4\0\1\12\1\254\32\12\16\0\1\12\6\0"+ + "\13\12\1\0\1\12\4\0\4\12\1\171\27\12\16\0"+ + "\1\12\6\0\13\12\1\0\1\12\4\0\4\12\1\u013c"+ + "\27\12\16\0\1\12\10\0\2\u013d\1\112\1\0\5\u013d"+ + "\1\0\1\u013d\4\0\1\u013d\1\0\1\u013d\1\0\1\u013d"+ + "\2\0\1\u013d\1\0\1\u013d\1\112\3\0\1\u013d\44\0"+ + "\1\u013e\1\111\1\112\2\0\3\u013e\1\116\1\117\1\120"+ + "\10\0\1\120\5\0\1\112\3\0\1\116\42\0\13\12"+ + "\1\0\1\12\4\0\25\12\1\347\6\12\16\0\1\12"+ + "\6\0\13\12\1\0\1\12\4\0\3\12\1\127\30\12"+ + "\16\0\1\12\6\0\13\12\1\0\1\12\4\0\22\12"+ + "\1\u013f\11\12\16\0\1\12\10\0\2\u0140\1\112\1\0"+ + "\5\u0140\1\0\1\u0140\4\0\1\u0140\1\0\1\u0140\1\0"+ + "\1\u0140\2\0\1\u0140\1\0\1\u0140\1\112\3\0\1\u0140"+ + "\44\0\1\u0141\1\111\1\112\2\0\3\u0141\1\116\1\117"+ + "\1\120\10\0\1\120\5\0\1\112\3\0\1\116\42\0"+ + "\13\12\1\0\1\12\4\0\4\12\1\u0142\27\12\16\0"+ + "\1\12\10\0\2\u0143\1\112\1\0\5\u0143\1\0\1\u0143"+ + "\4\0\1\u0143\1\0\1\u0143\1\0\1\u0143\2\0\1\u0143"+ + "\1\0\1\u0143\1\112\3\0\1\u0143\44\0\1\u0144\1\111"+ + "\1\112\2\0\3\u0144\1\116\1\117\1\120\10\0\1\120"+ + "\5\0\1\112\3\0\1\116\42\0\13\12\1\0\1\12"+ + "\4\0\1\12\1\255\32\12\16\0\1\12\10\0\2\u0145"+ + "\1\112\1\0\5\u0145\1\0\1\u0145\4\0\1\u0145\1\0"+ + "\1\u0145\1\0\1\u0145\2\0\1\u0145\1\0\1\u0145\1\112"+ + "\3\0\1\u0145\44\0\1\u0146\1\111\1\112\2\0\3\u0146"+ + "\1\116\1\117\1\120\10\0\1\120\5\0\1\112\3\0"+ + "\1\116\44\0\2\u0147\1\112\1\0\5\u0147\1\0\1\u0147"+ + "\4\0\1\u0147\1\0\1\u0147\1\0\1\u0147\2\0\1\u0147"+ + "\1\0\1\u0147\1\112\3\0\1\u0147\44\0\1\u0148\1\111"+ + "\1\112\2\0\3\u0148\1\116\1\117\1\120\10\0\1\120"+ + "\5\0\1\112\3\0\1\116\44\0\2\u0149\1\112\1\0"+ + "\5\u0149\1\0\1\u0149\4\0\1\u0149\1\0\1\u0149\1\0"+ + "\1\u0149\2\0\1\u0149\1\0\1\u0149\1\112\3\0\1\u0149"+ + "\44\0\1\u014a\1\111\1\112\2\0\3\u014a\1\116\1\117"+ + "\1\120\10\0\1\120\5\0\1\112\3\0\1\116\44\0"+ + "\2\u014b\1\112\1\0\5\u014b\1\0\1\u014b\4\0\1\u014b"+ + "\1\0\1\u014b\1\0\1\u014b\2\0\1\u014b\1\0\1\u014b"+ + "\1\112\3\0\1\u014b\44\0\1\u014c\1\111\1\112\2\0"+ + "\3\u014c\1\116\1\117\1\120\10\0\1\120\5\0\1\112"+ + "\3\0\1\116\44\0\2\u014d\1\112\1\0\5\u014d\1\0"+ + "\1\u014d\4\0\1\u014d\1\0\1\u014d\1\0\1\u014d\2\0"+ + "\1\u014d\1\0\1\u014d\1\112\3\0\1\u014d\44\0\1\u014e"+ + "\1\111\1\112\2\0\3\u014e\1\116\1\117\1\120\10\0"+ + "\1\120\5\0\1\112\3\0\1\116\44\0\2\u014f\1\112"+ + "\1\0\5\u014f\1\0\1\u014f\4\0\1\u014f\1\0\1\u014f"+ + "\1\0\1\u014f\2\0\1\u014f\1\0\1\u014f\1\112\3\0"+ + "\1\u014f\44\0\1\u0150\1\111\1\112\2\0\3\u0150\1\116"+ + "\1\117\1\120\10\0\1\120\5\0\1\112\3\0\1\116"+ + "\44\0\2\u0151\1\112\1\0\5\u0151\1\0\1\u0151\4\0"+ + "\1\u0151\1\0\1\u0151\1\0\1\u0151\2\0\1\u0151\1\0"+ + "\1\u0151\1\112\3\0\1\u0151\44\0\1\u0152\1\111\1\112"+ + "\2\0\3\u0152\1\116\1\117\1\120\10\0\1\120\5\0"+ + "\1\112\3\0\1\116\46\0\1\112\26\0\1\112\50\0"+ + "\1\u0153\1\111\1\112\2\0\3\u0153\1\116\1\117\1\120"+ + "\10\0\1\120\5\0\1\112\3\0\1\116\44\0\1\u0154"+ + "\1\111\1\112\2\0\3\u0154\1\116\1\117\1\120\10\0"+ + "\1\120\5\0\1\112\3\0\1\116\44\0\1\u0155\1\111"+ + "\1\112\2\0\3\u0155\1\116\1\117\1\120\10\0\1\120"+ + "\5\0\1\112\3\0\1\116\44\0\1\u0156\1\111\1\112"+ + "\2\0\3\u0156\1\116\1\117\1\120\10\0\1\120\5\0"+ + "\1\112\3\0\1\116\44\0\2\111\1\112\2\0\3\111"+ + "\1\116\1\117\1\120\10\0\1\120\5\0\1\112\3\0"+ + "\1\116\35\0"; + + private static int [] zzUnpackTrans() { + int [] result = new int[20724]; + 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\1\11\46\1\6\11\4\1\1\11\1\1\1\11"+ + "\2\1\2\11\2\1\1\11\2\1\1\11\2\1\1\11"+ + "\1\0\2\1\1\11\1\0\4\1\1\0\2\1\2\0"+ + "\100\1\1\11\2\1\4\0\4\1\1\0\2\1\2\11"+ + "\70\1\2\11\2\0\42\1\2\0\27\1\2\0\17\1"+ + "\2\0\10\1\1\11\13\1\1\0\1\1\1\0\1\1"+ + "\1\0\1\1\1\0\1\1\1\0\1\1\1\0\1\1"+ + "\1\0\1\1\1\0\5\1"; + + private static int [] zzUnpackAttribute() { + int [] result = new int[342]; + 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[] = new char[ZZ_BUFFERSIZE]; + + /** 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; + + /** number of newlines encountered up to the start of the matched text */ + private int yyline; + + /** the number of characters up to the start of the matched text */ + private int yychar; + + /** + * the number of characters from the last newline up to the start of the + * matched text + */ + private int yycolumn; + + /** + * 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; + + /** denotes if the user-EOF-code has already been executed */ + private boolean zzEOFDone; + + /* user code: */ + /** + * Create an empty lexer, yyrset will be called later to reset and assign + * the reader + */ + public PythonLexer() { + super(); + } + + @Override + public int yychar() { + return yychar; + } + + private static final byte PARAN = 1; + private static final byte BRACKET = 2; + private static final byte CURLY = 3; + + + + /** + * 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 PythonLexer(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 PythonLexer(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; + } + + + /** + * Refills the input buffer. + * + * @return false, iff there was new input. + * + * @exception java.io.IOException if any I/O-Error occurs + */ + private boolean zzRefill() throws java.io.IOException { + + /* first: make room (if you can) */ + if (zzStartRead > 0) { + System.arraycopy(zzBuffer, zzStartRead, + zzBuffer, 0, + zzEndRead-zzStartRead); + + /* translate stored positions */ + zzEndRead-= zzStartRead; + zzCurrentPos-= zzStartRead; + zzMarkedPos-= zzStartRead; + zzStartRead = 0; + } + + /* is the buffer big enough? */ + if (zzCurrentPos >= zzBuffer.length) { + /* if not: blow it up */ + char newBuffer[] = new char[zzCurrentPos*2]; + System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); + zzBuffer = newBuffer; + } + + /* finally: fill the buffer with new input */ + int numRead = zzReader.read(zzBuffer, zzEndRead, + zzBuffer.length-zzEndRead); + + if (numRead > 0) { + zzEndRead+= numRead; + return false; + } + // unlikely but not impossible: read 0 characters, but not at end of stream + if (numRead == 0) { + int c = zzReader.read(); + if (c == -1) { + return true; + } else { + zzBuffer[zzEndRead++] = (char) c; + return false; + } + } + + // numRead < 0 + return true; + } + + + /** + * 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(); + } + + + /** + * 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 ZZ_INITIAL. + * + * @param reader the new input stream + */ + public final void yyreset(java.io.Reader reader) { + zzReader = reader; + zzAtBOL = true; + zzAtEOF = false; + zzEOFDone = false; + zzEndRead = zzStartRead = 0; + zzCurrentPos = zzMarkedPos = 0; + yyline = yychar = yycolumn = 0; + zzLexicalState = YYINITIAL; + } + + + /** + * Returns the current lexical state. + */ + public final int yystate() { + return zzLexicalState; + } + + + /** + * Enters a new lexical state + * + * @param newState the new lexical state + */ + 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 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; + + yychar+= zzMarkedPosL-zzStartRead; + + zzAction = -1; + + zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; + + 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 9: + { return token(TokenType.OPERATOR, -PARAN); + } + case 26: break; + case 20: + { return token(TokenType.KEYWORD); + } + case 27: break; + case 19: + { yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + case 28: break; + case 4: + { return token(TokenType.NUMBER); + } + case 29: break; + case 5: + { return token(TokenType.OPERATOR); + } + case 30: break; + case 10: + { return token(TokenType.OPERATOR, CURLY); + } + case 31: break; + case 11: + { return token(TokenType.OPERATOR, -CURLY); + } + case 32: break; + case 25: + { yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 3); + } + case 33: break; + case 23: + { yybegin(ML_STRING); + tokenStart = yychar; + tokenLength = 3; + } + case 34: break; + case 15: + { tokenLength += yylength(); + } + case 35: break; + case 16: + { yybegin(YYINITIAL); + } + case 36: break; + case 6: + { yybegin(STRING); + tokenStart = yychar; + tokenLength = 1; + } + case 37: break; + case 17: + { yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + case 38: break; + case 21: + { return token(TokenType.TYPE); + } + case 39: break; + case 13: + { return token(TokenType.OPERATOR, -BRACKET); + } + case 40: break; + case 8: + { return token(TokenType.OPERATOR, PARAN); + } + case 41: break; + case 3: + { return token(TokenType.IDENTIFIER); + } + case 42: break; + case 22: + { tokenLength += 2; + } + case 43: break; + case 14: + { return token(TokenType.ERROR); + } + case 44: break; + case 24: + { yybegin(SQML_STRING); + tokenStart = yychar; + tokenLength = 3; + } + case 45: break; + case 18: + { tokenLength ++; + } + case 46: break; + case 12: + { return token(TokenType.OPERATOR, BRACKET); + } + case 47: break; + case 7: + { yybegin(SQSTRING); + tokenStart = yychar; + tokenLength = 1; + } + case 48: break; + case 2: + { return token(TokenType.COMMENT); + } + case 49: break; + case 1: + { + } + case 50: break; + default: + if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { + zzAtEOF = true; + { + return null; + } + } + else { + zzScanError(ZZ_NO_MATCH); + } + } + } + } + + +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/RubyLexer.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/RubyLexer.java new file mode 100644 index 000000000..1703c95b9 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/RubyLexer.java @@ -0,0 +1,947 @@ +/* The following code was generated by JFlex 1.4.3 on 21.7.10 18:14 */ + +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jsyntaxpane.lexers; + + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + + +/** + * This class is a scanner generated by + * JFlex 1.4.3 + * on 21.7.10 18:14 from the specification file + * D:/Dokumenty/Programovani/JavaSE/JPSWFDec/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/ruby.flex + */ +public final class RubyLexer extends DefaultJFlexLexer { + + /** This character denotes the end of file */ + public static final int YYEOF = -1; + + /** initial size of the lookahead buffer */ + private static final int ZZ_BUFFERSIZE = 16384; + + /** lexical states */ + public static final int ML_STRING = 4; + public static final int STRING = 2; + 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, 0, 1, 1, 2, 2 + }; + + /** + * Translates characters to character classes + */ + private static final String ZZ_CMAP_PACKED = + "\11\0\1\3\1\2\1\0\1\3\1\1\22\0\1\3\1\74\1\75"+ + "\1\4\1\0\1\67\1\67\1\0\1\57\1\60\1\65\1\22\1\72"+ + "\1\22\1\20\1\66\1\7\1\15\2\14\4\16\2\10\1\72\1\72"+ + "\1\70\1\73\1\71\1\77\1\72\1\13\1\24\1\13\1\44\1\25"+ + "\1\17\1\26\1\5\1\27\1\76\1\5\1\11\1\5\1\30\11\5"+ + "\1\12\2\5\1\63\1\23\1\64\1\67\1\6\1\72\1\35\1\52"+ + "\1\51\1\47\1\21\1\41\1\56\1\43\1\37\1\76\1\53\1\40"+ + "\1\54\1\31\1\45\1\46\1\5\1\34\1\32\1\36\1\33\1\5"+ + "\1\42\1\55\1\50\1\5\1\61\1\67\1\62\1\72\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\3\1\1\2\1\3\1\1\2\4\1\5\1\3"+ + "\1\5\21\3\1\6\1\7\1\10\1\11\1\12\1\13"+ + "\5\5\1\1\1\14\1\15\2\16\1\1\1\17\2\20"+ + "\1\1\2\2\1\21\1\0\3\4\1\0\4\4\1\0"+ + "\20\3\1\22\1\23\12\3\1\0\1\24\2\15\3\0"+ + "\4\4\1\0\1\3\1\25\20\3\1\23\6\3\1\26"+ + "\1\15\1\27\2\0\2\4\15\3\1\0\2\4\1\3"+ + "\1\0\2\4\1\0\2\4\1\30\6\4\1\0\1\4"+ + "\1\0\1\4\1\0\1\4\1\0\1\4\1\0\1\4"+ + "\1\0\1\4\1\0\1\4\1\0\5\4"; + + private static int [] zzUnpackAction() { + int [] result = new int[187]; + 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\100\0\200\0\300\0\u0100\0\u0140\0\u0180\0\u01c0"+ + "\0\u0200\0\u0240\0\u0280\0\u02c0\0\u0300\0\u0340\0\u0380\0\u03c0"+ + "\0\u0400\0\u0440\0\u0480\0\u04c0\0\u0500\0\u0540\0\u0580\0\u05c0"+ + "\0\u0600\0\u0640\0\u0680\0\u06c0\0\u0700\0\u0740\0\u0780\0\300"+ + "\0\300\0\300\0\300\0\300\0\300\0\u07c0\0\u0800\0\u0840"+ + "\0\u0880\0\300\0\u0340\0\u08c0\0\u0900\0\u0940\0\300\0\u0980"+ + "\0\300\0\u09c0\0\300\0\u0a00\0\u0a40\0\300\0\300\0\u0a80"+ + "\0\u0ac0\0\u0b00\0\300\0\u0b40\0\u0b80\0\u0bc0\0\u0c00\0\u0c40"+ + "\0\u0c80\0\u0cc0\0\u0d00\0\u0d40\0\u0d80\0\u0dc0\0\u0e00\0\u0e40"+ + "\0\u0e80\0\u0ec0\0\u0f00\0\u0f40\0\u0f80\0\u0fc0\0\u1000\0\u1040"+ + "\0\u1080\0\u01c0\0\u01c0\0\u10c0\0\u1100\0\u1140\0\u1180\0\u11c0"+ + "\0\u1200\0\u1240\0\u1280\0\u12c0\0\u1300\0\u1340\0\300\0\u1380"+ + "\0\u13c0\0\u1400\0\u1440\0\u1480\0\u14c0\0\u1500\0\u1540\0\u1580"+ + "\0\u15c0\0\u1600\0\u01c0\0\u1640\0\u1680\0\u16c0\0\u1700\0\u1740"+ + "\0\u1780\0\u17c0\0\u1800\0\u1840\0\u1880\0\u18c0\0\u1900\0\u1940"+ + "\0\u1980\0\u19c0\0\u1a00\0\u1a40\0\u1a80\0\u1ac0\0\u1b00\0\u1b40"+ + "\0\u1b80\0\u1bc0\0\300\0\300\0\300\0\u1c00\0\u1c40\0\u1c80"+ + "\0\u1cc0\0\u1d00\0\u1d40\0\u1d80\0\u1dc0\0\u1e00\0\u1e40\0\u1e80"+ + "\0\u1ec0\0\u1f00\0\u1f40\0\u1f80\0\u1fc0\0\u2000\0\u2040\0\u2080"+ + "\0\u20c0\0\u2100\0\u2140\0\u2180\0\u21c0\0\u2200\0\u2240\0\u2280"+ + "\0\300\0\u22c0\0\u2300\0\u2340\0\u2380\0\u23c0\0\u2400\0\u2440"+ + "\0\u2480\0\u24c0\0\u2500\0\u2540\0\u2580\0\u25c0\0\u2600\0\u2640"+ + "\0\u2680\0\u26c0\0\u2700\0\u2740\0\u2780\0\u27c0\0\u2800\0\u2840"+ + "\0\u2880\0\u28c0\0\u2900"; + + private static int [] zzUnpackRowMap() { + int [] result = new int[187]; + 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\4\1\6\1\7\1\10\1\11\1\12"+ + "\1\13\3\10\3\13\1\10\1\14\1\15\1\16\1\4"+ + "\1\17\1\20\3\10\1\21\1\22\1\23\1\24\1\25"+ + "\1\26\1\27\1\10\1\30\1\31\2\10\1\32\1\10"+ + "\1\33\1\34\1\35\1\36\1\10\1\37\2\10\1\40"+ + "\1\41\1\42\1\43\1\44\1\45\1\46\1\47\1\16"+ + "\1\50\1\51\1\52\1\16\1\53\1\54\1\10\1\4"+ + "\1\55\1\56\1\57\20\55\1\60\51\55\1\61\3\55"+ + "\1\62\1\63\20\55\1\60\51\55\1\64\2\55\102\0"+ + "\1\4\100\0\1\6\74\0\1\7\1\65\1\66\75\7"+ + "\5\0\13\10\1\0\1\10\2\0\33\10\17\0\1\10"+ + "\1\67\6\0\1\70\100\0\1\71\1\72\1\73\1\74"+ + "\1\0\1\75\1\76\1\75\1\77\1\100\1\101\3\0"+ + "\1\101\12\0\1\73\1\77\13\0\1\74\31\0\2\13"+ + "\1\73\2\0\3\13\1\77\1\100\1\101\3\0\1\101"+ + "\12\0\1\73\1\77\45\0\2\100\3\0\3\100\1\0"+ + "\1\52\64\0\13\10\1\0\1\10\2\0\5\10\1\102"+ + "\6\10\1\103\16\10\17\0\1\10\1\67\73\0\1\52"+ + "\11\0\13\10\1\0\1\10\2\0\1\10\1\104\31\10"+ + "\17\0\1\10\1\67\5\0\13\10\1\0\1\10\2\0"+ + "\4\10\1\105\26\10\17\0\1\10\1\67\5\0\13\10"+ + "\1\0\1\106\2\0\13\10\1\107\5\10\1\110\11\10"+ + "\17\0\1\10\1\67\5\0\13\10\1\0\1\111\2\0"+ + "\7\10\1\112\23\10\17\0\1\10\1\67\5\0\13\10"+ + "\1\0\1\10\2\0\5\10\1\113\25\10\17\0\1\10"+ + "\1\67\5\0\13\10\1\0\1\114\2\0\33\10\17\0"+ + "\1\10\1\67\5\0\13\10\1\0\1\10\2\0\5\10"+ + "\1\115\1\116\5\10\1\117\16\10\17\0\1\10\1\67"+ + "\5\0\13\10\1\0\1\10\2\0\10\10\1\120\6\10"+ + "\1\121\13\10\17\0\1\10\1\67\5\0\13\10\1\0"+ + "\1\10\2\0\5\10\1\122\7\10\1\123\15\10\17\0"+ + "\1\10\1\67\5\0\13\10\1\0\1\10\2\0\11\10"+ + "\1\124\7\10\1\125\11\10\17\0\1\10\1\67\5\0"+ + "\13\10\1\0\1\10\2\0\17\10\1\126\13\10\17\0"+ + "\1\10\1\67\5\0\13\10\1\0\1\10\2\0\10\10"+ + "\1\122\22\10\17\0\1\10\1\67\5\0\13\10\1\0"+ + "\1\127\2\0\21\10\1\123\11\10\17\0\1\10\1\67"+ + "\5\0\13\10\1\0\1\10\2\0\13\10\1\130\17\10"+ + "\17\0\1\10\1\67\5\0\13\10\1\0\1\10\2\0"+ + "\11\10\1\131\2\10\1\132\16\10\17\0\1\10\1\67"+ + "\5\0\13\10\1\0\1\133\2\0\10\10\1\134\22\10"+ + "\17\0\1\10\1\67\5\0\13\10\1\0\1\10\2\0"+ + "\21\10\1\135\11\10\17\0\1\10\1\67\65\0\1\16"+ + "\5\0\1\52\72\0\1\16\4\0\1\52\74\0\1\16"+ + "\1\52\1\0\1\52\75\0\1\16\1\0\1\52\101\0"+ + "\1\136\2\0\1\55\2\0\20\55\1\0\51\55\1\0"+ + "\2\55\2\0\1\57\75\0\2\137\1\0\4\137\1\140"+ + "\4\137\2\140\1\141\61\137\2\0\1\63\172\0\1\142"+ + "\4\0\1\66\106\0\1\143\5\0\1\144\67\0\1\71"+ + "\1\72\1\73\2\0\1\75\1\76\1\75\1\77\1\100"+ + "\1\101\3\0\1\101\12\0\1\73\1\77\45\0\2\72"+ + "\3\0\3\72\1\77\1\100\1\101\3\0\1\101\13\0"+ + "\1\77\45\0\1\145\1\146\2\0\5\146\1\0\1\146"+ + "\2\0\2\146\7\0\1\146\3\0\1\146\2\0\1\146"+ + "\2\0\1\146\1\0\2\146\34\0\1\147\1\72\1\73"+ + "\2\0\3\147\1\77\1\100\1\101\3\0\1\101\12\0"+ + "\1\73\1\77\45\0\1\75\1\72\1\73\2\0\3\75"+ + "\1\77\1\100\1\101\3\0\1\101\12\0\1\73\1\77"+ + "\134\0\1\73\10\0\2\100\3\0\3\100\1\77\1\0"+ + "\1\101\3\0\1\101\13\0\1\77\45\0\2\150\3\0"+ + "\3\150\3\0\1\151\62\0\13\10\1\0\1\10\2\0"+ + "\6\10\1\152\14\10\1\153\7\10\17\0\1\10\1\67"+ + "\5\0\13\10\1\0\1\10\2\0\6\10\1\154\24\10"+ + "\17\0\1\10\1\67\5\0\13\10\1\0\1\10\2\0"+ + "\2\10\1\155\30\10\17\0\1\10\1\67\5\0\13\10"+ + "\1\0\1\10\2\0\20\10\1\122\12\10\17\0\1\10"+ + "\1\67\5\0\13\10\1\0\1\10\2\0\31\10\1\110"+ + "\1\10\17\0\1\10\1\67\5\0\13\10\1\0\1\10"+ + "\2\0\14\10\1\122\16\10\17\0\1\10\1\67\5\0"+ + "\13\10\1\0\1\10\2\0\12\10\1\122\20\10\17\0"+ + "\1\10\1\67\5\0\13\10\1\0\1\10\2\0\14\10"+ + "\1\156\16\10\17\0\1\10\1\67\5\0\13\10\1\0"+ + "\1\10\2\0\22\10\1\157\10\10\17\0\1\10\1\67"+ + "\5\0\13\10\1\0\1\10\2\0\12\10\1\160\1\10"+ + "\1\161\6\10\1\162\7\10\17\0\1\10\1\67\5\0"+ + "\13\10\1\0\1\10\2\0\6\10\1\163\3\10\1\164"+ + "\10\10\1\165\7\10\17\0\1\10\1\67\5\0\13\10"+ + "\1\0\1\10\2\0\23\10\1\122\7\10\17\0\1\10"+ + "\1\67\5\0\13\10\1\0\1\10\2\0\6\10\1\166"+ + "\24\10\17\0\1\10\1\67\5\0\13\10\1\0\1\10"+ + "\2\0\13\10\1\167\17\10\17\0\1\10\1\67\5\0"+ + "\13\10\1\0\1\10\2\0\7\10\1\170\23\10\17\0"+ + "\1\10\1\67\5\0\13\10\1\0\1\171\2\0\33\10"+ + "\17\0\1\10\1\67\5\0\13\10\1\0\1\10\2\0"+ + "\14\10\1\172\16\10\17\0\1\10\1\67\5\0\13\10"+ + "\1\0\1\10\2\0\10\10\1\123\22\10\17\0\1\10"+ + "\1\67\5\0\13\10\1\0\1\171\2\0\13\10\1\173"+ + "\17\10\17\0\1\10\1\67\5\0\13\10\1\0\1\10"+ + "\2\0\15\10\1\174\15\10\17\0\1\10\1\67\5\0"+ + "\13\10\1\0\1\175\2\0\33\10\17\0\1\10\1\67"+ + "\5\0\13\10\1\0\1\10\2\0\6\10\1\176\24\10"+ + "\17\0\1\10\1\67\5\0\13\10\1\0\1\10\2\0"+ + "\11\10\1\177\21\10\17\0\1\10\1\67\5\0\13\10"+ + "\1\0\1\10\2\0\32\10\1\200\17\0\1\10\1\67"+ + "\5\0\13\10\1\0\1\201\2\0\33\10\17\0\1\10"+ + "\1\67\5\0\13\10\1\0\1\10\2\0\23\10\1\202"+ + "\7\10\17\0\1\10\1\67\75\0\1\203\11\0\1\141"+ + "\4\0\3\141\70\0\1\204\4\0\3\204\156\0\1\205"+ + "\31\0\1\206\77\0\1\207\57\0\1\145\1\146\1\73"+ + "\1\0\5\146\1\0\1\146\2\0\2\146\7\0\1\146"+ + "\2\0\1\73\1\146\2\0\1\146\2\0\1\146\1\0"+ + "\2\146\34\0\2\210\1\73\1\0\5\210\1\0\1\210"+ + "\2\0\2\210\7\0\1\210\2\0\1\73\1\210\2\0"+ + "\1\210\2\0\1\210\1\0\2\210\34\0\1\211\1\72"+ + "\1\73\2\0\3\211\1\77\1\100\1\101\3\0\1\101"+ + "\12\0\1\73\1\77\45\0\2\150\3\0\3\150\1\77"+ + "\21\0\1\77\45\0\2\150\3\0\3\150\66\0\13\10"+ + "\1\0\1\10\2\0\7\10\1\212\23\10\17\0\1\10"+ + "\1\67\5\0\13\10\1\0\1\122\2\0\13\10\1\156"+ + "\17\10\17\0\1\10\1\67\5\0\13\10\1\0\1\10"+ + "\2\0\3\10\1\213\27\10\17\0\1\10\1\67\5\0"+ + "\13\10\1\0\1\10\2\0\15\10\1\122\15\10\17\0"+ + "\1\10\1\67\5\0\13\10\1\0\1\32\2\0\33\10"+ + "\17\0\1\10\1\67\5\0\13\10\1\0\1\10\2\0"+ + "\13\10\1\214\17\10\17\0\1\10\1\67\5\0\13\10"+ + "\1\0\1\215\2\0\33\10\17\0\1\10\1\67\5\0"+ + "\13\10\1\0\1\156\2\0\33\10\17\0\1\10\1\67"+ + "\5\0\13\10\1\0\1\10\2\0\25\10\1\120\5\10"+ + "\17\0\1\10\1\67\5\0\13\10\1\0\1\10\2\0"+ + "\7\10\1\216\1\217\22\10\17\0\1\10\1\67\5\0"+ + "\13\10\1\0\1\10\2\0\21\10\1\122\11\10\17\0"+ + "\1\10\1\67\5\0\13\10\1\0\1\220\2\0\33\10"+ + "\17\0\1\10\1\67\5\0\13\10\1\0\1\10\2\0"+ + "\11\10\1\221\21\10\17\0\1\10\1\67\5\0\13\10"+ + "\1\0\1\122\2\0\33\10\17\0\1\10\1\67\5\0"+ + "\13\10\1\0\1\10\2\0\5\10\1\122\25\10\17\0"+ + "\1\10\1\67\5\0\13\10\1\0\1\10\2\0\6\10"+ + "\1\170\24\10\17\0\1\10\1\67\5\0\13\10\1\0"+ + "\1\10\2\0\14\10\1\176\16\10\17\0\1\10\1\67"+ + "\5\0\13\10\1\0\1\10\2\0\13\10\1\222\17\10"+ + "\17\0\1\10\1\67\5\0\13\10\1\0\1\10\2\0"+ + "\14\10\1\115\16\10\17\0\1\10\1\67\5\0\13\10"+ + "\1\0\1\123\2\0\33\10\17\0\1\10\1\67\5\0"+ + "\13\10\1\0\1\10\2\0\6\10\1\223\24\10\17\0"+ + "\1\10\1\67\5\0\13\10\1\0\1\10\2\0\13\10"+ + "\1\224\17\10\17\0\1\10\1\67\5\0\13\10\1\0"+ + "\1\10\2\0\11\10\1\225\21\10\17\0\1\10\1\67"+ + "\5\0\13\10\1\0\1\10\2\0\7\10\1\226\23\10"+ + "\17\0\1\10\1\67\30\0\1\227\60\0\1\227\75\0"+ + "\2\230\1\73\1\0\5\230\1\0\1\230\2\0\2\230"+ + "\7\0\1\230\2\0\1\73\1\230\2\0\1\230\2\0"+ + "\1\230\1\0\2\230\34\0\1\231\1\72\1\73\2\0"+ + "\3\231\1\77\1\100\1\101\3\0\1\101\12\0\1\73"+ + "\1\77\43\0\13\10\1\0\1\10\2\0\10\10\1\170"+ + "\22\10\17\0\1\10\1\67\5\0\13\10\1\0\1\10"+ + "\2\0\4\10\1\122\26\10\17\0\1\10\1\67\5\0"+ + "\13\10\1\0\1\10\2\0\14\10\1\123\16\10\17\0"+ + "\1\10\1\67\5\0\13\10\1\0\1\10\2\0\6\10"+ + "\1\221\24\10\17\0\1\10\1\67\5\0\13\10\1\0"+ + "\1\10\2\0\10\10\1\171\22\10\17\0\1\10\1\67"+ + "\5\0\13\10\1\0\1\10\2\0\24\10\1\122\6\10"+ + "\17\0\1\10\1\67\5\0\13\10\1\0\1\10\2\0"+ + "\10\10\1\110\22\10\17\0\1\10\1\67\5\0\13\10"+ + "\1\0\1\10\2\0\6\10\1\122\24\10\17\0\1\10"+ + "\1\67\5\0\13\10\1\0\1\10\2\0\5\10\1\232"+ + "\25\10\17\0\1\10\1\67\5\0\13\10\1\0\1\10"+ + "\2\0\6\10\1\123\24\10\17\0\1\10\1\67\5\0"+ + "\13\10\1\0\1\10\2\0\5\10\1\123\25\10\17\0"+ + "\1\10\1\67\5\0\13\10\1\0\1\10\2\0\27\10"+ + "\1\122\3\10\17\0\1\10\1\67\5\0\13\10\1\0"+ + "\1\10\2\0\14\10\1\170\16\10\17\0\1\10\1\67"+ + "\25\0\1\233\61\0\2\234\1\73\1\0\5\234\1\0"+ + "\1\234\2\0\2\234\7\0\1\234\2\0\1\73\1\234"+ + "\2\0\1\234\2\0\1\234\1\0\2\234\34\0\1\235"+ + "\1\72\1\73\2\0\3\235\1\77\1\100\1\101\3\0"+ + "\1\101\12\0\1\73\1\77\43\0\13\10\1\0\1\115"+ + "\2\0\33\10\17\0\1\10\1\67\6\0\1\236\100\0"+ + "\2\237\1\73\1\0\5\237\1\0\1\237\2\0\2\237"+ + "\7\0\1\237\2\0\1\73\1\237\2\0\1\237\2\0"+ + "\1\237\1\0\2\237\34\0\1\240\1\72\1\73\2\0"+ + "\3\240\1\77\1\100\1\101\3\0\1\101\12\0\1\73"+ + "\1\77\44\0\1\241\100\0\2\242\1\73\1\0\5\242"+ + "\1\0\1\242\2\0\2\242\7\0\1\242\2\0\1\73"+ + "\1\242\2\0\1\242\2\0\1\242\1\0\2\242\34\0"+ + "\1\243\1\72\1\73\2\0\3\243\1\77\1\100\1\101"+ + "\3\0\1\101\12\0\1\73\1\77\45\0\2\244\1\73"+ + "\1\0\5\244\1\0\1\244\2\0\2\244\7\0\1\244"+ + "\2\0\1\73\1\244\2\0\1\244\2\0\1\244\1\0"+ + "\2\244\34\0\1\245\1\72\1\73\2\0\3\245\1\77"+ + "\1\100\1\101\3\0\1\101\12\0\1\73\1\77\45\0"+ + "\2\246\1\73\1\0\5\246\1\0\1\246\2\0\2\246"+ + "\7\0\1\246\2\0\1\73\1\246\2\0\1\246\2\0"+ + "\1\246\1\0\2\246\34\0\1\247\1\72\1\73\2\0"+ + "\3\247\1\77\1\100\1\101\3\0\1\101\12\0\1\73"+ + "\1\77\45\0\2\250\1\73\1\0\5\250\1\0\1\250"+ + "\2\0\2\250\7\0\1\250\2\0\1\73\1\250\2\0"+ + "\1\250\2\0\1\250\1\0\2\250\34\0\1\251\1\72"+ + "\1\73\2\0\3\251\1\77\1\100\1\101\3\0\1\101"+ + "\12\0\1\73\1\77\45\0\2\252\1\73\1\0\5\252"+ + "\1\0\1\252\2\0\2\252\7\0\1\252\2\0\1\73"+ + "\1\252\2\0\1\252\2\0\1\252\1\0\2\252\34\0"+ + "\1\253\1\72\1\73\2\0\3\253\1\77\1\100\1\101"+ + "\3\0\1\101\12\0\1\73\1\77\45\0\2\254\1\73"+ + "\1\0\5\254\1\0\1\254\2\0\2\254\7\0\1\254"+ + "\2\0\1\73\1\254\2\0\1\254\2\0\1\254\1\0"+ + "\2\254\34\0\1\255\1\72\1\73\2\0\3\255\1\77"+ + "\1\100\1\101\3\0\1\101\12\0\1\73\1\77\45\0"+ + "\2\256\1\73\1\0\5\256\1\0\1\256\2\0\2\256"+ + "\7\0\1\256\2\0\1\73\1\256\2\0\1\256\2\0"+ + "\1\256\1\0\2\256\34\0\1\257\1\72\1\73\2\0"+ + "\3\257\1\77\1\100\1\101\3\0\1\101\12\0\1\73"+ + "\1\77\45\0\2\260\1\73\1\0\5\260\1\0\1\260"+ + "\2\0\2\260\7\0\1\260\2\0\1\73\1\260\2\0"+ + "\1\260\2\0\1\260\1\0\2\260\34\0\1\261\1\72"+ + "\1\73\2\0\3\261\1\77\1\100\1\101\3\0\1\101"+ + "\12\0\1\73\1\77\45\0\2\262\1\73\1\0\5\262"+ + "\1\0\1\262\2\0\2\262\7\0\1\262\2\0\1\73"+ + "\1\262\2\0\1\262\2\0\1\262\1\0\2\262\34\0"+ + "\1\263\1\72\1\73\2\0\3\263\1\77\1\100\1\101"+ + "\3\0\1\101\12\0\1\73\1\77\45\0\2\264\1\73"+ + "\1\0\5\264\1\0\1\264\2\0\2\264\7\0\1\264"+ + "\2\0\1\73\1\264\2\0\1\264\2\0\1\264\1\0"+ + "\2\264\34\0\1\265\1\72\1\73\2\0\3\265\1\77"+ + "\1\100\1\101\3\0\1\101\12\0\1\73\1\77\45\0"+ + "\2\266\1\73\1\0\5\266\1\0\1\266\2\0\2\266"+ + "\7\0\1\266\2\0\1\73\1\266\2\0\1\266\2\0"+ + "\1\266\1\0\2\266\34\0\1\267\1\72\1\73\2\0"+ + "\3\267\1\77\1\100\1\101\3\0\1\101\12\0\1\73"+ + "\1\77\47\0\1\73\26\0\1\73\46\0\1\270\1\72"+ + "\1\73\2\0\3\270\1\77\1\100\1\101\3\0\1\101"+ + "\12\0\1\73\1\77\45\0\1\271\1\72\1\73\2\0"+ + "\3\271\1\77\1\100\1\101\3\0\1\101\12\0\1\73"+ + "\1\77\45\0\1\272\1\72\1\73\2\0\3\272\1\77"+ + "\1\100\1\101\3\0\1\101\12\0\1\73\1\77\45\0"+ + "\1\273\1\72\1\73\2\0\3\273\1\77\1\100\1\101"+ + "\3\0\1\101\12\0\1\73\1\77\45\0\2\72\1\73"+ + "\2\0\3\72\1\77\1\100\1\101\3\0\1\101\12\0"+ + "\1\73\1\77\36\0"; + + private static int [] zzUnpackTrans() { + int [] result = new int[10560]; + 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\33\1\6\11\4\1\1\11\4\1\1\11"+ + "\1\1\1\11\1\1\1\11\2\1\2\11\1\0\2\1"+ + "\1\11\1\0\4\1\1\0\34\1\1\0\1\11\2\1"+ + "\3\0\4\1\1\0\31\1\3\11\2\0\17\1\1\0"+ + "\3\1\1\0\2\1\1\0\2\1\1\11\6\1\1\0"+ + "\1\1\1\0\1\1\1\0\1\1\1\0\1\1\1\0"+ + "\1\1\1\0\1\1\1\0\1\1\1\0\5\1"; + + private static int [] zzUnpackAttribute() { + int [] result = new int[187]; + 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[] = new char[ZZ_BUFFERSIZE]; + + /** 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; + + /** number of newlines encountered up to the start of the matched text */ + private int yyline; + + /** the number of characters up to the start of the matched text */ + private int yychar; + + /** + * the number of characters from the last newline up to the start of the + * matched text + */ + private int yycolumn; + + /** + * 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; + + /** denotes if the user-EOF-code has already been executed */ + private boolean zzEOFDone; + + /* user code: */ + /** + * Create an empty lexer, yyrset will be called later to reset and assign + * the reader + */ + public RubyLexer() { + super(); + } + + @Override + public int yychar() { + return yychar; + } + + private static final byte PARAN = 1; + private static final byte BRACKET = 2; + private static final byte CURLY = 3; + private static final byte WORD = 4; + + + + /** + * 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 RubyLexer(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 RubyLexer(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; + } + + + /** + * Refills the input buffer. + * + * @return false, iff there was new input. + * + * @exception java.io.IOException if any I/O-Error occurs + */ + private boolean zzRefill() throws java.io.IOException { + + /* first: make room (if you can) */ + if (zzStartRead > 0) { + System.arraycopy(zzBuffer, zzStartRead, + zzBuffer, 0, + zzEndRead-zzStartRead); + + /* translate stored positions */ + zzEndRead-= zzStartRead; + zzCurrentPos-= zzStartRead; + zzMarkedPos-= zzStartRead; + zzStartRead = 0; + } + + /* is the buffer big enough? */ + if (zzCurrentPos >= zzBuffer.length) { + /* if not: blow it up */ + char newBuffer[] = new char[zzCurrentPos*2]; + System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); + zzBuffer = newBuffer; + } + + /* finally: fill the buffer with new input */ + int numRead = zzReader.read(zzBuffer, zzEndRead, + zzBuffer.length-zzEndRead); + + if (numRead > 0) { + zzEndRead+= numRead; + return false; + } + // unlikely but not impossible: read 0 characters, but not at end of stream + if (numRead == 0) { + int c = zzReader.read(); + if (c == -1) { + return true; + } else { + zzBuffer[zzEndRead++] = (char) c; + return false; + } + } + + // numRead < 0 + return true; + } + + + /** + * 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(); + } + + + /** + * 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 ZZ_INITIAL. + * + * @param reader the new input stream + */ + public final void yyreset(java.io.Reader reader) { + zzReader = reader; + zzAtBOL = true; + zzAtEOF = false; + zzEOFDone = false; + zzEndRead = zzStartRead = 0; + zzCurrentPos = zzMarkedPos = 0; + yyline = yychar = yycolumn = 0; + zzLexicalState = YYINITIAL; + } + + + /** + * Returns the current lexical state. + */ + public final int yystate() { + return zzLexicalState; + } + + + /** + * Enters a new lexical state + * + * @param newState the new lexical state + */ + 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 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; + + yychar+= zzMarkedPosL-zzStartRead; + + zzAction = -1; + + zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; + + 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 7: + { return token(TokenType.OPERATOR, -PARAN); + } + case 25: break; + case 18: + { return token(TokenType.KEYWORD); + } + case 26: break; + case 4: + { return token(TokenType.NUMBER); + } + case 27: break; + case 5: + { return token(TokenType.OPERATOR); + } + case 28: break; + case 8: + { return token(TokenType.OPERATOR, CURLY); + } + case 29: break; + case 9: + { return token(TokenType.OPERATOR, -CURLY); + } + case 30: break; + case 23: + { yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 3); + } + case 31: break; + case 21: + { return token(TokenType.KEYWORD, -WORD); + } + case 32: break; + case 22: + { yybegin(ML_STRING); + tokenStart = yychar; + tokenLength = 3; + } + case 33: break; + case 13: + { tokenLength += yylength(); + } + case 34: break; + case 14: + { yybegin(YYINITIAL); + } + case 35: break; + case 12: + { yybegin(STRING); + tokenStart = yychar; + tokenLength = 1; + } + case 36: break; + case 15: + { yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + case 37: break; + case 24: + { return token(TokenType.TYPE); + } + case 38: break; + case 11: + { return token(TokenType.OPERATOR, -BRACKET); + } + case 39: break; + case 19: + { return token(TokenType.KEYWORD, WORD); + } + case 40: break; + case 6: + { return token(TokenType.OPERATOR, PARAN); + } + case 41: break; + case 3: + { return token(TokenType.IDENTIFIER); + } + case 42: break; + case 20: + { tokenLength += 2; + } + case 43: break; + case 17: + { return token(TokenType.TYPE2); + } + case 44: break; + case 16: + { tokenLength ++; + } + case 45: break; + case 10: + { return token(TokenType.OPERATOR, BRACKET); + } + case 46: break; + case 2: + { return token(TokenType.COMMENT); + } + case 47: break; + case 1: + { + } + case 48: break; + default: + if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { + zzAtEOF = true; + { + return null; + } + } + else { + zzScanError(ZZ_NO_MATCH); + } + } + } + } + + +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/ScalaLexer.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/ScalaLexer.java new file mode 100644 index 000000000..732c74c6f --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/ScalaLexer.java @@ -0,0 +1,1223 @@ +/* The following code was generated by JFlex 1.4.3 on 21.7.10 18:14 */ + +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jsyntaxpane.lexers; + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + + +/** + * This class is a scanner generated by + * JFlex 1.4.3 + * on 21.7.10 18:14 from the specification file + * D:/Dokumenty/Programovani/JavaSE/JPSWFDec/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/scala.flex + */ +public final class ScalaLexer extends DefaultJFlexLexer { + + /** This character denotes the end of file */ + public static final int YYEOF = -1; + + /** initial size of the lookahead buffer */ + private static final int ZZ_BUFFERSIZE = 16384; + + /** lexical states */ + public static final int STRING = 2; + public static final int JDOC_TAG = 8; + public static final int JDOC = 6; + public static final int YYINITIAL = 0; + public static final int CHARLITERAL = 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, 0, 1, 1, 2, 2, 3, 3, 4, 4 + }; + + /** + * Translates characters to character classes + */ + private static final String ZZ_CMAP_PACKED = + "\11\7\1\3\1\2\1\0\1\3\1\1\16\7\4\0\1\3\1\110"+ + "\1\24\1\0\1\6\1\110\1\112\1\25\1\76\1\77\1\5\1\114"+ + "\1\104\1\23\1\21\1\4\1\10\1\16\2\15\4\17\2\11\1\111"+ + "\1\104\1\107\1\105\1\106\1\104\1\115\1\56\1\61\1\62\1\14"+ + "\1\22\1\20\1\75\1\116\1\63\2\116\1\12\1\116\1\66\1\64"+ + "\1\67\1\116\1\73\1\55\1\71\1\116\1\65\1\74\1\13\2\116"+ + "\1\102\1\26\1\103\1\110\1\6\1\0\1\40\1\51\1\41\1\27"+ + "\1\30\1\31\1\43\1\44\1\32\1\60\1\42\1\46\1\33\1\45"+ + "\1\35\1\34\1\70\1\36\1\47\1\37\1\52\1\54\1\50\1\57"+ + "\1\53\1\72\1\100\1\113\1\101\1\104\41\7\2\0\4\6\4\0"+ + "\1\116\2\0\1\7\7\0\1\116\4\0\1\116\5\0\27\116\1\0"+ + "\37\116\1\0\u013f\116\31\0\162\116\4\0\14\116\16\0\5\116\11\0"+ + "\1\116\21\0\130\7\5\0\23\7\12\0\1\116\13\0\1\116\1\0"+ + "\3\116\1\0\1\116\1\0\24\116\1\0\54\116\1\0\46\116\1\0"+ + "\5\116\4\0\202\116\1\0\4\7\3\0\105\116\1\0\46\116\2\0"+ + "\2\116\6\0\20\116\41\0\46\116\2\0\1\116\7\0\47\116\11\0"+ + "\21\7\1\0\27\7\1\0\3\7\1\0\1\7\1\0\2\7\1\0"+ + "\1\7\13\0\33\116\5\0\3\116\15\0\4\7\14\0\6\7\13\0"+ + "\32\116\5\0\13\116\16\7\7\0\12\7\4\0\2\116\1\7\143\116"+ + "\1\0\1\116\10\7\1\0\6\7\2\116\2\7\1\0\4\7\2\116"+ + "\12\7\3\116\2\0\1\116\17\0\1\7\1\116\1\7\36\116\33\7"+ + "\2\0\3\116\60\0\46\116\13\7\1\116\u014f\0\3\7\66\116\2\0"+ + "\1\7\1\116\20\7\2\0\1\116\4\7\3\0\12\116\2\7\2\0"+ + "\12\7\21\0\3\7\1\0\10\116\2\0\2\116\2\0\26\116\1\0"+ + "\7\116\1\0\1\116\3\0\4\116\2\0\1\7\1\116\7\7\2\0"+ + "\2\7\2\0\3\7\11\0\1\7\4\0\2\116\1\0\3\116\2\7"+ + "\2\0\12\7\2\116\2\6\15\0\3\7\1\0\6\116\4\0\2\116"+ + "\2\0\26\116\1\0\7\116\1\0\2\116\1\0\2\116\1\0\2\116"+ + "\2\0\1\7\1\0\5\7\4\0\2\7\2\0\3\7\13\0\4\116"+ + "\1\0\1\116\7\0\14\7\3\116\14\0\3\7\1\0\11\116\1\0"+ + "\3\116\1\0\26\116\1\0\7\116\1\0\2\116\1\0\5\116\2\0"+ + "\1\7\1\116\10\7\1\0\3\7\1\0\3\7\2\0\1\116\17\0"+ + "\2\116\2\7\2\0\12\7\1\0\1\6\17\0\3\7\1\0\10\116"+ + "\2\0\2\116\2\0\26\116\1\0\7\116\1\0\2\116\1\0\5\116"+ + "\2\0\1\7\1\116\6\7\3\0\2\7\2\0\3\7\10\0\2\7"+ + "\4\0\2\116\1\0\3\116\4\0\12\7\1\0\1\116\20\0\1\7"+ + "\1\116\1\0\6\116\3\0\3\116\1\0\4\116\3\0\2\116\1\0"+ + "\1\116\1\0\2\116\3\0\2\116\3\0\3\116\3\0\10\116\1\0"+ + "\3\116\4\0\5\7\3\0\3\7\1\0\4\7\11\0\1\7\17\0"+ + "\11\7\11\0\1\6\7\0\3\7\1\0\10\116\1\0\3\116\1\0"+ + "\27\116\1\0\12\116\1\0\5\116\4\0\7\7\1\0\3\7\1\0"+ + "\4\7\7\0\2\7\11\0\2\116\4\0\12\7\22\0\2\7\1\0"+ + "\10\116\1\0\3\116\1\0\27\116\1\0\12\116\1\0\5\116\2\0"+ + "\1\7\1\116\7\7\1\0\3\7\1\0\4\7\7\0\2\7\7\0"+ + "\1\116\1\0\2\116\4\0\12\7\22\0\2\7\1\0\10\116\1\0"+ + "\3\116\1\0\27\116\1\0\20\116\4\0\6\7\2\0\3\7\1\0"+ + "\4\7\11\0\1\7\10\0\2\116\4\0\12\7\22\0\2\7\1\0"+ + "\22\116\3\0\30\116\1\0\11\116\1\0\1\116\2\0\7\116\3\0"+ + "\1\7\4\0\6\7\1\0\1\7\1\0\10\7\22\0\2\7\15\0"+ + "\60\116\1\7\2\116\7\7\4\0\1\6\7\116\10\7\1\0\12\7"+ + "\47\0\2\116\1\0\1\116\2\0\2\116\1\0\1\116\2\0\1\116"+ + "\6\0\4\116\1\0\7\116\1\0\3\116\1\0\1\116\1\0\1\116"+ + "\2\0\2\116\1\0\4\116\1\7\2\116\6\7\1\0\2\7\1\116"+ + "\2\0\5\116\1\0\1\116\1\0\6\7\2\0\12\7\2\0\2\116"+ + "\42\0\1\116\27\0\2\7\6\0\12\7\13\0\1\7\1\0\1\7"+ + "\1\0\1\7\4\0\2\7\10\116\1\0\42\116\6\0\24\7\1\0"+ + "\2\7\4\116\4\0\10\7\1\0\44\7\11\0\1\7\71\0\42\116"+ + "\1\0\5\116\1\0\2\116\1\0\7\7\3\0\4\7\6\0\12\7"+ + "\6\0\6\116\4\7\106\0\46\116\12\0\51\116\7\0\132\116\5\0"+ + "\104\116\5\0\122\116\6\0\7\116\1\0\77\116\1\0\1\116\1\0"+ + "\4\116\2\0\7\116\1\0\1\116\1\0\4\116\2\0\47\116\1\0"+ + "\1\116\1\0\4\116\2\0\37\116\1\0\1\116\1\0\4\116\2\0"+ + "\7\116\1\0\1\116\1\0\4\116\2\0\7\116\1\0\7\116\1\0"+ + "\27\116\1\0\37\116\1\0\1\116\1\0\4\116\2\0\7\116\1\0"+ + "\47\116\1\0\23\116\16\0\11\7\56\0\125\116\14\0\u026c\116\2\0"+ + "\10\116\12\0\32\116\5\0\113\116\3\0\3\6\17\0\15\116\1\0"+ + "\4\116\3\7\13\0\22\116\3\7\13\0\22\116\2\7\14\0\15\116"+ + "\1\0\3\116\1\0\2\7\14\0\64\116\40\7\3\0\1\116\3\0"+ + "\1\6\1\116\1\7\2\0\12\7\41\0\3\7\2\0\12\7\6\0"+ + "\130\116\10\0\51\116\1\7\126\0\35\116\3\0\14\7\4\0\14\7"+ + "\12\0\12\7\36\116\2\0\5\116\u038b\0\154\116\224\0\234\116\4\0"+ + "\132\116\6\0\26\116\2\0\6\116\2\0\46\116\2\0\6\116\2\0"+ + "\10\116\1\0\1\116\1\0\1\116\1\0\1\116\1\0\37\116\2\0"+ + "\65\116\1\0\7\116\1\0\1\116\3\0\3\116\1\0\7\116\3\0"+ + "\4\116\2\0\6\116\4\0\15\116\5\0\3\116\1\0\7\116\17\0"+ + "\4\7\32\0\5\7\20\0\2\6\23\0\1\6\13\0\4\7\6\0"+ + "\6\7\1\0\1\116\15\0\1\116\40\0\22\6\36\0\15\7\4\0"+ + "\1\7\3\0\6\7\27\0\1\116\4\0\1\116\2\0\12\116\1\0"+ + "\1\116\3\0\5\116\6\0\1\116\1\0\1\116\1\0\1\116\1\0"+ + "\4\116\1\0\3\116\1\0\7\116\3\0\3\116\5\0\5\116\26\0"+ + "\44\6\u0e81\0\2\116\1\6\31\0\11\6\6\7\1\0\5\116\2\0"+ + "\3\6\2\116\4\0\126\116\2\0\2\7\2\0\3\116\1\0\132\116"+ + "\1\6\4\116\5\0\50\116\4\0\136\116\21\0\30\116\70\0\20\116"+ + "\u0200\0\u19b6\116\112\0\u51a6\116\132\0\u048d\116\u0773\0\u2ba4\116\u215c\0\u012e\116"+ + "\2\0\73\116\225\0\7\116\14\0\5\116\5\0\1\116\1\7\12\116"+ + "\1\0\15\116\1\0\5\116\1\0\1\116\1\0\2\116\1\0\2\116"+ + "\1\0\154\116\41\0\u016b\116\22\0\100\116\2\0\66\116\50\0\14\116"+ + "\1\6\3\0\20\7\20\0\4\7\17\0\2\6\30\0\3\6\31\0"+ + "\1\6\6\0\5\116\1\0\207\116\2\0\1\7\4\0\1\6\13\0"+ + "\12\7\7\0\32\116\4\0\1\6\1\0\32\116\12\0\1\6\131\116"+ + "\3\0\6\116\2\0\6\116\2\0\6\116\2\0\3\116\3\0\2\6"+ + "\3\0\2\6\22\0\3\7\4\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\3\1\2\2\1\3\2\4\2\3\1\2\1\3"+ + "\1\2\1\5\1\6\36\3\1\7\1\10\1\11\1\12"+ + "\1\13\1\14\6\2\1\15\2\16\1\17\1\1\1\15"+ + "\1\1\2\20\1\21\2\22\1\15\1\23\1\0\3\4"+ + "\1\0\3\4\1\0\4\3\1\24\6\3\1\24\51\3"+ + "\1\2\1\25\2\15\1\26\1\15\2\23\1\0\1\27"+ + "\4\4\1\0\55\3\2\0\2\4\25\3\1\30\13\3"+ + "\2\4\1\31\1\3\1\24\17\3\2\4\5\3\1\24"+ + "\4\3\2\4\1\32\3\3\1\33\2\4\2\3\2\4"+ + "\3\3\2\4\2\3\1\0\1\4\1\0\1\4\1\0"+ + "\1\4\1\0\1\4\1\0\1\4\1\0\1\4\1\0"+ + "\1\4\1\0\5\4"; + + private static int [] zzUnpackAction() { + int [] result = new int[307]; + 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\117\0\236\0\355\0\u013c\0\u018b\0\u01da\0\u0229"+ + "\0\u0278\0\u02c7\0\u0316\0\u0365\0\u03b4\0\u0403\0\u0452\0\u04a1"+ + "\0\u04f0\0\u053f\0\u018b\0\u018b\0\u058e\0\u05dd\0\u062c\0\u067b"+ + "\0\u06ca\0\u0719\0\u0768\0\u07b7\0\u0806\0\u0855\0\u08a4\0\u08f3"+ + "\0\u0942\0\u0991\0\u09e0\0\u0a2f\0\u0a7e\0\u0acd\0\u0b1c\0\u0b6b"+ + "\0\u0bba\0\u0c09\0\u0c58\0\u0ca7\0\u0cf6\0\u0d45\0\u0d94\0\u0de3"+ + "\0\u0e32\0\u0e81\0\u018b\0\u018b\0\u018b\0\u018b\0\u018b\0\u018b"+ + "\0\u018b\0\u0ed0\0\u0f1f\0\u0f6e\0\u0fbd\0\u100c\0\u105b\0\u10aa"+ + "\0\u018b\0\u018b\0\u10f9\0\u1148\0\u1197\0\u018b\0\u11e6\0\u018b"+ + "\0\u018b\0\u11e6\0\u1235\0\u1284\0\u12d3\0\u1322\0\u1371\0\u018b"+ + "\0\u13c0\0\u140f\0\u145e\0\u14ad\0\u14fc\0\u154b\0\u159a\0\u15e9"+ + "\0\u1638\0\u1687\0\u16d6\0\u1725\0\u1774\0\u17c3\0\u1812\0\u1861"+ + "\0\u0316\0\u18b0\0\u18ff\0\u194e\0\u199d\0\u19ec\0\u1a3b\0\u1a8a"+ + "\0\u1ad9\0\u1b28\0\u1b77\0\u1bc6\0\u1c15\0\u1c64\0\u1cb3\0\u1d02"+ + "\0\u1d51\0\u1da0\0\u1def\0\u1e3e\0\u1e8d\0\u1edc\0\u1f2b\0\u1f7a"+ + "\0\u1fc9\0\u2018\0\u2067\0\u20b6\0\u2105\0\u2154\0\u21a3\0\u21f2"+ + "\0\u2241\0\u2290\0\u22df\0\u232e\0\u237d\0\u23cc\0\u241b\0\u246a"+ + "\0\u24b9\0\u2508\0\u2557\0\u018b\0\u25a6\0\u25f5\0\u018b\0\u018b"+ + "\0\u2644\0\u018b\0\u2693\0\u26e2\0\u2731\0\u2780\0\u27cf\0\u281e"+ + "\0\u286d\0\u28bc\0\u290b\0\u295a\0\u29a9\0\u29f8\0\u2a47\0\u2a96"+ + "\0\u2ae5\0\u2b34\0\u2b83\0\u2bd2\0\u2c21\0\u2c70\0\u2cbf\0\u2d0e"+ + "\0\u2d5d\0\u2dac\0\u2dfb\0\u2e4a\0\u2e99\0\u2ee8\0\u2f37\0\u2f86"+ + "\0\u2fd5\0\u3024\0\u3073\0\u30c2\0\u3111\0\u3160\0\u31af\0\u31fe"+ + "\0\u324d\0\u329c\0\u32eb\0\u333a\0\u3389\0\u33d8\0\u3427\0\u3476"+ + "\0\u34c5\0\u3514\0\u3563\0\u35b2\0\u3601\0\u3650\0\u369f\0\u26e2"+ + "\0\u36ee\0\u373d\0\u378c\0\u37db\0\u382a\0\u3879\0\u38c8\0\u3917"+ + "\0\u3966\0\u39b5\0\u3a04\0\u3a53\0\u3aa2\0\u3af1\0\u3b40\0\u3b8f"+ + "\0\u3bde\0\u3c2d\0\u3c7c\0\u3ccb\0\u3d1a\0\u3d69\0\u3db8\0\u0316"+ + "\0\u3e07\0\u3e56\0\u3ea5\0\u3ef4\0\u3f43\0\u3f92\0\u3fe1\0\u4030"+ + "\0\u407f\0\u40ce\0\u411d\0\u416c\0\u41bb\0\u0316\0\u420a\0\u4259"+ + "\0\u42a8\0\u42f7\0\u4346\0\u4395\0\u43e4\0\u4433\0\u4482\0\u44d1"+ + "\0\u4520\0\u456f\0\u45be\0\u460d\0\u465c\0\u46ab\0\u46fa\0\u4749"+ + "\0\u4798\0\u47e7\0\u4836\0\u4885\0\u48d4\0\u4923\0\u4972\0\u49c1"+ + "\0\u4a10\0\u4a5f\0\u4aae\0\u4afd\0\u4b4c\0\u0316\0\u4b9b\0\u4bea"+ + "\0\u4c39\0\u0316\0\u4c88\0\u4cd7\0\u4d26\0\u4d75\0\u4dc4\0\u4e13"+ + "\0\u4e62\0\u4eb1\0\u4f00\0\u4f4f\0\u4f9e\0\u4fed\0\u503c\0\u508b"+ + "\0\u50da\0\u5129\0\u5178\0\u51c7\0\u5216\0\u5265\0\u52b4\0\u5303"+ + "\0\u5352\0\u53a1\0\u53f0\0\u543f\0\u548e\0\u54dd\0\u552c\0\u557b"+ + "\0\u55ca\0\u5619\0\u5668"; + + private static int [] zzUnpackRowMap() { + int [] result = new int[307]; + 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\6\1\10\1\11\1\12\1\13\1\6"+ + "\1\14\1\15\2\13\1\16\3\15\1\17\1\20\1\21"+ + "\1\22\1\23\1\24\1\6\1\25\1\26\1\27\1\30"+ + "\1\13\1\31\1\32\1\33\1\34\1\35\1\36\3\13"+ + "\1\37\1\40\1\41\1\42\1\43\1\44\1\45\1\46"+ + "\1\47\1\50\2\13\1\51\1\52\1\53\1\54\1\55"+ + "\1\56\1\57\1\13\1\60\1\13\1\61\1\62\1\13"+ + "\1\63\1\64\1\65\1\66\1\67\1\70\1\71\1\12"+ + "\1\72\1\73\1\12\1\71\1\74\1\75\1\76\1\6"+ + "\1\13\1\77\1\100\1\101\21\77\1\102\1\77\1\103"+ + "\70\77\1\104\1\100\1\101\22\104\1\102\1\105\70\104"+ + "\5\106\1\107\107\106\1\110\1\106\5\111\1\112\4\111"+ + "\3\113\3\111\1\113\1\111\1\113\4\111\47\113\20\111"+ + "\1\113\121\0\1\6\117\0\1\10\117\0\1\114\1\115"+ + "\77\0\1\71\116\0\1\71\17\0\13\13\1\0\1\13"+ + "\4\0\47\13\20\0\1\13\10\0\1\116\1\117\1\120"+ + "\1\121\1\120\1\122\1\123\1\122\1\120\1\124\1\125"+ + "\4\0\1\120\1\125\1\120\14\0\1\120\10\0\1\121"+ + "\47\0\2\15\1\120\1\0\1\120\3\15\1\120\1\124"+ + "\1\125\4\0\1\120\1\125\1\120\14\0\1\120\56\0"+ + "\13\13\1\0\1\13\4\0\6\13\1\126\40\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\17\13\1\127"+ + "\27\13\20\0\1\13\10\0\2\124\3\0\3\124\105\0"+ + "\13\13\1\0\1\13\4\0\44\13\1\130\2\13\20\0"+ + "\1\13\23\0\1\71\61\0\1\71\17\0\13\13\1\0"+ + "\1\13\4\0\1\13\1\131\4\13\1\132\40\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\17\13\1\133"+ + "\10\13\1\134\16\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\3\13\1\135\2\13\1\136\2\13\1\137"+ + "\5\13\1\140\27\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\2\13\1\141\1\13\1\142\11\13\1\143"+ + "\30\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\7\13\1\144\1\13\1\145\35\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\22\13\1\146\2\13\1\147"+ + "\21\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\1\13\1\150\45\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\7\13\1\151\5\13\1\152\6\13\1\153"+ + "\22\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\22\13\1\154\24\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\11\13\1\155\3\13\1\156\31\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\23\13\1\157"+ + "\23\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\6\13\1\160\40\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\1\13\1\161\13\13\1\162\5\13\1\163"+ + "\23\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\3\13\1\164\11\13\1\165\31\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\6\13\1\166\15\13\1\167"+ + "\22\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\16\13\1\170\30\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\3\13\1\171\43\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\11\13\1\172\35\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\1\13\1\173"+ + "\6\13\1\174\4\13\1\175\31\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\7\13\1\176\37\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\6\13\1\177"+ + "\15\13\1\200\22\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\6\13\1\201\6\13\1\202\1\13\1\203"+ + "\27\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\16\13\1\204\30\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\22\13\1\146\24\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\6\13\1\205\40\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\23\13\1\206"+ + "\23\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\11\13\1\207\35\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\15\13\1\210\31\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\23\13\1\211\23\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\27\13\1\212"+ + "\17\13\20\0\1\13\105\0\1\71\1\213\115\0\1\71"+ + "\1\0\1\12\114\0\1\71\4\0\1\71\111\0\1\71"+ + "\5\0\1\71\110\0\1\71\6\0\1\71\2\0\1\77"+ + "\2\0\21\77\1\0\1\77\1\0\70\77\2\0\1\101"+ + "\114\0\2\214\1\0\5\214\1\215\4\214\2\215\1\216"+ + "\77\214\1\104\2\0\22\104\2\0\70\104\2\214\1\0"+ + "\114\214\4\0\1\217\124\0\3\113\3\0\1\113\1\0"+ + "\1\113\4\0\47\113\13\0\1\220\4\0\1\113\1\114"+ + "\1\221\1\222\114\114\5\223\1\224\111\223\10\0\1\116"+ + "\1\117\1\120\1\0\1\120\1\122\1\123\1\122\1\120"+ + "\1\124\1\125\4\0\1\120\1\125\1\120\14\0\1\120"+ + "\60\0\2\117\2\0\1\120\3\117\1\120\1\124\1\125"+ + "\4\0\1\120\1\125\1\120\75\0\1\225\1\226\2\0"+ + "\5\226\1\0\1\226\4\0\3\226\6\0\2\226\7\0"+ + "\1\226\4\0\1\226\2\0\2\226\44\0\1\227\1\117"+ + "\1\120\1\0\1\120\3\227\1\120\1\124\1\125\4\0"+ + "\1\120\1\125\1\120\14\0\1\120\60\0\1\122\1\117"+ + "\1\120\1\0\1\120\3\122\1\120\1\124\1\125\4\0"+ + "\1\120\1\125\1\120\14\0\1\120\60\0\2\124\2\0"+ + "\1\120\3\124\1\120\1\0\1\125\4\0\1\120\1\125"+ + "\1\120\75\0\2\230\3\0\3\230\3\0\1\231\70\0"+ + "\1\231\10\0\13\13\1\0\1\13\4\0\23\13\1\232"+ + "\23\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\6\13\1\233\40\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\44\13\1\234\2\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\2\13\1\141\44\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\23\13\1\235"+ + "\23\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\20\13\1\236\26\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\10\13\1\237\36\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\16\13\1\240\30\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\7\13\1\141"+ + "\37\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\17\13\1\133\27\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\6\13\1\241\40\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\5\13\1\162\41\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\10\13\1\141"+ + "\36\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\3\13\1\242\2\13\1\243\40\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\12\13\1\244\34\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\31\13\1\245"+ + "\15\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\1\13\1\246\45\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\10\13\1\247\36\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\23\13\1\236\1\141\22\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\1\13"+ + "\1\250\1\13\1\251\3\13\1\252\37\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\5\13\1\236\41\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\20\13"+ + "\1\253\26\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\10\13\1\254\36\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\11\13\1\136\35\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\17\13\1\255\27\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\16\13"+ + "\1\256\30\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\11\13\1\257\35\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\6\13\1\260\40\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\5\13\1\261\41\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\10\13"+ + "\1\262\36\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\3\13\1\263\43\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\6\13\1\264\40\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\10\13\1\236\36\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\3\13"+ + "\1\143\43\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\1\13\1\265\45\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\7\13\1\141\7\13\1\141\27\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\7\13"+ + "\1\266\37\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\7\13\1\267\37\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\6\13\1\270\40\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\7\13\1\271\37\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\6\13"+ + "\1\272\40\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\10\13\1\273\36\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\4\13\1\274\42\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\11\13\1\275\35\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\6\13"+ + "\1\276\2\13\1\277\35\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\10\13\1\300\36\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\3\13\1\301\43\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\4\13"+ + "\1\302\42\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\12\13\1\303\34\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\7\13\1\304\37\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\16\13\1\305\30\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\44\13"+ + "\1\306\2\13\20\0\1\13\105\0\1\71\1\12\20\0"+ + "\1\216\4\0\3\216\107\0\1\220\4\0\3\220\101\0"+ + "\1\222\114\0\5\223\1\307\111\223\4\0\1\222\1\310"+ + "\121\0\1\225\1\226\1\120\1\0\5\226\1\0\1\226"+ + "\4\0\3\226\6\0\2\226\4\0\1\120\2\0\1\226"+ + "\4\0\1\226\2\0\2\226\44\0\2\311\1\120\1\0"+ + "\5\311\1\0\1\311\4\0\3\311\6\0\2\311\4\0"+ + "\1\120\2\0\1\311\4\0\1\311\2\0\2\311\44\0"+ + "\1\312\1\117\1\120\1\0\1\120\3\312\1\120\1\124"+ + "\1\125\4\0\1\120\1\125\1\120\14\0\1\120\60\0"+ + "\2\230\2\0\1\120\3\230\1\120\6\0\1\120\1\0"+ + "\1\120\75\0\2\230\3\0\3\230\105\0\13\13\1\0"+ + "\1\13\4\0\22\13\1\313\24\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\11\13\1\314\35\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\35\13\1\315"+ + "\11\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\22\13\1\263\24\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\1\13\1\141\45\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\1\13\1\316\45\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\11\13\1\317"+ + "\35\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\11\13\1\143\35\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\16\13\1\320\6\13\1\321\21\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\10\13\1\322"+ + "\36\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\13\13\1\323\33\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\1\13\1\324\45\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\7\13\1\325\37\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\23\13\1\326"+ + "\23\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\16\13\1\141\30\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\20\13\1\141\26\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\6\13\1\327\40\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\10\13\1\330"+ + "\36\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\12\13\1\262\34\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\17\13\1\141\27\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\14\13\1\141\32\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\17\13\1\331"+ + "\27\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\7\13\1\143\37\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\1\13\1\136\45\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\15\13\1\141\31\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\17\13\1\236"+ + "\27\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\17\13\1\332\27\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\17\13\1\333\27\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\3\13\1\334\43\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\3\13\1\335"+ + "\43\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\7\13\1\314\37\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\11\13\1\336\35\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\17\13\1\337\27\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\1\13\1\340"+ + "\45\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\5\13\1\341\41\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\7\13\1\342\37\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\16\13\1\343\30\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\20\13\1\344"+ + "\26\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\1\13\1\345\45\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\1\340\46\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\22\13\1\346\24\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\13\13\1\347\33\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\1\13"+ + "\1\350\4\13\1\351\40\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\16\13\1\352\30\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\37\13\1\353\7\13"+ + "\20\0\1\13\4\223\1\222\1\307\111\223\10\0\2\354"+ + "\1\120\1\0\5\354\1\0\1\354\4\0\3\354\6\0"+ + "\2\354\4\0\1\120\2\0\1\354\4\0\1\354\2\0"+ + "\2\354\44\0\1\355\1\117\1\120\1\0\1\120\3\355"+ + "\1\120\1\124\1\125\4\0\1\120\1\125\1\120\14\0"+ + "\1\120\56\0\13\13\1\0\1\13\4\0\17\13\1\273"+ + "\27\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\10\13\1\340\36\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\44\13\1\356\2\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\16\13\1\357\30\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\17\13\1\360"+ + "\27\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\10\13\1\361\36\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\11\13\1\167\35\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\1\13\1\362\45\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\11\13\1\363"+ + "\35\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\12\13\1\314\34\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\7\13\1\364\37\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\7\13\1\250\37\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\21\13\1\141"+ + "\25\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\7\13\1\365\37\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\1\13\1\333\45\13\20\0\1\13\6\0"+ + "\13\13\1\0\1\13\4\0\1\13\1\366\45\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\1\141\46\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\11\13"+ + "\1\367\35\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\16\13\1\370\30\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\24\13\1\141\22\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\1\13\1\371\45\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\11\13"+ + "\1\372\35\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\11\13\1\373\14\13\1\374\20\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\1\13\1\352\45\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\20\13"+ + "\1\340\26\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\14\13\1\346\32\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\1\13\1\375\45\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\11\13\1\376\35\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\11\13"+ + "\1\301\35\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\21\13\1\352\25\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\11\13\1\232\35\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\34\13\1\377\12\13"+ + "\20\0\1\13\10\0\2\u0100\1\120\1\0\5\u0100\1\0"+ + "\1\u0100\4\0\3\u0100\6\0\2\u0100\4\0\1\120\2\0"+ + "\1\u0100\4\0\1\u0100\2\0\2\u0100\44\0\1\u0101\1\117"+ + "\1\120\1\0\1\120\3\u0101\1\120\1\124\1\125\4\0"+ + "\1\120\1\125\1\120\14\0\1\120\56\0\13\13\1\0"+ + "\1\13\4\0\1\251\46\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\17\13\1\336\27\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\17\13\1\u0102\27\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\12\13"+ + "\1\u0103\34\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\14\13\1\236\32\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\3\13\1\u0104\43\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\11\13\1\u0105\35\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\11\13"+ + "\1\250\35\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\17\13\1\u0106\27\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\14\13\1\u0107\32\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\11\13\1\u0108\35\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\7\13"+ + "\1\352\37\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\12\13\1\u0109\34\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\1\13\1\u010a\45\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\7\13\1\340\37\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\14\13"+ + "\1\273\32\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\37\13\1\u010b\7\13\20\0\1\13\10\0\2\u010c"+ + "\1\120\1\0\5\u010c\1\0\1\u010c\4\0\3\u010c\6\0"+ + "\2\u010c\4\0\1\120\2\0\1\u010c\4\0\1\u010c\2\0"+ + "\2\u010c\44\0\1\u010d\1\117\1\120\1\0\1\120\3\u010d"+ + "\1\120\1\124\1\125\4\0\1\120\1\125\1\120\14\0"+ + "\1\120\56\0\13\13\1\0\1\13\4\0\16\13\1\u010e"+ + "\30\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\10\13\1\331\36\13\20\0\1\13\6\0\13\13\1\0"+ + "\1\13\4\0\1\236\46\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\12\13\1\143\34\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\3\13\1\u010f\43\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\32\13"+ + "\1\u0110\14\13\20\0\1\13\6\0\13\13\1\0\1\13"+ + "\4\0\16\13\1\340\30\13\20\0\1\13\6\0\13\13"+ + "\1\0\1\13\4\0\10\13\1\346\36\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\41\13\1\u0111\5\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\46\13"+ + "\1\u0112\20\0\1\13\10\0\2\u0113\1\120\1\0\5\u0113"+ + "\1\0\1\u0113\4\0\3\u0113\6\0\2\u0113\4\0\1\120"+ + "\2\0\1\u0113\4\0\1\u0113\2\0\2\u0113\44\0\1\u0114"+ + "\1\117\1\120\1\0\1\120\3\u0114\1\120\1\124\1\125"+ + "\4\0\1\120\1\125\1\120\14\0\1\120\56\0\13\13"+ + "\1\0\1\13\4\0\43\13\1\352\3\13\20\0\1\13"+ + "\6\0\13\13\1\0\1\13\4\0\23\13\1\u0115\23\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\23\13"+ + "\1\u0116\23\13\20\0\1\13\10\0\2\u0117\1\120\1\0"+ + "\5\u0117\1\0\1\u0117\4\0\3\u0117\6\0\2\u0117\4\0"+ + "\1\120\2\0\1\u0117\4\0\1\u0117\2\0\2\u0117\44\0"+ + "\1\u0118\1\117\1\120\1\0\1\120\3\u0118\1\120\1\124"+ + "\1\125\4\0\1\120\1\125\1\120\14\0\1\120\56\0"+ + "\13\13\1\0\1\13\4\0\2\13\1\u0119\1\u011a\43\13"+ + "\20\0\1\13\6\0\13\13\1\0\1\13\4\0\1\13"+ + "\1\u011b\45\13\20\0\1\13\10\0\2\u011c\1\120\1\0"+ + "\5\u011c\1\0\1\u011c\4\0\3\u011c\6\0\2\u011c\4\0"+ + "\1\120\2\0\1\u011c\4\0\1\u011c\2\0\2\u011c\44\0"+ + "\1\u011d\1\117\1\120\1\0\1\120\3\u011d\1\120\1\124"+ + "\1\125\4\0\1\120\1\125\1\120\14\0\1\120\56\0"+ + "\13\13\1\0\1\13\4\0\2\13\1\346\44\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\17\13\1\u011e"+ + "\27\13\20\0\1\13\6\0\13\13\1\0\1\13\4\0"+ + "\16\13\1\u011f\30\13\20\0\1\13\10\0\2\u0120\1\120"+ + "\1\0\5\u0120\1\0\1\u0120\4\0\3\u0120\6\0\2\u0120"+ + "\4\0\1\120\2\0\1\u0120\4\0\1\u0120\2\0\2\u0120"+ + "\44\0\1\u0121\1\117\1\120\1\0\1\120\3\u0121\1\120"+ + "\1\124\1\125\4\0\1\120\1\125\1\120\14\0\1\120"+ + "\56\0\13\13\1\0\1\13\4\0\1\346\46\13\20\0"+ + "\1\13\6\0\13\13\1\0\1\13\4\0\12\13\1\273"+ + "\34\13\20\0\1\13\10\0\2\u0122\1\120\1\0\5\u0122"+ + "\1\0\1\u0122\4\0\3\u0122\6\0\2\u0122\4\0\1\120"+ + "\2\0\1\u0122\4\0\1\u0122\2\0\2\u0122\44\0\1\u0123"+ + "\1\117\1\120\1\0\1\120\3\u0123\1\120\1\124\1\125"+ + "\4\0\1\120\1\125\1\120\14\0\1\120\60\0\2\u0124"+ + "\1\120\1\0\5\u0124\1\0\1\u0124\4\0\3\u0124\6\0"+ + "\2\u0124\4\0\1\120\2\0\1\u0124\4\0\1\u0124\2\0"+ + "\2\u0124\44\0\1\u0125\1\117\1\120\1\0\1\120\3\u0125"+ + "\1\120\1\124\1\125\4\0\1\120\1\125\1\120\14\0"+ + "\1\120\60\0\2\u0126\1\120\1\0\5\u0126\1\0\1\u0126"+ + "\4\0\3\u0126\6\0\2\u0126\4\0\1\120\2\0\1\u0126"+ + "\4\0\1\u0126\2\0\2\u0126\44\0\1\u0127\1\117\1\120"+ + "\1\0\1\120\3\u0127\1\120\1\124\1\125\4\0\1\120"+ + "\1\125\1\120\14\0\1\120\60\0\2\u0128\1\120\1\0"+ + "\5\u0128\1\0\1\u0128\4\0\3\u0128\6\0\2\u0128\4\0"+ + "\1\120\2\0\1\u0128\4\0\1\u0128\2\0\2\u0128\44\0"+ + "\1\u0129\1\117\1\120\1\0\1\120\3\u0129\1\120\1\124"+ + "\1\125\4\0\1\120\1\125\1\120\14\0\1\120\60\0"+ + "\2\u012a\1\120\1\0\5\u012a\1\0\1\u012a\4\0\3\u012a"+ + "\6\0\2\u012a\4\0\1\120\2\0\1\u012a\4\0\1\u012a"+ + "\2\0\2\u012a\44\0\1\u012b\1\117\1\120\1\0\1\120"+ + "\3\u012b\1\120\1\124\1\125\4\0\1\120\1\125\1\120"+ + "\14\0\1\120\60\0\2\u012c\1\120\1\0\5\u012c\1\0"+ + "\1\u012c\4\0\3\u012c\6\0\2\u012c\4\0\1\120\2\0"+ + "\1\u012c\4\0\1\u012c\2\0\2\u012c\44\0\1\u012d\1\117"+ + "\1\120\1\0\1\120\3\u012d\1\120\1\124\1\125\4\0"+ + "\1\120\1\125\1\120\14\0\1\120\60\0\2\u012e\1\120"+ + "\1\0\5\u012e\1\0\1\u012e\4\0\3\u012e\6\0\2\u012e"+ + "\4\0\1\120\2\0\1\u012e\4\0\1\u012e\2\0\2\u012e"+ + "\44\0\1\u012f\1\117\1\120\1\0\1\120\3\u012f\1\120"+ + "\1\124\1\125\4\0\1\120\1\125\1\120\14\0\1\120"+ + "\62\0\1\120\33\0\1\120\60\0\1\u0130\1\117\1\120"+ + "\1\0\1\120\3\u0130\1\120\1\124\1\125\4\0\1\120"+ + "\1\125\1\120\14\0\1\120\60\0\1\u0131\1\117\1\120"+ + "\1\0\1\120\3\u0131\1\120\1\124\1\125\4\0\1\120"+ + "\1\125\1\120\14\0\1\120\60\0\1\u0132\1\117\1\120"+ + "\1\0\1\120\3\u0132\1\120\1\124\1\125\4\0\1\120"+ + "\1\125\1\120\14\0\1\120\60\0\1\u0133\1\117\1\120"+ + "\1\0\1\120\3\u0133\1\120\1\124\1\125\4\0\1\120"+ + "\1\125\1\120\14\0\1\120\60\0\2\117\1\120\1\0"+ + "\1\120\3\117\1\120\1\124\1\125\4\0\1\120\1\125"+ + "\1\120\14\0\1\120\50\0"; + + private static int [] zzUnpackTrans() { + int [] result = new int[22199]; + 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\1\11\14\1\2\11\36\1\7\11\7\1\2\11"+ + "\3\1\1\11\1\1\2\11\3\1\1\0\2\1\1\11"+ + "\1\0\3\1\1\0\66\1\1\11\2\1\2\11\1\1"+ + "\1\11\1\0\5\1\1\0\55\1\2\0\127\1\1\0"+ + "\1\1\1\0\1\1\1\0\1\1\1\0\1\1\1\0"+ + "\1\1\1\0\1\1\1\0\1\1\1\0\5\1"; + + private static int [] zzUnpackAttribute() { + int [] result = new int[307]; + 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[] = new char[ZZ_BUFFERSIZE]; + + /** 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; + + /** number of newlines encountered up to the start of the matched text */ + private int yyline; + + /** the number of characters up to the start of the matched text */ + private int yychar; + + /** + * the number of characters from the last newline up to the start of the + * matched text + */ + private int yycolumn; + + /** + * 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; + + /** denotes if the user-EOF-code has already been executed */ + private boolean zzEOFDone; + + /* user code: */ + /** + * Create an empty lexer, yyrset will be called later to reset and assign + * the reader + */ + public ScalaLexer() { + super(); + } + + @Override + public int yychar() { + return yychar; + } + + private static final byte PARAN = 1; + private static final byte BRACKET = 2; + private static final byte CURLY = 3; + + + + /** + * 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 ScalaLexer(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 ScalaLexer(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 < 1830) { + int count = packed.charAt(i++); + char value = packed.charAt(i++); + do map[j++] = value; while (--count > 0); + } + return map; + } + + + /** + * Refills the input buffer. + * + * @return false, iff there was new input. + * + * @exception java.io.IOException if any I/O-Error occurs + */ + private boolean zzRefill() throws java.io.IOException { + + /* first: make room (if you can) */ + if (zzStartRead > 0) { + System.arraycopy(zzBuffer, zzStartRead, + zzBuffer, 0, + zzEndRead-zzStartRead); + + /* translate stored positions */ + zzEndRead-= zzStartRead; + zzCurrentPos-= zzStartRead; + zzMarkedPos-= zzStartRead; + zzStartRead = 0; + } + + /* is the buffer big enough? */ + if (zzCurrentPos >= zzBuffer.length) { + /* if not: blow it up */ + char newBuffer[] = new char[zzCurrentPos*2]; + System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); + zzBuffer = newBuffer; + } + + /* finally: fill the buffer with new input */ + int numRead = zzReader.read(zzBuffer, zzEndRead, + zzBuffer.length-zzEndRead); + + if (numRead > 0) { + zzEndRead+= numRead; + return false; + } + // unlikely but not impossible: read 0 characters, but not at end of stream + if (numRead == 0) { + int c = zzReader.read(); + if (c == -1) { + return true; + } else { + zzBuffer[zzEndRead++] = (char) c; + return false; + } + } + + // numRead < 0 + return true; + } + + + /** + * 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(); + } + + + /** + * 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 ZZ_INITIAL. + * + * @param reader the new input stream + */ + public final void yyreset(java.io.Reader reader) { + zzReader = reader; + zzAtBOL = true; + zzAtEOF = false; + zzEOFDone = false; + zzEndRead = zzStartRead = 0; + zzCurrentPos = zzMarkedPos = 0; + yyline = yychar = yycolumn = 0; + zzLexicalState = YYINITIAL; + } + + + /** + * Returns the current lexical state. + */ + public final int yystate() { + return zzLexicalState; + } + + + /** + * Enters a new lexical state + * + * @param newState the new lexical state + */ + 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 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; + + yychar+= zzMarkedPosL-zzStartRead; + + zzAction = -1; + + zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; + + 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 8: + { return token(TokenType.OPERATOR, -PARAN); + } + case 28: break; + case 20: + { return token(TokenType.KEYWORD); + } + case 29: break; + case 4: + { return token(TokenType.NUMBER); + } + case 30: break; + case 18: + { yybegin(JDOC); + // length also includes the trailing quote + int start = tokenStart; + tokenStart = yychar; + int len = tokenLength; + tokenLength = 1; + return token(TokenType.COMMENT2, start, len); + } + case 31: break; + case 22: + { yybegin(YYINITIAL); + return token(TokenType.COMMENT, tokenStart, tokenLength + 2); + } + case 32: break; + case 2: + { return token(TokenType.OPERATOR); + } + case 33: break; + case 9: + { return token(TokenType.OPERATOR, CURLY); + } + case 34: break; + case 10: + { return token(TokenType.OPERATOR, -CURLY); + } + case 35: break; + case 17: + { yybegin(JDOC_TAG); + int start = tokenStart; + tokenStart = yychar; + int len = tokenLength; + tokenLength = 1; + return token(TokenType.COMMENT, start, len); + } + case 36: break; + case 13: + { tokenLength += yylength(); + } + case 37: break; + case 14: + { yybegin(YYINITIAL); + } + case 38: break; + case 6: + { yybegin(CHARLITERAL); + tokenStart = yychar; + tokenLength = 1; + } + case 39: break; + case 23: + { yybegin(JDOC); + tokenStart = yychar; + tokenLength = 3; + } + case 40: break; + case 15: + { yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + case 41: break; + case 24: + { return token(TokenType.TYPE); + } + case 42: break; + case 27: + { return token(TokenType.WARNING); + } + case 43: break; + case 12: + { return token(TokenType.OPERATOR, -BRACKET); + } + case 44: break; + case 7: + { return token(TokenType.OPERATOR, PARAN); + } + case 45: break; + case 26: + { return token(TokenType.KEYWORD2); + } + case 46: break; + case 3: + { return token(TokenType.IDENTIFIER); + } + case 47: break; + case 21: + { tokenLength += 2; + } + case 48: break; + case 25: + { return token(TokenType.ERROR); + } + case 49: break; + case 16: + { tokenLength ++; + } + case 50: break; + case 11: + { return token(TokenType.OPERATOR, BRACKET); + } + case 51: break; + case 19: + { return token(TokenType.COMMENT); + } + case 52: break; + case 5: + { yybegin(STRING); + tokenStart = yychar; + tokenLength = 1; + } + case 53: break; + case 1: + { + } + case 54: break; + default: + if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { + zzAtEOF = true; + { + return null; + } + } + else { + zzScanError(ZZ_NO_MATCH); + } + } + } + } + + +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/SqlLexer.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/SqlLexer.java new file mode 100644 index 000000000..247543305 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/SqlLexer.java @@ -0,0 +1,1336 @@ +/* The following code was generated by JFlex 1.4.3 on 21.7.10 18:14 */ + +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.lexers; + + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + + +/** + * This class is a scanner generated by + * JFlex 1.4.3 + * on 21.7.10 18:14 from the specification file + * D:/Dokumenty/Programovani/JavaSE/JPSWFDec/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/sql.flex + */ +public final class SqlLexer extends DefaultJFlexLexer { + + /** This character denotes the end of file */ + public static final int YYEOF = -1; + + /** initial size of the lookahead buffer */ + private static final int ZZ_BUFFERSIZE = 16384; + + /** lexical states */ + public static final int YYINITIAL = 0; + public static final int DQ_STRING = 2; + public static final int SQ_STRING = 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, 0, 1, 1, 2, 2 + }; + + /** + * Translates characters to character classes + */ + private static final String ZZ_CMAP_PACKED = + "\11\10\1\3\1\2\1\0\1\3\1\1\16\10\4\0\1\27\1\56"+ + "\1\17\1\0\1\7\2\0\1\20\1\56\1\56\1\5\1\16\1\56"+ + "\1\6\1\14\1\4\1\11\1\12\1\55\1\12\1\51\3\12\1\51"+ + "\1\12\1\56\1\56\1\56\1\56\1\56\1\56\1\56\1\22\1\43"+ + "\1\33\1\23\1\15\1\13\1\44\1\45\1\42\1\52\1\47\1\24"+ + "\1\41\1\34\1\25\1\46\1\54\1\30\1\32\1\35\1\40\1\31"+ + "\1\26\1\50\1\36\1\37\1\56\1\21\1\56\1\0\1\53\1\0"+ + "\1\22\1\43\1\33\1\23\1\15\1\13\1\44\1\45\1\42\1\52"+ + "\1\47\1\24\1\41\1\34\1\25\1\46\1\54\1\30\1\32\1\35"+ + "\1\40\1\31\1\26\1\50\1\36\1\37\1\56\1\0\1\56\1\56"+ + "\41\10\2\0\4\7\4\0\1\7\2\0\1\10\7\0\1\7\4\0"+ + "\1\7\5\0\27\7\1\0\37\7\1\0\u013f\7\31\0\162\7\4\0"+ + "\14\7\16\0\5\7\11\0\1\7\21\0\130\10\5\0\23\10\12\0"+ + "\1\7\13\0\1\7\1\0\3\7\1\0\1\7\1\0\24\7\1\0"+ + "\54\7\1\0\46\7\1\0\5\7\4\0\202\7\1\0\4\10\3\0"+ + "\105\7\1\0\46\7\2\0\2\7\6\0\20\7\41\0\46\7\2\0"+ + "\1\7\7\0\47\7\11\0\21\10\1\0\27\10\1\0\3\10\1\0"+ + "\1\10\1\0\2\10\1\0\1\10\13\0\33\7\5\0\3\7\15\0"+ + "\4\10\14\0\6\10\13\0\32\7\5\0\13\7\16\10\7\0\12\10"+ + "\4\0\2\7\1\10\143\7\1\0\1\7\10\10\1\0\6\10\2\7"+ + "\2\10\1\0\4\10\2\7\12\10\3\7\2\0\1\7\17\0\1\10"+ + "\1\7\1\10\36\7\33\10\2\0\3\7\60\0\46\7\13\10\1\7"+ + "\u014f\0\3\10\66\7\2\0\1\10\1\7\20\10\2\0\1\7\4\10"+ + "\3\0\12\7\2\10\2\0\12\10\21\0\3\10\1\0\10\7\2\0"+ + "\2\7\2\0\26\7\1\0\7\7\1\0\1\7\3\0\4\7\2\0"+ + "\1\10\1\7\7\10\2\0\2\10\2\0\3\10\11\0\1\10\4\0"+ + "\2\7\1\0\3\7\2\10\2\0\12\10\4\7\15\0\3\10\1\0"+ + "\6\7\4\0\2\7\2\0\26\7\1\0\7\7\1\0\2\7\1\0"+ + "\2\7\1\0\2\7\2\0\1\10\1\0\5\10\4\0\2\10\2\0"+ + "\3\10\13\0\4\7\1\0\1\7\7\0\14\10\3\7\14\0\3\10"+ + "\1\0\11\7\1\0\3\7\1\0\26\7\1\0\7\7\1\0\2\7"+ + "\1\0\5\7\2\0\1\10\1\7\10\10\1\0\3\10\1\0\3\10"+ + "\2\0\1\7\17\0\2\7\2\10\2\0\12\10\1\0\1\7\17\0"+ + "\3\10\1\0\10\7\2\0\2\7\2\0\26\7\1\0\7\7\1\0"+ + "\2\7\1\0\5\7\2\0\1\10\1\7\6\10\3\0\2\10\2\0"+ + "\3\10\10\0\2\10\4\0\2\7\1\0\3\7\4\0\12\10\1\0"+ + "\1\7\20\0\1\10\1\7\1\0\6\7\3\0\3\7\1\0\4\7"+ + "\3\0\2\7\1\0\1\7\1\0\2\7\3\0\2\7\3\0\3\7"+ + "\3\0\10\7\1\0\3\7\4\0\5\10\3\0\3\10\1\0\4\10"+ + "\11\0\1\10\17\0\11\10\11\0\1\7\7\0\3\10\1\0\10\7"+ + "\1\0\3\7\1\0\27\7\1\0\12\7\1\0\5\7\4\0\7\10"+ + "\1\0\3\10\1\0\4\10\7\0\2\10\11\0\2\7\4\0\12\10"+ + "\22\0\2\10\1\0\10\7\1\0\3\7\1\0\27\7\1\0\12\7"+ + "\1\0\5\7\2\0\1\10\1\7\7\10\1\0\3\10\1\0\4\10"+ + "\7\0\2\10\7\0\1\7\1\0\2\7\4\0\12\10\22\0\2\10"+ + "\1\0\10\7\1\0\3\7\1\0\27\7\1\0\20\7\4\0\6\10"+ + "\2\0\3\10\1\0\4\10\11\0\1\10\10\0\2\7\4\0\12\10"+ + "\22\0\2\10\1\0\22\7\3\0\30\7\1\0\11\7\1\0\1\7"+ + "\2\0\7\7\3\0\1\10\4\0\6\10\1\0\1\10\1\0\10\10"+ + "\22\0\2\10\15\0\60\7\1\10\2\7\7\10\4\0\10\7\10\10"+ + "\1\0\12\10\47\0\2\7\1\0\1\7\2\0\2\7\1\0\1\7"+ + "\2\0\1\7\6\0\4\7\1\0\7\7\1\0\3\7\1\0\1\7"+ + "\1\0\1\7\2\0\2\7\1\0\4\7\1\10\2\7\6\10\1\0"+ + "\2\10\1\7\2\0\5\7\1\0\1\7\1\0\6\10\2\0\12\10"+ + "\2\0\2\7\42\0\1\7\27\0\2\10\6\0\12\10\13\0\1\10"+ + "\1\0\1\10\1\0\1\10\4\0\2\10\10\7\1\0\42\7\6\0"+ + "\24\10\1\0\2\10\4\7\4\0\10\10\1\0\44\10\11\0\1\10"+ + "\71\0\42\7\1\0\5\7\1\0\2\7\1\0\7\10\3\0\4\10"+ + "\6\0\12\10\6\0\6\7\4\10\106\0\46\7\12\0\51\7\7\0"+ + "\132\7\5\0\104\7\5\0\122\7\6\0\7\7\1\0\77\7\1\0"+ + "\1\7\1\0\4\7\2\0\7\7\1\0\1\7\1\0\4\7\2\0"+ + "\47\7\1\0\1\7\1\0\4\7\2\0\37\7\1\0\1\7\1\0"+ + "\4\7\2\0\7\7\1\0\1\7\1\0\4\7\2\0\7\7\1\0"+ + "\7\7\1\0\27\7\1\0\37\7\1\0\1\7\1\0\4\7\2\0"+ + "\7\7\1\0\47\7\1\0\23\7\16\0\11\10\56\0\125\7\14\0"+ + "\u026c\7\2\0\10\7\12\0\32\7\5\0\113\7\3\0\3\7\17\0"+ + "\15\7\1\0\4\7\3\10\13\0\22\7\3\10\13\0\22\7\2\10"+ + "\14\0\15\7\1\0\3\7\1\0\2\10\14\0\64\7\40\10\3\0"+ + "\1\7\3\0\2\7\1\10\2\0\12\10\41\0\3\10\2\0\12\10"+ + "\6\0\130\7\10\0\51\7\1\10\126\0\35\7\3\0\14\10\4\0"+ + "\14\10\12\0\12\10\36\7\2\0\5\7\u038b\0\154\7\224\0\234\7"+ + "\4\0\132\7\6\0\26\7\2\0\6\7\2\0\46\7\2\0\6\7"+ + "\2\0\10\7\1\0\1\7\1\0\1\7\1\0\1\7\1\0\37\7"+ + "\2\0\65\7\1\0\7\7\1\0\1\7\3\0\3\7\1\0\7\7"+ + "\3\0\4\7\2\0\6\7\4\0\15\7\5\0\3\7\1\0\7\7"+ + "\17\0\4\10\32\0\5\10\20\0\2\7\23\0\1\7\13\0\4\10"+ + "\6\0\6\10\1\0\1\7\15\0\1\7\40\0\22\7\36\0\15\10"+ + "\4\0\1\10\3\0\6\10\27\0\1\7\4\0\1\7\2\0\12\7"+ + "\1\0\1\7\3\0\5\7\6\0\1\7\1\0\1\7\1\0\1\7"+ + "\1\0\4\7\1\0\3\7\1\0\7\7\3\0\3\7\5\0\5\7"+ + "\26\0\44\7\u0e81\0\3\7\31\0\11\7\6\10\1\0\5\7\2\0"+ + "\5\7\4\0\126\7\2\0\2\10\2\0\3\7\1\0\137\7\5\0"+ + "\50\7\4\0\136\7\21\0\30\7\70\0\20\7\u0200\0\u19b6\7\112\0"+ + "\u51a6\7\132\0\u048d\7\u0773\0\u2ba4\7\u215c\0\u012e\7\2\0\73\7\225\0"+ + "\7\7\14\0\5\7\5\0\1\7\1\10\12\7\1\0\15\7\1\0"+ + "\5\7\1\0\1\7\1\0\2\7\1\0\2\7\1\0\154\7\41\0"+ + "\u016b\7\22\0\100\7\2\0\66\7\50\0\15\7\3\0\20\10\20\0"+ + "\4\10\17\0\2\7\30\0\3\7\31\0\1\7\6\0\5\7\1\0"+ + "\207\7\2\0\1\10\4\0\1\7\13\0\12\10\7\0\32\7\4\0"+ + "\1\7\1\0\32\7\12\0\132\7\3\0\6\7\2\0\6\7\2\0"+ + "\6\7\2\0\3\7\3\0\2\7\3\0\2\7\22\0\3\10\4\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\1\1\3\2\4\1\3\1\5"+ + "\1\3\1\6\1\7\26\3\1\5\1\10\2\11\1\12"+ + "\1\1\1\10\1\12\1\0\1\13\1\0\1\4\2\0"+ + "\15\3\1\14\13\3\2\14\40\3\1\14\13\3\2\14"+ + "\20\3\1\15\2\0\2\13\2\0\2\3\1\14\12\3"+ + "\1\14\6\3\1\14\16\3\1\14\37\3\1\14\25\3"+ + "\1\14\7\3\1\14\1\0\4\3\1\14\22\3\1\14"+ + "\1\0\1\13\4\3\1\14\12\3\1\14\51\3\1\14"+ + "\17\3\1\0\16\3\1\14\43\3\1\14\5\3\1\0"+ + "\13\3\1\0\5\3\1\14\12\3\1\0\5\3\1\0"+ + "\5\3\1\14\2\3\1\0\1\3\1\0\1\14\1\3"+ + "\1\0\1\3\1\14\1\3\1\0\1\3\3\0\1\3"+ + "\16\0\1\14\10\0"; + + private static int [] zzUnpackAction() { + int [] result = new int[484]; + 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\u01d6\0\u0205\0\u0234\0\215\0\215\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\u0524\0\u0553"+ + "\0\u0582\0\u05b1\0\u05e0\0\u060f\0\u063e\0\215\0\u066d\0\u069c"+ + "\0\215\0\u06cb\0\u06fa\0\u0729\0\u0758\0\u0787\0\u07b6\0\u0178"+ + "\0\215\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\u0149\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\u1028"+ + "\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\215\0\u186b\0\u189a\0\u18c9"+ + "\0\215\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\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\u180d\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\u186b"+ + "\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\u3339\0\u3368\0\u3397\0\u33c6\0\u2f8d\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\u0cda\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\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\u0aa6\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\215\0\u54a3\0\u54d2\0\u5501\0\u5530"+ + "\0\u555f\0\u558e\0\u55bd\0\u55ec"; + + private static int [] zzUnpackRowMap() { + int [] result = new int[484]; + 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\3\5\1\6\1\4\1\7\1\10\1\4\1\11"+ + "\1\12\1\13\1\14\1\15\1\4\1\16\1\17\1\4"+ + "\1\20\1\21\1\22\1\23\1\24\1\5\1\25\1\26"+ + "\1\27\1\30\1\31\1\32\1\10\1\33\1\34\1\35"+ + "\1\36\1\37\1\40\1\41\1\42\1\43\1\44\1\12"+ + "\1\45\2\10\1\12\1\46\1\47\1\50\1\51\14\47"+ + "\1\52\1\47\1\53\35\47\1\54\1\50\1\51\15\54"+ + "\1\55\1\53\35\54\60\0\3\5\23\0\1\5\34\0"+ + "\1\56\57\0\1\57\57\0\5\10\1\0\1\10\4\0"+ + "\5\10\1\0\26\10\12\0\2\60\1\61\1\62\1\63"+ + "\33\0\1\60\3\0\1\60\12\0\2\12\1\61\1\62"+ + "\1\63\33\0\1\12\3\0\1\12\10\0\5\10\1\0"+ + "\1\64\4\0\1\65\1\10\1\66\1\67\1\10\1\0"+ + "\1\70\7\10\1\71\15\10\12\0\2\62\36\0\1\62"+ + "\3\0\1\62\10\0\5\10\1\0\1\10\4\0\1\72"+ + "\1\10\1\73\2\10\1\0\2\10\1\74\1\10\1\75"+ + "\13\10\1\76\5\10\10\0\5\10\1\0\1\10\4\0"+ + "\1\10\1\77\1\100\2\10\1\0\2\10\1\101\1\10"+ + "\1\102\3\10\1\103\15\10\10\0\5\10\1\0\1\104"+ + "\4\0\1\105\2\10\1\106\1\10\1\0\1\107\7\10"+ + "\1\110\1\10\1\111\13\10\10\0\5\10\1\0\1\112"+ + "\4\0\3\10\1\113\1\10\1\0\12\10\1\114\13\10"+ + "\10\0\5\10\1\0\1\10\4\0\5\10\1\0\1\115"+ + "\3\10\1\116\1\117\2\10\1\120\5\10\1\121\7\10"+ + "\10\0\5\10\1\0\1\10\4\0\5\10\1\0\1\122"+ + "\11\10\1\123\2\10\1\124\10\10\10\0\5\10\1\0"+ + "\1\125\4\0\1\126\1\10\1\127\1\130\1\10\1\0"+ + "\12\10\1\131\13\10\10\0\5\10\1\0\1\10\4\0"+ + "\1\132\4\10\1\0\26\10\10\0\5\10\1\0\1\133"+ + "\4\0\3\10\1\134\1\10\1\0\3\10\1\135\1\10"+ + "\1\136\1\137\2\10\1\140\1\141\2\10\1\142\1\143"+ + "\5\10\1\144\1\10\10\0\5\10\1\0\1\10\4\0"+ + "\1\145\2\10\1\146\1\10\1\0\1\147\7\10\1\150"+ + "\4\10\1\151\10\10\10\0\5\10\1\0\1\10\4\0"+ + "\1\152\2\10\1\153\1\10\1\0\10\10\1\154\15\10"+ + "\10\0\5\10\1\0\1\155\4\0\1\156\2\10\1\157"+ + "\1\10\1\0\1\160\5\10\1\161\6\10\1\162\10\10"+ + "\10\0\5\10\1\0\1\163\4\0\5\10\1\0\26\10"+ + "\10\0\5\10\1\0\1\10\4\0\5\10\1\0\2\10"+ + "\1\164\1\10\1\165\11\10\1\166\7\10\10\0\5\10"+ + "\1\0\1\167\4\0\1\170\2\10\1\171\1\10\1\0"+ + "\12\10\1\172\13\10\10\0\4\10\1\116\1\0\1\10"+ + "\4\0\5\10\1\0\2\10\1\173\1\10\1\174\1\175"+ + "\6\10\1\176\11\10\10\0\5\10\1\0\1\177\4\0"+ + "\2\10\1\200\1\123\1\10\1\0\6\10\1\116\1\10"+ + "\1\201\1\10\1\202\13\10\10\0\5\10\1\0\1\10"+ + "\4\0\2\10\1\203\2\10\1\0\1\204\25\10\10\0"+ + "\5\10\1\0\1\10\4\0\1\205\4\10\1\0\26\10"+ + "\10\0\5\10\1\0\1\10\4\0\1\206\1\10\1\207"+ + "\2\10\1\0\1\210\7\10\1\167\15\10\10\0\5\10"+ + "\1\0\1\211\4\0\5\10\1\0\12\10\1\212\13\10"+ + "\10\0\5\10\1\0\1\10\4\0\3\10\1\213\1\10"+ + "\1\0\26\10\10\0\5\10\1\0\1\10\4\0\3\10"+ + "\1\214\1\10\1\0\26\10\1\0\1\47\2\0\14\47"+ + "\1\0\1\47\1\0\35\47\2\0\1\51\73\0\1\215"+ + "\37\0\2\215\1\0\54\215\1\54\2\0\15\54\2\0"+ + "\35\54\20\0\1\215\36\0\5\216\1\217\51\216\1\57"+ + "\1\220\1\221\54\57\11\0\2\62\1\61\1\0\1\63"+ + "\33\0\1\62\3\0\1\62\7\0\1\222\2\0\2\223"+ + "\3\0\1\222\32\0\1\223\3\0\1\223\10\0\5\10"+ + "\1\0\1\10\4\0\5\10\1\0\5\10\1\72\20\10"+ + "\10\0\5\10\1\0\1\10\4\0\2\10\1\224\2\10"+ + "\1\0\26\10\10\0\5\10\1\0\1\10\4\0\3\10"+ + "\1\225\1\10\1\0\26\10\10\0\5\10\1\0\1\10"+ + "\4\0\5\10\1\0\1\226\25\10\10\0\5\10\1\0"+ + "\1\10\4\0\3\10\1\227\1\10\1\0\26\10\10\0"+ + "\5\10\1\0\1\10\4\0\2\10\1\230\2\10\1\0"+ + "\4\10\1\231\21\10\10\0\5\10\1\0\1\10\4\0"+ + "\5\10\1\0\3\10\1\232\22\10\10\0\5\10\1\0"+ + "\1\10\4\0\5\10\1\0\2\10\1\233\23\10\10\0"+ + "\5\10\1\0\1\10\4\0\5\10\1\0\3\10\1\234"+ + "\22\10\10\0\5\10\1\0\1\10\4\0\1\10\1\116"+ + "\3\10\1\0\3\10\1\235\22\10\10\0\5\10\1\0"+ + "\1\10\4\0\5\10\1\0\3\10\1\236\6\10\1\237"+ + "\3\10\1\240\7\10\10\0\5\10\1\0\1\10\4\0"+ + "\1\10\1\116\3\10\1\0\26\10\10\0\5\10\1\0"+ + "\1\10\4\0\2\10\1\241\2\10\1\0\5\10\1\242"+ + "\20\10\10\0\5\10\1\0\1\10\4\0\5\10\1\0"+ + "\3\10\1\116\22\10\10\0\5\10\1\0\1\10\4\0"+ + "\1\243\1\116\3\10\1\0\26\10\10\0\5\10\1\0"+ + "\1\10\4\0\5\10\1\0\5\10\1\244\20\10\10\0"+ + "\4\10\1\245\1\0\1\10\4\0\2\10\1\246\2\10"+ + "\1\0\2\10\1\247\1\250\1\10\1\251\20\10\10\0"+ + "\5\10\1\0\1\10\4\0\5\10\1\0\5\10\1\252"+ + "\20\10\10\0\5\10\1\0\1\10\4\0\5\10\1\0"+ + "\10\10\1\253\15\10\10\0\5\10\1\0\1\10\4\0"+ + "\3\10\1\254\1\10\1\0\26\10\10\0\5\10\1\0"+ + "\1\10\4\0\1\255\4\10\1\0\26\10\10\0\5\10"+ + "\1\0\1\10\4\0\5\10\1\0\1\10\1\116\1\256"+ + "\23\10\10\0\4\10\1\257\1\0\1\10\4\0\1\260"+ + "\4\10\1\0\26\10\10\0\5\10\1\0\1\10\4\0"+ + "\1\77\2\10\1\254\1\10\1\0\3\10\1\261\1\262"+ + "\21\10\10\0\5\10\1\0\1\10\4\0\5\10\1\0"+ + "\4\10\1\263\4\10\1\264\5\10\1\265\6\10\10\0"+ + "\5\10\1\0\1\10\4\0\1\10\1\242\3\10\1\0"+ + "\26\10\10\0\5\10\1\0\1\10\4\0\5\10\1\0"+ + "\15\10\1\266\10\10\10\0\5\10\1\0\1\10\4\0"+ + "\5\10\1\0\5\10\1\267\20\10\10\0\5\10\1\0"+ + "\1\270\4\0\5\10\1\0\5\10\1\271\20\10\10\0"+ + "\5\10\1\0\1\10\4\0\5\10\1\0\12\10\1\272"+ + "\13\10\10\0\5\10\1\0\1\10\4\0\5\10\1\0"+ + "\5\10\1\232\20\10\10\0\5\10\1\0\1\273\4\0"+ + "\5\10\1\0\12\10\1\274\13\10\10\0\4\10\1\275"+ + "\1\0\1\10\4\0\1\276\1\10\1\277\2\10\1\0"+ + "\1\10\1\300\1\301\1\10\1\302\1\303\6\10\1\304"+ + "\1\10\1\305\5\10\1\306\1\10\10\0\5\10\1\0"+ + "\1\10\4\0\5\10\1\0\12\10\1\224\13\10\10\0"+ + "\5\10\1\0\1\10\4\0\5\10\1\0\12\10\1\307"+ + "\13\10\10\0\5\10\1\0\1\10\4\0\2\10\1\310"+ + "\1\10\1\311\1\0\26\10\10\0\5\10\1\0\1\10"+ + "\4\0\5\10\1\0\14\10\1\312\11\10\10\0\5\10"+ + "\1\0\1\10\4\0\2\10\1\313\2\10\1\0\1\314"+ + "\25\10\10\0\5\10\1\0\1\10\4\0\2\10\1\315"+ + "\2\10\1\0\4\10\1\316\1\116\10\10\1\317\5\10"+ + "\1\320\1\10\10\0\5\10\1\0\1\10\4\0\5\10"+ + "\1\0\4\10\1\302\21\10\10\0\5\10\1\0\1\10"+ + "\4\0\5\10\1\0\15\10\1\321\10\10\10\0\5\10"+ + "\1\0\1\10\4\0\1\322\4\10\1\0\26\10\10\0"+ + "\5\10\1\0\1\10\4\0\5\10\1\0\2\10\1\166"+ + "\23\10\10\0\5\10\1\0\1\10\4\0\1\323\4\10"+ + "\1\0\26\10\10\0\5\10\1\0\1\10\4\0\5\10"+ + "\1\0\7\10\1\265\16\10\10\0\5\10\1\0\1\10"+ + "\4\0\3\10\1\324\1\10\1\0\26\10\10\0\5\10"+ + "\1\0\1\325\4\0\1\326\4\10\1\0\26\10\10\0"+ + "\5\10\1\0\1\10\4\0\2\10\1\327\2\10\1\0"+ + "\26\10\10\0\5\10\1\0\1\10\4\0\2\10\1\255"+ + "\2\10\1\0\2\10\1\330\1\331\22\10\10\0\5\10"+ + "\1\0\1\10\4\0\2\10\1\332\2\10\1\0\4\10"+ + "\1\333\4\10\1\334\14\10\10\0\5\10\1\0\1\335"+ + "\4\0\3\10\1\336\1\10\1\0\26\10\10\0\5\10"+ + "\1\0\1\10\4\0\5\10\1\0\1\337\25\10\10\0"+ + "\5\10\1\0\1\340\4\0\1\341\4\10\1\0\26\10"+ + "\10\0\5\10\1\0\1\10\4\0\5\10\1\0\5\10"+ + "\1\342\20\10\10\0\5\10\1\0\1\10\4\0\3\10"+ + "\1\343\1\10\1\0\3\10\1\344\1\10\1\116\20\10"+ + "\10\0\5\10\1\0\1\10\4\0\2\10\1\255\2\10"+ + "\1\0\11\10\1\345\14\10\10\0\5\10\1\0\1\10"+ + "\4\0\5\10\1\0\1\346\25\10\10\0\5\10\1\0"+ + "\1\10\4\0\5\10\1\0\13\10\1\347\12\10\10\0"+ + "\5\10\1\0\1\10\4\0\5\10\1\0\23\10\1\350"+ + "\2\10\10\0\5\10\1\0\1\10\4\0\1\351\4\10"+ + "\1\0\10\10\1\352\1\10\1\353\13\10\10\0\5\10"+ + "\1\0\1\10\4\0\5\10\1\0\16\10\1\265\7\10"+ + "\10\0\5\10\1\0\1\270\4\0\5\10\1\0\26\10"+ + "\10\0\5\10\1\0\1\10\4\0\5\10\1\0\1\354"+ + "\25\10\10\0\5\10\1\0\1\355\4\0\1\356\4\10"+ + "\1\0\12\10\1\357\13\10\10\0\5\10\1\0\1\10"+ + "\4\0\1\10\1\360\1\361\2\10\1\0\2\10\1\362"+ + "\7\10\1\363\13\10\10\0\5\10\1\0\1\10\4\0"+ + "\1\10\1\335\3\10\1\0\26\10\10\0\5\10\1\0"+ + "\1\10\4\0\5\10\1\0\1\356\25\10\10\0\5\10"+ + "\1\0\1\10\4\0\5\10\1\0\5\10\1\72\12\10"+ + "\1\364\5\10\10\0\5\10\1\0\1\10\4\0\1\10"+ + "\1\365\3\10\1\0\26\10\10\0\5\10\1\0\1\10"+ + "\4\0\5\10\1\0\4\10\1\364\21\10\10\0\5\10"+ + "\1\0\1\10\4\0\5\10\1\366\26\10\10\0\4\10"+ + "\1\367\1\0\1\10\4\0\1\10\1\370\1\10\1\371"+ + "\1\10\1\0\2\10\1\372\1\10\1\242\1\373\20\10"+ + "\10\0\5\10\1\0\1\374\4\0\5\10\1\0\26\10"+ + "\10\0\5\10\1\0\1\10\4\0\5\10\1\0\4\10"+ + "\1\375\21\10\10\0\4\10\1\375\1\0\1\10\4\0"+ + "\5\10\1\0\5\10\1\376\6\10\1\214\11\10\10\0"+ + "\5\10\1\0\1\10\4\0\3\10\1\377\1\10\1\0"+ + "\26\10\10\0\4\10\1\u0100\1\0\1\10\4\0\5\10"+ + "\1\0\26\10\10\0\5\10\1\0\1\10\4\0\5\10"+ + "\1\0\4\10\1\u0101\7\10\1\u0102\11\10\10\0\5\10"+ + "\1\0\1\10\4\0\3\10\1\u0103\1\10\1\0\26\10"+ + "\10\0\5\10\1\0\1\10\4\0\1\u0104\2\10\1\u0105"+ + "\1\10\1\0\26\10\10\0\5\10\1\0\1\10\4\0"+ + "\5\10\1\0\1\10\1\u0106\24\10\10\0\5\10\1\0"+ + "\1\10\4\0\5\10\1\0\3\10\1\u0107\10\10\1\u0108"+ + "\11\10\10\0\5\10\1\0\1\10\4\0\5\10\1\0"+ + "\2\10\1\u0109\23\10\10\0\5\10\1\0\1\u010a\4\0"+ + "\1\u010b\2\10\1\u010c\1\10\1\0\12\10\1\u010d\13\10"+ + "\10\0\5\10\1\0\1\10\4\0\5\10\1\0\6\10"+ + "\1\u010e\17\10\10\0\5\10\1\0\1\10\4\0\2\10"+ + "\1\255\2\10\1\0\26\10\10\0\5\10\1\0\1\10"+ + "\4\0\5\10\1\0\1\116\25\10\10\0\5\10\1\0"+ + "\1\10\4\0\5\10\1\0\12\10\1\270\13\10\1\0"+ + "\5\216\1\u010f\55\216\1\u0110\1\u010f\51\216\2\0\1\221"+ + "\65\0\2\223\36\0\1\223\3\0\1\223\12\0\2\223"+ + "\1\61\35\0\1\223\3\0\1\223\10\0\5\10\1\0"+ + "\1\10\4\0\5\10\1\0\2\10\1\265\23\10\10\0"+ + "\5\10\1\0\1\10\4\0\1\u0111\4\10\1\0\26\10"+ + "\10\0\5\10\1\0\1\u0112\4\0\5\10\1\0\3\10"+ + "\1\265\22\10\10\0\5\10\1\0\1\10\4\0\5\10"+ + "\1\0\11\10\1\116\14\10\10\0\5\10\1\0\1\10"+ + "\4\0\2\10\1\u0113\2\10\1\0\26\10\10\0\5\10"+ + "\1\0\1\10\4\0\5\10\1\0\3\10\1\u0114\22\10"+ + "\10\0\5\10\1\0\1\10\4\0\5\10\1\0\15\10"+ + "\1\116\10\10\10\0\5\10\1\0\1\u0115\4\0\5\10"+ + "\1\0\26\10\10\0\5\10\1\0\1\10\4\0\1\u0116"+ + "\4\10\1\0\26\10\10\0\5\10\1\0\1\10\4\0"+ + "\2\10\1\u0117\2\10\1\0\26\10\10\0\5\10\1\0"+ + "\1\u0118\4\0\5\10\1\0\26\10\10\0\5\10\1\0"+ + "\1\10\4\0\5\10\1\0\2\10\1\u0119\2\10\1\116"+ + "\20\10\10\0\5\10\1\0\1\10\4\0\2\10\1\u011a"+ + "\2\10\1\0\26\10\10\0\5\10\1\0\1\10\4\0"+ + "\3\10\1\u011b\1\10\1\0\26\10\10\0\5\10\1\0"+ + "\1\213\4\0\5\10\1\0\26\10\10\0\5\10\1\0"+ + "\1\10\4\0\2\10\1\u011c\2\10\1\0\26\10\10\0"+ + "\5\10\1\0\1\10\4\0\3\10\1\u011d\1\10\1\0"+ + "\26\10\10\0\5\10\1\0\1\10\4\0\1\u011e\4\10"+ + "\1\0\26\10\10\0\5\10\1\0\1\272\4\0\1\u011f"+ + "\4\10\1\0\26\10\10\0\5\10\1\0\1\10\4\0"+ + "\5\10\1\0\3\10\1\u0120\22\10\10\0\5\10\1\0"+ + "\1\10\4\0\2\10\1\u0121\1\u0122\1\10\1\0\12\10"+ + "\1\u0123\13\10\10\0\5\10\1\0\1\u0124\4\0\5\10"+ + "\1\0\26\10\10\0\5\10\1\0\1\116\4\0\1\u0125"+ + "\4\10\1\0\26\10\10\0\5\10\1\0\1\10\4\0"+ + "\5\10\1\0\13\10\1\274\12\10\10\0\5\10\1\0"+ + "\1\10\4\0\5\10\1\0\16\10\1\116\7\10\10\0"+ + "\5\10\1\0\1\10\4\0\2\10\1\116\2\10\1\0"+ + "\26\10\10\0\5\10\1\0\1\10\4\0\5\10\1\0"+ + "\5\10\1\u0126\20\10\10\0\5\10\1\0\1\10\4\0"+ + "\5\10\1\0\5\10\1\116\20\10\10\0\5\10\1\0"+ + "\1\10\4\0\1\10\1\u0106\3\10\1\0\1\10\1\265"+ + "\24\10\10\0\5\10\1\0\1\10\4\0\5\10\1\0"+ + "\17\10\1\116\6\10\10\0\5\10\1\0\1\10\4\0"+ + "\5\10\1\0\14\10\1\116\11\10\10\0\5\10\1\0"+ + "\1\u0127\4\0\5\10\1\0\26\10\10\0\5\10\1\0"+ + "\1\10\4\0\5\10\1\0\12\10\1\257\13\10\10\0"+ + "\5\10\1\0\1\116\4\0\5\10\1\0\26\10\10\0"+ + "\5\10\1\0\1\u0128\4\0\5\10\1\0\26\10\10\0"+ + "\4\10\1\367\1\0\1\213\4\0\5\10\1\0\26\10"+ + "\10\0\5\10\1\0\1\10\4\0\5\10\1\0\4\10"+ + "\1\116\21\10\10\0\5\10\1\0\1\10\4\0\5\10"+ + "\1\0\12\10\1\u0129\13\10\10\0\5\10\1\0\1\10"+ + "\4\0\5\10\1\0\5\10\1\265\20\10\10\0\5\10"+ + "\1\0\1\10\4\0\5\10\1\0\1\265\3\10\1\116"+ + "\21\10\10\0\5\10\1\0\1\10\4\0\2\10\1\265"+ + "\2\10\1\0\26\10\10\0\5\10\1\0\1\u012a\4\0"+ + "\5\10\1\0\26\10\10\0\5\10\1\0\1\10\4\0"+ + "\1\10\1\u010e\1\116\2\10\1\0\26\10\10\0\5\10"+ + "\1\0\1\u012b\4\0\5\10\1\0\26\10\10\0\5\10"+ + "\1\0\1\10\4\0\3\10\1\307\1\10\1\0\26\10"+ + "\10\0\5\10\1\0\1\10\4\0\5\10\1\0\5\10"+ + "\1\u012c\20\10\10\0\5\10\1\0\1\10\4\0\1\u012d"+ + "\4\10\1\0\26\10\10\0\5\10\1\0\1\10\4\0"+ + "\5\10\1\0\10\10\1\u012e\15\10\10\0\5\10\1\0"+ + "\1\u012f\4\0\5\10\1\0\26\10\10\0\5\10\1\0"+ + "\1\u0130\4\0\2\10\1\u0131\2\10\1\0\26\10\10\0"+ + "\5\10\1\0\1\10\4\0\5\10\1\0\10\10\1\u0132"+ + "\15\10\10\0\5\10\1\0\1\10\4\0\5\10\1\0"+ + "\17\10\1\265\6\10\10\0\5\10\1\0\1\10\4\0"+ + "\2\10\1\u0133\2\10\1\0\26\10\10\0\5\10\1\0"+ + "\1\10\4\0\5\10\1\0\3\10\1\u0134\1\10\1\u0135"+ + "\20\10\10\0\5\10\1\0\1\10\4\0\5\10\1\0"+ + "\15\10\1\257\10\10\10\0\5\10\1\0\1\10\4\0"+ + "\5\10\1\0\10\10\1\263\15\10\10\0\5\10\1\0"+ + "\1\10\4\0\5\10\1\0\3\10\1\u0136\2\10\1\u0106"+ + "\4\10\1\u0137\12\10\10\0\5\10\1\0\1\u0138\4\0"+ + "\5\10\1\0\26\10\10\0\5\10\1\0\1\10\4\0"+ + "\5\10\1\0\2\10\1\u0139\23\10\10\0\5\10\1\0"+ + "\1\10\4\0\1\u013a\4\10\1\0\26\10\10\0\5\10"+ + "\1\0\1\10\4\0\5\10\1\0\10\10\1\u013b\15\10"+ + "\10\0\5\10\1\0\1\u013c\4\0\5\10\1\0\26\10"+ + "\10\0\5\10\1\0\1\10\4\0\5\10\1\0\1\u013d"+ + "\25\10\10\0\5\10\1\0\1\10\4\0\2\10\1\u013e"+ + "\2\10\1\0\26\10\10\0\5\10\1\0\1\10\4\0"+ + "\4\10\1\116\1\0\26\10\10\0\5\10\1\0\1\10"+ + "\4\0\5\10\1\0\3\10\1\u013f\22\10\10\0\5\10"+ + "\1\0\1\10\4\0\5\10\1\0\5\10\1\u0140\20\10"+ + "\10\0\5\10\1\0\1\u0141\4\0\4\10\1\u0142\1\0"+ + "\2\10\1\u0143\23\10\10\0\5\10\1\0\1\116\4\0"+ + "\5\10\1\0\3\10\1\u0144\22\10\10\0\5\10\1\0"+ + "\1\10\4\0\5\10\1\0\15\10\1\265\10\10\10\0"+ + "\5\10\1\0\1\10\4\0\2\10\1\335\2\10\1\0"+ + "\10\10\1\u0145\15\10\10\0\5\10\1\0\1\10\4\0"+ + "\1\10\1\u0146\3\10\1\0\1\10\1\u0147\1\u0148\2\10"+ + "\1\u0149\20\10\10\0\5\10\1\0\1\10\4\0\5\10"+ + "\1\0\11\10\1\264\14\10\10\0\5\10\1\0\1\10"+ + "\4\0\1\272\4\10\1\0\26\10\10\0\5\10\1\0"+ + "\1\10\4\0\5\10\1\0\2\10\1\u0127\23\10\10\0"+ + "\5\10\1\0\1\10\4\0\5\10\1\0\2\10\1\44"+ + "\23\10\10\0\5\10\1\0\1\10\4\0\5\10\1\0"+ + "\3\10\1\261\22\10\10\0\5\10\1\0\1\10\4\0"+ + "\5\10\1\0\1\u014a\3\10\1\356\21\10\10\0\5\10"+ + "\1\0\1\10\4\0\5\10\1\0\10\10\1\u014b\15\10"+ + "\10\0\5\10\1\0\1\10\4\0\5\10\1\0\1\u014c"+ + "\25\10\10\0\5\10\1\0\1\10\4\0\5\10\1\0"+ + "\6\10\1\u014d\17\10\10\0\5\10\1\0\1\u014e\4\0"+ + "\5\10\1\0\13\10\1\242\12\10\10\0\5\10\1\0"+ + "\1\10\4\0\5\10\1\0\11\10\1\u014f\14\10\10\0"+ + "\5\10\1\0\1\10\4\0\2\10\1\u0150\2\10\1\0"+ + "\26\10\10\0\5\10\1\0\1\10\4\0\1\10\1\335"+ + "\3\10\1\0\3\10\1\u0151\22\10\10\0\5\10\1\0"+ + "\1\10\4\0\5\10\1\0\12\10\1\u0152\13\10\10\0"+ + "\5\10\1\0\1\116\4\0\5\10\1\0\4\10\1\u0153"+ + "\21\10\10\0\5\10\1\0\1\10\4\0\5\10\1\0"+ + "\14\10\1\u0154\11\10\10\0\5\10\1\0\1\10\4\0"+ + "\3\10\1\u0155\1\10\1\0\26\10\10\0\5\10\1\0"+ + "\1\10\4\0\5\10\1\0\14\10\1\265\11\10\10\0"+ + "\5\10\1\0\1\10\4\0\5\10\1\0\4\10\1\262"+ + "\21\10\10\0\5\10\1\0\1\10\4\0\3\10\1\116"+ + "\1\10\1\0\26\10\10\0\5\10\1\0\1\10\4\0"+ + "\3\10\1\340\1\10\1\0\26\10\10\0\5\10\1\0"+ + "\1\10\4\0\5\10\1\0\12\10\1\u0156\13\10\10\0"+ + "\5\10\1\0\1\10\4\0\3\10\1\270\1\10\1\0"+ + "\24\10\1\u0157\1\10\10\0\5\10\1\0\1\10\4\0"+ + "\5\10\1\0\1\10\1\u0158\24\10\10\0\5\10\1\0"+ + "\1\10\4\0\5\10\1\0\12\10\1\u0159\13\10\31\0"+ + "\1\u015a\35\0\5\10\1\0\1\10\4\0\5\10\1\0"+ + "\12\10\1\274\13\10\10\0\5\10\1\0\1\u015b\4\0"+ + "\5\10\1\0\26\10\10\0\5\10\1\0\1\10\4\0"+ + "\5\10\1\0\10\10\1\257\15\10\10\0\5\10\1\0"+ + "\1\u015c\4\0\5\10\1\0\26\10\10\0\5\10\1\0"+ + "\1\u015d\4\0\3\10\1\116\1\10\1\0\26\10\10\0"+ + "\5\10\1\0\1\10\4\0\5\10\1\0\1\335\25\10"+ + "\10\0\5\10\1\0\1\10\4\0\3\10\1\u015e\1\10"+ + "\1\0\26\10\10\0\5\10\1\0\1\10\4\0\4\10"+ + "\1\u015f\1\0\26\10\10\0\5\10\1\0\1\10\4\0"+ + "\5\10\1\0\13\10\1\116\12\10\10\0\4\10\1\u0160"+ + "\1\0\1\10\4\0\5\10\1\0\26\10\10\0\5\10"+ + "\1\0\1\10\4\0\1\u0161\4\10\1\0\26\10\10\0"+ + "\5\10\1\0\1\10\4\0\5\10\1\0\12\10\1\u0104"+ + "\13\10\10\0\5\10\1\0\1\10\4\0\5\10\1\0"+ + "\13\10\1\u0162\12\10\10\0\5\10\1\0\1\10\4\0"+ + "\5\10\1\0\4\10\1\257\21\10\10\0\5\10\1\0"+ + "\1\10\4\0\5\10\1\0\10\10\1\254\15\10\10\0"+ + "\5\10\1\0\1\10\4\0\5\10\1\0\12\10\1\357"+ + "\13\10\10\0\5\10\1\0\1\10\4\0\5\10\1\0"+ + "\17\10\1\u0163\6\10\10\0\5\10\1\0\1\u0164\4\0"+ + "\5\10\1\0\26\10\10\0\5\10\1\0\1\10\4\0"+ + "\5\10\1\0\23\10\1\u0165\2\10\10\0\5\10\1\0"+ + "\1\10\4\0\5\10\1\0\3\10\1\u0166\22\10\10\0"+ + "\5\10\1\0\1\10\4\0\5\10\1\0\14\10\1\u0167"+ + "\11\10\10\0\5\10\1\0\1\10\4\0\5\10\1\0"+ + "\3\10\1\u0168\22\10\10\0\5\10\1\0\1\10\4\0"+ + "\5\10\1\0\11\10\1\u0101\14\10\10\0\5\10\1\0"+ + "\1\10\4\0\5\10\1\0\2\10\1\116\23\10\1\0"+ + "\4\216\1\221\1\u010f\51\216\7\0\5\10\1\0\1\10"+ + "\4\0\5\10\1\0\5\10\1\u0169\20\10\10\0\5\10"+ + "\1\0\1\10\4\0\5\10\1\0\12\10\1\u016a\13\10"+ + "\10\0\5\10\1\0\1\10\4\0\5\10\1\0\5\10"+ + "\1\u016b\20\10\10\0\5\10\1\0\1\10\4\0\5\10"+ + "\1\0\5\10\1\u016c\20\10\10\0\5\10\1\0\1\10"+ + "\4\0\5\10\1\0\12\10\1\u016d\13\10\10\0\5\10"+ + "\1\0\1\10\4\0\5\10\1\0\16\10\1\u016e\7\10"+ + "\10\0\5\10\1\0\1\10\4\0\3\10\1\u016f\1\10"+ + "\1\0\26\10\10\0\5\10\1\0\1\10\4\0\5\10"+ + "\1\0\16\10\1\u0114\7\10\10\0\5\10\1\0\1\10"+ + "\4\0\5\10\1\0\5\10\1\u0127\20\10\10\0\5\10"+ + "\1\0\1\10\4\0\1\214\4\10\1\0\26\10\10\0"+ + "\5\10\1\0\1\10\4\0\4\10\1\u0170\1\0\26\10"+ + "\10\0\5\10\1\0\1\10\4\0\5\10\1\0\6\10"+ + "\1\141\17\10\10\0\5\10\1\0\1\10\4\0\5\10"+ + "\1\0\11\10\1\u0171\14\10\10\0\5\10\1\0\1\10"+ + "\4\0\5\10\1\0\10\10\1\u0172\15\10\10\0\5\10"+ + "\1\0\1\10\4\0\5\10\1\0\6\10\1\u016e\17\10"+ + "\10\0\5\10\1\0\1\10\4\0\5\10\1\0\1\u0173"+ + "\25\10\10\0\5\10\1\0\1\10\4\0\1\u015e\4\10"+ + "\1\0\26\10\10\0\5\10\1\0\1\10\4\0\1\10"+ + "\1\265\3\10\1\0\26\10\10\0\5\10\1\0\1\10"+ + "\4\0\5\10\1\0\11\10\1\110\14\10\10\0\5\10"+ + "\1\0\1\10\4\0\5\10\1\0\1\u0174\25\10\10\0"+ + "\5\10\1\0\1\10\4\0\5\10\1\0\13\10\1\u0175"+ + "\12\10\10\0\5\10\1\0\1\10\4\0\5\10\1\0"+ + "\12\10\1\u0176\13\10\10\0\5\10\1\0\1\10\4\0"+ + "\5\10\1\0\1\u0127\25\10\10\0\5\10\1\0\1\10"+ + "\4\0\3\10\1\u0177\1\10\1\0\11\10\1\u0178\14\10"+ + "\10\0\5\10\1\0\1\10\4\0\5\10\1\0\1\u0179"+ + "\25\10\10\0\5\10\1\0\1\10\4\0\1\224\4\10"+ + "\1\0\26\10\10\0\5\10\1\0\1\10\4\0\5\10"+ + "\1\0\1\u017a\25\10\10\0\5\10\1\0\1\10\4\0"+ + "\5\10\1\0\11\10\1\265\14\10\10\0\5\10\1\0"+ + "\1\10\4\0\5\10\1\0\1\270\25\10\10\0\5\10"+ + "\1\0\1\10\4\0\5\10\1\0\20\10\1\254\5\10"+ + "\10\0\5\10\1\0\1\10\4\0\1\257\4\10\1\0"+ + "\26\10\10\0\5\10\1\0\1\10\4\0\1\u017b\4\10"+ + "\1\0\26\10\10\0\5\10\1\0\1\10\4\0\5\10"+ + "\1\0\12\10\1\u015e\13\10\10\0\5\10\1\0\1\10"+ + "\4\0\5\10\1\0\13\10\1\u017c\12\10\10\0\5\10"+ + "\1\0\1\10\4\0\3\10\1\u017d\1\10\1\0\26\10"+ + "\10\0\5\10\1\0\1\10\4\0\5\10\1\0\6\10"+ + "\1\161\17\10\10\0\5\10\1\0\1\10\4\0\5\10"+ + "\1\0\15\10\1\u017e\10\10\10\0\5\10\1\0\1\10"+ + "\4\0\5\10\1\0\12\10\1\u017f\13\10\10\0\5\10"+ + "\1\0\1\10\4\0\5\10\1\0\3\10\1\257\22\10"+ + "\10\0\5\10\1\0\1\10\4\0\5\10\1\0\12\10"+ + "\1\u0180\13\10\10\0\5\10\1\0\1\10\4\0\5\10"+ + "\1\0\1\u0181\25\10\10\0\5\10\1\0\1\u0182\4\0"+ + "\5\10\1\0\26\10\10\0\5\10\1\0\1\10\4\0"+ + "\5\10\1\0\11\10\1\u0183\14\10\10\0\5\10\1\0"+ + "\1\10\4\0\5\10\1\0\5\10\1\u0106\20\10\10\0"+ + "\5\10\1\0\1\10\4\0\2\10\1\u0102\2\10\1\0"+ + "\26\10\10\0\5\10\1\0\1\10\4\0\5\10\1\0"+ + "\12\10\1\u0184\13\10\10\0\5\10\1\0\1\10\4\0"+ + "\5\10\1\0\12\10\1\110\13\10\10\0\5\10\1\0"+ + "\1\10\4\0\5\10\1\0\20\10\1\u0185\5\10\10\0"+ + "\5\10\1\0\1\10\4\0\1\u0186\4\10\1\0\26\10"+ + "\10\0\5\10\1\0\1\10\4\0\5\10\1\0\5\10"+ + "\1\335\20\10\10\0\5\10\1\0\1\10\4\0\1\u0122"+ + "\4\10\1\0\26\10\10\0\5\10\1\0\1\10\4\0"+ + "\5\10\1\0\11\10\1\270\14\10\10\0\5\10\1\0"+ + "\1\10\4\0\5\10\1\0\12\10\1\u0114\13\10\10\0"+ + "\5\10\1\0\1\u0187\4\0\5\10\1\0\26\10\10\0"+ + "\5\10\1\0\1\10\4\0\5\10\1\0\5\10\1\u0188"+ + "\20\10\10\0\5\10\1\0\1\10\4\0\5\10\1\0"+ + "\12\10\1\u0189\13\10\10\0\5\10\1\0\1\10\4\0"+ + "\1\u018a\4\10\1\0\26\10\10\0\5\10\1\0\1\10"+ + "\4\0\5\10\1\0\1\110\25\10\10\0\5\10\1\0"+ + "\1\10\4\0\5\10\1\0\3\10\1\274\22\10\10\0"+ + "\5\10\1\0\1\10\4\0\5\10\1\0\1\u018b\25\10"+ + "\10\0\5\10\1\0\1\10\4\0\5\10\1\0\12\10"+ + "\1\u018c\13\10\10\0\5\10\1\0\1\u018d\4\0\5\10"+ + "\1\0\26\10\10\0\5\10\1\0\1\10\4\0\5\10"+ + "\1\0\15\10\1\u018e\10\10\10\0\5\10\1\0\1\10"+ + "\4\0\2\10\1\u0106\2\10\1\0\26\10\10\0\5\10"+ + "\1\0\1\10\4\0\5\10\1\0\3\10\1\335\22\10"+ + "\10\0\5\10\1\0\1\10\4\0\5\10\1\0\14\10"+ + "\1\242\11\10\10\0\4\10\1\u018f\1\0\1\10\4\0"+ + "\5\10\1\0\26\10\10\0\5\10\1\0\1\10\4\0"+ + "\5\10\1\0\14\10\1\u0190\11\10\10\0\5\10\1\0"+ + "\1\10\4\0\5\10\1\0\10\10\1\265\15\10\10\0"+ + "\5\10\1\0\1\10\4\0\1\u0191\4\10\1\0\26\10"+ + "\10\0\4\10\1\u0192\1\0\1\10\4\0\5\10\1\0"+ + "\26\10\16\0\1\u0193\50\0\5\10\1\0\1\10\4\0"+ + "\5\10\1\0\20\10\1\116\5\10\10\0\5\10\1\0"+ + "\1\10\4\0\5\10\1\0\1\257\3\10\1\316\21\10"+ + "\10\0\5\10\1\0\1\10\4\0\5\10\1\0\1\u0194"+ + "\13\10\1\242\11\10\10\0\5\10\1\0\1\10\4\0"+ + "\5\10\1\0\1\265\25\10\10\0\5\10\1\0\1\162"+ + "\4\0\5\10\1\0\26\10\10\0\5\10\1\0\1\u0195"+ + "\4\0\5\10\1\0\26\10\10\0\5\10\1\0\1\10"+ + "\4\0\5\10\1\0\1\u0196\25\10\10\0\5\10\1\0"+ + "\1\10\4\0\1\u0197\4\10\1\0\26\10\10\0\5\10"+ + "\1\0\1\10\4\0\1\u0198\4\10\1\0\26\10\10\0"+ + "\5\10\1\0\1\10\4\0\5\10\1\0\2\10\1\u0178"+ + "\23\10\10\0\5\10\1\0\1\10\4\0\5\10\1\0"+ + "\12\10\1\u0199\13\10\10\0\5\10\1\0\1\10\4\0"+ + "\5\10\1\0\12\10\1\u019a\13\10\10\0\5\10\1\0"+ + "\1\10\4\0\5\10\1\0\11\10\1\u019b\14\10\10\0"+ + "\5\10\1\0\1\u019c\4\0\5\10\1\0\26\10\10\0"+ + "\5\10\1\0\1\10\4\0\5\10\1\0\21\10\1\116"+ + "\4\10\10\0\5\10\1\0\1\10\4\0\5\10\1\0"+ + "\14\10\1\270\11\10\10\0\5\10\1\0\1\u019d\4\0"+ + "\5\10\1\0\26\10\10\0\5\10\1\0\1\10\4\0"+ + "\5\10\1\0\12\10\1\u019e\13\10\10\0\4\10\1\116"+ + "\1\0\1\10\4\0\5\10\1\0\26\10\10\0\5\10"+ + "\1\0\1\77\4\0\5\10\1\0\26\10\10\0\5\10"+ + "\1\0\1\10\4\0\5\10\1\0\2\10\1\u016e\23\10"+ + "\10\0\5\10\1\0\1\10\4\0\5\10\1\u019f\26\10"+ + "\10\0\5\10\1\0\1\10\4\0\1\u01a0\4\10\1\0"+ + "\26\10\10\0\5\10\1\0\1\10\4\0\2\10\1\257"+ + "\2\10\1\0\26\10\10\0\5\10\1\0\1\10\4\0"+ + "\5\10\1\0\12\10\1\u01a1\13\10\10\0\5\10\1\0"+ + "\1\10\4\0\5\10\1\0\11\10\1\u01a2\14\10\10\0"+ + "\5\10\1\0\1\10\4\0\1\u01a3\4\10\1\0\26\10"+ + "\10\0\5\10\1\0\1\10\4\0\5\10\1\0\4\10"+ + "\1\u01a4\21\10\10\0\5\10\1\0\1\10\4\0\5\10"+ + "\1\0\4\10\1\u01a5\21\10\10\0\5\10\1\0\1\10"+ + "\4\0\5\10\1\0\12\10\1\141\13\10\10\0\5\10"+ + "\1\0\1\u01a6\4\0\5\10\1\0\26\10\10\0\5\10"+ + "\1\0\1\10\4\0\5\10\1\0\12\10\1\u0138\13\10"+ + "\10\0\5\10\1\0\1\10\4\0\5\10\1\0\3\10"+ + "\1\265\22\10\10\0\5\10\1\0\1\10\4\0\1\340"+ + "\4\10\1\0\26\10\10\0\5\10\1\0\1\10\4\0"+ + "\5\10\1\0\10\10\1\u0104\15\10\10\0\5\10\1\0"+ + "\1\10\4\0\1\u01a7\4\10\1\0\26\10\10\0\5\10"+ + "\1\0\1\10\4\0\5\10\1\0\4\10\1\u0101\21\10"+ + "\10\0\5\10\1\0\1\10\4\0\5\10\1\0\5\10"+ + "\1\u01a8\20\10\10\0\5\10\1\0\1\10\4\0\1\u01a9"+ + "\4\10\1\0\26\10\10\0\5\10\1\0\1\10\4\0"+ + "\5\10\1\0\4\10\1\u017b\21\10\10\0\5\10\1\0"+ + "\1\10\4\0\1\u010e\4\10\1\0\26\10\10\0\4\10"+ + "\1\u018b\1\0\1\10\4\0\5\10\1\0\26\10\10\0"+ + "\5\10\1\0\1\10\4\0\5\10\1\0\3\10\1\236"+ + "\22\10\10\0\5\10\1\0\1\10\4\0\5\10\1\0"+ + "\1\u01aa\25\10\10\0\5\10\1\0\1\10\4\0\5\10"+ + "\1\0\1\257\25\10\10\0\5\10\1\0\1\10\4\0"+ + "\1\u0104\4\10\1\0\1\u01ab\25\10\10\0\5\10\1\0"+ + "\1\10\4\0\5\10\1\0\4\10\1\u0157\21\10\10\0"+ + "\5\10\1\0\1\10\4\0\5\10\1\0\3\10\1\u01ac"+ + "\22\10\10\0\5\10\1\0\1\10\4\0\5\10\1\0"+ + "\12\10\1\u01ad\13\10\10\0\5\10\1\0\1\10\4\0"+ + "\5\10\1\0\4\10\1\u01ae\21\10\10\0\5\10\1\0"+ + "\1\10\4\0\5\10\1\0\2\10\1\u01af\23\10\10\0"+ + "\5\10\1\0\1\10\4\0\1\213\4\10\1\0\26\10"+ + "\10\0\5\10\1\0\1\10\4\0\5\10\1\0\12\10"+ + "\1\212\13\10\10\0\5\10\1\0\1\10\4\0\5\10"+ + "\1\0\4\10\1\u016e\21\10\10\0\5\10\1\0\1\10"+ + "\4\0\2\10\1\u0157\2\10\1\0\26\10\10\0\5\10"+ + "\1\0\1\10\4\0\5\10\1\0\12\10\1\263\13\10"+ + "\14\0\1\u01b0\52\0\5\10\1\0\1\10\4\0\5\10"+ + "\1\0\1\10\1\110\24\10\10\0\5\10\1\0\1\10"+ + "\4\0\5\10\1\0\1\u01b1\25\10\10\0\5\10\1\0"+ + "\1\10\4\0\5\10\1\0\6\10\1\116\17\10\10\0"+ + "\5\10\1\0\1\10\4\0\2\10\1\u01b2\2\10\1\0"+ + "\26\10\10\0\5\10\1\0\1\10\4\0\5\10\1\0"+ + "\14\10\1\u01b3\11\10\10\0\5\10\1\0\1\10\4\0"+ + "\5\10\1\0\4\10\1\u01b4\21\10\10\0\5\10\1\0"+ + "\1\10\4\0\5\10\1\0\2\10\1\u016c\23\10\10\0"+ + "\5\10\1\0\1\10\4\0\1\116\4\10\1\0\26\10"+ + "\10\0\5\10\1\0\1\10\4\0\1\10\1\u01b5\3\10"+ + "\1\0\26\10\10\0\5\10\1\0\1\10\4\0\5\10"+ + "\1\0\20\10\1\257\5\10\10\0\5\10\1\0\1\10"+ + "\4\0\3\10\1\270\1\10\1\0\26\10\31\0\1\u01b6"+ + "\35\0\5\10\1\0\1\10\4\0\5\10\1\0\5\10"+ + "\1\u018b\20\10\10\0\5\10\1\0\1\10\4\0\5\10"+ + "\1\0\13\10\1\265\12\10\10\0\5\10\1\0\1\10"+ + "\4\0\5\10\1\0\12\10\1\u01b7\13\10\10\0\5\10"+ + "\1\0\1\10\4\0\5\10\1\0\2\10\1\u01b8\23\10"+ + "\10\0\5\10\1\0\1\10\4\0\5\10\1\0\3\10"+ + "\1\u01b9\22\10\10\0\5\10\1\0\1\10\4\0\1\u01ba"+ + "\4\10\1\0\26\10\10\0\5\10\1\0\1\10\4\0"+ + "\5\10\1\0\4\10\1\u01bb\21\10\10\0\5\10\1\0"+ + "\1\10\4\0\5\10\1\0\1\u01bc\25\10\10\0\5\10"+ + "\1\0\1\10\4\0\5\10\1\0\12\10\1\u01bd\13\10"+ + "\10\0\5\10\1\0\1\10\4\0\5\10\1\0\5\10"+ + "\1\44\20\10\10\0\5\10\1\0\1\10\4\0\5\10"+ + "\1\0\4\10\1\u0106\21\10\10\0\5\10\1\0\1\10"+ + "\4\0\1\u0102\4\10\1\0\26\10\10\0\5\10\1\0"+ + "\1\10\4\0\5\10\1\0\5\10\1\242\20\10\10\0"+ + "\5\10\1\0\1\10\4\0\1\u01be\4\10\1\0\26\10"+ + "\10\0\5\10\1\0\1\10\4\0\5\10\1\0\16\10"+ + "\1\u0131\7\10\30\0\1\u01bf\36\0\5\10\1\0\1\10"+ + "\4\0\5\10\1\0\16\10\1\u01c0\7\10\10\0\5\10"+ + "\1\0\1\10\4\0\5\10\1\u01c1\26\10\10\0\5\10"+ + "\1\0\1\u01c2\4\0\5\10\1\0\26\10\10\0\5\10"+ + "\1\0\1\10\4\0\5\10\1\0\5\10\1\u01c3\20\10"+ + "\10\0\5\10\1\0\1\10\4\0\5\10\1\0\10\10"+ + "\1\u015e\15\10\16\0\1\u01c4\50\0\5\10\1\0\1\10"+ + "\4\0\5\10\1\0\4\10\1\u01c5\21\10\10\0\5\10"+ + "\1\0\1\u010e\4\0\5\10\1\0\26\10\10\0\5\10"+ + "\1\0\1\10\4\0\5\10\1\0\5\10\1\u01c6\20\10"+ + "\10\0\5\10\1\0\1\10\4\0\2\10\1\u01c7\2\10"+ + "\1\0\26\10\10\0\5\10\1\0\1\10\4\0\5\10"+ + "\1\0\3\10\1\263\22\10\10\0\5\10\1\0\1\10"+ + "\4\0\1\u018a\4\10\1\0\25\10\1\116\10\0\5\10"+ + "\1\0\1\10\4\0\5\10\1\0\1\10\1\265\24\10"+ + "\10\0\5\10\1\0\1\10\4\0\5\10\1\0\5\10"+ + "\1\u016e\20\10\34\0\1\u01c8\32\0\5\10\1\0\1\10"+ + "\4\0\3\10\1\u01c9\1\10\1\0\26\10\36\0\1\u01ca"+ + "\30\0\5\10\1\0\1\10\4\0\5\10\1\u01cb\26\10"+ + "\10\0\5\10\1\0\1\u0154\4\0\5\10\1\0\26\10"+ + "\32\0\1\u01cc\34\0\5\10\1\0\1\10\4\0\5\10"+ + "\1\0\12\10\1\u01cd\13\10\10\0\5\10\1\0\1\10"+ + "\4\0\5\10\1\0\1\142\25\10\10\0\5\10\1\0"+ + "\1\10\4\0\2\10\1\u0196\2\10\1\0\26\10\41\0"+ + "\1\u01ce\25\0\5\10\1\0\1\10\4\0\3\10\1\255"+ + "\1\10\1\0\26\10\16\0\1\u01cf\104\0\1\u01d0\30\0"+ + "\1\u01d1\50\0\5\10\1\0\1\10\4\0\5\10\1\0"+ + "\2\10\1\u01a0\23\10\31\0\1\u01d2\67\0\1\u01d3\42\0"+ + "\1\u01d4\61\0\1\u01d5\60\0\1\u01d6\72\0\1\u01d7\33\0"+ + "\1\u01d8\65\0\1\u01d9\51\0\1\u01da\56\0\1\u01db\67\0"+ + "\1\u01dc\35\0\1\u01dd\71\0\1\u01dc\56\0\1\u01de\55\0"+ + "\1\u01df\51\0\1\u01e0\66\0\1\u01e1\54\0\1\u01d8\61\0"+ + "\1\u01e2\45\0\1\u01e3\70\0\1\u01e4\54\0\1\u01dc\24\0"; + + private static int [] zzUnpackTrans() { + int [] result = new int[22043]; + 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\11\1\2\11\26\1\1\11\2\1\1\11"+ + "\4\1\1\0\1\1\1\0\1\11\2\0\131\1\1\11"+ + "\2\0\1\1\1\11\2\0\142\1\1\0\30\1\1\0"+ + "\112\1\1\0\70\1\1\0\13\1\1\0\20\1\1\0"+ + "\5\1\1\0\10\1\1\0\1\1\1\0\2\1\1\0"+ + "\3\1\1\0\1\1\3\0\1\1\16\0\1\11\10\0"; + + private static int [] zzUnpackAttribute() { + int [] result = new int[484]; + 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[] = new char[ZZ_BUFFERSIZE]; + + /** 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; + + /** number of newlines encountered up to the start of the matched text */ + private int yyline; + + /** the number of characters up to the start of the matched text */ + private int yychar; + + /** + * the number of characters from the last newline up to the start of the + * matched text + */ + private int yycolumn; + + /** + * 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; + + /** denotes if the user-EOF-code has already been executed */ + private boolean zzEOFDone; + + /* user code: */ + /** + * Default constructor is needed as we will always call the yyreset + */ + public SqlLexer() { + super(); + } + + @Override + public int yychar() { + return yychar; + } + + + + /** + * 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 SqlLexer(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 SqlLexer(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 < 1820) { + int count = packed.charAt(i++); + char value = packed.charAt(i++); + do map[j++] = value; while (--count > 0); + } + return map; + } + + + /** + * Refills the input buffer. + * + * @return false, iff there was new input. + * + * @exception java.io.IOException if any I/O-Error occurs + */ + private boolean zzRefill() throws java.io.IOException { + + /* first: make room (if you can) */ + if (zzStartRead > 0) { + System.arraycopy(zzBuffer, zzStartRead, + zzBuffer, 0, + zzEndRead-zzStartRead); + + /* translate stored positions */ + zzEndRead-= zzStartRead; + zzCurrentPos-= zzStartRead; + zzMarkedPos-= zzStartRead; + zzStartRead = 0; + } + + /* is the buffer big enough? */ + if (zzCurrentPos >= zzBuffer.length) { + /* if not: blow it up */ + char newBuffer[] = new char[zzCurrentPos*2]; + System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); + zzBuffer = newBuffer; + } + + /* finally: fill the buffer with new input */ + int numRead = zzReader.read(zzBuffer, zzEndRead, + zzBuffer.length-zzEndRead); + + if (numRead > 0) { + zzEndRead+= numRead; + return false; + } + // unlikely but not impossible: read 0 characters, but not at end of stream + if (numRead == 0) { + int c = zzReader.read(); + if (c == -1) { + return true; + } else { + zzBuffer[zzEndRead++] = (char) c; + return false; + } + } + + // numRead < 0 + return true; + } + + + /** + * 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(); + } + + + /** + * 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 ZZ_INITIAL. + * + * @param reader the new input stream + */ + public final void yyreset(java.io.Reader reader) { + zzReader = reader; + zzAtBOL = true; + zzAtEOF = false; + zzEOFDone = false; + zzEndRead = zzStartRead = 0; + zzCurrentPos = zzMarkedPos = 0; + yyline = yychar = yycolumn = 0; + zzLexicalState = YYINITIAL; + } + + + /** + * Returns the current lexical state. + */ + public final int yystate() { + return zzLexicalState; + } + + + /** + * Enters a new lexical state + * + * @param newState the new lexical state + */ + 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 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; + + yychar+= zzMarkedPosL-zzStartRead; + + zzAction = -1; + + zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; + + 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 12: + { return token(TokenType.KEYWORD); + } + case 14: break; + case 7: + { yybegin(SQ_STRING); + tokenStart = yychar; + tokenLength = 1; + } + case 15: break; + case 5: + { return token(TokenType.OPERATOR); + } + case 16: break; + case 13: + { tokenLength += 2; + } + case 17: break; + case 3: + { return token(TokenType.IDENTIFIER); + } + case 18: break; + case 11: + { return token(TokenType.COMMENT); + } + case 19: break; + case 10: + { yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + case 20: break; + case 9: + { yybegin(YYINITIAL); + } + case 21: break; + case 4: + { return token(TokenType.NUMBER); + } + case 22: break; + case 6: + { yybegin(DQ_STRING); + tokenStart = yychar; + tokenLength = 1; + } + case 23: break; + case 2: + { /* skip */ + } + case 24: break; + case 1: + { + } + case 25: break; + case 8: + { tokenLength += yylength(); + } + case 26: break; + default: + if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { + zzAtEOF = true; + { + return null; + } + } + else { + zzScanError(ZZ_NO_MATCH); + } + } + } + } + + +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/TALLexer.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/TALLexer.java new file mode 100644 index 000000000..9418cc098 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/TALLexer.java @@ -0,0 +1,821 @@ +/* The following code was generated by JFlex 1.4.3 on 21.7.10 18:14 */ + +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jsyntaxpane.lexers; + + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + + +/** + * This class is a scanner generated by + * JFlex 1.4.3 + * on 21.7.10 18:14 from the specification file + * D:/Dokumenty/Programovani/JavaSE/JPSWFDec/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/tal.flex + */ +public final class TALLexer extends DefaultJFlexLexer { + + /** This character denotes the end of file */ + public static final int YYEOF = -1; + + /** initial size of the lookahead buffer */ + private static final int ZZ_BUFFERSIZE = 16384; + + /** 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, 0 + }; + + /** + * Translates characters to character classes + */ + private static final String ZZ_CMAP_PACKED = + "\11\0\1\3\1\2\1\0\1\3\1\1\22\0\1\3\1\4\1\33"+ + "\2\0\1\15\1\0\1\34\1\46\1\47\1\51\1\51\1\51\1\5"+ + "\1\51\1\51\1\10\1\17\1\41\1\16\4\20\2\11\1\55\1\51"+ + "\1\54\1\52\1\53\1\44\1\0\1\31\1\14\1\23\1\21\1\22"+ + "\1\32\1\27\1\40\1\24\2\6\1\13\1\6\1\25\1\42\1\45"+ + "\1\6\1\30\1\36\1\26\1\37\1\6\1\43\1\12\1\50\1\6"+ + "\1\51\1\35\1\51\1\7\1\6\1\0\1\31\1\14\1\23\1\21"+ + "\1\22\1\32\1\27\1\40\1\24\2\6\1\13\1\6\1\25\1\42"+ + "\1\45\1\6\1\30\1\36\1\26\1\37\1\6\1\43\1\12\1\50"+ + "\1\6\1\51\1\0\1\51\uff82\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\3\1\2\2\1\3\2\4\2\3\1\1\4\3"+ + "\2\1\2\3\5\2\1\0\3\5\4\0\3\3\2\4"+ + "\1\3\1\6\5\3\4\0\3\3\2\0\3\4\1\0"+ + "\3\3\1\4\1\3\1\7\4\3\1\10\1\0\3\3"+ + "\2\0\1\4\1\0\2\3\1\7\1\4\1\3\1\0"+ + "\10\3\2\0\1\4\1\0\1\3\1\4\1\3\1\0"+ + "\5\3\1\0\1\6\1\4\1\0\1\3\1\4\1\3"+ + "\1\0\1\3\1\6\1\0\1\4\1\0\1\4\1\3"+ + "\1\7\1\3\1\0\1\4\1\0\1\4\2\3\1\4"+ + "\1\0\1\4\1\3\1\4\1\0\1\4\1\3\2\0"+ + "\1\4\1\3\2\0\1\4\1\3\2\0\1\4\1\3"+ + "\2\0\1\4\1\3\2\0\1\4\1\3\2\0\1\3"+ + "\2\0\1\3\2\0\1\4\3\0"; + + private static int [] zzUnpackAction() { + int [] result = new int[167]; + 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\56\0\134\0\212\0\270\0\346\0\u0114\0\u0142"+ + "\0\u0170\0\u019e\0\u01cc\0\u01fa\0\u0228\0\u0256\0\u0284\0\u02b2"+ + "\0\u02e0\0\u030e\0\u033c\0\u036a\0\u0398\0\56\0\u03c6\0\u03f4"+ + "\0\u0422\0\270\0\u0450\0\56\0\u047e\0\u04ac\0\u04da\0\u0508"+ + "\0\u0536\0\u0564\0\u0592\0\u05c0\0\u05ee\0\u061c\0\u064a\0\u0114"+ + "\0\u0678\0\u06a6\0\u06d4\0\u0702\0\u0730\0\u075e\0\u078c\0\u07ba"+ + "\0\u07e8\0\u0816\0\u0844\0\u0872\0\u08a0\0\u08ce\0\56\0\u08fc"+ + "\0\u092a\0\u0958\0\u0986\0\u09b4\0\u09e2\0\u0a10\0\u0a3e\0\u0a6c"+ + "\0\u0a9a\0\u0ac8\0\u0af6\0\u0b24\0\56\0\u0b52\0\u0b80\0\u0bae"+ + "\0\u0bdc\0\u0c0a\0\u0c38\0\u0c66\0\u0c94\0\u0cc2\0\u0cf0\0\u0114"+ + "\0\u0d1e\0\u0d4c\0\u0d7a\0\u0da8\0\u0dd6\0\u0e04\0\u0e32\0\u0e60"+ + "\0\u0e8e\0\u0ebc\0\u0eea\0\u0f18\0\u0f46\0\u0f74\0\u0fa2\0\u0fd0"+ + "\0\u0ffe\0\u102c\0\u105a\0\u1088\0\u10b6\0\u10e4\0\u1112\0\u1140"+ + "\0\u116e\0\56\0\u119c\0\u11ca\0\u11f8\0\u1226\0\u1254\0\u1282"+ + "\0\u12b0\0\u12de\0\u130c\0\u133a\0\u1368\0\u1396\0\u13c4\0\56"+ + "\0\u13f2\0\u1420\0\u144e\0\u147c\0\u14aa\0\u14d8\0\u1506\0\u1534"+ + "\0\u1562\0\u1590\0\u15be\0\u15ec\0\u161a\0\u1648\0\u1676\0\u16a4"+ + "\0\u16d2\0\u1700\0\u172e\0\u175c\0\u178a\0\u17b8\0\u17e6\0\u1814"+ + "\0\u1842\0\u1870\0\u189e\0\u18cc\0\u18fa\0\u1928\0\u1956\0\u1984"+ + "\0\u19b2\0\u19e0\0\u1a0e\0\u1a3c\0\u1a6a\0\u1a98\0\u1ac6\0\u1af4"+ + "\0\u1b22\0\u1b50\0\u1b7e\0\u0114\0\u1bac\0\u1bda\0\u1c08"; + + private static int [] zzUnpackRowMap() { + int [] result = new int[167]; + 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\2\1\4\1\5\1\6\1\7\1\2"+ + "\1\10\1\11\1\7\1\12\1\13\1\14\3\11\1\15"+ + "\1\16\1\7\1\17\5\7\1\20\1\21\1\22\1\2"+ + "\1\23\2\7\1\11\1\7\1\24\1\25\1\7\2\26"+ + "\1\7\2\26\1\27\1\30\1\31\60\0\1\2\56\0"+ + "\1\4\52\0\1\32\1\33\1\34\1\32\1\34\51\32"+ + "\5\0\1\35\56\0\7\7\1\0\15\7\3\0\6\7"+ + "\1\0\1\7\2\0\1\7\15\0\1\36\1\0\1\37"+ + "\3\0\1\40\1\41\1\40\20\0\1\40\24\0\2\11"+ + "\4\0\3\11\20\0\1\11\22\0\7\7\1\0\6\7"+ + "\1\42\6\7\3\0\6\7\1\0\1\7\2\0\1\7"+ + "\13\0\7\7\1\0\4\7\1\43\10\7\3\0\6\7"+ + "\1\0\1\7\2\0\1\44\15\0\1\45\5\0\2\46"+ + "\1\45\20\0\1\46\22\0\7\7\1\0\4\7\1\47"+ + "\10\7\3\0\4\7\1\50\1\7\1\0\1\7\2\0"+ + "\1\7\13\0\7\7\1\0\7\7\1\51\5\7\3\0"+ + "\6\7\1\0\1\7\2\0\1\7\13\0\7\7\1\0"+ + "\7\7\1\52\5\7\3\0\6\7\1\0\1\7\2\0"+ + "\1\7\13\0\5\7\1\53\1\7\1\0\6\7\1\54"+ + "\6\7\3\0\4\7\1\55\1\7\1\0\1\7\2\0"+ + "\1\7\5\0\1\56\2\0\30\56\1\0\1\56\1\0"+ + "\20\56\1\57\2\0\31\57\2\0\14\57\1\60\2\57"+ + "\1\61\6\0\7\7\1\0\10\7\1\62\4\7\3\0"+ + "\2\7\1\63\3\7\1\0\1\7\2\0\1\7\13\0"+ + "\7\7\1\0\15\7\3\0\2\7\1\64\3\7\1\0"+ + "\1\7\2\0\1\7\43\0\1\65\6\0\1\66\63\0"+ + "\1\26\55\0\2\26\53\0\1\26\5\0\1\34\53\0"+ + "\1\35\1\33\1\34\53\35\10\0\1\36\2\0\1\67"+ + "\2\0\1\40\1\41\1\40\20\0\1\40\24\0\1\70"+ + "\1\71\2\0\1\71\1\0\6\71\5\0\2\71\6\0"+ + "\1\71\24\0\1\72\2\0\1\67\2\0\3\72\20\0"+ + "\1\72\24\0\1\40\2\0\1\67\2\0\3\40\20\0"+ + "\1\40\22\0\7\7\1\0\10\7\1\73\4\7\3\0"+ + "\6\7\1\0\1\7\2\0\1\7\13\0\7\7\1\0"+ + "\11\7\1\74\3\7\3\0\6\7\1\0\1\7\2\0"+ + "\1\7\13\0\7\7\1\0\10\7\1\75\4\7\3\0"+ + "\6\7\1\0\1\7\2\0\1\7\15\0\1\76\5\0"+ + "\3\76\20\0\1\76\24\0\1\45\5\0\3\45\20\0"+ + "\1\45\22\0\7\7\1\0\5\7\1\77\7\7\3\0"+ + "\6\7\1\0\1\7\2\0\1\7\13\0\7\7\1\0"+ + "\3\7\1\50\11\7\3\0\6\7\1\0\1\7\2\0"+ + "\1\7\13\0\7\7\1\0\10\7\1\100\4\7\3\0"+ + "\6\7\1\0\1\7\2\0\1\7\13\0\7\7\1\0"+ + "\15\7\3\0\4\7\1\101\1\7\1\0\1\7\2\0"+ + "\1\7\13\0\4\7\1\102\1\103\1\7\1\0\4\7"+ + "\1\104\10\7\3\0\6\7\1\0\1\7\2\0\1\7"+ + "\13\0\7\7\1\0\12\7\1\50\2\7\3\0\6\7"+ + "\1\0\1\7\2\0\1\7\5\0\1\56\2\0\30\56"+ + "\1\105\1\56\1\0\20\56\34\0\1\105\55\0\1\105"+ + "\20\0\1\106\34\0\1\105\15\0\1\106\11\0\7\7"+ + "\1\0\12\7\1\107\2\7\3\0\6\7\1\0\1\7"+ + "\2\0\1\7\13\0\7\7\1\0\13\7\1\110\1\7"+ + "\3\0\6\7\1\0\1\7\2\0\1\7\13\0\7\7"+ + "\1\0\6\7\1\111\6\7\3\0\6\7\1\0\1\7"+ + "\2\0\1\7\27\0\1\112\64\0\1\113\34\0\1\70"+ + "\1\71\1\0\1\67\1\71\1\0\6\71\5\0\2\71"+ + "\6\0\1\71\24\0\2\114\1\0\1\67\1\114\1\0"+ + "\6\114\5\0\2\114\6\0\1\114\24\0\1\115\2\0"+ + "\1\67\2\0\3\115\20\0\1\115\22\0\7\7\1\0"+ + "\4\7\1\116\10\7\3\0\6\7\1\0\1\7\2\0"+ + "\1\7\13\0\7\7\1\0\6\7\1\117\6\7\3\0"+ + "\6\7\1\0\1\7\2\0\1\7\13\0\7\7\1\0"+ + "\4\7\1\120\10\7\3\0\6\7\1\0\1\7\2\0"+ + "\1\7\15\0\1\121\5\0\3\121\20\0\1\121\22\0"+ + "\7\7\1\0\6\7\1\122\6\7\3\0\6\7\1\0"+ + "\1\7\2\0\1\7\13\0\7\7\1\0\15\7\3\0"+ + "\6\7\1\0\1\7\1\123\1\0\1\7\13\0\7\7"+ + "\1\0\13\7\1\124\1\7\3\0\6\7\1\0\1\7"+ + "\2\0\1\7\13\0\7\7\1\0\4\7\1\125\10\7"+ + "\3\0\6\7\1\0\1\7\2\0\1\7\13\0\5\7"+ + "\1\126\1\7\1\0\15\7\3\0\6\7\1\0\1\7"+ + "\2\0\1\7\13\0\5\7\1\127\1\7\1\0\15\7"+ + "\3\0\6\7\1\0\1\7\2\0\1\7\41\0\1\26"+ + "\27\0\7\7\1\0\6\7\1\130\6\7\3\0\1\7"+ + "\1\131\4\7\1\0\1\7\2\0\1\7\13\0\7\7"+ + "\1\0\12\7\1\132\2\7\3\0\6\7\1\0\1\7"+ + "\2\0\1\7\13\0\5\7\1\133\1\7\1\0\15\7"+ + "\3\0\6\7\1\0\1\7\2\0\1\7\30\0\1\134"+ + "\61\0\1\135\36\0\2\136\1\0\1\67\1\136\1\0"+ + "\6\136\5\0\2\136\6\0\1\136\24\0\1\137\2\0"+ + "\1\67\2\0\3\137\20\0\1\137\22\0\7\7\1\0"+ + "\12\7\1\140\2\7\3\0\6\7\1\0\1\7\2\0"+ + "\1\7\13\0\7\7\1\0\7\7\1\50\5\7\3\0"+ + "\6\7\1\0\1\7\2\0\1\7\15\0\1\141\5\0"+ + "\3\141\20\0\1\141\22\0\7\7\1\0\7\7\1\142"+ + "\5\7\3\0\6\7\1\0\1\7\2\0\1\7\23\0"+ + "\1\143\45\0\7\7\1\0\10\7\1\120\4\7\3\0"+ + "\6\7\1\0\1\7\2\0\1\7\13\0\7\7\1\0"+ + "\3\7\1\120\11\7\3\0\6\7\1\0\1\7\2\0"+ + "\1\7\13\0\7\7\1\0\4\7\1\144\10\7\3\0"+ + "\6\7\1\0\1\7\2\0\1\7\13\0\7\7\1\0"+ + "\3\7\1\145\11\7\3\0\6\7\1\0\1\7\2\0"+ + "\1\7\13\0\7\7\1\0\7\7\1\146\5\7\3\0"+ + "\6\7\1\0\1\7\2\0\1\7\13\0\7\7\1\0"+ + "\5\7\1\147\7\7\3\0\6\7\1\0\1\7\2\0"+ + "\1\7\13\0\7\7\1\0\4\7\1\150\10\7\3\0"+ + "\6\7\1\0\1\7\2\0\1\7\13\0\7\7\1\0"+ + "\4\7\1\50\10\7\3\0\6\7\1\0\1\7\2\0"+ + "\1\7\33\0\1\151\51\0\1\152\43\0\2\153\1\0"+ + "\1\67\1\153\1\0\6\153\5\0\2\153\6\0\1\153"+ + "\24\0\1\154\2\0\1\67\2\0\3\154\20\0\1\154"+ + "\22\0\7\7\1\0\13\7\1\155\1\7\3\0\6\7"+ + "\1\0\1\7\2\0\1\7\15\0\1\156\5\0\3\156"+ + "\20\0\1\156\22\0\7\7\1\0\10\7\1\157\4\7"+ + "\3\0\6\7\1\0\1\7\2\0\1\7\46\0\1\160"+ + "\22\0\7\7\1\0\12\7\1\120\2\7\3\0\6\7"+ + "\1\0\1\7\2\0\1\7\13\0\7\7\1\0\13\7"+ + "\1\161\1\7\3\0\6\7\1\0\1\7\2\0\1\7"+ + "\13\0\7\7\1\0\11\7\1\120\3\7\3\0\6\7"+ + "\1\0\1\7\2\0\1\7\13\0\7\7\1\0\10\7"+ + "\1\50\4\7\3\0\6\7\1\0\1\7\2\0\1\7"+ + "\13\0\7\7\1\0\3\7\1\162\11\7\3\0\6\7"+ + "\1\0\1\7\2\0\1\7\31\0\1\163\41\0\2\164"+ + "\1\0\1\67\1\164\1\0\6\164\5\0\2\164\6\0"+ + "\1\164\24\0\1\165\2\0\1\67\2\0\3\165\20\0"+ + "\1\165\22\0\5\7\1\50\1\7\1\0\15\7\3\0"+ + "\6\7\1\0\1\7\2\0\1\7\15\0\1\166\5\0"+ + "\3\166\20\0\1\166\22\0\7\7\1\0\4\7\1\167"+ + "\10\7\3\0\6\7\1\0\1\7\2\0\1\7\54\0"+ + "\1\170\14\0\5\7\1\171\1\7\1\0\15\7\3\0"+ + "\6\7\1\0\1\7\2\0\1\7\13\0\7\7\1\0"+ + "\15\7\3\0\3\7\1\50\2\7\1\0\1\7\2\0"+ + "\1\7\47\0\1\172\23\0\2\173\1\0\1\67\1\173"+ + "\1\0\6\173\5\0\2\173\6\0\1\173\24\0\1\174"+ + "\2\0\1\67\2\0\3\174\20\0\1\174\24\0\1\175"+ + "\5\0\3\175\20\0\1\175\22\0\7\7\1\0\11\7"+ + "\1\176\3\7\3\0\6\7\1\0\1\7\2\0\1\7"+ + "\13\0\7\7\1\0\6\7\1\177\6\7\3\0\6\7"+ + "\1\0\1\7\2\0\1\7\32\0\1\152\40\0\2\200"+ + "\1\0\1\67\1\200\1\0\6\200\5\0\2\200\6\0"+ + "\1\200\24\0\1\201\2\0\1\67\2\0\3\201\20\0"+ + "\1\201\24\0\1\202\5\0\3\202\20\0\1\202\22\0"+ + "\7\7\1\0\4\7\1\203\10\7\3\0\6\7\1\0"+ + "\1\7\2\0\1\7\13\0\7\7\1\0\11\7\1\117"+ + "\3\7\3\0\6\7\1\0\1\7\2\0\1\7\15\0"+ + "\2\204\1\0\1\67\1\204\1\0\6\204\5\0\2\204"+ + "\6\0\1\204\24\0\1\205\2\0\1\67\2\0\3\205"+ + "\20\0\1\205\24\0\1\206\5\0\3\206\20\0\1\206"+ + "\22\0\7\7\1\0\12\7\1\207\2\7\3\0\6\7"+ + "\1\0\1\7\2\0\1\7\15\0\2\210\1\0\1\67"+ + "\1\210\1\0\6\210\5\0\2\210\6\0\1\210\24\0"+ + "\1\211\2\0\1\67\2\0\3\211\20\0\1\211\24\0"+ + "\1\212\5\0\3\212\20\0\1\212\22\0\5\7\1\213"+ + "\1\7\1\0\15\7\3\0\6\7\1\0\1\7\2\0"+ + "\1\7\15\0\2\214\1\0\1\67\1\214\1\0\6\214"+ + "\5\0\2\214\6\0\1\214\24\0\1\215\2\0\1\67"+ + "\2\0\3\215\20\0\1\215\24\0\1\216\5\0\3\216"+ + "\20\0\1\216\22\0\7\7\1\0\6\7\1\217\6\7"+ + "\3\0\6\7\1\0\1\7\2\0\1\7\15\0\2\220"+ + "\1\0\1\67\1\220\1\0\6\220\5\0\2\220\6\0"+ + "\1\220\24\0\1\221\2\0\1\67\2\0\3\221\20\0"+ + "\1\221\24\0\1\222\5\0\3\222\20\0\1\222\22\0"+ + "\7\7\1\0\10\7\1\223\4\7\3\0\6\7\1\0"+ + "\1\7\2\0\1\7\15\0\2\224\1\0\1\67\1\224"+ + "\1\0\6\224\5\0\2\224\6\0\1\224\24\0\1\225"+ + "\2\0\1\67\2\0\3\225\20\0\1\225\24\0\1\226"+ + "\5\0\3\226\20\0\1\226\22\0\7\7\1\0\4\7"+ + "\1\227\10\7\3\0\6\7\1\0\1\7\2\0\1\7"+ + "\15\0\2\230\1\0\1\67\1\230\1\0\6\230\5\0"+ + "\2\230\6\0\1\230\24\0\1\231\2\0\1\67\2\0"+ + "\3\231\20\0\1\231\24\0\1\232\5\0\3\232\20\0"+ + "\1\232\22\0\7\7\1\0\12\7\1\233\2\7\3\0"+ + "\6\7\1\0\1\7\2\0\1\7\15\0\2\234\1\0"+ + "\1\67\1\234\1\0\6\234\5\0\2\234\6\0\1\234"+ + "\24\0\1\235\2\0\1\67\2\0\3\235\20\0\1\235"+ + "\24\0\1\67\5\0\3\67\20\0\1\67\22\0\7\7"+ + "\1\0\13\7\1\236\1\7\3\0\6\7\1\0\1\7"+ + "\2\0\1\7\15\0\2\237\1\0\1\67\1\237\1\0"+ + "\6\237\5\0\2\237\6\0\1\237\24\0\1\240\2\0"+ + "\1\67\2\0\3\240\20\0\1\240\22\0\5\7\1\241"+ + "\1\7\1\0\15\7\3\0\6\7\1\0\1\7\2\0"+ + "\1\7\15\0\2\242\1\0\1\67\1\242\1\0\6\242"+ + "\5\0\2\242\6\0\1\242\24\0\1\243\2\0\1\67"+ + "\2\0\3\243\20\0\1\243\22\0\7\7\1\0\3\7"+ + "\1\244\10\7\1\244\3\0\6\7\1\0\1\7\2\0"+ + "\1\7\20\0\1\67\52\0\1\245\2\0\1\67\2\0"+ + "\3\245\20\0\1\245\24\0\1\246\2\0\1\67\2\0"+ + "\3\246\20\0\1\246\24\0\1\247\2\0\1\67\2\0"+ + "\3\247\20\0\1\247\24\0\1\242\2\0\1\67\2\0"+ + "\3\242\20\0\1\242\14\0"; + + private static int [] zzUnpackTrans() { + int [] result = new int[7222]; + 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\23\1\1\11\3\1\1\0\1\1\1\11"+ + "\1\1\4\0\14\1\4\0\3\1\2\0\1\11\2\1"+ + "\1\0\12\1\1\11\1\0\3\1\2\0\1\1\1\0"+ + "\5\1\1\0\10\1\2\0\1\1\1\0\3\1\1\0"+ + "\5\1\1\0\1\11\1\1\1\0\3\1\1\0\2\1"+ + "\1\0\1\1\1\0\2\1\1\11\1\1\1\0\1\1"+ + "\1\0\4\1\1\0\3\1\1\0\2\1\2\0\2\1"+ + "\2\0\2\1\2\0\2\1\2\0\2\1\2\0\2\1"+ + "\2\0\1\1\2\0\1\1\2\0\1\1\3\0"; + + private static int [] zzUnpackAttribute() { + int [] result = new int[167]; + 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[] = new char[ZZ_BUFFERSIZE]; + + /** 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; + + /** number of newlines encountered up to the start of the matched text */ + private int yyline; + + /** the number of characters up to the start of the matched text */ + private int yychar; + + /** + * the number of characters from the last newline up to the start of the + * matched text + */ + private int yycolumn; + + /** + * 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; + + /** denotes if the user-EOF-code has already been executed */ + private boolean zzEOFDone; + + /* user code: */ + /** + * Create an empty lexer, yyrset will be called later to reset and assign + * the reader + */ + public TALLexer() { + super(); + } + + @Override + public int yychar() { + return yychar; + } + + + /** + * 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 TALLexer(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 TALLexer(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; + } + + + /** + * Refills the input buffer. + * + * @return false, iff there was new input. + * + * @exception java.io.IOException if any I/O-Error occurs + */ + private boolean zzRefill() throws java.io.IOException { + + /* first: make room (if you can) */ + if (zzStartRead > 0) { + System.arraycopy(zzBuffer, zzStartRead, + zzBuffer, 0, + zzEndRead-zzStartRead); + + /* translate stored positions */ + zzEndRead-= zzStartRead; + zzCurrentPos-= zzStartRead; + zzMarkedPos-= zzStartRead; + zzStartRead = 0; + } + + /* is the buffer big enough? */ + if (zzCurrentPos >= zzBuffer.length) { + /* if not: blow it up */ + char newBuffer[] = new char[zzCurrentPos*2]; + System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); + zzBuffer = newBuffer; + } + + /* finally: fill the buffer with new input */ + int numRead = zzReader.read(zzBuffer, zzEndRead, + zzBuffer.length-zzEndRead); + + if (numRead > 0) { + zzEndRead+= numRead; + return false; + } + // unlikely but not impossible: read 0 characters, but not at end of stream + if (numRead == 0) { + int c = zzReader.read(); + if (c == -1) { + return true; + } else { + zzBuffer[zzEndRead++] = (char) c; + return false; + } + } + + // numRead < 0 + return true; + } + + + /** + * 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(); + } + + + /** + * 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 ZZ_INITIAL. + * + * @param reader the new input stream + */ + public final void yyreset(java.io.Reader reader) { + zzReader = reader; + zzAtBOL = true; + zzAtEOF = false; + zzEOFDone = false; + zzEndRead = zzStartRead = 0; + zzCurrentPos = zzMarkedPos = 0; + yyline = yychar = yycolumn = 0; + zzLexicalState = YYINITIAL; + } + + + /** + * Returns the current lexical state. + */ + public final int yystate() { + return zzLexicalState; + } + + + /** + * Enters a new lexical state + * + * @param newState the new lexical state + */ + 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 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; + + yychar+= zzMarkedPosL-zzStartRead; + + zzAction = -1; + + zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; + + 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 8: + { return token(TokenType.STRING); + } + case 9: break; + case 6: + { return token(TokenType.KEYWORD); + } + case 10: break; + case 7: + { return token(TokenType.TYPE); + } + case 11: break; + case 2: + { return token(TokenType.OPERATOR); + } + case 12: break; + case 4: + { return token(TokenType.NUMBER); + } + case 13: break; + case 3: + { return token(TokenType.IDENTIFIER); + } + case 14: break; + case 5: + { return token(TokenType.COMMENT); + } + case 15: break; + case 1: + { + } + case 16: break; + default: + if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { + zzAtEOF = true; + { + return null; + } + } + else { + zzScanError(ZZ_NO_MATCH); + } + } + } + } + + +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/XHTMLLexer.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/XHTMLLexer.java new file mode 100644 index 000000000..af0eb5b63 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/XHTMLLexer.java @@ -0,0 +1,1520 @@ +/* The following code was generated by JFlex 1.4.3 on 21.7.10 18:14 */ + +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jsyntaxpane.lexers; + + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + + +/** + * This class is a scanner generated by + * JFlex 1.4.3 + * on 21.7.10 18:14 from the specification file + * D:/Dokumenty/Programovani/JavaSE/JPSWFDec/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/xhtml.flex + */ +public final class XHTMLLexer extends DefaultJFlexLexer { + + /** This character denotes the end of file */ + public static final int YYEOF = -1; + + /** initial size of the lookahead buffer */ + private static final int ZZ_BUFFERSIZE = 16384; + + /** lexical states */ + public static final int INSTR = 8; + public static final int YYINITIAL = 0; + public static final int COMMENT = 2; + public static final int CDATA = 4; + public static final int TAG = 6; + public static final int DOCTYPE = 10; + + /** + * 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, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5 + }; + + /** + * Translates characters to character classes + */ + private static final String ZZ_CMAP_PACKED = + "\11\0\1\1\1\2\2\0\1\2\22\0\1\1\1\4\1\104\1\110"+ + "\2\0\1\106\1\105\5\0\1\5\1\12\1\37\1\13\6\75\3\13"+ + "\1\7\1\107\1\3\1\40\1\6\1\14\1\0\1\34\1\47\1\21"+ + "\1\15\1\31\1\51\1\57\1\73\1\55\1\10\1\61\1\45\1\71"+ + "\1\53\1\17\1\27\1\63\1\41\1\43\1\23\1\65\1\67\1\100"+ + "\1\76\1\25\1\102\1\33\1\0\1\36\1\0\1\7\1\0\1\35"+ + "\1\50\1\22\1\16\1\32\1\52\1\60\1\74\1\56\1\11\1\62"+ + "\1\46\1\72\1\54\1\20\1\30\1\64\1\42\1\44\1\24\1\66"+ + "\1\70\1\101\1\77\1\26\1\103\74\0\1\12\u05a8\0\12\111\206\0"+ + "\12\111\u026c\0\12\111\166\0\12\111\166\0\12\111\166\0\12\111\166\0"+ + "\12\111\167\0\11\111\166\0\12\111\166\0\12\111\166\0\12\111\340\0"+ + "\12\111\166\0\12\111\106\0\12\111\u0116\0\12\111\u031f\0\11\111\u046e\0"+ + "\12\111\46\0\12\111\u012c\0\12\111\ue5c0\0\12\111\346\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\10\1\1\2\32\1\1\3\1\0\1\4\1\0"+ + "\4\4\2\5\1\0\2\4\1\5\11\4\11\0\1\6"+ + "\23\0\1\7\47\0\1\10\4\0\1\11\1\5\17\4"+ + "\23\0\6\4\1\5\16\4\1\12\2\0\1\13\1\0"+ + "\1\14\72\0\1\15\2\0\10\4\1\0\1\16\14\0"+ + "\1\17\32\0\16\4\1\20\55\0\5\4\26\0\3\4"+ + "\1\5\2\4\41\0\2\4\13\0\3\4\21\0\1\4"+ + "\5\0\3\4\16\0\1\4\2\0\1\21\1\22\1\0"; + + private static int [] zzUnpackAction() { + int [] result = new int[498]; + 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\u01bc\0\u03c2\0\u040c"+ + "\0\u0456\0\u04a0\0\u04ea\0\u0534\0\u057e\0\u05c8\0\u0612\0\u065c"+ + "\0\u06a6\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\u0a68\0\u0ab2\0\u0afc"+ + "\0\u01bc\0\u0b46\0\u0b90\0\u0bda\0\u0c24\0\u0c6e\0\u0cb8\0\u0d02"+ + "\0\u0d4c\0\u0d96\0\u0de0\0\u0e2a\0\u0e74\0\u0ebe\0\u0f08\0\u0f52"+ + "\0\u0f9c\0\u0fe6\0\u1030\0\u107a\0\u10c4\0\u110e\0\u1158\0\u11a2"+ + "\0\u11ec\0\u029a\0\u1236\0\u1280\0\u032e\0\u12ca\0\u1314\0\u03c2"+ + "\0\u01bc\0\u135e\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\u01bc\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\u1f38\0\u1f82\0\u1fcc\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\u0a1e\0\u01bc\0\u0a68\0\u23d8\0\u2422"+ + "\0\u246c\0\u24b6\0\u0b90\0\u2500\0\u254a\0\u2594\0\u25de\0\u2628"+ + "\0\u2672\0\u26bc\0\u2706\0\u2750\0\u279a\0\u27e4\0\u282e\0\u2878"+ + "\0\u28c2\0\u290c\0\u2956\0\u29a0\0\u29ea\0\u2a34\0\u2a7e\0\u2ac8"+ + "\0\u2b12\0\u2b5c\0\u2ba6\0\u2bf0\0\u2c3a\0\u2c84\0\u2cce\0\u2d18"+ + "\0\u2d62\0\u2dac\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\u349c\0\u01bc\0\u34e6\0\u3530\0\u01bc\0\u357a\0\u01bc"+ + "\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\u3986\0\u39d0\0\u3a1a"+ + "\0\u3a64\0\u3aae\0\u3af8\0\u3b42\0\u3b8c\0\u3bd6\0\u3c20\0\u3c6a"+ + "\0\u3cb4\0\u3cfe\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\u01bc\0\u4688\0\u46d2\0\u471c\0\u4766\0\u47b0"+ + "\0\u47fa\0\u4844\0\u488e\0\u48d8\0\u4922\0\u496c\0\u01bc\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\u01bc\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\u5218\0\u5262\0\u52ac"+ + "\0\u52f6\0\u5340\0\u538a\0\u53d4\0\u541e\0\u5468\0\u54b2\0\u54fc"+ + "\0\u5546\0\u5590\0\u55da\0\u5624\0\u566e\0\u56b8\0\u5702\0\u574c"+ + "\0\u5796\0\u57e0\0\u582a\0\u5874\0\u01bc\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\u6b88\0\u6bd2"+ + "\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\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\0\u79b2"+ + "\0\u79fc\0\u7a46\0\u7a90\0\u7ada\0\u7b24\0\u7b6e\0\u7bb8\0\u7c02"+ + "\0\u7c4c\0\u7c96\0\u7ce0\0\u7d2a\0\u7d74\0\u7dbe\0\u7e08\0\u7e52"+ + "\0\u7e9c\0\u7ee6\0\u7f30\0\u7f7a\0\u7fc4\0\u800e\0\u8058\0\u80a2"+ + "\0\u80ec\0\u8136\0\u8180\0\u81ca\0\u8214\0\u825e\0\u82a8\0\u82f2"+ + "\0\u833c\0\u8386\0\u83d0\0\u841a\0\u8464\0\u84ae\0\u84f8\0\u8542"+ + "\0\u858c\0\u85d6\0\u8620\0\u866a\0\u86b4\0\u86fe\0\u8748\0\u8792"+ + "\0\u87dc\0\u8826\0\u8870\0\u88ba\0\u8904\0\u894e\0\u8998\0\u01bc"+ + "\0\u01bc\0\u89e2"; + + private static int [] zzUnpackRowMap() { + int [] result = new int[498]; + 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\7\1\10\102\7\1\11\3\7\5\12\1\13\104\12"+ + "\36\14\1\15\53\14\6\7\1\16\3\17\3\7\2\20"+ + "\2\21\2\22\2\23\2\17\2\24\2\25\1\7\2\26"+ + "\1\7\1\27\1\7\2\30\2\31\2\32\2\33\2\34"+ + "\2\35\2\36\2\37\4\17\2\40\2\41\2\42\2\43"+ + "\1\7\2\17\2\44\2\17\1\45\1\46\13\7\3\17"+ + "\2\7\1\47\16\17\1\7\2\17\3\7\34\17\1\7"+ + "\6\17\1\45\1\46\4\7\6\50\1\51\103\50\116\0"+ + "\1\52\2\0\3\53\2\0\1\54\2\55\2\56\2\57"+ + "\2\60\2\53\2\61\2\53\1\0\2\62\1\0\1\63"+ + "\1\0\2\53\2\64\2\65\2\66\2\67\2\70\2\71"+ + "\2\53\2\72\2\53\2\73\2\74\2\75\2\76\1\0"+ + "\2\77\4\53\17\0\1\100\4\0\1\100\1\0\1\100"+ + "\1\0\1\100\1\0\1\100\1\0\1\100\1\0\1\100"+ + "\1\0\1\100\2\0\1\100\4\0\1\100\1\0\1\100"+ + "\1\0\1\100\1\0\1\100\1\0\1\100\1\0\1\100"+ + "\1\0\1\100\1\0\1\100\1\0\1\100\1\0\1\100"+ + "\1\0\1\100\1\0\1\100\1\0\1\100\1\0\1\100"+ + "\2\0\1\100\1\0\1\100\1\0\1\100\4\0\1\101"+ + "\1\0\5\102\1\103\111\102\1\104\104\102\36\105\1\106"+ + "\111\105\1\107\53\105\5\0\1\110\1\0\5\110\1\0"+ + "\16\110\1\0\2\110\2\0\1\111\43\110\13\0\1\110"+ + "\1\0\5\110\1\0\14\110\2\112\1\0\2\113\2\0"+ + "\1\111\14\110\2\114\25\110\13\0\1\110\1\0\5\110"+ + "\1\0\16\110\1\0\2\110\2\0\1\111\6\110\2\115"+ + "\33\110\13\0\1\110\1\0\5\110\1\0\2\110\2\116"+ + "\10\110\2\117\1\0\2\110\2\0\1\111\4\110\2\120"+ + "\6\110\2\121\14\110\2\122\7\110\13\0\1\110\1\0"+ + "\5\110\1\0\10\110\2\123\2\110\2\124\1\0\2\125"+ + "\2\0\1\111\43\110\13\0\1\110\1\0\5\110\1\0"+ + "\16\110\1\0\2\110\2\0\1\111\2\126\41\110\13\0"+ + "\1\110\1\0\5\110\1\0\16\110\1\0\2\110\2\0"+ + "\1\111\12\110\2\127\27\110\13\0\1\110\1\0\5\110"+ + "\1\0\4\110\2\130\10\110\1\0\2\110\2\0\1\111"+ + "\2\131\2\110\2\132\2\133\25\110\2\134\4\110\14\0"+ + "\1\135\110\0\1\110\1\0\5\110\1\0\2\110\2\136"+ + "\10\110\2\137\1\0\2\110\2\0\1\111\24\110\2\140"+ + "\15\110\13\0\1\110\1\0\5\110\1\0\4\110\2\141"+ + "\2\142\2\110\2\143\2\144\1\0\2\110\2\0\1\111"+ + "\2\145\12\110\2\146\6\110\2\147\4\110\2\150\7\110"+ + "\13\0\1\110\1\0\5\110\1\0\2\110\2\151\12\110"+ + "\1\0\2\152\2\0\1\111\14\110\2\153\25\110\13\0"+ + "\1\110\1\0\5\110\1\0\2\110\2\154\12\110\1\0"+ + "\2\155\2\0\1\111\16\110\2\156\23\110\13\0\1\110"+ + "\1\0\5\110\1\0\2\110\2\157\12\110\1\0\2\160"+ + "\2\0\1\111\2\161\41\110\13\0\1\110\1\0\5\110"+ + "\1\0\2\110\2\162\12\110\1\0\2\163\2\0\1\111"+ + "\43\110\13\0\1\110\1\0\5\110\1\0\2\164\14\110"+ + "\1\0\2\110\2\0\1\111\2\110\2\165\37\110\13\0"+ + "\1\110\1\0\5\110\1\0\16\110\1\0\2\110\2\0"+ + "\1\111\24\110\2\166\15\110\13\0\1\110\1\0\5\110"+ + "\1\0\16\110\1\0\2\110\2\0\1\111\2\167\2\170"+ + "\37\110\13\0\1\110\1\0\5\110\1\0\14\110\2\171"+ + "\1\0\2\172\2\0\1\111\2\110\2\173\2\174\35\110"+ + "\13\0\1\110\1\0\5\110\1\0\14\110\2\175\1\0"+ + "\2\176\2\0\1\111\24\110\2\177\15\110\13\0\1\110"+ + "\1\0\5\110\1\0\14\110\2\200\1\0\2\110\2\0"+ + "\1\111\2\201\2\173\37\110\13\0\1\110\1\0\5\110"+ + "\1\0\16\110\1\0\2\110\2\0\1\111\2\202\12\110"+ + "\2\203\25\110\6\0\2\204\1\0\101\204\1\205\5\204"+ + "\2\206\1\0\102\206\1\205\4\206\6\0\1\51\103\0"+ + "\6\50\1\0\103\50\5\0\1\207\7\0\2\210\14\0"+ + "\1\211\63\0\1\53\1\0\5\53\1\0\16\53\1\0"+ + "\2\53\3\0\43\53\15\0\3\212\3\0\16\212\1\0"+ + "\2\212\3\0\34\212\1\0\6\212\13\0\1\53\1\0"+ + "\5\53\1\0\2\213\4\53\2\213\6\53\1\0\2\53"+ + "\3\0\4\53\2\213\2\53\2\214\2\53\2\215\25\53"+ + "\13\0\1\53\1\0\5\53\1\0\12\53\2\216\2\53"+ + "\1\0\2\53\3\0\4\53\2\213\35\53\13\0\1\53"+ + "\1\0\5\53\1\0\2\53\2\217\10\53\2\220\1\0"+ + "\2\221\3\0\14\53\2\222\25\53\13\0\1\53\1\0"+ + "\5\53\1\0\2\213\4\53\2\213\4\53\2\223\1\0"+ + "\2\224\3\0\2\213\12\53\2\225\14\53\2\213\7\53"+ + "\13\0\1\53\1\0\5\53\1\0\16\53\1\0\2\226"+ + "\3\0\2\227\41\53\13\0\1\53\1\0\5\53\1\0"+ + "\2\230\10\53\2\231\2\53\1\0\2\53\3\0\2\232"+ + "\41\53\15\0\3\233\3\0\2\234\2\235\2\236\2\237"+ + "\2\233\2\240\2\233\1\0\2\241\3\0\2\233\2\242"+ + "\2\243\2\244\2\245\2\246\2\247\2\233\2\250\2\233"+ + "\2\251\2\252\2\253\2\254\1\0\2\255\4\233\13\0"+ + "\1\53\1\0\5\53\1\0\4\53\2\256\2\257\2\53"+ + "\2\260\2\261\1\0\2\77\3\0\24\53\2\262\2\53"+ + "\2\263\11\53\13\0\1\53\1\0\5\53\1\0\16\53"+ + "\1\0\2\53\3\0\14\53\2\264\25\53\13\0\1\53"+ + "\1\0\5\53\1\0\2\53\2\265\12\53\1\0\2\266"+ + "\3\0\2\213\2\53\2\267\6\53\2\270\25\53\13\0"+ + "\1\53\1\0\5\53\1\0\2\53\2\271\12\53\1\0"+ + "\2\53\3\0\43\53\13\0\1\53\1\0\5\53\1\0"+ + "\2\53\2\272\12\53\1\0\2\53\3\0\43\53\13\0"+ + "\1\53\1\0\5\53\1\0\16\53\1\0\2\53\3\0"+ + "\2\53\2\273\6\53\2\274\14\53\2\270\11\53\13\0"+ + "\1\53\1\0\5\53\1\0\16\53\1\0\2\53\3\0"+ + "\6\53\2\275\33\53\13\0\1\53\1\0\5\53\1\0"+ + "\16\53\1\0\2\53\3\0\4\53\2\213\35\53\13\0"+ + "\1\53\1\0\5\53\1\0\16\53\1\0\2\276\3\0"+ + "\43\53\13\0\1\53\1\0\5\53\1\0\14\53\2\277"+ + "\1\0\2\300\3\0\43\53\13\0\1\53\1\0\5\53"+ + "\1\0\6\53\2\301\4\53\2\302\1\0\2\53\3\0"+ + "\2\213\32\53\1\213\6\53\13\0\1\53\1\0\5\53"+ + "\1\0\16\53\1\0\2\53\3\0\30\53\2\300\11\53"+ + "\17\0\1\100\4\0\1\100\1\0\1\100\1\0\1\100"+ + "\1\0\1\100\1\0\1\100\1\0\1\100\1\0\1\100"+ + "\2\0\1\100\4\0\1\100\1\0\1\100\1\0\1\100"+ + "\1\0\1\100\1\0\1\100\1\0\1\100\1\0\1\100"+ + "\1\0\1\100\1\0\1\100\1\0\1\100\1\0\1\100"+ + "\1\0\1\100\1\0\1\100\1\0\1\100\2\0\1\100"+ + "\1\0\1\100\1\0\1\100\3\0\1\303\15\0\1\304"+ + "\61\0\1\304\13\0\1\304\5\102\1\305\111\102\1\305"+ + "\1\306\103\102\36\105\1\307\61\105\1\310\27\105\1\307"+ + "\53\105\5\0\1\110\1\0\5\110\1\0\4\110\2\311"+ + "\10\110\1\0\2\110\2\0\1\111\10\110\2\312\31\110"+ + "\13\0\1\110\1\0\5\110\1\0\6\110\2\313\6\110"+ + "\1\0\2\110\2\0\1\111\43\110\13\0\1\110\1\0"+ + "\5\110\1\0\16\110\1\0\2\110\2\0\1\111\2\164"+ + "\2\314\37\110\13\0\1\110\1\0\1\110\2\315\2\110"+ + "\1\0\16\110\1\0\2\110\2\0\1\111\43\110\13\0"+ + "\1\110\1\0\5\110\1\0\2\316\2\317\12\110\1\0"+ + "\2\110\2\0\1\111\4\110\2\320\4\110\2\321\14\110"+ + "\2\322\11\110\13\0\1\110\1\0\5\110\1\0\16\110"+ + "\1\0\2\110\2\0\1\111\4\110\2\323\35\110\13\0"+ + "\1\110\1\0\5\110\1\0\14\110\2\324\1\0\2\325"+ + "\2\0\1\111\43\110\13\0\1\110\1\0\5\110\1\0"+ + "\6\110\2\326\6\110\1\0\2\110\2\0\1\111\43\110"+ + "\13\0\1\110\1\0\5\110\1\0\14\110\2\327\1\0"+ + "\2\330\2\0\1\111\43\110\13\0\1\110\1\0\5\110"+ + "\1\0\12\110\2\326\2\110\1\0\2\110\2\0\1\111"+ + "\43\110\13\0\1\110\1\0\5\110\1\0\16\110\1\0"+ + "\2\110\2\0\1\111\35\110\2\331\4\110\13\0\1\110"+ + "\1\0\5\110\1\0\16\110\1\0\2\110\2\0\1\111"+ + "\2\332\4\110\2\333\33\110\13\0\1\110\1\0\5\110"+ + "\1\0\2\110\2\334\12\110\1\0\2\110\2\0\1\111"+ + "\43\110\13\0\1\110\1\0\5\110\1\0\4\110\2\335"+ + "\10\110\1\0\2\110\2\0\1\111\43\110\13\0\1\110"+ + "\1\0\5\110\1\0\4\110\2\336\2\337\6\110\1\0"+ + "\2\110\2\0\1\111\43\110\13\0\1\110\1\0\5\110"+ + "\1\0\4\110\2\340\10\110\1\0\2\110\2\0\1\111"+ + "\43\110\13\0\1\110\1\0\5\110\1\0\6\110\2\164"+ + "\6\110\1\0\2\110\2\0\1\111\14\110\2\341\25\110"+ + "\13\0\1\110\1\0\5\110\1\0\16\110\1\0\2\110"+ + "\2\0\1\111\6\110\2\157\33\110\13\0\1\110\1\0"+ + "\5\110\1\0\16\110\1\0\2\110\2\0\1\111\14\110"+ + "\2\342\25\110\13\0\1\110\1\0\5\110\1\0\16\110"+ + "\1\0\2\110\2\0\1\111\37\110\2\343\2\110\13\0"+ + "\1\110\1\0\5\110\1\0\16\110\1\0\2\344\2\0"+ + "\1\111\4\110\2\164\20\110\2\164\13\110\13\0\1\110"+ + "\1\0\5\110\1\0\16\110\1\0\2\110\2\0\1\111"+ + "\4\110\2\345\35\110\13\0\1\110\1\0\5\110\1\0"+ + "\2\110\2\123\12\110\1\0\2\110\2\0\1\111\2\346"+ + "\30\110\2\347\7\110\13\0\1\110\1\0\5\110\1\0"+ + "\10\110\2\350\4\110\1\0\2\351\2\0\1\111\43\110"+ + "\13\0\1\110\1\0\5\110\1\0\16\110\1\0\2\352"+ + "\2\0\1\111\43\110\13\0\1\110\1\0\5\110\1\0"+ + "\16\110\1\0\2\110\2\0\1\111\4\110\2\353\35\110"+ + "\13\0\1\110\1\0\5\110\1\0\4\110\2\164\10\110"+ + "\1\0\2\110\2\0\1\111\43\110\13\0\1\110\1\0"+ + "\5\110\1\0\16\110\1\0\2\110\2\0\1\111\41\110"+ + "\2\326\13\0\1\110\1\0\5\110\1\0\16\110\1\0"+ + "\2\110\2\0\1\111\30\110\2\354\11\110\13\0\1\110"+ + "\1\0\5\110\1\0\16\110\1\0\2\123\2\0\1\111"+ + "\43\110\13\0\1\110\1\0\5\110\1\0\16\110\1\0"+ + "\2\110\2\0\1\111\12\110\2\355\23\110\2\356\2\110"+ + "\13\0\1\110\1\0\5\110\1\0\16\110\1\0\2\110"+ + "\2\0\1\111\12\110\2\357\27\110\13\0\1\110\1\0"+ + "\5\110\1\0\16\110\1\0\2\110\2\0\1\111\12\110"+ + "\2\360\27\110\13\0\1\110\1\0\5\110\1\0\16\110"+ + "\1\0\2\110\2\0\1\111\2\361\41\110\13\0\1\110"+ + "\1\0\5\110\1\0\4\110\2\362\10\110\1\0\2\110"+ + "\2\0\1\111\43\110\13\0\1\110\1\0\5\110\1\0"+ + "\4\110\2\363\10\110\1\0\2\110\2\0\1\111\43\110"+ + "\13\0\1\110\1\0\5\110\1\0\16\110\1\0\2\110"+ + "\2\0\1\111\2\164\41\110\13\0\1\110\1\0\5\110"+ + "\1\0\4\110\2\326\10\110\1\0\2\110\2\0\1\111"+ + "\43\110\13\0\1\110\1\0\5\110\1\0\16\110\1\0"+ + "\2\163\2\0\1\111\43\110\13\0\1\110\1\0\5\110"+ + "\1\0\16\110\1\0\2\110\2\0\1\111\32\110\2\364"+ + "\3\110\2\365\2\110\13\0\1\110\1\0\5\110\1\0"+ + "\16\110\1\0\2\110\2\0\1\111\30\110\2\326\11\110"+ + "\13\0\1\110\1\0\5\110\1\0\16\110\1\0\2\110"+ + "\2\0\1\303\43\110\13\0\1\110\1\0\5\110\1\0"+ + "\16\110\1\0\2\110\2\0\1\111\30\110\2\202\11\110"+ + "\13\0\1\110\1\0\5\110\1\0\6\110\2\366\6\110"+ + "\1\0\2\110\2\0\1\111\43\110\13\0\1\110\1\0"+ + "\5\110\1\0\16\110\1\0\2\110\2\0\1\111\4\110"+ + "\2\164\35\110\13\0\1\110\1\0\5\110\1\0\14\110"+ + "\2\165\1\0\2\110\2\0\1\111\43\110\13\0\1\110"+ + "\1\0\5\110\1\0\16\110\1\0\2\110\2\0\1\111"+ + "\2\367\41\110\13\0\1\110\1\0\5\110\1\0\16\110"+ + "\1\0\2\110\2\0\1\111\4\110\2\370\35\110\13\0"+ + "\1\110\1\0\5\110\1\0\12\110\2\371\2\110\1\0"+ + "\2\110\2\0\1\111\43\110\13\0\1\110\1\0\5\110"+ + "\1\0\16\110\1\0\2\110\2\0\1\111\14\110\2\153"+ + "\25\110\13\0\1\110\1\0\5\110\1\0\6\110\2\372"+ + "\6\110\1\0\2\110\2\0\1\111\43\110\13\0\1\110"+ + "\1\0\5\110\1\0\16\110\1\0\2\110\2\0\1\111"+ + "\2\373\33\110\2\374\4\110\13\0\1\110\1\0\5\110"+ + "\1\0\16\110\1\0\2\110\2\0\1\111\4\110\2\375"+ + "\35\110\13\0\1\110\1\0\5\110\1\0\16\110\1\0"+ + "\2\376\2\0\1\111\14\110\2\377\25\110\13\0\1\110"+ + "\1\0\5\110\1\0\14\110\2\u0100\1\0\2\110\2\0"+ + "\1\111\43\110\13\0\1\110\1\0\5\110\1\0\16\110"+ + "\1\0\2\u0101\2\0\1\111\43\110\13\0\1\110\1\0"+ + "\5\110\1\0\2\u0102\14\110\1\0\2\110\2\0\1\111"+ + "\43\110\13\0\1\u0103\123\0\2\u0104\112\0\2\u0105\74\0"+ + "\1\212\1\0\5\212\1\0\16\212\1\0\2\212\3\0"+ + "\43\212\13\0\1\53\1\0\5\53\1\0\16\53\1\0"+ + "\2\53\3\0\12\53\2\213\27\53\13\0\1\53\1\0"+ + "\5\53\1\0\16\53\1\0\2\53\3\0\2\213\24\53"+ + "\2\213\13\53\13\0\1\53\1\0\5\53\1\0\6\53"+ + "\2\u0106\6\53\1\0\2\53\3\0\43\53\13\0\1\53"+ + "\1\0\5\53\1\0\2\227\14\53\1\0\2\53\3\0"+ + "\43\53\13\0\1\53\1\0\5\53\1\0\16\53\1\0"+ + "\2\53\3\0\12\53\2\u0107\27\53\13\0\1\53\1\0"+ + "\5\53\1\0\12\53\2\216\2\53\1\0\2\53\3\0"+ + "\43\53\13\0\1\53\1\0\5\53\1\0\6\53\2\227"+ + "\6\53\1\0\2\53\3\0\43\53\13\0\1\53\1\0"+ + "\5\53\1\0\16\53\1\0\2\53\3\0\35\53\2\u0108"+ + "\4\53\13\0\1\53\1\0\5\53\1\0\16\53\1\0"+ + "\2\53\3\0\6\53\2\u0109\33\53\13\0\1\53\1\0"+ + "\5\53\1\0\6\53\2\u0109\6\53\1\0\2\53\3\0"+ + "\43\53\13\0\1\53\1\0\5\53\1\0\16\53\1\0"+ + "\2\53\3\0\2\u010a\41\53\13\0\1\53\1\0\5\53"+ + "\1\0\14\53\2\213\1\0\2\53\3\0\43\53\13\0"+ + "\1\53\1\0\5\53\1\0\2\u010b\14\53\1\0\2\53"+ + "\3\0\43\53\13\0\1\53\1\0\5\53\1\0\12\53"+ + "\2\u010c\2\53\1\0\2\53\3\0\43\53\13\0\1\53"+ + "\1\0\5\53\1\0\14\53\2\u010d\1\0\2\53\3\0"+ + "\43\53\7\0\2\u010e\2\0\1\233\1\u010f\5\233\1\0"+ + "\16\233\1\0\2\233\3\0\43\233\7\0\2\u010e\2\0"+ + "\1\233\1\u010f\5\233\1\0\2\u0110\4\233\2\u0110\6\233"+ + "\1\0\2\233\3\0\4\233\2\u0110\2\233\2\u0111\2\233"+ + "\2\u0112\25\233\7\0\2\u010e\2\0\1\233\1\u010f\5\233"+ + "\1\0\12\233\2\u0113\2\233\1\0\2\233\3\0\4\233"+ + "\2\u0110\35\233\7\0\2\u010e\2\0\1\233\1\u010f\5\233"+ + "\1\0\2\233\2\u0114\10\233\2\u0115\1\0\2\u0116\3\0"+ + "\14\233\2\u0117\25\233\7\0\2\u010e\2\0\1\233\1\u010f"+ + "\5\233\1\0\2\u0110\4\233\2\u0110\4\233\2\u0118\1\0"+ + "\2\u0119\3\0\2\u0110\12\233\2\u011a\14\233\2\u0110\7\233"+ + "\7\0\2\u011b\2\0\1\233\1\u011c\5\233\1\0\16\233"+ + "\1\0\2\u011d\3\0\2\u011e\41\233\7\0\2\u011b\2\0"+ + "\1\233\1\u011c\5\233\1\0\2\u011f\10\233\2\u0120\2\233"+ + "\1\0\2\233\3\0\2\u0121\41\233\7\0\2\u010e\2\0"+ + "\1\233\1\u010f\5\233\1\0\4\233\2\u0122\2\u0123\2\233"+ + "\2\u0124\2\u0125\1\0\2\255\3\0\24\233\2\u0126\2\233"+ + "\2\u0127\11\233\7\0\2\u010e\2\0\1\233\1\u010f\5\233"+ + "\1\0\16\233\1\0\2\233\3\0\14\233\2\u0128\25\233"+ + "\7\0\2\u011b\2\0\1\233\1\u011c\5\233\1\0\2\233"+ + "\2\u0129\12\233\1\0\2\u012a\3\0\2\u0110\2\233\2\u012b"+ + "\6\233\2\u012c\25\233\7\0\2\u010e\2\0\1\233\1\u010f"+ + "\5\233\1\0\2\233\2\u012d\12\233\1\0\2\233\3\0"+ + "\43\233\7\0\2\u010e\2\0\1\233\1\u010f\5\233\1\0"+ + "\2\233\2\u012e\12\233\1\0\2\233\3\0\43\233\7\0"+ + "\2\u010e\2\0\1\233\1\u010f\5\233\1\0\16\233\1\0"+ + "\2\233\3\0\2\233\2\u012f\6\233\2\u0130\14\233\2\u012c"+ + "\11\233\7\0\2\u010e\2\0\1\233\1\u010f\5\233\1\0"+ + "\16\233\1\0\2\233\3\0\6\233\2\u0131\33\233\7\0"+ + "\2\u010e\2\0\1\233\1\u010f\5\233\1\0\16\233\1\0"+ + "\2\233\3\0\4\233\2\u0110\35\233\7\0\2\u010e\2\0"+ + "\1\233\1\u010f\5\233\1\0\16\233\1\0\2\u0132\3\0"+ + "\43\233\7\0\2\u010e\2\0\1\233\1\u010f\5\233\1\0"+ + "\14\233\2\u0133\1\0\2\u0134\3\0\43\233\7\0\2\u010e"+ + "\2\0\1\233\1\u010f\5\233\1\0\6\233\2\u0135\4\233"+ + "\2\u0136\1\0\2\233\3\0\2\u0110\32\233\1\u0110\6\233"+ + "\7\0\2\u010e\2\0\1\233\1\u010f\5\233\1\0\16\233"+ + "\1\0\2\233\3\0\30\233\2\u0134\11\233\13\0\1\53"+ + "\1\0\5\53\1\0\16\53\1\0\2\53\3\0\2\u0137"+ + "\41\53\13\0\1\53\1\0\5\53\1\0\10\53\2\u0109"+ + "\4\53\1\0\2\53\3\0\2\u0138\41\53\13\0\1\53"+ + "\1\0\5\53\1\0\16\53\1\0\2\214\3\0\43\53"+ + "\13\0\1\53\1\0\5\53\1\0\16\53\1\0\2\53"+ + "\3\0\4\53\2\u0139\35\53\13\0\1\53\1\0\5\53"+ + "\1\0\12\53\2\213\2\53\1\0\2\53\3\0\6\53"+ + "\2\213\33\53\13\0\1\53\1\0\5\53\1\0\16\53"+ + "\1\0\2\u013a\3\0\43\53\13\0\1\53\1\0\5\53"+ + "\1\0\16\53\1\0\2\53\3\0\12\53\2\u013b\27\53"+ + "\13\0\1\53\1\0\5\53\1\0\2\u013c\14\53\1\0"+ + "\2\53\3\0\43\53\13\0\1\53\1\0\5\53\1\0"+ + "\16\53\1\0\2\53\3\0\2\53\2\u013d\37\53\13\0"+ + "\1\53\1\0\5\53\1\0\2\53\2\u013e\12\53\1\0"+ + "\2\53\3\0\43\53\13\0\1\53\1\0\5\53\1\0"+ + "\16\53\1\0\2\53\3\0\16\53\2\213\23\53\13\0"+ + "\1\53\1\0\5\53\1\0\16\53\1\0\2\53\3\0"+ + "\2\u013f\10\53\2\u0140\27\53\13\0\1\53\1\0\5\53"+ + "\1\0\16\53\1\0\2\53\3\0\2\53\2\u0141\37\53"+ + "\13\0\1\53\1\0\5\53\1\0\16\53\1\0\2\53"+ + "\3\0\14\53\2\u0142\25\53\13\0\1\53\1\0\5\53"+ + "\1\0\12\53\2\u0143\2\53\1\0\2\53\3\0\43\53"+ + "\13\0\1\53\1\0\5\53\1\0\2\213\14\53\1\0"+ + "\2\53\3\0\43\53\13\0\1\53\1\0\5\53\1\0"+ + "\16\53\1\0\2\53\3\0\2\213\41\53\13\0\1\53"+ + "\1\0\5\53\1\0\6\53\2\u010d\6\53\1\0\2\53"+ + "\3\0\12\53\2\u0144\27\53\13\0\1\53\1\0\5\53"+ + "\1\0\12\53\2\213\2\53\1\0\2\53\3\0\43\53"+ + "\13\0\1\53\1\0\5\53\1\0\16\53\1\0\2\53"+ + "\3\0\30\53\2\73\11\53\13\0\1\53\1\0\5\53"+ + "\1\0\16\53\1\0\2\275\3\0\43\53\21\0\1\304"+ + "\61\0\1\304\11\0\1\303\1\0\1\304\5\102\1\305"+ + "\1\u0145\103\102\6\105\1\u0145\27\105\1\307\53\105\5\0"+ + "\1\110\1\0\5\110\1\0\16\110\1\0\2\110\2\0"+ + "\1\111\4\110\2\u0146\35\110\13\0\1\110\1\0\5\110"+ + "\1\0\14\110\2\157\1\0\2\110\2\0\1\111\43\110"+ + "\13\0\1\110\1\0\5\110\1\0\14\110\2\u0147\1\0"+ + "\2\164\2\0\1\111\43\110\13\0\1\110\1\0\5\110"+ + "\1\0\16\110\1\0\2\u0148\2\0\1\111\43\110\13\0"+ + "\1\110\1\0\5\110\1\0\14\110\2\u0149\1\0\2\110"+ + "\2\0\1\111\43\110\13\0\1\110\1\0\5\110\1\0"+ + "\14\110\2\u014a\1\0\2\110\2\0\1\111\43\110\13\0"+ + "\1\110\1\0\5\110\1\0\16\110\1\0\2\110\2\0"+ + "\1\111\2\u014b\41\110\13\0\1\110\1\0\5\110\1\0"+ + "\2\110\2\157\12\110\1\0\2\110\2\0\1\111\2\110"+ + "\2\u014c\37\110\13\0\1\110\1\0\5\110\1\0\6\110"+ + "\2\u014d\6\110\1\0\2\110\2\0\1\111\43\110\13\0"+ + "\1\110\1\0\5\110\1\0\12\110\2\u014e\2\110\1\0"+ + "\2\110\2\0\1\111\43\110\13\0\1\110\1\0\5\110"+ + "\1\0\16\110\1\0\2\110\2\0\1\111\4\110\2\u014f"+ + "\35\110\13\0\1\110\1\0\5\110\1\0\16\110\1\0"+ + "\2\157\2\0\1\111\43\110\13\0\1\110\1\0\5\110"+ + "\1\0\16\110\1\0\2\110\2\0\1\111\2\110\2\u0150"+ + "\37\110\13\0\1\110\1\0\5\110\1\0\14\110\2\164"+ + "\1\0\2\110\2\0\1\111\43\110\13\0\1\110\1\0"+ + "\5\110\1\0\4\110\2\u0151\10\110\1\0\2\110\2\0"+ + "\1\111\43\110\13\0\1\110\1\0\5\110\1\0\16\110"+ + "\1\0\2\110\2\0\1\111\2\u0152\41\110\13\0\1\110"+ + "\1\0\5\110\1\0\6\110\2\164\6\110\1\0\2\110"+ + "\2\0\1\111\43\110\13\0\1\110\1\0\5\110\1\0"+ + "\16\110\1\0\2\110\2\0\1\111\16\110\2\u0153\23\110"+ + "\13\0\1\110\1\0\5\110\1\0\16\110\1\0\2\110"+ + "\2\0\1\111\14\110\2\u0154\25\110\13\0\1\110\1\0"+ + "\5\110\1\0\16\110\1\0\2\110\2\0\1\111\10\110"+ + "\2\u0155\16\110\2\u0156\11\110\13\0\1\110\1\0\5\110"+ + "\1\0\6\110\2\u0157\6\110\1\0\2\110\2\0\1\111"+ + "\43\110\13\0\1\110\1\0\5\110\1\0\14\110\2\u0158"+ + "\1\0\2\110\2\0\1\111\43\110\13\0\1\110\1\0"+ + "\5\110\1\0\16\110\1\0\2\110\2\0\1\111\14\110"+ + "\2\u0159\25\110\13\0\1\110\1\0\5\110\1\0\16\110"+ + "\1\0\2\110\2\0\1\111\32\110\2\u015a\7\110\13\0"+ + "\1\110\1\0\5\110\1\0\16\110\1\0\2\110\2\0"+ + "\1\111\12\110\2\360\2\110\2\352\23\110\13\0\1\110"+ + "\1\0\5\110\1\0\16\110\1\0\2\110\2\0\1\111"+ + "\2\110\2\164\37\110\13\0\1\110\1\0\5\110\1\0"+ + "\16\110\1\0\2\110\2\0\1\111\2\110\2\u014c\37\110"+ + "\13\0\1\110\1\0\5\110\1\0\2\u015b\14\110\1\0"+ + "\2\110\2\0\1\111\43\110\13\0\1\110\1\0\5\110"+ + "\1\0\14\110\2\342\1\0\2\110\2\0\1\111\43\110"+ + "\13\0\1\110\1\0\5\110\1\0\2\110\2\u015c\12\110"+ + "\1\0\2\110\2\0\1\111\43\110\13\0\1\110\1\0"+ + "\5\110\1\0\14\110\2\163\1\0\2\110\2\0\1\111"+ + "\43\110\13\0\1\110\1\0\5\110\1\0\16\110\1\0"+ + "\2\110\2\0\1\111\4\110\2\326\35\110\13\0\1\110"+ + "\1\0\5\110\1\0\16\110\1\0\2\110\2\0\1\111"+ + "\2\331\10\110\2\u015d\27\110\13\0\1\110\1\0\5\110"+ + "\1\0\16\110\1\0\2\110\2\0\1\111\12\110\2\164"+ + "\27\110\13\0\1\110\1\0\5\110\1\0\14\110\2\u015e"+ + "\1\0\2\110\2\0\1\111\43\110\13\0\1\110\1\0"+ + "\5\110\1\0\16\110\1\0\2\110\2\0\1\111\30\110"+ + "\2\u015f\11\110\13\0\1\110\1\0\5\110\1\0\16\110"+ + "\1\0\2\110\2\0\1\111\16\110\2\u0160\23\110\13\0"+ + "\1\110\1\0\5\110\1\0\16\110\1\0\2\110\2\0"+ + "\1\111\2\110\2\u0161\37\110\13\0\1\110\1\0\5\110"+ + "\1\0\16\110\1\0\2\110\2\0\1\111\16\110\2\u0162"+ + "\23\110\13\0\1\110\1\0\5\110\1\0\16\110\1\0"+ + "\2\110\2\0\1\111\20\110\2\164\21\110\13\0\1\110"+ + "\1\0\5\110\1\0\2\u0163\14\110\1\0\2\110\2\0"+ + "\1\111\43\110\13\0\1\110\1\0\5\110\1\0\16\110"+ + "\1\0\2\110\2\0\1\111\20\110\2\u0164\21\110\13\0"+ + "\1\110\1\0\5\110\1\0\2\110\2\u0165\12\110\1\0"+ + "\2\110\2\0\1\111\43\110\13\0\1\110\1\0\5\110"+ + "\1\0\16\110\1\0\2\110\2\0\1\111\2\u0166\41\110"+ + "\13\0\1\110\1\0\5\110\1\0\16\110\1\0\2\110"+ + "\2\0\1\111\2\202\41\110\13\0\1\110\1\0\5\110"+ + "\1\0\6\110\2\312\6\110\1\0\2\110\2\0\1\111"+ + "\43\110\13\0\1\110\1\0\5\110\1\0\16\110\1\0"+ + "\2\110\2\0\1\111\2\110\2\337\37\110\13\0\1\110"+ + "\1\0\5\110\1\0\16\110\1\0\2\110\2\0\1\111"+ + "\14\110\2\u0167\6\110\2\u0168\15\110\13\0\1\110\1\0"+ + "\5\110\1\0\16\110\1\0\2\160\2\0\1\111\43\110"+ + "\13\0\1\110\1\0\5\110\1\0\16\110\1\0\2\110"+ + "\2\0\1\111\32\110\2\u0169\7\110\13\0\1\110\1\0"+ + "\5\110\1\0\16\110\1\0\2\110\2\0\1\111\16\110"+ + "\2\u016a\23\110\13\0\1\110\1\0\5\110\1\0\16\110"+ + "\1\0\2\110\2\0\1\111\4\110\2\u016b\35\110\13\0"+ + "\1\110\1\0\5\110\1\0\6\110\2\u016c\6\110\1\0"+ + "\2\110\2\0\1\111\43\110\13\0\1\110\1\0\5\110"+ + "\1\0\2\u016d\14\110\1\0\2\110\2\0\1\111\43\110"+ + "\13\0\1\110\1\0\5\110\1\0\16\110\1\0\2\110"+ + "\2\0\1\111\16\110\2\u016e\23\110\13\0\1\110\1\0"+ + "\5\110\1\0\16\110\1\0\2\110\2\0\1\111\10\110"+ + "\2\u016f\31\110\13\0\1\110\1\0\5\110\1\0\12\110"+ + "\2\164\2\110\1\0\2\110\2\0\1\111\43\110\13\0"+ + "\1\110\1\0\5\110\1\0\6\110\2\u0170\6\110\1\0"+ + "\2\110\2\0\1\111\43\110\27\0\2\u0171\104\0\2\u0172"+ + "\100\0\1\53\1\0\5\53\1\0\16\53\1\0\2\53"+ + "\3\0\14\53\2\u0173\25\53\13\0\1\53\1\0\5\53"+ + "\1\0\6\53\2\u0174\6\53\1\0\2\53\3\0\43\53"+ + "\13\0\1\53\1\0\5\53\1\0\6\53\2\u0175\6\53"+ + "\1\0\2\53\3\0\43\53\13\0\1\53\1\0\5\53"+ + "\1\0\16\53\1\0\2\53\3\0\4\53\2\227\35\53"+ + "\13\0\1\53\1\0\5\53\1\0\16\53\1\0\2\u013f"+ + "\3\0\43\53\13\0\1\53\1\0\5\53\1\0\16\53"+ + "\1\0\2\53\3\0\2\u0176\41\53\13\0\1\53\1\0"+ + "\5\53\1\0\16\53\1\0\2\53\3\0\4\53\2\u0177"+ + "\35\53\13\0\1\53\1\0\5\53\1\0\16\53\1\0"+ + "\2\213\3\0\43\53\7\0\2\u010e\3\0\1\u010f\104\0"+ + "\2\u011b\2\0\1\233\1\u011c\5\233\1\0\16\233\1\0"+ + "\2\233\3\0\43\233\7\0\2\u010e\2\0\1\233\1\u010f"+ + "\5\233\1\0\16\233\1\0\2\233\3\0\12\233\2\u0110"+ + "\27\233\7\0\2\u010e\2\0\1\233\1\u010f\5\233\1\0"+ + "\16\233\1\0\2\233\3\0\2\u0110\24\233\2\u0110\13\233"+ + "\7\0\2\u010e\2\0\1\233\1\u010f\5\233\1\0\6\233"+ + "\2\u0178\6\233\1\0\2\233\3\0\43\233\7\0\2\u010e"+ + "\2\0\1\233\1\u010f\5\233\1\0\2\u011e\14\233\1\0"+ + "\2\233\3\0\43\233\7\0\2\u010e\2\0\1\233\1\u010f"+ + "\5\233\1\0\16\233\1\0\2\233\3\0\12\233\2\u0179"+ + "\27\233\7\0\2\u010e\2\0\1\233\1\u010f\5\233\1\0"+ + "\12\233\2\u0113\2\233\1\0\2\233\3\0\43\233\7\0"+ + "\2\u010e\2\0\1\233\1\u010f\5\233\1\0\6\233\2\u011e"+ + "\6\233\1\0\2\233\3\0\43\233\7\0\2\u010e\2\0"+ + "\1\233\1\u010f\5\233\1\0\16\233\1\0\2\233\3\0"+ + "\35\233\2\u017a\4\233\7\0\2\u010e\2\0\1\233\1\u010f"+ + "\5\233\1\0\16\233\1\0\2\233\3\0\6\233\2\u017b"+ + "\33\233\7\0\2\u010e\2\0\1\233\1\u010f\5\233\1\0"+ + "\6\233\2\u017b\6\233\1\0\2\233\3\0\43\233\7\0"+ + "\2\u011b\3\0\1\u011c\104\0\2\u010e\2\0\1\233\1\u010f"+ + "\5\233\1\0\16\233\1\0\2\233\3\0\2\u017c\41\233"+ + "\7\0\2\u010e\2\0\1\233\1\u010f\5\233\1\0\14\233"+ + "\2\u0110\1\0\2\233\3\0\43\233\7\0\2\u010e\2\0"+ + "\1\233\1\u010f\5\233\1\0\2\u017d\14\233\1\0\2\233"+ + "\3\0\43\233\7\0\2\u010e\2\0\1\233\1\u010f\5\233"+ + "\1\0\12\233\2\u017e\2\233\1\0\2\233\3\0\43\233"+ + "\7\0\2\u010e\2\0\1\233\1\u010f\5\233\1\0\14\233"+ + "\2\u017f\1\0\2\233\3\0\43\233\7\0\2\u010e\2\0"+ + "\1\233\1\u010f\5\233\1\0\16\233\1\0\2\233\3\0"+ + "\2\u0180\41\233\7\0\2\u010e\2\0\1\233\1\u010f\5\233"+ + "\1\0\10\233\2\u017b\4\233\1\0\2\233\3\0\2\u0181"+ + "\41\233\7\0\2\u010e\2\0\1\233\1\u010f\5\233\1\0"+ + "\16\233\1\0\2\u0111\3\0\43\233\7\0\2\u010e\2\0"+ + "\1\233\1\u010f\5\233\1\0\16\233\1\0\2\233\3\0"+ + "\4\233\2\u0182\35\233\7\0\2\u010e\2\0\1\233\1\u010f"+ + "\5\233\1\0\12\233\2\u0110\2\233\1\0\2\233\3\0"+ + "\6\233\2\u0110\33\233\7\0\2\u010e\2\0\1\233\1\u010f"+ + "\5\233\1\0\16\233\1\0\2\u0183\3\0\43\233\7\0"+ + "\2\u011b\2\0\1\233\1\u011c\5\233\1\0\16\233\1\0"+ + "\2\233\3\0\12\233\2\u0184\27\233\7\0\2\u010e\2\0"+ + "\1\233\1\u010f\5\233\1\0\2\u0185\14\233\1\0\2\233"+ + "\3\0\43\233\7\0\2\u010e\2\0\1\233\1\u010f\5\233"+ + "\1\0\16\233\1\0\2\233\3\0\2\233\2\u0186\37\233"+ + "\7\0\2\u010e\2\0\1\233\1\u010f\5\233\1\0\2\233"+ + "\2\u0187\12\233\1\0\2\233\3\0\43\233\7\0\2\u010e"+ + "\2\0\1\233\1\u010f\5\233\1\0\16\233\1\0\2\233"+ + "\3\0\16\233\2\u0110\23\233\7\0\2\u010e\2\0\1\233"+ + "\1\u010f\5\233\1\0\16\233\1\0\2\233\3\0\2\u0188"+ + "\10\233\2\u0189\27\233\7\0\2\u010e\2\0\1\233\1\u010f"+ + "\5\233\1\0\16\233\1\0\2\233\3\0\2\233\2\u018a"+ + "\37\233\7\0\2\u010e\2\0\1\233\1\u010f\5\233\1\0"+ + "\16\233\1\0\2\233\3\0\14\233\2\u018b\25\233\7\0"+ + "\2\u010e\2\0\1\233\1\u010f\5\233\1\0\12\233\2\u018c"+ + "\2\233\1\0\2\233\3\0\43\233\7\0\2\u010e\2\0"+ + "\1\233\1\u010f\5\233\1\0\2\u0110\14\233\1\0\2\233"+ + "\3\0\43\233\7\0\2\u010e\2\0\1\233\1\u010f\5\233"+ + "\1\0\16\233\1\0\2\233\3\0\2\u0110\41\233\7\0"+ + "\2\u010e\2\0\1\233\1\u010f\5\233\1\0\6\233\2\u017f"+ + "\6\233\1\0\2\233\3\0\12\233\2\u018d\27\233\7\0"+ + "\2\u010e\2\0\1\233\1\u010f\5\233\1\0\12\233\2\u0110"+ + "\2\233\1\0\2\233\3\0\43\233\7\0\2\u010e\2\0"+ + "\1\233\1\u010f\5\233\1\0\16\233\1\0\2\233\3\0"+ + "\30\233\2\251\11\233\7\0\2\u010e\2\0\1\233\1\u010f"+ + "\5\233\1\0\16\233\1\0\2\u0131\3\0\43\233\13\0"+ + "\1\53\1\0\5\53\1\0\16\53\1\0\2\53\3\0"+ + "\14\53\2\u018e\25\53\13\0\1\53\1\0\5\53\1\0"+ + "\16\53\1\0\2\53\3\0\14\53\2\u018f\25\53\13\0"+ + "\1\53\1\0\5\53\1\0\14\53\2\u0190\1\0\2\53"+ + "\3\0\43\53\13\0\1\53\1\0\5\53\1\0\16\53"+ + "\1\0\2\53\3\0\4\53\2\73\35\53\13\0\1\53"+ + "\1\0\5\53\1\0\16\53\1\0\2\53\3\0\20\53"+ + "\2\213\21\53\13\0\1\53\1\0\5\53\1\0\10\53"+ + "\2\213\4\53\1\0\2\53\3\0\43\53\13\0\1\53"+ + "\1\0\5\53\1\0\14\53\2\u0191\1\0\2\53\3\0"+ + "\43\53\13\0\1\53\1\0\5\53\1\0\4\53\2\u0192"+ + "\10\53\1\0\2\53\3\0\43\53\13\0\1\53\1\0"+ + "\5\53\1\0\16\53\1\0\2\53\3\0\30\53\2\213"+ + "\11\53\13\0\1\53\1\0\5\53\1\0\6\53\2\213"+ + "\6\53\1\0\2\53\3\0\43\53\13\0\1\53\1\0"+ + "\5\53\1\0\4\53\2\256\10\53\1\0\2\53\3\0"+ + "\43\53\13\0\1\53\1\0\5\53\1\0\16\53\1\0"+ + "\2\53\3\0\12\53\2\u0193\27\53\13\0\1\53\1\0"+ + "\5\53\1\0\16\53\1\0\2\53\3\0\24\53\2\u0140"+ + "\15\53\13\0\1\53\1\0\5\53\1\0\16\53\1\0"+ + "\2\53\3\0\24\53\2\213\15\53\13\0\1\110\1\0"+ + "\5\110\1\0\16\110\1\0\2\u0194\2\0\1\111\43\110"+ + "\13\0\1\110\1\0\5\110\1\0\6\110\2\u0195\6\110"+ + "\1\0\2\110\2\0\1\111\43\110\13\0\1\110\1\0"+ + "\5\110\1\0\16\110\1\0\2\110\2\0\1\111\6\110"+ + "\2\u0196\33\110\13\0\1\110\1\0\5\110\1\0\4\110"+ + "\2\331\10\110\1\0\2\110\2\0\1\111\43\110\13\0"+ + "\1\110\1\0\5\110\1\0\6\110\2\u0157\6\110\1\0"+ + "\2\110\2\0\1\303\6\110\2\u0197\33\110\13\0\1\110"+ + "\1\0\5\110\1\0\2\342\14\110\1\0\2\110\2\0"+ + "\1\111\43\110\13\0\1\110\1\0\5\110\1\0\12\110"+ + "\2\143\2\110\1\0\2\110\2\0\1\303\43\110\13\0"+ + "\1\110\1\0\5\110\1\0\14\110\2\u0198\1\0\2\110"+ + "\2\0\1\111\43\110\13\0\1\110\1\0\5\110\1\0"+ + "\16\110\1\0\2\u0149\2\0\1\111\43\110\13\0\1\110"+ + "\1\0\5\110\1\0\12\110\2\u0199\2\110\1\0\2\110"+ + "\2\0\1\111\2\110\2\u019a\37\110\13\0\1\110\1\0"+ + "\5\110\1\0\16\110\1\0\2\110\2\0\1\111\2\110"+ + "\2\u019b\37\110\13\0\1\110\1\0\5\110\1\0\16\110"+ + "\1\0\2\110\2\0\1\111\20\110\2\u019c\21\110\13\0"+ + "\1\110\1\0\5\110\1\0\2\110\2\u019d\12\110\1\0"+ + "\2\110\2\0\1\303\2\110\2\u0153\37\110\13\0\1\110"+ + "\1\0\5\110\1\0\14\110\2\331\1\0\2\110\2\0"+ + "\1\111\43\110\13\0\1\110\1\0\5\110\1\0\16\110"+ + "\1\0\2\110\2\0\1\111\12\110\2\u019e\27\110\13\0"+ + "\1\110\1\0\5\110\1\0\16\110\1\0\2\110\2\0"+ + "\1\111\14\110\2\350\25\110\13\0\1\110\1\0\5\110"+ + "\1\0\12\110\2\331\2\110\1\0\2\110\2\0\1\111"+ + "\43\110\13\0\1\110\1\0\5\110\1\0\10\110\2\123"+ + "\4\110\1\0\2\110\2\0\1\111\43\110\13\0\1\110"+ + "\1\0\5\110\1\0\12\110\2\331\2\110\1\0\2\110"+ + "\2\0\1\111\2\110\2\u019f\37\110\13\0\1\110\1\0"+ + "\5\110\1\0\2\110\2\352\12\110\1\0\2\110\2\0"+ + "\1\111\43\110\13\0\1\110\1\0\5\110\1\0\16\110"+ + "\1\0\2\110\2\0\1\111\14\110\2\u01a0\25\110\13\0"+ + "\1\110\1\0\5\110\1\0\2\110\2\u01a1\12\110\1\0"+ + "\2\110\2\0\1\111\43\110\13\0\1\110\1\0\5\110"+ + "\1\0\16\110\1\0\2\110\2\0\1\111\4\110\2\u01a2"+ + "\35\110\13\0\1\110\1\0\5\110\1\0\2\u01a3\14\110"+ + "\1\0\2\110\2\0\1\111\43\110\13\0\1\110\1\0"+ + "\5\110\1\0\4\110\2\u01a4\10\110\1\0\2\110\2\0"+ + "\1\111\43\110\13\0\1\110\1\0\5\110\1\0\16\110"+ + "\1\0\2\u01a5\2\0\1\111\43\110\13\0\1\110\1\0"+ + "\5\110\1\0\2\u01a6\14\110\1\0\2\110\2\0\1\111"+ + "\43\110\13\0\1\110\1\0\5\110\1\0\16\110\1\0"+ + "\2\110\2\0\1\111\2\145\41\110\13\0\1\110\1\0"+ + "\5\110\1\0\16\110\1\0\2\110\2\0\1\303\24\110"+ + "\2\u01a7\15\110\13\0\1\110\1\0\5\110\1\0\14\110"+ + "\2\u01a8\1\0\2\110\2\0\1\111\43\110\13\0\1\110"+ + "\1\0\5\110\1\0\16\110\1\0\2\110\2\0\1\111"+ + "\16\110\2\u01a9\23\110\13\0\1\110\1\0\5\110\1\0"+ + "\16\110\1\0\2\110\2\0\1\111\4\110\2\u01aa\35\110"+ + "\13\0\1\110\1\0\5\110\1\0\14\110\2\u01ab\1\0"+ + "\2\110\2\0\1\111\43\110\13\0\1\110\1\0\5\110"+ + "\1\0\16\110\1\0\2\110\2\0\1\111\16\110\2\352"+ + "\23\110\13\0\1\110\1\0\5\110\1\0\14\110\2\u01ac"+ + "\1\0\2\110\2\0\1\111\43\110\13\0\1\110\1\0"+ + "\5\110\1\0\2\110\2\u01ad\12\110\1\0\2\110\2\0"+ + "\1\111\43\110\13\0\1\110\1\0\5\110\1\0\16\110"+ + "\1\0\2\110\2\0\1\111\14\110\2\u01ae\25\110\13\0"+ + "\1\110\1\0\5\110\1\0\14\110\2\u01af\1\0\2\110"+ + "\2\0\1\111\43\110\13\0\1\110\1\0\5\110\1\0"+ + "\16\110\1\0\2\110\2\0\1\111\14\110\2\u01b0\25\110"+ + "\13\0\1\110\1\0\5\110\1\0\14\110\2\u01b1\1\0"+ + "\2\110\2\0\1\111\43\110\13\0\1\110\1\0\5\110"+ + "\1\0\16\110\1\0\2\110\2\0\1\111\32\110\2\331"+ + "\7\110\13\0\1\110\1\0\5\110\1\0\16\110\1\0"+ + "\2\110\2\0\1\303\4\110\2\u01b2\35\110\13\0\1\110"+ + "\1\0\5\110\1\0\16\110\1\0\2\110\2\0\1\111"+ + "\32\110\2\164\7\110\31\0\2\u01b3\121\0\2\u01b4\61\0"+ + "\1\53\1\0\5\53\1\0\2\53\2\214\12\53\1\0"+ + "\2\53\3\0\43\53\13\0\1\53\1\0\5\53\1\0"+ + "\14\53\2\276\1\0\2\53\3\0\43\53\13\0\1\53"+ + "\1\0\5\53\1\0\16\53\1\0\2\u01b5\3\0\43\53"+ + "\13\0\1\53\1\0\5\53\1\0\14\53\2\u01b6\1\0"+ + "\2\53\3\0\43\53\13\0\1\53\1\0\5\53\1\0"+ + "\14\53\2\u0140\1\0\2\53\3\0\43\53\7\0\2\u010e"+ + "\2\0\1\233\1\u010f\5\233\1\0\16\233\1\0\2\233"+ + "\3\0\14\233\2\u01b7\25\233\7\0\2\u010e\2\0\1\233"+ + "\1\u010f\5\233\1\0\6\233\2\u01b8\6\233\1\0\2\233"+ + "\3\0\43\233\7\0\2\u010e\2\0\1\233\1\u010f\5\233"+ + "\1\0\6\233\2\u01b9\6\233\1\0\2\233\3\0\43\233"+ + "\7\0\2\u010e\2\0\1\233\1\u010f\5\233\1\0\16\233"+ + "\1\0\2\233\3\0\4\233\2\u011e\35\233\7\0\2\u010e"+ + "\2\0\1\233\1\u010f\5\233\1\0\16\233\1\0\2\u0188"+ + "\3\0\43\233\7\0\2\u010e\2\0\1\233\1\u010f\5\233"+ + "\1\0\16\233\1\0\2\233\3\0\2\u01ba\41\233\7\0"+ + "\2\u010e\2\0\1\233\1\u010f\5\233\1\0\16\233\1\0"+ + "\2\233\3\0\4\233\2\u01bb\35\233\7\0\2\u010e\2\0"+ + "\1\233\1\u010f\5\233\1\0\16\233\1\0\2\u0110\3\0"+ + "\43\233\7\0\2\u010e\2\0\1\233\1\u010f\5\233\1\0"+ + "\16\233\1\0\2\233\3\0\14\233\2\u01bc\25\233\7\0"+ + "\2\u010e\2\0\1\233\1\u010f\5\233\1\0\16\233\1\0"+ + "\2\233\3\0\14\233\2\u01bd\25\233\7\0\2\u010e\2\0"+ + "\1\233\1\u010f\5\233\1\0\14\233\2\u01be\1\0\2\233"+ + "\3\0\43\233\7\0\2\u010e\2\0\1\233\1\u010f\5\233"+ + "\1\0\16\233\1\0\2\233\3\0\4\233\2\251\35\233"+ + "\7\0\2\u010e\2\0\1\233\1\u010f\5\233\1\0\16\233"+ + "\1\0\2\233\3\0\20\233\2\u0110\21\233\7\0\2\u010e"+ + "\2\0\1\233\1\u010f\5\233\1\0\10\233\2\u0110\4\233"+ + "\1\0\2\233\3\0\43\233\7\0\2\u010e\2\0\1\233"+ + "\1\u010f\5\233\1\0\14\233\2\u01bf\1\0\2\233\3\0"+ + "\43\233\7\0\2\u010e\2\0\1\233\1\u010f\5\233\1\0"+ + "\4\233\2\u01c0\10\233\1\0\2\233\3\0\43\233\7\0"+ + "\2\u010e\2\0\1\233\1\u010f\5\233\1\0\16\233\1\0"+ + "\2\233\3\0\30\233\2\u0110\11\233\7\0\2\u010e\2\0"+ + "\1\233\1\u010f\5\233\1\0\6\233\2\u0110\6\233\1\0"+ + "\2\233\3\0\43\233\7\0\2\u010e\2\0\1\233\1\u010f"+ + "\5\233\1\0\4\233\2\u0122\10\233\1\0\2\233\3\0"+ + "\43\233\7\0\2\u010e\2\0\1\233\1\u010f\5\233\1\0"+ + "\16\233\1\0\2\233\3\0\12\233\2\u01c1\27\233\7\0"+ + "\2\u010e\2\0\1\233\1\u010f\5\233\1\0\16\233\1\0"+ + "\2\233\3\0\24\233\2\u0189\15\233\7\0\2\u010e\2\0"+ + "\1\233\1\u010f\5\233\1\0\16\233\1\0\2\233\3\0"+ + "\24\233\2\u0110\15\233\13\0\1\53\1\0\5\53\1\0"+ + "\12\53\2\u0140\2\53\1\0\2\53\3\0\43\53\13\0"+ + "\1\53\1\0\5\53\1\0\16\53\1\0\2\53\3\0"+ + "\20\53\2\227\21\53\13\0\1\53\1\0\5\53\1\0"+ + "\4\53\2\u0140\10\53\1\0\2\53\3\0\43\53\13\0"+ + "\1\53\1\0\5\53\1\0\16\53\1\0\2\53\3\0"+ + "\10\53\2\u01c2\31\53\13\0\1\53\1\0\5\53\1\0"+ + "\16\53\1\0\2\53\3\0\20\53\2\u01c3\21\53\13\0"+ + "\1\53\1\0\5\53\1\0\2\u01c4\14\53\1\0\2\53"+ + "\3\0\43\53\13\0\1\110\1\0\5\110\1\0\16\110"+ + "\1\0\2\110\2\0\1\111\2\326\41\110\13\0\1\110"+ + "\1\0\5\110\1\0\16\110\1\0\2\110\2\0\1\111"+ + "\14\110\2\163\25\110\13\0\1\110\1\0\5\110\1\0"+ + "\16\110\1\0\2\110\2\0\1\111\4\110\2\u019c\35\110"+ + "\13\0\1\110\1\0\5\110\1\0\16\110\1\0\2\u01c5"+ + "\2\0\1\111\43\110\13\0\1\110\1\0\5\110\1\0"+ + "\16\110\1\0\2\110\2\0\1\111\12\110\2\331\27\110"+ + "\13\0\1\110\1\0\5\110\1\0\16\110\1\0\2\u01c6"+ + "\2\0\1\111\43\110\13\0\1\110\1\0\5\110\1\0"+ + "\12\110\2\u01c7\2\110\1\0\2\110\2\0\1\111\43\110"+ + "\13\0\1\110\1\0\5\110\1\0\16\110\1\0\2\110"+ + "\2\0\1\303\14\110\2\u01ad\25\110\13\0\1\110\1\0"+ + "\5\110\1\0\14\110\2\u01ad\1\0\2\110\2\0\1\111"+ + "\43\110\13\0\1\110\1\0\5\110\1\0\16\110\1\0"+ + "\2\110\2\0\1\111\10\110\2\u01ab\31\110\13\0\1\110"+ + "\1\0\5\110\1\0\2\u01c8\14\110\1\0\2\110\2\0"+ + "\1\111\43\110\13\0\1\110\1\0\5\110\1\0\16\110"+ + "\1\0\2\110\2\0\1\111\2\110\2\u01c9\37\110\13\0"+ + "\1\110\1\0\5\110\1\0\16\110\1\0\2\110\2\0"+ + "\1\111\26\110\2\326\13\110\13\0\1\110\1\0\5\110"+ + "\1\0\16\110\1\0\2\110\2\0\1\111\12\110\2\u01ca"+ + "\27\110\13\0\1\110\1\0\5\110\1\0\16\110\1\0"+ + "\2\110\2\0\1\111\4\110\2\u01cb\35\110\13\0\1\110"+ + "\1\0\5\110\1\0\16\110\1\0\2\110\2\0\1\111"+ + "\6\110\2\u01cc\33\110\13\0\1\110\1\0\5\110\1\0"+ + "\6\110\2\u019c\6\110\1\0\2\110\2\0\1\111\43\110"+ + "\13\0\1\110\1\0\5\110\1\0\16\110\1\0\2\110"+ + "\2\0\1\111\2\u01cc\41\110\13\0\1\110\1\0\5\110"+ + "\1\0\14\110\2\u01cd\1\0\2\110\2\0\1\111\43\110"+ + "\13\0\1\110\1\0\5\110\1\0\16\110\1\0\2\u01ce"+ + "\2\0\1\111\43\110\13\0\1\110\1\0\5\110\1\0"+ + "\16\110\1\0\2\110\2\0\1\111\2\u01cf\41\110\13\0"+ + "\1\110\1\0\5\110\1\0\16\110\1\0\2\110\2\0"+ + "\1\111\2\u01d0\41\110\13\0\1\110\1\0\5\110\1\0"+ + "\2\110\2\157\12\110\1\0\2\110\2\0\1\111\43\110"+ + "\13\0\1\110\1\0\5\110\1\0\16\110\1\0\2\110"+ + "\2\0\1\111\10\110\2\164\31\110\13\0\1\110\1\0"+ + "\5\110\1\0\6\110\2\u0157\6\110\1\0\2\110\2\0"+ + "\1\303\43\110\13\0\1\110\1\0\5\110\1\0\2\164"+ + "\14\110\1\0\2\110\2\0\1\111\43\110\13\0\1\110"+ + "\1\0\5\110\1\0\16\110\1\0\2\110\2\0\1\111"+ + "\12\110\2\u01d1\27\110\13\0\1\110\1\0\5\110\1\0"+ + "\16\110\1\0\2\110\2\0\1\111\12\110\2\u01d2\27\110"+ + "\13\0\1\110\1\0\5\110\1\0\12\110\2\350\2\110"+ + "\1\0\2\110\2\0\1\111\43\110\13\0\1\110\1\0"+ + "\5\110\1\0\16\110\1\0\2\110\2\0\1\111\2\342"+ + "\41\110\13\0\1\110\1\0\5\110\1\0\16\110\1\0"+ + "\2\u01d3\2\0\1\111\43\110\33\0\2\u01d4\106\0\2\u01d5"+ + "\72\0\1\53\1\0\5\53\1\0\16\53\1\0\2\53"+ + "\3\0\2\232\41\53\13\0\1\53\1\0\5\53\1\0"+ + "\16\53\1\0\2\53\3\0\2\53\2\u01d6\37\53\7\0"+ + "\2\u010e\2\0\1\233\1\u010f\5\233\1\0\2\233\2\u0111"+ + "\12\233\1\0\2\233\3\0\43\233\7\0\2\u010e\2\0"+ + "\1\233\1\u010f\5\233\1\0\14\233\2\u0132\1\0\2\233"+ + "\3\0\43\233\7\0\2\u010e\2\0\1\233\1\u010f\5\233"+ + "\1\0\16\233\1\0\2\u01d7\3\0\43\233\7\0\2\u010e"+ + "\2\0\1\233\1\u010f\5\233\1\0\14\233\2\u01d8\1\0"+ + "\2\233\3\0\43\233\7\0\2\u010e\2\0\1\233\1\u010f"+ + "\5\233\1\0\14\233\2\u0189\1\0\2\233\3\0\43\233"+ + "\7\0\2\u010e\2\0\1\233\1\u010f\5\233\1\0\12\233"+ + "\2\u0189\2\233\1\0\2\233\3\0\43\233\7\0\2\u010e"+ + "\2\0\1\233\1\u010f\5\233\1\0\16\233\1\0\2\233"+ + "\3\0\20\233\2\u011e\21\233\7\0\2\u010e\2\0\1\233"+ + "\1\u010f\5\233\1\0\4\233\2\u0189\10\233\1\0\2\233"+ + "\3\0\43\233\7\0\2\u011b\2\0\1\233\1\u011c\5\233"+ + "\1\0\16\233\1\0\2\233\3\0\10\233\2\u01d9\31\233"+ + "\7\0\2\u010e\2\0\1\233\1\u010f\5\233\1\0\16\233"+ + "\1\0\2\233\3\0\20\233\2\u01da\21\233\7\0\2\u010e"+ + "\2\0\1\233\1\u010f\5\233\1\0\2\u01db\14\233\1\0"+ + "\2\233\3\0\43\233\13\0\1\53\1\0\5\53\1\0"+ + "\2\53\2\u01dc\12\53\1\0\2\53\3\0\43\53\13\0"+ + "\1\53\1\0\5\53\1\0\16\53\1\0\2\53\3\0"+ + "\22\53\2\u01dd\17\53\13\0\1\53\1\0\5\53\1\0"+ + "\14\53\2\u01de\1\0\2\53\3\0\43\53\13\0\1\110"+ + "\1\0\5\110\1\0\16\110\1\0\2\110\2\0\1\111"+ + "\2\110\2\326\37\110\13\0\1\110\1\0\5\110\1\0"+ + "\2\u01df\14\110\1\0\2\110\2\0\1\111\43\110\13\0"+ + "\1\110\1\0\5\110\1\0\16\110\1\0\2\u01e0\2\0"+ + "\1\111\43\110\13\0\1\110\1\0\5\110\1\0\14\110"+ + "\2\u01e1\1\0\2\110\2\0\1\111\43\110\13\0\1\110"+ + "\1\0\5\110\1\0\16\110\1\0\2\110\2\0\1\111"+ + "\20\110\2\u01e2\21\110\13\0\1\110\1\0\5\110\1\0"+ + "\16\110\1\0\2\110\2\0\1\111\4\110\2\u01cc\35\110"+ + "\13\0\1\110\1\0\5\110\1\0\16\110\1\0\2\110"+ + "\2\0\1\111\14\110\2\u01d3\25\110\13\0\1\110\1\0"+ + "\5\110\1\0\10\110\2\164\4\110\1\0\2\110\2\0"+ + "\1\111\43\110\13\0\1\110\1\0\5\110\1\0\16\110"+ + "\1\0\2\110\2\0\1\111\2\110\2\145\37\110\13\0"+ + "\1\110\1\0\5\110\1\0\16\110\1\0\2\110\2\0"+ + "\1\111\16\110\2\326\23\110\13\0\1\110\1\0\5\110"+ + "\1\0\4\110\2\363\10\110\1\0\2\110\2\0\1\303"+ + "\43\110\13\0\1\110\1\0\5\110\1\0\2\110\2\u01e3"+ + "\12\110\1\0\2\110\2\0\1\111\43\110\13\0\1\110"+ + "\1\0\5\110\1\0\16\110\1\0\2\110\2\0\1\111"+ + "\32\110\2\u01e4\3\110\2\u01e5\2\110\13\0\1\110\1\0"+ + "\5\110\1\0\16\110\1\0\2\110\2\0\1\111\16\110"+ + "\2\u0102\23\110\13\0\1\110\1\0\5\110\1\0\16\110"+ + "\1\0\2\110\2\0\1\111\12\110\2\u01e6\27\110\35\0"+ + "\2\u01e7\115\0\2\u01e8\61\0\1\53\1\0\5\53\1\0"+ + "\16\53\1\0\2\53\3\0\2\53\2\213\37\53\7\0"+ + "\2\u010e\2\0\1\233\1\u010f\5\233\1\0\16\233\1\0"+ + "\2\233\3\0\2\u0121\41\233\7\0\2\u010e\2\0\1\233"+ + "\1\u010f\5\233\1\0\16\233\1\0\2\233\3\0\2\233"+ + "\2\u01e9\37\233\7\0\2\u010e\2\0\1\233\1\u010f\5\233"+ + "\1\0\2\233\2\u01ea\12\233\1\0\2\233\3\0\43\233"+ + "\7\0\2\u010e\2\0\1\233\1\u010f\5\233\1\0\16\233"+ + "\1\0\2\233\3\0\22\233\2\u01eb\17\233\7\0\2\u010e"+ + "\2\0\1\233\1\u010f\5\233\1\0\14\233\2\u01ec\1\0"+ + "\2\233\3\0\43\233\13\0\1\53\1\0\5\53\1\0"+ + "\16\53\1\0\2\53\3\0\12\53\2\u0140\27\53\13\0"+ + "\1\53\1\0\5\53\1\0\16\53\1\0\2\53\3\0"+ + "\24\53\2\u01ed\15\53\13\0\1\53\1\0\5\53\1\0"+ + "\16\53\1\0\2\53\3\0\35\53\2\213\4\53\13\0"+ + "\1\110\1\0\5\110\1\0\2\u01cb\14\110\1\0\2\110"+ + "\2\0\1\111\43\110\13\0\1\110\1\0\5\110\1\0"+ + "\4\110\2\u01cb\10\110\1\0\2\110\2\0\1\111\43\110"+ + "\13\0\1\110\1\0\5\110\1\0\16\110\1\0\2\110"+ + "\2\0\1\111\35\110\2\164\4\110\13\0\1\110\1\0"+ + "\5\110\1\0\14\110\2\u01cc\1\0\2\110\2\0\1\111"+ + "\43\110\13\0\1\110\1\0\5\110\1\0\16\110\1\0"+ + "\2\110\2\0\1\111\24\110\2\u01ee\15\110\13\0\1\110"+ + "\1\0\5\110\1\0\14\110\2\u01ef\1\0\2\110\2\0"+ + "\1\111\43\110\13\0\1\110\1\0\5\110\1\0\16\110"+ + "\1\0\2\110\2\0\1\111\14\110\2\203\25\110\13\0"+ + "\1\110\1\0\5\110\1\0\16\110\1\0\2\110\2\0"+ + "\1\111\16\110\2\164\23\110\37\0\2\u01f0\112\0\1\u01f1"+ + "\57\0\2\u010e\2\0\1\233\1\u010f\5\233\1\0\16\233"+ + "\1\0\2\233\3\0\2\233\2\u0110\37\233\7\0\2\u010e"+ + "\2\0\1\233\1\u010f\5\233\1\0\16\233\1\0\2\233"+ + "\3\0\12\233\2\u0189\27\233\7\0\2\u010e\2\0\1\233"+ + "\1\u010f\5\233\1\0\16\233\1\0\2\233\3\0\24\233"+ + "\2\u01f2\15\233\7\0\2\u010e\2\0\1\233\1\u010f\5\233"+ + "\1\0\16\233\1\0\2\233\3\0\35\233\2\u0110\4\233"+ + "\13\0\1\53\1\0\5\53\1\0\2\53\2\222\12\53"+ + "\1\0\2\53\3\0\43\53\13\0\1\110\1\0\5\110"+ + "\1\0\16\110\1\0\2\110\2\0\1\111\12\110\2\u01ad"+ + "\27\110\13\0\1\110\1\0\5\110\1\0\16\110\1\0"+ + "\2\110\2\0\1\111\14\110\2\377\25\110\7\0\2\u010e"+ + "\2\0\1\233\1\u010f\5\233\1\0\2\233\2\u0117\12\233"+ + "\1\0\2\233\3\0\43\233\6\0"; + + private static int [] zzUnpackTrans() { + int [] result = new int[35372]; + 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\1\1\1\11\6\1\1\11\32\1\1\11\1\0"+ + "\1\1\1\0\6\1\1\0\14\1\11\0\1\11\23\0"+ + "\1\11\47\0\1\11\4\0\21\1\23\0\25\1\1\11"+ + "\2\0\1\11\1\0\1\11\72\0\1\11\2\0\10\1"+ + "\1\0\1\11\14\0\1\11\32\0\16\1\1\11\55\0"+ + "\5\1\26\0\6\1\41\0\2\1\13\0\3\1\21\0"+ + "\1\1\5\0\3\1\16\0\1\1\2\0\2\11\1\0"; + + private static int [] zzUnpackAttribute() { + int [] result = new int[498]; + 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[] = new char[ZZ_BUFFERSIZE]; + + /** 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; + + /** number of newlines encountered up to the start of the matched text */ + private int yyline; + + /** the number of characters up to the start of the matched text */ + private int yychar; + + /** + * the number of characters from the last newline up to the start of the + * matched text + */ + private int yycolumn; + + /** + * 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; + + /** denotes if the user-EOF-code has already been executed */ + private boolean zzEOFDone; + + /* user code: */ + /** + * Create an empty lexer, yyrset will be called later to reset and assign + * the reader + */ + public XHTMLLexer() { + super(); + } + + @Override + public int yychar() { + return yychar; + } + + private static final byte TAG_OPEN = 1; + private static final byte TAG_CLOSE = -1; + + private static final byte INSTR_OPEN = 2; + private static final byte INSTR_CLOSE = -2; + + private static final byte CDATA_OPEN = 3; + private static final byte CDATA_CLOSE = -3; + + private static final byte COMMENT_OPEN = 4; + private static final byte COMMENT_CLOSE = -4; + + + /** + * 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 XHTMLLexer(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 XHTMLLexer(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 < 256) { + int count = packed.charAt(i++); + char value = packed.charAt(i++); + do map[j++] = value; while (--count > 0); + } + return map; + } + + + /** + * Refills the input buffer. + * + * @return false, iff there was new input. + * + * @exception java.io.IOException if any I/O-Error occurs + */ + private boolean zzRefill() throws java.io.IOException { + + /* first: make room (if you can) */ + if (zzStartRead > 0) { + System.arraycopy(zzBuffer, zzStartRead, + zzBuffer, 0, + zzEndRead-zzStartRead); + + /* translate stored positions */ + zzEndRead-= zzStartRead; + zzCurrentPos-= zzStartRead; + zzMarkedPos-= zzStartRead; + zzStartRead = 0; + } + + /* is the buffer big enough? */ + if (zzCurrentPos >= zzBuffer.length) { + /* if not: blow it up */ + char newBuffer[] = new char[zzCurrentPos*2]; + System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); + zzBuffer = newBuffer; + } + + /* finally: fill the buffer with new input */ + int numRead = zzReader.read(zzBuffer, zzEndRead, + zzBuffer.length-zzEndRead); + + if (numRead > 0) { + zzEndRead+= numRead; + return false; + } + // unlikely but not impossible: read 0 characters, but not at end of stream + if (numRead == 0) { + int c = zzReader.read(); + if (c == -1) { + return true; + } else { + zzBuffer[zzEndRead++] = (char) c; + return false; + } + } + + // numRead < 0 + return true; + } + + + /** + * 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(); + } + + + /** + * 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 ZZ_INITIAL. + * + * @param reader the new input stream + */ + public final void yyreset(java.io.Reader reader) { + zzReader = reader; + zzAtBOL = true; + zzAtEOF = false; + zzEOFDone = false; + zzEndRead = zzStartRead = 0; + zzCurrentPos = zzMarkedPos = 0; + yyline = yychar = yycolumn = 0; + zzLexicalState = YYINITIAL; + } + + + /** + * Returns the current lexical state. + */ + public final int yystate() { + return zzLexicalState; + } + + + /** + * Enters a new lexical state + * + * @param newState the new lexical state + */ + 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 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; + + yychar+= zzMarkedPosL-zzStartRead; + + zzAction = -1; + + zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; + + 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 14: + { return token(TokenType.KEYWORD, TAG_CLOSE); + } + case 19: break; + case 11: + { yybegin(YYINITIAL); + return token(TokenType.COMMENT2, COMMENT_CLOSE); + } + case 20: break; + case 7: + { yybegin(YYINITIAL); + return token(TokenType.KEYWORD, TAG_CLOSE); + } + case 21: break; + case 4: + { yybegin(TAG); + return token(TokenType.KEYWORD, TAG_OPEN); + } + case 22: break; + case 8: + { return token(TokenType.STRING); + } + case 23: break; + case 15: + { return token(TokenType.KEYWORD2, TAG_CLOSE); + } + case 24: break; + case 2: + { yybegin(YYINITIAL); + return token(TokenType.KEYWORD); + } + case 25: break; + case 6: + { return token(TokenType.IDENTIFIER); + } + case 26: break; + case 10: + { return token(TokenType.KEYWORD2); + } + case 27: break; + case 9: + { yybegin(INSTR); + return token(TokenType.TYPE2, INSTR_OPEN); + } + case 28: break; + case 13: + { yybegin(COMMENT); + return token(TokenType.COMMENT2, COMMENT_OPEN); + } + case 29: break; + case 5: + { yybegin(TAG); + return token(TokenType.KEYWORD2, TAG_OPEN); + } + case 30: break; + case 18: + { yybegin(CDATA); + return token(TokenType.COMMENT2, CDATA_OPEN); + } + case 31: break; + case 16: + { yypushback(3); + return token(TokenType.COMMENT); + } + case 32: break; + case 17: + { yybegin(DOCTYPE); + return token(TokenType.TYPE2, INSTR_OPEN); + } + case 33: break; + case 3: + { yybegin(YYINITIAL); + return token(TokenType.TYPE2, INSTR_CLOSE); + } + case 34: break; + case 1: + { + } + case 35: break; + case 12: + { yybegin(YYINITIAL); + return token(TokenType.COMMENT2, CDATA_CLOSE); + } + case 36: break; + default: + if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { + zzAtEOF = true; + switch (zzLexicalState) { + case INSTR: { + return null; + } + case 499: break; + case YYINITIAL: { + return null; + } + case 500: break; + case COMMENT: { + return null; + } + case 501: break; + case CDATA: { + return null; + } + case 502: break; + case TAG: { + return null; + } + case 503: break; + default: + return null; + } + } + else { + zzScanError(ZZ_NO_MATCH); + } + } + } + } + + +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/XPathLexer.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/XPathLexer.java new file mode 100644 index 000000000..c0032e185 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/XPathLexer.java @@ -0,0 +1,1383 @@ +/* The following code was generated by JFlex 1.4.3 on 21.7.10 18:14 */ + +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This flex file originally donated to the project by HeyChinaski + * + */ + +package jsyntaxpane.lexers; + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + + +/** + * This class is a scanner generated by + * JFlex 1.4.3 + * on 21.7.10 18:14 from the specification file + * D:/Dokumenty/Programovani/JavaSE/JPSWFDec/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/xpath.flex + */ +public final class XPathLexer extends DefaultJFlexLexer { + + /** This character denotes the end of file */ + public static final int YYEOF = -1; + + /** initial size of the lookahead buffer */ + private static final int ZZ_BUFFERSIZE = 16384; + + /** lexical states */ + public static final int STRING_SINGLE = 4; + public static final int YYINITIAL = 0; + public static final int STRING_DOUBLE = 2; + + /** + * 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, 0, 1, 1, 2, 2 + }; + + /** + * Translates characters to character classes + */ + private static final String ZZ_CMAP_PACKED = + "\11\0\1\55\1\13\2\0\1\12\22\0\1\55\1\37\1\64\1\0"+ + "\1\11\2\0\1\65\1\56\1\57\1\10\1\35\1\35\1\5\1\6"+ + "\1\34\12\1\1\7\1\0\1\40\1\36\1\40\1\0\1\35\15\2"+ + "\1\54\2\2\1\53\2\2\1\52\6\2\1\62\1\0\1\63\1\0"+ + "\1\2\1\0\1\32\1\43\1\14\1\31\1\17\1\41\1\27\1\44"+ + "\1\26\1\46\1\51\1\42\1\16\1\20\1\15\1\23\1\45\1\24"+ + "\1\25\1\21\1\30\1\33\1\50\1\22\1\3\1\47\1\60\1\35"+ + "\1\61\71\0\1\4\10\0\27\2\1\0\37\2\1\0\10\2\62\2"+ + "\2\4\13\2\2\4\10\2\1\4\65\2\1\4\104\2\11\4\44\2"+ + "\3\4\2\2\4\4\36\2\70\4\131\2\22\4\7\2\76\4\160\4"+ + "\16\4\1\0\7\4\1\2\1\4\3\2\1\4\1\2\1\4\24\2"+ + "\1\4\54\2\1\4\7\2\3\4\1\2\1\4\1\2\1\4\1\2"+ + "\1\4\1\2\1\4\22\2\15\4\14\2\1\4\102\2\1\4\14\2"+ + "\1\4\44\2\16\4\65\2\2\4\2\2\2\4\2\2\3\4\34\2"+ + "\2\4\10\2\2\4\2\2\67\4\46\2\2\4\1\2\7\4\46\2"+ + "\111\4\33\2\5\4\3\2\56\4\32\2\6\4\12\2\46\4\107\2"+ + "\2\4\5\2\1\4\17\2\1\4\4\2\1\4\1\2\17\4\2\2"+ + "\u021e\4\65\2\3\4\1\2\32\4\12\2\43\4\10\2\2\4\2\2"+ + "\2\4\26\2\1\4\7\2\1\4\1\2\3\4\4\2\42\4\2\2"+ + "\1\4\3\2\16\4\2\2\23\4\6\2\4\4\2\2\2\4\26\2"+ + "\1\4\7\2\1\4\2\2\1\4\2\2\1\4\2\2\37\4\4\2"+ + "\1\4\1\2\23\4\3\2\20\4\7\2\1\4\1\2\1\4\3\2"+ + "\1\4\26\2\1\4\7\2\1\4\2\2\1\4\5\2\3\4\1\2"+ + "\42\4\1\2\44\4\10\2\2\4\2\2\2\4\26\2\1\4\7\2"+ + "\1\4\2\2\2\4\4\2\3\4\1\2\36\4\2\2\1\4\3\2"+ + "\43\4\6\2\3\4\3\2\1\4\4\2\3\4\2\2\1\4\1\2"+ + "\1\4\2\2\3\4\2\2\3\4\3\2\3\4\10\2\1\4\3\2"+ + "\113\4\10\2\1\4\3\2\1\4\27\2\1\4\12\2\1\4\5\2"+ + "\46\4\2\2\43\4\10\2\1\4\3\2\1\4\27\2\1\4\12\2"+ + "\1\4\5\2\44\4\1\2\1\4\2\2\43\4\10\2\1\4\3\2"+ + "\1\4\27\2\1\4\20\2\46\4\2\2\237\4\56\2\1\4\1\2"+ + "\1\4\2\2\14\4\6\2\73\4\2\2\1\4\1\2\2\4\2\2"+ + "\1\4\1\2\2\4\1\2\6\4\4\2\1\4\7\2\1\4\3\2"+ + "\1\4\1\2\1\4\1\2\2\4\2\2\1\4\2\2\1\4\1\2"+ + "\1\4\2\2\11\4\1\2\2\4\5\2\173\4\10\2\1\4\41\2"+ + "\u0136\4\46\2\12\4\47\2\11\4\1\2\1\4\2\2\1\4\3\2"+ + "\1\4\1\2\1\4\2\2\1\4\5\2\51\4\1\2\1\4\1\2"+ + "\1\4\1\2\13\4\1\2\1\4\1\2\1\4\1\2\3\4\2\2"+ + "\3\4\1\2\5\4\3\2\1\4\1\2\1\4\1\2\1\4\1\2"+ + "\1\4\1\2\3\4\2\2\3\4\2\2\1\4\1\2\50\4\1\2"+ + "\11\4\1\2\2\4\1\2\2\4\2\2\7\4\2\2\1\4\1\2"+ + "\1\4\7\2\50\4\1\2\4\4\1\2\10\4\1\2\u0c06\4\234\2"+ + "\4\4\132\2\6\4\26\2\2\4\6\2\2\4\46\2\2\4\6\2"+ + "\2\4\10\2\1\4\1\2\1\4\1\2\1\4\1\2\1\4\37\2"+ + "\2\4\65\2\1\4\7\2\1\4\1\2\3\4\3\2\1\4\7\2"+ + "\3\4\4\2\2\4\6\2\4\4\15\2\5\4\3\2\1\4\7\2"+ + "\3\4\14\0\2\4\61\0\2\4\57\0\266\4\1\2\3\4\2\2"+ + "\2\4\1\2\121\4\3\2\15\4\u0a70\0\u03f0\4\21\0\6\4\1\2"+ + "\31\4\11\2\27\4\124\2\14\4\132\2\12\4\50\2\u1cd3\4\u51a6\2"+ + "\u0c5a\4\u2ba4\2\134\4\u2100\0\u04d0\4\40\0\u020e\4\2\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\2\4\1\5\1\1\2\5"+ + "\15\3\1\4\1\1\1\4\6\3\1\6\1\7\1\10"+ + "\1\11\1\12\1\13\1\14\1\15\1\16\1\17\2\0"+ + "\7\3\1\4\32\3\1\20\25\3\1\2\3\3\1\0"+ + "\12\3\1\20\1\3\1\20\46\3\1\20\45\3\1\21"+ + "\2\3\1\20\1\3\1\21\14\3\1\22\64\3\1\20"+ + "\57\3\1\20\62\3\1\20\45\3\1\22\11\3\1\22"+ + "\2\3\1\22\4\3\1\20\43\3\1\20\30\3\1\20"+ + "\23\3\1\20\61\3"; + + private static int [] zzUnpackAction() { + int [] result = new int[554]; + 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\66\0\154\0\242\0\330\0\u010e\0\u0144\0\242"+ + "\0\u017a\0\u01b0\0\u01e6\0\u021c\0\242\0\u0252\0\u0288\0\u02be"+ + "\0\u02f4\0\u032a\0\u0360\0\u0396\0\u03cc\0\u0402\0\u0438\0\u046e"+ + "\0\u04a4\0\u04da\0\u0510\0\u0546\0\u0546\0\u057c\0\u05b2\0\u05e8"+ + "\0\u061e\0\u0654\0\u068a\0\242\0\242\0\242\0\242\0\242"+ + "\0\242\0\242\0\242\0\242\0\242\0\u06c0\0\u06f6\0\u072c"+ + "\0\u0762\0\u0798\0\u07ce\0\u0804\0\u083a\0\u0870\0\u010e\0\u08a6"+ + "\0\u08dc\0\u0912\0\u0948\0\u097e\0\u09b4\0\u09ea\0\u0a20\0\u0a56"+ + "\0\u0a8c\0\u0ac2\0\u0af8\0\u0b2e\0\u0b64\0\u0b9a\0\u0bd0\0\u0c06"+ + "\0\u0c3c\0\u0c72\0\u0ca8\0\u0cde\0\u0d14\0\u0d4a\0\u0d80\0\u0db6"+ + "\0\u0dec\0\u0e22\0\u0e58\0\u0e8e\0\u0ec4\0\u0efa\0\u0f30\0\u0f66"+ + "\0\u0f9c\0\u0fd2\0\u1008\0\u103e\0\u1074\0\u10aa\0\u10e0\0\u1116"+ + "\0\u114c\0\u1182\0\u11b8\0\u11ee\0\u1224\0\u125a\0\u1290\0\u06c0"+ + "\0\u12c6\0\242\0\u12fc\0\u1332\0\u1368\0\u139e\0\u13d4\0\u140a"+ + "\0\u1440\0\u1476\0\u14ac\0\u14e2\0\u1518\0\u154e\0\u1584\0\u15ba"+ + "\0\u010e\0\u15f0\0\u1626\0\u165c\0\u1692\0\u16c8\0\u16fe\0\u1734"+ + "\0\u176a\0\u17a0\0\u17d6\0\u180c\0\u1842\0\u1878\0\u18ae\0\u18e4"+ + "\0\u191a\0\u1950\0\u1986\0\u19bc\0\u19f2\0\u1a28\0\u1a5e\0\u1a94"+ + "\0\u1aca\0\u1b00\0\u1b36\0\u1b6c\0\u1ba2\0\u1bd8\0\u1c0e\0\u1c44"+ + "\0\u1c7a\0\u1cb0\0\u1ce6\0\u1d1c\0\u1d52\0\u1d88\0\u1dbe\0\u1df4"+ + "\0\u1e2a\0\u1e60\0\u1e96\0\u1ecc\0\u1f02\0\u1f38\0\u1f6e\0\u1fa4"+ + "\0\u1fda\0\u2010\0\u2046\0\u207c\0\u20b2\0\u20e8\0\u211e\0\u2154"+ + "\0\u218a\0\u21c0\0\u21f6\0\u222c\0\u2262\0\u2298\0\u22ce\0\u2304"+ + "\0\u233a\0\u2370\0\u23a6\0\u23dc\0\u2412\0\u2448\0\u247e\0\u24b4"+ + "\0\u24ea\0\u2520\0\u2556\0\u258c\0\u25c2\0\u25f8\0\u262e\0\u2664"+ + "\0\u269a\0\u26d0\0\u010e\0\u2706\0\u273c\0\u2772\0\u27a8\0\u27de"+ + "\0\u2814\0\u284a\0\u2880\0\u28b6\0\u28ec\0\u2922\0\u2958\0\u010e"+ + "\0\u298e\0\u29c4\0\u29fa\0\u2a30\0\u2a66\0\u2a9c\0\u2ad2\0\u2b08"+ + "\0\u2b3e\0\u2b74\0\u2baa\0\u2be0\0\u2c16\0\u2c4c\0\u2c82\0\u2cb8"+ + "\0\u2cee\0\u2d24\0\u2d5a\0\u2d90\0\u2dc6\0\u2dfc\0\u2e32\0\u2e68"+ + "\0\u2e9e\0\u2ed4\0\u2f0a\0\u2f40\0\u2f76\0\u2fac\0\u2fe2\0\u3018"+ + "\0\u304e\0\u3084\0\u30ba\0\u30f0\0\u3126\0\u315c\0\u3192\0\u31c8"+ + "\0\u31fe\0\u3234\0\u326a\0\u32a0\0\u32d6\0\u330c\0\u3342\0\u3378"+ + "\0\u33ae\0\u33e4\0\u341a\0\u3450\0\u3486\0\u34bc\0\u34f2\0\u3528"+ + "\0\u355e\0\u3594\0\u35ca\0\u3600\0\u3636\0\u366c\0\u36a2\0\u36d8"+ + "\0\u370e\0\u3744\0\u377a\0\u37b0\0\u37e6\0\u381c\0\u3852\0\u3888"+ + "\0\u38be\0\u38f4\0\u392a\0\u3960\0\u3996\0\u39cc\0\u3a02\0\u3a38"+ + "\0\u3a6e\0\u3aa4\0\u3ada\0\u3b10\0\u3b46\0\u3b7c\0\u3bb2\0\u3be8"+ + "\0\u3c1e\0\u3c54\0\u3c8a\0\u3cc0\0\u3cf6\0\u3d2c\0\u3d62\0\u3d98"+ + "\0\u3dce\0\u3e04\0\u3e3a\0\u3e70\0\u3ea6\0\u3edc\0\u3f12\0\u3f48"+ + "\0\u3f7e\0\u3fb4\0\u3fea\0\u4020\0\u4056\0\u408c\0\u40c2\0\u40f8"+ + "\0\u412e\0\u4164\0\u419a\0\u41d0\0\u4206\0\u423c\0\u4272\0\u42a8"+ + "\0\u42de\0\u4314\0\u434a\0\u4380\0\u43b6\0\u43ec\0\u4422\0\u4458"+ + "\0\u448e\0\u44c4\0\u44fa\0\u4530\0\u4566\0\u459c\0\u45d2\0\u4608"+ + "\0\u463e\0\u4674\0\u46aa\0\u46e0\0\u4716\0\u474c\0\u4782\0\u47b8"+ + "\0\u47ee\0\u4824\0\u485a\0\u4890\0\u48c6\0\u48fc\0\u4932\0\u4968"+ + "\0\u499e\0\u49d4\0\u4a0a\0\u4a40\0\u4a76\0\u4aac\0\u4ae2\0\u4b18"+ + "\0\u4b4e\0\u4b84\0\u4bba\0\u4bf0\0\u4c26\0\u4c5c\0\u4c92\0\u4cc8"+ + "\0\u4cfe\0\u4d34\0\u4d6a\0\u4da0\0\u4dd6\0\u4e0c\0\u4e42\0\u4e78"+ + "\0\u4eae\0\u4ee4\0\u4f1a\0\u4f50\0\u4f86\0\u4fbc\0\u4ff2\0\u5028"+ + "\0\u505e\0\u5094\0\u50ca\0\u5100\0\u5136\0\u516c\0\u51a2\0\u51d8"+ + "\0\u520e\0\u5244\0\u527a\0\u52b0\0\u52e6\0\u531c\0\u5352\0\u5388"+ + "\0\u53be\0\u53f4\0\u542a\0\u5460\0\u5496\0\u54cc\0\u5502\0\u5538"+ + "\0\u556e\0\u55a4\0\u55da\0\u5610\0\u5646\0\u567c\0\u56b2\0\u56e8"+ + "\0\u571e\0\u5754\0\u578a\0\u57c0\0\u57f6\0\u582c\0\u5862\0\u5898"+ + "\0\u58ce\0\u5904\0\u593a\0\u5970\0\u59a6\0\u59dc\0\u5a12\0\u5a48"+ + "\0\u5a7e\0\u5ab4\0\u5aea\0\u5b20\0\u5b56\0\u5b8c\0\u5bc2\0\u5bf8"+ + "\0\u5c2e\0\u5c64\0\u5c9a\0\u5cd0\0\u5d06\0\u5d3c\0\u5d72\0\u5da8"+ + "\0\u5dde\0\u5e14\0\u5e4a\0\u5e80\0\u5eb6\0\u5eec\0\u5f22\0\u5f58"+ + "\0\u5f8e\0\u5fc4\0\u5ffa\0\u6030\0\u6066\0\u609c\0\u60d2\0\u6108"+ + "\0\u613e\0\u6174\0\u61aa\0\u61e0\0\u2d90\0\u6216\0\u624c\0\u6282"+ + "\0\u62b8\0\u62ee\0\u6324\0\u635a\0\u6390\0\u63c6\0\u63fc\0\u6432"+ + "\0\u6468\0\u649e\0\u64d4\0\u650a\0\u6540\0\u6576\0\u65ac\0\u65e2"+ + "\0\u6618\0\u664e\0\u6684\0\u66ba\0\u66f0\0\u6726\0\u675c\0\u6792"+ + "\0\u67c8\0\u67fe\0\u6834\0\u686a\0\u68a0\0\u68d6\0\u690c\0\u6942"+ + "\0\u6978\0\u69ae\0\u69e4\0\u6a1a\0\u6a50\0\u6a86\0\u6abc\0\u6af2"+ + "\0\u6b28\0\u6b5e\0\u6b94\0\u6bca\0\u6c00\0\u6c36\0\u6c6c\0\u6ca2"+ + "\0\u6cd8\0\u6d0e\0\u6d44\0\u6d7a\0\u6db0\0\u6de6\0\u6e1c\0\u6e52"+ + "\0\u6e88\0\u6ebe\0\u6ef4\0\u6f2a\0\u6f60\0\u6f96\0\u6fcc\0\u7002"+ + "\0\u7038\0\u706e"; + + private static int [] zzUnpackRowMap() { + int [] result = new int[554]; + 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\4\1\10\1\11\1\12"+ + "\1\10\1\13\1\14\1\15\1\16\1\17\1\20\1\21"+ + "\1\22\1\23\1\6\1\24\1\25\1\26\1\27\1\6"+ + "\1\30\1\31\1\32\1\6\1\33\2\10\1\34\1\35"+ + "\1\36\1\37\1\40\1\41\2\6\1\42\3\6\1\43"+ + "\1\6\1\15\1\44\1\45\1\46\1\47\1\50\1\51"+ + "\1\52\1\53\64\54\1\55\66\54\1\55\67\0\1\5"+ + "\4\0\1\56\60\0\6\6\1\57\4\0\20\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\3\6\1\60\14\6"+ + "\5\0\14\6\17\0\1\10\66\0\1\10\60\0\2\61"+ + "\10\0\20\61\5\0\14\61\24\0\1\4\53\0\6\6"+ + "\1\57\4\0\1\6\1\62\1\6\1\63\10\6\1\64"+ + "\3\6\5\0\3\6\1\65\10\6\12\0\6\6\1\57"+ + "\4\0\4\6\1\66\3\6\1\67\7\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\1\6\1\70\10\6\1\71"+ + "\3\6\1\72\1\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\2\6\1\73\1\6\1\74\1\6\1\75\1\6"+ + "\1\76\1\77\6\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\1\6\1\100\10\6\1\101\1\6\1\102\1\6"+ + "\1\103\1\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\1\6\1\104\1\6\1\105\4\6\1\106\1\6\1\107"+ + "\5\6\5\0\14\6\12\0\6\6\1\57\4\0\1\6"+ + "\1\110\6\6\1\111\5\6\1\112\1\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\1\6\1\113\1\6\1\114"+ + "\14\6\5\0\14\6\12\0\6\6\1\57\4\0\3\6"+ + "\1\115\1\6\1\116\6\6\1\117\3\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\2\6\1\120\1\6\1\121"+ + "\10\6\1\122\2\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\4\6\1\123\2\6\1\124\10\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\1\6\1\125\1\6\1\126"+ + "\6\6\1\127\3\6\1\130\1\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\4\6\1\131\1\132\7\6\1\133"+ + "\1\6\1\134\5\0\2\6\1\135\11\6\45\0\1\10"+ + "\67\0\1\10\30\0\6\6\1\57\4\0\1\6\1\136"+ + "\14\6\1\137\1\6\5\0\1\6\1\140\12\6\12\0"+ + "\6\6\1\57\4\0\1\6\1\141\14\6\1\142\1\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\1\6\1\143"+ + "\14\6\1\144\1\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\1\6\1\145\16\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\3\6\1\146\14\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\20\6\5\0\13\6\1\147\12\0"+ + "\1\150\66\0\2\151\4\0\1\152\3\0\20\151\5\0"+ + "\14\151\12\0\6\6\1\57\4\0\16\6\1\153\1\6"+ + "\5\0\14\6\12\0\6\61\1\154\4\0\20\61\5\0"+ + "\14\61\12\0\6\6\1\57\4\0\2\6\1\155\1\6"+ + "\1\156\7\6\1\157\1\160\2\6\5\0\1\6\1\161"+ + "\12\6\12\0\6\6\1\57\4\0\12\6\1\162\5\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\10\6\1\163"+ + "\7\6\5\0\14\6\12\0\6\6\1\57\4\0\12\6"+ + "\1\164\5\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\3\6\1\165\14\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\4\6\1\166\10\6\1\67\2\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\4\6\1\167\13\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\5\6\1\170\1\171"+ + "\11\6\5\0\14\6\12\0\6\6\1\57\4\0\7\6"+ + "\1\172\10\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\15\6\1\173\2\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\12\6\1\174\3\6\1\175\1\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\10\6\1\176\7\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\1\177\17\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\5\6\1\171\2\6"+ + "\1\200\4\6\1\201\2\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\20\6\5\0\1\6\1\202\12\6\12\0"+ + "\6\6\1\57\4\0\2\6\1\203\15\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\2\6\1\204\15\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\20\6\5\0\10\6"+ + "\1\205\3\6\12\0\6\6\1\57\4\0\6\6\1\206"+ + "\11\6\5\0\14\6\12\0\6\6\1\57\4\0\14\6"+ + "\1\207\1\6\1\210\1\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\2\6\1\211\15\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\11\6\1\212\6\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\1\6\1\213\1\6\1\214"+ + "\14\6\5\0\14\6\12\0\6\6\1\57\4\0\10\6"+ + "\1\215\7\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\1\6\1\216\12\6\1\217\3\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\2\6\1\220\4\6\1\221\1\6"+ + "\1\222\5\6\1\223\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\1\224\17\6\5\0\1\6\1\225\12\6\12\0"+ + "\6\6\1\57\4\0\10\6\1\226\5\6\1\227\1\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\2\6\1\171"+ + "\15\6\5\0\2\6\1\230\11\6\12\0\6\6\1\57"+ + "\4\0\7\6\1\231\10\6\5\0\14\6\12\0\4\6"+ + "\1\232\1\6\1\57\4\0\11\6\1\233\3\6\1\234"+ + "\2\6\5\0\14\6\12\0\6\6\1\57\4\0\10\6"+ + "\1\235\7\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\1\6\1\236\16\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\7\6\1\237\10\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\1\240\17\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\3\6\1\241\5\6\1\242\6\6\5\0"+ + "\1\243\13\6\12\0\6\6\1\57\4\0\11\6\1\244"+ + "\5\6\1\67\5\0\14\6\12\0\2\6\1\245\3\6"+ + "\1\57\4\0\5\6\1\246\12\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\1\247\14\6\1\67\2\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\5\6\1\250\12\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\20\6\5\0"+ + "\5\6\1\251\6\6\12\0\6\6\1\57\4\0\13\6"+ + "\1\171\4\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\11\6\1\171\6\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\20\6\5\0\1\6\1\252\12\6\12\0\6\6"+ + "\1\57\4\0\20\6\5\0\1\6\1\253\12\6\12\0"+ + "\6\6\1\57\4\0\1\6\1\176\16\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\1\254\17\6\5\0\7\6"+ + "\1\237\4\6\12\0\6\6\1\57\4\0\4\6\1\134"+ + "\4\6\1\216\6\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\1\6\1\255\16\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\11\6\1\256\6\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\14\6\1\257\3\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\10\6\1\260\7\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\16\6\1\261\1\6"+ + "\5\0\14\6\12\0\6\151\5\0\20\151\5\0\14\151"+ + "\12\0\6\6\1\57\4\0\10\6\1\245\7\6\5\0"+ + "\14\6\13\0\2\151\10\0\20\151\5\0\14\151\12\0"+ + "\6\6\1\57\4\0\2\6\1\262\4\6\1\263\10\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\1\264\4\6"+ + "\1\265\12\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\4\6\1\216\13\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\3\6\1\266\14\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\20\6\5\0\1\6\1\267\12\6\12\0"+ + "\6\6\1\57\4\0\20\6\5\0\1\6\1\270\12\6"+ + "\12\0\6\6\1\57\4\0\10\6\1\271\7\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\20\6\5\0\1\6"+ + "\1\272\12\6\12\0\4\6\1\273\1\6\1\57\4\0"+ + "\20\6\5\0\14\6\12\0\6\6\1\57\4\0\5\6"+ + "\1\274\12\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\14\6\1\275\3\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\1\276\17\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\5\6\1\277\12\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\11\6\1\300\6\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\11\6\1\301\6\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\1\302\17\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\1\6\1\303\16\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\16\6\1\304\1\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\2\6\1\305"+ + "\15\6\5\0\14\6\12\0\6\6\1\57\4\0\3\6"+ + "\1\306\14\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\20\6\5\0\1\6\1\307\12\6\12\0\6\6\1\57"+ + "\4\0\20\6\5\0\2\6\1\310\11\6\12\0\6\6"+ + "\1\57\4\0\3\6\1\311\14\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\3\6\1\312\14\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\5\6\1\313\12\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\3\6\1\171\14\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\1\207\3\6"+ + "\1\314\13\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\3\6\1\315\14\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\12\6\1\316\5\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\1\317\17\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\1\320\17\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\3\6\1\321\14\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\5\6\1\171\12\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\4\6\1\322\13\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\1\6\1\323\16\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\20\6\5\0"+ + "\1\6\1\324\12\6\12\0\6\6\1\57\4\0\1\6"+ + "\1\325\16\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\3\6\1\326\14\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\1\6\1\327\16\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\20\6\5\0\1\330\13\6\12\0\6\6"+ + "\1\57\4\0\12\6\1\331\5\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\5\6\1\332\2\6\1\333\7\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\11\6\1\334"+ + "\6\6\5\0\14\6\12\0\6\6\1\57\4\0\20\6"+ + "\5\0\1\6\1\335\12\6\12\0\6\6\1\57\4\0"+ + "\11\6\1\336\6\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\3\6\1\337\14\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\3\6\1\340\14\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\3\6\1\341\14\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\10\6\1\342\7\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\3\6\1\343\14\6"+ + "\5\0\14\6\12\0\4\6\1\344\1\6\1\57\4\0"+ + "\14\6\1\345\3\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\7\6\1\346\10\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\1\347\17\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\16\6\1\350\1\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\5\6\1\351\12\6\5\0\14\6"+ + "\12\0\4\6\1\352\1\6\1\57\4\0\11\6\1\353"+ + "\6\6\5\0\14\6\12\0\6\6\1\57\4\0\3\6"+ + "\1\354\12\6\1\171\1\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\3\6\1\355\14\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\10\6\1\356\7\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\14\6\1\357\3\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\20\6\5\0\1\6"+ + "\1\360\12\6\12\0\6\6\1\57\4\0\11\6\1\207"+ + "\6\6\5\0\14\6\12\0\6\6\1\57\4\0\16\6"+ + "\1\361\1\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\20\6\5\0\1\6\1\362\12\6\12\0\6\6\1\57"+ + "\4\0\3\6\1\363\14\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\10\6\1\364\7\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\1\6\1\365\16\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\2\6\1\207\15\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\3\6\1\366\14\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\16\6\1\367"+ + "\1\6\5\0\14\6\12\0\6\6\1\57\4\0\16\6"+ + "\1\216\1\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\16\6\1\370\1\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\7\6\1\371\10\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\3\6\1\372\14\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\12\6\1\373\5\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\3\6\1\374\14\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\15\6\1\330\2\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\1\6\1\375"+ + "\16\6\5\0\14\6\12\0\6\6\1\57\4\0\20\6"+ + "\5\0\3\6\1\245\10\6\12\0\6\6\1\57\4\0"+ + "\5\6\1\376\12\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\20\6\5\0\3\6\1\377\10\6\12\0\2\6"+ + "\1\171\3\6\1\57\4\0\20\6\5\0\14\6\12\0"+ + "\4\6\1\u0100\1\6\1\57\4\0\20\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\5\6\1\135\12\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\5\6\1\u0101\12\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\10\6\1\171"+ + "\7\6\5\0\14\6\12\0\6\6\1\57\4\0\7\6"+ + "\1\256\10\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\16\6\1\u0102\1\6\5\0\14\6\12\0\4\6\1\u0103"+ + "\1\6\1\57\4\0\20\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\3\6\1\u0104\14\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\3\6\1\303\14\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\11\6\1\u0105\6\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\4\6\1\u0106\13\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\11\6\1\u0107"+ + "\6\6\5\0\14\6\12\0\6\6\1\57\4\0\20\6"+ + "\5\0\6\6\1\u0108\5\6\12\0\6\6\1\57\4\0"+ + "\5\6\1\u0109\12\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\3\6\1\u010a\14\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\3\6\1\u010b\14\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\4\6\1\u010c\13\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\15\6\1\u010d\2\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\17\6\1\207\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\16\6\1\u010e\1\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\20\6\5\0"+ + "\1\6\1\u010f\12\6\12\0\6\6\1\57\4\0\10\6"+ + "\1\253\7\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\4\6\1\u0110\13\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\4\6\1\u0111\13\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\12\6\1\u0112\5\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\5\6\1\173\12\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\3\6\1\u0113\1\6\1\u0114"+ + "\12\6\5\0\14\6\12\0\6\6\1\57\4\0\12\6"+ + "\1\u0115\5\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\1\u0116\17\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\10\6\1\u0117\7\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\6\6\1\u0118\11\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\20\6\5\0\1\171\13\6\12\0\6\6"+ + "\1\57\4\0\15\6\1\u0119\2\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\10\6\1\u011a\7\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\16\6\1\u011b\1\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\2\6\1\u011c\15\6"+ + "\5\0\14\6\12\0\4\6\1\u011d\1\6\1\57\4\0"+ + "\20\6\5\0\14\6\12\0\6\6\1\57\4\0\3\6"+ + "\1\u011e\14\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\14\6\1\u011f\3\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\12\6\1\u0120\5\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\20\6\5\0\1\u0121\13\6\12\0\4\6"+ + "\1\u0122\1\6\1\57\4\0\20\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\20\6\5\0\11\6\1\u0123\2\6"+ + "\12\0\6\6\1\57\4\0\11\6\1\u0124\6\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\12\6\1\u0125\5\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\11\6\1\u0126"+ + "\6\6\5\0\14\6\12\0\6\6\1\57\4\0\1\6"+ + "\1\u0127\16\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\20\6\5\0\1\6\1\u0128\12\6\12\0\6\6\1\57"+ + "\4\0\3\6\1\u0129\14\6\5\0\14\6\12\0\4\6"+ + "\1\u012a\1\6\1\57\4\0\20\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\11\6\1\u012b\6\6\5\0\14\6"+ + "\12\0\4\6\1\u012c\1\6\1\57\4\0\20\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\4\6\1\206\13\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\10\6\1\207"+ + "\7\6\5\0\14\6\12\0\6\6\1\57\4\0\12\6"+ + "\1\u012d\5\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\1\6\1\u012e\16\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\1\316\17\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\4\6\1\134\13\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\4\6\1\u012f\13\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\10\6\1\u0130\7\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\3\6\1\364\14\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\3\6\1\135\14\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\20\6\5\0"+ + "\7\6\1\u0131\4\6\12\0\6\6\1\57\4\0\20\6"+ + "\5\0\1\6\1\u0132\12\6\12\0\6\6\1\57\4\0"+ + "\20\6\5\0\1\6\1\u0133\12\6\12\0\6\6\1\57"+ + "\4\0\4\6\1\147\13\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\15\6\1\171\2\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\7\6\1\u0134\10\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\12\6\1\u0135\5\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\20\6\5\0\1\6"+ + "\1\u0136\12\6\12\0\6\6\1\57\4\0\1\6\1\u0137"+ + "\16\6\5\0\14\6\12\0\6\6\1\57\4\0\12\6"+ + "\1\u0138\5\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\11\6\1\u0139\6\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\15\6\1\u013a\2\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\5\6\1\330\12\6\5\0\14\6\12\0"+ + "\4\6\1\u013b\1\6\1\57\4\0\20\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\1\207\17\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\17\6\1\u013c\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\15\6\1\364\2\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\13\6\1\u013d\4\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\1\u013e\17\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\20\6\5\0"+ + "\4\6\1\u013f\7\6\12\0\6\6\1\57\4\0\10\6"+ + "\1\u0140\7\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\1\u0141\17\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\1\6\1\u0142\16\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\5\6\1\u0143\12\6\5\0\14\6\12\0\4\6"+ + "\1\u0144\1\6\1\57\4\0\20\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\3\6\1\u0145\14\6\5\0\14\6"+ + "\12\0\4\6\1\u0146\1\6\1\57\4\0\20\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\17\6\1\u0147\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\3\6\1\u0148\14\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\3\6\1\u0149"+ + "\14\6\5\0\14\6\12\0\6\6\1\57\4\0\4\6"+ + "\1\u014a\13\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\20\6\5\0\1\6\1\u014b\12\6\12\0\6\6\1\57"+ + "\4\0\4\6\1\u014c\13\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\10\6\1\u014d\7\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\20\6\5\0\1\u014e\13\6\12\0"+ + "\6\6\1\57\4\0\12\6\1\261\5\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\5\6\1\u014f\12\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\20\6\5\0\2\6"+ + "\1\u0150\11\6\12\0\6\6\1\57\4\0\5\6\1\u0151"+ + "\12\6\5\0\14\6\12\0\6\6\1\57\4\0\20\6"+ + "\5\0\7\6\1\u013a\4\6\12\0\4\6\1\u0152\1\6"+ + "\1\57\4\0\20\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\16\6\1\u0153\1\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\14\6\1\u0154\3\6\5\0\14\6\12\0"+ + "\4\6\1\u0155\1\6\1\57\4\0\20\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\1\6\1\u0156\16\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\4\6\1\135\13\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\12\6\1\u0157"+ + "\5\6\5\0\14\6\12\0\6\6\1\57\4\0\5\6"+ + "\1\u0158\12\6\5\0\14\6\12\0\4\6\1\u0159\1\6"+ + "\1\57\4\0\20\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\12\6\1\u015a\5\6\5\0\14\6\12\0\2\6"+ + "\1\u015b\3\6\1\57\4\0\20\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\12\6\1\u015c\5\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\16\6\1\u015d\1\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\20\6\5\0\6\6"+ + "\1\207\5\6\12\0\6\6\1\57\4\0\16\6\1\u015e"+ + "\1\6\5\0\14\6\12\0\6\6\1\57\4\0\4\6"+ + "\1\u015f\13\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\1\6\1\u0153\16\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\11\6\1\u0160\6\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\12\6\1\u0161\5\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\20\6\5\0\3\6\1\u0162\10\6"+ + "\12\0\6\6\1\57\4\0\3\6\1\u0163\14\6\5\0"+ + "\14\6\12\0\4\6\1\u0164\1\6\1\57\4\0\20\6"+ + "\5\0\14\6\12\0\4\6\1\u0165\1\6\1\57\4\0"+ + "\20\6\5\0\14\6\12\0\6\6\1\57\4\0\14\6"+ + "\1\u0166\3\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\12\6\1\u0167\5\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\12\6\1\u0168\5\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\7\6\1\u0169\10\6\5\0\14\6\12\0"+ + "\4\6\1\u016a\1\6\1\57\4\0\20\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\1\6\1\341\16\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\10\6\1\307\7\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\1\u016b\17\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\16\6\1\u016c"+ + "\1\6\5\0\14\6\12\0\6\6\1\57\4\0\4\6"+ + "\1\u016d\13\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\20\6\5\0\4\6\1\u016e\7\6\12\0\6\6\1\57"+ + "\4\0\15\6\1\u016f\2\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\5\6\1\u0170\12\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\1\u0171\17\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\1\6\1\u0172\16\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\10\6\1\u0173\7\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\1\6\1\u0174\16\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\14\6\1\u0175"+ + "\3\6\5\0\14\6\12\0\4\6\1\u0176\1\6\1\57"+ + "\4\0\20\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\4\6\1\u0177\13\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\4\6\1\171\13\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\10\6\1\u0178\7\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\20\6\5\0\1\u0179\13\6\12\0"+ + "\6\6\1\57\4\0\10\6\1\u015b\7\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\4\6\1\u017a\13\6\5\0"+ + "\14\6\12\0\4\6\1\u017b\1\6\1\57\4\0\20\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\2\6\1\u017c"+ + "\15\6\5\0\14\6\12\0\6\6\1\57\4\0\5\6"+ + "\1\u017d\12\6\5\0\14\6\12\0\4\6\1\u017e\1\6"+ + "\1\57\4\0\20\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\20\6\5\0\6\6\1\u017f\5\6\12\0\6\6"+ + "\1\57\4\0\1\u0180\17\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\5\6\1\207\12\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\3\6\1\u0181\14\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\12\6\1\u0182\5\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\4\6\1\u0183\13\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\16\6\1\u0184"+ + "\1\6\5\0\14\6\12\0\4\6\1\u0185\1\6\1\57"+ + "\4\0\20\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\5\6\1\u0186\12\6\5\0\1\6\1\u0187\3\6\1\u0188"+ + "\6\6\12\0\6\6\1\57\4\0\20\6\5\0\2\6"+ + "\1\u0189\11\6\12\0\6\6\1\57\4\0\3\6\1\u018a"+ + "\14\6\5\0\14\6\12\0\6\6\1\57\4\0\4\6"+ + "\1\u018b\13\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\5\6\1\u018c\12\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\3\6\1\u018d\14\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\20\6\5\0\2\6\1\u018e\11\6\12\0"+ + "\6\6\1\57\4\0\16\6\1\253\1\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\12\6\1\u018f\5\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\5\6\1\363\12\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\14\6\1\u0190"+ + "\3\6\5\0\14\6\12\0\6\6\1\57\4\0\16\6"+ + "\1\u0191\1\6\5\0\14\6\12\0\4\6\1\u0192\1\6"+ + "\1\57\4\0\20\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\5\6\1\u0193\12\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\2\6\1\u0194\15\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\1\6\1\u0195\16\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\10\6\1\u0196\7\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\5\6\1\u0197\12\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\5\6\1\u0198"+ + "\7\6\1\u0199\2\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\16\6\1\u019a\1\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\12\6\1\171\5\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\10\6\1\u019b\7\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\5\6\1\u019c\12\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\5\6\1\u0123\7\6"+ + "\1\u019d\2\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\1\6\1\367\16\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\20\6\5\0\3\6\1\171\10\6\12\0\6\6"+ + "\1\57\4\0\1\6\1\u019e\16\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\3\6\1\u019f\14\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\3\6\1\u01a0\14\6\5\0"+ + "\14\6\12\0\4\6\1\u01a1\1\6\1\57\4\0\20\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\4\6\1\u01a2"+ + "\13\6\5\0\14\6\12\0\6\6\1\57\4\0\13\6"+ + "\1\u01a3\4\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\20\6\5\0\1\6\1\u01a4\12\6\12\0\6\6\1\57"+ + "\4\0\14\6\1\u0154\3\6\5\0\12\6\1\43\1\6"+ + "\12\0\6\6\1\57\4\0\1\6\1\u01a5\16\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\3\6\1\u01a6\14\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\1\6\1\u01a7"+ + "\16\6\5\0\14\6\12\0\6\6\1\57\4\0\16\6"+ + "\1\144\1\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\4\6\1\u010e\13\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\13\6\1\u01a8\4\6\5\0\14\6\12\0\4\6"+ + "\1\u01a9\1\6\1\57\4\0\20\6\5\0\14\6\12\0"+ + "\4\6\1\u01aa\1\6\1\57\4\0\20\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\3\6\1\u01ab\14\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\20\6\5\0\1\6"+ + "\1\u01ac\12\6\12\0\6\6\1\57\4\0\16\6\1\u01ad"+ + "\1\6\5\0\14\6\12\0\6\6\1\57\4\0\4\6"+ + "\1\u01ae\13\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\1\u01af\17\6\5\0\14\6\12\0\4\6\1\u01b0\1\6"+ + "\1\57\4\0\20\6\5\0\14\6\12\0\4\6\1\u01b1"+ + "\1\6\1\57\4\0\20\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\2\6\1\u01b2\15\6\5\0\14\6\12\0"+ + "\4\6\1\u01b3\1\6\1\57\4\0\20\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\3\6\1\330\14\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\12\6\1\u01b4\5\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\16\6\1\u01b5"+ + "\1\6\5\0\14\6\12\0\6\6\1\57\4\0\2\6"+ + "\1\u01b6\15\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\1\6\1\u01b7\16\6\5\0\14\6\12\0\4\6\1\u011d"+ + "\1\6\1\57\4\0\11\6\1\u01b8\6\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\16\6\1\u01b9\1\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\4\6\1\207\13\6"+ + "\5\0\14\6\12\0\4\6\1\u01ba\1\6\1\57\4\0"+ + "\20\6\5\0\14\6\12\0\4\6\1\u01bb\1\6\1\57"+ + "\4\0\20\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\20\6\5\0\1\u01bc\13\6\12\0\6\6\1\57\4\0"+ + "\13\6\1\u01bd\4\6\5\0\14\6\12\0\4\6\1\u01be"+ + "\1\6\1\57\4\0\20\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\20\6\5\0\1\u01bf\13\6\12\0\4\6"+ + "\1\u01c0\1\6\1\57\4\0\20\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\4\6\1\u01c1\13\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\12\6\1\u0153\5\6\5\0"+ + "\14\6\12\0\4\6\1\u01c2\1\6\1\57\4\0\20\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\5\6\1\u01c3"+ + "\12\6\5\0\14\6\12\0\6\6\1\57\4\0\7\6"+ + "\1\u01c4\10\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\20\6\5\0\1\u017c\13\6\12\0\6\6\1\57\4\0"+ + "\16\6\1\u01c5\1\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\20\6\5\0\1\6\1\171\12\6\12\0\6\6"+ + "\1\57\4\0\5\6\1\u0196\12\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\1\6\1\u01c6\16\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\17\6\1\u01c7\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\15\6\1\u019d\2\6\5\0"+ + "\14\6\12\0\4\6\1\u01c8\1\6\1\57\4\0\20\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\1\6\1\u01c9"+ + "\16\6\5\0\14\6\12\0\6\6\1\57\4\0\2\6"+ + "\1\u01ca\15\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\5\6\1\u01cb\12\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\3\6\1\u01cc\14\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\2\6\1\u01cd\15\6\5\0\14\6\12\0"+ + "\4\6\1\u01ce\1\6\1\57\4\0\20\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\5\6\1\u01cf\12\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\11\6\1\u01d0\2\6"+ + "\1\u01d1\3\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\14\6\1\u01d2\3\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\10\6\1\u01d3\7\6\5\0\14\6\12\0\4\6"+ + "\1\u01d4\1\6\1\57\4\0\20\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\11\6\1\u01d5\6\6\5\0\14\6"+ + "\12\0\4\6\1\u01d6\1\6\1\57\4\0\20\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\1\u01d7\17\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\13\6\1\u015a\4\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\16\6\1\u01d8"+ + "\1\6\5\0\2\6\1\u018e\11\6\12\0\6\6\1\57"+ + "\4\0\12\6\1\u01d9\5\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\10\6\1\u01da\7\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\20\6\5\0\2\6\1\u01db\11\6"+ + "\12\0\6\6\1\57\4\0\20\6\5\0\1\6\1\u01dc"+ + "\12\6\12\0\6\6\1\57\4\0\16\6\1\u01dd\1\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\15\6\1\u01de"+ + "\2\6\5\0\14\6\12\0\6\6\1\57\4\0\10\6"+ + "\1\u01df\7\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\3\6\1\u01e0\14\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\3\6\1\u01e1\14\6\5\0\14\6\12\0\4\6"+ + "\1\u01e2\1\6\1\57\4\0\20\6\5\0\14\6\12\0"+ + "\4\6\1\u01e3\1\6\1\57\4\0\20\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\5\6\1\u01e4\12\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\3\6\1\u01e5\14\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\7\6\1\324"+ + "\10\6\5\0\14\6\12\0\6\6\1\57\4\0\4\6"+ + "\1\u01e6\13\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\10\6\1\u01e7\7\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\1\6\1\u01e8\16\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\12\6\1\u01e9\5\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\12\6\1\u01ea\5\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\5\6\1\u01eb\12\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\1\6\1\u01ec\16\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\20\6\5\0"+ + "\1\u01ed\13\6\12\0\6\6\1\57\4\0\2\6\1\u01ee"+ + "\15\6\5\0\14\6\12\0\6\6\1\57\4\0\3\6"+ + "\1\u01ef\14\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\20\6\5\0\1\6\1\207\12\6\12\0\6\6\1\57"+ + "\4\0\20\6\5\0\1\6\1\u01f0\12\6\12\0\6\6"+ + "\1\57\4\0\20\6\5\0\1\6\1\u01f1\12\6\12\0"+ + "\6\6\1\57\4\0\14\6\1\u01f2\3\6\5\0\14\6"+ + "\12\0\4\6\1\u01f3\1\6\1\57\4\0\20\6\5\0"+ + "\14\6\12\0\4\6\1\u01f4\1\6\1\57\4\0\20\6"+ + "\5\0\14\6\12\0\4\6\1\u01f4\1\6\1\57\4\0"+ + "\20\6\5\0\11\6\1\u0198\2\6\12\0\6\6\1\57"+ + "\4\0\20\6\5\0\1\u01f5\13\6\12\0\6\6\1\57"+ + "\4\0\5\6\1\u0123\7\6\1\u01f6\2\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\1\6\1\u01f7\16\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\12\6\1\u01f8\5\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\12\6\1\u01f9"+ + "\5\6\5\0\14\6\12\0\6\6\1\57\4\0\2\6"+ + "\1\u0158\15\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\4\6\1\u01fa\13\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\20\6\5\0\2\6\1\u01fb\11\6\12\0\6\6"+ + "\1\57\4\0\1\6\1\u01fc\16\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\15\6\1\u01fd\2\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\5\6\1\310\12\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\3\6\1\u01fe\14\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\20\6\5\0"+ + "\1\u01ff\13\6\12\0\6\6\1\57\4\0\16\6\1\316"+ + "\1\6\5\0\14\6\12\0\6\6\1\57\4\0\14\6"+ + "\1\377\3\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\10\6\1\u01f0\7\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\11\6\1\u0200\6\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\5\6\1\u0201\12\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\10\6\1\u0202\7\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\14\6\1\u01f2\1\6\1\u0203"+ + "\1\6\5\0\14\6\12\0\4\6\1\u0204\1\6\1\57"+ + "\4\0\20\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\1\u0205\17\6\5\0\14\6\12\0\4\6\1\u0206\1\6"+ + "\1\57\4\0\20\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\11\6\1\u0207\6\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\20\6\5\0\1\6\1\u0208\12\6\12\0"+ + "\4\6\1\u0209\1\6\1\57\4\0\20\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\3\6\1\u020a\14\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\20\6\5\0\6\6"+ + "\1\u017e\5\6\12\0\6\6\1\57\4\0\12\6\1\u020b"+ + "\5\6\5\0\14\6\12\0\6\6\1\57\4\0\3\6"+ + "\1\u020c\14\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\1\6\1\u018c\16\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\1\6\1\u020d\16\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\5\6\1\u020e\12\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\11\6\1\u020f\6\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\1\6\1\u0210\16\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\20\6\5\0\1\u0211"+ + "\13\6\12\0\6\6\1\57\4\0\5\6\1\u0212\12\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\12\6\1\u0213"+ + "\5\6\5\0\14\6\12\0\6\6\1\57\4\0\3\6"+ + "\1\u0214\14\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\7\6\1\u0215\10\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\6\6\1\377\11\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\20\6\5\0\1\6\1\225\12\6\12\0"+ + "\6\6\1\57\4\0\2\6\1\u0216\15\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\3\6\1\354\14\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\5\6\1\u0217\12\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\15\6\1\207"+ + "\2\6\5\0\14\6\12\0\6\6\1\57\4\0\1\6"+ + "\1\u0218\6\6\1\u0202\7\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\10\6\1\u0219\7\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\4\6\1\u021a\13\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\17\6\1\u021b\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\1\6\1\u021c\16\6\5\0"+ + "\14\6\12\0\4\6\1\u021d\1\6\1\57\4\0\20\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\10\6\1\270"+ + "\7\6\5\0\14\6\12\0\6\6\1\57\4\0\10\6"+ + "\1\u021e\7\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\14\6\1\u021f\3\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\13\6\1\330\4\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\3\6\1\u0153\14\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\12\6\1\u0220\5\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\20\6\5\0\12\6\1\43"+ + "\1\6\12\0\4\6\1\u0221\1\6\1\57\4\0\20\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\1\u0222\17\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\4\6\1\301"+ + "\13\6\5\0\14\6\12\0\6\6\1\57\4\0\7\6"+ + "\1\u0223\10\6\5\0\14\6\12\0\6\6\1\57\4\0"+ + "\5\6\1\u0224\12\6\5\0\14\6\12\0\6\6\1\57"+ + "\4\0\10\6\1\u0225\7\6\5\0\14\6\12\0\6\6"+ + "\1\57\4\0\12\6\1\u0226\5\6\5\0\14\6\12\0"+ + "\6\6\1\57\4\0\3\6\1\u0227\14\6\5\0\14\6"+ + "\12\0\6\6\1\57\4\0\1\6\1\u0228\16\6\5\0"+ + "\14\6\12\0\6\6\1\57\4\0\20\6\5\0\1\u0229"+ + "\13\6\12\0\6\6\1\57\4\0\4\6\1\313\13\6"+ + "\5\0\14\6\12\0\6\6\1\57\4\0\12\6\1\u022a"+ + "\5\6\5\0\14\6\12\0\6\6\1\57\4\0\6\6"+ + "\1\171\11\6\5\0\14\6\11\0"; + + private static int [] zzUnpackTrans() { + int [] result = new int[28836]; + 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\3\1\1\11\4\1\1\11\26\1\12\11"+ + "\2\0\72\1\1\11\1\1\1\0\u01be\1"; + + private static int [] zzUnpackAttribute() { + int [] result = new int[554]; + 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[] = new char[ZZ_BUFFERSIZE]; + + /** 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; + + /** number of newlines encountered up to the start of the matched text */ + private int yyline; + + /** the number of characters up to the start of the matched text */ + private int yychar; + + /** + * the number of characters from the last newline up to the start of the + * matched text + */ + private int yycolumn; + + /** + * 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; + + /** denotes if the user-EOF-code has already been executed */ + private boolean zzEOFDone; + + /* user code: */ + /** + * Create an empty lexer, yyrset will be called later to reset and assign + * the reader + */ + public XPathLexer() { + super(); + } + + @Override + public int yychar() { + return yychar; + } + + private static final byte PARAN = 1; + private static final byte BRACKET = 2; + private static final byte CURLY = 3; + + + + /** + * 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 XPathLexer(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 XPathLexer(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 < 996) { + int count = packed.charAt(i++); + char value = packed.charAt(i++); + do map[j++] = value; while (--count > 0); + } + return map; + } + + + /** + * Refills the input buffer. + * + * @return false, iff there was new input. + * + * @exception java.io.IOException if any I/O-Error occurs + */ + private boolean zzRefill() throws java.io.IOException { + + /* first: make room (if you can) */ + if (zzStartRead > 0) { + System.arraycopy(zzBuffer, zzStartRead, + zzBuffer, 0, + zzEndRead-zzStartRead); + + /* translate stored positions */ + zzEndRead-= zzStartRead; + zzCurrentPos-= zzStartRead; + zzMarkedPos-= zzStartRead; + zzStartRead = 0; + } + + /* is the buffer big enough? */ + if (zzCurrentPos >= zzBuffer.length) { + /* if not: blow it up */ + char newBuffer[] = new char[zzCurrentPos*2]; + System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); + zzBuffer = newBuffer; + } + + /* finally: fill the buffer with new input */ + int numRead = zzReader.read(zzBuffer, zzEndRead, + zzBuffer.length-zzEndRead); + + if (numRead > 0) { + zzEndRead+= numRead; + return false; + } + // unlikely but not impossible: read 0 characters, but not at end of stream + if (numRead == 0) { + int c = zzReader.read(); + if (c == -1) { + return true; + } else { + zzBuffer[zzEndRead++] = (char) c; + return false; + } + } + + // numRead < 0 + return true; + } + + + /** + * 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(); + } + + + /** + * 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 ZZ_INITIAL. + * + * @param reader the new input stream + */ + public final void yyreset(java.io.Reader reader) { + zzReader = reader; + zzAtBOL = true; + zzAtEOF = false; + zzEOFDone = false; + zzEndRead = zzStartRead = 0; + zzCurrentPos = zzMarkedPos = 0; + yyline = yychar = yycolumn = 0; + zzLexicalState = YYINITIAL; + } + + + /** + * Returns the current lexical state. + */ + public final int yystate() { + return zzLexicalState; + } + + + /** + * Enters a new lexical state + * + * @param newState the new lexical state + */ + 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 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; + + yychar+= zzMarkedPosL-zzStartRead; + + zzAction = -1; + + zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; + + 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 7: + { return token(TokenType.OPERATOR, -PARAN); + } + case 19: break; + case 17: + { return token(TokenType.KEYWORD); + } + case 20: break; + case 2: + { return token(TokenType.NUMBER); + } + case 21: break; + case 15: + { yybegin(YYINITIAL); + // length also includes the trailing quote + return token(TokenType.STRING, tokenStart, tokenLength + 1); + } + case 22: break; + case 4: + { return token(TokenType.OPERATOR); + } + case 23: break; + case 8: + { return token(TokenType.OPERATOR, CURLY); + } + case 24: break; + case 9: + { return token(TokenType.OPERATOR, -CURLY); + } + case 25: break; + case 14: + { tokenLength += yylength(); + } + case 26: break; + case 13: + { yybegin(STRING_SINGLE); + tokenStart = yychar; + tokenLength = 1; + } + case 27: break; + case 18: + { return token(TokenType.TYPE); + } + case 28: break; + case 1: + { /* skip */ + } + case 29: break; + case 11: + { return token(TokenType.OPERATOR, -BRACKET); + } + case 30: break; + case 12: + { yybegin(STRING_DOUBLE); + tokenStart = yychar; + tokenLength = 1; + } + case 31: break; + case 6: + { return token(TokenType.OPERATOR, PARAN); + } + case 32: break; + case 3: + { return token(TokenType.IDENTIFIER); + } + case 33: break; + case 16: + { return token(TokenType.KEYWORD2); + } + case 34: break; + case 10: + { return token(TokenType.OPERATOR, BRACKET); + } + case 35: break; + case 5: + { + } + case 36: break; + default: + if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { + zzAtEOF = true; + return null; + } + else { + zzScanError(ZZ_NO_MATCH); + } + } + } + } + + +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/XmlLexer.java b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/XmlLexer.java new file mode 100644 index 000000000..9a0f4d22b --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/generated-sources/jflex/jsyntaxpane/lexers/XmlLexer.java @@ -0,0 +1,712 @@ +/* The following code was generated by JFlex 1.4.3 on 21.7.10 18:14 */ + +/* + * Copyright 2008 Ayman Al-Sairafi ayman.alsairafi@gmail.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License + * at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jsyntaxpane.lexers; + + +import jsyntaxpane.Token; +import jsyntaxpane.TokenType; + + +/** + * This class is a scanner generated by + * JFlex 1.4.3 + * on 21.7.10 18:14 from the specification file + * D:/Dokumenty/Programovani/JavaSE/JPSWFDec/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/xml.flex + */ +public final class XmlLexer extends DefaultJFlexLexer { + + /** This character denotes the end of file */ + public static final int YYEOF = -1; + + /** initial size of the lookahead buffer */ + private static final int ZZ_BUFFERSIZE = 16384; + + /** lexical states */ + public static final int INSTR = 8; + public static final int YYINITIAL = 0; + public static final int COMMENT = 2; + public static final int CDATA = 4; + public static final int TAG = 6; + + /** + * 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, 0, 1, 1, 2, 2, 3, 3, 4, 4 + }; + + /** + * Translates characters to character classes + */ + private static final String ZZ_CMAP_PACKED = + "\11\0\1\1\1\2\2\0\1\2\22\0\1\1\1\4\1\24\1\30"+ + "\2\0\1\26\1\25\5\0\1\5\1\11\1\22\12\12\1\7\1\27"+ + "\1\3\1\23\1\6\1\13\1\0\1\17\1\7\1\15\1\16\1\7"+ + "\16\7\1\20\6\7\1\14\1\0\1\21\1\0\1\7\1\0\32\10"+ + "\74\0\1\11\10\0\27\0\1\0\37\0\1\0\u0208\0\160\0\16\0"+ + "\1\0\u02e1\0\12\31\206\0\12\31\u026c\0\12\31\166\0\12\31\166\0"+ + "\12\31\166\0\12\31\166\0\12\31\167\0\11\31\166\0\12\31\166\0"+ + "\12\31\166\0\12\31\340\0\12\31\166\0\12\31\106\0\12\31\u0116\0"+ + "\12\31\266\0\u0269\0\11\31\u046e\0\12\31\46\0\12\31\u012c\0\12\31"+ + "\u06b0\0\14\0\2\0\63\0\57\0\u0120\0\u0a70\0\u03f0\0\21\0\ua7ff\0"+ + "\u0800\0\u1000\0\u0900\0\u04d0\0\40\0\u0120\0\12\31\344\0\2\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\7\1\1\2\5\1\1\0\1\3\13\0\1\4"+ + "\1\5\1\0\1\6\1\0\1\7\2\0\1\10\1\0"+ + "\1\11\2\0\1\12\1\0\1\13\1\14\2\0\1\15"+ + "\1\16\4\0\1\17"; + + private static int [] zzUnpackAction() { + int [] result = new int[57]; + 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\32\0\64\0\116\0\150\0\202\0\234\0\266"+ + "\0\320\0\352\0\u0104\0\u011e\0\202\0\u0138\0\u0152\0\u016c"+ + "\0\u0186\0\u01a0\0\u01ba\0\u01d4\0\u01ee\0\u0208\0\u0222\0\u023c"+ + "\0\320\0\u0256\0\u0270\0\u0104\0\u028a\0\u02a4\0\u0138\0\202"+ + "\0\202\0\u016c\0\202\0\u0186\0\202\0\u02be\0\u02d8\0\u02f2"+ + "\0\u030c\0\202\0\u0326\0\u0340\0\202\0\u035a\0\202\0\202"+ + "\0\u0374\0\u038e\0\202\0\202\0\u03a8\0\u03c2\0\u03dc\0\u03f6"+ + "\0\202"; + + private static int [] zzUnpackRowMap() { + int [] result = new int[57]; + 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\22\6\1\10\3\6\5\11\1\12\24\11"+ + "\21\13\1\14\10\13\6\6\1\15\2\16\4\6\4\16"+ + "\1\6\1\17\1\6\1\20\1\21\13\6\2\16\2\6"+ + "\1\22\1\6\4\16\3\6\1\20\1\21\4\6\36\0"+ + "\1\23\2\0\2\24\2\0\1\25\1\0\4\24\1\0"+ + "\1\26\17\0\1\27\17\0\1\30\1\0\5\31\1\32"+ + "\31\31\1\33\24\31\21\34\1\35\31\34\1\36\10\34"+ + "\5\0\1\37\1\0\4\37\2\0\4\37\2\0\1\40"+ + "\14\0\1\41\23\0\2\42\1\0\21\42\1\43\5\42"+ + "\2\44\1\0\22\44\1\43\4\44\6\0\1\45\30\0"+ + "\1\46\6\0\1\47\22\0\1\24\1\0\4\24\2\0"+ + "\4\24\20\0\2\50\4\0\4\50\20\0\2\51\4\0"+ + "\4\51\21\0\1\27\16\0\1\52\14\0\1\53\16\0"+ + "\1\53\5\31\1\54\31\31\1\54\1\55\23\31\21\34"+ + "\1\56\16\34\1\57\12\34\1\56\10\34\5\0\1\60"+ + "\41\0\1\61\21\0\1\50\1\0\4\50\2\0\4\50"+ + "\12\0\2\62\2\0\1\51\1\63\4\51\2\0\4\51"+ + "\23\0\1\53\14\0\1\52\1\0\1\53\5\31\1\54"+ + "\1\64\23\31\6\34\1\64\12\34\1\56\10\34\16\0"+ + "\1\65\14\0\2\62\3\0\1\63\42\0\1\66\32\0"+ + "\1\67\30\0\1\70\26\0\1\71\15\0"; + + private static int [] zzUnpackTrans() { + int [] result = new int[1040]; + 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\1\11\6\1\1\11\5\1\1\0\1\1\13\0"+ + "\2\11\1\0\1\11\1\0\1\11\2\0\1\1\1\0"+ + "\1\11\2\0\1\11\1\0\2\11\2\0\2\11\4\0"+ + "\1\11"; + + private static int [] zzUnpackAttribute() { + int [] result = new int[57]; + 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[] = new char[ZZ_BUFFERSIZE]; + + /** 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; + + /** number of newlines encountered up to the start of the matched text */ + private int yyline; + + /** the number of characters up to the start of the matched text */ + private int yychar; + + /** + * the number of characters from the last newline up to the start of the + * matched text + */ + private int yycolumn; + + /** + * 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; + + /** denotes if the user-EOF-code has already been executed */ + private boolean zzEOFDone; + + /* user code: */ + /** + * Create an empty lexer, yyrset will be called later to reset and assign + * the reader + */ + public XmlLexer() { + super(); + } + + @Override + public int yychar() { + return yychar; + } + + private static final byte TAG_OPEN = 1; + private static final byte TAG_CLOSE = -1; + + private static final byte INSTR_OPEN = 2; + private static final byte INSTR_CLOSE = -2; + + private static final byte CDATA_OPEN = 3; + private static final byte CDATA_CLOSE = -3; + + private static final byte COMMENT_OPEN = 4; + private static final byte COMMENT_CLOSE = -4; + + + /** + * 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 XmlLexer(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 XmlLexer(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 < 218) { + int count = packed.charAt(i++); + char value = packed.charAt(i++); + do map[j++] = value; while (--count > 0); + } + return map; + } + + + /** + * Refills the input buffer. + * + * @return false, iff there was new input. + * + * @exception java.io.IOException if any I/O-Error occurs + */ + private boolean zzRefill() throws java.io.IOException { + + /* first: make room (if you can) */ + if (zzStartRead > 0) { + System.arraycopy(zzBuffer, zzStartRead, + zzBuffer, 0, + zzEndRead-zzStartRead); + + /* translate stored positions */ + zzEndRead-= zzStartRead; + zzCurrentPos-= zzStartRead; + zzMarkedPos-= zzStartRead; + zzStartRead = 0; + } + + /* is the buffer big enough? */ + if (zzCurrentPos >= zzBuffer.length) { + /* if not: blow it up */ + char newBuffer[] = new char[zzCurrentPos*2]; + System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); + zzBuffer = newBuffer; + } + + /* finally: fill the buffer with new input */ + int numRead = zzReader.read(zzBuffer, zzEndRead, + zzBuffer.length-zzEndRead); + + if (numRead > 0) { + zzEndRead+= numRead; + return false; + } + // unlikely but not impossible: read 0 characters, but not at end of stream + if (numRead == 0) { + int c = zzReader.read(); + if (c == -1) { + return true; + } else { + zzBuffer[zzEndRead++] = (char) c; + return false; + } + } + + // numRead < 0 + return true; + } + + + /** + * 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(); + } + + + /** + * 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 ZZ_INITIAL. + * + * @param reader the new input stream + */ + public final void yyreset(java.io.Reader reader) { + zzReader = reader; + zzAtBOL = true; + zzAtEOF = false; + zzEOFDone = false; + zzEndRead = zzStartRead = 0; + zzCurrentPos = zzMarkedPos = 0; + yyline = yychar = yycolumn = 0; + zzLexicalState = YYINITIAL; + } + + + /** + * Returns the current lexical state. + */ + public final int yystate() { + return zzLexicalState; + } + + + /** + * Enters a new lexical state + * + * @param newState the new lexical state + */ + 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 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; + + yychar+= zzMarkedPosL-zzStartRead; + + zzAction = -1; + + zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; + + 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 12: + { yybegin(COMMENT); + return token(TokenType.COMMENT2, COMMENT_OPEN); + } + case 16: break; + case 10: + { yybegin(YYINITIAL); + return token(TokenType.COMMENT2, COMMENT_CLOSE); + } + case 17: break; + case 5: + { yybegin(YYINITIAL); + return token(TokenType.TYPE, TAG_CLOSE); + } + case 18: break; + case 15: + { yybegin(CDATA); + return token(TokenType.COMMENT2, CDATA_OPEN); + } + case 19: break; + case 11: + { yybegin(YYINITIAL); + return token(TokenType.COMMENT2, CDATA_CLOSE); + } + case 20: break; + case 2: + { yybegin(YYINITIAL); + return token(TokenType.TYPE); + } + case 21: break; + case 9: + { return token(TokenType.KEYWORD2); + } + case 22: break; + case 13: + { return token(TokenType.TYPE, TAG_CLOSE); + } + case 23: break; + case 4: + { return token(TokenType.IDENTIFIER); + } + case 24: break; + case 3: + { yybegin(TAG); + return token(TokenType.TYPE, TAG_OPEN); + } + case 25: break; + case 6: + { return token(TokenType.STRING); + } + case 26: break; + case 14: + { yypushback(3); + return token(TokenType.COMMENT); + } + case 27: break; + case 7: + { yybegin(YYINITIAL); + return token(TokenType.TYPE2, INSTR_CLOSE); + } + case 28: break; + case 1: + { + } + case 29: break; + case 8: + { yybegin(INSTR); + return token(TokenType.TYPE2, INSTR_OPEN); + } + case 30: break; + default: + if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { + zzAtEOF = true; + switch (zzLexicalState) { + case INSTR: { + return null; + } + case 58: break; + case YYINITIAL: { + return null; + } + case 59: break; + case COMMENT: { + return null; + } + case 60: break; + case CDATA: { + return null; + } + case 61: break; + case TAG: { + return null; + } + case 62: break; + default: + return null; + } + } + else { + zzScanError(ZZ_NO_MATCH); + } + } + } + } + + +} diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/jsyntaxpane-0.9.5.jar b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/jsyntaxpane-0.9.5.jar new file mode 100644 index 0000000000000000000000000000000000000000..e20d1fafe27544f7c06cd64ab750b2f625d2426b GIT binary patch literal 524914 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

    )j&)R7ZrIk2q_NbVq+_$Qie<++9 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

    UqzXK zV`QZb*PLKJ!>VF>4s&wD&gT87OrpwmN6J?Fum*r~`rVPG^PQ(EWqsFoJ|RZ%{3ey6 zw_vU6nVbsFSM{0#N}T3zCFB!cjIC!4la3VZ$E1kRZ(7>iDJlDvFZ03c!c_1(AT=XtD}Dq`X&%Dx@g)L)WNXt*|55~x_|v<~_WL;#pY&qz zi;aZjRA73ltcc-1q-3FSlA*hl^P*rJQ2}378O5f`fo zUM4D?_h{)GAE=Q24b1r9Y#K$i43-7DT3#=*RGxU1wshqx^3ixdO(`TR0U=$Te`SMg zCre0RH+Cf^EfZ~5IZaI_Z&c`8q+$L$6Mhe1Wt89K;)_LYZI^EKSErU$w`I>r-mgweg3{(zjizZM1j|x6J_?0s7}yo|G3JqNX*^3K&bocn7Um zRQvq8tyDhO4)i1KexkN@M2gM~C3C)fzx=5-!rnne$glph;QhZaDT#tjO@iZxpJdO< zmB;lkwGl3l<$C(fe1xt{P|b4KL!{1ms9Dbf;-*2d@JXfe!dOno zGyW+ER`2zD8PUC|A224{kIQ=ckQGHKBK$U(38Sx+ho@G0dirv=8<^V8i71yHVU^fv zt28)h@w}!~z4YF3aE3pe!PVl;msP2-$|TG_FrhYVdR~8O4U}Wz=RVlO9unX|%bjt| zD2h2R$Z#^oOgLJDa^Z$7l>e-_wcyVhP3mKsVY3E| zG_tSjmhXz;nK|=gWAIvuq{6q#rfQTvtzBo8j;)lZIro*yw*WjD!tKKkCy(#FrNlQt zSE?;(;i8=mG5_w=t4%pu9@zw@`)2q9^y0QjV*UDzzevlPX~^aN;l4O&!f~GJj)OAE zQQ1;wLs&(8p z$Fg~|nyG7b$MM%(t!6Sap>lV__jN{;EGeTT5~9~xX`M#mYSu%Jc>UH?ndyfo+eCC( zsD1k^qE}N?k_0KUhtAaDz&oE$gdYheOxSVE#C43)CvI`9Uhdzb&pDS8 zr{ZL1#C$~MeYxi9M@zOuUZ*ne2}+JeO18va^;l1Y#lO5aMSc_eWn)U+QIp17q5tgd zV_=SLv^C|7nKh5W>&gU!7=c~tOl)W6-HTh=iay7ct(29KA z#YCm>T9+v61a{=Do0Zgz%gde>qd%gWjCr8>UVRG0$V+z#rQKtzlKfy)AK?h|m>j7K z))JI6MYN}P^(|Z<$+6Gg-WKWo2St0@yMDeE`AG;&RHH75pJT(z_xFU}OjmGWg%)pWtJX@GZFM#vRpDH^ykXj*8Buh8kkcV)`9vpgl<7E;!M3 zU1K(k4@oRtj7-axSPW_{JX;eywCW|ZPE;%(aV%kqCixWbf4rDjDoxls=YHf3AqdBZ zX9Qnn!7;1g7yea9FW_o4f54Jc%U(r4b>Nck9vrD)WO*eX$=vO$pnZ({wL77b!z}I6 zLom!M6ys)(aU|10`*_7R9Gb{7>^<=7+M=e{jO&5@P?=vl`ScA=P2l-!u5}S5GoqgZ zqAb_=^~w0vkL3df=Uq7DMEE1n(?Rj-qeuXA)+j&jY%;5Gsd*@FUu%W2JI`a{@2Sqy zFPcTe<3yXm%(Bnm;Yu%^n5D#rr3m@QqOgJeG2HY6)^Y%HmQZ?{WrWva;v2g!IB;CC8KPV+(36rxS|zUdt3b| z0h^df2;r)<%-JE;!#LoyufCPwRct|Sl8suHS~k|ag=x!#gu4$Q69Z|&GDCQH|1TXo z73D*EUU7mJ^}SLXGVd@O+iSgA7@^Hn^vI z9v6Gl8F+ftzhBJ*G3qA#wC4OSo|>{t^NBUoP#)9G@ZVWEK2gp8)Y%ke|+k^HoA63_Fcy+FYiYsJ_8y7@>0MZjhMBLdD@H6Qq7|DYOo z)HAIr`f8wTI5gLayrQPdieH`9P`Rd>UYyp*-HNPJ_=u`kRck!adeum{Hfo=EXe!;h zcn)k!$X!}$rgMO-UgB!fbzr}<*3<546Q7iaJ}gE#JCN+}ffF*KTnR0O{N&Il`? zXP{vJP-3uJG2qG>tau^b8OZoqTL`M|SU-?8>>dRb{G(FXXEX?*NSFC9MSHWi**m0N zkvIo|udp$Jar7GLk{bWyTnjm?(CU`DRlRkn0*9u($AW@aA^BXu?`!Enb`4dqeluL$ z({*2QWYjZhH%Ezi7s|!v(QvD+C)U9+X0duYtVG(AI)eyDtrd|AI{Y$?!9Keco?5Pv zuMz1FCxL2Irrb%}QaR<_K{@4Ob67xG#=GSn>>--@gp8kvtQo0wcyb<&q`iuyJ&)=k ztR&uwM{~Vwg#1!_G~zGxJ-Ub&Bde{70GSTrQJQ7$s&&LAYtQGH4qU!2J~=Zp4RQMLANxme7ecPIh|USzm{;{b}!KV^#+>kHyPRds^+C*Y4Qqbbc_I zp5C$lT1nznGPDxEiYnuhzeY#K*&)tU=!#uDPt3d)Hj#WIJEgv<*oYf!zzYpB^$L6C z0*b-^kVU0BH3ziieq1v(ue#_T)^Jv77s6I4;d$PhSY?un_fAK|mQu$r<-RGBP9yn3 zxE(8|S9qCqKU}hcy-9E$4+^M!h1pS%t&OZ93b&M-C`XSul|k8HtQxd8w&|v`E*VZp z#d$0=QIC!+HkFUS&1ruWN~=~;C7Ce-R7b4LOKkT!fv<{V6~kFbWpD0+eo_RIoe!OB)0(`e@NLv3_ZqUmlo$#Dqg^>!PfN3BoMOz%Qi(p_mVnR{ovnPo;iDO%HwOlw9rfK%eLVk)`-Tp7VEfmN9+rL#U$WD=d`06R*it2rDmQGg(GB5Xx&b_XMMR^YxGPjUIM`Q^j zt|Fwu3v97}U4cbmmP22-H(C<8UEqc3Ozxd;%VRSfw}BzY66CMqDw6C~`o)g!#o2cp zV#U+52p@9Az^=;M%U6yS@2U>yC&6HkL{A07+(HwFir-xgb_&}U=lt5}b6E<3IlK>| z3_8Sl=pW=C8-=24=c$_+eX;&kDw(|9SDrTr#S<$PaO@BIPI0U|cD$g~cx zCI{uOs0V5vnYVHuVYhl8CA-T?w5T6(w|*Zvx6H3T8net*odL263-uMUzO8H0^&0c{ zcBkmRp?vbag+k?9>e8p}3ofq?4;I~$Q%f7R370DH_nr@kALt%=pX3jOAJnI4A6B-} zpBblcA8HR>ugnXruSS*l_ePa^4@T8~_gfV(_q{5}XZe+*?)kowPt_j2%C*bdSr!CTcG4nFJ~N>YTzovb&5E6w>)PaV0&We`OC=(x3{ zp6j^Xr=B#Qu59CKyc(8N% z`!e+f_J8Bbv)@aku8G0GUM0c6X#W3kWi>Nb8)x_b9a{GDF~-nnd+KPfs^-f@q6ik@ zA|Vm8CSfo&j|3AX4`xZK0GCE63>G=;SoGw-kT0}-NNxC<#4G$TH}m}I#{3a-)qAf3{y~SdP~Y)_$W82WN4%cHdQy{^ zd`uudV@DB{`N7KF`!IWTES&W!$esUujC?Qc_&K!kWqPVs_L-eM1AJ+g&2MH5+?h5~ zc+Hj#e41^&M^67#a{P>x{v4jdUjOlD3d*r(_mGSv1QCTyQKryE%W8ZuwLkSwY6hvx z`g11sjDWBj?7I7289#Tl;m;wnKkN6~Wz^iXhO-m&zJ8K)Pjm7=9b*tg^XBH>i?Tu_ zf(yb(Km=)3I<+?uz;f?lA5zvY}+RI-JQiY9KKp{{LO}L%Fbdx-OEu29}^ih@c!=*`v~(0J{i8S3SWEP>S)SN7m=w0rO!p0nNjQ(>OPY4+F# ziW}}Ww3LeBmmu*55xiM#gs9K3^JEL!qd35wdu_zy>=0@q{abb6A2c-;&Vk(qxux1{ zVkUT)odJ(CxKKN~@d-KyXez~OgU(dyk$OGut{Ptp=RfOJcr=FXj=l~a9xND|8{U*f ze3NWD%^qjB;&KdYpa;SxG7NQzms_^)w;>f(H3pcfzwQR+W8hHf;m`A82(Xkn+@vsP z?k1-~<$^Pzhgy7omzg@3XH3#FSX|kRpC|u4ZMseKIoOGz8(VCSbe1@tuTB>cdlJK8 zDfe95HTG~>-5n>9mcm@}mecWodU7aJA*`vaMF_3X?QEg?PR9A~;w~f{N}Oa(%}@g$ zV#p19l=HCRm1K#Y&bhWvBbp~tX@(bS(C2X*TRkCmZJFGh z$CAoacaY0Mr5Q#ykOF11D(=`nd3_5<0)tgop@R>XQLAHs1(#5PPzS5I90$bZnqjW5 z(zMTPP;}As)ztBsbomfjn@UD>U^s@Le2OsB z537t76jqxG=&th3`t6qM>S}d*aG1g?Niplcvn+K(|LdcYzVL8a95)^V7`8GuaB8<= zpfA^E7cU(j**6WAOZoJ$^P?5HwJVe6PD(8wnL8DZOW66rrO|DkiBZajS3xxtb^KM_ zcJ?3@{(h|4N0qL%rgD~Tq@ia(l%vz{^S45tY$4+kK_GSP2+V0CYoX`G|$4+9?cWInJ{JpF5_J$uHI6$vpKVl$q&>O5X zambh2b^!GH4C^O++!x$l@5r+g%O~o{7v!GRDL79vd=xt~gsUYoi`659yCt!*6&@IW zbMI$zo%V7TB*PwMx=WJ9?@2a86WmDcksa$})TLE({J^rTqu*&0)3qj~;ujoG+eXy9HAjmvJH%w|uli^gwv=K&+c#_w`*PUi0u3{RLNM5bdV>3(4@3UPLp`tW-RY;|ca z4srY=z`Zzr(3kf({wd&c5Wg18dWT;yzZbFd(Iw2~y6^V1AlP~bOfY}@PZwm?OOp|Y zs`hoaOVkme@s&}Wu5cec+^+b>MD|BmKf$9s^K;J;A&bb14lAHf`ppb$0L-9g6XFc} zBh<)J^Ex(ed$x-oPJ4#S8_sec@FR}D4;UI}XTClW=NIl0iQ|>&B8{^=1k}P^9sm}{ z*;(l0?IUQscJgx+t+<;*JPT0FQ9mLtXfBp9J;{jn|n* zy2pSUasLK^-Esd$fzTrtR_k(c{9{0=k?u*L7LHexOC+vWn9Ee0Uz!VJ9RD~_bEK8^ z5@#=g{gPr&k@b>e&k*u*k8fM32OF4p1zLOyetQPr7TRo>RZ5(No;`EJ;6-K{tn1@j zHpZoX*A?)E1p?8iL-Hw-C6VLqF=&ghFS{kHWYAAU%(ure{3VQLmCS=L6KBD9@mQ7h z>7j#(7@CGrK-tq_7FPZJf+I}wA(@uqA#0ah9P&Es4q3Ay#Db9oJn|72VV@kF#7$s! z2U76@Txd3|>F&4nCa3+8EkkVLQ4c;vr+R!8YN`haK^=KiHA$j68=iFeLH~#`ZkD90 zK}d63vWnm80u;Nf5WZDdTbOJ-x;0qTmXECx6S(i!zgS~6kiAYuJDnyW8mu_bV|y!& zw5T?x;7A@V^_#CpG*@cr!62IjT}%~imxD`qR8m*cV29mEZ}DwdQ)gmh(eKnuag-4V zDU}VA*F8|2qTBBiNKZ8<>0ETav9|XwsNyt=Fu2>?jzs@seai0cMCz;KH-)9Yz#q($ zWbzC8jovh&4_9d4II$y=(X~IYOIi03qSLQ!$>^bEwA4#K5r;l8-_NkSf`ZAuh#1eE zPaB_ovVMJjZnN%<0XEbw!AX*5YpLE`C@))Ww`QO+b&5k> z%`Upg6Vv(&2VfG-PBdSEo36snpo~y$o{64_ui{6@Ers2_l}1F4bm=(^o@A#lBXPAh zi8JZJM1{7U7l+e-<5ah8T=MLdK^J!0ZcvDD%3pVXEe>X7t%~4YG7SY&Go*p7tV#Ct z*Z}-X&{6LOCX3#&MLcNs^C8Z!zzV@hf{SE>3^`^@N~=F8Pe;(yTq~NsOZ!!v35Mlq zN82&l-jxx9AIE3tKvX)Abmbv20#oMuCpQJ+G`JPeKds6%Zhj|e z`!}ckrTbZzKBv}Y-V!HZH`Sk;CQx0isZAck1q!Ng7)k;-#|}tt*GqrE5R&fNK8I&waFXw~Gb^YaDvi6dZl>?!r6zJo`@Xqq z(6~Eqfbi^cT1E9&V^?*!^16r~^BEPV`Wgcm)`aZUl|D?gf<6KHvzzs!d!{t51Cfb| z-?DdtReMFSE}V1+pkJO2)E-6f><7<)m)I|zAR71?`pDZ*twa{zcsimp5UB*Fz%9S7J3#;y;fK$@Mg9ypo)*JfR}T zHfFrCteQysMR}Q86Vt|1gL=q(U!$3x8+;vWnLTLPW1$sNze~@cHJjckyZW|i-HfS2 zIWUo)n+J527L{xWHy!+9bP?IDc*j;vG=yBa!`-1vWShW zypz4B&XnEi_HNT6@`$gDm%Td_lpC?Di_Ya>V~pJ>)p8!&(@$-WhP~O$H6phR=*{v> z@ZLf91PQ`yei)Q=LOnFog{XwuI=p`H_CZYNADSz(-EMmAtN%I`9Co={YyX9D7Fo~l z8tb)JI&74+d1S9GjTW~(+*CW#r*GUy{HPf$ruSJn)iNuU9ZjiouxR{eU`kpzL`lNB zM4Cp-IMt{qNT}5D?OId#V$HVgEGv_Gm{9R_#VQragX~1v3PW;2F~P=V+ss1>)B>%P zI*H;db_Y(=WW3%MK<%!o%X%&i3DvQtGN-oh?_+awB)0+KG_fiBPF&zG|n^e_a!)mui3~+S0ewxd@t4 zL@kZ+e{I68YA4`&C*Y;KL8`tY|GgWLG60#T6ee{pqbRkFlPbMGpebcG(x5GB*u!jAJ0aCOAuZiaQuUSjpZ-(<$h4)A zsdIxW0OY`0zeJu(ho&?xT1*9iP0IiDr3%PSouevk;RV>-EejIz8+x1qVryF@E3H)k zdjEA2MQmbK*NRfxXiBAvQ;E8(RO?9eUOng>TGQI-Flzxe)&J9%20$-uPP4Ry5n!WN zgI$+k*7j@$SYf67%>1uCqJ+zah}CuzX>Uf0hlsD}0%-2$J78HJB`_W(YJ{OZa^l2t z;-Yyl!+9{#UHIT!_zt%^_#(^Q2`>_l$Q=q1L+GBbWL<2JY?o1M3E&^iZY4 z&#;@Xu=!R(gHvh&uULE4HtDplFOuoUSLKV7m8R2R!e3K_hz?Klcrw__O(U%}<>@M% z9CFI0%f!Q^ItaJ(s=8D(Z-H<8?FE+^1*aLVSnMlGQ#J1zw)ddu!G5lLb^hhHB`pm`nj- zpy@Rlyn#_%pI$2FbERGdthCAqP!~MBx(m&UlM`)PmPt|e$jv)|!1ZstHz_kGRdYGC z87lT_bn2`g*XF`wQDB$*`qv5TE>6mVp;tDnF>=b6x9w21BzYL3iJD*s?#L90qW}Ym zD{)F^wEkGT6weLfzFg7l)+HQd1cD`{EEP$2$1D(aT_!f96M;*O9Zfrr_-bQP&dTuj zZ2a=>9$|3rr0WC)^9+Z)4Gk*a_xws7xGwsgphr%&75ZPS$??%JSMgIdg3Gr_ENBXx zqP2Z6vdIq=tI)o+iv=gcbP96yBZh6|*#e?dbMlWx4rF#M7AL<+D5qH5GdOS;W&V*9 zQ4S^J&UA)dhzqA5wTBP$`prvbmd|t4?^#WqyT_cj09NAYneJS5pu0x7qQ7uZTje)U zGpzY@wW?M}PUK~&!%7x4it*?#F?LL#ezhi!CpIuDs{96(x|znTR(|AVwdR9gRXz zLRu-n5~T6iGE`|>%s^nx7)X!^uNSWBbUS^TE-y|Q%$wqdDrx!s>H=c=8h3rttlt(_ zjR4YPLNCJu#%S}xOQYfB`A`-7oULmAVH<#Bb=b0;=A7W)`!llJzLZY1xh7LmoodBo z3JGxeTb4;1b{eVT5{EoCgXtWhL11HRTIwM79|AMKXl8rM@`Fic{>J&y>zVk0D*wZD z*<&Yw{Pr8*0?G3c!c&!*h#iQ#ue@1Ndu9K6)Ax{(!8CR1iN&gsidHjT4c&R?Sn4K4 z)wCgaZWX*HO0V5f081Xbyn*eu=$5Qyo7tTUlhBePUwPj!WgtIKXqA<&K{T?%!2g%W z?cLC_#ASdco@fFSKa*7v~w9wEAX2eQcdH~sSP(oxU^R?$^A)%fZpDHZLj%EfBf)DwT}Y z`Zh6$4rki1(4M!!^wp!0WLVon$=Qsp$lTETueF!7mFL~xt_E2v>*{r_$@{|glcLkw z@$>g@)6b-?_P1F15&58BEMDIbXL=w?w&9H2rpKAPTdg+{LNIv8VFlnc|DGD}tix zN;x{SEPob=ea7Tls_{)lpJJQ*a8&=oKc0y_ossV4sWJ+A@ummMRcu$O9Lx_9+9bjF z^7MPpR@sC2;J5!QqUnM8;CBen!Pt@rys_{sQS(s`gnjLwI9EK@Nf11O82jCyW)HlwBNG3;NL`8^pE#9s=hpFNx1Bo+zgC8 zZSMXeTKwXAKi{K+obKM9BuCUQ+NXFuEpbZcV%0JKwkD&9K%n{j<{jtW!ki*npOk^5 zLPl8j)_)T268hd^_|gyGflQ;+_>S22?v`{l>|eyiORj}XK*_i~Pd$7`hKP8tQy*Pi za)gIufh0G(d`33RpzEYB&+2LT{(EOPlGc|z@U)%*_uChmAvtBMv2>!UK&vWRs|qxs z_&1_*eLm5>JCFf4Q?G3v#3x4eCE1Q2hX3KR<5 zt#Kt2gKqy8i%=y$Vh-YRd@83hw$O-H0;9V8-u#NF8xt2GlH#n*B{&*<6dJ(6JDW>6^yJo=}&bB94Wbn z9=r-j)Z&LpS_uUbytj5aZNn~W)Sf7cC#Nkr+M>YC-#Fw*TZxZ`V7syjq_p+aiIb(? zK9H1u8dFI}XIotbEGA$%6ctONT~*Z?9z9GO%h6-i2m%#d-g$>_jwnX+_Xq%ODQK##Mpnf3J8oq5-1ci10zVM-YT7F}D(qDp^LPJ12U=RNg4zpwjDqI;)xa`O!!SdK%gqzF#$JKU!V@>XEUEF8g& zKt;4E?^43g^JZJT`UF>RMtr`||@*30l69>Vr`hw0{?%k+eh?I5vn+zWN%N~QBhKJ+-Ub=*7b28pnG znL@;z`@5g=@Q}z*ztq|vzo_zPOeLcIjXUpvy<_oW4UC)SfRY$8g<(auQNR=n$F6iAC0`3Hy&D!v7d}eIzY1Z*7S$^=Pee*{<2Z^+D0b+v(#MZyx$v0@eB*Jgm zI~4*HEpC}xbU)K<4}@)+-$RHpjOG-5f(?V@Jnce|Y?G1f@HlOVd=1!-6&MXKE?Z~lgI9$Ff9XR#fLId89u`?HsRY6cKmVdMcAq@ z`gZ;T4&|p4Cc*q#B|E5Y6mE6SuH1%niU8KNFg`7L*AC35l@DbIjGT1T><(^38g3FJ z7Pe3PHl3IuE3dM2#I=(PD_|V{kl+rYu@;dGlLTg`-3Cc75u|Z#HQFPzrao|vURRtc|jc#U*Nil1RO`+ ziF@0o)Lz4v4S1;!fb;PDOGHuMhAMl*^034u$;-0XNPSzaq}FVRr( z4S1NZpXADWi8g|-z+wJ-RU-IilM0Vds4hApUMo-PA(C)I&Hcc2q3F_8l_aUiZD|{j zOJH5JL(s{~m|C1bwlRkg0Eo+45rM)P`vF}}@E0G#pQl~bovEajgN!?``p8@_vZ=p` znsPHwWu2C0DjO@ZF(-$E-E1OB*Cj4W4meCjHI2y~6eoPjtL-gcUJ7$S( z-K<|LIM3b$3r2wHj(O4%=30o*#7&Wy&mQF78B=hpHCd`%Q)SR&? zaqr7-(8Igu=M=vkRk)luCy^?zM`51tQK2dkYLZ5|i44^x&$PzD4pftXWYd(o<+^+1W14nIEMBD7WB^*xq z_4RVH)g<#`%H2_hZ?e_2Q<>e`@rWg!r^KR60K$U?b3kzg@g_C28BC-ZcHN-q$RGU5 z?_K0TM^mlMkHG(%8UQ{?n%mKVfz4Qgfsy}zQUg-<7T*6mFp%SAtUlWMW#zbPAWNV0 ztq7LI5yK?gl)?TNDhY$V2-h$dPjol5NkgMVSXA)-D*X3ZN>Yg{je8~)iCH}xE!j;u zrJTH@i$4=r8C%SM4)_p#I#9ggsbyywdyi8`fdbPey1?u-whT+gj z^9~`W49D(D|Jg;oVT~r{A5yB=FRwzmOcH;OV-xm@GWvVQoH8u8t0gP*0TZnx^DO&K z=Gz5XDg&EDCg_Su5>s|b9jZ?mb{Yy)J#DA>)M|R(+V!INM7H>1E)7ts6i#|3kN#?k z75*t6ST-5>Z`kO3xBgF2{WE^+rx#lOT<(m_d*~41cUi1bib4^|s?@pU5+;Y#R<&`_ zN{Y^(@?_!TIqKd}3Y{O%xksmRcvzj*?q!?rM1C+7 ztd`AWa@m~1kHJd9jmDzGjr8)8XWSvta*V63Mf6Pn;?z3f0Smr2r> zAe}D7KU>Y!DsHCyQbzpjAZz|^v~V+9d{n_#6plIu zIFPMYM*i<49_Aq;)zu2@9GEpk%Fdd7ymxyr4`<*8FK7J6+EVm}q&N&TE>fs_K|}X@ z*hGdBlYXahf?c6bP|RNXWVSS>S~_$7E}c)k^X0^Ftcmx_?Ts7&02d43%^pxlO;yb{ zZu{Y5IIB(xBvrb+UR=v$MNvERVpwhh)!@bUlqsS57wkDURSxLz&#Gb_6xke z$nxYJ>hBNh+pbv9kc!T9CRa>MBwcM_ON04M0X8)mYt|gO4&kNe>6Wj2C8~w!?1tj* zQc01d9AI`vZ29en@LjN%w>je1h#PaK0N6a(FJ82a*B-l{2Ea+M>~`ZFu}4_5EOqr~ zQ3lt2f;flST z-tW{uzmT+9iZKc`bb%NTd{4yJ1vQtlHDhowFOiX6^OYh>r^7iP)>1k=H z5@)SF#pF6DDeEj!Vh*vG7`0V(S)2$4%r1Amg^fuolj!hJZ326pZ%mi@!+*DZ!4ev_ z+0P~q-)%vw0(FN9V^+xi$+05ryAH6-&;-;sjAf<@FkQDccoWev840Dm9hc~sN+G=# zFqiqjFy4oal5#1iqFWuC*J0=Pj!}&s9h>JljTkFf4szV4bg(Aqi1&X#`*X;_$e1Pn zFZh{kL263JI>PDpewUKc4UU?r0Cx7qu|i0arqum7-cf@tMjaC|L+nip53Zz&_E#0% zTpf>ja_SsYM7BQt20n{^Y~N8qWJBIA8(_VXXW_w;E&W(Jrk&_J*ncil+bEYBn=UQ zO(d6nu%TIWlu;(J1uh(gK-VIK-F>PkwSOdvSCKq!1iR-@QEtnmOf?}uAnNYiQkSB? zs}He+0i(o+PxJA3YuH=r%l;Z5>I|O*&z8jTJRImVxd8M)+I?J26UC`TvJ_kz_`w&2*mtt^J?~Qi?6h7)?Gr%qpcP!%i>LgdC$eY+S@T)D zeYyqR@OeRUwgukuX<&S|g;?<^Sa7-pU-Rh?+J@Zl3CSIgdP59h_+@haKn!mDrGoNE z3~3t3i1U^R+4Mz0@}>md^uqnl9m&ZJIG|MW?G*6vUzV0|<)To4TT`YZ&7(K+bR5vRj89Y~$%e*7di708`hGxQ(~|y{=zj8?Odz*_aXtUERk4#FY=# z>*LUdEbFf|##@Ij>%Ra2Jg+}@8+RQspu?VhP;b zT2Lf{3nb`57m1()V^fEXDx?!ZaDX0C<|K)*1!HZ&L=pc70wIbxKM3e3;$0xXpooLK zX)VYo;vjFDI~a;M3<%#*#HB&TE({d$(Z5;Bj3gkpm+A30k_bfz(_;)0klV}jm;nTE z(_;aW2qsXA3q@i z!w81E3753v00L6d4j~AzNjnB0fVOpm0F$)y0fs9Cmb4QJ!ndTIK@dPcFayJ_gBrVb z2|~yR8@rYT0b=YL7X;8sUJzi$uAzbujJ}OsQ-T0J<_!8P>%q*Q=^k$JKueJ3KyZ>l zZZNhV@Faun;B33lV`FeZaW&t@#^{3LQVTyF$E^QG)>YPF4;AXys8Kvn$a%88!&0?_?Pu;J%ZA zG-(|W0Y9rjfDZTxQmfg3^^PH4$F6_t9do#j?d)gngm^Ckorq4j_acjJYy(h23}jd{ zfDf4U00B8*7I7PU<9ooY!Zvp8w_a<^XG!i*qZYjPBE3FlUC4mhTF_>sfLV}oZ38x7 z7NlI;0QDdU0;q?NZEQiXfZ0$Gz6HzG-l@k^F!lSlTDIPie2Q4qqp5J-&Esx4x0YIybq(@U1^WM%}ub;cX|C8u!ac<`XPWAMPu6(}T@upm`YynyPOI#e2e zJW}8I+aZi=JYhM*`L%f`h?YJ#=+dX70ita&y!S*&~zBgd)>mp1JiA)T6YMN9b# zZR}my55t7C4p)McxD0gXgK+^~R;X2d-q{gmls$7tJiEAI$#7h2T8+aZ#`~upI(NrX zI6C4iT90L7znCASwF>#E0_)0mO|k-@`_pNUVxew8#*EWYdPOy;4CG&L)Ou!K#-)B| zrHEp+ef48Zl82@i#|zA3CAr3mE1943{JINi?DrVFYCUlH^*Rn)>10Mq?G^C7R-$HH zhFc9f4=3<{Kgr%-Rg;JD{`#TU_ChgcICf(@iJK)@sJhL%7UsabC^jwf-Lam+Z*O#I z`a#rhHjiUK#KqkWRhc{=%GVMw|H^V+DHi+PrZD zM&hkW?kjkpNlmt>ZI*^VGS%D``apZB6S;b%vju(XvH%6m`}13^-N&s=MdP{gcZSo{ z5FCIGuR9s(ib&#NQeONotI*w58o}%)+Ai59cQGNz3j{RreAatvU#`DAK6GUR{VL|> z7@UGJBP%j0Z+U>`%n_f|+*T<$rL=qdJRaRAbx`Hqo4nKKQ$-CSD~CkJg<8$W#ul(d z&IQ(>TCImhR>_mfpLw-#4{r34eVXyUJsJlbU7d^RNs49)b-<~6dCAke4O7mj%RVV%!4=uoevh@uMzT8nWIJ;bW_0xU5wK>Qt@)>n?e)3X z=3%1cJ@uyc);-y7Bw1fBJ$oshsv{52Y3={f^^U=rL|wyfGU3FW*tV^SZ95a&=ESyf z$F_}$J+W>34({-q=XvYY`<<$Ds#bT`T7SEH_pV-hU)N7Nb~}6-XI0j5xL)1yEOmOW z$x`cYJI$e0i`_q+Z5YSx^vw7)*H}Ui6?j`Xu8afRn=X7_t_^Bi;uSpP-^!BtiL;U7 z@`p&CK(|s!lFmBfk_&V0w(atx)o~m_9TlwvRr<+C0^gGB&&2r5e=Ur2@=C$T%uqUm zQ)w&6rU9fioV_U0HJ!c8V3M+_<}>SbH~|BRDO{v6yH?&0K{Ii_j6S<(i89VYH}B=_ z02b^0REhJL5i|ZFidIKys?*Z#ZiHsk?2%Xo$*}R9`A0?Rq=qIteSo~1 z29^Wdqjyz7+$UyhQNR^%3WvVcsCN6AHD4~d-W9hXhkjFMKFZOB1`VCqKkexD$Z5XI zRON={Vu{Y8ICv$nxPm-;M6ogLY!w{ohRYnPV*AS;V&_Isrl*`)k|w1%S>1wmd`m3i`J zj%Z_+V20&3YqBY#pUPZ!>Ww{~g7cec65nZX%rT&Y+@s<1noH^$XE3WSVN=#Yp7Z9Q z>#buMe9bpOp2&C7l(`g%hGhwiqu)ieLf$aTeBS5$VaD!!lCf}TZA->ppZ zIXj~&k32<(XN!}-z)Nf9~YxdxUxW(TTZh6)0*+6ugJT)D2LO z*uI{dSpO~+dDXsl?|vEL9J~}C^z-jhoL?6xY{?IAZ^O5VfGB}ur;(TZG;h-SIpW@~ zD#eNWzOyEGfz^tprBhL=?&t%Jx|?pp$@Hjr!h@b3tX$->9mpJ97?_5>#G zvF)%9kR>du5pD}LKlFEY0rm{3dlABA!XG_B!GlC?O3vy{O9JSLBZ)|HoGZ} z^~8UWdxG)Fnak}a-1LeZPIvMfZM+kVG^=V^zNBY8TS<}g2M=AO#WjAeoRVyhbUG-}z#Y7F{-bH7?Qkw9puEXP% z!%*vU)Ka)Y7UH9Z1q4IC<_3!!zfX+<0dU%zWh5{1<5Qpc3R(7DAu3OYZyspAM70db$(ymwfuT13i&pi92-6Z={Fy*8rOx- zHnwuHS51~oiuJBunph2Wi3S%;ft#f>LcVX7RL@r@G%mj(-iQ^OMO|NR?@rKr$*Nsa zgbcNZXKK4%FqCXA&qo9mso-~5a_L+65#y74J@~G^deQl(J)9@03~gcv^nA-s(Q$XI ztVca4yOz$^ef!VPWh_46?QA*tg{J&AM!TBhpY4clHUwREp6+_D4*r$iTK|;{eRrN( zS{$0PZouC-@m;h(30((#U);$SDQm->8 zq|r7h144<$IFT|Ce$C4?mF4jBk_)r`-tVpn;SM{06WdtMWsezJodv%Ytp{EhJi>P1xm&6m|7R2#swkl!`Cc(| zGGvYN>~t;zpK*j(QX_P8sbH?LV7#n$eCUZgG^v90Sh9I($n#v6^QQUtgO2OJ=abJ= zm#>MA0Gs^}-35&=Da4?A2=3zWgvgfCwH8}~l}7E)!%nmRNr$IvZ6@g} zT5j>m-vfV5dM^+Myl*w;BGy_2U&sevtnGSpw*NQ7+lS_AHcMC}{&&rS=4$MZwRI%J z+qA^p9Q)r4gR8xQA-H(C@vOEVZovo&ui7XW)3$zqU8^6OZuNiiRHxunI~?+sw23b0 zD!E{F+xjR(jfQ^O1tUzn!#+yO3gdq@N0-gr<5q+uT(M1~7OVO!M2)6?YfddY+-mdS zCENeW8JvQ3*IA{k8Fa64t6312>-%vzwFaSW%;yhZ|AUgw9$o@t{LXeo|k;< z0J<&f@uoBnAr~{)5lCs*996fMEuwlKJ!VJsQPs@kG*C^TrvIYp`LIY-q+1~^3>rRbCQ(u+UC__pl4SbO_6BGK-T^0^N& z9HN=lkI)rfzs0K}B?SYVVO93oD<=zPlN6J&%{TodVMmQwQ$Ji+(1>@;(R*X0#I?9jj8xPQZ)qSnddd69V^))sic4u1*#Ca zsVR$>T3h!qeD&3bCOV}@Lbm2+g7{~W67yF|XEGubB+}FpaL0{f@*F~`>w|%V5@rJB z^b~y%j})0#o5|ONN#X>JL#T0iMXXgssZncFRbB!c~ zL+7m=&YDzYYfx2GU*L&Vk>QWPAe;11XT`S>p@OJnNs>eBrEr=skN3g3V1aRQ=7+nw zi?ha{hErEX=wqFN^>N&Kp>C~oi1*phAhU8^F=y_$Xglb&##vmj2Q{!9tXY+@B4O$J z(sIY(Mx^z_>OTP6rYt2k6vAe^i-8O`Ea`QDmM_WG-f){ zO0@+8huEz%y6${8g{ODj6kB(C*234-T1VG5^&xe)j-GhutTRkUMYrX$%yzit+XxOR zm_(VJ7Uy%MIUusZ%!UjwbedHT$o{PT0{N9+bekJ}*x8;vHORQB=nv`&cbuV=(?89P72ENgNMwFtxkK6VJl=+q<7jLs ziNPvWGx<2eBe3fBo~QCy|a^Kp~B5x z96!;hwQ|yPAEW~SJBd?l^Yje+=S&6-QcX>=`3=?aW@jt)I)X4GX8M zbw8Wf#rqWc5S*(8zr^+dTPtrEvRtx0$ajYUlX z?(Tvdgp>E%kKQC#j@zoBjAoOH(46o9R90)NJWlsiUaXh6o$d{f*3_{Gz>~0DhWMb2jF4KEp&9 zkJ?IVI$A1+I;$3U_?pVfzohd-4zS|A?>lV7@_7C=vHo7Es_Ctt_-UTyfM!p2h`krP z3EoJG1m7pM`~)2tu2psPHZ2OO4gn&(nMoy_0nIW|qlAtDB76KRNuec?)_{G<)u52z zLWU&GY<<7j&t_KCyU1v-a(Z?Z95D(s=Utg5K%8wCA^z& zY&t5I6z|FEPoEAkd8VJN86Z{le*nIi%=}J-(_ai^^itcywVjATEJZ5^^>@-OopRNbt1uEQZYlp|!hRkL%+lx4&C7$OG zI+CM=tGz|LN8MH(Y^PM0m*#9g*-e%wy_k8dzBMLODv-V*HN`U*E?gBDM|diClZSZ9 zxnd;`V~`B1y%PLXCiadMnUQX1O3brK!=g;N7@J|6+>xgCAQt)}6!MOM`VR6)47kbl zf6Najw=WyBt>Z4}G1c=-I$$SsdU0z2=}h?30dq#`3|S0?m<`jj>L#aFj*c%hr#1QM z?k~cRFC^dB2{;?f{{*Lw$)nR=!zLy&26&T!DBRS-rY3r6QX`u#-UNl+3uJ~7vL5t>!>Jh6xz8MxLn zp{C8$jIYaY7VwV+ykJ_|lRxE7wb1(fm&p3&om!PI_LbIWUXxsy^UpP6%&dGOsePoY zldfr`#9jM~W+EB?KF{3HwtVmw{ktxFo^5+J<1&dEmEn+g%6P;e&IhIYR-GTvbKVQ$>mp;~P(E_qg!=2dA8wQ71v7 zQ6Ann7cu;kdYEwI87*p!Hq@x`5RN1N>YX2)k9-3K{+h)VJ8x74S|4A|)>T5^7UKJX zqeidj%pWuvp9pdRalgNyGCuFW9v0JppSn3^16OX7y`(v7)&Qw#1tL28Q@29VRt+j% zg9z2Dpr?>!bxUhC@`^r89G#@oN;i`ofCQd#)#`|lSC^hG*9K9DW@nj&;SZ~_gV?ol zrHf1@?Rd>?QumBh_>N!^;4A(~Bg}Fnu#501f4ut9?&z1$oazM;Q2@I+ZsDSWtxA&o zHLLt_AdyvxIafrCHbh;7f~MF>7p0{I`Z~(qVi+ZRCawc3ru_AB!T`&%?Y%BGzK&V$ zuS1z_KnuWnBU_MLfglpSiO>iM{$s_2`2m_K@N6tE))@a(i ze6&6Yn&Nmlx>{NL4F%tn^@3qlRng)K%}=_^0EoY($^+(K)=i%5cko%T-ru| zYaw;gqWe+SEWY3UWagx-OP|%EvbT_SH)d+WucyU?%=V_5@gSKYz?~JS7Rkap!3K~Z z(LW8qN`4EVg&tEB4|~Tey=B3$Y1fa=9%ae&;$|)%F};>wSKh$7$Qvru&zws{=~>luQP##ET(ne6GWho_>(a*1=zW6s&3J(X8wOwq>nl-9a6X z+3ek1w(DF~J=U!*{1f)6nB2p5*_w@4jUb_Mb6q&Upzw zD(AB_h=n)RRJ9TQZ5@?}5brMn!q_OB3_(luA>ha+;%{!gx#XfETejq<@VaEb8kebakd{(*neadf7I}KP(kGpGz)zX zf3lE^>NEO!vHAAL-U+#LFP|_wF9WwiYI`6Pa8kfP1dtI28R;ZAQ(yDO)azrckzHa9 z|3Qt5-j76;#u`p0%V5_Ccu7pFU~#S%x0*P;yp)SIN36XzX=K`$3!n9?R6y7-k_x}( zT&D<&t;9@rELu_6Q%Yc*xfXY!Q!NSwMq%e9i&ULpFF?N;y(DKEFK3|Ily?>Rpj{(+ zS9S^5tm-Nr6`PhCr8X}`6|7~_FmDKC-W+qY0oKFU!K?em;;vJR%y<{@iAs62Ry2Gp z;(ql|#We}oK=JYxpQuu0rYBAKbfJ7CjtHy1V>O;Y3OvJtsPtA74&mDk23rVMn4H{3 z{fG>{(Caer?s*xR<~?q8qAuRrWNe z^dI#<66gsHVh%sTyqHn#{PwZz@qG2Y5;`X3nUeZDq0qDxZ83X=Z&cDG2N>(0yv3)g z@fa)s*_z9gHW~24Tm_EBG1EScYgBBDvm~9XAbv22j;8^RU#R5cVz@wSiqukJsz6ea zuoeF&H~Y4yrV(2{4z#M;yJ^+Zwgwfvbo%-`jkXWFKxrWpDV_0o<@H=*ApVVtyHg1UpQ)gQq4 z1}kd1A^hsmjCb!S$8&|mS`QR`U>vEeBDxoVl@ z4{Iz>M8f|nb?4^S{E{mu@vatN@Ge6{_wHT$0uU5_H<-cts_CO7&;L zTHR;AB7pQi)IklOS?{Tzod{=5hYrBCd&O6*Lqj0bp7J$=_|lFB{wsb-xIsB^en**b z>4Xjf2sMH7p>Njynae6;SblgRJ|X)`dgRt4<|WFczCGVpI5n3}`|xNsLF(7hDE5`r zsP?4mjS=pL^_A5~-NT<;SIvU>)VJa+RN_zVP^PKKKgN zQs*yyRfl&I^Nu1}$i*TU+kM-ErFa!vCWr87Z7jv6WFYb#xdP!NFb8m8& zU|GtFGthfb!fN)jS`LShuE=dc&pe*aW;!iT{WB=_HAwAL%i`OwHBkaFxeG2 z^EJn{#~^JaJu6PU5J1QvQlcqSJ9+NJSP$)pKANXFVSqG32Q8%@nxY=2SNhP;4S9Uo z#hAzi3o9HZxx5mKL&ZLF!Y*1$eKbXb-KA{KvF&%MSN6}VA7sPeiSXM@W8p&>`1{A@ zZTXLWf|&2S0sj}_3hAGa*TWbW?+h0VY?mDjjO71&t*V^c|I5d#<7K3_v?TPr{e0Y$ zIYplQQ-qV5IK)&73ISy;356XE4FMdXbpQoABINsYAcz=bp+zP}*>P z`4WwKRgGOuP0O`q-_ynC+7{fvGv9Mhw;XH1&hyMO&W+c}rq4CcNv_Y|j^~~|pEAOL zs0i~&>+EeLC4wIG{5#j2{w~g*QGvetGocrdY_|XK%ooCJD9}czeuw#mA$W)7MIcy6 z3pfg9wh+K_@fHP%>hTrXp9cZNdZjZ7Fu8pO`v?{^x>ckUGQET}p~CSU+D#EJ`xR}3 zBcdguBLZca#7wN8f#Az;%uVmytyNvwmosidUUDU(>4 zidt;}_2xWoq-#ZN!^ilX{ZsU$)9s>4lSx-&qq)*vzlK!jTNy}K=N$Ju>!R{}PWZIm z8dtNr+|JT`{s%_6gDrP}x{Ip*AZYUdB3N|VcpfE1*>FWEo0V$UDQB=45(c=uV$faL zQQ4u9&<*)yR#;^&zBKVjS7n{H!ibro8lVllKaF{^^qq`R-vZd(F`Nj;O%5kp8_|wc zW*v8qK;Qbb(;0urg%?yf)#N4~?9m`_@@8jO;%a=KApEHsHh8MLRo`9UWH;iWy8381RHL1bgqu2X0rXNz2tTR4_7FwsMTkTIi{Q*(~N6gX&q)!so6y2 ztU9iS=i`%YJSX3vVCg*6>^9}-y-Ly3Q`K3t#nN8i)+X56RKu};?QUf3Hgi19&r;Op zA>QnwYr8NJ$4GsBRdaTB88h6)ky#+_>fR*xQr*_Z**o6v*X7>QHf(}xwS^l>j3*`O zGxOBGthc1Ur4xM?E+D=PH ze@CkcKa72;wz|f886!Rm+wLa9!D_n&qH$!=aJhwUn_#Ph3^#t-@_O}0^aI%2@62-( zr>o$lJA%1oJN23^JAzZ@i3y(Wn5;N?ltlITC3c|g4)%p@oV{(lQ-<50Up9pRJGm}E z?_VuVMIWw&xasUJ&qja7N;2@d$T#*V))|M65nPJ+qBvusMK)MGQH1bqC}FdQC;XlZ2v$F_$RP z=5)A^K{A9GLW+gKMkP#PXy=QP(l?q(nMULDz}YpAVUCB~N`q0{r_hYN$R#>t75;vM z7f&Qy1`8g>!G;{vVo}HtekI+)z)(Hi&d-oh{C;Q7+8?lx6zMiT)NnCNC`;Mv;=y`1 zl|Gv*MVaeIoauR8H9q7~=k(h9Hf_2O+DMMX5)5~z&V1SKVPsl=?u&V+fyDdN| zZK5{G9I+^8`FJ_jD&q(kTqed*qNxaHPz-xi#p#%-(%8?bLk1lhM%qCWq_-yNYT8kg zYulNnDbCYR^J^Oouqqdv5as=4=1JUETSN&8h&`}lUDcs%gDh*t2|fMgSxm?l%`n$r zXKotnan*>W^4-{R*5kOPMqA8KdkO7g#WXLgx3LJ3@yHK$5>k5Scff+71jlL?_T6Lt63e393K!^?>aYm?o$jl4wtL2+K6y zJ1oo*i+d&Np3V~wW4kiHa0fHC9-(@(OV!8`f;W}_%*&Xp%D}>SIC~Hl1Pd|_3}!%x z6904Rg3$Y?IvNm2A*?g3g^A3sC>iQkvNN(J4d)k%mf2c>`kPsS6CTmBm3nkfqY{}< zkXBYaYzJ8@D)=vk*{T%TZ&7OI^#KY-7%axzNUtKth`2%Jta!4;fkbTtt>3{Z$g8CI zxj*7on?O=foCc636s5P#6~_0T*`YeNF~d&Ax-nMsa+D+Wz$R?|hi3HzIoErs*$FXk z9lcNnwfJZ|=D0=(Idf*Pws{Q}>}ey~U=?Uecy4#ZqOjN?y^ENiP0c8)zihf?;o!sM z%qiA5wMLkg5FjDWjFdEo%xUR{?t{kguIUbY5$KXv(2Rskdfcl_lBU`GTAQ0;A*B9j z#0}6h;8!11lRiZ?nm4lGoccULFB|N6N@@MlRh*@R{h4GcuvQz`+JyU?U&D&W8`EbE zV1EZGAiH)cz9P1KI>G8GtdljvI$u1FL98F2p%X#I7VP$YC0v-E=@jn4$A?WWgU2ZA z3Z%UTp^yln@xARJW)h!va`f6sz7YpcuXHaGzDwaGm3Da4>-WoMSlWoQq-ZBuF|B!h?X4`m$Z!7PFlw%Y`~dXa4;OXoQC0a+}2XzpCX8}p*4 z;o-Dt1(c^OQ)BujsI_U~+CFeK#vWCnp=gILHw328QF{xEIuoj+yNr0@itsfWT_Lc) z`++XuX^ck+5aM!JB?+otk3WChXpmT#W?T^-g41ETogxPLWEEI2_y{#y{_JgK_!P|Zr%o)TZ@ zYeQIe^x%o?|NJSs96CP4RM)eklP=fo+w-{GZ@S+jdDFE0hOq6L=aq7lV?ppnTZP={ zsJdZhQzU8t8C}5937BcNAZkr0m(>ypRUg@`7n<5;wbeI%(7$lAw`Liwb+L}!<7N9p zQ965>`Xp5#VLKnMgA7$Y*SJ$Zh(0MUB&uA zeWW#Q*a_p^(uQ)F9EM+C)wJi==N5V^$hYV88wJ+4Ix*j0bywG}Z~wrwpndqY9!6Pe zN_$93O8Yds$i^^b%&GyI1Oaea+ykfctH+j#KF^_(Kf7#;x_vB7ChTUoZkJ|9^DwJA z!?(#i+}uW6;qN6ue^=KVOw#kE&LtN|V$+9px@M~I3S88T(I0ECI>`Jzu}ryYtL-YSkMqRk1cYas8`*qI z>i7oRCXZSeZ1A$v;Ih0+GszTzJVG?!R$4uUoj)k$go@7DPLUQFYV0g)bu~0M#7>k5 z^rgg9D}JY`3Vhe;?^9QXz*I4T>p?rfDw&nf*DRTx&etrPwfR{mU%&*tl_XLJ;U^9E z!E!oiM&wCSQ-)~pg*NNSGW$_;{Zg9Z1kQW>aDC&EE*CE=pjOEock0 zCo;#{c5Ti<(%g>2@bYKxj>FKtp`Qq+Hmax5!iMQ00Y6Y2q~D{d`l!KwDE+2GEfz&{I$XalMJa0I-(@q%27+_Rw? z4Cms^?zlSkcY;0fW}vKC>f zUaz@7PI?#W4sm@z&+K;6G_Ap>U_io<<5BA1SDI`jWmJMvX-|jh{37-|!j)wXVF%Pt z`!IRI81n_qKy6$2tsq3oSe_qjBUK46RmF7$io&0IuO3Fw%{iiN-`LJBb`g?!#c@0n zzarp5UZ`RRydC(O_~hNon6>~yq3xPRe`j|8YJS0ZY#(<#bnWg^s3CZq6oXTR4f4_X z))EQKP~yHR^d+8;efL(~{yoA)a>qb_XUBa?fGas_McE_U)Zk>h05!{r^kb(M0Nay$ zLCe3Q?pd3C&~c4F^oy6IAi4=wQzl#^MuC*jfL#74ooz5Y;*GtVfN)&@MbvUGS-%%j(ZSsYQ~C+76@Q`dhb|$I1!o2OU)HJiNTK=hA8kn$rPQN zF+eQ#X~B$M6-$dyPFsB!3fTvIrDrlQ2FtefXSr8f^XcJ+%ku5c6R430f~UKG3R$%7 zD!Lk^$S^PoIcKnvR^|mIUQz&y*AxpP<`gsE1nQ232_t(s_;^aOq}ZPjM#M{js{cfZ zA`0erQ_S#r;ur!aS3)5jQP^+LaX$;xw{I$|L%%ZUFuZ~qbxZL}a|YS1mBfF;498Pb z8_1yI+>3<~H!6l>)Q;7T5gEC(PfX3=d=zWf{iqZlUh93nE|4nr{D-kO^~~T2HKAM4 z>)GH2*laqzGQpP9yoC)f*hG}9psqO>r8*RvcZ-Ma+htL27x3(JPh;L#FZ>X;BKfpm zW??~fx>fg%ct){^L|3Gozy7xxtbKWooTGpMIlZVXp@<5GKYq73 zrJLOe%JsJI-IK5@+lNa3w`7E}KkaXRN=||Tmc%shLLx;J5M$zuSfDJ%E#ZSHA)5RJ@pQ#Z|rj_T@CMi~tDnrj3c7RHvewvO2x^r@;(bgx3mR4kj@uZB(0 z(gsaM(=<2e2aEu-mi6qU4jXE$i#H}ukRL5-K#|q{jT+6T@JTdsxj{~G^e|0S)Iu}F z+YT9Gr?8G|a`PF|Sy`89!gVT%x0d<5V5T^XDW?FL%P9|!#El%}8>)E6d+F21;26kn z{rR>CPm0SZ{^>&QM1PF(0dgrFQ0)9~_DDn;ik!dk=T`WiU(a-TBM`4Vd1^R^U>Nnu zy3bwyg$IuNf~adpw@|^->qll|h=}vI*fa~(#GH(ze@1H_!xa~?Ih2+UgRE^>VcQQ8 zK)ixEEhm_f9(m#NBcHov_3!6R;Te(1^HE9{bL8U;BxfFY_vzB#IilM4daD}32ZwsJ z$q$ybIg0S6W-^})z|`6Lb|;eF=_2U%;OoO30-<0| zFAKHlUa4on$cOylEn1uy9vfuANZ9eIeG!(j=ECWW!Y4ZjBZXVun` zWSR(oWn&C})5@or^NEpKYI5ExLFB{(C!PHjP$$X>Dx`40p~n zBz^9#OfjEPfABVWzKX6JTK5WWfcAsvQse9f?xw!FQ%p&2&H1T#=&7^G+usEvmgC(K zuFRTO=9Y^-F!^VSNDPMD|ICio2yR6~d^p;&jL#Q{eu7>%eC$gi59KId z>;6Y)i1_!QLH9er@ws|tR3hVK>ecWdQ&j%F7#+>&v&4-BxP_(1l{@Eku*Th7GW zT}b`O59oIbIFXZz@X#msFijZzV@0NHj@1}!(z9*cV^>Kp0h)y zHI~+60Z>+&rFA5gp(#lzTf$I|OsgHT!V8IwdhHOXf{u_~&S&Y5-7lw|aXRhfBiKu9 zttBNzfF9m=n6S5|8&h?1+xU8QKdMPB)0YskCMk3(0@7qNWcz!RY`|HnAC>=t$G)bx zRR2zwq}V5+_X^LVGA!Y7$ZKS6fAQoz`m5IQtL$s(_>S8Pg*jl-g=rnB8L3$@-*5S7 zEqFQ99kK@Rsw8p6e?KV^u;x+7%K(}4Ifesy6f^a;7jA4g^i%x$?e-&3CI;fm`wxsG zE5DR52*qr&Cna2sE-79ma#OM7o>+a%KZ^=kwT52?YrM>=Ms8jLWM`c`YMK3xG<@Vy z0bgRA?i*N}wo|rsFaFy74(_M@nP8tNRJd^{+urbz@idk<4{@)~OB>c^?|`YazI3nq_{N{TO#d7plhXHf&ROqW zIW$5EE=NK~BA|lmRH{QbFO}M~vcqBSFivV3-Bgk`+Pq8k)^{$>dJBSw&vG zG^@68Q7*N}yn>WNGFBC{Qf*rGs1l9rBv1#e9X3FA5mc$8U!GQJ-Xd3{j#ZABucO`* zRfTyjvy_iksk~LrsM1zJ`H0w}BLG(W@oyJTDWkIF(&!@mxymD{c~5oWIl+{#;_zbK zlKErrdZD0_-Fe8md4_e@uPP)mNxy+Hb$yA3b56=~LX)u0&5SB{+|={r5fQi41`&Nb z_KJ`OMST-sl_K6upTW z5F+&L$6?Wiz&|)o@9y6Wi=6y)pg_;^3z;W~pkfhWZu0eG!a_k*=AO@EHb+iqczRoM z?HJM-4hUXBm3@dn^-|dX_!7+`6_p+S&I@1wyB7{QrkJC5=jMwS}7>S7OyldoaG#nMpzti zquVZCm9wtSAn~_Rox%Jss0wL*P4YA-nBA?f*Y?)WKIb!t6^04AZGY=iK_~9wTpVbl zL#HwCKKHGb%MI1}C1(dmGiO&TGnfAx?4sqP zr>6<{0{EOvQ}8Dh$o)>C9UpIOzQ-niE{pO2J-Q!n)X~KFKhU^#?q)sCeB}J{veN~C5U()y{$qmy zrstA!ALv|PQ`2+`uPhh$O#CmA$^PfX0gtmSK!>T1oemJP0SJdn=;T=4-oJl3!1)2! z0Ysr%*L9`|H01XUt}yI6l_z}X;&O0$z_Z_WpZjV*ZDaHfm+W(y_oDhRNa*S6;%U}T zfQ6l~jT%j=aHMac;^!}|dUy#R&&}N)slD3B-r)NtFiktBfqi{_jnoXq3xOysheF9( zPq*qTD`_EW(L`)U)Xp%drfM@-yRDBX&zIfyeFBjXb_cf>A88btj!z}h($=wwxU3@@ znIn)T3{f5ssD$^V+dN+A0ca=?Xx7XfYdLL3WR!Dn*x_!v_IYcac*aKYHR(=C8WVdQ&Uow?C+z!CBo&dmv};$mse$5i%EF?(OVj8Bo~LP zdn*iX7dC>!E3^LG__({kW*rsrUnBHbOqVz@zMq{k@%8BX3<8e;tZU*Z3lyk0aKVZ2 zV!ocX2 zO!P;x(Hn%bkVf5r`-Y=dGjluFbMRZs)B|nfi3aE~@S~8Be(enST9D#HsPUu;(7;~d znPd>O%xST!Gf6SfYy~G*6i~bOQh5^dpvs1hN)EF0IBOBDppQ@JN4}KjN{K(3CQxxs zvdwyVjT?`$Qc>V`S<<9^YnW@mh*=sWbKdGYjB>3jFimEsaQI#=!xIkKdoJa z8NTr2S+Ft=B>3_U)OYi8(q5HU?!PtEH2SpadJ^xUsw2NNd{acR9tOQ_nK?|woXGKQ z6v+3hSu$Q1xH-tt_9A~)8xkSMmWV*aMkIa~o57H`y9ru`l(>i~QVs@p(zgnQ^`oN~ znT!_*{)AIEVKqQCqW8hKH%eXb-NF$nAB~wx@ei!^_638XqS`2q#Vw1%5tNR67jZW& zr7~B#Zl3=k8lRdaoM|5B6QqLiw(eMjpl%Y3IxWn`ry7}Geax_`frrCcw7h^yBr68I zQvMr^8BN+8geta$>LM9}5)~u_Ra`m8Ou>;=#>cT~9}nBr}8B~)UN~-2-XJm>6x2&$t9ipmkXH>O1*G~M?2_9LI`zT~0_SVvsuSsj9 zv)xXlT^qekB3wI}?=(W9r&+z|17p!Lq7WDH_O=HoDBMedHY~+1=*7jQiYx9JAY|tT zSJ04)`*;cUr>f+jT9E)*HzyGoOD5fM?(u8&z!)lMh=6 zgD!4F#hdg8A)^B6cN6bIEiSYMC0r%dm`eUlL;UEnD9M3}F_fptMJ*FXrbEq!>h2lo&Ol`=|)RzpZFiQu^mg zi!21z?Sq%yQogR=Fe!VQ!(Ne26Bm#Fps6-)GITW$6(v!a^0=j4+Q4OKrfW;Y;xOLH zF4^byRqwhg#N3Yqrnh`VuRO){-Mr-Y8Omj!Fpwcr)AfE$VoqqQmbbKY)Fdw-Xlun= zD6oJmqkWG!Zi~WkttdE3V%vW8@Yr<|Ttq0(($W0n(tS|JCd)nYt?JlLYh`3c%6#aW zKfc1g;XK(`I0j&Q&?jwVa$XO3Dz1AnjYuhtmyI5_F~#QL8LFX5ll7SH*gUEYhqIF~0>jJ|~7RAm9!$uglYFL^wAJSP1Yft?Mc83W>_p ze1-6%NoLD(HiQ3kW}DiP)>g8?VDmzwj1?rFb`G)=!To!gO!<}<)C2EVqhqLK_mD@~ zvTktLA|zw>SxBRvL#f*`SeSEUu#qC~2`Hc$?Ot(m{ajgi*m+)$JLsn6(1ve^wO7e+ zC9og=P3H_20B+Rxqh1r@Ivb43W(BDO>ZLe88KR1Z9eQHCbGD{Fgxt(>3PZPGS5-8e zxh&{Q0vEkHl6#-@3k48z6g$E%S80Qw(30U%xKP*V-lHjv2mYAls z!OeJJco&P`tg7(uMr)bmQ`e{zy(Ue~RuD9<-ia^weUYLQK&_p6APa@Ik zt#IzHJegB)vAy7kitu?-r&P>Hx@xIS~gfY;W9zzu#Kfz%FTqRu_H)GrvxTe!SnZ zUD>63Kq>bIq_MuABUpXr)VMASie~z6ATapMi*O*nM{IxlsvE3y_;!>xrw+uc=rX^} zN1i8oQ1n#`kQ!W$t=czJG%+!@!Z?jBZSKvh=#rS8esG zyE=W(UU*H zI^lJ!$w@|GmW}ps_znG|%*xEJpDcw!{KsWD|D$I=l_kTCpgfdY=mbmSM%-j@cgg68 z4;;~@N_-i`HR1h0uS|Y-T-0!^YfpJ8ZbPDbg#62vp=?`(H(WFWJ8kQH#;U|~BmpqN zvY?3cXWkECZ@K1q^ukz$2owND*O}Lx0#iiKJe&UuS&X$;-q7dw;`a|UpIyt5IX`MR zR=F4|~aF|#mUYN+xE@5 z_nhYUahXL{kLYQ-kk`u{nsI(8lV7Q?oxs zV^F#3htK6aOu=~ZceT^7cNSjtCObwl7ZDUcxaVIUB%{O%kT(n`E>x8QElHvFYviOQ zDpEy-x>-p+&JXr!vm6h{k}3q&@?c2#TKT^YXLM)!k9Ixke{p<(rI4F10B@b^N!~=zO!H~&%VZNE8?P2j=ae!TqHxIc$Q0d;FWAGcnBS}D|bh=fS!PQ zQl(+Nsbzj-mgI@zwJvj==qnwI#EU7MGtiL*obEHYQ+&*?9oWG?>}D*x#xJ2*nPrj6 zVv{=yo-;XFyS`FadaK|$_w-)3{((FmA#xjmTui(DbdoFlLtzhJp^v3sA zDZBnl`9WflMkJ_2OtJ%*&LRs*D5`yHDO6hlrR)Yme{;?uN!jL=B&mBqvD<7-MY%gA z=#r$p<@qx>-oon>3$E8y$j|$kl$0YDB^8?^N;%H0^c*Noy7J)2Uv|_oUSXdJn8P|2 zzgupRQBaS1|C6*V29W?Y>RqhgN+fiqf4DVCCF4ZLc-7)%TcV`&nhGfU zL|w$(f>9D5X12cZWFlBPjw@eGSFOiw!cBN=&95q1J6f#M4yo66s5bQAH4vlwK;eKc z{vBLJRq@g>Ao)efoGIJl^5QJ*CWoYRIFvf6<(tl$nc8);_7J4X(AJC5sQ{$hVN!O0 zFX-lAk4*N#+G6+CSD$=7MK~}1fs^+@S#_){7wr~xH$W#puOs@~H*hJO&7Px6IAdUa zA+p@6IkmX+#v+G^ylh7mkgp(Rub^N*`){v^D-kALf%z>oUi_JA{A6DO&0Ar#r~s-? zM4dl|N_AFIf|sZGm_HiEKH%Sve} z49hss?1$y9UV)}9F)ClQRlGyBG(q152XhtLGkSc7(@b8J<_wNtXOm@rff*rv9emUIRWA;g&uF=`Ie?%X_Ed5k2E87)(#qg4nY1tC(v};UCe}xk%-$Y|c*W4wjs4m#rCG zGPCJSN}l0kIf=mI{*4m6eN^U{Hi6tqw*oC@ERl5nnrEkuE6yrtebpcTzq5L(vsP&g z0T7Ug1Q5`l{~6ON=k8=?Yx94f(>>k)DvQ>+K5`t>YSBWGQwG2>4DBqM8Ne{K2%``q z4w75UNTJ-834!*tUfcH<}v&q=`pF@ZQUze6mG+DUk6GOm-XGS;Bt?`;2c~ zr+&nQ_{jR|-HBFxg|+fAJ#!?`rG5+w`x;Y!k0*7vo?O$ug@k11`qn+IOI_Jbr$}7| zKxRupl42p_67}g#A(CeH4Jxxa>QA_*{&QR$Cqk53v(wbHi7-MM{F5%uMS8hO6b!~m ze>ws{PEcz;xj?hGL7Z-+rJY?Q=^`45OG-*-P>2;nMq%h6=q_RB>UL9b(FxP-j`*Ho zHy&$93?mjTiq45;B~d2xK>Tu$bu$(?dTFSo%af5&VjW2!z1NXOM&aE}dI#OW z_!*Fum4?Y$jg#%KG5e9YthckkQO$%B|C-W{d0^45VQ^FitIf*IY$-9QaB+9sr;5vV z$Hm90HyH~0(a|&>`G~RjZSJmIU=gU*pR7IGI4&OSEwI$RN8(> zR2BhwSrY7Nw9xuMZNadK6do6i^T$i%E$LG&=KK)MI1X?4Bx2D*OBk|9q25M=4~041 z@4I|)xKvh?UuBm?Wfl5)`e`>xV?s}YQf4eD`+Y(CpQ}utL8+rk37Rv@R{AN_TI_l3 z?JMx;v|6cGy0IAvS*9#{dJ>}*>fH2RyL}9+L5`nH!>B0wdqL14DJW=f_YuY{T4m(a zCRsPDeLZF#87UT zh8y%PC`c5sVwlsc#`(@K1GlH@7d+a1*{OVdT&7nwnR^?*PFRpU9fUCYp-lt?*PVbc zG#PD!yXl!cMY3~<3xHT<#%L!F+ZIo#AJCHyPy;DaS;|M?ixl_zd1W)wmypYFIlxF> z5$rn#dt(^5JMo{wwG!Fn?qXqX#HThGR_`k@1K5YrJEBy8G84Ew;SMy`nV{?McPC47 zc?MIRM1EKQbCk33vAIRy_b`|i$57`cLy!M`YKxL|glXopG$YLr49S9k0Pn zhTn%%6!21hV45$=|o~YM^^zx@N@Ov$TzZ1w5sd3T?=zTV4o}xM>}XZ zFP&#sM3Fi_I~5z9tU;eg$l?38O%!ch;Nm1*nkje`nKOU1FK@MRoaCQe2*Lzaxq}p( z-ZqSo^Mq;8gL5K7(Ii7|Xo1#gqvfCT=F^8G)EDUeQ(! z$FKLM=+g{=++=hJM+s#VZ6Z_p14wO3QPNh=8r4)K14sA&t zgF&ZW3NuQfuw$e3L`zJ0xd8fMKE@PB0>(d_?={b$pKJ2SGeI+;$RG=Z&~VLa+AYGV zH=%aBsEBYO2>DTF<-+0Qgb!x3Dh7?`2Azb>s|9tb!7YQaCvlxegZ*LIR_!RL)yWQ61eY-@g(4}UM3F*v3ymAr zsPGClb!MX|gYGNSfxab6e=j62f}SNWgPy4_f!b77{r0M9BE5-vWbwDPsrdade3ahP z+_VJx<>)EBv(9DtYkO52`Q<7*z32I95wy!Um-J>gFTF=p)Z!N(y9)Bl?rnO{Fq!2q zKF*(J2U5~I!^alCa#R*TeH>~@Z{{Ug{Bx8SL4AB0NpB*~(tCV2OMWxs41B(+}?OjA%p?*8^VMwv;G_elF46YS*}$EZW@N%lI1nTwJ4ockTU?6$v5 z6@l0@l7UR;6?UwC(&ZGn`q!Jgr=8vxq4umbAgN`j*gLb-uvP*u6*c}S;M~%eKrH9M z^{m$*Go>^9>dl$xS*=%HZ4Wb=ep$}5{^;Q18YfTitv3S#JT=Okx8! zxg+f}kAZ02SOliT?-Jz6f*28QAeN*&kO(fV^maTrsA&X`}|}O8#-h9sNZk z8ANwnV#iV)%!{VnzuFk~rm+I7E7`ecxz4Auu)!GQ?|)EeBufLW)?pH8HUSxptN2;1 zg2&RV1J@Z3^IAHZt^NkkwEHy}v&A-bKmcewe~NUmO&5lR@BR&kK*T&FV({wNisSks zp8sa?j2nhAtT_sJdd*}R*Aye4ms&LeNZ4Lg2E=79O#)|2$StjIhwajvc~U} zr)c4abEgb??}_;FD3J@MA*l!mI`Fz81-V2O>ZQh>=eL#YS6V$wz zGH7-sgKj7{6b{2M6?MiQiA;A+U^sX(Y+olDnquG64@Mbhla~;xx;J4?05HzgoyI^| zyS@#*l`k5Qi#_J@lhR{O`@B-zM?{tRd2)k^N3 zYMzb6&wE6JaG&=rJxL6eMVUrqMi(p;<|b)O_0SFb2`wi<*eG`>_~0!~jift_a}9KD zU{(S9uN2HO#Ytsap&ccvARnELpyH`-Pu7@%Szw<<`Qh~x^Iak4| zeyGt>eZP$yJLm1 z$bD*?+zN66K8f2g(_&Oi-~w#I|KX?%0~E2+1$+CR-?BN-qH$gLGTO8^_j~X*($Ext z24$fj^+CpbI;#CGAUbp4!Ulf+*`vV*daZi{rOj}RdFrwu_KLn-bm0oI(KD|{zC9&x z=_)C^#x22uuw#`9;;O!Asdse(S|~XZYfbHFrIBuX-H%{I;5l!>;@L3=kpJ}e8{(;C zEwF55H(F37S9qjZ2m3DG(aAqNLLGBPk9bxcSNAVK%irFQ5s zvRpY}uiY$R%=LG%QeitI}SN!Uym)@DP zrzm4Lo$%bQ)U&Lf2SMHtr@wvkck{H~{Y_$Vjf(3GP8b;#H~I3$o^)AI(@2~%#H(2q z*MbLYV0}AVLw37?)jLE6IQP!gnnhB(yFc9efx;%D@`9fKS#+77n18CzU zE<96R%X&Gs_DPiM9=qCLw@rY0ELX-|!8}_oX#!78F?O^p*R{M4SL&8=|6R^i4W*l` zTOB{_ZEeq$l>G+Fy4?5{#ae9nNs6iC|hqg8v}TynL7!K#j0EcU3NT-4uV zkmQ|7sHu$Emuywv>b7JHU;ny_Np}gC(O>IRJh?01E$QyDaNX1@w9svedtgu9Xo@o5 zDeKU5Szl+JGg0iV5HXmc1Z~Yw|06Yh_FAofpI8}g zAy7VsSa0p3ty|SOlPT%FZhoX&oURUvTIt}Q$CMrI2y+){4GfmC7`Y~{Yi*w;q4R#( z^EXn$W6b@|Al8qj+*;WuQ^q@nt&` z$jlygOcQ&s?wpb)*Y}uMqfdwC224A|gGvu*I9a+47>u|u&D89+tKGL5>|dvr$Fc5}R9iIeVeKT3)jZ>S2rP^DY{XNk^K#U7~wfA(3qu5qa@32H_B8O;_z z!z`lICrPQBv&5&d^Nl6>jYXjs>%Y4!i#=Kfo-O}$F)h_4L#;^o?=D$N-Ml3}otYKSx$rM~rdvaj3baOlls?ZtrU?Whsa!JwLB!r) z*J|)$^ze;zW4!x1iYq{P%E%`}ow#WY#(Tk9>=B`&$RRg#tQwbvmks@rwsU55sB_G8 zG=OS%b70l`(!X*Qd&nyH$ZB}4DWje`l=`pDW(|_uSBKY_9ZC~4!W(n_KNL!SGd6TI z0WPx%rXQTsien14^Je^U@IFdVlYPg9Y-Uxt1HR8(^8D7e6&{+DD`1Cz&Za zro^UmN_3NY@xw+?39pfdkhqU?PU&Yzot+=QgHyVDZ^BKbs&Z1M>Y}Bpc%j{AbHsIT zGgbfCuis07)4ThN*PRfb5Pj3iqkm+P_~v8M;0p?K>5o*i#0z`A1`Put(tsBT8I(v0 znduZn9f^$VG04Fn1`=?sK%&d%R~`Y?pa+34>>+gG!p(}hLc(h#2*CjTfhHSrLeL&i z6(XC(ET2_;K-$z3P>mx%5*EEpJ@JpTCsG-R7zW-V%kF{Vp?NdBa5T8Vx1rv(+mwZP z@f>ITS}BYyXqJ*o343*f-kOpfnWTF{KQcWgK{+%!K7NNr{x}ltyq!B7{r&Sd#GMKG z4muq9$Qb>2!oTBV;>o_e{ZVrh^!3rTZ+%tx_aGS9Z}-)p`cIt1)Y9|rFM3Tm*PtHA z?~04~j=dDoe4DUF=wMqBu~>G^ZgH18(eeK9YxwTDe1mUpe*IM(3l6Y*Nw8M|zS*hN z+hD$8H@)w1#0RDPD6#a(kl6yodQ#I!e8Q6EO|i$nF`05-6oI*R z>f+7Zo5N^^E-x>D7x-}^_DyJkENFqO;LAdc2l}nn)9+fU zdR8^?Qc!+ahIqYL^K+H(^VcJ$il>ZNJIG_2N;@B5Gw7`X;wTGOAt%t|%DaW@eu?7o zK>h6~=mc7@_lwru%Iog6=#e_Hg=MSruztlOS#7$x;&^?@(f^UUF`J$Lz%lOeqs_~u z$kpuD+YN-!d8qvlpbN$4>E#pN+o|DaON5CpX3xImnjs#S6IsVzXC~@Sc^mo3 zkdbj;2D=jPuA-Wq`uUK#n-@L=Vtc5H%hrA^CV!EhxbAa^;UlFOz0k&GADkfVvkP^4 zX^%PCheiG|jdgsCW*CD(+#e%%+={Zl>U=-GYsVkPD1Mzb{}YdQL#OY(A_K8Rf@6so zv>4j2!R_xX7I3ZW_pB;5zF`(qz|wOdWQ$S>c5Fc107oSf&xFV{tYY?(B6U7nB=~*b z0G#Qso}Cx9gVXRkJ`Uh3-U1WKg+ev(!=!$(`9b$_s^`mz|8&fdO9?TwKjXHC__cxa zaLncxU@hh`lOx;U!NBOiA3yJ4G}GuGdDqSd`)I`0N_lNK#5CiE#+n@%GNq_mmRo%K zi$@Zjq)0xsk_y2#PG_Klf13o%I|b!I`#bkK`}bRwYUp(=Zqar2KY2}58SLkvQ)YCo z$;8{tzb_o@o1@uGPGI1d6x>^V zHz(S@rlI|McjzF!OZl;WbCtj5a$n{7&eCIy-Fee@N^7NcuxxWrvF7f)_06fvixY%b zTS9z;_RZA?6w) z)O@sJ!xOOc0&nt4XA#_*c>6(4ByH|y@>iFeLr%YI+*&pqrK3Z^llh3As2#lyQbn(i zIe|Pnwq2J_5{f&#zUh?7r7AqZ2g{&k_wOpcM0I3_W{CH)SjDTxBB`KnHOfBMsQfw) z?V^+Mg{v(TysHIXvg#+{(6P|mG02h)GC?R+1Ia_z8upIK4us9FwYVzyrH}#9*)+j} z`@s}*#^^|b##M;KlO|kXt8++6R)>hIW)9LvQB|c&DhgbI!+Q zSPvanF*8AWbJGt^V#9o{Jv|!S1C{}EgP{ZvcUQ<`wknYYSrNpXN7-@mIpYf<$BTch zC-kDSrqS7EBRicCC`Dn-3=rS?Cv3HC4DV(rc!(2siV&wgNomRpvnh)jr31)GGAf10 zss@!3)YS~|M_ZxT5ETCI!#FL{78ix%E=$Yh3R5WNlPml#^i20i&Uh%zF>7NK`$dMl zpH3S#XT5VNdySYideW5sXX}#h3H2fQYEuFMXII9IvIKISB!5MQ&LB6Q_*hto{b7^q<0{9sZXvP_{{R84ZN8+Z;&r8e;Su{^Vz+X#AJpv z?N~<{h_1TKWg+IBelADedKvL2Cl)Y)#8h)+a}>sn4f@tN&}A-Qc4vQuc)Z)hPt7q-LkWD({9+gShY z+^V%Pe~E_`>i^)nSm>Jq@M6x{iZZzkdrv=yvp-w&ct7L)!_shb_3jv1arc zN(l1jDDlA)2d!fMhR2@Uc54dC4Z6GN~Q$5VdOnqCgw z&`t&aDf56TzpVYqQz?M=j&hE4X|!1AoBuE|IQm7q<b$QN)$m5dBkhee=>Cdh zAYIUa{&wJ>CNZNX>R_8;|IBi+Yz0--_XDr^F2n8$N!H=QG&*v$xgk#-+bH%v%N7IN z$Y<;H4z0LIB-`Al3_x>?bNu=!wSM@TP?dWN#O^Zs+EL+65}Rb&rH@}wgHnRA3_p)x zS=cji(Cj?=7$WwSAzPRKG^k0&O^5##cFfBCAa*7E$!_EmxDf1-iJVUqGv*FG5!lRD z=oQy3vx5kV1djyqkRuT$F^znXJVLG}bPr{WB#|@mI`0GYFooQANUH_Gf*r15ST0*s zTpzoJdfF_dWV`i_4kEz!3F#5yy+O8HXgV(&6rCrAu_x6hOy{pG1T$&I4-@HC8s~;XAP9D~ zbqMYti*1%&j;NhUGXHf>C}9w_|6te;-)IalqKT!~@BYm%kmHVBj@R&1C<-sJqq-hrXg?V`PE$#TI ztI+kONjc{$TKM)oWAF*DRP-IEa_*ZS^_FAa{>9N*?CYQKMd$SQ8yk1|TU_;FU8#IK z&-TpqRM3hb2P?ow-)zC`mx*YwI@0V`w4n24e2x*#s!nn}crD=KbH$1u@l$xXeSey*{6 zNbRzXLFPS}LFYX=uJp4f74SLYru-hnAZ*F3Gw);BQT4f%TJ^b@n)kVxTDr;d(Keo1 z=o!V~p}7ysvotclALaG=+psI!4CTx_l89%Nd`lxtFWaP}pcotYlf^JB z+nRdb5$2wpGfL1DYpG1;D#tN!V~e0U)kA^D8}^z(^@O7>sLAdPq4^QM$K74C(PejE zBa6iV$VPoT*0n^b6T(K`%l9&`c+PjEy&Adrqxs-HRy9ZDJ8U&8G@RnW+KzT$NJwk8 z_-;LgH@XX&7RH`2y$fQB`1x6o`GA&0t|g*tS~IQ3TkY#R@0D*>TPxj|ZmSOODhj4s zdOEZ{HQe~0!V&A%ZKA+;ueNWc7=rzyt=b1`wvTAH>7^l>Z)h>! zT#njDT7<9uCGyhO*q$x**A+l^HO1F%moMui6P-!i`1fwjebX~av&7>VSWDP1O4 zb3`l zMH$j3&E~%nd`qX2Dvb(JfQE+<1UjWi+)q>nc?T{=ac?QMZyC zyHKIiHT7Ex3ILUbgU9eE1_8llzv)TY&rir7tLdFYJv|i*wu_U37j=MIbD7y1EAK7G z2mM!-4?~klOvH!bK$Ir4<|pg4^J*qEDNX9sQu07@h z4o#i!!58{^7o*Bm3Uph#ng-7yN-37Se$lseM4=BbRL*W=q!Nln;WR=LgOp>>I@-Oa zFS+>kwA*(sUt`Z7te;q#<0@`8b#!JfmbS5VT=LaD?=b~iJ?N$rr;mM{um4Idnr@eA zE*7?)CDdzC%_ob)3o4ZF7zB;iIM%)f6q@|0va+(6pCGw@yKBzD-7 zWMh3FGxdSd*B+8!!v z`nx!`8XApSxx}qUI5i9s<>yp&-`M1#`ugzun}T#>tE;Qh`O!fRO7)Xd0a3%slQ`L5 zJ6i2E4AAq*$2=e+xYK1X+aJO#jk!V1Xi?B3BX>wg4`fb zTFHckUSVEow_uo4969)yV+MdG&a*c@%{*>*X0uys#oA^~NORMGp63WnRW3#DeA;?1 zNBx-fk>H(mu3T)J-vjp48Ne3X74bki_Z-_5^ME!7AL|qPKn!S(+v0y?m}?iiChUxP zKnCOxdHX#u0dj~xf1Rd?;io_47wQsvH^dAkP(NiXT0IpMtKsO~HmHBj_SVc{s=(E{ zk^Z_Z=%>y$w*RB`h!asjoo#9#IS5VNriNo`A0W&Ykw7g|%Rad$jAp8qX?%+mk)qzw zx0iv?D^1N>{}L=tQoLhL-Bi<(HHb^yRM(O)s7-xkVhmFt)wS#ap0-Zlh;3x^pViI$N30_o|D!TEbsfPG+rUO} z!aS4%mZ6yNh55;!dW@Yv#wDpTp@XBtPsgU9V+~uu~!N8F%w4`9SchMB^ro9FlPr2BV-vo zl1Li|MuQDs891P4rkYEtszp(SBsd_)AO(X?>_@KJWtxFY{* zkU56FKL}dSEPph8glvHJ&k*aMq81HQG1uiWD@n`Ch28GSs0&FgDJe&+^ih?fP+Tfy zk$uRi0r;F0gCxrS1Jd9vg5ux=sL?#5y$DHYsb9~-n-ga6lDb#ulmX84fLMY{O6sLu zSiFz^yke`QmJ#~G)F=#_?ost5iNySS!$gusJNV4~-djU*-r_0J@>5KBD8v2yTSKC# z!+g7MP|3fFGxWyILnLVW&T}M#sH$K(mN0qEeXV@7O6d0~f6W9f19>Nd7>5#t{+3U>VK?nI5fj)KF)e9cA6Do8mzpq<7Y*J@{Ycutsj|G@(N>LN~ZmA4K z=|W5pLrmm_utS)ecYrNOs^=u0B3WAJM$;K1iu9gUj{a&IV=0#BV+DBE^Mn(#*&Vet z$eYwnj&H`5w}u6o;oyt2{IZH#Ct2bwpas>)02i|Et*aUjU5k%I2#;Bd50fUzZ|Vs= zJINrxqZzFodMStzcMdaArEYjE=|H@<2;*i>C6iRu~*akT`XQ(s`ZWhWRYyo4TxU|>Vn{e#Vi+3gFAA-D1Z>gB zv*uj1&SUsz>R%Pz2Z(0RE44n{0Rk}z%R1SIZV0bIjm*ijPrqiv-^S}>sGkf4g zyVpK(BYC$o%*SZdCiZgkvZ_dS0eQNl#&roYbqI>S!I`QZi!HmWor!Jd5qlS-o^rj5 zyv6E}%?_PFM}<_Kb-`F-`6a-JX^HCQ@6jrt>KRGWG|pSWuQG-Lccc# zeNNR(p*i6tul4y@?^2BSDbC7nWrL7D0Y`cNHN>|Ib{<-CSF^YP!Fo4`em})nfsnok z#Cp#i;yr;mkF5L|c?E*Sr8sC46XZQM%v;P5e{LltQ$MTL87~>@J$A@vsLzKK{7E1A zy=I8Fq89#V+J@)c)GSZ>QJ)n-pH?sz#H3G%QQks^`1b#0ix}&j1NyxcV?|W@q5$i? zWQh0dzif%JJl&%`-80n0q^%4yKQTmkPhc)#Y98yC*2b7$pi^I<8|b;Ft!QJlOB%Xz z{HHCKlp$Ulef$`I@4f-vyjoea3*;ZCS2*D%qr3$ST{TxW8ERzHSIAhN#G}0D{%bs0 ziwi}xr_!z!Vs=SWhRpZurnl_queJI6{Kfr244x@9o~eNo`=v8`)*;QzS*?X;XZk6l zH5pAX>!Y(4tKHE0-+2l22?x`0e|L$h*n#8v12hxW<0zDHr2f=a{hM9K*qhP*d4UFH z-~lRaJVNnY<~h@^N%?4;=cOBZrGaUy@)`pe3%us(yTWcpw5eTMPDQS^1@5zmmM6P0 z9OgZ$%#YFuZN5klL3xgfqW+@yuNrWzoA2vXGV97YTvx;VMI+v5h*$ZI_1gVuM?ik6 zp!#|0uP@Se3W|MQbiC23-;zFP7Io z9|YJSJLSTZzo?Y|7}hBMk!Y^O-wKboVZzK~0_#=!gERmH$Rm>e6Xv9k4l)Qc!VZXJ zZx2mzVc>rV!A|%G(g~ptRWJY<7r;V+AUJ?}l11jQYgzQwn5BIXO3k2VB-k!-5D_;r ztbgGq|1e6G!J*_jkN1W8W%5O{XA-?J830c6P;I@nGj06<;YH(Pt7u~xxP1NGc<>f! z%fpfWlD`pr)KrAp`gQd8iqke%pXKemnoe-y=!Ps)>rz;t@wz(pFPZPotweYx`rfKno?29L_GhGTc|ZGENIO=(;9Imvg{g2aXNw z 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


    Sqrz$4@uW45K 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 MhjhFdfM~S;0dQ(MLjV8( literal 0 HcmV?d00001 diff --git a/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/maven-archiver/pom.properties b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/maven-archiver/pom.properties new file mode 100644 index 000000000..a046ad8f3 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/jsyntaxpane/target/maven-archiver/pom.properties @@ -0,0 +1,5 @@ +#Generated by Maven +#Wed Jul 21 18:15:08 CEST 2010 +version=0.9.5 +groupId=jsyntaxpane +artifactId=jsyntaxpane diff --git a/trunk/libsrc/jsyntaxpane/nbactions.xml b/trunk/libsrc/jsyntaxpane/nbactions.xml new file mode 100644 index 000000000..a842b1e66 --- /dev/null +++ b/trunk/libsrc/jsyntaxpane/nbactions.xml @@ -0,0 +1,32 @@ + + + + run + + jar + + + process-classes + org.codehaus.mojo:exec-maven-plugin:1.1:exec + + + -classpath %classpath jsyntaxpane.SyntaxTester + java + + + + debug + + jar + + + process-classes + org.codehaus.mojo:exec-maven-plugin:1.1:exec + + + -Xdebug -Djava.compiler=none -Xnoagent -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address} -classpath %classpath jsyntaxpane.SyntaxTester + true + java + + + diff --git a/trunk/src/com/jpexs/asdec/Main.java b/trunk/src/com/jpexs/asdec/Main.java new file mode 100644 index 000000000..7286a278e --- /dev/null +++ b/trunk/src/com/jpexs/asdec/Main.java @@ -0,0 +1,372 @@ +package com.jpexs.asdec; + +import com.jpexs.asdec.abc.NotSameException; +import com.jpexs.asdec.gui.LoadingDialog; +import com.jpexs.asdec.gui.ModeFrame; +import com.jpexs.asdec.gui.View; +import com.jpexs.asdec.gui.proxy.ProxyFrame; +import com.jpexs.asdec.tags.DoABCTag; +import com.jpexs.asdec.tags.Tag; +import com.jpexs.proxy.Replacement; + +import javax.swing.*; +import javax.swing.filechooser.FileFilter; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +/** + * Main executable class + * + * @author JPEXS + */ +public class Main { + + public static com.jpexs.asdec.abc.gui.MainFrame abcMainFrame; + public static com.jpexs.asdec.action.gui.MainFrame actionMainFrame; + public static ProxyFrame proxyFrame; + public static String file; + public static String maskURL; + public static SWF swf; + public static String version = "alpha7"; + public static String applicationName = "JP ActionScript Decompiler v." + version; + public static LoadingDialog loadingDialog = new LoadingDialog(); + public static ModeFrame modeFrame; + private static boolean working = false; + private static TrayIcon trayIcon; + private static MenuItem stopMenuItem; + public static boolean DEBUG_COPY = false; + public static boolean DEBUG_MODE = false; + public static boolean DISABLE_DANGEROUS = false; + + public static String getFileTitle() { + if (maskURL != null) return maskURL; + return file; + } + + /** + * List of replacements + */ + public static java.util.List replacements = new ArrayList(); + + + private static String getASDecHome() { + String dir = ".";//System.getProperty("user.home"); + if (!dir.endsWith(File.separator)) dir += File.separator; + dir += "config" + File.separator; + return dir; + } + + private static String getReplacementsFile() { + return getASDecHome() + "replacements.ini"; + } + + /** + * Saves replacements to file for future use + */ + public static void saveReplacements() { + try { + File f = new File(getASDecHome()); + if (!f.exists()) f.mkdir(); + PrintWriter pw = new PrintWriter(new FileWriter(getReplacementsFile())); + for (Replacement r : replacements) { + pw.println(r.urlPattern); + pw.println(r.targetFile); + } + pw.close(); + } catch (IOException e) { + + } + } + + /** + * Load replacements from file + */ + public static void loadReplacements() { + replacements = new ArrayList(); + try { + BufferedReader br = new BufferedReader(new FileReader(getReplacementsFile())); + String s = ""; + while ((s = br.readLine()) != null) { + Replacement r = new Replacement(s, br.readLine()); + replacements.add(r); + } + br.close(); + } catch (IOException e) { + + } + } + + public static boolean isWorking() { + return working; + } + + public static void showProxy() { + if (proxyFrame == null) proxyFrame = new ProxyFrame(); + proxyFrame.setVisible(true); + proxyFrame.setState(Frame.NORMAL); + } + + public static void startWork(String name) { + working = true; + abcMainFrame.setStatus(name); + } + + public static void stopWork() { + working = false; + abcMainFrame.setStatus(""); + } + + public static SWF parseSWF(String file) throws Exception { + FileInputStream fis = new FileInputStream(file); + SWF locswf = new SWF(fis); + return locswf; + } + + + public static void saveFile(String outfile) throws IOException { + file = outfile; + swf.saveTo(new FileOutputStream(outfile)); + } + + + private static class OpenFileWorker extends SwingWorker { + @Override + protected Object doInBackground() throws Exception { + try { + swf = parseSWF(Main.file); + FileInputStream fis = new FileInputStream(file); + DEBUG_COPY = true; + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + try { + swf.saveTo(baos); + } catch (NotSameException nse) { + if (DEBUG_MODE) { + nse.printStackTrace(); + System.exit(0); + } + JOptionPane.showMessageDialog(null, "WARNING: The SWF decompiler may have problems saving this file. Recommended usage is READ ONLY."); + } + DEBUG_COPY = false; + //DEBUG_COPY=true; + } catch (Exception ex) { + ex.printStackTrace(); + JOptionPane.showMessageDialog(null, "Cannot load SWF file."); + loadingDialog.setVisible(false); + return false; + } + List listAbc = new ArrayList(); + for (Tag t : swf.tags) { + if (t instanceof DoABCTag) listAbc.add(t); + } + + + if (false) { + JOptionPane.showMessageDialog(null, "This SWF file does not contain any ActionScript parts"); + loadingDialog.setVisible(false); + if (!openFileDialog()) { + System.exit(0); + } + } else { + if (listAbc.size() > 0) { + List listAbc2 = new ArrayList(); + for (Tag tag : listAbc) { + listAbc2.add((DoABCTag) tag); + } + abcMainFrame = new com.jpexs.asdec.abc.gui.MainFrame(listAbc2); + abcMainFrame.display(); + } else { + actionMainFrame = new com.jpexs.asdec.action.gui.MainFrame(swf.tags); + actionMainFrame.display(); + } + } + loadingDialog.setVisible(false); + return true; + } + } + + public static boolean openFile(String swfFile) { + if (abcMainFrame != null) + abcMainFrame.setVisible(false); + if (actionMainFrame != null) + actionMainFrame.setVisible(false); + Main.file = swfFile; + Main.loadingDialog.setVisible(true); + (new OpenFileWorker()).execute(); + return true; + } + + + public static boolean saveFileDialog(Frame f) { + JFileChooser fc = new JFileChooser(); + int returnVal = fc.showSaveDialog(f); + if (returnVal == JFileChooser.APPROVE_OPTION) { + File file = fc.getSelectedFile(); + try { + Main.saveFile(file.getAbsolutePath()); + maskURL = null; + return true; + } catch (IOException ex) { + JOptionPane.showMessageDialog(null, "Cannot write to the file"); + } + } + return false; + } + + public static boolean openFileDialog() { + maskURL = null; + JFileChooser fc = new JFileChooser(); + fc.setFileFilter(new FileFilter() { + + @Override + public boolean accept(File f) { + return (f.getName().endsWith(".swf")) || (f.isDirectory()); + } + + @Override + public String getDescription() { + return "SWF files (*.swf)"; + } + + }); + int returnVal = fc.showOpenDialog(null); + if (returnVal == JFileChooser.APPROVE_OPTION) { + File selfile = fc.getSelectedFile(); + Main.openFile(selfile.getAbsolutePath()); + return true; + } else { + return false; + } + } + + + public static void showModeFrame() { + if (modeFrame == null) modeFrame = new ModeFrame(); + modeFrame.setVisible(true); + } + + /** + * @param args the command line arguments + */ + public static void main(String[] args) throws IOException { + View.setWinLookAndFeel(); + loadReplacements(); + if (args.length < 1) { + showModeFrame(); + } else { + if (args[0].equals("-proxy")) { + int port = 55555; + for (int i = 0; i < args.length; i++) { + if (args[i].startsWith("-P")) { + try { + port = Integer.parseInt(args[i].substring(2)); + } catch (NumberFormatException nex) { + System.err.println("Bad port number"); + } + } + } + if (proxyFrame == null) proxyFrame = new ProxyFrame(); + proxyFrame.setPort(port); + addTrayIcon(); + switchProxy(); + } else { + openFile(args[0]); + } + } + } + + + public static String tempFile(String url) { + File f = new File(getASDecHome() + "saved" + File.separator); + if (!f.exists()) f.mkdirs(); + return getASDecHome() + "saved" + File.separator + "asdec_" + Integer.toHexString(url.hashCode()) + ".tmp"; + + } + + public static void removeTrayIcon() { + if (SystemTray.isSupported()) { + SystemTray tray = SystemTray.getSystemTray(); + if (trayIcon != null) { + tray.remove(trayIcon); + trayIcon = null; + } + } + } + + public static void switchProxy() { + proxyFrame.switchState(); + if (stopMenuItem != null) { + if (proxyFrame.isRunning()) { + stopMenuItem.setLabel("Stop proxy"); + } else { + stopMenuItem.setLabel("Start proxy"); + } + } + } + + public static void addTrayIcon() { + if (trayIcon != null) return; + if (SystemTray.isSupported()) { + SystemTray tray = SystemTray.getSystemTray(); + trayIcon = new TrayIcon(View.loadImage("com/jpexs/asdec/gui/graphics/proxy16.png"), "JP ASDec Proxy"); + trayIcon.setImageAutoSize(true); + PopupMenu trayPopup = new PopupMenu(); + + + ActionListener trayListener = new ActionListener() { + /** + * Invoked when an action occurs. + */ + public void actionPerformed(ActionEvent e) { + if (e.getActionCommand().equals("EXIT")) Main.exit(); + if (e.getActionCommand().equals("SHOW")) Main.showProxy(); + if (e.getActionCommand().equals("SWITCH")) Main.switchProxy(); + } + }; + + + MenuItem showMenuItem = new MenuItem("Show proxy"); + showMenuItem.setActionCommand("SHOW"); + showMenuItem.addActionListener(trayListener); + trayPopup.add(showMenuItem); + stopMenuItem = new MenuItem("Start proxy"); + stopMenuItem.setActionCommand("SWITCH"); + stopMenuItem.addActionListener(trayListener); + trayPopup.add(stopMenuItem); + trayPopup.addSeparator(); + MenuItem exitMenuItem = new MenuItem("Exit"); + exitMenuItem.setActionCommand("EXIT"); + exitMenuItem.addActionListener(trayListener); + trayPopup.add(exitMenuItem); + + trayIcon.setPopupMenu(trayPopup); + trayIcon.addMouseListener(new MouseAdapter() { + /** + * {@inheritDoc} + */ + @Override + public void mouseClicked(MouseEvent e) { + if (e.getButton() == MouseEvent.BUTTON1) { + Main.showProxy(); + } + } + }); + try { + tray.add(trayIcon); + } catch (AWTException ex) { + + } + } + } + + public static void exit() { + saveReplacements(); + System.exit(0); + } +} diff --git a/trunk/src/com/jpexs/asdec/SWF.java b/trunk/src/com/jpexs/asdec/SWF.java new file mode 100644 index 000000000..d3319b0bc --- /dev/null +++ b/trunk/src/com/jpexs/asdec/SWF.java @@ -0,0 +1,190 @@ +package com.jpexs.asdec; + +import com.jpexs.asdec.tags.Tag; +import com.jpexs.asdec.types.RECT; + +import java.io.*; +import java.util.ArrayList; +import java.util.List; +import java.util.zip.DeflaterOutputStream; +import java.util.zip.InflaterInputStream; + +/** + * Class representing SWF file + * + * @author JPEXS + */ +public class SWF { + + /** + * Tags inside of file + */ + public List tags = new ArrayList(); + /** + * Rectangle for the display + */ + public RECT displayRect; + /** + * Movie frame rate + */ + public int frameRate; + /** + * Number of frames in movie + */ + public int frameCount; + /** + * Version of SWF + */ + public int version; + /** + * Size of the file + */ + public long fileSize; + + /** + * Use compression + */ + public boolean compressed = false; + + /** + * Gets all tags with specified id + * + * @param tagId Identificator of tag type + * @return List of tags + */ + public List getTagData(int tagId) { + List ret = new ArrayList(); + for (Tag tag : tags) { + if (tag.getId() == tagId) { + ret.add(tag); + } + } + return ret; + } + + /** + * Saves this SWF into new file + * + * @param os OutputStream to save SWF in + * @throws IOException + */ + public void saveTo(OutputStream os) throws IOException { + try { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + SWFOutputStream sos = new SWFOutputStream(baos, version); + sos.writeRECT(displayRect); + sos.writeUI8(0); + sos.writeUI8(frameRate); + sos.writeUI16(frameCount); + + sos.writeTags(tags); + sos.writeUI16(0); + sos.close(); + if (compressed) { + os.write('C'); + } else { + os.write('F'); + } + os.write('W'); + os.write('S'); + os.write(version); + byte data[] = baos.toByteArray(); + sos = new SWFOutputStream(os, version); + sos.writeUI32(data.length + 8); + + if (compressed) { + os = new DeflaterOutputStream(os); + } + os.write(data); + } + finally { + if (os != null) + os.close(); + } + + } + + /** + * Construct SWF from stream + * + * @param is Stream to read SWF from + * @throws IOException + */ + public SWF(InputStream is) throws IOException { + byte hdr[] = new byte[3]; + is.read(hdr); + String shdr = new String(hdr); + if ((!shdr.equals("FWS")) && (!shdr.equals("CWS"))) { + throw new IOException("Invalid SWF file"); + } + version = is.read(); + SWFInputStream sis = new SWFInputStream(is, version); + fileSize = sis.readUI32(); + + if (hdr[0] == 'C') { + sis = new SWFInputStream(new InflaterInputStream(is), version); + compressed = true; + } + + + displayRect = sis.readRECT(); + sis.readUI8(); + frameRate = sis.readUI8(); + frameCount = sis.readUI16(); + tags = sis.readTagList(); + } + + + /** + * Compress SWF file + * + * @param fis Input stream + * @param fos Output stream + */ + public static void fws2cws(InputStream fis, OutputStream fos) { + try { + byte swfHead[] = new byte[8]; + fis.read(swfHead); + + swfHead[0] = 'C'; + fos.write(swfHead); + fos = new DeflaterOutputStream(fos); + int i = 0; + while ((i = fis.read()) != -1) { + fos.write(i); + } + + fis.close(); + fos.close(); + } catch (FileNotFoundException ex) { + } catch (IOException ex) { + } + + } + + /** + * Decompress SWF file + * + * @param fis Input stream + * @param fos Output stream + */ + public static void cws2fws(InputStream fis, OutputStream fos) { + try { + byte swfHead[] = new byte[8]; + fis.read(swfHead); + InflaterInputStream iis = new InflaterInputStream(fis); + swfHead[0] = 'F'; + fos.write(swfHead); + int i = 0; + while ((i = iis.read()) != -1) { + fos.write(i); + } + + fis.close(); + fos.close(); + } catch (FileNotFoundException ex) { + } catch (IOException ex) { + } + + } +} diff --git a/trunk/src/com/jpexs/asdec/SWFInputStream.java b/trunk/src/com/jpexs/asdec/SWFInputStream.java new file mode 100644 index 000000000..e5a6859b8 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/SWFInputStream.java @@ -0,0 +1,1153 @@ +package com.jpexs.asdec; + +import com.jpexs.asdec.action.Action; +import com.jpexs.asdec.action.swf3.*; +import com.jpexs.asdec.action.swf4.*; +import com.jpexs.asdec.action.swf5.*; +import com.jpexs.asdec.action.swf6.*; +import com.jpexs.asdec.action.swf7.*; +import com.jpexs.asdec.tags.*; +import com.jpexs.asdec.types.*; +import com.jpexs.asdec.types.filters.*; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; +import java.util.Stack; + +/** + * Class for reading data from SWF file + * + * @author JPEXS + */ +public class SWFInputStream extends InputStream { + private InputStream is; + private Stack margedPos = new Stack(); + private long pos = 0; + private int version; + + /** + * Constructor + * + * @param is Existing inputstream + * @param version Version of SWF to read + */ + public SWFInputStream(InputStream is, int version) { + this.version = version; + this.is = is; + } + + /** + * Gets position in bytes in the stream + * + * @return Number of bytes + */ + public long getPos() { + return pos; + } + + /** + * Reads one byte from the stream + * + * @return byte or -1 on error + * @throws IOException + */ + @Override + public int read() throws IOException { + pos++; + bitPos = 0; + return is.read(); + } + + private void alignByte() { + bitPos = 0; + } + + private int readNoBitReset() throws IOException { + pos++; + return is.read(); + } + + /** + * Reads one UI8 (Unsigned 8bit integer) value from the stream + * + * @return UI8 value or -1 on error + * @throws IOException + */ + public int readUI8() throws IOException { + return read(); + } + + /** + * Reads one string value from the stream + * + * @return String value + * @throws IOException + */ + public String readString() throws IOException { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + int r = 0; + while (true) { + r = read(); + if (r == 0) return new String(baos.toByteArray(), "utf8"); + baos.write(r); + } + } + + /** + * Reads one UI32 (Unsigned 32bit integer) value from the stream + * + * @return UI32 value + * @throws IOException + */ + public long readUI32() throws IOException { + return (read() + (read() << 8) + (read() << 16) + (read() << 24)) & 0xffffffff; + } + + /** + * Reads one UI16 (Unsigned 16bit integer) value from the stream + * + * @return UI16 value + * @throws IOException + */ + public int readUI16() throws IOException { + return read() + (read() << 8); + } + + /** + * Reads one SI32 (Signed 32bit integer) value from the stream + * + * @return SI32 value + * @throws IOException + */ + public long readSI32() throws IOException { + long uval = read() + (read() << 8) + (read() << 16) + (read() << 24); + if (uval >= 0x80000000) { + return -(((~uval) & 0xffffffff) + 1); + } else { + return uval; + } + } + + /** + * Reads one SI16 (Signed 16bit integer) value from the stream + * + * @return SI16 value + * @throws IOException + */ + public int readSI16() throws IOException { + int uval = read() + (read() << 8); + if (uval >= 0x8000) { + return -(((~uval) & 0xffff) + 1); + } else { + return uval; + } + } + + /** + * Reads one SI8 (Signed 8bit integer) value from the stream + * + * @return SI8 value + * @throws IOException + */ + public int readSI8() throws IOException { + int uval = read(); + if (uval >= 0x80) { + return -(((~uval) & 0xff) + 1); + } else { + return uval; + } + } + + /** + * Reads one FIXED (Fixed point 16.16) value from the stream + * + * @return FIXED value + * @throws IOException + */ + public double readFIXED() throws IOException { + int afterPoint = readUI16(); + int beforePoint = readUI16(); + return ((double) ((beforePoint << 16) + afterPoint)) / 65536; + } + + /** + * Reads one FIXED8 (Fixed point 8.8) value from the stream + * + * @return FIXED8 value + * @throws IOException + */ + public float readFIXED8() throws IOException { + int afterPoint = read(); + int beforePoint = read(); + return beforePoint + (((float) afterPoint) / 256); + } + + private long readLong() throws IOException { + byte readBuffer[] = readBytes(8); + return (((long) readBuffer[3] << 56) + + ((long) (readBuffer[2] & 255) << 48) + + ((long) (readBuffer[1] & 255) << 40) + + ((long) (readBuffer[0] & 255) << 32) + + ((long) (readBuffer[7] & 255) << 24) + + ((readBuffer[6] & 255) << 16) + + ((readBuffer[5] & 255) << 8) + + ((readBuffer[4] & 255) << 0)); + } + + /** + * Reads one DOUBLE (double precision floating point value) value from the stream + * + * @return DOUBLE value + * @throws IOException + */ + public double readDOUBLE() throws IOException { + long el = readLong(); + double ret = Double.longBitsToDouble(el); + return ret; + } + + /** + * Reads one FLOAT (single precision floating point value) value from the stream + * + * @return FLOAT value + * @throws IOException + */ + public float readFLOAT() throws IOException { + int val = (int) readUI32(); + float ret = Float.intBitsToFloat(val); + /*int sign = val >> 31; + int mantisa = val & 0x3FFFFF; + int exp = (val >> 22) & 0xFF; + float ret =(sign == 1 ? -1 : 1) * (float) Math.pow(2, exp)* (1+((mantisa)/ (float)(1<<23)));*/ + return ret; + } + + /** + * Reads one FLOAT16 (16bit floating point value) value from the stream + * + * @return FLOAT16 value + * @throws IOException + */ + public float readFLOAT16() throws IOException { + int val = readUI16(); + int sign = val >> 15; + int mantisa = val & 0x3FF; + int exp = (val >> 10) & 0x1F; + float ret = (sign == 1 ? -1 : 1) * (float) Math.pow(2, exp) * (1 + ((mantisa) / (float) (1 << 10))); + return ret; + } + + + /** + * Reads bytes from the stream + * + * @param count Number of bytes to read + * @return Array of read bytes + * @throws IOException + */ + public byte[] readBytes(long count) throws IOException { + byte ret[] = new byte[(int) count]; + for (int i = 0; i < count; i++) { + ret[i] = (byte) read(); + } + return ret; + } + + + /** + * Reads one EncodedU32 (Encoded unsigned 32bit value) value from the stream + * + * @return U32 value + * @throws IOException + */ + public long readEncodedU32() throws IOException { + int result = read(); + if ((result & 0x00000080) == 0) { + return result; + } + result = (result & 0x0000007f) | (read()) << 7; + if ((result & 0x00004000) == 0) { + return result; + } + result = (result & 0x00003fff) | (read()) << 14; + if ((result & 0x00200000) == 0) { + return result; + } + result = (result & 0x001fffff) | (read()) << 21; + if ((result & 0x10000000) == 0) { + return result; + } + result = (result & 0x0fffffff) | (read()) << 28; + return result; + } + + private int bitPos = 0; + private int tempByte = 0; + + /** + * Reads UB[nBits] (Unsigned-bit value) value from the stream + * + * @param nBits Number of bits which represent value + * @return Unsigned value + * @throws IOException + */ + public long readUB(int nBits) throws IOException { + if (nBits == 0) return 0; + long ret = 0; + if (bitPos == 0) { + tempByte = readNoBitReset(); + } + for (int bit = 0; bit < nBits; bit++) { + int nb = (tempByte >> (7 - bitPos)) & 1; + ret = ret + (nb << (nBits - 1 - bit)); + bitPos++; + if (bitPos == 8) { + bitPos = 0; + if (bit != nBits - 1) { + tempByte = readNoBitReset(); + } + } + } + return ret; + } + + /** + * Reads SB[nBits] (Signed-bit value) value from the stream + * + * @param nBits Number of bits which represent value + * @return Signed value + * @throws IOException + */ + public long readSB(int nBits) throws IOException { + long uval = readUB(nBits); + + if ((uval & (1 << (nBits - 1))) > 0) uval |= (0xffffffff << nBits); + return uval; + /*int sign = (int) (uval >> (nBits - 1)); + if (sign == 1) { + long mask = 0; + for (int k = 0; k < nBits; k++) { + mask = mask + (1 << k); + } + return -(((~uval) & mask) + 1); + } else { + return uval; + } */ + } + + + /** + * Reads FB[nBits] (Signed fixed-point bit value) value from the stream + * + * @param nBits Number of bits which represent value + * @return Fixed-point value + * @throws IOException + */ + public double readFB(int nBits) throws IOException { + + double val = readSB(nBits); + double ret = val / (1 << 16); + return ret; + } + + /** + * Reads one RECT value from the stream + * + * @return RECT value + * @throws IOException + */ + public RECT readRECT() throws IOException { + RECT ret = new RECT(); + int NBits = (int) readUB(5); + ret.Xmin = (int) readSB(NBits); + ret.Xmax = (int) readSB(NBits); + ret.Ymin = (int) readSB(NBits); + ret.Ymax = (int) readSB(NBits); + return ret; + } + + /** + * Reads list of actions from the stream. Reading ends with ActionEndFlag(=0) or end of the stream. + * + * @return List of actions + * @throws IOException + */ + public List readActionList() throws IOException { + List ret = new ArrayList(); + Action a; + while ((a = readAction()) != null) { + ret.add(a); + } + return ret; + } + + /** + * Reads list of tags from the stream. Reading ends with End tag(=0) or end of the stream. + * + * @return List of tags + * @throws IOException + */ + public List readTagList() throws IOException { + List tags = new ArrayList(); + Tag tag; + while ((tag = readTag()) != null) { + tags.add(tag); + } + return tags; + } + + /** + * Reads one Tag from the stream + * + * @return Tag or null when End tag + * @throws IOException + */ + public Tag readTag() throws IOException { + int tagIDTagLength = readUI16(); + int tagID = (tagIDTagLength) >> 6; + if (tagID == 0) { + return null; + } + long tagLength = (tagIDTagLength & 0x003F); + boolean readLong = false; + if (tagLength == 0x3f) { + tagLength = readSI32(); + readLong = true; + } + byte data[] = readBytes((int) tagLength); + Tag ret; + switch (tagID) { + case 82: + ret = new DoABCTag(data, version); + break; + case 12: + ret = new DoActionTag(data, version); + break; + case 59: + ret = new DoInitActionTag(data, version); + break; + case 39: + ret = new DefineSpriteTag(data, version); + break; + case 1: + ret = new ShowFrameTag(); + break; + case 26: + ret = new PlaceObject2Tag(data, version); + break; + case 56: + ret = new ExportAssetsTag(data, version); + break; + case 70: + ret = new PlaceObject3Tag(data, version); + break; + case 7: + ret = new DefineButtonTag(data, version); + break; + case 34: + ret = new DefineButton2Tag(data, version); + break; + default: + ret = new Tag(tagID, data); + } + ret.forceWriteAsLong = readLong; + return ret; + } + + /** + * Reads one Action from the stream + * + * @return Action or null when ActionEndFlag or end of the stream + * @throws IOException + */ + public Action readAction() throws IOException { + { + int actionCode = readUI8(); + if (actionCode == 0) return null; + if (actionCode == -1) return null; + int actionLength = 0; + if (actionCode >= 0x80) { + actionLength = readUI16(); + } + switch (actionCode) { + //SWF3 Actions + case 0x81: + return new ActionGotoFrame(this); + case 0x83: + return new ActionGetURL(actionLength, this); + case 0x04: + return new ActionNextFrame(); + case 0x05: + return new ActionPrevFrame(); + case 0x06: + return new ActionPlay(); + case 0x07: + return new ActionStop(); + case 0x08: + return new ActionToggleQuality(); + case 0x09: + return new ActionStopSounds(); + case 0x8A: + return new ActionWaitForFrame(this); + case 0x8B: + return new ActionSetTarget(actionLength, this); + case 0x8C: + return new ActionGoToLabel(actionLength, this); + //SWF4 Actions + case 0x96: + return new ActionPush(actionLength, this, version); + case 0x17: + return new ActionPop(); + case 0x0A: + return new ActionAdd(); + case 0x0B: + return new ActionSubtract(); + case 0x0C: + return new ActionMultiply(); + case 0x0D: + return new ActionDivide(); + case 0x0E: + return new ActionEquals(); + case 0x0F: + return new ActionLess(); + case 0x10: + return new ActionAnd(); + case 0x11: + return new ActionOr(); + case 0x12: + return new ActionNot(); + case 0x13: + return new ActionStringEquals(); + case 0x14: + return new ActionStringLength(); + case 0x21: + return new ActionStringAdd(); + case 0x15: + return new ActionStringExtract(); + case 0x29: + return new ActionStringLess(); + case 0x31: + return new ActionMBStringLength(); + case 0x35: + return new ActionMBStringExtract(); + case 0x18: + return new ActionToInteger(); + case 0x32: + return new ActionCharToAscii(); + case 0x33: + return new ActionAsciiToChar(); + case 0x36: + return new ActionMBCharToAscii(); + case 0x37: + return new ActionMBAsciiToChar(); + case 0x99: + return new ActionJump(this); + case 0x9D: + return new ActionIf(this); + case 0x9E: + return new ActionCall(); + case 0x1C: + return new ActionGetVariable(); + case 0x1D: + return new ActionSetVariable(); + case 0x9A: + return new ActionGetURL2(this); + case 0x9F: + return new ActionGotoFrame2(actionLength, this); + case 0x20: + return new ActionSetTarget2(); + case 0x22: + return new ActionGetProperty(); + case 0x23: + return new ActionSetProperty(); + case 0x24: + return new ActionCloneSprite(); + case 0x25: + return new ActionRemoveSprite(); + case 0x27: + return new ActionStartDrag(); + case 0x28: + return new ActionEndDrag(); + case 0x8D: + return new ActionWaitForFrame2(this); + case 0x26: + return new ActionTrace(); + case 0x34: + return new ActionGetTime(); + case 0x30: + return new ActionRandomNumber(); + //SWF5 Actions + case 0x3D: + return new ActionCallFunction(); + case 0x52: + return new ActionCallMethod(); + case 0x88: + return new ActionConstantPool(actionLength, this); + case 0x9B: + return new ActionDefineFunction(actionLength, this, version); + case 0x3C: + return new ActionDefineLocal(); + case 0x41: + return new ActionDefineLocal2(); + case 0x3A: + return new ActionDelete(); + case 0x3B: + return new ActionDelete2(); + case 0x46: + return new ActionEnumerate(); + case 0x49: + return new ActionEquals2(); + case 0x4E: + return new ActionGetMember(); + case 0x42: + return new ActionInitArray(); + case 0x43: + return new ActionInitObject(); + case 0x53: + return new ActionNewMethod(); + case 0x40: + return new ActionNewObject(); + case 0x4F: + return new ActionSetMember(); + case 0x45: + return new ActionTargetPath(); + case 0x94: + return new ActionWith(this, version); + case 0x4A: + return new ActionToNumber(); + case 0x4B: + return new ActionToString(); + case 0x44: + return new ActionTypeOf(); + case 0x47: + return new ActionAdd2(); + case 0x48: + return new ActionLess2(); + case 0x3F: + return new ActionModulo(); + case 0x60: + return new ActionBitAnd(); + case 0x63: + return new ActionBitLShift(); + case 0x61: + return new ActionBitOr(); + case 0x64: + return new ActionBitRShift(); + case 0x65: + return new ActionBitURShift(); + case 0x62: + return new ActionBitXor(); + case 0x51: + return new ActionDecrement(); + case 0x50: + return new ActionIncrement(); + case 0x4C: + return new ActionPushDuplicate(); + case 0x3E: + return new ActionReturn(); + case 0x4D: + return new ActionStackSwap(); + case 0x87: + return new ActionStoreRegister(this); + //SWF6 Actions + case 0x54: + return new ActionInstanceOf(); + case 0x55: + return new ActionEnumerate2(); + case 0x66: + return new ActionStrictEquals(); + case 0x67: + return new ActionGreater(); + case 0x68: + return new ActionStringGreater(); + //SWF7 Actions + case 0x8E: + return new ActionDefineFunction2(actionLength, this, version); + case 0x69: + return new ActionExtends(); + case 0x2B: + return new ActionCastOp(); + case 0x2C: + return new ActionImplementsOp(); + case 0x8F: + return new ActionTry(actionLength, this, version); + case 0x2A: + return new ActionThrow(); + default: + if (actionLength > 0) skip(actionLength); + return new Action(actionCode, actionLength); + } + } + } + + /** + * Reads one MATRIX value from the stream + * + * @return MATRIX value + * @throws IOException + */ + public MATRIX readMatrix() throws IOException { + MATRIX ret = new MATRIX(); + ret.hasScale = readUB(1) == 1; + if (ret.hasScale) { + int NScaleBits = (int) readUB(5); + ret.scaleNBits = NScaleBits; + + ret.scaleX = readFB(NScaleBits); + ret.scaleY = readFB(NScaleBits); + } + ret.hasRotate = readUB(1) == 1; + if (ret.hasRotate) { + int NRotateBits = (int) readUB(5); + ret.rotateNBits = NRotateBits; + ret.rotateSkew0 = readFB(NRotateBits); + ret.rotateSkew1 = readFB(NRotateBits); + } + int NTranslateBits = (int) readUB(5); + ret.translateNBits = NTranslateBits; + ret.translateX = readSB(NTranslateBits); + ret.translateY = readSB(NTranslateBits); + alignByte(); + return ret; + } + + /** + * Reads one CXFORMWITHALPHA value from the stream + * + * @return CXFORMWITHALPHA value + * @throws IOException + */ + public CXFORMWITHALPHA readCXFORMWITHALPHA() throws IOException { + CXFORMWITHALPHA ret = new CXFORMWITHALPHA(); + ret.hasAddTerms = readUB(1) == 1; + ret.hasMultTerms = readUB(1) == 1; + int Nbits = (int) readUB(4); + ret.nbits = Nbits; + if (ret.hasMultTerms) { + ret.redMultTerm = (int) readSB(Nbits); + ret.greenMultTerm = (int) readSB(Nbits); + ret.blueMultTerm = (int) readSB(Nbits); + ret.alphaMultTerm = (int) readSB(Nbits); + } + if (ret.hasAddTerms) { + ret.redAddTerm = (int) readSB(Nbits); + ret.greenAddTerm = (int) readSB(Nbits); + ret.blueAddTerm = (int) readSB(Nbits); + ret.alphaAddTerm = (int) readSB(Nbits); + } + alignByte(); + return ret; + } + + /** + * Reads one CLIPEVENTFLAGS value from the stream + * + * @return CLIPEVENTFLAGS value + * @throws IOException + */ + + public CLIPEVENTFLAGS readCLIPEVENTFLAGS() throws IOException { + CLIPEVENTFLAGS ret = new CLIPEVENTFLAGS(); + ret.clipEventKeyUp = readUB(1) == 1; + ret.clipEventKeyDown = readUB(1) == 1; + ret.clipEventMouseUp = readUB(1) == 1; + ret.clipEventMouseDown = readUB(1) == 1; + ret.clipEventMouseMove = readUB(1) == 1; + ret.clipEventUnload = readUB(1) == 1; + ret.clipEventEnterFrame = readUB(1) == 1; + ret.clipEventLoad = readUB(1) == 1; + ret.clipEventDragOver = readUB(1) == 1; + ret.clipEventRollOut = readUB(1) == 1; + ret.clipEventRollOver = readUB(1) == 1; + ret.clipEventReleaseOutside = readUB(1) == 1; + ret.clipEventRelease = readUB(1) == 1; + ret.clipEventPress = readUB(1) == 1; + ret.clipEventInitialize = readUB(1) == 1; + ret.clipEventData = readUB(1) == 1; + if (version >= 6) { + readUB(5); + ret.clipEventConstruct = readUB(1) == 1; + ret.clipEventKeyPress = readUB(1) == 1; + ret.clipEventDragOut = readUB(1) == 1; + readUB(8); + } + return ret; + } + + /** + * Reads one CLIPACTIONRECORD value from the stream + * + * @return CLIPACTIONRECORD value + * @throws IOException + */ + public CLIPACTIONRECORD readCLIPACTIONRECORD() throws IOException { + CLIPACTIONRECORD ret = new CLIPACTIONRECORD(); + ret.eventFlags = readCLIPEVENTFLAGS(); + if (ret.eventFlags.isClear()) return null; + long actionRecordSize = readUI32(); + if (ret.eventFlags.clipEventKeyPress) { + ret.keyCode = readUI8(); + actionRecordSize--; + } + ret.actions = (new SWFInputStream(new ByteArrayInputStream(readBytes(actionRecordSize)), version)).readActionList(); + return ret; + } + + /** + * Reads one CLIPACTIONS value from the stream + * + * @return CLIPACTIONS value + * @throws IOException + */ + public CLIPACTIONS readCLIPACTIONS() throws IOException { + CLIPACTIONS ret = new CLIPACTIONS(); + readUI16();//reserved + ret.allEventFlags = readCLIPEVENTFLAGS(); + CLIPACTIONRECORD cr; + ret.clipActionRecords = new ArrayList(); + while ((cr = readCLIPACTIONRECORD()) != null) { + ret.clipActionRecords.add(cr); + } + return ret; + } + + + /** + * Reads one COLORMATRIXFILTER value from the stream + * + * @return COLORMATRIXFILTER value + * @throws IOException + */ + public COLORMATRIXFILTER readCOLORMATRIXFILTER() throws IOException { + COLORMATRIXFILTER ret = new COLORMATRIXFILTER(); + ret.matrix = new float[20]; + for (int i = 0; i < 20; i++) { + ret.matrix[i] = readFLOAT(); + } + return ret; + } + + /** + * Reads one RGBA value from the stream + * + * @return RGBA value + * @throws IOException + */ + public RGBA readRGBA() throws IOException { + RGBA ret = new RGBA(); + ret.red = readUI8(); + ret.green = readUI8(); + ret.blue = readUI8(); + ret.alpha = readUI8(); + return ret; + } + + /** + * Reads one CONVOLUTIONFILTER value from the stream + * + * @return CONVOLUTIONFILTER value + * @throws IOException + */ + public CONVOLUTIONFILTER readCONVOLUTIONFILTER() throws IOException { + CONVOLUTIONFILTER ret = new CONVOLUTIONFILTER(); + ret.matrixX = readUI8(); + ret.matrixY = readUI8(); + ret.divisor = readFLOAT(); + ret.bias = readFLOAT(); + ret.matrix = new float[ret.matrixX][ret.matrixY]; + for (int x = 0; x < ret.matrixX; x++) { + for (int y = 0; y < ret.matrixY; y++) { + ret.matrix[x][y] = readFLOAT(); + } + } + ret.defaultColor = readRGBA(); + readUB(6);//reserved + ret.clamp = readUB(1) == 1; + ret.preserveAlpha = readUB(1) == 1; + return ret; + } + + /** + * Reads one BLURFILTER value from the stream + * + * @return BLURFILTER value + * @throws IOException + */ + public BLURFILTER readBLURFILTER() throws IOException { + BLURFILTER ret = new BLURFILTER(); + ret.blurX = readFIXED(); + ret.blurY = readFIXED(); + ret.passes = (int) readUB(5); + readUB(3); //reserved + return ret; + } + + /** + * Reads one DROPSHADOWFILTER value from the stream + * + * @return DROPSHADOWFILTER value + * @throws IOException + */ + public DROPSHADOWFILTER readDROPSHADOWFILTER() throws IOException { + DROPSHADOWFILTER ret = new DROPSHADOWFILTER(); + ret.dropShadowColor = readRGBA(); + ret.blurX = readFIXED(); + ret.blurY = readFIXED(); + ret.angle = readFIXED(); + ret.distance = readFIXED(); + ret.strength = readFIXED8(); + ret.innerShadow = readUB(1) == 1; + ret.knockout = readUB(1) == 1; + ret.compositeSource = readUB(1) == 1; + ret.passes = (int) readUB(5); + return ret; + } + + /** + * Reads one GLOWFILTER value from the stream + * + * @return GLOWFILTER value + * @throws IOException + */ + public GLOWFILTER readGLOWFILTER() throws IOException { + GLOWFILTER ret = new GLOWFILTER(); + ret.glowColor = readRGBA(); + ret.blurX = readFIXED(); + ret.blurY = readFIXED(); + ret.strength = readFIXED8(); + ret.innerGlow = readUB(1) == 1; + ret.knockout = readUB(1) == 1; + ret.compositeSource = readUB(1) == 1; + ret.passes = (int) readUB(5); + return ret; + } + + /** + * Reads one BEVELFILTER value from the stream + * + * @return BEVELFILTER value + * @throws IOException + */ + public BEVELFILTER readBEVELFILTER() throws IOException { + BEVELFILTER ret = new BEVELFILTER(); + ret.shadowColor = readRGBA(); + ret.highlightColor = readRGBA(); + ret.blurX = readFIXED(); + ret.blurY = readFIXED(); + ret.angle = readFIXED(); + ret.distance = readFIXED(); + ret.strength = readFIXED8(); + ret.innerShadow = readUB(1) == 1; + ret.knockout = readUB(1) == 1; + ret.compositeSource = readUB(1) == 1; + ret.onTop = readUB(1) == 1; + ret.passes = (int) readUB(4); + return ret; + } + + /** + * Reads one GRADIENTGLOWFILTER value from the stream + * + * @return GRADIENTGLOWFILTER value + * @throws IOException + */ + public GRADIENTGLOWFILTER readGRADIENTGLOWFILTER() throws IOException { + GRADIENTGLOWFILTER ret = new GRADIENTGLOWFILTER(); + int numColors = readUI8(); + ret.gradientColors = new RGBA[numColors]; + ret.gradientRatio = new int[numColors]; + for (int i = 0; i < numColors; i++) { + ret.gradientColors[i] = readRGBA(); + } + for (int i = 0; i < numColors; i++) { + ret.gradientRatio[i] = readUI8(); + } + ret.blurX = readFIXED(); + ret.blurY = readFIXED(); + ret.angle = readFIXED(); + ret.distance = readFIXED(); + ret.strength = readFIXED8(); + ret.innerShadow = readUB(1) == 1; + ret.knockout = readUB(1) == 1; + ret.compositeSource = readUB(1) == 1; + ret.onTop = readUB(1) == 1; + ret.passes = (int) readUB(4); + return ret; + } + + /** + * Reads one GRADIENTBEVELFILTER value from the stream + * + * @return GRADIENTBEVELFILTER value + * @throws IOException + */ + public GRADIENTBEVELFILTER readGRADIENTBEVELFILTER() throws IOException { + GRADIENTBEVELFILTER ret = new GRADIENTBEVELFILTER(); + int numColors = readUI8(); + ret.gradientColors = new RGBA[numColors]; + ret.gradientRatio = new int[numColors]; + for (int i = 0; i < numColors; i++) { + ret.gradientColors[i] = readRGBA(); + } + for (int i = 0; i < numColors; i++) { + ret.gradientRatio[i] = readUI8(); + } + ret.blurX = readFIXED(); + ret.blurY = readFIXED(); + ret.angle = readFIXED(); + ret.distance = readFIXED(); + ret.strength = readFIXED8(); + ret.innerShadow = readUB(1) == 1; + ret.knockout = readUB(1) == 1; + ret.compositeSource = readUB(1) == 1; + ret.onTop = readUB(1) == 1; + ret.passes = (int) readUB(4); + return ret; + } + + + /** + * Reads list of FILTER values from the stream + * + * @return List of FILTER values + * @throws IOException + */ + public List readFILTERLIST() throws IOException { + List ret = new ArrayList(); + int numberOfFilters = readUI8(); + for (int i = 0; i < numberOfFilters; i++) { + ret.add(readFILTER()); + } + return ret; + } + + /** + * Reads one FILTER value from the stream + * + * @return FILTER value + * @throws IOException + */ + public FILTER readFILTER() throws IOException { + int filterId = readUI8(); + switch (filterId) { + case 0: + return readDROPSHADOWFILTER(); + case 1: + return readBLURFILTER(); + case 2: + return readGLOWFILTER(); + case 3: + return readBEVELFILTER(); + case 4: + return readGRADIENTGLOWFILTER(); + case 5: + return readCONVOLUTIONFILTER(); + case 6: + return readCOLORMATRIXFILTER(); + case 7: + return readGRADIENTBEVELFILTER(); + default: + return null; + } + } + + /** + * Reads list of BUTTONRECORD values from the stream + * + * @param inDefineButton2 Whether read from inside of DefineButton2Tag or not + * @return List of BUTTONRECORD values + * @throws IOException + */ + public List readBUTTONRECORDList(boolean inDefineButton2) throws IOException { + List ret = new ArrayList(); + BUTTONRECORD br; + while ((br = readBUTTONRECORD(inDefineButton2)) != null) { + ret.add(br); + } + return ret; + } + + /** + * Reads one BUTTONRECORD value from the stream + * + * @return BUTTONRECORD value + * @throws IOException + */ + public BUTTONRECORD readBUTTONRECORD(boolean inDefineButton2) throws IOException { + BUTTONRECORD ret = new BUTTONRECORD(); + int res = (int) readUB(2); //reserved + ret.buttonHasBlendMode = readUB(1) == 1; + ret.buttonHasFilterList = readUB(1) == 1; + ret.buttonStateHitTest = readUB(1) == 1; + ret.buttonStateDown = readUB(1) == 1; + ret.buttonStateOver = readUB(1) == 1; + ret.buttonStateUp = readUB(1) == 1; + + if (!ret.buttonHasBlendMode) + if (!ret.buttonHasFilterList) + if (!ret.buttonStateHitTest) + if (!ret.buttonStateDown) + if (!ret.buttonStateOver) + if (!ret.buttonStateUp) + if (res == 0) + return null; + + ret.characterId = readUI16(); + ret.placeDepth = readUI16(); + ret.placeMatrix = readMatrix(); + if (inDefineButton2) { + ret.colorTransform = readCXFORMWITHALPHA(); + if (ret.buttonHasFilterList) { + ret.filterList = readFILTERLIST(); + } + if (ret.buttonHasBlendMode) { + ret.blendMode = readUI8(); + } + } + return ret; + } + + /** + * Reads list of BUTTONCONDACTION values from the stream + * + * @return List of BUTTONCONDACTION values + * @throws IOException + */ + public List readBUTTONCONDACTIONList() throws IOException { + List ret = new ArrayList(); + BUTTONCONDACTION bc; + while (!(bc = readBUTTONCONDACTION()).isLast) { + ret.add(bc); + } + ret.add(bc); + return ret; + } + + /** + * Reads one BUTTONCONDACTION value from the stream + * + * @return BUTTONCONDACTION value + * @throws IOException + */ + public BUTTONCONDACTION readBUTTONCONDACTION() throws IOException { + BUTTONCONDACTION ret = new BUTTONCONDACTION(); + int condActionSize = readUI16(); + ret.isLast = condActionSize == 0; + ret.condIdleToOverDown = readUB(1) == 1; + ret.condOutDownToIdle = readUB(1) == 1; + ret.condOutDownToOverDown = readUB(1) == 1; + ret.condOverDownToOutDown = readUB(1) == 1; + ret.condOverDownToOverUp = readUB(1) == 1; + ret.condOverUpToOverDown = readUB(1) == 1; + ret.condOverUpToIddle = readUB(1) == 1; + ret.condIdleToOverUp = readUB(1) == 1; + ret.condKeyPress = (int) readUB(7); + ret.condOverDownToIddle = readUB(1) == 1; + ret.actions = readActionList(); + return ret; + } +} diff --git a/trunk/src/com/jpexs/asdec/SWFOutputStream.java b/trunk/src/com/jpexs/asdec/SWFOutputStream.java new file mode 100644 index 000000000..e26d2c5b0 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/SWFOutputStream.java @@ -0,0 +1,918 @@ +package com.jpexs.asdec; + +import com.jpexs.asdec.action.Action; +import com.jpexs.asdec.tags.Tag; +import com.jpexs.asdec.types.*; +import com.jpexs.asdec.types.filters.*; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.util.List; + +/** + * Class for writing data into SWF file + * + * @author JPEXS + */ +public class SWFOutputStream extends OutputStream { + private OutputStream os; + private int version; + private long pos = 0; + + /** + * Constructor + * + * @param os OutputStream for writing data + * @param version Version of SWF + */ + public SWFOutputStream(OutputStream os, int version) { + this.version = version; + this.os = os; + } + + /** + * Writes byte to the stream + * + * @param b byte to write + * @throws IOException + */ + @Override + public void write(int b) throws IOException { + alignByte(); + os.write(b); + pos++; + } + + private void alignByte() throws IOException { + if (bitPos > 0) { + bitPos = 0; + write(tempByte); + tempByte = 0; + } + } + + /** + * Writes UI8 (Unsigned 8bit integer) value to the stream + * + * @param val UI8 value to write + * @throws IOException + */ + public void writeUI8(int val) throws IOException { + write(val); + } + + /** + * Writes String value to the stream + * + * @param value String value + * @throws IOException + */ + public void writeString(String value) throws IOException { + write(value.getBytes("utf8")); + write(0); + } + + /** + * Writes UI32 (Unsigned 32bit integer) value to the stream + * + * @param value UI32 value + * @throws IOException + */ + public void writeUI32(long value) throws IOException { + write((int) (value & 0xff)); + write((int) ((value >> 8) & 0xff)); + write((int) ((value >> 16) & 0xff)); + write((int) ((value >> 24) & 0xff)); + } + + /** + * Writes UI16 (Unsigned 16bit integer) value to the stream + * + * @param value UI16 value + * @throws IOException + */ + public void writeUI16(int value) throws IOException { + write((int) (value & 0xff)); + write((int) ((value >> 8) & 0xff)); + } + + /** + * Writes SI32 (Signed 32bit integer) value to the stream + * + * @param value SI32 value + * @throws IOException + */ + public void writeSI32(long value) throws IOException { + writeUI32(value); + } + + /** + * Writes SI16 (Signed 16bit integer) value to the stream + * + * @param value SI16 value + * @throws IOException + */ + public void writeSI16(int value) throws IOException { + writeUI16(value); + } + + /** + * Writes SI8 (Signed 8bit integer) value to the stream + * + * @param value SI8 value + * @throws IOException + */ + public void writeSI8(int value) throws IOException { + writeUI8(value); + } + + /** + * Writes FIXED (Fixed point 16.16) value to the stream + * + * @param value FIXED value + * @throws IOException + */ + public void writeFIXED(double value) throws IOException { + long valueLong = (long) (value * (1 << 16)); + int beforePoint = (int) valueLong >> 16; + + int afterPoint = (int) valueLong % (1 << 16); + writeUI16(afterPoint); + writeUI16(beforePoint); + } + + /** + * Writes FIXED8 (Fixed point 8.8) value to the stream + * + * @param value FIXED8 value + * @throws IOException + */ + public void writeFIXED8(float value) throws IOException { + int beforePoint = (int) getIntPart(value); + int afterPoint = (int) getIntPart((value + (value < 0 ? beforePoint : -beforePoint)) * 256); + writeUI8(afterPoint); + writeUI8(beforePoint); + } + + private void writeLong(long value) throws IOException { + byte writeBuffer[] = new byte[8]; + writeBuffer[3] = (byte) (value >>> 56); + writeBuffer[2] = (byte) (value >>> 48); + writeBuffer[1] = (byte) (value >>> 40); + writeBuffer[0] = (byte) (value >>> 32); + writeBuffer[7] = (byte) (value >>> 24); + writeBuffer[6] = (byte) (value >>> 16); + writeBuffer[5] = (byte) (value >>> 8); + writeBuffer[4] = (byte) (value >>> 0); + write(writeBuffer); + } + + /** + * Writes DOUBLE (double precision floating point value) value to the stream + * + * @param value DOUBLE value + * @throws IOException + */ + public void writeDOUBLE(double value) throws IOException { + writeLong(Double.doubleToLongBits(value)); + } + + /** + * Writes FLOAT (single precision floating point value) value to the stream + * + * @param value FLOAT value + * @throws IOException + */ + public void writeFLOAT(float value) throws IOException { + writeUI32(Float.floatToIntBits(value)); + } + + /** + * Writes FLOAT16 (16bit floating point value) value to the stream + * + * @param value FLOAT16 value + * @throws IOException + */ + public void writeFLOAT16(float value) throws IOException { + int bits = Float.floatToRawIntBits(value); + int sign = bits >> 31; + int exponent = (bits >> 22) & 0xff; + int mantisa = bits & 0x3FFFFF; + mantisa = mantisa >> 13; + writeUI16((sign << 15) + (exponent << 10) + mantisa); + } + + /** + * Writes EncodedU32 (Encoded unsigned 32bit value) value to the stream + * + * @param value U32 value + * @throws IOException + */ + public void writeEncodedU32(long value) throws IOException { + boolean loop = true; + value = value & 0xFFFFFFFF; + do { + int ret = (int) (value & 0x7F); + if (value < 0x80) { + loop = false; + } + if (value > 0x7F) { + ret += 0x80; + } + write(ret); + value = value >> 7; + } while (loop); + } + + private int bitPos = 0; + private int tempByte = 0; + + /** + * Flushes data to underlying stream + * + * @throws IOException + */ + @Override + public void flush() throws IOException { + if (bitPos > 0) { + bitPos = 0; + write(tempByte); + tempByte = 0; + } + os.flush(); + } + + /** + * Closes the stream + * + * @throws IOException + */ + @Override + public void close() throws IOException { + flush(); + os.close(); + } + + /** + * Writes UB[nBits] (Unsigned-bit value) value to the stream + * + * @param nBits Number of bits which represent value + * @param value Unsigned value to write + * @throws IOException + */ + public void writeUB(int nBits, long value) throws IOException { + for (int bit = 0; bit < nBits; bit++) { + int nb = (int) ((value >> (nBits - 1 - bit)) & 1); + tempByte += nb * (1 << (7 - bitPos)); + bitPos++; + if (bitPos == 8) { + bitPos = 0; + write(tempByte); + tempByte = 0; + } + } + } + + /** + * Writes SB[nBits] (Signed-bit value) value to the stream + * + * @param nBits Number of bits which represent value + * @param value Signed value to write + * @throws IOException + */ + public void writeSB(int nBits, long value) throws IOException { + writeUB(nBits, value); + } + + /** + * Writes FB[nBits] (Signed fixed-point bit value) value to the stream + * + * @param nBits Number of bits which represent value + * @param value Double value to write + * @throws IOException + */ + public void writeFB(int nBits, double value) throws IOException { + long longVal = (long) (value * (1 << 16)); + writeSB(nBits, longVal); + } + + /** + * Writes RECT value to the stream + * + * @param value RECT value + * @throws IOException + */ + public void writeRECT(RECT value) throws IOException { + int nBits = 0; + nBits = enlargeBitCountS(nBits, value.Xmin); + nBits = enlargeBitCountS(nBits, value.Xmax); + nBits = enlargeBitCountS(nBits, value.Ymin); + nBits = enlargeBitCountS(nBits, value.Ymax); + + writeUB(5, nBits); + writeSB(nBits, value.Xmin); + writeSB(nBits, value.Xmax); + writeSB(nBits, value.Ymin); + writeSB(nBits, value.Ymax); + } + + /** + * Writes list of Tag values to the stream + * + * @param tags List of tag values + * @throws IOException + */ + public void writeTags(List tags) throws IOException { + for (Tag tag : tags) { + writeTag(tag); + } + } + + /** + * Writes Tag value to the stream + * + * @param tag Tag value + * @throws IOException + */ + public void writeTag(Tag tag) throws IOException { + byte data[] = tag.getData(version); + int tagLength = data.length; + int tagID = tag.getId(); + int tagIDLength = (tagID << 6); + if ((tagLength < 0x3f) && (!tag.forceWriteAsLong)) { + tagIDLength += tagLength; + writeUI16(tagIDLength); + } else { + tagIDLength += 0x3f; + writeUI16(tagIDLength); + writeSI32(tagLength); + } + write(data); + } + + /** + * Calculates number of bits needed for representing unsigned value + * + * @param v Unsigned value + * @return Number of bits + */ + public static int getNeededBitsU(long v) { + + int n = 32; + long m = 0x80000000; + if (v == 0x00000000) n = 0; + else + while (!((v & m) > 0)) { + n--; + m >>= 1; + } + return n; + /*if (value == 0) { + return 1; + } + return Long.toBinaryString(value).length();*/ + } + + /** + * Calculates number of bits needed for representing signed value + * + * @param v Signed value + * @return Number of bits + */ + public static int getNeededBitsS(long v) { + int n = 33; + long m = 0x80000000; + if ((v & m) == m) { + if (v == 0xffffffff) n = 1; + else + while ((v & m) == m) { + n--; + m >>= 1; + } + } else { + if (v == 0x00000000) n = 1; + else + while ((v & m) == 0) { + n--; + m >>= 1; + } + } + return n; + /*if (value == 0) { + return 1; + } + if (value == -1) { + return 2; + } + if (value < 0) { + String str = Long.toBinaryString(value); + for (int i = 0; i < str.length(); i++) { + if (str.charAt(i) == '0') { + return str.length() - 1 - i + 2; + } + } + return 1; + } else { + return Long.toBinaryString(value).length() + 1; + } */ + } + + + private static long getIntPart(double value) { + if (value < 0) return (long) Math.ceil(value); + return (long) Math.floor(value); + } + + private static double getFloatPart(double value) { + if (value < 0) return value - getIntPart(value); + return value + getIntPart(value); + } + + /** + * Calculates number of bits needed for representing fixed-point value + * + * @param value Fixed-point value + * @return Number of bits + */ + public static int getNeededBitsF(double value) { + if (value == -1) return 18; + long val = (long) (value * (1 << 16)); + return getNeededBitsS(val); + } + + private int enlargeBitCountU(int currentBitCount, long value) { + int neededNew = getNeededBitsU(value); + if (neededNew > currentBitCount) return neededNew; + return currentBitCount; + } + + private int enlargeBitCountS(int currentBitCount, long value) { + int neededNew = getNeededBitsS(value); + if (neededNew > currentBitCount) return neededNew; + return currentBitCount; + } + + private int enlargeBitCountF(int currentBitCount, double value) { + int neededNew = getNeededBitsF(value); + if (neededNew > currentBitCount) return neededNew; + return currentBitCount; + } + + /** + * Writes MATRIX value to the stream + * + * @param value MATRIX value + * @throws IOException + */ + public void writeMatrix(MATRIX value) throws IOException { + writeUB(1, value.hasScale ? 1 : 0); + if (value.hasScale) { + int nBits = 0; + nBits = enlargeBitCountF(nBits, value.scaleX); + nBits = enlargeBitCountF(nBits, value.scaleY); + nBits = value.scaleNBits; //FFFUUU + writeUB(5, nBits); + writeFB(nBits, value.scaleX); + writeFB(nBits, value.scaleY); + } + writeUB(1, value.hasRotate ? 1 : 0); + if (value.hasRotate) { + int nBits = 0; + nBits = enlargeBitCountF(nBits, value.rotateSkew0); + nBits = enlargeBitCountF(nBits, value.rotateSkew1); + nBits = value.rotateNBits; //FFFUUU + writeUB(5, nBits); + writeFB(nBits, value.rotateSkew0); + writeFB(nBits, value.rotateSkew1); + } + int NTranslateBits = 0; + NTranslateBits = enlargeBitCountS(NTranslateBits, value.translateX); + NTranslateBits = enlargeBitCountS(NTranslateBits, value.translateY); + NTranslateBits = value.translateNBits; //FFFUUU + writeUB(5, NTranslateBits); + + + writeSB(NTranslateBits, value.translateX); + writeSB(NTranslateBits, value.translateY); + alignByte(); + + } + + /** + * Writes CXFORMWITHALPHA value to the stream + * + * @param value CXFORMWITHALPHA value + * @throws IOException + */ + public void writeCXFORMWITHALPHA(CXFORMWITHALPHA value) throws IOException { + writeUB(1, value.hasAddTerms ? 1 : 0); + writeUB(1, value.hasMultTerms ? 1 : 0); + int Nbits = 1; + if (value.hasMultTerms) { + Nbits = enlargeBitCountS(Nbits, value.redMultTerm); + Nbits = enlargeBitCountS(Nbits, value.greenMultTerm); + Nbits = enlargeBitCountS(Nbits, value.blueMultTerm); + Nbits = enlargeBitCountS(Nbits, value.alphaMultTerm); + } + if (value.hasAddTerms) { + Nbits = enlargeBitCountS(Nbits, value.redAddTerm); + Nbits = enlargeBitCountS(Nbits, value.greenAddTerm); + Nbits = enlargeBitCountS(Nbits, value.blueAddTerm); + Nbits = enlargeBitCountS(Nbits, value.alphaAddTerm); + } + writeUB(4, Nbits); + if (value.hasMultTerms) { + writeSB(Nbits, value.redMultTerm); + writeSB(Nbits, value.greenMultTerm); + writeSB(Nbits, value.blueMultTerm); + writeSB(Nbits, value.alphaMultTerm); + } + if (value.hasAddTerms) { + writeSB(Nbits, value.redAddTerm); + writeSB(Nbits, value.greenAddTerm); + writeSB(Nbits, value.blueAddTerm); + writeSB(Nbits, value.alphaAddTerm); + } + alignByte(); + } + + /** + * Writes CLIPEVENTFLAGS value to the stream + * + * @param value CLIPEVENTFLAGS value + * @throws IOException + */ + public void writeCLIPEVENTFLAGS(CLIPEVENTFLAGS value) throws IOException { + writeUB(1, value.clipEventKeyUp ? 1 : 0); + writeUB(1, value.clipEventKeyDown ? 1 : 0); + writeUB(1, value.clipEventMouseUp ? 1 : 0); + writeUB(1, value.clipEventMouseDown ? 1 : 0); + writeUB(1, value.clipEventMouseMove ? 1 : 0); + writeUB(1, value.clipEventUnload ? 1 : 0); + writeUB(1, value.clipEventEnterFrame ? 1 : 0); + writeUB(1, value.clipEventLoad ? 1 : 0); + writeUB(1, value.clipEventDragOver ? 1 : 0); + writeUB(1, value.clipEventRollOut ? 1 : 0); + writeUB(1, value.clipEventRollOver ? 1 : 0); + writeUB(1, value.clipEventReleaseOutside ? 1 : 0); + writeUB(1, value.clipEventRelease ? 1 : 0); + writeUB(1, value.clipEventPress ? 1 : 0); + writeUB(1, value.clipEventInitialize ? 1 : 0); + writeUB(1, value.clipEventData ? 1 : 0); + if (version >= 6) { + writeUB(5, 0); + writeUB(1, value.clipEventConstruct ? 1 : 0); + writeUB(1, value.clipEventKeyPress ? 1 : 0); + writeUB(1, value.clipEventDragOut ? 1 : 0); + writeUB(8, 0); + } + } + + /** + * Writes CLIPACTIONRECORD value to the stream + * + * @param value CLIPACTIONRECORD value + * @throws IOException + */ + public void writeCLIPACTIONRECORD(CLIPACTIONRECORD value) throws IOException { + writeCLIPEVENTFLAGS(value.eventFlags); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + SWFOutputStream sos = new SWFOutputStream(baos, version); + + if (value.eventFlags.clipEventKeyPress) { + sos.writeUI8(value.keyCode); + } + sos.write(Action.actionsToBytes(value.actions, true, version)); + sos.close(); + byte data[] = baos.toByteArray(); + writeUI32(data.length); //actionRecordSize + write(data); + } + + + /** + * Writes CLIPACTIONS value to the stream + * + * @param value CLIPACTIONS value + * @throws IOException + */ + public void writeCLIPACTIONS(CLIPACTIONS value) throws IOException { + writeUI16(0);//reserved + writeCLIPEVENTFLAGS(value.allEventFlags); + for (CLIPACTIONRECORD car : value.clipActionRecords) { + writeCLIPACTIONRECORD(car); + } + if (version <= 5) { + writeUI16(0); + } else { + writeUI32(0); + } + } + + /** + * Writes COLORMATRIXFILTER value to the stream + * + * @param value COLORMATRIXFILTER value + * @throws IOException + */ + public void writeCOLORMATRIXFILTER(COLORMATRIXFILTER value) throws IOException { + for (int i = 0; i < 20; i++) { + writeFLOAT(value.matrix[i]); + } + } + + /** + * Writes RGBA value to the stream + * + * @param value RGBA value + * @throws IOException + */ + public void writeRGBA(RGBA value) throws IOException { + writeUI8(value.red); + writeUI8(value.green); + writeUI8(value.blue); + writeUI8(value.alpha); + } + + /** + * Writes CONVOLUTIONFILTER value to the stream + * + * @param value CONVOLUTIONFILTER value + * @throws IOException + */ + public void writeCONVOLUTIONFILTER(CONVOLUTIONFILTER value) throws IOException { + writeUI8(value.matrixX); + writeUI8(value.matrixY); + writeFLOAT(value.divisor); + writeFLOAT(value.bias); + for (int x = 0; x < value.matrixX; x++) { + for (int y = 0; y < value.matrixY; y++) { + writeFLOAT(value.matrix[x][y]); + } + } + writeRGBA(value.defaultColor); + writeUB(6, 0); //reserved + writeUB(1, value.clamp ? 1 : 0); + writeUB(1, value.preserveAlpha ? 1 : 0); + } + + /** + * Writes BLURFILTER value to the stream + * + * @param value BLURFILTER value + * @throws IOException + */ + public void writeBLURFILTER(BLURFILTER value) throws IOException { + writeFIXED(value.blurX); + writeFIXED(value.blurY); + writeUB(5, value.passes); + writeUB(3, 0);//reserved + } + + /** + * Writes DROPSHADOWFILTER value to the stream + * + * @param value DROPSHADOWFILTER value + * @throws IOException + */ + public void writeDROPSHADOWFILTER(DROPSHADOWFILTER value) throws IOException { + writeRGBA(value.dropShadowColor); + writeFIXED(value.blurX); + writeFIXED(value.blurY); + writeFIXED(value.angle); + writeFIXED(value.distance); + writeFIXED8(value.strength); + writeUB(1, value.innerShadow ? 1 : 0); + writeUB(1, value.knockout ? 1 : 0); + writeUB(1, value.compositeSource ? 1 : 0); + writeUB(5, value.passes); + } + + /** + * Writes GLOWFILTER value to the stream + * + * @param value GLOWFILTER value + * @throws IOException + */ + public void writeGLOWFILTER(GLOWFILTER value) throws IOException { + writeRGBA(value.glowColor); + writeFIXED(value.blurX); + writeFIXED(value.blurY); + writeFIXED8(value.strength); + writeUB(1, value.innerGlow ? 1 : 0); + writeUB(1, value.knockout ? 1 : 0); + writeUB(1, value.compositeSource ? 1 : 0); + writeUB(5, value.passes); + } + + /** + * Writes BEVELFILTER value to the stream + * + * @param value BEVELFILTER value + * @throws IOException + */ + public void writeBEVELFILTER(BEVELFILTER value) throws IOException { + writeRGBA(value.shadowColor); + writeRGBA(value.highlightColor); + writeFIXED(value.blurX); + writeFIXED(value.blurY); + writeFIXED(value.angle); + writeFIXED(value.distance); + writeFIXED8(value.strength); + writeUB(1, value.innerShadow ? 1 : 0); + writeUB(1, value.knockout ? 1 : 0); + writeUB(1, value.compositeSource ? 1 : 0); + writeUB(1, value.onTop ? 1 : 0); + writeUB(4, value.passes); + } + + /** + * Writes GRADIENTGLOWFILTER value to the stream + * + * @param value GRADIENTGLOWFILTER value + * @throws IOException + */ + public void writeGRADIENTGLOWFILTER(GRADIENTGLOWFILTER value) throws IOException { + writeUI8(value.gradientColors.length); + for (int i = 0; i < value.gradientColors.length; i++) { + writeRGBA(value.gradientColors[i]); + } + for (int i = 0; i < value.gradientColors.length; i++) { + writeUI8(value.gradientRatio[i]); + } + writeFIXED(value.blurX); + writeFIXED(value.blurY); + writeFIXED(value.angle); + writeFIXED(value.distance); + writeFIXED8(value.strength); + writeUB(1, value.innerShadow ? 1 : 0); + writeUB(1, value.knockout ? 1 : 0); + writeUB(1, value.compositeSource ? 1 : 0); + writeUB(1, value.onTop ? 1 : 0); + writeUB(4, value.passes); + } + + /** + * Writes GRADIENTBEVELFILTER value to the stream + * + * @param value GRADIENTBEVELFILTER value + * @throws IOException + */ + public void writeGRADIENTBEVELFILTER(GRADIENTBEVELFILTER value) throws IOException { + writeUI8(value.gradientColors.length); + for (int i = 0; i < value.gradientColors.length; i++) { + writeRGBA(value.gradientColors[i]); + } + for (int i = 0; i < value.gradientColors.length; i++) { + writeUI8(value.gradientRatio[i]); + } + writeFIXED(value.blurX); + writeFIXED(value.blurY); + writeFIXED(value.angle); + writeFIXED(value.distance); + writeFIXED8(value.strength); + writeUB(1, value.innerShadow ? 1 : 0); + writeUB(1, value.knockout ? 1 : 0); + writeUB(1, value.compositeSource ? 1 : 0); + writeUB(1, value.onTop ? 1 : 0); + writeUB(4, value.passes); + } + + /** + * Writes list of FILTER values to the stream + * + * @param list List of FILTER values + * @throws IOException + */ + public void writeFILTERLIST(List list) throws IOException { + writeUI8(list.size()); + for (int i = 0; i < list.size(); i++) { + writeFILTER(list.get(i)); + } + } + + /** + * Writes FILTER value to the stream + * + * @param value FILTER value + * @throws IOException + */ + public void writeFILTER(FILTER value) throws IOException { + writeUI8(value.id); + switch (value.id) { + case 0: + writeDROPSHADOWFILTER((DROPSHADOWFILTER) value); + break; + case 1: + writeBLURFILTER((BLURFILTER) value); + break; + case 2: + writeGLOWFILTER((GLOWFILTER) value); + break; + case 3: + writeBEVELFILTER((BEVELFILTER) value); + break; + case 4: + writeGRADIENTGLOWFILTER((GRADIENTGLOWFILTER) value); + break; + case 5: + writeCONVOLUTIONFILTER((CONVOLUTIONFILTER) value); + break; + case 6: + writeCOLORMATRIXFILTER((COLORMATRIXFILTER) value); + break; + case 7: + writeGRADIENTBEVELFILTER((GRADIENTBEVELFILTER) value); + break; + } + } + + /** + * Writes list of BUTTONRECORD values to the stream + * + * @param list List of BUTTONRECORD values + * @param inDefineButton2 Whether write inside of DefineButton2Tag or not + * @throws IOException + */ + public void writeBUTTONRECORDList(List list, boolean inDefineButton2) throws IOException { + for (BUTTONRECORD brec : list) { + writeBUTTONRECORD(brec, inDefineButton2); + } + writeUI8(0); + } + + /** + * Writes BUTTONRECORD value to the stream + * + * @param value BUTTONRECORD value + * @param inDefineButton2 Whether write inside of DefineButton2Tag or not + * @throws IOException + */ + public void writeBUTTONRECORD(BUTTONRECORD value, boolean inDefineButton2) throws IOException { + writeUB(2, 0);//reserved + writeUB(1, value.buttonHasBlendMode ? 1 : 0); + writeUB(1, value.buttonHasFilterList ? 1 : 0); + writeUB(1, value.buttonStateHitTest ? 1 : 0); + writeUB(1, value.buttonStateDown ? 1 : 0); + writeUB(1, value.buttonStateOver ? 1 : 0); + writeUB(1, value.buttonStateUp ? 1 : 0); + writeUI16(value.characterId); + writeUI16(value.placeDepth); + writeMatrix(value.placeMatrix); + if (inDefineButton2) { + writeCXFORMWITHALPHA(value.colorTransform); + if (value.buttonHasFilterList) { + writeFILTERLIST(value.filterList); + } + if (value.buttonHasBlendMode) { + writeUI8(value.blendMode); + } + } + } + + /** + * Writes list of BUTTONCONDACTION values to the stream + * + * @param list List of BUTTONCONDACTION values + * @throws IOException + */ + public void writeBUTTONCONDACTIONList(List list) throws IOException { + for (int i = 0; i < list.size(); i++) { + writeBUTTONCONDACTION(list.get(i), i == list.size() - 1); + } + } + + /** + * Writes BUTTONCONDACTION value to the stream + * + * @param value BUTTONCONDACTION value + * @param isLast True if it is last on the list + * @throws IOException + */ + public void writeBUTTONCONDACTION(BUTTONCONDACTION value, boolean isLast) throws IOException { + BUTTONCONDACTION ret = new BUTTONCONDACTION(); + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + SWFOutputStream sos = new SWFOutputStream(baos, version); + sos.writeUB(1, value.condIdleToOverDown ? 1 : 0); + sos.writeUB(1, value.condOutDownToIdle ? 1 : 0); + sos.writeUB(1, value.condOutDownToOverDown ? 1 : 0); + sos.writeUB(1, value.condOverDownToOutDown ? 1 : 0); + sos.writeUB(1, value.condOverDownToOverUp ? 1 : 0); + sos.writeUB(1, value.condOverUpToOverDown ? 1 : 0); + sos.writeUB(1, value.condOverUpToIddle ? 1 : 0); + sos.writeUB(1, value.condIdleToOverUp ? 1 : 0); + sos.writeUB(7, value.condKeyPress); + sos.writeUB(1, value.condOverDownToIddle ? 1 : 0); + sos.write(Action.actionsToBytes(value.actions, true, version)); + sos.close(); + byte data[] = baos.toByteArray(); + if (isLast) { + writeUI16(0); + } else { + writeUI16(data.length + 2); + } + write(data); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/ABC.java b/trunk/src/com/jpexs/asdec/abc/ABC.java new file mode 100644 index 000000000..f6620ab68 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/ABC.java @@ -0,0 +1,728 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc; + +import com.jpexs.asdec.Main; +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.UnknownInstructionCode; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.InitPropertyTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.SetPropertyTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.*; +import com.jpexs.asdec.abc.types.traits.Trait; +import com.jpexs.asdec.abc.types.traits.TraitMethodGetterSetter; +import com.jpexs.asdec.abc.types.traits.TraitSlotConst; +import com.jpexs.asdec.helpers.Highlighting; + +import java.io.*; +import java.util.ArrayList; +import java.util.List; + + +public class ABC { + + public int major_version = 0; + public int minor_version = 0; + public ConstantPool constants; + public MethodInfo method_info[]; + public MetadataInfo metadata_info[]; + public InstanceInfo instance_info[]; + public ClassInfo class_info[]; + public ScriptInfo script_info[]; + public MethodBody bodies[]; + public long stringOffsets[]; + public static String IDENT_STRING = " "; + + public ABC(InputStream is) throws IOException { + + ABCInputStream ais = new ABCInputStream(is); + major_version = ais.readU16(); + minor_version = ais.readU16(); + constants = new ConstantPool(); + //constant integers + int constant_int_pool_count = ais.readU30(); + constants.constant_int = new long[constant_int_pool_count]; + for (int i = 1; i < constant_int_pool_count; i++) { //index 0 not used. Values 1..n-1 + constants.constant_int[i] = ais.readS32(); + } + + //constant unsigned integers + int constant_uint_pool_count = ais.readU30(); + constants.constant_uint = new long[constant_uint_pool_count]; + for (int i = 1; i < constant_uint_pool_count; i++) { //index 0 not used. Values 1..n-1 + constants.constant_uint[i] = ais.readU32(); + } + + //constant double + int constant_double_pool_count = ais.readU30(); + constants.constant_double = new double[constant_double_pool_count]; + for (int i = 1; i < constant_double_pool_count; i++) { //index 0 not used. Values 1..n-1 + constants.constant_double[i] = ais.readDouble(); + } + + //constant string + int constant_string_pool_count = ais.readU30(); + constants.constant_string = new String[constant_string_pool_count]; + stringOffsets = new long[constant_string_pool_count]; + constants.constant_string[0] = ""; + for (int i = 1; i < constant_string_pool_count; i++) { //index 0 not used. Values 1..n-1 + long pos = ais.getPosition(); + constants.constant_string[i] = ais.readString(); + stringOffsets[i] = pos; + /* + INVALID STRINGS + + String invalidStr=",,if,else,finally,while,int,switch,return,case,do,"; + if(invalidStr.contains(","+constants.constant_string[i]+",")){ + //constants.constant_string[i]="s"+i+"/"+constants.constant_string[i]; + }*/ + } + + //constant namespace + int constant_namespace_pool_count = ais.readU30(); + constants.constant_namespace = new Namespace[constant_namespace_pool_count]; + for (int i = 1; i < constant_namespace_pool_count; i++) { //index 0 not used. Values 1..n-1 + constants.constant_namespace[i] = ais.readNamespace(); + cleanOneName(constants.constant_namespace[i].name_index); + } + + //constant namespace set + int constant_namespace_set_pool_count = ais.readU30(); + constants.constant_namespace_set = new NamespaceSet[constant_namespace_set_pool_count]; + for (int i = 1; i < constant_namespace_set_pool_count; i++) { //index 0 not used. Values 1..n-1 + constants.constant_namespace_set[i] = new NamespaceSet(); + int namespace_count = ais.readU30(); + constants.constant_namespace_set[i].namespaces = new int[namespace_count]; + for (int j = 0; j < namespace_count; j++) { + constants.constant_namespace_set[i].namespaces[j] = ais.readU30(); + } + } + + + //constant multiname + int constant_multiname_pool_count = ais.readU30(); + constants.constant_multiname = new Multiname[constant_multiname_pool_count]; + for (int i = 1; i < constant_multiname_pool_count; i++) { //index 0 not used. Values 1..n-1 + constants.constant_multiname[i] = ais.readMultiname(); + cleanNamespace(constants.constant_multiname[i].name_index); + } + + + //method info + int methods_count = ais.readU30(); + method_info = new MethodInfo[methods_count]; + for (int i = 0; i < methods_count; i++) { //index 0 not used. Values 1..n-1 + method_info[i] = ais.readMethodInfo(); + } + + //metadata info + int metadata_count = ais.readU30(); + metadata_info = new MetadataInfo[metadata_count]; + for (int i = 0; i < metadata_count; i++) { //index 0 not used. Values 1..n-1 + int name_index = ais.readU30(); + int values_count = ais.readU30(); + int keys[] = new int[values_count]; + for (int v = 0; v < values_count; v++) { + keys[v] = ais.readU30(); + } + int values[] = new int[values_count]; + for (int v = 0; v < values_count; v++) { + values[v] = ais.readU30(); + } + metadata_info[i] = new MetadataInfo(name_index, keys, values); + } + + int class_count = ais.readU30(); + instance_info = new InstanceInfo[class_count]; + for (int i = 0; i < class_count; i++) { + instance_info[i] = ais.readInstanceInfo(); + } + class_info = new ClassInfo[class_count]; + for (int i = 0; i < class_count; i++) { + class_info[i] = new ClassInfo(); + class_info[i].cinit_index = ais.readU30(); + class_info[i].static_traits = ais.readTraits(); + } + int script_count = ais.readU30(); + script_info = new ScriptInfo[script_count]; + for (int i = 0; i < script_count; i++) { + script_info[i] = new ScriptInfo(); + script_info[i].init_index = ais.readU30(); + script_info[i].traits = ais.readTraits(); + } + + int bodies_count = ais.readU30(); + bodies = new MethodBody[bodies_count]; + for (int i = 0; i < bodies_count; i++) { + bodies[i] = new MethodBody(); + bodies[i].method_info = ais.readU30(); + bodies[i].max_stack = ais.readU30(); + bodies[i].max_regs = ais.readU30(); + bodies[i].scope_depth = ais.readU30(); + bodies[i].max_scope = ais.readU30(); + int code_length = ais.readU30(); + bodies[i].codeBytes = new byte[code_length]; + for (int j = 0; j < code_length; j++) { + bodies[i].codeBytes[j] = (byte) ais.read(); + } + try { + bodies[i].code = new AVM2Code(new ByteArrayInputStream(bodies[i].codeBytes)); + } catch (UnknownInstructionCode re) { + bodies[i].code = new AVM2Code(); + System.err.println(re.toString()); + } + int ex_count = ais.readU30(); + bodies[i].exceptions = new ABCException[ex_count]; + for (int j = 0; j < ex_count; j++) { + bodies[i].exceptions[j] = new ABCException(); + bodies[i].exceptions[j].start = ais.readU30(); + bodies[i].exceptions[j].end = ais.readU30(); + bodies[i].exceptions[j].target = ais.readU30(); + bodies[i].exceptions[j].type_index = ais.readU30(); + bodies[i].exceptions[j].name_index = ais.readU30(); + } + bodies[i].traits = ais.readTraits(); + /*try { + bodies[i].code.clearCode(constants, bodies[i]); + } catch (ConvertException ignored) { + } */ + } + } + + public void saveToStream(OutputStream os) throws IOException { + ABCOutputStream aos = new ABCOutputStream(os); + aos.writeU16(major_version); + aos.writeU16(minor_version); + + aos.writeU30(constants.constant_int.length); + for (int i = 1; i < constants.constant_int.length; i++) { + try { + aos.writeS32(constants.constant_int[i]); + } catch (NotSameException nex) { + System.out.println("written:" + constants.constant_int[i]); + throw nex; + } + } + aos.writeU30(constants.constant_uint.length); + for (int i = 1; i < constants.constant_uint.length; i++) { + aos.writeU32(constants.constant_uint[i]); + } + + aos.writeU30(constants.constant_double.length); + for (int i = 1; i < constants.constant_double.length; i++) { + aos.writeDouble(constants.constant_double[i]); + } + + aos.writeU30(constants.constant_string.length); + for (int i = 1; i < constants.constant_string.length; i++) { + aos.writeString(constants.constant_string[i]); + } + + aos.writeU30(constants.constant_namespace.length); + for (int i = 1; i < constants.constant_namespace.length; i++) { + aos.writeNamespace(constants.constant_namespace[i]); + } + + aos.writeU30(constants.constant_namespace_set.length); + for (int i = 1; i < constants.constant_namespace_set.length; i++) { + aos.writeU30(constants.constant_namespace_set[i].namespaces.length); + for (int j = 0; j < constants.constant_namespace_set[i].namespaces.length; j++) { + aos.writeU30(constants.constant_namespace_set[i].namespaces[j]); + } + } + + aos.writeU30(constants.constant_multiname.length); + for (int i = 1; i < constants.constant_multiname.length; i++) { + aos.writeMultiname(constants.constant_multiname[i]); + } + + aos.writeU30(method_info.length); + for (int i = 0; i < method_info.length; i++) { + aos.writeMethodInfo(method_info[i]); + } + + aos.writeU30(metadata_info.length); + for (int i = 0; i < metadata_info.length; i++) { + aos.writeU30(metadata_info[i].name_index); + aos.writeU30(metadata_info[i].values.length); + for (int j = 0; j < metadata_info[i].values.length; j++) { + aos.writeU30(metadata_info[i].keys[j]); + } + for (int j = 0; j < metadata_info[i].values.length; j++) { + aos.writeU30(metadata_info[i].values[j]); + } + } + + aos.writeU30(class_info.length); + for (int i = 0; i < instance_info.length; i++) { + aos.writeInstanceInfo(instance_info[i]); + } + for (int i = 0; i < class_info.length; i++) { + aos.writeU30(class_info[i].cinit_index); + aos.writeTraits(class_info[i].static_traits); + } + aos.writeU30(script_info.length); + for (int i = 0; i < script_info.length; i++) { + aos.writeU30(script_info[i].init_index); + aos.writeTraits(script_info[i].traits); + } + + aos.writeU30(bodies.length); + for (int i = 0; i < bodies.length; i++) { + aos.writeU30(bodies[i].method_info); + aos.writeU30(bodies[i].max_stack); + aos.writeU30(bodies[i].max_regs); + aos.writeU30(bodies[i].scope_depth); + aos.writeU30(bodies[i].max_scope); + byte codeBytes[] = bodies[i].code.getBytes(); + aos.writeU30(codeBytes.length); + try { + aos.write(codeBytes); + } catch (NotSameException ex) { + System.out.println(bodies[i].code.toString(constants)); + System.exit(0); + return; + } + aos.writeU30(bodies[i].exceptions.length); + for (int j = 0; j < bodies[i].exceptions.length; j++) { + aos.writeU30(bodies[i].exceptions[j].start); + aos.writeU30(bodies[i].exceptions[j].end); + aos.writeU30(bodies[i].exceptions[j].target); + aos.writeU30(bodies[i].exceptions[j].type_index); + aos.writeU30(bodies[i].exceptions[j].name_index); + } + aos.writeTraits(bodies[i].traits); + } + } + + private void parseImportFromMultiname(List imports, Multiname m) { + if (m != null) { + Namespace ns = m.getNamespace(constants); + String name = m.getName(constants); + if (ns != null) { + String newimport = ns.getName(constants); + if (!newimport.equals("")) { + newimport += "." + name; + if (newimport.contains(":")) { + return; + } + if (!imports.contains(newimport)) { + imports.add(newimport); + } + } + } + } + } + + private List getImports(int instanceIndex) { + List imports = new ArrayList(); + + //constructor + + //parseImportFromMultiname(imports, constants.constant_multiname[instance_info[instanceIndex].name_index]); + + if (instance_info[instanceIndex].super_index > 0) { + parseImportFromMultiname(imports, constants.constant_multiname[instance_info[instanceIndex].super_index]); + } + for (int i : instance_info[instanceIndex].interfaces) { + parseImportFromMultiname(imports, constants.constant_multiname[i]); + } + //static + for (Trait t : class_info[instanceIndex].static_traits.traits) { + //parseImportFromMultiname(imports, t.getMultiName(constants)); + if (t instanceof TraitMethodGetterSetter) { + TraitMethodGetterSetter tm = (TraitMethodGetterSetter) t; + if (tm.method_info != 0) { + MethodBody body = findBody(tm.method_info); + if (body != null) { + for (AVM2Instruction ins : body.code.code) { + for (int k = 0; k < ins.definition.operands.length; k++) { + if (ins.definition.operands[k] == AVM2Code.DAT_MULTINAME_INDEX) { + int multinameIndex = ins.operands[k]; + parseImportFromMultiname(imports, constants.constant_multiname[multinameIndex]); + } + } + } + } + for (int p = 0; p < method_info[tm.method_info].param_types.length; p++) { + if (method_info[tm.method_info].param_types[p] != 0) { + parseImportFromMultiname(imports, constants.constant_multiname[method_info[tm.method_info].param_types[p]]); + } + if (method_info[tm.method_info].ret_type != 0) { + parseImportFromMultiname(imports, constants.constant_multiname[method_info[tm.method_info].ret_type]); + } + } + } + } + + } + //instance + for (Trait t : instance_info[instanceIndex].instance_traits.traits) { + //parseImportFromMultiname(imports, t.getMultiName(constants)); + if (t instanceof TraitMethodGetterSetter) { + TraitMethodGetterSetter tm = (TraitMethodGetterSetter) t; + if (tm.method_info != 0) { + MethodBody body = findBody(tm.method_info); + if (body != null) { + for (AVM2Instruction ins : body.code.code) { + for (int k = 0; k < ins.definition.operands.length; k++) { + if (ins.definition.operands[k] == AVM2Code.DAT_MULTINAME_INDEX) { + int multinameIndex = ins.operands[k]; + parseImportFromMultiname(imports, constants.constant_multiname[multinameIndex]); + } + } + } + } + for (int p = 0; p < method_info[tm.method_info].param_types.length; p++) { + if (method_info[tm.method_info].param_types[p] != 0) { + parseImportFromMultiname(imports, constants.constant_multiname[method_info[tm.method_info].param_types[p]]); + } + if (method_info[tm.method_info].ret_type != 0) { + parseImportFromMultiname(imports, constants.constant_multiname[method_info[tm.method_info].ret_type]); + } + } + } + } + } + return imports; + } + + public MethodBody findBody(int methodInfo) { + int pos = findBodyIndex(methodInfo); + if (pos == -1) { + return null; + } else { + return bodies[pos]; + } + } + + public int findBodyIndex(int methodInfo) { + if (methodInfo == -1) { + return -1; + } + for (int b = 0; b < bodies.length; b++) { + if (bodies[b].method_info == methodInfo) { + return b; + } + } + return -1; + } + + public MethodBody findBodyByClassAndName(String className, String methodName) { + for (int i = 0; i < instance_info.length; i++) { + if (className.equals(constants.constant_multiname[instance_info[i].name_index].getName(constants))) { + for (Trait t : instance_info[i].instance_traits.traits) { + if (t instanceof TraitMethodGetterSetter) { + TraitMethodGetterSetter t2 = (TraitMethodGetterSetter) t; + if (methodName.equals(t2.getMethodName(constants))) { + for (MethodBody body : bodies) { + if (body.method_info == t2.method_info) { + return body; + } + } + } + } + } + //break; + } + } + for (int i = 0; i < class_info.length; i++) { + if (className.equals(constants.constant_multiname[instance_info[i].name_index].getName(constants))) { + for (Trait t : class_info[i].static_traits.traits) { + if (t instanceof TraitMethodGetterSetter) { + TraitMethodGetterSetter t2 = (TraitMethodGetterSetter) t; + if (methodName.equals(t2.getMethodName(constants))) { + for (MethodBody body : bodies) { + if (body.method_info == t2.method_info) { + return body; + } + } + } + } + } + //break; + } + } + + + return null; + } + + private String addTabs(String s, int tabs) { + String parts[] = s.split("\r\n"); + String ret = ""; + for (int i = 0; i < parts.length; i++) { + for (int t = 0; t < tabs; t++) { + ret += IDENT_STRING; + } + ret += parts[i]; + if (i < parts.length - 1) { + ret += "\r\n"; + } + } + return ret; + } + + public int findMethodIdByTraitId(int classIndex, int traitId) { + if (traitId < class_info[classIndex].static_traits.traits.length) { + if (class_info[classIndex].static_traits.traits[traitId] instanceof TraitMethodGetterSetter) { + return ((TraitMethodGetterSetter) class_info[classIndex].static_traits.traits[traitId]).method_info; + } else { + return -1; + } + } else if (traitId < class_info[classIndex].static_traits.traits.length + instance_info[classIndex].instance_traits.traits.length) { + traitId -= class_info[classIndex].static_traits.traits.length; + if (instance_info[classIndex].instance_traits.traits[traitId] instanceof TraitMethodGetterSetter) { + return ((TraitMethodGetterSetter) instance_info[classIndex].instance_traits.traits[traitId]).method_info; + } else { + return -1; + } + } else { + traitId -= class_info[classIndex].static_traits.traits.length + instance_info[classIndex].instance_traits.traits.length; + if (traitId == 0) { + return instance_info[classIndex].iinit_index; + } else if (traitId == 1) { + return class_info[classIndex].cinit_index; + } else { + return -1; + } + } + } + + public String classToString(int i, boolean highlight) { + String ret = ""; + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + PrintStream out = new PrintStream(baos); + String packageName = instance_info[i].getName(constants).getNamespace(constants).getName(constants); + out.println("package " + packageName); + out.println("{"); + + //imports + List imports = getImports(i); + for (String imp : imports) { + out.println(IDENT_STRING + "import " + imp + ";"); + } + out.println(); + + //class header + String classHeader = instance_info[i].getClassHeaderStr(constants); + if (classHeader.startsWith("private ")) + classHeader = "public " + classHeader.substring("private ".length()); + out.println(IDENT_STRING + classHeader); + out.println(IDENT_STRING + "{"); + + + if (class_info[i].cinit_index != 0) { + int bodyIndex = findBodyIndex(class_info[i].cinit_index); + List initializer = bodies[bodyIndex].code.toTree(true, i, this, constants, method_info, bodies[bodyIndex]); + for (TreeItem ti : initializer) { + if (ti instanceof SetPropertyTreeItem) { + int multinameIndex = ((SetPropertyTreeItem) ti).propertyName.multinameIndex; + TreeItem value = ((SetPropertyTreeItem) ti).value; + for (Trait t : class_info[i].static_traits.traits) { + if (t.name_index == multinameIndex) { + if (t instanceof TraitSlotConst) { + ((TraitSlotConst) t).assignedValue = value; + } + } + } + } + if (ti instanceof InitPropertyTreeItem) { + int multinameIndex = ((InitPropertyTreeItem) ti).propertyName.multinameIndex; + TreeItem value = ((InitPropertyTreeItem) ti).value; + for (Trait t : class_info[i].static_traits.traits) { + if (t.name_index == multinameIndex) { + if (t instanceof TraitSlotConst) { + ((TraitSlotConst) t).assignedValue = value; + } + } + } + } + } + /*String bodyStr = ""; + int bodyIndex = findBodyIndex(class_info[i].cinit_index); + if (bodyIndex != -1) { + bodyStr = addTabs(bodies[bodyIndex].toString(this, constants, method_info, hilight), 3); + } + if (!bodyStr.equals("")) { + String toPrint = IDENT_STRING + IDENT_STRING + "static {\r\n" + bodyStr + "\r\n" + IDENT_STRING + IDENT_STRING + "}"; + if (hilight) { + toPrint = Highlighting.hilighTrait(toPrint, class_info[i].static_traits.traits.length + instance_info[i].instance_traits.traits.length + 1); + } + out.println(toPrint); + }*/ + } + + //constructor + if (instance_info[i].iinit_index != 0) { + String modifier = ""; + Multiname m = constants.constant_multiname[instance_info[i].name_index]; + if (m != null) { + Namespace ns = m.getNamespace(constants); + if (ns != null) { + modifier = ns.getPrefix(constants) + " "; + if (modifier.equals(" ")) { + modifier = ""; + } + } + } + String constructorParams = method_info[instance_info[i].iinit_index].getParamStr(constants); + String bodyStr = ""; + int bodyIndex = findBodyIndex(instance_info[i].iinit_index); + if (bodyIndex != -1) { + bodyStr = addTabs(bodies[bodyIndex].toString(false, i, this, constants, method_info, highlight), 3); + } + String toPrint = IDENT_STRING + IDENT_STRING + modifier + "function " + constants.constant_multiname[instance_info[i].name_index].getName(constants) + "(" + constructorParams + ") {\r\n" + bodyStr + "\r\n" + IDENT_STRING + IDENT_STRING + "}"; + if (highlight) { + toPrint = Highlighting.hilighTrait(toPrint, class_info[i].static_traits.traits.length + instance_info[i].instance_traits.traits.length); + } + out.println(toPrint); + } + + //static variables,constants & methods + for (int ti = 0; ti < class_info[i].static_traits.traits.length; ti++) { + Trait t = class_info[i].static_traits.traits[ti]; + String toPrint = ""; + if (t instanceof TraitMethodGetterSetter) { + TraitMethodGetterSetter tm = (TraitMethodGetterSetter) t; + String bodyStr = ""; + int bodyIndex = findBodyIndex(tm.method_info); + if (bodyIndex != -1) { + bodyStr = addTabs(bodies[bodyIndex].toString(true, i, this, constants, method_info, highlight), 3); + } + toPrint = IDENT_STRING + IDENT_STRING + tm.convert(constants, method_info, true) + " {\r\n" + bodyStr + "\r\n" + IDENT_STRING + IDENT_STRING + "}"; + } + if (t instanceof TraitSlotConst) { + TraitSlotConst ts = (TraitSlotConst) t; + + toPrint = IDENT_STRING + IDENT_STRING + ts.convert(constants, method_info, true) + ";"; + } + if (highlight) { + toPrint = Highlighting.hilighTrait(toPrint, ti); + } else { + toPrint = Highlighting.stripHilights(toPrint); + } + out.println(toPrint); + } + for (int ti = 0; ti < instance_info[i].instance_traits.traits.length; ti++) { + Trait t = instance_info[i].instance_traits.traits[ti]; + String toPrint = ""; + if (t instanceof TraitSlotConst) { + TraitSlotConst ts = (TraitSlotConst) t; + toPrint = IDENT_STRING + IDENT_STRING + ts.convert(constants, method_info, false) + ";"; + } + + if (t instanceof TraitMethodGetterSetter) { + TraitMethodGetterSetter tm = (TraitMethodGetterSetter) t; + String bodyStr = ""; + int bodyIndex = findBodyIndex(tm.method_info); + if (bodyIndex != -1) { + bodyStr = addTabs(bodies[bodyIndex].toString(false, i, this, constants, method_info, highlight), 3); + } + toPrint = IDENT_STRING + IDENT_STRING + tm.convert(constants, method_info, false) + " {\r\n" + bodyStr + "\r\n" + IDENT_STRING + IDENT_STRING + "}"; + } + if (highlight) { + toPrint = Highlighting.hilighTrait(toPrint, class_info[i].static_traits.traits.length + ti); + } else { + toPrint = Highlighting.stripHilights(toPrint); + } + out.println(toPrint); + } + + + out.println(IDENT_STRING + "}");//class + out.println("}");//package + out.flush(); + + return baos.toString(); + } + + public void export(String directory) throws IOException { + for (int i = 0; i < instance_info.length; i++) { + String packageName = instance_info[i].getName(constants).getNamespace(constants).getName(constants); + String className = instance_info[i].getName(constants).getName(constants); + Main.startWork("Exporting " + (i + 1) + "/" + instance_info.length + " " + packageName + "." + className + "..."); + File outDir = new File(directory + File.separatorChar + packageName.replace('.', File.separatorChar)); + if (!outDir.exists()) { + outDir.mkdirs(); + } + String fileName = outDir.toString() + File.separator + className + ".as"; + FileOutputStream fos = new FileOutputStream(fileName); + fos.write(classToString(i, false).getBytes()); + fos.close(); + } + + } + + public void dump(OutputStream os) { + PrintStream output = new PrintStream(os); + constants.dump(output); + for (int i = 0; i < method_info.length; i++) { + output.println("MethodInfo[" + i + "]:" + method_info[i].toString(constants)); + } + for (int i = 0; i < metadata_info.length; i++) { + output.println("MetadataInfo[" + i + "]:" + metadata_info[i].toString(constants)); + } + for (int i = 0; i < instance_info.length; i++) { + output.println("InstanceInfo[" + i + "]:" + instance_info[i].toString(constants)); + } + for (int i = 0; i < class_info.length; i++) { + output.println("ClassInfo[" + i + "]:" + class_info[i].toString(constants)); + } + for (int i = 0; i < script_info.length; i++) { + output.println("ScriptInfo[" + i + "]:" + script_info[i].toString(constants)); + } + for (int i = 0; i < bodies.length; i++) { + output.println("MethodBody[" + i + "]:"); //+ bodies[i].toString(this, constants, method_info)); + } + } + + public static final String[] reservedWords = { + "as", "break", "case", "catch", "class", "const", "continue", /*"default",*/ "delete", "do", "each", "else", + "extends", "false", "finally", "for", "function", "if", "implements", "import", "in", "instanceof", + "interface", "internal", "is", "native", "new", "null", "package", "private", "protected", "public", + "return", "super", "switch", "this", "throw", "true", "try", "typeof", "use", "var", /*"void",*/ "while", + "with"}; + public int unknownCount = 0; + + public void cleanOneName(int index) { + cleanNamespace(index); + } + + public void cleanNamespace(int index) { + if (index <= 0) { + return; + } + String s = constants.constant_string[index]; + boolean isValid = true; + boolean isReserved = false; + for (String rw : reservedWords) { + if (rw.equals(s.trim())) { + isValid = false; + isReserved = true; + break; + } + } + if (isValid) { + for (int i = 0; i < s.length(); i++) { + if (s.charAt(i) > 127) { + isValid = false; + break; + } + } + } + + if (!isValid) { + if (isReserved) { + constants.constant_string[index] = "name_" + s.replace(" ", "_"); + } else { + unknownCount++; + constants.constant_string[index] = "_name" + unknownCount; + } + } + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/ABCInputStream.java b/trunk/src/com/jpexs/asdec/abc/ABCInputStream.java new file mode 100644 index 000000000..7b763fdc9 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/ABCInputStream.java @@ -0,0 +1,304 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc; + +import com.jpexs.asdec.abc.types.*; +import com.jpexs.asdec.abc.types.traits.*; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; + + +public class ABCInputStream extends InputStream { + + private InputStream is; + private long bytesRead = 0; + private ByteArrayOutputStream bufferOs = null; + + public void startBuffer() { + bufferOs = new ByteArrayOutputStream(); + } + + public byte[] stopBuffer() { + if (bufferOs == null) return new byte[0]; + byte ret[] = bufferOs.toByteArray(); + bufferOs = null; + return ret; + } + + public ABCInputStream(InputStream is) { + this.is = is; + } + + @Override + public int read() throws IOException { + bytesRead++; + int i = is.read(); + if (bufferOs != null) { + if (i != -1) + bufferOs.write(i); + } + return i; + } + + public int readU8() throws IOException { + return read(); + } + + public int readU32() throws IOException { + int i = 0; + int ret = 0; + int bytePos = 0; + int byteCount = 0; + boolean nextByte = false; + do { + i = read(); + nextByte = (i >> 7) == 1; + i = i & 0x7f; + ret = ret + (i << bytePos); + byteCount++; + bytePos += 7; + } while (nextByte); + return ret; + } + + public int readU30() throws IOException { + return readU32(); + } + + public int readS24() throws IOException { + int ret = (read()) + (read() << 8) + (read() << 16); + + if ((ret >> 23) == 1) { + ret = ret | 0xff000000; + } + + return ret; + } + + public int readU16() throws IOException { + return (read()) + (read() << 8); + } + + public long readS32() throws IOException { + int i = 0; + long ret = 0; + int bytePos = 0; + int byteCount = 0; + boolean nextByte = false; + do { + i = read(); + nextByte = (i >> 7) == 1; + i = i & 0x7f; + ret = ret + (i << bytePos); + byteCount++; + bytePos += 7; + if (bytePos == 35) { + if ((ret >> 31) == 1) + ret = -(ret & 0x7fffffff); + break; + } + } while (nextByte); + return ret; + } + + @Override + public int available() throws IOException { + return is.available(); + } + + + public final long readLong() throws IOException { + byte readBuffer[] = safeRead(8); + return (((long) readBuffer[7] << 56) + + ((long) (readBuffer[6] & 255) << 48) + + ((long) (readBuffer[5] & 255) << 40) + + ((long) (readBuffer[4] & 255) << 32) + + ((long) (readBuffer[3] & 255) << 24) + + ((readBuffer[2] & 255) << 16) + + ((readBuffer[1] & 255) << 8) + + ((readBuffer[0] & 255) << 0)); + } + + public double readDouble() throws IOException { + long el = readLong(); + double ret = Double.longBitsToDouble(el); + return ret; + } + + + private byte[] safeRead(int count) throws IOException { + byte ret[] = new byte[count]; + for (int i = 0; i < count; i++) { + ret[i] = (byte) read(); + } + return ret; + } + + public Namespace readNamespace() throws IOException { + int kind = read(); + int name_index = 0; + for (int k = 0; k < Namespace.nameSpaceKinds.length; k++) { + if (Namespace.nameSpaceKinds[k] == kind) { + name_index = readU30(); + break; + } + } + return new Namespace(kind, name_index); + } + + public Multiname readMultiname() throws IOException { + int kind = read(); + int namespace_index = -1; + int name_index = -1; + int namespace_set_index = -1; + + if ((kind == 7) || (kind == 0xd)) { // CONSTANT_QName and CONSTANT_QNameA. + namespace_index = readU30(); + name_index = readU30(); + } + if ((kind == 9) || (kind == 0xe)) { // CONSTANT_Multiname and CONSTANT_MultinameA. + name_index = readU30(); + namespace_set_index = readU30(); + } + if ((kind == 0xf) || (kind == 0x10)) { //CONSTANT_RTQName and CONSTANT_RTQNameA + name_index = readU30(); + } + if ((kind == 0x1B) || (kind == 0x1C)) { //CONSTANT_MultinameL and CONSTANT_MultinameLA + namespace_set_index = readU30(); + } + //kind==0x11,0x12 nothing CONSTANT_RTQNameL and CONSTANT_RTQNameLA. + return new Multiname(kind, name_index, namespace_index, namespace_set_index); + } + + public MethodInfo readMethodInfo() throws IOException { + int param_count = readU30(); + int ret_type = readU30(); + int param_types[] = new int[param_count]; + for (int i = 0; i < param_count; i++) { + param_types[i] = readU30(); + } + int name_index = readU30(); + int flags = read(); + + //// 1=need_arguments, 2=need_activation, 4=need_rest 8=has_optional (16=ignore_rest, 32=explicit,) 64=setsdxns, 128=has_paramnames + + ValueKind optional[] = new ValueKind[0]; + if ((flags & 8) == 8) { //if has_optional + int optional_count = readU30(); + optional = new ValueKind[optional_count]; + for (int i = 0; i < optional_count; i++) { + optional[i] = new ValueKind(readU30(), read()); + } + } + + int param_names[] = new int[param_count]; + if ((flags & 128) == 128) { //if has_paramnames + for (int i = 0; i < param_count; i++) { + param_names[i] = readU30(); + } + } + return new MethodInfo(param_types, ret_type, name_index, flags, optional, param_names); + } + + public Trait readTrait() throws IOException { + long pos = getPosition(); + startBuffer(); + int name_index = readU30(); + int kind = read(); + int kindType = 0xf & kind; + int kindFlags = kind >> 4; + Trait trait = new Trait(); + + switch (kindType) { + case 0: //slot + case 6: //const + TraitSlotConst t1 = new TraitSlotConst(); + t1.slot_id = readU30(); + t1.type_index = readU30(); + t1.value_index = readU30(); + if (t1.value_index != 0) + t1.value_kind = read(); + trait = t1; + break; + case 1: //method + case 2: //getter + case 3: //setter + TraitMethodGetterSetter t2 = new TraitMethodGetterSetter(); + t2.disp_id = readU30(); + t2.method_info = readU30(); + trait = t2; + break; + case 4: //class + TraitClass t3 = new TraitClass(); + t3.slot_id = readU30(); + t3.class_info = readU30(); + trait = t3; + break; + case 5: //function + TraitFunction t4 = new TraitFunction(); + t4.slot_index = readU30(); + t4.method_info = readU30(); + trait = t4; + break; + } + trait.fileOffset = pos; + trait.kindType = kindType; + trait.kindFlags = kindFlags; + trait.name_index = name_index; + if ((kindFlags & 4) == 4) { + int metadata_count = readU30(); + trait.metadata = new int[metadata_count]; + for (int i = 0; i < metadata_count; i++) { + trait.metadata[i] = readU30(); + } + } + trait.bytes = stopBuffer(); + return trait; + } + + public Traits readTraits() throws IOException { + int count = readU30(); + Traits traits = new Traits(); + traits.traits = new Trait[count]; + for (int i = 0; i < count; i++) { + traits.traits[i] = readTrait(); + } + return traits; + } + + public InstanceInfo readInstanceInfo() throws IOException { + InstanceInfo ret = new InstanceInfo(); + ret.name_index = readU30(); + ret.super_index = readU30(); + ret.flags = read(); + if ((ret.flags & 8) == 8) { + ret.protectedNS = readU30(); + } + int interfaces_count = readU30(); + ret.interfaces = new int[interfaces_count]; + for (int i = 0; i < interfaces_count; i++) { + ret.interfaces[i] = readU30(); + } + ret.iinit_index = readU30(); + ret.instance_traits = readTraits(); + return ret; + } + + public String readString() throws IOException { + int length = readU30(); + return new String(safeRead(length), "utf8"); + } + + + /*public void markStart(){ + bytesRead=0; + }*/ + + public long getPosition() { + return bytesRead; + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/ABCOutputStream.java b/trunk/src/com/jpexs/asdec/abc/ABCOutputStream.java new file mode 100644 index 000000000..68b10a350 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/ABCOutputStream.java @@ -0,0 +1,253 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc; + +import com.jpexs.asdec.abc.types.InstanceInfo; +import com.jpexs.asdec.abc.types.MethodInfo; +import com.jpexs.asdec.abc.types.Multiname; +import com.jpexs.asdec.abc.types.Namespace; +import com.jpexs.asdec.abc.types.traits.*; + +import java.io.IOException; +import java.io.OutputStream; + +public class ABCOutputStream extends OutputStream { + + private OutputStream os; + + public ABCOutputStream(OutputStream os) { + this.os = os; + } + + @Override + public void write(int b) throws IOException { + os.write(b); + } + + public void writeU30(long value) throws IOException { + writeS32(value); + /*boolean loop = true; + boolean underZero=value<0; + + if(underZero){ + value = value & 0xFFFFFFFF; + }else{ + value = value & 0x7FFFFFFF; + } + do { + int ret = (int) (value & 0x7F); + if (value < 0x80) { + loop = false; + } + if (value > 0x7F) { + ret += 0x80; + } + write(ret); + value = value >> 7; + } while (loop); +*/ + } + + public void writeU32(long value) throws IOException { + boolean loop = true; + value = value & 0xFFFFFFFF; + do { + int ret = (int) (value & 0x7F); + if (value < 0x80) { + loop = false; + } + if (value > 0x7F) { + ret += 0x80; + } + write(ret); + value = value >> 7; + } while (loop); + } + + public void writeS24(long value) throws IOException { + int ret = (int) (value & 0xff); + write(ret); + value = value >> 8; + ret = (int) (value & 0xff); + write(ret); + value = value >> 8; + ret = (int) (value & 0xff); + write(ret); + value = value >> 8; + } + + public void writeS32(long value) throws IOException { + boolean belowZero = value < 0; + /*if (belowZero) { + value = -value; + }*/ + int bitcount = 0; + boolean loop = true; + //value = value & 0xFFFFFFFF; + do { + bitcount += 7; + int ret = (int) (value & 0x7F); + if (value < 0x80) { + if (belowZero) { //&& bitcount < 35 + ret += 0x80; + } else { + loop = false; + } + } else { + ret += 0x80; + } + + if (bitcount == 35) { + ret = ret & 0xf; + } + write(ret); + if (bitcount == 35) { + break; + } + value = value >> 7; + } while (loop); + } + + public void writeLong(long value) throws IOException { + byte writeBuffer[] = new byte[8]; + writeBuffer[7] = (byte) (value >>> 56); + writeBuffer[6] = (byte) (value >>> 48); + writeBuffer[5] = (byte) (value >>> 40); + writeBuffer[4] = (byte) (value >>> 32); + writeBuffer[3] = (byte) (value >>> 24); + writeBuffer[2] = (byte) (value >>> 16); + writeBuffer[1] = (byte) (value >>> 8); + writeBuffer[0] = (byte) (value >>> 0); + write(writeBuffer); + } + + public void writeDouble(double value) throws IOException { + writeLong(Double.doubleToLongBits(value)); + } + + public void writeU8(int value) throws IOException { + write(value); + } + + public void writeU16(int value) throws IOException { + write(value & 0xff); + write((value >> 8) & 0xff); + } + + public void writeString(String s) throws IOException { + byte sbytes[] = s.getBytes("utf8"); + writeU30(sbytes.length); + write(sbytes); + } + + public void writeNamespace(Namespace ns) throws IOException { + write(ns.kind); + for (int k = 0; k < Namespace.nameSpaceKinds.length; k++) { + if (Namespace.nameSpaceKinds[k] == ns.kind) { + writeU30(ns.name_index); + break; + } + } + } + + public void writeMultiname(Multiname m) throws IOException { + write(m.kind); + if ((m.kind == 7) || (m.kind == 0xd)) { // CONSTANT_QName and CONSTANT_QNameA. + writeU30(m.namespace_index); + writeU30(m.name_index); + } + if ((m.kind == 9) || (m.kind == 0xe)) { // CONSTANT_Multiname and CONSTANT_MultinameA. + writeU30(m.name_index); + writeU30(m.namespace_set_index); + } + if ((m.kind == 0xf) || (m.kind == 0x10)) { //CONSTANT_RTQName and CONSTANT_RTQNameA + writeU30(m.name_index); + } + if ((m.kind == 0x1B) || (m.kind == 0x1C)) { //CONSTANT_MultinameL and CONSTANT_MultinameLA + writeU30(m.namespace_set_index); + } + //kind==0x11,0x12 nothing CONSTANT_RTQNameL and CONSTANT_RTQNameLA. + } + + public void writeMethodInfo(MethodInfo mi) throws IOException { + writeU30(mi.param_types.length); + writeU30(mi.ret_type); + for (int i = 0; i < mi.param_types.length; i++) { + writeU30(mi.param_types[i]); + } + writeU30(mi.name_index); + write(mi.flags); + if ((mi.flags & 8) == 8) { + writeU30(mi.optional.length); + for (int i = 0; i < mi.optional.length; i++) { + writeU30(mi.optional[i].value_index); + write(mi.optional[i].value_kind); + } + } + + if ((mi.flags & 128) == 128) { //if has_paramnames + for (int i = 0; i < mi.paramNames.length; i++) { + writeU30(mi.paramNames[i]); + } + } + } + + public void writeTrait(Trait t) throws IOException { + writeU30(t.name_index); + write((t.kindFlags << 4) + t.kindType); + if (t instanceof TraitSlotConst) { + TraitSlotConst t1 = (TraitSlotConst) t; + writeU30(t1.slot_id); + writeU30(t1.type_index); + writeU30(t1.value_index); + if (t1.value_index != 0) { + write(t1.value_kind); + } + } + if (t instanceof TraitMethodGetterSetter) { + TraitMethodGetterSetter t2 = (TraitMethodGetterSetter) t; + writeU30(t2.disp_id); + writeU30(t2.method_info); + } + if (t instanceof TraitClass) { + TraitClass t3 = (TraitClass) t; + writeU30(t3.slot_id); + writeU30(t3.class_info); + } + if (t instanceof TraitFunction) { + TraitFunction t4 = (TraitFunction) t; + writeU30(t4.slot_index); + writeU30(t4.method_info); + } + if ((t.kindFlags & 4) == 4) { + writeU30(t.metadata.length); + for (int i = 0; i < t.metadata.length; i++) { + writeU30(t.metadata[i]); + } + } + } + + public void writeTraits(Traits t) throws IOException { + writeU30(t.traits.length); + for (int i = 0; i < t.traits.length; i++) { + writeTrait(t.traits[i]); + } + } + + public void writeInstanceInfo(InstanceInfo ii) throws IOException { + writeU30(ii.name_index); + writeU30(ii.super_index); + write(ii.flags); + if ((ii.flags & 8) == 8) { + writeU30(ii.protectedNS); + } + writeU30(ii.interfaces.length); + for (int i = 0; i < ii.interfaces.length; i++) { + writeU30(ii.interfaces[i]); + } + writeU30(ii.iinit_index); + writeTraits(ii.instance_traits); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/CopyOutputStream.java b/trunk/src/com/jpexs/asdec/abc/CopyOutputStream.java new file mode 100644 index 000000000..9e5d1416b --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/CopyOutputStream.java @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; + +public class CopyOutputStream extends OutputStream { + private OutputStream os; + private InputStream is; + private long pos = 0; + private int TEMPSIZE = 5; + private int temp[] = new int[TEMPSIZE]; + private int tempPos = 0; + + public CopyOutputStream(OutputStream os, InputStream is) { + this.os = os; + this.is = is; + } + + @Override + public void write(int b) throws IOException { + temp[tempPos] = b; + tempPos = (tempPos + 1) % TEMPSIZE; + + pos++; + int r = is.read(); + if ((b & 0xff) != r) { + os.flush(); + + boolean output = false; + + if (output) { + System.out.print("Last written:"); + for (int i = 0; i < TEMPSIZE; i++) { + System.out.print("" + Integer.toHexString(temp[(tempPos + i) % TEMPSIZE]) + " "); + } + System.out.println(""); + System.out.println("More expected:"); + for (int i = 0; i < TEMPSIZE; i++) { + System.out.println("" + Integer.toHexString(is.read())); + } + + System.out.println(""); + System.out.println(Integer.toHexString(r) + " expected but " + Integer.toHexString(b) + " found"); + } + throw new NotSameException(pos); + } + os.write(b); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/NotSameException.java b/trunk/src/com/jpexs/asdec/abc/NotSameException.java new file mode 100644 index 000000000..568cd8791 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/NotSameException.java @@ -0,0 +1,12 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc; + + +public class NotSameException extends RuntimeException { + public NotSameException(long pos) { + super("Streams are not the same at pos:" + pos); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/AVM2Code.java b/trunk/src/com/jpexs/asdec/abc/avm2/AVM2Code.java new file mode 100644 index 000000000..dc1101aa7 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/AVM2Code.java @@ -0,0 +1,1681 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2; + +import com.jpexs.asdec.abc.ABC; +import com.jpexs.asdec.abc.ABCInputStream; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.IfTypeIns; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.instructions.SetTypeIns; +import com.jpexs.asdec.abc.avm2.instructions.arithmetic.*; +import com.jpexs.asdec.abc.avm2.instructions.bitwise.*; +import com.jpexs.asdec.abc.avm2.instructions.comparsion.*; +import com.jpexs.asdec.abc.avm2.instructions.construction.*; +import com.jpexs.asdec.abc.avm2.instructions.debug.DebugFileIns; +import com.jpexs.asdec.abc.avm2.instructions.debug.DebugIns; +import com.jpexs.asdec.abc.avm2.instructions.debug.DebugLineIns; +import com.jpexs.asdec.abc.avm2.instructions.executing.*; +import com.jpexs.asdec.abc.avm2.instructions.jumps.*; +import com.jpexs.asdec.abc.avm2.instructions.localregs.*; +import com.jpexs.asdec.abc.avm2.instructions.other.*; +import com.jpexs.asdec.abc.avm2.instructions.stack.*; +import com.jpexs.asdec.abc.avm2.instructions.types.*; +import com.jpexs.asdec.abc.avm2.instructions.xml.*; +import com.jpexs.asdec.abc.avm2.treemodel.*; +import com.jpexs.asdec.abc.avm2.treemodel.clauses.*; +import com.jpexs.asdec.abc.avm2.treemodel.operations.AndTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.OrTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.PreDecrementTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.PreIncrementTreeItem; +import com.jpexs.asdec.abc.types.ABCException; +import com.jpexs.asdec.abc.types.MethodBody; +import com.jpexs.asdec.abc.types.MethodInfo; +import com.jpexs.asdec.helpers.Helper; +import com.jpexs.asdec.helpers.Highlighting; + +import java.io.*; +import java.util.*; +import java.util.logging.Level; +import java.util.logging.Logger; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + + +public class AVM2Code { + + public List code = new LinkedList(); + public static final int OPT_U30 = 0x100; + public static final int OPT_U8 = 0x200; + public static final int OPT_S24 = 0x300; + public static final int OPT_CASE_OFFSETS = 0x400; + public static final int OPT_BYTE = 0x500; + public static final int DAT_MULTINAME_INDEX = OPT_U30 + 0x01; + public static final int DAT_ARG_COUNT = OPT_U30 + 0x02; + public static final int DAT_METHOD_INDEX = OPT_U30 + 0x03; + public static final int DAT_STRING_INDEX = OPT_U30 + 0x04; + public static final int DAT_DEBUG_TYPE = OPT_U8 + 0x05; + public static final int DAT_REGISTER_INDEX = OPT_U8 + 0x06; + public static final int DAT_LINENUM = OPT_U30 + 0x07; + public static final int DAT_LOCAL_REG_INDEX = OPT_U30 + 0x08; + public static final int DAT_SLOT_INDEX = OPT_U30 + 0x09; + public static final int DAT_SLOT_SCOPE_INDEX = OPT_U30 + 0x0A; + public static final int DAT_OFFSET = OPT_S24 + 0x0B; + public static final int DAT_EXCEPTION_INDEX = OPT_U30 + 0x0C; + public static final int DAT_CLASS_INDEX = OPT_U30 + 0x0D; + public static final int DAT_INT_INDEX = OPT_U30 + 0x0E; + public static final int DAT_UINT_INDEX = OPT_U30 + 0x0F; + public static final int DAT_DOUBLE_INDEX = OPT_U30 + 0x10; + public static final int DAT_CASE_BASEOFFSET = OPT_S24 + 0x11; + public static InstructionDefinition instructionSet[] = new InstructionDefinition[]{ + new AddIns(), + new AddIIns(), + new AsTypeIns(), + new AsTypeLateIns(), + new BitAndIns(), + new BitNotIns(), + new BitOrIns(), + new BitXorIns(), + new CallIns(), + new CallMethodIns(), + new CallPropertyIns(), + new CallPropLexIns(), + new CallPropVoidIns(), + new CallStaticIns(), + new CallSuperIns(), + new CallSuperVoidIns(), + new CheckFilterIns(), + new CoerceIns(), + new CoerceAIns(), + new CoerceSIns(), + new ConstructIns(), + new ConstructPropIns(), + new ConstructSuperIns(), + new ConvertBIns(), + new ConvertIIns(), + new ConvertDIns(), + new ConvertOIns(), + new ConvertUIns(), + new ConvertSIns(), + new DebugIns(), + new DebugFileIns(), + new DebugLineIns(), + new DecLocalIns(), + new DecLocalIIns(), + new DecrementIns(), + new DecrementIIns(), + new DeletePropertyIns(), + new DivideIns(), + new DupIns(), + new DXNSIns(), + new DXNSLateIns(), + new EqualsIns(), + new EscXAttrIns(), + new EscXElemIns(), + new FindPropertyIns(), + new FindPropertyStrictIns(), + new GetDescendantsIns(), + new GetGlobalScopeIns(), + new GetGlobalSlotIns(), + new GetLexIns(), + new GetLocalIns(), + new GetLocal0Ins(), + new GetLocal1Ins(), + new GetLocal2Ins(), + new GetLocal3Ins(), + new GetPropertyIns(), + new GetScopeObjectIns(), + new GetSlotIns(), + new GetSuperIns(), + new GreaterEqualsIns(), + new GreaterThanIns(), + new HasNextIns(), + new HasNext2Ins(), + new IfEqIns(), + new IfFalseIns(), + new IfGeIns(), + new IfGtIns(), + new IfLeIns(), + new IfLtIns(), + new IfNGeIns(), + new IfNGtIns(), + new IfNLeIns(), + new IfNLtIns(), + new IfNeIns(), + new IfStrictEqIns(), + new IfStrictNeIns(), + new IfTrueIns(), + new InIns(), + new IncLocalIns(), + new IncLocalIIns(), + new IncrementIns(), + new IncrementIIns(), + new InitPropertyIns(), + new InstanceOfIns(), + new IsTypeIns(), + new IsTypeLateIns(), + new JumpIns(), + new KillIns(), + new LabelIns(), + new LessEqualsIns(), + new LessThanIns(), + new LookupSwitchIns(), + new LShiftIns(), + new ModuloIns(), + new MultiplyIns(), + new MultiplyIIns(), + new NegateIns(), + new NegateIIns(), + new NewActivationIns(), + new NewArrayIns(), + new NewCatchIns(), + new NewClassIns(), + new NewFunctionIns(), + new NewObjectIns(), + new NextNameIns(), + new NextValueIns(), + new NopIns(), + new NotIns(), + new PopIns(), + new PopScopeIns(), + new PushByteIns(), + new PushDoubleIns(), + new PushFalseIns(), + new PushIntIns(), + new PushNamespaceIns(), + new PushNanIns(), + new PushNullIns(), + new PushScopeIns(), + new PushShortIns(), + new PushStringIns(), + new PushTrueIns(), + new PushUIntIns(), + new PushUndefinedIns(), + new PushWithIns(), + new ReturnValueIns(), + new ReturnVoidIns(), + new RShiftIns(), + new SetLocalIns(), + new SetLocal0Ins(), + new SetLocal1Ins(), + new SetLocal2Ins(), + new SetLocal3Ins(), + new SetGlobalSlotIns(), + new SetPropertyIns(), + new SetSlotIns(), + new SetSuperIns(), + new StrictEqualsIns(), + new SubtractIns(), + new SubtractIIns(), + new SwapIns(), + new ThrowIns(), + new TypeOfIns(), + new URShiftIns()}; + //endoflist + public static final String IDENTOPEN = "/*IDENTOPEN*/"; + public static final String IDENTCLOSE = "/*IDENTCLOSE*/"; + + private class ConvertOutput { + + public Stack stack; + public List output; + + public ConvertOutput(Stack stack, List output) { + this.stack = stack; + this.output = output; + } + } + + public AVM2Code() { + } + + public AVM2Code(InputStream is) throws IOException { + ABCInputStream ais = new ABCInputStream(is); + while (ais.available() > 0) { + long startOffset = ais.getPosition(); + ais.startBuffer(); + int instructionCode = ais.read(); + boolean known = false; + loopi: + for (int i = 0; i < instructionSet.length; i++) { + if (instructionSet[i].instructionCode == instructionCode) { + known = true; + int actualOperands[]; + if (instructionCode == 0x1b) { //switch + int firstOperand = ais.readS24(); + int case_count = ais.readU30(); + actualOperands = new int[case_count + 3]; + actualOperands[0] = firstOperand; + actualOperands[1] = case_count; + for (int c = 0; c < case_count + 1; c++) { + actualOperands[2 + c] = ais.readS24(); + } + } else { + actualOperands = new int[instructionSet[i].operands.length]; + for (int op = 0; op < instructionSet[i].operands.length; op++) { + switch (instructionSet[i].operands[op] & 0xff00) { + case OPT_U30: + actualOperands[op] = ais.readU30(); + break; + case OPT_U8: + actualOperands[op] = ais.read(); + break; + case OPT_BYTE: + actualOperands[op] = (byte) ais.read(); + break; + case OPT_S24: + actualOperands[op] = ais.readS24(); + break; + } + } + } + + code.add(new AVM2Instruction(startOffset, instructionSet[i], actualOperands, ais.stopBuffer())); + break loopi; + } + } + if (!known) { + throw new UnknownInstructionCode(instructionCode); + } + } + } + + public byte[] getBytes() { + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + try { + for (AVM2Instruction instruction : code) { + bos.write(instruction.getBytes()); + } + } catch (IOException ex) { + } + return bos.toByteArray(); + } + + @Override + public String toString() { + String s = ""; + for (AVM2Instruction instruction : code) { + s += instruction.toString() + "\r\n"; + } + return s; + } + + public String toString(ConstantPool constants) { + String s = ""; + int i = 0; + for (AVM2Instruction instruction : code) { + s += Helper.formatAddress(i) + " " + instruction.toString(constants) + "\r\n"; + i++; + } + return s; + } + + private static String popStack(Stack stack) { + for (int i = stack.size() - 1; i >= 0; i--) { + String s = stack.get(i); + if (!s.startsWith("//")) { + stack.remove(i); + return s; + } + } + return null; + } + + public String toASMSource(ConstantPool constants) { + String ret = ""; + List offsets = new ArrayList(); + for (AVM2Instruction ins : code) { + offsets.addAll(ins.getOffsets()); + } + long ofs = 0; + for (AVM2Instruction ins : code) { + if (offsets.contains(ofs)) { + ret += "ofs" + Helper.formatAddress(ofs) + ":"; + } + ret += ins.toStringNoAddress(constants) + "\n"; + ofs += ins.getBytes().length; + } + + return ret; + } + + public int adr2pos(long address) throws ConvertException { + int a = 0; + for (int i = 0; i < code.size(); i++) { + if (a == address) { + return i; + } + a += code.get(i).getBytes().length; + } + if (a == address) { + return code.size(); + } + throw new ConvertException("Bad jump", -1); + } + + public int pos2adr(int pos) { + int a = 0; + for (int i = 0; i < pos; i++) { + a += code.get(i).getBytes().length; + } + + return a; + } + + private static String listToString(List stack, ConstantPool constants) { + String ret = ""; + for (int d = 0; d < stack.size(); d++) { + TreeItem o = stack.get(d); + ret += o.toString(constants) + "\r\n"; + } + return ret; + } + + private static String innerStackToString(List stack) { + String ret = ""; + for (int d = 0; d < stack.size(); d++) { + Object o = stack.get(d); + ret += o.toString(); + if (d < stack.size() - 1) { + if (!ret.endsWith("\r\n")) { + ret += "\r\n"; + } + } + } + return ret; + } + + private class Loop { + + public int loopContinue; + public int loopBreak; + public int continueCount = 0; + public int breakCount = 0; + + public Loop(int loopContinue, int loopBreak) { + this.loopContinue = loopContinue; + this.loopBreak = loopBreak; + } + } + + private List loopList; + private List unknownJumps; + private List finallyJumps; + private List parsedExceptions; + + private String stripBrackets(String s) { + if (s.startsWith("(") && (s.endsWith(")"))) { + s = s.substring(1, s.length() - 1); + } + return s; + } + + private int checkCatches(ABC abc, ConstantPool constants, MethodInfo method_info[], Stack stack, Stack scopeStack, List output, MethodBody body, int ip) throws ConvertException { + /*int newip = ip; + loope: + for (int e = 0; e < body.exceptions.length; e++) { + if (pos2adr(ip) == body.exceptions[e].end) { + for (int f = 0; f < e; f++) { + if (body.exceptions[e].startServer == body.exceptions[f].startServer) { + if (body.exceptions[e].end == body.exceptions[f].end) { + continue loope; + } + } + } + output.add("}"); + if (!(code.get(ip).definition instanceof JumpIns)) { + throw new ConvertException("No jump to skip catches"); + } + int addrAfterCatches = pos2adr(ip + 1) + code.get(ip).operands[0]; + int posAfterCatches = adr2pos(addrAfterCatches); + for (int g = 0; g < body.exceptions.length; g++) { + if (body.exceptions[e].startServer == body.exceptions[g].startServer) { + if (body.exceptions[e].end == body.exceptions[g].end) { + if (body.exceptions[g].isFinally()) { + output.add("finally"); + } else { + output.add("catch(" + body.exceptions[g].getVarName(constants) + ":" + body.exceptions[g].getTypeName(constants) + ")"); + } + output.add("{"); + + if (body.exceptions[g].isFinally()) { + int jumppos = adr2pos(body.exceptions[g].target) - 1; + AVM2Instruction jumpIns = code.get(jumppos); + if (!(jumpIns.definition instanceof JumpIns)) { + throw new ConvertException("No jump in finally block"); + } + int nextAddr = pos2adr(jumppos + 1) + jumpIns.operands[0]; + int nextins = adr2pos(nextAddr); + int pos = nextins; + Integer uj = new Integer(nextins); + if (unknownJumps.contains(uj)) { + unknownJumps.remove(uj); + } + int endpos = 0; + do { + if (code.get(pos).definition instanceof LookupSwitchIns) { + if (code.get(pos).operands[0] == 0) { + if (adr2pos(pos2adr(pos) + code.get(pos).operands[2]) < pos) { + endpos = pos - 1; + newip = endpos + 1; + break; + } + } + } + pos++; + } while (pos < code.size()); + output.addAll(toSource(stack, scopeStack, abc, constants, method_info, body, nextins, endpos).output); + } else { + + int pos = adr2pos(body.exceptions[g].target); + int endpos = posAfterCatches - 1; + for (int p = pos; p < posAfterCatches; p++) { + if (code.get(p).definition instanceof JumpIns) { + int nextAddr = pos2adr(p + 1) + code.get(p).operands[0]; + int nextPos = adr2pos(nextAddr); + if (nextPos == posAfterCatches) { + endpos = p - 1; + break; + } + } + } + Stack cstack = new Stack(); + cstack.push("catched " + body.exceptions[g].getVarName(constants)); + List outcatch = toSource(cstack, new Stack(), abc, constants, method_info, body, pos, endpos).output; + output.addAll(outcatch); + newip = endpos + 1; + } + output.add("}"); + } + } + } + } + } + return newip;*/ + return ip; + } + + boolean isCatched = false; + + private boolean isKilled(int regName, int start, int end) { + for (int k = start; k <= end; k++) { + if (code.get(k).definition instanceof KillIns) { + if (code.get(k).operands[0] == regName) { + return true; + } + } + } + return false; + } + + private int toSourceCount = 0; + + private ConvertOutput toSource(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, Stack scopeStack, ABC abc, ConstantPool constants, MethodInfo method_info[], MethodBody body, int start, int end) throws ConvertException { + boolean debugMode = false; + if (debugMode) + System.out.println("OPEN SubSource:" + start + "-" + end + " " + code.get(start).toString() + " to " + code.get(end).toString()); + //if(true) return ""; + toSourceCount++; + if (toSourceCount > 255) { + throw new ConvertException("StackOverflow", start); + } + List output = new ArrayList(); + String ret = ""; + int ip = start; + try { + int addr; + iploop: + while (ip <= end) { + + addr = pos2adr(ip); + int maxend = -1; + List catchedExceptions = new ArrayList(); + for (int e = 0; e < body.exceptions.length; e++) { + if (addr == body.exceptions[e].start) { + if (!body.exceptions[e].isFinally()) { + if ((body.exceptions[e].end > maxend) && (!parsedExceptions.contains(body.exceptions[e]))) { + catchedExceptions.clear(); + maxend = body.exceptions[e].end; + catchedExceptions.add(body.exceptions[e]); + } else if (body.exceptions[e].end == maxend) { + catchedExceptions.add(body.exceptions[e]); + } + } + } + } + if (catchedExceptions.size() > 0) { + parsedExceptions.addAll(catchedExceptions); + int endpos = adr2pos(catchedExceptions.get(0).end); + + + List> catchedCommands = new ArrayList>(); + if (code.get(endpos).definition instanceof JumpIns) { + int afterCatchAddr = pos2adr(endpos + 1) + code.get(endpos).operands[0]; + int afterCatchPos = adr2pos(afterCatchAddr); + Collections.sort(catchedExceptions, new Comparator() { + + public int compare(ABCException o1, ABCException o2) { + return o1.target - o2.target; + } + }); + + + List finallyCommands = new ArrayList(); + int returnPos = afterCatchPos; + for (int e = 0; e < body.exceptions.length; e++) { + if (body.exceptions[e].isFinally()) { + if (addr == body.exceptions[e].start) { + if (afterCatchPos + 1 == adr2pos(body.exceptions[e].end)) { + AVM2Instruction jmpIns = code.get(adr2pos(body.exceptions[e].end)); + if (jmpIns.definition instanceof JumpIns) { + int finStart = adr2pos(body.exceptions[e].end + jmpIns.getBytes().length + jmpIns.operands[0]); + finallyJumps.add(finStart); + if (unknownJumps.contains(finStart)) { + unknownJumps.remove((Integer) finStart); + } + for (int f = finStart; f <= end; f++) { + if (code.get(f).definition instanceof LookupSwitchIns) { + AVM2Instruction swins = code.get(f); + if (swins.operands.length >= 3) { + if (swins.operands[0] == swins.getBytes().length) { + if (adr2pos(pos2adr(f) + swins.operands[2]) < finStart) { + finallyCommands = toSource(isStatic, classIndex, localRegs, stack, scopeStack, abc, constants, method_info, body, finStart, f - 1).output; + returnPos = f + 1; + break; + } + } + } + } + } + + break; + } + } + } + } + } + + for (int e = 0; e < catchedExceptions.size(); e++) { + int eendpos = 0; + if (e < catchedExceptions.size() - 1) { + eendpos = adr2pos(catchedExceptions.get(e + 1).target) - 2; + } else { + eendpos = afterCatchPos - 1; + } + Stack substack = new Stack(); + substack.add(new ExceptionTreeItem(catchedExceptions.get(e))); + catchedCommands.add(toSource(isStatic, classIndex, localRegs, substack, new Stack(), abc, constants, method_info, body, adr2pos(catchedExceptions.get(e).target), eendpos).output); + } + + List tryCommands = toSource(isStatic, classIndex, localRegs, stack, scopeStack, abc, constants, method_info, body, ip, endpos - 1).output; + + + output.add(new TryTreeItem(tryCommands, catchedExceptions, catchedCommands, finallyCommands)); + ip = returnPos; + addr = pos2adr(ip); + } + + } + + if (ip > end) + break; + + if (unknownJumps.contains(ip)) { + unknownJumps.remove(new Integer(ip)); + throw new UnknownJumpException(stack, ip, output); + } + AVM2Instruction ins = code.get(ip); + //Ify s vice podminkama + if (ins.definition instanceof JumpIns) { + if (ins.operands[0] == 0) { + ip++; + addr = pos2adr(ip); + } else if (ins.operands[0] > 0) { + int secondAddr = addr + ins.getBytes().length; + int jumpAddr = secondAddr + ins.operands[0]; + int jumpPos = adr2pos(jumpAddr);// + + if (finallyJumps.contains(jumpPos)) { + if (code.get(ip + 1).definition instanceof LabelIns) { + if (code.get(ip + 2).definition instanceof PopIns) { + if (code.get(ip + 3).definition instanceof LabelIns) { + if (code.get(ip + 4).definition instanceof GetLocalTypeIns) { + if (code.get(ip - 1).definition instanceof PushByteIns) { + if (code.get(ip - 2).definition instanceof SetLocalTypeIns) { + if (((SetLocalTypeIns) code.get(ip - 2).definition).getRegisterId(code.get(ip - 2)) == ((GetLocalTypeIns) code.get(ip + 4).definition).getRegisterId(code.get(ip + 4))) { + SetLocalTreeItem ti = (SetLocalTreeItem) output.remove(output.size() - 1); + stack.add(ti.value); + ip = ip + 5; + continue; + } + } + } + } + } + } + } + //continue; + ip++; + continue; + } + for (Loop l : loopList) { + if (l.loopBreak == jumpPos) { + output.add(new BreakTreeItem(ins, l.loopBreak)); + addr = secondAddr; + ip = ip + 1; + continue iploop; + } + if (l.loopContinue == jumpPos) { + l.continueCount++; + output.add(new ContinueTreeItem(ins, l.loopBreak)); + addr = secondAddr; + ip = ip + 1; + continue iploop; + } + } + + + boolean backJumpFound = false; + int afterBackJumpAddr = 0; + AVM2Instruction backJumpIns = null; + boolean isSwitch = false; + int switchPos = 0; + loopj: + for (int j = jumpPos; j <= end; j++) { + if (code.get(j).definition instanceof IfTypeIns) { + afterBackJumpAddr = pos2adr(j + 1); + + if (afterBackJumpAddr + code.get(j).operands[0] == secondAddr) { + backJumpFound = true; + backJumpIns = code.get(j); + break; + } + } + if (code.get(j).definition instanceof LookupSwitchIns) { + for (int h = 2; h < code.get(j).operands.length; h++) { + int ofs = code.get(j).operands[h] + pos2adr(j); + if (ofs == secondAddr) { + isSwitch = true; + switchPos = j; + break loopj; + } + } + } + } + if (isSwitch) { + AVM2Instruction killIns = code.get(switchPos - 1); + if (!(killIns.definition instanceof KillIns)) { + throw new ConvertException("Unknown pattern: no kill before lookupswitch", switchPos - 1); + } + int userReg = killIns.operands[0]; + int evalTo = -1; + for (int g = jumpPos; g < switchPos; g++) { + if ((code.get(g).definition instanceof SetLocal0Ins) && (userReg == 0)) { + evalTo = g; + break; + } else if ((code.get(g).definition instanceof SetLocal1Ins) && (userReg == 1)) { + evalTo = g; + break; + } else if ((code.get(g).definition instanceof SetLocal2Ins) && (userReg == 2)) { + evalTo = g; + break; + } else if ((code.get(g).definition instanceof SetLocal3Ins) && (userReg == 3)) { + evalTo = g; + break; + } + if ((code.get(g).definition instanceof SetLocalIns) && (userReg == code.get(g).operands[0])) { + evalTo = g; + break; + } + } + if (evalTo == -1) { + throw new ConvertException("Unknown pattern: no setlocal before lookupswitch", switchPos); + } + loopList.add(new Loop(ip, switchPos + 1)); + Stack substack = toSource(isStatic, classIndex, localRegs, new Stack(), scopeStack, abc, constants, method_info, body, jumpPos, evalTo - 1).stack; + TreeItem switchedValue = substack.pop(); + //output.add("loop" + (switchPos + 1) + ":"); + int switchBreak = switchPos + 1; + List casesList = new ArrayList(); + List> caseCommands = new ArrayList>(); + List defaultCommands = new ArrayList(); + //output.add("switch(" + switchedValue + ")"); + //output.add("{"); + int curPos = evalTo + 1; + int casePos = 0; + do { + evalTo = -1; + for (int g = curPos; g < switchPos; g++) { + if ((code.get(g).definition instanceof GetLocal0Ins) && (userReg == 0)) { + evalTo = g; + break; + } else if ((code.get(g).definition instanceof GetLocal1Ins) && (userReg == 1)) { + evalTo = g; + break; + } else if ((code.get(g).definition instanceof GetLocal2Ins) && (userReg == 2)) { + evalTo = g; + break; + } else if ((code.get(g).definition instanceof GetLocal3Ins) && (userReg == 3)) { + evalTo = g; + break; + } + if ((code.get(g).definition instanceof GetLocalIns) && (userReg == code.get(g).operands[0])) { + evalTo = g; + break; + } + } + + + if (evalTo > -1) { + substack = toSource(isStatic, classIndex, localRegs, new Stack(), scopeStack, abc, constants, method_info, body, curPos, evalTo - 1).stack; + casesList.add(substack.pop()); + } + int substart = adr2pos(code.get(switchPos).operands[2 + casePos] + pos2adr(switchPos)); + int subend = jumpPos - 1; + if (casePos + 1 < code.get(switchPos).operands.length - 2) { + subend = adr2pos(code.get(switchPos).operands[2 + casePos + 1] + pos2adr(switchPos)) - 1; + } + + if (evalTo == -1) + subend--; + List commands = toSource(isStatic, classIndex, localRegs, new Stack(), scopeStack, abc, constants, method_info, body, substart, subend).output; + if ((evalTo == -1) && (casePos < code.get(switchPos).operands.length - 2)) { + if (commands.size() == 1) { + commands.remove(0); + } + if (commands.size() > 0) { + //hasDefault=true; + } + } + List caseCommandPart = new ArrayList(); + if (evalTo == -1) { + defaultCommands.addAll(commands); + } else { + caseCommandPart.addAll(commands); + caseCommands.add(caseCommandPart); + } + curPos = evalTo + 4; + casePos++; + if (evalTo == -1) { + break; + } + } while (true); + output.add(new SwitchTreeItem(code.get(switchPos), switchBreak, switchedValue, casesList, caseCommands, defaultCommands)); + ip = switchPos + 1; + addr = pos2adr(ip); + continue; + } + + if (!backJumpFound) { + if (jumpPos <= end + 1) { //probably skipping catch + ip = jumpPos; + addr = pos2adr(ip); + continue; + } + output.add(new ContinueTreeItem(ins, jumpPos, false)); + addr = secondAddr; + ip = ip + 1; + if (!unknownJumps.contains(jumpPos)) { + unknownJumps.add(jumpPos); + } + continue; + //throw new ConvertException("Unknown pattern: forjump with no backjump"); + } + Loop currentLoop = new Loop(jumpPos, adr2pos(afterBackJumpAddr)); + loopList.add(currentLoop); + + + ConvertOutput co = toSource(isStatic, classIndex, localRegs, new Stack(), scopeStack, abc, constants, method_info, body, jumpPos, adr2pos(afterBackJumpAddr) - 2); + Stack substack = co.stack; + backJumpIns.definition.translate(isStatic, classIndex, localRegs, substack, scopeStack, constants, backJumpIns, method_info, output, body, abc); + + TreeItem expression = substack.pop(); + List subins = new ArrayList(); + boolean isFor = false; + List finalExpression = new ArrayList(); + try { + subins = toSource(isStatic, classIndex, localRegs, new Stack(), scopeStack, abc, constants, method_info, body, adr2pos(secondAddr) + 1/*label*/, jumpPos - 1).output; + } catch (UnknownJumpException uje) { + if ((uje.ip >= start) && (uje.ip <= end)) { + currentLoop.loopContinue = uje.ip; + subins = uje.output; + + List contList = new ArrayList(); + for (TreeItem ti : subins) { + if (ti instanceof ContinueTreeItem) { + contList.add((ContinueTreeItem) ti); + } + if (ti instanceof Block) { + contList.addAll(((Block) ti).getContinues()); + } + } + for (int u = 0; u < contList.size(); u++) { + if (contList.get(u) instanceof ContinueTreeItem) { + if (((ContinueTreeItem) contList.get(u)).loopPos == uje.ip) { + if (!((ContinueTreeItem) contList.get(u)).isKnown) { + ((ContinueTreeItem) contList.get(u)).isKnown = true; + ((ContinueTreeItem) contList.get(u)).loopPos = currentLoop.loopBreak; + } + } + } + } + finalExpression = toSource(isStatic, classIndex, localRegs, new Stack(), scopeStack, abc, constants, method_info, body, uje.ip, jumpPos - 1).output; + isFor = true; + } else { + throw new ConvertException("Unknown pattern: jump to nowhere", ip); + } + } + boolean isDoWhile = false; + + if (jumpPos == ip + 2) { + if (code.get(ip + 1).definition instanceof LabelIns) { + isDoWhile = true; + } + } + if (!isDoWhile) { + if (!isFor) { + for (Loop l : loopList) { + if (l.loopContinue == jumpPos) { + if (l.continueCount == 0) { + //isFor = true; + //finalExpression = subins.remove(subins.size() - 1).toString(); + } + break; + } + } + } + } + + String firstIns = ""; + if (isFor) { + if (output.size() > 0) { + //firstIns = output.remove(output.size() - 1).toString(); + } + } + + List loopBody = new ArrayList(); + loopBody.addAll(co.output); + loopBody.addAll(subins); + + if (isFor) { + output.add(new ForTreeItem(ins, currentLoop.loopBreak, currentLoop.loopContinue, new ArrayList(), expression, finalExpression, loopBody)); + } else if (isDoWhile) { + output.add(new DoWhileTreeItem(ins, currentLoop.loopBreak, currentLoop.loopContinue, loopBody, expression)); + } else { + if (expression instanceof EachTreeItem) { + output.add(new ForEachTreeItem(ins, currentLoop.loopBreak, currentLoop.loopContinue, (EachTreeItem) expression, loopBody)); + } else { + output.add(new WhileTreeItem(ins, currentLoop.loopBreak, currentLoop.loopContinue, expression, loopBody)); + } + } + addr = afterBackJumpAddr; + ip = adr2pos(addr); + } else { + throw new ConvertException("Unknown pattern: back jump ", ip); + } + } else if (ins.definition instanceof DupIns) { + int nextPos = 0; + do { + AVM2Instruction insAfter = code.get(ip + 1); + AVM2Instruction insBefore = ins; + if (ip - 1 >= start) { + insBefore = code.get(ip - 1); + } + boolean isAnd = false; + if (insAfter.definition instanceof IfFalseIns) { + //stack.add("(" + stack.pop() + ")&&"); + isAnd = true; + } else if (insAfter.definition instanceof IfTrueIns) { + //stack.add("(" + stack.pop() + ")||"); + isAnd = false; + } else if ((insAfter.definition instanceof IncrementIIns) || ((insAfter.definition instanceof IncrementIns))) { + if (((ip - 1 >= start) && (ip + 2 <= end)) && ((code.get(ip + 2).definition instanceof SetLocalTypeIns) && (code.get(ip - 1).definition instanceof GetLocalTypeIns))) { + stack.add(new PostIncrementTreeItem(insAfter, stack.pop())); + ip += 3; + addr = pos2adr(ip); + break; + } + if (((ip - 1 >= start) && (ip + 2 <= end)) + && (code.get(ip + 2).definition instanceof SetLocalTypeIns) + && (isKilled(((SetLocalTypeIns) code.get(ip + 2).definition).getRegisterId(code.get(ip + 2)), ip + 3, end))) { + int pos = -1; + for (int d = ip + 3; d <= end; d++) { + if (!((code.get(d).definition instanceof GetLocalTypeIns) + && (isKilled(((GetLocalTypeIns) code.get(d).definition).getRegisterId(code.get(d)), d + 1, end)))) { + pos = d; + break; + } + } + if (pos > -1) { + if (code.get(pos).definition instanceof SetTypeIns) { + stack.push(new PostIncrementTreeItem(insAfter, stack.pop())); + ip = pos + 1; + addr = pos2adr(ip); + break; + } + } + + } + ins.definition.translate(isStatic, classIndex, localRegs, stack, scopeStack, constants, ins, method_info, output, body, abc); + ip++; + addr = pos2adr(ip); + break; + } else if ((insAfter.definition instanceof DecrementIIns) || ((insAfter.definition instanceof DecrementIns))) { + if (((ip - 1 >= start) && (ip + 2 <= end)) && ((code.get(ip + 2).definition instanceof SetLocalTypeIns) && (code.get(ip - 1).definition instanceof GetLocalTypeIns))) { + stack.add(new PostDecrementTreeItem(insAfter, stack.pop())); + ip += 3; + addr = pos2adr(ip); + break; + } + if (((ip - 1 >= start) && (ip + 2 <= end)) + && (code.get(ip + 2).definition instanceof SetLocalTypeIns) + && (isKilled(((SetLocalTypeIns) code.get(ip + 2).definition).getRegisterId(code.get(ip + 2)), ip + 3, end))) { + int pos = -1; + for (int d = ip + 3; d <= end; d++) { + if (!((code.get(d).definition instanceof GetLocalTypeIns) + && (isKilled(((GetLocalTypeIns) code.get(d).definition).getRegisterId(code.get(d)), d + 1, end)))) { + pos = d; + break; + } + } + if (pos > -1) { + if (code.get(pos).definition instanceof SetTypeIns) { + stack.push(new PostDecrementTreeItem(insAfter, stack.pop())); + ip = pos + 1; + addr = pos2adr(ip); + break; + } + } + + } + ins.definition.translate(isStatic, classIndex, localRegs, stack, scopeStack, constants, ins, method_info, output, body, abc); + ip++; + addr = pos2adr(ip); + break; + } else if ((insBefore.definition instanceof IncrementIIns) || ((insBefore.definition instanceof IncrementIns))) { + if (((ip - 2 >= start) && (ip + 2 <= end)) && (code.get(ip + 1).definition instanceof ConvertIIns) && (code.get(ip + 2).definition instanceof SetLocalTypeIns) && (code.get(ip - 2).definition instanceof GetLocalTypeIns)) { + stack.pop(); + int regId = ((SetLocalTypeIns) code.get(ip + 2).definition).getRegisterId(code.get(ip + 2)); + stack.add(new PreIncrementTreeItem(insBefore, new LocalRegTreeItem(code.get(ip + 2), regId, localRegs.get(regId)))); + ip += 3; + addr = pos2adr(ip); + break; + } + if (((ip - 1 >= start) && (ip + 2 <= end)) + && (code.get(ip + 1).definition instanceof SetLocalTypeIns) + && (isKilled(((SetLocalTypeIns) code.get(ip + 1).definition).getRegisterId(code.get(ip + 1)), ip + 2, end))) { + int pos = -1; + for (int d = ip + 2; d <= end; d++) { + if (!((code.get(d).definition instanceof GetLocalTypeIns) + && (isKilled(((GetLocalTypeIns) code.get(d).definition).getRegisterId(code.get(d)), d + 1, end)))) { + pos = d; + break; + } + } + if (pos > -1) { + if (code.get(pos).definition instanceof SetTypeIns) { + TreeItem s = stack.pop(); + if (s instanceof IncrementTreeItem) { + stack.push(new PreIncrementTreeItem(insBefore, ((IncrementTreeItem) s).object)); + } + ip = pos + 1; + addr = pos2adr(ip); + break; + } + } + + } + ins.definition.translate(isStatic, classIndex, localRegs, stack, scopeStack, constants, ins, method_info, output, body, abc); + ip++; + addr = pos2adr(ip); + break; + } else if ((insBefore.definition instanceof DecrementIIns) || ((insBefore.definition instanceof DecrementIns))) { + if (((ip - 2 >= start) && (ip + 2 <= end)) && (code.get(ip + 1).definition instanceof ConvertIIns) && (code.get(ip + 2).definition instanceof SetLocalTypeIns) && (code.get(ip - 2).definition instanceof GetLocalTypeIns)) { + stack.pop(); + int regId = ((SetLocalTypeIns) code.get(ip + 2).definition).getRegisterId(code.get(ip + 2)); + stack.add(new PreDecrementTreeItem(insBefore, new LocalRegTreeItem(code.get(ip + 2), regId, localRegs.get(regId)))); + ip += 3; + addr = pos2adr(ip); + break; + } + if (((ip - 1 >= start) && (ip + 2 <= end)) + && (code.get(ip + 1).definition instanceof SetLocalTypeIns) + && (isKilled(((SetLocalTypeIns) code.get(ip + 1).definition).getRegisterId(code.get(ip + 1)), ip + 2, end))) { + int pos = -1; + for (int d = ip + 2; d <= end; d++) { + if (!((code.get(d).definition instanceof GetLocalTypeIns) + && (isKilled(((GetLocalTypeIns) code.get(d).definition).getRegisterId(code.get(d)), d + 1, end)))) { + pos = d; + break; + } + } + if (pos > -1) { + if (code.get(pos).definition instanceof SetTypeIns) { + TreeItem s = stack.pop(); + if (s instanceof DecrementTreeItem) { + stack.push(new PreDecrementTreeItem(insBefore, ((DecrementTreeItem) s).object)); + } + ip = pos + 1; + addr = pos2adr(ip); + break; + } + } + + } + ins.definition.translate(isStatic, classIndex, localRegs, stack, scopeStack, constants, ins, method_info, output, body, abc); + ip++; + addr = pos2adr(ip); + break; + } else if (insAfter.definition instanceof SetLocalTypeIns) { + /*if (isKilled(((SetLocalTypeIns) insAfter.definition).getRegisterId(insAfter), ip + 2, end)) { + ip += 2; + addr = pos2adr(ip); + break; + } else {*/ + ins.definition.translate(isStatic, classIndex, localRegs, stack, scopeStack, constants, ins, method_info, output, body, abc); + ip++; + addr = pos2adr(ip); + break; + //} + + } else { + ins.definition.translate(isStatic, classIndex, localRegs, stack, scopeStack, constants, ins, method_info, output, body, abc); + ip++; + addr = pos2adr(ip); + break; + //throw new ConvertException("Unknown pattern after DUP:" + insComparsion.toString()); + } + addr = addr + ins.getBytes().length + insAfter.getBytes().length + insAfter.operands[0]; + nextPos = adr2pos(addr) - 1; + if (isAnd) { + stack.add(new AndTreeItem(insAfter, stack.pop(), toSource(isStatic, classIndex, localRegs, new Stack(), scopeStack, abc, constants, method_info, body, ip + 3, nextPos).stack.pop())); + } else { + stack.add(new OrTreeItem(insAfter, stack.pop(), toSource(isStatic, classIndex, localRegs, new Stack(), scopeStack, abc, constants, method_info, body, ip + 3, nextPos).stack.pop())); + } + ins = code.get(nextPos + 1); + ip = nextPos + 1; + } while (ins.definition instanceof DupIns); + } else if (ins.definition instanceof IfTypeIns) { + int targetAddr = pos2adr(ip) + ins.getBytes().length + ins.operands[0]; + int targetIns = adr2pos(targetAddr); + ((IfTypeIns) ins.definition).translateInverted(localRegs, stack, ins); + + TreeItem condition = stack.pop(); + + if (condition.isFalse()) { + //ins.definition = new JumpIns(); + //continue; + } + if (condition.isTrue()) { + //ip = targetIns; + //continue; + } + //stack.add("if"+stack.pop()); + //stack.add("{"); + boolean hasElse = false; + boolean hasReturn = false; + if (code.get(targetIns - 1).definition instanceof JumpIns) { + + if ((targetIns - 2 > ip) && ((code.get(targetIns - 2).definition instanceof ReturnValueIns) || (code.get(targetIns - 2).definition instanceof ReturnVoidIns) || (code.get(targetIns - 2).definition instanceof ThrowIns))) { + hasElse = false; + hasReturn = true; + } else { + int jumpAddr = targetAddr + code.get(targetIns - 1).operands[0]; + int jumpPos = adr2pos(jumpAddr); + hasElse = true; + + for (Loop l : loopList) { + if (l.loopBreak == jumpPos) { + hasElse = false; + break; + } + } + if (hasElse) { + if (adr2pos(jumpAddr) > end + 1) { + hasElse = false; + //throw new ConvertException("Unknown pattern: forward jump outside of the block"); + } + } + } + } + ConvertOutput onTrue = toSource(isStatic, classIndex, localRegs, new Stack(), scopeStack, abc, constants, method_info, body, ip + 1, targetIns - 1 - ((hasElse || hasReturn) ? 1 : 0)); + addr = targetAddr; + ip = targetIns; + ConvertOutput onFalse = new ConvertOutput(new Stack(), new ArrayList()); + if (hasElse) { + int finalAddr = targetAddr + code.get(targetIns - 1).operands[0]; + int finalIns = adr2pos(finalAddr); + onFalse = toSource(isStatic, classIndex, localRegs, new Stack(), scopeStack, abc, constants, method_info, body, targetIns, finalIns - 1); + addr = finalAddr; + ip = finalIns; + } + if ((onTrue.stack.size() > 0) && (onFalse != null) && (onFalse.stack.size() > 0)) { + stack.add(new TernarOpTreeItem(ins, condition, onTrue.stack.pop(), onFalse.stack.pop())); + } else { + output.add(new IfTreeItem(ins, condition, onTrue.output, onFalse.output)); + } + + } else if ((ins.definition instanceof ReturnValueIns) || (ins.definition instanceof ReturnVoidIns) || (ins.definition instanceof ThrowIns)) { + ins.definition.translate(isStatic, classIndex, localRegs, stack, scopeStack, constants, ins, method_info, output, body, abc); + ip = end + 1; + break; + } else { + ins.definition.translate(isStatic, classIndex, localRegs, stack, scopeStack, constants, ins, method_info, output, body, abc); + + addr += ins.getBytes().length; + ip++; + } + + } + if (debugMode) + System.out.println("CLOSE SubSource:" + start + "-" + end + " " + code.get(start).toString() + " to " + code.get(end).toString()); + + return new ConvertOutput(stack, output); + } catch (ConvertException cex) { + throw cex; + } catch (Exception ex) { + if (ex instanceof UnknownJumpException) { + throw (UnknownJumpException) ex; + } + throw new ConvertException(ex.toString(), ip); + } + } + + public String tabString(int len) { + String ret = ""; + for (int i = 0; i < len; i++) { + ret += ABC.IDENT_STRING; + } + return ret; + } + + public String toSource(boolean isStatic, int classIndex, ABC abc, ConstantPool constants, MethodInfo method_info[], MethodBody body) { + return toSource(isStatic, classIndex, abc, constants, method_info, body, false); + } + + public List toTree(boolean isStatic, int classIndex, ABC abc, ConstantPool constants, MethodInfo method_info[], MethodBody body) { + toSourceCount = 0; + loopList = new ArrayList(); + unknownJumps = new ArrayList(); + parsedExceptions = new ArrayList(); + finallyJumps = new ArrayList(); + HashMap localRegs = new HashMap(); + try { + return toSource(isStatic, classIndex, localRegs, new Stack(), new Stack(), abc, constants, method_info, body, 0, code.size() - 1).output; + } catch (ConvertException ex) { + return new ArrayList(); + } + } + + public String toSource(boolean isStatic, int classIndex, ABC abc, ConstantPool constants, MethodInfo method_info[], MethodBody body, boolean hilighted) { + toSourceCount = 0; + loopList = new ArrayList(); + unknownJumps = new ArrayList(); + finallyJumps = new ArrayList(); + parsedExceptions = new ArrayList(); + List list; + String s = ""; + try { + HashMap localRegs = new HashMap(); + list = toSource(isStatic, classIndex, localRegs, new Stack(), new Stack(), abc, constants, method_info, body, 0, code.size() - 1).output; + s = listToString(list, constants); + } catch (Exception ex) { + ex.printStackTrace(); + s = "Convert error - " + ex.toString(); + return s; + } + + String parts[] = s.split("\r\n"); + String sub = ""; + int level = 0; + for (int t = 0; t < body.traits.traits.length; t++) { + sub += body.traits.traits[t].convert(constants, method_info) + ";\r\n"; + } + try { + Stack loopStack = new Stack(); + for (int p = 0; p < parts.length; p++) { + String stripped = Highlighting.stripHilights(parts[p]); + if (stripped.endsWith(":") && (!stripped.startsWith("case ")) && (!stripped.equals("default:"))) { + loopStack.add(stripped.substring(0, stripped.length() - 1)); + } + if (stripped.startsWith("break ")) { + if (stripped.equals("break " + loopStack.peek() + ";")) { + parts[p] = parts[p].replace(" " + loopStack.peek(), ""); + } + } + if (stripped.startsWith("continue ")) { + if (loopStack.size() > 0) { + if (stripped.equals("continue " + loopStack.peek() + ";")) { + parts[p] = parts[p].replace(" " + loopStack.peek(), ""); + } + } + } + if (stripped.startsWith(":")) { + loopStack.pop(); + } + } + } catch (Exception ex) { + } + for (int p = 0; p < parts.length; p++) { + String strippedP = Highlighting.stripHilights(parts[p]); + if (strippedP.endsWith(":") && (!strippedP.startsWith("case ")) && (!strippedP.equals("default:"))) { + String loopname = strippedP.substring(0, strippedP.length() - 1); + boolean dorefer = false; + for (int q = p + 1; q < parts.length; q++) { + String strippedQ = Highlighting.stripHilights(parts[q]); + if (strippedQ.equals("break " + loopname + ";")) { + dorefer = true; + break; + } + if (strippedQ.equals("continue " + loopname + ";")) { + dorefer = true; + break; + } + if (strippedQ.equals(":" + loopname)) { + break; + } + } + if (!dorefer) { + continue; + } + } + if (strippedP.startsWith(":")) { + continue; + } + if (strippedP.equals(IDENTOPEN)) { + level++; + } else if (strippedP.equals(IDENTCLOSE)) { + level--; + } else if (strippedP.equals("{")) { + level++; + sub += tabString(level) + parts[p] + "\r\n"; + level++; + } else if (strippedP.equals("}")) { + level--; + sub += tabString(level) + parts[p] + "\r\n"; + level--; + } else { + sub += tabString(level) + parts[p] + "\r\n"; + } + } + if (!hilighted) { + sub = Highlighting.stripHilights(sub); + } + return sub; + } + + public static void main(String[] args) { + FileInputStream fis = null; + try { + fis = new FileInputStream("src/asdec/abc/avm2/AVM2Code.java"); + byte[] data = new byte[fis.available()]; + fis.read(data); + + String content = new String(data); + Pattern partPat = Pattern.compile("private static InstructionDefinition instructionSet(.*)endoflist", Pattern.MULTILINE | Pattern.DOTALL); + Matcher m = partPat.matcher(content); + if (m.find()) { + System.out.println("1 found"); + content = m.group(1); + System.out.println(content); + Pattern part2Pat = Pattern.compile("new InstructionDefinition(\\([^\\)]*\"([^\"]*)\"[^\\)]*\\))\\{(.*)\\},", Pattern.MULTILINE | Pattern.DOTALL); + m = part2Pat.matcher(content); + while (m.find()) { + System.out.println("2 found"); + String superCall = m.group(1); + String name = m.group(2); + String methods = m.group(3); + FileOutputStream fos = new FileOutputStream("src/asdec/abc/avm2/instructions/generated/" + name + "Ins.java"); + String out = "public class " + name + "Ins extends InstructionDefinition {\r\n public " + name + "Ins(){\r\nsuper" + superCall + ";\r\n}" + methods + "}"; + fos.write(out.getBytes()); + fos.close(); + } + } + } catch (IOException ex) { + } finally { + try { + fis.close(); + } catch (IOException ex) { + Logger.getLogger(AVM2Code.class.getName()).log(Level.SEVERE, null, ex); + } + } + } + + public void removeInstruction(int pos, MethodBody body) { + if ((pos < 0) || (pos >= code.size())) { + throw new IndexOutOfBoundsException(); + } + int byteCount = code.get(pos).getBytes().length; + long remOffset = code.get(pos).offset; + for (int i = pos + 1; i < code.size(); i++) { + code.get(i).offset -= byteCount; + } + + for (ABCException ex : body.exceptions) { + if (ex.start > remOffset) { + ex.start -= byteCount; + } + if (ex.end > remOffset) { + ex.start -= byteCount; + } + if (ex.target > remOffset) { + ex.start -= byteCount; + } + } + + + for (int i = 0; i < pos; i++) { + if (code.get(i).definition instanceof LookupSwitchIns) { + long target = code.get(i).offset + code.get(i).operands[0]; + if (target > remOffset) { + code.get(i).operands[0] -= byteCount; + } + for (int k = 2; k < code.get(i).operands.length; k++) { + target = code.get(i).offset + code.get(i).operands[k]; + if (target > remOffset) { + code.get(i).operands[k] -= byteCount; + } + } + } else { + for (int j = 0; j < code.get(i).definition.operands.length; j++) { + if (code.get(i).definition.operands[j] == AVM2Code.DAT_OFFSET) { + long target = code.get(i).offset + code.get(i).getBytes().length + code.get(i).operands[j]; + if (target > remOffset) { + code.get(i).operands[j] -= byteCount; + } + } + } + } + } + for (int i = pos + 1; i < code.size(); i++) { + if (code.get(i).definition instanceof LookupSwitchIns) { + long target = code.get(i).offset + code.get(i).operands[0]; + if (target < remOffset) { + code.get(i).operands[0] += byteCount; + } + for (int k = 2; k < code.get(i).operands.length; k++) { + target = code.get(i).offset + code.get(i).operands[k]; + if (target < remOffset) { + code.get(i).operands[k] += byteCount; + } + } + } else { + for (int j = 0; j < code.get(i).definition.operands.length; j++) { + if (code.get(i).definition.operands[j] == AVM2Code.DAT_OFFSET) { + long target = code.get(i).offset + code.get(i).getBytes().length + code.get(i).operands[j]; + if (target < remOffset) { + code.get(i).operands[j] += byteCount; + } + } + } + } + } + + code.remove(pos); + + } + + public void insertInstruction(int pos, AVM2Instruction instruction) { + if (pos < 0) { + pos = 0; + } + if (pos > code.size()) { + pos = code.size(); + } + int byteCount = instruction.getBytes().length; + if (pos == code.size()) { + instruction.offset = code.get(pos - 1).offset + code.get(pos - 1).getBytes().length; + } else { + instruction.offset = code.get(pos).offset; + } + + for (int i = 0; i < pos; i++) { + for (int j = 0; j < code.get(i).definition.operands.length; j++) { + if (code.get(i).definition.operands[j] == AVM2Code.DAT_OFFSET) { + long target = code.get(i).offset + code.get(i).getBytes().length + code.get(i).operands[j]; + if (target >= instruction.offset) { + code.get(i).operands[j] += byteCount; + } + } + } + } + for (int i = pos; i < code.size(); i++) { + for (int j = 0; j < code.get(i).definition.operands.length; j++) { + if (code.get(i).definition.operands[j] == AVM2Code.DAT_OFFSET) { + long target = code.get(i).offset + code.get(i).getBytes().length + code.get(i).operands[j]; + if (target < instruction.offset) { + code.get(i).operands[j] -= byteCount; + } + } + } + } + + for (int i = pos + 1; i < code.size(); i++) { + code.get(i).offset += byteCount; + } + code.add(pos, instruction); + } + + private void removeFreeBlocks(ConstantPool constants, MethodBody body) throws ConvertException { + List offsets = new ArrayList(); + for (AVM2Instruction ins : code) { + offsets.addAll(ins.getOffsets()); + } + for (ABCException ex : body.exceptions) { + offsets.add((long) ex.start); + offsets.add((long) ex.end); + offsets.add((long) ex.target); + } + + int clearedCount = 0; + loopip: + for (int ip = 0; ip < code.size(); ip++) { + AVM2Instruction ins = code.get(ip); + if (ins.definition instanceof JumpIns) { + int secondAddr = pos2adr(ip + 1); + int jumpAddr = secondAddr + ins.operands[0]; + int jumpPos = adr2pos(jumpAddr); + if (jumpPos <= ip) { + continue; + } + if (jumpPos > code.size()) { + continue; + } + for (int k = ip + 1; k < jumpPos; k++) { + if (offsets.contains((long) pos2adr(k))) { + continue loopip; + } + } + for (int k = ip; k < jumpPos; k++) { + removeInstruction(ip, body); + clearedCount++; + } + offsets.clear(); + for (AVM2Instruction ins2 : code) { + offsets.addAll(ins2.getOffsets()); + } + for (ABCException ex : body.exceptions) { + offsets.add((long) ex.start); + offsets.add((long) ex.end); + offsets.add((long) ex.target); + } + ip--; + //ip=jumpPos; + } + } + if (clearedCount > 0) { + //System.out.println("Cleared " + clearedCount + " lines of code TO:"); + //System.out.println(toASMSource(constants)); + //System.exit(1); + } + } + + public void clearSecureSWF(ConstantPool constants, MethodBody body) throws ConvertException { + if (code.size() > 4) { + AVM2Instruction first = code.get(0); + AVM2Instruction second = code.get(1); + boolean firstValue = false; + boolean secondValue = false; + boolean isSecure = true; + if (first.definition instanceof PushFalseIns) { + firstValue = false; + } else if (first.definition instanceof PushTrueIns) { + firstValue = true; + } else { + isSecure = false; + } + if (isSecure) { + if (second.definition instanceof PushFalseIns) { + secondValue = false; + } else if (second.definition instanceof PushTrueIns) { + secondValue = true; + } else { + isSecure = false; + } + if (isSecure) { + AVM2Instruction third = code.get(2); + int pos = 2; + if (third.definition instanceof SwapIns) { + pos++; + boolean dup = firstValue; + firstValue = secondValue; + secondValue = dup; + } + AVM2Instruction firstSet = code.get(pos); + AVM2Instruction secondSet = code.get(pos + 1); + int trueIndex = -1; + int falseIndex = -1; + if (firstSet.definition instanceof SetLocalTypeIns) { + if (secondValue == true) { + trueIndex = ((SetLocalTypeIns) firstSet.definition).getRegisterId(firstSet); + } + if (secondValue == false) { + falseIndex = ((SetLocalTypeIns) firstSet.definition).getRegisterId(firstSet); + } + } else { + isSecure = false; + } + if (isSecure) { + if (secondSet.definition instanceof SetLocalTypeIns) { + if (firstValue == true) { + trueIndex = ((SetLocalTypeIns) secondSet.definition).getRegisterId(firstSet); + } + if (firstValue == false) { + falseIndex = ((SetLocalTypeIns) secondSet.definition).getRegisterId(firstSet); + } + + //Yes, secure + pos += 2; + for (int i = 0; i < pos; i++) { + code.get(i).ignored = true; + //removeInstruction(0, body); + } + System.out.println("trueIndex:" + trueIndex); + System.out.println("falseIndex:" + falseIndex); + boolean found = false; + do { + found = false; + for (int ip = pos; ip < code.size(); ip++) { + if (code.get(ip).ignored) continue; + if (code.get(ip).definition instanceof GetLocalTypeIns) { + int regIndex = ((GetLocalTypeIns) code.get(ip).definition).getRegisterId(code.get(ip)); + if ((regIndex == trueIndex) || (regIndex == falseIndex)) { + found = true; + Stack myStack = new Stack(); + do { + AVM2Instruction ins = code.get(ip); + if (ins.ignored) { + ip++; + continue; + } else if (ins.definition instanceof GetLocalTypeIns) { + regIndex = ((GetLocalTypeIns) ins.definition).getRegisterId(ins); + if (regIndex == trueIndex) myStack.push(true); + if (regIndex == falseIndex) myStack.push(false); + ip++; + ins.ignored = true; + } else if (ins.definition instanceof DupIns) { + Boolean b = myStack.pop(); + myStack.push(b); + myStack.push(b); + ins.ignored = true; + ip++; + } else if (ins.definition instanceof PopIns) { + myStack.pop(); + ins.ignored = true; + ip++; + } else if (ins.definition instanceof IfTrueIns) { + System.out.println("iftrue found"); + boolean val = myStack.pop(); + if (val) { + code.get(ip).definition = new JumpIns(); + System.out.println("changed to jump"); + ip = adr2pos(pos2adr(ip + 1) + code.get(ip).operands[0]); + } else { + code.get(ip).ignored = true; + ip++; + } + } else if (ins.definition instanceof IfFalseIns) { + boolean val = myStack.pop(); + if (!val) { + code.get(ip).definition = new JumpIns(); + ip = adr2pos(pos2adr(ip + 1) + code.get(ip).operands[0]); + } else { + code.get(ip).ignored = true; + ip++; + } + } else if (ins.definition instanceof JumpIns) { + ip = adr2pos(pos2adr(ip + 1) + code.get(ip).operands[0]); + } else { + + } + + } while (myStack.size() > 0); + + /*for(int rem=code.size();rem>=0;rem--){ + if(code.get(rem).ignored){ + code.remove(rem); + } + } */ + break; + } + + } + } + } + while (found); + } else { + isSecure = false; + } + } + + } + } + } + } + + public void clearCode(ConstantPool constants, MethodBody body) throws ConvertException { + + if (code.size() > 3) { + if (code.get(0).definition instanceof PushByteIns) { + if (code.get(1).definition instanceof PushByteIns) { + if (code.get(2).definition instanceof IfNeIns) { + if (code.get(0).operands[0] != code.get(1).operands[0]) { + int targetAddr = pos2adr(2) + code.get(2).getBytes().length + code.get(2).operands[0]; + int targetPos = adr2pos(targetAddr); + for (int i = 0; i < targetPos; i++) { + removeInstruction(0, body); + } + } + } + } + } + } + + removeFreeBlocks(constants, body); + //clearSecureSWF(constants, body); + + + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/ConstantPool.java b/trunk/src/com/jpexs/asdec/abc/avm2/ConstantPool.java new file mode 100644 index 000000000..71f97fb2f --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/ConstantPool.java @@ -0,0 +1,122 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2; + +import com.jpexs.asdec.abc.types.Multiname; +import com.jpexs.asdec.abc.types.Namespace; +import com.jpexs.asdec.abc.types.NamespaceSet; + +import java.io.OutputStream; +import java.io.PrintStream; +import java.util.Arrays; + + +public class ConstantPool { + public long constant_int[]; + public long constant_uint[]; + public double constant_double[]; + public String constant_string[]; + public Namespace constant_namespace[]; + public NamespaceSet constant_namespace_set[]; + public Multiname constant_multiname[]; + + public int addInt(long value) { + constant_int = Arrays.copyOf(constant_int, constant_int.length + 1); + constant_int[constant_int.length - 1] = value; + return constant_int.length - 1; + } + + public int addUInt(long value) { + constant_uint = Arrays.copyOf(constant_uint, constant_uint.length + 1); + constant_uint[constant_uint.length - 1] = value; + return constant_uint.length - 1; + } + + public int addDouble(double value) { + constant_double = Arrays.copyOf(constant_double, constant_double.length + 1); + constant_double[constant_double.length - 1] = value; + return constant_double.length - 1; + } + + public int addString(String value) { + constant_string = Arrays.copyOf(constant_string, constant_string.length + 1); + constant_string[constant_string.length - 1] = value; + return constant_string.length - 1; + } + + public int getIntId(long value) { + for (int i = 1; i < constant_int.length; i++) { + if (constant_int[i] == value) { + return i; + } + } + return 0; + } + + public int getUIntId(long value) { + for (int i = 1; i < constant_uint.length; i++) { + if (constant_uint[i] == value) { + return i; + } + } + return 0; + } + + public int getDoubleId(double value) { + for (int i = 1; i < constant_double.length; i++) { + if (constant_double[i] == value) { + return i; + } + } + return 0; + } + + public int getStringId(String s) { + for (int i = 1; i < constant_string.length; i++) { + if (constant_string[i].equals(s)) { + return i; + } + } + return 0; + } + + public int getMultiNameId(String s) { + for (int i = 1; i < constant_multiname.length; i++) { + if (constant_multiname[i].getName(this).equals(s)) { + return i; + } + } + return 0; + } + + public void dump(OutputStream os) { + PrintStream output = new PrintStream(os); + String s = ""; + for (int i = 1; i < constant_int.length; i++) { + output.println("INT[" + i + "]=" + constant_int[i]); + } + for (int i = 1; i < constant_uint.length; i++) { + output.println("UINT[" + i + "]=" + constant_uint[i]); + } + for (int i = 1; i < constant_double.length; i++) { + output.println("Double[" + i + "]=" + constant_double[i]); + } + for (int i = 1; i < constant_string.length; i++) { + output.println("String[" + i + "]=" + constant_string[i]); + } + for (int i = 1; i < constant_namespace.length; i++) { + output.println("Namespace[" + i + "]=" + constant_namespace[i].toString(this)); + } + for (int i = 1; i < constant_namespace_set.length; i++) { + output.println("NamespaceSet[" + i + "]=" + constant_namespace_set[i].toString(this)); + } + + for (int i = 1; i < constant_multiname.length; i++) { + output.println("Multiname[" + i + "]=" + constant_multiname[i].toString(this)); + } + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/ConvertException.java b/trunk/src/com/jpexs/asdec/abc/avm2/ConvertException.java new file mode 100644 index 000000000..dceb09739 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/ConvertException.java @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2; + + +public class ConvertException extends Exception { + public int line; + public ConvertException(String s,int line) { + super(s+" on line "+line); + this.line=line; + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/InvalidInstructionArguments.java b/trunk/src/com/jpexs/asdec/abc/avm2/InvalidInstructionArguments.java new file mode 100644 index 000000000..eb484d2f5 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/InvalidInstructionArguments.java @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2; + + +public class InvalidInstructionArguments extends RuntimeException { + + public InvalidInstructionArguments() { + super("Invalid method arguments"); + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/LocalDataArea.java b/trunk/src/com/jpexs/asdec/abc/avm2/LocalDataArea.java new file mode 100644 index 000000000..4d6d1c459 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/LocalDataArea.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2; + +import java.util.ArrayList; +import java.util.List; +import java.util.Stack; + + +public class LocalDataArea { + public Stack operandStack = new Stack(); + public Stack scopeStack = new Stack(); + public List localRegisters = new ArrayList(); + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/UnknownInstructionCode.java b/trunk/src/com/jpexs/asdec/abc/avm2/UnknownInstructionCode.java new file mode 100644 index 000000000..1e996f77c --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/UnknownInstructionCode.java @@ -0,0 +1,15 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2; + + +public class UnknownInstructionCode extends RuntimeException { + public int code; + + public UnknownInstructionCode(int code) { + super("Unknown instruction code:" + Integer.toHexString(code)); + this.code = code; + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/UnknownJumpException.java b/trunk/src/com/jpexs/asdec/abc/avm2/UnknownJumpException.java new file mode 100644 index 000000000..23f655cd5 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/UnknownJumpException.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2; + +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + +import java.util.List; +import java.util.Stack; + + +public class UnknownJumpException extends RuntimeException { + public Stack stack; + public int ip; + public List output; + + public UnknownJumpException(Stack stack, int ip, List output) { + this.stack = stack; + this.ip = ip; + this.output = output; + } + + @Override + public String toString() { + return "Unknown jump to " + ip; + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/AVM2Instruction.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/AVM2Instruction.java new file mode 100644 index 000000000..fc4ec9900 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/AVM2Instruction.java @@ -0,0 +1,172 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions; + +import com.jpexs.asdec.abc.ABCOutputStream; +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.helpers.Helper; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + + +public class AVM2Instruction { + + public InstructionDefinition definition; + public int operands[]; + public long offset; + public byte bytes[]; + public String comment; + public boolean ignored = false; + + public AVM2Instruction(long offset, InstructionDefinition definition, int[] operands, byte bytes[]) { + this.definition = definition; + this.operands = operands; + this.offset = offset; + this.bytes = bytes; + } + + public byte[] getBytes() { + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + try { + ABCOutputStream aos = new ABCOutputStream(bos); + aos.write(definition.instructionCode); + for (int i = 0; i < definition.operands.length; i++) { + int opt = definition.operands[i] & 0xff00; + switch (opt) { + case AVM2Code.OPT_S24: + aos.writeS24(operands[i]); + break; + case AVM2Code.OPT_U30: + aos.writeU30(operands[i]); + break; + case AVM2Code.OPT_U8: + aos.writeU8(operands[i]); + break; + case AVM2Code.OPT_BYTE: + aos.writeU8(0xff & operands[i]); + break; + case AVM2Code.OPT_CASE_OFFSETS: + + aos.writeU30(operands[i]); //case count + for (int j = i + 1; j < operands.length; j++) { + aos.writeS24(operands[j]); + } + break; + } + } + } catch (IOException ex) { + //ignored + } + return bos.toByteArray(); + } + + @Override + public String toString() { + String s = definition.instructionName; + for (int i = 0; i < operands.length; i++) { + s += " " + operands[i]; + } + return s; + } + + public List getOffsets() { + List ret = new ArrayList(); + String s = ""; + for (int i = 0; i < definition.operands.length; i++) { + switch (definition.operands[i]) { + case AVM2Code.DAT_OFFSET: + ret.add(offset + operands[i] + getBytes().length); + break; + case AVM2Code.DAT_CASE_BASEOFFSET: + ret.add(offset + operands[i]); + break; + case AVM2Code.OPT_CASE_OFFSETS: + for (int j = i + 1; j < operands.length; j++) { + ret.add(offset + operands[j]); + } + break; + } + + } + return ret; + } + + public String getParams(ConstantPool constants) { + String s = ""; + for (int i = 0; i < definition.operands.length; i++) { + switch (definition.operands[i]) { + case AVM2Code.DAT_MULTINAME_INDEX: + s += " m[" + operands[i] + "]\"" + Helper.escapeString(constants.constant_multiname[operands[i]].toString(constants)) + "\""; + break; + case AVM2Code.DAT_STRING_INDEX: + s += " \"" + Helper.escapeString(constants.constant_string[operands[i]]) + "\""; + break; + case AVM2Code.DAT_INT_INDEX: + s += " " + constants.constant_int[operands[i]] + ""; + break; + case AVM2Code.DAT_UINT_INDEX: + s += " " + constants.constant_uint[operands[i]] + ""; + break; + case AVM2Code.DAT_DOUBLE_INDEX: + s += " " + constants.constant_double[operands[i]] + ""; + break; + case AVM2Code.DAT_OFFSET: + s += " "; + if (operands[i] > 0) { + //s += "+"; + }//operands[i] + s += "ofs" + Helper.formatAddress(offset + operands[i] + getBytes().length) + ""; + break; + case AVM2Code.DAT_CASE_BASEOFFSET: + s += " "; + if (operands[i] > 0) { + //s += "+"; + }//operands[i] + s += "ofs" + Helper.formatAddress(offset + operands[i]) + ""; + break; + case AVM2Code.OPT_CASE_OFFSETS: + s += " " + operands[i]; + for (int j = i + 1; j < operands.length; j++) { + s += " "; + if (operands[j] > 0) { + //s += "+"; + }//operands[j] + s += "ofs" + Helper.formatAddress(offset + operands[j]) + ""; + } + break; + default: + s += " " + operands[i]; + } + + } + return s; + } + + public String getComment() { + if (ignored) { + return " ;ignored"; + } + if ((comment == null) || comment.equals("")) { + return ""; + } + return " ;" + comment; + } + + public String toString(ConstantPool constants) { + String s = Helper.formatAddress(offset) + " " + Helper.padSpaceRight(Helper.byteArrToString(getBytes()), 30) + definition.instructionName; + s += getParams(constants) + getComment(); + return s; + } + + public String toStringNoAddress(ConstantPool constants) { + String s = definition.instructionName; + s += getParams(constants) + getComment(); + return s; + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/IfTypeIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/IfTypeIns.java new file mode 100644 index 000000000..312bea296 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/IfTypeIns.java @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions; + +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + +import java.util.Stack; + + +public interface IfTypeIns { + public abstract void translateInverted(java.util.HashMap localRegs, Stack stack, AVM2Instruction ins); +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/InstructionDefinition.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/InstructionDefinition.java new file mode 100644 index 000000000..4d3e6c685 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/InstructionDefinition.java @@ -0,0 +1,109 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.treemodel.FullMultinameTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; +import com.jpexs.asdec.helpers.Highlighting; + +import java.util.List; +import java.util.Stack; + + +public class InstructionDefinition { + + + protected String hilighOffset(String text, long offset) { + return Highlighting.hilighOffset(text, offset); + } + + public int operands[]; + public String instructionName = ""; + public int instructionCode = 0; + + public static String localRegName(int reg) { + if (reg == 0) return "this"; + return "_loc" + reg + "_"; + } + + public InstructionDefinition(int instructionCode, String instructionName, int operands[]) { + this.instructionCode = instructionCode; + this.instructionName = instructionName; + this.operands = operands; + } + + @Override + public String toString() { + String s = instructionName; + for (int i = 0; i < operands.length; i++) { + if ((operands[i] & 0xff00) == AVM2Code.OPT_U30) { + s += " U30"; + } + if ((operands[i] & 0xff00) == AVM2Code.OPT_U8) { + s += " U8"; + } + if ((operands[i] & 0xff00) == AVM2Code.OPT_BYTE) { + s += " BYTE"; + } + if ((operands[i] & 0xff00) == AVM2Code.OPT_S24) { + s += " S24"; + } + if ((operands[i] & 0xff00) == AVM2Code.OPT_CASE_OFFSETS) { + s += " U30 S24,[S24]..."; + } + } + return s; + } + + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + } + + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + + } + + protected FullMultinameTreeItem resolveMultiname(Stack stack, ConstantPool constants, int multinameIndex, AVM2Instruction ins) { + TreeItem ns = null; + TreeItem name = null; + if (constants.constant_multiname[multinameIndex].needsNs()) { + ns = (TreeItem) stack.pop(); + } + if (constants.constant_multiname[multinameIndex].needsName()) { + name = (TreeItem) stack.pop(); + } + return new FullMultinameTreeItem(ins, multinameIndex, name, ns); + } + + protected int resolvedCount(ConstantPool constants, int multinameIndex) { + int pos = 0; + if (constants.constant_multiname[multinameIndex].needsNs()) { + pos++; + } + if (constants.constant_multiname[multinameIndex].needsName()) { + pos++; + } + return pos; + + } + + protected String resolveMultinameNoPop(int pos, Stack stack, ConstantPool constants, int multinameIndex, AVM2Instruction ins) { + String ns = ""; + String name = ""; + if (constants.constant_multiname[multinameIndex].needsNs()) { + ns = "[" + stack.get(pos) + "]"; + pos++; + } + if (constants.constant_multiname[multinameIndex].needsName()) { + name = stack.get(pos).toString(); + } else { + name = hilighOffset(constants.constant_multiname[multinameIndex].getName(constants), ins.offset); + } + return name + ns; + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/SetTypeIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/SetTypeIns.java new file mode 100644 index 000000000..66fc856d0 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/SetTypeIns.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public interface SetTypeIns { + public abstract String getObject(Stack stack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body); +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/AddIIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/AddIIns.java new file mode 100644 index 000000000..59de2f6d5 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/AddIIns.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.arithmetic; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.AddTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class AddIIns extends AddIns { + + public AddIIns() { + instructionName = "add_i"; + instructionCode = 0xc5; + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new AddTreeItem(ins, v1, v2)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/AddIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/AddIns.java new file mode 100644 index 000000000..bd64e51af --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/AddIns.java @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.arithmetic; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.AddTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class AddIns extends InstructionDefinition { + + public AddIns() { + super(0xa0, "add", new int[]{}); + } + + @Override + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + Object o1 = lda.operandStack.pop(); + Object o2 = lda.operandStack.pop(); + if ((o1 instanceof Long) && ((o2 instanceof Long))) { + Long ret = new Long(((Long) o1).longValue() + ((Long) o2).longValue()); + lda.operandStack.push(ret); + } else if ((o1 instanceof Double) && ((o2 instanceof Double))) { + Double ret = new Double(((Double) o1).doubleValue() + ((Double) o2).doubleValue()); + lda.operandStack.push(ret); + } else if ((o1 instanceof Long) && ((o2 instanceof Double))) { + Double ret = new Double(((Long) o1).longValue() + ((Double) o2).doubleValue()); + lda.operandStack.push(ret); + } else if ((o1 instanceof Double) && ((o2 instanceof Long))) { + Double ret = new Double(((Double) o1).doubleValue() + ((Long) o2).longValue()); + lda.operandStack.push(ret); + } else { + String s = o1.toString() + o2.toString(); + lda.operandStack.push(s); + } + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new AddTreeItem(ins, v1, v2)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/DecrementIIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/DecrementIIns.java new file mode 100644 index 000000000..f19cf7753 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/DecrementIIns.java @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.arithmetic; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.DecrementTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class DecrementIIns extends InstructionDefinition { + + public DecrementIIns() { + super(0xc1, "decrement_i", new int[]{}); + } + + @Override + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + Object obj = lda.operandStack.pop(); + if (obj instanceof Long) { + Long obj2 = ((Long) obj).longValue() - 1; + lda.operandStack.push(obj2); + } else if (obj instanceof Double) { + Double obj2 = ((Double) obj).doubleValue() - 1; + lda.operandStack.push(obj2); + } + if (obj instanceof String) { + Double obj2 = Double.parseDouble((String) obj) - 1; + lda.operandStack.push(obj2); + } else { + throw new RuntimeException("Cannot decrement local register"); + } + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + stack.push(new DecrementTreeItem(ins, (TreeItem) stack.pop())); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/DecrementIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/DecrementIns.java new file mode 100644 index 000000000..c64b96b30 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/DecrementIns.java @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.arithmetic; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.DecrementTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class DecrementIns extends InstructionDefinition { + + public DecrementIns() { + super(0x93, "decrement", new int[]{}); + } + + @Override + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + Object obj = lda.operandStack.pop(); + if (obj instanceof Long) { + Long obj2 = ((Long) obj).longValue() - 1; + lda.operandStack.push(obj2); + } else if (obj instanceof Double) { + Double obj2 = ((Double) obj).doubleValue() - 1; + lda.operandStack.push(obj2); + } + if (obj instanceof String) { + Double obj2 = Double.parseDouble((String) obj) - 1; + lda.operandStack.push(obj2); + } else { + throw new RuntimeException("Cannot decrement local register"); + } + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + stack.push(new DecrementTreeItem(ins, (TreeItem) stack.pop())); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/DivideIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/DivideIns.java new file mode 100644 index 000000000..635a63633 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/DivideIns.java @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.arithmetic; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.DivideTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class DivideIns extends InstructionDefinition { + + public DivideIns() { + super(0xa3, "divide", new int[]{}); + } + + @Override + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + Object o1 = lda.operandStack.pop(); + Object o2 = lda.operandStack.pop(); + if ((o1 instanceof Long) && ((o2 instanceof Long))) { + Long ret = new Long(((Long) o1).longValue() / ((Long) o2).longValue()); + lda.operandStack.push(ret); + } else if ((o1 instanceof Double) && ((o2 instanceof Double))) { + Double ret = new Double(((Double) o1).doubleValue() / ((Double) o2).doubleValue()); + lda.operandStack.push(ret); + } else if ((o1 instanceof Long) && ((o2 instanceof Double))) { + Double ret = new Double(((Long) o1).longValue() / ((Double) o2).doubleValue()); + lda.operandStack.push(ret); + } else if ((o1 instanceof Double) && ((o2 instanceof Long))) { + Double ret = new Double(((Double) o1).doubleValue() / ((Long) o2).longValue()); + lda.operandStack.push(ret); + } else { + throw new RuntimeException("Cannot divide"); + } + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new DivideTreeItem(ins, v1, v2)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/IncrementIIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/IncrementIIns.java new file mode 100644 index 000000000..5192f1cbe --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/IncrementIIns.java @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.arithmetic; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.IncrementTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class IncrementIIns extends InstructionDefinition { + + public IncrementIIns() { + super(0xc0, "increment_i", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + stack.push(new IncrementTreeItem(ins, (TreeItem) stack.pop())); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/IncrementIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/IncrementIns.java new file mode 100644 index 000000000..aebc0b4e6 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/IncrementIns.java @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.arithmetic; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.IncrementTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class IncrementIns extends InstructionDefinition { + + public IncrementIns() { + super(0x91, "increment", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + stack.push(new IncrementTreeItem(ins, (TreeItem) stack.pop())); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/ModuloIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/ModuloIns.java new file mode 100644 index 000000000..f3253b9c8 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/ModuloIns.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.arithmetic; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.ModuloTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class ModuloIns extends InstructionDefinition { + + public ModuloIns() { + super(0xa4, "modulo", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new ModuloTreeItem(ins, v1, v2)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/MultiplyIIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/MultiplyIIns.java new file mode 100644 index 000000000..6ad5ac346 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/MultiplyIIns.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.arithmetic; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.MultiplyTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class MultiplyIIns extends InstructionDefinition { + + public MultiplyIIns() { + super(0xc7, "multiply_i", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new MultiplyTreeItem(ins, v1, v2)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/MultiplyIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/MultiplyIns.java new file mode 100644 index 000000000..3037173d2 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/MultiplyIns.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.arithmetic; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.MultiplyTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class MultiplyIns extends InstructionDefinition { + + public MultiplyIns() { + super(0xa2, "multiply", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new MultiplyTreeItem(ins, v1, v2)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/NegateIIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/NegateIIns.java new file mode 100644 index 000000000..179acf43e --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/NegateIIns.java @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.arithmetic; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.NegTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class NegateIIns extends InstructionDefinition { + + public NegateIIns() { + super(0xc4, "negate_i", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem v = (TreeItem) stack.pop(); + stack.push(new NegTreeItem(ins, v)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/NegateIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/NegateIns.java new file mode 100644 index 000000000..6ad4e25ef --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/NegateIns.java @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.arithmetic; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.NegTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class NegateIns extends InstructionDefinition { + + public NegateIns() { + super(0x90, "negate", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem v = (TreeItem) stack.pop(); + stack.push(new NegTreeItem(ins, v)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/NotIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/NotIns.java new file mode 100644 index 000000000..164d26428 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/NotIns.java @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.arithmetic; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.NotTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class NotIns extends InstructionDefinition { + + public NotIns() { + super(0x96, "not", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem v = (TreeItem) stack.pop(); + stack.push(new NotTreeItem(ins, v)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/SubtractIIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/SubtractIIns.java new file mode 100644 index 000000000..43a7d16bf --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/SubtractIIns.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.arithmetic; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.SubtractTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class SubtractIIns extends InstructionDefinition { + + public SubtractIIns() { + super(0xc6, "subtract_i", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new SubtractTreeItem(ins, v1, v2)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/SubtractIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/SubtractIns.java new file mode 100644 index 000000000..d52a0d3e3 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/arithmetic/SubtractIns.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.arithmetic; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.SubtractTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class SubtractIns extends InstructionDefinition { + + public SubtractIns() { + super(0xa1, "subtract", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new SubtractTreeItem(ins, v1, v2)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/bitwise/BitAndIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/bitwise/BitAndIns.java new file mode 100644 index 000000000..8fc5e88b6 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/bitwise/BitAndIns.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.bitwise; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.BitAndTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class BitAndIns extends InstructionDefinition { + + public BitAndIns() { + super(0xa8, "bitand", new int[]{}); + } + + @Override + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + Long value2 = (Long) lda.operandStack.pop(); + Long value1 = (Long) lda.operandStack.pop(); + Long value3 = value1 & value2; + lda.operandStack.push(value3); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new BitAndTreeItem(ins, v1, v2)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/bitwise/BitNotIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/bitwise/BitNotIns.java new file mode 100644 index 000000000..6bdd23517 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/bitwise/BitNotIns.java @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.bitwise; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.BitNotTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class BitNotIns extends InstructionDefinition { + + public BitNotIns() { + super(0x97, "bitnot", new int[]{}); + } + + @Override + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + Long value = (Long) lda.operandStack.pop(); + Long ret = new Long(-value.longValue()); + lda.operandStack.push(ret); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem v = (TreeItem) stack.pop(); + stack.push(new BitNotTreeItem(ins, v)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/bitwise/BitOrIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/bitwise/BitOrIns.java new file mode 100644 index 000000000..cfc9162a2 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/bitwise/BitOrIns.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.bitwise; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.BitOrTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class BitOrIns extends InstructionDefinition { + + public BitOrIns() { + super(0xa9, "bitor", new int[]{}); + } + + @Override + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + Long value2 = (Long) lda.operandStack.pop(); + Long value1 = (Long) lda.operandStack.pop(); + Long value3 = value1 | value2; + lda.operandStack.push(value3); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new BitOrTreeItem(ins, v1, v2)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/bitwise/BitXorIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/bitwise/BitXorIns.java new file mode 100644 index 000000000..642a3c4cc --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/bitwise/BitXorIns.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.bitwise; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.BitXorTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class BitXorIns extends InstructionDefinition { + + public BitXorIns() { + super(0xaa, "bitxor", new int[]{}); + } + + @Override + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + Long value2 = (Long) lda.operandStack.pop(); + Long value1 = (Long) lda.operandStack.pop(); + Long value3 = value1 ^ value2; + lda.operandStack.push(value3); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new BitXorTreeItem(ins, v1, v2)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/bitwise/LShiftIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/bitwise/LShiftIns.java new file mode 100644 index 000000000..75546b52d --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/bitwise/LShiftIns.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.bitwise; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.LShiftTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class LShiftIns extends InstructionDefinition { + + public LShiftIns() { + super(0xa5, "lshift", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new LShiftTreeItem(ins, v1, v2)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/bitwise/RShiftIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/bitwise/RShiftIns.java new file mode 100644 index 000000000..a06dd270d --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/bitwise/RShiftIns.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.bitwise; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.RShiftTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class RShiftIns extends InstructionDefinition { + + public RShiftIns() { + super(0xa6, "rshift", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new RShiftTreeItem(ins, v1, v2)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/bitwise/URShiftIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/bitwise/URShiftIns.java new file mode 100644 index 000000000..a8f7a639e --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/bitwise/URShiftIns.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.bitwise; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.URShiftTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class URShiftIns extends InstructionDefinition { + + public URShiftIns() { + super(0xa7, "urshift", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new URShiftTreeItem(ins, v1, v2)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/comparsion/EqualsIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/comparsion/EqualsIns.java new file mode 100644 index 000000000..a8f3e1f1a --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/comparsion/EqualsIns.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.comparsion; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.EqTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class EqualsIns extends InstructionDefinition { + + public EqualsIns() { + super(0xab, "equals", new int[]{}); + } + + @Override + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + Object obj1 = lda.operandStack.pop(); + Object obj2 = lda.operandStack.pop(); + Boolean res = obj1.equals(obj2); + lda.operandStack.push(res); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new EqTreeItem(ins, v1, v2)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/comparsion/GreaterEqualsIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/comparsion/GreaterEqualsIns.java new file mode 100644 index 000000000..5da2c1df2 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/comparsion/GreaterEqualsIns.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.comparsion; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.GeTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class GreaterEqualsIns extends InstructionDefinition { + + public GreaterEqualsIns() { + super(0xb0, "greaterequals", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new GeTreeItem(ins, v1, v2)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/comparsion/GreaterThanIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/comparsion/GreaterThanIns.java new file mode 100644 index 000000000..a90b33d9f --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/comparsion/GreaterThanIns.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.comparsion; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.LtTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class GreaterThanIns extends InstructionDefinition { + + public GreaterThanIns() { + super(0xaf, "greaterthan", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new LtTreeItem(ins, v1, v2)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/comparsion/LessEqualsIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/comparsion/LessEqualsIns.java new file mode 100644 index 000000000..95cb78d6d --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/comparsion/LessEqualsIns.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.comparsion; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.LeTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class LessEqualsIns extends InstructionDefinition { + + public LessEqualsIns() { + super(0xae, "lessequals", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new LeTreeItem(ins, v1, v2)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/comparsion/LessThanIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/comparsion/LessThanIns.java new file mode 100644 index 000000000..6a4c7c8a7 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/comparsion/LessThanIns.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.comparsion; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.GtTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class LessThanIns extends InstructionDefinition { + + public LessThanIns() { + super(0xad, "lessthan", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new GtTreeItem(ins, v1, v2)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/comparsion/StrictEqualsIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/comparsion/StrictEqualsIns.java new file mode 100644 index 000000000..ed66e035f --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/comparsion/StrictEqualsIns.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.comparsion; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.StrictEqTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class StrictEqualsIns extends InstructionDefinition { + + public StrictEqualsIns() { + super(0xac, "strictequals", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new StrictEqTreeItem(ins, v1, v2)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/construction/ConstructIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/construction/ConstructIns.java new file mode 100644 index 000000000..b0deb7a02 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/construction/ConstructIns.java @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.construction; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.ConstructTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.ArrayList; +import java.util.List; +import java.util.Stack; + + +public class ConstructIns extends InstructionDefinition { + + public ConstructIns() { + super(0x42, "construct", new int[]{AVM2Code.DAT_ARG_COUNT}); + } + + @Override + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + int argCount = (int) ((Long) arguments.get(0)).longValue(); + List passArguments = new ArrayList(); + for (int i = argCount - 1; i >= 0; i--) { + passArguments.set(i, lda.operandStack.pop()); + } + Object obj = lda.operandStack.pop(); + throw new RuntimeException("Cannot call constructor"); + //call construct property of obj + //push new instance + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + int argCount = ins.operands[0]; + List args = new ArrayList(); + for (int a = 0; a < argCount; a++) { + args.add(0, (TreeItem) stack.pop()); + } + TreeItem obj = (TreeItem) stack.pop(); + stack.push(new ConstructTreeItem(ins, obj, args)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/construction/ConstructPropIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/construction/ConstructPropIns.java new file mode 100644 index 000000000..0dc3eec84 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/construction/ConstructPropIns.java @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.construction; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.ConstructPropTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.FullMultinameTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.ArrayList; +import java.util.List; +import java.util.Stack; + + +public class ConstructPropIns extends InstructionDefinition { + + public ConstructPropIns() { + super(0x4a, "constructprop", new int[]{AVM2Code.DAT_MULTINAME_INDEX, AVM2Code.DAT_ARG_COUNT}); + } + + @Override + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + int multinameIndex = (int) ((Long) arguments.get(0)).longValue(); + int argCount = (int) ((Long) arguments.get(1)).longValue(); + List passArguments = new ArrayList(); + for (int i = argCount - 1; i >= 0; i--) { + passArguments.set(i, lda.operandStack.pop()); + } + //if multiname[multinameIndex] is runtime + //pop(name) pop(ns) + throw new RuntimeException("Cannot construct property"); + //create property + //push new instance + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + int multinameIndex = ins.operands[0]; + int argCount = ins.operands[1]; + List args = new ArrayList(); + for (int a = 0; a < argCount; a++) { + args.add(0, (TreeItem) stack.pop()); + } + FullMultinameTreeItem multiname = resolveMultiname(stack, constants, multinameIndex, ins); + TreeItem obj = (TreeItem) stack.pop(); + + + stack.push(new ConstructPropTreeItem(ins, obj, multiname, args)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/construction/ConstructSuperIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/construction/ConstructSuperIns.java new file mode 100644 index 000000000..080120606 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/construction/ConstructSuperIns.java @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.construction; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.ConstructSuperTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.ArrayList; +import java.util.List; +import java.util.Stack; + + +public class ConstructSuperIns extends InstructionDefinition { + + public ConstructSuperIns() { + super(0x49, "constructsuper", new int[]{AVM2Code.DAT_ARG_COUNT}); + } + + @Override + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + int argCount = (int) ((Long) arguments.get(0)).longValue(); + List passArguments = new ArrayList(); + for (int i = argCount - 1; i >= 0; i--) { + passArguments.set(i, lda.operandStack.pop()); + } + Object obj = lda.operandStack.pop(); + throw new RuntimeException("Cannot call super constructor"); + //call construct property of obj + //do not push anything + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + int argCount = ins.operands[0]; + List args = new ArrayList(); + for (int a = 0; a < argCount; a++) { + args.add(0, (TreeItem) stack.pop()); + } + TreeItem obj = (TreeItem) stack.pop(); + output.add(new ConstructSuperTreeItem(ins, obj, args)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/construction/NewActivationIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/construction/NewActivationIns.java new file mode 100644 index 000000000..b8c0e8afd --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/construction/NewActivationIns.java @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.construction; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.NewActivationTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class NewActivationIns extends InstructionDefinition { + + public NewActivationIns() { + super(0x57, "newactivation", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + stack.push(new NewActivationTreeItem(ins)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/construction/NewArrayIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/construction/NewArrayIns.java new file mode 100644 index 000000000..d8f5ceb85 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/construction/NewArrayIns.java @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.construction; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.NewArrayTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.ArrayList; +import java.util.List; +import java.util.Stack; + + +public class NewArrayIns extends InstructionDefinition { + + public NewArrayIns() { + super(0x56, "newarray", new int[]{AVM2Code.DAT_ARG_COUNT}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + int argCount = ins.operands[0]; + List args = new ArrayList(); + for (int a = 0; a < argCount; a++) { + args.add(0, (TreeItem) stack.pop()); + } + stack.push(new NewArrayTreeItem(ins, args)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/construction/NewCatchIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/construction/NewCatchIns.java new file mode 100644 index 000000000..20f1daf4f --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/construction/NewCatchIns.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.construction; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.clauses.ExceptionTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class NewCatchIns extends InstructionDefinition { + + public NewCatchIns() { + super(0x5a, "newcatch", new int[]{AVM2Code.DAT_EXCEPTION_INDEX}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + int exInfo = ins.operands[0]; + stack.push(new ExceptionTreeItem(body.exceptions[exInfo])); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/construction/NewClassIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/construction/NewClassIns.java new file mode 100644 index 000000000..3c4939b38 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/construction/NewClassIns.java @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.construction; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.UnparsedTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class NewClassIns extends InstructionDefinition { + + public NewClassIns() { + super(0x58, "newclass", new int[]{AVM2Code.DAT_CLASS_INDEX}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + int clsIndex = ins.operands[0]; + String baseType = stack.pop().toString(); + stack.push(new UnparsedTreeItem(ins, "new class(" + clsIndex + ") extends " + baseType)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/construction/NewFunctionIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/construction/NewFunctionIns.java new file mode 100644 index 000000000..002113cfa --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/construction/NewFunctionIns.java @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.construction; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.NewFunctionTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodBody; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class NewFunctionIns extends InstructionDefinition { + + public NewFunctionIns() { + super(0x40, "newfunction", new int[]{AVM2Code.DAT_METHOD_INDEX}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + int methodIndex = ins.operands[0]; + MethodBody mybody = abc.findBody(methodIndex); + String bodyStr = ""; + if (mybody != null) { + bodyStr = mybody.toString(isStatic, classIndex, abc, constants, method_info, false); + } + stack.push(new NewFunctionTreeItem(ins, method_info[methodIndex].getParamStr(constants), method_info[methodIndex].getReturnTypeStr(constants), bodyStr)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/construction/NewObjectIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/construction/NewObjectIns.java new file mode 100644 index 000000000..b900e8cd7 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/construction/NewObjectIns.java @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.construction; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.NameValuePair; +import com.jpexs.asdec.abc.avm2.treemodel.NewObjectTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.ArrayList; +import java.util.List; +import java.util.Stack; + + +public class NewObjectIns extends InstructionDefinition { + + public NewObjectIns() { + super(0x55, "newobject", new int[]{AVM2Code.DAT_ARG_COUNT}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + int argCount = ins.operands[0]; + List args = new ArrayList(); + for (int a = 0; a < argCount; a++) { + TreeItem value = (TreeItem) stack.pop(); + TreeItem name = (TreeItem) stack.pop(); + args.add(0, new NameValuePair(name, value)); + } + stack.push(new NewObjectTreeItem(ins, args)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/debug/DebugFileIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/debug/DebugFileIns.java new file mode 100644 index 000000000..ccb164c6d --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/debug/DebugFileIns.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.debug; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; + + +public class DebugFileIns extends InstructionDefinition { + + public DebugFileIns() { + super(0xf1, "debugfile", new int[]{AVM2Code.DAT_STRING_INDEX}); + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/debug/DebugIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/debug/DebugIns.java new file mode 100644 index 000000000..4be88beb0 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/debug/DebugIns.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.debug; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; + + +public class DebugIns extends InstructionDefinition { + + public DebugIns() { + super(0xef, "debug", new int[]{AVM2Code.DAT_DEBUG_TYPE, AVM2Code.DAT_STRING_INDEX, AVM2Code.DAT_REGISTER_INDEX, AVM2Code.OPT_U30}); + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/debug/DebugLineIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/debug/DebugLineIns.java new file mode 100644 index 000000000..075d02dc1 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/debug/DebugLineIns.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.debug; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; + + +public class DebugLineIns extends InstructionDefinition { + + public DebugLineIns() { + super(0xf0, "debugline", new int[]{AVM2Code.DAT_LINENUM}); + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/executing/CallIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/executing/CallIns.java new file mode 100644 index 000000000..40d2b0044 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/executing/CallIns.java @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.executing; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.CallTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.ArrayList; +import java.util.List; +import java.util.Stack; + + +public class CallIns extends InstructionDefinition { + + public CallIns() { + super(0x41, "call", new int[]{AVM2Code.DAT_ARG_COUNT}); + } + + @Override + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + int argCount = (int) ((Long) arguments.get(0)).longValue(); + List passArguments = new ArrayList(); + for (int i = argCount - 1; i >= 0; i--) { + passArguments.set(i, lda.operandStack.pop()); + } + Object receiver = lda.operandStack.pop(); + Object function = lda.operandStack.pop(); + throw new RuntimeException("Call to unknown function"); + //push(result) + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + int argCount = ins.operands[0]; + List args = new ArrayList(); + for (int a = 0; a < argCount; a++) { + args.add(0, (TreeItem) stack.pop()); + } + TreeItem receiver = (TreeItem) stack.pop(); + TreeItem function = (TreeItem) stack.pop(); + stack.push(new CallTreeItem(ins, receiver, function, args)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/executing/CallMethodIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/executing/CallMethodIns.java new file mode 100644 index 000000000..0ff297b48 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/executing/CallMethodIns.java @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.executing; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.CallMethodTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.ArrayList; +import java.util.List; +import java.util.Stack; + + +public class CallMethodIns extends InstructionDefinition { + + public CallMethodIns() { + super(0x43, "callmethod", new int[]{AVM2Code.DAT_METHOD_INDEX, AVM2Code.DAT_ARG_COUNT}); + } + + @Override + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + int methodIndex = (int) ((Long) arguments.get(0)).longValue(); //index of object's method + int argCount = (int) ((Long) arguments.get(1)).longValue(); + List passArguments = new ArrayList(); + for (int i = argCount - 1; i >= 0; i--) { + passArguments.set(i, lda.operandStack.pop()); + } + Object receiver = lda.operandStack.pop(); + throw new RuntimeException("Call to unknown method"); + //push(result) + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + int methodIndex = ins.operands[0]; + int argCount = ins.operands[1]; + List args = new ArrayList(); + for (int a = 0; a < argCount; a++) { + args.add(0, (TreeItem) stack.pop()); + } + TreeItem receiver = (TreeItem) stack.pop(); + String methodName = method_info[methodIndex].getName(constants); + stack.push(new CallMethodTreeItem(ins, receiver, methodName, args)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/executing/CallPropLexIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/executing/CallPropLexIns.java new file mode 100644 index 000000000..3a0c0934f --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/executing/CallPropLexIns.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.executing; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.CallPropertyTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.FullMultinameTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.ArrayList; +import java.util.List; +import java.util.Stack; + + +public class CallPropLexIns extends CallPropertyIns { + + public CallPropLexIns() { + instructionName = "callproplex"; + instructionCode = 0x4c; + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + int multinameIndex = ins.operands[0]; + int argCount = ins.operands[1]; + List args = new ArrayList(); + for (int a = 0; a < argCount; a++) { + args.add(0, (TreeItem) stack.pop()); + } + FullMultinameTreeItem multiname = resolveMultiname(stack, constants, multinameIndex, ins); + TreeItem receiver = (TreeItem) stack.pop(); + + stack.push(new CallPropertyTreeItem(ins, false, receiver, multiname, args)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/executing/CallPropVoidIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/executing/CallPropVoidIns.java new file mode 100644 index 000000000..87a9c4b85 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/executing/CallPropVoidIns.java @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.executing; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.CallPropertyTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.FullMultinameTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.ArrayList; +import java.util.List; +import java.util.Stack; + + +public class CallPropVoidIns extends InstructionDefinition { + + public CallPropVoidIns() { + super(0x4f, "callpropvoid", new int[]{AVM2Code.DAT_MULTINAME_INDEX, AVM2Code.DAT_ARG_COUNT}); + } + + @Override + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + //same as callproperty + + int multinameIndex = (int) ((Long) arguments.get(0)).longValue(); + int argCount = (int) ((Long) arguments.get(1)).longValue(); + List passArguments = new ArrayList(); + for (int i = argCount - 1; i >= 0; i--) { + passArguments.set(i, lda.operandStack.pop()); + } + //if multiname[multinameIndex] is runtime + //pop(name) pop(ns) + Object obj = lda.operandStack.pop(); + throw new RuntimeException("Call to unknown property"); + //do not push anything + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + int multinameIndex = ins.operands[0]; + int argCount = ins.operands[1]; + List args = new ArrayList(); + for (int a = 0; a < argCount; a++) { + args.add(0, (TreeItem) stack.pop()); + } + FullMultinameTreeItem multiname = resolveMultiname(stack, constants, multinameIndex, ins); + + TreeItem receiver = (TreeItem) stack.pop(); + + output.add(new CallPropertyTreeItem(ins, true, receiver, multiname, args)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/executing/CallPropertyIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/executing/CallPropertyIns.java new file mode 100644 index 000000000..02158a55f --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/executing/CallPropertyIns.java @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.executing; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.CallPropertyTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.FullMultinameTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.ArrayList; +import java.util.List; +import java.util.Stack; + + +public class CallPropertyIns extends InstructionDefinition { + + public CallPropertyIns() { + super(0x46, "callproperty", new int[]{AVM2Code.DAT_MULTINAME_INDEX, AVM2Code.DAT_ARG_COUNT}); + } + + @Override + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + int multinameIndex = (int) ((Long) arguments.get(0)).longValue(); + int argCount = (int) ((Long) arguments.get(1)).longValue(); + List passArguments = new ArrayList(); + for (int i = argCount - 1; i >= 0; i--) { + passArguments.set(i, lda.operandStack.pop()); + } + //if multiname[multinameIndex] is runtime + //pop(name) pop(ns) + Object obj = lda.operandStack.pop(); + throw new RuntimeException("Call to unknown property"); + //push(result) + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + int multinameIndex = ins.operands[0]; + int argCount = ins.operands[1]; + List args = new ArrayList(); + for (int a = 0; a < argCount; a++) { + args.add(0, (TreeItem) stack.pop()); + } + FullMultinameTreeItem multiname = resolveMultiname(stack, constants, multinameIndex, ins); + + TreeItem receiver = (TreeItem) stack.pop(); + + stack.push(new CallPropertyTreeItem(ins, false, receiver, multiname, args)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/executing/CallStaticIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/executing/CallStaticIns.java new file mode 100644 index 000000000..457a7002d --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/executing/CallStaticIns.java @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.executing; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.CallStaticTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.ArrayList; +import java.util.List; +import java.util.Stack; + + +public class CallStaticIns extends InstructionDefinition { + + public CallStaticIns() { + super(0x44, "callstatic", new int[]{AVM2Code.DAT_METHOD_INDEX, AVM2Code.DAT_ARG_COUNT}); + } + + @Override + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + int methodIndex = (int) ((Long) arguments.get(0)).longValue(); //index of method_info + int argCount = (int) ((Long) arguments.get(1)).longValue(); + List passArguments = new ArrayList(); + for (int i = argCount - 1; i >= 0; i--) { + passArguments.set(i, lda.operandStack.pop()); + } + Object receiver = lda.operandStack.pop(); + throw new RuntimeException("Call to unknown static method"); + //push(result) + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + int methodIndex = ins.operands[0]; + int argCount = ins.operands[1]; + List args = new ArrayList(); + for (int a = 0; a < argCount; a++) { + args.add(0, (TreeItem) stack.pop()); + } + TreeItem receiver = (TreeItem) stack.pop(); + String methodName = method_info[methodIndex].getName(constants); + stack.push(new CallStaticTreeItem(ins, receiver, methodName, args)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/executing/CallSuperIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/executing/CallSuperIns.java new file mode 100644 index 000000000..d68eac820 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/executing/CallSuperIns.java @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.executing; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.CallSuperTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.FullMultinameTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.ArrayList; +import java.util.List; +import java.util.Stack; + + +public class CallSuperIns extends InstructionDefinition { + + public CallSuperIns() { + super(0x45, "callsuper", new int[]{AVM2Code.DAT_MULTINAME_INDEX, AVM2Code.DAT_ARG_COUNT}); + } + + @Override + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + int multinameIndex = (int) ((Long) arguments.get(0)).longValue(); + int argCount = (int) ((Long) arguments.get(1)).longValue(); + List passArguments = new ArrayList(); + for (int i = argCount - 1; i >= 0; i--) { + passArguments.set(i, lda.operandStack.pop()); + } + //if multiname[multinameIndex] is runtime + //pop(name) pop(ns) + Object receiver = lda.operandStack.pop(); + throw new RuntimeException("Call to unknown super method"); + //push(result) + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + int multinameIndex = ins.operands[0]; + int argCount = ins.operands[1]; + List args = new ArrayList(); + for (int a = 0; a < argCount; a++) { + args.add(0, (TreeItem) stack.pop()); + } + FullMultinameTreeItem multiname = resolveMultiname(stack, constants, multinameIndex, ins); + TreeItem receiver = (TreeItem) stack.pop(); + + stack.push(new CallSuperTreeItem(ins, false, receiver, multiname, args)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/executing/CallSuperVoidIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/executing/CallSuperVoidIns.java new file mode 100644 index 000000000..9954ef838 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/executing/CallSuperVoidIns.java @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.executing; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.CallSuperTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.FullMultinameTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.ArrayList; +import java.util.List; +import java.util.Stack; + + +public class CallSuperVoidIns extends InstructionDefinition { + + public CallSuperVoidIns() { + super(0x4e, "callsupervoid", new int[]{AVM2Code.DAT_MULTINAME_INDEX, AVM2Code.DAT_ARG_COUNT}); + } + + @Override + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + int multinameIndex = (int) ((Long) arguments.get(0)).longValue(); + int argCount = (int) ((Long) arguments.get(1)).longValue(); + List passArguments = new ArrayList(); + for (int i = argCount - 1; i >= 0; i--) { + passArguments.set(i, lda.operandStack.pop()); + } + //if multiname[multinameIndex] is runtime + //pop(name) pop(ns) + Object receiver = lda.operandStack.pop(); + throw new RuntimeException("Call to unknown super method"); + //do not push anything + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + int multinameIndex = ins.operands[0]; + int argCount = ins.operands[1]; + List args = new ArrayList(); + for (int a = 0; a < argCount; a++) { + args.add((TreeItem) stack.pop()); + } + FullMultinameTreeItem multiname = resolveMultiname(stack, constants, multinameIndex, ins); + TreeItem receiver = (TreeItem) stack.pop(); + + output.add(new CallSuperTreeItem(ins, true, receiver, multiname, args)); + + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfEqIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfEqIns.java new file mode 100644 index 000000000..1e5914384 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfEqIns.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.jumps; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.IfTypeIns; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.EqTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.NeqTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class IfEqIns extends InstructionDefinition implements IfTypeIns { + + public IfEqIns() { + super(0x13, "ifeq", new int[]{AVM2Code.DAT_OFFSET}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new EqTreeItem(ins, v1, v2)); + } + + public void translateInverted(java.util.HashMap localRegs, Stack stack, AVM2Instruction ins) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new NeqTreeItem(ins, v1, v2)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfFalseIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfFalseIns.java new file mode 100644 index 000000000..73423ca40 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfFalseIns.java @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.jumps; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.IfTypeIns; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.NotTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class IfFalseIns extends InstructionDefinition implements IfTypeIns { + + public IfFalseIns() { + super(0x12, "iffalse", new int[]{AVM2Code.DAT_OFFSET}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new NotTreeItem(ins, v1)); + } + + public void translateInverted(java.util.HashMap localRegs, Stack stack, AVM2Instruction ins) { + //String v1 = stack.pop().toString(); + //stack.push("(" + v1 + ")"); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfGeIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfGeIns.java new file mode 100644 index 000000000..6297fb4ae --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfGeIns.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.jumps; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.IfTypeIns; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.GeTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.LtTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class IfGeIns extends InstructionDefinition implements IfTypeIns { + + public IfGeIns() { + super(0x18, "ifge", new int[]{AVM2Code.DAT_OFFSET}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new GeTreeItem(ins, v1, v2)); + } + + public void translateInverted(java.util.HashMap localRegs, Stack stack, AVM2Instruction ins) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new LtTreeItem(ins, v1, v2)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfGtIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfGtIns.java new file mode 100644 index 000000000..078834cc1 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfGtIns.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.jumps; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.IfTypeIns; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.GtTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.LeTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class IfGtIns extends InstructionDefinition implements IfTypeIns { + + public IfGtIns() { + super(0x17, "ifgt", new int[]{AVM2Code.DAT_OFFSET}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new GtTreeItem(ins, v1, v2)); + } + + public void translateInverted(java.util.HashMap localRegs, Stack stack, AVM2Instruction ins) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new LeTreeItem(ins, v1, v2)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfLeIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfLeIns.java new file mode 100644 index 000000000..7d2aa779b --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfLeIns.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.jumps; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.IfTypeIns; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.GtTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.LeTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class IfLeIns extends InstructionDefinition implements IfTypeIns { + + public IfLeIns() { + super(0x16, "ifle", new int[]{AVM2Code.DAT_OFFSET}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new LeTreeItem(ins, v1, v2)); + } + + public void translateInverted(java.util.HashMap localRegs, Stack stack, AVM2Instruction ins) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new GtTreeItem(ins, v1, v2)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfLtIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfLtIns.java new file mode 100644 index 000000000..0bc647593 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfLtIns.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.jumps; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.IfTypeIns; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.GeTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.LtTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class IfLtIns extends InstructionDefinition implements IfTypeIns { + + public IfLtIns() { + super(0x15, "iflt", new int[]{AVM2Code.DAT_OFFSET}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new LtTreeItem(ins, v1, v2)); + } + + public void translateInverted(java.util.HashMap localRegs, Stack stack, AVM2Instruction ins) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new GeTreeItem(ins, v1, v2)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfNGeIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfNGeIns.java new file mode 100644 index 000000000..4a1731701 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfNGeIns.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.jumps; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.IfTypeIns; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.GeTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.LtTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class IfNGeIns extends InstructionDefinition implements IfTypeIns { + + public IfNGeIns() { + super(0x0f, "ifnge", new int[]{AVM2Code.DAT_OFFSET}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new LtTreeItem(ins, v1, v2)); + } + + public void translateInverted(java.util.HashMap localRegs, Stack stack, AVM2Instruction ins) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new GeTreeItem(ins, v1, v2)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfNGtIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfNGtIns.java new file mode 100644 index 000000000..81495ce11 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfNGtIns.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.jumps; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.IfTypeIns; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.GtTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.LeTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class IfNGtIns extends InstructionDefinition implements IfTypeIns { + + public IfNGtIns() { + super(0x0e, "ifngt", new int[]{AVM2Code.DAT_OFFSET}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new LeTreeItem(ins, v1, v2)); + } + + public void translateInverted(java.util.HashMap localRegs, Stack stack, AVM2Instruction ins) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new GtTreeItem(ins, v1, v2)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfNLeIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfNLeIns.java new file mode 100644 index 000000000..bafb9c11b --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfNLeIns.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.jumps; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.IfTypeIns; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.GtTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.LeTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class IfNLeIns extends InstructionDefinition implements IfTypeIns { + + public IfNLeIns() { + super(0x0d, "ifnle", new int[]{AVM2Code.DAT_OFFSET}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new GtTreeItem(ins, v1, v2)); + } + + public void translateInverted(java.util.HashMap localRegs, Stack stack, AVM2Instruction ins) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new LeTreeItem(ins, v1, v2)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfNLtIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfNLtIns.java new file mode 100644 index 000000000..208ea73ee --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfNLtIns.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.jumps; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.IfTypeIns; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.GeTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.LtTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class IfNLtIns extends InstructionDefinition implements IfTypeIns { + + public IfNLtIns() { + super(0x0c, "ifnlt", new int[]{AVM2Code.DAT_OFFSET}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new GeTreeItem(ins, v1, v2)); + } + + public void translateInverted(java.util.HashMap localRegs, Stack stack, AVM2Instruction ins) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new LtTreeItem(ins, v1, v2)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfNeIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfNeIns.java new file mode 100644 index 000000000..19372f91e --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfNeIns.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.jumps; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.IfTypeIns; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.EqTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.NeqTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class IfNeIns extends InstructionDefinition implements IfTypeIns { + + public IfNeIns() { + super(0x14, "ifne", new int[]{AVM2Code.DAT_OFFSET}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new NeqTreeItem(ins, v1, v2)); + } + + public void translateInverted(java.util.HashMap localRegs, Stack stack, AVM2Instruction ins) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new EqTreeItem(ins, v1, v2)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfStrictEqIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfStrictEqIns.java new file mode 100644 index 000000000..141a4ae4c --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfStrictEqIns.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.jumps; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.IfTypeIns; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.StrictEqTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.StrictNeqTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class IfStrictEqIns extends InstructionDefinition implements IfTypeIns { + + public IfStrictEqIns() { + super(0x19, "ifstricteq", new int[]{AVM2Code.DAT_OFFSET}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new StrictEqTreeItem(ins, v1, v2)); + } + + public void translateInverted(java.util.HashMap localRegs, Stack stack, AVM2Instruction ins) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new StrictNeqTreeItem(ins, v1, v2)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfStrictNeIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfStrictNeIns.java new file mode 100644 index 000000000..f84c50411 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfStrictNeIns.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.jumps; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.IfTypeIns; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.StrictEqTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.StrictNeqTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class IfStrictNeIns extends InstructionDefinition implements IfTypeIns { + + public IfStrictNeIns() { + super(0x1A, "ifstrictne", new int[]{AVM2Code.DAT_OFFSET}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new StrictNeqTreeItem(ins, v1, v2)); + } + + public void translateInverted(java.util.HashMap localRegs, Stack stack, AVM2Instruction ins) { + TreeItem v2 = (TreeItem) stack.pop(); + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new StrictEqTreeItem(ins, v1, v2)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfTrueIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfTrueIns.java new file mode 100644 index 000000000..b99ff935a --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/IfTrueIns.java @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.jumps; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.IfTypeIns; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.NotTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class IfTrueIns extends InstructionDefinition implements IfTypeIns { + + public IfTrueIns() { + super(0x11, "iftrue", new int[]{AVM2Code.DAT_OFFSET}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + //String v1 = stack.pop().toString(); + //stack.push("(" + v1 + ")"); + } + + public void translateInverted(java.util.HashMap localRegs, Stack stack, AVM2Instruction ins) { + TreeItem v1 = (TreeItem) stack.pop(); + stack.push(new NotTreeItem(ins, v1)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/JumpIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/JumpIns.java new file mode 100644 index 000000000..1a7655c46 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/JumpIns.java @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.jumps; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.IfTypeIns; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.BooleanTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class JumpIns extends InstructionDefinition implements IfTypeIns { + + public JumpIns() { + super(0x10, "jump", new int[]{AVM2Code.DAT_OFFSET}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + stack.push(new BooleanTreeItem(ins, Boolean.TRUE));// + ins.operands[0]); + } + + public void translateInverted(java.util.HashMap localRegs, Stack stack, AVM2Instruction ins) { + + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/LookupSwitchIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/LookupSwitchIns.java new file mode 100644 index 000000000..c7467427d --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/jumps/LookupSwitchIns.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.jumps; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class LookupSwitchIns extends InstructionDefinition { + + public LookupSwitchIns() { + super(0x1b, "lookupswitch", new int[]{AVM2Code.DAT_CASE_BASEOFFSET, AVM2Code.OPT_CASE_OFFSETS}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + int defaultOffset = ins.operands[0]; + int caseCount = ins.operands[1]; + //stack.push("switch(...)"); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/DecLocalIIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/DecLocalIIns.java new file mode 100644 index 000000000..a5c430b90 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/DecLocalIIns.java @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.localregs; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.DecLocalTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class DecLocalIIns extends InstructionDefinition { + + public DecLocalIIns() { + super(0xc3, "declocal_i", new int[]{AVM2Code.DAT_LOCAL_REG_INDEX}); + } + + @Override + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + int locRegIndex = (int) ((Long) arguments.get(0)).longValue(); + Object obj = lda.localRegisters.get(locRegIndex); + if (obj instanceof Long) { + Long obj2 = ((Long) obj).longValue() - 1; + lda.localRegisters.set(locRegIndex, obj2); + } else if (obj instanceof Double) { + Double obj2 = ((Double) obj).doubleValue() - 1; + lda.localRegisters.set(locRegIndex, obj2); + } + if (obj instanceof String) { + Double obj2 = Double.parseDouble((String) obj) - 1; + lda.localRegisters.set(locRegIndex, obj2); + } else { + throw new RuntimeException("Cannot decrement local register"); + } + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + int regIndex = ins.operands[0]; + output.add(new DecLocalTreeItem(ins, regIndex)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/DecLocalIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/DecLocalIns.java new file mode 100644 index 000000000..0bb8a3378 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/DecLocalIns.java @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.localregs; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.DecLocalTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class DecLocalIns extends InstructionDefinition { + + public DecLocalIns() { + super(0x94, "declocal", new int[]{AVM2Code.DAT_LOCAL_REG_INDEX}); + } + + @Override + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + int locRegIndex = (int) ((Long) arguments.get(0)).longValue(); + Object obj = lda.localRegisters.get(locRegIndex); + if (obj instanceof Long) { + Long obj2 = ((Long) obj).longValue() - 1; + lda.localRegisters.set(locRegIndex, obj2); + } else if (obj instanceof Double) { + Double obj2 = ((Double) obj).doubleValue() - 1; + lda.localRegisters.set(locRegIndex, obj2); + } + if (obj instanceof String) { + Double obj2 = Double.parseDouble((String) obj) - 1; + lda.localRegisters.set(locRegIndex, obj2); + } else { + throw new RuntimeException("Cannot decrement local register"); + } + } + + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + int regIndex = ins.operands[0]; + output.add(new DecLocalTreeItem(ins, regIndex)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/GetLocal0Ins.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/GetLocal0Ins.java new file mode 100644 index 000000000..9d92f9c50 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/GetLocal0Ins.java @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.localregs; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.ClassTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.ThisTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class GetLocal0Ins extends InstructionDefinition implements GetLocalTypeIns { + + public GetLocal0Ins() { + super(0xd0, "getlocal_0", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + if (isStatic) { + stack.push(new ClassTreeItem(abc.instance_info[classIndex].getName(constants).getName(constants))); + } else { + stack.push(new ThisTreeItem()); + } + } + + public int getRegisterId(AVM2Instruction par0) { + return 0; + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/GetLocal1Ins.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/GetLocal1Ins.java new file mode 100644 index 000000000..c0e9aea2b --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/GetLocal1Ins.java @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.localregs; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.LocalRegTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class GetLocal1Ins extends InstructionDefinition implements GetLocalTypeIns { + + public GetLocal1Ins() { + super(0xd1, "getlocal_1", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + stack.push(new LocalRegTreeItem(ins, 1, localRegs.get(1))); + } + + public int getRegisterId(AVM2Instruction par0) { + return 1; + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/GetLocal2Ins.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/GetLocal2Ins.java new file mode 100644 index 000000000..b158ed173 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/GetLocal2Ins.java @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.localregs; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.LocalRegTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class GetLocal2Ins extends InstructionDefinition implements GetLocalTypeIns { + + public GetLocal2Ins() { + super(0xd2, "getlocal_2", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + stack.push(new LocalRegTreeItem(ins, 2, localRegs.get(2))); + } + + public int getRegisterId(AVM2Instruction par0) { + return 2; + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/GetLocal3Ins.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/GetLocal3Ins.java new file mode 100644 index 000000000..526b3ed3f --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/GetLocal3Ins.java @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.localregs; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.LocalRegTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class GetLocal3Ins extends InstructionDefinition implements GetLocalTypeIns { + + public GetLocal3Ins() { + super(0xd3, "getlocal_3", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + stack.push(new LocalRegTreeItem(ins, 3, localRegs.get(3))); + } + + public int getRegisterId(AVM2Instruction par0) { + return 3; + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/GetLocalIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/GetLocalIns.java new file mode 100644 index 000000000..3dc1b3fa9 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/GetLocalIns.java @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.localregs; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.LocalRegTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class GetLocalIns extends InstructionDefinition implements GetLocalTypeIns { + + public GetLocalIns() { + super(0x62, "getlocal", new int[]{AVM2Code.DAT_LOCAL_REG_INDEX}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + int regIndex = ins.operands[0]; + stack.push(new LocalRegTreeItem(ins, regIndex, localRegs.get(regIndex))); + } + + public int getRegisterId(AVM2Instruction ins) { + return ins.operands[0]; + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/GetLocalTypeIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/GetLocalTypeIns.java new file mode 100644 index 000000000..c59914f70 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/GetLocalTypeIns.java @@ -0,0 +1,12 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.localregs; + +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; + + +public interface GetLocalTypeIns { + public abstract int getRegisterId(AVM2Instruction ins); +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/IncLocalIIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/IncLocalIIns.java new file mode 100644 index 000000000..acd13bbd5 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/IncLocalIIns.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.localregs; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.IncLocalTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class IncLocalIIns extends InstructionDefinition { + + public IncLocalIIns() { + super(0xc2, "inclocal_i", new int[]{AVM2Code.DAT_LOCAL_REG_INDEX}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + int regIndex = ins.operands[0]; + output.add(new IncLocalTreeItem(ins, regIndex)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/IncLocalIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/IncLocalIns.java new file mode 100644 index 000000000..333bb24ac --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/IncLocalIns.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.localregs; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.IncLocalTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class IncLocalIns extends InstructionDefinition { + + public IncLocalIns() { + super(0x92, "inclocal", new int[]{AVM2Code.DAT_LOCAL_REG_INDEX}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + int regIndex = ins.operands[0]; + output.add(new IncLocalTreeItem(ins, regIndex)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/KillIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/KillIns.java new file mode 100644 index 000000000..fca427d9c --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/KillIns.java @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.localregs; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class KillIns extends InstructionDefinition { + + public KillIns() { + super(0x08, "kill", new int[]{AVM2Code.DAT_LOCAL_REG_INDEX}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + //kill local register + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/SetLocal0Ins.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/SetLocal0Ins.java new file mode 100644 index 000000000..27325da0e --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/SetLocal0Ins.java @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.localregs; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.instructions.SetTypeIns; +import com.jpexs.asdec.abc.avm2.treemodel.FindPropertyTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.NewActivationTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.SetLocalTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class SetLocal0Ins extends InstructionDefinition implements SetTypeIns, SetLocalTypeIns { + + public SetLocal0Ins() { + super(0xd4, "setlocal_0", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem val = (TreeItem) stack.pop(); + localRegs.put(0, val); + if (val instanceof NewActivationTreeItem) return; + if (val instanceof FindPropertyTreeItem) return; + //if(val.startsWith("catchscope ")) return; + //if(val.startsWith("newactivation()")) return; + output.add(new SetLocalTreeItem(ins, 0, val)); + } + + public String getObject(Stack stack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body) { + return localRegName(0); + } + + public int getRegisterId(AVM2Instruction ins) { + return 0; + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/SetLocal1Ins.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/SetLocal1Ins.java new file mode 100644 index 000000000..7cd3ed69a --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/SetLocal1Ins.java @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.localregs; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.instructions.SetTypeIns; +import com.jpexs.asdec.abc.avm2.treemodel.FindPropertyTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.NewActivationTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.SetLocalTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class SetLocal1Ins extends InstructionDefinition implements SetTypeIns, SetLocalTypeIns { + + public SetLocal1Ins() { + super(0xd5, "setlocal_1", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem val = (TreeItem) stack.pop(); + localRegs.put(1, val); + if (val instanceof NewActivationTreeItem) return; + if (val instanceof FindPropertyTreeItem) return; + //if(val.startsWith("catchscope ")) return; + //if(val.startsWith("newactivation()")) return; + output.add(new SetLocalTreeItem(ins, 1, val)); + } + + public String getObject(Stack stack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body) { + return localRegName(1); + } + + public int getRegisterId(AVM2Instruction ins) { + return 1; + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/SetLocal2Ins.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/SetLocal2Ins.java new file mode 100644 index 000000000..d9b904f03 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/SetLocal2Ins.java @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.localregs; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.instructions.SetTypeIns; +import com.jpexs.asdec.abc.avm2.treemodel.FindPropertyTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.NewActivationTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.SetLocalTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class SetLocal2Ins extends InstructionDefinition implements SetTypeIns, SetLocalTypeIns { + + public SetLocal2Ins() { + super(0xd6, "setlocal_2", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem val = (TreeItem) stack.pop(); + localRegs.put(2, val); + if (val instanceof NewActivationTreeItem) return; + if (val instanceof FindPropertyTreeItem) return; + //if(val.startsWith("catchscope ")) return; + //if(val.startsWith("newactivation()")) return; + output.add(new SetLocalTreeItem(ins, 2, val)); + } + + public String getObject(Stack stack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body) { + return localRegName(2); + } + + public int getRegisterId(AVM2Instruction ins) { + return 2; + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/SetLocal3Ins.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/SetLocal3Ins.java new file mode 100644 index 000000000..c729c4e4f --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/SetLocal3Ins.java @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.localregs; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.instructions.SetTypeIns; +import com.jpexs.asdec.abc.avm2.treemodel.FindPropertyTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.NewActivationTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.SetLocalTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class SetLocal3Ins extends InstructionDefinition implements SetTypeIns, SetLocalTypeIns { + + public SetLocal3Ins() { + super(0xd7, "setlocal_3", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem val = (TreeItem) stack.pop(); + localRegs.put(3, val); + if (val instanceof NewActivationTreeItem) return; + if (val instanceof FindPropertyTreeItem) return; + //if(val.startsWith("catchscope ")) return; + //if(val.startsWith("newactivation()")) return; + output.add(new SetLocalTreeItem(ins, 3, val)); + } + + public String getObject(Stack stack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body) { + return localRegName(3); + } + + public int getRegisterId(AVM2Instruction ins) { + return 3; + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/SetLocalIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/SetLocalIns.java new file mode 100644 index 000000000..c48fdf2fd --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/SetLocalIns.java @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.localregs; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.instructions.SetTypeIns; +import com.jpexs.asdec.abc.avm2.treemodel.FindPropertyTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.NewActivationTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.SetLocalTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class SetLocalIns extends InstructionDefinition implements SetTypeIns, SetLocalTypeIns { + + public SetLocalIns() { + super(0x63, "setlocal", new int[]{AVM2Code.DAT_LOCAL_REG_INDEX}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem val = (TreeItem) stack.pop(); + localRegs.put(ins.operands[0], val); + if (val instanceof NewActivationTreeItem) return; + if (val instanceof FindPropertyTreeItem) return; + //if(val.startsWith("catchscope ")) return; + //if(val.startsWith("newactivation()")) return; + output.add(new SetLocalTreeItem(ins, ins.operands[0], val)); + } + + public String getObject(Stack stack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body) { + return localRegName(ins.operands[0]); + } + + public int getRegisterId(AVM2Instruction ins) { + return ins.operands[0]; + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/SetLocalTypeIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/SetLocalTypeIns.java new file mode 100644 index 000000000..a2871c412 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/localregs/SetLocalTypeIns.java @@ -0,0 +1,12 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.localregs; + +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; + + +public interface SetLocalTypeIns { + public abstract int getRegisterId(AVM2Instruction ins); +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/DeletePropertyIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/DeletePropertyIns.java new file mode 100644 index 000000000..129ef6848 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/DeletePropertyIns.java @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.other; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.BooleanTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.FullMultinameTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.DeletePropertyTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class DeletePropertyIns extends InstructionDefinition { + + public DeletePropertyIns() { + super(0x6a, "deleteproperty", new int[]{AVM2Code.DAT_MULTINAME_INDEX}); + } + + @Override + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + int multiIndex = (int) ((Long) arguments.get(0)).longValue(); + //if multiname[multinameIndex] is runtime + //pop(name) pop(ns) + Object obj = lda.operandStack.pop(); + //push true if removed + throw new RuntimeException("Cannot remove property"); + + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + int multinameIndex = ins.operands[0]; + FullMultinameTreeItem multiname = resolveMultiname(stack, constants, multinameIndex, ins); + TreeItem obj = (TreeItem) stack.pop(); + stack.add(new BooleanTreeItem(ins, Boolean.TRUE));//property successfully deleted + output.add(new DeletePropertyTreeItem(ins, obj, multiname)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/FindPropertyIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/FindPropertyIns.java new file mode 100644 index 000000000..c507c0468 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/FindPropertyIns.java @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.other; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.FindPropertyTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.FullMultinameTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class FindPropertyIns extends InstructionDefinition { + + public FindPropertyIns() { + super(0x5e, "findproperty", new int[]{AVM2Code.DAT_MULTINAME_INDEX}); + } + + @Override + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + int multiIndex = (int) ((Long) arguments.get(0)).longValue(); + //if is runtime + //pop(name), pop(ns) + throw new RuntimeException("Cannot find property"); + + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + int multinameIndex = ins.operands[0]; + FullMultinameTreeItem multiname = resolveMultiname(stack, constants, multinameIndex, ins); + stack.push(new FindPropertyTreeItem(ins, multiname)); //resolve right object + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/FindPropertyStrictIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/FindPropertyStrictIns.java new file mode 100644 index 000000000..3688dba3b --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/FindPropertyStrictIns.java @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.other; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.FindPropertyTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.FullMultinameTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class FindPropertyStrictIns extends InstructionDefinition { + + public FindPropertyStrictIns() { + super(0x5d, "findpropstrict", new int[]{AVM2Code.DAT_MULTINAME_INDEX}); + } + + @Override + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + int multiIndex = (int) ((Long) arguments.get(0)).longValue(); + //if is runtime + //pop(name), pop(ns) + throw new RuntimeException("Cannot find property"); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + int multinameIndex = ins.operands[0]; + FullMultinameTreeItem multiname = resolveMultiname(stack, constants, multinameIndex, ins); + stack.push(new FindPropertyTreeItem(ins, multiname)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/GetDescendantsIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/GetDescendantsIns.java new file mode 100644 index 000000000..5b8bbc77e --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/GetDescendantsIns.java @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.other; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.FullMultinameTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.GetDescendantsTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class GetDescendantsIns extends InstructionDefinition { + + public GetDescendantsIns() { + super(0x59, "getdescentants", new int[]{AVM2Code.DAT_MULTINAME_INDEX}); + } + + @Override + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + int multiIndex = (int) ((Long) arguments.get(0)).longValue(); + //if is runtime + //pop(name), pop(ns) + Object obj = lda.operandStack.pop(); + throw new RuntimeException("getdescentants not working"); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + int multinameIndex = ins.operands[0]; + FullMultinameTreeItem multiname = resolveMultiname(stack, constants, multinameIndex, ins); + TreeItem obj = (TreeItem) stack.pop(); + stack.push(new GetDescendantsTreeItem(ins, obj, multiname)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/GetGlobalScopeIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/GetGlobalScopeIns.java new file mode 100644 index 000000000..92c0f75bf --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/GetGlobalScopeIns.java @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.other; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class GetGlobalScopeIns extends InstructionDefinition { + + public GetGlobalScopeIns() { + super(0x64, "getglobalscope", new int[]{}); + } + + @Override + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + throw new RuntimeException("getglobalscope not working"); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + stack.push(scopeStack.get(0)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/GetGlobalSlotIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/GetGlobalSlotIns.java new file mode 100644 index 000000000..86deb7119 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/GetGlobalSlotIns.java @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.other; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.GetSlotTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.clauses.ExceptionTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; +import com.jpexs.asdec.abc.types.Multiname; +import com.jpexs.asdec.abc.types.traits.TraitSlotConst; + +import java.util.List; +import java.util.Stack; + + +public class GetGlobalSlotIns extends InstructionDefinition { + + public GetGlobalSlotIns() { + super(0x6e, "getglobalslot", new int[]{AVM2Code.DAT_SLOT_INDEX}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + int slotIndex = ins.operands[0]; + TreeItem obj = (TreeItem) scopeStack.get(0); //scope + Multiname slotname = null; + if (obj instanceof ExceptionTreeItem) { + slotname = constants.constant_multiname[((ExceptionTreeItem) obj).exception.name_index]; + } else { + + for (int t = 0; t < body.traits.traits.length; t++) { + if (body.traits.traits[t] instanceof TraitSlotConst) { + if (((TraitSlotConst) body.traits.traits[t]).slot_id == slotIndex) { + slotname = body.traits.traits[t].getMultiName(constants); + } + } + + } + } + stack.push(new GetSlotTreeItem(ins, obj, slotname)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/GetLexIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/GetLexIns.java new file mode 100644 index 000000000..bf90a88f0 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/GetLexIns.java @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.other; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.GetLexTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; +import com.jpexs.asdec.abc.types.Multiname; + +import java.util.List; +import java.util.Stack; + + +public class GetLexIns extends InstructionDefinition { + + public GetLexIns() { + super(0x60, "getlex", new int[]{AVM2Code.DAT_MULTINAME_INDEX}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + int multinameIndex = ins.operands[0]; + Multiname multiname = constants.constant_multiname[multinameIndex]; + stack.push(new GetLexTreeItem(ins, multiname)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/GetPropertyIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/GetPropertyIns.java new file mode 100644 index 000000000..f2240f52a --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/GetPropertyIns.java @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.other; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.FullMultinameTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.GetPropertyTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class GetPropertyIns extends InstructionDefinition { + + public GetPropertyIns() { + super(0x66, "getproperty", new int[]{AVM2Code.DAT_MULTINAME_INDEX}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + int multinameIndex = ins.operands[0]; + FullMultinameTreeItem multiname = resolveMultiname(stack, constants, multinameIndex, ins); + TreeItem obj = (TreeItem) stack.pop(); + stack.push(new GetPropertyTreeItem(ins, obj, multiname)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/GetScopeObjectIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/GetScopeObjectIns.java new file mode 100644 index 000000000..35964e164 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/GetScopeObjectIns.java @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.other; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class GetScopeObjectIns extends InstructionDefinition { + + + public GetScopeObjectIns() { + super(0x65, "getscopeobject", new int[]{AVM2Code.DAT_SLOT_SCOPE_INDEX}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + int index = ins.operands[0]; + /* System.out.println("Getting scope object"+index+":"); + for(TreeItem ti:scopeStack){ + System.out.println(ti.toString(constants)); + }*/ + stack.push(scopeStack.get(index)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/GetSlotIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/GetSlotIns.java new file mode 100644 index 000000000..f65e90ee5 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/GetSlotIns.java @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.other; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.GetSlotTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.clauses.ExceptionTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; +import com.jpexs.asdec.abc.types.Multiname; +import com.jpexs.asdec.abc.types.traits.TraitSlotConst; + +import java.util.List; +import java.util.Stack; + + +public class GetSlotIns extends InstructionDefinition { + + public GetSlotIns() { + super(0x6c, "getslot", new int[]{AVM2Code.DAT_SLOT_INDEX}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + int slotIndex = ins.operands[0]; + TreeItem obj = (TreeItem) stack.pop(); //scope + Multiname slotname = null; + if (obj instanceof ExceptionTreeItem) { + slotname = constants.constant_multiname[((ExceptionTreeItem) obj).exception.name_index]; + } else { + + for (int t = 0; t < body.traits.traits.length; t++) { + if (body.traits.traits[t] instanceof TraitSlotConst) { + if (((TraitSlotConst) body.traits.traits[t]).slot_id == slotIndex) { + slotname = body.traits.traits[t].getMultiName(constants); + } + } + + } + } + stack.push(new GetSlotTreeItem(ins, obj, slotname)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/GetSuperIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/GetSuperIns.java new file mode 100644 index 000000000..68e03e13f --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/GetSuperIns.java @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.other; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.FullMultinameTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.GetSuperTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class GetSuperIns extends InstructionDefinition { + + public GetSuperIns() { + super(0x04, "getsuper", new int[]{AVM2Code.DAT_MULTINAME_INDEX}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + int multinameIndex = ins.operands[0]; + FullMultinameTreeItem multiname = resolveMultiname(stack, constants, multinameIndex, ins); + TreeItem obj = (TreeItem) stack.pop(); + stack.push(new GetSuperTreeItem(ins, obj, multiname)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/HasNext2Ins.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/HasNext2Ins.java new file mode 100644 index 000000000..5daf7139b --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/HasNext2Ins.java @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.other; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.EachTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.LocalRegTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class HasNext2Ins extends InstructionDefinition { + + public HasNext2Ins() { + super(0x32, "hasnext2", new int[]{AVM2Code.OPT_U8, AVM2Code.OPT_U8}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + int objectReg = ins.operands[0]; + int indexReg = ins.operands[1]; + //stack.push("_loc_" + objectReg + ".hasNext(cnt=_loc_" + indexReg + ")"); + stack.push(new EachTreeItem(ins, new LocalRegTreeItem(ins, indexReg, localRegs.get(indexReg)), new LocalRegTreeItem(ins, objectReg, localRegs.get(objectReg)))); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/HasNextIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/HasNextIns.java new file mode 100644 index 000000000..7289a155c --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/HasNextIns.java @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.other; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.EachTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class HasNextIns extends InstructionDefinition { + + public HasNextIns() { + super(0x1f, "hasnext", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem curIndex = (TreeItem) stack.pop(); + TreeItem obj = (TreeItem) stack.pop(); + stack.push(new EachTreeItem(ins, curIndex, obj)); + + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/InIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/InIns.java new file mode 100644 index 000000000..69a6fcccb --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/InIns.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.other; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.InTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class InIns extends InstructionDefinition { + + public InIns() { + super(0xb4, "in", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem obj = (TreeItem) stack.pop(); + TreeItem name = (TreeItem) stack.pop(); + stack.push(new InTreeItem(ins, name, obj)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/InitPropertyIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/InitPropertyIns.java new file mode 100644 index 000000000..33fbc9e7f --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/InitPropertyIns.java @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.other; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.FullMultinameTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.InitPropertyTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class InitPropertyIns extends InstructionDefinition { + + public InitPropertyIns() { + super(0x68, "initproperty", new int[]{AVM2Code.DAT_MULTINAME_INDEX}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + int multinameIndex = ins.operands[0]; + + TreeItem val = (TreeItem) stack.pop(); + FullMultinameTreeItem multiname = resolveMultiname(stack, constants, multinameIndex, ins); + TreeItem obj = (TreeItem) stack.pop(); + output.add(new InitPropertyTreeItem(ins, obj, multiname, val)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/LabelIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/LabelIns.java new file mode 100644 index 000000000..b77542adc --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/LabelIns.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.other; + +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; + + +public class LabelIns extends InstructionDefinition { +//this can be target of branch + + public LabelIns() { + super(0x09, "label", new int[]{}); + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/NextNameIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/NextNameIns.java new file mode 100644 index 000000000..7f19c5bc6 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/NextNameIns.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.other; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class NextNameIns extends InstructionDefinition { + + public NextNameIns() { + super(0x1e, "nextname", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem index = stack.pop(); + TreeItem obj = stack.pop(); + //stack.push(obj + ".nextName(" + index + ")"); + stack.push(index); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/NextValueIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/NextValueIns.java new file mode 100644 index 000000000..c7bb5d23d --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/NextValueIns.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.other; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class NextValueIns extends InstructionDefinition { + + public NextValueIns() { + super(0x23, "nextvalue", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem index = stack.pop(); + TreeItem obj = stack.pop(); + //stack.push(obj + ".nextValue(" + index + ")"); + stack.push(index); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/NopIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/NopIns.java new file mode 100644 index 000000000..12c1196ea --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/NopIns.java @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.other; + +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; + + +public class NopIns extends InstructionDefinition { + + public NopIns() { + super(0x02, "nop", new int[]{}); + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/ReturnValueIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/ReturnValueIns.java new file mode 100644 index 000000000..3ea6a3936 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/ReturnValueIns.java @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.other; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.ReturnValueTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class ReturnValueIns extends InstructionDefinition { + + public ReturnValueIns() { + super(0x48, "returnvalue", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + output.add(new ReturnValueTreeItem(ins, (TreeItem) stack.pop())); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/ReturnVoidIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/ReturnVoidIns.java new file mode 100644 index 000000000..0dda65fc4 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/ReturnVoidIns.java @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.other; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.ReturnVoidTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class ReturnVoidIns extends InstructionDefinition { + + public ReturnVoidIns() { + super(0x47, "returnvoid", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + output.add(new ReturnVoidTreeItem(ins)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/SetGlobalSlotIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/SetGlobalSlotIns.java new file mode 100644 index 000000000..27d5ee8ea --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/SetGlobalSlotIns.java @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.other; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.instructions.SetTypeIns; +import com.jpexs.asdec.abc.avm2.treemodel.SetGlobalSlotTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class SetGlobalSlotIns extends InstructionDefinition implements SetTypeIns { + + public SetGlobalSlotIns() { + super(0x6f, "setglobalslot", new int[]{AVM2Code.DAT_SLOT_INDEX}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + output.add(new SetGlobalSlotTreeItem(ins, ins.operands[0], (TreeItem) stack.pop())); + } + + public String getObject(Stack stack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body) { + return "globalslot" + ins.operands[0]; + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/SetPropertyIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/SetPropertyIns.java new file mode 100644 index 000000000..ccce9a88d --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/SetPropertyIns.java @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.other; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.instructions.SetTypeIns; +import com.jpexs.asdec.abc.avm2.treemodel.FullMultinameTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.SetPropertyTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class SetPropertyIns extends InstructionDefinition implements SetTypeIns { + + public SetPropertyIns() { + super(0x61, "setproperty", new int[]{AVM2Code.DAT_MULTINAME_INDEX}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + int multinameIndex = ins.operands[0]; + TreeItem value = (TreeItem) stack.pop(); + FullMultinameTreeItem multiname = resolveMultiname(stack, constants, multinameIndex, ins); + TreeItem obj = (TreeItem) stack.pop(); + output.add(new SetPropertyTreeItem(ins, obj, multiname, value)); + } + + public String getObject(Stack stack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body) { + int multinameIndex = ins.operands[0]; + String multiname = resolveMultinameNoPop(0, stack, constants, multinameIndex, ins); + TreeItem obj = stack.get(1 + resolvedCount(constants, multinameIndex)); //pod vrcholem + if ((!obj.toString().equals(""))) multiname = "." + multiname; + return obj + multiname; + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/SetSlotIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/SetSlotIns.java new file mode 100644 index 000000000..56f9f4d7d --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/SetSlotIns.java @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.other; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.instructions.SetTypeIns; +import com.jpexs.asdec.abc.avm2.treemodel.SetSlotTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.clauses.ExceptionTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; +import com.jpexs.asdec.abc.types.Multiname; +import com.jpexs.asdec.abc.types.traits.TraitSlotConst; + +import java.util.List; +import java.util.Stack; + + +public class SetSlotIns extends InstructionDefinition implements SetTypeIns { + + public SetSlotIns() { + super(0x6d, "setslot", new int[]{AVM2Code.DAT_SLOT_INDEX}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + int slotIndex = ins.operands[0]; + TreeItem value = (TreeItem) stack.pop(); + TreeItem obj = (TreeItem) stack.pop(); //scopeId + + if (obj instanceof ExceptionTreeItem) { + return; + } + //if(value.startsWith("catched ")) return; + Multiname slotname = null; + for (int t = 0; t < body.traits.traits.length; t++) { + if (body.traits.traits[t] instanceof TraitSlotConst) { + if (((TraitSlotConst) body.traits.traits[t]).slot_id == slotIndex) { + slotname = body.traits.traits[t].getMultiName(constants); + } + } + + } + output.add(new SetSlotTreeItem(ins, obj, slotname, value)); + } + + public String getObject(Stack stack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body) { + int slotIndex = ins.operands[0]; + ////String obj = stack.get(1); + String slotname = ""; + for (int t = 0; t < body.traits.traits.length; t++) { + if (body.traits.traits[t] instanceof TraitSlotConst) { + if (((TraitSlotConst) body.traits.traits[t]).slot_id == slotIndex) { + slotname = body.traits.traits[t].getMultiName(constants).getName(constants); + } + } + + } + return slotname; + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/SetSuperIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/SetSuperIns.java new file mode 100644 index 000000000..a53c644b5 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/SetSuperIns.java @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.other; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.instructions.SetTypeIns; +import com.jpexs.asdec.abc.avm2.treemodel.FullMultinameTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.SetSuperTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class SetSuperIns extends InstructionDefinition implements SetTypeIns { + + public SetSuperIns() { + super(0x05, "setsuper", new int[]{AVM2Code.DAT_MULTINAME_INDEX}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + int multinameIndex = ins.operands[0]; + + TreeItem value = (TreeItem) stack.pop(); + FullMultinameTreeItem multiname = resolveMultiname(stack, constants, multinameIndex, ins); + TreeItem obj = (TreeItem) stack.pop(); + output.add(new SetSuperTreeItem(ins, value, obj, multiname)); + } + + public String getObject(Stack stack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body) { + int multinameIndex = ins.operands[0]; + String multiname = resolveMultinameNoPop(1, stack, constants, multinameIndex, ins); + String obj = stack.get(1 + resolvedCount(constants, multinameIndex)).toString(constants); + return obj + ".super." + multiname; + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/ThrowIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/ThrowIns.java new file mode 100644 index 000000000..941ee90d9 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/other/ThrowIns.java @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.other; + +import com.jpexs.asdec.abc.ABC; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.ThrowTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodBody; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class ThrowIns extends InstructionDefinition { + + public ThrowIns() { + super(0x03, "throw", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, MethodBody body, ABC abc) { + output.add(new ThrowTreeItem(ins, (TreeItem) stack.pop())); + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/DupIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/DupIns.java new file mode 100644 index 000000000..fb095bbaa --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/DupIns.java @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.stack; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class DupIns extends InstructionDefinition { + + public DupIns() { + super(0x2a, "dup", new int[]{}); + } + + @Override + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + Object obj = lda.operandStack.pop(); + lda.operandStack.push(obj); + lda.operandStack.push(obj); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem v = (TreeItem) stack.pop(); + stack.push(v); + stack.push(v); + + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PopIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PopIns.java new file mode 100644 index 000000000..abaecbcfd --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PopIns.java @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.stack; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class PopIns extends InstructionDefinition { + + public PopIns() { + super(0x29, "pop", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + if (stack.size() > 0) + stack.pop(); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PopScopeIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PopScopeIns.java new file mode 100644 index 000000000..12ed08daa --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PopScopeIns.java @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.stack; + +import com.jpexs.asdec.abc.ABC; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.WithTreeItem; +import com.jpexs.asdec.abc.types.MethodBody; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.ArrayList; +import java.util.List; +import java.util.Stack; + + +public class PopScopeIns extends InstructionDefinition { + + public PopScopeIns() { + super(0x1d, "popscope", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, MethodBody body, ABC abc) { + TreeItem scope = (TreeItem) scopeStack.pop(); + for (int i = output.size() - 1; i >= 0; i--) { + if (output.get(i) instanceof WithTreeItem) { + WithTreeItem wti = (WithTreeItem) output.get(i); + if (wti.scope == scope) { + wti.items = new ArrayList(); + for (int k = i + 1; k < output.size(); k++) { + //output.subList(i+1, output.size()); + wti.items.add(output.get(k)); + } + while (output.size() > i + 1) { + output.remove(i + 1); + } + /*int count=output.size()-1-(i+1); + for(int c=0;c localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + stack.push(new IntegerValueTreeItem(ins, new Long(ins.operands[0]))); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushDoubleIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushDoubleIns.java new file mode 100644 index 000000000..63bd8d43a --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushDoubleIns.java @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.stack; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.FloatValueTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class PushDoubleIns extends InstructionDefinition { + + public PushDoubleIns() { + super(0x2f, "pushdouble", new int[]{AVM2Code.DAT_DOUBLE_INDEX}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + stack.push(new FloatValueTreeItem(ins, constants.constant_double[ins.operands[0]])); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushFalseIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushFalseIns.java new file mode 100644 index 000000000..ed73b4621 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushFalseIns.java @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.stack; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.BooleanTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class PushFalseIns extends InstructionDefinition { + + public PushFalseIns() { + super(0x27, "pushfalse", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + stack.push(new BooleanTreeItem(ins, Boolean.FALSE)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushIntIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushIntIns.java new file mode 100644 index 000000000..5da1ca584 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushIntIns.java @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.stack; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.IntegerValueTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class PushIntIns extends InstructionDefinition { + + public PushIntIns() { + super(0x2d, "pushint", new int[]{AVM2Code.DAT_INT_INDEX}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + stack.push(new IntegerValueTreeItem(ins, constants.constant_int[ins.operands[0]])); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushNamespaceIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushNamespaceIns.java new file mode 100644 index 000000000..e5b81100d --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushNamespaceIns.java @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.stack; + +import com.jpexs.asdec.abc.ABC; +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.NameSpaceTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodBody; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class PushNamespaceIns extends InstructionDefinition { + + public PushNamespaceIns() { + super(0x31, "pushnamespace", new int[]{AVM2Code.OPT_U30}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, MethodBody body, ABC abc) { + stack.push(new NameSpaceTreeItem(ins, ins.operands[0])); + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushNanIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushNanIns.java new file mode 100644 index 000000000..b39d602c5 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushNanIns.java @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.stack; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.NanTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class PushNanIns extends InstructionDefinition { + + public PushNanIns() { + super(0x28, "pushnan", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + stack.push(new NanTreeItem(ins)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushNullIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushNullIns.java new file mode 100644 index 000000000..7681a417a --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushNullIns.java @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.stack; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.NullTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class PushNullIns extends InstructionDefinition { + + public PushNullIns() { + super(0x20, "pushnull", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + stack.push(new NullTreeItem(ins)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushScopeIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushScopeIns.java new file mode 100644 index 000000000..3107b1f92 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushScopeIns.java @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.stack; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class PushScopeIns extends InstructionDefinition { + + public PushScopeIns() { + super(0x30, "pushscope", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + scopeStack.push(stack.pop()); + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushShortIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushShortIns.java new file mode 100644 index 000000000..6cbef6a44 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushShortIns.java @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.stack; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.IntegerValueTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class PushShortIns extends InstructionDefinition { + + public PushShortIns() { + super(0x25, "pushshort", new int[]{AVM2Code.OPT_U30}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + stack.push(new IntegerValueTreeItem(ins, new Long(ins.operands[0]))); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushStringIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushStringIns.java new file mode 100644 index 000000000..8de55f793 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushStringIns.java @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.stack; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.StringTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class PushStringIns extends InstructionDefinition { + + public PushStringIns() { + super(0x2c, "pushstring", new int[]{AVM2Code.DAT_STRING_INDEX}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + stack.push(new StringTreeItem(ins, constants.constant_string[ins.operands[0]])); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushTrueIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushTrueIns.java new file mode 100644 index 000000000..3970ca4ac --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushTrueIns.java @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.stack; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.BooleanTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class PushTrueIns extends InstructionDefinition { + + public PushTrueIns() { + super(0x26, "pushtrue", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + stack.push(new BooleanTreeItem(ins, Boolean.TRUE)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushUIntIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushUIntIns.java new file mode 100644 index 000000000..43a1d5ca3 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushUIntIns.java @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.stack; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.IntegerValueTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class PushUIntIns extends InstructionDefinition { + + public PushUIntIns() { + super(0x2e, "pushuint", new int[]{AVM2Code.DAT_UINT_INDEX}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + stack.push(new IntegerValueTreeItem(ins, constants.constant_uint[ins.operands[0]])); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushUndefinedIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushUndefinedIns.java new file mode 100644 index 000000000..6e112342e --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushUndefinedIns.java @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.stack; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.UndefinedTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class PushUndefinedIns extends InstructionDefinition { + + public PushUndefinedIns() { + super(0x21, "pushundefined", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + stack.push(new UndefinedTreeItem(ins)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushWithIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushWithIns.java new file mode 100644 index 000000000..906b2fcd6 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/PushWithIns.java @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.stack; + +import com.jpexs.asdec.abc.ABC; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.WithTreeItem; +import com.jpexs.asdec.abc.types.MethodBody; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class PushWithIns extends InstructionDefinition { + + public PushWithIns() { + super(0x1c, "pushwith", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, MethodBody body, ABC abc) { + TreeItem w = (TreeItem) stack.pop(); + scopeStack.push(w); + output.add(new WithTreeItem(ins, w)); + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/SwapIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/SwapIns.java new file mode 100644 index 000000000..37e111653 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/stack/SwapIns.java @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.stack; + +import com.jpexs.asdec.abc.ABC; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodBody; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class SwapIns extends InstructionDefinition { + + public SwapIns() { + super(0x2b, "swap", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, MethodBody body, ABC abc) { + + TreeItem o1 = stack.pop(); + TreeItem o2 = stack.pop(); + stack.push(o1); + stack.push(o2); + + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/AsTypeIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/AsTypeIns.java new file mode 100644 index 000000000..38dc6892b --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/AsTypeIns.java @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.types; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.FullMultinameTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.AsTypeTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class AsTypeIns extends InstructionDefinition { + + public AsTypeIns() { + super(0x86, "astype", new int[]{AVM2Code.DAT_MULTINAME_INDEX}); + } + + @Override + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + Long typeIndex = (Long) arguments.get(0); + Object obj = lda.operandStack.pop(); + //if multiname[typeIndex]==obj + lda.operandStack.push(obj); + //else push null + + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem val = (TreeItem) stack.pop(); + + stack.push(new AsTypeTreeItem(ins, val, new FullMultinameTreeItem(ins, ins.operands[0]))); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/AsTypeLateIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/AsTypeLateIns.java new file mode 100644 index 000000000..4d8b16ba2 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/AsTypeLateIns.java @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.types; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.AsTypeTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class AsTypeLateIns extends InstructionDefinition { + + public AsTypeLateIns() { + super(0x87, "astypelate", new int[]{}); + } + + @Override + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + Object objClass = lda.operandStack.pop(); + Object obj = lda.operandStack.pop(); + //if obj.class=objClass + lda.operandStack.push(obj); + //else push null + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem cls = (TreeItem) stack.pop(); + TreeItem val = (TreeItem) stack.pop(); + stack.push(new AsTypeTreeItem(ins, val, cls)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/CoerceAIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/CoerceAIns.java new file mode 100644 index 000000000..49c83d265 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/CoerceAIns.java @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.types; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.CoerceTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class CoerceAIns extends InstructionDefinition { + + public CoerceAIns() { + super(0x82, "coerce_a", new int[]{}); + } + + @Override + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + //coerce any type + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + stack.push(new CoerceTreeItem(ins, (TreeItem) stack.pop(), "*")); + + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/CoerceIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/CoerceIns.java new file mode 100644 index 000000000..7f6b48eee --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/CoerceIns.java @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.types; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.CoerceTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class CoerceIns extends InstructionDefinition { + + public CoerceIns() { + super(0x80, "coerce", new int[]{AVM2Code.DAT_MULTINAME_INDEX}); + } + + @Override + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + int multinameIndex = (int) ((Long) arguments.get(0)).longValue(); + //push and pop coerced value to specified type + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + int multinameIndex = ins.operands[0]; + stack.push(new CoerceTreeItem(ins, (TreeItem) stack.pop(), constants.constant_multiname[multinameIndex].getName(constants))); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/CoerceSIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/CoerceSIns.java new file mode 100644 index 000000000..2c632baf6 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/CoerceSIns.java @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.types; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.CoerceTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class CoerceSIns extends InstructionDefinition { + + public CoerceSIns() { + super(0x85, "coerce_s", new int[]{}); + } + + + @Override + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + Object obj = lda.operandStack.pop(); + lda.operandStack.push(obj.toString()); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + stack.push(new CoerceTreeItem(ins, (TreeItem) stack.pop(), "string")); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/ConvertBIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/ConvertBIns.java new file mode 100644 index 000000000..3a46889c2 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/ConvertBIns.java @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.types; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.ConvertTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class ConvertBIns extends InstructionDefinition { + + public ConvertBIns() { + super(0x76, "convert_b", new int[]{}); + } + + @Override + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + Object value = lda.operandStack.pop(); + boolean bval = false; + if (value instanceof Boolean) { + bval = (Boolean) value; + } else if (value instanceof Long) { + bval = ((Long) value).longValue() != 0; + } else if (value instanceof String) { + bval = !((String) value).equals(""); + } else { + bval = true; + } + lda.operandStack.push(new Boolean(bval)); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + stack.push(new ConvertTreeItem(ins, (TreeItem) stack.pop(), "boolean")); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/ConvertDIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/ConvertDIns.java new file mode 100644 index 000000000..306a9823b --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/ConvertDIns.java @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.types; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.ConvertTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class ConvertDIns extends InstructionDefinition { + + public ConvertDIns() { + super(0x75, "convert_d", new int[]{}); + } + + @Override + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + Object value = lda.operandStack.pop(); + double ret = 0; + if (value == null) { + ret = 0; + } else if (value instanceof Boolean) { + if (((Boolean) value).booleanValue()) { + ret = 1; + } else { + ret = 0; + } + } else if (value instanceof Long) { + ret = ((Long) value).longValue(); + } else if (value instanceof Double) { + ret = ((Double) value).doubleValue(); + } else if (value instanceof String) { + ret = Double.parseDouble((String) value); + } else { + ret = 1; //must call toPrimitive + } + lda.operandStack.push(new Double(ret)); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + stack.push(new ConvertTreeItem(ins, (TreeItem) stack.pop(), "double")); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/ConvertIIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/ConvertIIns.java new file mode 100644 index 000000000..46f916475 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/ConvertIIns.java @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.types; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.ConvertTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class ConvertIIns extends InstructionDefinition { + + public ConvertIIns() { + super(0x73, "convert_i", new int[]{}); + } + + @Override + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + Object value = lda.operandStack.pop(); + long ret = 0; + if (value == null) { + ret = 0; + } else if (value instanceof Boolean) { + if (((Boolean) value).booleanValue()) { + ret = 1; + } else { + ret = 0; + } + } else if (value instanceof Long) { + ret = ((Long) value).longValue(); + } else if (value instanceof String) { + ret = Long.parseLong((String) value); + } else { + ret = 1; //must call toPrimitive + } + lda.operandStack.push(new Long(ret)); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + stack.push(new ConvertTreeItem(ins, (TreeItem) stack.pop(), "int")); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/ConvertOIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/ConvertOIns.java new file mode 100644 index 000000000..1fc873cd8 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/ConvertOIns.java @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.types; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.ConvertTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class ConvertOIns extends InstructionDefinition { + + public ConvertOIns() { + super(0x77, "convert_o", new int[]{}); + } + + @Override + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + //throw if pop is not object + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + stack.push(new ConvertTreeItem(ins, (TreeItem) stack.pop(), "Object")); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/ConvertSIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/ConvertSIns.java new file mode 100644 index 000000000..fb4ccc6d5 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/ConvertSIns.java @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.types; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.ConvertTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class ConvertSIns extends InstructionDefinition { + + public ConvertSIns() { + super(0x70, "convert_s", new int[]{}); + } + + @Override + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + Object obj = lda.operandStack.pop(); + lda.operandStack.push(obj.toString()); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + stack.push(new ConvertTreeItem(ins, (TreeItem) stack.pop(), "string")); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/ConvertUIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/ConvertUIns.java new file mode 100644 index 000000000..4e368a92a --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/ConvertUIns.java @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.types; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.ConvertTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class ConvertUIns extends InstructionDefinition { + + public ConvertUIns() { + super(0x74, "convert_u", new int[]{}); + } + + @Override + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + throw new UnsupportedOperationException("Cannot convert to uint "); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + stack.push(new ConvertTreeItem(ins, (TreeItem) stack.pop(), "uint")); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/InstanceOfIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/InstanceOfIns.java new file mode 100644 index 000000000..8b035c971 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/InstanceOfIns.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.types; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.InstanceOfTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class InstanceOfIns extends InstructionDefinition { + + public InstanceOfIns() { + super(0xb1, "instanceof", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem type = (TreeItem) stack.pop(); + TreeItem value = (TreeItem) stack.pop(); + stack.push(new InstanceOfTreeItem(ins, value, type)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/IsTypeIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/IsTypeIns.java new file mode 100644 index 000000000..d676f103c --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/IsTypeIns.java @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.types; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.FullMultinameTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.IsTypeTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class IsTypeIns extends InstructionDefinition { + + public IsTypeIns() { + super(0xb2, "istype", new int[]{AVM2Code.DAT_MULTINAME_INDEX}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + int multinameIndex = ins.operands[0]; + TreeItem value = (TreeItem) stack.pop(); + stack.push(new IsTypeTreeItem(ins, value, new FullMultinameTreeItem(ins, multinameIndex))); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/IsTypeLateIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/IsTypeLateIns.java new file mode 100644 index 000000000..3ea630b4b --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/IsTypeLateIns.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.types; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.IsTypeTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class IsTypeLateIns extends InstructionDefinition { + + public IsTypeLateIns() { + super(0xb3, "istypelate", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem type = (TreeItem) stack.pop(); + TreeItem value = (TreeItem) stack.pop(); + stack.push(new IsTypeTreeItem(ins, value, type)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/TypeOfIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/TypeOfIns.java new file mode 100644 index 000000000..705461ea9 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/types/TypeOfIns.java @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.types; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.operations.TypeOfTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class TypeOfIns extends InstructionDefinition { + + public TypeOfIns() { + super(0x95, "typeof", new int[]{}); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + stack.push(new TypeOfTreeItem(ins, (TreeItem) stack.pop())); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/xml/CheckFilterIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/xml/CheckFilterIns.java new file mode 100644 index 000000000..9bdbbaf36 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/xml/CheckFilterIns.java @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.xml; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class CheckFilterIns extends InstructionDefinition { + + public CheckFilterIns() { + super(0x78, "checkfilter", new int[]{}); + } + + @Override + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + //if pop() is not XML|XMLList throw + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/xml/DXNSIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/xml/DXNSIns.java new file mode 100644 index 000000000..c29613072 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/xml/DXNSIns.java @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.xml; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; + +import java.util.List; + + +public class DXNSIns extends InstructionDefinition { + + public DXNSIns() { + super(0x06, "dxns", new int[]{AVM2Code.DAT_STRING_INDEX}); + } + + @Override + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + int strIndex = (int) ((Long) arguments.get(0)).longValue(); + String s = constants.constant_string[strIndex]; + System.out.println("Set default XML space " + s); + + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/xml/DXNSLateIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/xml/DXNSLateIns.java new file mode 100644 index 000000000..b6534b1ca --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/xml/DXNSLateIns.java @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.xml; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.UnparsedTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class DXNSLateIns extends InstructionDefinition { + + public DXNSLateIns() { + super(0x07, "dxnslate", new int[]{}); + } + + @Override + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + String s = lda.operandStack.pop().toString(); + System.out.println("Set default XML space " + s); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + TreeItem xmlns = stack.pop(); + stack.push(new UnparsedTreeItem(ins, "XMLNS:" + xmlns.toString(constants))); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/xml/EscXAttrIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/xml/EscXAttrIns.java new file mode 100644 index 000000000..3a0d59f43 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/xml/EscXAttrIns.java @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.xml; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.UnparsedTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class EscXAttrIns extends InstructionDefinition { + + public EscXAttrIns() { + super(0x72, "esc_xattr", new int[]{}); + } + + @Override + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + String s = lda.operandStack.pop().toString(); + //escape + lda.operandStack.push(s); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + stack.push(new UnparsedTreeItem(ins, "esc_xattr(" + stack.pop().toString(constants) + ")")); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/instructions/xml/EscXElemIns.java b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/xml/EscXElemIns.java new file mode 100644 index 000000000..c5b9eae34 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/instructions/xml/EscXElemIns.java @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.instructions.xml; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.LocalDataArea; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.UnparsedTreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; + +import java.util.List; +import java.util.Stack; + + +public class EscXElemIns extends InstructionDefinition { + + public EscXElemIns() { + super(0x71, "esc_xelem", new int[]{}); + } + + @Override + public void execute(LocalDataArea lda, ConstantPool constants, List arguments) { + String s = lda.operandStack.pop().toString(); + //escape + lda.operandStack.push(s); + } + + @Override + public void translate(boolean isStatic, int classIndex, java.util.HashMap localRegs, Stack stack, java.util.Stack scopeStack, ConstantPool constants, AVM2Instruction ins, MethodInfo[] method_info, List output, com.jpexs.asdec.abc.types.MethodBody body, com.jpexs.asdec.abc.ABC abc) { + stack.push(new UnparsedTreeItem(ins, "esc_xelem(" + stack.pop().toString(constants) + ")")); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/parser/ASM3Parser.java b/trunk/src/com/jpexs/asdec/abc/avm2/parser/ASM3Parser.java new file mode 100644 index 000000000..dfc8c7a7b --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/parser/ASM3Parser.java @@ -0,0 +1,443 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.parser; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; + +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; + + +public class ASM3Parser { + + private static class OffsetItem { + + public String label = ""; + public long insPosition; + public int insOperandIndex; + + public OffsetItem(String label, long insOffset, int insOperandIndex) { + this.label = label; + this.insPosition = insOffset; + this.insOperandIndex = insOperandIndex; + } + } + + private static class CaseOffsetItem extends OffsetItem { + + public CaseOffsetItem(String label, long insOffset, int insOperandIndex) { + super(label, insOffset, insOperandIndex); + } + } + + private static class LabelItem { + + public String label = ""; + public int offset; + + public LabelItem(String label, int offset) { + this.label = label; + this.offset = offset; + } + } + + public static AVM2Code parse(InputStream is, ConstantPool constants) throws IOException, ParseException { + return parse(is, constants, null); + } + + public static AVM2Code parse(InputStream is, ConstantPool constants, MissingSymbolHandler missingHandler) throws IOException, ParseException { + AVM2Code code = new AVM2Code(); + + List offsetItems = new ArrayList(); + List labelItems = new ArrayList(); + int offset = 0; + + Flasm3Lexer lexer = new Flasm3Lexer(is); + + ParsedSymbol symb; + AVM2Instruction lastIns = null; + do { + symb = lexer.yylex(); + if (symb.type == ParsedSymbol.TYPE_EOF) break; + if (symb.type == ParsedSymbol.TYPE_COMMENT) { + if (lastIns != null) { + lastIns.comment = (String) symb.value; + } + continue; + } + if (symb.type == ParsedSymbol.TYPE_INSTRUCTION_NAME) { + boolean insFound = false; + for (InstructionDefinition def : AVM2Code.instructionSet) { + if (def.instructionName.equals((String) symb.value)) { + insFound = true; + List operandsList = new ArrayList(); + + for (int i = 0; i < def.operands.length; i++) { + ParsedSymbol parsedOperand = lexer.yylex(); + switch (def.operands[i]) { + case AVM2Code.DAT_MULTINAME_INDEX: + if (parsedOperand.type == ParsedSymbol.TYPE_MULTINAME) { + operandsList.add((int) (long) (Long) parsedOperand.value); + } else { + throw new ParseException("Multiname expected", lexer.yyline()); + } + break; + case AVM2Code.DAT_STRING_INDEX: + if (parsedOperand.type == ParsedSymbol.TYPE_STRING) { + int sid = constants.getStringId((String) parsedOperand.value); + if (sid == 0) { + if ((missingHandler != null) && (missingHandler.missingString((String) parsedOperand.value))) { + sid = constants.addString((String) parsedOperand.value); + } else { + throw new ParseException("Unknown String", lexer.yyline()); + } + } + operandsList.add(sid); + } else { + throw new ParseException("String expected", lexer.yyline()); + } + break; + case AVM2Code.DAT_INT_INDEX: + + if (parsedOperand.type == ParsedSymbol.TYPE_INTEGER) { + long intVal = (Long) parsedOperand.value; + int iid = constants.getIntId(intVal); + if (iid == 0) { + if ((missingHandler != null) && (missingHandler.missingInt(intVal))) { + iid = constants.addInt(intVal); + } else { + throw new ParseException("Unknown int", lexer.yyline()); + } + } + operandsList.add(iid); + } else { + throw new ParseException("Integer expected", lexer.yyline()); + } + break; + case AVM2Code.DAT_UINT_INDEX: + if (parsedOperand.type == ParsedSymbol.TYPE_INTEGER) { + long intVal = (Long) parsedOperand.value; + int iid = constants.getUIntId(intVal); + if (iid == 0) { + if ((missingHandler != null) && (missingHandler.missingUInt(intVal))) { + iid = constants.addUInt(intVal); + } else { + throw new ParseException("Unknown uint", lexer.yyline()); + } + } + operandsList.add(iid); + } else { + throw new ParseException("Integer expected", lexer.yyline()); + } + break; + case AVM2Code.DAT_DOUBLE_INDEX: + if ((parsedOperand.type == ParsedSymbol.TYPE_INTEGER) || (parsedOperand.type == ParsedSymbol.TYPE_FLOAT)) { + + double doubleVal = 0; + if (parsedOperand.type == ParsedSymbol.TYPE_INTEGER) + doubleVal = (Long) parsedOperand.value; + if (parsedOperand.type == ParsedSymbol.TYPE_FLOAT) + doubleVal = (Double) parsedOperand.value; + int did = constants.getDoubleId(doubleVal); + if (did == 0) { + if ((missingHandler != null) && (missingHandler.missingDouble(doubleVal))) { + did = constants.addDouble(doubleVal); + } else { + throw new ParseException("Unknown double", lexer.yyline()); + } + } + operandsList.add(did); + } else { + throw new ParseException("Float value expected", lexer.yyline()); + } + break; + case AVM2Code.DAT_OFFSET: + if (parsedOperand.type == ParsedSymbol.TYPE_IDENTIFIER) { + offsetItems.add(new OffsetItem((String) parsedOperand.value, code.code.size(), i)); + operandsList.add(0); + } else { + throw new ParseException("Offset expected", lexer.yyline()); + } + break; + case AVM2Code.DAT_CASE_BASEOFFSET: + if (parsedOperand.type == ParsedSymbol.TYPE_IDENTIFIER) { + offsetItems.add(new CaseOffsetItem((String) parsedOperand.value, code.code.size(), i)); + operandsList.add(0); + } else { + throw new ParseException("Offset expected", lexer.yyline()); + } + break; + case AVM2Code.OPT_CASE_OFFSETS: + + if (parsedOperand.type == ParsedSymbol.TYPE_INTEGER) { + int patCount = (int) (long) (Long) parsedOperand.value; + operandsList.add(patCount); + + for (int c = 0; c <= patCount; c++) { + parsedOperand = lexer.yylex(); + if (parsedOperand.type == ParsedSymbol.TYPE_IDENTIFIER) { + offsetItems.add(new CaseOffsetItem((String) parsedOperand.value, code.code.size(), i + (c + 1))); + operandsList.add(0); + } else { + throw new ParseException("Offset expected", lexer.yyline()); + } + } + } else { + throw new ParseException("Case count expected", lexer.yyline()); + } + break; + default: + if (parsedOperand.type == ParsedSymbol.TYPE_INTEGER) { + operandsList.add((int) (long) (Long) parsedOperand.value); + } else { + throw new ParseException("Integer expected", lexer.yyline()); + } + } + } + + int operands[] = new int[operandsList.size()]; + for (int i = 0; i < operandsList.size(); i++) { + operands[i] = operandsList.get(i); + } + lastIns = new AVM2Instruction(offset, def, operands, new byte[0]); + code.code.add(lastIns); + offset += lastIns.getBytes().length; + break; + } + } + if (!insFound) { + throw new ParseException("Invalid instruction name:" + (String) symb.value, lexer.yyline()); + } + } else if (symb.type == ParsedSymbol.TYPE_LABEL) { + labelItems.add(new LabelItem((String) symb.value, offset)); + + } else { + throw new ParseException("Unexpected symbol", lexer.yyline()); + } + } while (symb.type != ParsedSymbol.TYPE_EOF); + + for (OffsetItem oi : offsetItems) { + for (LabelItem li : labelItems) { + if (oi.label.equals(li.label)) { + AVM2Instruction ins = code.code.get((int) oi.insPosition); + int relOffset = 0; + if (oi instanceof CaseOffsetItem) { + relOffset = li.offset - (int) ins.offset; + } else { + relOffset = li.offset - ((int) ins.offset + ins.getBytes().length); + } + ins.operands[oi.insOperandIndex] = relOffset; + } + } + } + + /* BufferedReader br = new BufferedReader(new InputStreamReader(is)); + String s = ""; + Pattern patInsName = Pattern.compile("^([a-z0-9_]+) "); + Pattern patLabelName = Pattern.compile("^([a-zA-Z_0-9]+): "); + Pattern patInt = Pattern.compile("^([+-]?[0-9]+) "); + Pattern patDouble = Pattern.compile("^([+-]?[0-9e.]+) "); + Pattern patMultiname = Pattern.compile("^m\\[([0-9]+)\\]\"[^\"]*\" "); + Pattern patString = Pattern.compile("\"([^\"]*)\" "); + Pattern patofs = Pattern.compile("^([a-zA-Z_0-9]+) "); + + + long line = 0; + + while ((s = br.readLine()) != null) { + line++; + s += " "; + Matcher m = patInsName.matcher(s); + if (m.find()) { + String insName = m.group(1); + boolean insFound = false; + for (InstructionDefinition def : AVM2Code.instructionSet) { + if (def.instructionName.equals(insName)) { + insFound = true; + s = s.substring(insName.length() + 1); + List operandsList = new ArrayList(); + + for (int i = 0; i < def.operands.length; i++) { + switch (def.operands[i]) { + case AVM2Code.DAT_MULTINAME_INDEX: + m = patMultiname.matcher(s); + if (m.find()) { + operandsList.add(Integer.parseInt(m.group(1))); + s = s.substring(m.group(0).length()); + } else { + throw new ParseException("Invalid multiname", line); + } + break; + case AVM2Code.DAT_STRING_INDEX: + m = patString.matcher(s); + if (m.find()) { + String str = m.group(1); + int sid = constants.getStringId(str); + if (sid == 0) { + if((missingHandler!=null)&&(missingHandler.missingString(str))){ + sid=constants.addString(str); + }else{ + throw new ParseException("Unknown String", line); + } + } + operandsList.add(sid); + s = s.substring(m.group(0).length()); + } else { + throw new ParseException("Invalid String", line); + } + break; + case AVM2Code.DAT_INT_INDEX: + m = patInt.matcher(s); + if (m.find()) { + long intVal=Integer.parseInt(m.group(1)); + int iid = constants.getIntId(intVal); + if (iid == 0) { + if((missingHandler!=null)&&(missingHandler.missingInt(intVal))){ + iid=constants.addInt(intVal); + }else{ + throw new ParseException("Unknown int", line); + } + } + operandsList.add(iid); + s = s.substring(m.group(0).length()); + } else { + throw new ParseException("Invalid int value", line); + } + break; + case AVM2Code.DAT_UINT_INDEX: + m = patInt.matcher(s); + if (m.find()) { + long intVal=Integer.parseInt(m.group(1)); + int iid = constants.getUIntId(intVal); + if (iid == 0) { + if((missingHandler!=null)&&(missingHandler.missingUInt(intVal))){ + iid=constants.addUInt(intVal); + }else{ + throw new ParseException("Unknown uint", line); + } + } + operandsList.add(iid); + s = s.substring(m.group(0).length()); + } else { + throw new ParseException("Invalid uint value", line); + } + break; + case AVM2Code.DAT_DOUBLE_INDEX: + m = patDouble.matcher(s); + if (m.find()) { + double doubleVal=Double.parseDouble(m.group(1)); + int did = constants.getDoubleId(doubleVal); + if (did == 0) { + if((missingHandler!=null)&&(missingHandler.missingDouble(doubleVal))){ + did=constants.addDouble(doubleVal); + }else{ + throw new ParseException("Unknown double", line); + } + } + operandsList.add(did); + s = s.substring(m.group(0).length()); + } else { + throw new ParseException("Invalid double value", line); + } + break; + case AVM2Code.DAT_OFFSET: + m = patofs.matcher(s); + if (m.find()) { + offsetItems.add(new OffsetItem(m.group(1), code.code.size(), i)); + operandsList.add(0); + s = s.substring(m.group(0).length()); + } else { + throw new ParseException("Invalid offset value", line); + } + break; + case AVM2Code.DAT_CASE_BASEOFFSET: + m = patofs.matcher(s); + if (m.find()) { + offsetItems.add(new CaseOffsetItem(m.group(1), code.code.size(), i)); + operandsList.add(0); + s = s.substring(m.group(0).length()); + } else { + throw new ParseException("Invalid offset value", line); + } + break; + case AVM2Code.OPT_CASE_OFFSETS: + m = patInt.matcher(s); + if (m.find()) { + int patCount = Integer.parseInt(m.group(1)); + operandsList.add(patCount); + s = s.substring(m.group(0).length()); + m = patofs.matcher(s); + int k = 1; + for (int c = 0; c <= patCount; c++) { + if (m.find()) { + offsetItems.add(new CaseOffsetItem(m.group(1), code.code.size(), i + k)); + operandsList.add(0); + s = s.substring(m.group(0).length()); + m = patofs.matcher(s); + k++; + } else { + throw new ParseException("Invalid case count", line); + } + } + } else { + throw new ParseException("Invalid case count", line); + } + break; + default: + m = patInt.matcher(s); + if (m.find()) { + operandsList.add(Integer.parseInt(m.group(1))); + s = s.substring(m.group(0).length()); + } else { + throw new ParseException("Invalid value", line); + } + } + } + + int operands[] = new int[operandsList.size()]; + for (int i = 0; i < operandsList.size(); i++) { + operands[i] = operandsList.get(i); + } + AVM2Instruction ins = new AVM2Instruction(offset, def, operands, new byte[0]); + code.code.add(ins); + offset += ins.getBytes().length; + break; + } + } + if (!insFound) { + throw new ParseException("Invalid instruction name:" + insName, line); + } + } else { + m = patLabelName.matcher(s); + if (m.find()) { + labelItems.add(new LabelItem(m.group(1), offset)); + } else { + throw new ParseException("Invalid instruction name", line); + } + } + } + + for (OffsetItem oi : offsetItems) { + for (LabelItem li : labelItems) { + if (oi.label.equals(li.label)) { + AVM2Instruction ins = code.code.get((int) oi.insPosition); + int relOffset = 0; + if (oi instanceof CaseOffsetItem) { + relOffset = li.offset - (int) ins.offset; + } else { + relOffset = li.offset - ((int) ins.offset + ins.getBytes().length); + } + ins.operands[oi.insOperandIndex] = relOffset; + } + } + }*/ + return code; + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/parser/Flasm3Lexer.java b/trunk/src/com/jpexs/asdec/abc/avm2/parser/Flasm3Lexer.java new file mode 100644 index 000000000..26cec68fd --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/parser/Flasm3Lexer.java @@ -0,0 +1,890 @@ +/* The following code was generated by JFlex 1.4.3 on 18.8.10 12:17 */ + +/* Flash assembler language lexer specification */ + +package com.jpexs.asdec.abc.avm2.parser; + + +/** + * This class is a scanner generated by + * JFlex 1.4.3 + * on 18.8.10 12:17 from the specification file + * D:/Dokumenty/Programovani/JavaSE/ASDec/trunk/src/com/jpexs/asdec/abc/avm2/parser/flasm3.flex + */ +public final class Flasm3Lexer { + + /** + * This character denotes the end of file + */ + public static final int YYEOF = -1; + + /** + * initial size of the lookahead buffer + */ + private static final int ZZ_BUFFERSIZE = 16384; + + /** + * lexical states + */ + public static final int STRING = 2; + public static final int YYINITIAL = 0; + public static final int PARAMETERS = 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, 0, 1, 1, 2, 2 + }; + + /** + * Translates characters to character classes + */ + private static final String ZZ_CMAP_PACKED = + "\11\12\1\4\1\2\1\0\1\4\1\1\16\12\4\0\1\4\1\0" + + "\1\26\1\0\1\11\2\0\1\34\3\0\1\23\1\0\1\17\1\20" + + "\1\0\1\16\3\35\4\24\2\7\1\15\1\3\5\0\4\11\1\21" + + "\25\11\1\6\1\25\1\10\1\0\1\14\1\0\1\13\1\27\2\13" + + "\1\22\1\32\6\13\1\5\1\31\3\13\1\33\1\13\1\30\6\13" + + "\4\0\41\12\2\0\4\11\4\0\1\11\2\0\1\12\7\0\1\11" + + "\4\0\1\11\5\0\27\11\1\0\37\11\1\0\u013f\11\31\0\162\11" + + "\4\0\14\11\16\0\5\11\11\0\1\11\21\0\130\12\5\0\23\12" + + "\12\0\1\11\13\0\1\11\1\0\3\11\1\0\1\11\1\0\24\11" + + "\1\0\54\11\1\0\46\11\1\0\5\11\4\0\202\11\1\0\4\12" + + "\3\0\105\11\1\0\46\11\2\0\2\11\6\0\20\11\41\0\46\11" + + "\2\0\1\11\7\0\47\11\11\0\21\12\1\0\27\12\1\0\3\12" + + "\1\0\1\12\1\0\2\12\1\0\1\12\13\0\33\11\5\0\3\11" + + "\15\0\4\12\14\0\6\12\13\0\32\11\5\0\13\11\16\12\7\0" + + "\12\12\4\0\2\11\1\12\143\11\1\0\1\11\10\12\1\0\6\12" + + "\2\11\2\12\1\0\4\12\2\11\12\12\3\11\2\0\1\11\17\0" + + "\1\12\1\11\1\12\36\11\33\12\2\0\3\11\60\0\46\11\13\12" + + "\1\11\u014f\0\3\12\66\11\2\0\1\12\1\11\20\12\2\0\1\11" + + "\4\12\3\0\12\11\2\12\2\0\12\12\21\0\3\12\1\0\10\11" + + "\2\0\2\11\2\0\26\11\1\0\7\11\1\0\1\11\3\0\4\11" + + "\2\0\1\12\1\11\7\12\2\0\2\12\2\0\3\12\11\0\1\12" + + "\4\0\2\11\1\0\3\11\2\12\2\0\12\12\4\11\15\0\3\12" + + "\1\0\6\11\4\0\2\11\2\0\26\11\1\0\7\11\1\0\2\11" + + "\1\0\2\11\1\0\2\11\2\0\1\12\1\0\5\12\4\0\2\12" + + "\2\0\3\12\13\0\4\11\1\0\1\11\7\0\14\12\3\11\14\0" + + "\3\12\1\0\11\11\1\0\3\11\1\0\26\11\1\0\7\11\1\0" + + "\2\11\1\0\5\11\2\0\1\12\1\11\10\12\1\0\3\12\1\0" + + "\3\12\2\0\1\11\17\0\2\11\2\12\2\0\12\12\1\0\1\11" + + "\17\0\3\12\1\0\10\11\2\0\2\11\2\0\26\11\1\0\7\11" + + "\1\0\2\11\1\0\5\11\2\0\1\12\1\11\6\12\3\0\2\12" + + "\2\0\3\12\10\0\2\12\4\0\2\11\1\0\3\11\4\0\12\12" + + "\1\0\1\11\20\0\1\12\1\11\1\0\6\11\3\0\3\11\1\0" + + "\4\11\3\0\2\11\1\0\1\11\1\0\2\11\3\0\2\11\3\0" + + "\3\11\3\0\10\11\1\0\3\11\4\0\5\12\3\0\3\12\1\0" + + "\4\12\11\0\1\12\17\0\11\12\11\0\1\11\7\0\3\12\1\0" + + "\10\11\1\0\3\11\1\0\27\11\1\0\12\11\1\0\5\11\4\0" + + "\7\12\1\0\3\12\1\0\4\12\7\0\2\12\11\0\2\11\4\0" + + "\12\12\22\0\2\12\1\0\10\11\1\0\3\11\1\0\27\11\1\0" + + "\12\11\1\0\5\11\2\0\1\12\1\11\7\12\1\0\3\12\1\0" + + "\4\12\7\0\2\12\7\0\1\11\1\0\2\11\4\0\12\12\22\0" + + "\2\12\1\0\10\11\1\0\3\11\1\0\27\11\1\0\20\11\4\0" + + "\6\12\2\0\3\12\1\0\4\12\11\0\1\12\10\0\2\11\4\0" + + "\12\12\22\0\2\12\1\0\22\11\3\0\30\11\1\0\11\11\1\0" + + "\1\11\2\0\7\11\3\0\1\12\4\0\6\12\1\0\1\12\1\0" + + "\10\12\22\0\2\12\15\0\60\11\1\12\2\11\7\12\4\0\10\11" + + "\10\12\1\0\12\12\47\0\2\11\1\0\1\11\2\0\2\11\1\0" + + "\1\11\2\0\1\11\6\0\4\11\1\0\7\11\1\0\3\11\1\0" + + "\1\11\1\0\1\11\2\0\2\11\1\0\4\11\1\12\2\11\6\12" + + "\1\0\2\12\1\11\2\0\5\11\1\0\1\11\1\0\6\12\2\0" + + "\12\12\2\0\2\11\42\0\1\11\27\0\2\12\6\0\12\12\13\0" + + "\1\12\1\0\1\12\1\0\1\12\4\0\2\12\10\11\1\0\42\11" + + "\6\0\24\12\1\0\2\12\4\11\4\0\10\12\1\0\44\12\11\0" + + "\1\12\71\0\42\11\1\0\5\11\1\0\2\11\1\0\7\12\3\0" + + "\4\12\6\0\12\12\6\0\6\11\4\12\106\0\46\11\12\0\51\11" + + "\7\0\132\11\5\0\104\11\5\0\122\11\6\0\7\11\1\0\77\11" + + "\1\0\1\11\1\0\4\11\2\0\7\11\1\0\1\11\1\0\4\11" + + "\2\0\47\11\1\0\1\11\1\0\4\11\2\0\37\11\1\0\1\11" + + "\1\0\4\11\2\0\7\11\1\0\1\11\1\0\4\11\2\0\7\11" + + "\1\0\7\11\1\0\27\11\1\0\37\11\1\0\1\11\1\0\4\11" + + "\2\0\7\11\1\0\47\11\1\0\23\11\16\0\11\12\56\0\125\11" + + "\14\0\u026c\11\2\0\10\11\12\0\32\11\5\0\113\11\3\0\3\11" + + "\17\0\15\11\1\0\4\11\3\12\13\0\22\11\3\12\13\0\22\11" + + "\2\12\14\0\15\11\1\0\3\11\1\0\2\12\14\0\64\11\40\12" + + "\3\0\1\11\3\0\2\11\1\12\2\0\12\12\41\0\3\12\2\0" + + "\12\12\6\0\130\11\10\0\51\11\1\12\126\0\35\11\3\0\14\12" + + "\4\0\14\12\12\0\12\12\36\11\2\0\5\11\u038b\0\154\11\224\0" + + "\234\11\4\0\132\11\6\0\26\11\2\0\6\11\2\0\46\11\2\0" + + "\6\11\2\0\10\11\1\0\1\11\1\0\1\11\1\0\1\11\1\0" + + "\37\11\2\0\65\11\1\0\7\11\1\0\1\11\3\0\3\11\1\0" + + "\7\11\3\0\4\11\2\0\6\11\4\0\15\11\5\0\3\11\1\0" + + "\7\11\17\0\4\12\32\0\5\12\20\0\2\11\23\0\1\11\13\0" + + "\4\12\6\0\6\12\1\0\1\11\15\0\1\11\40\0\22\11\36\0" + + "\15\12\4\0\1\12\3\0\6\12\27\0\1\11\4\0\1\11\2\0" + + "\12\11\1\0\1\11\3\0\5\11\6\0\1\11\1\0\1\11\1\0" + + "\1\11\1\0\4\11\1\0\3\11\1\0\7\11\3\0\3\11\5\0" + + "\5\11\26\0\44\11\u0e81\0\3\11\31\0\11\11\6\12\1\0\5\11" + + "\2\0\5\11\4\0\126\11\2\0\2\12\2\0\3\11\1\0\137\11" + + "\5\0\50\11\4\0\136\11\21\0\30\11\70\0\20\11\u0200\0\u19b6\11" + + "\112\0\u51a6\11\132\0\u048d\11\u0773\0\u2ba4\11\u215c\0\u012e\11\2\0\73\11" + + "\225\0\7\11\14\0\5\11\5\0\1\11\1\12\12\11\1\0\15\11" + + "\1\0\5\11\1\0\1\11\1\0\2\11\1\0\2\11\1\0\154\11" + + "\41\0\u016b\11\22\0\100\11\2\0\66\11\50\0\15\11\3\0\20\12" + + "\20\0\4\12\17\0\2\11\30\0\3\11\31\0\1\11\6\0\5\11" + + "\1\0\207\11\2\0\1\12\4\0\1\11\13\0\12\12\7\0\32\11" + + "\4\0\1\11\1\0\32\11\12\0\132\11\3\0\6\11\2\0\6\11" + + "\2\0\6\11\2\0\3\11\3\0\2\11\3\0\2\11\22\0\3\12" + + "\4\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\1\1\3\2\4\1\1\1\5" + + "\2\6\1\7\1\10\1\11\1\10\1\11\2\1\1\12" + + "\1\0\1\13\1\14\2\15\1\16\1\17\1\20\1\21" + + "\1\22\1\23\1\24\1\25\1\0\1\26\1\0\1\26" + + "\1\0\1\15\1\0\1\26\2\0\1\27"; + + private static int[] zzUnpackAction() { + int[] result = new int[46]; + 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\36\0\74\0\132\0\170\0\226\0\264\0\322" + + "\0\360\0\132\0\u010e\0\132\0\u012c\0\132\0\u014a\0\u0168" + + "\0\u0186\0\u01a4\0\u01c2\0\u01e0\0\u01fe\0\132\0\264\0\132" + + "\0\132\0\u021c\0\u023a\0\132\0\132\0\132\0\132\0\132" + + "\0\132\0\132\0\132\0\u0258\0\u0276\0\u0294\0\u01c2\0\u01fe" + + "\0\132\0\u02b2\0\u02d0\0\u02d0\0\u02ee\0\132"; + + private static int[] zzUnpackRowMap() { + int[] result = new int[46]; + 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 = + "\4\4\1\5\1\6\3\4\1\7\1\4\1\6\1\7" + + "\4\4\1\7\1\6\4\4\5\6\2\4\1\10\1\11" + + "\1\12\22\10\1\13\1\14\7\10\1\4\1\15\1\16" + + "\1\17\1\4\1\20\1\4\1\21\1\4\1\22\1\4" + + "\2\22\1\4\1\23\1\24\1\25\2\22\1\4\1\21" + + "\1\4\1\26\5\22\1\4\1\21\42\0\1\5\36\0" + + "\1\6\1\0\1\6\1\0\2\27\2\6\1\30\1\6" + + "\2\0\1\27\1\6\1\0\1\6\2\0\5\6\1\0" + + "\1\6\5\0\1\27\1\0\1\27\1\0\4\27\1\30" + + "\1\27\2\0\2\27\1\0\1\27\2\0\5\27\1\0" + + "\1\27\1\10\2\0\22\10\2\0\7\10\2\0\1\12" + + "\33\0\2\31\1\0\13\31\1\32\5\31\1\33\1\34" + + "\1\35\1\36\1\37\1\40\1\41\1\42\1\43\1\32" + + "\2\0\1\16\33\0\1\17\2\0\33\17\5\0\1\22" + + "\1\44\1\22\1\0\4\22\1\0\1\22\2\0\2\22" + + "\1\0\1\22\2\0\5\22\1\0\1\22\7\0\1\21" + + "\6\0\1\21\1\0\1\45\2\46\1\0\1\21\10\0" + + "\1\21\5\0\1\22\1\0\1\22\1\0\4\22\1\0" + + "\1\22\2\0\2\22\1\0\1\22\2\0\5\22\1\0" + + "\1\22\7\0\1\47\6\0\1\47\1\0\1\45\2\46" + + "\1\0\1\47\10\0\1\47\7\0\1\21\6\0\1\47" + + "\1\0\1\50\3\0\1\21\10\0\1\21\7\0\1\45" + + "\6\0\1\45\5\0\1\45\10\0\1\45\16\0\1\33" + + "\5\0\1\33\10\0\1\33\16\0\1\51\5\0\1\51" + + "\10\0\1\51\7\0\1\52\6\0\1\52\5\0\1\52" + + "\10\0\1\52\7\0\1\45\6\0\1\45\2\0\2\46" + + "\1\0\1\45\10\0\1\45\7\0\1\53\6\0\1\53" + + "\1\54\3\0\1\54\1\53\10\0\1\53\7\0\1\52" + + "\1\55\5\0\1\52\5\0\1\52\10\0\1\52\7\0" + + "\1\53\6\0\1\53\5\0\1\53\10\0\1\53\26\0" + + "\1\56\7\0"; + + private static int[] zzUnpackTrans() { + int[] result = new int[780]; + 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\5\1\1\11\1\1\1\11\1\1\1\11" + + "\7\1\1\11\1\0\2\11\2\1\10\11\1\0\1\1" + + "\1\0\1\1\1\0\1\11\1\0\1\1\2\0\1\11"; + + private static int[] zzUnpackAttribute() { + int[] result = new int[46]; + 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[] = new char[ZZ_BUFFERSIZE]; + + /** + * 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; + + /** + * number of newlines encountered up to the start of the matched text + */ + private int yyline; + + /** + * the number of characters up to the start of the matched text + */ + private int yychar; + + /** + * the number of characters from the last newline up to the start of the + * matched text + */ + private int yycolumn; + + /** + * 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; + + /** + * denotes if the user-EOF-code has already been executed + */ + private boolean zzEOFDone; + + /* user code: */ + + StringBuffer string = new StringBuffer(); + boolean isMultiname = false; + long multinameId = 0; + + + /** + * Create an empty lexer, yyrset will be called later to reset and assign + * the reader + */ + public Flasm3Lexer() { + + } + + public int yychar() { + return yychar; + } + + public int yyline() { + return yyline + 1; + } + + + /** + * 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 Flasm3Lexer(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 Flasm3Lexer(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 < 1722) { + int count = packed.charAt(i++); + char value = packed.charAt(i++); + do map[j++] = value; while (--count > 0); + } + return map; + } + + + /** + * Refills the input buffer. + * + * @return false, iff there was new input. + * @throws java.io.IOException if any I/O-Error occurs + */ + private boolean zzRefill() throws java.io.IOException { + + /* first: make room (if you can) */ + if (zzStartRead > 0) { + System.arraycopy(zzBuffer, zzStartRead, + zzBuffer, 0, + zzEndRead - zzStartRead); + + /* translate stored positions */ + zzEndRead -= zzStartRead; + zzCurrentPos -= zzStartRead; + zzMarkedPos -= zzStartRead; + zzStartRead = 0; + } + + /* is the buffer big enough? */ + if (zzCurrentPos >= zzBuffer.length) { + /* if not: blow it up */ + char newBuffer[] = new char[zzCurrentPos * 2]; + System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); + zzBuffer = newBuffer; + } + + /* finally: fill the buffer with new input */ + int numRead = zzReader.read(zzBuffer, zzEndRead, + zzBuffer.length - zzEndRead); + + if (numRead > 0) { + zzEndRead += numRead; + return false; + } + // unlikely but not impossible: read 0 characters, but not at end of stream + if (numRead == 0) { + int c = zzReader.read(); + if (c == -1) { + return true; + } else { + zzBuffer[zzEndRead++] = (char) c; + return false; + } + } + + // numRead < 0 + return true; + } + + + /** + * 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(); + } + + + /** + * 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 ZZ_INITIAL. + * + * @param reader the new input stream + */ + public final void yyreset(java.io.Reader reader) { + zzReader = reader; + zzAtBOL = true; + zzAtEOF = false; + zzEOFDone = false; + zzEndRead = zzStartRead = 0; + zzCurrentPos = zzMarkedPos = 0; + yyline = yychar = yycolumn = 0; + zzLexicalState = YYINITIAL; + } + + + /** + * Returns the current lexical state. + */ + public final int yystate() { + return zzLexicalState; + } + + + /** + * Enters a new lexical state + * + * @param newState the new lexical state + */ + 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 + * @throws java.io.IOException if any I/O-Error occurs + */ + public ParsedSymbol yylex() throws java.io.IOException, ParseException { + 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; + + yychar += zzMarkedPosL - zzStartRead; + + boolean zzR = false; + for (zzCurrentPosL = zzStartRead; zzCurrentPosL < zzMarkedPosL; + zzCurrentPosL++) { + switch (zzBufferL[zzCurrentPosL]) { + case '\u000B': + case '\u000C': + case '\u0085': + case '\u2028': + case '\u2029': + yyline++; + yycolumn = 0; + zzR = false; + break; + case '\r': + yyline++; + yycolumn = 0; + zzR = true; + break; + case '\n': + if (zzR) + zzR = false; + else { + yyline++; + yycolumn = 0; + } + break; + default: + zzR = false; + yycolumn++; + } + } + + if (zzR) { + // peek one character ahead if it is \n (if we have counted one line too much) + boolean zzPeek; + if (zzMarkedPosL < zzEndReadL) + zzPeek = zzBufferL[zzMarkedPosL] == '\n'; + else if (zzAtEOF) + zzPeek = false; + else { + boolean eof = zzRefill(); + zzEndReadL = zzEndRead; + zzMarkedPosL = zzMarkedPos; + zzBufferL = zzBuffer; + if (eof) + zzPeek = false; + else + zzPeek = zzBufferL[zzMarkedPosL] == '\n'; + } + if (zzPeek) yyline--; + } + zzAction = -1; + + zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; + + 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 8: { + return new ParsedSymbol(ParsedSymbol.TYPE_IDENTIFIER, yytext()); + } + case 24: + break; + case 21: { + string.append('\''); + } + case 25: + break; + case 9: { + return new ParsedSymbol(ParsedSymbol.TYPE_INTEGER, new Long(Long.parseLong((yytext())))); + } + case 26: + break; + case 3: { + string.append(yytext()); + } + case 27: + break; + case 13: { + char val = (char) Integer.parseInt(yytext().substring(1), 8); + string.append(val); + } + case 28: + break; + case 5: { + yybegin(PARAMETERS); + // length also includes the trailing quote + if (isMultiname) { + return new ParsedSymbol(ParsedSymbol.TYPE_MULTINAME, new Long(multinameId)); + } else { + return new ParsedSymbol(ParsedSymbol.TYPE_STRING, string.toString()); + } + } + case 29: + break; + case 20: { + string.append('\r'); + } + case 30: + break; + case 6: { + yybegin(YYINITIAL); + } + case 31: + break; + case 2: { + yybegin(PARAMETERS); + return new ParsedSymbol(ParsedSymbol.TYPE_INSTRUCTION_NAME, yytext()); + } + case 32: + break; + case 7: { + return new ParsedSymbol(ParsedSymbol.TYPE_COMMENT, yytext().substring(1)); + } + case 33: + break; + case 11: { + String s = yytext(); + return new ParsedSymbol(ParsedSymbol.TYPE_LABEL, s.substring(0, s.length() - 1)); + } + case 34: + break; + case 16: { + string.append('\b'); + } + case 35: + break; + case 4: { + throw new ParseException("Unterminated string at end of line", yyline + 1); + } + case 36: + break; + case 10: { + isMultiname = false; + yybegin(STRING); + string.setLength(0); + } + case 37: + break; + case 17: { + string.append('\t'); + } + case 38: + break; + case 22: { + return new ParsedSymbol(ParsedSymbol.TYPE_FLOAT, new Double(Double.parseDouble((yytext())))); + } + case 39: + break; + case 14: { + string.append('\\'); + } + case 40: + break; + case 12: { + throw new ParseException("Illegal escape sequence \"" + yytext() + "\"", yyline + 1); + } + case 41: + break; + case 23: { + isMultiname = true; + String s = yytext(); + multinameId = Long.parseLong(s.substring(2, s.length() - 2)); + yybegin(STRING); + string.setLength(0); + } + case 42: + break; + case 18: { + string.append('\n'); + } + case 43: + break; + case 19: { + string.append('\f'); + } + case 44: + break; + case 15: { + string.append('\"'); + } + case 45: + break; + case 1: { + } + case 46: + break; + default: + if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { + zzAtEOF = true; + { + return new ParsedSymbol(ParsedSymbol.TYPE_EOF); + } + } else { + zzScanError(ZZ_NO_MATCH); + } + } + } + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/parser/MissingSymbolHandler.java b/trunk/src/com/jpexs/asdec/abc/avm2/parser/MissingSymbolHandler.java new file mode 100644 index 000000000..96924d0e6 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/parser/MissingSymbolHandler.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.parser; + + +public interface MissingSymbolHandler { + public boolean missingString(String value); + + public boolean missingInt(long value); + + public boolean missingUInt(long value); + + public boolean missingDouble(double value); + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/parser/ParseException.java b/trunk/src/com/jpexs/asdec/abc/avm2/parser/ParseException.java new file mode 100644 index 000000000..cb910267a --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/parser/ParseException.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.parser; + + +public class ParseException extends Exception { + public long line; + public String text; + + public ParseException(String text, long line) { + super("ParseException:" + text + " on line " + line); + this.line = line; + this.text = text; + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/parser/ParsedSymbol.java b/trunk/src/com/jpexs/asdec/abc/avm2/parser/ParsedSymbol.java new file mode 100644 index 000000000..88f98a0fa --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/parser/ParsedSymbol.java @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.parser; + + +public class ParsedSymbol { + public int type; + public Object value; + + public static final int TYPE_STRING = 1; + public static final int TYPE_MULTINAME = 2; + public static final int TYPE_INSTRUCTION_NAME = 3; + public static final int TYPE_INTEGER = 4; + public static final int TYPE_FLOAT = 5; + public static final int TYPE_IDENTIFIER = 6; + public static final int TYPE_EOF = 7; + public static final int TYPE_LABEL = 8; + public static final int TYPE_COMMENT = 9; + + public ParsedSymbol(int type, Object value) { + this.type = type; + this.value = value; + } + + public ParsedSymbol(int type) { + this.type = type; + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/parser/flasm3.flex b/trunk/src/com/jpexs/asdec/abc/avm2/parser/flasm3.flex new file mode 100644 index 000000000..472b7357e --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/parser/flasm3.flex @@ -0,0 +1,156 @@ +/* Flash assembler language lexer specification */ + +package com.jpexs.asdec.abc.avm2.parser; + +%% + +%public +%class Flasm3Lexer +%final +%unicode +%char +%line +%column +%type ParsedSymbol +%throws ParseException + +%{ + + StringBuffer string = new StringBuffer(); + boolean isMultiname=false; + long multinameId=0; + + + /** + * Create an empty lexer, yyrset will be called later to reset and assign + * the reader + */ + public Flasm3Lexer() { + + } + + public int yychar() { + return yychar; + } + + public int yyline() { + return yyline+1; + } + +%} + +/* main character classes */ +LineTerminator = \r|\n|\r\n + +InputCharacter = [^\r\n] +Comment = ";" {InputCharacter}* + +WhiteSpace = [ \t\f]+ + +Multiname = m\[[0-9]+\] + +/* identifiers */ + +Identifier = [:jletter:][:jletterdigit:]* + +InstructionName = [a-z][a-z0-9_]* + +Label = {Identifier}: + + + +/* integer literals */ +NumberLiteral = 0 | -?[1-9][0-9]* + +/* floating point literals */ +FloatLiteral = -?({FLit1}|{FLit2}|{FLit3}) {Exponent}? + +FLit1 = [0-9]+ \. [0-9]* +FLit2 = \. [0-9]+ +FLit3 = [0-9]+ +Exponent = [eE] [+-]? [0-9]+ + +OctDigit = [0-7] + +/* string and character literals */ +StringCharacter = [^\r\n\"\\] + +%state STRING,PARAMETERS + +%% + + { + + + /* whitespace */ + {WhiteSpace} { } + + {Label} { + String s=yytext(); + return new ParsedSymbol(ParsedSymbol.TYPE_LABEL,s.substring(0,s.length()-1)); + } + + /* identifiers */ + {InstructionName} { yybegin(PARAMETERS); + return new ParsedSymbol(ParsedSymbol.TYPE_INSTRUCTION_NAME,yytext()); + } +} + + { + /* string literal */ + \" { + isMultiname=false; + yybegin(STRING); + string.setLength(0); + } + {Multiname}\" { + isMultiname=true; + String s=yytext(); + multinameId=Long.parseLong(s.substring(2,s.length()-2)); + yybegin(STRING); + string.setLength(0); + } + + /* numeric literals */ + + {NumberLiteral} { return new ParsedSymbol(ParsedSymbol.TYPE_INTEGER,new Long(Long.parseLong((yytext())))); } + {FloatLiteral} { return new ParsedSymbol(ParsedSymbol.TYPE_FLOAT,new Double(Double.parseDouble((yytext())))); } + {Identifier} { return new ParsedSymbol(ParsedSymbol.TYPE_IDENTIFIER,yytext()); } + {LineTerminator} {yybegin(YYINITIAL);} + {Comment} {return new ParsedSymbol(ParsedSymbol.TYPE_COMMENT,yytext().substring(1));} +} + + { + \" { + yybegin(PARAMETERS); + // length also includes the trailing quote + if(isMultiname){ + return new ParsedSymbol(ParsedSymbol.TYPE_MULTINAME,new Long(multinameId)); + }else{ + return new ParsedSymbol(ParsedSymbol.TYPE_STRING,string.toString()); + } + } + + {StringCharacter}+ { string.append( yytext() ); } + + /* escape sequences */ + "\\b" { string.append( '\b' ); } + "\\t" { string.append( '\t' ); } + "\\n" { string.append( '\n' ); } + "\\f" { string.append( '\f' ); } + "\\r" { string.append( '\r' ); } + "\\\"" { string.append( '\"' ); } + "\\'" { string.append( '\'' ); } + "\\\\" { string.append( '\\' ); } + \\[0-3]?{OctDigit}?{OctDigit} { char val = (char) Integer.parseInt(yytext().substring(1),8); + string.append( val ); } + + /* error cases */ + \\. { throw new ParseException("Illegal escape sequence \""+yytext()+"\"",yyline+1); } + {LineTerminator} { throw new ParseException("Unterminated string at end of line",yyline+1); } + +} + +/* error fallback */ +.|\n { } +<> { return new ParsedSymbol(ParsedSymbol.TYPE_EOF); } diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/BooleanTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/BooleanTreeItem.java new file mode 100644 index 000000000..4d128db46 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/BooleanTreeItem.java @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; + + +public class BooleanTreeItem extends TreeItem { + + public Boolean value; + + public BooleanTreeItem(AVM2Instruction instruction, Boolean value) { + super(instruction, PRECEDENCE_PRIMARY); + this.value = value; + } + + @Override + public String toString(ConstantPool constants) { + return value.toString(); + } + + @Override + public boolean isFalse() { + return value == false; + } + + @Override + public boolean isTrue() { + return value == true; + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/BreakTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/BreakTreeItem.java new file mode 100644 index 000000000..df55fcd93 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/BreakTreeItem.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; + + +public class BreakTreeItem extends TreeItem { + public int loopPos; + public boolean isKnown; + + public BreakTreeItem(AVM2Instruction instruction, int loopPos) { + this(instruction, loopPos, true); + } + + public BreakTreeItem(AVM2Instruction instruction, int loopPos, boolean isKnown) { + super(instruction, NOPRECEDENCE); + this.loopPos = loopPos; + this.isKnown = isKnown; + } + + @Override + public String toString(ConstantPool constants) { + return hilight("break") + " loop" + loopPos + ";"; + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/CallMethodTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/CallMethodTreeItem.java new file mode 100644 index 000000000..d71978180 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/CallMethodTreeItem.java @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; + +import java.util.List; + + +public class CallMethodTreeItem extends TreeItem { + public TreeItem receiver; + public String methodName; + public List arguments; + + public CallMethodTreeItem(AVM2Instruction instruction, TreeItem receiver, String methodName, List arguments) { + super(instruction, PRECEDENCE_PRIMARY); + this.receiver = receiver; + this.methodName = methodName; + this.arguments = arguments; + } + + @Override + public String toString(ConstantPool constants) { + String args = ""; + for (int a = 0; a < arguments.size(); a++) { + if (a > 0) { + args = args + ","; + } + args = args + arguments.get(a).toString(constants); + } + return receiver.toString(constants) + "." + methodName + hilight("(") + args + hilight(")"); + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/CallPropertyTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/CallPropertyTreeItem.java new file mode 100644 index 000000000..5b0b1cd71 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/CallPropertyTreeItem.java @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; + +import java.util.List; + + +public class CallPropertyTreeItem extends TreeItem { + public TreeItem receiver; + public FullMultinameTreeItem propertyName; + public List arguments; + public boolean isVoid; + + public CallPropertyTreeItem(AVM2Instruction instruction, boolean isVoid, TreeItem receiver, FullMultinameTreeItem propertyName, List arguments) { + super(instruction, PRECEDENCE_PRIMARY); + this.receiver = receiver; + this.propertyName = propertyName; + this.arguments = arguments; + this.isVoid = isVoid; + } + + @Override + public String toString(ConstantPool constants) { + String args = ""; + for (int a = 0; a < arguments.size(); a++) { + if (a > 0) { + args = args + ","; + } + args = args + arguments.get(a).toString(constants); + } + return formatProperty(constants, receiver, propertyName) + "(" + args + ")" + (isVoid ? ";" : ""); + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/CallStaticTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/CallStaticTreeItem.java new file mode 100644 index 000000000..3ddfb78b9 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/CallStaticTreeItem.java @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; + +import java.util.List; + + +public class CallStaticTreeItem extends TreeItem { + public TreeItem receiver; + public String methodName; + public List arguments; + + public CallStaticTreeItem(AVM2Instruction instruction, TreeItem receiver, String methodName, List arguments) { + super(instruction, PRECEDENCE_PRIMARY); + this.receiver = receiver; + this.methodName = methodName; + this.arguments = arguments; + } + + @Override + public String toString(ConstantPool constants) { + String args = ""; + for (int a = 0; a < arguments.size(); a++) { + if (a > 0) { + args = args + ","; + } + args = args + arguments.get(a).toString(constants); + } + return receiver.toString(constants) + hilight(".") + methodName + hilight("(") + args + hilight(")"); + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/CallSuperTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/CallSuperTreeItem.java new file mode 100644 index 000000000..b9e8517e4 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/CallSuperTreeItem.java @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.helpers.Highlighting; + +import java.util.List; + + +public class CallSuperTreeItem extends TreeItem { + public TreeItem receiver; + public FullMultinameTreeItem multiname; + public List arguments; + public boolean isVoid; + + public CallSuperTreeItem(AVM2Instruction instruction, boolean isVoid, TreeItem receiver, FullMultinameTreeItem multiname, List arguments) { + super(instruction, PRECEDENCE_PRIMARY); + this.receiver = receiver; + this.multiname = multiname; + this.arguments = arguments; + this.isVoid = isVoid; + } + + @Override + public String toString(ConstantPool constants) { + String args = ""; + for (int a = 0; a < arguments.size(); a++) { + if (a > 0) { + args = args + ","; + } + args = args + arguments.get(a).toString(constants); + } + String calee = receiver.toString(constants) + "."; + if (Highlighting.stripHilights(calee).equals("this.")) calee = ""; + return calee + hilight("super.") + multiname.toString(constants) + hilight("(") + args + hilight(")") + (isVoid ? ";" : ""); + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/CallTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/CallTreeItem.java new file mode 100644 index 000000000..b5f37890c --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/CallTreeItem.java @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; + +import java.util.List; + + +public class CallTreeItem extends TreeItem { + public TreeItem receiver; + public TreeItem function; + public List arguments; + + public CallTreeItem(AVM2Instruction instruction, TreeItem receiver, TreeItem function, List arguments) { + super(instruction, PRECEDENCE_PRIMARY); + this.receiver = receiver; + this.function = function; + this.arguments = arguments; + } + + @Override + public String toString(ConstantPool constants) { + String args = ""; + for (int a = 0; a < arguments.size(); a++) { + if (a > 0) { + args = args + ","; + } + args = args + arguments.get(a).toString(constants); + } + return receiver.toString(constants) + hilight(".") + function.toString(constants) + hilight("(") + args + hilight(")"); + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ClassTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ClassTreeItem.java new file mode 100644 index 000000000..151f028bb --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ClassTreeItem.java @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; + + +public class ClassTreeItem extends TreeItem { + public String className; + + public ClassTreeItem(String className) { + super(null, PRECEDENCE_PRIMARY); + this.className = className; + } + + @Override + public String toString(ConstantPool constants) { + return className; + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/CoerceTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/CoerceTreeItem.java new file mode 100644 index 000000000..dca757630 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/CoerceTreeItem.java @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; + + +public class CoerceTreeItem extends TreeItem { + public TreeItem value; + public String type; + + public CoerceTreeItem(AVM2Instruction instruction, TreeItem value, String type) { + super(instruction, NOPRECEDENCE); + this.value = value; + this.type = type; + } + + @Override + public String toString(ConstantPool constants) { + //return hilight("("+type+")")+ + return value.toString(constants); + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ConstructPropTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ConstructPropTreeItem.java new file mode 100644 index 000000000..5fb27269a --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ConstructPropTreeItem.java @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; + +import java.util.List; + + +public class ConstructPropTreeItem extends TreeItem { + public TreeItem object; + public FullMultinameTreeItem propertyName; + public List args; + + public ConstructPropTreeItem(AVM2Instruction instruction, TreeItem object, FullMultinameTreeItem propertyName, List args) { + super(instruction, PRECEDENCE_PRIMARY); + this.object = object; + this.propertyName = propertyName; + this.args = args; + } + + @Override + public String toString(ConstantPool constants) { + String argStr = ""; + for (int a = 0; a < args.size(); a++) { + if (a > 0) { + argStr = argStr + ","; + } + argStr = argStr + args.get(a).toString(constants); + } + String objstr = object.toString(constants); + if (!objstr.equals("")) objstr += "."; + return hilight("new ") + objstr + propertyName.toString(constants) + hilight("(") + argStr + hilight(")"); + + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ConstructSuperTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ConstructSuperTreeItem.java new file mode 100644 index 000000000..b1c84df7d --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ConstructSuperTreeItem.java @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.helpers.Highlighting; + +import java.util.List; + + +public class ConstructSuperTreeItem extends TreeItem { + public TreeItem object; + public List args; + + public ConstructSuperTreeItem(AVM2Instruction instruction, TreeItem object, List args) { + super(instruction, PRECEDENCE_PRIMARY); + this.object = object; + this.args = args; + } + + @Override + public String toString(ConstantPool constants) { + String argStr = ""; + for (int a = 0; a < args.size(); a++) { + if (a > 0) { + argStr = argStr + ","; + } + argStr = argStr + args.get(a).toString(constants); + } + String calee = object.toString(constants) + "."; + if (Highlighting.stripHilights(calee).equals("this.")) calee = ""; + return calee + hilight("super(") + argStr + hilight(")"); + + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ConstructTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ConstructTreeItem.java new file mode 100644 index 000000000..841c91bbd --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ConstructTreeItem.java @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; + +import java.util.List; + + +public class ConstructTreeItem extends TreeItem { + public TreeItem object; + public List args; + + public ConstructTreeItem(AVM2Instruction instruction, TreeItem object, List args) { + super(instruction, PRECEDENCE_PRIMARY); + this.object = object; + this.args = args; + } + + @Override + public String toString(ConstantPool constants) { + String argStr = ""; + for (int a = 0; a < args.size(); a++) { + if (a > 0) { + argStr = argStr + ","; + } + argStr = argStr + args.get(a).toString(constants); + } + if (object instanceof NewFunctionTreeItem) { + return object.toString(constants); + } + return hilight("new ") + object.toString(constants) + hilight("(") + argStr + hilight(")"); + + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ContinueTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ContinueTreeItem.java new file mode 100644 index 000000000..c935b3c52 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ContinueTreeItem.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; + + +public class ContinueTreeItem extends TreeItem { + public int loopPos; + public boolean isKnown; + + public ContinueTreeItem(AVM2Instruction instruction, int loopPos) { + this(instruction, loopPos, true); + } + + public ContinueTreeItem(AVM2Instruction instruction, int loopPos, boolean isKnown) { + super(instruction, NOPRECEDENCE); + this.loopPos = loopPos; + this.isKnown = isKnown; + } + + @Override + public String toString(ConstantPool constants) { + return hilight("continue") + " " + (isKnown ? "loop" : "unk") + loopPos + ";"; + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ConvertTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ConvertTreeItem.java new file mode 100644 index 000000000..345b7e5a7 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ConvertTreeItem.java @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; + + +public class ConvertTreeItem extends TreeItem { + public TreeItem value; + public String type; + + public ConvertTreeItem(AVM2Instruction instruction, TreeItem value, String type) { + super(instruction, NOPRECEDENCE); + this.value = value; + this.type = type; + } + + @Override + public String toString(ConstantPool constants) { + //return hilight("("+type+")")+ + return value.toString(constants); + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/DecLocalTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/DecLocalTreeItem.java new file mode 100644 index 000000000..cf0a35132 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/DecLocalTreeItem.java @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; + + +public class DecLocalTreeItem extends TreeItem { + public int regIndex; + + public DecLocalTreeItem(AVM2Instruction instruction, int regIndex) { + super(instruction, PRECEDENCE_POSTFIX); + this.regIndex = regIndex; + } + + @Override + public String toString(ConstantPool constants) { + return InstructionDefinition.localRegName(regIndex) + hilight("--") + ";"; + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/DecrementTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/DecrementTreeItem.java new file mode 100644 index 000000000..64e4c1775 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/DecrementTreeItem.java @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; + + +public class DecrementTreeItem extends TreeItem { + public TreeItem object; + + public DecrementTreeItem(AVM2Instruction instruction, TreeItem object) { + super(instruction, PRECEDENCE_ADDITIVE); + this.object = object; + } + + @Override + public String toString(ConstantPool constants) { + return object.toString(constants) + hilight("-1"); + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/EachTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/EachTreeItem.java new file mode 100644 index 000000000..a61125957 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/EachTreeItem.java @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; + + +public class EachTreeItem extends TreeItem { + public TreeItem object; + public TreeItem collection; + + public EachTreeItem(AVM2Instruction instruction, TreeItem object, TreeItem collection) { + super(instruction, NOPRECEDENCE); + this.object = object; + this.collection = collection; + } + + @Override + public String toString(ConstantPool constants) { + return hilight("each (") + object.toString(constants) + hilight(" in ") + collection.toString(constants) + ")"; + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/FindPropertyTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/FindPropertyTreeItem.java new file mode 100644 index 000000000..6a9716a23 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/FindPropertyTreeItem.java @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; + + +public class FindPropertyTreeItem extends TreeItem { + public FullMultinameTreeItem propertyName; + + public FindPropertyTreeItem(AVM2Instruction instruction, FullMultinameTreeItem propertyName) { + super(instruction, PRECEDENCE_PRIMARY); + this.propertyName = propertyName; + } + + @Override + public String toString(ConstantPool constants) { + return ""; + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/FloatValueTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/FloatValueTreeItem.java new file mode 100644 index 000000000..9963bbe60 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/FloatValueTreeItem.java @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; + + +public class FloatValueTreeItem extends NumberValueTreeItem { + public Double value; + + public FloatValueTreeItem(AVM2Instruction instruction, Double value) { + super(instruction); + this.value = value; + } + + @Override + public String toString(ConstantPool constants) { + return hilight("" + value); + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/FullMultinameTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/FullMultinameTreeItem.java new file mode 100644 index 000000000..3a51bebfe --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/FullMultinameTreeItem.java @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.types.Namespace; + + +public class FullMultinameTreeItem extends TreeItem { + public int multinameIndex; + public TreeItem name; + public TreeItem namespace; + + public FullMultinameTreeItem(AVM2Instruction instruction, int multinameIndex, TreeItem name) { + super(instruction, PRECEDENCE_PRIMARY); + this.multinameIndex = multinameIndex; + this.name = name; + this.namespace = null; + } + + public FullMultinameTreeItem(AVM2Instruction instruction, int multinameIndex) { + super(instruction, PRECEDENCE_PRIMARY); + this.multinameIndex = multinameIndex; + this.name = null; + this.namespace = null; + } + + public FullMultinameTreeItem(AVM2Instruction instruction, int multinameIndex, TreeItem name, TreeItem namespace) { + super(instruction, PRECEDENCE_PRIMARY); + this.multinameIndex = multinameIndex; + this.name = name; + this.namespace = namespace; + } + + public boolean isRuntime() { + return (name != null) || (namespace != null); + } + + @Override + public String toString(ConstantPool constants) { + String ret = ""; + if (name != null) { + ret = name.toString(constants); + } else { + ret = constants.constant_multiname[multinameIndex].getName(constants); + } + if (namespace != null) { + ret = ret + "[" + namespace.toString(constants) + "]"; + } else { + Namespace ns = constants.constant_multiname[multinameIndex].getNamespace(constants); + if (ns != null) { + ret = ret + "[" + ns.getName(constants) + "]"; + } + } + + if ((name == null) && (namespace == null)) { + ret = hilight(constants.constant_multiname[multinameIndex].getName(constants)); + } + return ret; + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/GetDescendantsTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/GetDescendantsTreeItem.java new file mode 100644 index 000000000..1d20a9e27 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/GetDescendantsTreeItem.java @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; + + +public class GetDescendantsTreeItem extends TreeItem { + public TreeItem object; + public FullMultinameTreeItem multiname; + + public GetDescendantsTreeItem(AVM2Instruction instruction, TreeItem object, FullMultinameTreeItem multiname) { + super(instruction, PRECEDENCE_PRIMARY); + this.object = object; + this.multiname = multiname; + } + + @Override + public String toString(ConstantPool constants) { + return object.toString(constants) + hilight("..") + multiname.toString(constants); + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/GetLexTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/GetLexTreeItem.java new file mode 100644 index 000000000..8af3c9a14 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/GetLexTreeItem.java @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.types.Multiname; + + +public class GetLexTreeItem extends TreeItem { + public Multiname propertyName; + + public GetLexTreeItem(AVM2Instruction instruction, Multiname propertyName) { + super(instruction, PRECEDENCE_PRIMARY); + this.propertyName = propertyName; + } + + @Override + public String toString(ConstantPool constants) { + return hilight(propertyName.getName(constants)); + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/GetPropertyTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/GetPropertyTreeItem.java new file mode 100644 index 000000000..b1e67b548 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/GetPropertyTreeItem.java @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; + + +public class GetPropertyTreeItem extends TreeItem { + public TreeItem object; + public FullMultinameTreeItem propertyName; + + public GetPropertyTreeItem(AVM2Instruction instruction, TreeItem object, FullMultinameTreeItem propertyName) { + super(instruction, PRECEDENCE_PRIMARY); + this.object = object; + this.propertyName = propertyName; + } + + @Override + public String toString(ConstantPool constants) { + return formatProperty(constants, object, propertyName); + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/GetSlotTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/GetSlotTreeItem.java new file mode 100644 index 000000000..462dba51f --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/GetSlotTreeItem.java @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.types.Multiname; + + +public class GetSlotTreeItem extends TreeItem { + public Multiname slotName; + public TreeItem scope; + + public GetSlotTreeItem(AVM2Instruction instruction, TreeItem scope, Multiname slotName) { + super(instruction, PRECEDENCE_PRIMARY); + this.slotName = slotName; + this.scope = scope; + } + + @Override + public String toString(ConstantPool constants) { + //scope.toString(constants)+"." + return hilight(slotName.getName(constants)); + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/GetSuperTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/GetSuperTreeItem.java new file mode 100644 index 000000000..03f2563f5 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/GetSuperTreeItem.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.helpers.Highlighting; + + +public class GetSuperTreeItem extends TreeItem { + public TreeItem object; + public FullMultinameTreeItem propertyName; + + public GetSuperTreeItem(AVM2Instruction instruction, TreeItem object, FullMultinameTreeItem propertyName) { + super(instruction, PRECEDENCE_PRIMARY); + this.object = object; + this.propertyName = propertyName; + } + + @Override + public String toString(ConstantPool constants) { + String calee = object.toString(constants) + "."; + if (Highlighting.stripHilights(calee).equals("this.")) calee = ""; + return calee + hilight("super.") + propertyName.toString(constants); + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/IncLocalTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/IncLocalTreeItem.java new file mode 100644 index 000000000..69eede5a0 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/IncLocalTreeItem.java @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; + + +public class IncLocalTreeItem extends TreeItem { + public int regIndex; + + public IncLocalTreeItem(AVM2Instruction instruction, int regIndex) { + super(instruction, PRECEDENCE_POSTFIX); + this.regIndex = regIndex; + } + + @Override + public String toString(ConstantPool constants) { + return InstructionDefinition.localRegName(regIndex) + hilight("++") + ";"; + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/IncrementTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/IncrementTreeItem.java new file mode 100644 index 000000000..5e7bece75 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/IncrementTreeItem.java @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; + + +public class IncrementTreeItem extends TreeItem { + public TreeItem object; + + public IncrementTreeItem(AVM2Instruction instruction, TreeItem object) { + super(instruction, PRECEDENCE_ADDITIVE); + this.object = object; + } + + @Override + public String toString(ConstantPool constants) { + return object.toString(constants) + hilight("+1"); + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/InitPropertyTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/InitPropertyTreeItem.java new file mode 100644 index 000000000..5b279fa3f --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/InitPropertyTreeItem.java @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; + + +public class InitPropertyTreeItem extends TreeItem { + public TreeItem object; + public FullMultinameTreeItem propertyName; + public TreeItem value; + + public InitPropertyTreeItem(AVM2Instruction instruction, TreeItem object, FullMultinameTreeItem propertyName, TreeItem value) { + super(instruction, PRECEDENCE_ASSIGMENT); + this.object = object; + this.propertyName = propertyName; + this.value = value; + } + + @Override + public String toString(ConstantPool constants) { + return formatProperty(constants, object, propertyName) + hilight("=") + value.toString(constants) + ";"; + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/IntegerValueTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/IntegerValueTreeItem.java new file mode 100644 index 000000000..d8802f4b3 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/IntegerValueTreeItem.java @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; + + +public class IntegerValueTreeItem extends NumberValueTreeItem { + public Long value; + + public IntegerValueTreeItem(AVM2Instruction instruction, Long value) { + super(instruction); + this.value = value; + } + + @Override + public String toString(ConstantPool constants) { + return hilight("" + value); + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/LocalRegTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/LocalRegTreeItem.java new file mode 100644 index 000000000..4ef9e67d7 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/LocalRegTreeItem.java @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; + + +public class LocalRegTreeItem extends TreeItem { + public int regIndex; + public TreeItem computedValue; + + public LocalRegTreeItem(AVM2Instruction instruction, int regIndex, TreeItem computedValue) { + super(instruction, PRECEDENCE_PRIMARY); + this.regIndex = regIndex; + if (computedValue == null) { + computedValue = new UndefinedTreeItem(instruction); + } + this.computedValue = computedValue; + } + + @Override + public String toString(ConstantPool constants) { + return hilight(InstructionDefinition.localRegName(regIndex)); + } + + @Override + public boolean isFalse() { + return computedValue.isFalse(); + } + + @Override + public boolean isTrue() { + return computedValue.isTrue(); + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/NameSpaceTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/NameSpaceTreeItem.java new file mode 100644 index 000000000..09f4054b3 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/NameSpaceTreeItem.java @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; + + +public class NameSpaceTreeItem extends TreeItem { + public int namespaceIndex; + + public NameSpaceTreeItem(AVM2Instruction instruction, int namespaceIndex) { + super(instruction, NOPRECEDENCE); + this.namespaceIndex = namespaceIndex; + } + + public String toString(ConstantPool constants) { + if (namespaceIndex == 0) return "*"; + return hilight(constants.constant_namespace[namespaceIndex].toString(constants)); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/NameValuePair.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/NameValuePair.java new file mode 100644 index 000000000..a93afcf0a --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/NameValuePair.java @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; + + +public class NameValuePair extends TreeItem { + public TreeItem name; + public TreeItem value; + + public NameValuePair(TreeItem name, TreeItem value) { + super(name.instruction, NOPRECEDENCE); + this.name = name; + this.value = value; + } + + @Override + public String toString(ConstantPool constants) { + if (name instanceof StringTreeItem) { + return ((StringTreeItem) name).value + ":" + value.toString(constants); + } + return name.toString(constants) + ":" + value.toString(constants); + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/NanTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/NanTreeItem.java new file mode 100644 index 000000000..fc5d2d63f --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/NanTreeItem.java @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; + + +public class NanTreeItem extends TreeItem { + + public NanTreeItem(AVM2Instruction instruction) { + super(instruction, NOPRECEDENCE); + } + + + @Override + public String toString(ConstantPool constants) { + return hilight("NaN"); + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/NewActivationTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/NewActivationTreeItem.java new file mode 100644 index 000000000..352635aaa --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/NewActivationTreeItem.java @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; + + +public class NewActivationTreeItem extends TreeItem { + + public NewActivationTreeItem(AVM2Instruction instruction) { + super(instruction, NOPRECEDENCE); + } + + + @Override + public String toString(ConstantPool constants) { + return hilight("newactivation()"); + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/NewArrayTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/NewArrayTreeItem.java new file mode 100644 index 000000000..17809560f --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/NewArrayTreeItem.java @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; + +import java.util.List; + + +public class NewArrayTreeItem extends TreeItem { + public List values; + + public NewArrayTreeItem(AVM2Instruction instruction, List values) { + super(instruction, PRECEDENCE_PRIMARY); + this.values = values; + } + + @Override + public String toString(ConstantPool constants) { + String args = ""; + for (int a = 0; a < values.size(); a++) { + if (a > 0) { + args = args + ","; + } + args = args + values.get(a).toString(constants); + } + return hilight("[") + args + hilight("]"); + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/NewFunctionTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/NewFunctionTreeItem.java new file mode 100644 index 000000000..d5b47d231 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/NewFunctionTreeItem.java @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; + + +public class NewFunctionTreeItem extends TreeItem { + public String paramStr; + public String returnStr; + public String functionBody; + + public NewFunctionTreeItem(AVM2Instruction instruction, String paramStr, String returnStr, String functionBody) { + super(instruction, PRECEDENCE_PRIMARY); + this.paramStr = paramStr; + this.returnStr = returnStr; + this.functionBody = functionBody; + } + + @Override + public String toString(ConstantPool constants) { + return hilight("new function(" + paramStr + "):" + returnStr + "\r\n{\r\n" + functionBody + "}\r\n"); + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/NewObjectTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/NewObjectTreeItem.java new file mode 100644 index 000000000..e873df97c --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/NewObjectTreeItem.java @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; + +import java.util.List; + + +public class NewObjectTreeItem extends TreeItem { + public List pairs; + + public NewObjectTreeItem(AVM2Instruction instruction, List pairs) { + super(instruction, PRECEDENCE_PRIMARY); + this.pairs = pairs; + } + + @Override + public String toString(ConstantPool constants) { + String params = ""; + for (int n = 0; n < pairs.size(); n++) { + if (n > 0) params += ",\r\n"; + params += pairs.get(n).toString(constants); + } + return hilight("{") + params + hilight("}"); + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/NullTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/NullTreeItem.java new file mode 100644 index 000000000..916043644 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/NullTreeItem.java @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; + + +public class NullTreeItem extends TreeItem { + + public NullTreeItem(AVM2Instruction instruction) { + super(instruction, PRECEDENCE_PRIMARY); + } + + + @Override + public String toString(ConstantPool constants) { + return hilight("null"); + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/NumberValueTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/NumberValueTreeItem.java new file mode 100644 index 000000000..efa648220 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/NumberValueTreeItem.java @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; + + +public abstract class NumberValueTreeItem extends TreeItem { + + public NumberValueTreeItem(AVM2Instruction instruction) { + super(instruction, PRECEDENCE_PRIMARY); + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/PostDecrementTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/PostDecrementTreeItem.java new file mode 100644 index 000000000..ecdb52449 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/PostDecrementTreeItem.java @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; + + +public class PostDecrementTreeItem extends TreeItem { + public TreeItem object; + + public PostDecrementTreeItem(AVM2Instruction instruction, TreeItem object) { + super(instruction, PRECEDENCE_POSTFIX); + this.object = object; + } + + @Override + public String toString(ConstantPool constants) { + return object.toString(constants) + hilight("--"); + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/PostIncrementTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/PostIncrementTreeItem.java new file mode 100644 index 000000000..18f5bd2cd --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/PostIncrementTreeItem.java @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; + + +public class PostIncrementTreeItem extends TreeItem { + public TreeItem object; + + public PostIncrementTreeItem(AVM2Instruction instruction, TreeItem object) { + super(instruction, PRECEDENCE_POSTFIX); + this.object = object; + } + + @Override + public String toString(ConstantPool constants) { + return object.toString(constants) + hilight("++"); + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ReturnValueTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ReturnValueTreeItem.java new file mode 100644 index 000000000..10309d9be --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ReturnValueTreeItem.java @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; + + +public class ReturnValueTreeItem extends TreeItem { + public TreeItem value; + + public ReturnValueTreeItem(AVM2Instruction instruction, TreeItem value) { + super(instruction, NOPRECEDENCE); + this.value = value; + } + + @Override + public String toString(ConstantPool constants) { + return hilight("return ") + value.toString(constants) + ";"; + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ReturnVoidTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ReturnVoidTreeItem.java new file mode 100644 index 000000000..0f23c50dd --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ReturnVoidTreeItem.java @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; + + +public class ReturnVoidTreeItem extends TreeItem { + + public ReturnVoidTreeItem(AVM2Instruction instruction) { + super(instruction, NOPRECEDENCE); + } + + @Override + public String toString(ConstantPool constants) { + return hilight("return") + ";"; + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/SetGlobalSlotTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/SetGlobalSlotTreeItem.java new file mode 100644 index 000000000..eb057883a --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/SetGlobalSlotTreeItem.java @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; + + +public class SetGlobalSlotTreeItem extends TreeItem { + public int slotId; + public TreeItem value; + + public SetGlobalSlotTreeItem(AVM2Instruction instruction, int slotId, TreeItem value) { + super(instruction, PRECEDENCE_ASSIGMENT); + this.slotId = slotId; + this.value = value; + } + + @Override + public String toString(ConstantPool constants) { + return hilight("setglobalslot(" + slotId + ",") + value.toString(constants) + hilight(")") + ";"; + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/SetLocalTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/SetLocalTreeItem.java new file mode 100644 index 000000000..2575b289a --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/SetLocalTreeItem.java @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; + + +public class SetLocalTreeItem extends TreeItem { + public int regIndex; + public TreeItem value; + + public SetLocalTreeItem(AVM2Instruction instruction, int regIndex, TreeItem value) { + super(instruction, PRECEDENCE_ASSIGMENT); + this.regIndex = regIndex; + this.value = value; + } + + @Override + public String toString(ConstantPool constants) { + return hilight(InstructionDefinition.localRegName(regIndex) + "=") + value.toString(constants) + ";"; + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/SetPropertyTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/SetPropertyTreeItem.java new file mode 100644 index 000000000..065bd195b --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/SetPropertyTreeItem.java @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; + + +public class SetPropertyTreeItem extends TreeItem { + public TreeItem object; + public FullMultinameTreeItem propertyName; + public TreeItem value; + + public SetPropertyTreeItem(AVM2Instruction instruction, TreeItem object, FullMultinameTreeItem propertyName, TreeItem value) { + super(instruction, PRECEDENCE_ASSIGMENT); + this.object = object; + this.propertyName = propertyName; + this.value = value; + } + + @Override + public String toString(ConstantPool constants) { + return formatProperty(constants, object, propertyName) + hilight("=") + value.toString(constants) + ";"; + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/SetSlotTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/SetSlotTreeItem.java new file mode 100644 index 000000000..400989d99 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/SetSlotTreeItem.java @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.types.Multiname; + + +public class SetSlotTreeItem extends TreeItem { + public Multiname slotName; + public TreeItem value; + public TreeItem scope; + + public SetSlotTreeItem(AVM2Instruction instruction, TreeItem scope, Multiname slotName, TreeItem value) { + super(instruction, PRECEDENCE_ASSIGMENT); + this.slotName = slotName; + this.value = value; + this.scope = scope; + } + + @Override + public String toString(ConstantPool constants) { + String ret = ""; + + if (!(scope instanceof NewActivationTreeItem)) { + ret = scope.toString(constants) + "."; + } + if(scope instanceof LocalRegTreeItem){ + if(((LocalRegTreeItem)scope).computedValue !=null){ + if(((LocalRegTreeItem)scope).computedValue instanceof NewActivationTreeItem){ + ret=""; + } + } + } + return ret + hilight(slotName.getName(constants)) + hilight("=") + value.toString(constants) + ";"; + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/SetSuperTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/SetSuperTreeItem.java new file mode 100644 index 000000000..fb986b7ed --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/SetSuperTreeItem.java @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.helpers.Highlighting; + + +public class SetSuperTreeItem extends TreeItem { + public TreeItem value; + public TreeItem object; + public FullMultinameTreeItem propertyName; + + public SetSuperTreeItem(AVM2Instruction instruction, TreeItem value, TreeItem object, FullMultinameTreeItem propertyName) { + super(instruction, PRECEDENCE_ASSIGMENT); + this.value = value; + this.object = object; + this.propertyName = propertyName; + } + + + @Override + public String toString(ConstantPool constants) { + String calee = object.toString(constants) + "."; + if (Highlighting.stripHilights(calee).equals("this.")) calee = ""; + return calee + hilight("super.") + propertyName.toString(constants) + hilight("=") + value.toString(constants) + ";"; + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/StringTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/StringTreeItem.java new file mode 100644 index 000000000..cc57b8711 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/StringTreeItem.java @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.helpers.Helper; + + +public class StringTreeItem extends TreeItem { + public String value; + + public StringTreeItem(AVM2Instruction instruction, String value) { + super(instruction, PRECEDENCE_PRIMARY); + this.value = value; + } + + @Override + public String toString(ConstantPool constants) { + return hilight("\"" + Helper.escapeString(value) + "\""); + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ThisTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ThisTreeItem.java new file mode 100644 index 000000000..fb45f5605 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ThisTreeItem.java @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; + + +public class ThisTreeItem extends TreeItem { + + public ThisTreeItem() { + super(null, PRECEDENCE_PRIMARY); + } + + @Override + public String toString(ConstantPool constants) { + return "this"; + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ThrowTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ThrowTreeItem.java new file mode 100644 index 000000000..91427ffd4 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/ThrowTreeItem.java @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; + + +public class ThrowTreeItem extends TreeItem { + public TreeItem value; + + public ThrowTreeItem(AVM2Instruction instruction, TreeItem value) { + super(instruction, NOPRECEDENCE); + this.value = value; + } + + + @Override + public String toString(ConstantPool constants) { + return hilight("throw ") + value.toString(constants); + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/TreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/TreeItem.java new file mode 100644 index 000000000..136b07c13 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/TreeItem.java @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.helpers.Highlighting; + + +public abstract class TreeItem { + + public static final int PRECEDENCE_PRIMARY = 0; + public static final int PRECEDENCE_POSTFIX = 1; + public static final int PRECEDENCE_UNARY = 2; + public static final int PRECEDENCE_MULTIPLICATIVE = 3; + public static final int PRECEDENCE_ADDITIVE = 4; + public static final int PRECEDENCE_BITWISESHIFT = 5; + public static final int PRECEDENCE_RELATIONAL = 6; + public static final int PRECEDENCE_EQUALITY = 7; + public static final int PRECEDENCE_BITWISEAND = 8; + public static final int PRECEDENCE_BITWISEXOR = 9; + public static final int PRECEDENCE_BITWISEOR = 10; + public static final int PRECEDENCE_LOGICALAND = 11; + public static final int PRECEDENCE_LOGICALOR = 12; + public static final int PRECEDENCE_CONDITIONAL = 13; + public static final int PRECEDENCE_ASSIGMENT = 14; + public static final int PRECEDENCE_COMMA = 15; + public static final int NOPRECEDENCE = 16; + + + public int precedence = NOPRECEDENCE; + public AVM2Instruction instruction; + + public TreeItem(AVM2Instruction instruction, int precedence) { + this.instruction = instruction; + this.precedence = precedence; + } + + + public abstract String toString(ConstantPool constants); + + + protected String hilight(String str) { + if (instruction == null) + return str; + return Highlighting.hilighOffset(str, instruction.offset); + } + + public boolean isFalse() { + return false; + } + + public boolean isTrue() { + return false; + } + + protected String formatProperty(ConstantPool constants, TreeItem object, TreeItem propertyName) { + String obStr = object.toString(constants); + if (object.precedence > PRECEDENCE_PRIMARY) { + obStr = "(" + obStr + ")"; + } + if (object instanceof LocalRegTreeItem) { + if (((LocalRegTreeItem) object).computedValue instanceof FindPropertyTreeItem) + obStr = ""; + } + if (propertyName instanceof FullMultinameTreeItem) { + + if (((FullMultinameTreeItem) propertyName).isRuntime()) { + return obStr + "[" + propertyName.toString(constants) + "]"; + } else { + if (!obStr.equals("")) obStr += "."; + return obStr + ((FullMultinameTreeItem) propertyName).toString(constants); + } + } else { + return obStr + "[" + propertyName.toString(constants) + "]"; + } + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/UndefinedTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/UndefinedTreeItem.java new file mode 100644 index 000000000..80bb57b76 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/UndefinedTreeItem.java @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; + + +public class UndefinedTreeItem extends TreeItem { + + public UndefinedTreeItem(AVM2Instruction instruction) { + super(instruction, PRECEDENCE_PRIMARY); + } + + + @Override + public String toString(ConstantPool constants) { + return hilight("undefined"); + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/UnparsedTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/UnparsedTreeItem.java new file mode 100644 index 000000000..174228b06 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/UnparsedTreeItem.java @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; + + +public class UnparsedTreeItem extends TreeItem { + public String value; + + public UnparsedTreeItem(AVM2Instruction instruction, String value) { + super(instruction, NOPRECEDENCE); + this.value = value; + } + + @Override + public String toString(ConstantPool constants) { + return hilight(value); + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/WithTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/WithTreeItem.java new file mode 100644 index 000000000..a16eb42f1 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/WithTreeItem.java @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; + +import java.util.ArrayList; +import java.util.List; + + +public class WithTreeItem extends TreeItem { + public TreeItem scope; + public List items; + + public WithTreeItem(AVM2Instruction instruction, TreeItem scope, List items) { + super(instruction, NOPRECEDENCE); + this.scope = scope; + this.items = items; + } + + public WithTreeItem(AVM2Instruction instruction, TreeItem scope) { + super(instruction, NOPRECEDENCE); + this.scope = scope; + this.items = new ArrayList(); + } + + + @Override + public String toString(ConstantPool constants) { + String ret = ""; + ret = hilight("with(") + scope.toString(constants) + hilight(")\r\n{\r\n"); + for (TreeItem ti : items) { + ret += ti.toString(constants) + "\r\n"; + } + ret += hilight("}"); + return ret; + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/Block.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/Block.java new file mode 100644 index 000000000..5c67b5bc1 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/Block.java @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.clauses; + +import com.jpexs.asdec.abc.avm2.treemodel.ContinueTreeItem; + +import java.util.List; + + +public interface Block { + public List getContinues(); +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/DoWhileTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/DoWhileTreeItem.java new file mode 100644 index 000000000..f4ce6a810 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/DoWhileTreeItem.java @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.clauses; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.ContinueTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + +import java.util.ArrayList; +import java.util.List; + + +public class DoWhileTreeItem extends LoopTreeItem implements Block { + + public List commands; + public TreeItem expression; + + public DoWhileTreeItem(AVM2Instruction instruction, int loopBreak, int loopContinue, List commands, TreeItem expression) { + super(instruction, loopBreak, loopContinue); + this.expression = expression; + this.commands = commands; + } + + @Override + public String toString(ConstantPool constants) { + String ret = ""; + ret += "loop" + loopBreak + ":\r\n"; + ret += hilight("do\r\n{") + "\r\n"; + for (TreeItem ti : commands) { + ret += ti.toString(constants) + "\r\n"; + } + ret += hilight("}\r\nwhile(") + expression.toString(constants) + hilight(");") + "\r\n"; + ret += ":loop" + loopBreak; + + return ret; + } + + public List getContinues() { + List ret = new ArrayList(); + for (TreeItem ti : commands) { + if (ti instanceof ContinueTreeItem) { + ret.add((ContinueTreeItem) ti); + } + if (ti instanceof Block) { + ret.addAll(((Block) ti).getContinues()); + } + } + return ret; + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/ExceptionTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/ExceptionTreeItem.java new file mode 100644 index 000000000..61fa11b1c --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/ExceptionTreeItem.java @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.clauses; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.ABCException; + + +public class ExceptionTreeItem extends TreeItem { + public ABCException exception; + + public ExceptionTreeItem(ABCException exception) { + super(null, NOPRECEDENCE); + this.exception = exception; + } + + @Override + public String toString(ConstantPool constants) { + return exception.getVarName(constants); + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/ForEachTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/ForEachTreeItem.java new file mode 100644 index 000000000..f10c9faf1 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/ForEachTreeItem.java @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.clauses; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.ContinueTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.EachTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + +import java.util.ArrayList; +import java.util.List; + + +public class ForEachTreeItem extends LoopTreeItem implements Block { + + public EachTreeItem expression; + public List commands; + + public ForEachTreeItem(AVM2Instruction instruction, int loopBreak, int loopContinue, EachTreeItem expression, List commands) { + super(instruction, loopBreak, loopContinue); + this.expression = expression; + this.commands = commands; + } + + @Override + public String toString(ConstantPool constants) { + String ret = ""; + ret += "loop" + loopBreak + ":\r\n"; + ret += hilight("for ") + expression.toString(constants) + "\r\n{\r\n"; + for (TreeItem ti : commands) { + ret += ti.toString(constants) + "\r\n"; + } + ret += hilight("}") + "\r\n"; + ret += ":loop" + loopBreak; + return ret; + } + + public List getContinues() { + List ret = new ArrayList(); + for (TreeItem ti : commands) { + if (ti instanceof ContinueTreeItem) { + ret.add((ContinueTreeItem) ti); + } + if (ti instanceof Block) { + ret.addAll(((Block) ti).getContinues()); + } + } + return ret; + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/ForTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/ForTreeItem.java new file mode 100644 index 000000000..56a37ef52 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/ForTreeItem.java @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.clauses; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.ContinueTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + +import java.util.ArrayList; +import java.util.List; + + +public class ForTreeItem extends LoopTreeItem implements Block { + + public List firstCommands; + public TreeItem expression; + public List finalCommands; + public List commands; + + public ForTreeItem(AVM2Instruction instruction, int loopBreak, int loopContinue, List firstCommands, TreeItem expression, List finalCommands, List commands) { + super(instruction, loopBreak, loopContinue); + this.firstCommands = firstCommands; + this.expression = expression; + this.finalCommands = finalCommands; + this.commands = commands; + } + + private String stripSemicolon(String s) { + if (s.endsWith(";")) { + s = s.substring(0, s.length() - 1); + } + return s; + } + + @Override + public String toString(ConstantPool constants) { + String ret = ""; + ret += "loop" + loopBreak + ":\r\n"; + ret += hilight("for("); + for (int i = 0; i < firstCommands.size(); i++) { + if (i > 0) { + ret += ","; + } + ret += stripSemicolon(firstCommands.get(i).toString(constants)); + } + ret += ";"; + ret += expression.toString(constants); + ret += ";"; + for (int i = 0; i < finalCommands.size(); i++) { + if (i > 0) { + ret += ","; + } + ret += stripSemicolon(finalCommands.get(i).toString(constants)); + } + ret += hilight(")") + "\r\n{\r\n"; + for (TreeItem ti : commands) { + ret += ti.toString(constants) + "\r\n"; + } + ret += hilight("}") + "\r\n"; + ret += ":loop" + loopBreak; + return ret; + } + + public List getContinues() { + List ret = new ArrayList(); + for (TreeItem ti : commands) { + if (ti instanceof ContinueTreeItem) { + ret.add((ContinueTreeItem) ti); + } + if (ti instanceof Block) { + ret.addAll(((Block) ti).getContinues()); + } + } + return ret; + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/IfTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/IfTreeItem.java new file mode 100644 index 000000000..eca98e2ca --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/IfTreeItem.java @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.clauses; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.ContinueTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + +import java.util.ArrayList; +import java.util.List; + + +public class IfTreeItem extends TreeItem implements Block { + public TreeItem expression; + public List onTrue; + public List onFalse; + + public IfTreeItem(AVM2Instruction instruction, TreeItem expression, List onTrue, List onFalse) { + super(instruction, NOPRECEDENCE); + this.expression = expression; + this.onTrue = onTrue; + this.onFalse = onFalse; + } + + @Override + public String toString(ConstantPool constants) { + String ret = ""; + ret = hilight("if(") + expression.toString(constants) + hilight(")\r\n{\r\n"); + for (TreeItem ti : onTrue) { + ret += ti.toString(constants) + "\r\n"; + } + ret += hilight("}"); + if (onFalse.size() > 0) { + ret += hilight("\r\nelse\r\n{\r\n"); + for (TreeItem ti : onFalse) { + ret += ti.toString(constants) + "\r\n"; + } + ret += hilight("}"); + } + return ret; + } + + public List getContinues() { + List ret = new ArrayList(); + for (TreeItem ti : onTrue) { + if (ti instanceof ContinueTreeItem) { + ret.add((ContinueTreeItem) ti); + } + if (ti instanceof Block) { + ret.addAll(((Block) ti).getContinues()); + } + } + for (TreeItem ti : onFalse) { + if (ti instanceof ContinueTreeItem) { + ret.add((ContinueTreeItem) ti); + } + if (ti instanceof Block) { + ret.addAll(((Block) ti).getContinues()); + } + } + return ret; + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/LoopTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/LoopTreeItem.java new file mode 100644 index 000000000..ed3e5ed8c --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/LoopTreeItem.java @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.clauses; + +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + + +public abstract class LoopTreeItem extends TreeItem { + public int loopBreak; + public int loopContinue; + + public LoopTreeItem(AVM2Instruction instruction, int loopBreak, int loopContinue) { + super(instruction, NOPRECEDENCE); + this.loopBreak = loopBreak; + this.loopContinue = loopContinue; + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/SwitchTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/SwitchTreeItem.java new file mode 100644 index 000000000..4b8045fe6 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/SwitchTreeItem.java @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.clauses; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.ContinueTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + +import java.util.ArrayList; +import java.util.List; + + +public class SwitchTreeItem extends LoopTreeItem implements Block { + + public TreeItem switchedObject; + public List caseValues; + public List> caseCommands; + public List defaultCommands; + + public SwitchTreeItem(AVM2Instruction instruction, int switchBreak, TreeItem switchedObject, List caseValues, List> caseCommands, List defaultCommands) { + super(instruction, switchBreak, -1); + this.switchedObject = switchedObject; + this.caseValues = caseValues; + this.caseCommands = caseCommands; + this.defaultCommands = defaultCommands; + } + + @Override + public String toString(ConstantPool constants) { + String ret = ""; + ret += "loop" + loopBreak + ":\r\n"; + ret += hilight("switch(") + switchedObject.toString(constants) + hilight(")") + "\r\n{\r\n"; + for (int i = 0; i < caseValues.size(); i++) { + ret += "case " + caseValues.get(i).toString(constants) + ":\r\n"; + ret += AVM2Code.IDENTOPEN + "\r\n"; + for (int j = 0; j < caseCommands.get(i).size(); j++) { + ret += caseCommands.get(i).get(j).toString(constants) + "\r\n"; + } + ret += AVM2Code.IDENTCLOSE + "\r\n"; + } + if (defaultCommands.size() > 0) { + ret += hilight("default") + ":\r\n"; + ret += AVM2Code.IDENTOPEN + "\r\n"; + for (int j = 0; j < defaultCommands.size(); j++) { + ret += defaultCommands.get(j).toString(constants) + "\r\n"; + } + ret += AVM2Code.IDENTCLOSE + "\r\n"; + } + ret += hilight("}") + "\r\n"; + ret += ":loop" + loopBreak; + return ret; + } + + public List getContinues() { + List ret = new ArrayList(); + + for (List onecase : caseCommands) { + for (TreeItem ti : onecase) { + if (ti instanceof ContinueTreeItem) { + ret.add((ContinueTreeItem) ti); + } + if (ti instanceof Block) { + ret.addAll(((Block) ti).getContinues()); + } + } + } + + for (TreeItem ti : defaultCommands) { + if (ti instanceof ContinueTreeItem) { + ret.add((ContinueTreeItem) ti); + } + if (ti instanceof Block) { + ret.addAll(((Block) ti).getContinues()); + } + } + return ret; + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/TernarOpTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/TernarOpTreeItem.java new file mode 100644 index 000000000..b8d148e5a --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/TernarOpTreeItem.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.clauses; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + + +public class TernarOpTreeItem extends TreeItem { + public TreeItem expression; + public TreeItem onTrue; + public TreeItem onFalse; + + public TernarOpTreeItem(AVM2Instruction instruction, TreeItem expression, TreeItem onTrue, TreeItem onFalse) { + super(instruction, PRECEDENCE_CONDITIONAL); + this.expression = expression; + this.onTrue = onTrue; + this.onFalse = onFalse; + } + + @Override + public String toString(ConstantPool constants) { + return expression.toString(constants) + hilight("?") + onTrue.toString(constants) + hilight(":") + onFalse.toString(constants); + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/TryTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/TryTreeItem.java new file mode 100644 index 000000000..bb48f929c --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/TryTreeItem.java @@ -0,0 +1,89 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.clauses; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.treemodel.ContinueTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.ABCException; + +import java.util.ArrayList; +import java.util.List; + + +public class TryTreeItem extends TreeItem implements Block { + + public List tryCommands; + public List catchExceptions; + public List> catchCommands; + public List finallyCommands; + + public TryTreeItem(List tryCommands, List catchExceptions, List> catchCommands, List finallyCommands) { + super(null, NOPRECEDENCE); + this.tryCommands = tryCommands; + this.catchExceptions = catchExceptions; + this.catchCommands = catchCommands; + this.finallyCommands = finallyCommands; + } + + @Override + public String toString(ConstantPool constants) { + String ret = ""; + ret += "try\r\n{\r\n"; + for (TreeItem ti : tryCommands) { + ret += ti.toString(constants) + "\r\n"; + } + ret += "}"; + for (int e = 0; e < catchExceptions.size(); e++) { + ret += "\r\ncatch(" + catchExceptions.get(e).getVarName(constants) + ":" + catchExceptions.get(e).getTypeName(constants) + ")\r\n{\r\n"; + List commands = catchCommands.get(e); + for (TreeItem ti : commands) { + ret += ti.toString(constants) + "\r\n"; + } + ret += "}"; + } + if (finallyCommands.size() > 0) { + ret += "\r\nfinally\r\n{\r\n"; + for (TreeItem ti : finallyCommands) { + ret += ti.toString(constants) + "\r\n"; + } + ret += "}"; + } + return ret; + } + + public List getContinues() { + List ret = new ArrayList(); + for (TreeItem ti : tryCommands) { + if (ti instanceof ContinueTreeItem) { + ret.add((ContinueTreeItem) ti); + } + if (ti instanceof Block) { + ret.addAll(((Block) ti).getContinues()); + } + } + if (finallyCommands != null) { + for (TreeItem ti : finallyCommands) { + if (ti instanceof ContinueTreeItem) { + ret.add((ContinueTreeItem) ti); + } + if (ti instanceof Block) { + ret.addAll(((Block) ti).getContinues()); + } + } + } + for (List commands : catchCommands) { + for (TreeItem ti : commands) { + if (ti instanceof ContinueTreeItem) { + ret.add((ContinueTreeItem) ti); + } + if (ti instanceof Block) { + ret.addAll(((Block) ti).getContinues()); + } + } + } + return ret; + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/WhileTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/WhileTreeItem.java new file mode 100644 index 000000000..e204abd26 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/clauses/WhileTreeItem.java @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.clauses; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.ContinueTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + +import java.util.ArrayList; +import java.util.List; + + +public class WhileTreeItem extends LoopTreeItem implements Block { + + public TreeItem expression; + public List commands; + + public WhileTreeItem(AVM2Instruction instruction, int loopBreak, int loopContinue, TreeItem expression, List commands) { + super(instruction, loopBreak, loopContinue); + this.expression = expression; + this.commands = commands; + } + + @Override + public String toString(ConstantPool constants) { + String ret = ""; + ret += "loop" + loopBreak + ":\r\n"; + ret += hilight("while(") + expression.toString(constants) + hilight(")") + "\r\n{\r\n"; + for (TreeItem ti : commands) { + ret += ti.toString(constants) + "\r\n"; + } + ret += hilight("}") + "\r\n"; + ret += ":loop" + loopBreak; + return ret; + } + + public List getContinues() { + List ret = new ArrayList(); + for (TreeItem ti : commands) { + if (ti instanceof ContinueTreeItem) { + ret.add((ContinueTreeItem) ti); + } + if (ti instanceof Block) { + ret.addAll(((Block) ti).getContinues()); + } + } + return ret; + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/AddTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/AddTreeItem.java new file mode 100644 index 000000000..c784eba4a --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/AddTreeItem.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.operations; + +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + + +public class AddTreeItem extends BinaryOpTreeItem { + + public AddTreeItem(AVM2Instruction instruction, TreeItem leftSide, TreeItem rightSide) { + super(instruction, PRECEDENCE_ADDITIVE, leftSide, rightSide, "+"); + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/AndTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/AndTreeItem.java new file mode 100644 index 000000000..063d5c131 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/AndTreeItem.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.operations; + +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + + +public class AndTreeItem extends BinaryOpTreeItem { + + public AndTreeItem(AVM2Instruction instruction, TreeItem leftSide, TreeItem rightSide) { + super(instruction, PRECEDENCE_LOGICALAND, leftSide, rightSide, "&&"); + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/AsTypeTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/AsTypeTreeItem.java new file mode 100644 index 000000000..30875b4de --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/AsTypeTreeItem.java @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.operations; + +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + + +public class AsTypeTreeItem extends BinaryOpTreeItem { + + public AsTypeTreeItem(AVM2Instruction instruction, TreeItem value, TreeItem type) { + super(instruction, PRECEDENCE_RELATIONAL, value, type, " as "); + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/BinaryOpTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/BinaryOpTreeItem.java new file mode 100644 index 000000000..b3fc9849d --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/BinaryOpTreeItem.java @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.operations; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + + +public abstract class BinaryOpTreeItem extends TreeItem { + + public TreeItem leftSide; + public TreeItem rightSide; + protected String operator = ""; + + public BinaryOpTreeItem(AVM2Instruction instruction, int precedence, TreeItem leftSide, TreeItem rightSide, String operator) { + super(instruction, precedence); + this.leftSide = leftSide; + this.rightSide = rightSide; + this.operator = operator; + } + + @Override + public String toString(ConstantPool constants) { + String ret = ""; + if (leftSide.precedence > precedence) { + ret += "(" + leftSide.toString(constants) + ")"; + } else { + ret += leftSide.toString(constants); + } + ret += hilight(operator); + if (rightSide.precedence > precedence) { + ret += "(" + rightSide.toString(constants) + ")"; + } else { + ret += rightSide.toString(constants); + } + return ret; + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/BitAndTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/BitAndTreeItem.java new file mode 100644 index 000000000..215f5df97 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/BitAndTreeItem.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.operations; + +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + + +public class BitAndTreeItem extends BinaryOpTreeItem { + + public BitAndTreeItem(AVM2Instruction instruction, TreeItem leftSide, TreeItem rightSide) { + super(instruction, PRECEDENCE_BITWISEAND, leftSide, rightSide, "&"); + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/BitNotTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/BitNotTreeItem.java new file mode 100644 index 000000000..430ed570f --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/BitNotTreeItem.java @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.operations; + +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + + +public class BitNotTreeItem extends UnaryOpTreeItem { + + public BitNotTreeItem(AVM2Instruction instruction, TreeItem value) { + super(instruction, PRECEDENCE_UNARY, value, "~"); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/BitOrTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/BitOrTreeItem.java new file mode 100644 index 000000000..ecc9af640 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/BitOrTreeItem.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.operations; + +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + + +public class BitOrTreeItem extends BinaryOpTreeItem { + + public BitOrTreeItem(AVM2Instruction instruction, TreeItem leftSide, TreeItem rightSide) { + super(instruction, PRECEDENCE_BITWISEOR, leftSide, rightSide, "|"); + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/BitXorTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/BitXorTreeItem.java new file mode 100644 index 000000000..23e0f04e3 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/BitXorTreeItem.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.operations; + +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + + +public class BitXorTreeItem extends BinaryOpTreeItem { + + public BitXorTreeItem(AVM2Instruction instruction, TreeItem leftSide, TreeItem rightSide) { + super(instruction, PRECEDENCE_BITWISEXOR, leftSide, rightSide, "^"); + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/DeletePropertyTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/DeletePropertyTreeItem.java new file mode 100644 index 000000000..4fe3ad117 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/DeletePropertyTreeItem.java @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.operations; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.FullMultinameTreeItem; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + + +public class DeletePropertyTreeItem extends TreeItem { + public TreeItem object; + public FullMultinameTreeItem propertyName; + + public DeletePropertyTreeItem(AVM2Instruction instruction, TreeItem object, FullMultinameTreeItem propertyName) { + super(instruction, PRECEDENCE_UNARY); + this.object = object; + this.propertyName = propertyName; + } + + @Override + public String toString(ConstantPool constants) { + return hilight("delete ") + object.toString(constants) + "[" + propertyName.toString(constants) + "]"; + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/DivideTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/DivideTreeItem.java new file mode 100644 index 000000000..371b34ac4 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/DivideTreeItem.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.operations; + +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + + +public class DivideTreeItem extends BinaryOpTreeItem { + + public DivideTreeItem(AVM2Instruction instruction, TreeItem leftSide, TreeItem rightSide) { + super(instruction, PRECEDENCE_MULTIPLICATIVE, leftSide, rightSide, "/"); + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/EqTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/EqTreeItem.java new file mode 100644 index 000000000..6aae09bfb --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/EqTreeItem.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.operations; + +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + + +public class EqTreeItem extends BinaryOpTreeItem { + + public EqTreeItem(AVM2Instruction instruction, TreeItem leftSide, TreeItem rightSide) { + super(instruction, PRECEDENCE_EQUALITY, leftSide, rightSide, "=="); + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/GeTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/GeTreeItem.java new file mode 100644 index 000000000..275eeaff2 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/GeTreeItem.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.operations; + +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + + +public class GeTreeItem extends BinaryOpTreeItem { + + public GeTreeItem(AVM2Instruction instruction, TreeItem leftSide, TreeItem rightSide) { + super(instruction, PRECEDENCE_RELATIONAL, leftSide, rightSide, ">="); + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/GtTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/GtTreeItem.java new file mode 100644 index 000000000..6a0650a54 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/GtTreeItem.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.operations; + +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + + +public class GtTreeItem extends BinaryOpTreeItem { + + public GtTreeItem(AVM2Instruction instruction, TreeItem leftSide, TreeItem rightSide) { + super(instruction, PRECEDENCE_RELATIONAL, leftSide, rightSide, ">"); + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/InTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/InTreeItem.java new file mode 100644 index 000000000..18bd8c3b1 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/InTreeItem.java @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.operations; + +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + + +public class InTreeItem extends BinaryOpTreeItem { + + public InTreeItem(AVM2Instruction instruction, TreeItem name, TreeItem object) { + super(instruction, PRECEDENCE_RELATIONAL, name, object, " in "); + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/InstanceOfTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/InstanceOfTreeItem.java new file mode 100644 index 000000000..e5ab0ca71 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/InstanceOfTreeItem.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.operations; + +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + + +public class InstanceOfTreeItem extends BinaryOpTreeItem { + + public InstanceOfTreeItem(AVM2Instruction instruction, TreeItem value, TreeItem type) { + super(instruction, PRECEDENCE_RELATIONAL, value, type, " instanceof "); + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/IsTypeTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/IsTypeTreeItem.java new file mode 100644 index 000000000..b93e2ac39 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/IsTypeTreeItem.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.operations; + +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + + +public class IsTypeTreeItem extends BinaryOpTreeItem { + + public IsTypeTreeItem(AVM2Instruction instruction, TreeItem value, TreeItem type) { + super(instruction, PRECEDENCE_RELATIONAL, value, type, " is "); + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/LShiftTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/LShiftTreeItem.java new file mode 100644 index 000000000..067208f2d --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/LShiftTreeItem.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.operations; + +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + + +public class LShiftTreeItem extends BinaryOpTreeItem { + + public LShiftTreeItem(AVM2Instruction instruction, TreeItem leftSide, TreeItem rightSide) { + super(instruction, PRECEDENCE_BITWISESHIFT, leftSide, rightSide, "<<"); + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/LeTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/LeTreeItem.java new file mode 100644 index 000000000..6125bfb66 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/LeTreeItem.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.operations; + +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + + +public class LeTreeItem extends BinaryOpTreeItem { + + public LeTreeItem(AVM2Instruction instruction, TreeItem leftSide, TreeItem rightSide) { + super(instruction, PRECEDENCE_RELATIONAL, leftSide, rightSide, "<="); + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/LtTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/LtTreeItem.java new file mode 100644 index 000000000..0b7c5f983 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/LtTreeItem.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.operations; + +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + + +public class LtTreeItem extends BinaryOpTreeItem { + + public LtTreeItem(AVM2Instruction instruction, TreeItem leftSide, TreeItem rightSide) { + super(instruction, PRECEDENCE_RELATIONAL, leftSide, rightSide, "<"); + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/ModuloTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/ModuloTreeItem.java new file mode 100644 index 000000000..28ccc61d4 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/ModuloTreeItem.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.operations; + +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + + +public class ModuloTreeItem extends BinaryOpTreeItem { + + public ModuloTreeItem(AVM2Instruction instruction, TreeItem leftSide, TreeItem rightSide) { + super(instruction, PRECEDENCE_MULTIPLICATIVE, leftSide, rightSide, "%"); + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/MultiplyTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/MultiplyTreeItem.java new file mode 100644 index 000000000..913584517 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/MultiplyTreeItem.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.operations; + +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + + +public class MultiplyTreeItem extends BinaryOpTreeItem { + + public MultiplyTreeItem(AVM2Instruction instruction, TreeItem leftSide, TreeItem rightSide) { + super(instruction, PRECEDENCE_MULTIPLICATIVE, leftSide, rightSide, "*"); + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/NegTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/NegTreeItem.java new file mode 100644 index 000000000..f1ab86009 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/NegTreeItem.java @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.operations; + +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + + +public class NegTreeItem extends UnaryOpTreeItem { + + public NegTreeItem(AVM2Instruction instruction, TreeItem value) { + super(instruction, PRECEDENCE_UNARY, value, "-"); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/NeqTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/NeqTreeItem.java new file mode 100644 index 000000000..16728f63d --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/NeqTreeItem.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.operations; + +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + + +public class NeqTreeItem extends BinaryOpTreeItem { + + public NeqTreeItem(AVM2Instruction instruction, TreeItem leftSide, TreeItem rightSide) { + super(instruction, PRECEDENCE_EQUALITY, leftSide, rightSide, "!="); + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/NotTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/NotTreeItem.java new file mode 100644 index 000000000..409e35558 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/NotTreeItem.java @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.operations; + +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + + +public class NotTreeItem extends UnaryOpTreeItem { + + public NotTreeItem(AVM2Instruction instruction, TreeItem value) { + super(instruction, PRECEDENCE_UNARY, value, "!"); + } + + @Override + public boolean isTrue() { + return !value.isTrue(); + } + + @Override + public boolean isFalse() { + return !value.isFalse(); + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/OrTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/OrTreeItem.java new file mode 100644 index 000000000..96392b388 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/OrTreeItem.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.operations; + +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + + +public class OrTreeItem extends BinaryOpTreeItem { + + public OrTreeItem(AVM2Instruction instruction, TreeItem leftSide, TreeItem rightSide) { + super(instruction, PRECEDENCE_LOGICALOR, leftSide, rightSide, "||"); + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/PreDecrementTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/PreDecrementTreeItem.java new file mode 100644 index 000000000..d50082eae --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/PreDecrementTreeItem.java @@ -0,0 +1,15 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.operations; + +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + + +public class PreDecrementTreeItem extends UnaryOpTreeItem { + public PreDecrementTreeItem(AVM2Instruction instruction, TreeItem object) { + super(instruction, PRECEDENCE_UNARY, object, "--"); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/PreIncrementTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/PreIncrementTreeItem.java new file mode 100644 index 000000000..7e63d9a6d --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/PreIncrementTreeItem.java @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.operations; + +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + + +public class PreIncrementTreeItem extends UnaryOpTreeItem { + + public PreIncrementTreeItem(AVM2Instruction instruction, TreeItem object) { + super(instruction, PRECEDENCE_UNARY, object, "++"); + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/RShiftTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/RShiftTreeItem.java new file mode 100644 index 000000000..b9eefb69a --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/RShiftTreeItem.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.operations; + +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + + +public class RShiftTreeItem extends BinaryOpTreeItem { + + public RShiftTreeItem(AVM2Instruction instruction, TreeItem leftSide, TreeItem rightSide) { + super(instruction, PRECEDENCE_BITWISESHIFT, leftSide, rightSide, ">>"); + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/StrictEqTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/StrictEqTreeItem.java new file mode 100644 index 000000000..51a70da63 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/StrictEqTreeItem.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.operations; + +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + + +public class StrictEqTreeItem extends BinaryOpTreeItem { + + public StrictEqTreeItem(AVM2Instruction instruction, TreeItem leftSide, TreeItem rightSide) { + super(instruction, PRECEDENCE_EQUALITY, leftSide, rightSide, "==="); + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/StrictNeqTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/StrictNeqTreeItem.java new file mode 100644 index 000000000..a88cde6b6 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/StrictNeqTreeItem.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.operations; + +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + + +public class StrictNeqTreeItem extends BinaryOpTreeItem { + + public StrictNeqTreeItem(AVM2Instruction instruction, TreeItem leftSide, TreeItem rightSide) { + super(instruction, PRECEDENCE_EQUALITY, leftSide, rightSide, "!=="); + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/SubtractTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/SubtractTreeItem.java new file mode 100644 index 000000000..7f497e837 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/SubtractTreeItem.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.operations; + +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + + +public class SubtractTreeItem extends BinaryOpTreeItem { + + public SubtractTreeItem(AVM2Instruction instruction, TreeItem leftSide, TreeItem rightSide) { + super(instruction, PRECEDENCE_ADDITIVE, leftSide, rightSide, "-"); + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/TypeOfTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/TypeOfTreeItem.java new file mode 100644 index 000000000..17587bf49 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/TypeOfTreeItem.java @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.operations; + +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + + +public class TypeOfTreeItem extends UnaryOpTreeItem { + + public TypeOfTreeItem(AVM2Instruction instruction, TreeItem value) { + super(instruction, PRECEDENCE_UNARY, value, "typeof "); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/URShiftTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/URShiftTreeItem.java new file mode 100644 index 000000000..baad20c3e --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/URShiftTreeItem.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.operations; + +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + + +public class URShiftTreeItem extends BinaryOpTreeItem { + + public URShiftTreeItem(AVM2Instruction instruction, TreeItem leftSide, TreeItem rightSide) { + super(instruction, PRECEDENCE_BITWISESHIFT, leftSide, rightSide, ">>>"); + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/UnaryOpTreeItem.java b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/UnaryOpTreeItem.java new file mode 100644 index 000000000..eb105b7ab --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/avm2/treemodel/operations/UnaryOpTreeItem.java @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.avm2.treemodel.operations; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.AVM2Instruction; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; + + +public abstract class UnaryOpTreeItem extends TreeItem { + public TreeItem value; + public String operator; + + public UnaryOpTreeItem(AVM2Instruction instruction, int precedence, TreeItem value, String operator) { + super(instruction, precedence); + this.value = value; + this.operator = operator; + } + + @Override + public String toString(ConstantPool constants) { + String s = value.toString(constants); + if (value.precedence > precedence) s = "(" + s + ")"; + return hilight(operator) + s; + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/gui/ABCComboBoxModel.java b/trunk/src/com/jpexs/asdec/abc/gui/ABCComboBoxModel.java new file mode 100644 index 000000000..3c919d73d --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/gui/ABCComboBoxModel.java @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.gui; + +import com.jpexs.asdec.tags.DoABCTag; + +import javax.swing.*; +import javax.swing.event.ListDataListener; +import java.util.List; + + +public class ABCComboBoxModel implements ComboBoxModel { + public List list; + public int itemIndex = 0; + + public ABCComboBoxModel(List list) { + this.list = list; + } + + + public int getSize() { + return list.size(); + } + + public Object getElementAt(int index) { + return list.get(index); + } + + public void addListDataListener(ListDataListener l) { + + } + + public void removeListDataListener(ListDataListener l) { + + } + + public void setSelectedItem(Object anItem) { + itemIndex = list.indexOf(anItem); + } + + public Object getSelectedItem() { + return getElementAt(itemIndex); + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/gui/ASMSourceEditorPane.java b/trunk/src/com/jpexs/asdec/abc/gui/ASMSourceEditorPane.java new file mode 100644 index 000000000..0b9833f17 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/gui/ASMSourceEditorPane.java @@ -0,0 +1,119 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.gui; + +import com.jpexs.asdec.Main; +import com.jpexs.asdec.abc.ABC; +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.ConvertException; +import com.jpexs.asdec.abc.avm2.parser.ASM3Parser; +import com.jpexs.asdec.abc.avm2.parser.ParseException; + +import javax.swing.*; +import java.io.ByteArrayInputStream; +import java.io.IOException; + + +public class ASMSourceEditorPane extends JEditorPane { + + public ABC abc; + public int bodyIndex; + + public ASMSourceEditorPane() { + + } + + public void setBodyIndex(int bodyIndex, ABC abc) { + this.bodyIndex = bodyIndex; + this.abc = abc; + setText(abc.bodies[bodyIndex].code.toASMSource(abc.constants)); + } + + public void save(ConstantPool constants) { + try { + AVM2Code acode = ASM3Parser.parse(new ByteArrayInputStream(getText().getBytes()), constants, new DialogMissingSymbolHandler()); + abc.bodies[bodyIndex].code = acode; + Main.abcMainFrame.decompiledTextArea.reloadClass(); + Main.abcMainFrame.decompiledTextArea.gotoLastTrait(); + } catch (IOException ex) { + } catch (ParseException ex) { + JOptionPane.showMessageDialog(this, (ex.text + " on line " + ex.line)); + selectLine((int) ex.line); + return; + } + JOptionPane.showMessageDialog(this, ("Code Saved")); + } + + public void verify(ConstantPool constants, ABC abc) { + try { + AVM2Code acode = ASM3Parser.parse(new ByteArrayInputStream(getText().getBytes()), constants, new DialogMissingSymbolHandler()); + acode.clearSecureSWF(abc.constants, abc.bodies[bodyIndex]); + setText(acode.toASMSource(constants)); + + + //Main.mainFrame.decompiledTextArea.setBody(mb, abc); + } catch (IOException ex) { + } catch (ConvertException ex) { + } catch (ParseException ex) { + JOptionPane.showMessageDialog(this, (ex.text + " on line " + ex.line)); + selectLine((int) ex.line); + return; + } + JOptionPane.showMessageDialog(this, ("Code OK")); + } + + public void selectInstruction(int pos) { + String text = getText(); + int lineCnt = 1; + int lineStart = 0; + int lineEnd = -1; + int instrCount = 0; + int dot = -2; + for (int i = 0; i < text.length(); i++) { + if (text.charAt(i) == '\n') { + if (!((i > 0) && (text.charAt(i - 1) == ':'))) + instrCount++; + lineCnt++; + if (instrCount == pos) { + lineStart = i; + dot = lineCnt; + } + if (lineCnt == dot + 1) { + lineEnd = i; + break; + } + } + } + if (lineCnt == -1) { + lineEnd = text.length() - 1; + } + select(lineStart, lineEnd); + requestFocus(); + } + + public void selectLine(int line) { + String text = getText(); + int lineCnt = 1; + int lineStart = 0; + int lineEnd = -1; + for (int i = 0; i < text.length(); i++) { + if (text.charAt(i) == '\n') { + lineCnt++; + if (lineCnt == line) { + lineStart = i; + } + if (lineCnt == line + 1) { + lineEnd = i; + } + } + } + if (lineCnt == -1) { + lineEnd = text.length() - 1; + } + select(lineStart, lineEnd); + requestFocus(); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/gui/ClassesListTree.java b/trunk/src/com/jpexs/asdec/abc/gui/ClassesListTree.java new file mode 100644 index 000000000..f2968779c --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/gui/ClassesListTree.java @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.gui; + +import com.jpexs.asdec.Main; +import com.jpexs.asdec.abc.ABC; + +import javax.swing.*; +import javax.swing.event.TreeSelectionEvent; +import javax.swing.event.TreeSelectionListener; +import javax.swing.tree.DefaultTreeCellRenderer; + + +public class ClassesListTree extends JTree implements TreeSelectionListener { + public ABC abc; + + public ClassesListTree(ABC abc) { + this.abc = abc; + setModel(new ClassesListTreeModel(abc)); + addTreeSelectionListener(this); + DefaultTreeCellRenderer treeRenderer = new DefaultTreeCellRenderer(); + ClassLoader cldr = this.getClass().getClassLoader(); + java.net.URL imageURL = cldr.getResource("com/jpexs/asdec/abc/gui/graphics/class.png"); + ImageIcon leafIcon = new ImageIcon(imageURL); + treeRenderer.setLeafIcon(leafIcon); + setCellRenderer(treeRenderer); + } + + public void setABC(ABC abc) { + setModel(new ClassesListTreeModel(abc)); + this.abc = abc; + } + + public void valueChanged(TreeSelectionEvent e) { + if (Main.isWorking()) return; + final TreePart tp = (TreePart) getLastSelectedPathComponent(); + if (tp == null) return; + if (tp.classIndex != -1) { + if (!Main.isWorking()) { + Main.startWork("Decompiling class..."); + (new Thread() { + @Override + public void run() { + Main.abcMainFrame.navigator.setClassIndex(tp.classIndex); + Main.abcMainFrame.decompiledTextArea.setClassIndex(tp.classIndex, abc); + Main.abcMainFrame.sourceTextArea.setText(""); + Main.stopWork(); + } + }).start(); + } + } + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/gui/ClassesListTreeModel.java b/trunk/src/com/jpexs/asdec/abc/gui/ClassesListTreeModel.java new file mode 100644 index 000000000..5aac03919 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/gui/ClassesListTreeModel.java @@ -0,0 +1,114 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.gui; + +import com.jpexs.asdec.abc.ABC; + +import javax.swing.event.TreeModelListener; +import javax.swing.tree.TreeModel; +import javax.swing.tree.TreePath; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.regex.Pattern; + + +public class ClassesListTreeModel implements TreeModel { + private ABC abc; + private List pathList = new ArrayList(); + + public ClassesListTreeModel(ABC abc) { + this.abc = abc; + for (int i = 0; i < abc.instance_info.length; i++) { + String packageName = abc.instance_info[i].getName(abc.constants).getNamespace(abc.constants).getName(abc.constants); + String className = abc.instance_info[i].getName(abc.constants).getName(abc.constants); + String full = packageName + "." + className; + String parts[] = full.split("\\."); + String s = ""; + for (int j = 0; j < parts.length; j++) { + if (!s.endsWith(".")) s += "."; + s += parts[j]; + TreePart tp = new TreePart(s, parts[j], j < parts.length - 1 ? -1 : i); + if (!pathList.contains(tp)) { + pathList.add(tp); + } + } + } + for (int k1 = 0; k1 < pathList.size(); k1++) { + TreePart tp1 = pathList.get(k1); + for (int k2 = 0; k2 < pathList.size(); k2++) { + if (k1 == k2) continue; + TreePart tp2 = pathList.get(k2); + if (!tp1.path.equals(tp2.path)) { + if (tp1.path.startsWith(tp2.path + ".")) { + tp2.hasSubParts = true; + } + if (tp2.path.startsWith(tp1.path + ".")) { + tp1.hasSubParts = true; + } + } + } + } + Collections.sort(pathList); + } + + + public Object getRoot() { + return new TreePart("", "", -1); + } + + public Object getChild(Object parent, int index) { + int i = -1; + for (TreePart tp : pathList) { + if (tp.path.matches(Pattern.quote(((TreePart) parent).path) + "\\.[^\\.]+")) { + i++; + if (i == index) { + return tp; + } + } + } + return null; + } + + public int getChildCount(Object parent) { + int i = 0; + for (TreePart tp : pathList) { + if (tp.path.matches(Pattern.quote(((TreePart) parent).path) + "\\.[^\\.]+")) { + i++; + } + } + return i; + } + + public boolean isLeaf(Object node) { + return getChildCount(node) == 0; + } + + public void valueForPathChanged(TreePath path, Object newValue) { + + } + + public int getIndexOfChild(Object parent, Object child) { + int i = -1; + for (TreePart tp : pathList) { + if (tp.path.matches(Pattern.quote(((TreePart) parent).path) + "\\.[^\\.]+")) { + i++; + if (tp.equals(child)) { + return i; + } + } + } + return i; + } + + public void addTreeModelListener(TreeModelListener l) { + + } + + public void removeTreeModelListener(TreeModelListener l) { + + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/gui/ConstantsListModel.java b/trunk/src/com/jpexs/asdec/abc/gui/ConstantsListModel.java new file mode 100644 index 000000000..a4a73e734 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/gui/ConstantsListModel.java @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.gui; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.helpers.Helper; + +import javax.swing.*; +import javax.swing.event.ListDataListener; + + +public class ConstantsListModel implements ListModel { + private ConstantPool constants; + + public static final int TYPE_UINT = 0; + public static final int TYPE_INT = 1; + public static final int TYPE_DOUBLE = 2; + public static final int TYPE_STRING = 3; + public static final int TYPE_NAMESPACE = 4; + public static final int TYPE_NAMESPACESET = 5; + public static final int TYPE_MULTINAME = 6; + private int type = TYPE_INT; + + public ConstantsListModel(ConstantPool constants, int type) { + this.type = type; + this.constants = constants; + } + + + private int makeUp(int i) { + if (i < 0) return 0; + return i; + } + + public int getSize() { + switch (type) { + case TYPE_UINT: + return makeUp(constants.constant_uint.length - 1); + case TYPE_INT: + return makeUp(constants.constant_int.length - 1); + case TYPE_DOUBLE: + return makeUp(constants.constant_double.length - 1); + case TYPE_STRING: + return makeUp(constants.constant_string.length - 1); + case TYPE_NAMESPACE: + return makeUp(constants.constant_namespace.length - 1); + case TYPE_NAMESPACESET: + return makeUp(constants.constant_namespace_set.length - 1); + case TYPE_MULTINAME: + return makeUp(constants.constant_multiname.length - 1); + } + return 0; + } + + public Object getElementAt(int index) { + switch (type) { + case TYPE_UINT: + return "" + (index + 1) + ":" + constants.constant_uint[index + 1]; + case TYPE_INT: + return "" + (index + 1) + ":" + constants.constant_int[index + 1]; + case TYPE_DOUBLE: + return "" + (index + 1) + ":" + constants.constant_double[index + 1]; + case TYPE_STRING: + return "" + (index + 1) + ":" + Helper.escapeString(constants.constant_string[index + 1]); + case TYPE_NAMESPACE: + return "" + (index + 1) + ":" + constants.constant_namespace[index + 1].getNameWithKind(constants); + case TYPE_NAMESPACESET: + return "" + (index + 1) + ":" + constants.constant_namespace_set[index + 1].toString(constants); + case TYPE_MULTINAME: + return "" + (index + 1) + ":" + constants.constant_multiname[index + 1].toString(constants); + } + return null; + } + + public void addListDataListener(ListDataListener l) { + + } + + public void removeListDataListener(ListDataListener l) { + + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/gui/DecompiledEditorPane.java b/trunk/src/com/jpexs/asdec/abc/gui/DecompiledEditorPane.java new file mode 100644 index 000000000..1c5244f11 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/gui/DecompiledEditorPane.java @@ -0,0 +1,154 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.gui; + +import com.jpexs.asdec.Main; +import com.jpexs.asdec.abc.ABC; +import com.jpexs.asdec.abc.avm2.ConvertException; +import com.jpexs.asdec.helpers.Highlighting; + +import javax.swing.*; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + + +public class DecompiledEditorPane extends JEditorPane implements MouseListener { + + private List highlights = new ArrayList(); + private List traitHighlights = new ArrayList(); + private ABC abc; + private int classIndex; + public int lastTraitIndex = 0; + + private class BufferedClass { + + public String text; + public List highlights; + public List traitHighlights; + + public BufferedClass(String text, List highlights, List traitHighlights) { + this.text = text; + this.highlights = highlights; + this.traitHighlights = traitHighlights; + } + } + + private HashMap bufferedClasses = new HashMap(); + + public void gotoLastTrait() { + gotoTrait(lastTraitIndex); + } + + public void gotoTrait(int traitId) { + for (Highlighting th : traitHighlights) { + if (th.offset == traitId) { + setCaretPosition(th.startPos + th.len - 1); + setCaretPosition(th.startPos); + break; + } + } + int mi = abc.findMethodIdByTraitId(classIndex, traitId); + int bi = abc.findBodyIndex(mi); + if (bi == -1) { + Main.abcMainFrame.sourceTextArea.setText(""); + return; + } + if (Main.abcMainFrame.sourceTextArea.bodyIndex != bi) { + Main.abcMainFrame.sourceTextArea.setBodyIndex(bi, abc); + } + } + + public DecompiledEditorPane() { + /*setFont(new Font("Courier new", Font.PLAIN, 16)); + setBackground(new Color(0, 0, 0x80)); + setForeground(Color.white); + setCaretColor(Color.white);*/ + addMouseListener(this); + setEditable(false); + } + + public void setClassIndex(int index, ABC abc) { + setText("//Please wait..."); + + String hilightedCode = ""; + if (!bufferedClasses.containsKey(index)) { + hilightedCode = abc.classToString(index, true); + highlights = Highlighting.getInstrHighlights(hilightedCode); + traitHighlights = Highlighting.getTraitHighlights(hilightedCode); + hilightedCode = Highlighting.stripHilights(hilightedCode); + bufferedClasses.put(index, new BufferedClass(hilightedCode, highlights, traitHighlights)); + } else { + BufferedClass bc = bufferedClasses.get(index); + hilightedCode = bc.text; + highlights = bc.highlights; + traitHighlights = bc.traitHighlights; + } + setText(hilightedCode); + this.abc = abc; + classIndex = index; + } + + public void reloadClass() { + if (bufferedClasses.containsKey(classIndex)) { + bufferedClasses.remove(classIndex); + } + setClassIndex(classIndex, abc); + } + + public void setABC(ABC abc) { + this.abc = abc; + bufferedClasses.clear(); + setText(""); + } + + public void mouseClicked(MouseEvent e) { + } + + public void mousePressed(MouseEvent e) { + int pos = getCaretPosition(); + for (Highlighting th : traitHighlights) { + if ((pos >= th.startPos) && (pos < th.startPos + th.len)) { + + int bi = abc.findBodyIndex(abc.findMethodIdByTraitId(classIndex, (int) th.offset)); + if (bi == -1) { + Main.abcMainFrame.sourceTextArea.setText(""); + break; + } + lastTraitIndex = (int) th.offset; + if (Main.abcMainFrame.sourceTextArea.bodyIndex != bi) { + /*try { + abc.bodies[bi].code.clearCode(abc.constants, abc.bodies[bi]); + } catch (ConvertException ex) { + Logger.getLogger(DecompiledEditorPane.class.getName()).log(Level.SEVERE, null, ex); + }*/ + Main.abcMainFrame.sourceTextArea.setBodyIndex(bi, abc); + } + for (Highlighting h : highlights) { + if ((pos >= h.startPos) && (pos < h.startPos + h.len)) { + try { + Main.abcMainFrame.sourceTextArea.selectInstruction(abc.bodies[bi].code.adr2pos(h.offset)); + + } catch (ConvertException ex) { + } + break; + } + } + } + } + + } + + public void mouseReleased(MouseEvent e) { + } + + public void mouseEntered(MouseEvent e) { + } + + public void mouseExited(MouseEvent e) { + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/gui/DialogMissingSymbolHandler.java b/trunk/src/com/jpexs/asdec/abc/gui/DialogMissingSymbolHandler.java new file mode 100644 index 000000000..ea519dd5b --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/gui/DialogMissingSymbolHandler.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.gui; + +import com.jpexs.asdec.abc.avm2.parser.MissingSymbolHandler; + +import javax.swing.*; + + +public class DialogMissingSymbolHandler implements MissingSymbolHandler { + + public boolean missingString(String value) { + return JOptionPane.showConfirmDialog(null, "String \"" + value + "\" is not present in constants table. Do you want to add it?", "Add String", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.OK_OPTION; + } + + public boolean missingInt(long value) { + return JOptionPane.showConfirmDialog(null, "Integer value \"" + value + "\" is not present in constants table. Do you want to add it?", "Add Integer", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.OK_OPTION; + } + + public boolean missingUInt(long value) { + return JOptionPane.showConfirmDialog(null, "Unsigned integer value \"" + value + "\" is not present in constants table. Do you want to add it?", "Add Unsigned integer", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.OK_OPTION; + } + + public boolean missingDouble(double value) { + return JOptionPane.showConfirmDialog(null, "Double value \"" + value + "\" is not present in constants table. Do you want to add it?", "Add Double", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.OK_OPTION; + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/gui/IconListRenderer.java b/trunk/src/com/jpexs/asdec/abc/gui/IconListRenderer.java new file mode 100644 index 000000000..cd28dea4d --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/gui/IconListRenderer.java @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.gui; + +import javax.swing.*; +import java.awt.*; + + +public class IconListRenderer + extends DefaultListCellRenderer { + + private Icon constIcon; + private Icon functionIcon; + private Icon variableIcon; + + private Icon loadIcon(String path) { + ClassLoader cldr = this.getClass().getClassLoader(); + java.net.URL imageURL = cldr.getResource(path); + return new ImageIcon(imageURL); + } + + public IconListRenderer() { + constIcon = loadIcon("com/jpexs/asdec/abc/gui/graphics/constant.png"); + functionIcon = loadIcon("com/jpexs/asdec/abc/gui/graphics/function.png"); + variableIcon = loadIcon("com/jpexs/asdec/abc/gui/graphics/variable.png"); + } + + @Override + public Component getListCellRendererComponent( + JList list, Object value, int index, + boolean isSelected, boolean cellHasFocus) { + + // Get the renderer component from parent class + + JLabel label = + (JLabel) super.getListCellRendererComponent(list, + value, index, isSelected, cellHasFocus); + + // Get icon to use for the list item value + + String modifiersRegex = "(public |static |final |override |private |protected |package )*"; + + if (value.toString().matches(modifiersRegex + "const .*")) + label.setIcon(constIcon); + if (value.toString().matches(modifiersRegex + "var .*")) + label.setIcon(variableIcon); + if (value.toString().matches(modifiersRegex + "function .*")) + label.setIcon(functionIcon); + if (value.toString().equals(TraitsListModel.STR_CLASS_INITIALIZER)) + label.setIcon(functionIcon); + if (value.toString().equals(TraitsListModel.STR_INSTANCE_INITIALIZER)) + label.setIcon(functionIcon); + return label; + } + +} + diff --git a/trunk/src/com/jpexs/asdec/abc/gui/MainFrame.java b/trunk/src/com/jpexs/asdec/abc/gui/MainFrame.java new file mode 100644 index 000000000..04c123542 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/gui/MainFrame.java @@ -0,0 +1,392 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.gui; + +import com.jpexs.asdec.Main; +import com.jpexs.asdec.abc.ABC; +import com.jpexs.asdec.abc.gui.tablemodels.*; +import com.jpexs.asdec.gui.LoadingPanel; +import com.jpexs.asdec.gui.View; +import com.jpexs.asdec.tags.DoABCTag; +import jsyntaxpane.DefaultSyntaxKit; + +import javax.swing.*; +import javax.swing.border.BevelBorder; +import javax.swing.table.*; +import java.awt.*; +import java.awt.event.*; +import java.io.IOException; +import java.util.List; + + +public class MainFrame extends JFrame implements ActionListener, ItemListener { + + public ASMSourceEditorPane sourceTextArea; + public TraitsList navigator; + public ClassesListTree classTree; + public ABC abc; + public List list; + public JComboBox abcComboBox; + public int listIndex = 0; + public DecompiledEditorPane decompiledTextArea; + public JScrollPane decompiledScrollPane; + public JSplitPane splitPane1; + public JSplitPane splitPane2; + public JSplitPane splitPane3; + //private ConstantsListModel constantListModel; + private JTable constantTable; + //private JList constantsList; + public JComboBox constantTypeList; + public JPanel statusPanel = new JPanel(); + public LoadingPanel loadingPanel = new LoadingPanel(20, 20); + public JLabel statusLabel = new JLabel(""); + public JLabel asmLabel = new JLabel("Disassembled code:"); + public JLabel decLabel = new JLabel("Decompiled code:"); + + public void setStatus(String s) { + if (s.equals("")) { + //statusLabel.setOpaque(false); + loadingPanel.setVisible(false); + } else { + loadingPanel.setVisible(true); + //statusLabel.setForeground(Color.white); + //statusLabel.setBackground(Color.red); + //statusLabel.setOpaque(true); + } + statusLabel.setText(s); + } + + + public JTable autoResizeColWidth(JTable table, TableModel model) { + table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + table.setModel(model); + + int margin = 5; + + for (int i = 0; i < table.getColumnCount(); i++) { + int vColIndex = i; + DefaultTableColumnModel colModel = (DefaultTableColumnModel) table.getColumnModel(); + TableColumn col = colModel.getColumn(vColIndex); + int width = 0; + + // Get width of column header + TableCellRenderer renderer = col.getHeaderRenderer(); + + if (renderer == null) { + renderer = table.getTableHeader().getDefaultRenderer(); + } + + Component comp = renderer.getTableCellRendererComponent(table, col.getHeaderValue(), false, false, 0, 0); + + width = comp.getPreferredSize().width; + + // Get maximum width of column data + for (int r = 0; r < table.getRowCount(); r++) { + renderer = table.getCellRenderer(r, vColIndex); + comp = renderer.getTableCellRendererComponent(table, table.getValueAt(r, vColIndex), false, false, + r, vColIndex); + width = Math.max(width, comp.getPreferredSize().width); + } + + // Add margin + width += 2 * margin; + + // Set the width + col.setPreferredWidth(width); + } + + ((DefaultTableCellRenderer) table.getTableHeader().getDefaultRenderer()).setHorizontalAlignment( + SwingConstants.LEFT); + + // table.setAutoCreateRowSorter(true); + table.getTableHeader().setReorderingAllowed(false); + + return table; + } + + public void updateConstList() { + switch (constantTypeList.getSelectedIndex()) { + case 0: + autoResizeColWidth(constantTable, new UIntTableModel(abc)); + break; + case 1: + autoResizeColWidth(constantTable, new IntTableModel(abc)); + break; + case 2: + autoResizeColWidth(constantTable, new DoubleTableModel(abc)); + break; + case 3: + autoResizeColWidth(constantTable, new StringTableModel(abc)); + break; + case 4: + autoResizeColWidth(constantTable, new NamespaceTableModel(abc)); + break; + case 5: + autoResizeColWidth(constantTable, new NamespaceSetTableModel(abc)); + break; + case 6: + autoResizeColWidth(constantTable, new MultinameTableModel(abc)); + break; + } + //DefaultTableColumnModel colModel = (DefaultTableColumnModel) constantTable.getColumnModel(); + //colModel.getColumn(0).setMaxWidth(50); + } + + public void switchAbc(int index) { + listIndex = index; + this.abc = list.get(listIndex).abc; + classTree.setABC(abc); + decompiledTextArea.setABC(abc); + navigator.setABC(abc); + //constantTypeList = new JComboBox(new String[]{"UINT", "INT", "DOUBLE", "STRING", "NAMESPACE", "NAMESPACESET", "MULTINAME"}); + updateConstList(); + + } + + + public MainFrame(List list) { + + View.setWindowIcon(this); + + DefaultSyntaxKit.initKit(); + + this.list = list; + setSize(800, 600); + this.abc = list.get(listIndex).abc; + getContentPane().setLayout(new BorderLayout()); + //codeView = new CodeViewPanel(abc); + //codeView + sourceTextArea = new ASMSourceEditorPane(); + + JPanel rightPanel = new JPanel(); + rightPanel.setLayout(new BorderLayout()); + rightPanel.add(new JScrollPane(sourceTextArea), BorderLayout.CENTER); + sourceTextArea.setContentType("text/flasm3"); + JPanel buttonsPan = new JPanel(); + buttonsPan.setLayout(new FlowLayout()); + JButton verifyButton = new JButton("Verify"); + verifyButton.setActionCommand("VERIFYBODY"); + verifyButton.addActionListener(this); + + JButton saveButton = new JButton("Save"); + saveButton.setActionCommand("SAVEBODY"); + saveButton.addActionListener(this); + + + //buttonsPan.add(verifyButton); + buttonsPan.add(saveButton); + rightPanel.add(buttonsPan, BorderLayout.SOUTH); + decompiledTextArea = new DecompiledEditorPane(); + + decompiledScrollPane = new JScrollPane(decompiledTextArea); + + JPanel panA = new JPanel(); + panA.setLayout(new BorderLayout()); + panA.add(rightPanel, BorderLayout.CENTER); + panA.add(asmLabel, BorderLayout.NORTH); + asmLabel.setHorizontalAlignment(SwingConstants.CENTER); + asmLabel.setBorder(new BevelBorder(BevelBorder.RAISED)); + JPanel panB = new JPanel(); + panB.setLayout(new BorderLayout()); + panB.add(decompiledScrollPane, BorderLayout.CENTER); + panB.add(decLabel, BorderLayout.NORTH); + decLabel.setHorizontalAlignment(SwingConstants.CENTER); + decLabel.setBorder(new BevelBorder(BevelBorder.RAISED)); + splitPane1 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, + panB, panA); + decompiledTextArea.setContentType("text/actionscript"); + + JPanel pan2 = new JPanel(); + pan2.setLayout(new BorderLayout()); + pan2.add((abcComboBox = new JComboBox(new ABCComboBoxModel(list))), BorderLayout.NORTH); + + navigator = new TraitsList(); + navigator.setABC(abc); + + JTabbedPane tabbedPane = new JTabbedPane(); + tabbedPane.addTab("Traits", new JScrollPane(navigator)); + splitPane2 = new JSplitPane(JSplitPane.VERTICAL_SPLIT, + new JScrollPane(classTree = new ClassesListTree(abc)), + tabbedPane); + + pan2.add(splitPane2, BorderLayout.CENTER); + abcComboBox.addItemListener(this); + + + splitPane3 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, + pan2, + splitPane1); + + pan2.setPreferredSize(new Dimension(300, 200)); + + + loadingPanel.setPreferredSize(new Dimension(30, 30)); + statusPanel = new JPanel(); + statusPanel.setPreferredSize(new Dimension(1, 30)); + statusPanel.setBorder(new BevelBorder(BevelBorder.LOWERED)); + statusPanel.setLayout(new BorderLayout()); + statusPanel.add(loadingPanel, BorderLayout.WEST); + statusPanel.add(statusLabel, BorderLayout.CENTER); + loadingPanel.setVisible(false); + + + getContentPane().add(splitPane3, BorderLayout.CENTER); + getContentPane().add(statusPanel, BorderLayout.SOUTH); + addWindowListener(new WindowAdapter() { + + @Override + public void windowClosing(WindowEvent e) { + if (Main.proxyFrame != null) { + if (Main.proxyFrame.isVisible()) return; + } + Main.exit(); + } + }); + setTitle(Main.applicationName + " - " + Main.getFileTitle()); + + JMenuBar menuBar = new JMenuBar(); + + JMenu menuFile = new JMenu("File"); + JMenuItem miOpen = new JMenuItem("Open..."); + miOpen.setActionCommand("OPEN"); + miOpen.addActionListener(this); + JMenuItem miSave = new JMenuItem("Save"); + miSave.setActionCommand("SAVE"); + miSave.addActionListener(this); + JMenuItem miSaveAs = new JMenuItem("Save as..."); + miSaveAs.setActionCommand("SAVEAS"); + miSaveAs.addActionListener(this); + JMenuItem miExport = new JMenuItem("Export..."); + miExport.setActionCommand("EXPORT"); + miExport.addActionListener(this); + menuFile.add(miOpen); + menuFile.add(miSave); + menuFile.add(miSaveAs); + menuFile.add(miExport); + menuFile.addSeparator(); + JMenuItem miClose = new JMenuItem("Exit"); + miClose.setActionCommand("EXIT"); + miClose.addActionListener(this); + menuFile.add(miClose); + menuBar.add(menuFile); + + JMenu menuTools = new JMenu("Tools"); + JMenuItem miProxy = new JMenuItem("Proxy"); + miProxy.setActionCommand("SHOWPROXY"); + miProxy.setIcon(new ImageIcon(View.loadImage("com/jpexs/asdec/gui/graphics/proxy16.png"))); + miProxy.addActionListener(this); + menuTools.add(miProxy); + menuBar.add(menuTools); + + setJMenuBar(menuBar); + + /* Constants */ + JPanel panConstants = new JPanel(); + panConstants.setLayout(new BorderLayout()); + constantTypeList = new JComboBox(new String[]{"UINT", "INT", "DOUBLE", "STRING", "NAMESPACE", "NAMESPACESET", "MULTINAME"}); + constantTable = new JTable(); + autoResizeColWidth(constantTable, new UIntTableModel(abc)); + constantTable.setAutoCreateRowSorter(true); + constantTypeList.addItemListener(this); + panConstants.add(constantTypeList, BorderLayout.NORTH); + panConstants.add(new JScrollPane(constantTable), BorderLayout.CENTER); + tabbedPane.addTab("Constants", panConstants); + View.centerScreen(this); + + } + + public void actionPerformed(ActionEvent e) { + if (Main.isWorking()) return; + if (e.getActionCommand().equals("SHOWPROXY")) { + Main.showProxy(); + } + if (e.getActionCommand().equals("VERIFYBODY")) { + sourceTextArea.verify(abc.constants, abc); + } + if (e.getActionCommand().equals("SAVEBODY")) { + sourceTextArea.save(abc.constants); + } + if (e.getActionCommand().equals("SAVE")) { + try { + Main.saveFile(Main.file); + } catch (IOException ex) { + ex.printStackTrace(); + } + } + if (e.getActionCommand().equals("SAVEAS")) { + if (Main.saveFileDialog(this)) { + setTitle(Main.applicationName + " - " + Main.getFileTitle()); + } + } + if (e.getActionCommand().equals("OPEN")) { + Main.openFileDialog(); + + } + + if (e.getActionCommand().equals("EXPORT")) { + JFileChooser chooser = new JFileChooser(); + chooser.setCurrentDirectory(new java.io.File(".")); + chooser.setDialogTitle("Select directory to export"); + chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); + chooser.setAcceptAllFileFilterUsed(false); + if (chooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) { + Main.startWork("Exporting..."); + final String selFile = chooser.getSelectedFile().getAbsolutePath(); + (new Thread() { + + @Override + public void run() { + try { + for (DoABCTag tag : list) { + tag.abc.export(selFile); + } + } catch (IOException ignored) { + JOptionPane.showMessageDialog(null, "Cannot write to the file"); + } + Main.stopWork(); + } + }).start(); + + } + + } + if (e.getActionCommand().equals("EXIT")) { + setVisible(false); + if (Main.proxyFrame != null) { + if (Main.proxyFrame.isVisible()) return; + } + Main.exit(); + } + } + + public void itemStateChanged(ItemEvent e) { + if (e.getSource() == abcComboBox) { + int index = ((JComboBox) e.getSource()).getSelectedIndex(); + if (index == -1) { + return; + } + switchAbc(index); + } + if (e.getSource() == constantTypeList) { + int index = ((JComboBox) e.getSource()).getSelectedIndex(); + if (index == -1) { + return; + } + updateConstList(); + } + } + + public void display() { + setVisible(true); + + splitPane2.setDividerLocation(0.5); //Traitlist-classtree + + //splitPane3.setDividerLocation(0.1); //classtree|right + + splitPane1.setDividerLocation(0.5); //disassembled|decompiled + + + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/gui/TraitsList.java b/trunk/src/com/jpexs/asdec/abc/gui/TraitsList.java new file mode 100644 index 000000000..c2e8c5899 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/gui/TraitsList.java @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.gui; + +import com.jpexs.asdec.Main; +import com.jpexs.asdec.abc.ABC; + +import javax.swing.*; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; + + +public class TraitsList extends JList implements ListSelectionListener { + ABC abc; + int classIndex = -1; + + public TraitsList() { + addListSelectionListener(this); + setCellRenderer(new IconListRenderer()); + } + + public void setABC(ABC abc) { + this.abc = abc; + if (classIndex != -1) + setModel(new TraitsListModel(abc, classIndex)); + } + + public void setClassIndex(int classIndex) { + if (abc != null) + setModel(new TraitsListModel(abc, classIndex)); + this.classIndex = classIndex; + + } + + public void valueChanged(ListSelectionEvent e) { + + int index = getSelectedIndex(); + if (index == -1) + return; + Main.abcMainFrame.decompiledTextArea.gotoTrait(index); + + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/gui/TraitsListModel.java b/trunk/src/com/jpexs/asdec/abc/gui/TraitsListModel.java new file mode 100644 index 000000000..020da6101 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/gui/TraitsListModel.java @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.gui; + +import com.jpexs.asdec.abc.ABC; + +import javax.swing.*; +import javax.swing.event.ListDataListener; + + +public class TraitsListModel implements ListModel { + ABC abc; + int classIndex; + + public static final String STR_INSTANCE_INITIALIZER = "instance initializer"; + public static final String STR_CLASS_INITIALIZER = "class initializer"; + + public TraitsListModel(ABC abc, int classIndex) { + this.abc = abc; + this.classIndex = classIndex; + } + + public int getSize() { + int cnt = abc.class_info[classIndex].static_traits.traits.length + abc.instance_info[classIndex].instance_traits.traits.length; + //if(abc.instance_info[classIndex].iinit_index!=0) cnt++; + cnt += 2; + return cnt; + } + + public Object getElementAt(int index) { + if (index < abc.class_info[classIndex].static_traits.traits.length) { + return abc.class_info[classIndex].static_traits.traits[index].convert(abc.constants, abc.method_info, true); + } else if (index < abc.class_info[classIndex].static_traits.traits.length + abc.instance_info[classIndex].instance_traits.traits.length) { + return abc.instance_info[classIndex].instance_traits.traits[index - abc.class_info[classIndex].static_traits.traits.length].convert(abc.constants, abc.method_info, false); + } else if (index == abc.class_info[classIndex].static_traits.traits.length + abc.instance_info[classIndex].instance_traits.traits.length) { + return STR_INSTANCE_INITIALIZER; + } else { + return STR_CLASS_INITIALIZER; + } + } + + public void addListDataListener(ListDataListener l) { + + } + + public void removeListDataListener(ListDataListener l) { + + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/gui/TreePart.java b/trunk/src/com/jpexs/asdec/abc/gui/TreePart.java new file mode 100644 index 000000000..f2fb50fed --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/gui/TreePart.java @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.gui; + + +public class TreePart implements Comparable { + + public String path; + public String name; + public int classIndex; + public boolean hasSubParts = false; + + public TreePart(String path, String name, int classIndex) { + this.path = path; + this.name = name; + this.classIndex = classIndex; + } + + @Override + public String toString() { + return name; + } + + @Override + public boolean equals(Object obj) { + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + final TreePart other = (TreePart) obj; + if ((this.path == null) ? (other.path != null) : !this.path.equals(other.path)) { + return false; + } + return true; + } + + @Override + public int hashCode() { + int hash = 7; + hash = 23 * hash + (this.path != null ? this.path.hashCode() : 0); + return hash; + } + + public int compareTo(Object o) { + if (o instanceof TreePart) { + if (((TreePart) o).hasSubParts && (!hasSubParts)) return 1; + if ((!((TreePart) o).hasSubParts) && (hasSubParts)) return -1; + return (path + "." + name).compareTo(((TreePart) o).path + "." + ((TreePart) o).name); + } + return -1; + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/gui/graphics/class.png b/trunk/src/com/jpexs/asdec/abc/gui/graphics/class.png new file mode 100644 index 0000000000000000000000000000000000000000..1d30295f9451531d9261b3d8f7b870c39f81ac48 GIT binary patch literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPgg4c0N9Sv5=TuaX=x-64!_l=ltB< z)VvY~=c3falGGH1^30M91$R&1fbd2>aiF3|PZ!4!i_?22J90TFa=6q!{JY*JH|yj6 zfX*q}&NYW0w5Y6}a-PjX%~OftSi)|entNxvt{P=&G9*meHo;nK*{e?0_&HiPD$^gX q-*)QwT^Sq33bV?GPp-bd!)P#5MxFcptb0I97(8A5T-G@yGywp%&r_xV literal 0 HcmV?d00001 diff --git a/trunk/src/com/jpexs/asdec/abc/gui/graphics/constant.png b/trunk/src/com/jpexs/asdec/abc/gui/graphics/constant.png new file mode 100644 index 0000000000000000000000000000000000000000..c6ddca761385476b83453ce2f40b7d9a9f37917c GIT binary patch literal 543 zcmV+)0^t3LP)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2igY? z4_CX>@2HM@dakSAh-}0004cNkl|+Wh(Zb>g=m{X(035_2^0c?c6o+0c>)u$$O9y; zV&iVJ!D3f2MIv_=L0RYg7I*I5HQvgd<_yC>-+br5z<|res^{J>XS>_oU2qN*S=rtJ za^RFcq2^E~aqtEMCrqd#ha3)Lr+U+R+i;8g;7U<9yxN;C*$fFVh2+ z9vw!_&%b`MIycLo?H%^k*4R2cjE2!fDgY=dJI6u2&id;&ycjC6x$u^gS}o4u|JnDq z;6M^4JUlTr#_xZB z87`MG)CUm3()t9@PCRBJ$XKjQ@}t@0U8Tb5)fL|x4L+@`^dLnBZJ(q7#8P#VgR?qc zj*odcI?BiSS6q0X_aCg#pwkOTe3+SGd3u^42qDn&9+O4O0zj*iAWQoVB3D(c*?fY8 h^%)HOnFjsMJOJMx{tBH8III8w002ovPDHLkV1i6}pBS8wuEzW)2nq^9ye zooS`7GGoK__v$SUN~X4xS{aHP*S*}k!^*F8$%?1VlgQu&X%Q~loCIESkpIZO` literal 0 HcmV?d00001 diff --git a/trunk/src/com/jpexs/asdec/abc/gui/graphics/variable.png b/trunk/src/com/jpexs/asdec/abc/gui/graphics/variable.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe224d56c113dafc748dac1085bfa2922087d92 GIT binary patch literal 562 zcmV-20?qx2P)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2igY? z4<-T&0-OH;000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}0004vNkl|qEZXL4q!$EhyR}G>6fTR12wJ4c zCs2Y04EQAy*UX>w&Fro>#e3_HyIZ*f!`vC}IdjgPxzOQ=(p8>{&(x#%dMo9VU~Rsq zvF(}M2B52bl0X!-2RG^M3Quot%M35>qOF5_K>!g!8^`Q=9`CDEYxmS@wN?USJ>A{U z_^>cSe*YY09m+Vgjma0zSbaB6*;UXcId37*)}xH$Q*MU6!a09R7HvF#OLu%Z_{rwV zB-%K%O=b&$G7fD#F9!R_4)swyxkB5R!|%TtdD+kN-X4_kD4XQ9Q4lBctY_on6km@n zD5;olN0+Ras;1J#Z$h0g}Fu z2up8ADV|=DTY81Pt02;V1z|v7{6mrmym_7F@~ literal 0 HcmV?d00001 diff --git a/trunk/src/com/jpexs/asdec/abc/gui/tablemodels/DoubleTableModel.java b/trunk/src/com/jpexs/asdec/abc/gui/tablemodels/DoubleTableModel.java new file mode 100644 index 000000000..b7d4e6a1a --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/gui/tablemodels/DoubleTableModel.java @@ -0,0 +1,131 @@ +package com.jpexs.asdec.abc.gui.tablemodels; + +import com.jpexs.asdec.abc.ABC; + +import javax.swing.event.TableModelListener; +import javax.swing.table.TableModel; + +public class DoubleTableModel implements TableModel { + private ABC abc; + private static final String columnNames[] = new String[]{"Index", "Value"}; + private static final Class classes[] = new Class[]{Long.class, String.class}; + + public DoubleTableModel(ABC abc) { + this.abc = abc; + } + + /** + * Returns the number of rows in the model. A + * JTable uses this method to determine how many rows it + * should display. This method should be quick, as it + * is called frequently during rendering. + * + * @return the number of rows in the model + * @see #getColumnCount + */ + public int getRowCount() { + return abc.constants.constant_double.length; + } + + /** + * Returns the number of columns in the model. A + * JTable uses this method to determine how many columns it + * should create and display by default. + * + * @return the number of columns in the model + * @see #getRowCount + */ + public int getColumnCount() { + return 2; + } + + /** + * Returns the name of the column at columnIndex. This is used + * to initialize the table's column header name. Note: this name does + * not need to be unique; two columns in a table can have the same name. + * + * @param columnIndex the index of the column + * @return the name of the column + */ + public String getColumnName(int columnIndex) { + return columnNames[columnIndex]; + } + + /** + * Returns the most specific superclass for all the cell values + * in the column. This is used by the JTable to set up a + * default renderer and editor for the column. + * + * @param columnIndex the index of the column + * @return the common ancestor class of the object values in the model. + */ + public Class getColumnClass(int columnIndex) { + return classes[columnIndex]; + } + + /** + * Returns true if the cell at rowIndex and + * columnIndex + * is editable. Otherwise, setValueAt on the cell will not + * change the value of that cell. + * + * @param rowIndex the row whose value to be queried + * @param columnIndex the column whose value to be queried + * @return true if the cell is editable + * @see #setValueAt + */ + public boolean isCellEditable(int rowIndex, int columnIndex) { + return false; + } + + /** + * Returns the value for the cell at columnIndex and + * rowIndex. + * + * @param rowIndex the row whose value is to be queried + * @param columnIndex the column whose value is to be queried + * @return the value Object at the specified cell + */ + public Object getValueAt(int rowIndex, int columnIndex) { + if (columnIndex == 0) return rowIndex; + else if (Double.isNaN(abc.constants.constant_double[rowIndex])) { + return "NaN"; + } else { + return "" + abc.constants.constant_double[rowIndex]; + } + } + + /** + * Sets the value in the cell at columnIndex and + * rowIndex to aValue. + * + * @param aValue the new value + * @param rowIndex the row whose value is to be changed + * @param columnIndex the column whose value is to be changed + * @see #getValueAt + * @see #isCellEditable + */ + public void setValueAt(Object aValue, int rowIndex, int columnIndex) { + + } + + /** + * Adds a listener to the list that is notified each time a change + * to the data model occurs. + * + * @param l the TableModelListener + */ + public void addTableModelListener(TableModelListener l) { + + } + + /** + * Removes a listener from the list that is notified each time a + * change to the data model occurs. + * + * @param l the TableModelListener + */ + public void removeTableModelListener(TableModelListener l) { + + } +} \ No newline at end of file diff --git a/trunk/src/com/jpexs/asdec/abc/gui/tablemodels/IntTableModel.java b/trunk/src/com/jpexs/asdec/abc/gui/tablemodels/IntTableModel.java new file mode 100644 index 000000000..f2d797dbd --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/gui/tablemodels/IntTableModel.java @@ -0,0 +1,127 @@ +package com.jpexs.asdec.abc.gui.tablemodels; + +import com.jpexs.asdec.abc.ABC; + +import javax.swing.event.TableModelListener; +import javax.swing.table.TableModel; + +public class IntTableModel implements TableModel { + private ABC abc; + private static final String columnNames[] = new String[]{"Index", "Value"}; + private static final Class classes[] = new Class[]{Long.class, Long.class}; + + public IntTableModel(ABC abc) { + this.abc = abc; + } + + /** + * Returns the number of rows in the model. A + * JTable uses this method to determine how many rows it + * should display. This method should be quick, as it + * is called frequently during rendering. + * + * @return the number of rows in the model + * @see #getColumnCount + */ + public int getRowCount() { + return abc.constants.constant_int.length; + } + + /** + * Returns the number of columns in the model. A + * JTable uses this method to determine how many columns it + * should create and display by default. + * + * @return the number of columns in the model + * @see #getRowCount + */ + public int getColumnCount() { + return 2; + } + + /** + * Returns the name of the column at columnIndex. This is used + * to initialize the table's column header name. Note: this name does + * not need to be unique; two columns in a table can have the same name. + * + * @param columnIndex the index of the column + * @return the name of the column + */ + public String getColumnName(int columnIndex) { + return columnNames[columnIndex]; + } + + /** + * Returns the most specific superclass for all the cell values + * in the column. This is used by the JTable to set up a + * default renderer and editor for the column. + * + * @param columnIndex the index of the column + * @return the common ancestor class of the object values in the model. + */ + public Class getColumnClass(int columnIndex) { + return classes[columnIndex]; + } + + /** + * Returns true if the cell at rowIndex and + * columnIndex + * is editable. Otherwise, setValueAt on the cell will not + * change the value of that cell. + * + * @param rowIndex the row whose value to be queried + * @param columnIndex the column whose value to be queried + * @return true if the cell is editable + * @see #setValueAt + */ + public boolean isCellEditable(int rowIndex, int columnIndex) { + return false; + } + + /** + * Returns the value for the cell at columnIndex and + * rowIndex. + * + * @param rowIndex the row whose value is to be queried + * @param columnIndex the column whose value is to be queried + * @return the value Object at the specified cell + */ + public Object getValueAt(int rowIndex, int columnIndex) { + if (columnIndex == 0) return rowIndex; + else return abc.constants.constant_int[rowIndex]; + } + + /** + * Sets the value in the cell at columnIndex and + * rowIndex to aValue. + * + * @param aValue the new value + * @param rowIndex the row whose value is to be changed + * @param columnIndex the column whose value is to be changed + * @see #getValueAt + * @see #isCellEditable + */ + public void setValueAt(Object aValue, int rowIndex, int columnIndex) { + + } + + /** + * Adds a listener to the list that is notified each time a change + * to the data model occurs. + * + * @param l the TableModelListener + */ + public void addTableModelListener(TableModelListener l) { + + } + + /** + * Removes a listener from the list that is notified each time a + * change to the data model occurs. + * + * @param l the TableModelListener + */ + public void removeTableModelListener(TableModelListener l) { + + } +} \ No newline at end of file diff --git a/trunk/src/com/jpexs/asdec/abc/gui/tablemodels/MultinameTableModel.java b/trunk/src/com/jpexs/asdec/abc/gui/tablemodels/MultinameTableModel.java new file mode 100644 index 000000000..3f0942e1e --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/gui/tablemodels/MultinameTableModel.java @@ -0,0 +1,146 @@ +package com.jpexs.asdec.abc.gui.tablemodels; + +import com.jpexs.asdec.abc.ABC; + +import javax.swing.event.TableModelListener; +import javax.swing.table.TableModel; + +public class MultinameTableModel implements TableModel { + private ABC abc; + private static final String columnNames[] = new String[]{"Index", "Kind", "Name", "Namespace", "NamespaceSet"}; + private static final Class classes[] = new Class[]{Long.class, String.class, String.class, String.class, String.class}; + + public MultinameTableModel(ABC abc) { + this.abc = abc; + } + + /** + * Returns the number of rows in the model. A + * JTable uses this method to determine how many rows it + * should display. This method should be quick, as it + * is called frequently during rendering. + * + * @return the number of rows in the model + * @see #getColumnCount + */ + public int getRowCount() { + return abc.constants.constant_multiname.length; + } + + /** + * Returns the number of columns in the model. A + * JTable uses this method to determine how many columns it + * should create and display by default. + * + * @return the number of columns in the model + * @see #getRowCount + */ + public int getColumnCount() { + return 5; + } + + /** + * Returns the name of the column at columnIndex. This is used + * to initialize the table's column header name. Note: this name does + * not need to be unique; two columns in a table can have the same name. + * + * @param columnIndex the index of the column + * @return the name of the column + */ + public String getColumnName(int columnIndex) { + return columnNames[columnIndex]; + } + + /** + * Returns the most specific superclass for all the cell values + * in the column. This is used by the JTable to set up a + * default renderer and editor for the column. + * + * @param columnIndex the index of the column + * @return the common ancestor class of the object values in the model. + */ + public Class getColumnClass(int columnIndex) { + return classes[columnIndex]; + } + + /** + * Returns true if the cell at rowIndex and + * columnIndex + * is editable. Otherwise, setValueAt on the cell will not + * change the value of that cell. + * + * @param rowIndex the row whose value to be queried + * @param columnIndex the column whose value to be queried + * @return true if the cell is editable + * @see #setValueAt + */ + public boolean isCellEditable(int rowIndex, int columnIndex) { + return false; + } + + /** + * Returns the value for the cell at columnIndex and + * rowIndex. + * + * @param rowIndex the row whose value is to be queried + * @param columnIndex the column whose value is to be queried + * @return the value Object at the specified cell + */ + public Object getValueAt(int rowIndex, int columnIndex) { + switch (columnIndex) { + case 0: + return rowIndex; + case 1: + if (rowIndex == 0) return ""; + return abc.constants.constant_multiname[rowIndex].getKindStr(); + case 2: + if (rowIndex == 0) return ""; + if (abc.constants.constant_multiname[rowIndex].name_index == -1) return ""; + return abc.constants.constant_multiname[rowIndex].getName(abc.constants); + case 3: + if (rowIndex == 0) return ""; + if (abc.constants.constant_multiname[rowIndex].namespace_index == -1) return ""; + return abc.constants.constant_multiname[rowIndex].getNamespace(abc.constants).getNameWithKind(abc.constants); + case 4: + if (rowIndex == 0) return ""; + if (abc.constants.constant_multiname[rowIndex].namespace_set_index == -1) return ""; + return abc.constants.constant_multiname[rowIndex].getNamespaceSet(abc.constants).toString(abc.constants); + default: + return null; + } + } + + /** + * Sets the value in the cell at columnIndex and + * rowIndex to aValue. + * + * @param aValue the new value + * @param rowIndex the row whose value is to be changed + * @param columnIndex the column whose value is to be changed + * @see #getValueAt + * @see #isCellEditable + */ + public void setValueAt(Object aValue, int rowIndex, int columnIndex) { + + } + + /** + * Adds a listener to the list that is notified each time a change + * to the data model occurs. + * + * @param l the TableModelListener + */ + public void addTableModelListener(TableModelListener l) { + + } + + /** + * Removes a listener from the list that is notified each time a + * change to the data model occurs. + * + * @param l the TableModelListener + */ + public void removeTableModelListener(TableModelListener l) { + + } +} \ No newline at end of file diff --git a/trunk/src/com/jpexs/asdec/abc/gui/tablemodels/NamespaceSetTableModel.java b/trunk/src/com/jpexs/asdec/abc/gui/tablemodels/NamespaceSetTableModel.java new file mode 100644 index 000000000..3e80df5f5 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/gui/tablemodels/NamespaceSetTableModel.java @@ -0,0 +1,134 @@ +package com.jpexs.asdec.abc.gui.tablemodels; + +import com.jpexs.asdec.abc.ABC; + +import javax.swing.event.TableModelListener; +import javax.swing.table.TableModel; + +public class NamespaceSetTableModel implements TableModel { + private ABC abc; + private static final String columnNames[] = new String[]{"Index", "NameSpaces"}; + private static final Class classes[] = new Class[]{Long.class, String.class, String.class}; + + public NamespaceSetTableModel(ABC abc) { + this.abc = abc; + } + + /** + * Returns the number of rows in the model. A + * JTable uses this method to determine how many rows it + * should display. This method should be quick, as it + * is called frequently during rendering. + * + * @return the number of rows in the model + * @see #getColumnCount + */ + public int getRowCount() { + return abc.constants.constant_namespace_set.length; + } + + /** + * Returns the number of columns in the model. A + * JTable uses this method to determine how many columns it + * should create and display by default. + * + * @return the number of columns in the model + * @see #getRowCount + */ + public int getColumnCount() { + return 2; + } + + /** + * Returns the name of the column at columnIndex. This is used + * to initialize the table's column header name. Note: this name does + * not need to be unique; two columns in a table can have the same name. + * + * @param columnIndex the index of the column + * @return the name of the column + */ + public String getColumnName(int columnIndex) { + return columnNames[columnIndex]; + } + + /** + * Returns the most specific superclass for all the cell values + * in the column. This is used by the JTable to set up a + * default renderer and editor for the column. + * + * @param columnIndex the index of the column + * @return the common ancestor class of the object values in the model. + */ + public Class getColumnClass(int columnIndex) { + return classes[columnIndex]; + } + + /** + * Returns true if the cell at rowIndex and + * columnIndex + * is editable. Otherwise, setValueAt on the cell will not + * change the value of that cell. + * + * @param rowIndex the row whose value to be queried + * @param columnIndex the column whose value to be queried + * @return true if the cell is editable + * @see #setValueAt + */ + public boolean isCellEditable(int rowIndex, int columnIndex) { + return false; + } + + /** + * Returns the value for the cell at columnIndex and + * rowIndex. + * + * @param rowIndex the row whose value is to be queried + * @param columnIndex the column whose value is to be queried + * @return the value Object at the specified cell + */ + public Object getValueAt(int rowIndex, int columnIndex) { + switch (columnIndex) { + case 0: + return rowIndex; + case 1: + if (rowIndex == 0) return ""; + return abc.constants.constant_namespace_set[rowIndex].toString(abc.constants); + default: + return null; + } + } + + /** + * Sets the value in the cell at columnIndex and + * rowIndex to aValue. + * + * @param aValue the new value + * @param rowIndex the row whose value is to be changed + * @param columnIndex the column whose value is to be changed + * @see #getValueAt + * @see #isCellEditable + */ + public void setValueAt(Object aValue, int rowIndex, int columnIndex) { + + } + + /** + * Adds a listener to the list that is notified each time a change + * to the data model occurs. + * + * @param l the TableModelListener + */ + public void addTableModelListener(TableModelListener l) { + + } + + /** + * Removes a listener from the list that is notified each time a + * change to the data model occurs. + * + * @param l the TableModelListener + */ + public void removeTableModelListener(TableModelListener l) { + + } +} \ No newline at end of file diff --git a/trunk/src/com/jpexs/asdec/abc/gui/tablemodels/NamespaceTableModel.java b/trunk/src/com/jpexs/asdec/abc/gui/tablemodels/NamespaceTableModel.java new file mode 100644 index 000000000..b02f3fa28 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/gui/tablemodels/NamespaceTableModel.java @@ -0,0 +1,137 @@ +package com.jpexs.asdec.abc.gui.tablemodels; + +import com.jpexs.asdec.abc.ABC; + +import javax.swing.event.TableModelListener; +import javax.swing.table.TableModel; + +public class NamespaceTableModel implements TableModel { + private ABC abc; + private static final String columnNames[] = new String[]{"Index", "Kind", "Name"}; + private static final Class classes[] = new Class[]{Long.class, String.class, String.class}; + + public NamespaceTableModel(ABC abc) { + this.abc = abc; + } + + /** + * Returns the number of rows in the model. A + * JTable uses this method to determine how many rows it + * should display. This method should be quick, as it + * is called frequently during rendering. + * + * @return the number of rows in the model + * @see #getColumnCount + */ + public int getRowCount() { + return abc.constants.constant_namespace.length; + } + + /** + * Returns the number of columns in the model. A + * JTable uses this method to determine how many columns it + * should create and display by default. + * + * @return the number of columns in the model + * @see #getRowCount + */ + public int getColumnCount() { + return 3; + } + + /** + * Returns the name of the column at columnIndex. This is used + * to initialize the table's column header name. Note: this name does + * not need to be unique; two columns in a table can have the same name. + * + * @param columnIndex the index of the column + * @return the name of the column + */ + public String getColumnName(int columnIndex) { + return columnNames[columnIndex]; + } + + /** + * Returns the most specific superclass for all the cell values + * in the column. This is used by the JTable to set up a + * default renderer and editor for the column. + * + * @param columnIndex the index of the column + * @return the common ancestor class of the object values in the model. + */ + public Class getColumnClass(int columnIndex) { + return classes[columnIndex]; + } + + /** + * Returns true if the cell at rowIndex and + * columnIndex + * is editable. Otherwise, setValueAt on the cell will not + * change the value of that cell. + * + * @param rowIndex the row whose value to be queried + * @param columnIndex the column whose value to be queried + * @return true if the cell is editable + * @see #setValueAt + */ + public boolean isCellEditable(int rowIndex, int columnIndex) { + return false; + } + + /** + * Returns the value for the cell at columnIndex and + * rowIndex. + * + * @param rowIndex the row whose value is to be queried + * @param columnIndex the column whose value is to be queried + * @return the value Object at the specified cell + */ + public Object getValueAt(int rowIndex, int columnIndex) { + switch (columnIndex) { + case 0: + return rowIndex; + case 1: + if (rowIndex == 0) return ""; + return abc.constants.constant_namespace[rowIndex].getKindStr(); + case 2: + if (rowIndex == 0) return ""; + return abc.constants.constant_namespace[rowIndex].getName(abc.constants); + default: + return null; + } + } + + /** + * Sets the value in the cell at columnIndex and + * rowIndex to aValue. + * + * @param aValue the new value + * @param rowIndex the row whose value is to be changed + * @param columnIndex the column whose value is to be changed + * @see #getValueAt + * @see #isCellEditable + */ + public void setValueAt(Object aValue, int rowIndex, int columnIndex) { + + } + + /** + * Adds a listener to the list that is notified each time a change + * to the data model occurs. + * + * @param l the TableModelListener + */ + public void addTableModelListener(TableModelListener l) { + + } + + /** + * Removes a listener from the list that is notified each time a + * change to the data model occurs. + * + * @param l the TableModelListener + */ + public void removeTableModelListener(TableModelListener l) { + + } +} \ No newline at end of file diff --git a/trunk/src/com/jpexs/asdec/abc/gui/tablemodels/StringTableModel.java b/trunk/src/com/jpexs/asdec/abc/gui/tablemodels/StringTableModel.java new file mode 100644 index 000000000..e370192d8 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/gui/tablemodels/StringTableModel.java @@ -0,0 +1,127 @@ +package com.jpexs.asdec.abc.gui.tablemodels; + +import com.jpexs.asdec.abc.ABC; + +import javax.swing.event.TableModelListener; +import javax.swing.table.TableModel; + +public class StringTableModel implements TableModel { + private ABC abc; + private static final String columnNames[] = new String[]{"Index", "Value"}; + private static final Class classes[] = new Class[]{Long.class, String.class}; + + public StringTableModel(ABC abc) { + this.abc = abc; + } + + /** + * Returns the number of rows in the model. A + * JTable uses this method to determine how many rows it + * should display. This method should be quick, as it + * is called frequently during rendering. + * + * @return the number of rows in the model + * @see #getColumnCount + */ + public int getRowCount() { + return abc.constants.constant_string.length; + } + + /** + * Returns the number of columns in the model. A + * JTable uses this method to determine how many columns it + * should create and display by default. + * + * @return the number of columns in the model + * @see #getRowCount + */ + public int getColumnCount() { + return 2; + } + + /** + * Returns the name of the column at columnIndex. This is used + * to initialize the table's column header name. Note: this name does + * not need to be unique; two columns in a table can have the same name. + * + * @param columnIndex the index of the column + * @return the name of the column + */ + public String getColumnName(int columnIndex) { + return columnNames[columnIndex]; + } + + /** + * Returns the most specific superclass for all the cell values + * in the column. This is used by the JTable to set up a + * default renderer and editor for the column. + * + * @param columnIndex the index of the column + * @return the common ancestor class of the object values in the model. + */ + public Class getColumnClass(int columnIndex) { + return classes[columnIndex]; + } + + /** + * Returns true if the cell at rowIndex and + * columnIndex + * is editable. Otherwise, setValueAt on the cell will not + * change the value of that cell. + * + * @param rowIndex the row whose value to be queried + * @param columnIndex the column whose value to be queried + * @return true if the cell is editable + * @see #setValueAt + */ + public boolean isCellEditable(int rowIndex, int columnIndex) { + return false; + } + + /** + * Returns the value for the cell at columnIndex and + * rowIndex. + * + * @param rowIndex the row whose value is to be queried + * @param columnIndex the column whose value is to be queried + * @return the value Object at the specified cell + */ + public Object getValueAt(int rowIndex, int columnIndex) { + if (columnIndex == 0) return rowIndex; + else return abc.constants.constant_string[rowIndex]; + } + + /** + * Sets the value in the cell at columnIndex and + * rowIndex to aValue. + * + * @param aValue the new value + * @param rowIndex the row whose value is to be changed + * @param columnIndex the column whose value is to be changed + * @see #getValueAt + * @see #isCellEditable + */ + public void setValueAt(Object aValue, int rowIndex, int columnIndex) { + + } + + /** + * Adds a listener to the list that is notified each time a change + * to the data model occurs. + * + * @param l the TableModelListener + */ + public void addTableModelListener(TableModelListener l) { + + } + + /** + * Removes a listener from the list that is notified each time a + * change to the data model occurs. + * + * @param l the TableModelListener + */ + public void removeTableModelListener(TableModelListener l) { + + } +} \ No newline at end of file diff --git a/trunk/src/com/jpexs/asdec/abc/gui/tablemodels/UIntTableModel.java b/trunk/src/com/jpexs/asdec/abc/gui/tablemodels/UIntTableModel.java new file mode 100644 index 000000000..507c2954a --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/gui/tablemodels/UIntTableModel.java @@ -0,0 +1,127 @@ +package com.jpexs.asdec.abc.gui.tablemodels; + +import com.jpexs.asdec.abc.ABC; + +import javax.swing.event.TableModelListener; +import javax.swing.table.TableModel; + +public class UIntTableModel implements TableModel { + private ABC abc; + private static final String columnNames[] = new String[]{"Index", "Value"}; + private static final Class classes[] = new Class[]{Long.class, Long.class}; + + public UIntTableModel(ABC abc) { + this.abc = abc; + } + + /** + * Returns the number of rows in the model. A + * JTable uses this method to determine how many rows it + * should display. This method should be quick, as it + * is called frequently during rendering. + * + * @return the number of rows in the model + * @see #getColumnCount + */ + public int getRowCount() { + return abc.constants.constant_uint.length; + } + + /** + * Returns the number of columns in the model. A + * JTable uses this method to determine how many columns it + * should create and display by default. + * + * @return the number of columns in the model + * @see #getRowCount + */ + public int getColumnCount() { + return 2; + } + + /** + * Returns the name of the column at columnIndex. This is used + * to initialize the table's column header name. Note: this name does + * not need to be unique; two columns in a table can have the same name. + * + * @param columnIndex the index of the column + * @return the name of the column + */ + public String getColumnName(int columnIndex) { + return columnNames[columnIndex]; + } + + /** + * Returns the most specific superclass for all the cell values + * in the column. This is used by the JTable to set up a + * default renderer and editor for the column. + * + * @param columnIndex the index of the column + * @return the common ancestor class of the object values in the model. + */ + public Class getColumnClass(int columnIndex) { + return classes[columnIndex]; + } + + /** + * Returns true if the cell at rowIndex and + * columnIndex + * is editable. Otherwise, setValueAt on the cell will not + * change the value of that cell. + * + * @param rowIndex the row whose value to be queried + * @param columnIndex the column whose value to be queried + * @return true if the cell is editable + * @see #setValueAt + */ + public boolean isCellEditable(int rowIndex, int columnIndex) { + return false; + } + + /** + * Returns the value for the cell at columnIndex and + * rowIndex. + * + * @param rowIndex the row whose value is to be queried + * @param columnIndex the column whose value is to be queried + * @return the value Object at the specified cell + */ + public Object getValueAt(int rowIndex, int columnIndex) { + if (columnIndex == 0) return rowIndex; + else return abc.constants.constant_uint[rowIndex]; + } + + /** + * Sets the value in the cell at columnIndex and + * rowIndex to aValue. + * + * @param aValue the new value + * @param rowIndex the row whose value is to be changed + * @param columnIndex the column whose value is to be changed + * @see #getValueAt + * @see #isCellEditable + */ + public void setValueAt(Object aValue, int rowIndex, int columnIndex) { + + } + + /** + * Adds a listener to the list that is notified each time a change + * to the data model occurs. + * + * @param l the TableModelListener + */ + public void addTableModelListener(TableModelListener l) { + + } + + /** + * Removes a listener from the list that is notified each time a + * change to the data model occurs. + * + * @param l the TableModelListener + */ + public void removeTableModelListener(TableModelListener l) { + + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/types/ABCException.java b/trunk/src/com/jpexs/asdec/abc/types/ABCException.java new file mode 100644 index 000000000..aefb50982 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/types/ABCException.java @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.types; + +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.ConvertException; +import com.jpexs.asdec.helpers.Helper; + + +public class ABCException { + public int start; + public int end; + public int target; + public int type_index; + public int name_index; + + @Override + public String toString() { + return "Exception: startServer=" + Helper.formatAddress(start) + " end=" + Helper.formatAddress(end) + " target=" + target + " type_index=" + type_index + " name_index=" + name_index; + } + + public String toString(ConstantPool constants) { + return "Exception: startServer=" + Helper.formatAddress(start) + " end=" + Helper.formatAddress(end) + " target=" + target + " type=\"" + getTypeName(constants) + "\" name=\"" + getVarName(constants) + "\""; + } + + public String toString(ConstantPool constants, AVM2Code code) { + try { + return "Exception: startServer=" + code.adr2pos(start) + ":" + code.code.get(code.adr2pos(start)).toStringNoAddress(constants) + " end=" + code.adr2pos(end) + ":" + code.code.get(code.adr2pos(end)).toStringNoAddress(constants) + " target=" + code.adr2pos(target) + ":" + code.code.get(code.adr2pos(target)).toStringNoAddress(constants) + " type=\"" + getTypeName(constants) + "\" name=\"" + getVarName(constants) + "\""; + } catch (ConvertException ex) { + return ""; + } + } + + public boolean isFinally() { + return (name_index == 0) && (type_index == 0); + } + + public String getVarName(ConstantPool constants) { + if (name_index == 0) return ""; + return constants.constant_multiname[name_index].getName(constants); + } + + public String getTypeName(ConstantPool constants) { + if (type_index == 0) return "*"; + return constants.constant_multiname[type_index].getName(constants); + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/types/ClassInfo.java b/trunk/src/com/jpexs/asdec/abc/types/ClassInfo.java new file mode 100644 index 000000000..ac1f5e33f --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/types/ClassInfo.java @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.types; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.types.traits.Traits; + + +public class ClassInfo { + + public int cinit_index; //MethodInfo - static initializer + public Traits static_traits; + + @Override + public String toString() { + return "method_index=" + cinit_index + "\r\n" + static_traits.toString(); + } + + + public String toString(ConstantPool constants) { + return "method_index=" + cinit_index + "\r\n" + static_traits.toString(constants); + } + + public String getStaticVarsStr(ConstantPool constants) { + return static_traits.convert(constants, "\tstatic "); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/types/InstanceInfo.java b/trunk/src/com/jpexs/asdec/abc/types/InstanceInfo.java new file mode 100644 index 000000000..8946353ef --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/types/InstanceInfo.java @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.types; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.types.traits.Traits; +import com.jpexs.asdec.helpers.Helper; + + +public class InstanceInfo { + + public int name_index; + public int super_index; + public int flags; // 1 = sealed, 0 = dynamic, 2 = final, 4 = interface, 8 = ProtectedNs + public int protectedNS; //if flags & 8 + public int interfaces[]; + public int iinit_index; // MethodInfo - constructor + public Traits instance_traits; + + public static final int CLASS_SEALED = 1; //not dynamic + public static final int CLASS_FINAL = 2; + public static final int CLASS_INTERFACE = 4; + public static final int CLASS_PROTECTEDNS = 8; + + @Override + public String toString() { + return "name_index=" + name_index + " super_index=" + super_index + " flags=" + flags + " protectedNS=" + protectedNS + " interfaces=" + Helper.intArrToString(interfaces) + " method_index=" + iinit_index + "\r\n" + instance_traits.toString(); + } + + + public String toString(ConstantPool constants) { + String supIndexStr = "[nothing]"; + if (super_index > 0) + constants.constant_multiname[super_index].toString(constants); + return "name_index=" + constants.constant_multiname[name_index].toString(constants) + " super_index=" + supIndexStr + " flags=" + flags + " protectedNS=" + protectedNS + " interfaces=" + Helper.intArrToString(interfaces) + " method_index=" + iinit_index + "\r\n" + instance_traits.toString(constants); + } + + public String getClassHeaderStr(ConstantPool constants) { + String supIndexStr = ""; + if (super_index > 0) + supIndexStr = " extends " + constants.constant_multiname[super_index].getName(constants);////+" flags="+flags+" protectedNS="+protectedNS+" interfaces="+Helper.intArrToString(interfaces)+" method_index="+iinit_index + String modifiers = ""; + Namespace ns = constants.constant_multiname[name_index].getNamespace(constants); + modifiers = ns.getPrefix(constants); + if (!modifiers.equals("")) modifiers += " "; + + if ((flags & CLASS_FINAL) == CLASS_FINAL) { + modifiers = "final "; + } + if ((flags & CLASS_SEALED) == 0) { + modifiers = modifiers + "dynamic "; + } + String objType = "class "; + if ((flags & CLASS_INTERFACE) == CLASS_INTERFACE) { + objType = "interface "; + } + return modifiers + objType + constants.constant_multiname[name_index].getName(constants) + supIndexStr; + } + + public String getInstanceVarsStr(ConstantPool constants) { + return instance_traits.convert(constants, "\t"); + } + + public Multiname getName(ConstantPool constants) { + return constants.constant_multiname[name_index]; + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/types/MetadataInfo.java b/trunk/src/com/jpexs/asdec/abc/types/MetadataInfo.java new file mode 100644 index 000000000..667c12da6 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/types/MetadataInfo.java @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.types; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.helpers.Helper; + + +public class MetadataInfo { + + public int name_index; + public int keys[]; + public int values[]; + + public MetadataInfo(int name_index, int[] keys, int[] values) { + this.name_index = name_index; + this.keys = keys; + this.values = values; + } + + @Override + public String toString() { + return "name_index=" + name_index + " keys=" + Helper.intArrToString(keys) + " values=" + Helper.intArrToString(values); + } + + public String toString(ConstantPool constants) { + String s = "name=" + constants.constant_string[name_index]; + if (keys.length > 0) s += "\r\n"; + for (int i = 0; i < keys.length; i++) { + if (keys[i] == 0) { + s += "\"" + constants.constant_string[values[i]] + "\"\r\n"; + } else { + s += "\"" + constants.constant_string[keys[i]] + "\"=\"" + constants.constant_string[values[i]] + "\"\r\n"; + } + } + return s; + } + +} \ No newline at end of file diff --git a/trunk/src/com/jpexs/asdec/abc/types/MethodBody.java b/trunk/src/com/jpexs/asdec/abc/types/MethodBody.java new file mode 100644 index 000000000..9bc15c7e3 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/types/MethodBody.java @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.types; + +import com.jpexs.asdec.abc.ABC; +import com.jpexs.asdec.abc.avm2.AVM2Code; +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.instructions.InstructionDefinition; +import com.jpexs.asdec.abc.types.traits.Traits; + + +public class MethodBody implements Cloneable { + + public int method_info; + public int max_stack; + public int max_regs; + public int scope_depth; + public int max_scope; + public byte codeBytes[]; + public AVM2Code code; + public ABCException exceptions[] = new ABCException[0]; + public Traits traits = new Traits(); + + @Override + public String toString() { + String s = ""; + s += "method_info=" + method_info + " max_stack=" + max_stack + " max_regs=" + max_regs + " scope_depth=" + scope_depth + " max_scope=" + max_scope; + s += "\r\nCode:\r\n" + code.toString(); + return s; + } + + private String replaceParams(String code, MethodInfo method_info[]) { + for (int i = 1; i <= method_info[this.method_info].param_types.length; i++) { + code = code.replace(InstructionDefinition.localRegName(i), "param" + i); + } + return code; + } + + public String toString(boolean isStatic, int classIndex, ABC abc, ConstantPool constants, MethodInfo method_info[]) { + return toString(isStatic, classIndex, abc, constants, method_info, false); + } + + public String toString(boolean isStatic, int classIndex, ABC abc, ConstantPool constants, MethodInfo method_info[], boolean hilight) { + String s = ""; + + //s+="method_info="+method_info+" max_stack="+max_stack+" max_regs="+max_regs+" scope_depth="+scope_depth+" max_scope="+max_scope; + //s+="\r\nCode:\r\n"+ + + try { + s += code.toSource(isStatic, classIndex, abc, constants, method_info, this, hilight); + s = replaceParams(s, method_info); + } catch (Exception ex) { + s = "//error:" + ex.toString(); + } + //s+="----------- ORIGINAL ------------\r\n"; + //s+=code.toString(constants); + /*s+="Exceptions:"; + for(int i=0;i 0) { + optionalStr += ","; + } + optionalStr += optional[i].toString(); + } + } + optionalStr += "]"; + return "MethodInfo: param_types=" + Helper.intArrToString(param_types) + " ret_type=" + ret_type + " name_index=" + name_index + " flags=" + flags + " optional=" + optionalStr + " paramNames=" + Helper.intArrToString(paramNames); + } + + public String toString(ConstantPool constants) { + String optionalStr = "["; + if (optional != null) { + for (int i = 0; i < optional.length; i++) { + if (i > 0) { + optionalStr += ","; + } + optionalStr += optional[i].toString(constants); + } + } + optionalStr += "]"; + + String param_typesStr = ""; + for (int i = 0; i < param_types.length; i++) { + if (i > 0) { + param_typesStr += ","; + } + if (param_types[i] == 0) { + param_typesStr += "*"; + } else { + param_typesStr += constants.constant_multiname[param_types[i]].toString(constants); + } + } + + String paramNamesStr = ""; + for (int i = 0; i < paramNames.length; i++) { + if (i > 0) { + paramNamesStr += ","; + } + paramNamesStr += constants.constant_string[paramNames[i]]; + } + + String ret_typeStr = ""; + if (ret_type == 0) { + ret_typeStr += "*"; + } else { + ret_typeStr += constants.constant_multiname[ret_type].toString(constants); + } + + return "param_types=" + param_typesStr + " ret_type=" + ret_typeStr + " name=\"" + constants.constant_string[name_index] + "\" flags=" + flags + " optional=" + optionalStr + " paramNames=" + paramNamesStr; + } + + + public String getName(ConstantPool constants) { + if (name_index == 0) return "UNKNOWN"; + return constants.constant_string[name_index]; + } + + public String getParamStr(ConstantPool constants) { + String paramStr = ""; + for (int i = 0; i < param_types.length; i++) { + if (i > 0) { + paramStr += ", "; + } + if ((paramNames.length > i) && (paramNames[i] != 0)) { + paramStr += constants.constant_string[paramNames[i]]; + } else { + paramStr += "param" + (i + 1); + } + paramStr += ":"; + if (param_types[i] == 0) { + paramStr += "*"; + } else { + paramStr += constants.constant_multiname[param_types[i]].getName(constants); + } + if (optional != null) { + if (i >= param_types.length - optional.length) { + //System.out.println("param_types.length:"+param_types.length); + //System.out.println("optional.lengt:"+optional.length); + paramStr += "=" + optional[i - (param_types.length - optional.length)].toString(constants); + } + } + } + return paramStr; + } + + public String getReturnTypeStr(ConstantPool constants) { + if (ret_type == 0) return "*"; + return constants.constant_multiname[ret_type].getName(constants); + } +} + diff --git a/trunk/src/com/jpexs/asdec/abc/types/Multiname.java b/trunk/src/com/jpexs/asdec/abc/types/Multiname.java new file mode 100644 index 000000000..d11e9f03c --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/types/Multiname.java @@ -0,0 +1,145 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.types; + +import com.jpexs.asdec.abc.avm2.ConstantPool; + + +public class Multiname { + + public static final int QNAME = 7; + public static final int QNAMEA = 13; + public static final int MULTINAME = 9; + public static final int MULTINAMEA = 14; + public static final int RTQNAME = 15; + public static final int RTQNAMEA = 16; + public static final int MULTINAMEL = 27; + public static final int RTQNAMEL = 17; + public static final int RTQNAMELA = 18; + private static final int multinameKinds[] = new int[]{QNAME, QNAMEA, MULTINAME, MULTINAMEA, RTQNAME, RTQNAMEA, MULTINAMEL, RTQNAMEL, RTQNAMELA}; + private static final String multinameKindNames[] = new String[]{"Qname", "QnameA", "Multiname", "MultinameA", "RTQname", "RTQnameA", "MultinameL", "RTQnameL", "RTQnameLA"}; + + + public int kind = -1; + public int name_index = -1; + public int namespace_index = -1; + public int namespace_set_index = -1; + + + public Multiname(int kind, int name_index, int namespace_index, int namespace_set_index) { + this.kind = kind; + this.name_index = name_index; + this.namespace_index = namespace_index; + this.namespace_set_index = namespace_set_index; + } + + public boolean isAttribute() { + if (kind == QNAMEA) return true; + if (kind == MULTINAMEA) return true; + if (kind == RTQNAMEA) return true; + if (kind == RTQNAMELA) return true; + return false; + } + + public boolean isRuntime() { + if (kind == RTQNAME) return true; + if (kind == RTQNAMEA) return true; + if (kind == MULTINAMEL) return true; + return false; + } + + public boolean needsName() { + if (kind == RTQNAMEL) return true; + if (kind == RTQNAMELA) return true; + if (kind == MULTINAMEL) return true; + return false; + } + + public boolean needsNs() { + if (kind == RTQNAME) return true; + if (kind == RTQNAMEA) return true; + if (kind == RTQNAMEL) return true; + if (kind == RTQNAMELA) return true; + return false; + } + + public String getKindStr() { + String kindStr = "?"; + for (int k = 0; k < multinameKinds.length; k++) { + if (multinameKinds[k] == kind) { + kindStr = multinameKindNames[k]; + break; + } + } + return kindStr; + } + + @Override + public String toString() { + String kindStr = getKindStr(); + return "kind=" + kindStr + " name_index=" + name_index + " namespace_index=" + namespace_index + " namespace_set_index=" + namespace_set_index; + + } + + public String toString(ConstantPool constants) { + String kindStr = "?"; + for (int k = 0; k < multinameKinds.length; k++) { + if (multinameKinds[k] == kind) { + kindStr = multinameKindNames[k] + " "; + break; + } + } + String nameStr = ""; + if (name_index > 0) { + nameStr = constants.constant_string[name_index]; + } + if (name_index == 0) { + nameStr = "*"; + } + String namespaceStr = ""; + if (namespace_index > 0) { + namespaceStr = constants.constant_namespace[namespace_index].toString(constants); + } + if (!namespaceStr.equals("")) + namespaceStr = namespaceStr + "."; + if (namespace_index == 0) { + namespaceStr = "*."; + } + String namespaceSetStr = ""; + if (namespace_set_index > 0) { + namespaceSetStr = " "; + } + //kindStr+" "+ + return namespaceStr + nameStr + namespaceSetStr; + + } + + public String getName(ConstantPool constants) { + if (name_index == -1) { + return ""; + } + if (name_index == 0) { + return "*"; + } else { + return (isAttribute() ? "@" : "") + constants.constant_string[name_index]; + } + } + + public Namespace getNamespace(ConstantPool constants) { + if ((namespace_index == 0) || (namespace_index == -1)) { + return null; + } else { + return constants.constant_namespace[namespace_index]; + } + } + + public NamespaceSet getNamespaceSet(ConstantPool constants) { + if (namespace_set_index == 0) { + return null; + } else { + return constants.constant_namespace_set[namespace_set_index]; + } + } +} \ No newline at end of file diff --git a/trunk/src/com/jpexs/asdec/abc/types/Namespace.java b/trunk/src/com/jpexs/asdec/abc/types/Namespace.java new file mode 100644 index 000000000..368c169aa --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/types/Namespace.java @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.types; + +import com.jpexs.asdec.abc.avm2.ConstantPool; + + +public class Namespace { + + public static final int nameSpaceKinds[] = new int[]{8, 5, 22, 23, 24, 25, 26}; + public static final String nameSpaceKindNames[] = new String[]{"Namespace", "PrivateNamespace", "PackageNamespace", "PackageInternalNamespace", "ProtectedNamespace", "ExplicitNamespace", "StaticProtectedNamespace"}; + public static final String namePrefixes[] = new String[]{"", "private", "public", "", "protected", "explicit", ""}; + + public int kind; + public int name_index; + + public Namespace(int kind, int name_index) { + this.kind = kind; + this.name_index = name_index; + } + + public String getKindStr() { + String kindStr = "?"; + for (int k = 0; k < nameSpaceKinds.length; k++) { + if (nameSpaceKinds[k] == kind) { + kindStr = nameSpaceKindNames[k]; + break; + } + } + return kindStr; + } + + @Override + public String toString() { + + return "Namespace: kind=" + getKindStr() + " name_index=" + name_index; + } + + public String toString(ConstantPool constants) { + return getName(constants); //getPrefix(constants)+" "+getName(constants); + } + + public String getNameWithKind(ConstantPool constants) { + String kindStr = getKindStr(); + String nameStr = constants.constant_string[name_index]; + return kindStr + (nameStr.equals("") ? "" : " " + nameStr); + } + + public String getPrefix(ConstantPool constants) { + String kindStr = "?"; + for (int k = 0; k < nameSpaceKinds.length; k++) { + if (nameSpaceKinds[k] == kind) { + kindStr = namePrefixes[k]; + break; + } + } + return kindStr; + } + + public String getName(ConstantPool constants) { + return constants.constant_string[name_index]; + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/types/NamespaceSet.java b/trunk/src/com/jpexs/asdec/abc/types/NamespaceSet.java new file mode 100644 index 000000000..b26a7ee13 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/types/NamespaceSet.java @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.types; + +import com.jpexs.asdec.abc.avm2.ConstantPool; + + +public class NamespaceSet { + + public int namespaces[]; + + public String toString(ConstantPool constants) { + String s = ""; + for (int i = 0; i < this.namespaces.length; i++) { + if (i > 0) s += ", "; + s += constants.constant_namespace[namespaces[i]].getNameWithKind(constants); + } + return s; + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/types/ScriptInfo.java b/trunk/src/com/jpexs/asdec/abc/types/ScriptInfo.java new file mode 100644 index 000000000..b307e21e7 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/types/ScriptInfo.java @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.types; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.types.traits.Traits; + + +public class ScriptInfo { + + public int init_index; //MethodInfo + public Traits traits; + + @Override + public String toString() { + return "method_index=" + init_index + "\r\n" + traits.toString(); + } + + + public String toString(ConstantPool constants) { + return "method_index=" + init_index + "\r\n" + traits.toString(constants); + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/types/ValueKind.java b/trunk/src/com/jpexs/asdec/abc/types/ValueKind.java new file mode 100644 index 000000000..1a74e9747 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/types/ValueKind.java @@ -0,0 +1,103 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.types; + +import com.jpexs.asdec.abc.avm2.ConstantPool; + + +public class ValueKind { + + public static final int CONSTANT_Int = 0x03;// integer + public static final int CONSTANT_UInt = 0x04;// uinteger + public static final int CONSTANT_Double = 0x06;// double + public static final int CONSTANT_Utf8 = 0x01;// string + public static final int CONSTANT_True = 0x0B;// - + public static final int CONSTANT_False = 0x0A;// - + public static final int CONSTANT_Null = 0x0C;// - + public static final int CONSTANT_Undefined = 0x00;// - + public static final int CONSTANT_Namespace = 0x08;// namespace + public static final int CONSTANT_PackageNamespace = 0x16;// namespace + public static final int CONSTANT_PackageInternalNs = 0x17;// Namespace + public static final int CONSTANT_ProtectedNamespace = 0x18;// Namespace + public static final int CONSTANT_ExplicitNamespace = 0x19;// Namespace + public static final int CONSTANT_StaticProtectedNs = 0x1A;// Namespace + public static final int CONSTANT_PrivateNs = 0x05;// namespace + private static final int optionalKinds[] = new int[]{0x03, 0x04, 0x06, 0x01, 0x0B, 0x0A, 0x0C, 0x00, 0x08, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x05}; + private static final String optionalKindNames[] = new String[]{"Int", "UInt", "Double", "Utf8", "True", "False", "Null", "Undefined", "Namespace", "PackageNamespace", "PackageInternalNs", "ProtectedNamespace", "ExplicitNamespace", "StaticProtectedNs", "PrivateNs"}; + public int value_index; + public int value_kind; + + public ValueKind(int value_index, int value_kind) { + this.value_index = value_index; + this.value_kind = value_kind; + } + + @Override + public String toString() { + String s = ""; + s += value_index + ":"; + boolean found = false; + for (int i = 0; i < optionalKinds.length; i++) { + if (optionalKinds[i] == value_kind) { + s += optionalKindNames[i]; + found = true; + break; + } + } + if (!found) { + s += "?"; + } + return s; + } + + public String toString(ConstantPool constants) { + String ret = "?"; + switch (value_kind) { + case CONSTANT_Int: + ret = "" + constants.constant_int[value_index]; + break; + case CONSTANT_UInt: + ret = "" + constants.constant_uint[value_index]; + break; + case CONSTANT_Double: + ret = "" + constants.constant_double[value_index]; + break; + case CONSTANT_Utf8: + ret = "\"" + constants.constant_string[value_index] + "\""; + break; + case CONSTANT_True: + ret = "True"; + break; + case CONSTANT_False: + ret = "False"; + break; + case CONSTANT_Null: + ret = "Null"; + break; + case CONSTANT_Undefined: + ret = "Undefined"; + break; + case CONSTANT_Namespace: + ret = "" + constants.constant_namespace[value_index].getName(constants); + break; + case CONSTANT_PackageInternalNs: + ret = "" + constants.constant_namespace[value_index].getName(constants); + break; + case CONSTANT_ProtectedNamespace: + ret = "protected " + constants.constant_namespace[value_index].getName(constants); + break; + case CONSTANT_ExplicitNamespace: + ret = "explicit " + constants.constant_namespace[value_index].getName(constants); + break; + case CONSTANT_StaticProtectedNs: + ret = "static protected " + constants.constant_namespace[value_index].getName(constants); + break; + case CONSTANT_PrivateNs: + ret = "private " + constants.constant_namespace[value_index].getName(constants); + break; + } + return ret; + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/types/traits/Trait.java b/trunk/src/com/jpexs/asdec/abc/types/traits/Trait.java new file mode 100644 index 000000000..6519b3304 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/types/traits/Trait.java @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.types.traits; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.types.MethodInfo; +import com.jpexs.asdec.abc.types.Multiname; +import com.jpexs.asdec.abc.types.Namespace; +import com.jpexs.asdec.helpers.Helper; + + +public class Trait { + + public int name_index; + public int kindType; + public int kindFlags; + public int metadata[] = new int[0]; + public long fileOffset; + public byte bytes[]; + public static final int ATTR_Final = 0x1; + public static final int ATTR_Override = 0x2; + public static final int ATTR_Metadata = 0x4; + + public static final int TRAIT_SLOT = 0; + public static final int TRAIT_METHOD = 1; + public static final int TRAIT_GETTER = 2; + public static final int TRAIT_SETTER = 3; + public static final int TRAIT_CLASS = 4; + public static final int TRAIT_FUNCTION = 5; + public static final int TRAIT_CONST = 6; + + + public String getModifiers(ConstantPool constants, boolean isStatic) { + String ret = ""; + if ((kindFlags & ATTR_Override) > 0) { + ret += "override"; + } + Multiname m = getMultiName(constants); + if (m != null) { + Namespace ns = m.getNamespace(constants); + if (ns != null) { + ret += " " + ns.getPrefix(constants); + } + } + if (isStatic) + ret += " static"; + if ((kindFlags & ATTR_Final) > 0) { + if (!isStatic) { + ret += " final"; + } + } + return ret.trim(); + } + + @Override + public String toString() { + return "name_index=" + name_index + " kind=" + kindType + " metadata=" + Helper.intArrToString(metadata); + } + + public String toString(ConstantPool constants) { + return constants.constant_multiname[name_index].toString(constants) + " kind=" + kindType + " metadata=" + Helper.intArrToString(metadata); + } + + public String convert(ConstantPool constants, MethodInfo[] methodInfo) { + return convert(constants, methodInfo, false); + } + + public String convert(ConstantPool constants, MethodInfo[] methodInfo, boolean isStatic) { + return constants.constant_multiname[name_index].toString(constants) + " kind=" + kindType + " metadata=" + Helper.intArrToString(metadata); + } + + public Multiname getMultiName(ConstantPool constants) { + if (name_index == 0) { + return null; + } else { + return constants.constant_multiname[name_index]; + } + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/types/traits/TraitClass.java b/trunk/src/com/jpexs/asdec/abc/types/traits/TraitClass.java new file mode 100644 index 000000000..627ffcc96 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/types/traits/TraitClass.java @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.types.traits; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.helpers.Helper; + + +public class TraitClass extends Trait { + + public int slot_id; + public int class_info; + + @Override + public String toString(ConstantPool constants) { + return "Class " + constants.constant_multiname[name_index].toString(constants) + " slot=" + slot_id + " class_info=" + class_info + " metadata=" + Helper.intArrToString(metadata); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/types/traits/TraitFunction.java b/trunk/src/com/jpexs/asdec/abc/types/traits/TraitFunction.java new file mode 100644 index 000000000..a46aca113 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/types/traits/TraitFunction.java @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.types.traits; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.helpers.Helper; + + +public class TraitFunction extends Trait { + + public int slot_index; + public int method_info; + + @Override + public String toString(ConstantPool constants) { + return "Function " + constants.constant_multiname[name_index].toString(constants) + " slot=" + slot_index + " method_info=" + method_info + " metadata=" + Helper.intArrToString(metadata); + } +} diff --git a/trunk/src/com/jpexs/asdec/abc/types/traits/TraitMethodGetterSetter.java b/trunk/src/com/jpexs/asdec/abc/types/traits/TraitMethodGetterSetter.java new file mode 100644 index 000000000..b127b6422 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/types/traits/TraitMethodGetterSetter.java @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.types.traits; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.types.MethodInfo; +import com.jpexs.asdec.helpers.Helper; + + +public class TraitMethodGetterSetter extends Trait { + + public int disp_id; //compiler assigned value that helps overriding + public int method_info; + + @Override + public String toString(ConstantPool constants) { + return "0x" + Helper.formatAddress(fileOffset) + " " + Helper.byteArrToString(bytes) + " MethodGetterSetter " + constants.constant_multiname[name_index].toString(constants) + " disp_id=" + disp_id + " method_info=" + method_info + " metadata=" + Helper.intArrToString(metadata); + } + + @Override + public String convert(ConstantPool constants, MethodInfo[] methodInfo, boolean isStatic) { + String modifier = getModifiers(constants, isStatic) + " "; + if (modifier.equals(" ")) modifier = ""; + String addKind = ""; + if (kindType == TRAIT_GETTER) addKind = "get "; + if (kindType == TRAIT_SETTER) addKind = "set "; + return modifier + "function " + addKind + getMethodName(constants) + "(" + methodInfo[method_info].getParamStr(constants) + ") : " + methodInfo[method_info].getReturnTypeStr(constants); + } + + + public String getMethodName(ConstantPool constants) { + return constants.constant_multiname[name_index].getName(constants); + } + + +} diff --git a/trunk/src/com/jpexs/asdec/abc/types/traits/TraitSlotConst.java b/trunk/src/com/jpexs/asdec/abc/types/traits/TraitSlotConst.java new file mode 100644 index 000000000..4418cb08e --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/types/traits/TraitSlotConst.java @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.types.traits; + +import com.jpexs.asdec.abc.avm2.ConstantPool; +import com.jpexs.asdec.abc.avm2.treemodel.TreeItem; +import com.jpexs.asdec.abc.types.MethodInfo; +import com.jpexs.asdec.abc.types.ValueKind; +import com.jpexs.asdec.helpers.Helper; +import com.jpexs.asdec.helpers.Highlighting; + + +public class TraitSlotConst extends Trait { + + public int slot_id; + public int type_index; + public int value_index; + public int value_kind; + + public TreeItem assignedValue; + + @Override + public String toString(ConstantPool constants) { + String typeStr = "*"; + if (type_index > 0) { + typeStr = constants.constant_multiname[type_index].toString(constants); + } + return "0x" + Helper.formatAddress(fileOffset) + " " + Helper.byteArrToString(bytes) + " SlotConst " + constants.constant_multiname[name_index].toString(constants) + " slot=" + slot_id + " type=" + typeStr + " value=" + (new ValueKind(value_index, value_kind)).toString(constants) + " metadata=" + Helper.intArrToString(metadata); + } + + public String getNameValueStr(ConstantPool constants) { + String typeStr = "*"; + if (type_index > 0) { + typeStr = constants.constant_multiname[type_index].getName(constants); + } + String valueStr = ""; + if (value_kind != 0) { + valueStr = " = " + (new ValueKind(value_index, value_kind)).toString(constants); + } + + if (assignedValue != null) { + valueStr = " = " + Highlighting.stripHilights(assignedValue.toString(constants)); + } + + String slotconst = "var"; + if (kindType == TRAIT_CONST) { + slotconst = "const"; + } + return slotconst + " " + constants.constant_multiname[name_index].getName(constants) + ":" + typeStr + valueStr; + } + + @Override + public String convert(ConstantPool constants, MethodInfo[] methodInfo, boolean isStatic) { + String modifier = getModifiers(constants, isStatic) + " "; + if (modifier.equals(" ")) modifier = ""; + return modifier + getNameValueStr(constants); + } + +} diff --git a/trunk/src/com/jpexs/asdec/abc/types/traits/Traits.java b/trunk/src/com/jpexs/asdec/abc/types/traits/Traits.java new file mode 100644 index 000000000..84431ffd8 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/abc/types/traits/Traits.java @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2010. JPEXS + */ + +package com.jpexs.asdec.abc.types.traits; + +import com.jpexs.asdec.abc.avm2.ConstantPool; + + +public class Traits { + public Trait traits[] = new Trait[0]; + + @Override + public String toString() { + String s = ""; + for (int t = 0; t < traits.length; t++) { + if (t > 0) s += "\r\n"; + s += traits[t].toString(); + } + return s; + } + + + public String toString(ConstantPool constants) { + String s = ""; + for (int t = 0; t < traits.length; t++) { + if (t > 0) s += "\r\n"; + s += traits[t].toString(constants); + } + return s; + } + + public String convert(ConstantPool constants, String prefix) { + String s = ""; + for (int t = 0; t < traits.length; t++) { + if (t > 0) s += "\r\n"; + s += prefix + traits[t].convert(constants, null); + } + return s; + } + + +} \ No newline at end of file diff --git a/trunk/src/com/jpexs/asdec/action/Action.java b/trunk/src/com/jpexs/asdec/action/Action.java new file mode 100644 index 000000000..b64f5ef60 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/action/Action.java @@ -0,0 +1,878 @@ +package com.jpexs.asdec.action; + +import com.jpexs.asdec.SWFOutputStream; +import com.jpexs.asdec.action.parser.FlasmLexer; +import com.jpexs.asdec.action.parser.ParseException; +import com.jpexs.asdec.action.parser.ParsedSymbol; +import com.jpexs.asdec.action.swf4.*; +import com.jpexs.asdec.action.swf5.*; +import com.jpexs.asdec.action.swf6.ActionStrictEquals; +import com.jpexs.asdec.action.swf7.ActionDefineFunction2; +import com.jpexs.asdec.action.swf7.ActionTry; +import com.jpexs.asdec.action.treemodel.*; +import com.jpexs.asdec.action.treemodel.clauses.*; +import com.jpexs.asdec.action.treemodel.operations.AndTreeItem; +import com.jpexs.asdec.action.treemodel.operations.NotTreeItem; +import com.jpexs.asdec.action.treemodel.operations.OrTreeItem; +import com.jpexs.asdec.helpers.Helper; +import com.jpexs.asdec.helpers.Highlighting; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.EmptyStackException; +import java.util.List; +import java.util.Stack; + +/** + * Represents one ACTIONRECORD, + * also has some static method to work with Actions + */ +public class Action { + /** + * Action type identifier + */ + public int actionCode; + /** + * Length of action data + */ + public int actionLength; + + private long address; + + /** + * String used to indent line when converting to string + */ + public static final String INDENTOPEN = "INDENTOPEN"; + /** + * String used to unindent line when converting to string + */ + public static final String INDENTCLOSE = "INDENTCLOSE"; + + /** + * Names of ActionScript properties + */ + public static final String[] propertyNames = new String[]{ + "_x", + "_y", + "_xscale", + "_yscale", + "_currentframe", + "_totalframes", + "_alpha", + "_visible", + "_width", + "_height", + "_rotation", + "_target", + "_framesloaded", + "_name", + "_droptarget", + "_url", + "_highquality", + "_focusrect", + "_soundbuftime", + "_quality", + "_xmouse", + "_ymouse" + }; + + /** + * Constructor + * + * @param actionCode Action type identifier + * @param actionLength Length of action data + */ + public Action(int actionCode, int actionLength) { + this.actionCode = actionCode; + this.actionLength = actionLength; + } + + + /** + * Returns address of this action + * + * @return + */ + public long getAddress() { + return address; + } + + /** + * Gets all addresses which are referenced from this action and/or subactions + * + * @param version SWF version + * @return List of addresses + */ + public List getAllRefs(int version) { + List ret = new ArrayList(); + return ret; + } + + /** + * Gets all ActionIf or ActionJump actions from subactions + * + * @return List of actions + */ + public List getAllIfsOrJumps() { + List ret = new ArrayList(); + return ret; + } + + + /** + * Gets all ActionIf or ActionJump actions from list of actions + * + * @param list List of actions + * @return List of actions + */ + public static List getActionsAllIfsOrJumps(List list) { + List ret = new ArrayList(); + for (Action a : list) { + List part = a.getAllIfsOrJumps(); + ret.addAll(part); + } + return ret; + } + + /** + * Gets all addresses which are referenced from the list of actions + * + * @param list List of actions + * @param version SWF version + * @return List of addresses + */ + public static List getActionsAllRefs(List list, int version) { + List ret = new ArrayList(); + for (Action a : list) { + List part = a.getAllRefs(version); + ret.addAll(part); + } + return ret; + } + + /** + * Sets address of this instruction + * + * @param address Address + * @param version SWF version + */ + public void setAddress(long address, int version) { + this.address = address; + } + + + /** + * Returns a string representation of the object + * + * @return a string representation of the object. + */ + @Override + public String toString() { + return "Action" + actionCode; + } + + /** + * Reads String from FlasmLexer + * + * @param lex FlasmLexer + * @return String value + * @throws IOException + * @throws ParseException When read object is not String + */ + protected String lexString(FlasmLexer lex) throws IOException, ParseException { + ParsedSymbol symb = lex.yylex(); + if (symb.type != ParsedSymbol.TYPE_STRING) throw new ParseException("String expected", lex.yyline()); + return (String) symb.value; + } + + /** + * Reads Block startServer from FlasmLexer + * + * @param lex FlasmLexer + * @throws IOException + * @throws ParseException When read object is not Block startServer + */ + protected void lexBlockOpen(FlasmLexer lex) throws IOException, ParseException { + ParsedSymbol symb = lex.yylex(); + if (symb.type != ParsedSymbol.TYPE_BLOCK_START) throw new ParseException("Block startServer ", lex.yyline()); + } + + /** + * Reads Identifier from FlasmLexer + * + * @param lex FlasmLexer + * @return Identifier name + * @throws IOException + * @throws ParseException When read object is not Identifier + */ + protected String lexIdentifier(FlasmLexer lex) throws IOException, ParseException { + ParsedSymbol symb = lex.yylex(); + if (symb.type != ParsedSymbol.TYPE_IDENTIFIER) throw new ParseException("Identifier expected", lex.yyline()); + return (String) symb.value; + } + + /** + * Reads long value from FlasmLexer + * + * @param lex FlasmLexer + * @return long value + * @throws IOException + * @throws ParseException When read object is not long value + */ + protected long lexLong(FlasmLexer lex) throws IOException, ParseException { + ParsedSymbol symb = lex.yylex(); + if (symb.type != ParsedSymbol.TYPE_INTEGER) throw new ParseException("Integer expected", lex.yyline()); + return (Long) symb.value; + } + + /** + * Reads boolean value from FlasmLexer + * + * @param lex FlasmLexer + * @return boolean value + * @throws IOException + * @throws ParseException When read object is not boolean value + */ + protected boolean lexBoolean(FlasmLexer lex) throws IOException, ParseException { + ParsedSymbol symb = lex.yylex(); + if (symb.type != ParsedSymbol.TYPE_BOOLEAN) throw new ParseException("Boolean expected", lex.yyline()); + return (Boolean) symb.value; + } + + /** + * Gets action converted to bytes + * + * @param version SWF version + * @return Array of bytes + */ + public byte[] getBytes(int version) { + byte ret[] = new byte[1]; + ret[0] = (byte) actionCode; + return ret; + } + + /** + * Surrounds byte array with Action header + * + * @param data Byte array + * @param version SWF version + * @return Byte array + */ + protected byte[] surroundWithAction(byte[] data, int version) { + ByteArrayOutputStream baos2 = new ByteArrayOutputStream(); + SWFOutputStream sos2 = new SWFOutputStream(baos2, version); + try { + sos2.writeUI8(actionCode); + sos2.writeUI16(data.length); + sos2.write(data); + sos2.close(); + } catch (IOException e) { + + } + return baos2.toByteArray(); + } + + /** + * Converts list of Actions to bytes + * + * @param list List of actions + * @param addZero Whether or not to add 0 UI8 value to the end + * @param version SWF version + * @return Array of bytes + */ + public static byte[] actionsToBytes(List list, boolean addZero, int version) { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + for (Action a : list) { + try { + baos.write(a.getBytes(version)); + } catch (IOException e) { + + } + } + if (addZero) baos.write(0); + return baos.toByteArray(); + } + + /** + * Set addresses of actions in the list + * + * @param list List of actions + * @param baseAddress Address of first action in the list + * @param version SWF version + */ + public static void setActionsAddresses(List list, long baseAddress, int version) { + long offset = baseAddress; + for (Action a : list) { + a.setAddress(offset, version); + offset += a.getBytes(version).length; + } + } + + + /** + * Converts list of actions to ASM source + * + * @param list List of actions + * @param importantOffsets List of important offsets to mark as labels + * @param version SWF version + * @return ASM source as String + */ + public static String actionsToString(List list, List importantOffsets, int version) { + return actionsToString(list, importantOffsets, new ArrayList(), version); + } + + /** + * Converts list of actions to ASM source + * + * @param list List of actions + * @param importantOffsets List of important offsets to mark as labels + * @param constantPool Constant pool + * @param version SWF version + * @return ASM source as String + */ + public static String actionsToString(List list, List importantOffsets, List constantPool, int version) { + String ret = ""; + long offset = 0; + if (importantOffsets == null) { + setActionsAddresses(list, 0, version); + importantOffsets = getActionsAllRefs(list, version); + } + + offset = 0; + for (Action a : list) { + if (a instanceof ActionConstantPool) { + constantPool.clear(); + constantPool.addAll(((ActionConstantPool) a).constantPool); + } + if (a instanceof ActionPush) { + ((ActionPush) a).constantPool = constantPool; + } + offset = a.getAddress(); + if (importantOffsets.contains(offset)) { + ret += "loc" + Helper.formatAddress(offset) + ":"; + } + offset += a.getBytes(version).length; + ret += a.getASMSource(importantOffsets, constantPool, version) + "\r\n"; + } + if (importantOffsets.contains(offset)) { + ret += "loc" + Helper.formatAddress(offset) + ":\r\n"; + } + return ret; + } + + /** + * Convert action to ASM source + * + * @param knownAddreses List of important offsets to mark as labels + * @param constantPool Constant pool + * @param version SWF version + * @return + */ + public String getASMSource(List knownAddreses, List constantPool, int version) { + return toString(); + } + + /** + * Translates this function to stack and output. + * + * @param stack Stack + * @param constants Constant pool + * @param output Output + */ + public void translate(Stack stack, ConstantPool constants, List output) { + + } + + /** + * Pops long value off the stack + * + * @param stack Stack + * @return long value + */ + protected long popLong(Stack stack) { + TreeItem item = stack.pop(); + if (item instanceof DirectValueTreeItem) { + if (((DirectValueTreeItem) item).value instanceof Long) { + return (long) (Long) ((DirectValueTreeItem) item).value; + } + } + return 0; + } + + /** + * Converts action index to address in the specified list of actions + * + * @param actions List of actions + * @param ip Action index + * @param version SWF version + * @return address + */ + public static long ip2adr(List actions, int ip, int version) { + if (ip == actions.size()) { + if (actions.size() == 0) return 0; + return actions.get(actions.size() - 1).getAddress() + actions.get(actions.size() - 1).getBytes(version).length; + } + return actions.get(ip).getAddress(); + } + + /** + * Converts address to action index in the specified list of actions + * + * @param actions List of actions + * @param addr Address + * @param version SWF version + * @return action index + */ + public static int adr2ip(List actions, long addr, int version) { + for (int ip = 0; ip < actions.size(); ip++) { + if (actions.get(ip).getAddress() == addr) return ip; + } + if (actions.size() > 0) { + long outpos = actions.get(actions.size() - 1).getAddress() + actions.get(actions.size() - 1).getBytes(version).length; + if (addr == outpos) { + return actions.size(); + } + } + return -1; + } + + + /** + * Converts list of TreeItems to string + * + * @param tree List of TreeItem + * @return String + */ + public static String treeToString(List tree) { + String ret = ""; + for (TreeItem ti : tree) { + ret += ti.toString() + "\r\n"; + } + String parts[] = ret.split("\r\n"); + ret = ""; + + + try { + Stack loopStack = new Stack(); + for (int p = 0; p < parts.length; p++) { + String stripped = Highlighting.stripHilights(parts[p]); + if (stripped.endsWith(":") && (!stripped.startsWith("case ")) && (!stripped.equals("default:"))) { + loopStack.add(stripped.substring(0, stripped.length() - 1)); + } + if (stripped.startsWith("break ")) { + if (stripped.equals("break " + loopStack.peek() + ";")) { + parts[p] = parts[p].replace(" " + loopStack.peek(), ""); + } + } + if (stripped.startsWith("continue ")) { + if (loopStack.size() > 0) { + if (stripped.equals("continue " + loopStack.peek() + ";")) { + parts[p] = parts[p].replace(" " + loopStack.peek(), ""); + } + } + } + if (stripped.startsWith(":")) { + loopStack.pop(); + } + } + } catch (Exception ex) { + } + + int level = 0; + for (int p = 0; p < parts.length; p++) { + String strippedP = Highlighting.stripHilights(parts[p]); + if (strippedP.endsWith(":") && (!strippedP.startsWith("case ")) && (!strippedP.equals("default:"))) { + String loopname = strippedP.substring(0, strippedP.length() - 1); + boolean dorefer = false; + for (int q = p + 1; q < parts.length; q++) { + String strippedQ = Highlighting.stripHilights(parts[q]); + if (strippedQ.equals("break " + loopname + ";")) { + dorefer = true; + break; + } + if (strippedQ.equals("continue " + loopname + ";")) { + dorefer = true; + break; + } + if (strippedQ.equals(":" + loopname)) { + break; + } + } + if (!dorefer) { + continue; + } + } + if (strippedP.startsWith(":")) { + continue; + } + if (Highlighting.stripHilights(parts[p]).equals(INDENTOPEN)) { + level++; + continue; + } + if (Highlighting.stripHilights(parts[p]).equals(INDENTCLOSE)) { + level--; + continue; + } + if (Highlighting.stripHilights(parts[p]).equals("}")) level--; + if (Highlighting.stripHilights(parts[p]).equals("};")) level--; + ret += tabString(level) + parts[p] + "\r\n"; + if (Highlighting.stripHilights(parts[p]).equals("{")) level++; + } + return ret; + } + + private static final String INDENT_STRING = " "; + + + private static String tabString(int len) { + String ret = ""; + for (int i = 0; i < len; i++) { + ret += INDENT_STRING; + } + return ret; + } + + /** + * Converts list of actions to ActionScript source code + * + * @param actions List of actions + * @param version SWF version + * @return String with Source code + */ + public static String actionsToSource(List actions, int version) { + List tree = actionsToTree(actions, version); + return treeToString(tree); + } + + /** + * Converts list of actions to List of treeItems + * + * @param actions List of actions + * @param version SWF version + * @return List of treeItems + */ + public static List actionsToTree(List actions, int version) { + return actionsToTree(new ArrayList(), new ArrayList(), getActionsAllIfsOrJumps(actions), new Stack(), new ConstantPool(), actions, 0, actions.size() - 1, version); + } + + private static Stack actionsToStackTree(List jumpsOrIfs, List actions, ConstantPool constants, int start, int end, int version) { + Stack ret = new Stack(); + actionsToTree(new ArrayList(), new ArrayList(), jumpsOrIfs, ret, constants, actions, start, end, version); + return ret; + } + + + private static class Loop { + + public long loopContinue; + public long loopBreak; + public int continueCount = 0; + public int breakCount = 0; + + public Loop(long loopContinue, long loopBreak) { + this.loopContinue = loopContinue; + this.loopBreak = loopBreak; + } + } + + private static List actionsToTree(List unknownJumps, List loopList, List jumpsOrIfs, Stack stack, ConstantPool constants, List actions, int start, int end, int version) { + List output = new ArrayList(); + int ip = start; + boolean isWhile = false; + int loopStart = 0; + loopip: + while (ip <= end + 1) { + + long addr = ip2adr(actions, ip, version); + if (unknownJumps.contains(addr)) { + unknownJumps.remove(new Long(addr)); + boolean switchFound = false; + for (int i = output.size() - 1; i >= 0; i--) { + if (output.get(i) instanceof SwitchTreeItem) { + if (((SwitchTreeItem) output.get(i)).defaultCommands == null) { + List continues = ((SwitchTreeItem) output.get(i)).getContinues(); + boolean breakFound = false; + for (ContinueTreeItem cti : continues) { + if (cti.loopPos == addr) { + cti.isKnown = true; + cti.isBreak = true; + ((SwitchTreeItem) output.get(i)).loopBreak = addr; + breakFound = true; + } + } + if (breakFound) { + switchFound = true; + ((SwitchTreeItem) output.get(i)).defaultCommands = new ArrayList(); + for (int k = i + 1; k < output.size(); k++) { + ((SwitchTreeItem) output.get(i)).defaultCommands.add(output.remove(i + 1)); + } + } + } + break; + } + } + if (!switchFound) { + throw new UnknownJumpException(stack, addr, output); + } + } + if (ip > end) break; + Action action = actions.get(ip); + for (int j = 0; j < jumpsOrIfs.size(); j++) { + Action jif = jumpsOrIfs.get(j); + if (jif instanceof ActionIf) { + if (((ActionIf) jif).getRef(version) == addr) { + if (jif.getAddress() > addr) { + jumpsOrIfs.remove(j); + List doBody = actionsToTree(unknownJumps, loopList, jumpsOrIfs, stack, constants, actions, ip, adr2ip(actions, jif.getAddress(), version) - 1, version); + Loop currentLoop = new Loop(ip, adr2ip(actions, jif.getAddress(), version) + 1); + loopList.add(currentLoop); + output.add(new DoWhileTreeItem(action, adr2ip(actions, jif.getAddress(), version) + 1, ip, doBody, stack.pop())); + ip = adr2ip(actions, jif.getAddress(), version) + 1; + continue loopip; + } + } + } + + } + for (int j = 0; j < jumpsOrIfs.size(); j++) { + Action jif = jumpsOrIfs.get(j); + if (jif instanceof ActionJump) { + if (((ActionJump) jif).getRef(version) == addr) { + if (jif.getAddress() > addr) { + isWhile = true; + loopStart = ip; + break; + } + } + } + } + if (action instanceof ActionJump) { + int jumpIp = adr2ip(actions, ((ActionJump) action).getRef(version), version); + //if (jumpIp > ip) { + for (Loop l : loopList) { + if (l.loopBreak == ((ActionJump) action).getRef(version)) { + output.add(new BreakTreeItem(action, l.loopBreak)); + ip = ip + 1; + continue loopip; + } + if (l.loopContinue == ((ActionJump) action).getRef(version)) { + l.continueCount++; + output.add(new ContinueTreeItem(action, l.loopBreak)); + ip = ip + 1; + continue loopip; + } + } + + output.add(new ContinueTreeItem(action, ((ActionJump) action).getRef(version), false)); + + if (!unknownJumps.contains(((ActionJump) action).getRef(version))) { + unknownJumps.add(((ActionJump) action).getRef(version)); + } + ip = ip + 1; + break; + + } else if (action instanceof ActionIf) { + int jumpIp = adr2ip(actions, ((ActionIf) action).getRef(version), version); + if (jumpIp < ip) { + output.add(new UnsupportedTreeItem(action, "ActionIf to jump back")); + break; + } + TreeItem expression = stack.pop(); + if (expression instanceof NotTreeItem) { + expression = ((NotTreeItem) expression).value; + } else { + expression = new NotTreeItem(action, expression); + } + List onTrue = new ArrayList(); + List onFalse = new ArrayList(); + boolean hasElse = false; + int jumpElseIp = 0; + Stack falseStack = new Stack(); + Stack trueStack = new Stack(); + //if (!isWhile) { + if (actions.get(jumpIp - 1) instanceof ActionJump) { + long ref = ((ActionJump) actions.get(jumpIp - 1)).getRef(version); + int refIp = adr2ip(actions, ref, version); + if ((refIp > jumpIp) && (refIp <= end + 1)) { + hasElse = true; + jumpElseIp = adr2ip(actions, ((ActionJump) actions.get(jumpIp - 1)).getRef(version), version); + onFalse = actionsToTree(unknownJumps, loopList, jumpsOrIfs, falseStack, constants, actions, jumpIp, jumpElseIp - 1, version); + } + } + //} + Loop currentLoop = null; + if (isWhile) { + currentLoop = new Loop(loopStart, jumpIp); + loopList.add(currentLoop); + } + boolean isFor = false; + boolean isTernar = false; + List finalExpression = null; + try { + + onTrue = actionsToTree(unknownJumps, loopList, jumpsOrIfs, trueStack, constants, actions, ip + 1, jumpIp - 1 - (hasElse || isWhile ? 1 : 0), version); + if (onTrue.size() == 0 && trueStack.size() > 0) { + isTernar = true; + } + } catch (UnknownJumpException uje) { + if ((adr2ip(actions, uje.addr, version) >= start) && (adr2ip(actions, uje.addr, version) <= end)) { + currentLoop.loopContinue = uje.addr; + onTrue = uje.output; + List contList = new ArrayList(); + for (TreeItem ti : onTrue) { + if (ti instanceof ContinueTreeItem) { + contList.add((ContinueTreeItem) ti); + } + if (ti instanceof Block) { + List subcont = ((Block) ti).getContinues(); + for (int k = 0; k < subcont.size(); k++) + contList.add(subcont.get(k)); + } + } + for (int u = 0; u < contList.size(); u++) { + if (contList.get(u) instanceof ContinueTreeItem) { + if (((ContinueTreeItem) contList.get(u)).loopPos == uje.addr) { + if (!((ContinueTreeItem) contList.get(u)).isKnown) { + ((ContinueTreeItem) contList.get(u)).isKnown = true; + ((ContinueTreeItem) contList.get(u)).loopPos = currentLoop.loopBreak; + } + } + } + } + finalExpression = actionsToTree(unknownJumps, loopList, jumpsOrIfs, stack, constants, actions, adr2ip(actions, uje.addr, version), jumpIp - 2, version); + isFor = true; + } else { + //throw new ConvertException("Unknown pattern: jump to nowhere", ip); + } + } + if (isFor) { + output.add(new ForTreeItem(action, currentLoop.loopBreak, currentLoop.loopContinue, new ArrayList(), expression, finalExpression, onTrue)); + } else if (isTernar) { + stack.push(new TernarOpTreeItem(action, expression, trueStack.pop(), falseStack.pop())); + } else if (isWhile) { + output.add(new WhileTreeItem(action, jumpIp, loopStart, expression, onTrue)); + } else { + output.add(new IfTreeItem(action, expression, onTrue, onFalse)); + } + ip = (hasElse ? jumpElseIp : jumpIp); + isWhile = false; + isFor = false; + continue; + } else if (action instanceof ActionTry) { + ActionTry atry = (ActionTry) action; + List tryCommands = actionsToTree(unknownJumps, loopList, jumpsOrIfs, new Stack(), constants, atry.tryBody, 0, atry.tryBody.size() - 1, version); + TreeItem catchName; + if (atry.catchInRegisterFlag) { + catchName = new DirectValueTreeItem(atry, new RegisterNumber(atry.catchRegister), constants); + } else { + catchName = new DirectValueTreeItem(atry, atry.catchName, constants); + } + List catchExceptions = new ArrayList(); + catchExceptions.add(catchName); + List> catchCommands = new ArrayList>(); + catchCommands.add(actionsToTree(unknownJumps, loopList, jumpsOrIfs, new Stack(), constants, atry.catchBody, 0, atry.catchBody.size() - 1, version)); + List finallyCommands = actionsToTree(unknownJumps, loopList, jumpsOrIfs, new Stack(), constants, atry.finallyBody, 0, atry.finallyBody.size() - 1, version); + output.add(new TryTreeItem(tryCommands, catchExceptions, catchCommands, finallyCommands)); + } else if (action instanceof ActionWith) { + ActionWith awith = (ActionWith) action; + List withCommands = actionsToTree(unknownJumps, loopList, jumpsOrIfs, new Stack(), constants, awith.actions, 0, awith.actions.size() - 1, version); + output.add(new WithTreeItem(action, stack.pop(), withCommands)); + } else if (action instanceof ActionDefineFunction) { + FunctionTreeItem fti = new FunctionTreeItem(action, actionsToTree(unknownJumps, loopList, jumpsOrIfs, new Stack(), constants, ((ActionDefineFunction) action).code, 0, ((ActionDefineFunction) action).code.size() - 1, version), constants); + stack.push(fti); + } else if (action instanceof ActionDefineFunction2) { + FunctionTreeItem fti = new FunctionTreeItem(action, actionsToTree(unknownJumps, loopList, jumpsOrIfs, new Stack(), constants, ((ActionDefineFunction2) action).code, 0, ((ActionDefineFunction2) action).code.size() - 1, version), constants); + stack.push(fti); + } else if (action instanceof ActionPushDuplicate) { + do { + if (actions.get(ip + 1) instanceof ActionNot) { + if (actions.get(ip + 2) instanceof ActionIf) { + int nextPos = adr2ip(actions, ((ActionIf) actions.get(ip + 2)).getRef(version), version); + stack.push(new AndTreeItem(action, stack.pop(), actionsToStackTree(jumpsOrIfs, actions, constants, ip + 4 /*je tam pop*/, nextPos - 1, version).pop())); + ip = nextPos; + } else { + output.add(new UnsupportedTreeItem(action, "ActionPushDuplicate with Not")); + break; + } + } else if (actions.get(ip + 1) instanceof ActionIf) { + int nextPos = adr2ip(actions, ((ActionIf) actions.get(ip + 1)).getRef(version), version); + stack.push(new OrTreeItem(action, stack.pop(), actionsToStackTree(jumpsOrIfs, actions, constants, ip + 3, nextPos - 1, version).pop())); + ip = nextPos; + } else { + output.add(new UnsupportedTreeItem(action, "ActionPushDuplicate with no If")); + break loopip; + } + action = actions.get(ip); + } + while (action instanceof ActionPushDuplicate); + } else if (action instanceof ActionStoreRegister) { + if ((ip + 1 <= end) && (actions.get(ip + 1) instanceof ActionPop)) { + action.translate(stack, constants, output); + stack.pop(); + ip++; + } else { + action.translate(stack, constants, output); + } + } else if (action instanceof ActionStrictEquals) { + if ((ip + 1 < actions.size()) && (actions.get(ip + 1) instanceof ActionIf)) { + List caseValues = new ArrayList(); + List> caseCommands = new ArrayList>(); + caseValues.add(stack.pop()); + TreeItem switchedObject = stack.pop(); + if (output.size() > 0) { + if (output.get(output.size() - 1) instanceof StoreRegisterTreeItem) { + output.remove(output.size() - 1); + } + } + int caseStart = ip + 2; + List caseBodyIps = new ArrayList(); + long defaultAddr = 0; + caseBodyIps.add(adr2ip(actions, ((ActionIf) actions.get(ip + 1)).getRef(version), version)); + ip++; + do { + ip++; + if ((actions.get(ip - 1) instanceof ActionStrictEquals) && (actions.get(ip) instanceof ActionIf)) { + caseValues.add(actionsToStackTree(jumpsOrIfs, actions, constants, caseStart, ip - 2, version).pop()); + caseStart = ip + 1; + caseBodyIps.add(adr2ip(actions, ((ActionIf) actions.get(ip)).getRef(version), version)); + if (actions.get(ip + 1) instanceof ActionJump) { + defaultAddr = ((ActionJump) actions.get(ip + 1)).getRef(version); + ip = adr2ip(actions, defaultAddr, version); + break; + } + } + } while (ip < end); + for (int i = 0; i < caseBodyIps.size(); i++) { + int caseEnd = ip - 1; + if (i < caseBodyIps.size() - 1) { + caseEnd = caseBodyIps.get(i + 1) - 1; + } + caseCommands.add(actionsToTree(unknownJumps, loopList, jumpsOrIfs, stack, constants, actions, caseBodyIps.get(i), caseEnd, version)); + } + output.add(new SwitchTreeItem(action, defaultAddr, switchedObject, caseValues, caseCommands, null)); + continue; + } else { + action.translate(stack, constants, output); + } + } else { + try { + action.translate(stack, constants, output); + } catch (EmptyStackException ese) { + output.add(new UnsupportedTreeItem(action, "Empty stack")); + } + } + + ip++; + } + if (stack.size() > 0) { + for (int i = stack.size() - 1; i >= 0; i--) { + if (stack.get(i) instanceof FunctionTreeItem) { + output.add(0, stack.get(i)); + stack.remove(i); + } + } + } + return output; + } +} diff --git a/trunk/src/com/jpexs/asdec/action/UnknownJumpException.java b/trunk/src/com/jpexs/asdec/action/UnknownJumpException.java new file mode 100644 index 000000000..00a19916a --- /dev/null +++ b/trunk/src/com/jpexs/asdec/action/UnknownJumpException.java @@ -0,0 +1,51 @@ +package com.jpexs.asdec.action; + +import com.jpexs.asdec.action.treemodel.TreeItem; + +import java.util.List; +import java.util.Stack; + +/** + * Raised when actual address has been referenced with an unknown jump + * + * @author JPEXS + */ +public class UnknownJumpException extends RuntimeException { + /** + * Actual stack + */ + public Stack stack; + /** + * Actual address + */ + public long addr; + /** + * Output of the method before raising the exception + */ + public List output; + + /** + * Constructor + * + * @param stack Actual stack + * @param addr Actual address + * @param output Output of the method before raising the exception + */ + public UnknownJumpException(Stack stack, long addr, List output) { + this.stack = stack; + this.addr = addr; + this.output = output; + } + + /** + * Returns a string representation of the object + * + * @return a string representation of the object. + */ + @Override + public String toString() { + return "Unknown jump to " + addr; + } + + +} \ No newline at end of file diff --git a/trunk/src/com/jpexs/asdec/action/gui/MainFrame.java b/trunk/src/com/jpexs/asdec/action/gui/MainFrame.java new file mode 100644 index 000000000..7be298f64 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/action/gui/MainFrame.java @@ -0,0 +1,165 @@ +package com.jpexs.asdec.action.gui; + +import com.jpexs.asdec.Main; +import com.jpexs.asdec.action.parser.ASMParser; +import com.jpexs.asdec.action.parser.ParseException; +import com.jpexs.asdec.gui.View; +import com.jpexs.asdec.helpers.Highlighting; +import com.jpexs.asdec.tags.ASMSource; +import com.jpexs.asdec.tags.Tag; +import jsyntaxpane.DefaultSyntaxKit; + +import javax.swing.*; +import javax.swing.event.TreeSelectionEvent; +import javax.swing.event.TreeSelectionListener; +import javax.swing.tree.DefaultTreeCellRenderer; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.util.List; + +public class MainFrame extends JFrame implements TreeSelectionListener, ActionListener { + public JTree tagTree; + public JEditorPane editor; + public JEditorPane decompiledEditor; + public List list; + public JSplitPane splitPane; + public JSplitPane splitPane2; + public JButton saveButton = new JButton("Save"); + + public MainFrame(List list) { + this.list = list; + DefaultSyntaxKit.initKit(); + editor = new JEditorPane(); + decompiledEditor = new JEditorPane(); + tagTree = new JTree(new TagTreeModel(list)); + + DefaultTreeCellRenderer treeRenderer = new DefaultTreeCellRenderer(); + ClassLoader cldr = this.getClass().getClassLoader(); + java.net.URL imageURL = cldr.getResource("com/jpexs/asdec/action/gui/graphics/class.png"); + ImageIcon leafIcon = new ImageIcon(imageURL); + treeRenderer.setLeafIcon(leafIcon); + tagTree.setCellRenderer(treeRenderer); + + JPanel centerPanel = new JPanel(); + centerPanel.setLayout(new BorderLayout()); + centerPanel.add(new JScrollPane(editor), BorderLayout.CENTER); + centerPanel.add(saveButton, BorderLayout.SOUTH); + + saveButton.addActionListener(this); + saveButton.setActionCommand("SAVEACTION"); + setLayout(new BorderLayout()); + add(splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, new JScrollPane(tagTree), splitPane2 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, centerPanel, new JScrollPane(decompiledEditor))), BorderLayout.CENTER); + editor.setContentType("text/flasm"); + decompiledEditor.setContentType("text/actionscript"); + setSize(640, 480); + tagTree.addTreeSelectionListener(this); + addWindowListener(new WindowAdapter() { + @Override + public void windowClosing(WindowEvent e) { + if (Main.proxyFrame != null) { + if (Main.proxyFrame.isVisible()) return; + } + Main.exit(); + } + }); + View.setWindowIcon(this); + View.centerScreen(this); + + JMenuBar menuBar = new JMenuBar(); + + + JMenu menuFile = new JMenu("File"); + JMenuItem miOpen = new JMenuItem("Open..."); + miOpen.setActionCommand("OPEN"); + miOpen.addActionListener(this); + JMenuItem miSave = new JMenuItem("Save"); + miSave.setActionCommand("SAVE"); + miSave.addActionListener(this); + JMenuItem miSaveAs = new JMenuItem("Save as..."); + miSaveAs.setActionCommand("SAVEAS"); + miSaveAs.addActionListener(this); + JMenuItem miExport = new JMenuItem("Export..."); + miExport.setActionCommand("EXPORT"); + miExport.addActionListener(this); + menuFile.add(miOpen); + menuFile.add(miSave); + menuFile.add(miSaveAs); + menuFile.add(miExport); + menuFile.addSeparator(); + JMenuItem miClose = new JMenuItem("Exit"); + miClose.setActionCommand("EXIT"); + miClose.addActionListener(this); + menuFile.add(miClose); + menuBar.add(menuFile); + + JMenu menuTools = new JMenu("Tools"); + JMenuItem miProxy = new JMenuItem("Proxy"); + miProxy.setActionCommand("SHOWPROXY"); + miProxy.setIcon(new ImageIcon(View.loadImage("com/jpexs/asdec/gui/graphics/proxy16.png"))); + miProxy.addActionListener(this); + menuTools.add(miProxy); + menuBar.add(menuTools); + + setJMenuBar(menuBar); + + setTitle(Main.applicationName + " - " + Main.getFileTitle()); + } + + public void valueChanged(TreeSelectionEvent e) { + Object obj = ((JTree) e.getSource()).getLastSelectedPathComponent(); + if (obj instanceof TagTreeItem) { + obj = ((TagTreeItem) obj).tag; + if (obj instanceof ASMSource) { + editor.setText(((ASMSource) obj).getASMSource(10)); //TODO: Ensure correct version here + decompiledEditor.setText(Highlighting.stripHilights(com.jpexs.asdec.action.Action.actionsToSource(((ASMSource) obj).getActions(), 10))); //TODO:Ensure correct version here + } + } + } + + public void display() { + setVisible(true); + splitPane.setDividerLocation(0.5); + } + + public void actionPerformed(ActionEvent e) { + if (e.getActionCommand().equals("EXIT")) { + System.exit(0); + } + if (e.getActionCommand().equals("SHOWPROXY")) { + Main.showProxy(); + } + if (e.getActionCommand().equals("SAVEACTION")) { + TagTreeItem ti = (TagTreeItem) tagTree.getLastSelectedPathComponent(); + if (ti.tag instanceof ASMSource) { + ASMSource dat = (ASMSource) ti.tag; + try { + dat.setActions(ASMParser.parse(new ByteArrayInputStream(editor.getText().getBytes()), 10)); //TODO:Ensure correct version here + } catch (IOException ex) { + + } catch (ParseException ex) { + JOptionPane.showMessageDialog(this, "" + ex.text + " on line " + ex.line, "Error", JOptionPane.ERROR_MESSAGE); + } + } + } + if (e.getActionCommand().equals("SAVE")) { + try { + Main.saveFile(Main.file); + } catch (IOException ex) { + + } + } + if (e.getActionCommand().equals("SAVEAS")) { + if (Main.saveFileDialog(this)) { + setTitle(Main.applicationName + " - " + Main.getFileTitle()); + } + } + if (e.getActionCommand().equals("OPEN")) { + Main.openFileDialog(); + } + } +} diff --git a/trunk/src/com/jpexs/asdec/action/gui/TagTreeItem.java b/trunk/src/com/jpexs/asdec/action/gui/TagTreeItem.java new file mode 100644 index 000000000..568e3e702 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/action/gui/TagTreeItem.java @@ -0,0 +1,19 @@ +package com.jpexs.asdec.action.gui; + +import java.util.ArrayList; +import java.util.List; + +public class TagTreeItem { + public List subItems; + public Object tag; + + public TagTreeItem(Object tag) { + this.tag = tag; + this.subItems = new ArrayList(); + } + + @Override + public String toString() { + return tag.toString(); + } +} diff --git a/trunk/src/com/jpexs/asdec/action/gui/TagTreeModel.java b/trunk/src/com/jpexs/asdec/action/gui/TagTreeModel.java new file mode 100644 index 000000000..16e003bf2 --- /dev/null +++ b/trunk/src/com/jpexs/asdec/action/gui/TagTreeModel.java @@ -0,0 +1,139 @@ +package com.jpexs.asdec.action.gui; + +import com.jpexs.asdec.tags.*; + +import javax.swing.event.TreeModelListener; +import javax.swing.tree.TreeModel; +import javax.swing.tree.TreePath; +import java.util.ArrayList; +import java.util.List; + +public class TagTreeModel implements TreeModel { + private String root = ""; + private List list = new ArrayList(); + + public TagTreeModel(List list) { + List list2 = new ArrayList(); + list2.addAll(list); + this.list = processTagList(list2); + } + + public List processTagList(List list) { + List ret = new ArrayList(); + int frame = 1; + List frames = new ArrayList(); + + List exportAssetsTags = new ArrayList(); + for (Object t : list) { + if (t instanceof ExportAssetsTag) { + exportAssetsTags.add((ExportAssetsTag) t); + } + if (t instanceof ShowFrameTag) { + TagTreeItem tti = new TagTreeItem("frame" + frame); + + for (int r = ret.size() - 1; r >= 0; r--) { + if (!(ret.get(r).tag instanceof DefineSpriteTag)) { + if (!(ret.get(r).tag instanceof DefineButtonTag)) { + if (!(ret.get(r).tag instanceof DefineButton2Tag)) { + if (!(ret.get(r).tag instanceof DoInitActionTag)) { + tti.subItems.add(ret.get(r)); + ret.remove(r); + } + } + } + } + } + frame++; + frames.add(tti); + } else if (t instanceof ASMSource) { + TagTreeItem tti = new TagTreeItem(t); + ret.add(tti); + } else if (t instanceof Container) { + if (((Container) t).getItemCount() > 0) { + + TagTreeItem tti = new TagTreeItem(t); + List subItems = ((Container) t).getSubItems(); + + tti.subItems = processTagList(subItems); + ret.add(tti); + } + } + + } + ret.addAll(frames); + for (int i = ret.size() - 1; i >= 0; i--) { + if (ret.get(i).tag instanceof DefineSpriteTag) { + ((DefineSpriteTag) ret.get(i).tag).exportAssetsTags = exportAssetsTags; + } + if (ret.get(i).tag instanceof DefineButtonTag) { + ((DefineButtonTag) ret.get(i).tag).exportAssetsTags = exportAssetsTags; + } + if (ret.get(i).tag instanceof DefineButton2Tag) { + ((DefineButton2Tag) ret.get(i).tag).exportAssetsTags = exportAssetsTags; + } + if (ret.get(i).tag instanceof DoInitActionTag) { + ((DoInitActionTag) ret.get(i).tag).exportAssetsTags = exportAssetsTags; + } + if (ret.get(i).tag instanceof ASMSource) { + ASMSource ass = (ASMSource) ret.get(i).tag; + if (ass.containsSource()) continue; + } + if (ret.get(i).subItems.size() == 0) { + ret.remove(i); + } + } + return ret; + } + + + public Object getRoot() { + return root; + } + + public Object getChild(Object parent, int index) { + if (parent == root) { + return list.get(index); + } else { + return ((TagTreeItem) parent).subItems.get(index); + } + } + + public int getChildCount(Object parent) { + if (parent == root) { + return list.size(); + } else { + return ((TagTreeItem) parent).subItems.size(); + } + } + + public boolean isLeaf(Object node) { + return (getChildCount(node) == 0); + } + + public void valueForPathChanged(TreePath path, Object newValue) { + + } + + public int getIndexOfChild(Object parent, Object child) { + if (parent == root) { + for (int t = 0; t < list.size(); t++) { + if (list.get(t) == child) return t; + } + return -1; + } else { + List subTags = ((TagTreeItem) parent).subItems; + for (int t = 0; t < subTags.size(); t++) { + if (subTags.get(t) == child) return t; + } + return -1; + } + } + + public void addTreeModelListener(TreeModelListener l) { + + } + + public void removeTreeModelListener(TreeModelListener l) { + + } +} diff --git a/trunk/src/com/jpexs/asdec/action/gui/graphics/class.png b/trunk/src/com/jpexs/asdec/action/gui/graphics/class.png new file mode 100644 index 0000000000000000000000000000000000000000..1d30295f9451531d9261b3d8f7b870c39f81ac48 GIT binary patch literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPgg4c0N9Sv5=TuaX=x-64!_l=ltB< z)VvY~=c3falGGH1^30M91$R&1fbd2>aiF3|PZ!4!i_?22J90TFa=6q!{JY*JH|yj6 zfX*q}&NYW0w5Y6}a-PjX%~OftSi)|entNxvt{P=&G9*meHo;nK*{e?0_&HiPD$^gX q-*)QwT^Sq33bV?GPp-bd!)P#5MxFcptb0I97(8A5T-G@yGywp%&r_xV literal 0 HcmV?d00001 diff --git a/trunk/src/com/jpexs/asdec/action/parser/ASMParser.java b/trunk/src/com/jpexs/asdec/action/parser/ASMParser.java new file mode 100644 index 000000000..936ae1efd --- /dev/null +++ b/trunk/src/com/jpexs/asdec/action/parser/ASMParser.java @@ -0,0 +1,263 @@ +package com.jpexs.asdec.action.parser; + +import com.jpexs.asdec.action.Action; +import com.jpexs.asdec.action.swf3.*; +import com.jpexs.asdec.action.swf4.*; +import com.jpexs.asdec.action.swf5.*; +import com.jpexs.asdec.action.swf6.*; +import com.jpexs.asdec.action.swf7.*; + +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; + +public class ASMParser { + + public static List parse(List

    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 z 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

    $;Fw&Wqkc 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