diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f5e53f62..4b8a0a315 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file. ## [Unreleased] ### Fixed - [#1981] AS3 fully qualified (colliding) types in submethods +- AS3 direct editation - Allow member or call for doubles +- AS3 direct editation - Allow comma operator in XML filter operation +- AS3 direct editation - Allow comma operator in switch expressions +- AS3 XML embedded variables display and direct edit ## [18.3.6] - 2023-02-25 ### Fixed diff --git a/lib/jsyntaxpane-0.9.5.jar b/lib/jsyntaxpane-0.9.5.jar index 4224447e4..70ab648b9 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 24d63e88d..0298a68d2 100644 --- a/libsrc/ffdec_lib/lexers/actionscript3_script.flex +++ b/libsrc/ffdec_lib/lexers/actionscript3_script.flex @@ -38,6 +38,8 @@ import java.math.BigInteger; private int repeatNum = 1; + private boolean enableWhiteSpace = false; + public ActionScriptLexer(String sourceCode){ this(new StringReader(sourceCode)); this.sourceCode = sourceCode; @@ -53,6 +55,17 @@ import java.math.BigInteger; yyline = newYyline; } + public void setEnableWhiteSpace(boolean enable) + { + this.enableWhiteSpace = enable; + } + + public void begin(int state) + { + string.setLength(0); + yybegin(state); + } + public void yypushbackstr(String s) { yypushbackstr(s, YYINITIAL); @@ -216,7 +229,7 @@ NamespaceSuffix = "#" {DecIntegerLiteral} RegExp = \/([^\r\n/]|\\\/)+\/[a-z]* -%state STRING, CHARLITERAL,XMLOPENTAG,XMLOPENTAGATTRIB,XMLINSTROPENTAG,XMLINSTRATTRIB,XMLCDATA,XMLCOMMENT,XML,OIDENTIFIER,XMLCDATAALONE,XMLCOMMENTALONE +%state STRING, CHARLITERAL,XMLOPENTAG,XMLCLOSETAGFINISH,XMLOPENTAGATTRIB,XMLINSTR,XMLCDATA,XMLCOMMENT,XML,OIDENTIFIER,XMLCDATAALONE,XMLCOMMENTALONE %% @@ -387,9 +400,12 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]* /* comments */ {Comment} { yyline += count(yytext(),"\n"); } - {LineTerminator} { yyline++;} + {LineTerminator} { + yyline++; + if (enableWhiteSpace) { return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_WHITESPACE, yytext()); } + } /* whitespace */ - {WhiteSpace} { /*ignore*/ } + {WhiteSpace} { if (enableWhiteSpace) { return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_WHITESPACE, yytext()); } } {TypeNameSpec} { return new ParsedSymbol(SymbolGroup.TYPENAME, SymbolType.TYPENAME, yytext()); } {XmlOpenTagStart} { yybegin(XMLOPENTAG); @@ -410,7 +426,22 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]* {NamespaceSuffix} { return new ParsedSymbol(SymbolGroup.NAMESPACESUFFIX, SymbolType.NAMESPACESUFFIX, Integer.parseInt(yytext().substring(1))); } } - { + { + ">" { + yybegin(XML); + pushback(new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.GREATER_THAN, yytext())); + if (string.length() > 0){ + pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString())); + string.setLength(0); + } + return lex(); + } + + {LineTerminator} { string.append(yytext()); yyline++;} + (\u0020 | \u0009)+ { string.append(yytext()); } +} + + { {XmlAttribute} { yybegin(XMLOPENTAGATTRIB); pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRIBUTENAME, yytext())); @@ -446,7 +477,7 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]* string.setLength(0); } return lex(); - } + } {LineTerminator} { string.append(yytext()); yyline++;} {WhiteSpace} { string.append(yytext()); } } @@ -465,54 +496,18 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]* } - { - {XmlAttribute} { - yybegin(XMLINSTRATTRIB); - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRIBUTENAME, yytext())); - if (string.length() > 0){ - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString())); - string.setLength(0); - } - return lex(); - } - "{" { - yybegin(YYINITIAL); - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_INSTRATTRNAMEVAR_BEGIN, yytext())); - if (string.length() > 0){ - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString())); - string.setLength(0); - } - return lex(); - } + { {XmlInstrEnd} { yybegin(XML); - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_INSTR_END, yytext())); - if (string.length() > 0){ - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString())); - string.setLength(0); - } - return lex(); + string.append(yytext()); + String tos = string.toString(); + string.setLength(0); + return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_INSTR, tos); } {LineTerminator} { string.append(yytext()); yyline++;} - {WhiteSpace} { string.append(yytext()); } + [^] { string.append(yytext()); } } - { - \"{XmlDQuoteStringChar}*\" { - yybegin(XMLINSTROPENTAG); - return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRIBUTEVALUE, yytext()); - } - \"{XmlSQuoteStringChar}*\" { - yybegin(XMLINSTROPENTAG); - return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRIBUTEVALUE, yytext()); - } - "{" { - yybegin(YYINITIAL); - return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_INSTRATTRVALVAR_BEGIN, yytext()); - } -} - - { {XmlCDataEnd} { string.append(yytext()); @@ -567,23 +562,15 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]* if (!ret.isEmpty()) return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, ret); } {XmlInstrStart} { - yybegin(XMLINSTROPENTAG); - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_INSTR_BEGIN, yytext())); + yybegin(XMLINSTR); if (string.length() > 0){ - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString())); + String tos = string.toString(); string.setLength(0); + string.append(yytext()); + return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, tos); } - return lex(); - } - " 0){ - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString())); - string.setLength(0); - } - return lex(); - } + string.append(yytext()); + } {XmlCommentStart} { String ret = string.toString(); string.setLength(0); string.append(yytext()); yybegin(XMLCOMMENT); if (!ret.isEmpty()) return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, ret); @@ -605,7 +592,7 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]* } return lex(); } - + "<{" { yybegin(YYINITIAL); pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_STARTVARTAG_BEGIN, yytext())); @@ -671,7 +658,9 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]* \" { yybegin(YYINITIAL); // length also includes the trailing quote - return new ParsedSymbol(SymbolGroup.STRING, SymbolType.STRING, string.toString()); + String tos = string.toString(); + string.setLength(0); + return new ParsedSymbol(SymbolGroup.STRING, SymbolType.STRING, tos); } {StringCharacter}+ { string.append(yytext()); } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/construction/ConstructIns.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/construction/ConstructIns.java index e1265c429..b9f9c62b0 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/construction/ConstructIns.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/construction/ConstructIns.java @@ -30,10 +30,13 @@ import com.jpexs.decompiler.flash.abc.avm2.model.FindPropertyAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.FullMultinameAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.GetLexAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.GetPropertyAVM2Item; +import com.jpexs.decompiler.flash.abc.avm2.model.GetSlotAVM2Item; +import com.jpexs.decompiler.flash.abc.avm2.model.LocalRegAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.RegExpAvm2Item; import com.jpexs.decompiler.flash.abc.avm2.model.StringAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.XMLAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.operations.AddAVM2Item; +import com.jpexs.decompiler.flash.abc.avm2.parser.script.SlotAVM2Item; import com.jpexs.decompiler.flash.ecma.ObjectType; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.TranslateStack; @@ -76,17 +79,28 @@ public class ConstructIns extends InstructionDefinition { } public static boolean walkXML(GraphTargetItem item, List list) { - boolean ret = true; - if (item instanceof StringAVM2Item) { - list.add(item); - } else if (item instanceof AddAVM2Item) { - ret = ret && walkXML(((AddAVM2Item) item).leftSide, list); - ret = ret && walkXML(((AddAVM2Item) item).rightSide, list); + boolean ret = walkXMLSub(item, list); + if (list.size() == 1) { + return true; + } + return ret; + } + public static boolean walkXMLSub(GraphTargetItem item, List list) { + boolean ret = false; + if (item instanceof AddAVM2Item) { + if (walkXMLSub(((AddAVM2Item) item).leftSide, list)) { + ret = true; + } + if (walkXMLSub(((AddAVM2Item) item).rightSide, list)) { + ret = true; + } } else if ((item instanceof EscapeXElemAVM2Item) || (item instanceof EscapeXAttrAVM2Item)) { + ret = true; list.add(item); } else { - return false; + list.add(item); } + return ret; } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/XMLAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/XMLAVM2Item.java index 4d6bd89f2..95a853cf3 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/XMLAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/XMLAVM2Item.java @@ -45,12 +45,30 @@ public class XMLAVM2Item extends AVM2Item { } @Override - public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException { - for (GraphTargetItem part : parts) { + public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException { + for (int i = 0; i < parts.size(); i++) { + GraphTargetItem part = parts.get(i); + GraphTargetItem partBefore = i > 0 ? parts.get(i - 1) : null; + GraphTargetItem partAfter = i < parts.size() - 1 ? parts.get(i + 1) : null; if (part instanceof StringAVM2Item) { - writer.append(((StringAVM2Item) part).getValue()); - } else { + String s = ((StringAVM2Item) part).getValue(); + if (partAfter instanceof EscapeXAttrAVM2Item) { + if (s.endsWith("\"")) { + s = s.substring(0, s.length() - 1); + } + } + if (partBefore instanceof EscapeXAttrAVM2Item) { + if (s.startsWith("\"")) { + s = s.substring(1); + } + } + writer.append(s); + } else if ((part instanceof EscapeXElemAVM2Item) || (part instanceof EscapeXAttrAVM2Item)) { part.toString(writer, localData); + } else { + writer.append("{"); + part.appendTo(writer, localData); + writer.append("}"); } } return writer; 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 c2b37e62e..16b506253 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 @@ -129,6 +129,7 @@ import java.util.Map; import java.util.Stack; import java.util.logging.Level; import java.util.logging.Logger; +import java.util.regex.Pattern; /** * @@ -1253,7 +1254,7 @@ public class ActionScript3Parser { } } - private List xmltag(List> allOpenedNamespaces, TypeItem thisType, NamespaceItem pkg, Reference usesVars, List openedTags, Reference closedVarTags, Reference needsActivation, List importedClasses, List openedNamespaces, HashMap registerVars, boolean inFunction, boolean inMethod, List variables) throws IOException, AVM2ParseException, InterruptedException { + private List xmltag(List> allOpenedNamespaces, TypeItem thisType, NamespaceItem pkg, Reference usesVars, List openedTags, Reference needsActivation, List importedClasses, List openedNamespaces, HashMap registerVars, boolean inFunction, boolean inMethod, List variables) throws IOException, AVM2ParseException, InterruptedException { ParsedSymbol s; List rets = new ArrayList<>(); //GraphTargetItem ret = null; @@ -1262,10 +1263,9 @@ public class ActionScript3Parser { do { s = lex(); List sub = new ArrayList<>(); - Reference subclose = new Reference<>(0); Reference subusesvars = new Reference<>(false); switch (s.type) { - case XML_ATTRNAMEVAR_BEGIN: //add + case XML_ATTRNAMEVAR_BEGIN: // {...}= add usesVars.setVal(true); addS(rets, sb); rets.add(expression(allOpenedNamespaces, thisType, pkg, needsActivation, importedClasses, openedNamespaces, registerVars, inFunction, inMethod, true, variables, false)); @@ -1274,7 +1274,7 @@ public class ActionScript3Parser { sb.append("="); lexer.yybegin(ActionScriptLexer.XMLOPENTAGATTRIB); break; - case XML_ATTRVALVAR_BEGIN: //esc_xattr + case XML_ATTRVALVAR_BEGIN: // ={...} esc_xattr usesVars.setVal(true); sb.append("\""); addS(rets, sb); @@ -1282,49 +1282,37 @@ public class ActionScript3Parser { sb.append("\""); expectedType(SymbolType.CURLY_CLOSE); lexer.yybegin(ActionScriptLexer.XMLOPENTAG); - break; - case XML_INSTRATTRNAMEVAR_BEGIN: //add - usesVars.setVal(true); - addS(rets, sb); - rets.add(expression(allOpenedNamespaces, thisType, pkg, needsActivation, importedClasses, openedNamespaces, registerVars, inFunction, inMethod, true, variables, false)); - expectedType(SymbolType.CURLY_CLOSE); - expectedType(SymbolType.ASSIGN); - sb.append("="); - lexer.yybegin(ActionScriptLexer.XMLOPENTAGATTRIB); - break; - case XML_INSTRATTRVALVAR_BEGIN: //esc_xattr - usesVars.setVal(true); - sb.append("\""); - addS(rets, sb); - rets.add(new EscapeXAttrAVM2Item(null, null, expression(allOpenedNamespaces, thisType, pkg, needsActivation, importedClasses, openedNamespaces, registerVars, inFunction, inMethod, true, variables, false))); - sb.append("\""); - expectedType(SymbolType.CURLY_CLOSE); - lexer.yybegin(ActionScriptLexer.XMLOPENTAG); - break; - case XML_VAR_BEGIN: //esc_xelem + break; + case XML_VAR_BEGIN: // {...} esc_xelem usesVars.setVal(true); addS(rets, sb); rets.add(new EscapeXElemAVM2Item(null, null, expression(allOpenedNamespaces, thisType, pkg, needsActivation, importedClasses, openedNamespaces, registerVars, inFunction, inMethod, true, variables, false))); expectedType(SymbolType.CURLY_CLOSE); lexer.yybegin(ActionScriptLexer.XML); break; - case XML_FINISHVARTAG_BEGIN: //add + case XML_FINISHVARTAG_BEGIN: // add usesVars.setVal(true); - closedVarTags.setVal(closedVarTags.getVal() + 1); sb.append(""); addS(rets, sb); - lexer.yybegin(ActionScriptLexer.XML); + + if (openedTags.isEmpty()) { + throw new AVM2ParseException("XML : Closing unopened tag", lexer.yyline()); + } + openedTags.remove(openedTags.size() - 1); break; - case XML_STARTVARTAG_BEGIN: //add - //openedTags.add("*"); - - //ret = add(ret, ); + case XML_STARTVARTAG_BEGIN: // <{...}> add GraphTargetItem ex = expression(allOpenedNamespaces, thisType, pkg, needsActivation, importedClasses, openedNamespaces, registerVars, inFunction, inMethod, true, variables, false); expectedType(SymbolType.CURLY_CLOSE); lexer.yybegin(ActionScriptLexer.XMLOPENTAG); @@ -1332,36 +1320,23 @@ public class ActionScript3Parser { sb.append("<"); addS(rets, sb); rets.add(ex); - rets.addAll(xmltag(allOpenedNamespaces, thisType, pkg, subusesvars, sub, subclose, needsActivation, importedClasses, openedNamespaces, registerVars, inFunction, inMethod, variables)); - closedVarTags.setVal(subclose.getVal() + subclose.getVal()); + rets.addAll(xmltag(allOpenedNamespaces, thisType, pkg, subusesvars, sub, needsActivation, importedClasses, openedNamespaces, registerVars, inFunction, inMethod, variables)); break; - case XML_INSTRVARTAG_BEGIN: //add - usesVars.setVal(true); - addS(rets, sb); - sb.append(" sub.add(s.value.toString().trim().substring(1)); //remove < from beginning - List st = xmltag(allOpenedNamespaces, thisType, pkg, subusesvars, sub, closedVarTags, needsActivation, importedClasses, openedNamespaces, registerVars, inFunction, inMethod, variables); + List st = xmltag(allOpenedNamespaces, thisType, pkg, subusesvars, sub, needsActivation, importedClasses, openedNamespaces, registerVars, inFunction, inMethod, variables); sb.append(s.value.toString()); addS(rets, sb); rets.addAll(st); - closedVarTags.setVal(subclose.getVal() + subclose.getVal()); break; - /*case XML_STARTTAG_END: - sb.append(s.value.toString()); - ret = addstr(ret,sb); - break;*/ case XML_FINISHTAG: String tname = s.value.toString().substring(2, s.value.toString().length() - 1).trim(); - if (openedTags.contains(tname)) { - openedTags.remove(tname); - } else if (openedTags.contains("*")) { - openedTags.remove("*"); + if (openedTags.isEmpty()) { + throw new AVM2ParseException("XML : Closing unopened tag", lexer.yyline()); + } + String lastTName = openedTags.get(openedTags.size() - 1); + if (lastTName.equals(tname) || lastTName.equals("*")) { + openedTags.remove(openedTags.size() - 1); } else { throw new AVM2ParseException("XML : Closing unopened tag", lexer.yyline()); } @@ -1377,18 +1352,26 @@ public class ActionScript3Parser { sb.append(s.value.toString()); break; } - } while (!(openedTags.isEmpty() || closedVarTags.getVal() >= openedTags.size())); + } while (!openedTags.isEmpty()); addS(rets, sb); return rets; } private GraphTargetItem xml(List> allOpenedNamespaces, TypeItem thisType, NamespaceItem pkg, Reference needsActivation, List importedClasses, List openedNamespaces, HashMap registerVars, boolean inFunction, boolean inMethod, List variables) throws IOException, AVM2ParseException, InterruptedException { - List openedTags = new ArrayList<>(); - int closedVarTags = 0; - - GraphTargetItem ret = add(xmltag(allOpenedNamespaces, thisType, pkg, new Reference<>(false), openedTags, new Reference<>(closedVarTags), needsActivation, importedClasses, openedNamespaces, registerVars, inFunction, inMethod, variables)); + List openedTags = new ArrayList<>(); + List xmlParts = xmltag(allOpenedNamespaces, thisType, pkg, new Reference<>(false), openedTags, needsActivation, importedClasses, openedNamespaces, registerVars, inFunction, inMethod, variables); + lexer.setEnableWhiteSpace(true); + lexer.begin(ActionScriptLexer.YYINITIAL); + ParsedSymbol s = lexer.lex(); + while (s.isType(SymbolType.XML_WHITESPACE)) { + addS(xmlParts, new StringBuilder(s.value.toString())); + s = lexer.lex(); + } + lexer.setEnableWhiteSpace(false); + lexer.pushback(s); + GraphTargetItem ret = add(xmlParts); ret = new XMLAVM2Item(ret); - lexer.yybegin(ActionScriptLexer.YYINITIAL); + //lexer.yybegin(ActionScriptLexer.YYINITIAL); //TODO: Order of additions as in official compiler return ret; } @@ -2282,6 +2265,7 @@ public class ActionScript3Parser { break; case XML_STARTTAG_BEGIN: + case XML_STARTVARTAG_BEGIN: case XML_CDATA: case XML_COMMENT: lexer.pushback(s); 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 f21a88efb..07d49c9fd 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 @@ -43,9 +43,9 @@ public final class ActionScriptLexer { public static final int STRING = 2; public static final int CHARLITERAL = 4; public static final int XMLOPENTAG = 6; - public static final int XMLOPENTAGATTRIB = 8; - public static final int XMLINSTROPENTAG = 10; - public static final int XMLINSTRATTRIB = 12; + public static final int XMLCLOSETAGFINISH = 8; + public static final int XMLOPENTAGATTRIB = 10; + public static final int XMLINSTR = 12; public static final int XMLCDATA = 14; public static final int XMLCOMMENT = 16; public static final int XML = 18; @@ -242,40 +242,39 @@ public final class ActionScriptLexer { "\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\56\1\1\1\57\2\42\1\0"+ - "\1\60\1\0\1\61\1\0\1\62\1\63\1\64\1\65"+ - "\1\66\1\67\1\70\1\0\1\71\1\72\1\73\1\74"+ - "\1\75\1\76\1\77\1\100\1\0\1\101\1\65\1\102"+ - "\1\0\7\6\1\103\1\104\1\0\2\105\2\6\1\106"+ - "\16\6\1\107\1\110\1\111\4\6\1\112\13\6\1\113"+ - "\1\114\1\115\1\116\1\117\1\120\1\121\1\122\1\123"+ - "\1\121\1\124\1\125\1\126\1\127\1\130\1\131\1\121"+ - "\1\132\1\0\1\133\1\0\1\134\1\0\1\135\1\136"+ - "\1\0\1\137\4\0\1\140\2\0\1\141\2\142\1\143"+ - "\1\144\1\145\1\146\1\147\1\150\1\151\2\142\2\0"+ - "\1\152\2\60\2\0\1\152\2\0\1\152\1\153\1\154"+ - "\2\0\1\155\1\156\1\157\1\0\1\65\1\160\1\161"+ - "\1\6\1\162\5\6\1\163\6\6\1\164\4\6\1\165"+ - "\4\6\1\166\6\6\1\167\12\6\1\170\1\6\1\171"+ - "\1\6\1\172\3\0\1\137\1\173\1\174\1\0\1\175"+ - "\2\0\1\176\1\177\4\0\1\200\1\201\2\0\1\60"+ - "\1\152\1\202\1\0\1\203\4\6\1\204\1\205\2\6"+ - "\1\206\12\6\1\207\1\210\1\6\1\211\11\6\1\212"+ - "\5\6\1\213\1\6\1\214\2\0\1\215\1\216\1\0"+ - "\1\217\1\0\1\220\1\0\1\221\1\222\2\6\1\223"+ - "\1\6\1\224\1\225\1\6\1\226\1\6\1\227\4\6"+ - "\1\230\11\6\1\231\5\6\2\0\3\6\1\232\1\6"+ - "\1\233\1\234\1\6\1\235\1\6\1\236\3\6\1\237"+ - "\3\6\1\240\4\6\1\241\1\6\2\0\1\242\1\6"+ - "\1\243\10\6\1\244\1\245\1\6\1\246\1\247\1\6"+ - "\2\0\1\250\1\251\1\252\3\6\1\253\3\6\1\254"+ - "\1\0\1\255\1\256\1\6\1\257\1\6\1\260\1\261"+ - "\1\262\1\263\1\264"; + "\1\44\1\1\1\42\2\45\1\46\2\47\1\42\2\1"+ + "\1\50\1\51\1\42\1\52\1\1\1\53\3\42\2\54"+ + "\2\42\1\55\1\56\1\1\1\57\2\42\1\0\1\60"+ + "\1\0\1\61\1\0\1\62\1\63\1\64\1\65\1\66"+ + "\1\67\1\70\1\0\1\71\1\72\1\73\1\74\1\75"+ + "\1\76\1\77\1\100\1\0\1\101\1\65\1\102\1\0"+ + "\7\6\1\103\1\104\1\0\2\105\2\6\1\106\16\6"+ + "\1\107\1\110\1\111\4\6\1\112\13\6\1\113\1\114"+ + "\1\115\1\116\1\117\1\120\1\121\1\122\1\123\1\121"+ + "\1\124\1\125\1\126\1\127\1\130\1\131\1\121\1\132"+ + "\1\0\1\133\1\0\1\134\1\135\3\0\1\136\2\0"+ + "\1\137\2\140\1\141\1\142\1\143\1\144\1\145\1\146"+ + "\1\147\2\140\2\0\1\150\2\60\2\0\1\150\2\0"+ + "\1\150\1\151\1\152\2\0\1\153\1\154\1\155\1\0"+ + "\1\65\1\156\1\157\1\6\1\160\5\6\1\161\6\6"+ + "\1\162\4\6\1\163\4\6\1\164\6\6\1\165\12\6"+ + "\1\166\1\6\1\167\1\6\1\170\2\0\1\171\1\172"+ + "\1\0\1\173\2\0\1\174\4\0\1\175\1\176\2\0"+ + "\1\60\1\150\1\177\1\0\1\200\4\6\1\201\1\202"+ + "\2\6\1\203\12\6\1\204\1\205\1\6\1\206\11\6"+ + "\1\207\5\6\1\210\1\6\1\211\2\0\1\212\1\213"+ + "\1\0\1\214\1\0\1\215\1\0\1\216\1\217\2\6"+ + "\1\220\1\6\1\221\1\222\1\6\1\223\1\6\1\224"+ + "\4\6\1\225\11\6\1\226\5\6\2\0\3\6\1\227"+ + "\1\6\1\230\1\231\1\6\1\232\1\6\1\233\3\6"+ + "\1\234\3\6\1\235\4\6\1\236\1\6\2\0\1\237"+ + "\1\6\1\240\10\6\1\241\1\242\1\6\1\243\1\244"+ + "\1\6\2\0\1\245\1\246\1\247\3\6\1\250\3\6"+ + "\1\251\1\0\1\252\1\253\1\6\1\254\1\6\1\255"+ + "\1\256\1\257\1\260\1\261"; private static int [] zzUnpackAction() { - int [] result = new int[468]; + int [] result = new int[459]; int offset = 0; offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); return result; @@ -309,59 +308,58 @@ public final class ActionScriptLexer { "\0\u0c78\0\u0cc4\0\u0d10\0\u0d5c\0\u0da8\0\u0df4\0\u0e40\0\u0e8c"+ "\0\u03dc\0\u03dc\0\u03dc\0\u03dc\0\u03dc\0\u03dc\0\u03dc\0\u0ed8"+ "\0\u0f24\0\u0f70\0\u0fbc\0\u03dc\0\u1008\0\u1054\0\u03dc\0\u03dc"+ - "\0\u10a0\0\u10ec\0\u1138\0\u03dc\0\u1184\0\u03dc\0\u11d0\0\u121c"+ - "\0\u1268\0\u03dc\0\u03dc\0\u12b4\0\u03dc\0\u1300\0\u134c\0\u03dc"+ - "\0\u1398\0\u03dc\0\u03dc\0\u13e4\0\u1430\0\u03dc\0\u147c\0\u14c8"+ - "\0\u03dc\0\u03dc\0\u1514\0\u03dc\0\u1560\0\u15ac\0\u15f8\0\u1644"+ - "\0\u1690\0\u15f8\0\u16dc\0\u03dc\0\u1728\0\u03dc\0\u1774\0\u03dc"+ - "\0\u17c0\0\u180c\0\u1858\0\u03dc\0\u03dc\0\u18a4\0\u03dc\0\u03dc"+ - "\0\u18f0\0\u03dc\0\u03dc\0\u193c\0\u1988\0\u19d4\0\u1a20\0\u1a6c"+ - "\0\u1ab8\0\u1b04\0\u1b50\0\u1b9c\0\u1be8\0\u1c34\0\u1c80\0\u03dc"+ - "\0\u03dc\0\u1ccc\0\u1d18\0\u03dc\0\u1d64\0\u1db0\0\u0558\0\u1dfc"+ + "\0\u10a0\0\u10ec\0\u1138\0\u03dc\0\u03dc\0\u1184\0\u03dc\0\u11d0"+ + "\0\u121c\0\u1268\0\u03dc\0\u03dc\0\u12b4\0\u03dc\0\u1300\0\u03dc"+ + "\0\u03dc\0\u134c\0\u1398\0\u13e4\0\u03dc\0\u1430\0\u147c\0\u03dc"+ + "\0\u03dc\0\u14c8\0\u03dc\0\u1514\0\u1560\0\u15ac\0\u15f8\0\u1644"+ + "\0\u15ac\0\u1690\0\u03dc\0\u16dc\0\u03dc\0\u1728\0\u03dc\0\u1774"+ + "\0\u17c0\0\u180c\0\u03dc\0\u03dc\0\u1858\0\u03dc\0\u03dc\0\u18a4"+ + "\0\u03dc\0\u03dc\0\u18f0\0\u193c\0\u1988\0\u19d4\0\u1a20\0\u1a6c"+ + "\0\u1ab8\0\u1b04\0\u1b50\0\u1b9c\0\u1be8\0\u1c34\0\u03dc\0\u03dc"+ + "\0\u1c80\0\u1ccc\0\u03dc\0\u1d18\0\u1d64\0\u0558\0\u1db0\0\u1dfc"+ "\0\u1e48\0\u1e94\0\u1ee0\0\u1f2c\0\u1f78\0\u1fc4\0\u2010\0\u205c"+ - "\0\u20a8\0\u20f4\0\u2140\0\u218c\0\u21d8\0\u0558\0\u0558\0\u2224"+ - "\0\u2270\0\u22bc\0\u2308\0\u2354\0\u0558\0\u23a0\0\u23ec\0\u2438"+ - "\0\u2484\0\u24d0\0\u251c\0\u2568\0\u25b4\0\u2600\0\u264c\0\u2698"+ + "\0\u20a8\0\u20f4\0\u2140\0\u218c\0\u0558\0\u0558\0\u21d8\0\u2224"+ + "\0\u2270\0\u22bc\0\u2308\0\u0558\0\u2354\0\u23a0\0\u23ec\0\u2438"+ + "\0\u2484\0\u24d0\0\u251c\0\u2568\0\u25b4\0\u2600\0\u264c\0\u03dc"+ "\0\u03dc\0\u03dc\0\u03dc\0\u03dc\0\u03dc\0\u03dc\0\u03dc\0\u03dc"+ - "\0\u03dc\0\u26e4\0\u03dc\0\u03dc\0\u03dc\0\u03dc\0\u03dc\0\u03dc"+ - "\0\u2730\0\u03dc\0\u1268\0\u03dc\0\u12b4\0\u03dc\0\u1300\0\u03dc"+ - "\0\u03dc\0\u1398\0\u277c\0\u27c8\0\u2814\0\u2860\0\u28ac\0\u28f8"+ - "\0\u2944\0\u2990\0\u03dc\0\u03dc\0\u29dc\0\u03dc\0\u03dc\0\u03dc"+ - "\0\u03dc\0\u03dc\0\u03dc\0\u03dc\0\u2a28\0\u2a74\0\u2ac0\0\u2b0c"+ - "\0\u2b58\0\u2ba4\0\u03dc\0\u2bf0\0\u2c3c\0\u2c88\0\u2cd4\0\u2d20"+ - "\0\u2d6c\0\u03dc\0\u03dc\0\u2db8\0\u2e04\0\u03dc\0\u2e50\0\u03dc"+ - "\0\u2e9c\0\u2e9c\0\u03dc\0\u1a6c\0\u2ee8\0\u0558\0\u2f34\0\u2f80"+ - "\0\u2fcc\0\u3018\0\u3064\0\u30b0\0\u30fc\0\u3148\0\u3194\0\u31e0"+ - "\0\u322c\0\u3278\0\u0558\0\u32c4\0\u3310\0\u335c\0\u33a8\0\u0558"+ - "\0\u33f4\0\u3440\0\u348c\0\u34d8\0\u0558\0\u3524\0\u3570\0\u35bc"+ - "\0\u3608\0\u3654\0\u36a0\0\u0558\0\u36ec\0\u3738\0\u3784\0\u37d0"+ - "\0\u381c\0\u3868\0\u38b4\0\u3900\0\u394c\0\u3998\0\u0558\0\u39e4"+ - "\0\u0558\0\u3a30\0\u0558\0\u3a7c\0\u3ac8\0\u277c\0\u03dc\0\u03dc"+ - "\0\u03dc\0\u3b14\0\u03dc\0\u3b60\0\u3bac\0\u3bf8\0\u03dc\0\u3c44"+ - "\0\u3c90\0\u3cdc\0\u3d28\0\u03dc\0\u03dc\0\u3d74\0\u3dc0\0\u2b58"+ - "\0\u3e0c\0\u03dc\0\u3e58\0\u03dc\0\u3ea4\0\u3ef0\0\u3f3c\0\u3f88"+ - "\0\u0558\0\u0558\0\u3fd4\0\u4020\0\u0558\0\u406c\0\u40b8\0\u4104"+ - "\0\u4150\0\u419c\0\u41e8\0\u4234\0\u4280\0\u42cc\0\u4318\0\u0558"+ - "\0\u0558\0\u4364\0\u0558\0\u43b0\0\u43fc\0\u4448\0\u4494\0\u44e0"+ - "\0\u452c\0\u4578\0\u45c4\0\u4610\0\u0558\0\u465c\0\u46a8\0\u46f4"+ - "\0\u4740\0\u478c\0\u0558\0\u47d8\0\u03dc\0\u26e4\0\u4824\0\u03dc"+ - "\0\u03dc\0\u4870\0\u03dc\0\u29dc\0\u03dc\0\u48bc\0\u0558\0\u4908"+ - "\0\u4954\0\u49a0\0\u0558\0\u49ec\0\u0558\0\u0558\0\u4a38\0\u0558"+ - "\0\u4a84\0\u0558\0\u4ad0\0\u4b1c\0\u4b68\0\u4bb4\0\u0558\0\u4c00"+ - "\0\u4c4c\0\u4c98\0\u4ce4\0\u4d30\0\u4d7c\0\u4dc8\0\u4e14\0\u4e60"+ - "\0\u0558\0\u4eac\0\u4ef8\0\u4f44\0\u4f90\0\u4fdc\0\u5028\0\u5074"+ - "\0\u50c0\0\u510c\0\u5158\0\u0558\0\u51a4\0\u0558\0\u0558\0\u51f0"+ - "\0\u0558\0\u523c\0\u0558\0\u5288\0\u52d4\0\u5320\0\u0558\0\u536c"+ - "\0\u53b8\0\u5404\0\u0558\0\u5450\0\u549c\0\u54e8\0\u5534\0\u0558"+ - "\0\u5580\0\u55cc\0\u5618\0\u0558\0\u5664\0\u0558\0\u56b0\0\u56fc"+ - "\0\u5748\0\u5794\0\u57e0\0\u582c\0\u5878\0\u58c4\0\u0558\0\u0558"+ - "\0\u5910\0\u0558\0\u0558\0\u595c\0\u59a8\0\u59f4\0\u0558\0\u0558"+ - "\0\u0558\0\u5a40\0\u5a8c\0\u5ad8\0\u0558\0\u5b24\0\u5b70\0\u5bbc"+ - "\0\u0558\0\u5c08\0\u03dc\0\u0558\0\u5c54\0\u0558\0\u5ca0\0\u0558"+ - "\0\u0558\0\u03dc\0\u0558\0\u0558"; + "\0\u2698\0\u03dc\0\u03dc\0\u03dc\0\u03dc\0\u03dc\0\u03dc\0\u26e4"+ + "\0\u03dc\0\u1268\0\u03dc\0\u1300\0\u03dc\0\u03dc\0\u2730\0\u277c"+ + "\0\u27c8\0\u2814\0\u2860\0\u28ac\0\u03dc\0\u03dc\0\u28f8\0\u03dc"+ + "\0\u03dc\0\u03dc\0\u03dc\0\u03dc\0\u03dc\0\u03dc\0\u2944\0\u2990"+ + "\0\u29dc\0\u2a28\0\u2a74\0\u2ac0\0\u03dc\0\u2b0c\0\u2b58\0\u2ba4"+ + "\0\u2bf0\0\u2c3c\0\u2c88\0\u03dc\0\u03dc\0\u2cd4\0\u2d20\0\u03dc"+ + "\0\u2d6c\0\u03dc\0\u2db8\0\u2db8\0\u03dc\0\u1a20\0\u2e04\0\u0558"+ + "\0\u2e50\0\u2e9c\0\u2ee8\0\u2f34\0\u2f80\0\u2fcc\0\u3018\0\u3064"+ + "\0\u30b0\0\u30fc\0\u3148\0\u3194\0\u0558\0\u31e0\0\u322c\0\u3278"+ + "\0\u32c4\0\u0558\0\u3310\0\u335c\0\u33a8\0\u33f4\0\u0558\0\u3440"+ + "\0\u348c\0\u34d8\0\u3524\0\u3570\0\u35bc\0\u0558\0\u3608\0\u3654"+ + "\0\u36a0\0\u36ec\0\u3738\0\u3784\0\u37d0\0\u381c\0\u3868\0\u38b4"+ + "\0\u0558\0\u3900\0\u0558\0\u394c\0\u0558\0\u3998\0\u39e4\0\u03dc"+ + "\0\u03dc\0\u3a30\0\u03dc\0\u3a7c\0\u3ac8\0\u3b14\0\u3b60\0\u3bac"+ + "\0\u3bf8\0\u3c44\0\u03dc\0\u03dc\0\u3c90\0\u3cdc\0\u2a74\0\u3d28"+ + "\0\u03dc\0\u3d74\0\u03dc\0\u3dc0\0\u3e0c\0\u3e58\0\u3ea4\0\u0558"+ + "\0\u0558\0\u3ef0\0\u3f3c\0\u0558\0\u3f88\0\u3fd4\0\u4020\0\u406c"+ + "\0\u40b8\0\u4104\0\u4150\0\u419c\0\u41e8\0\u4234\0\u0558\0\u0558"+ + "\0\u4280\0\u0558\0\u42cc\0\u4318\0\u4364\0\u43b0\0\u43fc\0\u4448"+ + "\0\u4494\0\u44e0\0\u452c\0\u0558\0\u4578\0\u45c4\0\u4610\0\u465c"+ + "\0\u46a8\0\u0558\0\u46f4\0\u03dc\0\u2698\0\u4740\0\u03dc\0\u03dc"+ + "\0\u478c\0\u03dc\0\u28f8\0\u03dc\0\u47d8\0\u0558\0\u4824\0\u4870"+ + "\0\u48bc\0\u0558\0\u4908\0\u0558\0\u0558\0\u4954\0\u0558\0\u49a0"+ + "\0\u0558\0\u49ec\0\u4a38\0\u4a84\0\u4ad0\0\u0558\0\u4b1c\0\u4b68"+ + "\0\u4bb4\0\u4c00\0\u4c4c\0\u4c98\0\u4ce4\0\u4d30\0\u4d7c\0\u0558"+ + "\0\u4dc8\0\u4e14\0\u4e60\0\u4eac\0\u4ef8\0\u4f44\0\u4f90\0\u4fdc"+ + "\0\u5028\0\u5074\0\u0558\0\u50c0\0\u0558\0\u0558\0\u510c\0\u0558"+ + "\0\u5158\0\u0558\0\u51a4\0\u51f0\0\u523c\0\u0558\0\u5288\0\u52d4"+ + "\0\u5320\0\u0558\0\u536c\0\u53b8\0\u5404\0\u5450\0\u0558\0\u549c"+ + "\0\u54e8\0\u5534\0\u0558\0\u5580\0\u0558\0\u55cc\0\u5618\0\u5664"+ + "\0\u56b0\0\u56fc\0\u5748\0\u5794\0\u57e0\0\u0558\0\u0558\0\u582c"+ + "\0\u0558\0\u0558\0\u5878\0\u58c4\0\u5910\0\u0558\0\u0558\0\u0558"+ + "\0\u595c\0\u59a8\0\u59f4\0\u0558\0\u5a40\0\u5a8c\0\u5ad8\0\u0558"+ + "\0\u5b24\0\u03dc\0\u0558\0\u5b70\0\u0558\0\u5bbc\0\u0558\0\u0558"+ + "\0\u03dc\0\u0558\0\u0558"; private static int [] zzUnpackRowMap() { - int [] result = new int[468]; + int [] result = new int[459]; int offset = 0; offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); return result; @@ -394,406 +392,400 @@ public final class ActionScriptLexer { "\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\11\105\1\111\45\105\1\112\1\113"+ - "\1\114\32\112\1\110\10\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\1\16\2\121"+ - "\4\16\26\121\2\16\1\123\46\16\1\124\44\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"+ - "\1\16\2\126\4\16\26\126\2\16\1\130\46\16\1\131"+ - "\44\16\1\132\12\16\1\133\1\115\1\116\27\133\1\134"+ - "\62\133\1\135\1\136\12\133\1\137\77\133\1\115\1\116"+ - "\7\133\1\140\66\133\1\141\12\133\1\142\1\113\1\114"+ - "\43\142\1\143\1\144\44\142\1\133\1\115\1\116\27\133"+ - "\1\145\62\133\1\135\1\136\12\133\1\146\76\133\116\0"+ - "\1\20\114\0\1\21\7\0\1\21\100\0\1\147\2\0"+ - "\1\147\1\150\1\151\25\147\1\152\12\147\1\153\45\147"+ - "\33\0\1\154\66\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\7\24\4\0\26\24\26\0\1\155\1\156\7\0"+ - "\1\157\13\0\1\157\3\0\1\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\1\0\2\161\4\0"+ - "\26\161\2\0\1\165\45\0\1\166\75\0\1\167\15\0"+ - "\1\170\76\0\1\171\14\0\1\172\77\0\1\173\105\0"+ - "\1\157\10\0\1\33\13\0\1\33\3\0\1\33\2\174"+ - "\102\0\1\175\71\0\1\157\10\0\1\176\13\0\1\177"+ - "\2\200\1\0\1\177\2\174\55\0\3\24\7\0\3\24"+ - "\3\0\4\24\4\0\7\24\4\0\2\24\1\201\3\24"+ - "\1\202\2\24\1\203\1\204\13\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\1\24\1\205\5\24\4\0"+ - "\2\24\1\206\11\24\1\207\11\24\50\0\1\210\11\0"+ - "\1\211\115\0\1\212\66\0\1\213\13\0\1\214\3\0"+ - "\1\213\57\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\7\24\4\0\1\24\1\215\24\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\6\24\1\216\4\0\26\24"+ - "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\7\24"+ - "\4\0\5\24\1\217\20\24\23\0\3\24\7\0\3\24"+ - "\3\0\4\24\4\0\7\24\4\0\2\24\1\220\3\24"+ - "\1\221\5\24\1\222\11\24\23\0\3\24\7\0\3\24"+ - "\3\0\4\24\4\0\6\24\1\223\4\0\10\24\1\224"+ - "\1\24\1\225\2\24\1\226\10\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\7\24\4\0\22\24\1\227"+ - "\3\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\6\24\1\230\4\0\2\24\1\231\7\24\1\232\13\24"+ - "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\7\24"+ - "\4\0\1\24\1\233\14\24\1\234\1\24\1\235\5\24"+ - "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\3\24"+ - "\1\236\3\24\4\0\5\24\1\237\1\24\1\240\11\24"+ - "\1\241\4\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\7\24\4\0\5\24\1\242\1\24\1\243\16\24"+ - "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\6\24"+ - "\1\244\4\0\6\24\1\245\11\24\1\246\5\24\23\0"+ - "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ - "\11\24\1\247\4\24\1\250\7\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\7\24\4\0\1\24\1\251"+ - "\1\252\7\24\1\253\13\24\23\0\3\24\7\0\3\24"+ - "\3\0\4\24\4\0\7\24\4\0\2\24\1\254\3\24"+ - "\1\255\17\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\6\24\1\256\4\0\26\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\7\24\4\0\7\24\1\257"+ - "\16\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\7\24\4\0\2\24\1\260\23\24\50\0\1\261\52\0"+ - "\1\262\40\0\1\263\53\0\1\264\37\0\1\265\113\0"+ - "\1\266\60\0\1\105\2\0\31\105\1\0\11\105\1\0"+ - "\45\105\2\0\1\107\111\0\1\267\3\0\30\267\1\270"+ - "\1\271\1\267\1\272\1\267\1\273\4\267\1\274\2\267"+ - "\1\275\1\276\5\267\1\277\1\300\1\267\1\301\27\267"+ - "\1\0\1\112\2\0\32\112\1\0\10\112\1\0\45\112"+ - "\2\0\1\114\113\0\1\116\114\0\1\117\7\0\1\117"+ - "\116\0\1\302\105\0\2\303\3\0\1\303\1\0\5\303"+ - "\2\0\4\303\1\0\1\304\2\0\7\303\4\0\26\303"+ - "\15\0\1\305\2\0\31\305\1\306\57\305\10\0\2\307"+ - "\3\0\1\307\1\0\5\307\2\0\4\307\1\0\1\310"+ - "\2\0\7\307\4\0\26\307\33\0\1\311\75\0\1\312"+ - "\2\0\31\312\1\313\1\314\56\312\32\0\1\315\63\0"+ - "\1\136\126\0\1\316\102\0\1\317\3\0\1\320\3\0"+ - "\1\321\2\0\3\320\2\0\1\322\1\0\4\320\5\0"+ - "\3\320\1\0\2\320\4\0\26\320\2\0\1\323\12\0"+ - "\1\324\3\0\33\324\1\325\1\324\1\326\4\324\1\327"+ - "\1\330\1\324\1\331\1\332\5\324\1\333\1\334\1\324"+ - "\1\335\15\324\1\336\11\324\33\0\1\337\76\0\1\340"+ - "\76\0\1\147\2\0\1\147\1\341\41\147\1\153\45\147"+ - "\1\150\1\342\1\343\111\150\1\344\2\345\1\344\1\346"+ - "\1\347\40\344\1\350\45\344\1\147\2\0\1\147\1\351"+ - "\41\147\1\153\45\147\11\0\1\352\124\0\1\157\13\0"+ - "\1\157\3\0\1\157\2\174\57\0\2\161\3\0\1\161"+ - "\1\0\5\161\2\0\4\161\4\0\7\161\4\0\26\161"+ - "\50\0\1\353\75\0\1\354\7\0\1\355\121\0\1\356"+ - "\76\0\1\357\14\0\1\360\75\0\1\361\4\0\1\362"+ - "\13\0\1\362\3\0\1\362\2\0\1\361\101\0\1\363"+ - "\71\0\1\157\10\0\1\176\13\0\1\176\3\0\1\176"+ - "\2\174\60\0\1\157\10\0\1\176\13\0\1\177\3\0"+ - "\1\177\2\174\67\0\1\364\1\0\1\364\3\0\3\364"+ - "\5\0\1\364\2\0\4\364\4\0\1\364\1\0\1\364"+ - "\1\0\1\364\6\0\1\364\35\0\3\24\7\0\3\24"+ - "\3\0\4\24\4\0\7\24\4\0\14\24\1\365\11\24"+ - "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\7\24"+ - "\4\0\1\24\1\366\24\24\23\0\3\24\7\0\3\24"+ - "\3\0\4\24\4\0\7\24\4\0\7\24\1\367\16\24"+ - "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\7\24"+ - "\4\0\7\24\1\370\16\24\23\0\3\24\7\0\3\24"+ - "\3\0\4\24\4\0\7\24\4\0\10\24\1\371\15\24"+ - "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\7\24"+ - "\4\0\4\24\1\372\21\24\23\0\3\24\7\0\3\24"+ - "\3\0\4\24\4\0\7\24\4\0\5\24\1\373\20\24"+ - "\23\0\1\374\1\0\1\374\7\0\2\374\4\0\4\374"+ - "\5\0\3\374\1\0\2\374\4\0\26\374\37\0\1\213"+ - "\13\0\1\213\3\0\1\213\57\0\3\24\7\0\3\24"+ - "\3\0\4\24\4\0\6\24\1\375\4\0\26\24\23\0"+ - "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ - "\10\24\1\376\15\24\23\0\3\24\7\0\3\24\3\0"+ - "\4\24\4\0\7\24\4\0\5\24\1\377\2\24\1\u0100"+ - "\15\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\7\24\4\0\7\24\1\u0101\16\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\7\24\4\0\2\24\1\u0102"+ - "\23\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\7\24\4\0\10\24\1\u0103\15\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\7\24\4\0\2\24\1\u0104"+ - "\23\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\7\24\4\0\17\24\1\u0105\6\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\7\24\4\0\11\24\1\u0106"+ - "\14\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\6\24\1\u0107\4\0\26\24\23\0\3\24\7\0\3\24"+ - "\3\0\4\24\4\0\7\24\4\0\15\24\1\u0108\10\24"+ - "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\7\24"+ - "\4\0\10\24\1\u0109\10\24\1\u010a\4\24\23\0\3\24"+ - "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\14\24"+ - "\1\u010b\11\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\7\24\4\0\12\24\1\u010c\5\24\1\u010d\5\24"+ - "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\7\24"+ - "\4\0\1\24\1\u010e\7\24\1\u010f\14\24\23\0\3\24"+ - "\7\0\3\24\3\0\4\24\4\0\7\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\4\0\5\24\1\u0111\2\24\1\u0112\15\24"+ - "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\7\24"+ - "\4\0\17\24\1\u0113\6\24\23\0\3\24\7\0\3\24"+ - "\3\0\4\24\4\0\6\24\1\u0114\4\0\26\24\23\0"+ - "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ - "\13\24\1\u0115\12\24\23\0\3\24\7\0\3\24\3\0"+ - "\4\24\4\0\3\24\1\u0116\3\24\4\0\14\24\1\u0117"+ - "\11\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\7\24\4\0\7\24\1\u0118\16\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\7\24\4\0\10\24\1\u0119"+ - "\15\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\7\24\4\0\11\24\1\u011a\14\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\7\24\4\0\6\24\1\u011b"+ - "\2\24\1\u011c\14\24\23\0\3\24\7\0\3\24\3\0"+ - "\4\24\4\0\7\24\4\0\4\24\1\u011d\21\24\23\0"+ - "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ - "\1\u011e\25\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\7\24\4\0\1\24\1\u011f\24\24\23\0\3\24"+ - "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\11\24"+ - "\1\u0120\14\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\7\24\4\0\10\24\1\u0121\15\24\23\0\3\24"+ - "\7\0\3\24\3\0\4\24\4\0\3\24\1\u0122\3\24"+ + "\1\114\32\112\1\115\10\112\1\111\45\112\1\16\1\116"+ + "\1\117\1\120\1\121\3\16\1\122\2\16\1\120\2\16"+ + "\1\123\3\122\4\16\4\122\5\16\3\122\1\16\2\122"+ + "\4\16\26\122\2\16\1\124\13\16\1\116\1\117\10\16"+ + "\1\125\2\16\1\126\131\16\1\127\44\16\1\130\12\16"+ + "\1\131\1\116\1\117\21\131\1\132\70\131\1\116\1\117"+ + "\27\131\1\133\62\131\1\134\1\135\12\131\1\136\77\131"+ + "\1\116\1\117\7\131\1\137\66\131\1\140\12\131\1\141"+ + "\1\113\1\114\43\141\1\142\1\143\44\141\1\131\1\116"+ + "\1\117\27\131\1\144\62\131\1\134\1\135\12\131\1\145"+ + "\76\131\116\0\1\20\114\0\1\21\7\0\1\21\100\0"+ + "\1\146\2\0\1\146\1\147\1\150\25\146\1\151\12\146"+ + "\1\152\45\146\33\0\1\153\66\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\7\24\4\0\26\24\26\0\1\154"+ + "\1\155\7\0\1\156\13\0\1\156\3\0\1\156\34\0"+ + "\1\157\24\0\1\160\1\0\1\161\1\0\1\162\2\0"+ + "\3\160\4\0\4\160\1\0\1\163\3\0\3\160\1\0"+ + "\2\160\4\0\26\160\2\0\1\164\45\0\1\165\75\0"+ + "\1\166\15\0\1\167\76\0\1\170\14\0\1\171\77\0"+ + "\1\172\105\0\1\156\10\0\1\33\13\0\1\33\3\0"+ + "\1\33\2\173\102\0\1\174\71\0\1\156\10\0\1\175"+ + "\13\0\1\176\2\177\1\0\1\176\2\173\55\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\2\24"+ + "\1\200\3\24\1\201\2\24\1\202\1\203\13\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\1\24\1\204"+ + "\5\24\4\0\2\24\1\205\11\24\1\206\11\24\50\0"+ + "\1\207\11\0\1\210\115\0\1\211\66\0\1\212\13\0"+ + "\1\213\3\0\1\212\57\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\7\24\4\0\1\24\1\214\24\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\6\24\1\215"+ "\4\0\26\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\7\24\4\0\25\24\1\u0123\35\0\1\u0124\1\0"+ - "\1\u0124\3\0\3\u0124\5\0\1\u0124\2\0\4\u0124\4\0"+ - "\1\u0124\1\0\1\u0124\1\0\1\u0124\6\0\1\u0124\47\0"+ - "\1\u0125\1\0\1\u0125\3\0\3\u0125\5\0\1\u0125\2\0"+ - "\4\u0125\4\0\1\u0125\1\0\1\u0125\1\0\1\u0125\6\0"+ - "\1\u0125\27\0\1\u0126\2\0\31\u0126\1\313\1\0\56\u0126"+ - "\1\314\2\0\31\314\1\u0127\57\314\16\0\1\u0128\113\0"+ - "\1\u0129\105\0\1\u012a\6\0\3\u012a\4\0\4\u012a\5\0"+ - "\3\u012a\1\0\2\u012a\4\0\26\u012a\2\0\1\u012b\22\0"+ - "\2\320\3\0\1\320\1\0\5\320\2\0\4\320\4\0"+ - "\7\320\4\0\26\320\32\0\1\u012c\7\0\1\u012d\76\0"+ - "\1\u012e\6\0\3\u012e\4\0\4\u012e\5\0\3\u012e\1\0"+ - "\2\u012e\4\0\26\u012e\2\0\1\u012f\32\0\1\u0130\1\0"+ - "\1\u0130\3\0\3\u0130\5\0\1\u0130\2\0\4\u0130\4\0"+ - "\1\u0130\1\0\1\u0130\1\0\1\u0130\6\0\1\u0130\47\0"+ - "\1\u0131\1\0\1\u0131\3\0\3\u0131\5\0\1\u0131\2\0"+ - "\4\u0131\4\0\1\u0131\1\0\1\u0131\1\0\1\u0131\6\0"+ - "\1\u0131\51\0\1\u0132\13\0\1\u0133\3\0\1\u0132\67\0"+ - "\1\u0134\113\0\1\u0135\116\0\1\341\15\0\1\341\1\0"+ - "\1\341\2\0\1\341\4\0\24\341\21\0\1\343\111\0"+ - "\1\344\2\345\1\344\1\346\1\u0136\40\344\1\350\45\344"+ - "\5\345\1\u0137\113\345\1\u0137\13\345\1\346\15\345\1\346"+ - "\1\345\1\346\2\345\1\346\4\345\24\346\17\345\1\147"+ - "\2\0\1\147\1\u0138\1\347\40\147\1\153\45\147\1\344"+ - "\2\345\1\344\1\u0139\1\u0136\40\344\1\350\45\344\1\147"+ - "\2\0\1\147\1\341\14\147\1\351\15\147\1\351\1\147"+ - "\1\351\2\147\1\351\1\147\1\153\2\147\24\351\17\147"+ - "\15\0\1\u013a\124\0\1\u013b\120\0\1\u013c\102\0\1\362"+ - "\13\0\1\362\3\0\1\362\57\0\3\24\7\0\3\24"+ - "\3\0\4\24\4\0\7\24\4\0\5\24\1\u013d\20\24"+ - "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\7\24"+ - "\4\0\2\24\1\u013e\23\24\23\0\3\24\7\0\3\24"+ - "\3\0\4\24\4\0\7\24\4\0\4\24\1\u013f\21\24"+ - "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\6\24"+ - "\1\u0140\4\0\26\24\23\0\3\24\7\0\3\24\3\0"+ - "\4\24\4\0\7\24\4\0\16\24\1\u0141\7\24\23\0"+ - "\3\24\7\0\3\24\3\0\4\24\4\0\6\24\1\u0142"+ - "\4\0\26\24\23\0\3\374\7\0\3\374\3\0\4\374"+ - "\4\0\7\374\4\0\26\374\23\0\3\24\7\0\3\24"+ - "\3\0\4\24\4\0\7\24\4\0\2\24\1\u0143\23\24"+ - "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\7\24"+ - "\4\0\12\24\1\u0144\13\24\23\0\3\24\7\0\3\24"+ - "\3\0\4\24\4\0\6\24\1\u0145\4\0\26\24\23\0"+ + "\4\0\7\24\4\0\5\24\1\216\20\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\2\24"+ + "\1\217\3\24\1\220\5\24\1\221\11\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\6\24\1\222\4\0"+ + "\10\24\1\223\1\24\1\224\2\24\1\225\10\24\23\0"+ "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ - "\4\24\1\u0146\21\24\23\0\3\24\7\0\3\24\3\0"+ - "\4\24\4\0\7\24\4\0\5\24\1\u0147\2\24\1\u0148"+ - "\15\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\7\24\4\0\5\24\1\u0149\20\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\7\24\4\0\10\24\1\u014a"+ - "\15\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\6\24\1\u014b\4\0\26\24\23\0\3\24\7\0\3\24"+ - "\3\0\4\24\4\0\7\24\4\0\10\24\1\u014c\15\24"+ - "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\7\24"+ - "\4\0\1\24\1\u014d\24\24\23\0\3\24\7\0\3\24"+ - "\3\0\4\24\4\0\7\24\4\0\11\24\1\u014e\14\24"+ - "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\6\24"+ - "\1\u014f\4\0\26\24\23\0\3\24\7\0\3\24\3\0"+ - "\4\24\4\0\7\24\4\0\14\24\1\u0150\11\24\23\0"+ - "\3\24\7\0\3\24\3\0\4\24\4\0\6\24\1\u0151"+ - "\4\0\26\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\7\24\4\0\6\24\1\u0152\17\24\23\0\3\24"+ - "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\5\24"+ - "\1\u0153\20\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\6\24\1\u0154\4\0\26\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\7\24\4\0\10\24\1\u0155"+ - "\15\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\6\24\1\u0156\4\0\26\24\23\0\3\24\7\0\3\24"+ - "\3\0\4\24\4\0\7\24\4\0\6\24\1\u0157\5\24"+ - "\1\u0158\11\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\6\24\1\u0159\4\0\26\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\7\24\4\0\2\24\1\u015a"+ - "\23\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\6\24\1\u015b\4\0\26\24\23\0\3\24\7\0\3\24"+ - "\3\0\4\24\4\0\7\24\4\0\2\24\1\u015c\23\24"+ - "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\7\24"+ - "\4\0\16\24\1\u015d\7\24\23\0\3\24\7\0\3\24"+ - "\3\0\4\24\4\0\7\24\4\0\14\24\1\u015e\11\24"+ - "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\7\24"+ - "\4\0\10\24\1\u015f\15\24\23\0\3\24\7\0\3\24"+ - "\3\0\4\24\4\0\7\24\4\0\22\24\1\u0160\3\24"+ - "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\7\24"+ - "\4\0\3\24\1\u0161\22\24\23\0\3\24\7\0\3\24"+ - "\3\0\4\24\4\0\7\24\4\0\14\24\1\u0162\11\24"+ - "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\7\24"+ - "\4\0\13\24\1\u0163\12\24\23\0\3\24\7\0\3\24"+ - "\3\0\4\24\4\0\7\24\4\0\11\24\1\u0164\14\24"+ - "\35\0\1\u0165\1\0\1\u0165\3\0\3\u0165\5\0\1\u0165"+ - "\2\0\4\u0165\4\0\1\u0165\1\0\1\u0165\1\0\1\u0165"+ - "\6\0\1\u0165\47\0\1\u0166\1\0\1\u0166\3\0\3\u0166"+ - "\5\0\1\u0166\2\0\4\u0166\4\0\1\u0166\1\0\1\u0166"+ - "\1\0\1\u0166\6\0\1\u0166\30\0\2\u0167\5\0\2\u012a"+ - "\1\0\1\u0167\1\0\1\u012a\1\u0168\5\u012a\2\0\4\u012a"+ - "\4\0\7\u012a\4\0\26\u012a\32\0\1\u0169\124\0\1\u016a"+ - "\75\0\2\u012e\3\0\1\u012e\1\0\5\u012e\2\0\4\u012e"+ - "\4\0\7\u012e\4\0\26\u012e\35\0\1\u016b\1\0\1\u016b"+ - "\3\0\3\u016b\5\0\1\u016b\2\0\4\u016b\4\0\1\u016b"+ - "\1\0\1\u016b\1\0\1\u016b\6\0\1\u016b\47\0\1\u016c"+ - "\1\0\1\u016c\3\0\3\u016c\5\0\1\u016c\2\0\4\u016c"+ - "\4\0\1\u016c\1\0\1\u016c\1\0\1\u016c\6\0\1\u016c"+ - "\51\0\1\u0132\13\0\1\u0132\3\0\1\u0132\37\0\1\u016d"+ - "\113\0\1\u016d\11\0\1\344\2\345\1\344\1\u0138\1\u0136"+ - "\40\344\1\350\45\344\4\345\1\343\1\u0137\106\345\1\344"+ - "\2\345\1\344\1\346\1\u0136\13\344\1\u0139\15\344\1\u0139"+ - "\1\344\1\u0139\2\344\1\u0139\1\344\1\350\2\344\24\u0139"+ - "\17\344\27\0\1\u016e\72\0\3\24\7\0\3\24\3\0"+ - "\4\24\4\0\6\24\1\u016f\4\0\26\24\23\0\3\24"+ - "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\14\24"+ - "\1\u0170\11\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\7\24\4\0\10\24\1\u0171\15\24\23\0\3\24"+ - "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\7\24"+ - "\1\u0172\16\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\7\24\4\0\3\24\1\u0173\22\24\23\0\3\24"+ - "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\1\24"+ - "\1\u0174\24\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\7\24\4\0\16\24\1\u0175\7\24\23\0\3\24"+ - "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\10\24"+ - "\1\u0176\15\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\7\24\4\0\11\24\1\u0177\14\24\23\0\3\24"+ - "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\5\24"+ - "\1\u0178\20\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\7\24\4\0\11\24\1\u0179\14\24\23\0\3\24"+ - "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\1\24"+ - "\1\u017a\24\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\7\24\4\0\4\24\1\u017b\21\24\23\0\3\24"+ - "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\1\24"+ - "\1\u017c\24\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\7\24\4\0\22\24\1\u017d\3\24\23\0\3\24"+ - "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\5\24"+ - "\1\u017e\20\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\7\24\4\0\15\24\1\u017f\10\24\23\0\3\24"+ - "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\6\24"+ - "\1\u0180\17\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\7\24\4\0\2\24\1\u0181\23\24\23\0\3\24"+ - "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\1\24"+ - "\1\u0182\24\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\7\24\4\0\1\24\1\u0183\24\24\23\0\3\24"+ - "\7\0\3\24\3\0\4\24\4\0\6\24\1\u0184\4\0"+ - "\26\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\3\24\1\u0185\3\24\4\0\26\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\7\24\4\0\12\24\1\u0186"+ - "\13\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\7\24\4\0\10\24\1\u0187\15\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\7\24\4\0\21\24\1\u0188"+ - "\4\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\6\24\1\u0189\4\0\26\24\23\0\3\24\7\0\3\24"+ - "\3\0\4\24\4\0\6\24\1\u018a\4\0\26\24\23\0"+ - "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ - "\2\24\1\u018b\23\24\23\0\3\24\7\0\3\24\3\0"+ - "\4\24\4\0\7\24\4\0\2\24\1\u018c\23\24\23\0"+ - "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ - "\11\24\1\u018d\14\24\23\0\3\24\7\0\3\24\3\0"+ - "\4\24\4\0\7\24\4\0\7\24\1\u018e\16\24\16\0"+ - "\2\u0167\10\0\1\u0167\2\0\1\u0168\124\0\1\u018f\114\0"+ - "\1\u0190\71\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\7\24\4\0\14\24\1\u0191\11\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\7\24\4\0\11\24\1\u0192"+ - "\14\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\7\24\4\0\13\24\1\u0193\12\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\7\24\4\0\7\24\1\u0194"+ - "\16\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\7\24\4\0\7\24\1\u0195\16\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\7\24\4\0\4\24\1\u0196"+ - "\21\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\7\24\4\0\16\24\1\u0197\7\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\7\24\4\0\11\24\1\u0198"+ - "\14\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\6\24\1\u0199\4\0\26\24\23\0\3\24\7\0\3\24"+ - "\3\0\4\24\4\0\7\24\4\0\17\24\1\u019a\6\24"+ - "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\3\24"+ - "\1\u019b\3\24\4\0\26\24\23\0\3\24\7\0\3\24"+ - "\3\0\4\24\4\0\7\24\4\0\7\24\1\u019c\16\24"+ - "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\3\24"+ - "\1\u019d\3\24\4\0\7\24\1\u019e\16\24\23\0\3\24"+ - "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\10\24"+ - "\1\u019f\15\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\7\24\4\0\21\24\1\u01a0\4\24\23\0\3\24"+ - "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\11\24"+ - "\1\u01a1\14\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\7\24\4\0\14\24\1\u01a2\11\24\23\0\3\24"+ - "\7\0\3\24\3\0\4\24\4\0\6\24\1\u01a3\4\0"+ - "\26\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\7\24\4\0\11\24\1\u01a4\14\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\7\24\4\0\4\24\1\u01a5"+ - "\21\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\7\24\4\0\10\24\1\u01a6\15\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\7\24\4\0\23\24\1\u01a7"+ - "\2\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\7\24\4\0\4\24\1\u01a8\21\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\7\24\4\0\11\24\1\u01a9"+ - "\14\24\45\0\1\u01aa\114\0\1\u01ab\70\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\7\24\4\0\20\24\1\u01ac"+ + "\22\24\1\226\3\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\6\24\1\227\4\0\2\24\1\230\7\24"+ + "\1\231\13\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\7\24\4\0\1\24\1\232\14\24\1\233\1\24"+ + "\1\234\5\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\3\24\1\235\3\24\4\0\5\24\1\236\1\24"+ + "\1\237\11\24\1\240\4\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\7\24\4\0\5\24\1\241\1\24"+ + "\1\242\16\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\6\24\1\243\4\0\6\24\1\244\11\24\1\245"+ "\5\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\7\24\4\0\6\24\1\u01ad\17\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\7\24\4\0\5\24\1\u01ae"+ - "\20\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\7\24\4\0\12\24\1\u01af\13\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\7\24\4\0\13\24\1\u01b0"+ - "\12\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\7\24\4\0\2\24\1\u01b1\23\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\7\24\4\0\4\24\1\u01b2"+ - "\21\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\7\24\4\0\2\24\1\u01b3\23\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\7\24\4\0\2\24\1\u01b4"+ - "\23\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\6\24\1\u01b5\4\0\26\24\23\0\3\24\7\0\3\24"+ - "\3\0\4\24\4\0\7\24\4\0\7\24\1\u01b6\16\24"+ + "\7\24\4\0\11\24\1\246\4\24\1\247\7\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ + "\1\24\1\250\1\251\7\24\1\252\13\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\2\24"+ + "\1\253\3\24\1\254\17\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\6\24\1\255\4\0\26\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ + "\7\24\1\256\16\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\7\24\4\0\2\24\1\257\23\24\50\0"+ + "\1\260\52\0\1\261\40\0\1\262\53\0\1\263\37\0"+ + "\1\264\113\0\1\265\60\0\1\105\2\0\31\105\1\0"+ + "\11\105\1\0\45\105\2\0\1\107\111\0\1\266\3\0"+ + "\30\266\1\267\1\270\1\266\1\271\1\266\1\272\4\266"+ + "\1\273\2\266\1\274\1\275\5\266\1\276\1\277\1\266"+ + "\1\300\27\266\1\0\1\112\2\0\32\112\1\0\10\112"+ + "\1\0\45\112\2\0\1\114\113\0\1\117\114\0\1\120"+ + "\7\0\1\120\116\0\1\301\105\0\2\302\3\0\1\302"+ + "\1\0\5\302\2\0\4\302\1\0\1\303\2\0\7\302"+ + "\4\0\26\302\30\0\1\125\100\0\1\304\2\0\31\304"+ + "\1\305\57\304\16\0\1\306\127\0\1\307\63\0\1\135"+ + "\126\0\1\310\102\0\1\311\3\0\1\312\3\0\1\313"+ + "\2\0\3\312\2\0\1\314\1\0\4\312\5\0\3\312"+ + "\1\0\2\312\4\0\26\312\2\0\1\315\12\0\1\316"+ + "\3\0\33\316\1\317\1\316\1\320\4\316\1\321\1\322"+ + "\1\316\1\323\1\324\5\316\1\325\1\326\1\316\1\327"+ + "\15\316\1\330\11\316\33\0\1\331\76\0\1\332\76\0"+ + "\1\146\2\0\1\146\1\333\41\146\1\152\45\146\1\147"+ + "\1\334\1\335\111\147\1\336\2\337\1\336\1\340\1\341"+ + "\40\336\1\342\45\336\1\146\2\0\1\146\1\343\41\146"+ + "\1\152\45\146\11\0\1\344\124\0\1\156\13\0\1\156"+ + "\3\0\1\156\2\173\57\0\2\160\3\0\1\160\1\0"+ + "\5\160\2\0\4\160\4\0\7\160\4\0\26\160\50\0"+ + "\1\345\75\0\1\346\7\0\1\347\121\0\1\350\76\0"+ + "\1\351\14\0\1\352\75\0\1\353\4\0\1\354\13\0"+ + "\1\354\3\0\1\354\2\0\1\353\101\0\1\355\71\0"+ + "\1\156\10\0\1\175\13\0\1\175\3\0\1\175\2\173"+ + "\60\0\1\156\10\0\1\175\13\0\1\176\3\0\1\176"+ + "\2\173\67\0\1\356\1\0\1\356\3\0\3\356\5\0"+ + "\1\356\2\0\4\356\4\0\1\356\1\0\1\356\1\0"+ + "\1\356\6\0\1\356\35\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\7\24\4\0\14\24\1\357\11\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ + "\1\24\1\360\24\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\7\24\4\0\7\24\1\361\16\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ + "\7\24\1\362\16\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\7\24\4\0\10\24\1\363\15\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ + "\4\24\1\364\21\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\7\24\4\0\5\24\1\365\20\24\23\0"+ + "\1\366\1\0\1\366\7\0\2\366\4\0\4\366\5\0"+ + "\3\366\1\0\2\366\4\0\26\366\37\0\1\212\13\0"+ + "\1\212\3\0\1\212\57\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\6\24\1\367\4\0\26\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\10\24"+ + "\1\370\15\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\7\24\4\0\5\24\1\371\2\24\1\372\15\24"+ "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\7\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\4\0\4\24\1\u01b8\21\24"+ + "\4\0\7\24\1\373\16\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\7\24\4\0\2\24\1\374\23\24"+ "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\7\24"+ - "\4\0\10\24\1\u01b9\15\24\23\0\3\24\7\0\3\24"+ - "\3\0\4\24\4\0\6\24\1\u01ba\4\0\26\24\23\0"+ - "\3\24\7\0\3\24\3\0\4\24\4\0\6\24\1\u01bb"+ - "\4\0\26\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\7\24\4\0\10\24\1\u01bc\15\24\46\0\1\u01bd"+ - "\112\0\1\u01be\71\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\7\24\4\0\7\24\1\u01bf\16\24\23\0\3\24"+ - "\7\0\3\24\3\0\4\24\4\0\6\24\1\u01c0\4\0"+ - "\26\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\6\24\1\u01c1\4\0\26\24\23\0\3\24\7\0\3\24"+ - "\3\0\4\24\4\0\7\24\4\0\4\24\1\u01c2\21\24"+ + "\4\0\10\24\1\375\15\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\7\24\4\0\2\24\1\376\23\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\7\24"+ + "\4\0\17\24\1\377\6\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\7\24\4\0\11\24\1\u0100\14\24"+ "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\6\24"+ - "\1\u01c3\4\0\26\24\23\0\3\24\7\0\3\24\3\0"+ - "\4\24\4\0\7\24\4\0\4\24\1\u01c4\21\24\23\0"+ + "\1\u0101\4\0\26\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\7\24\4\0\15\24\1\u0102\10\24\23\0"+ "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ - "\14\24\1\u01c5\11\24\23\0\3\24\7\0\3\24\3\0"+ - "\4\24\4\0\7\24\4\0\7\24\1\u01c6\16\24\23\0"+ - "\3\24\7\0\3\24\3\0\4\24\4\0\6\24\1\u01c7"+ - "\4\0\26\24\23\0\3\24\7\0\3\24\3\0\4\24"+ - "\4\0\6\24\1\u01c8\4\0\26\24\23\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\7\24\4\0\20\24\1\u01c9"+ - "\5\24\45\0\1\u01ca\110\0\1\u01cb\74\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\6\24\1\u01cc\4\0\26\24"+ + "\10\24\1\u0103\10\24\1\u0104\4\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\7\24\4\0\14\24\1\u0105"+ + "\11\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\7\24\4\0\12\24\1\u0106\5\24\1\u0107\5\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ + "\1\24\1\u0108\7\24\1\u0109\14\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\7\24\4\0\17\24\1\u010a"+ + "\6\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\7\24\4\0\5\24\1\u010b\2\24\1\u010c\15\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ + "\17\24\1\u010d\6\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\6\24\1\u010e\4\0\26\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\13\24"+ + "\1\u010f\12\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\3\24\1\u0110\3\24\4\0\14\24\1\u0111\11\24"+ "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\7\24"+ - "\4\0\6\24\1\u01cd\17\24\23\0\3\24\7\0\3\24"+ - "\3\0\4\24\4\0\6\24\1\u01ce\4\0\26\24\23\0"+ - "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ - "\10\24\1\u01cf\15\24\23\0\3\24\7\0\3\24\3\0"+ - "\4\24\4\0\7\24\4\0\13\24\1\u01d0\12\24\23\0"+ - "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ - "\13\24\1\u01d1\12\24\42\0\1\u01d2\74\0\3\24\7\0"+ - "\3\24\3\0\4\24\4\0\3\24\1\u01d3\3\24\4\0"+ + "\4\0\7\24\1\u0112\16\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\7\24\4\0\10\24\1\u0113\15\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\7\24"+ + "\4\0\11\24\1\u0114\14\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\7\24\4\0\6\24\1\u0115\2\24"+ + "\1\u0116\14\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\7\24\4\0\4\24\1\u0117\21\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\1\u0118"+ + "\25\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\7\24\4\0\1\24\1\u0119\24\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\7\24\4\0\11\24\1\u011a"+ + "\14\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\7\24\4\0\10\24\1\u011b\15\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\3\24\1\u011c\3\24\4\0"+ "\26\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ - "\7\24\4\0\5\24\1\u01d4\20\24\15\0"; + "\7\24\4\0\25\24\1\u011d\35\0\1\u011e\1\0\1\u011e"+ + "\3\0\3\u011e\5\0\1\u011e\2\0\4\u011e\4\0\1\u011e"+ + "\1\0\1\u011e\1\0\1\u011e\6\0\1\u011e\47\0\1\u011f"+ + "\1\0\1\u011f\3\0\3\u011f\5\0\1\u011f\2\0\4\u011f"+ + "\4\0\1\u011f\1\0\1\u011f\1\0\1\u011f\6\0\1\u011f"+ + "\45\0\1\u0120\113\0\1\u0121\105\0\1\u0122\6\0\3\u0122"+ + "\4\0\4\u0122\5\0\3\u0122\1\0\2\u0122\4\0\26\u0122"+ + "\2\0\1\u0123\22\0\2\312\3\0\1\312\1\0\5\312"+ + "\2\0\4\312\4\0\7\312\4\0\26\312\32\0\1\u0124"+ + "\7\0\1\u0125\76\0\1\u0126\6\0\3\u0126\4\0\4\u0126"+ + "\5\0\3\u0126\1\0\2\u0126\4\0\26\u0126\35\0\1\u0127"+ + "\1\0\1\u0127\3\0\3\u0127\5\0\1\u0127\2\0\4\u0127"+ + "\4\0\1\u0127\1\0\1\u0127\1\0\1\u0127\6\0\1\u0127"+ + "\47\0\1\u0128\1\0\1\u0128\3\0\3\u0128\5\0\1\u0128"+ + "\2\0\4\u0128\4\0\1\u0128\1\0\1\u0128\1\0\1\u0128"+ + "\6\0\1\u0128\51\0\1\u0129\13\0\1\u012a\3\0\1\u0129"+ + "\67\0\1\u012b\113\0\1\u012c\116\0\1\333\15\0\1\333"+ + "\1\0\1\333\2\0\1\333\4\0\24\333\21\0\1\335"+ + "\111\0\1\336\2\337\1\336\1\340\1\u012d\40\336\1\342"+ + "\45\336\5\337\1\u012e\113\337\1\u012e\13\337\1\340\15\337"+ + "\1\340\1\337\1\340\2\337\1\340\4\337\24\340\17\337"+ + "\1\146\2\0\1\146\1\u012f\1\341\40\146\1\152\45\146"+ + "\1\336\2\337\1\336\1\u0130\1\u012d\40\336\1\342\45\336"+ + "\1\146\2\0\1\146\1\333\14\146\1\343\15\146\1\343"+ + "\1\146\1\343\2\146\1\343\1\146\1\152\2\146\24\343"+ + "\17\146\15\0\1\u0131\124\0\1\u0132\120\0\1\u0133\102\0"+ + "\1\354\13\0\1\354\3\0\1\354\57\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\7\24\4\0\5\24\1\u0134"+ + "\20\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\7\24\4\0\2\24\1\u0135\23\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\7\24\4\0\4\24\1\u0136"+ + "\21\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\6\24\1\u0137\4\0\26\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\7\24\4\0\16\24\1\u0138\7\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\6\24"+ + "\1\u0139\4\0\26\24\23\0\3\366\7\0\3\366\3\0"+ + "\4\366\4\0\7\366\4\0\26\366\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\7\24\4\0\2\24\1\u013a"+ + "\23\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\7\24\4\0\12\24\1\u013b\13\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\6\24\1\u013c\4\0\26\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\7\24"+ + "\4\0\4\24\1\u013d\21\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\7\24\4\0\5\24\1\u013e\2\24"+ + "\1\u013f\15\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\7\24\4\0\5\24\1\u0140\20\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\10\24"+ + "\1\u0141\15\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\6\24\1\u0142\4\0\26\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\7\24\4\0\10\24\1\u0143"+ + "\15\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\7\24\4\0\1\24\1\u0144\24\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\7\24\4\0\11\24\1\u0145"+ + "\14\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\6\24\1\u0146\4\0\26\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\7\24\4\0\14\24\1\u0147\11\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\6\24"+ + "\1\u0148\4\0\26\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\7\24\4\0\6\24\1\u0149\17\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ + "\5\24\1\u014a\20\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\6\24\1\u014b\4\0\26\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\10\24"+ + "\1\u014c\15\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\6\24\1\u014d\4\0\26\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\7\24\4\0\6\24\1\u014e"+ + "\5\24\1\u014f\11\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\6\24\1\u0150\4\0\26\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\2\24"+ + "\1\u0151\23\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\6\24\1\u0152\4\0\26\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\7\24\4\0\2\24\1\u0153"+ + "\23\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\7\24\4\0\16\24\1\u0154\7\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\7\24\4\0\14\24\1\u0155"+ + "\11\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\7\24\4\0\10\24\1\u0156\15\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\7\24\4\0\22\24\1\u0157"+ + "\3\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\7\24\4\0\3\24\1\u0158\22\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\7\24\4\0\14\24\1\u0159"+ + "\11\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\7\24\4\0\13\24\1\u015a\12\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\7\24\4\0\11\24\1\u015b"+ + "\14\24\35\0\1\u015c\1\0\1\u015c\3\0\3\u015c\5\0"+ + "\1\u015c\2\0\4\u015c\4\0\1\u015c\1\0\1\u015c\1\0"+ + "\1\u015c\6\0\1\u015c\47\0\1\u015d\1\0\1\u015d\3\0"+ + "\3\u015d\5\0\1\u015d\2\0\4\u015d\4\0\1\u015d\1\0"+ + "\1\u015d\1\0\1\u015d\6\0\1\u015d\30\0\2\u015e\5\0"+ + "\2\u0122\1\0\1\u015e\1\0\1\u0122\1\u015f\5\u0122\2\0"+ + "\4\u0122\4\0\7\u0122\4\0\26\u0122\32\0\1\u0160\124\0"+ + "\1\u0161\75\0\2\u0126\3\0\1\u0126\1\0\5\u0126\2\0"+ + "\4\u0126\4\0\7\u0126\4\0\26\u0126\35\0\1\u0162\1\0"+ + "\1\u0162\3\0\3\u0162\5\0\1\u0162\2\0\4\u0162\4\0"+ + "\1\u0162\1\0\1\u0162\1\0\1\u0162\6\0\1\u0162\47\0"+ + "\1\u0163\1\0\1\u0163\3\0\3\u0163\5\0\1\u0163\2\0"+ + "\4\u0163\4\0\1\u0163\1\0\1\u0163\1\0\1\u0163\6\0"+ + "\1\u0163\51\0\1\u0129\13\0\1\u0129\3\0\1\u0129\37\0"+ + "\1\u0164\113\0\1\u0164\11\0\1\336\2\337\1\336\1\u012f"+ + "\1\u012d\40\336\1\342\45\336\4\337\1\335\1\u012e\106\337"+ + "\1\336\2\337\1\336\1\340\1\u012d\13\336\1\u0130\15\336"+ + "\1\u0130\1\336\1\u0130\2\336\1\u0130\1\336\1\342\2\336"+ + "\24\u0130\17\336\27\0\1\u0165\72\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\6\24\1\u0166\4\0\26\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ + "\14\24\1\u0167\11\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\7\24\4\0\10\24\1\u0168\15\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ + "\7\24\1\u0169\16\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\7\24\4\0\3\24\1\u016a\22\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ + "\1\24\1\u016b\24\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\7\24\4\0\16\24\1\u016c\7\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ + "\10\24\1\u016d\15\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\7\24\4\0\11\24\1\u016e\14\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ + "\5\24\1\u016f\20\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\7\24\4\0\11\24\1\u0170\14\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ + "\1\24\1\u0171\24\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\7\24\4\0\4\24\1\u0172\21\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ + "\1\24\1\u0173\24\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\7\24\4\0\22\24\1\u0174\3\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ + "\5\24\1\u0175\20\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\7\24\4\0\15\24\1\u0176\10\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ + "\6\24\1\u0177\17\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\7\24\4\0\2\24\1\u0178\23\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ + "\1\24\1\u0179\24\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\7\24\4\0\1\24\1\u017a\24\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\6\24\1\u017b"+ + "\4\0\26\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\3\24\1\u017c\3\24\4\0\26\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\12\24"+ + "\1\u017d\13\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\7\24\4\0\10\24\1\u017e\15\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\21\24"+ + "\1\u017f\4\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\6\24\1\u0180\4\0\26\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\6\24\1\u0181\4\0\26\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\7\24"+ + "\4\0\2\24\1\u0182\23\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\7\24\4\0\2\24\1\u0183\23\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\7\24"+ + "\4\0\11\24\1\u0184\14\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\7\24\4\0\7\24\1\u0185\16\24"+ + "\16\0\2\u015e\10\0\1\u015e\2\0\1\u015f\124\0\1\u0186"+ + "\114\0\1\u0187\71\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\7\24\4\0\14\24\1\u0188\11\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\11\24"+ + "\1\u0189\14\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\7\24\4\0\13\24\1\u018a\12\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\7\24"+ + "\1\u018b\16\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\7\24\4\0\7\24\1\u018c\16\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\4\24"+ + "\1\u018d\21\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\7\24\4\0\16\24\1\u018e\7\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\11\24"+ + "\1\u018f\14\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\6\24\1\u0190\4\0\26\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\7\24\4\0\17\24\1\u0191"+ + "\6\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\3\24\1\u0192\3\24\4\0\26\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\7\24\4\0\7\24\1\u0193"+ + "\16\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\3\24\1\u0194\3\24\4\0\7\24\1\u0195\16\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ + "\10\24\1\u0196\15\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\7\24\4\0\21\24\1\u0197\4\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\7\24\4\0"+ + "\11\24\1\u0198\14\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\7\24\4\0\14\24\1\u0199\11\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\6\24\1\u019a"+ + "\4\0\26\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\7\24\4\0\11\24\1\u019b\14\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\4\24"+ + "\1\u019c\21\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\7\24\4\0\10\24\1\u019d\15\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\23\24"+ + "\1\u019e\2\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\7\24\4\0\4\24\1\u019f\21\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\11\24"+ + "\1\u01a0\14\24\45\0\1\u01a1\114\0\1\u01a2\70\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\20\24"+ + "\1\u01a3\5\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\7\24\4\0\6\24\1\u01a4\17\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\5\24"+ + "\1\u01a5\20\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\7\24\4\0\12\24\1\u01a6\13\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\13\24"+ + "\1\u01a7\12\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\7\24\4\0\2\24\1\u01a8\23\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\4\24"+ + "\1\u01a9\21\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\7\24\4\0\2\24\1\u01aa\23\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\2\24"+ + "\1\u01ab\23\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\6\24\1\u01ac\4\0\26\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\7\24\4\0\7\24\1\u01ad"+ + "\16\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\7\24\4\0\10\24\1\u01ae\15\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\7\24\4\0\4\24\1\u01af"+ + "\21\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\7\24\4\0\10\24\1\u01b0\15\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\6\24\1\u01b1\4\0\26\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\6\24"+ + "\1\u01b2\4\0\26\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\7\24\4\0\10\24\1\u01b3\15\24\46\0"+ + "\1\u01b4\112\0\1\u01b5\71\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\7\24\4\0\7\24\1\u01b6\16\24\23\0"+ + "\3\24\7\0\3\24\3\0\4\24\4\0\6\24\1\u01b7"+ + "\4\0\26\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\6\24\1\u01b8\4\0\26\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\7\24\4\0\4\24\1\u01b9"+ + "\21\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\6\24\1\u01ba\4\0\26\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\7\24\4\0\4\24\1\u01bb\21\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\7\24"+ + "\4\0\14\24\1\u01bc\11\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\7\24\4\0\7\24\1\u01bd\16\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\6\24"+ + "\1\u01be\4\0\26\24\23\0\3\24\7\0\3\24\3\0"+ + "\4\24\4\0\6\24\1\u01bf\4\0\26\24\23\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\7\24\4\0\20\24"+ + "\1\u01c0\5\24\45\0\1\u01c1\110\0\1\u01c2\74\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\6\24\1\u01c3\4\0"+ + "\26\24\23\0\3\24\7\0\3\24\3\0\4\24\4\0"+ + "\7\24\4\0\6\24\1\u01c4\17\24\23\0\3\24\7\0"+ + "\3\24\3\0\4\24\4\0\6\24\1\u01c5\4\0\26\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\7\24"+ + "\4\0\10\24\1\u01c6\15\24\23\0\3\24\7\0\3\24"+ + "\3\0\4\24\4\0\7\24\4\0\13\24\1\u01c7\12\24"+ + "\23\0\3\24\7\0\3\24\3\0\4\24\4\0\7\24"+ + "\4\0\13\24\1\u01c8\12\24\42\0\1\u01c9\74\0\3\24"+ + "\7\0\3\24\3\0\4\24\4\0\3\24\1\u01ca\3\24"+ + "\4\0\26\24\23\0\3\24\7\0\3\24\3\0\4\24"+ + "\4\0\7\24\4\0\5\24\1\u01cb\20\24\15\0"; private static int [] zzUnpackTrans() { - int [] result = new int[23788]; + int [] result = new int[23560]; int offset = 0; offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); return result; @@ -832,25 +824,24 @@ public final class ActionScriptLexer { private static final String ZZ_ATTRIBUTE_PACKED_0 = "\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\2\11\1\1\1\11"+ - "\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\7\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\7\11\2\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\60\1\3\0"+ - "\3\11\1\0\1\11\2\0\1\1\1\11\4\0\2\11"+ - "\2\0\2\1\1\11\1\0\1\11\50\1\1\11\2\0"+ - "\2\11\1\0\1\11\1\0\1\11\1\0\40\1\2\0"+ - "\31\1\2\0\21\1\2\0\13\1\1\0\1\11\6\1"+ - "\1\11\2\1"; + "\27\1\7\11\4\1\1\11\2\1\2\11\3\1\2\11"+ + "\1\1\1\11\3\1\2\11\1\1\1\11\1\1\2\11"+ + "\3\1\1\11\2\1\2\11\1\1\1\11\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\7\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\2\11\3\0\1\1\2\0\2\11\1\1\7\11"+ + "\2\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"+ + "\60\1\2\0\2\11\1\0\1\11\2\0\1\1\4\0"+ + "\2\11\2\0\2\1\1\11\1\0\1\11\50\1\1\11"+ + "\2\0\2\11\1\0\1\11\1\0\1\11\1\0\40\1"+ + "\2\0\31\1\2\0\21\1\2\0\13\1\1\0\1\11"+ + "\6\1\1\11\2\1"; private static int [] zzUnpackAttribute() { - int [] result = new int[468]; + int [] result = new int[459]; int offset = 0; offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); return result; @@ -931,6 +922,8 @@ public final class ActionScriptLexer { private int repeatNum = 1; + private boolean enableWhiteSpace = false; + public ActionScriptLexer(String sourceCode){ this(new StringReader(sourceCode)); this.sourceCode = sourceCode; @@ -946,6 +939,17 @@ public final class ActionScriptLexer { yyline = newYyline; } + public void setEnableWhiteSpace(boolean enable) + { + this.enableWhiteSpace = enable; + } + + public void begin(int state) + { + string.setLength(0); + yybegin(state); + } + public void yypushbackstr(String s) { yypushbackstr(s, YYINITIAL); @@ -1323,51 +1327,52 @@ public final class ActionScriptLexer { case 1: { } - case 181: break; + case 178: break; case 2: { yyline++; + if (enableWhiteSpace) { return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_WHITESPACE, yytext()); } } - case 182: break; + case 179: break; case 3: - { /*ignore*/ + { if (enableWhiteSpace) { return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_WHITESPACE, yytext()); } } - case 183: break; + case 180: break; case 4: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DIVIDE, yytext()); } - case 184: break; + case 181: break; case 5: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MULTIPLY, yytext()); } - case 185: break; + case 182: break; case 6: { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); } - case 186: break; + case 183: break; case 7: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DOT, yytext()); } - case 187: break; + case 184: break; case 8: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.LOWER_THAN, yytext()); } - case 188: break; + case 185: break; case 9: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NOT, yytext()); } - case 189: break; + case 186: break; case 10: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MINUS, yytext()); } - case 190: break; + case 187: break; case 11: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.GREATER_THAN, yytext()); } - case 191: break; + case 188: break; case 12: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.COLON, yytext()); } - case 192: break; + case 189: break; case 13: { try{ return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, Integer.parseInt(yytext())); @@ -1376,113 +1381,121 @@ public final class ActionScriptLexer { return new ParsedSymbol(SymbolGroup.DOUBLE, SymbolType.DOUBLE, Double.parseDouble(yytext())); } } - case 193: break; + case 190: break; case 14: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.TERNAR, yytext()); } - case 194: break; + case 191: break; case 15: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BRACKET_OPEN, yytext()); } - case 195: break; + case 192: break; case 16: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BRACKET_CLOSE, yytext()); } - case 196: break; + case 193: break; case 17: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN, yytext()); } - case 197: break; + case 194: break; case 18: { string.setLength(0); yybegin(STRING); } - case 198: break; + case 195: break; case 19: { string.setLength(0); yybegin(CHARLITERAL); } - case 199: break; + case 196: break; case 20: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PLUS, yytext()); } - case 200: break; + case 197: break; case 21: { string.setLength(0); yybegin(OIDENTIFIER); } - case 201: break; + case 198: break; case 22: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PARENT_OPEN, yytext()); } - case 202: break; + case 199: break; case 23: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PARENT_CLOSE, yytext()); } - case 203: break; + case 200: break; case 24: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.CURLY_OPEN, yytext()); } - case 204: break; + case 201: break; case 25: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.CURLY_CLOSE, yytext()); } - case 205: break; + case 202: break; case 26: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SEMICOLON, yytext()); } - case 206: break; + case 203: break; case 27: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.COMMA, yytext()); } - case 207: break; + case 204: break; case 28: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NEGATE, yytext()); } - case 208: break; + case 205: break; case 29: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BITAND, yytext()); } - case 209: break; + case 206: break; case 30: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BITOR, yytext()); } - case 210: break; + case 207: break; case 31: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.XOR, yytext()); } - case 211: break; + case 208: break; case 32: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MODULO, yytext()); } - case 212: break; + case 209: break; case 33: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ATTRIBUTE, yytext()); } - case 213: break; + case 210: break; case 34: { string.append(yytext()); } - case 214: break; + case 211: break; case 35: { yybegin(YYINITIAL); yyline++; } - case 215: break; + case 212: break; case 36: + { yybegin(YYINITIAL); + // length also includes the trailing quote + String tos = string.toString(); + string.setLength(0); + return new ParsedSymbol(SymbolGroup.STRING, SymbolType.STRING, tos); + } + case 213: break; + case 37: + { yybegin(YYINITIAL); yyline++; + } + case 214: break; + case 38: { yybegin(YYINITIAL); // length also includes the trailing quote return new ParsedSymbol(SymbolGroup.STRING, SymbolType.STRING, string.toString()); } - case 216: break; - case 37: - { yybegin(YYINITIAL); yyline++; - } - case 217: break; - case 38: + case 215: break; + case 39: { string.append(yytext()); yyline++; } - case 218: break; - case 39: + case 216: break; + case 40: { yybegin(XML); pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_STARTTAG_END, yytext())); if (string.length() > 0){ @@ -1491,8 +1504,8 @@ public final class ActionScriptLexer { } return lex(); } - case 219: break; - case 40: + case 217: break; + case 41: { yybegin(YYINITIAL); pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRNAMEVAR_BEGIN, yytext())); if (string.length() > 0){ @@ -1501,31 +1514,26 @@ public final class ActionScriptLexer { } return lex(); } - case 220: break; - case 41: - { yybegin(YYINITIAL); - return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRVALVAR_BEGIN, yytext()); - } - case 221: break; + case 218: break; case 42: - { yybegin(YYINITIAL); - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_INSTRATTRNAMEVAR_BEGIN, yytext())); + { yybegin(XML); + pushback(new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.GREATER_THAN, yytext())); if (string.length() > 0){ pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString())); string.setLength(0); } return lex(); } - case 222: break; + case 219: break; case 43: { yybegin(YYINITIAL); - return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_INSTRATTRVALVAR_BEGIN, yytext()); + return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRVALVAR_BEGIN, yytext()); } - case 223: break; + case 220: break; case 44: { string.append(yytext()); yyline++; } - case 224: break; + case 221: break; case 45: { yybegin(YYINITIAL); pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_VAR_BEGIN, yytext())); @@ -1535,92 +1543,92 @@ public final class ActionScriptLexer { } return lex(); } - case 225: break; + case 222: break; case 46: { for(int r=0;r 0){ - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString())); - string.setLength(0); - } - return lex(); - } - case 273: break; - case 94: { yybegin(XML); - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_INSTR_END, yytext())); - if (string.length() > 0){ - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString())); - string.setLength(0); - } - return lex(); + string.append(yytext()); + String tos = string.toString(); + string.setLength(0); + return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_INSTR, tos); } - case 274: break; - case 95: - { yybegin(XMLINSTROPENTAG); - return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRIBUTEVALUE, yytext()); - } - case 275: break; - case 96: + case 270: break; + case 94: { yybegin(XMLOPENTAG); pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_STARTTAG_BEGIN, yytext())); if (string.length() > 0){ @@ -1781,8 +1772,8 @@ public final class ActionScriptLexer { } return lex(); } - case 276: break; - case 97: + case 271: break; + case 95: { yybegin(YYINITIAL); pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_STARTVARTAG_BEGIN, yytext())); if (string.length() > 0){ @@ -1791,68 +1782,68 @@ public final class ActionScriptLexer { } return lex(); } - case 277: break; - case 98: + case 272: break; + case 96: { throw new AVM2ParseException("Illegal escape sequence \"" + yytext() + "\"", yyline + 1); } - case 278: break; - case 99: + case 273: break; + case 97: { for(int r=0;r 0){ @@ -1922,89 +1913,80 @@ public final class ActionScriptLexer { } return lex(); } - case 305: break; - case 126: - { yybegin(XMLINSTROPENTAG); - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_INSTR_BEGIN, yytext())); + case 300: break; + case 124: + { yybegin(XMLINSTR); if (string.length() > 0){ - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString())); + String tos = string.toString(); string.setLength(0); + string.append(yytext()); + return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, tos); } - return lex(); + string.append(yytext()); } - case 306: break; - case 127: - { yybegin(YYINITIAL); - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_INSTRVARTAG_BEGIN, yytext())); - if (string.length() > 0){ - pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString())); - string.setLength(0); - } - return lex(); - } - case 307: break; - case 128: + case 301: break; + case 125: { string.append(yytext()); yybegin(YYINITIAL); String ret = string.toString(); string.setLength(0); return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_CDATA, ret); } - case 308: break; - case 129: + case 302: break; + case 126: { string.append(yytext()); yybegin(YYINITIAL); String ret = string.toString(); string.setLength(0); return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_COMMENT, ret); } - case 309: break; - case 130: + case 303: break; + case 127: { string.setLength(0); string.append(yytext() ); yybegin(XMLCOMMENTALONE); } - case 310: break; - case 131: + case 304: break; + case 128: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_USHIFT_RIGHT, yytext()); } - case 311: break; - case 132: + case 305: break; + case 129: { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.EACH, yytext()); } - case 312: break; - case 133: + case 306: break; + case 130: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.ELSE, yytext()); } - case 313: break; - case 134: + case 307: break; + case 131: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CASE, yytext()); } - case 314: break; - case 135: + case 308: break; + case 132: { return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NULL, yytext()); } - case 315: break; - case 136: + case 309: break; + case 133: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.TRUE, yytext()); } - case 316: break; - case 137: + case 310: break; + case 134: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.THIS, yytext()); } - case 317: break; - case 138: + case 311: break; + case 135: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.WITH, yytext()); } - case 318: break; - case 139: + case 312: break; + case 136: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.VOID, yytext()); } - case 319: break; - case 140: + case 313: break; + case 137: { char val = (char) Integer.parseInt(yytext().substring(2), 16); string.append(val); } - case 320: break; - case 141: + case 314: break; + case 138: { pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_FINISHTAG, yytext())); if (string.length() > 0){ pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString())); @@ -2012,166 +1994,166 @@ public final class ActionScriptLexer { } return lex(); } - case 321: break; - case 142: + case 315: break; + case 139: { 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 322: break; - case 143: + case 316: break; + case 140: { char val = (char) Integer.parseInt(yytext().substring(2), 16); for(int r=0;r XML_COMMENT(GraphTargetItem.PRECEDENCE_PRIMARY, false), // XML_CDATA(GraphTargetItem.PRECEDENCE_PRIMARY, false), // - XML_INSTR_BEGIN(GraphTargetItem.PRECEDENCE_PRIMARY, false), // + XML_INSTR(GraphTargetItem.PRECEDENCE_PRIMARY, false), // + //XML_INSTR_BEGIN(GraphTargetItem.PRECEDENCE_PRIMARY, false), // XML_VAR_BEGIN(GraphTargetItem.PRECEDENCE_PRIMARY, false), // { XML_ATTRIBUTENAME(GraphTargetItem.PRECEDENCE_PRIMARY, false), // aaa= XML_ATTRIBUTEVALUE(GraphTargetItem.PRECEDENCE_PRIMARY, false), // "vvv" XML_TEXT(GraphTargetItem.PRECEDENCE_PRIMARY, false), XML_ATTRNAMEVAR_BEGIN(GraphTargetItem.PRECEDENCE_PRIMARY, false), // {...}= XML_ATTRVALVAR_BEGIN(GraphTargetItem.PRECEDENCE_PRIMARY, false), // aaa={ - XML_INSTRATTRNAMEVAR_BEGIN(GraphTargetItem.PRECEDENCE_PRIMARY, false), // {...}= - XML_INSTRATTRVALVAR_BEGIN(GraphTargetItem.PRECEDENCE_PRIMARY, false), // aaa={ - XML_INSTRVARTAG_BEGIN(GraphTargetItem.PRECEDENCE_PRIMARY, false), // \r\n" + + "var myXML:XML;\r\n" + + "var k:* = (myXML = \r\n" + "\r\n" + "{name}\r\n" + "\r\n" - + ";\r\n" - + "var k:* = myXML.@id;\r\n" + + ").@id;\r\n" + "var all:String = myXML.@*.toXMLString();\r\n" + "k = myXML.book;\r\n" + "k = myXML.book.(@isbn == \"12345\");\r\n" @@ -2178,7 +2178,25 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile + "here some code;\r\n" + "}\r\n" + "]]>;\r\n" - + "var testComment:XML = ;\r\n", + + "var testComment:XML = ;\r\n" + + "var xtaga:String = \"a\";\r\n" + + "var xtagb:String = \"b\";\r\n" + + "var xattrname:String = \"attr\";\r\n" + + "var xattrval:String = \"value\";\r\n" + + "var xcontent:String = \"content\";\r\n" + + "var xxx:XML = <{xtaga} >\r\n" + + "<{xtagb} >\r\n" + + "
    \r\n" + + "
  • Item 1
  • \r\n" + + "
  • Item 2: {xcontent}
  • \r\n" + + "\r\n" + + "\r\n" + + "
\r\n" + + "\r\n" + + "\r\n" + + ";\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 53938fcd9..3283cc143 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 @@ -2060,6 +2060,12 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "var g:XML = null;\r\n" + "var testCdata:XML = null;\r\n" + "var testComment:XML = null;\r\n" + + "var xtaga:String = null;\r\n" + + "var xtagb:String = null;\r\n" + + "var xattrname:String = null;\r\n" + + "var xattrval:String = null;\r\n" + + "var xcontent:String = null;\r\n" + + "var xxx:XML = null;\r\n" + "var name:String = \"ahoj\";\r\n" + "var myXML:XML = \r\n" + "\r\n" @@ -2179,7 +2185,24 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes + "here some code;\r\n" + "}\r\n" + "]]>;\r\n" - + "testComment = ;\r\n", + + "testComment = ;\r\n" + + "xtaga = \"a\";\r\n" + + "xtagb = \"b\";\r\n" + + "xattrname = \"attr\";\r\n" + + "xattrval = \"value\";\r\n" + + "xcontent = \"content\";\r\n" + + "xxx = <{xtaga}>\r\n" + + "<{xtagb}>\r\n" + + "
    \r\n" + + "
  • Item 1
  • \r\n" + + "
  • Item 2: {xcontent}
  • \r\n" + + "\r\n" + + "\r\n" + + "
\r\n" + + "\r\n" + + ";\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 87563de53..8aa5abebc 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 e2102c58a..3958f1885 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/src/tests/TestXml.as b/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestXml.as index 84c8bac12..52ecb6ade 100644 --- a/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestXml.as +++ b/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestXml.as @@ -30,8 +30,27 @@ package tests } ]]>; - var testComment:XML = ; - + var testComment:XML = ; + + var xtaga:String = "a"; + var xtagb:String = "b"; + var xattrname:String = "attr"; + var xattrval:String = "value"; + var xcontent:String = "content"; + + var xxx:XML = <{xtaga}> + <{xtagb}> +
    +
  • Item 1
  • +
  • Item 2: {xcontent}
  • + + +
+ + + ; //intentionally on new line } } 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 271b5faf5..2e483ef34 100644 --- a/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/actionscript3.flex +++ b/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/actionscript3.flex @@ -114,9 +114,9 @@ TypeNameSpec = ".<" {Identifier} ">" LetterColon = [:jletter] | ":" XMLIdentifier = {Identifier} | {IdentifierNs} XMLAttribute = " "* {XMLIdentifier} " "* "=" " "* \" {InputCharacter}* \" " "* -XMLBeginOneTag = "<" {XMLIdentifier} {XMLAttribute}* ">" -XMLBeginTag = "<" {XMLIdentifier} " " -XMLEndTag = "" +XMLBeginOneTag = "<" {XMLIdentifier} {XMLAttribute}* ">" | "<{" {XMLIdentifier} "}" {XMLAttribute}* " "* ">" +XMLBeginTag = "<" {XMLIdentifier} " " | "<{" {XMLIdentifier} "} " +XMLEndTag = "" | "" /* integer literals */ DecIntegerLiteral = 0 | [1-9][0-9]* @@ -229,7 +229,6 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]* "(" { 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); } @@ -238,7 +237,6 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]* "..." | "." | "=" | - ">" | "<" | "!" | "~" | @@ -336,6 +334,11 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]* } xmlTagName = s; } + + ">" { return token(TokenType.OPERATOR); } + + "{" { return token(TokenType.OPERATOR, CURLY); } + /* identifiers */ {Identifier}{NamespaceSuffix} { return token(TokenType.REGEX); } {Identifier} { return token(TokenType.IDENTIFIER); } @@ -351,7 +354,8 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]* {XMLBeginOneTag} { tokenLength += yylength();} {XMLEndTag} { tokenLength += yylength(); String endtagname=yytext(); - endtagname=endtagname.substring(2,endtagname.length()-1); + endtagname = endtagname.substring(2,endtagname.length()-1); + endtagname = endtagname.trim(); if(endtagname.equals(xmlTagName)){ yybegin(YYINITIAL); return token(TokenType.STRING, tokenStart, tokenLength);