diff --git a/CHANGELOG.md b/CHANGELOG.md index a2a94a081..f70082fc8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,9 @@ All notable changes to this project will be documented in this file. ### Added - Placeobject display and edit - raw editor on right side +### Fixed +- AS3 hilight and edit XML based on CData or comment only + ## [14.2.0] - 2021-03-12 ### Added - [#1645] Scrollbar to recent searches dropdown diff --git a/lib/jsyntaxpane-0.9.5.jar b/lib/jsyntaxpane-0.9.5.jar index 8f413a9f8..f4ccc78da 100644 Binary files a/lib/jsyntaxpane-0.9.5.jar and b/lib/jsyntaxpane-0.9.5.jar differ diff --git a/libsrc/ffdec_lib/lexers/actionscript3_script.flex b/libsrc/ffdec_lib/lexers/actionscript3_script.flex index c26d4b760..162c17509 100644 --- a/libsrc/ffdec_lib/lexers/actionscript3_script.flex +++ b/libsrc/ffdec_lib/lexers/actionscript3_script.flex @@ -207,7 +207,7 @@ NamespaceSuffix = "#" {DecIntegerLiteral} RegExp = \/([^\r\n/]|\\\/)+\/[a-z]* -%state STRING, CHARLITERAL,XMLOPENTAG,XMLOPENTAGATTRIB,XMLINSTROPENTAG,XMLINSTRATTRIB,XMLCDATA,XMLCOMMENT,XML,OIDENTIFIER +%state STRING, CHARLITERAL,XMLOPENTAG,XMLOPENTAGATTRIB,XMLINSTROPENTAG,XMLINSTRATTRIB,XMLCDATA,XMLCOMMENT,XML,OIDENTIFIER,XMLCDATAALONE,XMLCOMMENTALONE %% @@ -368,6 +368,12 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]* string.setLength(0); return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_STARTTAG_BEGIN, yytext()); } + {XmlCommentStart} { + string.setLength(0); string.append(yytext() ); yybegin(XMLCOMMENTALONE); + } + {XmlCDataStart} { + string.setLength(0); string.append(yytext() ); yybegin(XMLCDATAALONE); + } "<{" { return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_STARTVARTAG_BEGIN, yytext()); } /* identifiers */ {Identifier} { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); } @@ -412,7 +418,7 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]* string.setLength(0); } return lex(); - } + } {LineTerminator} { string.append(yytext()); yyline++;} {WhiteSpace} { string.append(yytext()); } } @@ -480,7 +486,7 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]* { - {XmlCDataEnd} { + {XmlCDataEnd} { string.append(yytext()); yybegin(XML); String ret = string.toString(); @@ -491,8 +497,20 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]* [^] { string.append(yytext()); } } + { + {XmlCDataEnd} { + string.append(yytext()); + yybegin(YYINITIAL); + String ret = string.toString(); + string.setLength(0); + return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_CDATA, ret); + } + {LineTerminator} { string.append(yytext()); yyline++;} + [^] { string.append(yytext()); } +} + { - {XmlCommentEnd} { + {XmlCommentEnd} { string.append(yytext()); yybegin(XML); String ret = string.toString(); @@ -503,8 +521,20 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]* [^] { string.append(yytext());} } + { + {XmlCommentEnd} { + string.append(yytext()); + yybegin(YYINITIAL); + String ret = string.toString(); + string.setLength(0); + return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_COMMENT, ret); + } + {LineTerminator} { string.append(yytext()); yyline++;} + [^] { string.append(yytext());} +} + { - {XmlCDataStart} { + {XmlCDataStart} { String ret = string.toString(); string.setLength(0); string.append(yytext() ); yybegin(XMLCDATA); if (!ret.isEmpty()) return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, ret); } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScript3Parser.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScript3Parser.java index 4fac0cc67..5acf22ea4 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScript3Parser.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScript3Parser.java @@ -2241,6 +2241,8 @@ public class ActionScript3Parser { break; case XML_STARTTAG_BEGIN: + case XML_CDATA: + case XML_COMMENT: lexer.pushback(s); ret = xml(allOpenedNamespaces, thisType, pkg, needsActivation, importedClasses, openedNamespaces, registerVars, inFunction, inMethod, variables); break; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScriptLexer.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScriptLexer.java index 8eeff77f8..53718f2c9 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScriptLexer.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScriptLexer.java @@ -1,18 +1,21 @@ +/* The following code was generated by JFlex 1.6.0 */ + /* - * Copyright (C) 2010-2021 JPEXS, All rights reserved. - * + * Copyright (C) 2010-2016 JPEXS, All rights reserved. + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 3.0 of the License, or (at your option) any later version. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public - * License along with this library. */ + * License along with this library. + */ package com.jpexs.decompiler.flash.abc.avm2.parser.script; import com.jpexs.decompiler.flash.abc.avm2.parser.AVM2ParseException; import java.io.StringReader; @@ -24,7 +27,7 @@ import java.util.Stack; /** * This class is a scanner generated by * JFlex 1.6.0 - * from the specification file D:/Dropbox/Programovani/JavaSE/FFDec/libsrc/ffdec_lib/lexers/actionscript3_script.flex + * from the specification file C:/Dropbox/Programovani/JavaSE/FFDec/libsrc/ffdec_lib/lexers/actionscript3_script.flex */ public final class ActionScriptLexer { @@ -46,6 +49,8 @@ public final class ActionScriptLexer { public static final int XMLCOMMENT = 16; public static final int XML = 18; public static final int OIDENTIFIER = 20; + public static final int XMLCDATAALONE = 22; + public static final int XMLCOMMENTALONE = 24; /** * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l @@ -55,7 +60,7 @@ public final class ActionScriptLexer { */ private static final int ZZ_LEXSTATE[] = { 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, - 8, 8, 9, 9, 10, 10 + 8, 8, 9, 9, 10, 10, 11, 11, 12, 12 }; /** @@ -231,44 +236,46 @@ public final class ActionScriptLexer { private static final int [] ZZ_ACTION = zzUnpackAction(); private static final String ZZ_ACTION_PACKED_0 = - "\13\0\1\1\2\2\1\3\1\4\1\5\1\6\1\7"+ + "\15\0\1\1\2\2\1\3\1\4\1\5\1\6\1\7"+ "\1\10\1\11\1\12\1\13\1\14\1\15\1\16\1\17"+ "\1\20\1\21\1\22\1\23\1\15\2\6\1\24\1\25"+ "\1\1\21\6\1\26\1\27\1\30\1\31\1\32\1\33"+ "\1\34\1\35\1\36\1\37\1\40\1\41\1\42\2\43"+ "\1\44\1\1\1\42\2\45\2\46\1\42\2\1\1\47"+ "\1\50\1\1\1\51\2\1\1\52\1\1\1\53\2\42"+ - "\2\54\2\42\1\55\1\42\1\1\1\56\1\0\1\3"+ - "\1\0\1\57\1\0\1\60\1\61\1\62\1\63\1\64"+ - "\1\65\1\66\1\67\1\70\1\71\1\72\1\73\1\74"+ - "\1\75\1\76\1\0\1\77\1\63\1\100\1\0\2\100"+ - "\7\6\1\101\1\102\1\0\2\103\2\6\1\104\16\6"+ - "\1\105\1\106\1\107\4\6\1\110\13\6\1\111\1\112"+ - "\1\113\1\114\1\115\1\116\1\117\1\120\1\121\1\117"+ - "\1\122\1\123\1\124\1\125\1\126\1\127\1\117\1\130"+ - "\1\0\1\131\1\0\1\132\1\0\1\133\1\134\1\0"+ - "\1\135\4\0\1\136\2\0\1\137\2\140\1\141\1\140"+ - "\1\142\2\3\2\0\1\142\2\0\1\142\1\143\1\144"+ - "\1\145\1\146\1\147\1\0\1\63\1\150\2\151\1\100"+ - "\1\6\1\152\5\6\1\153\6\6\1\154\4\6\1\155"+ - "\4\6\1\156\6\6\1\157\12\6\1\160\1\6\1\161"+ - "\1\6\1\162\3\0\1\135\1\163\1\164\1\0\1\165"+ - "\2\0\1\166\1\167\2\0\1\3\1\142\1\170\1\151"+ - "\1\100\4\6\1\171\1\172\2\6\1\173\12\6\1\174"+ - "\1\175\1\6\1\176\11\6\1\177\5\6\1\200\1\6"+ - "\1\201\2\0\1\202\1\203\1\0\1\151\1\100\1\204"+ - "\1\205\2\6\1\206\1\6\1\207\1\210\1\6\1\211"+ - "\1\6\1\212\4\6\1\213\11\6\1\214\5\6\1\0"+ - "\1\151\1\100\3\6\1\215\1\6\1\216\1\217\1\6"+ - "\1\220\1\6\1\221\3\6\1\222\3\6\1\223\4\6"+ - "\1\224\1\6\1\0\1\151\1\100\1\225\1\6\1\226"+ - "\10\6\1\227\1\230\1\6\1\231\1\232\1\6\1\0"+ - "\1\151\1\100\1\233\1\234\1\235\3\6\1\236\3\6"+ - "\1\237\1\0\1\151\1\100\1\240\1\6\1\241\1\6"+ - "\1\242\1\243\1\244\1\151\1\100\1\245\1\246\6\100"; + "\2\54\2\42\1\55\1\42\1\1\1\56\2\42\1\0"+ + "\1\3\1\0\1\57\1\0\1\60\1\61\1\62\1\63"+ + "\1\64\1\65\1\66\1\0\1\67\1\70\1\71\1\72"+ + "\1\73\1\74\1\75\1\76\1\0\1\77\1\63\1\100"+ + "\1\0\2\100\7\6\1\101\1\102\1\0\2\103\2\6"+ + "\1\104\16\6\1\105\1\106\1\107\4\6\1\110\13\6"+ + "\1\111\1\112\1\113\1\114\1\115\1\116\1\117\1\120"+ + "\1\121\1\117\1\122\1\123\1\124\1\125\1\126\1\127"+ + "\1\117\1\130\1\0\1\131\1\0\1\132\1\0\1\133"+ + "\1\134\1\0\1\135\4\0\1\136\2\0\1\137\2\140"+ + "\1\141\1\140\2\0\1\142\2\3\2\0\1\142\2\0"+ + "\1\142\1\143\1\144\2\0\1\145\1\146\1\147\1\0"+ + "\1\63\1\150\2\151\1\100\1\6\1\152\5\6\1\153"+ + "\6\6\1\154\4\6\1\155\4\6\1\156\6\6\1\157"+ + "\12\6\1\160\1\6\1\161\1\6\1\162\3\0\1\135"+ + "\1\163\1\164\1\0\1\165\2\0\1\166\1\167\1\170"+ + "\1\171\2\0\1\3\1\142\1\172\1\0\1\173\1\151"+ + "\1\100\4\6\1\174\1\175\2\6\1\176\12\6\1\177"+ + "\1\200\1\6\1\201\11\6\1\202\5\6\1\203\1\6"+ + "\1\204\2\0\1\205\1\206\2\0\1\151\1\100\1\207"+ + "\1\210\2\6\1\211\1\6\1\212\1\213\1\6\1\214"+ + "\1\6\1\215\4\6\1\216\11\6\1\217\5\6\2\0"+ + "\1\151\1\100\3\6\1\220\1\6\1\221\1\222\1\6"+ + "\1\223\1\6\1\224\3\6\1\225\3\6\1\226\4\6"+ + "\1\227\1\6\2\0\1\151\1\100\1\230\1\6\1\231"+ + "\10\6\1\232\1\233\1\6\1\234\1\235\1\6\2\0"+ + "\1\151\1\100\1\236\1\237\1\240\3\6\1\241\3\6"+ + "\1\242\1\0\1\243\1\151\1\100\1\244\1\6\1\245"+ + "\1\6\1\246\1\247\1\250\1\151\1\100\1\251\1\252"+ + "\6\100"; private static int [] zzUnpackAction() { - int [] result = new int[460]; + int [] result = new int[478]; int offset = 0; offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); return result; @@ -294,66 +301,68 @@ public final class ActionScriptLexer { private static final String ZZ_ROWMAP_PACKED_0 = "\0\0\0\115\0\232\0\347\0\u0134\0\u0181\0\u01ce\0\u021b"+ - "\0\u0268\0\u02b5\0\u0302\0\u034f\0\u039c\0\u034f\0\u03e9\0\u0436"+ + "\0\u0268\0\u02b5\0\u0302\0\u034f\0\u039c\0\u03e9\0\u0436\0\u03e9"+ "\0\u0483\0\u04d0\0\u051d\0\u056a\0\u05b7\0\u0604\0\u0651\0\u069e"+ - "\0\u06eb\0\u034f\0\u034f\0\u034f\0\u0738\0\u034f\0\u034f\0\u0785"+ - "\0\u07d2\0\u081f\0\u086c\0\u08b9\0\u0906\0\u0953\0\u09a0\0\u09ed"+ + "\0\u06eb\0\u0738\0\u0785\0\u03e9\0\u03e9\0\u03e9\0\u07d2\0\u03e9"+ + "\0\u03e9\0\u081f\0\u086c\0\u08b9\0\u0906\0\u0953\0\u09a0\0\u09ed"+ "\0\u0a3a\0\u0a87\0\u0ad4\0\u0b21\0\u0b6e\0\u0bbb\0\u0c08\0\u0c55"+ - "\0\u0ca2\0\u0cef\0\u0d3c\0\u0d89\0\u0dd6\0\u0e23\0\u034f\0\u034f"+ - "\0\u034f\0\u034f\0\u034f\0\u034f\0\u034f\0\u0e70\0\u0ebd\0\u0f0a"+ - "\0\u0f57\0\u034f\0\u0fa4\0\u0ff1\0\u034f\0\u034f\0\u103e\0\u108b"+ - "\0\u10d8\0\u034f\0\u1125\0\u034f\0\u1172\0\u11bf\0\u120c\0\u034f"+ - "\0\u034f\0\u1259\0\u034f\0\u12a6\0\u12f3\0\u034f\0\u1340\0\u034f"+ - "\0\u034f\0\u138d\0\u13da\0\u034f\0\u1427\0\u1474\0\u034f\0\u14c1"+ - "\0\u150e\0\u034f\0\u155b\0\u15a8\0\u15f5\0\u155b\0\u1642\0\u034f"+ - "\0\u168f\0\u034f\0\u16dc\0\u034f\0\u1729\0\u1776\0\u034f\0\u034f"+ - "\0\u17c3\0\u034f\0\u034f\0\u1810\0\u034f\0\u034f\0\u185d\0\u18aa"+ - "\0\u18f7\0\u1944\0\u1991\0\u19de\0\u1a2b\0\u1a78\0\u1ac5\0\u1b12"+ - "\0\u1b5f\0\u1bac\0\u1bf9\0\u1c46\0\u034f\0\u034f\0\u1c93\0\u1ce0"+ - "\0\u034f\0\u1d2d\0\u1d7a\0\u04d0\0\u1dc7\0\u1e14\0\u1e61\0\u1eae"+ - "\0\u1efb\0\u1f48\0\u1f95\0\u1fe2\0\u202f\0\u207c\0\u20c9\0\u2116"+ - "\0\u2163\0\u21b0\0\u04d0\0\u04d0\0\u21fd\0\u224a\0\u2297\0\u22e4"+ - "\0\u2331\0\u04d0\0\u237e\0\u23cb\0\u2418\0\u2465\0\u24b2\0\u24ff"+ - "\0\u254c\0\u2599\0\u25e6\0\u2633\0\u2680\0\u034f\0\u034f\0\u034f"+ - "\0\u034f\0\u034f\0\u034f\0\u034f\0\u034f\0\u034f\0\u26cd\0\u034f"+ - "\0\u034f\0\u034f\0\u034f\0\u034f\0\u034f\0\u271a\0\u034f\0\u120c"+ - "\0\u034f\0\u1259\0\u034f\0\u12a6\0\u034f\0\u034f\0\u1340\0\u2767"+ - "\0\u27b4\0\u2801\0\u284e\0\u289b\0\u28e8\0\u2935\0\u2982\0\u034f"+ - "\0\u034f\0\u26cd\0\u034f\0\u271a\0\u29cf\0\u2a1c\0\u034f\0\u2a69"+ - "\0\u2ab6\0\u2b03\0\u2b50\0\u2b9d\0\u2bea\0\u034f\0\u034f\0\u034f"+ - "\0\u2c37\0\u034f\0\u2c84\0\u2c84\0\u034f\0\u2cd1\0\u1991\0\u2d1e"+ - "\0\u2d6b\0\u04d0\0\u2db8\0\u2e05\0\u2e52\0\u2e9f\0\u2eec\0\u2f39"+ - "\0\u2f86\0\u2fd3\0\u3020\0\u306d\0\u30ba\0\u3107\0\u04d0\0\u3154"+ - "\0\u31a1\0\u31ee\0\u323b\0\u04d0\0\u3288\0\u32d5\0\u3322\0\u336f"+ - "\0\u04d0\0\u33bc\0\u3409\0\u3456\0\u34a3\0\u34f0\0\u353d\0\u04d0"+ - "\0\u358a\0\u35d7\0\u3624\0\u3671\0\u36be\0\u370b\0\u3758\0\u37a5"+ - "\0\u37f2\0\u383f\0\u04d0\0\u388c\0\u04d0\0\u38d9\0\u04d0\0\u3926"+ - "\0\u3973\0\u2767\0\u034f\0\u034f\0\u034f\0\u39c0\0\u034f\0\u3a0d"+ - "\0\u3a5a\0\u3aa7\0\u034f\0\u3af4\0\u3b41\0\u29cf\0\u3b8e\0\u034f"+ - "\0\u3bdb\0\u3c28\0\u3c75\0\u3cc2\0\u3d0f\0\u3d5c\0\u04d0\0\u04d0"+ - "\0\u3da9\0\u3df6\0\u04d0\0\u3e43\0\u3e90\0\u3edd\0\u3f2a\0\u3f77"+ - "\0\u3fc4\0\u4011\0\u405e\0\u40ab\0\u40f8\0\u04d0\0\u04d0\0\u4145"+ - "\0\u04d0\0\u4192\0\u41df\0\u422c\0\u4279\0\u42c6\0\u4313\0\u4360"+ - "\0\u43ad\0\u43fa\0\u04d0\0\u4447\0\u4494\0\u44e1\0\u452e\0\u457b"+ - "\0\u04d0\0\u45c8\0\u034f\0\u26cd\0\u4615\0\u034f\0\u034f\0\u4662"+ - "\0\u46af\0\u46fc\0\u04d0\0\u4749\0\u4796\0\u47e3\0\u04d0\0\u4830"+ - "\0\u04d0\0\u04d0\0\u487d\0\u04d0\0\u48ca\0\u04d0\0\u4917\0\u4964"+ - "\0\u49b1\0\u49fe\0\u04d0\0\u4a4b\0\u4a98\0\u4ae5\0\u4b32\0\u4b7f"+ - "\0\u4bcc\0\u4c19\0\u4c66\0\u4cb3\0\u04d0\0\u4d00\0\u4d4d\0\u4d9a"+ - "\0\u4de7\0\u4e34\0\u4e81\0\u4ece\0\u4f1b\0\u4f68\0\u4fb5\0\u5002"+ - "\0\u04d0\0\u504f\0\u04d0\0\u04d0\0\u509c\0\u04d0\0\u50e9\0\u04d0"+ - "\0\u5136\0\u5183\0\u51d0\0\u04d0\0\u521d\0\u526a\0\u52b7\0\u04d0"+ - "\0\u5304\0\u5351\0\u539e\0\u53eb\0\u04d0\0\u5438\0\u5485\0\u54d2"+ - "\0\u551f\0\u04d0\0\u556c\0\u04d0\0\u55b9\0\u5606\0\u5653\0\u56a0"+ - "\0\u56ed\0\u573a\0\u5787\0\u57d4\0\u04d0\0\u04d0\0\u5821\0\u04d0"+ - "\0\u04d0\0\u586e\0\u58bb\0\u5908\0\u5955\0\u04d0\0\u04d0\0\u04d0"+ - "\0\u59a2\0\u59ef\0\u5a3c\0\u04d0\0\u5a89\0\u5ad6\0\u5b23\0\u04d0"+ - "\0\u5b70\0\u5bbd\0\u5c0a\0\u04d0\0\u5c57\0\u04d0\0\u5ca4\0\u04d0"+ - "\0\u04d0\0\u034f\0\u034f\0\u5cf1\0\u04d0\0\u04d0\0\u5d3e\0\u5d8b"+ - "\0\u5dd8\0\u5e25\0\u5e72\0\u18f7"; + "\0\u0ca2\0\u0cef\0\u0d3c\0\u0d89\0\u0dd6\0\u0e23\0\u0e70\0\u0ebd"+ + "\0\u03e9\0\u03e9\0\u03e9\0\u03e9\0\u03e9\0\u03e9\0\u03e9\0\u0f0a"+ + "\0\u0f57\0\u0fa4\0\u0ff1\0\u03e9\0\u103e\0\u108b\0\u03e9\0\u03e9"+ + "\0\u10d8\0\u1125\0\u1172\0\u03e9\0\u11bf\0\u03e9\0\u120c\0\u1259"+ + "\0\u12a6\0\u03e9\0\u03e9\0\u12f3\0\u03e9\0\u1340\0\u138d\0\u03e9"+ + "\0\u13da\0\u03e9\0\u03e9\0\u1427\0\u1474\0\u03e9\0\u14c1\0\u150e"+ + "\0\u03e9\0\u155b\0\u15a8\0\u03e9\0\u15f5\0\u1642\0\u168f\0\u16dc"+ + "\0\u1729\0\u168f\0\u1776\0\u03e9\0\u17c3\0\u03e9\0\u1810\0\u03e9"+ + "\0\u185d\0\u18aa\0\u18f7\0\u03e9\0\u03e9\0\u1944\0\u03e9\0\u03e9"+ + "\0\u1991\0\u03e9\0\u03e9\0\u19de\0\u1a2b\0\u1a78\0\u1ac5\0\u1b12"+ + "\0\u1b5f\0\u1bac\0\u1bf9\0\u1c46\0\u1c93\0\u1ce0\0\u1d2d\0\u1d7a"+ + "\0\u1dc7\0\u03e9\0\u03e9\0\u1e14\0\u1e61\0\u03e9\0\u1eae\0\u1efb"+ + "\0\u056a\0\u1f48\0\u1f95\0\u1fe2\0\u202f\0\u207c\0\u20c9\0\u2116"+ + "\0\u2163\0\u21b0\0\u21fd\0\u224a\0\u2297\0\u22e4\0\u2331\0\u056a"+ + "\0\u056a\0\u237e\0\u23cb\0\u2418\0\u2465\0\u24b2\0\u056a\0\u24ff"+ + "\0\u254c\0\u2599\0\u25e6\0\u2633\0\u2680\0\u26cd\0\u271a\0\u2767"+ + "\0\u27b4\0\u2801\0\u03e9\0\u03e9\0\u03e9\0\u03e9\0\u03e9\0\u03e9"+ + "\0\u03e9\0\u03e9\0\u03e9\0\u284e\0\u03e9\0\u03e9\0\u03e9\0\u03e9"+ + "\0\u03e9\0\u03e9\0\u289b\0\u03e9\0\u12a6\0\u03e9\0\u12f3\0\u03e9"+ + "\0\u1340\0\u03e9\0\u03e9\0\u13da\0\u28e8\0\u2935\0\u2982\0\u29cf"+ + "\0\u2a1c\0\u2a69\0\u2ab6\0\u2b03\0\u03e9\0\u03e9\0\u284e\0\u03e9"+ + "\0\u289b\0\u2b50\0\u2b9d\0\u2bea\0\u2c37\0\u03e9\0\u2c84\0\u2cd1"+ + "\0\u2d1e\0\u2d6b\0\u2db8\0\u2e05\0\u03e9\0\u03e9\0\u2e52\0\u2e9f"+ + "\0\u03e9\0\u2eec\0\u03e9\0\u2f39\0\u2f39\0\u03e9\0\u2f86\0\u1b12"+ + "\0\u2fd3\0\u3020\0\u056a\0\u306d\0\u30ba\0\u3107\0\u3154\0\u31a1"+ + "\0\u31ee\0\u323b\0\u3288\0\u32d5\0\u3322\0\u336f\0\u33bc\0\u056a"+ + "\0\u3409\0\u3456\0\u34a3\0\u34f0\0\u056a\0\u353d\0\u358a\0\u35d7"+ + "\0\u3624\0\u056a\0\u3671\0\u36be\0\u370b\0\u3758\0\u37a5\0\u37f2"+ + "\0\u056a\0\u383f\0\u388c\0\u38d9\0\u3926\0\u3973\0\u39c0\0\u3a0d"+ + "\0\u3a5a\0\u3aa7\0\u3af4\0\u056a\0\u3b41\0\u056a\0\u3b8e\0\u056a"+ + "\0\u3bdb\0\u3c28\0\u28e8\0\u03e9\0\u03e9\0\u03e9\0\u3c75\0\u03e9"+ + "\0\u3cc2\0\u3d0f\0\u3d5c\0\u03e9\0\u03e9\0\u03e9\0\u3da9\0\u3df6"+ + "\0\u2bea\0\u3e43\0\u03e9\0\u3e90\0\u03e9\0\u3edd\0\u3f2a\0\u3f77"+ + "\0\u3fc4\0\u4011\0\u405e\0\u056a\0\u056a\0\u40ab\0\u40f8\0\u056a"+ + "\0\u4145\0\u4192\0\u41df\0\u422c\0\u4279\0\u42c6\0\u4313\0\u4360"+ + "\0\u43ad\0\u43fa\0\u056a\0\u056a\0\u4447\0\u056a\0\u4494\0\u44e1"+ + "\0\u452e\0\u457b\0\u45c8\0\u4615\0\u4662\0\u46af\0\u46fc\0\u056a"+ + "\0\u4749\0\u4796\0\u47e3\0\u4830\0\u487d\0\u056a\0\u48ca\0\u03e9"+ + "\0\u284e\0\u4917\0\u03e9\0\u03e9\0\u4964\0\u49b1\0\u49fe\0\u4a4b"+ + "\0\u056a\0\u4a98\0\u4ae5\0\u4b32\0\u056a\0\u4b7f\0\u056a\0\u056a"+ + "\0\u4bcc\0\u056a\0\u4c19\0\u056a\0\u4c66\0\u4cb3\0\u4d00\0\u4d4d"+ + "\0\u056a\0\u4d9a\0\u4de7\0\u4e34\0\u4e81\0\u4ece\0\u4f1b\0\u4f68"+ + "\0\u4fb5\0\u5002\0\u056a\0\u504f\0\u509c\0\u50e9\0\u5136\0\u5183"+ + "\0\u51d0\0\u521d\0\u526a\0\u52b7\0\u5304\0\u5351\0\u539e\0\u056a"+ + "\0\u53eb\0\u056a\0\u056a\0\u5438\0\u056a\0\u5485\0\u056a\0\u54d2"+ + "\0\u551f\0\u556c\0\u056a\0\u55b9\0\u5606\0\u5653\0\u056a\0\u56a0"+ + "\0\u56ed\0\u573a\0\u5787\0\u056a\0\u57d4\0\u5821\0\u586e\0\u58bb"+ + "\0\u5908\0\u056a\0\u5955\0\u056a\0\u59a2\0\u59ef\0\u5a3c\0\u5a89"+ + "\0\u5ad6\0\u5b23\0\u5b70\0\u5bbd\0\u056a\0\u056a\0\u5c0a\0\u056a"+ + "\0\u056a\0\u5c57\0\u5ca4\0\u5cf1\0\u5d3e\0\u5d8b\0\u056a\0\u056a"+ + "\0\u056a\0\u5dd8\0\u5e25\0\u5e72\0\u056a\0\u5ebf\0\u5f0c\0\u5f59"+ + "\0\u056a\0\u5fa6\0\u03e9\0\u5ff3\0\u6040\0\u056a\0\u608d\0\u056a"+ + "\0\u60da\0\u056a\0\u056a\0\u03e9\0\u03e9\0\u6127\0\u056a\0\u056a"+ + "\0\u6174\0\u61c1\0\u620e\0\u625b\0\u62a8\0\u1a78"; private static int [] zzUnpackRowMap() { - int [] result = new int[460]; + int [] result = new int[478]; int offset = 0; offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); return result; @@ -376,434 +385,438 @@ public final class ActionScriptLexer { private static final int [] ZZ_TRANS = zzUnpackTrans(); private static final String ZZ_TRANS_PACKED_0 = - "\1\14\1\15\1\16\1\17\1\20\1\21\1\22\1\14"+ - "\1\22\1\23\1\24\1\17\1\25\1\26\1\27\1\30"+ - "\2\22\1\31\1\14\1\32\1\33\4\22\1\34\1\35"+ - "\1\36\1\37\1\40\2\22\1\41\2\31\1\22\1\42"+ - "\1\43\1\14\1\44\1\45\1\46\1\47\1\50\1\22"+ - "\1\51\1\52\1\53\1\54\1\55\1\56\1\57\1\60"+ - "\1\22\1\61\1\22\1\62\2\22\1\63\1\64\1\65"+ - "\1\66\1\67\1\70\1\71\1\72\1\73\1\74\1\75"+ - "\1\76\1\77\1\100\1\101\1\102\1\14\1\103\1\104"+ - "\1\105\31\103\1\106\12\103\1\107\45\103\1\110\1\111"+ - "\1\112\32\110\1\106\11\110\1\107\45\110\1\14\1\113"+ - "\1\114\1\115\1\116\3\14\1\117\2\14\1\115\2\14"+ - "\1\120\3\117\4\14\4\117\5\14\3\117\2\14\2\117"+ - "\4\14\26\117\2\14\1\121\46\14\1\122\45\14\1\123"+ - "\13\14\1\113\1\114\1\115\4\14\1\124\2\14\1\115"+ - "\3\14\3\124\2\14\1\125\1\14\4\124\5\14\3\124"+ - "\2\14\2\124\4\14\26\124\2\14\1\126\46\14\1\127"+ - "\45\14\1\130\12\14\1\131\1\113\1\114\27\131\1\132"+ - "\63\131\1\133\1\134\12\131\1\135\100\131\1\113\1\114"+ - "\7\131\1\136\67\131\1\137\12\131\1\140\1\111\1\112"+ - "\44\140\1\141\1\142\44\140\117\0\1\16\115\0\1\17"+ - "\7\0\1\17\101\0\1\143\2\0\1\143\1\144\1\145"+ - "\25\143\1\146\13\143\1\147\45\143\33\0\1\150\67\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\4\0"+ - "\26\22\26\0\1\151\1\152\7\0\1\153\13\0\1\153"+ - "\3\0\2\153\34\0\1\154\24\0\1\155\1\0\1\156"+ - "\4\0\3\155\4\0\4\155\1\0\1\157\3\0\3\155"+ - "\2\0\2\155\4\0\26\155\2\0\1\160\45\0\1\161"+ - "\76\0\1\162\15\0\1\163\77\0\1\164\14\0\1\165"+ - "\100\0\1\166\106\0\1\153\10\0\1\31\13\0\1\31"+ - "\3\0\2\31\2\167\102\0\1\170\72\0\1\153\10\0"+ - "\1\171\13\0\1\172\2\173\1\0\1\174\1\175\2\167"+ - "\55\0\3\22\7\0\3\22\3\0\4\22\4\0\10\22"+ - "\4\0\2\22\1\176\3\22\1\177\2\22\1\200\1\201"+ - "\13\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\1\22\1\202\6\22\4\0\2\22\1\203\11\22\1\204"+ - "\11\22\50\0\1\205\12\0\1\206\116\0\1\207\66\0"+ - "\1\210\13\0\1\211\3\0\2\210\57\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\10\22\4\0\1\22\1\212"+ - "\24\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\7\22\1\213\4\0\26\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\10\22\4\0\5\22\1\214\20\22"+ - "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\10\22"+ - "\4\0\2\22\1\215\3\22\1\216\5\22\1\217\11\22"+ - "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\7\22"+ - "\1\220\4\0\10\22\1\221\1\22\1\222\2\22\1\223"+ - "\10\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\10\22\4\0\22\22\1\224\3\22\23\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\7\22\1\225\4\0\2\22"+ - "\1\226\7\22\1\227\13\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\10\22\4\0\1\22\1\230\14\22"+ - "\1\231\1\22\1\232\5\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\3\22\1\233\4\22\4\0\5\22"+ - "\1\234\1\22\1\235\11\22\1\236\4\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\4\0\5\22"+ - "\1\237\1\22\1\240\16\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\7\22\1\241\4\0\6\22\1\242"+ - "\11\22\1\243\5\22\23\0\3\22\7\0\3\22\3\0"+ - "\4\22\4\0\10\22\4\0\11\22\1\244\4\22\1\245"+ - "\7\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\10\22\4\0\1\22\1\246\1\247\7\22\1\250\13\22"+ - "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\10\22"+ - "\4\0\2\22\1\251\3\22\1\252\17\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\7\22\1\253\4\0"+ - "\26\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\10\22\4\0\7\22\1\254\16\22\23\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\10\22\4\0\2\22\1\255"+ - "\23\22\50\0\1\256\53\0\1\257\40\0\1\260\54\0"+ - "\1\261\37\0\1\262\114\0\1\263\61\0\1\103\2\0"+ - "\31\103\1\0\12\103\1\0\45\103\2\0\1\105\112\0"+ - "\1\264\3\0\30\264\1\265\1\266\1\264\1\267\1\264"+ - "\1\270\5\264\1\271\2\264\1\272\1\273\5\264\1\274"+ - "\1\275\1\264\1\276\27\264\1\0\1\110\2\0\32\110"+ - "\1\0\11\110\1\0\45\110\2\0\1\112\114\0\1\114"+ - "\115\0\1\115\7\0\1\115\117\0\1\277\106\0\2\300"+ - "\3\0\1\300\1\0\5\300\2\0\4\300\1\0\1\301"+ - "\2\0\10\300\4\0\26\300\15\0\1\302\2\0\31\302"+ - "\1\303\60\302\10\0\2\304\3\0\1\304\1\0\5\304"+ - "\2\0\4\304\1\0\1\305\2\0\10\304\4\0\26\304"+ - "\33\0\1\306\76\0\1\307\2\0\31\307\1\310\1\311"+ - "\57\307\32\0\1\312\64\0\1\134\127\0\1\313\103\0"+ - "\1\314\3\0\1\315\3\0\1\316\2\0\3\315\2\0"+ - "\1\317\1\0\4\315\5\0\3\315\2\0\2\315\4\0"+ - "\26\315\2\0\1\320\12\0\1\140\2\0\44\140\2\0"+ - "\44\140\1\321\3\0\33\321\1\322\1\321\1\270\5\321"+ - "\1\271\1\323\1\321\1\272\1\273\5\321\1\274\1\275"+ - "\1\321\1\324\27\321\1\0\1\143\2\0\1\143\1\325"+ - "\42\143\1\147\45\143\1\144\1\326\1\327\112\144\1\330"+ - "\2\331\1\330\1\332\1\333\41\330\1\334\45\330\1\143"+ - "\2\0\1\143\1\335\42\143\1\147\45\143\11\0\1\336"+ - "\125\0\1\153\13\0\1\153\3\0\2\153\2\167\57\0"+ - "\2\155\3\0\1\155\1\0\5\155\2\0\4\155\4\0"+ - "\10\155\4\0\26\155\50\0\1\337\114\0\1\340\77\0"+ - "\1\341\14\0\1\342\76\0\1\343\4\0\1\344\13\0"+ - "\1\344\3\0\2\344\2\0\1\343\101\0\1\345\72\0"+ - "\1\153\10\0\1\171\13\0\1\171\3\0\2\171\2\167"+ - "\60\0\1\153\10\0\1\171\13\0\1\172\3\0\1\174"+ - "\1\175\2\167\67\0\1\346\1\0\1\346\3\0\3\346"+ - "\5\0\1\347\2\0\5\346\4\0\1\346\1\0\1\346"+ - "\1\0\1\346\6\0\1\346\40\0\1\153\10\0\1\171"+ - "\13\0\1\175\3\0\2\175\2\167\60\0\1\153\10\0"+ - "\1\171\13\0\1\350\3\0\2\350\2\167\55\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\4\0\14\22"+ - "\1\351\11\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\10\22\4\0\1\22\1\352\24\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\4\0\7\22"+ - "\1\353\16\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\10\22\4\0\7\22\1\354\16\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\4\0\10\22"+ - "\1\355\15\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\10\22\4\0\4\22\1\356\21\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\4\0\5\22"+ - "\1\357\20\22\23\0\1\360\1\0\1\360\7\0\2\360"+ - "\4\0\4\360\5\0\3\360\2\0\2\360\4\0\26\360"+ - "\37\0\1\210\13\0\1\210\3\0\2\210\57\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\7\22\1\361\4\0"+ - "\26\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\10\22\4\0\10\22\1\362\15\22\23\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\10\22\4\0\5\22\1\363"+ - "\2\22\1\364\15\22\23\0\3\22\7\0\3\22\3\0"+ - "\4\22\4\0\10\22\4\0\7\22\1\365\16\22\23\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\4\0"+ - "\2\22\1\366\23\22\23\0\3\22\7\0\3\22\3\0"+ - "\4\22\4\0\10\22\4\0\10\22\1\367\15\22\23\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\4\0"+ - "\2\22\1\370\23\22\23\0\3\22\7\0\3\22\3\0"+ - "\4\22\4\0\10\22\4\0\17\22\1\371\6\22\23\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\4\0"+ - "\11\22\1\372\14\22\23\0\3\22\7\0\3\22\3\0"+ - "\4\22\4\0\7\22\1\373\4\0\26\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\4\0\15\22"+ - "\1\374\10\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\10\22\4\0\10\22\1\375\10\22\1\376\4\22"+ - "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\10\22"+ - "\4\0\14\22\1\377\11\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\10\22\4\0\12\22\1\u0100\5\22"+ - "\1\u0101\5\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\10\22\4\0\1\22\1\u0102\7\22\1\u0103\14\22"+ - "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\10\22"+ - "\4\0\17\22\1\u0104\6\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\10\22\4\0\5\22\1\u0105\2\22"+ - "\1\u0106\15\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\10\22\4\0\17\22\1\u0107\6\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\7\22\1\u0108\4\0"+ - "\26\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\10\22\4\0\13\22\1\u0109\12\22\23\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\3\22\1\u010a\4\22\4\0"+ - "\14\22\1\u010b\11\22\23\0\3\22\7\0\3\22\3\0"+ - "\4\22\4\0\10\22\4\0\7\22\1\u010c\16\22\23\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\4\0"+ - "\10\22\1\u010d\15\22\23\0\3\22\7\0\3\22\3\0"+ - "\4\22\4\0\10\22\4\0\11\22\1\u010e\14\22\23\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\4\0"+ - "\6\22\1\u010f\2\22\1\u0110\14\22\23\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\10\22\4\0\4\22\1\u0111"+ - "\21\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\10\22\4\0\1\u0112\25\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\10\22\4\0\1\22\1\u0113\24\22"+ - "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\10\22"+ - "\4\0\11\22\1\u0114\14\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\10\22\4\0\10\22\1\u0115\15\22"+ - "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\3\22"+ - "\1\u0116\4\22\4\0\26\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\10\22\4\0\25\22\1\u0117\35\0"+ - "\1\u0118\1\0\1\u0118\3\0\3\u0118\5\0\1\u0118\2\0"+ - "\5\u0118\4\0\1\u0118\1\0\1\u0118\1\0\1\u0118\6\0"+ - "\1\u0118\47\0\1\u0119\1\0\1\u0119\3\0\3\u0119\5\0"+ - "\1\u0119\2\0\5\u0119\4\0\1\u0119\1\0\1\u0119\1\0"+ - "\1\u0119\6\0\1\u0119\27\0\1\u011a\2\0\31\u011a\1\310"+ - "\1\0\57\u011a\1\311\2\0\31\311\1\u011b\60\311\16\0"+ - "\1\u011c\114\0\1\u011d\106\0\1\u011e\6\0\3\u011e\4\0"+ - "\4\u011e\5\0\3\u011e\2\0\2\u011e\4\0\26\u011e\2\0"+ - "\1\u011f\22\0\2\315\3\0\1\315\1\0\5\315\2\0"+ - "\4\315\4\0\10\315\4\0\26\315\32\0\1\u0120\7\0"+ - "\1\u0121\77\0\1\u0122\6\0\3\u0122\4\0\4\u0122\5\0"+ - "\3\u0122\2\0\2\u0122\4\0\26\u0122\2\0\1\u0123\33\0"+ - "\1\325\15\0\1\325\1\0\1\325\3\0\1\325\4\0"+ - "\24\325\21\0\1\327\112\0\1\330\2\331\1\330\1\332"+ - "\1\u0124\41\330\1\334\45\330\5\331\1\u0125\114\331\1\u0125"+ - "\13\331\1\332\15\331\1\332\1\331\1\332\3\331\1\332"+ - "\4\331\24\332\17\331\1\143\2\0\1\143\1\u0126\1\333"+ - "\41\143\1\147\45\143\1\330\2\331\1\330\1\u0127\1\u0124"+ - "\41\330\1\334\45\330\1\143\2\0\1\143\1\325\14\143"+ - "\1\335\15\143\1\335\1\143\1\335\3\143\1\335\1\143"+ - "\1\147\2\143\24\335\17\143\33\0\1\u0128\103\0\1\344"+ - "\13\0\1\344\3\0\2\344\71\0\1\u0129\1\0\1\u0129"+ - "\3\0\3\u0129\5\0\1\u0129\2\0\5\u0129\4\0\1\u0129"+ - "\1\0\1\u0129\1\0\1\u0129\6\0\1\u0129\40\0\1\153"+ - "\10\0\1\171\13\0\1\u012a\3\0\2\u012a\2\167\55\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\4\0"+ - "\5\22\1\u012b\20\22\23\0\3\22\7\0\3\22\3\0"+ - "\4\22\4\0\10\22\4\0\2\22\1\u012c\23\22\23\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\4\0"+ - "\4\22\1\u012d\21\22\23\0\3\22\7\0\3\22\3\0"+ - "\4\22\4\0\7\22\1\u012e\4\0\26\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\4\0\16\22"+ - "\1\u012f\7\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\7\22\1\u0130\4\0\26\22\23\0\3\360\7\0"+ - "\3\360\3\0\4\360\4\0\10\360\4\0\26\360\23\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\4\0"+ - "\2\22\1\u0131\23\22\23\0\3\22\7\0\3\22\3\0"+ - "\4\22\4\0\10\22\4\0\12\22\1\u0132\13\22\23\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\7\22\1\u0133"+ - "\4\0\26\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\10\22\4\0\4\22\1\u0134\21\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\4\0\5\22"+ - "\1\u0135\2\22\1\u0136\15\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\10\22\4\0\5\22\1\u0137\20\22"+ - "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\10\22"+ - "\4\0\10\22\1\u0138\15\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\7\22\1\u0139\4\0\26\22\23\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\4\0"+ - "\10\22\1\u013a\15\22\23\0\3\22\7\0\3\22\3\0"+ - "\4\22\4\0\10\22\4\0\1\22\1\u013b\24\22\23\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\4\0"+ - "\11\22\1\u013c\14\22\23\0\3\22\7\0\3\22\3\0"+ - "\4\22\4\0\7\22\1\u013d\4\0\26\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\4\0\14\22"+ - "\1\u013e\11\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\7\22\1\u013f\4\0\26\22\23\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\10\22\4\0\6\22\1\u0140"+ - "\17\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\10\22\4\0\5\22\1\u0141\20\22\23\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\7\22\1\u0142\4\0\26\22"+ - "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\10\22"+ - "\4\0\10\22\1\u0143\15\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\7\22\1\u0144\4\0\26\22\23\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\4\0"+ - "\6\22\1\u0145\5\22\1\u0146\11\22\23\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\7\22\1\u0147\4\0\26\22"+ - "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\10\22"+ - "\4\0\2\22\1\u0148\23\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\7\22\1\u0149\4\0\26\22\23\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\4\0"+ - "\2\22\1\u014a\23\22\23\0\3\22\7\0\3\22\3\0"+ - "\4\22\4\0\10\22\4\0\16\22\1\u014b\7\22\23\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\4\0"+ - "\14\22\1\u014c\11\22\23\0\3\22\7\0\3\22\3\0"+ - "\4\22\4\0\10\22\4\0\10\22\1\u014d\15\22\23\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\4\0"+ - "\22\22\1\u014e\3\22\23\0\3\22\7\0\3\22\3\0"+ - "\4\22\4\0\10\22\4\0\3\22\1\u014f\22\22\23\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\4\0"+ - "\14\22\1\u0150\11\22\23\0\3\22\7\0\3\22\3\0"+ - "\4\22\4\0\10\22\4\0\13\22\1\u0151\12\22\23\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\4\0"+ - "\11\22\1\u0152\14\22\35\0\1\u0153\1\0\1\u0153\3\0"+ - "\3\u0153\5\0\1\u0153\2\0\5\u0153\4\0\1\u0153\1\0"+ - "\1\u0153\1\0\1\u0153\6\0\1\u0153\47\0\1\u0154\1\0"+ - "\1\u0154\3\0\3\u0154\5\0\1\u0154\2\0\5\u0154\4\0"+ - "\1\u0154\1\0\1\u0154\1\0\1\u0154\6\0\1\u0154\30\0"+ - "\2\u0155\5\0\2\u011e\1\0\1\u0155\1\0\1\u011e\1\u0156"+ - "\5\u011e\2\0\4\u011e\4\0\10\u011e\4\0\26\u011e\32\0"+ - "\1\u0157\125\0\1\u0158\76\0\2\u0122\3\0\1\u0122\1\0"+ - "\5\u0122\2\0\4\u0122\4\0\10\u0122\4\0\26\u0122\15\0"+ - "\1\330\2\331\1\330\1\u0126\1\u0124\41\330\1\334\45\330"+ - "\4\331\1\327\1\u0125\107\331\1\330\2\331\1\330\1\332"+ - "\1\u0124\13\330\1\u0127\15\330\1\u0127\1\330\1\u0127\3\330"+ - "\1\u0127\1\330\1\334\2\330\24\u0127\17\330\20\0\1\u0159"+ - "\1\0\1\u0159\3\0\3\u0159\5\0\1\u0159\2\0\5\u0159"+ - "\4\0\1\u0159\1\0\1\u0159\1\0\1\u0159\6\0\1\u0159"+ - "\40\0\1\153\10\0\1\171\13\0\1\u015a\3\0\2\u015a"+ - "\2\167\55\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\7\22\1\u015b\4\0\26\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\10\22\4\0\14\22\1\u015c\11\22"+ - "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\10\22"+ - "\4\0\10\22\1\u015d\15\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\10\22\4\0\7\22\1\u015e\16\22"+ - "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\10\22"+ - "\4\0\3\22\1\u015f\22\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\10\22\4\0\1\22\1\u0160\24\22"+ - "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\10\22"+ - "\4\0\16\22\1\u0161\7\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\10\22\4\0\10\22\1\u0162\15\22"+ - "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\10\22"+ - "\4\0\11\22\1\u0163\14\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\10\22\4\0\5\22\1\u0164\20\22"+ - "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\10\22"+ - "\4\0\11\22\1\u0165\14\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\10\22\4\0\1\22\1\u0166\24\22"+ - "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\10\22"+ - "\4\0\4\22\1\u0167\21\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\10\22\4\0\1\22\1\u0168\24\22"+ - "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\10\22"+ - "\4\0\22\22\1\u0169\3\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\10\22\4\0\5\22\1\u016a\20\22"+ - "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\10\22"+ - "\4\0\15\22\1\u016b\10\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\10\22\4\0\6\22\1\u016c\17\22"+ - "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\10\22"+ - "\4\0\2\22\1\u016d\23\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\10\22\4\0\1\22\1\u016e\24\22"+ - "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\10\22"+ - "\4\0\1\22\1\u016f\24\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\7\22\1\u0170\4\0\26\22\23\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\3\22\1\u0171"+ - "\4\22\4\0\26\22\23\0\3\22\7\0\3\22\3\0"+ - "\4\22\4\0\10\22\4\0\12\22\1\u0172\13\22\23\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\10\22\4\0"+ - "\10\22\1\u0173\15\22\23\0\3\22\7\0\3\22\3\0"+ - "\4\22\4\0\10\22\4\0\21\22\1\u0174\4\22\23\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\7\22\1\u0175"+ - "\4\0\26\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\7\22\1\u0176\4\0\26\22\23\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\10\22\4\0\2\22\1\u0177"+ - "\23\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\10\22\4\0\2\22\1\u0178\23\22\23\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\10\22\4\0\11\22\1\u0179"+ - "\14\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\10\22\4\0\7\22\1\u017a\16\22\16\0\2\u0155\10\0"+ - "\1\u0155\2\0\1\u0156\125\0\1\u017b\105\0\1\u017c\1\0"+ - "\1\u017c\3\0\3\u017c\5\0\1\u017c\2\0\5\u017c\4\0"+ - "\1\u017c\1\0\1\u017c\1\0\1\u017c\6\0\1\u017c\40\0"+ - "\1\153\10\0\1\171\13\0\1\u017d\3\0\2\u017d\2\167"+ - "\55\0\3\22\7\0\3\22\3\0\4\22\4\0\10\22"+ - "\4\0\14\22\1\u017e\11\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\10\22\4\0\11\22\1\u017f\14\22"+ - "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\10\22"+ - "\4\0\13\22\1\u0180\12\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\10\22\4\0\7\22\1\u0181\16\22"+ - "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\10\22"+ - "\4\0\7\22\1\u0182\16\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\10\22\4\0\4\22\1\u0183\21\22"+ - "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\10\22"+ - "\4\0\16\22\1\u0184\7\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\10\22\4\0\11\22\1\u0185\14\22"+ - "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\7\22"+ - "\1\u0186\4\0\26\22\23\0\3\22\7\0\3\22\3\0"+ - "\4\22\4\0\10\22\4\0\17\22\1\u0187\6\22\23\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\3\22\1\u0188"+ - "\4\22\4\0\26\22\23\0\3\22\7\0\3\22\3\0"+ - "\4\22\4\0\10\22\4\0\7\22\1\u0189\16\22\23\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\3\22\1\u018a"+ - "\4\22\4\0\7\22\1\u018b\16\22\23\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\10\22\4\0\10\22\1\u018c"+ - "\15\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\10\22\4\0\21\22\1\u018d\4\22\23\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\10\22\4\0\11\22\1\u018e"+ - "\14\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\10\22\4\0\14\22\1\u018f\11\22\23\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\7\22\1\u0190\4\0\26\22"+ - "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\10\22"+ - "\4\0\11\22\1\u0191\14\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\10\22\4\0\4\22\1\u0192\21\22"+ - "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\10\22"+ - "\4\0\10\22\1\u0193\15\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\10\22\4\0\23\22\1\u0194\2\22"+ - "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\10\22"+ - "\4\0\4\22\1\u0195\21\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\10\22\4\0\11\22\1\u0196\14\22"+ - "\45\0\1\u0197\104\0\1\u0198\1\0\1\u0198\3\0\3\u0198"+ - "\5\0\1\u0198\2\0\5\u0198\4\0\1\u0198\1\0\1\u0198"+ - "\1\0\1\u0198\6\0\1\u0198\40\0\1\153\10\0\1\171"+ - "\13\0\1\u0199\3\0\2\u0199\2\167\55\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\10\22\4\0\20\22\1\u019a"+ - "\5\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\10\22\4\0\6\22\1\u019b\17\22\23\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\10\22\4\0\5\22\1\u019c"+ - "\20\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\10\22\4\0\12\22\1\u019d\13\22\23\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\10\22\4\0\13\22\1\u019e"+ - "\12\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\10\22\4\0\2\22\1\u019f\23\22\23\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\10\22\4\0\4\22\1\u01a0"+ - "\21\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\10\22\4\0\2\22\1\u01a1\23\22\23\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\10\22\4\0\2\22\1\u01a2"+ - "\23\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\7\22\1\u01a3\4\0\26\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\10\22\4\0\7\22\1\u01a4\16\22"+ - "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\10\22"+ - "\4\0\10\22\1\u01a5\15\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\10\22\4\0\4\22\1\u01a6\21\22"+ - "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\10\22"+ - "\4\0\10\22\1\u01a7\15\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\7\22\1\u01a8\4\0\26\22\23\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\7\22\1\u01a9"+ - "\4\0\26\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\10\22\4\0\10\22\1\u01aa\15\22\46\0\1\u01ab"+ - "\103\0\1\u01ac\1\0\1\u01ac\3\0\3\u01ac\5\0\1\u01ac"+ - "\2\0\5\u01ac\4\0\1\u01ac\1\0\1\u01ac\1\0\1\u01ac"+ - "\6\0\1\u01ac\40\0\1\153\10\0\1\171\13\0\1\u01ad"+ - "\3\0\2\u01ad\2\167\55\0\3\22\7\0\3\22\3\0"+ - "\4\22\4\0\10\22\4\0\7\22\1\u01ae\16\22\23\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\7\22\1\u01af"+ - "\4\0\26\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\7\22\1\u01b0\4\0\26\22\23\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\10\22\4\0\4\22\1\u01b1"+ - "\21\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\7\22\1\u01b2\4\0\26\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\10\22\4\0\4\22\1\u01b3\21\22"+ - "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\10\22"+ - "\4\0\14\22\1\u01b4\11\22\23\0\3\22\7\0\3\22"+ - "\3\0\4\22\4\0\10\22\4\0\7\22\1\u01b5\16\22"+ - "\23\0\3\22\7\0\3\22\3\0\4\22\4\0\7\22"+ - "\1\u01b6\4\0\26\22\23\0\3\22\7\0\3\22\3\0"+ - "\4\22\4\0\7\22\1\u01b7\4\0\26\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\4\0\20\22"+ - "\1\u01b8\5\22\45\0\1\u01b9\104\0\1\u01ba\1\0\1\u01ba"+ - "\3\0\3\u01ba\5\0\1\u01ba\2\0\5\u01ba\4\0\1\u01ba"+ - "\1\0\1\u01ba\1\0\1\u01ba\6\0\1\u01ba\40\0\1\153"+ - "\10\0\1\171\13\0\1\u01bb\3\0\2\u01bb\2\167\55\0"+ - "\3\22\7\0\3\22\3\0\4\22\4\0\7\22\1\u01bc"+ - "\4\0\26\22\23\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\10\22\4\0\6\22\1\u01bd\17\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\7\22\1\u01be\4\0"+ - "\26\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\10\22\4\0\10\22\1\u01bf\15\22\23\0\3\22\7\0"+ - "\3\22\3\0\4\22\4\0\10\22\4\0\13\22\1\u01c0"+ - "\12\22\23\0\3\22\7\0\3\22\3\0\4\22\4\0"+ - "\10\22\4\0\13\22\1\u01c1\12\22\42\0\1\u01c2\107\0"+ - "\1\u01c3\1\0\1\u01c3\3\0\3\u01c3\5\0\1\u01c3\2\0"+ - "\5\u01c3\4\0\1\u01c3\1\0\1\u01c3\1\0\1\u01c3\6\0"+ - "\1\u01c3\40\0\1\153\10\0\1\171\13\0\1\u01c4\3\0"+ - "\2\u01c4\2\167\55\0\3\22\7\0\3\22\3\0\4\22"+ - "\4\0\3\22\1\u01c5\4\22\4\0\26\22\23\0\3\22"+ - "\7\0\3\22\3\0\4\22\4\0\10\22\4\0\5\22"+ - "\1\u01c6\20\22\26\0\1\153\10\0\1\171\13\0\1\u01c7"+ - "\3\0\2\u01c7\2\167\60\0\1\153\10\0\1\171\13\0"+ - "\1\u01c8\3\0\2\u01c8\2\167\60\0\1\153\10\0\1\171"+ - "\13\0\1\u01c9\3\0\2\u01c9\2\167\60\0\1\153\10\0"+ - "\1\171\13\0\1\u01ca\3\0\2\u01ca\2\167\60\0\1\153"+ - "\10\0\1\171\13\0\1\u01cb\3\0\2\u01cb\2\167\60\0"+ - "\1\153\10\0\1\171\13\0\1\u01cc\3\0\2\u01cc\2\167"+ - "\47\0"; + "\1\16\1\17\1\20\1\21\1\22\1\23\1\24\1\16"+ + "\1\24\1\25\1\26\1\21\1\27\1\30\1\31\1\32"+ + "\2\24\1\33\1\16\1\34\1\35\4\24\1\36\1\37"+ + "\1\40\1\41\1\42\2\24\1\43\2\33\1\24\1\44"+ + "\1\45\1\16\1\46\1\47\1\50\1\51\1\52\1\24"+ + "\1\53\1\54\1\55\1\56\1\57\1\60\1\61\1\62"+ + "\1\24\1\63\1\24\1\64\2\24\1\65\1\66\1\67"+ + "\1\70\1\71\1\72\1\73\1\74\1\75\1\76\1\77"+ + "\1\100\1\101\1\102\1\103\1\104\1\16\1\105\1\106"+ + "\1\107\31\105\1\110\12\105\1\111\45\105\1\112\1\113"+ + "\1\114\32\112\1\110\11\112\1\111\45\112\1\16\1\115"+ + "\1\116\1\117\1\120\3\16\1\121\2\16\1\117\2\16"+ + "\1\122\3\121\4\16\4\121\5\16\3\121\2\16\2\121"+ + "\4\16\26\121\2\16\1\123\46\16\1\124\45\16\1\125"+ + "\13\16\1\115\1\116\1\117\4\16\1\126\2\16\1\117"+ + "\3\16\3\126\2\16\1\127\1\16\4\126\5\16\3\126"+ + "\2\16\2\126\4\16\26\126\2\16\1\130\46\16\1\131"+ + "\45\16\1\132\12\16\1\133\1\115\1\116\27\133\1\134"+ + "\63\133\1\135\1\136\12\133\1\137\100\133\1\115\1\116"+ + "\7\133\1\140\67\133\1\141\12\133\1\142\1\113\1\114"+ + "\44\142\1\143\1\144\44\142\1\133\1\115\1\116\27\133"+ + "\1\145\63\133\1\135\1\136\12\133\1\146\77\133\117\0"+ + "\1\20\115\0\1\21\7\0\1\21\101\0\1\147\2\0"+ + "\1\147\1\150\1\151\25\147\1\152\13\147\1\153\45\147"+ + "\33\0\1\154\67\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\10\24\4\0\26\24\26\0\1\155\1\156\7\0"+ + "\1\157\13\0\1\157\3\0\2\157\34\0\1\160\24\0"+ + "\1\161\1\0\1\162\1\0\1\163\2\0\3\161\4\0"+ + "\4\161\1\0\1\164\3\0\3\161\2\0\2\161\4\0"+ + "\26\161\2\0\1\165\45\0\1\166\76\0\1\167\15\0"+ + "\1\170\77\0\1\171\14\0\1\172\100\0\1\173\106\0"+ + "\1\157\10\0\1\33\13\0\1\33\3\0\2\33\2\174"+ + "\102\0\1\175\72\0\1\157\10\0\1\176\13\0\1\177"+ + "\2\200\1\0\1\201\1\202\2\174\55\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\10\24\4\0\2\24\1\203"+ + "\3\24\1\204\2\24\1\205\1\206\13\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\1\24\1\207\6\24"+ + "\4\0\2\24\1\210\11\24\1\211\11\24\50\0\1\212"+ + "\12\0\1\213\116\0\1\214\66\0\1\215\13\0\1\216"+ + "\3\0\2\215\57\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\10\24\4\0\1\24\1\217\24\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\7\24\1\220\4\0"+ + "\26\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\10\24\4\0\5\24\1\221\20\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\10\24\4\0\2\24\1\222"+ + "\3\24\1\223\5\24\1\224\11\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\7\24\1\225\4\0\10\24"+ + "\1\226\1\24\1\227\2\24\1\230\10\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\10\24\4\0\22\24"+ + "\1\231\3\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\7\24\1\232\4\0\2\24\1\233\7\24\1\234"+ + "\13\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\10\24\4\0\1\24\1\235\14\24\1\236\1\24\1\237"+ + "\5\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\3\24\1\240\4\24\4\0\5\24\1\241\1\24\1\242"+ + "\11\24\1\243\4\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\10\24\4\0\5\24\1\244\1\24\1\245"+ + "\16\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\7\24\1\246\4\0\6\24\1\247\11\24\1\250\5\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\10\24"+ + "\4\0\11\24\1\251\4\24\1\252\7\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\10\24\4\0\1\24"+ + "\1\253\1\254\7\24\1\255\13\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\10\24\4\0\2\24\1\256"+ + "\3\24\1\257\17\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\7\24\1\260\4\0\26\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\10\24\4\0\7\24"+ + "\1\261\16\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\10\24\4\0\2\24\1\262\23\24\50\0\1\263"+ + "\53\0\1\264\40\0\1\265\54\0\1\266\37\0\1\267"+ + "\114\0\1\270\61\0\1\105\2\0\31\105\1\0\12\105"+ + "\1\0\45\105\2\0\1\107\112\0\1\271\3\0\30\271"+ + "\1\272\1\273\1\271\1\274\1\271\1\275\5\271\1\276"+ + "\2\271\1\277\1\300\5\271\1\301\1\302\1\271\1\303"+ + "\27\271\1\0\1\112\2\0\32\112\1\0\11\112\1\0"+ + "\45\112\2\0\1\114\114\0\1\116\115\0\1\117\7\0"+ + "\1\117\117\0\1\304\106\0\2\305\3\0\1\305\1\0"+ + "\5\305\2\0\4\305\1\0\1\306\2\0\10\305\4\0"+ + "\26\305\15\0\1\307\2\0\31\307\1\310\60\307\10\0"+ + "\2\311\3\0\1\311\1\0\5\311\2\0\4\311\1\0"+ + "\1\312\2\0\10\311\4\0\26\311\33\0\1\313\76\0"+ + "\1\314\2\0\31\314\1\315\1\316\57\314\32\0\1\317"+ + "\64\0\1\136\127\0\1\320\103\0\1\321\3\0\1\322"+ + "\3\0\1\323\2\0\3\322\2\0\1\324\1\0\4\322"+ + "\5\0\3\322\2\0\2\322\4\0\26\322\2\0\1\325"+ + "\12\0\1\142\2\0\44\142\2\0\44\142\1\326\3\0"+ + "\33\326\1\327\1\326\1\275\5\326\1\276\1\330\1\326"+ + "\1\277\1\300\5\326\1\301\1\302\1\326\1\331\27\326"+ + "\33\0\1\332\77\0\1\333\77\0\1\147\2\0\1\147"+ + "\1\334\42\147\1\153\45\147\1\150\1\335\1\336\112\150"+ + "\1\337\2\340\1\337\1\341\1\342\41\337\1\343\45\337"+ + "\1\147\2\0\1\147\1\344\42\147\1\153\45\147\11\0"+ + "\1\345\125\0\1\157\13\0\1\157\3\0\2\157\2\174"+ + "\57\0\2\161\3\0\1\161\1\0\5\161\2\0\4\161"+ + "\4\0\10\161\4\0\26\161\50\0\1\346\76\0\1\347"+ + "\7\0\1\350\122\0\1\351\77\0\1\352\14\0\1\353"+ + "\76\0\1\354\4\0\1\355\13\0\1\355\3\0\2\355"+ + "\2\0\1\354\101\0\1\356\72\0\1\157\10\0\1\176"+ + "\13\0\1\176\3\0\2\176\2\174\60\0\1\157\10\0"+ + "\1\176\13\0\1\177\3\0\1\201\1\202\2\174\67\0"+ + "\1\357\1\0\1\357\3\0\3\357\5\0\1\360\2\0"+ + "\5\357\4\0\1\357\1\0\1\357\1\0\1\357\6\0"+ + "\1\357\40\0\1\157\10\0\1\176\13\0\1\202\3\0"+ + "\2\202\2\174\60\0\1\157\10\0\1\176\13\0\1\361"+ + "\3\0\2\361\2\174\55\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\10\24\4\0\14\24\1\362\11\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\10\24\4\0"+ + "\1\24\1\363\24\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\10\24\4\0\7\24\1\364\16\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\10\24\4\0"+ + "\7\24\1\365\16\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\10\24\4\0\10\24\1\366\15\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\10\24\4\0"+ + "\4\24\1\367\21\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\10\24\4\0\5\24\1\370\20\24\23\0"+ + "\1\371\1\0\1\371\7\0\2\371\4\0\4\371\5\0"+ + "\3\371\2\0\2\371\4\0\26\371\37\0\1\215\13\0"+ + "\1\215\3\0\2\215\57\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\7\24\1\372\4\0\26\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\10\24\4\0\10\24"+ + "\1\373\15\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\10\24\4\0\5\24\1\374\2\24\1\375\15\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\10\24"+ + "\4\0\7\24\1\376\16\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\10\24\4\0\2\24\1\377\23\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\10\24"+ + "\4\0\10\24\1\u0100\15\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\10\24\4\0\2\24\1\u0101\23\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\10\24"+ + "\4\0\17\24\1\u0102\6\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\10\24\4\0\11\24\1\u0103\14\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\7\24"+ + "\1\u0104\4\0\26\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\10\24\4\0\15\24\1\u0105\10\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\10\24\4\0"+ + "\10\24\1\u0106\10\24\1\u0107\4\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\10\24\4\0\14\24\1\u0108"+ + "\11\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\10\24\4\0\12\24\1\u0109\5\24\1\u010a\5\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\10\24\4\0"+ + "\1\24\1\u010b\7\24\1\u010c\14\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\10\24\4\0\17\24\1\u010d"+ + "\6\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\10\24\4\0\5\24\1\u010e\2\24\1\u010f\15\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\10\24\4\0"+ + "\17\24\1\u0110\6\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\7\24\1\u0111\4\0\26\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\10\24\4\0\13\24"+ + "\1\u0112\12\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\3\24\1\u0113\4\24\4\0\14\24\1\u0114\11\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\10\24"+ + "\4\0\7\24\1\u0115\16\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\10\24\4\0\10\24\1\u0116\15\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\10\24"+ + "\4\0\11\24\1\u0117\14\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\10\24\4\0\6\24\1\u0118\2\24"+ + "\1\u0119\14\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\10\24\4\0\4\24\1\u011a\21\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\10\24\4\0\1\u011b"+ + "\25\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\10\24\4\0\1\24\1\u011c\24\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\10\24\4\0\11\24\1\u011d"+ + "\14\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\10\24\4\0\10\24\1\u011e\15\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\3\24\1\u011f\4\24\4\0"+ + "\26\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\10\24\4\0\25\24\1\u0120\35\0\1\u0121\1\0\1\u0121"+ + "\3\0\3\u0121\5\0\1\u0121\2\0\5\u0121\4\0\1\u0121"+ + "\1\0\1\u0121\1\0\1\u0121\6\0\1\u0121\47\0\1\u0122"+ + "\1\0\1\u0122\3\0\3\u0122\5\0\1\u0122\2\0\5\u0122"+ + "\4\0\1\u0122\1\0\1\u0122\1\0\1\u0122\6\0\1\u0122"+ + "\27\0\1\u0123\2\0\31\u0123\1\315\1\0\57\u0123\1\316"+ + "\2\0\31\316\1\u0124\60\316\16\0\1\u0125\114\0\1\u0126"+ + "\106\0\1\u0127\6\0\3\u0127\4\0\4\u0127\5\0\3\u0127"+ + "\2\0\2\u0127\4\0\26\u0127\2\0\1\u0128\22\0\2\322"+ + "\3\0\1\322\1\0\5\322\2\0\4\322\4\0\10\322"+ + "\4\0\26\322\32\0\1\u0129\7\0\1\u012a\77\0\1\u012b"+ + "\6\0\3\u012b\4\0\4\u012b\5\0\3\u012b\2\0\2\u012b"+ + "\4\0\26\u012b\2\0\1\u012c\30\0\1\u012d\114\0\1\u012e"+ + "\117\0\1\334\15\0\1\334\1\0\1\334\3\0\1\334"+ + "\4\0\24\334\21\0\1\336\112\0\1\337\2\340\1\337"+ + "\1\341\1\u012f\41\337\1\343\45\337\5\340\1\u0130\114\340"+ + "\1\u0130\13\340\1\341\15\340\1\341\1\340\1\341\3\340"+ + "\1\341\4\340\24\341\17\340\1\147\2\0\1\147\1\u0131"+ + "\1\342\41\147\1\153\45\147\1\337\2\340\1\337\1\u0132"+ + "\1\u012f\41\337\1\343\45\337\1\147\2\0\1\147\1\334"+ + "\14\147\1\344\15\147\1\344\1\147\1\344\3\147\1\344"+ + "\1\147\1\153\2\147\24\344\17\147\15\0\1\u0133\125\0"+ + "\1\u0134\121\0\1\u0135\103\0\1\355\13\0\1\355\3\0"+ + "\2\355\71\0\1\u0136\1\0\1\u0136\3\0\3\u0136\5\0"+ + "\1\u0136\2\0\5\u0136\4\0\1\u0136\1\0\1\u0136\1\0"+ + "\1\u0136\6\0\1\u0136\40\0\1\157\10\0\1\176\13\0"+ + "\1\u0137\3\0\2\u0137\2\174\55\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\10\24\4\0\5\24\1\u0138\20\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\10\24"+ + "\4\0\2\24\1\u0139\23\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\10\24\4\0\4\24\1\u013a\21\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\7\24"+ + "\1\u013b\4\0\26\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\10\24\4\0\16\24\1\u013c\7\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\1\u013d"+ + "\4\0\26\24\23\0\3\371\7\0\3\371\3\0\4\371"+ + "\4\0\10\371\4\0\26\371\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\10\24\4\0\2\24\1\u013e\23\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\10\24"+ + "\4\0\12\24\1\u013f\13\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\7\24\1\u0140\4\0\26\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\10\24\4\0"+ + "\4\24\1\u0141\21\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\10\24\4\0\5\24\1\u0142\2\24\1\u0143"+ + "\15\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\10\24\4\0\5\24\1\u0144\20\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\10\24\4\0\10\24\1\u0145"+ + "\15\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\7\24\1\u0146\4\0\26\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\10\24\4\0\10\24\1\u0147\15\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\10\24"+ + "\4\0\1\24\1\u0148\24\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\10\24\4\0\11\24\1\u0149\14\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\7\24"+ + "\1\u014a\4\0\26\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\10\24\4\0\14\24\1\u014b\11\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\1\u014c"+ + "\4\0\26\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\10\24\4\0\6\24\1\u014d\17\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\10\24\4\0\5\24"+ + "\1\u014e\20\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\7\24\1\u014f\4\0\26\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\10\24\4\0\10\24\1\u0150"+ + "\15\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\7\24\1\u0151\4\0\26\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\10\24\4\0\6\24\1\u0152\5\24"+ + "\1\u0153\11\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\7\24\1\u0154\4\0\26\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\10\24\4\0\2\24\1\u0155"+ + "\23\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\7\24\1\u0156\4\0\26\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\10\24\4\0\2\24\1\u0157\23\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\10\24"+ + "\4\0\16\24\1\u0158\7\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\10\24\4\0\14\24\1\u0159\11\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\10\24"+ + "\4\0\10\24\1\u015a\15\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\10\24\4\0\22\24\1\u015b\3\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\10\24"+ + "\4\0\3\24\1\u015c\22\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\10\24\4\0\14\24\1\u015d\11\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\10\24"+ + "\4\0\13\24\1\u015e\12\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\10\24\4\0\11\24\1\u015f\14\24"+ + "\35\0\1\u0160\1\0\1\u0160\3\0\3\u0160\5\0\1\u0160"+ + "\2\0\5\u0160\4\0\1\u0160\1\0\1\u0160\1\0\1\u0160"+ + "\6\0\1\u0160\47\0\1\u0161\1\0\1\u0161\3\0\3\u0161"+ + "\5\0\1\u0161\2\0\5\u0161\4\0\1\u0161\1\0\1\u0161"+ + "\1\0\1\u0161\6\0\1\u0161\30\0\2\u0162\5\0\2\u0127"+ + "\1\0\1\u0162\1\0\1\u0127\1\u0163\5\u0127\2\0\4\u0127"+ + "\4\0\10\u0127\4\0\26\u0127\32\0\1\u0164\125\0\1\u0165"+ + "\76\0\2\u012b\3\0\1\u012b\1\0\5\u012b\2\0\4\u012b"+ + "\4\0\10\u012b\4\0\26\u012b\15\0\1\337\2\340\1\337"+ + "\1\u0131\1\u012f\41\337\1\343\45\337\4\340\1\336\1\u0130"+ + "\107\340\1\337\2\340\1\337\1\341\1\u012f\13\337\1\u0132"+ + "\15\337\1\u0132\1\337\1\u0132\3\337\1\u0132\1\337\1\343"+ + "\2\337\24\u0132\17\337\27\0\1\u0166\105\0\1\u0167\1\0"+ + "\1\u0167\3\0\3\u0167\5\0\1\u0167\2\0\5\u0167\4\0"+ + "\1\u0167\1\0\1\u0167\1\0\1\u0167\6\0\1\u0167\40\0"+ + "\1\157\10\0\1\176\13\0\1\u0168\3\0\2\u0168\2\174"+ + "\55\0\3\24\7\0\3\24\3\0\4\24\4\0\7\24"+ + "\1\u0169\4\0\26\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\10\24\4\0\14\24\1\u016a\11\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\10\24\4\0"+ + "\10\24\1\u016b\15\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\10\24\4\0\7\24\1\u016c\16\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\10\24\4\0"+ + "\3\24\1\u016d\22\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\10\24\4\0\1\24\1\u016e\24\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\10\24\4\0"+ + "\16\24\1\u016f\7\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\10\24\4\0\10\24\1\u0170\15\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\10\24\4\0"+ + "\11\24\1\u0171\14\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\10\24\4\0\5\24\1\u0172\20\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\10\24\4\0"+ + "\11\24\1\u0173\14\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\10\24\4\0\1\24\1\u0174\24\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\10\24\4\0"+ + "\4\24\1\u0175\21\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\10\24\4\0\1\24\1\u0176\24\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\10\24\4\0"+ + "\22\24\1\u0177\3\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\10\24\4\0\5\24\1\u0178\20\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\10\24\4\0"+ + "\15\24\1\u0179\10\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\10\24\4\0\6\24\1\u017a\17\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\10\24\4\0"+ + "\2\24\1\u017b\23\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\10\24\4\0\1\24\1\u017c\24\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\10\24\4\0"+ + "\1\24\1\u017d\24\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\7\24\1\u017e\4\0\26\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\3\24\1\u017f\4\24"+ + "\4\0\26\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\10\24\4\0\12\24\1\u0180\13\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\10\24\4\0\10\24"+ + "\1\u0181\15\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\10\24\4\0\21\24\1\u0182\4\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\7\24\1\u0183\4\0"+ + "\26\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\7\24\1\u0184\4\0\26\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\10\24\4\0\2\24\1\u0185\23\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\10\24"+ + "\4\0\2\24\1\u0186\23\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\10\24\4\0\11\24\1\u0187\14\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\10\24"+ + "\4\0\7\24\1\u0188\16\24\16\0\2\u0162\10\0\1\u0162"+ + "\2\0\1\u0163\125\0\1\u0189\115\0\1\u018a\104\0\1\u018b"+ + "\1\0\1\u018b\3\0\3\u018b\5\0\1\u018b\2\0\5\u018b"+ + "\4\0\1\u018b\1\0\1\u018b\1\0\1\u018b\6\0\1\u018b"+ + "\40\0\1\157\10\0\1\176\13\0\1\u018c\3\0\2\u018c"+ + "\2\174\55\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\10\24\4\0\14\24\1\u018d\11\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\10\24\4\0\11\24\1\u018e"+ + "\14\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\10\24\4\0\13\24\1\u018f\12\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\10\24\4\0\7\24\1\u0190"+ + "\16\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\10\24\4\0\7\24\1\u0191\16\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\10\24\4\0\4\24\1\u0192"+ + "\21\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\10\24\4\0\16\24\1\u0193\7\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\10\24\4\0\11\24\1\u0194"+ + "\14\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\7\24\1\u0195\4\0\26\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\10\24\4\0\17\24\1\u0196\6\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\3\24"+ + "\1\u0197\4\24\4\0\26\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\10\24\4\0\7\24\1\u0198\16\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\3\24"+ + "\1\u0199\4\24\4\0\7\24\1\u019a\16\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\10\24\4\0\10\24"+ + "\1\u019b\15\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\10\24\4\0\21\24\1\u019c\4\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\10\24\4\0\11\24"+ + "\1\u019d\14\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\10\24\4\0\14\24\1\u019e\11\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\7\24\1\u019f\4\0"+ + "\26\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\10\24\4\0\11\24\1\u01a0\14\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\10\24\4\0\4\24\1\u01a1"+ + "\21\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\10\24\4\0\10\24\1\u01a2\15\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\10\24\4\0\23\24\1\u01a3"+ + "\2\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\10\24\4\0\4\24\1\u01a4\21\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\10\24\4\0\11\24\1\u01a5"+ + "\14\24\45\0\1\u01a6\115\0\1\u01a7\103\0\1\u01a8\1\0"+ + "\1\u01a8\3\0\3\u01a8\5\0\1\u01a8\2\0\5\u01a8\4\0"+ + "\1\u01a8\1\0\1\u01a8\1\0\1\u01a8\6\0\1\u01a8\40\0"+ + "\1\157\10\0\1\176\13\0\1\u01a9\3\0\2\u01a9\2\174"+ + "\55\0\3\24\7\0\3\24\3\0\4\24\4\0\10\24"+ + "\4\0\20\24\1\u01aa\5\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\10\24\4\0\6\24\1\u01ab\17\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\10\24"+ + "\4\0\5\24\1\u01ac\20\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\10\24\4\0\12\24\1\u01ad\13\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\10\24"+ + "\4\0\13\24\1\u01ae\12\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\10\24\4\0\2\24\1\u01af\23\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\10\24"+ + "\4\0\4\24\1\u01b0\21\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\10\24\4\0\2\24\1\u01b1\23\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\10\24"+ + "\4\0\2\24\1\u01b2\23\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\7\24\1\u01b3\4\0\26\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\10\24\4\0"+ + "\7\24\1\u01b4\16\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\10\24\4\0\10\24\1\u01b5\15\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\10\24\4\0"+ + "\4\24\1\u01b6\21\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\10\24\4\0\10\24\1\u01b7\15\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\1\u01b8"+ + "\4\0\26\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\7\24\1\u01b9\4\0\26\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\10\24\4\0\10\24\1\u01ba"+ + "\15\24\46\0\1\u01bb\113\0\1\u01bc\104\0\1\u01bd\1\0"+ + "\1\u01bd\3\0\3\u01bd\5\0\1\u01bd\2\0\5\u01bd\4\0"+ + "\1\u01bd\1\0\1\u01bd\1\0\1\u01bd\6\0\1\u01bd\40\0"+ + "\1\157\10\0\1\176\13\0\1\u01be\3\0\2\u01be\2\174"+ + "\55\0\3\24\7\0\3\24\3\0\4\24\4\0\10\24"+ + "\4\0\7\24\1\u01bf\16\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\7\24\1\u01c0\4\0\26\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\1\u01c1"+ + "\4\0\26\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\10\24\4\0\4\24\1\u01c2\21\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\7\24\1\u01c3\4\0"+ + "\26\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\10\24\4\0\4\24\1\u01c4\21\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\10\24\4\0\14\24\1\u01c5"+ + "\11\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\10\24\4\0\7\24\1\u01c6\16\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\7\24\1\u01c7\4\0\26\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\7\24"+ + "\1\u01c8\4\0\26\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\10\24\4\0\20\24\1\u01c9\5\24\45\0"+ + "\1\u01ca\111\0\1\u01cb\107\0\1\u01cc\1\0\1\u01cc\3\0"+ + "\3\u01cc\5\0\1\u01cc\2\0\5\u01cc\4\0\1\u01cc\1\0"+ + "\1\u01cc\1\0\1\u01cc\6\0\1\u01cc\40\0\1\157\10\0"+ + "\1\176\13\0\1\u01cd\3\0\2\u01cd\2\174\55\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\7\24\1\u01ce\4\0"+ + "\26\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\10\24\4\0\6\24\1\u01cf\17\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\7\24\1\u01d0\4\0\26\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\10\24"+ + "\4\0\10\24\1\u01d1\15\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\10\24\4\0\13\24\1\u01d2\12\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\10\24"+ + "\4\0\13\24\1\u01d3\12\24\42\0\1\u01d4\107\0\1\u01d5"+ + "\1\0\1\u01d5\3\0\3\u01d5\5\0\1\u01d5\2\0\5\u01d5"+ + "\4\0\1\u01d5\1\0\1\u01d5\1\0\1\u01d5\6\0\1\u01d5"+ + "\40\0\1\157\10\0\1\176\13\0\1\u01d6\3\0\2\u01d6"+ + "\2\174\55\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\3\24\1\u01d7\4\24\4\0\26\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\10\24\4\0\5\24\1\u01d8"+ + "\20\24\26\0\1\157\10\0\1\176\13\0\1\u01d9\3\0"+ + "\2\u01d9\2\174\60\0\1\157\10\0\1\176\13\0\1\u01da"+ + "\3\0\2\u01da\2\174\60\0\1\157\10\0\1\176\13\0"+ + "\1\u01db\3\0\2\u01db\2\174\60\0\1\157\10\0\1\176"+ + "\13\0\1\u01dc\3\0\2\u01dc\2\174\60\0\1\157\10\0"+ + "\1\176\13\0\1\u01dd\3\0\2\u01dd\2\174\60\0\1\157"+ + "\10\0\1\176\13\0\1\u01de\3\0\2\u01de\2\174\47\0"; private static int [] zzUnpackTrans() { - int [] result = new int[24255]; + int [] result = new int[25333]; int offset = 0; offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); return result; @@ -841,24 +854,25 @@ public final class ActionScriptLexer { private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); private static final String ZZ_ATTRIBUTE_PACKED_0 = - "\13\0\1\11\1\1\1\11\13\1\3\11\1\1\2\11"+ + "\15\0\1\11\1\1\1\11\13\1\3\11\1\1\2\11"+ "\27\1\7\11\4\1\1\11\2\1\2\11\3\1\1\11"+ "\1\1\1\11\3\1\2\11\1\1\1\11\2\1\1\11"+ "\1\1\2\11\2\1\1\11\2\1\1\11\2\1\1\11"+ - "\1\0\1\1\1\0\1\1\1\0\1\11\1\1\1\11"+ - "\1\1\1\11\2\1\2\11\1\1\2\11\1\1\2\11"+ - "\1\0\3\1\1\0\11\1\2\11\1\0\1\1\1\11"+ - "\44\1\11\11\1\1\6\11\1\1\1\11\1\0\1\11"+ - "\1\0\1\11\1\0\2\11\1\0\1\1\4\0\1\1"+ - "\2\0\2\11\1\1\1\11\3\1\1\11\2\0\1\1"+ - "\2\0\1\1\3\11\1\1\1\11\1\0\1\1\1\11"+ - "\62\1\3\0\3\11\1\0\1\11\2\0\1\1\1\11"+ - "\2\0\2\1\1\11\52\1\1\11\2\0\2\11\1\0"+ - "\42\1\1\0\33\1\1\0\23\1\1\0\15\1\1\0"+ - "\10\1\2\11\11\1"; + "\2\1\1\0\1\1\1\0\1\1\1\0\1\11\1\1"+ + "\1\11\1\1\1\11\2\1\1\0\2\11\1\1\2\11"+ + "\1\1\2\11\1\0\3\1\1\0\11\1\2\11\1\0"+ + "\1\1\1\11\44\1\11\11\1\1\6\11\1\1\1\11"+ + "\1\0\1\11\1\0\1\11\1\0\2\11\1\0\1\1"+ + "\4\0\1\1\2\0\2\11\1\1\1\11\1\1\2\0"+ + "\2\1\1\11\2\0\1\1\2\0\1\1\2\11\2\0"+ + "\1\11\1\1\1\11\1\0\1\1\1\11\62\1\3\0"+ + "\3\11\1\0\1\11\2\0\1\1\3\11\2\0\2\1"+ + "\1\11\1\0\1\11\52\1\1\11\2\0\2\11\2\0"+ + "\42\1\2\0\33\1\2\0\23\1\2\0\15\1\1\0"+ + "\1\11\10\1\2\11\11\1"; private static int [] zzUnpackAttribute() { - int [] result = new int[460]; + int [] result = new int[478]; int offset = 0; offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); return result; @@ -1323,160 +1337,160 @@ public final class ActionScriptLexer { case 1: { } - case 167: break; + case 171: break; case 2: { yyline++; } - case 168: break; + case 172: break; case 3: { /*ignore*/ } - case 169: break; + case 173: break; case 4: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DIVIDE, yytext()); } - case 170: break; + case 174: break; case 5: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MULTIPLY, yytext()); } - case 171: break; + case 175: break; case 6: { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); } - case 172: break; + case 176: break; case 7: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DOT, yytext()); } - case 173: break; + case 177: break; case 8: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.LOWER_THAN, yytext()); } - case 174: break; + case 178: break; case 9: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NOT, yytext()); } - case 175: break; + case 179: break; case 10: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MINUS, yytext()); } - case 176: break; + case 180: break; case 11: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.GREATER_THAN, yytext()); } - case 177: break; + case 181: break; case 12: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.COLON, yytext()); } - case 178: break; + case 182: break; case 13: { return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, Long.parseLong((yytext()))); } - case 179: break; + case 183: break; case 14: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.TERNAR, yytext()); } - case 180: break; + case 184: break; case 15: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BRACKET_OPEN, yytext()); } - case 181: break; + case 185: break; case 16: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BRACKET_CLOSE, yytext()); } - case 182: break; + case 186: break; case 17: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN, yytext()); } - case 183: break; + case 187: break; case 18: { string.setLength(0); yybegin(STRING); } - case 184: break; + case 188: break; case 19: { string.setLength(0); yybegin(CHARLITERAL); } - case 185: break; + case 189: break; case 20: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PLUS, yytext()); } - case 186: break; + case 190: break; case 21: { string.setLength(0); yybegin(OIDENTIFIER); } - case 187: break; + case 191: break; case 22: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PARENT_OPEN, yytext()); } - case 188: break; + case 192: break; case 23: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PARENT_CLOSE, yytext()); } - case 189: break; + case 193: break; case 24: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.CURLY_OPEN, yytext()); } - case 190: break; + case 194: break; case 25: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.CURLY_CLOSE, yytext()); } - case 191: break; + case 195: break; case 26: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SEMICOLON, yytext()); } - case 192: break; + case 196: break; case 27: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.COMMA, yytext()); } - case 193: break; + case 197: break; case 28: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NEGATE, yytext()); } - case 194: break; + case 198: break; case 29: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BITAND, yytext()); } - case 195: break; + case 199: break; case 30: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BITOR, yytext()); } - case 196: break; + case 200: break; case 31: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.XOR, yytext()); } - case 197: break; + case 201: break; case 32: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MODULO, yytext()); } - case 198: break; + case 202: break; case 33: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ATTRIBUTE, yytext()); } - case 199: break; + case 203: break; case 34: { string.append(yytext()); } - case 200: break; + case 204: break; case 35: { yybegin(YYINITIAL); yyline++; } - case 201: break; + case 205: break; case 36: { yybegin(YYINITIAL); // length also includes the trailing quote return new ParsedSymbol(SymbolGroup.STRING, SymbolType.STRING, string.toString()); } - case 202: break; + case 206: break; case 37: { yybegin(YYINITIAL); yyline++; } - case 203: break; + case 207: break; case 38: { string.append(yytext()); yyline++; } - case 204: break; + case 208: break; case 39: { yybegin(XML); pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_STARTTAG_END, yytext())); @@ -1486,7 +1500,7 @@ public final class ActionScriptLexer { } return lex(); } - case 205: break; + case 209: break; case 40: { yybegin(YYINITIAL); pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRNAMEVAR_BEGIN, yytext())); @@ -1496,12 +1510,12 @@ public final class ActionScriptLexer { } return lex(); } - case 206: break; + case 210: break; case 41: { yybegin(YYINITIAL); return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRVALVAR_BEGIN, yytext()); } - case 207: break; + case 211: break; case 42: { yybegin(YYINITIAL); pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_INSTRATTRNAMEVAR_BEGIN, yytext())); @@ -1511,16 +1525,16 @@ public final class ActionScriptLexer { } return lex(); } - case 208: break; + case 212: break; case 43: { yybegin(YYINITIAL); return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_INSTRATTRVALVAR_BEGIN, yytext()); } - case 209: break; + case 213: break; case 44: { string.append(yytext()); yyline++; } - case 210: break; + case 214: break; case 45: { yybegin(YYINITIAL); pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_VAR_BEGIN, yytext())); @@ -1530,179 +1544,179 @@ public final class ActionScriptLexer { } return lex(); } - case 211: break; + case 215: break; case 46: { yybegin(YYINITIAL); // length also includes the trailing quote return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, string.toString()); } - case 212: break; + case 216: break; case 47: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_DIVIDE, yytext()); } - case 213: break; + case 217: break; case 48: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MULTIPLY, yytext()); } - case 214: break; + case 218: break; case 49: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DESCENDANTS, yytext()); } - case 215: break; + case 219: break; case 50: { return new ParsedSymbol(SymbolGroup.TYPENAME, SymbolType.TYPENAME, yytext()); } - case 216: break; + case 220: break; case 51: { return new ParsedSymbol(SymbolGroup.DOUBLE, SymbolType.DOUBLE, Double.parseDouble((yytext()))); } - case 217: break; + case 221: break; case 52: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.FILTER, yytext()); } - case 218: break; + case 222: break; case 53: { yybegin(XMLOPENTAG); string.setLength(0); return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_STARTTAG_BEGIN, yytext()); } - case 219: break; + case 223: break; case 54: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SHIFT_LEFT, yytext()); } - case 220: break; + case 224: break; case 55: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.LOWER_EQUAL, yytext()); } - case 221: break; + case 225: break; case 56: { return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_STARTVARTAG_BEGIN, yytext()); } - case 222: break; + case 226: break; case 57: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NOT_EQUAL, yytext()); } - case 223: break; + case 227: break; case 58: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DECREMENT, yytext()); } - case 224: break; + case 228: break; case 59: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MINUS, yytext()); } - case 225: break; + case 229: break; case 60: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SHIFT_RIGHT, yytext()); } - case 226: break; + case 230: break; case 61: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.GREATER_EQUAL, yytext()); } - case 227: break; + case 231: break; case 62: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NAMESPACE_OP, yytext()); } - case 228: break; + case 232: break; case 63: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.EQUALS, yytext()); } - case 229: break; + case 233: break; case 64: { return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, Long.parseLong(yytext(), 8)); } - case 230: break; + case 234: break; case 65: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_PLUS, yytext()); } - case 231: break; + case 235: break; case 66: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.INCREMENT, yytext()); } - case 232: break; + case 236: break; case 67: { return new ParsedSymbol(SymbolGroup.NAMESPACESUFFIX, SymbolType.NAMESPACESUFFIX, Integer.parseInt(yytext().substring(1))); } - case 233: break; + case 237: break; case 68: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.AS, yytext()); } - case 234: break; + case 238: break; case 69: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IF, yytext()); } - case 235: break; + case 239: break; case 70: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.IS, yytext()); } - case 236: break; + case 240: break; case 71: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IN, yytext()); } - case 237: break; + case 241: break; case 72: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.DO, yytext()); } - case 238: break; + case 242: break; case 73: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_BITAND, yytext()); } - case 239: break; + case 243: break; case 74: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.AND, yytext()); } - case 240: break; + case 244: break; case 75: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_BITOR, yytext()); } - case 241: break; + case 245: break; case 76: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.OR, yytext()); } - case 242: break; + case 246: break; case 77: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_XOR, yytext()); } - case 243: break; + case 247: break; case 78: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MODULO, yytext()); } - case 244: break; + case 248: break; case 79: { /* ignore illegal character escape */ } - case 245: break; + case 249: break; case 80: { string.append('\"'); } - case 246: break; + case 250: break; case 81: { string.append('\''); } - case 247: break; + case 251: break; case 82: { string.append('\f'); } - case 248: break; + case 252: break; case 83: { string.append('\\'); } - case 249: break; + case 253: break; case 84: { string.append('\b'); } - case 250: break; + case 254: break; case 85: { string.append('\r'); } - case 251: break; + case 255: break; case 86: { string.append('\n'); } - case 252: break; + case 256: break; case 87: { string.append('\t'); } - case 253: break; + case 257: break; case 88: { yybegin(XML); pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_STARTFINISHTAG_END, yytext())); @@ -1712,7 +1726,7 @@ public final class ActionScriptLexer { } return lex(); } - case 254: break; + case 258: break; case 89: { yybegin(XMLOPENTAGATTRIB); pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRIBUTENAME, yytext())); @@ -1722,12 +1736,12 @@ public final class ActionScriptLexer { } return lex(); } - case 255: break; + case 259: break; case 90: { yybegin(XMLOPENTAG); return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRIBUTEVALUE, yytext()); } - case 256: break; + case 260: break; case 91: { yybegin(XMLINSTRATTRIB); pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRIBUTENAME, yytext())); @@ -1737,7 +1751,7 @@ public final class ActionScriptLexer { } return lex(); } - case 257: break; + case 261: break; case 92: { yybegin(XML); pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_INSTR_END, yytext())); @@ -1747,12 +1761,12 @@ public final class ActionScriptLexer { } return lex(); } - case 258: break; + case 262: break; case 93: { yybegin(XMLINSTROPENTAG); return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRIBUTEVALUE, yytext()); } - case 259: break; + case 263: break; case 94: { yybegin(XMLOPENTAG); pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_STARTTAG_BEGIN, yytext())); @@ -1762,7 +1776,7 @@ public final class ActionScriptLexer { } return lex(); } - case 260: break; + case 264: break; case 95: { yybegin(YYINITIAL); pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_STARTVARTAG_BEGIN, yytext())); @@ -1772,83 +1786,83 @@ public final class ActionScriptLexer { } return lex(); } - case 261: break; + case 265: break; case 96: { throw new AVM2ParseException("Illegal escape sequence \"" + yytext() + "\"", yyline + 1); } - case 262: break; + case 266: break; case 97: { string.append('\u00A7'); } - case 263: break; + case 267: break; case 98: { return new ParsedSymbol(SymbolGroup.REGEXP, SymbolType.REGEXP, yytext()); } - case 264: break; + case 268: break; case 99: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.REST, yytext()); } - case 265: break; + case 269: break; case 100: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_SHIFT_LEFT, yytext()); } - case 266: break; + case 270: break; case 101: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.STRICT_NOT_EQUAL, yytext()); } - case 267: break; + case 271: break; case 102: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.USHIFT_RIGHT, yytext()); } - case 268: break; + case 272: break; case 103: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_SHIFT_RIGHT, yytext()); } - case 269: break; + case 273: break; case 104: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.STRICT_EQUALS, yytext()); } - case 270: break; + case 274: break; case 105: { return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, Long.parseLong(yytext().substring(2), 16)); } - case 271: break; + case 275: break; case 106: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FOR, yytext()); } - case 272: break; + case 276: break; case 107: { return new ParsedSymbol(SymbolGroup.PREPROCESSOR, SymbolType.PREPROCESSOR, yytext().substring(2)); } - case 273: break; + case 277: break; case 108: { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.SET, yytext()); } - case 274: break; + case 278: break; case 109: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NEW, yytext()); } - case 275: break; + case 279: break; case 110: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.TRY, yytext()); } - case 276: break; + case 280: break; case 111: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.USE, yytext()); } - case 277: break; + case 281: break; case 112: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.VAR, yytext()); } - case 278: break; + case 282: break; case 113: { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.GET, yytext()); } - case 279: break; + case 283: break; case 114: { return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NAN, yytext()); } - case 280: break; + case 284: break; case 115: { string.append(yytext()); yybegin(XML); @@ -1856,7 +1870,7 @@ public final class ActionScriptLexer { string.setLength(0); return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_CDATA, ret); } - case 281: break; + case 285: break; case 116: { string.append(yytext()); yybegin(XML); @@ -1864,7 +1878,7 @@ public final class ActionScriptLexer { string.setLength(0); return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_COMMENT, ret); } - case 282: break; + case 286: break; case 117: { yybegin(YYINITIAL); pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_FINISHVARTAG_BEGIN, yytext())); @@ -1874,7 +1888,7 @@ public final class ActionScriptLexer { } return lex(); } - case 283: break; + case 287: break; case 118: { yybegin(XMLINSTROPENTAG); pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_INSTR_BEGIN, yytext())); @@ -1884,7 +1898,7 @@ public final class ActionScriptLexer { } return lex(); } - case 284: break; + case 288: break; case 119: { yybegin(YYINITIAL); pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_INSTRVARTAG_BEGIN, yytext())); @@ -1894,49 +1908,69 @@ public final class ActionScriptLexer { } return lex(); } - case 285: break; - case 120: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_USHIFT_RIGHT, yytext()); - } - case 286: break; - case 121: - { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.EACH, yytext()); - } - case 287: break; - case 122: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.ELSE, yytext()); - } - case 288: break; - case 123: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CASE, yytext()); - } case 289: break; - case 124: - { return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NULL, yytext()); + case 120: + { string.append(yytext()); + yybegin(YYINITIAL); + String ret = string.toString(); + string.setLength(0); + return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_CDATA, ret); } case 290: break; - case 125: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.TRUE, yytext()); + case 121: + { string.append(yytext()); + yybegin(YYINITIAL); + String ret = string.toString(); + string.setLength(0); + return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_COMMENT, ret); } case 291: break; - case 126: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.THIS, yytext()); + case 122: + { string.setLength(0); string.append(yytext() ); yybegin(XMLCOMMENTALONE); } case 292: break; - case 127: - { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.WITH, yytext()); + case 123: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_USHIFT_RIGHT, yytext()); } case 293: break; - case 128: - { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.VOID, yytext()); + case 124: + { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.EACH, yytext()); } case 294: break; + case 125: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.ELSE, yytext()); + } + case 295: break; + case 126: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CASE, yytext()); + } + case 296: break; + case 127: + { return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NULL, yytext()); + } + case 297: break; + case 128: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.TRUE, yytext()); + } + case 298: break; case 129: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.THIS, yytext()); + } + case 299: break; + case 130: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.WITH, yytext()); + } + case 300: break; + case 131: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.VOID, yytext()); + } + case 301: break; + case 132: { char val = (char) Integer.parseInt(yytext().substring(2), 16); string.append(val); } - case 295: break; - case 130: + case 302: break; + case 133: { pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_FINISHTAG, yytext())); if (string.length() > 0){ pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString())); @@ -1944,153 +1978,157 @@ public final class ActionScriptLexer { } return lex(); } - case 296: break; - case 131: + case 303: break; + case 134: { String ret = string.toString(); string.setLength(0); string.append(yytext()); yybegin(XMLCOMMENT); if (!ret.isEmpty()) return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, ret); } - case 297: break; - case 132: + case 304: break; + case 135: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FALSE, yytext()); } - case 298: break; - case 133: + case 305: break; + case 136: { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.FINAL, yytext()); } - case 299: break; - case 134: + case 306: break; + case 137: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.BREAK, yytext()); } - case 300: break; - case 135: + case 307: break; + case 138: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CATCH, yytext()); } - case 301: break; - case 136: + case 308: break; + case 139: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CONST, yytext()); } - case 302: break; - case 137: + case 309: break; + case 140: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CLASS, yytext()); } - case 303: break; - case 138: + case 310: break; + case 141: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.SUPER, yytext()); } - case 304: break; - case 139: + case 311: break; + case 142: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.THROW, yytext()); } - case 305: break; - case 140: + case 312: break; + case 143: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.WHILE, yytext()); } - case 306: break; - case 141: + case 313: break; + case 144: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.RETURN, yytext()); } - case 307: break; - case 142: + case 314: break; + case 145: { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.STATIC, yytext()); } - case 308: break; - case 143: + case 315: break; + case 146: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.SWITCH, yytext()); } - case 309: break; - case 144: + case 316: break; + case 147: { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.NATIVE, yytext()); } - case 310: break; - case 145: + case 317: break; + case 148: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.TYPEOF, yytext()); } - case 311: break; - case 146: + case 318: break; + case 149: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IMPORT, yytext()); } - case 312: break; - case 147: + case 319: break; + case 150: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DELETE, yytext()); } - case 313: break; - case 148: + case 320: break; + case 151: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PUBLIC, yytext()); } - case 314: break; - case 149: + case 321: break; + case 152: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FINALLY, yytext()); } - case 315: break; - case 150: + case 322: break; + case 153: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.EXTENDS, yytext()); } - case 316: break; - case 151: + case 323: break; + case 154: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.DEFAULT, yytext()); } - case 317: break; - case 152: + case 324: break; + case 155: { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.DYNAMIC, yytext()); } - case 318: break; - case 153: + case 325: break; + case 156: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PRIVATE, yytext()); } - case 319: break; - case 154: + case 326: break; + case 157: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PACKAGE, yytext()); } - case 320: break; - case 155: + case 327: break; + case 158: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FUNCTION, yytext()); } - case 321: break; - case 156: + case 328: break; + case 159: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CONTINUE, yytext()); } - case 322: break; - case 157: + case 329: break; + case 160: { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.OVERRIDE, yytext()); } - case 323: break; - case 158: + case 330: break; + case 161: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.INTERNAL, yytext()); } - case 324: break; - case 159: + case 331: break; + case 162: { return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.INFINITY, yytext()); } - case 325: break; - case 160: + case 332: break; + case 163: + { string.setLength(0); string.append(yytext() ); yybegin(XMLCDATAALONE); + } + case 333: break; + case 164: { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.NAMESPACE, yytext()); } - case 326: break; - case 161: + case 334: break; + case 165: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.INTERFACE, yytext()); } - case 327: break; - case 162: + case 335: break; + case 166: { return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.UNDEFINED, yytext()); } - case 328: break; - case 163: + case 336: break; + case 167: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PROTECTED, yytext()); } - case 329: break; - case 164: + case 337: break; + case 168: { String ret = string.toString(); string.setLength(0); string.append(yytext() ); yybegin(XMLCDATA); if (!ret.isEmpty()) return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, ret); } - case 330: break; - case 165: + case 338: break; + case 169: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.INSTANCEOF, yytext()); } - case 331: break; - case 166: + case 339: break; + case 170: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IMPLEMENTS, yytext()); } - case 332: break; + case 340: break; default: if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { zzAtEOF = true; diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java index 109d2da75..c6d5127dd 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java @@ -1666,7 +1666,14 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "};\r\n" + "}\r\n" + "]]>\r\n" - + ";\r\n", + + ";\r\n" + + "var testCdata:XML = ;\r\n" + + "var testComment:XML = ;\r\n", false); } } diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java index c286edf22..36a0f2a58 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java @@ -1545,6 +1545,8 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes @Test public void testXml() { decompileMethod("classic", "testXml", "var g:XML = null;\r\n" + + "var testCdata:XML = null;\r\n" + + "var testComment:XML = null;\r\n" + "var name:String = \"ahoj\";\r\n" + "var myXML:XML = \r\n" + "\r\n" @@ -1654,7 +1656,14 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "};\r\n" + "}\r\n" + "]]>\r\n" - + ";\r\n", + + ";\r\n" + + "testCdata = ;\r\n" + + "testComment = ;\r\n", false); } } diff --git a/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf b/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf index 8ffeef88c..14f33202d 100644 Binary files a/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf and b/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf differ diff --git a/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.flex.swf b/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.flex.swf index 3763caf20..cc3291a17 100644 Binary files a/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.flex.swf and b/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.flex.swf differ diff --git a/libsrc/ffdec_lib/testdata/as3_new/obj/as3_newConfig.old b/libsrc/ffdec_lib/testdata/as3_new/obj/as3_newConfig.old index 7a99320ad..48bbe0213 100644 --- a/libsrc/ffdec_lib/testdata/as3_new/obj/as3_newConfig.old +++ b/libsrc/ffdec_lib/testdata/as3_new/obj/as3_newConfig.old @@ -16,7 +16,7 @@ CONFIG::timeStamp - '12.03.2021' + '13.03.2021' CONFIG::air diff --git a/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestXml.as b/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestXml.as index 4f2618f9f..9a506bfee 100644 --- a/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestXml.as +++ b/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestXml.as @@ -17,7 +17,17 @@ package tests k=myXML.book; k=myXML.book.(@isbn=="12345"); - var g:XML=new XML(""); + var g:XML = new XML(""); + + var testCdata:XML = ; + + var testComment:XML = ; + } } diff --git a/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/actionscript3.flex b/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/actionscript3.flex index ef37e8af7..271b5faf5 100644 --- a/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/actionscript3.flex +++ b/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/actionscript3.flex @@ -91,6 +91,11 @@ EndOfLineComment = "//" {InputCharacter}* {LineTerminator}? IdentFirst = [\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Lo}_$] IdentNext = {IdentFirst} | [\p{Nl}\p{Mn}\p{Mc}\p{Nd}\p{Pc}] +XmlCommentStart = "" + +XmlCDataStart = "" /* identifiers */ Identifier = {IdentFirst}{IdentNext}* @@ -143,7 +148,7 @@ NamespaceSuffix = "#" {DecIntegerLiteral} RegExp = \/([^\r\n/]|\\\/)+\/[a-z]* -%state STRING, CHARLITERAL, XMLSTARTTAG, XML, OIDENTIFIER +%state STRING, CHARLITERAL, XMLSTARTTAG, XML, OIDENTIFIER, XMLCOMMENT, XMLCDATA %% @@ -211,6 +216,15 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]* } } + {XmlCommentStart} { + yybegin(XMLCOMMENT); + return token(TokenType.STRING); + } + {XmlCDataStart} { + yybegin(XMLCDATA); + return token(TokenType.STRING); + } + /* operators */ "(" { return token(TokenType.OPERATOR, PARAN); } @@ -322,12 +336,6 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]* } xmlTagName = s; } - /*{XMLBeginTag} { yybegin(XMLSTARTTAG); - tokenStart = yychar; - tokenLength = yylength(); - String s=yytext(); - xmlTagName = s.substring(1); - }*/ /* identifiers */ {Identifier}{NamespaceSuffix} { return token(TokenType.REGEX); } {Identifier} { return token(TokenType.IDENTIFIER); } @@ -406,6 +414,28 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]* {LineTerminator} { yybegin(YYINITIAL); } } + { + {XmlCommentEnd} { + yybegin(YYINITIAL); + return token(TokenType.STRING); + } + ~{XmlCommentEnd} { + yypushback(3); + return token(TokenType.STRING); + } +} + + { + {XmlCDataEnd} { + yybegin(YYINITIAL); + return token(TokenType.STRING); + } + ~{XmlCDataEnd} { + yypushback(3); + return token(TokenType.STRING); + } +} + /* error fallback */ [^] { } <> { return null; }